dsh-plugin-dev-kb 1.0.8 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.en.md +6 -6
  3. package/README.md +6 -6
  4. package/kb/INDEX.md +21 -5
  5. package/kb/README.md +11 -10
  6. package/kb/extra/AGENTS.md +4 -4
  7. package/kb/extra/cookbook/adding-a-remote-api.md +197 -0
  8. package/kb/extra/cookbook/adding-a-remote-api.zh.md +197 -0
  9. package/kb/extra/cookbook/adding-a-vendored-package.md +2 -2
  10. package/kb/extra/cookbook/adding-a-vendored-package.zh.md +2 -2
  11. package/kb/extra/deepseek-llm-api-wire-extensions.md +163 -0
  12. package/kb/extra/deepseek-llm-api-wire-extensions.zh.md +163 -0
  13. package/kb/extra/development.md +8 -14
  14. package/kb/extra/development.zh.md +8 -14
  15. package/kb/extra/event-producer-consumer.md +55 -48
  16. package/kb/extra/event-producer-consumer.zh.md +58 -51
  17. package/kb/extra/glossary.md +1 -1
  18. package/kb/extra/glossary.zh.md +1 -1
  19. package/kb/extra/graph-atlas.md +0 -2
  20. package/kb/extra/graph-atlas.zh.md +0 -2
  21. package/kb/extra/i18n/README.md +4 -4
  22. package/kb/extra/i18n/README.zh.md +4 -4
  23. package/kb/extra/i18n/style-samples.md +2 -2
  24. package/kb/extra/module-graph.md +646 -926
  25. package/kb/extra/module-graph.zh.md +648 -928
  26. package/kb/extra/postmortem/0001-acp-default-export-drops-inject.md +2 -2
  27. package/kb/extra/postmortem/0001-acp-default-export-drops-inject.zh.md +2 -2
  28. package/kb/extra/postmortem/0002-js-expression-disabled-filesystem-tools.md +2 -2
  29. package/kb/extra/postmortem/0002-js-expression-disabled-filesystem-tools.zh.md +2 -2
  30. package/kb/extra/postmortem/0003-web-agent-gui-feedback-loop.md +2 -2
  31. package/kb/extra/postmortem/0003-web-agent-gui-feedback-loop.zh.md +2 -2
  32. package/kb/extra/postmortem/0004-landlock-partial-notice-misclassified-child-failures.md +1 -1
  33. package/kb/extra/postmortem/0004-landlock-partial-notice-misclassified-child-failures.zh.md +1 -1
  34. package/kb/extra/rescope.md +2 -2
  35. package/kb/extra/rescope.zh.md +2 -2
  36. package/kb/extra/subsystems/agent-team.md +28 -4
  37. package/kb/extra/subsystems/agent-team.zh.md +28 -4
  38. package/kb/extra/subsystems/attachment.md +168 -7
  39. package/kb/extra/subsystems/attachment.zh.md +168 -7
  40. package/kb/extra/subsystems/extensions.md +18 -0
  41. package/kb/extra/subsystems/extensions.zh.md +18 -0
  42. package/kb/extra/subsystems/feedback.md +4 -4
  43. package/kb/extra/subsystems/feedback.zh.md +4 -4
  44. package/kb/extra/subsystems/todo.md +32 -0
  45. package/kb/extra/subsystems/todo.zh.md +32 -0
  46. package/kb/extra/subsystems/webhook.md +70 -0
  47. package/kb/extra/subsystems/webhook.zh.md +70 -0
  48. package/kb/extra/testing.md +15 -10
  49. package/kb/extra/testing.zh.md +13 -8
  50. package/kb/extra/web-styling.md +4 -0
  51. package/kb/extra/web-styling.zh.md +4 -0
  52. package/kb/meta/search-index.json +309 -177
  53. package/kb/meta/site-pages.txt +183 -167
  54. package/kb/meta/source.json +5 -5
  55. package/kb/meta/topics.md +14 -6
  56. package/kb/site/develop/basic/publish.md +2 -2
  57. package/kb/site/develop/basic/tool.md +1 -1
  58. package/kb/site/develop/cordis-tutorial/07-into-the-harness.md +5 -4
  59. package/kb/site/develop/framework/events.md +1 -1
  60. package/kb/site/develop/practice/dynamic-cordis.md +17 -0
  61. package/kb/site/develop/practice/llm-adapter.md +4 -3
  62. package/kb/site/en/develop/basic/publish.md +2 -2
  63. package/kb/site/en/develop/basic/tool.md +1 -1
  64. package/kb/site/en/develop/cordis-tutorial/07-into-the-harness.md +5 -4
  65. package/kb/site/en/develop/framework/events.md +1 -1
  66. package/kb/site/en/develop/practice/dynamic-cordis.md +17 -0
  67. package/kb/site/en/develop/practice/llm-adapter.md +4 -3
  68. package/kb/site/en/guide/github-review.md +104 -0
  69. package/kb/site/en/guide/mcp-memory.md +103 -0
  70. package/kb/site/en/guide/network-proxy.md +87 -0
  71. package/kb/site/en/guide/providers.md +70 -17
  72. package/kb/site/en/guide/python-sdk.md +80 -34
  73. package/kb/site/en/guide/schedule.md +23 -0
  74. package/kb/site/en/reference/agent-lifecycle.md +6 -4
  75. package/kb/{extra → site/en/reference}/api-gateway.md +12 -10
  76. package/kb/site/en/reference/capability-seams.md +128 -73
  77. package/kb/site/en/reference/config-catalog.md +481 -360
  78. package/kb/site/en/reference/cookbook/adding-a-package.md +3 -4
  79. package/kb/site/en/reference/cookbook/adding-a-settings-card.md +12 -10
  80. package/kb/site/en/reference/cookbook/adding-a-tool.md +11 -4
  81. package/kb/site/en/reference/cookbook/adding-an-llm-adapter.md +1 -1
  82. package/kb/site/en/reference/cookbook/extension-cookbook.md +20 -17
  83. package/kb/site/en/reference/cordis-api/inherited.md +1 -1
  84. package/kb/site/en/reference/cordis-primer.md +2 -1
  85. package/kb/site/en/reference/index.md +30 -11
  86. package/kb/site/en/reference/persistence-catalog.md +148 -80
  87. package/kb/site/en/reference/subsystems/approval.md +10 -10
  88. package/kb/site/en/reference/subsystems/client-modules.md +58 -16
  89. package/kb/site/en/reference/subsystems/code-runtime.md +10 -6
  90. package/kb/site/en/reference/subsystems/commands.md +25 -16
  91. package/kb/site/en/reference/subsystems/compaction.md +11 -11
  92. package/kb/site/en/reference/{cookbook/adding-a-conversation-node.md → subsystems/conversation.md} +50 -24
  93. package/kb/site/en/reference/subsystems/core.md +156 -17
  94. package/kb/site/en/reference/subsystems/credentials.md +44 -3
  95. package/kb/site/en/reference/subsystems/filesystem.md +12 -2
  96. package/kb/site/en/reference/subsystems/goal.md +1 -1
  97. package/kb/site/en/reference/subsystems/index.md +7 -2
  98. package/kb/site/en/reference/subsystems/jobs.md +1 -1
  99. package/kb/site/en/reference/subsystems/llm-streaming.md +154 -12
  100. package/kb/site/en/reference/subsystems/permission-presets.md +6 -6
  101. package/kb/site/en/reference/subsystems/persistence.md +185 -175
  102. package/kb/site/en/reference/subsystems/plan.md +2 -2
  103. package/kb/site/en/reference/subsystems/sandbox.md +2 -0
  104. package/kb/site/en/reference/subsystems/schedule.md +9 -3
  105. package/kb/site/en/reference/subsystems/session-projection.md +115 -48
  106. package/kb/site/en/reference/subsystems/session-query.md +28 -14
  107. package/kb/site/en/reference/subsystems/session-reference.md +53 -8
  108. package/kb/site/en/reference/subsystems/session-telemetry.md +8 -8
  109. package/kb/site/en/reference/subsystems/session-title.md +6 -6
  110. package/kb/site/en/reference/subsystems/session.md +401 -99
  111. package/kb/site/en/reference/subsystems/settings.md +101 -6
  112. package/kb/site/en/reference/subsystems/skills.md +23 -0
  113. package/kb/site/en/reference/subsystems/slots.md +178 -0
  114. package/kb/site/en/reference/subsystems/spill.md +2 -2
  115. package/kb/site/en/reference/subsystems/storage.md +34 -3
  116. package/kb/site/en/reference/subsystems/subagent.md +122 -109
  117. package/kb/site/en/reference/subsystems/system-prompt.md +17 -4
  118. package/kb/site/en/reference/subsystems/token-meter.md +27 -12
  119. package/kb/site/en/reference/subsystems/tools.md +39 -39
  120. package/kb/site/en/reference/subsystems/typert.md +62 -55
  121. package/kb/site/en/reference/subsystems/user-questions.md +33 -33
  122. package/kb/site/en/reference/subsystems/web-client.md +98 -0
  123. package/kb/site/en/reference/subsystems/web-server.md +11 -5
  124. package/kb/site/en/reference/subsystems/web.md +7 -1
  125. package/kb/site/en/reference/subsystems/workspace.md +102 -9
  126. package/kb/site/en/reference/tool-catalog.md +86 -82
  127. package/kb/site/en/reference/tool-execution-pipeline.md +1 -1
  128. package/kb/site/guide/github-review.md +104 -0
  129. package/kb/site/guide/mcp-memory.md +103 -0
  130. package/kb/site/guide/network-proxy.md +87 -0
  131. package/kb/site/guide/providers.md +70 -17
  132. package/kb/site/guide/python-sdk.md +87 -41
  133. package/kb/site/guide/schedule.md +23 -0
  134. package/kb/site/reference/agent-lifecycle.md +6 -4
  135. package/kb/{extra/api-gateway.zh.md → site/reference/api-gateway.md} +12 -10
  136. package/kb/site/reference/capability-seams.md +128 -73
  137. package/kb/site/reference/config-catalog.md +481 -360
  138. package/kb/site/reference/cookbook/adding-a-package.md +3 -4
  139. package/kb/site/reference/cookbook/adding-a-settings-card.md +12 -10
  140. package/kb/site/reference/cookbook/adding-a-tool.md +11 -4
  141. package/kb/site/reference/cookbook/adding-an-llm-adapter.md +1 -1
  142. package/kb/site/reference/cookbook/extension-cookbook.md +20 -17
  143. package/kb/site/reference/cordis-api/inherited.md +1 -1
  144. package/kb/site/reference/cordis-primer.md +2 -1
  145. package/kb/site/reference/index.md +30 -11
  146. package/kb/site/reference/persistence-catalog.md +148 -80
  147. package/kb/site/reference/subsystems/approval.md +10 -10
  148. package/kb/site/reference/subsystems/client-modules.md +58 -16
  149. package/kb/site/reference/subsystems/code-runtime.md +10 -6
  150. package/kb/site/reference/subsystems/commands.md +25 -16
  151. package/kb/site/reference/subsystems/compaction.md +11 -11
  152. package/kb/site/reference/{cookbook/adding-a-conversation-node.md → subsystems/conversation.md} +50 -24
  153. package/kb/site/reference/subsystems/core.md +156 -17
  154. package/kb/site/reference/subsystems/credentials.md +44 -3
  155. package/kb/site/reference/subsystems/filesystem.md +12 -2
  156. package/kb/site/reference/subsystems/goal.md +1 -1
  157. package/kb/site/reference/subsystems/index.md +7 -2
  158. package/kb/site/reference/subsystems/jobs.md +1 -1
  159. package/kb/site/reference/subsystems/llm-streaming.md +154 -12
  160. package/kb/site/reference/subsystems/permission-presets.md +5 -5
  161. package/kb/site/reference/subsystems/persistence.md +184 -174
  162. package/kb/site/reference/subsystems/plan.md +2 -2
  163. package/kb/site/reference/subsystems/schedule.md +9 -3
  164. package/kb/site/reference/subsystems/session-projection.md +115 -48
  165. package/kb/site/reference/subsystems/session-query.md +28 -14
  166. package/kb/site/reference/subsystems/session-reference.md +53 -8
  167. package/kb/site/reference/subsystems/session-telemetry.md +8 -8
  168. package/kb/site/reference/subsystems/session-title.md +6 -6
  169. package/kb/site/reference/subsystems/session.md +401 -99
  170. package/kb/site/reference/subsystems/settings.md +101 -6
  171. package/kb/site/reference/subsystems/skills.md +23 -0
  172. package/kb/site/reference/subsystems/slots.md +178 -0
  173. package/kb/site/reference/subsystems/spill.md +2 -2
  174. package/kb/site/reference/subsystems/storage.md +34 -3
  175. package/kb/site/reference/subsystems/subagent.md +122 -109
  176. package/kb/site/reference/subsystems/system-prompt.md +17 -4
  177. package/kb/site/reference/subsystems/token-meter.md +27 -12
  178. package/kb/site/reference/subsystems/tools.md +39 -39
  179. package/kb/site/reference/subsystems/typert.md +62 -55
  180. package/kb/site/reference/subsystems/user-questions.md +33 -33
  181. package/kb/site/reference/subsystems/web-client.md +98 -0
  182. package/kb/site/reference/subsystems/web-server.md +11 -5
  183. package/kb/site/reference/subsystems/web.md +7 -1
  184. package/kb/site/reference/subsystems/workspace.md +102 -9
  185. package/kb/site/reference/tool-catalog.md +85 -81
  186. package/kb/site/reference/tool-execution-pipeline.md +1 -1
  187. package/package.json +2 -2
  188. package/skills/dsh-plugin-dev-kb.md +8 -6
