Files
deepseek-harness/docs/event-producer-consumer.md
kingwl c6ba5f1d26 Merge origin/master (agent-scope runtime #224, session-query, run-gates CI harness)
Conflict resolution beyond line merges: the ACP bridge's mode/set
re-notify moved inside master's new containment finally (a throwing
presenter must not desync the picker), and session/new keeps the modes
advertisement beside master's plain object return. dsh-mode's boundary
flush moved off the session/event feed onto the loop's interception
seams (agent/prompt-submit / agent/turn-continuation): master's scoped
dispatch made post-commit session observers observe-only — an append
from one re-enters the publishing append — while the two waterfalls
fire outside any log emit and bracket the same boundaries; mode.spec's
boundary helper now dispatches those seams via agentEvents, and the
containment tests stub only the mode/set append. Catalogs, doc graphs,
and the module graph regenerated.
2026-07-13 15:12:11 +08:00

10 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. Dynamic dispatch overrides cover sites that deliberately bypass ctx.emit, such as subagent lifecycle containment.

Event Mode Declared in Dispatchers Listeners
agent/created emit packages/core/agent/src/types.ts:316 agent (events.dispatch) mode, stdio-agent
agent/disposed emit packages/core/agent/src/types.ts:331 agent (events.dispatch) stdio-agent
agent/error emit packages/core/agent/src/types.ts:605 agent-loop (emit) -
agent/pre-step serial packages/core/agent/src/types.ts:438 agent-loop (serial) compact-basic, user-approval
agent/prompt-submit waterfall packages/core/agent/src/types.ts:456 agent-loop (waterfall) acp, hooks-claude, hooks-codex, mode, repeat-tool-guard
agent/queued emit packages/core/agent/src/types.ts:360 agent-loop (emit) -
agent/request waterfall packages/core/agent/src/types.ts:485 agent-loop (waterfall) -
agent/session-prefix waterfall packages/core/agent/src/types.ts:537 agent-loop (waterfall) tool-skill
agent/session-start emit packages/core/agent/src/types.ts:381 agent-loop (emit) hooks-claude, hooks-codex, invariants
agent/status emit packages/core/agent/src/types.ts:345 agent-loop (emit) invariants, repeat-tool-guard, stdio-agent
agent/step-result waterfall packages/core/agent/src/types.ts:552 agent-loop (waterfall) -
agent/turn-continuation waterfall packages/core/agent/src/types.ts:570 agent-loop (waterfall) hooks-claude, hooks-codex, mode
agent/turn-stop serial packages/core/agent/src/types.ts:588 agent-loop (serial) subagent-inprocess
approval/request waterfall packages/ui/user-approval/src/index.ts:70 user-approval (waterfall) acp
bash/resolve-mode waterfall packages/bash/bash/src/index.ts:57 bash (waterfall) mode
fs/edit-intent waterfall packages/fs/fs/src/index.ts:123 tool-fs (waterfall) fs-policy
fs/observed emit packages/fs/fs/src/index.ts:138 tool-fs (emit) fs-policy
fs/write-intent waterfall packages/fs/fs/src/index.ts:109 tool-fs (waterfall) fs-policy
llm/stream waterfall packages/llm/llm/src/index.ts:39 llm (waterfall) invariants, llm-replay
session/created emit packages/core/session/src/index.ts:52 session (events.dispatch) invariants, session-persistence
session/disposed emit packages/core/session/src/index.ts:64 session (events.dispatch) -
session/event emit packages/core/session/src/index.ts:83 session (events.dispatch) acp, invariants, session-persistence, stdio-agent
session/flush parallel packages/core/session/src/index.ts:101 session (events.dispatch) session-persistence
skill/provider-added emit packages/skill/skill/src/index.ts:131 skill (emit) -
skill/provider-removed emit packages/skill/skill/src/index.ts:137 skill (emit) -
subagent/end emit packages/subagent/subagent/src/index.ts:90 subagent (events.dispatch) hooks-claude
subagent/provider-added emit packages/subagent/subagent/src/index.ts:66 subagent (emit) tool-subagent
subagent/provider-removed emit packages/subagent/subagent/src/index.ts:72 subagent (events.dispatch) tool-subagent
subagent/start emit packages/subagent/subagent/src/index.ts:82 subagent (events.dispatch) hooks-claude
system-prompt/assemble waterfall packages/core/system-prompt/src/index.ts:49 system-prompt (waterfall) mode
system-prompt/change emit packages/core/system-prompt/src/index.ts:59 system-prompt (emit) -
tools/change emit packages/core/tools/src/index.ts:173 tools (emit) -
tools/execute waterfall packages/core/tools/src/index.ts:128 tools (waterfall) timeout-policy
tools/post-execute waterfall packages/core/tools/src/index.ts:148 tools (waterfall) hooks-claude, hooks-codex, repeat-tool-guard
tools/pre-execute waterfall packages/core/tools/src/index.ts:101 tools (waterfall) hooks-claude, hooks-codex, mode
tools/result emit packages/core/tools/src/index.ts:163 tools (events.dispatch) subagent-inprocess
workflow/agent-end emit packages/workflow/workflow/src/index.ts:96 workflow (events.dispatch) -
workflow/agent-start emit packages/workflow/workflow/src/index.ts:85 workflow (events.dispatch) -
workflow/end emit packages/workflow/workflow/src/index.ts:106 workflow (events.dispatch) -
workflow/log emit packages/workflow/workflow/src/index.ts:75 workflow (events.dispatch) -
workflow/phase emit packages/workflow/workflow/src/index.ts:68 workflow (events.dispatch) -
workflow/start emit packages/workflow/workflow/src/index.ts:60 workflow (events.dispatch) -

Non-harness or undeclared event strings seen in package source

Event string Dispatchers Listeners
internal/dispatch - invariants

Maintenance mode: hybrid generated: Cordis event declarations and most producer/listener edges are AST-scanned; dynamic dispatch sites are classified in scripts/gen-doc-graphs.ts.