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
@@ -17,7 +17,7 @@ editSource: "docs/config-catalog.zh.md"
17
17
 
18
18
  ## `@deepseek-ai/dsh-acp`
19
19
 
20
- 需要:`agents`
20
+ 需要:`agents` · `llm` · `sessionPersistence` · `sessions`
21
21
 
22
22
  ```ts config-catalog
23
23
  /** Plugin config: the provider/model selection used for each ACP-created agent. */
@@ -26,6 +26,8 @@ export interface AcpConfig {
26
26
  provider?: string
27
27
  /** Model name for created agents. */
28
28
  model?: string
29
+ /** Maximum summaries returned by one session/list page. */
30
+ sessionListPageSize?: number
29
31
  /** Runtime-only transport override; production uses stdio. */
30
32
  stream?: Stream
31
33
  }
@@ -33,62 +35,7 @@ export interface AcpConfig {
33
35
 
34
36
  依赖:`Stream`(`@agentclientprotocol/sdk`)
35
37
 
36
- 来源:[`packages/acp/acp/src/index.ts:71`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/acp/acp/src/index.ts)
37
-
38
- <a id="deepseek-aidsh-acp-demo"></a>
39
-
40
- ## `@deepseek-ai/dsh-acp-demo`
41
-
42
- ```ts config-catalog
43
- /**
44
- * App config: the swappable per-deployment values. `provider` and `model` configure
45
- * each agent the ACP bridge creates at `session/new`; `persona` is the
46
- * deployment persona (forwarded to the system-prompt plugin); `toolOrder` is
47
- * the explicit model-facing tool order (forwarded to the system-prompt plugin);
48
- * `tools` is the tool registry's config (its presentation `mode`, forwarded
49
- * through agent-spine-demo); `persistenceRoot` is the JSONL backend's directory.
50
- */
51
- export interface Config {
52
- /** Provider route for ACP-created agents. */
53
- provider: string
54
- /** Model name for ACP-created agents (must have a registered adapter). */
55
- model: string
56
- /** Bundled agent-loop concurrency cap; `1` is serial and omission uses its default. */
57
- maxParallelToolCalls?: number
58
- /** Deployment persona (the system-prompt plugin's `persona` config). */
59
- persona?: string
60
- /** Explicit model-facing tool order (the system-prompt plugin's `toolOrder` config; see dsh-system-prompt). */
61
- toolOrder?: string[]
62
- /** Tool-registry config — its presentation `mode` (forwarded through agent-spine-demo; see dsh-tools). */
63
- tools?: ToolsConfig
64
- /** DeepSeek Harness home directory exposed to bash and used for local skill discovery. */
65
- dshHome?: string
66
- /** Fallback session-title limits forwarded through agent-spine-demo. */
67
- sessionTitle?: NonNullable<agentCore.Config['sessionTitle']>
68
- /** Directory for JSONL sessions and the derived query index. Defaults to `./.sessions`. */
69
- persistenceRoot?: string
70
- /** Write delta-chunk runs as packed storage rows (the JSONL backend's `packChunks`). Defaults to `true`. */
71
- packChunks?: boolean
72
- /** JSONL artifact encoding; defaults to checksummed Zstandard frames. */
73
- persistenceCompression?: JsonlCompression
74
- /** Controls automatic AGENTS.md/CLAUDE.md loading; configure a byte budget or set `false`. */
75
- workspaceContext: agentCore.Config['workspaceContext']
76
- /** Skill registry, local-provider, and model-facing consumer config forwarded to agent-spine-demo. */
77
- skills?: agentCore.SkillConfig
78
- /** Model-facing bash tool config forwarded through agent-core. */
79
- toolBash?: NonNullable<agentCore.Config['toolBash']>
80
- /** Process-local background-job admission config forwarded through agent-core. */
81
- jobs?: NonNullable<agentCore.Config['jobs']>
82
- /** Generic background-job controls forwarded through agent-core; set false to omit their tools. */
83
- toolJobs?: NonNullable<agentCore.Config['toolJobs']>
84
- /** Persisted same-session goals; owner defaults enable them, or false disables the stack and tools. */
85
- goals?: agentCore.GoalConfig | false
86
- }
87
- ```
88
-
89
- 依赖:[`agentCore`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/examples/agent-spine-demo/src/index.ts) · [`JsonlCompression`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-persistence-jsonl/src/index.ts) · [`ToolsConfig`](#deepseek-aidsh-tools)
90
-
91
- 来源:[`packages/examples/acp-demo/src/index.ts:39`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/examples/acp-demo/src/index.ts)
38
+ 来源:[`packages/acp/acp/src/index.ts:75`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/acp/acp/src/index.ts)
92
39
 
93
40
  <a id="deepseek-aidsh-agent-default-model"></a>
94
41
 
@@ -110,6 +57,8 @@ export interface Config {
110
57
 
111
58
  ## `@deepseek-ai/dsh-agent-instructions`
112
59
 
60
+ 需要:`sessionProjections`
61
+
113
62
  ```ts config-catalog
114
63
  /** User-facing workspace instruction loader configuration. */
