fix(cron): isolate cron-execution guard with contextvars

This commit is contained in:
Re-bin
2026-03-03 05:36:48 +00:00
parent ec6430fa0c
commit 30803afec0
2 changed files with 13 additions and 7 deletions

View File

@@ -306,8 +306,9 @@ def gateway(
# Prevent the agent from scheduling new cron jobs during execution
cron_tool = agent.tools.get("cron")
cron_token = None
if isinstance(cron_tool, CronTool):
cron_tool.set_cron_context(True)
cron_token = cron_tool.set_cron_context(True)
try:
response = await agent.process_direct(
reminder_note,
@@ -316,8 +317,8 @@ def gateway(
chat_id=job.payload.to or "direct",
)
finally:
if isinstance(cron_tool, CronTool):
cron_tool.set_cron_context(False)
if isinstance(cron_tool, CronTool) and cron_token is not None:
cron_tool.reset_cron_context(cron_token)
message_tool = agent.tools.get("message")
if isinstance(message_tool, MessageTool) and message_tool._sent_in_turn: