@toddzheng024/dscode-bundle 0.7.26 → 0.7.28

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 (99) hide show
  1. package/README.md +1 -1
  2. package/THIRD_PARTY_NOTICES.md +10 -10
  3. package/bootstrap.mjs +1 -1
  4. package/cordis.patch.yml +418 -45
  5. package/package.json +279 -245
  6. package/plugins/auto-review/index.mjs +8 -5
  7. package/plugins/code-review/index.mjs +1 -1
  8. package/plugins/computer-use/index.mjs +37 -0
  9. package/plugins/cordis-config/plain.mjs +31 -0
  10. package/plugins/exec/cli.mjs +1 -1
  11. package/plugins/grok/index.mjs +28 -24
  12. package/plugins/memory/index.mjs +1 -1
  13. package/plugins/message-source/kind.mjs +20 -0
  14. package/plugins/openrouter/adapter.mjs +29 -13
  15. package/plugins/openrouter/index.mjs +31 -28
  16. package/plugins/session-bridge/communication.mjs +6 -3
  17. package/plugins/session-bridge/server.mjs +3 -2
  18. package/plugins/session-bridge/tasks.mjs +3 -1
  19. package/plugins/session-cards/index.mjs +1 -1
  20. package/plugins/time-marks/index.mjs +3 -2
  21. package/plugins/time-marks/marks.mjs +6 -5
  22. package/plugins/triggers/config.mjs +1 -1
  23. package/plugins/triggers/tools.mjs +1 -1
  24. package/plugins/tui-tools/doctor.mjs +1 -1
  25. package/plugins/tui-tools/index.mjs +16 -4
  26. package/plugins/ultra/policy.mjs +16 -0
  27. package/vendor/bash/index.js +455 -186
  28. package/vendor/bash/types/background.d.ts +38 -7
  29. package/vendor/bash/types/index.d.ts +20 -4
  30. package/vendor/bash/types/render.d.ts +28 -9
  31. package/vendor/command-goal/index.js +3 -1
  32. package/vendor/deepseek/index.js +1378 -1246
  33. package/vendor/deepseek/types/adapter.d.ts +16 -155
  34. package/vendor/deepseek/types/config.d.ts +127 -0
  35. package/vendor/deepseek/types/defaults.d.ts +24 -0
  36. package/vendor/deepseek/types/file-store.d.ts +5 -3
  37. package/vendor/deepseek/types/files-api.d.ts +12 -9
  38. package/vendor/deepseek/types/image-tokens.d.ts +24 -9
  39. package/vendor/deepseek/types/images.d.ts +35 -0
  40. package/vendor/deepseek/types/index.d.ts +10 -94
  41. package/vendor/deepseek/types/messages-api.d.ts +10 -0
  42. package/vendor/deepseek/types/model-info.d.ts +16 -0
  43. package/vendor/deepseek/types/models.d.ts +4 -0
  44. package/vendor/deepseek/types/replay.d.ts +27 -0
  45. package/vendor/deepseek/types/request-extensions.d.ts +16 -0
  46. package/vendor/deepseek/types/request-files.d.ts +49 -0
  47. package/vendor/deepseek/types/request-pricing.d.ts +32 -20
  48. package/vendor/deepseek/types/serialize.d.ts +17 -82
  49. package/vendor/deepseek/types/sse.d.ts +6 -22
  50. package/vendor/deepseek/types/translate.d.ts +13 -36
  51. package/vendor/deepseek/types/transport.d.ts +15 -0
  52. package/vendor/deepseek/types/types.d.ts +106 -167
  53. package/vendor/deepseek/types/wire-types.d.ts +62 -0
  54. package/vendor/persistent/index.js +9 -3
  55. package/vendor/subagent/index.js +11 -8
  56. package/vendor/subagent/model-selection-settings.js +12 -38
  57. package/vendor/subagent/types/index.d.ts +4 -3
  58. package/vendor/subagent/types/model-selection-settings.d.ts +12 -10
  59. package/vendor/subagent-core/index.js +401 -264
  60. package/vendor/subagent-core/typert.host.js +103 -113
  61. package/vendor/subagent-core/typert.remote-client.d.ts +1 -3
  62. package/vendor/subagent-core/typert.remote-client.js +23 -69
  63. package/vendor/subagent-core/types/archive-admission.d.ts +16 -0
  64. package/vendor/subagent-core/types/archive-admission.js +151 -0
  65. package/vendor/subagent-core/types/assistant-output.d.ts +2 -2
  66. package/vendor/subagent-core/types/catalog.d.ts +17 -10
  67. package/vendor/subagent-core/types/catalog.js +12 -6
  68. package/vendor/subagent-core/types/child-agent.d.ts +8 -5
  69. package/vendor/subagent-core/types/child-agent.js +11 -5
  70. package/vendor/subagent-core/types/continuation-activation.d.ts +17 -1
  71. package/vendor/subagent-core/types/continuation-activation.js +41 -4
  72. package/vendor/subagent-core/types/continuation-messages.d.ts +1 -1
  73. package/vendor/subagent-core/types/continuation-messages.js +7 -3
  74. package/vendor/subagent-core/types/continuation.d.ts +1 -1
  75. package/vendor/subagent-core/types/continuation.js +2 -2
  76. package/vendor/subagent-core/types/control-types.d.ts +29 -36
  77. package/vendor/subagent-core/types/control-types.js +2 -3
  78. package/vendor/subagent-core/types/control.d.ts +2 -28
  79. package/vendor/subagent-core/types/control.js +3 -40
  80. package/vendor/subagent-core/types/index.d.ts +45 -41
  81. package/vendor/subagent-core/types/index.js +46 -82
  82. package/vendor/subagent-core/types/internal.d.ts +2 -2
  83. package/vendor/subagent-core/types/internal.js +2 -2
  84. package/vendor/subagent-core/types/lifecycle.d.ts +1 -1
  85. package/vendor/subagent-core/types/lifecycle.js +5 -3
  86. package/vendor/subagent-core/types/list-children.d.ts +15 -32
  87. package/vendor/subagent-core/types/list-children.js +45 -49
  88. package/vendor/subagent-core/types/out-of-process.d.ts +1 -1
  89. package/vendor/subagent-core/types/projection-types.d.ts +9 -1
  90. package/vendor/subagent-core/types/projection.d.ts +5 -0
  91. package/vendor/subagent-core/types/projection.js +10 -4
  92. package/vendor/subagent-core/types/run-settlement.js +1 -1
  93. package/vendor/subagent-core/types/types.d.ts +2 -2
  94. package/vendor/terminal/index.js +94 -30
  95. package/vendor/tui/lib/index.mjs +2 -1
  96. package/vendor/tui/lib/kernel-panels.mjs +1 -1
  97. package/vendor/tui/lib/render/projection.mjs +50 -36
  98. package/presets/dscode/agent.cordis.yml +0 -321
  99. package/presets/dscode/preset.yml +0 -3
@@ -1,38 +1,18 @@
1
1
  /* Generated by @deepseek-ai/dsh-typert-generator from FaceModel — do not edit. */
2
2
  import { z } from 'zod'
3
3
 