115
64
  export interface Config {
@@ -140,7 +89,7 @@ export interface Config {
140
89
 
141
90
  ## `@deepseek-ai/dsh-agent-loop`
142
91
 
143
- 需要:`agents` · `sessions` · `llm` · `tools` · `systemPrompt`
92
+ 需要:`agents` · `sessions` · `llm` · `tools` · `systemPrompt` · `sessionProjections`
144
93
 
145
94
  ```ts config-catalog
146
95
  /** Agent-loop plugin configuration. */
@@ -166,13 +115,13 @@ export interface Config {
166
115
 
167
116
  依赖:[`AgentOptions`](./subsystems/core.md) · [`SessionId`](./subsystems/core.md)
168
117
 
169
- 来源:[`packages/core/agent-loop/src/index.ts:255`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/agent-loop/src/index.ts)
118
+ 来源:[`packages/core/agent-loop/src/index.ts:318`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/agent-loop/src/index.ts)
170
119
 
171
120
  <a id="deepseek-aidsh-agent-presets"></a>
172
121
 
173
122
  ## `@deepseek-ai/dsh-agent-presets`
174
123
 
175
- 需要:`loader`
124
+ 需要:`loader` · `sessionProjections`
176
125
 
177
126
  ```ts config-catalog
178
127
  /** Plugin config: which preset is the default, and where presets live. */
@@ -181,9 +130,17 @@ export interface Config {
181
130
  default: string
182
131
  /** Scanned roots in precedence order; an earlier root wins a duplicate id. */
183
132
  roots: PresetRoot[]
133
+ /**
134
+ * Prepend this package's bundled shipped presets as a `system` root, before
135
+ * every configured root, so the shipped set always mounts and wins a
136
+ * duplicate id. The default survives a whole-`config` patch replacement;
137
+ * only an explicit `false` — a deployment supplying purely its own presets,
138
+ * or an embedder using the roster as bare machinery — drops the set.
139
+ */
140
+ includeShippedRoot: boolean
184
141
  /**
185
142
  * Append the harness home's `USER_PRESET_DIR` as a `user` root, after every
186
- * configured root. False mounts a roster over `roots` alone.
143
+ * configured root. False mounts a roster without the derived writable root.
187
144
  */
188
145
  includeUserRoot: boolean
189
146
  }
@@ -206,98 +163,6 @@ export type PresetTrust = 'system' | 'user'
206
163
 
207
164
  来源:[`packages/preset/agent-presets/src/preset.ts:52`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/preset/agent-presets/src/preset.ts)
208
165
 
209
- <a id="deepseek-aidsh-agent-spine-demo"></a>
210
-
211
- ## `@deepseek-ai/dsh-agent-spine-demo`
212
-
213
- ```ts config-catalog
214
- /**
215
- * Bundle config: each field forwarded verbatim to the child that owns it —
216
- * `agents` to the agent loop (an app that pre-creates no agents, like the ACP
217
- * bridge, simply omits it), `includeHarnessIdentity`, `includeRuntimeContext`,
218
- * `persona`, and `toolOrder` to the system-prompt plugin (the fixed opener,
219
- * dynamic-context policy, deployment persona, and explicit model-facing tool
220
- * order), the `tools` object to the tool registry (its presentation `mode`),
221
- * `dshHome` to bash environment and local skill discovery, `sessionTitle` to
222
- * the fallback title service, `skills` to the
223
- * skill registry/local provider/tool consumer, `workspaceContext` to the
224
- * agent-instructions loader, `jobs` to the process-local job provider, and
225
- * `toolBash`/`toolJobs` to the model-facing tool plugins this bundle owns.
226
- * Provider adapters own their `retryPolicy`; this bundle always mounts its
227
- * executor.
228
- * `goals` opts into and configures the persisted goal domain plus its model tool
229
- * and same-session driver; `invariants` configures global and package-filtered
230
- * relational checks. Owner schemas supply defaults for optional input;
231
- * workspace context instead requires an explicit byte budget or `false` because
232
- * it changes model-visible input. Producer opt-in stays producer-local:
233
- * `toolBash` configures bash only; independently composed producers keep their
234
- * own config. Set `toolBash: false` when another plugin owns the model-facing
235
- * `bash` name.
236
- */
237
- export interface Config {
238
- /** The agent-loop `agents` list (see dsh-agent-loop's `Config`). */
239
- agents?: AgentLoopConfig['agents']
240
- /** Agent-loop concurrency cap; `1` is serial. */
241
- maxParallelToolCalls?: AgentLoopConfig['maxParallelToolCalls']
242
- /** Whether the system prompt includes the fixed Harness identity (default true). */
243
- includeHarnessIdentity?: SystemPromptConfig['includeHarnessIdentity']
244
- /** Whether model history includes dynamic runtime-context snapshots (default true). */
245
- includeRuntimeContext?: SystemPromptConfig['includeRuntimeContext']
246
- /** The deployment persona (see dsh-system-prompt's `Config`). */
247
- persona?: SystemPromptConfig['persona']
248
- /** The explicit model-facing tool order (see dsh-system-prompt's `Config`). */
249
- toolOrder?: SystemPromptConfig['toolOrder']
250
- /** The tool registry's config — its presentation `mode` (see dsh-tools' `Config`). */
251
- tools?: ToolsConfig
252
- /** DeepSeek Harness home directory shared by shell context and local skill discovery. */
253
- dshHome?: string
254
- /** Deterministic fallback and accepted-title limits; omission uses the bundle's example policy. */
255
- sessionTitle?: SessionTitleConfig
256
- /** Workspace-context loader controls with an explicit byte budget; set `false` for hermetic prompts. */
257
- workspaceContext: workspaceContext.Config | false
258
- /**
259
- * Skill registry, local provider, and model-facing consumer config.
260
- * Skills use `enabled` because one nested config controls a provider stack;
261
- * single model-tool plugins use `Config | false` to disable that one consumer.
262
- */
263
- skills?: SkillConfig
264
- /** Model-facing bash tool config, or false when another plugin owns `bash`. */
265
- toolBash?: toolBash.Config | false
266
- /** Process-local background-job admission config. */
267
- jobs?: JobsConfig
268
- /** Generic background-job controls; set false to keep the job service without model-facing job tools. */
269
- toolJobs?: toolJobs.Config | false
270
- /** Global enablement and package-name filters for invariant companions. */
271
- invariants?: InvariantConfig
272
- /** Opt-in persisted same-session goal stack; set false or omit to leave it unmounted. */
273
- goals?: GoalConfig | false
274
- }
275
-
276
- /** Skill bundle config forwarded to the registry, local provider, and model-facing consumer. */
277
- export interface SkillConfig {
278
- /** Mount the bundled local skill provider and model-facing skill tool (default true). */
279
- enabled?: boolean
280
- /** Registry-level discovery cache settings. */
281
- registry?: SkillRegistryConfig
282
- /** Local filesystem skill provider settings. */
283
- filesystem?: SkillFileSystem.Config
284
- /** Model-facing skill catalog and tool settings. */
285
- tool?: toolSkill.Config
286
- }
287
-
288
- /** Persisted goal domain, model-tool policy, and same-session driver config. */
289
- export interface GoalConfig {
290
- /** Goal-domain creation defaults. */
291
- domain?: GoalDomainConfig
292
- /** Model-facing goal-tool authority policy. */
293
- tool?: toolGoal.Config
294
- }
295
- ```
296
-
297
- 依赖:[`AgentLoopConfig`](#deepseek-aidsh-agent-loop) · [`GoalDomainConfig`](#deepseek-aidsh-goal) · [`InvariantConfig`](#deepseek-aidsh-invariants) · [`JobsConfig`](#deepseek-aidsh-jobs-local) · [`SessionTitleConfig`](#deepseek-aidsh-session-title) · [`SkillFileSystem`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/skill/skill-filesystem/src/index.ts) · [`SkillRegistryConfig`](#deepseek-aidsh-skill) · [`SystemPromptConfig`](#deepseek-aidsh-system-prompt) · [`toolBash`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/shell/tool-bash/src/index.ts) · [`toolGoal`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/goal/tool-goal/src/index.ts) · [`toolJobs`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/jobs/tool-jobs/src/index.ts) · [`ToolsConfig`](#deepseek-aidsh-tools) · [`toolSkill`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/skill/tool-skill/src/index.ts) · [`workspaceContext`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/context/agent-instructions/src/index.ts)
298
-
299
- 来源:[`packages/examples/agent-spine-demo/src/index.ts:92`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/examples/agent-spine-demo/src/index.ts)
300
-
301
166
  <a id="deepseek-aidsh-agent-tool-presentation"></a>
302
167
 
303
168
  ## `@deepseek-ai/dsh-agent-tool-presentation`
@@ -309,7 +174,7 @@ export interface GoalConfig {
309
174
  export interface Config {
310
175
  /**
311
176
  * The form this agent's model sees. `native` sends every visible schema,
312
- * `code` sends only `run_code` plus a generated SDK, `both` sends both.
177
+ * `ptc` sends only `run_code` plus a generated SDK, `both` sends both.
313
178
  * Required rather than defaulted: the deployment default is what a preset
314
179
  * without this row already gets, so an omitted value would mean the row was
315
180
  * composed for nothing.
@@ -322,6 +187,52 @@ export interface Config {
322
187
 
323
188
  来源:[`packages/core/agent-tool-presentation/src/index.ts:38`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/agent-tool-presentation/src/index.ts)
324
189
 
190
+ <a id="deepseek-aidsh-api-gateway"></a>
191
+
192
+ ## `@deepseek-ai/dsh-api-gateway`
193
+
194
+ 需要:`typert`
195
+
196
+ ```ts config-catalog
197
+ /** Gateway transport configuration. */
198
+ export interface Config {
199
+ /** WebSocket Ping interval from 1 through 2,147,483,647 milliseconds. @default 2000 */
200
+ readonly websocketHeartbeatIntervalMs?: number
201
+ }
202
+ ```
203
+
204
+ 来源:[`packages/api/gateway/src/index.ts:119`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/api/gateway/src/index.ts)
205
+
206
+ <a id="deepseek-aidsh-api-session-controller"></a>
207
+
208
+ ## `@deepseek-ai/dsh-api-session-controller`
209
+
210
+ 需要:`agentDefaultModel` · `agents` · `attachments` · `fileUploads` · `llm` · `sessions` · `sessionProjections` · `sessionQuery` · `typert` · `workspaceRegistry`
211
+
212
+ ```ts config-catalog
213
+ /** Session Controller deployment policy. */
214
+ export interface Config {
215
+ /** Override platform desktop-opener detection. */
216
+ readonly nativeOpen?: boolean
217
+ }
218
+ ```
219
+
220
+ 来源:[`packages/api/session-controller/src/index.ts:69`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/api/session-controller/src/index.ts)
221
+
222
+ <a id="deepseek-aidsh-api-settings-controller"></a>
223
+
224
+ ## `@deepseek-ai/dsh-api-settings-controller`
225
+
226
+ ```ts config-catalog
227
+ /** Native document-opening policy. */
228
+ export interface Config {
229
+ /** Override platform desktop-opener detection. */
230
+ readonly nativeOpen?: boolean
231
+ }
232
+ ```
233
+
234
+ 来源:[`packages/api/settings-controller/src/index.ts:36`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/api/settings-controller/src/index.ts)
235
+
325
236
  <a id="deepseek-aidsh-attachment-local"></a>
326
237
 
327
238
  ## `@deepseek-ai/dsh-attachment-local`
@@ -341,16 +252,21 @@ export interface Config {
341
252
  maxImagePixels?: number
342
253
  /** Maximum intrinsic width and maximum intrinsic height accepted for one submitted image. Default: 8192px. */
343
254
  maxImageDimension?: number
344
- /** Long-edge pixel cap of the stored provider-independent normalized image. */
255
+ /** Total-pixel budget of the stored provider-independent normalized image. */
256
+ normalizedImageMaxPixels?: number
257
+ /** Long-edge pixel cap of the stored provider-independent normalized image, applied after the total-pixel budget. */
345
258
  normalizedImageMaxDimension?: number
346
- /** Encoded-byte safety cap of the stored provider-independent normalized image. */
259
+ /**
260
+ * Encoded-byte target of the stored provider-independent normalized image;
261
+ * the smallest quality-ladder output is kept when no quality fits.
262
+ */
347
263
  normalizedImageMaxBytes?: number
348
264
  /** Maximum simultaneous normalization or request-image transformations in this service instance. */
349
265
  imageCompressionConcurrency?: number
350
266
  }
351
267
  ```
352
268
 
353
- 来源:[`packages/attachment/attachment-local/src/index.ts:51`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/attachment/attachment-local/src/index.ts)
269
+ 来源:[`packages/attachment/attachment-local/src/index.ts:61`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/attachment/attachment-local/src/index.ts)
354
270
 
355
271
  <a id="deepseek-aidsh-bash-local"></a>
356
272
 
@@ -403,7 +319,7 @@ export type Config = LocalConfig
403
319
 
404
320
  ## `@deepseek-ai/dsh-client-connection`
405
321
 
406
- 需要:`webServer`
322
+ 需要:`webServer` · `credentials`
407
323
 
408
324
  ```ts config-catalog
409
325
  /** Plugin config: the deployment's non-loopback serving authorities. */
@@ -413,16 +329,18 @@ export interface ConnectionConfig {
413
329
  * port-less `host` matching any port. The /api trust fence refuses any
414
330
  * request whose Host is neither loopback nor listed here, so a
415
331
  * non-loopback (`0.0.0.0`) deployment must declare the names it is reached
416
- * by (the dsh CLI derives the machine's LAN IP literals itself). An entry
417
- * that is not a bare, canonical authority fails the plugin load.
332
+ * by; the Web runtime derives LAN IP literals from an active all-interface
333
+ * bind. An entry that is not a bare, canonical authority fails plugin load.
418
334
  */
419
335
  trustedHosts?: string[]
336
+ /** Absolute browser-session lifetime in days. Default: 30. */
337
+ cookieMaxAgeDays?: number
420
338
  /** Maximum buffered JSON body for every `/api` request. Default: 300 MiB. */
421
339
  maxRequestBodyBytes?: number
422
340
  }
423
341
  ```
424
342
 
425
- 来源:[`packages/client/connection/src/index.ts:50`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/connection/src/index.ts)
343
+ 来源:[`packages/client/connection/src/index.ts:71`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/connection/src/index.ts)
426
344
 
427
345
  <a id="deepseek-aidsh-client-hmr"></a>
428
346
 
@@ -541,7 +459,7 @@ export interface ToolResultPruneConfig {
541
459
  }
542
460
  ```
543
461
 
544
- 来源:[`packages/compaction/compaction-tool-result-pruner/src/types.ts:4`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/compaction/compaction-tool-result-pruner/src/types.ts)
462
+ 来源:[`packages/compaction/compaction-tool-result-pruner/src/types.ts:5`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/compaction/compaction-tool-result-pruner/src/types.ts)
545
463
 
546
464
  <a id="deepseek-aidsh-cordis-host-runner"></a>
547
465
 
@@ -595,13 +513,13 @@ export interface Config {
595
513
  }
596
514
  ```
597
515
 
598
- 来源:[`packages/e2b/e2b/src/index.ts:43`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/e2b/e2b/src/index.ts)
516
+ 来源:[`packages/e2b/e2b/src/index.ts:45`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/e2b/e2b/src/index.ts)
599
517
 
600
518
  <a id="deepseek-aidsh-experimental-agent-team"></a>
601
519
 
602
520
  ## `@deepseek-ai/dsh-experimental-agent-team`
603
521
 
604
- 需要:`agents` · `sessions` · `sessionPersistence` · `subagents`
522
+ 需要:`agents` · `sessions` · `sessionPersistence` · `sessionProjections` · `subagents`
605
523
 
606
524
  ```ts config-catalog
607
525
  /** Team-service deployment limits. */
@@ -619,7 +537,142 @@ export interface Config {
619
537
  }
620
538
  ```
621
539
 
622
- 来源:[`packages/experimental/agent-team/src/types.ts:125`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/agent-team/src/types.ts)
540
+ 来源:[`packages/experimental/agent-team/src/types.ts:124`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/agent-team/src/types.ts)
541
+
542
+ <a id="deepseek-aidsh-experimental-code-runtime-python"></a>
543
+
544
+ ## `@deepseek-ai/dsh-experimental-code-runtime-python`
545
+
546
+ ```ts config-catalog
547
+ /** Plugin config: every cap, changeable from `cordis.yml` (no hardcoded tunables). */
548
+ export interface Config {
549
+ /**
550
+ * RLIMIT_CPU in whole seconds (a positive integer — `setrlimit` in the child
551
+ * rejects a float). The child sets the soft limit to `cpuSeconds` and the
552
+ * hard limit to `cpuSeconds + 1`: the kernel delivers SIGXCPU at the soft
553
+ * limit, which the host classifies as a `timeout`; the +1s hard limit is a
554
+ * SIGKILL backstop for a program that traps SIGXCPU. Granularity is seconds —
555
+ * a coarser counterpart to the worker backend's millisecond `computeMs`.
556
+ */
557
+ cpuSeconds?: number
558
+ /** Wall-clock ceiling in milliseconds; backstops CPU time for programs awaiting a promise nobody resolves. */
559
+ maxWallMs?: number
560
+ /**
561
+ * RLIMIT_AS in mebibytes; caps address space so a runaway allocation fails
562
+ * cleanly. Not applied on Darwin, where the dyld shared cache mapped into
563
+ * every process at exec exceeds any practical cap and the kernel rejects
564
+ * the call; `cpuSeconds` and `maxWallMs` still bound the run there. Bounds
565
+ * `maxLogBytes`/`maxValueBytes` at load on EVERY platform (this static check
566
+ * runs on Darwin too, where only the runtime `setrlimit` is skipped): each
567
+ * budget times a worst-case Unicode expansion must fit this byte count minus a
568
+ * fixed interpreter baseline, so a near-budget output cannot breach the address
569
+ * space during the child's build-and-encode.
570
+ */
571
+ addressSpaceMb?: number
572
+ /**
573
+ * Shared byte budget for captured log text (host-side ledger). Bounded at load
574
+ * against `addressSpaceMb`: the child builds and encodes a near-budget entry
575
+ * under RLIMIT_AS with several copies live at once, so this cap times the
576
+ * worst-case Unicode expansion must fit the address space left after the
577
+ * interpreter baseline (see `addressSpaceMb`) — a load-time rejection, not a
578
+ * runtime clamp. Also bounded at load by the host's configured heap like
579
+ * `maxValueBytes` (see its JSDoc): the effective frame cap minus the frame
580
+ * envelope.
581
+ */
582
+ maxLogBytes?: number
583
+ /**
584
+ * Byte cap for the completion value. Bounded at load against `addressSpaceMb`
585
+ * the same way `maxLogBytes` is: the child builds and encodes a near-budget
586
+ * value under RLIMIT_AS with several copies live at once, so this cap times the
587
+ * worst-case Unicode expansion must fit the address space left after the
588
+ * interpreter baseline. Both budgets are ALSO bounded at load by the host's
589
+ * configured heap: the effective frame cap (the protocol cap, or a lower
590
+ * heap-derived ceiling when the host heap cannot safely parse a near-cap
591
+ * frame — see `hostFrameParseCeiling`) minus the frame envelope, so a budget
592
+ * whose honest frame could OOM the host's own JSON.parse is rejected up
593
+ * front.
594
+ */
595
+ maxValueBytes?: number
596
+ /** SIGTERM→SIGKILL grace period on kill, matching bash-local's default. */
597
+ graceMs?: number
598
+ /**
599
+ * Absolute path, relative path, or basename of a CPython 3.10+ interpreter.
600
+ * Resolved and validated once at plugin load under a five-second force-kill
601
+ * deadline; a basename searches `PATH`.
602
+ */
603
+ pythonBin?: string
604
+ }
605
+ ```
606
+
607
+ 来源:[`packages/experimental/code-runtime-python/src/index.ts:42`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/code-runtime-python/src/index.ts)
608
+
609
+ <a id="deepseek-aidsh-experimental-inspector"></a>
610
+
611
+ ## `@deepseek-ai/dsh-experimental-inspector`
612
+
613
+ 需要:`webServer`
614
+
615
+ ```ts config-catalog
616
+ /** Host plugin configuration. Fetch capture is enabled by default. */
617
+ export interface Config extends Omit<InspectorOptions, 'clientOrigins'> {
618
+ /** Browser origins allowed to open the Client ingest WebSocket. */
619
+ clientOrigins?: string[]
620
+ }
621
+
622
+ /** User-facing Host options; every memory and lifecycle bound is configurable. */
623
+ export interface InspectorOptions {
624
+ /** Loopback address used by the Worker HTTP and WebSocket endpoint. */
625
+ readonly host?: '127.0.0.1'
626
+ /** First port to bind; occupied ports advance until one is available. */
627
+ readonly port?: number
628
+ /** Additional exact browser origins admitted to the Client ingest socket. */
629
+ readonly clientOrigins?: readonly string[]
630
+ /** Whether to observe calls made through the current global fetch function. */
631
+ readonly captureFetch?: boolean
632
+ /** Maximum request-body prefix retained for one fetch. */
633
+ readonly maxRequestBodyBytes?: number
634
+ /** Maximum response-body prefix retained for one fetch. */
635
+ readonly maxResponseBodyBytes?: number
636
+ /** Maximum raw bytes encoded into one body observation. */
637
+ readonly maxBodyChunkBytes?: number
638
+ /** Maximum total request and response body bytes retained by the Worker. */
639
+ readonly maxJournalBytes?: number
640
+ /** Maximum active and completed fetch requests retained by the Worker. */
641
+ readonly maxRetainedRequests?: number
642
+ /** Maximum encoded bytes accepted in one source transport frame. */
643
+ readonly maxSourceFrameBytes?: number
644
+ /** Maximum observation records accepted in one source batch. */
645
+ readonly maxSourceRecordsPerFrame?: number
646
+ /** Maximum records waiting in one producer queue. */
647
+ readonly maxQueuedRecords?: number
648
+ /** Maximum encoded bytes waiting in one producer queue. */
649
+ readonly maxQueuedBytes?: number
650
+ /** Maximum time allowed for the Worker to become ready. */
651
+ readonly startupTimeoutMs?: number
652
+ /** Grace period before a stopping Worker is terminated. */
653
+ readonly stopTimeoutMs?: number
654
+ /** Initial upper bound for randomized Client reconnect delay. */
655
+ readonly clientReconnectBaseMs?: number
656
+ /** Maximum upper bound for randomized Client reconnect delay. */
657
+ readonly clientReconnectMaxMs?: number
658
+ /** Deadline for one Worker-to-Client Runtime or Sources request. */
659
+ readonly clientRuntimeTimeoutMs?: number
660
+ /** Deadline for one non-CDP semantic query. */
661
+ readonly queryTimeoutMs?: number
662
+ /** Maximum live object handles retained per Client Runtime session. */
663
+ readonly maxClientRuntimeObjects?: number
664
+ /** Maximum descriptors returned by one Client property request. */
665
+ readonly maxClientRuntimeProperties?: number
666
+ /** Maximum encoded bytes read for one Client script or source map. */
667
+ readonly maxClientSourceBytes?: number
668
+ /** Maximum Context and Fiber nodes retained in one realm snapshot. */
669
+ readonly maxCordisNodes?: number
670
+ /** Disconnected Cordis snapshots retained after their live realm closes. */
671
+ readonly maxDisconnectedCordisTrees?: number
672
+ }
673
+ ```
674
+
675
+ 来源:[`packages/experimental/inspector/src/index.ts:66`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/inspector/src/index.ts)
623
676
 
624
677
  <a id="deepseek-aidsh-experimental-tool-agent-team"></a>
625
678
 
@@ -643,7 +696,7 @@ export interface Config {
643
696
 
644
697
  ## `@deepseek-ai/dsh-file-reference-local`
645
698
 
646
- 需要:`agents`
699
+ 需要:`agents` · `sessionProjections`
647
700
 
648
701
  ```ts config-catalog
649
702
  /** Local file-reference discovery configuration. */
@@ -657,7 +710,7 @@ export interface Config {
657
710
  }
658
711
  ```
659
712
 
660
- 来源:[`packages/context/file-reference-local/src/index.ts:35`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/context/file-reference-local/src/index.ts)
713
+ 来源:[`packages/context/file-reference-local/src/index.ts:34`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/context/file-reference-local/src/index.ts)
661
714
 
662
715
  <a id="deepseek-aidsh-fs-local"></a>
663
716
 
@@ -696,13 +749,13 @@ export type Config = LocalConfig
696
749
 
697
750
  依赖:[`LocalConfig`](#deepseek-aidsh-fs-local)
698
751
 
699
- 来源:[`packages/fs/fs-sandbox/src/index.ts:49`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/fs/fs-sandbox/src/index.ts)
752
+ 来源:[`packages/fs/fs-sandbox/src/index.ts:45`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/fs/fs-sandbox/src/index.ts)
700
753
 
701
754
  <a id="deepseek-aidsh-goal"></a>
702
755
 
703
756
  ## `@deepseek-ai/dsh-goal`
704
757
 
705
- 需要:`agents`
758
+ 需要:`agents` · `sessionProjections`
706
759
 
707
760
  ```ts config-catalog
708
761
  /** Deployment defaults for goal creation. */
@@ -712,7 +765,7 @@ export interface Config {
712
765
  }
713
766
  ```
714
767
 
715
- 来源:[`packages/goal/goal/src/index.ts:116`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/goal/goal/src/index.ts)
768
+ 来源:[`packages/goal/goal/src/index.ts:172`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/goal/goal/src/index.ts)
716
769
 
717
770
  <a id="deepseek-aidsh-headless"></a>
718
771
 
@@ -728,13 +781,13 @@ export interface Config {
728
781
  }
729
782
  ```
730
783
 
731
- 来源:[`packages/bundle/headless/src/index.ts:31`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/bundle/headless/src/index.ts)
784
+ 来源:[`packages/bundle/headless/src/index.ts:33`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/bundle/headless/src/index.ts)
732
785
 
733
786
  <a id="deepseek-aidsh-hooks-claude-code"></a>
734
787
 
735
788
  ## `@deepseek-ai/dsh-hooks-claude-code`
736
789
 
737
- 需要:`shell`
790
+ 需要:`shell` · `sessionProjections`
738
791
 
739
792
  ```ts config-catalog
740
793
  /** Plugin config: where the CC hook config lives + substitution roots. */
@@ -772,7 +825,7 @@ export interface Config {
772
825
 
773
826
  ## `@deepseek-ai/dsh-hooks-codex`
774
827
 
775
- 需要:`shell`
828
+ 需要:`shell` · `sessionProjections`
776
829
 
777
830
  ```ts config-catalog
778
831
  /** Plugin config: where the Codex hooks.json lives + the model name for payloads. */
@@ -795,40 +848,6 @@ export interface Config {
795
848
 
796
849
  来源:[`packages/hooks/hooks-codex/src/index.ts:44`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/hooks/hooks-codex/src/index.ts)
797
850
 
798
- <a id="deepseek-aidsh-host-apiproxy"></a>
799
-
800
- ## `@deepseek-ai/dsh-host-apiproxy`
801
-
802
- 需要:`agentDefaultModel` · `agents` · `attachments` · `directoryPicker` · `llm` · `sessions` · `subagents` · `sessionQuery` · `tools` · `userQuestions` · `workspaceRegistry`
803
-
804
- ```ts config-catalog
805
- /** Gateway plugin configuration. */
806
- export interface Config {
807
- /**
808
- * Whether this deployment can hand paths to a native desktop opener —
809
- * the `hasDocument` capability the agent-preset roster reports. Absent,
810
- * the platform is asked (macOS/Windows/WSL yes; Linux only with a display
811
- * server); set it explicitly where detection misleads, e.g. `false` in a
812
- * container whose DISPLAY points nowhere a user can see.
813
- */
814
- nativeOpen?: boolean
815
- /**
816
- * DEFLATE level for every session-log ZIP entry: `0` stores without
817
- * compression, `1` favors CPU/latency, and `9` favors archive size.
818
- * @default 6
819
- */
820
- sessionExportCompressionLevel?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
821
- /**
822
- * Maximum physical size of a cold Session artifact eligible for blankness
823
- * verification. Zero disables probes.
824
- * @default 1024
825
- */
826
- coldBlankProbeMaxBytes?: number
827
- }
828
- ```
829
-
830
- 来源:[`packages/host/apiproxy/src/index.ts:41`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/host/apiproxy/src/index.ts)
831
-
832
851
  <a id="deepseek-aidsh-host-directory-picker-browse"></a>
833
852
 
834
853
  ## `@deepseek-ai/dsh-host-directory-picker-browse`
@@ -847,7 +866,7 @@ export interface Config {
847
866
 
848
867
  ## `@deepseek-ai/dsh-host-frontend-static`
849
868
 
850
- 需要:`webServer`
869
+ 需要:`webServer` · `connection`
851
870
 
852
871
  ```ts config-catalog
853
872
  /** Plugin config: the dist anchor. */
@@ -857,19 +876,25 @@ export interface Config {
857
876
  }
858
877
  ```
859
878
 
860
- 来源:[`packages/host/frontend-static/src/index.ts:28`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/host/frontend-static/src/index.ts)
879
+ 来源:[`packages/host/frontend-static/src/index.ts:30`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/host/frontend-static/src/index.ts)
861
880
 
862
881
  <a id="deepseek-aidsh-host-webserver"></a>
863
882
 
864
883
  ## `@deepseek-ai/dsh-host-webserver`
865
884
 
866
885
  ```ts config-catalog
867
- /** Gateway config: the listen address. */
886
+ /** Web server listen and response-compression config. */
868
887
  export interface Config {
869
888
  /** Listen host; the two supported values are loopback and all-interfaces. */
870
889
  host: '127.0.0.1' | '0.0.0.0'
871
890
  /** Listen port; zero requests an OS-assigned port. */
872
891
  port: number
892
+ /** Response compression for socket-backed HTTP requests. @default 'none' */
893
+ compression?: 'none' | 'gzip'
894
+ /** Gzip DEFLATE level from 0 through 9. @default 1 */
895
+ compressionLevel?: number
896
+ /** Minimum known response length eligible for gzip; unknown-length streams are eligible. @default 1024 */
897
+ compressionThresholdBytes?: number
873
898
  }
874
899
  ```
875
900
 
@@ -980,18 +1005,16 @@ export interface DeepSeekCatalogModel {
980
1005
  maxTokens?: number
981
1006
  /** Accepted request modalities; omission is text-only. */
982
1007
  inputModalities?: ModelModality[]
983
- /** Total-pixel budget for one deterministic request preview. */
984
- imagePixelBudget?: number
985
- /** Encoded-byte cap for one deterministic request preview. */
1008
+ /** Total-pixel budget for one deterministic request preview, or the 512-by-512 `low` preset. */
1009
+ imagePixelBudget?: number | 'low'
1010
+ /** Encoded-byte target for one deterministic request preview; the smallest quality-ladder output is used when no quality fits. */
986
1011
  imageMaxBytes?: number
987
- /** Provider detail tier; `low` uses the 512-by-512 total-pixel default. */
988
- imageDetail?: 'auto' | 'low'
989
1012
  }
990
1013
  ```
991
1014
 
992
1015
  依赖:[`ModelModality`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/llm/src/index.ts) · [`RetryPolicyConfig`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/llm/src/index.ts)
993
1016
 
994
- 来源:[`packages/llm/llm-deepseek/src/index.ts:106`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/llm-deepseek/src/index.ts)
1017
+ 来源:[`packages/llm/llm-deepseek/src/index.ts:125`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/llm-deepseek/src/index.ts)
995
1018
 
996
1019
  <a id="deepseek-aidsh-llm-pi-ai"></a>
997
1020
 
@@ -1070,7 +1093,7 @@ export interface PiAiProviderProfile {
1070
1093
  * to answer instead.
1071
1094
  */
1072
1095
  defaultInput?: PiAiModality[]
1073
- /** Provider request headers; Harness attribution wins reserved names. */
1096
+ /** Provider request headers, validated against Fetch when the profile resolves; Harness attribution wins reserved names. */
1074
1097
  headers?: Record<string, string>
1075
1098
  /** Provider-neutral pi-ai reasoning level. */
1076
1099
  reasoning?: ModelThinkingLevel
@@ -1095,7 +1118,10 @@ export interface PiAiProviderProfile {
1095
1118
  maxRequestImageBytes?: number
1096
1119
  /** Total-pixel budget for each deterministic inline request version. */
1097
1120
  requestImagePixelBudget?: number
1098
- /** Raw encoded-byte cap for each deterministic inline request version. */
1121
+ /**
1122
+ * Raw encoded-byte target for each deterministic inline request version;
1123
+ * the smallest quality-ladder output is used when no quality fits.
1124
+ */
1099
1125
  requestImageMaxBytes?: number
1100
1126
  /** Provider-owned model-request retry policy; omission uses normal mode with five retries. */
1101
1127
  retryPolicy?: RetryPolicyConfig
@@ -1180,6 +1206,11 @@ export interface PiAiCompatProfile {
1180
1206
  supportsReasoningEffort?: boolean
1181
1207
  /** Whether the endpoint accepts `stream_options: {include_usage: true}`; `openai-completions`. */
1182
1208
  supportsUsageInStreaming?: boolean
1209
+ /**
1210
+ * Whether streams include `finish_reason`; `false` lets pi-ai infer the
1211
+ * terminal reason when the stream ends; `openai-completions`.
1212
+ */
1213
+ supportsFinishReason?: boolean
1183
1214
  /** Which output-cap field the endpoint reads; `openai-completions`. */
1184
1215
  maxTokensField?: NonNullable<OpenAICompletionsCompat['maxTokensField']>
1185
1216
  /** Whether tool results must carry `name`; `openai-completions`. */
@@ -1200,6 +1231,10 @@ export interface PiAiCompatProfile {
1200
1231
  * can read, so kwargs set beside another format are sent nowhere.
1201
1232
  */
1202
1233
  chatTemplateKwargs?: NonNullable<OpenAICompletionsCompat['chatTemplateKwargs']>
1234
+ /** Arguments sent as `chat_template_args` under the `baseten` thinking format; `openai-completions`. */
1235
+ chatTemplateArgs?: NonNullable<OpenAICompletionsCompat['chatTemplateArgs']>
1236
+ /** Whether the endpoint accepts `thinking_token_budget` to cap vLLM reasoning; `openai-completions`. */
1237
+ supportsThinkingTokenBudget?: boolean
1203
1238
  /**
1204
1239
  * Whether the endpoint accepts `strict` in tool definitions;
1205
1240
  * `openai-completions`, the three Responses protocols, `bedrock-converse-stream`.
@@ -1301,6 +1336,15 @@ export interface ReplayModelConfig {
1301
1336
  * omit one, so replay reconstructs the request header a live catalog produced.
1302
1337
  */
1303
1338
  defaultMaxTokens?: number
1339
+ /**
1340
+ * Optional flat visual-token price the replay route declares for every
1341
+ * retained request image, so keyless scenarios exercise route-priced
1342
+ * request pressure; each occurrence is priced at this value plus its
1343
+ * request-preview handle text. Requires {@link inputModalities} to include
1344
+ * `image` — a text-only route never sends visual tokens. Absent declares
1345
+ * no image pricing.
1346
+ */
1347
+ imageRequestTokens?: number
1304
1348
  /** Optional reasoning-effort ids the replay route accepts, in display order. */
1305
1349
  reasoningEfforts?: string[]
1306
1350
  /**
@@ -1313,20 +1357,20 @@ export interface ReplayModelConfig {
1313
1357
 
1314
1358
  依赖:[`ModelModality`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/llm/src/index.ts) · [`RetryPolicyConfig`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/llm/src/index.ts)
1315
1359
 
1316
- 来源:[`packages/test-support/llm-replay/src/index.ts:809`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/test-support/llm-replay/src/index.ts)
1360
+ 来源:[`packages/test-support/llm-replay/src/index.ts:1294`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/test-support/llm-replay/src/index.ts)
1317
1361
 
1318
1362
  <a id="deepseek-aidsh-llm-retry"></a>
1319
1363
 
1320
1364
  ## `@deepseek-ai/dsh-llm-retry`
1321
1365
 
1322
- 需要:`agents`
1366
+ 需要:`agents` · `sessionProjections`
1323
1367
 
1324
1368
  ```ts config-catalog
1325
1369
  /** This policy executor has no config; providers own `retryPolicy`. */
1326
1370
  export type Config = Readonly<Record<string, never>>
1327
1371
  ```
1328
1372
 
1329
- 来源:[`packages/llm/llm-retry/src/index.ts:24`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/llm-retry/src/index.ts)
1373
+ 来源:[`packages/llm/llm-retry/src/index.ts:25`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/llm-retry/src/index.ts)
1330
1374
 
1331
1375
  <a id="deepseek-aidsh-lsp-stdio"></a>
1332
1376
 
@@ -1457,13 +1501,13 @@ export interface Config {
1457
1501
  }
1458
1502
  ```
1459
1503
 
1460
- 来源:[`packages/feedback/message-feedback/src/index.ts:49`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/feedback/message-feedback/src/index.ts)
1504
+ 来源:[`packages/feedback/message-feedback/src/index.ts:50`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/feedback/message-feedback/src/index.ts)
1461
1505
 
1462
1506
  <a id="deepseek-aidsh-permission-presets"></a>
1463
1507
 
1464
1508
  ## `@deepseek-ai/dsh-permission-presets`
1465
1509
 
1466
- 需要:`shell` · `approval` · `sessions`
1510
+ 需要:`shell` · `approval` · `sessions` · `sessionProjections`
1467
1511
 
1468
1512
  ```ts config-catalog
1469
1513
  /** The {@link PermissionPresetService} config: preset table and composition default. */
@@ -1496,7 +1540,7 @@ export interface PresetSpec {
1496
1540
 
1497
1541
  依赖:[`ApprovalPolicy`](./subsystems/approval.md) · [`SandboxMode`](./subsystems/sandbox.md)
1498
1542
 
1499
- 来源:[`packages/interaction/permission-presets/src/index.ts:156`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/permission-presets/src/index.ts)
1543
+ 来源:[`packages/interaction/permission-presets/src/index.ts:143`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/permission-presets/src/index.ts)
1500
1544
 
1501
1545
  <a id="deepseek-aidsh-persona"></a>
1502
1546
 
@@ -1520,13 +1564,13 @@ export interface Config {
1520
1564
  }
1521
1565
  ```
1522
1566
 
1523
- 来源:[`packages/preset/persona/src/index.ts:34`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/preset/persona/src/index.ts)
1567
+ 来源:[`packages/preset/persona/src/index.ts:30`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/preset/persona/src/index.ts)
1524
1568
 
1525
1569
  <a id="deepseek-aidsh-plan-mode"></a>
1526
1570
 
1527
1571
  ## `@deepseek-ai/dsh-plan-mode`
1528
1572
 
1529
- 需要:`tools` · `systemPrompt`
1573
+ 需要:`tools` · `systemPrompt` · `sessionProjections`
1530
1574
 
1531
1575
  ```ts config-catalog
1532
1576
  /** Deployment-owned plan guidance. */
@@ -1536,7 +1580,23 @@ export interface PlanModeConfig {
1536
1580
  }
1537
1581
  ```
1538
1582
 
1539
- 来源:[`packages/plan/plan-mode/src/index.ts:70`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/plan/plan-mode/src/index.ts)
1583
+ 来源:[`packages/plan/plan-mode/src/index.ts:63`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/plan/plan-mode/src/index.ts)
1584
+
1585
+ <a id="deepseek-aidsh-plugin-package-inventory-deepseek"></a>
1586
+
1587
+ ## `@deepseek-ai/dsh-plugin-package-inventory-deepseek`
1588
+
1589
+ 需要:`agents` · `deepseekLlmApiExtensions` · `loader`
1590
+
1591
+ ```ts config-catalog
1592
+ /** Plugin-package request contribution configuration. */
1593
+ export interface Config {
1594
+ /** Contribute `dsh_plugin_packages` to official DeepSeek requests. Defaults to `true`. */
1595
+ enabled?: boolean
1596
+ }
1597
+ ```
1598
+
1599
+ 来源:[`packages/llm/plugin-package-inventory-deepseek/src/index.ts:31`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/plugin-package-inventory-deepseek/src/index.ts)
1540
1600
 
1541
1601
  <a id="deepseek-aidsh-pwsh-local"></a>
1542
1602
 
@@ -1663,6 +1723,8 @@ export interface Config {
1663
1723
 
1664
1724
  ## `@deepseek-ai/dsh-sandbox-policy`
1665
1725
 
1726
+ 需要:`sessionProjections`
1727
+
1666
1728
  ```ts config-catalog
1667
1729
  /**
1668
1730
  * Plugin config: the deployment's sandbox default. All optional — `Config`
@@ -1684,7 +1746,23 @@ export interface Config {
1684
1746
 
1685
1747
  依赖:[`SandboxMode`](./subsystems/sandbox.md)
1686
1748
 
1687
- 来源:[`packages/sandbox/sandbox-policy/src/index.ts:67`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/sandbox/sandbox-policy/src/index.ts)
1749
+ 来源:[`packages/sandbox/sandbox-policy/src/index.ts:70`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/sandbox/sandbox-policy/src/index.ts)
1750
+
1751
+ <a id="deepseek-aidsh-sdk-app"></a>
1752
+
1753
+ ## `@deepseek-ai/dsh-sdk-app`
1754
+
1755
+ 需要:`cmdlineArgs`
1756
+
1757
+ ```ts config-catalog
1758
+ /** SDK stdio startup configuration. */
1759
+ export interface Config {
1760
+ /** Profile name rendered in help and diagnostics (default `sdk`). */
1761
+ profile?: string
1762
+ }
1763
+ ```
1764
+
1765
+ 来源:[`packages/bundle/sdk-app/src/index.ts:23`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/bundle/sdk-app/src/index.ts)
1688
1766
 
1689
1767
  <a id="deepseek-aidsh-sdk-jsonrpc-server"></a>
1690
1768
 
@@ -1708,16 +1786,49 @@ export interface JsonRpcConfig {
1708
1786
 
1709
1787
  依赖:`Readable`(`node:stream`)· `Writable`(`node:stream`)
1710
1788
 
1711
- 来源:[`packages/sdk/server/src/index.ts:29`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/sdk/server/src/index.ts)
1789
+ 来源:[`packages/sdk/server/src/index.ts:25`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/sdk/server/src/index.ts)
1790
+
1791
+ <a id="deepseek-aidsh-session-log-deepseek"></a>
1792
+
1793
+ ## `@deepseek-ai/dsh-session-log-deepseek`
1794
+
1795
+ 需要:`deepseekLlmApiExtensions` · `sessions`
1796
+
1797
+ ```ts config-catalog
1798
+ /** Session-log request contribution configuration. */
1799
+ export interface Config {
1800
+ /** Contribute `dsh_session_log` to official DeepSeek requests. Defaults to `false`. */
1801
+ enabled?: boolean
1802
+ }
1803
+ ```
1804
+
1805
+ 来源:[`packages/session/session-log-deepseek/src/index.ts:36`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-log-deepseek/src/index.ts)
1806
+
1807
+ <a id="deepseek-aidsh-session-log-export"></a>
1808
+
1809
+ ## `@deepseek-ai/dsh-session-log-export`
1810
+
1811
+ 需要:`commands` · `connection`
1812
+
1813
+ ```ts config-catalog
1814
+ /** Session-log archive policy. */
1815
+ export interface Config {
1816
+ /** DEFLATE level for each ZIP entry. @default 6 */
1817
+ readonly compressionLevel?: SessionLogCompressionLevel
1818
+ }
1819
+
1820
+ /** Valid fflate DEFLATE levels accepted by session-log export. */
1821
+ export type SessionLogCompressionLevel = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
1822
+ ```
1823
+
1824
+ 来源:[`packages/session-query/session-log-export/src/index.ts:45`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session-query/session-log-export/src/index.ts)
1712
1825
 
1713
1826
  <a id="deepseek-aidsh-session-persistence-jsonl"></a>
1714
1827
 
1715
1828
  ## `@deepseek-ai/dsh-session-persistence-jsonl`
1716
1829
 
1717
- 需要:`sessions`
1718
-
1719
1830
  ```ts config-catalog
1720
- /** Plugin config: where the JSONL backend keeps its session logs, and the packed-row write switch. */
1831
+ /** Plugin config for the JSONL backend's root and physical encoding. */
1721
1832
  export interface Config {
1722
1833
  /**
1723
1834
  * Root directory for all session files. Required (no default): a default of
@@ -1727,67 +1838,29 @@ export interface Config {
1727
1838
  * readable directory; an absent root is created on first materialization.
1728
1839
  */
1729
1840
  root: string
1730
- /**
1731
- * Write runs of consecutive `assistant/chunk` delta events as packed
1732
- * `text-chunks`/`reasoning-chunks`/`tool-call-chunks` rows (lossless,
1733
- * ~60% smaller logs measured on a real session). Defaults to true; false
1734
- * keeps one `SessionEvent` per line for diagnostics. Reading packed rows is
1735
- * unconditional: a log's layout never depends on this switch.
1736
- */
1737
- packChunks?: boolean
1738
1841
  /** Physical encoding; defaults to checksummed Zstandard frames. */
1739
1842
  compression?: JsonlCompression
1740
- /** Maximum cold Session preparations retained for history-to-resume reuse. */
1741
- preparedSessionCacheSize?: number
1742
- /** Fixed live-event coalescing window; not a backend completion deadline. */
1743
- writeBatchMaxDelayMs?: number
1744
1843
  }
1745
1844
 
1746
1845
  /** Physical encoding selected for JSONL session artifacts. */
1747
1846
  export type JsonlCompression = 'zstd' | 'none'
1748
1847
  ```
1749
1848
 
1750
- 来源:[`packages/session/session-persistence-jsonl/src/index.ts:60`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-persistence-jsonl/src/index.ts)
1751
-
1752
- <a id="deepseek-aidsh-session-persistence-sqlite"></a>
1753
-
1754
- ## `@deepseek-ai/dsh-session-persistence-sqlite`
1755
-
1756
- 需要:`sessions`
1757
-
1758
- ```ts config-catalog
1759
- /** Plugin configuration. */
1760
- export interface Config {
1761
- /** SQLite database path, or `:memory:` for an in-process database. */
1762
- path: string
1763
- /** Durable SQLite journal mode; defaults to `wal`. */
1764
- journalMode?: JournalMode
1765
- /** Maximum wait for another SQLite connection's lock; defaults to 5,000 ms. */
1766
- busyTimeoutMs?: number
1767
- /** Maximum cold Session preparations retained for history-to-resume reuse. */
1768
- preparedSessionCacheSize?: number
1769
- /** Fixed live-event coalescing window; not a backend completion deadline. */
1770
- writeBatchMaxDelayMs?: number
1771
- }
1772
-
1773
- /** Durable journal modes accepted by the backend. */
1774
- export type JournalMode = 'wal' | 'delete' | 'truncate' | 'persist'
1775
- ```
1776
-
1777
- 来源:[`packages/session/session-persistence-sqlite/src/index.ts:36`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-persistence-sqlite/src/index.ts)
1849
+ 来源:[`packages/session/session-persistence-jsonl/src/index.ts:85`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-persistence-jsonl/src/index.ts)
1778
1850
 
1779
1851
  <a id="deepseek-aidsh-session-projection-cache"></a>
1780
1852
 
1781
1853
  ## `@deepseek-ai/dsh-session-projection-cache`
1782
1854
 
1783
- 需要:`storageDomain` · `sessionProjections` · `sessionPersistence` · `sessions`
1855
+ 需要:`storageDomain` · `sessionProjections` · `sessions`
1784
1856
 
1785
1857
  ```ts config-catalog
1786
1858
  /**
1787
1859
  * Plugin config. Both throttle triggers are deployment choices with no
1788
1860
  * universally correct value, so the composition states them explicitly
1789
- * (cordis.yml); the two mandatory write points (`turn/end` and session
1790
- * disposal) are policy, not tunables, and always fire.
1861
+ * (cordis.yml); the three mandatory write points (session creation,
1862
+ * `turn/end`, and session disposal) are policy, not tunables, and always
1863
+ * fire.
1791
1864
  */
1792
1865
  export interface Config {
1793
1866
  /** Committed events per session that force a durable checkpoint write between mandatory points. */
@@ -1797,7 +1870,7 @@ export interface Config {
1797
1870
  }
1798
1871
  ```
1799
1872
 
1800
- 来源:[`packages/session/session-projection-cache/src/index.ts:42`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-projection-cache/src/index.ts)
1873
+ 来源:[`packages/session/session-projection-cache/src/index.ts:63`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-projection-cache/src/index.ts)
1801
1874
 
1802
1875
  <a id="deepseek-aidsh-session-query-sqlite"></a>
1803
1876
 
@@ -1830,8 +1903,10 @@ export interface Config extends SessionQueryConfig {
1830
1903
  maxLimit?: number
1831
1904
  /** Maximum snippet length in Unicode code points. Defaults to 240. */
1832
1905
  snippetChars?: number
1833
- /** Maximum concurrent persisted-log inspections in one inherited batch read. Defaults to 4. */
1834
- persistedInspectConcurrency?: number
1906
+ /** Maximum concurrent persisted-log reads in one inherited batch read. Defaults to 4. */
1907
+ persistedReadConcurrency?: number
1908
+ /** Maximum cold prepared-Session observations the inherited reader retains for reuse. Defaults to 5. */
1909
+ preparedSessionCacheSize?: number
1835
1910
  }
1836
1911
 
1837
1912
  /** SQLite module/handle opening phase; `never` disables full-text search entirely. */
@@ -1843,7 +1918,7 @@ export type JournalMode = 'wal' | 'delete' | 'truncate' | 'persist'
1843
1918
 
1844
1919
  依赖:[`SessionQueryConfig`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session-query/session-query/src/index.ts)
1845
1920
 
1846
- 来源:[`packages/session-query/session-query-sqlite/src/index.ts:89`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session-query/session-query-sqlite/src/index.ts)
1921
+ 来源:[`packages/session-query/session-query-sqlite/src/index.ts:92`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session-query/session-query-sqlite/src/index.ts)
1847
1922
 
1848
1923
  <a id="deepseek-aidsh-session-reference"></a>
1849
1924
 
@@ -1929,7 +2004,7 @@ export interface Config {
1929
2004
  }
1930
2005
  ```
1931
2006
 
1932
- 来源:[`packages/session/session-title/src/index.ts:79`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-title/src/index.ts)
2007
+ 来源:[`packages/session/session-title/src/index.ts:56`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-title/src/index.ts)
1933
2008
 
1934
2009
  <a id="deepseek-aidsh-session-title-all-prompts-llm"></a>
1935
2010
 
@@ -1979,7 +2054,7 @@ export interface Config {
1979
2054
  }
1980
2055
  ```
1981
2056
 
1982
- 来源:[`packages/settings/settings-file/src/index.ts:21`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/settings/settings-file/src/index.ts)
2057
+ 来源:[`packages/settings/settings-file/src/index.ts:22`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/settings/settings-file/src/index.ts)
1983
2058
 
1984
2059
  <a id="deepseek-aidsh-shell-env"></a>
1985
2060
 
@@ -1993,7 +2068,7 @@ export interface Config {
1993
2068
  }
1994
2069
  ```
1995
2070
 
1996
- 来源:[`packages/shell/shell-env/src/index.ts:29`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/shell/shell-env/src/index.ts)
2071
+ 来源:[`packages/shell/shell-env/src/index.ts:28`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/shell/shell-env/src/index.ts)
1997
2072
 
1998
2073
  <a id="deepseek-aidsh-skill"></a>
1999
2074
 
@@ -2007,7 +2082,7 @@ export interface Config {
2007
2082
  }
2008
2083
  ```
2009
2084
 
2010
- 来源:[`packages/skill/skill/src/index.ts:279`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/skill/skill/src/index.ts)
2085
+ 来源:[`packages/skill/skill/src/index.ts:280`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/skill/skill/src/index.ts)
2011
2086
 
2012
2087
  <a id="deepseek-aidsh-skill-filesystem"></a>
2013
2088
 
@@ -2018,7 +2093,7 @@ export interface Config {
2018
2093
  ```ts config-catalog
2019
2094
  /** Local filesystem skill provider configuration. */
2020
2095
  export interface Config {
2021
- /** Unique provider name. Defaults to `local`. */
2096
+ /** Unique provider name. Defaults to `filesystem`. */
2022
2097
  providerName?: string
2023
2098
  /** Whether project and user roots are included around custom roots. */
2024
2099
  includeDefaultRoots?: boolean
@@ -2060,16 +2135,27 @@ export interface Config {
2060
2135
  * a local deployment. Set it to keep spill files under a known location.
2061
2136
  */
2062
2137
  root?: string
2138
+ /**
2139
+ * Age in days after which a spill file is eligible for the one-shot startup
2140
+ * cleanup sweep. Defaults to `30`; `0` disables cleanup entirely. Files whose
2141
+ * `mtime` is strictly older than the cutoff are deleted and emptied
2142
+ * directories are pruned; fresh files, symlinks, and unrelated entries are
2143
+ * left untouched. On POSIX, cleanup skips roots and session directories that
2144
+ * another local user could modify or replace. Retention is deliberate — a
2145
+ * resumed or forked session may still reference an older locator until it
2146
+ * ages out.
2147
+ */
2148
+ cleanupPeriodDays?: number
2063
2149
  }
2064
2150
  ```
2065
2151
 
2066
- 来源:[`packages/spill/spill-local/src/index.ts:22`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/spill/spill-local/src/index.ts)
2152
+ 来源:[`packages/spill/spill-local/src/index.ts:31`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/spill/spill-local/src/index.ts)
2067
2153
 
2068
2154
  <a id="deepseek-aidsh-spill-policy"></a>
2069
2155
 
2070
2156
  ## `@deepseek-ai/dsh-spill-policy`
2071
2157
 
2072
- 需要:`tools`
2158
+ 需要:`tools` · `sessionProjections`
2073
2159
 
2074
2160
  ```ts config-catalog
2075
2161
  /** Plugin config. */
@@ -2122,12 +2208,12 @@ export interface Config {
2122
2208
  * location explicitly.
2123
2209
  */
2124
2210
  export interface Config {
2125
- /** Directory holding one `<unit>.json` file per unit. */
2211
+ /** Directory holding one `<unit>.json` file (or `<unit>/` tree) per unit. */
2126
2212
  root: string
2127
2213
  }
2128
2214
  ```
2129
2215
 
2130
- 来源:[`packages/storage/storage-json/src/index.ts:27`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/storage/storage-json/src/index.ts)
2216
+ 来源:[`packages/storage/storage-json/src/index.ts:28`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/storage/storage-json/src/index.ts)
2131
2217
 
2132
2218
  <a id="deepseek-aidsh-storage-sqlite"></a>
2133
2219
 
@@ -2212,7 +2298,7 @@ export interface Config {
2212
2298
  * `MAX_TIMER_DELAY_MS`.
2213
2299
  */
2214
2300
  disposeEofGraceMs?: number
2215
- /** Termination-escalation grace (ms); must not exceed `MAX_TIMER_DELAY_MS`. */
2301
+ /** Failure-observation and termination-escalation grace (ms); must not exceed `MAX_TIMER_DELAY_MS`. */
2216
2302
  disposeGraceMs?: number
2217
2303
  }
2218
2304
 
@@ -2229,10 +2315,12 @@ export type PermissionPolicy = 'allow' | 'reject'
2229
2315
  需要:`subagents` · `subprocess`
2230
2316
 
2231
2317
  ```ts config-catalog
2232
- /** Deployment-owned permission, environment, and process-release settings. */
2318
+ /** Deployment-owned model, permission, environment, and process-release settings. */
2233
2319
  export interface Config {
2234
2320
  /** Provider name on `ctx.subagents` (default `claude-code`). */
2235
2321
  providerName?: string
2322
+ /** Native Claude model fixed for this instance; omitted to inherit Claude settings. */
2323
+ model?: string
2236
2324
  /**
2237
2325
  * Explicit environment entries layered over the subprocess seam's
2238
2326
  * credential-scrubbed parent environment.
@@ -2262,10 +2350,12 @@ export type ClaudeCodePermissionMode = typeof CLAUDE_CODE_PERMISSION_MODES[numbe
2262
2350
  需要:`subagents` · `subprocess`
2263
2351
 
2264
2352
  ```ts config-catalog
2265
- /** Deployment-owned permission, environment, and process-release settings. */
2353
+ /** Deployment-owned model, permission, environment, and process-release settings. */
2266
2354
  export interface Config {
2267
2355
  /** Provider name on `ctx.subagents` (default `codex`). */
2268
2356
  providerName?: string
2357
+ /** Native Codex model fixed for this instance; omitted to inherit Codex settings. */
2358
+ model?: string
2269
2359
  /**
2270
2360
  * Explicit environment entries layered over the subprocess seam's
2271
2361
  * credential-scrubbed parent environment.
@@ -2297,10 +2387,14 @@ export type CodexPermissionMode =
2297
2387
  export interface Config {
2298
2388
  /** Provider name on `ctx.subagents` (default `dsh-sdk`). */
2299
2389
  providerName: string
2300
- /** The executable to spawn for each run (the child runtime bin or packaged exe). */
2301
- command: string
2302
- /** Arguments passed to {@link command} (typically the child's `cordis.yml` path). */
2303
- args: string[]
2390
+ /** Explicit dsh CLI module, resolved and checked at plugin load; omission uses the SDK dependency. */
2391
+ dshBin?: string
2392
+ /** Named child profile (default `sdk`). */
2393
+ profile: string
2394
+ /** Ordered per-launch profile patch files, resolved and checked at plugin load. */
2395
+ patches: string[]
2396
+ /** Absolute isolated Harness home for every nested child process. */
2397
+ dshHome: string
2304
2398
  /**
2305
2399
  * Working directory override for the child process and its SDK session
2306
2400
  * workspace. Must be non-empty; a relative path resolves against the
@@ -2318,8 +2412,7 @@ export interface Config {
2318
2412
  maxTokens?: number
2319
2413
  /**
2320
2414
  * Extra environment variables for the child process — e.g. the child
2321
- * runtime's own `DEEPSEEK_API_KEY`, or `DSH_CORDIS_CONFIG` naming its
2322
- * config. Forwarded on top of a credential-scrubbed copy of the parent
2415
+ * runtime's own `DEEPSEEK_API_KEY`. Forwarded on top of a credential-scrubbed copy of the parent
2323
2416
  * env, so an explicit key here reaches the child while ambient secrets do
2324
2417
  * not leak implicitly.
2325
2418
  */
@@ -2337,7 +2430,7 @@ export interface Config {
2337
2430
  }
2338
2431
  ```
2339
2432
 
2340
- 来源:[`packages/subagent/subagent-dsh-sdk/src/index.ts:29`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/subagent/subagent-dsh-sdk/src/index.ts)
2433
+ 来源:[`packages/subagent/subagent-dsh-sdk/src/index.ts:34`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/subagent/subagent-dsh-sdk/src/index.ts)
2341
2434
 
2342
2435
  <a id="deepseek-aidsh-subagent-fork-in-process"></a>
2343
2436
 
@@ -2412,13 +2505,13 @@ export interface Config {
2412
2505
  }
2413
2506
  ```
2414
2507
 
2415
- 来源:[`packages/core/system-prompt/src/index.ts:186`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/system-prompt/src/index.ts)
2508
+ 来源:[`packages/core/system-prompt/src/index.ts:237`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/system-prompt/src/index.ts)
2416
2509
 
2417
2510
  <a id="deepseek-aidsh-terminal-bash"></a>
2418
2511
 
2419
2512
  ## `@deepseek-ai/dsh-terminal-bash`
2420
2513
 
2421
- 需要:`terminals` · `sandboxPolicy` · `subprocess`
2514
+ 需要:`terminals` · `sandboxPolicy` · `sessionProjections` · `subprocess`
2422
2515
 
2423
2516
  ```ts config-catalog
2424
2517
  /** Public plugin configuration. */
@@ -2452,7 +2545,7 @@ export interface Config {
2452
2545
  * regain the foreground before `inferred_idle` settles; at least one `pollIntervalMs`.
2453
2546
  */
2454
2547
  handoffGraceMs?: number
2455
- /** Absolute send wait bound. */
2548
+ /** Absolute bound for one send and the complete pwsh startup sequence. */
2456
2549
  timeoutMs?: number
2457
2550
  /** Grace before teardown escalates to `SIGKILL`. */
2458
2551
  disposeGraceMs?: number
@@ -2468,7 +2561,7 @@ export type ShellDialect = 'bash' | 'pwsh'
2468
2561
 
2469
2562
  ## `@deepseek-ai/dsh-time-context`
2470
2563
 
2471
- 需要:`agents`
2564
+ 需要:`agents` · `sessionProjections`
2472
2565
 
2473
2566
  ```ts config-catalog
2474
2567
  /** Request-preparation clock formatting and append scheduling. Invalid values fail plugin load. */
@@ -2480,13 +2573,13 @@ export interface Config {
2480
2573
  }
2481
2574
  ```
2482
2575
 
2483
- 来源:[`packages/context/time-context/src/index.ts:27`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/context/time-context/src/index.ts)
2576
+ 来源:[`packages/context/time-context/src/index.ts:48`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/context/time-context/src/index.ts)
2484
2577
 
2485
2578
  <a id="deepseek-aidsh-tmux-context"></a>
2486
2579
 
2487
2580
  ## `@deepseek-ai/dsh-tmux-context`
2488
2581
 
2489
- 需要:`agents`
2582
+ 需要:`agents` · `sessionProjections`
2490
2583
 
2491
2584
  ```ts config-catalog
2492
2585
  /** Per-turn tmux-location scheduling. Invalid values fail plugin load. */
@@ -2496,18 +2589,20 @@ export interface Config {
2496
2589
  }
2497
2590
  ```
2498
2591
 
2499
- 来源:[`packages/context/tmux-context/src/index.ts:34`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/context/tmux-context/src/index.ts)
2592
+ 来源:[`packages/context/tmux-context/src/index.ts:36`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/context/tmux-context/src/index.ts)
2500
2593
 
2501
2594
  <a id="deepseek-aidsh-token-meter"></a>
2502
2595
 
2503
2596
  ## `@deepseek-ai/dsh-token-meter`
2504
2597
 
2598
+ 需要:`sessionProjections`
2599
+
2505
2600
  ```ts config-catalog
2506
2601
  /** Token-meter plugin configuration; the fixed estimator has no settings. */
2507
2602
  export type TokenMeterConfig = Record<string, never>
2508
2603
  ```
2509
2604
 
2510
- 来源:[`packages/llm/token-meter/src/types.ts:12`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/token-meter/src/types.ts)
2605
+ 来源:[`packages/llm/token-meter/src/types.ts:13`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/token-meter/src/types.ts)
2511
2606
 
2512
2607
  <a id="deepseek-aidsh-tool-bash"></a>
2513
2608
 
@@ -2523,7 +2618,7 @@ export interface Config {
2523
2618
  }
2524
2619
  ```
2525
2620
 
2526
- 来源:[`packages/shell/tool-bash/src/index.ts:34`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/shell/tool-bash/src/index.ts)
2621
+ 来源:[`packages/shell/tool-bash/src/index.ts:33`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/shell/tool-bash/src/index.ts)
2527
2622
 
2528
2623
  <a id="deepseek-aidsh-tool-bash-persistent"></a>
2529
2624
 
@@ -2608,7 +2703,7 @@ export interface Config {
2608
2703
 
2609
2704
  ## `@deepseek-ai/dsh-tool-goal`
2610
2705
 
2611
- 需要:`agents` · `goals` · `tools` · `systemPrompt`
2706
+ 需要:`agents` · `goals` · `tools` · `systemPrompt` · `sessionProjections`
2612
2707
 
2613
2708
  ```ts config-catalog
2614
2709
  /** Model policy and hard lower bounds for goal-state updates. */
@@ -2618,7 +2713,7 @@ export interface Config {
2618
2713
  }
2619
2714
  ```
2620
2715
 
2621
- 来源:[`packages/goal/tool-goal/src/index.ts:26`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/goal/tool-goal/src/index.ts)
2716
+ 来源:[`packages/goal/tool-goal/src/index.ts:25`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/goal/tool-goal/src/index.ts)
2622
2717
 
2623
2718
  <a id="deepseek-aidsh-tool-jobs"></a>
2624
2719
 
@@ -2652,7 +2747,7 @@ export interface Config {
2652
2747
  export type CompletionDelivery = 'quiet' | 'wakeup'
2653
2748
  ```
2654
2749
 
2655
- 来源:[`packages/jobs/tool-jobs/src/index.ts:32`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/jobs/tool-jobs/src/index.ts)
2750
+ 来源:[`packages/jobs/tool-jobs/src/index.ts:31`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/jobs/tool-jobs/src/index.ts)
2656
2751
 
2657
2752
  <a id="deepseek-aidsh-tool-lsp"></a>
2658
2753
 
@@ -2672,7 +2767,7 @@ export interface Config {
2672
2767
  }
2673
2768
  ```
2674
2769
 
2675
- 来源:[`packages/lsp/tool-lsp/src/index.ts:58`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/lsp/tool-lsp/src/index.ts)
2770
+ 来源:[`packages/lsp/tool-lsp/src/index.ts:57`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/lsp/tool-lsp/src/index.ts)
2676
2771
 
2677
2772
  <a id="deepseek-aidsh-tool-pwsh"></a>
2678
2773
 
@@ -2688,7 +2783,7 @@ export interface Config {
2688
2783
  }
2689
2784
  ```
2690
2785
 
2691
- 来源:[`packages/shell/tool-pwsh/src/index.ts:52`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/shell/tool-pwsh/src/index.ts)
2786
+ 来源:[`packages/shell/tool-pwsh/src/index.ts:51`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/shell/tool-pwsh/src/index.ts)
2692
2787
 
2693
2788
  <a id="deepseek-aidsh-tool-pwsh-persistent"></a>
2694
2789
 
@@ -2732,13 +2827,13 @@ export interface Config {
2732
2827
  }
2733
2828
  ```
2734
2829
 
2735
- 来源:[`packages/workflow/tool-ralph/src/index.ts:23`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/workflow/tool-ralph/src/index.ts)
2830
+ 来源:[`packages/workflow/tool-ralph/src/index.ts:21`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/workflow/tool-ralph/src/index.ts)
2736
2831
 
2737
2832
  <a id="deepseek-aidsh-tool-session-query"></a>
2738
2833
 
2739
2834
  ## `@deepseek-ai/dsh-tool-session-query`
2740
2835
 
2741
- 需要:`tools` · `systemPrompt` · `sessionQuery`
2836
+ 需要:`tools` · `systemPrompt` · `sessionQuery` · `sessionProjections`
2742
2837
 
2743
2838
  ```ts config-catalog
2744
2839
  /** Deployment-owned search count and timeout bounds. */
@@ -2750,7 +2845,7 @@ export interface Config {
2750
2845
  }
2751
2846
  ```
2752
2847
 
2753
- 来源:[`packages/session-query/tool-session-query/src/index.ts:29`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session-query/tool-session-query/src/index.ts)
2848
+ 来源:[`packages/session-query/tool-session-query/src/index.ts:28`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session-query/tool-session-query/src/index.ts)
2754
2849
 
2755
2850
  <a id="deepseek-aidsh-tool-skill"></a>
2756
2851
 
@@ -2784,13 +2879,13 @@ export interface Config {
2784
2879
  }
2785
2880
  ```
2786
2881
 
2787
- 来源:[`packages/fs/tool-str-replace-editor/src/index.ts:497`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/fs/tool-str-replace-editor/src/index.ts)
2882
+ 来源:[`packages/fs/tool-str-replace-editor/src/index.ts:505`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/fs/tool-str-replace-editor/src/index.ts)
2788
2883
 
2789
2884
  <a id="deepseek-aidsh-tool-subagent"></a>
2790
2885
 
2791
2886
  ## `@deepseek-ai/dsh-tool-subagent`
2792
2887
 
2793
- 需要:`tools` · `subagents` · `systemPrompt`
2888
+ 需要:`tools` · `subagents` · `systemPrompt` · `sessionProjections`
2794
2889
 
2795
2890
  ```ts config-catalog
2796
2891
  /** Config: which registered provider this tool delegates to, plus child defaults. */
@@ -2802,6 +2897,11 @@ export interface Config {
2802
2897
  * a distinct name.
2803
2898
  */
2804
2899
  toolName?: string
2900
+ /**
2901
+ * Sample the Host `subagent-model-selection` user setting for each new
2902
+ * top-level session and inherit that decision in its child sessions.
2903
+ */
2904
+ modelSelectionSettings?: boolean
2805
2905
  /**
2806
2906
  * Expose `run_in_background` (default true). Disabled instances omit the
2807
2907
  * parameter and reject forced background calls.
@@ -2849,29 +2949,7 @@ export interface Config {
2849
2949
 
2850
2950
  依赖:[`AgentOptions`](./subsystems/core.md)
2851
2951
 
2852
- 来源:[`packages/subagent/tool-subagent/src/index.ts:29`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/subagent/tool-subagent/src/index.ts)
2853
-
2854
- <a id="deepseek-aidsh-tool-subagent-report"></a>
2855
-
2856
- ## `@deepseek-ai/dsh-tool-subagent-report`
2857
-
2858
- 需要:`subagents` · `tools` · `systemPrompt`
2859
-
2860
- ```ts config-catalog
2861
- /** Config: how accepted reports are scheduled on the parent. */
2862
- export interface Config {
2863
- /**
2864
- * Parent scheduling (default `next-step`). `next-step` wakes the parent and
2865
- * enters at its nearest step boundary; `quiet` adds the same context without
2866
- * waking, so a parked parent waits for another waking input.
2867
- */
2868
- reportDelivery?: SubagentReportDelivery
2869
- }
2870
- ```
2871
-
2872
- 依赖:[`SubagentReportDelivery`](./subsystems/subagent.md)
2873
-
2874
- 来源:[`packages/subagent/tool-subagent-report/src/index.ts:27`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/subagent/tool-subagent-report/src/index.ts)
2952
+ 来源:[`packages/subagent/tool-subagent/src/index.ts:48`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/subagent/tool-subagent/src/index.ts)
2875
2953
 
2876
2954
  <a id="deepseek-aidsh-tool-terminal"></a>
2877
2955
 
@@ -2957,7 +3035,7 @@ export interface Config {
2957
3035
  }
2958
3036
  ```
2959
3037
 
2960
- 来源:[`packages/workflow/tool-workflow/src/index.ts:33`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/workflow/tool-workflow/src/index.ts)
3038
+ 来源:[`packages/workflow/tool-workflow/src/index.ts:32`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/workflow/tool-workflow/src/index.ts)
2961
3039
 
2962
3040
  <a id="deepseek-aidsh-tools"></a>
2963
3041
 
@@ -2969,13 +3047,13 @@ export interface Config {
2969
3047
  /** Plugin config: how the registered tools are presented to the model. */
2970
3048
  export interface Config {
2971
3049
  /**
2972
- * Model presentation. `native` (default) sends every visible schema; `code`
3050
+ * Model presentation. `native` (default) sends every visible schema; `ptc`
2973
3051
  * sends only `run_code` plus a generated SDK prompt and collapses the
2974
3052
  * executor to the same surface (a model-direct call may only name
2975
3053
  * `run_code`; `run_code` SDK sub-dispatches keep every visible tool); `both`
2976
- * sends both forms. Code modes require a `ctx.codeRuntime` whose `language`
3054
+ * sends both forms. PTC mode requires a `ctx.codeRuntime` whose `language`
2977
3055
  * has a registered SDK renderer (TypeScript or Python) and fail prompt
2978
- * assembly when it is absent or has no renderer. Under `code`, native names
3056
+ * assembly when it is absent or has no renderer. Under `ptc`, native names
2979
3057
  * in `toolOrder` are invalid.
2980
3058
  */
2981
3059
  mode?: ToolPresentationMode
@@ -2990,10 +3068,10 @@ export interface Config {
2990
3068
  }
2991
3069
 
2992
3070
  /** How the registry presents its tools to the model (see {@link Config.mode}). */
2993
- export type ToolPresentationMode = 'native' | 'code' | 'both'
3071
+ export type ToolPresentationMode = 'native' | 'ptc' | 'both'
2994
3072
  ```
2995
3073
 
2996
- 来源:[`packages/core/tools/src/index.ts:654`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/tools/src/index.ts)
3074
+ 来源:[`packages/core/tools/src/index.ts:647`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/tools/src/index.ts)
2997
3075
 
2998
3076
  <a id="deepseek-aidsh-typert-loader"></a>
2999
3077
 
@@ -3040,7 +3118,7 @@ export interface Config {
3040
3118
  export type ApprovalPolicy = 'ask' | 'never'
3041
3119
  ```
3042
3120
 
3043
- 来源:[`packages/interaction/user-approval/src/index.ts:177`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/user-approval/src/index.ts)
3121
+ 来源:[`packages/interaction/user-approval/src/index.ts:126`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/user-approval/src/index.ts)
3044
3122
 
3045
3123
  <a id="deepseek-aidsh-web"></a>
3046
3124
 
@@ -3088,7 +3166,7 @@ export interface Config {
3088
3166
  }
3089
3167
  ```
3090
3168
 
3091
- 来源:[`packages/bundle/web-app/src/index.ts:42`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/bundle/web-app/src/index.ts)
3169
+ 来源:[`packages/bundle/web-app/src/index.ts:44`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/bundle/web-app/src/index.ts)
3092
3170
 
3093
3171
  <a id="deepseek-aidsh-web-fetch-http"></a>
3094
3172
 
@@ -3099,8 +3177,6 @@ export interface Config {
3099
3177
  ```ts config-catalog
3100
3178
  /** Plugin config: the provider's transport and size limits plus its `User-Agent` (all defaulted). */
3101
3179
  export interface Config {
3102
- /** Maximum accepted request URL length. */
3103
- maxUrlLength?: number
3104
3180
  /** Maximum response body size in bytes. */
3105
3181
  maxResponseBytes?: number
3106
3182
  /** Maximum decoded body length in characters. */
@@ -3114,7 +3190,7 @@ export interface Config {
3114
3190
  }
3115
3191
  ```
3116
3192
 
3117
- 来源:[`packages/web/web-fetch-http/src/index.ts:34`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/web/web-fetch-http/src/index.ts)
3193
+ 来源:[`packages/web/web-fetch-http/src/index.ts:32`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/web/web-fetch-http/src/index.ts)
3118
3194
 
3119
3195
  <a id="deepseek-aidsh-web-search-deepseek"></a>
3120
3196
 
@@ -3166,7 +3242,7 @@ export interface Config {
3166
3242
  }
3167
3243
  ```
3168
3244
 
3169
- 来源:[`packages/web/web-search-exa/src/index.ts:38`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/web/web-search-exa/src/index.ts)
3245
+ 来源:[`packages/web/web-search-exa/src/index.ts:35`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/web/web-search-exa/src/index.ts)
3170
3246
 
3171
3247
  <a id="deepseek-aidsh-web-search-perplexity"></a>
3172
3248
 
@@ -3190,7 +3266,29 @@ export interface Config {
3190
3266
  }
3191
3267
  ```
3192
3268
 
3193
- 来源:[`packages/web/web-search-perplexity/src/index.ts:32`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/web/web-search-perplexity/src/index.ts)
3269
+ 来源:[`packages/web/web-search-perplexity/src/index.ts:30`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/web/web-search-perplexity/src/index.ts)
3270
+
3271
+ <a id="deepseek-aidsh-webhook-github"></a>
3272
+
3273
+ ## `@deepseek-ai/dsh-webhook-github`
3274
+
3275
+ 需要:`webServer` · `webhookRuntime` · `credentials`
3276
+
3277
+ ```ts config-catalog
3278
+ /** Required GitHub ingress configuration. */
3279
+ export interface Config {
3280
+ /** Adapter instance name carried to rules. */
3281
+ readonly source: string
3282
+ /** Exact absolute route path. */
3283
+ readonly path: string
3284
+ /** Credential reference containing the shared webhook secret. */
3285
+ readonly secretEnv: string
3286
+ /** Positive raw body ceiling in bytes. */
3287
+ readonly maxBodyBytes: number
3288
+ }
3289
+ ```
3290
+
3291
+ 来源:[`packages/webhook/webhook-github/src/index.ts:17`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/webhook/webhook-github/src/index.ts)
3194
3292
 
3195
3293
  <a id="deepseek-aidsh-workflow-worker-thread"></a>
3196
3294
 
@@ -3226,16 +3324,19 @@ export interface Config {
3226
3324
 
3227
3325
  这些插件通过 `cordis.yml` 中不含 `config:` 块的条目加载;它们未声明任何配置接口。
3228
3326
 
3327
+ - `@deepseek-ai/dsh-acp-app` — 需要 `cmdlineArgs`([`packages/bundle/acp-app/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/bundle/acp-app/src/index.ts))
3229
3328
  - `@deepseek-ai/dsh-agent`([`packages/core/agent/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/agent/src/index.ts))
3230
- - `@deepseek-ai/dsh-api-gateway` — 需要 `typert`([`packages/api/gateway/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/api/gateway/src/index.ts))
3231
- - `@deepseek-ai/dsh-api-remotes`([`packages/api/remotes/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/api/remotes/src/index.ts))
3329
+ - `@deepseek-ai/dsh-api-remotes` — 需要 `typertGateway`([`packages/api/remotes/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/api/remotes/src/index.ts))
3330
+ - `@deepseek-ai/dsh-api-workspace-controller` — 需要 `typert` · `workspaceRegistry`([`packages/api/workspace-controller/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/api/workspace-controller/src/index.ts))
3232
3331
  - `@deepseek-ai/dsh-authorization` — 需要 `credentials`([`packages/credentials/authorization/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/credentials/authorization/src/index.ts))
3332
+ - `@deepseek-ai/dsh-client-file-upload` — 需要 `agents` · `attachments` · `commands` · `connection`([`packages/client/file-upload/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/file-upload/src/index.ts))
3233
3333
  - `@deepseek-ai/dsh-client-locale`([`packages/client/locale/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/locale/src/index.ts))
3234
3334
  - `@deepseek-ai/dsh-client-modules` — 需要 `webServer` · `loader`([`packages/client/modules/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/modules/src/index.ts))
3235
- - `@deepseek-ai/dsh-client-runtime`([`packages/client/runtime/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/runtime/src/index.ts))
3236
3335
  - `@deepseek-ai/dsh-client-ui-agent-preset`([`packages/client/ui-agent-preset/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/ui-agent-preset/src/index.ts))
3336
+ - `@deepseek-ai/dsh-client-ui-approval`([`packages/client/ui-approval/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/ui-approval/src/index.ts))
3237
3337
  - `@deepseek-ai/dsh-client-ui-attachment`([`packages/client/ui-attachment/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/ui-attachment/src/index.ts))
3238
3338
  - `@deepseek-ai/dsh-client-ui-brand-official`([`packages/client/ui-brand-official/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/ui-brand-official/src/index.ts))
3339
+ - `@deepseek-ai/dsh-client-ui-chat`([`packages/client/ui-chat/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/ui-chat/src/index.ts))
3239
3340
  - `@deepseek-ai/dsh-client-ui-commands`([`packages/client/ui-commands/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/ui-commands/src/index.ts))
3240
3341
  - `@deepseek-ai/dsh-client-ui-conversation`([`packages/client/ui-conversation/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/ui-conversation/src/index.ts))
3241
3342
  - `@deepseek-ai/dsh-client-ui-cordis`([`packages/extensions/ui-cordis/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/extensions/ui-cordis/src/index.ts))
@@ -3252,6 +3353,8 @@ export interface Config {
3252
3353
  - `@deepseek-ai/dsh-client-ui-plan`([`packages/client/ui-plan/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/ui-plan/src/index.ts))
3253
3354
  - `@deepseek-ai/dsh-client-ui-reference`([`packages/client/ui-reference/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/ui-reference/src/index.ts))
3254
3355
  - `@deepseek-ai/dsh-client-ui-renderer`([`packages/client/ui-renderer/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/ui-renderer/src/index.ts))
3356
+ - `@deepseek-ai/dsh-client-ui-schedule`([`packages/client/ui-schedule/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/ui-schedule/src/index.ts))
3357
+ - `@deepseek-ai/dsh-client-ui-session`([`packages/client/ui-session/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/ui-session/src/index.ts))
3255
3358
  - `@deepseek-ai/dsh-client-ui-settings`([`packages/client/ui-settings/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/ui-settings/src/index.ts))
3256
3359
  - `@deepseek-ai/dsh-client-ui-settings-general`([`packages/client/ui-settings-general/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/ui-settings-general/src/index.ts))
3257
3360
  - `@deepseek-ai/dsh-client-ui-settings-models`([`packages/client/ui-settings-models/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/ui-settings-models/src/index.ts))
@@ -3271,6 +3374,8 @@ export interface Config {
3271
3374
  - `@deepseek-ai/dsh-command-goal` — 需要 `commands` · `goals`([`packages/goal/command-goal/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/goal/command-goal/src/index.ts))
3272
3375
  - `@deepseek-ai/dsh-commands`([`packages/interaction/commands/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/commands/src/index.ts))
3273
3376
  - `@deepseek-ai/dsh-cordis-client-runner`([`packages/extensions/cordis-client-runner/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/extensions/cordis-client-runner/src/index.ts))
3377
+ - `@deepseek-ai/dsh-deepseek-llm-api-extensions`([`packages/llm/deepseek-llm-api-extensions/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/deepseek-llm-api-extensions/src/index.ts))
3378
+ - `@deepseek-ai/dsh-experimental-client-ui-agent-team`([`packages/experimental/client-ui-agent-team/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/client-ui-agent-team/src/index.ts))
3274
3379
  - `@deepseek-ai/dsh-fs-e2b` — 需要 `e2b`([`packages/e2b/fs-e2b/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/e2b/fs-e2b/src/index.ts))
3275
3380
  - `@deepseek-ai/dsh-fs-observation-policy`([`packages/fs/fs-observation-policy/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/fs/fs-observation-policy/src/index.ts))
3276
3381
  - `@deepseek-ai/dsh-goal-round-driver` — 需要 `agents` · `goals` · `sessions`([`packages/goal/goal-round-driver/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/goal/goal-round-driver/src/index.ts))
@@ -3282,9 +3387,9 @@ export interface Config {
3282
3387
  - `@deepseek-ai/dsh-schedule` — 需要 `agents` · `sessions` · `tools` · `sessionPersistence`([`packages/schedule/schedule/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/schedule/schedule/src/index.ts))
3283
3388
  - `@deepseek-ai/dsh-session`([`packages/core/session/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/session/src/index.ts))
3284
3389
  - `@deepseek-ai/dsh-session-checkpoint-policy` — 需要 `llm` · `sessionPersistence` · `sessions` · `tools`([`packages/session/session-checkpoint-policy/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-checkpoint-policy/src/index.ts))
3285
- - `@deepseek-ai/dsh-session-log-export` — 需要 `commands`([`packages/session-query/session-log-export/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session-query/session-log-export/src/index.ts))
3286
3390
  - `@deepseek-ai/dsh-session-projection`([`packages/session/session-projection/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-projection/src/index.ts))
3287
3391
  - `@deepseek-ai/dsh-session-stats` — 需要 `sessionProjections`([`packages/session/session-stats/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-stats/src/index.ts))
3392
+ - `@deepseek-ai/dsh-session-turn-outline` — 需要 `sessionProjections`([`packages/session/session-turn-outline/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-turn-outline/src/index.ts))
3288
3393
  - `@deepseek-ai/dsh-skill-badge` — 需要 `skills`([`packages/skill/skill-badge/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/skill/skill-badge/src/index.ts))
3289
3394
  - `@deepseek-ai/dsh-storage`([`packages/storage/storage/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/storage/storage/src/index.ts))
3290
3395
  - `@deepseek-ai/dsh-subagent`([`packages/subagent/subagent/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/subagent/subagent/src/index.ts))
@@ -3295,6 +3400,7 @@ export interface Config {
3295
3400
  - `@deepseek-ai/dsh-tool-cordis` — 需要 `tools` · `systemPrompt` · `dynamicCordisRunner` · `cordisInspect`([`packages/extensions/tool-cordis/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/extensions/tool-cordis/src/index.ts))
3296
3401
  - `@deepseek-ai/dsh-tool-subagent-control` — 需要 `tools` · `subagents`([`packages/subagent/tool-subagent-control/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/subagent/tool-subagent-control/src/index.ts))
3297
3402
  - `@deepseek-ai/dsh-user-questions`([`packages/interaction/user-questions/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/user-questions/src/index.ts))
3403
+ - `@deepseek-ai/dsh-webhook` — 需要 `agents` · `agentDefaultModel` · `agentPresets` · `permissionPresets` · `sessionTitle` · `workspaceRegistry`([`packages/webhook/webhook/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/webhook/webhook/src/index.ts))
3298
3404
  - `@deepseek-ai/dsh-workspace` — 需要 `storageDomain` · `sessionPersistence`([`packages/workspace/workspace/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/workspace/workspace/src/index.ts))
3299
3405
 
3300
3406
  ## Seam 包(不可直接加载)
@@ -3321,21 +3427,26 @@ export interface Config {
3321
3427
 
3322
3428
  由其他包作为库导入;`cordis.yml` 无法加载它们。
3323
3429
 
3324
- - `@deepseek-ai/dsh-acp-snapshot`([`packages/test-support/acp-snapshot/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/test-support/acp-snapshot/src/index.ts))
3325
3430
  - `@deepseek-ai/dsh-agent-loop-testkit`([`packages/test-support/agent-loop-testkit/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/test-support/agent-loop-testkit/src/index.ts))
3326
3431
  - `@deepseek-ai/dsh-anonymous-user-id`([`packages/identity/anonymous-user-id/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/identity/anonymous-user-id/src/index.ts))
3327
3432
  - `@deepseek-ai/dsh-app-boot`([`packages/boot/app-boot/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/boot/app-boot/src/index.ts))
3328
3433
  - `@deepseek-ai/dsh-atomic-write`([`packages/util/atomic-write/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/util/atomic-write/src/index.ts))
3329
3434
  - `@deepseek-ai/dsh-base`([`packages/bundle/base/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/bundle/base/src/index.ts))
3330
3435
  - `@deepseek-ai/dsh-brand`([`packages/util/brand/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/util/brand/src/index.ts))
3436
+ - `@deepseek-ai/dsh-client-store`([`packages/client/store/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/store/src/index.ts))
3331
3437
  - `@deepseek-ai/dsh-client-test-runtime`([`packages/test-support/client-runtime/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/test-support/client-runtime/src/index.ts))
3332
3438
  - `@deepseek-ai/dsh-client-ui-primitives`([`packages/client/ui-primitives/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/ui-primitives/src/index.ts))
3333
3439
  - `@deepseek-ai/dsh-client-ui-slots`([`packages/client/ui-slots/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/ui-slots/src/index.ts))
3334
3440
  - `@deepseek-ai/dsh-client-web`([`packages/client/web/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/client/web/src/index.ts))
3335
3441
  - `@deepseek-ai/dsh-cmdline`([`packages/boot/cmdline/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/boot/cmdline/src/index.ts))
3336
- - `@deepseek-ai/dsh-code-runtime-python`([`packages/code-runtime/code-runtime-python/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/code-runtime/code-runtime-python/src/index.ts))
3442
+ - `@deepseek-ai/dsh-deque`([`packages/util/deque/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/util/deque/src/index.ts))
3443
+ - `@deepseek-ai/dsh-experimental-agent-team-profile`([`packages/experimental/agent-team-profile/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/agent-team-profile/src/index.ts))
3444
+ - `@deepseek-ai/dsh-experimental-agent-team-web-profile`([`packages/experimental/agent-team-web-profile/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/agent-team-web-profile/src/index.ts))
3445
+ - `@deepseek-ai/dsh-experimental-webworker-packer`([`packages/experimental/webworker-packer/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/webworker-packer/src/index.ts))
3446
+ - `@deepseek-ai/dsh-experimental-webworker-runtime`([`packages/experimental/webworker-runtime/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/webworker-runtime/src/index.ts))
3337
3447
  - `@deepseek-ai/dsh-home-paths`([`packages/util/home-paths/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/util/home-paths/src/index.ts))
3338
3448
  - `@deepseek-ai/dsh-hook-protocol`([`packages/hooks/hook-protocol/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/hooks/hook-protocol/src/index.ts))
3449
+ - `@deepseek-ai/dsh-http-proxy`([`packages/util/http-proxy/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/util/http-proxy/src/index.ts))
3339
3450
  - `@deepseek-ai/dsh-launch-environment`([`packages/util/launch-environment/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/util/launch-environment/src/index.ts))
3340
3451
  - `@deepseek-ai/dsh-llm-mock-server`([`packages/test-support/llm-mock-server/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/test-support/llm-mock-server/src/index.ts))
3341
3452
  - `@deepseek-ai/dsh-loader-smoke`([`packages/test-support/loader-smoke/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/test-support/loader-smoke/src/index.ts))
@@ -3344,8 +3455,13 @@ export interface Config {
3344
3455
  - `@deepseek-ai/dsh-sandbox-windows-acl`([`packages/sandbox/sandbox-windows-acl/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/sandbox/sandbox-windows-acl/src/index.ts))
3345
3456
  - `@deepseek-ai/dsh-scope`([`packages/core/scope/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/scope/src/index.ts))
3346
3457
  - `@deepseek-ai/dsh-sdk-client`([`packages/sdk/client/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/sdk/client/src/index.ts))
3347
- - `@deepseek-ai/dsh-sdk-jsonrpc-demo`([`packages/examples/jsonrpc-demo/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/examples/jsonrpc-demo/src/index.ts))
3458
+ - `@deepseek-ai/dsh-sdk-minimal`([`packages/bundle/sdk-minimal/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/bundle/sdk-minimal/src/index.ts))
3348
3459
  - `@deepseek-ai/dsh-sdk-protocol`([`packages/sdk/protocol/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/sdk/protocol/src/index.ts))
3460
+ - `@deepseek-ai/dsh-session-format`([`packages/session/session-format/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-format/src/index.ts))
3461
+ - `@deepseek-ai/dsh-session-format-catalog`([`packages/session/session-format-catalog/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-format-catalog/src/index.ts))
3462
+ - `@deepseek-ai/dsh-session-format-v0-to-v1`([`packages/session/session-format-v0-to-v1/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-format-v0-to-v1/src/index.ts))
3463
+ - `@deepseek-ai/dsh-session-format-v1-to-v2`([`packages/session/session-format-v1-to-v2/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-format-v1-to-v2/src/index.ts))
3464
+ - `@deepseek-ai/dsh-session-snapshot`([`packages/test-support/session-snapshot/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/test-support/session-snapshot/src/index.ts))
3349
3465
  - `@deepseek-ai/dsh-session-telemetry`([`packages/session/session-telemetry/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-telemetry/src/index.ts))
3350
3466
  - `@deepseek-ai/dsh-session-title-llm`([`packages/session/session-title-llm/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/session/session-title-llm/src/index.ts))
3351
3467
  - `@deepseek-ai/dsh-subagent-in-process-driver`([`packages/subagent/subagent-in-process-driver/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/subagent/subagent-in-process-driver/src/index.ts))
@@ -3353,3 +3469,8 @@ export interface Config {
3353
3469
  - `@deepseek-ai/dsh-typert-generator`([`packages/typert/generator/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/typert/generator/src/index.ts))
3354
3470
  - `@deepseek-ai/dsh-typert-protocol`([`packages/typert/protocol/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/typert/protocol/src/index.ts))
3355
3471
  - `@deepseek-ai/dsh-typert-registry`([`packages/typert/registry/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/typert/registry/src/index.ts))
3472
+ - `@deepseek-ai/dsh-util-crypto`([`packages/util/crypto/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/util/crypto/src/index.ts))
3473
+ - `@deepseek-ai/dsh-util-time`([`packages/util/time/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/util/time/src/index.ts))
3474
+ - `@deepseek-ai/dsh-util-values`([`packages/util/values/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/util/values/src/index.ts))
3475
+ - `@deepseek-ai/dsh-util-workspace-path`([`packages/util/workspace-path/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/util/workspace-path/src/index.ts))
3476
+ - `@deepseek-ai/dsh-win32-process`([`packages/subprocess/win32-process/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/subprocess/win32-process/src/index.ts))