assistant
Trigger runs are session runs.
- Webhook, cron and file-change runs take the session claim and queue behind an active turn, bounded by a timeout that reports SessionBusyError instead of interleaving with the live loop.
- Registration is refcounted — a finishing trigger run can no longer evict a loop another live run still owns.
- TriggerRegistry.fire returns the agent's final answer, surfaced in the /webhooks/{trigger_id} response — the callback path the event-driven-agent spec described.