diff --git a/agents/s11_autonomous_agents.py b/agents/s11_autonomous_agents.py index 3aec416b8..b7d11cd05 100644 --- a/agents/s11_autonomous_agents.py +++ b/agents/s11_autonomous_agents.py @@ -254,6 +254,8 @@ def _loop(self, name: str, role: str, prompt: str): output = "Entering idle phase. Will poll for new tasks." else: output = self._exec(name, block.name, block.input) + if block.name == "shutdown_response" and block.input.get("approve"): + return print(f" [{name}] {block.name}: {str(output)[:120]}") results.append({ "type": "tool_result", @@ -273,9 +275,6 @@ def _loop(self, name: str, role: str, prompt: str): inbox = BUS.read_inbox(name) if inbox: for msg in inbox: - if msg.get("type") == "shutdown_request": - self._set_status(name, "shutdown") - return messages.append({"role": "user", "content": json.dumps(msg)}) resume = True break @@ -325,6 +324,8 @@ def _exec(self, sender: str, tool_name: str, args: dict) -> str: sender, "lead", args.get("reason", ""), "shutdown_response", {"request_id": req_id, "approve": args["approve"]}, ) + if args["approve"]: + self._set_status(sender, "shutdown") return f"Shutdown {'approved' if args['approve'] else 'rejected'}" if tool_name == "plan_approval": plan_text = args.get("plan", "")