Expand description
Hook doorbells: the session’s own hook process picks the letter up.
Every provider CLI runs hooks inside the open session. m4a-inbox is
the hook command; this adapter only queues the letter in the session’s
inbox when such a hook is installed (armed) or running (live):
| Flavor | Hook | Turn starts | Consumer name |
|---|---|---|---|
claude-rewake | Claude Stop/SessionStart with asyncRewake: true running m4a-inbox wait | immediately, idle session (exit 2 wakes Claude) | live claude-rewake |
claude-stop | Claude Stop running m4a-inbox drain --format claude-stop | at the end of the current turn (decision: block) | armed stop-claude-stop |
codex-stop | Codex Stop hook, same JSON | end of current turn | armed stop-codex-stop |
kimi-stop | Kimi [[hooks]] event = "Stop", exit 2 + stderr | end of current turn | armed stop-kimi-stop |
cursor-stop | Cursor stop hook, followup_message | end of current turn (auto-submitted) | armed stop-cursor-stop |
grok-stop | Grok Build Stop hook (Claude-compatible JSON) | end of current turn | armed stop-grok-stop |
A Stop-hook doorbell cannot start a turn in an idle session; it is the fallback after the in-session primary. The letter stays durable in the inbox either way.
Structs§
- Inbox
Hook Adapter - Queues a letter for a hook that is installed in the open session.
- Inbox
Queue Adapter - Last link of every local chain: keep the letter durable in the inbox
even when no consumer is present, so the next hook run or channel
start delivers it. Reported as
WakeOutcome::Queued.
Enums§
- Hook
Flavor - Which hook drains the inbox.