45ab5e3b5d
ChatGPT Work's Aug 25 2026 release lets scheduled tasks fire from app events (new Gmail message, Slack activity, GitHub PR feedback) instead of polling on a cadence. This ports the pattern by composing two existing Hermes subsystems: a webhook route can now set cron_job to fire an existing cron job on each inbound event. - gateway/platforms/webhook.py: cron_job route mode — after the same HMAC auth / rate limit / filters / script / idempotency as agent routes, the rendered prompt becomes transient per-run context and the job fires through execute_job_for_event on a worker thread (202 Accepted immediately). Startup validation rejects cron_job + deliver_only. - tools/cronjob_tools.py: execute_job_for_event() — public wrapper over the shared claimed-run body (_execute_job_now), so event fires share at-most-once claiming, in-flight dedupe, delivery, and [SILENT] handling with scheduler and manual runs. - hermes webhook subscribe --cron-job: creates event-trigger subscriptions; job ref validated (and canonicalized to the job ID) at create time. - Docs: webhooks.md route table + Event-Triggered Cron Jobs section, cron.md capability list, zh-Hans mirrors. - Tests: tests/gateway/test_webhook_cron_trigger.py (adapter + unit), CLI tests in test_webhook_cli.py.