Keep Gitea assignee aligned with agent handoffs
This commit is contained in:
parent
f42f7b9ddc
commit
1dcbf7270d
|
|
@ -73,6 +73,11 @@ class Gitea:
|
||||||
{"labels": [label_map[name] for name in sorted(names)]},
|
{"labels": [label_map[name] for name in sorted(names)]},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def set_assignee(self, number: int, agent: str) -> None:
|
||||||
|
if agent not in AGENTS:
|
||||||
|
raise LoopError(f"Unsupported assignee: {agent}")
|
||||||
|
self.request("PATCH", f"/repos/{self.repo}/issues/{number}", {"assignee": agent})
|
||||||
|
|
||||||
def comment(self, number: int, body: str) -> None:
|
def comment(self, number: int, body: str) -> None:
|
||||||
if not body.strip():
|
if not body.strip():
|
||||||
raise LoopError("Refusing to post an empty comment")
|
raise LoopError("Refusing to post an empty comment")
|
||||||
|
|
@ -163,6 +168,7 @@ def cmd_handoff(api: Gitea, agent: str, args: argparse.Namespace) -> int:
|
||||||
body = read_body(args, f"Continue the bounded task in issue #{args.number}.")
|
body = read_body(args, f"Continue the bounded task in issue #{args.number}.")
|
||||||
api.comment(args.number, f"[HANDOFF] from={agent} to={args.to}\n\n{body.strip()}")
|
api.comment(args.number, f"[HANDOFF] from={agent} to={args.to}\n\n{body.strip()}")
|
||||||
api.set_labels(args.number, transition(names, agent=args.to, state="ready"))
|
api.set_labels(args.number, transition(names, agent=args.to, state="ready"))
|
||||||
|
api.set_assignee(args.number, args.to)
|
||||||
verified = api.issue(args.number)
|
verified = api.issue(args.number)
|
||||||
validate_owner(verified, args.to, "ready")
|
validate_owner(verified, args.to, "ready")
|
||||||
print(json.dumps({"status": "handed_off", "number": args.number, "from": agent, "to": args.to}))
|
print(json.dumps({"status": "handed_off", "number": args.number, "from": agent, "to": args.to}))
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,10 @@ def main() -> int:
|
||||||
if missing:
|
if missing:
|
||||||
raise RuntimeError(f"Missing labels: {sorted(missing)}")
|
raise RuntimeError(f"Missing labels: {sorted(missing)}")
|
||||||
request("POST", f"/repos/{REPO}/issues/{issue['number']}/comments", token, {"body": cycle_body(day)})
|
request("POST", f"/repos/{REPO}/issues/{issue['number']}/comments", token, {"body": cycle_body(day)})
|
||||||
request("PATCH", f"/repos/{REPO}/issues/{issue['number']}", token, {"labels": [label_ids[name] for name in sorted(desired)]})
|
request("PATCH", f"/repos/{REPO}/issues/{issue['number']}", token, {
|
||||||
|
"labels": [label_ids[name] for name in sorted(desired)],
|
||||||
|
"assignee": "timmy",
|
||||||
|
})
|
||||||
verified = request("GET", f"/repos/{REPO}/issues/{issue['number']}", token)
|
verified = request("GET", f"/repos/{REPO}/issues/{issue['number']}", token)
|
||||||
names = {label["name"] for label in verified.get("labels", [])}
|
names = {label["name"] for label in verified.get("labels", [])}
|
||||||
if not {"agent:timmy", "state:ready", "series:daily-slop", "cadence:daily"}.issubset(names):
|
if not {"agent:timmy", "state:ready", "series:daily-slop", "cadence:daily"}.issubset(names):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user