4
- const _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_0$schema = z.intersection(z.string(), z.unknown())
5
- const _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_1$schema = z.intersection(z.string(), z.unknown())
6
- const _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_2$schema = z.literal("continuable")
7
- const _deepseek_ai_dsh_subagent_subagents_interruptByParent_result$schema = z.object({
4
+ let _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_0$schema$value
5
+ const _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_0$schema = () => (_deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
6
+ let _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_1$schema$value
7
+ const _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_1$schema = () => (_deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_1$schema$value ??= z.intersection(z.string(), z.unknown()))
8
+ let _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_2$schema$value
9
+ const _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_2$schema = () => (_deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_2$schema$value ??= z.literal("continuable"))
10
+ let _deepseek_ai_dsh_subagent_subagents_interruptByParent_result$schema$value
11
+ const _deepseek_ai_dsh_subagent_subagents_interruptByParent_result$schema = () => (_deepseek_ai_dsh_subagent_subagents_interruptByParent_result$schema$value ??= z.object({
8
12
  'accepted': z.literal(true).readonly(),
9
- })
10
- const _deepseek_ai_dsh_subagent_subagents_list_parameter_0$schema = z.intersection(z.string(), z.unknown())
11
- const _deepseek_ai_dsh_subagent_subagents_list_result$schema = z.object({
12
- 'entries': z.array(z.union([z.intersection(z.object({
13
- 'kind': z.literal("child").readonly(),
14
- 'id': z.intersection(z.string(), z.unknown()).readonly(),
15
- 'activity': z.union([z.literal("running"), z.literal("inactive")]).readonly(),
16
- 'hasChildren': z.boolean().readonly(),
17
- }), z.object({
18
- 'mode': z.literal("one-shot").readonly(),
19
- 'label': z.string().readonly().optional(),
20
- })), z.intersection(z.object({
21
- 'kind': z.literal("child").readonly(),
22
- 'id': z.intersection(z.string(), z.unknown()).readonly(),
23
- 'activity': z.union([z.literal("running"), z.literal("inactive")]).readonly(),
24
- 'hasChildren': z.boolean().readonly(),
25
- }), z.object({
26
- 'mode': z.literal("continuable").readonly(),
27
- 'label': z.string().readonly(),
28
- })), z.object({
29
- 'kind': z.literal("diagnostic").readonly(),
30
- 'id': z.intersection(z.string(), z.unknown()).readonly(),
31
- 'reason': z.union([z.literal("corrupt"), z.literal("unsupported"), z.literal("unavailable")]).readonly(),
32
- })])).readonly(),
33
- 'parentAvailable': z.boolean().readonly(),
34
- })
35
- const _deepseek_ai_dsh_subagent_subagents_prompt_parameter_0$schema = z.object({
13
+ }))
14
+ let _deepseek_ai_dsh_subagent_subagents_prompt_parameter_0$schema$value
15
+ const _deepseek_ai_dsh_subagent_subagents_prompt_parameter_0$schema = () => (_deepseek_ai_dsh_subagent_subagents_prompt_parameter_0$schema$value ??= z.object({
36
16
  'requestId': z.intersection(z.string(), z.unknown()).readonly(),
37
17
  'parentSessionId': z.intersection(z.string(), z.unknown()).readonly(),
38
18
  'childSessionId': z.intersection(z.string(), z.unknown()).readonly(),
@@ -48,10 +28,11 @@ const _deepseek_ai_dsh_subagent_subagents_prompt_parameter_0$schema = z.object({
48
28
  'name': z.string().readonly().optional(),
49
29
  })])).readonly(),
50
30
  'clientTimeZone': z.string().readonly().optional(),
51
- })
52
- const _deepseek_ai_dsh_subagent_subagents_prompt_result$schema = z.object({
31
+ }))
32
+ let _deepseek_ai_dsh_subagent_subagents_prompt_result$schema$value
33
+ const _deepseek_ai_dsh_subagent_subagents_prompt_result$schema = () => (_deepseek_ai_dsh_subagent_subagents_prompt_result$schema$value ??= z.object({
53
34
  'messageId': z.intersection(z.string(), z.unknown()).readonly(),
54
- })
35
+ }))
55
36
 
56
37
  export const TYPERT = {
57
38
  package: '@deepseek-ai/dsh-subagent',
@@ -73,7 +54,7 @@ export const TYPERT = {
73
54
  codec: {
74
55
  mode: 'strict',
75
56
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
76
- schema: _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_0$schema,
57
+ create: _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_0$schema,
77
58
  },
78
59
  },
79
60
  {
@@ -83,7 +64,7 @@ export const TYPERT = {
83
64
  codec: {
84
65
  mode: 'strict',
85
66
  typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
86
- schema: _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_1$schema,
67
+ create: _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_1$schema,
87
68
  },
88
69
  },
89
70
  {
@@ -93,43 +74,16 @@ export const TYPERT = {
93
74
  codec: {
94
75
  mode: 'strict',
95
76
  typeSymbol: '@deepseek-ai/dsh-subagent#subagents/interruptByParent:mode',
96
- schema: _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_2$schema,
77
+ create: _deepseek_ai_dsh_subagent_subagents_interruptByParent_parameter_2$schema,
97
78
  },
98
79
  },
99
80
  ],
100
81
  result: {
101
82
  mode: 'strict',
102
83
  typeSymbol: '@deepseek-ai/dsh-subagent/client#SubagentInterruptReceipt',
103
- schema: _deepseek_ai_dsh_subagent_subagents_interruptByParent_result$schema,
104
- },
105
- sourceLocation: {"file":"packages/subagent/subagent/src/index.ts","line":480,"column":3},
106
- },
107
- {
108
- id: '@deepseek-ai/dsh-subagent#subagents/list',
109
- service: 'subagents',
110
- namespace: 'subagents',
111
- method: 'list',
112
- implementation: 'remoteExportList',
113
- invocation: { kind: 'direct' },
114
- parameters: [
115
- {
116
- name: 'parentSessionId',
117
- wire: 'parentSessionId',
118
- source: 'json',
119
- codec: {
120
- mode: 'strict',
121
- typeSymbol: '@deepseek-ai/dsh-session/types#SessionId',
122
- schema: _deepseek_ai_dsh_subagent_subagents_list_parameter_0$schema,
123
- },
124
- },
125
- ],
126
- cancellation: { parameter: 'signal' },
127
- result: {
128
- mode: 'strict',
129
- typeSymbol: '@deepseek-ai/dsh-subagent/client#SubagentCatalog',
130
- schema: _deepseek_ai_dsh_subagent_subagents_list_result$schema,
84
+ create: _deepseek_ai_dsh_subagent_subagents_interruptByParent_result$schema,
131
85
  },
132
- sourceLocation: {"file":"packages/subagent/subagent/src/index.ts","line":386,"column":9},
86
+ sourceLocation: {"file":"packages/subagent/subagent/src/index.ts","line":483,"column":3},
133
87
  },
134
88
  {
135
89
  id: '@deepseek-ai/dsh-subagent#subagents/prompt',
@@ -145,7 +99,7 @@ export const TYPERT = {
145
99
  codec: {
146
100
  mode: 'strict',
147
101
  typeSymbol: '@deepseek-ai/dsh-subagent/client#SubagentPromptRequest',
148
- schema: _deepseek_ai_dsh_subagent_subagents_prompt_parameter_0$schema,
102
+ create: _deepseek_ai_dsh_subagent_subagents_prompt_parameter_0$schema,
149
103
  },
150
104
  },
151
105
  ],
@@ -153,9 +107,9 @@ export const TYPERT = {
153
107
  result: {
154
108
  mode: 'strict',
155
109
  typeSymbol: '@deepseek-ai/dsh-subagent/client#SubagentPromptReceipt',
156
- schema: _deepseek_ai_dsh_subagent_subagents_prompt_result$schema,
110
+ create: _deepseek_ai_dsh_subagent_subagents_prompt_result$schema,
157
111
  },
158
- sourceLocation: {"file":"packages/subagent/subagent/src/index.ts","line":413,"column":9},
112
+ sourceLocation: {"file":"packages/subagent/subagent/src/index.ts","line":416,"column":9},
159
113
  },
160
114
  ],
