mirror of
https://github.com/agent0ai/agent-zero.git
synced 2026-08-03 21:23:33 +00:00
Route native Responses output text through the normalized response-tool executor instead of ending the monologue directly. Preserve active goal overrides and Responses state cleanup, wait for complete native streams, and reject empty response payloads.
26 lines
1.1 KiB
Python
26 lines
1.1 KiB
Python
from helpers.errors import RepairableException
|
|
from helpers.tool import Tool, Response
|
|
|
|
|
|
class ResponseTool(Tool):
|
|
|
|
async def execute(self, **kwargs):
|
|
for key in ("text", "message"):
|
|
message = self.args.get(key)
|
|
if isinstance(message, str) and message.strip():
|
|
return Response(message=message, break_loop=True)
|
|
raise RepairableException(
|
|
"response tool requires a non-empty top-level text or message string argument"
|
|
)
|
|
|
|
async def before_execution(self, **kwargs):
|
|
# self.log = self.agent.context.log.log(type="response", heading=f"{self.agent.agent_name}: Responding", content=self.args.get("text", ""))
|
|
# don't log here anymore, we have the live_response extension now
|
|
pass
|
|
|
|
async def after_execution(self, response, **kwargs):
|
|
# do not add anything to the history or output
|
|
|
|
if self.loop_data and "log_item_response" in self.loop_data.params_temporary:
|
|
log = self.loop_data.params_temporary["log_item_response"]
|
|
log.update(finished=True) # mark the message as finished
|