@@ -12,7 +12,7 @@ Every event type that can appear in a session's durable event log: the complete
12
12
 
13
13
  This file is GENERATED from source (`scripts/gen-persistence-catalog.ts`) and verified fresh by `pnpm run verify-persistence-catalog` (part of `doc-sync`) — do not edit it by hand. Declaration blocks retain the source declaration and nested property JSDoc, removing only the indentation imposed by a containing interface/module, and use a `ts persistence-catalog` fence (skipped by doc-typecheck because declarations reference types from their owning modules). Type names in a payload link to the page that documents them. See [the persistence-log-catalog Agent Note](https://github.com/deepseek-ai/deepseek-harness/blob/master/.agents/notes/archived/process/2026-07-04-persistence-log-catalog.md).
14
14
 
15
- The envelope declarations below compose each event's `type`, monotonic `seq`, epoch-ms `time`, `data`, the optional `ignorable` unknown-type skip marker, and the conditional `surfaceOp`/`sourceEventSeqs` fields. **surface** marks a `SurfaceEventType` member: it produces an LLM message and declares how it joins the surface list. **log-only** marks everything else: a durable, replayable record with no derived-history contribution. Every payload is JSON-serializable (enforced at `Session.append`), and the whole format is pinned at `SESSION_FORMAT_VERSION = 0` pre-release, no compatibility implied ([the version stance](./subsystems/persistence.md)). Scope: the packages in this repo; a downstream plugin can merge further event types, which are outside this catalog by construction.
15
+ The envelope declarations below compose each event's `type`, monotonic `seq`, epoch-ms `time`, `data`, the optional `ignorable` unknown-type skip marker, and the conditional `surfaceOp`/`sourceEventSeqs` fields. **surface** marks a `SurfaceEventType` member: it produces an LLM message and declares how it joins the surface list. **log-only** marks everything else: a durable, replayable record with no derived-history contribution. Every payload is JSON-serializable (enforced at `Session.append`). Current writers stamp `SESSION_FORMAT_VERSION`; supported historical artifacts reach this current vocabulary through the build-static adjacent migration catalog ([the version lifecycle](./subsystems/persistence.md)). Scope: the packages in this repo; a downstream plugin can merge further current-version event types, which are outside this catalog by construction and require an explicit disposition at a later format edge.
16
16
 
17
17
  ## Event envelope
18
18
 
@@ -23,7 +23,8 @@ export type SessionEventType = keyof SessionEventMap
23
23
  /**
24
24
  * The subset of {@link SessionEventType} values whose events produce LLM
25
25
  * messages and are eligible to appear on the ordered surface. Only these
26
- * event types may carry {@link SurfaceOp} and {@link SessionEvent.sourceEventSeqs}.
26
+ * event types may carry {@link SurfaceOp}; user and tool events may also cite
27
+ * earlier sources through {@link SessionEvent.sourceEventSeqs}.
27
28
  */
28
29
  export type SurfaceEventType =
29
30
  | 'user/message'
@@ -45,7 +46,7 @@ export type SurfaceEventType =
45
46
  */
46
47
  export type SurfaceOp =
47
48
  | 'append'
48
- | { op: 'replace'; start: number; end: number }
49
+ | { op: 'replace'; start: SessionSeq; end: SessionSeq }
49
50
 
50
51
  /**
51
52
  * One immutable entry in the session log.
@@ -56,7 +57,7 @@ export type SurfaceOp =
56
57
  * The {@link sourceEventSeqs} and {@link surfaceOp} fields are conditional:
57
58
  * they only exist on {@link SurfaceEventType} variants (`user/message`,
58
59
  * `assistant/message`, `tool/result`).
59
- * Non-surface events (boundary markers, chunks, usage, errors) never carry
60
+ * Non-surface events (boundary markers, attempts, errors) never carry
60
61
  * surface metadata — the compiler enforces this at `Session.append()`
61
62
  * call sites.
62
63
  */
@@ -64,7 +65,7 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
64
65
  [K in SessionEventType]: {
65
66
  type: K
66
67
  /** Monotonic sequence number within the session. */
67
- seq: number
68
+ seq: SessionSeq
68
69
  /** Unix epoch milliseconds. */
69
70
  time: number
70
71
  data: SessionEventMap[K]
@@ -81,21 +82,18 @@ export type SessionEvent<T extends SessionEventType = SessionEventType> = {
81
82
  ignorable?: true
82
83
  } & (K extends SurfaceEventType ? {
83
84
  /**
84
- * Seq numbers of earlier events that this event cites as sources
85
- * (e.g. the `assistant/chunk` seqs that built an `assistant/message`,
86
- * or the surface nodes shadowed by a compaction replace node). An
87
- * `assistant/message` may carry a present empty array for a known empty
88
- * provider stream; when the field is absent, the event does not record which
89
- * earlier events produced the message.
85
+ * Seq numbers of earlier events that this event cites as sources, such as
86
+ * the surface nodes shadowed by a compaction replacement. A v2
87
+ * `assistant/message` embeds its provider stream and cannot carry this field.
90
88
  */
91
- sourceEventSeqs?: number[]
89
+ sourceEventSeqs?: SessionSeq[]
92
90
  /** How this event entered the surface; absent for non-surface events. */
93
91
  surfaceOp?: SurfaceOp
94
92
  } : object)
95
93
  }[T]
96
94
  ```
97
95
 
98
- Sources: [`packages/core/session/src/types.ts:340`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:347`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:376`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:408`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
96
+ Sources: [`packages/core/session/src/types.ts:379`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:387`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:416`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts) · [`packages/core/session/src/types.ts:447`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
99
97
 
100
98
  ## Events
101
99
 
@@ -120,7 +118,7 @@ Sources: [`packages/core/session/src/types.ts:340`](https://github.com/deepseek-
120
118
  }
121
119
  ```
122
120
 
123
- Source: [`packages/core/agent/src/types.ts:19`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/agent/src/types.ts)
121
+ Source: [`packages/core/agent/src/types.ts:58`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/agent/src/types.ts)
124
122
 
125
123
  ### `agent-preset/*`
126
124
 
@@ -138,7 +136,7 @@ Source: [`packages/core/agent/src/types.ts:19`](https://github.com/deepseek-ai/d
138
136
  'agent-preset/selected': { agentPreset: string }
139
137
  ```
140
138
 
141
- Source: [`packages/preset/agent-presets/src/session.ts:26`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/preset/agent-presets/src/session.ts)
139
+ Source: [`packages/preset/agent-presets/src/session.ts:28`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/preset/agent-presets/src/session.ts)
142
140
 
143
141
  ### `approval/*`
144
142
 
@@ -158,14 +156,14 @@ Source: [`packages/preset/agent-presets/src/session.ts:26`](https://github.com/d
158
156
  'approval/asked': {
159
157
  id: ApprovalRequestId
160
158
  toolName: string
161
- callId?: CallId
159
+ callId?: ToolCallId
162
160
  reason?: string
163
161
  }
164
162
  ```
165
163
 
166
- Types: [CallId](./subsystems/core.md)
164
+ Types: [ToolCallId](./subsystems/core.md)
167
165
 
168
- Source: [`packages/interaction/user-approval/src/index.ts:44`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/user-approval/src/index.ts)
166
+ Source: [`packages/interaction/user-approval/src/types.ts:44`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/user-approval/src/types.ts)
169
167
 
170
168
  <a id="approvaldecided--log-only"></a>
171
169
 
@@ -183,7 +181,7 @@ Source: [`packages/interaction/user-approval/src/index.ts:44`](https://github.co
183
181
  }
184
182
  ```
185
183
 
186
- Source: [`packages/interaction/user-approval/src/index.ts:55`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/user-approval/src/index.ts)
184
+ Source: [`packages/interaction/user-approval/src/types.ts:55`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/user-approval/src/types.ts)
187
185
 
188
186
  <a id="approvalpolicy--log-only"></a>
189
187
 
@@ -194,7 +192,7 @@ Source: [`packages/interaction/user-approval/src/index.ts:55`](https://github.co
194
192
  * The session's approval policy was switched — log-only, durable,
195
193
  * replayable, never in the model transcript (the model learns the policy
196
194
  * from the runtime-context snapshot and live switch notices). The LAST
197
- * such event is the session's override ({@link effectiveApprovalPolicy}).
195
+ * such event is the session's override.
198
196
  * `source: 'delegation'` marks an override seeded into a child; an absent
199
197
  * source is a runtime switch.
200
198
  */
@@ -205,22 +203,24 @@ Source: [`packages/interaction/user-approval/src/index.ts:55`](https://github.co
205
203
  }
206
204
  ```
207
205
 
208
- Source: [`packages/interaction/user-approval/src/index.ts:67`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/user-approval/src/index.ts)
206
+ Source: [`packages/interaction/user-approval/src/index.ts:33`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/user-approval/src/index.ts)
209
207
 
210
208
  ### `assistant/*`
211
209
 
212
- <a id="assistantchunk--log-only"></a>
210
+ <a id="assistantattempt--log-only"></a>
213
211
 
214
- #### `assistant/chunk` — log-only
212
+ #### `assistant/attempt` — log-only
215
213
 
216
214
  ```ts persistence-catalog
217
- /** Raw stream chunk — token-level replay fidelity. */
218
- 'assistant/chunk': { turn: number; step: number; chunk: StreamChunk }
215
+ /**
216
+ * One model attempt that committed no surface message. The embedded stream
217
+ * preserves a failed, retried, cancelled, or stream-error attempt that
218
+ * reached settlement without fabricating model-visible history.
219
+ */
220
+ 'assistant/attempt': { turn: number; step: number; stream: AssistantStreamRecord[] }
219
221
  ```
220
222
 
221
- Types: [StreamChunk](./subsystems/llm-streaming.md)
222
-
223
- Source: [`packages/core/session/src/types.ts:266`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
223
+ Source: [`packages/core/session/src/types.ts:313`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
224
224
 
225
225
  <a id="assistantmessage--surface"></a>
226
226
 
@@ -237,12 +237,20 @@ Source: [`packages/core/session/src/types.ts:266`](https://github.com/deepseek-a
237
237
  * marker distinguishes that prefix without re-deriving interruption from turn
238
238
  * boundaries. An aborted turn with no such event streamed no visible content.
239
239
  */
240
- 'assistant/message': { turn: number; step: number; message: AssistantMessage; usage?: TokenUsage; interrupted?: true }
240
+ 'assistant/message': {
241
+ turn: number
242
+ step: number
243
+ message: AssistantMessage
244
+ /** Exact timed model stream, compacted without joining delta boundaries. */
245
+ stream: AssistantStreamRecord[]
246
+ usage?: TokenUsage
247
+ interrupted?: true
248
+ }
241
249
  ```
242
250
 
243
251
  Types: [TokenUsage](./subsystems/llm-streaming.md)
244
252
 
245
- Source: [`packages/core/session/src/types.ts:277`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
253
+ Source: [`packages/core/session/src/types.ts:299`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
246
254
 
247
255
  ### `command/*`
248
256
 
@@ -261,11 +269,11 @@ Source: [`packages/core/session/src/types.ts:277`](https://github.com/deepseek-a
261
269
  commandId: CommandId
262
270
  kind: 'success' | 'error'
263
271
  text?: string
264
- sourceEventSeq?: number
272
+ sourceEventSeq?: import('@deepseek-ai/dsh-session/types').SessionSeq
265
273
  }
266
274
  ```
267
275
 
268
- Source: [`packages/interaction/commands/src/types.ts:103`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/commands/src/types.ts)
276
+ Source: [`packages/interaction/commands/src/types.ts:110`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/commands/src/types.ts)
269
277
 
270
278
  <a id="commandrun--log-only"></a>
271
279
 
@@ -285,7 +293,7 @@ Source: [`packages/interaction/commands/src/types.ts:103`](https://github.com/de
285
293
  'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource }
286
294
  ```
287
295
 
288
- Source: [`packages/interaction/commands/src/types.ts:96`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/commands/src/types.ts)
296
+ Source: [`packages/interaction/commands/src/types.ts:103`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/commands/src/types.ts)
289
297
 
290
298
  ### `compaction/*`
291
299
 
@@ -301,7 +309,7 @@ Source: [`packages/interaction/commands/src/types.ts:96`](https://github.com/dee
301
309
  'compaction/end': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; error?: string }
302
310
  ```
303
311
 
304
- Source: [`packages/compaction/compaction/src/types.ts:71`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/compaction/compaction/src/types.ts)
312
+ Source: [`packages/compaction/compaction/src/types.ts:72`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/compaction/compaction/src/types.ts)
305
313
 
306
314
  <a id="compactionprune--log-only"></a>
307
315
 
@@ -319,15 +327,15 @@ Source: [`packages/compaction/compaction/src/types.ts:71`](https://github.com/de
319
327
  */
320
328
  'compaction/prune': {
321
329
  /** The replaced range's first and last surface-node seqs (a surface-position span, like {@link CompactionResult.shadowedRange}). */
322
- shadowedRange: { start: number; end: number }
330
+ shadowedRange: { start: SessionSeq; end: SessionSeq }
323
331
  /** The seqs of all shadowed surface nodes, in surface order. */
324
- shadowedSeqs: number[]
332
+ shadowedSeqs: SessionSeq[]
325
333
  /** Heuristic price of the shadowed content under the token-meter's fixed estimator. */
326
334
  shadowedTokenCount: number
327
335
  }
328
336
  ```
329
337
 
330
- Source: [`packages/compaction/compaction/src/types.ts:81`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/compaction/compaction/src/types.ts)
338
+ Source: [`packages/compaction/compaction/src/types.ts:82`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/compaction/compaction/src/types.ts)
331
339
 
332
340
  <a id="compactionstart--log-only"></a>
333
341
 
@@ -342,7 +350,7 @@ Source: [`packages/compaction/compaction/src/types.ts:81`](https://github.com/de
342
350
  'compaction/start': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null }
343
351
  ```
344
352
 
345
- Source: [`packages/compaction/compaction/src/types.ts:23`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/compaction/compaction/src/types.ts)
353
+ Source: [`packages/compaction/compaction/src/types.ts:24`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/compaction/compaction/src/types.ts)
346
354
 
347
355
  <a id="compactionsummary--log-only"></a>
348
356
 
@@ -362,8 +370,8 @@ Source: [`packages/compaction/compaction/src/types.ts:23`](https://github.com/de
362
370
  compactionId: CompactionId
363
371
  sourceCommandId?: CommandId
364
372
  summary: ContentBlock[]
365
- shadowedRange: { start: number; end: number }
366
- shadowedSeqs: number[]
373
+ shadowedRange: { start: SessionSeq; end: SessionSeq }
374
+ shadowedSeqs: SessionSeq[]
367
375
  shadowedTokenCount: number
368
376
  /** The provider route that wrote the summary. */
369
377
  provider: string
@@ -396,7 +404,7 @@ Source: [`packages/compaction/compaction/src/types.ts:23`](https://github.com/de
396
404
 
397
405
  Types: [ContentBlock](./subsystems/core.md) · [TokenUsage](./subsystems/llm-streaming.md)
398
406
 
399
- Source: [`packages/compaction/compaction/src/types.ts:33`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/compaction/compaction/src/types.ts)
407
+ Source: [`packages/compaction/compaction/src/types.ts:34`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/compaction/compaction/src/types.ts)
400
408
 
401
409
  ### `feedback/*`
402
410
 
@@ -503,6 +511,22 @@ Source: [`packages/llm/llm-retry/src/types.ts:9`](https://github.com/deepseek-ai
503
511
 
504
512
  Source: [`packages/llm/llm-retry/src/types.ts:11`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/llm-retry/src/types.ts)
505
513
 
514
+ ### `model/*`
515
+
516
+ <a id="modelselection--log-only"></a>
517
+
518
+ #### `model/selection` — log-only
519
+
520
+ ```ts persistence-catalog
521
+ /**
522
+ * Complete validated model selection requested for subsequent prompt
523
+ * assembly. Log-only: it never enters derived model history.
524
+ */
525
+ 'model/selection': ModelSelection
526
+ ```
527
+
528
+ Source: [`packages/api/session-controller/src/types.ts:40`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/api/session-controller/src/types.ts)
529
+
506
530
  ### `permission/*`
507
531
 
508
532
  <a id="permissionpreset--log-only"></a>
@@ -513,13 +537,13 @@ Source: [`packages/llm/llm-retry/src/types.ts:11`](https://github.com/deepseek-a
513
537
  /**
514
538
  * Records the selected preset as durable, log-only user intent. The knob
515
539
  * events follow in the same turn and control execution; this event stays
516
- * out of the model transcript and lets {@link effectivePermissionPreset}
540
+ * out of the model transcript and lets the permission projection unit
517
541
  * preserve a selection when bundles match.
518
542
  */
519
543
  'permission/preset': { preset: string }
520
544
  ```
521
545
 
522
- Source: [`packages/interaction/permission-presets/src/index.ts:50`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/permission-presets/src/index.ts)
546
+ Source: [`packages/interaction/permission-presets/src/index.ts:53`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/permission-presets/src/index.ts)
523
547
 
524
548
  ### `plan/*`
525
549
 
@@ -531,12 +555,12 @@ Source: [`packages/interaction/permission-presets/src/index.ts:50`](https://gith
531
555
  /**
532
556
  * Whether plan mode is in force from this point on: log-only, non-surface,
533
557
  * whole-value replace. The last `plan/mode` wins; a log with none folds to
534
- * inactive through {@link foldPlanMode}.
558
+ * inactive through the projection unit's fold.
535
559
  */
536
560
  'plan/mode': { active: boolean }
537
561
  ```
538
562
 
539
- Source: [`packages/plan/plan-mode/src/index.ts:53`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/plan/plan-mode/src/index.ts)
563
+ Source: [`packages/plan/plan-mode/src/index.ts:46`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/plan/plan-mode/src/index.ts)
540
564
 
541
565
  ### `request/*`
542
566
 
@@ -552,7 +576,7 @@ Source: [`packages/plan/plan-mode/src/index.ts:53`](https://github.com/deepseek-
552
576
  'request/context': RequestContext
553
577
  ```
554
578
 
555
- Source: [`packages/core/session/src/types.ts:313`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
579
+ Source: [`packages/core/session/src/types.ts:352`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
556
580
 
557
581
  <a id="requestheader--log-only"></a>
558
582
 
@@ -563,10 +587,15 @@ Source: [`packages/core/session/src/types.ts:313`](https://github.com/deepseek-a
563
587
  * Full header for the next request, appended inside its step before dispatch.
564
588
  * It is log-only; the latest snapshot reconstructs the request header.
565
589
  */
566
- 'request/header': { header: EpochHeader; reason: RequestHeaderReason }
590
+ 'request/header': {
591
+ header: EpochHeader
592
+ reason: RequestHeaderReason
593
+ /** A changed header also begins a distinct model-message series. */
594
+ startsSeries?: true
595
+ }
567
596
  ```
568
597
 
569
- Source: [`packages/core/session/src/types.ts:308`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
598
+ Source: [`packages/core/session/src/types.ts:342`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
570
599
 
571
600
  ### `sandbox/*`
572
601
 
@@ -579,7 +608,7 @@ Source: [`packages/core/session/src/types.ts:308`](https://github.com/deepseek-a
579
608
  * The session's sandbox mode was switched — log-only (like `approval/*`;
580
609
  * NOT a surface event, carries no `surfaceOp`): durable and replayable,
581
610
  * never in the model transcript. The LAST such event is the session's
582
- * override ({@link effectiveSandboxMode}). `source: 'delegation'` marks
611
+ * override (folded by the sandboxMode projection unit). `source: 'delegation'` marks
583
612
  * an override seeded into a child; an absent source is a runtime switch.
584
613
  */
585
614
  'sandbox/mode': {
@@ -620,12 +649,12 @@ Source: [`packages/schedule/schedule/src/types.ts:219`](https://github.com/deeps
620
649
  * Marks the end of a constructor seed. Events before it have smaller seq
621
650
  * values and came from the seed (resume, fork, or replay); this lifecycle
622
651
  * produced none of them. This log-only event is the durable projection of
623
- * {@link Session.firstLiveSeq}. Its payload is empty — position and `time`
624
- * carry the meaning.
652
+ * {@link Session.firstLiveSeq}.
625
653
  *
626
- * Locate the LAST one in stored history. A seed already ending in one is not
627
- * re-marked, so reopening an untouched session does not grow its log per
628
- * pickup and the event need not be at the current `firstLiveSeq`.
654
+ * A fresh fork child owns one `{ inherited: true }` marker at its exact
655
+ * inherited-prefix cut, even when that prefix ends in an ancestor marker.
656
+ * The last tagged marker is the current Session's cut; untagged markers keep
657
+ * ordinary restore and replay lifecycle boundaries.
629
658
  *
630
659
  * `Session`'s constructor is the only legitimate writer. The invariant
631
660
  * companion deliberately constrains nothing here, so a plugin appending one
@@ -638,10 +667,10 @@ Source: [`packages/schedule/schedule/src/types.ts:219`](https://github.com/deeps
638
667
  * writers — a concurrently live session holds its own boundary elsewhere,
639
668
  * so tolerating concurrent writers needs a signal beyond the log.
640
669
  */
641
- 'session/end-seed': Record<string, never>
670
+ 'session/end-seed': { inherited?: true }
642
671
  ```
643
672
 
644
- Source: [`packages/core/session/src/types.ts:336`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
673
+ Source: [`packages/core/session/src/types.ts:375`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
645
674
 
646
675
  <a id="sessiontitle--log-only"></a>
647
676
 
@@ -657,7 +686,7 @@ Source: [`packages/core/session/src/types.ts:336`](https://github.com/deepseek-a
657
686
 
658
687
  Types: [SessionTitleEventData](./subsystems/session-title.md)
659
688
 
660
- Source: [`packages/session/session-title/src/index.ts:100`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-title/src/index.ts)
689
+ Source: [`packages/session/session-title/src/index.ts:77`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-title/src/index.ts)
661
690
 
662
691
  <a id="sessiontitle-llm-request--log-only"></a>
663
692
 
@@ -670,7 +699,27 @@ Source: [`packages/session/session-title/src/index.ts:100`](https://github.com/d
670
699
 
671
700
  Types: [SessionTitleLlmRequestEventData](./subsystems/session-title.md)
672
701
 
673
- Source: [`packages/session/session-title-llm/src/index.ts:43`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-title-llm/src/index.ts)
702
+ Source: [`packages/session/session-title-llm/src/index.ts:45`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-title-llm/src/index.ts)
703
+
704
+ ### `session-log-deepseek/*`
705
+
706
+ <a id="session-log-deepseekdelivery-accepted--log-only"></a>
707
+
708
+ #### `session-log-deepseek/delivery-accepted` — log-only
709
+
710
+ ```ts persistence-catalog
711
+ /** Records that the configured endpoint accepted one delivery through `throughSeq`. */
712
+ 'session-log-deepseek/delivery-accepted': {
713
+ /** Session identity the accepted delivery carried; inherited fork markers retain the parent's id. */
714
+ sessionId: import('@deepseek-ai/dsh-session/types').SessionId
715
+ /** Accepted Session format generation; absence identifies version 0. */
716
+ sessionFormatVersion?: number
717
+ /** Last canonical event included in the accepted request. */
718
+ throughSeq: import('@deepseek-ai/dsh-session/types').SessionSeq
719
+ }
720
+ ```
721
+
722
+ Source: [`packages/session/session-log-deepseek/src/types.ts:59`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-log-deepseek/src/types.ts)
674
723
 
675
724
  ### `step/*`
676
725
 
@@ -683,7 +732,7 @@ Source: [`packages/session/session-title-llm/src/index.ts:43`](https://github.co
683
732
  'step/end': { turn: number; step: number }
684
733
  ```
685
734
 
686
- Source: [`packages/core/session/src/types.ts:256`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
735
+ Source: [`packages/core/session/src/types.ts:280`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
687
736
 
688
737
  <a id="stepstart--log-only"></a>
689
738
 
@@ -694,7 +743,7 @@ Source: [`packages/core/session/src/types.ts:256`](https://github.com/deepseek-a
694
743
  'step/start': { turn: number; step: number }
695
744
  ```
696
745
 
697
- Source: [`packages/core/session/src/types.ts:254`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
746
+ Source: [`packages/core/session/src/types.ts:278`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
698
747
 
699
748
  ### `subagent/*`
700
749
 
@@ -713,7 +762,26 @@ Source: [`packages/core/session/src/types.ts:254`](https://github.com/deepseek-a
713
762
  'subagent/descriptor': SubagentDescriptorData
714
763
  ```
715
764
 
716
- Source: [`packages/subagent/subagent/src/descriptor.ts:37`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/subagent/subagent/src/descriptor.ts)
765
+ Source: [`packages/subagent/subagent/src/descriptor.ts:38`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/subagent/subagent/src/descriptor.ts)
766
+
767
+ <a id="subagentmodel-selection-policy--log-only"></a>
768
+
769
+ #### `subagent/model-selection-policy` — log-only
770
+
771
+ ```ts persistence-catalog
772
+ /**
773
+ * Records that this session's delegation tool exposes child provider,
774
+ * model, and reasoning-effort selection. Appended before the first model
775
+ * request; absence means the fixed-route definition. Log-only: it carries
776
+ * no `surfaceOp` and never enters model history.
777
+ */
778
+ 'subagent/model-selection-policy': {
779
+ /** Exact routes this Session may select explicitly for a child. */
780
+ allowedModels: AllowedModelRoute[]
781
+ }
782
+ ```
783
+
784
+ Source: [`packages/subagent/tool-subagent/src/model-selection-state.ts:17`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/subagent/tool-subagent/src/model-selection-state.ts)
717
785
 
718
786
  ### `team/*`
719
787
 
@@ -723,12 +791,12 @@ Source: [`packages/subagent/subagent/src/descriptor.ts:37`](https://github.com/d
723
791
 
724
792
  ```ts persistence-catalog
725
793
  /** Whole teammate lifecycle value, stored only in the Team Lead Session. */
726
- 'team/member': { version: 1; teamId: TeamId; member: TeamMemberSnapshot }
794
+ 'team/member': { version: 2; teamId: TeamId; member: TeamMemberSnapshot }
727
795
  ```
728
796
 
729
797
  Types: [TeamId](https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/subsystems/agent-team.md) · [TeamMemberSnapshot](https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/subsystems/agent-team.md)
730
798
 
731
- Source: [`packages/experimental/agent-team/src/types.ts:206`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/agent-team/src/types.ts)
799
+ Source: [`packages/experimental/agent-team/src/types.ts:221`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/agent-team/src/types.ts)
732
800
 
733
801
  <a id="teammessagedelivered--log-only"></a>
734
802
 
@@ -737,7 +805,7 @@ Source: [`packages/experimental/agent-team/src/types.ts:206`](https://github.com
737
805
  ```ts persistence-catalog
738
806
  /** Durable acknowledgement that the target Session recorded the message. */
739
807
  'team/message/delivered': {
740
- version: 1
808
+ version: 2
741
809
  teamId: TeamId
742
810
  messageId: TeamMessageId
743
811
  targetId: SessionId
@@ -746,7 +814,7 @@ Source: [`packages/experimental/agent-team/src/types.ts:206`](https://github.com
746
814
 
747
815
  Types: [TeamId](https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/subsystems/agent-team.md) · [TeamMessageId](https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/subsystems/agent-team.md)
748
816
 
749
- Source: [`packages/experimental/agent-team/src/types.ts:212`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/agent-team/src/types.ts)
817
+ Source: [`packages/experimental/agent-team/src/types.ts:227`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/agent-team/src/types.ts)
750
818
 
751
819
  <a id="teammessagequeued--log-only"></a>
752
820
 
@@ -754,12 +822,12 @@ Source: [`packages/experimental/agent-team/src/types.ts:212`](https://github.com
754
822
 
755
823
  ```ts persistence-catalog
756
824
  /** Durable mailbox enqueue, stored before delivery is attempted. */
757
- 'team/message/queued': { version: 1; teamId: TeamId; message: TeamMessageSnapshot }
825
+ 'team/message/queued': { version: 2; teamId: TeamId; message: TeamMessageSnapshot }
758
826
  ```
759
827
 
760
828
  Types: [TeamId](https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/subsystems/agent-team.md) · [TeamMessageSnapshot](https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/subsystems/agent-team.md)
761
829
 
762
- Source: [`packages/experimental/agent-team/src/types.ts:210`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/agent-team/src/types.ts)
830
+ Source: [`packages/experimental/agent-team/src/types.ts:225`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/agent-team/src/types.ts)
763
831
 
764
832
  <a id="teamtask--log-only"></a>
765
833
 
@@ -767,12 +835,12 @@ Source: [`packages/experimental/agent-team/src/types.ts:210`](https://github.com
767
835
 
768
836
  ```ts persistence-catalog
769
837
  /** Whole shared-task value, stored only in the Team Lead Session. */
770
- 'team/task': { version: 1; teamId: TeamId; task: TeamTaskSnapshot }
838
+ 'team/task': { version: 2; teamId: TeamId; task: TeamTaskSnapshot }
771
839
  ```
772
840
 
773
841
  Types: [TeamId](https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/subsystems/agent-team.md) · [TeamTaskSnapshot](https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/subsystems/agent-team.md)
774
842
 
775
- Source: [`packages/experimental/agent-team/src/types.ts:208`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/agent-team/src/types.ts)
843
+ Source: [`packages/experimental/agent-team/src/types.ts:223`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/agent-team/src/types.ts)
776
844
 
777
845
  ### `todo/*`
778
846
 
@@ -785,9 +853,9 @@ Source: [`packages/experimental/agent-team/src/types.ts:208`](https://github.com
785
853
  'todo/write': { todos: TodoItem[] }
786
854
  ```
787
855
 
788
- Types: [TodoItem](./subsystems/session.md)
856
+ Types: [TodoItem](https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/subsystems/todo.md)
789
857
 
790
- Source: [`packages/core/session/src/types.ts:303`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
858
+ Source: [`packages/todo/tool-todo/src/types.ts:31`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/todo/tool-todo/src/types.ts)
791
859
 
792
860
  ### `tool/*`
793
861
 
@@ -801,12 +869,12 @@ Source: [`packages/core/session/src/types.ts:303`](https://github.com/deepseek-a
801
869
  * JSON string exactly as the model produced it (unparsed). `callId` pairs the
802
870
  * call with its `tool/result`.
803
871
  */
804
- 'tool/call': { turn: number; step: number; callId: CallId; name: string; arguments: string }
872
+ 'tool/call': { turn: number; step: number; callId: ToolCallId; name: string; arguments: string }
805
873
  ```
806
874
 
807
- Types: [CallId](./subsystems/core.md)
875
+ Types: [ToolCallId](./subsystems/core.md)
808
876
 
809
- Source: [`packages/core/session/src/types.ts:283`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
877
+ Source: [`packages/core/session/src/types.ts:319`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
810
878
 
811
879
  <a id="toolcode-dispatch--log-only"></a>
812
880
 
@@ -828,7 +896,7 @@ Source: [`packages/core/session/src/types.ts:283`](https://github.com/deepseek-a
828
896
  * before returning), so its execution-enclosure relation holds by
829
897
  * construction.
830
898
  */
831
- 'tool/code-dispatch': CodeDispatchEventData
899
+ 'tool/code-dispatch': PtcDispatchEventData
832
900
  ```
833
901
 
834
902
  Source: [`packages/core/tools/src/types.ts:56`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/tools/src/types.ts)
@@ -851,7 +919,7 @@ Source: [`packages/core/tools/src/types.ts:56`](https://github.com/deepseek-ai/d
851
919
  * with `tool/code-dispatch` by `subCallId` (timing = the two events'
852
920
  * `time` fields).
853
921
  */
854
- 'tool/code-dispatch-start': CodeDispatchStartEventData
922
+ 'tool/code-dispatch-start': PtcDispatchStartEventData
855
923
  ```
856
924
 
857
925
  Source: [`packages/core/tools/src/types.ts:40`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/tools/src/types.ts)
@@ -881,7 +949,7 @@ Source: [`packages/core/tools/src/types.ts:40`](https://github.com/deepseek-ai/d
881
949
  }
882
950
  ```
883
951
 
884
- Source: [`packages/core/session/src/types.ts:295`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
952
+ Source: [`packages/core/session/src/types.ts:331`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
885
953
 
886
954
  ### `tool-workflow/*`
887
955
 
@@ -961,7 +1029,7 @@ Source: [`packages/workflow/tool-workflow/src/types.ts:47`](https://github.com/d
961
1029
 
962
1030
  Types: [TurnEndReason](./subsystems/session.md)
963
1031
 
964
- Source: [`packages/core/session/src/types.ts:252`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
1032
+ Source: [`packages/core/session/src/types.ts:276`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
965
1033
 
966
1034
  <a id="turnstart--log-only"></a>
967
1035
 
@@ -977,7 +1045,7 @@ Source: [`packages/core/session/src/types.ts:252`](https://github.com/deepseek-a
977
1045
  'turn/start': { turn: number }
978
1046
  ```
979
1047
 
980
- Source: [`packages/core/session/src/types.ts:243`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
1048
+ Source: [`packages/core/session/src/types.ts:267`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
981
1049
 
982
1050
  ### `user/*`
983
1051
 
@@ -996,7 +1064,7 @@ Source: [`packages/core/session/src/types.ts:243`](https://github.com/deepseek-a
996
1064
  'user/message': UserMessage
997
1065
  ```
998
1066
 
999
- Source: [`packages/core/session/src/types.ts:264`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
1067
+ Source: [`packages/core/session/src/types.ts:288`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/types.ts)
1000
1068
 
1001
1069
  ### `web/*`
1002
1070