161
115
  model: {
@@ -168,6 +122,13 @@ export const TYPERT = {
168
122
  "key": "subagents",
169
123
  "exportName": "SubagentRuntime",
170
124
  "members": [
125
+ {
126
+ "kind": "method",
127
+ "name": "resolveMaxDepth",
128
+ "signature": "resolveMaxDepth(configured?: number | 'provider-managed'): number | undefined",
129
+ "summary": "Resolve a delegation tool's depth policy against the current user setting.",
130
+ "jsDoc": "/**\n * Resolve a delegation tool's depth policy against the current user setting.\n * @param configured - Explicit tool limit, or provider-managed for external delegation.\n * @returns The numeric limit, or undefined when the provider owns depth enforcement.\n */"
131
+ },
171
132
  {
172
133
  "kind": "method",
173
134
  "name": "startContinuable",
@@ -206,30 +167,23 @@ export const TYPERT = {
206
167
  {
207
168
  "kind": "method",
208
169
  "name": "listChildren",
209
- "signature": "listChildren(parentSessionId: SessionId, signal?: AbortSignal): Promise<SubagentListEntry[]>",
210
- "summary": "Enumerate the parent's direct session-backed subagents without loading or resuming an Agent.",
211
- "jsDoc": "/**\n * Enumerate the parent's direct session-backed subagents without loading or\n * resuming an Agent. The Session query service supplies one live-preferred\n * corpus and shared point observations; the projection cache supplies\n * immutable descriptor hits without opening cold logs. The registered\n * `subagent` projection remains the sole mode/label classifier.\n *\n * Every query receives `signal`, and the listing rechecks cancellation\n * around each await. Read rejections that settle\n * after an abort become a stable `SubagentError` with code `CANCELLED`.\n * @param parentSessionId - parent session whose direct children are listed.\n * @param signal - caller-owned cancellation forwarded to Session queries\n * and observed around every read await.\n * @returns children and per-child diagnostics ordered by `createdAt`, then id.\n * @throws {@link SubagentError} when the projection registry or the session\n * store is not mounted, or the caller cancels the listing.\n */"
170
+ "signature": "listChildren(parentSessionId: SessionId, signal?: AbortSignal): Promise<SubagentCatalogEntry[]>",
171
+ "summary": "Read the parent's durable direct-child catalog without loading or resuming an Agent.",
172
+ "jsDoc": "/**\n * Read the parent's durable direct-child catalog without loading or resuming an Agent.\n * The service owns and releases the live-preferred Session observation.\n * @param parentSessionId - parent whose direct children are requested.\n * @param signal - cancellation forwarded to the Session query.\n * @returns catalog children in parent event order.\n * @throws {@link SubagentError} when query or catalog projection is unavailable.\n * @throws SessionQueryError when the parent cannot be read or the query is cancelled.\n */"
212
173
  },
213
174
  {
214
175
  "kind": "method",
215
176
  "name": "listDescendants",
216
177
  "signature": "listDescendants(rootSessionId: SessionId, signal?: AbortSignal): Promise<SubagentDescendantListEntry[]>",
217
178
  "summary": "Enumerate the root's complete session-backed subagent tree in stable pre-order from one live-preferred corpus, without loading or resuming an Agent.",
218
- "jsDoc": "/**\n * Enumerate the root's complete session-backed subagent tree in stable\n * pre-order from one live-preferred corpus, without loading or resuming an\n * Agent. Ordinary sessions and one-shot children remain traversal nodes so\n * continuable descendants below them are discovered; each returned entry\n * adds its durable `parentId` and root-relative `depth`. Identity resolution,\n * diagnostics, optional persistence, and cancellation follow the same\n * projection-backed contract as {@link listChildren}.\n * @param rootSessionId - session whose complete descendant tree is listed.\n * @param signal - caller-owned cancellation forwarded to persistence reads\n * and observed around every read await.\n * @returns children and per-candidate diagnostics with tree position, in\n * stable pre-order.\n * @throws {@link SubagentError} under the same conditions as {@link listChildren}.\n */"
219
- },
220
- {
221
- "kind": "method",
222
- "name": "remoteExportList",
223
- "signature": "@Remote('list') async remoteExportList(parentSessionId: SessionId, signal: AbortSignal): Promise<SubagentCatalog>",
224
- "summary": "Remote face of {@link listChildren} for one browser: the durable listing plus live Agent activity and the delivery-time parent availability hint.",
225
- "jsDoc": "/**\n * Remote face of {@link listChildren} for one browser: the durable listing\n * plus live Agent activity and the delivery-time parent availability hint.\n * Parent availability is a hint; {@link prompt} performs the authoritative\n * check. Named apart from the provider-name {@link list}, which owns the\n * member.\n * @param parentSessionId - parent session whose direct children are listed.\n * @param signal - carrier cancellation forwarded to Session queries.\n * @returns the catalog view for that parent.\n * @throws {RemoteError} `gateway/bad-request` for an empty parent id,\n * `gateway/cancelled` for an aborted read, `subagent/projections-unavailable` when\n * the deployment has no projection registry, otherwise `gateway/internal`.\n */"
179
+ "jsDoc": "/**\n * Enumerate the root's complete session-backed subagent tree in stable\n * pre-order from one live-preferred corpus, without loading or resuming an\n * Agent. Ordinary sessions and one-shot children remain traversal nodes so\n * continuable descendants below them are discovered; each returned entry\n * adds its durable `parentId` and root-relative `depth`. Identity resolution,\n * diagnostics, optional persistence, and cancellation use the registered\n * child identity projection and complete Session corpus.\n * @param rootSessionId - session whose complete descendant tree is listed.\n * @param signal - caller-owned cancellation forwarded to persistence reads\n * and observed around every read await.\n * @returns children and per-candidate diagnostics with tree position, in\n * stable pre-order.\n * @throws {@link SubagentError} when listing dependencies are unavailable or the caller cancels.\n */"
226
180
  },
227
181
  {
228
182
  "kind": "method",
229
183
  "name": "prompt",
230
184
  "signature": "@Remote('prompt') async prompt(request: SubagentPromptRequest, signal: AbortSignal): Promise<SubagentPromptReceipt>",
231
185
  "summary": "Deliver one browser-authored message to a continuable child through the exact live direct parent, retaining the caller-minted request identity and validated browser zone on the accepted message.",
232
- "jsDoc": "/**\n * Deliver one browser-authored message to a continuable child through the\n * exact live direct parent, retaining the caller-minted request identity and\n * validated browser zone on the accepted message. Success identifies the\n * message the child's inbox accepted; later execution is independent of this\n * call. Queue delivery targets a later turn; steer delivery targets the\n * nearest step and retains the Agent loop's best-effort fallback semantics.\n * Image parts are admitted and persisted through the attachment store\n * before delivery, and the child's model must accept image input.\n * @param request - durable address, delivery, minted identity, content, and optional browser zone.\n * @param signal - carrier cancellation, owning the call until inbox acceptance.\n * @returns the accepted message's inbox identity.\n * @throws {RemoteError} `gateway/bad-request`, `subagent/attachment-invalid`,\n * `subagent/invalid-time-zone`, `subagent/parent-unavailable`,\n * `subagent/not-resumable`, `subagent/unauthorized`,\n * `subagent/delivery-unavailable`, `gateway/cancelled`, or `gateway/internal`.\n */"
186
+ "jsDoc": "/**\n * Deliver one browser-authored message to a continuable child through the\n * exact live direct parent, retaining the caller-minted request identity and\n * validated browser zone on the accepted message. Success identifies the\n * message the child's inbox accepted; later execution is independent of this\n * call. Queue delivery targets a later turn; steer delivery targets the\n * nearest step and retains the Agent loop's best-effort fallback semantics.\n * Image parts are admitted and persisted through the attachment store\n * before delivery, and the child's model must accept image input.\n * Cold resume at capacity rejects with `subagent/delivery-unavailable`.\n * @param request - durable address, delivery, minted identity, content, and optional browser zone.\n * @param signal - carrier cancellation, owning the call until inbox acceptance.\n * @returns the accepted message's inbox identity.\n * @throws {RemoteError} `gateway/bad-request`, `subagent/attachment-invalid`,\n * `subagent/invalid-time-zone`, `subagent/parent-unavailable`,\n * `subagent/not-resumable`, `subagent/unauthorized`,\n * `subagent/delivery-unavailable`, `gateway/cancelled`, or `gateway/internal`.\n */"
233
187
  },
234
188
  {
235
189
  "kind": "method",
@@ -302,11 +256,11 @@ export const TYPERT = {
302
256
  },
303
257
  {
304
258
  "name": "AssistantMessage",
305
- "declaration": "export interface AssistantMessage extends Message {\n readonly role: 'assistant';\n readonly source: ModelMessageSource;\n}"
259
+ "declaration": "export interface AssistantMessage extends MessageBase {\n readonly role: 'assistant';\n readonly source: ModelMessageSource;\n}"
306
260
  },
307
261
  {
308
- "name": "AssistantProvenance",
309
- "declaration": "export interface AssistantProvenance {\n provider: string;\n model: string;\n replayState?: unknown;\n}"
262
+ "name": "AssistantProviderMetadata",
263
+ "declaration": "export interface AssistantProviderMetadata {\n provider: string;\n model: string;\n replayState?: unknown;\n}"
310
264
  },
311
265
  {
312
266
  "name": "AssistantStreamRecord",
@@ -340,6 +294,10 @@ export const TYPERT = {
340
294
  "name": "CommandSourceMap",
341
295
  "declaration": "export interface CommandSourceMap {\n user: { kind: 'user'; };\n}"
342
296
  },
297
+ {
298
+ "name": "CompactionCheckpointSource",
299
+ "declaration": "export type CompactionCheckpointSource = typeof COMPACT_CHECKPOINT_MARKER & { readonly compactionId: CompactionId; readonly sourceCommandId?: CommandId; };"
300
+ },
343
301
  {
344
302
  "name": "CompactionId",
345
303
  "declaration": "export type CompactionId = Branded<'CompactionId'>;"
@@ -350,7 +308,7 @@ export const TYPERT = {
350
308
  },
351
309
  {
352
310
  "name": "ContentBlockMap",
353
- "declaration": "export interface ContentBlockMap {\n text: TextBlock;\n reasoning: ReasoningBlock;\n image: ImageBlock;\n file: FileBlock;\n 'tool-call': ToolCallBlock;\n 'tool-result': ToolResultBlock;\n}"
311
+ "declaration": "export interface ContentBlockMap {\n text: TextBlock;\n reasoning: ReasoningBlock;\n image: ImageBlock;\n file: FileBlock;\n 'tool-call': ToolCallBlock;\n 'tool-addition': ToolAdditionBlock;\n 'tool-removal': ToolRemovalBlock;\n}"
354
312
  },
355
313
  {
356
314
  "name": "ContentBlockType",
@@ -384,9 +342,13 @@ export const TYPERT = {
384
342
  "name": "ContinuableSubagentDescriptorData",
385
343
  "declaration": "export interface ContinuableSubagentDescriptorData extends SubagentDescriptorBase {\n readonly mode: 'continuable';\n readonly label: string;\n readonly agentProvider?: string;\n readonly agentModel?: string;\n readonly agentReasoningEffort?: ReasoningEffortId;\n readonly persona?: string;\n readonly toolFilter?: ToolRestriction;\n}"
386
344
  },
345
+ {
346
+ "name": "DeveloperMessage",
347
+ "declaration": "export interface DeveloperMessage extends MessageBase {\n readonly role: 'developer';\n}"
348
+ },
387
349
  {
388
350
  "name": "EpochHeader",
389
- "declaration": "export interface EpochHeader {\n config: LlmCallConfig;\n adapterDefaults?: LlmCallConfigAdapterDefaults;\n tools?: ToolSchema[];\n}"
351
+ "declaration": "export interface EpochHeader {\n config: LlmCallConfig;\n adapterDefaults?: LlmCallConfigAdapterDefaults;\n tools?: ToolSchema[];\n system?: never;\n}"
390
352
  },
391
353
  {
392
354
  "name": "FeedbackCategory",
@@ -458,12 +420,16 @@ export const TYPERT = {
458
420
  },
459
421
  {
460
422
  "name": "ImageBlock",
461
- "declaration": "export interface ImageBlock {\n type: 'image';\n attachment: ImageAttachmentRef;\n}"
423
+ "declaration": "export interface ImageBlock {\n type: 'image';\n attachment: ImageAttachmentRef;\n offloaded?: true;\n}"
462
424
  },
463
425
  {
464
426
  "name": "ImageMediaType",
465
427
  "declaration": "export type ImageMediaType = 'image/png' | 'image/jpeg' | 'image/webp' | 'image/gif';"
466
428
  },
429
+ {
430
+ "name": "ImageOffloadTarget",
431
+ "declaration": "export interface ImageOffloadTarget {\n seq: SessionSeq;\n imageIndexes: number[];\n}"
432
+ },
467
433
  {
468
434
  "name": "Inbox",
469
435
  "declaration": "export interface Inbox {\n readonly nextTurn: readonly UserMessage[];\n readonly nextStep: readonly UserMessage[];\n clear(): void;\n append(target: InboxTarget, message: UserMessage): void;\n prepend(target: InboxTarget, message: UserMessage): void;\n replace(messageId: MessageId, newMessage: UserMessage): boolean;\n remove(messageId: MessageId): boolean;\n splice(target: InboxTarget, start: number, deleteCount: number, inserted: UserMessage[]): UserMessage[];\n}"
@@ -488,6 +454,10 @@ export const TYPERT = {
488
454
  "name": "JsonValue",
489
455
  "declaration": "export type JsonValue = null | boolean | number | string | JsonValue[] | { [key: string]: JsonValue; };"
490
456
  },
457
+ {
458
+ "name": "KnownCatalogMode",
459
+ "declaration": "export type KnownCatalogMode = { readonly mode: 'one-shot'; readonly label?: string; } | { readonly mode: 'continuable'; readonly label: string; };"
460
+ },
491
461
  {
492
462
  "name": "LlmCallConfig",
493
463
  "declaration": "export interface LlmCallConfig {\n provider: string;\n model: string;\n reasoningEffort?: ReasoningEffortId;\n temperature?: number;\n maxTokens?: number;\n stop?: string[];\n}"
@@ -498,11 +468,15 @@ export const TYPERT = {
498
468
  },
499
469
  {
500
470
  "name": "LlmFailure",
501
- "declaration": "export interface LlmFailure {\n readonly message: string;\n readonly code: string;\n readonly status?: number;\n readonly providerRetryAfterMs?: number;\n readonly requestId?: ProviderRequestId;\n}"
471
+ "declaration": "export interface LlmFailure {\n readonly message: string;\n readonly code: string;\n readonly status?: number;\n readonly providerRetryAfterMs?: number;\n readonly requestId?: ProviderRequestId;\n readonly offloadImages?: number;\n}"
502
472
  },
503
473
  {
504
474
  "name": "Message",
505
- "declaration": "export interface Message {\n readonly id: MessageId;\n readonly role: 'system' | 'user' | 'assistant';\n readonly content: ContentBlock[];\n readonly source: MessageSource;\n}"
475
+ "declaration": "export type Message = MessageRoleMap[keyof MessageRoleMap];"
476
+ },
477
+ {
478
+ "name": "MessageBase",
479
+ "declaration": "export interface MessageBase {\n readonly id: MessageId;\n readonly content: readonly ContentBlock[];\n readonly source: MessageSource;\n}"
506
480
  },
507
481
  {
508
482
  "name": "MessageFeedbackDelete",
@@ -528,17 +502,21 @@ export const TYPERT = {
528
502
  "name": "MessageId",
529
503
  "declaration": "export type MessageId = Branded<'MessageId'>;"
530
504
  },
505
+ {
506
+ "name": "MessageRoleMap",
507
+ "declaration": "export interface MessageRoleMap {\n system: SystemMessage;\n developer: DeveloperMessage;\n user: UserMessage;\n assistant: AssistantMessage;\n tool: ToolResultMessage;\n}"
508
+ },
531
509
  {
532
510
  "name": "MessageSource",
533
511
  "declaration": "export type MessageSource = MessageSourceMap[keyof MessageSourceMap];"
534
512
  },
535
513
  {
536
514
  "name": "MessageSourceMap",
537
- "declaration": "export interface MessageSourceMap {\n user: { kind: 'user'; };\n plugin: { kind: 'plugin'; plugin: string; } & ContextFormed;\n model: ModelMessageSource;\n tool: ToolMessageSource;\n 'user-rpc': { kind: 'user'; rpcId: SessionRequestId; clientTimeZone?: string; };\n 'agent-message': AgentMessageSource;\n 'subagent-settled': SubagentSettledMessageSource;\n 'skill-invocation': SkillInvocationSource;\n 'team-message': TeamMessageSource;\n goal: GoalMessageSource;\n 'session-reference': SessionReferenceSource;\n}"
515
+ "declaration": "export interface MessageSourceMap {\n user: { kind: 'user'; };\n model: ModelMessageSource;\n tool: ToolMessageSource;\n 'system-prompt': SystemPromptMessageSource;\n 'model-selection': { kind: 'model-selection'; } & ContextFormed;\n 'user-approval': { kind: 'user-approval'; } & ContextFormed;\n 'ptc-mode': { kind: 'ptc-mode'; };\n 'tool-registry': { kind: 'tool-registry'; };\n 'user-rpc': { kind: 'user'; rpcId: SessionRequestId; clientTimeZone?: string; };\n 'agent-message': AgentMessageSource;\n 'subagent-settled': SubagentSettledMessageSource;\n 'skill-invocation': SkillInvocationSource;\n 'cordis-host-runner': { kind: 'cordis-host-runner'; };\n 'team-message': TeamMessageSource;\n goal: GoalMessageSource;\n 'compact-checkpoint': CompactionCheckpointSource;\n 'session-reference': SessionReferenceSource;\n}"
538
516
  },
539
517
  {
540
518
  "name": "ModelMessageSource",
541
- "declaration": "export interface ModelMessageSource extends AssistantProvenance {\n kind: 'model';\n}"
519
+ "declaration": "export interface ModelMessageSource extends AssistantProviderMetadata {\n kind: 'model';\n}"
542
520
  },
543
521
  {
544
522
  "name": "ModelSelection",
@@ -566,7 +544,7 @@ export const TYPERT = {
566
544
  },
567
545
  {
568
546
  "name": "PtcDispatchEventData",
569
- "declaration": "export interface PtcDispatchEventData extends PtcDispatchStartEventData {\n isError: boolean;\n content: ContentBlock[];\n}"
547
+ "declaration": "export interface PtcDispatchEventData extends PtcDispatchStartEventData {\n isError: boolean;\n content: ContentBlock[];\n error?: { name: string; code: string; reason?: string; };\n}"
570
548
  },
571
549
  {
572
550
  "name": "PtcDispatchStartEventData",
@@ -602,7 +580,7 @@ export const TYPERT = {
602
580
  },
603
581
  {
604
582
  "name": "Session",
605
- "declaration": "export class Session {\n get surface(): SessionSurface;\n readonly header: SessionHeader;\n readonly inheritedEventCount: SessionLogOffset;\n get id(): SessionId;\n readonly firstLiveSeq: SessionLogOffset;\n eventAt(seq: SessionSeq): SessionEvent | undefined;\n snapshotEvents(fromSeq: SessionLogOffset = SessionLogOffset(0), toSeqExclusive: SessionLogOffset = this.seq): readonly SessionEvent[];\n ownEvents(): readonly SessionEvent[];\n isOwnSeq(seq: SessionSeq): boolean;\n get seq(): SessionLogOffset;\n append<T extends SessionEventType>(type: T, data: SessionEventMap[T], ...opts: T extends SurfaceEventType ? [opts: SurfaceIntent<T>] : []): SessionEvent<T>;\n requestHeader(): EpochHeader | undefined;\n requestContext(): RequestContext | undefined;\n deriveMessages(): Message[];\n deriveEventMessage(event: SessionEvent): Message | null;\n}"
583
+ "declaration": "export class Session {\n get surface(): SessionSurface;\n readonly header: SessionHeader;\n readonly inheritedEventCount: SessionLogOffset;\n get id(): SessionId;\n readonly firstLiveSeq: SessionLogOffset;\n readonly firstLifecycleSeq: SessionLogOffset;\n eventAt(seq: SessionSeq): SessionEvent | undefined;\n snapshotEvents(fromSeq: SessionLogOffset = SessionLogOffset(0), toSeqExclusive: SessionLogOffset = this.seq): readonly SessionEvent[];\n ownEvents(): readonly SessionEvent[];\n isOwnSeq(seq: SessionSeq): boolean;\n get seq(): SessionLogOffset;\n append<T extends SessionEventType>(type: T, data: SessionEventMap[T], ...opts: T extends SurfaceEventType ? [opts: SurfaceIntent<T>] : []): SessionEvent<T>;\n requestHeader(): EpochHeader | undefined;\n requestContext(): RequestContext | undefined;\n deriveMessages(): Message[];\n deriveEventMessage(event: SessionEvent): Message | null;\n}"
606
584
  },
607
585
  {
608
586
  "name": "SessionEvent",
@@ -610,7 +588,7 @@ export const TYPERT = {
610
588
  },
611
589
  {
612
590
  "name": "SessionEventMap",
613
- "declaration": "export interface SessionEventMap {\n 'turn/start': { turn: number; };\n 'turn/end': { turn: number; reason: TurnEndReason; };\n 'step/start': { turn: number; step: number; };\n 'step/end': { turn: number; step: number; };\n 'user/message': UserMessage;\n 'system/message': { turn: number; step: number; message: SystemMessage; };\n 'assistant/message': { turn: number; step: number; message: AssistantMessage; stream: AssistantStreamRecord[]; usage?: TokenUsage; interrupted?: true; };\n 'assistant/attempt': { turn: number; step: number; stream: AssistantStreamRecord[]; };\n 'tool/call': { turn: number; step: number; callId: ToolCallId; name: string; arguments: string; };\n 'tool/result': { turn: number; step: number; message: ToolResultMessage; error?: { name: string; code: string; }; meta?: JsonValue; };\n 'request/header': { header: EpochHeader; reason: RequestHeaderReason; startsSeries?: true; };\n 'request/context': RequestContext;\n 'session/end-seed': { inherited?: true; };\n 'agent/inbox/spliced': { target: InboxTarget; start: number; removedCount?: number; inserted: UserMessage[]; outcome?: 'canceled'; };\n 'approval/asked': { id: ApprovalRequestId; toolName: string; callId?: ToolCallId; reason?: string; };\n 'approval/decided': { id: ApprovalRequestId; outcome: ApprovalOutcome; };\n 'approval/policy': { policy: ApprovalPolicy; source?: 'delegation'; };\n 'tool/ptc-dispatch-start': PtcDispatchStartEventData;\n 'tool/ptc-dispatch': PtcDispatchEventData;\n 'agent-preset/selected': { agentPreset: string; };\n 'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource; };\n 'command/done': { commandId: CommandId; kind: 'success' | 'error'; text?: string; sourceEventSeq?: import('@deepseek-ai/dsh-session/types').SessionSeq; };\n 'session/title': SessionTitleEventData;\n 'todo/write': { todos: TodoItem[]; };\n 'model/selection': ModelSelection;\n 'subagent/descriptor': SubagentDescriptorData;\n 'sandbox/mode': { mode: SandboxMode; source?: 'delegation'; };\n 'subagent/catalog': SubagentCatalogEvent;\n 'feedback/record': FeedbackRecord;\n 'team/member': { version: 2; teamId: TeamId; member: TeamMemberSnapshot; };\n 'team/task': { version: 2; teamId: TeamId; task: TeamTaskSnapshot; };\n 'team/message/queued': { version: 2; teamId: TeamId; message: TeamMessageSnapshot; };\n 'team/message/delivered': { version: 2; teamId: TeamId; messageId: TeamMessageId; targetId: SessionId; };\n 'goal/change': GoalChangeMeta;\n 'feedback/message-put': MessageFeedbackPut;\n 'feedback/message-delete': MessageFeedbackDelete;\n 'compaction/start': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; };\n 'compaction/summary': { compactionId: CompactionId; sourceCommandId?: CommandId; summary: ContentBlock[]; shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; provider: string; model: string; maxTokens?: number; usage?: TokenUsage; } & ({ rawOutput: ContentBlock[]; llmStreamCall: true; } | { rawOutput?: ContentBlock[]; llmStreamCall?: never; });\n 'compaction/end': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; error?: string; };\n 'compaction/prune': { shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; };\n}"
591
+ "declaration": "export interface SessionEventMap {\n 'turn/start': { turn: number; };\n 'turn/end': { turn: number; reason: TurnEndReason; };\n 'step/start': { turn: number; step: number; };\n 'step/end': { turn: number; step: number; };\n 'user/message': UserMessage;\n 'developer/message': { turn: number; step: number; message: DeveloperMessage; headerSeq?: SessionSeq; };\n 'system/message': { turn: number; step: number; message: SystemMessage; };\n 'assistant/message': { turn: number; step: number; message: AssistantMessage; stream: AssistantStreamRecord[]; usage?: TokenUsage; interrupted?: true; };\n 'assistant/attempt': { turn: number; step: number; stream: AssistantStreamRecord[]; };\n 'tool/call': { turn: number; step: number; callId: ToolCallId; name: string; arguments: string; };\n 'tool/result': { turn: number; step: number; message: ToolResultMessage; error?: { name: string; code: string; reason?: string; }; meta?: JsonValue; };\n 'request/header': { header: EpochHeader; reason: RequestHeaderReason; startsSeries?: true; };\n 'request/context': RequestContext;\n 'session/end-seed': { inherited?: true; };\n 'agent/inbox/spliced': { target: InboxTarget; start: number; removedCount?: number; inserted: UserMessage[]; outcome?: 'canceled'; };\n 'sandbox/mode': { mode: SandboxMode; source?: 'delegation'; };\n 'approval/asked': { id: ApprovalRequestId; toolName: string; callId?: ToolCallId; reason?: string; };\n 'approval/decided': { id: ApprovalRequestId; outcome: ApprovalOutcome; };\n 'approval/policy': { policy: ApprovalPolicy; source?: 'delegation'; };\n 'tool/ptc-dispatch-start': PtcDispatchStartEventData;\n 'tool/ptc-dispatch': PtcDispatchEventData;\n 'agent-preset/selected': { agentPreset: string; };\n 'command/run': { commandId: CommandId; name: string; args?: string; source: CommandSource; };\n 'command/done': { commandId: CommandId; kind: 'success' | 'error'; text?: string; sourceEventSeq?: import('@deepseek-ai/dsh-session/types').SessionSeq; };\n 'image/offload': { targets: ImageOffloadTarget[]; };\n 'session/title': SessionTitleEventData;\n 'todo/write': { todos: TodoItem[]; };\n 'model/selection': ModelSelection;\n 'subagent/descriptor': SubagentDescriptorData;\n 'permission/preset': { preset: string; };\n 'subagent/catalog': SubagentCatalogEvent;\n 'feedback/record': FeedbackRecord;\n 'team/member': { version: 2; teamId: TeamId; member: TeamMemberSnapshot; };\n 'team/task': { version: 2; teamId: TeamId; task: TeamTaskSnapshot; };\n 'team/message/queued': { version: 2; teamId: TeamId; message: TeamMessageSnapshot; };\n 'team/message/delivered': { version: 2; teamId: TeamId; messageId: TeamMessageId; targetId: SessionId; };\n 'goal/change': GoalChangeMeta;\n 'feedback/message-put': MessageFeedbackPut;\n 'feedback/message-delete': MessageFeedbackDelete;\n 'compaction/start': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; };\n 'compaction/summary': { compactionId: CompactionId; sourceCommandId?: CommandId; summary: ContentBlock[]; shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; provider: string; model: string; maxTokens?: number; usage?: TokenUsage; } & ({ rawOutput: ContentBlock[]; llmStreamCall: true; } | { rawOutput?: ContentBlock[]; llmStreamCall?: never; });\n 'compaction/end': { compactionId: CompactionId; sourceCommandId?: CommandId; turn: number | null; error?: string; };\n 'compaction/prune': { shadowedRange: { start: SessionSeq; end: SessionSeq; }; shadowedSeqs: SessionSeq[]; shadowedTokenCount: number; };\n}"
614
592
  },
615
593
  {
616
594
  "name": "SessionEventType",
@@ -642,15 +620,15 @@ export const TYPERT = {
642
620
  },
643
621
  {
644
622
  "name": "SessionSurface",
645
- "declaration": "export interface SessionSurface {\n readonly nodes: readonly SessionSeq[];\n readonly replaceGeneration: number;\n}"
623
+ "declaration": "export interface SessionSurface {\n readonly nodes: readonly SessionSeq[];\n readonly replaceGeneration: number;\n readonly contentGeneration: number;\n}"
646
624
  },
647
625
  {
648
626
  "name": "SessionTitleEventData",
649
627
  "declaration": "export interface SessionTitleEventData {\n readonly title: string;\n readonly messageSeqs: SessionSeq[];\n readonly source: SessionTitleSource;\n}"
650
628
  },
651
629
  {
652
- "name": "SessionTitleModelProvenance",
653
- "declaration": "export interface SessionTitleModelProvenance {\n readonly provider: string;\n readonly model: string;\n}"
630
+ "name": "SessionTitleModelIdentity",
631
+ "declaration": "export interface SessionTitleModelIdentity {\n readonly provider: string;\n readonly model: string;\n}"
654
632
  },
655
633
  {
656
634
  "name": "SessionTitleProviderId",
@@ -658,7 +636,7 @@ export const TYPERT = {
658
636
  },
659
637
  {
660
638
  "name": "SessionTitleSource",
661
- "declaration": "export type SessionTitleSource = { readonly kind: 'fallback'; } | { readonly kind: 'provider'; readonly provider: SessionTitleProviderId; readonly model?: SessionTitleModelProvenance; } | { readonly kind: 'user'; };"
639
+ "declaration": "export type SessionTitleSource = { readonly kind: 'fallback'; } | { readonly kind: 'provider'; readonly provider: SessionTitleProviderId; readonly model?: SessionTitleModelIdentity; } | { readonly kind: 'user'; };"
662
640
  },
663
641
  {
664
642
  "name": "SkillInvocationSource",
@@ -673,12 +651,16 @@ export const TYPERT = {
673
651
  "declaration": "export interface SubagentCapabilities {\n readonly agentOptions: boolean;\n readonly outputSchema: boolean;\n readonly depthLimit: boolean;\n readonly toolFilter: boolean;\n readonly persona: boolean;\n}"
674
652
  },
675
653
  {
676
- "name": "SubagentCatalog",
677
- "declaration": "export interface SubagentCatalog {\n readonly entries: readonly SubagentListEntry[];\n readonly parentAvailable: boolean;\n}"
654
+ "name": "SubagentCatalogEntry",
655
+ "declaration": "export type SubagentCatalogEntry = { readonly id: SessionId; readonly createdAt: number; } & ({ readonly mode: 'one-shot'; readonly label?: string; } | { readonly mode: 'continuable'; readonly label: string; } | { readonly mode: 'unknown'; readonly label?: string; });"
678
656
  },
679
657
  {
680
658
  "name": "SubagentCatalogEvent",
681
- "declaration": "export type SubagentCatalogEvent = { readonly version: 0; readonly childId: SessionId; readonly childCreatedAt: number; } & ({ readonly mode: 'one-shot'; readonly label?: string; } | { readonly mode: 'continuable'; readonly label: string; });"
659
+ "declaration": "export type SubagentCatalogEvent = { readonly childId: SessionId; readonly childCreatedAt: number; } & (({ readonly version: 0; } & KnownCatalogMode) | ({ readonly version: 1; } & (KnownCatalogMode | { readonly mode: 'unknown'; readonly label?: string; })));"
660
+ },
661
+ {
662
+ "name": "SubagentCatalogRow",
663
+ "declaration": "export type SubagentCatalogRow = { readonly id: SessionId; readonly activity: 'running' | 'inactive'; } & ({ readonly mode: 'one-shot'; readonly label?: string; } | { readonly mode: 'continuable'; readonly label: string; });"
682
664
  },
683
665
  {
684
666
  "name": "SubagentDescendantListEntry",
@@ -702,7 +684,7 @@ export const TYPERT = {
702
684
  },
703
685
  {
704
686
  "name": "SubagentListEntry",
705
- "declaration": "export type SubagentListEntry = { readonly kind: 'child'; readonly id: SessionId; readonly activity: 'running' | 'inactive'; readonly hasChildren: boolean; } & ({ readonly mode: 'one-shot'; readonly label?: string; } | { readonly mode: 'continuable'; readonly label: string; }) | { readonly kind: 'diagnostic'; readonly id: SessionId; readonly reason: 'corrupt' | 'unsupported' | 'unavailable'; };"
687
+ "declaration": "export type SubagentListEntry = SubagentCatalogRow & { readonly kind: 'child'; readonly hasChildren: boolean; } | { readonly kind: 'diagnostic'; readonly id: SessionId; readonly reason: 'corrupt' | 'unsupported' | 'unavailable'; };"
706
688
  },
707
689
  {
708
690
  "name": "SubagentPromptReceipt",
@@ -722,7 +704,7 @@ export const TYPERT = {
722
704
  },
723
705
  {
724
706
  "name": "SubagentResult",
725
- "declaration": "export interface SubagentResult {\n readonly output: ContentBlock[];\n readonly structured?: unknown;\n readonly diagnostic?: string;\n readonly stopReason: SubagentStopReason;\n}"
707
+ "declaration": "export interface SubagentResult {\n readonly output: readonly ContentBlock[];\n readonly structured?: unknown;\n readonly diagnostic?: string;\n readonly stopReason: SubagentStopReason;\n}"
726
708
  },
727
709
  {
728
710
  "name": "SubagentRun",
@@ -750,7 +732,7 @@ export const TYPERT = {
750
732
  },
751
733
  {
752
734
  "name": "SurfaceEventType",
753
- "declaration": "export type SurfaceEventType = 'system/message' | 'user/message' | 'assistant/message' | 'tool/result';"
735
+ "declaration": "export type SurfaceEventType = 'system/message' | 'developer/message' | 'user/message' | 'assistant/message' | 'tool/result';"
754
736
  },
755
737
  {
756
738
  "name": "SurfaceIntent",
@@ -762,7 +744,11 @@ export const TYPERT = {
762
744
  },
763
745
  {
764
746
  "name": "SystemMessage",
765
- "declaration": "export interface SystemMessage extends Message {\n readonly role: 'system';\n readonly source: MessageSourceMap['plugin'];\n}"
747
+ "declaration": "export interface SystemMessage extends MessageBase {\n readonly role: 'system';\n readonly source: MessageSourceMap['system-prompt'];\n}"
748
+ },
749
+ {
750
+ "name": "SystemPromptMessageSource",
751
+ "declaration": "export interface SystemPromptMessageSource {\n kind: 'system-prompt';\n}"
766
752
  },
767
753
  {
768
754
  "name": "SystemPromptUpdate",
@@ -816,6 +802,10 @@ export const TYPERT = {
816
802
  "name": "TokenUsage",
817
803
  "declaration": "export interface TokenUsage {\n inputTokens: number;\n outputTokens: number;\n totalTokens?: number;\n cacheReadTokens?: number;\n cacheWriteTokens?: number;\n reasoningTokens?: number;\n}"
818
804
  },
805
+ {
806
+ "name": "ToolAdditionBlock",
807
+ "declaration": "export interface ToolAdditionBlock {\n type: 'tool-addition';\n toolName: string;\n tool?: never;\n}"
808
+ },
819
809
  {
820
810
  "name": "ToolCallBlock",
821
811
  "declaration": "export interface ToolCallBlock {\n type: 'tool-call';\n id: ToolCallId;\n name: string;\n arguments: string;\n}"
@@ -829,20 +819,20 @@ export const TYPERT = {
829
819
  "declaration": "export interface ToolMessageSource {\n kind: 'tool';\n callId: ToolCallId;\n}"
830
820
  },
831
821
  {
832
- "name": "ToolRestriction",
833
- "declaration": "export interface ToolRestriction {\n readonly allow?: readonly string[];\n readonly deny?: readonly string[];\n}"
822
+ "name": "ToolRemovalBlock",
823
+ "declaration": "export interface ToolRemovalBlock {\n type: 'tool-removal';\n toolName: string;\n}"
834
824
  },
835
825
  {
836
- "name": "ToolResultBlock",
837
- "declaration": "export interface ToolResultBlock {\n type: 'tool-result';\n toolCallId: ToolCallId;\n content: ContentBlock[];\n isError?: boolean;\n}"
826
+ "name": "ToolRestriction",
827
+ "declaration": "export interface ToolRestriction {\n readonly allow?: readonly string[];\n readonly deny?: readonly string[];\n}"
838
828
  },
839
829
  {
840
830
  "name": "ToolResultMessage",
841
- "declaration": "export interface ToolResultMessage extends Message {\n readonly role: 'user';\n readonly content: [ToolResultBlock];\n readonly source: ToolMessageSource;\n}"
831
+ "declaration": "export interface ToolResultMessage extends MessageBase {\n readonly role: 'tool';\n readonly source: ToolMessageSource;\n readonly toolCallId: ToolCallId;\n readonly isError?: boolean;\n}"
842
832
  },
843
833
  {
844
834
  "name": "ToolSchema",
845
- "declaration": "export interface ToolSchema {\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n}"
835
+ "declaration": "export interface ToolSchema {\n deferLoading?: true;\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n}"
846
836
  },
847
837
  {
848
838
  "name": "TurnEndCancelCause",
@@ -854,11 +844,11 @@ export const TYPERT = {
854
844
  },
855
845
  {
856
846
  "name": "TurnEndReasonMap",
857
- "declaration": "export interface TurnEndReasonMap {\n completed: { kind: 'completed'; };\n aborted: { kind: 'aborted'; reason: TurnEndCancelCause; };\n blocked: { kind: 'blocked'; };\n error: { kind: 'error'; error: LlmFailure; };\n 'max-tokens': { kind: 'max-tokens'; };\n interrupted: { kind: 'interrupted'; };\n}"
847
+ "declaration": "export interface TurnEndReasonMap {\n completed: { kind: 'completed'; };\n aborted: { kind: 'aborted'; reason: TurnEndCancelCause; };\n blocked: { kind: 'blocked'; };\n error: { kind: 'error'; error: LlmFailure; };\n 'max-tokens': { kind: 'max-tokens'; };\n interrupted: { kind: 'interrupted'; };\n forked: { kind: 'forked'; };\n}"
858
848
  },
859
849
  {
860
850
  "name": "UserMessage",
861
- "declaration": "export interface UserMessage extends Message {\n readonly role: 'user';\n}"
851
+ "declaration": "export interface UserMessage extends MessageBase {\n readonly role: 'user';\n}"
862
852
  }
863
853
  ]
864
854
  }
@@ -4,17 +4,15 @@ import type {
4
4
  TypertRemoteContribution,
5
5
  } from '@deepseek-ai/dsh-typert-protocol'
6
6
  import type { SessionId } from '@deepseek-ai/dsh-session/types'
7
- import type { SubagentCatalog, SubagentInterruptReceipt, SubagentPromptReceipt, SubagentPromptRequest } from '@deepseek-ai/dsh-subagent/client'
7
+ import type { SubagentInterruptReceipt, SubagentPromptReceipt, SubagentPromptRequest } from '@deepseek-ai/dsh-subagent/client'
8
8
 
9
9
  declare module '@deepseek-ai/dsh-typert-protocol' {
10
10
  interface TypertRemoteNamespace$7375626167656e7473 {
11
11
  interruptByParent: (childSessionId: SessionId, parentSessionId: SessionId, mode: 'continuable') => Promise<RemoteResult<SubagentInterruptReceipt>>
12
- list: (parentSessionId: SessionId, signal?: AbortSignal) => Promise<RemoteResult<SubagentCatalog>>
13
12
  prompt: (request: SubagentPromptRequest, signal?: AbortSignal) => Promise<RemoteResult<SubagentPromptReceipt>>
14
13
  }
15
14
  interface TypertRemoteMap {
16
15
  'subagents/interruptByParent': (childSessionId: SessionId, parentSessionId: SessionId, mode: 'continuable') => Promise<RemoteResult<SubagentInterruptReceipt>>
17
- 'subagents/list': (parentSessionId: SessionId, signal?: AbortSignal) => Promise<RemoteResult<SubagentCatalog>>
18
16
  'subagents/prompt': (request: SubagentPromptRequest, signal?: AbortSignal) => Promise<RemoteResult<SubagentPromptReceipt>>
19
17
  }
20
18
  interface TypertRemoteNamespaceMap {