diff --git a/scripts/lab_loop.py b/scripts/lab_loop.py index cc0fbb2..6ab7b52 100644 --- a/scripts/lab_loop.py +++ b/scripts/lab_loop.py @@ -73,6 +73,11 @@ class Gitea: {"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: if not body.strip(): 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}.") 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_assignee(args.number, args.to) verified = api.issue(args.number) validate_owner(verified, args.to, "ready") print(json.dumps({"status": "handed_off", "number": args.number, "from": agent, "to": args.to})) diff --git a/scripts/open_daily_cycle.py b/scripts/open_daily_cycle.py index 34b8a7f..8a3007d 100644 --- a/scripts/open_daily_cycle.py +++ b/scripts/open_daily_cycle.py @@ -86,7 +86,10 @@ def main() -> int: if missing: raise RuntimeError(f"Missing labels: {sorted(missing)}") 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) names = {label["name"] for label in verified.get("labels", [])} if not {"agent:timmy", "state:ready", "series:daily-slop", "cadence:daily"}.issubset(names):