Files
deepseek-harness/docs/event-producer-consumer.md
Tianyi Cui c06e6bea0b Merge origin/master into feat/tui-package
Master unifies every live agent with its exact SessionId and moves declarative startup failures to agent-loop/config-start-failed. Keeping the branch’s AgentId label binding would let the TUI target the wrong lifecycle after reload and would miss asynchronous resume failures.

Resolve that contract migration by giving the selected terminal front door the same generated or resumed SessionId as agent-core, mounting the front door first, and entering fullscreen only after the matching root appears. Refresh the source-derived catalogs and keyless terminal goldens so Code Mode, workflow, Cordis-tool, and transient UI scenarios all exercise the merged identity model.
2026-07-19 11:37:14 +08:00

11 KiB

Event Producer And Consumer Matrix

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.

Event Mode Declared in Dispatchers Listeners
agent-loop/config-start-failed emit packages/core/agent-loop/src/index.ts:362 agent-loop (events.dispatch) stdio, tui
agent/created emit packages/core/agent/src/types.ts:141 agent (events.dispatch) stdio, tui
agent/disposed emit packages/core/agent/src/types.ts:150 agent (events.dispatch) agent-loop, stdio, tui
agent/error emit packages/core/agent/src/types.ts:285 agent-loop (emit) tui
agent/pre-step serial packages/core/agent/src/types.ts:204 agent-loop (serial) compact-basic, time-context, user-approval
agent/prompt-submit waterfall packages/core/agent/src/types.ts:214 agent-loop (waterfall) acp, hooks-claude, hooks-codex, repeat-tool-guard
agent/queued emit packages/core/agent/src/types.ts:169 agent-loop (emit) -
agent/request waterfall packages/core/agent/src/types.ts:226 agent-loop (waterfall) acp
agent/session-prefix waterfall packages/core/agent/src/types.ts:241 agent-loop (waterfall) tool-skill, workspace-context
agent/session-start emit packages/core/agent/src/types.ts:182 agent-loop (emit) hooks-claude, hooks-codex, stdio
agent/status emit packages/core/agent/src/types.ts:159 agent-loop (emit) invariants, stdio, tui
agent/step-result waterfall packages/core/agent/src/types.ts:252 agent-loop (waterfall) -
agent/turn-continuation waterfall packages/core/agent/src/types.ts:262 agent-loop (waterfall) hooks-claude, hooks-codex
agent/turn-stop serial packages/core/agent/src/types.ts:272 agent-loop (serial) subagent-inprocess
approval/request waterfall packages/ui/user-approval/src/index.ts:31 user-approval (waterfall) acp
fs/edit-intent waterfall packages/fs/fs/src/index.ts:61 tool-fs (waterfall) fs-policy
fs/observed emit packages/fs/fs/src/index.ts:70 tool-fs (emit) fs-policy
fs/write-intent waterfall packages/fs/fs/src/index.ts:53 tool-fs (waterfall) fs-policy
llm/stream waterfall packages/llm/llm/src/index.ts:40 llm (waterfall) invariants, llm-replay
session/created emit packages/core/session/src/index.ts:46 session (events.dispatch) invariants, jsonrpc, session-persistence
session/disposed emit packages/core/session/src/index.ts:56 session (events.dispatch) agent-loop, session-persistence
session/event emit packages/core/session/src/index.ts:68 session (events.dispatch) acp, invariants, jsonrpc, session-persistence, stdio, token-meter, tui, workspace-context
session/flush parallel packages/core/session/src/index.ts:78 session (events.dispatch) session-persistence
subagent/end emit packages/subagent/subagent/src/index.ts:112 subagent (events.dispatch) hooks-claude, jsonrpc
subagent/provider-added emit packages/subagent/subagent/src/index.ts:86 subagent (emit) tool-subagent
subagent/provider-removed emit packages/subagent/subagent/src/index.ts:92 subagent (events.dispatch) tool-subagent
subagent/start emit packages/subagent/subagent/src/index.ts:103 subagent (events.dispatch) hooks-claude
system-prompt/assemble waterfall packages/core/system-prompt/src/index.ts:27 system-prompt (waterfall) acp
system-prompt/change emit packages/core/system-prompt/src/index.ts:33 system-prompt (emit) -
tools/change emit packages/core/tools/src/index.ts:116 tools (emit) -
tools/execute waterfall packages/core/tools/src/index.ts:89 tools (waterfall) timeout-policy
tools/post-execute waterfall packages/core/tools/src/index.ts:98 tools (waterfall) hooks-claude, hooks-codex, repeat-tool-guard, spill-policy, workspace-context
tools/pre-execute waterfall packages/core/tools/src/index.ts:80 tools (waterfall) hooks-claude, hooks-codex
tools/result emit packages/core/tools/src/index.ts:106 tools (events.dispatch) subagent-inprocess, workspace-context
workflow/agent-end emit packages/workflow/workflow/src/index.ts:81 workflow (events.dispatch) -
workflow/agent-start emit packages/workflow/workflow/src/index.ts:70 workflow (events.dispatch) -
workflow/end emit packages/workflow/workflow/src/index.ts:91 workflow (events.dispatch) -
workflow/log emit packages/workflow/workflow/src/index.ts:60 workflow (events.dispatch) -
workflow/phase emit packages/workflow/workflow/src/index.ts:53 workflow (events.dispatch) -
workflow/start emit packages/workflow/workflow/src/index.ts:45 workflow (events.dispatch) -

Non-harness or undeclared event strings seen in package source

Event string Dispatchers Listeners
internal/dispatch - invariants

Maintenance mode: generated: Cordis event declarations and producer/listener edges are resolved from the repository TypeScript Program.