⏱ Timers

Timers schedule future wakes. They do not run code automatically — when one fires, the system wakes the agent and the agent chooses what to do from context and work list.

set_timer.py

Create a one-shot scheduled wake (writes timers table + emits timer_set on the main stream).

cancel_timer.py

Cancel an active timer before it fires. Idempotent for already-cancelled; errors if already fired or missing.

list_timers.py

Inspect scheduled timers to avoid duplicates or pick ids to cancel.

⚠ Recurring not native: No native recurring/cron timers. Simulate recurring behavior via chained one-offs (set next timer in the wake that handles the current one). Disclose if this tooling fails.
⚠ Timer history: Dispatch is reliable, but status/list views (especially fired history) may be sparse/lagging and are not complete historical truth in isolation.