feat(cron): add deliver parameter to support silent jobs, default true for backward compatibility

This commit is contained in:
lucario 2026-04-01 23:17:13 +08:00 committed by Xubin Ren
parent a3e4c77fff
commit 73e80b199a

View File

@ -97,9 +97,14 @@ class CronTool(Tool):
f"(e.g. '2026-02-12T10:30:00'). Naive values default to {self._default_timezone}." f"(e.g. '2026-02-12T10:30:00'). Naive values default to {self._default_timezone}."
), ),
}, },
"job_id": {"type": "string", "description": "Job ID (for remove)"}, "job_id": {"type": "string", "description": "Job ID (for remove)"},
}, "deliver": {
"required": ["action"], "type": "boolean",
"description": "Whether to deliver the execution result to the user channel (default true)",
"default": true
},
},
"required": ["action"],
} }
async def execute( async def execute(
@ -111,12 +116,13 @@ class CronTool(Tool):
tz: str | None = None, tz: str | None = None,
at: str | None = None, at: str | None = None,
job_id: str | None = None, job_id: str | None = None,
deliver: bool = True,
**kwargs: Any, **kwargs: Any,
) -> str: ) -> str:
if action == "add": if action == "add":
if self._in_cron_context.get(): if self._in_cron_context.get():
return "Error: cannot schedule new jobs from within a cron job execution" return "Error: cannot schedule new jobs from within a cron job execution"
return self._add_job(message, every_seconds, cron_expr, tz, at) return self._add_job(message, every_seconds, cron_expr, tz, at, deliver)
elif action == "list": elif action == "list":
return self._list_jobs() return self._list_jobs()
elif action == "remove": elif action == "remove":
@ -130,6 +136,7 @@ class CronTool(Tool):
cron_expr: str | None, cron_expr: str | None,
tz: str | None, tz: str | None,
at: str | None, at: str | None,
deliver: bool = True,
) -> str: ) -> str:
if not message: if not message:
return "Error: message is required for add" return "Error: message is required for add"
@ -171,7 +178,7 @@ class CronTool(Tool):
name=message[:30], name=message[:30],
schedule=schedule, schedule=schedule,
message=message, message=message,
deliver=True, deliver=deliver,
channel=self._channel, channel=self._channel,
to=self._chat_id, to=self._chat_id,
delete_after_run=delete_after, delete_after_run=delete_after,