2026-07-05 01:25:58 +08:00
<!-- Generated by scripts/gen-doc-graphs.ts - do not edit by hand.
Run `pnpm run gen-doc-graphs` to regenerate. -->
# Event Producer And Consumer Matrix
2026-07-14 23:14:51 +08:00
This matrix shows which packages dispatch each harness-owned event and which packages listen to it. It is intentionally a table rather than one large graph: events are many-to-many, and dense relation data is easier to review in rows. Receiver and event-name types also cover contained dispatch sites that deliberately bypass `ctx.emit` , such as subagent lifecycle containment.
2026-07-05 01:25:58 +08:00
| Event | Mode | Declared in | Dispatchers | Listeners |
| --- | --- | --- | --- | --- |
2026-07-15 02:02:11 +08:00
| `agent/created` | `emit` | [`packages/core/agent/src/types.ts:139` ](../packages/core/agent/src/types.ts ) | [`agent` ](../packages/core/agent ) (`events.dispatch` ) | [`jsonrpc` ](../packages/ui/jsonrpc ), [`stdio` ](../packages/ui/stdio ) |
| `agent/disposed` | `emit` | [`packages/core/agent/src/types.ts:148` ](../packages/core/agent/src/types.ts ) | [`agent` ](../packages/core/agent ) (`events.dispatch` ) | [`stdio` ](../packages/ui/stdio ) |
2026-07-14 16:21:41 +08:00
| `agent/error` | `emit` | [`packages/core/agent/src/types.ts:283` ](../packages/core/agent/src/types.ts ) | [`agent-loop` ](../packages/core/agent-loop ) (`emit` ) | - |
| `agent/pre-step` | `serial` | [`packages/core/agent/src/types.ts:202` ](../packages/core/agent/src/types.ts ) | [`agent-loop` ](../packages/core/agent-loop ) (`serial` ) | [`compact-basic` ](../packages/compact/compact-basic ), [`user-approval` ](../packages/ui/user-approval ) |
| `agent/prompt-submit` | `waterfall` | [`packages/core/agent/src/types.ts:212` ](../packages/core/agent/src/types.ts ) | [`agent-loop` ](../packages/core/agent-loop ) (`waterfall` ) | [`acp` ](../packages/ui/acp ), [`hooks-claude` ](../packages/hooks/hooks-claude ), [`hooks-codex` ](../packages/hooks/hooks-codex ), [`repeat-tool-guard` ](../packages/guard/repeat-tool-guard ) |
| `agent/queued` | `emit` | [`packages/core/agent/src/types.ts:167` ](../packages/core/agent/src/types.ts ) | [`agent-loop` ](../packages/core/agent-loop ) (`emit` ) | - |
| `agent/request` | `waterfall` | [`packages/core/agent/src/types.ts:224` ](../packages/core/agent/src/types.ts ) | [`agent-loop` ](../packages/core/agent-loop ) (`waterfall` ) | - |
| `agent/session-prefix` | `waterfall` | [`packages/core/agent/src/types.ts:239` ](../packages/core/agent/src/types.ts ) | [`agent-loop` ](../packages/core/agent-loop ) (`waterfall` ) | [`tool-skill` ](../packages/skill/tool-skill ) |
2026-07-14 23:14:51 +08:00
| `agent/session-start` | `emit` | [`packages/core/agent/src/types.ts:180` ](../packages/core/agent/src/types.ts ) | [`agent-loop` ](../packages/core/agent-loop ) (`emit` ) | [`hooks-claude` ](../packages/hooks/hooks-claude ), [`hooks-codex` ](../packages/hooks/hooks-codex ) |
2026-07-15 02:02:11 +08:00
| `agent/status` | `emit` | [`packages/core/agent/src/types.ts:157` ](../packages/core/agent/src/types.ts ) | [`agent-loop` ](../packages/core/agent-loop ) (`emit` ) | [`invariants` ](../packages/support/invariants ), [`repeat-tool-guard` ](../packages/guard/repeat-tool-guard ), [`stdio` ](../packages/ui/stdio ) |
2026-07-14 16:21:41 +08:00
| `agent/step-result` | `waterfall` | [`packages/core/agent/src/types.ts:250` ](../packages/core/agent/src/types.ts ) | [`agent-loop` ](../packages/core/agent-loop ) (`waterfall` ) | - |
| `agent/turn-continuation` | `waterfall` | [`packages/core/agent/src/types.ts:260` ](../packages/core/agent/src/types.ts ) | [`agent-loop` ](../packages/core/agent-loop ) (`waterfall` ) | [`hooks-claude` ](../packages/hooks/hooks-claude ), [`hooks-codex` ](../packages/hooks/hooks-codex ) |
| `agent/turn-stop` | `serial` | [`packages/core/agent/src/types.ts:270` ](../packages/core/agent/src/types.ts ) | [`agent-loop` ](../packages/core/agent-loop ) (`serial` ) | [`subagent-inprocess` ](../packages/subagent/subagent-inprocess ) |
2026-07-13 16:24:32 +08:00
| `approval/request` | `waterfall` | [`packages/ui/user-approval/src/index.ts:31` ](../packages/ui/user-approval/src/index.ts ) | [`user-approval` ](../packages/ui/user-approval ) (`waterfall` ) | [`acp` ](../packages/ui/acp ) |
2026-07-13 23:27:00 +08:00
| `fs/edit-intent` | `waterfall` | [`packages/fs/fs/src/index.ts:59` ](../packages/fs/fs/src/index.ts ) | [`tool-fs` ](../packages/fs/tool-fs ) (`waterfall` ) | [`fs-policy` ](../packages/fs/fs-policy ) |
| `fs/observed` | `emit` | [`packages/fs/fs/src/index.ts:68` ](../packages/fs/fs/src/index.ts ) | [`tool-fs` ](../packages/fs/tool-fs ) (`emit` ) | [`fs-policy` ](../packages/fs/fs-policy ) |
2026-07-12 03:36:43 +08:00
| `fs/write-intent` | `waterfall` | [`packages/fs/fs/src/index.ts:51` ](../packages/fs/fs/src/index.ts ) | [`tool-fs` ](../packages/fs/tool-fs ) (`waterfall` ) | [`fs-policy` ](../packages/fs/fs-policy ) |
2026-07-06 03:49:35 +08:00
| `llm/stream` | `waterfall` | [`packages/llm/llm/src/index.ts:39` ](../packages/llm/llm/src/index.ts ) | [`llm` ](../packages/llm/llm ) (`waterfall` ) | [`invariants` ](../packages/support/invariants ), [`llm-replay` ](../packages/support/llm-replay ) |
2026-07-14 23:14:51 +08:00
| `session/created` | `emit` | [`packages/core/session/src/index.ts:47` ](../packages/core/session/src/index.ts ) | [`session` ](../packages/core/session ) (`events.dispatch` ) | [`invariants` ](../packages/support/invariants ), [`jsonrpc` ](../packages/ui/jsonrpc ), [`session-persistence` ](../packages/session-persistence/session-persistence ) |
| `session/disposed` | `emit` | [`packages/core/session/src/index.ts:57` ](../packages/core/session/src/index.ts ) | [`session` ](../packages/core/session ) (`events.dispatch` ) | - |
2026-07-15 02:02:11 +08:00
| `session/event` | `emit` | [`packages/core/session/src/index.ts:69` ](../packages/core/session/src/index.ts ) | [`session` ](../packages/core/session ) (`events.dispatch` ) | [`acp` ](../packages/ui/acp ), [`invariants` ](../packages/support/invariants ), [`jsonrpc` ](../packages/ui/jsonrpc ), [`session-persistence` ](../packages/session-persistence/session-persistence ), [`stdio` ](../packages/ui/stdio ) |
2026-07-14 23:14:51 +08:00
| `session/flush` | `parallel` | [`packages/core/session/src/index.ts:79` ](../packages/core/session/src/index.ts ) | [`session` ](../packages/core/session ) (`events.dispatch` ) | [`session-persistence` ](../packages/session-persistence/session-persistence ) |
2026-07-15 11:17:55 +08:00
| `subagent/end` | `emit` | [`packages/subagent/subagent/src/index.ts:108` ](../packages/subagent/subagent/src/index.ts ) | [`subagent` ](../packages/subagent/subagent ) (`events.dispatch` ) | [`hooks-claude` ](../packages/hooks/hooks-claude ), [`jsonrpc` ](../packages/ui/jsonrpc ) |
2026-07-13 15:57:17 +08:00
| `subagent/provider-added` | `emit` | [`packages/subagent/subagent/src/index.ts:82` ](../packages/subagent/subagent/src/index.ts ) | [`subagent` ](../packages/subagent/subagent ) (`emit` ) | [`tool-subagent` ](../packages/subagent/tool-subagent ) |
| `subagent/provider-removed` | `emit` | [`packages/subagent/subagent/src/index.ts:88` ](../packages/subagent/subagent/src/index.ts ) | [`subagent` ](../packages/subagent/subagent ) (`events.dispatch` ) | [`tool-subagent` ](../packages/subagent/tool-subagent ) |
2026-07-15 11:17:55 +08:00
| `subagent/start` | `emit` | [`packages/subagent/subagent/src/index.ts:99` ](../packages/subagent/subagent/src/index.ts ) | [`subagent` ](../packages/subagent/subagent ) (`events.dispatch` ) | [`hooks-claude` ](../packages/hooks/hooks-claude ) |
2026-07-13 16:24:32 +08:00
| `system-prompt/assemble` | `waterfall` | [`packages/core/system-prompt/src/index.ts:27` ](../packages/core/system-prompt/src/index.ts ) | [`system-prompt` ](../packages/core/system-prompt ) (`waterfall` ) | - |
| `system-prompt/change` | `emit` | [`packages/core/system-prompt/src/index.ts:33` ](../packages/core/system-prompt/src/index.ts ) | [`system-prompt` ](../packages/core/system-prompt ) (`emit` ) | - |
| `tools/change` | `emit` | [`packages/core/tools/src/index.ts:116` ](../packages/core/tools/src/index.ts ) | [`tools` ](../packages/core/tools ) (`emit` ) | - |
| `tools/execute` | `waterfall` | [`packages/core/tools/src/index.ts:89` ](../packages/core/tools/src/index.ts ) | [`tools` ](../packages/core/tools ) (`waterfall` ) | [`timeout-policy` ](../packages/timeout/timeout-policy ) |
| `tools/post-execute` | `waterfall` | [`packages/core/tools/src/index.ts:98` ](../packages/core/tools/src/index.ts ) | [`tools` ](../packages/core/tools ) (`waterfall` ) | [`hooks-claude` ](../packages/hooks/hooks-claude ), [`hooks-codex` ](../packages/hooks/hooks-codex ), [`repeat-tool-guard` ](../packages/guard/repeat-tool-guard ) |
| `tools/pre-execute` | `waterfall` | [`packages/core/tools/src/index.ts:80` ](../packages/core/tools/src/index.ts ) | [`tools` ](../packages/core/tools ) (`waterfall` ) | [`hooks-claude` ](../packages/hooks/hooks-claude ), [`hooks-codex` ](../packages/hooks/hooks-codex ) |
| `tools/result` | `emit` | [`packages/core/tools/src/index.ts:106` ](../packages/core/tools/src/index.ts ) | [`tools` ](../packages/core/tools ) (`events.dispatch` ) | [`subagent-inprocess` ](../packages/subagent/subagent-inprocess ) |
| `workflow/agent-end` | `emit` | [`packages/workflow/workflow/src/index.ts:81` ](../packages/workflow/workflow/src/index.ts ) | [`workflow` ](../packages/workflow/workflow ) (`events.dispatch` ) | - |
| `workflow/agent-start` | `emit` | [`packages/workflow/workflow/src/index.ts:70` ](../packages/workflow/workflow/src/index.ts ) | [`workflow` ](../packages/workflow/workflow ) (`events.dispatch` ) | - |
| `workflow/end` | `emit` | [`packages/workflow/workflow/src/index.ts:91` ](../packages/workflow/workflow/src/index.ts ) | [`workflow` ](../packages/workflow/workflow ) (`events.dispatch` ) | - |
| `workflow/log` | `emit` | [`packages/workflow/workflow/src/index.ts:60` ](../packages/workflow/workflow/src/index.ts ) | [`workflow` ](../packages/workflow/workflow ) (`events.dispatch` ) | - |
| `workflow/phase` | `emit` | [`packages/workflow/workflow/src/index.ts:53` ](../packages/workflow/workflow/src/index.ts ) | [`workflow` ](../packages/workflow/workflow ) (`events.dispatch` ) | - |
| `workflow/start` | `emit` | [`packages/workflow/workflow/src/index.ts:45` ](../packages/workflow/workflow/src/index.ts ) | [`workflow` ](../packages/workflow/workflow ) (`events.dispatch` ) | - |
2026-07-05 02:54:01 +08:00
2026-07-09 02:18:39 +08:00
## Non-harness or undeclared event strings seen in package source
| Event string | Dispatchers | Listeners |
| --- | --- | --- |
| `internal/dispatch` | - | [`invariants` ](../packages/support/invariants ) |
2026-07-05 02:54:01 +08:00
2026-07-14 23:14:51 +08:00
Maintenance mode: generated: Cordis event declarations and producer/listener edges are resolved from the repository TypeScript Program.