@deepseek-ai/dsh-api-session-controller 0.1.6-alpha.2 → 0.1.7-alpha.1

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 (36) hide show
  1. package/README.i18n.yaml +2 -2
  2. package/README.md +31 -8
  3. package/README.zh.md +31 -8
  4. package/lib/client.js +603 -515
  5. package/lib/index.js +299 -137
  6. package/lib/typert.host.js +373 -183
  7. package/lib/typert.remote-client.d.ts +10 -5
  8. package/lib/typert.remote-client.js +216 -124
  9. package/lib/types/archived-session-gate.d.ts +30 -0
  10. package/lib/types/archived-session-gate.js +52 -0
  11. package/lib/types/client/contract/session.d.ts +2 -0
  12. package/lib/types/client/contract/sessions.d.ts +11 -16
  13. package/lib/types/client/index.d.ts +1 -1
  14. package/lib/types/client/sessions/lineage.d.ts +4 -1
  15. package/lib/types/client/sessions/lineage.js +2 -1
  16. package/lib/types/client/sessions/manager.d.ts +66 -59
  17. package/lib/types/client/sessions/manager.js +249 -277
  18. package/lib/types/client/sessions/projection-store.d.ts +32 -13
  19. package/lib/types/client/sessions/projection-store.js +45 -13
  20. package/lib/types/client/sessions/remotes.d.ts +1 -2
  21. package/lib/types/client/sessions/service.d.ts +23 -35
  22. package/lib/types/client/sessions/service.js +35 -47
  23. package/lib/types/client/sessions/session.d.ts +18 -16
  24. package/lib/types/client/sessions/session.js +112 -50
  25. package/lib/types/commands.d.ts +4 -2
  26. package/lib/types/commands.js +72 -36
  27. package/lib/types/control.d.ts +2 -4
  28. package/lib/types/control.js +2 -44
  29. package/lib/types/history.js +1 -1
  30. package/lib/types/index.d.ts +32 -5
  31. package/lib/types/index.js +117 -13
  32. package/lib/types/list.js +24 -15
  33. package/lib/types/skill-catalog.js +60 -50
  34. package/lib/types/types.d.ts +37 -23
  35. package/lib/types/types.js +0 -1
  36. package/package.json +71 -76
@@ -1,46 +1,6 @@
1
1
  /* Generated by @deepseek-ai/dsh-typert-generator from the Host FaceModel — do not edit. */
2
2
  import { z } from 'zod'
3
3
 
4
- let ContentBlockRemoteCodec$schema$value
5
- const ContentBlockRemoteCodec$schema = () => (ContentBlockRemoteCodec$schema$value ??= z.union([z.object({
6
- 'type': z.literal("file"),
7
- 'attachment': z.object({
8
- 'attachmentId': z.intersection(z.string(), z.unknown()),
9
- 'name': z.string(),
10
- 'bytes': z.number(),
11
- }),
12
- }), z.object({
13
- 'type': z.literal("text"),
14
- 'text': z.string(),
15
- }), z.object({
16
- 'type': z.literal("image"),
17
- 'attachment': z.object({
18
- 'attachmentId': z.intersection(z.string(), z.unknown()),
19
- 'mediaType': z.union([z.literal("image/png"), z.literal("image/jpeg"), z.literal("image/webp"), z.literal("image/gif")]),
20
- 'bytes': z.number(),
21
- 'width': z.number(),
22
- 'height': z.number(),
23
- 'name': z.string().optional(),
24
- 'originalDimensions': z.object({
25
- 'width': z.number(),
26
- 'height': z.number(),
27
- }).optional(),
28
- }),
29
- 'offloaded': z.literal(true).optional(),
30
- }), z.object({
31
- 'type': z.literal("reasoning"),
32
- 'text': z.string(),
33
- }), z.object({
34
- 'type': z.literal("tool-call"),
35
- 'id': z.intersection(z.string(), z.unknown()),
36
- 'name': z.string(),
37
- 'arguments': z.string(),
38
- }), z.object({
39
- 'type': z.literal("tool-result"),
40
- 'toolCallId': z.intersection(z.string(), z.unknown()),
41
- 'content': z.array(z.lazy(() => ContentBlockRemoteCodec$schema())),
42
- 'isError': z.boolean().optional(),
43
- })]))
44
4
  let JsonValueRemoteCodec$schema$value
45
5
  const JsonValueRemoteCodec$schema = () => (JsonValueRemoteCodec$schema$value ??= z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema()))]))
46
6
  let JsonValueRemoteCodec$schema2$value
@@ -49,6 +9,8 @@ let JsonValueRemoteCodec$schema3$value
49
9
  const JsonValueRemoteCodec$schema3 = () => (JsonValueRemoteCodec$schema3$value ??= z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema3())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema3()))]))
50
10
  let JsonValueRemoteCodec$schema4$value
51
11
  const JsonValueRemoteCodec$schema4 = () => (JsonValueRemoteCodec$schema4$value ??= z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema4())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema4()))]))
12
+ let JsonValueRemoteCodec$schema5$value
13
+ const JsonValueRemoteCodec$schema5 = () => (JsonValueRemoteCodec$schema5$value ??= z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema5())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema5()))]))
52
14
  let _deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_0$schema$value
53
15
  const _deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
54
16
  let _deepseek_ai_dsh_api_session_controller_fileReferences_list_parameter_1$schema$value
@@ -93,27 +55,18 @@ let _deepseek_ai_dsh_api_session_controller_session_control_result$schema$value
93
55
  const _deepseek_ai_dsh_api_session_controller_session_control_result$schema = () => (_deepseek_ai_dsh_api_session_controller_session_control_result$schema$value ??= z.union([z.object({
94
56
  'type': z.literal("baseline").readonly(),
95
57
  'value': z.object({
96
- 'jobs': z.record(z.intersection(z.string(), z.unknown()), z.array(z.object({
97
- 'id': z.intersection(z.string(), z.unknown()).readonly(),
98
- 'kind': z.string().readonly(),
99
- 'label': z.string().readonly(),
100
- 'status': z.union([z.literal("completed"), z.literal("running"), z.literal("stopping"), z.literal("killed"), z.literal("failed")]).readonly(),
101
- 'detail': z.string().readonly().optional(),
102
- 'startedAt': z.number().readonly(),
103
- 'finishedAt': z.number().readonly().optional(),
104
- }))).readonly().readonly(),
105
58
  'projections': z.record(z.intersection(z.string(), z.unknown()), z.object({
106
59
  'asOfSeq': z.number().readonly(),
107
60
  'values': z.intersection(z.object({
108
61
  'inbox': z.object({
109
- 'next-turn': z.array(z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema4())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema4()))])).readonly(),
110
- 'next-step': z.array(z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema4())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema4()))])).readonly(),
62
+ 'next-turn': z.array(z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema5())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema5()))])).readonly(),
63
+ 'next-step': z.array(z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema5())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema5()))])).readonly(),
111
64
  }).optional(),
112
65
  'agentPreset': z.union([z.literal(null), z.string()]).optional(),
113
66
  'title': z.union([z.literal(null), z.string()]).optional(),
114
67
  'todos': z.union([z.literal(null), z.array(z.object({
115
68
  'content': z.string(),
116
- 'status': z.union([z.literal("pending"), z.literal("in_progress"), z.literal("completed")]),
69
+ 'status': z.union([z.literal("completed"), z.literal("pending"), z.literal("in_progress")]),
117
70
  }))]).optional(),
118
71
  'sessionListMetadata': z.object({
119
72
  'blank': z.boolean().readonly(),
@@ -154,6 +107,12 @@ const _deepseek_ai_dsh_api_session_controller_session_control_result$schema = ()
154
107
  }), z.object({
155
108
  'mode': z.literal("continuable").readonly(),
156
109
  'label': z.string().readonly(),
110
+ })), z.intersection(z.object({
111
+ 'id': z.intersection(z.string(), z.unknown()).readonly(),
112
+ 'createdAt': z.number().readonly(),
113
+ }), z.object({
114
+ 'mode': z.literal("unknown").readonly(),
115
+ 'label': z.string().readonly().optional(),
157
116
  }))])).optional(),
158
117
  'subagentTiming': z.object({
159
118
  'settledMs': z.number(),
@@ -161,6 +120,7 @@ const _deepseek_ai_dsh_api_session_controller_session_control_result$schema = ()
161
120
  'since': z.number(),
162
121
  'through': z.number(),
163
122
  }).optional(),
123
+ 'lastTurnCompleted': z.boolean().optional(),
164
124
  }).optional(),
165
125
  'subagent': z.union([z.literal(null), z.object({
166
126
  'mode': z.literal("one-shot"),
@@ -187,27 +147,15 @@ const _deepseek_ai_dsh_api_session_controller_session_control_result$schema = ()
187
147
  'createdAt': z.number().readonly(),
188
148
  'updatedAt': z.number().readonly(),
189
149
  })]).optional(),
190
- }), z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema4())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema4()))])).readonly()).readonly(),
150
+ }), z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema5())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema5()))])).readonly()).readonly(),
191
151
  })).readonly().readonly(),
192
152
  }).readonly(),
193
- }), z.object({
194
- 'type': z.literal("jobs").readonly(),
195
- 'sessionId': z.intersection(z.string(), z.unknown()).readonly(),
196
- 'jobs': z.array(z.object({
197
- 'id': z.intersection(z.string(), z.unknown()).readonly(),
198
- 'kind': z.string().readonly(),
199
- 'label': z.string().readonly(),
200
- 'status': z.union([z.literal("completed"), z.literal("running"), z.literal("stopping"), z.literal("killed"), z.literal("failed")]).readonly(),
201
- 'detail': z.string().readonly().optional(),
202
- 'startedAt': z.number().readonly(),
203
- 'finishedAt': z.number().readonly().optional(),
204
- })).readonly(),
205
153
  }), z.intersection(z.object({
206
154
  'type': z.literal("projection").readonly(),
207
155
  }), z.object({
208
156
  'sessionId': z.intersection(z.string(), z.unknown()).readonly(),
209
157
  'key': z.string().readonly(),
210
- 'value': z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema4())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema4()))]).readonly(),
158
+ 'value': z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema5())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema5()))]).readonly(),
211
159
  'seq': z.number().readonly(),
212
160
  }))]))
213
161
  let _deepseek_ai_dsh_api_session_controller_session_create_parameter_0$schema$value
@@ -231,7 +179,7 @@ const _deepseek_ai_dsh_api_session_controller_session_follow_parameter_0$schema
231
179
  'kind': z.literal("subagent").readonly(),
232
180
  'parentSessionId': z.intersection(z.string(), z.unknown()).readonly(),
233
181
  'childSessionId': z.intersection(z.string(), z.unknown()).readonly(),
234
- 'mode': z.union([z.literal("one-shot"), z.literal("continuable")]).readonly(),
182
+ 'mode': z.union([z.literal("one-shot"), z.literal("continuable"), z.literal("unknown")]).readonly(),
235
183
  })]).readonly(),
236
184
  'maxMessages': z.number().readonly().optional(),
237
185
  'assistantStream': z.literal(true).readonly().optional(),
@@ -286,7 +234,7 @@ const _deepseek_ai_dsh_api_session_controller_session_follow_result$schema = ()
286
234
  'title': z.union([z.literal(null), z.string()]).optional(),
287
235
  'todos': z.union([z.literal(null), z.array(z.object({
288
236
  'content': z.string(),
289
- 'status': z.union([z.literal("pending"), z.literal("in_progress"), z.literal("completed")]),
237
+ 'status': z.union([z.literal("completed"), z.literal("pending"), z.literal("in_progress")]),
290
238
  }))]).optional(),
291
239
  'sessionListMetadata': z.object({
292
240
  'blank': z.boolean().readonly(),
@@ -327,6 +275,12 @@ const _deepseek_ai_dsh_api_session_controller_session_follow_result$schema = ()
327
275
  }), z.object({
328
276
  'mode': z.literal("continuable").readonly(),
329
277
  'label': z.string().readonly(),
278
+ })), z.intersection(z.object({
279
+ 'id': z.intersection(z.string(), z.unknown()).readonly(),
280
+ 'createdAt': z.number().readonly(),
281
+ }), z.object({
282
+ 'mode': z.literal("unknown").readonly(),
283
+ 'label': z.string().readonly().optional(),
330
284
  }))])).optional(),
331
285
  'subagentTiming': z.object({
332
286
  'settledMs': z.number(),
@@ -334,6 +288,7 @@ const _deepseek_ai_dsh_api_session_controller_session_follow_result$schema = ()
334
288
  'since': z.number(),
335
289
  'through': z.number(),
336
290
  }).optional(),
291
+ 'lastTurnCompleted': z.boolean().optional(),
337
292
  }).optional(),
338
293
  'subagent': z.union([z.literal(null), z.object({
339
294
  'mode': z.literal("one-shot"),
@@ -419,6 +374,7 @@ const _deepseek_ai_dsh_api_session_controller_session_list_parameter_0$schema =
419
374
  let _deepseek_ai_dsh_api_session_controller_session_list_result$schema$value
420
375
  const _deepseek_ai_dsh_api_session_controller_session_list_result$schema = () => (_deepseek_ai_dsh_api_session_controller_session_list_result$schema$value ??= z.object({
421
376
  'items': z.array(z.object({
377
+ 'agentAvailable': z.boolean().readonly(),
422
378
  'sessionId': z.intersection(z.string(), z.unknown()).readonly(),
423
379
  'updatedAt': z.number().readonly(),
424
380
  'running': z.boolean().readonly(),
@@ -427,6 +383,7 @@ const _deepseek_ai_dsh_api_session_controller_session_list_result$schema = () =>
427
383
  'origin': z.literal("subagent").readonly().optional(),
428
384
  'cwd': z.string().readonly().optional(),
429
385
  'projections': z.object({
386
+ 'kind': z.union([z.literal("cached"), z.literal("sequenced")]).readonly(),
430
387
  'asOfSeq': z.number().readonly(),
431
388
  'values': z.intersection(z.object({
432
389
  'inbox': z.object({
@@ -437,7 +394,7 @@ const _deepseek_ai_dsh_api_session_controller_session_list_result$schema = () =>
437
394
  'title': z.union([z.literal(null), z.string()]).optional(),
438
395
  'todos': z.union([z.literal(null), z.array(z.object({
439
396
  'content': z.string(),
440
- 'status': z.union([z.literal("pending"), z.literal("in_progress"), z.literal("completed")]),
397
+ 'status': z.union([z.literal("completed"), z.literal("pending"), z.literal("in_progress")]),
441
398
  }))]).optional(),
442
399
  'sessionListMetadata': z.object({
443
400
  'blank': z.boolean().readonly(),
@@ -478,6 +435,12 @@ const _deepseek_ai_dsh_api_session_controller_session_list_result$schema = () =>
478
435
  }), z.object({
479
436
  'mode': z.literal("continuable").readonly(),
480
437
  'label': z.string().readonly(),
438
+ })), z.intersection(z.object({
439
+ 'id': z.intersection(z.string(), z.unknown()).readonly(),
440
+ 'createdAt': z.number().readonly(),
441
+ }), z.object({
442
+ 'mode': z.literal("unknown").readonly(),
443
+ 'label': z.string().readonly().optional(),
481
444
  }))])).optional(),
482
445
  'subagentTiming': z.object({
483
446
  'settledMs': z.number(),
@@ -485,6 +448,7 @@ const _deepseek_ai_dsh_api_session_controller_session_list_result$schema = () =>
485
448
  'since': z.number(),
486
449
  'through': z.number(),
487
450
  }).optional(),
451
+ 'lastTurnCompleted': z.boolean().optional(),
488
452
  }).optional(),
489
453
  'subagent': z.union([z.literal(null), z.object({
490
454
  'mode': z.literal("one-shot"),
@@ -549,6 +513,7 @@ const _deepseek_ai_dsh_api_session_controller_session_modelCatalog_result$schema
549
513
  let _deepseek_ai_dsh_api_session_controller_session_openWorkspacePath_parameter_0$schema$value
550
514
  const _deepseek_ai_dsh_api_session_controller_session_openWorkspacePath_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_session_openWorkspacePath_parameter_0$schema$value ??= z.object({
551
515
  'action': z.literal("reveal").readonly().optional(),
516
+ 'application': z.string().readonly().optional(),
552
517
  'path': z.string().readonly(),
553
518
  }))
554
519
  let _deepseek_ai_dsh_api_session_controller_session_openWorkspacePath_result$schema$value
@@ -564,7 +529,7 @@ const _deepseek_ai_dsh_api_session_controller_session_page_parameter_0$schema =
564
529
  'kind': z.literal("subagent").readonly(),
565
530
  'parentSessionId': z.intersection(z.string(), z.unknown()).readonly(),
566
531
  'childSessionId': z.intersection(z.string(), z.unknown()).readonly(),
567
- 'mode': z.union([z.literal("one-shot"), z.literal("continuable")]).readonly(),
532
+ 'mode': z.union([z.literal("one-shot"), z.literal("continuable"), z.literal("unknown")]).readonly(),
568
533
  })]).readonly(),
569
534
  'throughSeq': z.number().readonly(),
570
535
  'beforeSeq': z.number().readonly().optional(),
@@ -586,6 +551,105 @@ const _deepseek_ai_dsh_api_session_controller_session_page_result$schema = () =>
586
551
  })).readonly(),
587
552
  'hasMore': z.boolean().readonly(),
588
553
  }))
554
+ let _deepseek_ai_dsh_api_session_controller_session_projections_parameter_0$schema$value
555
+ const _deepseek_ai_dsh_api_session_controller_session_projections_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_session_projections_parameter_0$schema$value ??= z.object({
556
+ 'sessionId': z.intersection(z.string(), z.unknown()).readonly(),
557
+ }))
558
+ let _deepseek_ai_dsh_api_session_controller_session_projections_result$schema$value
559
+ const _deepseek_ai_dsh_api_session_controller_session_projections_result$schema = () => (_deepseek_ai_dsh_api_session_controller_session_projections_result$schema$value ??= z.union([z.literal(null), z.object({
560
+ 'asOfSeq': z.number().readonly(),
561
+ 'values': z.intersection(z.object({
562
+ 'inbox': z.object({
563
+ 'next-turn': z.array(z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema4())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema4()))])).readonly(),
564
+ 'next-step': z.array(z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema4())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema4()))])).readonly(),
565
+ }).optional(),
566
+ 'agentPreset': z.union([z.literal(null), z.string()]).optional(),
567
+ 'title': z.union([z.literal(null), z.string()]).optional(),
568
+ 'todos': z.union([z.literal(null), z.array(z.object({
569
+ 'content': z.string(),
570
+ 'status': z.union([z.literal("completed"), z.literal("pending"), z.literal("in_progress")]),
571
+ }))]).optional(),
572
+ 'sessionListMetadata': z.object({
573
+ 'blank': z.boolean().readonly(),
574
+ 'lastPromptAt': z.union([z.literal(null), z.number()]).readonly(),
575
+ }).optional(),
576
+ 'imageLimits': z.object({
577
+ 'maxImageBytes': z.number(),
578
+ 'maxImagesPerMessage': z.number(),
579
+ 'maxMessageImageBytes': z.number(),
580
+ 'maxImagePixels': z.number(),
581
+ 'maxImageDimension': z.number(),
582
+ 'mediaTypes': z.array(z.union([z.literal("image/png"), z.literal("image/jpeg"), z.literal("image/webp"), z.literal("image/gif")])),
583
+ }).optional(),
584
+ 'modelSelection': z.object({
585
+ 'lastUsed': z.union([z.literal(null), z.object({
586
+ 'provider': z.string().readonly(),
587
+ 'model': z.string().readonly(),
588
+ 'reasoningEffort': z.string().readonly().optional(),
589
+ })]).readonly(),
590
+ 'next': z.union([z.literal(null), z.object({
591
+ 'provider': z.string().readonly(),
592
+ 'model': z.string().readonly(),
593
+ 'reasoningEffort': z.string().readonly().optional(),
594
+ })]).readonly(),
595
+ }).optional(),
596
+ 'permissions': z.object({
597
+ 'currentValue': z.string(),
598
+ }).optional(),
599
+ 'subagentCatalog': z.array(z.union([z.intersection(z.object({
600
+ 'id': z.intersection(z.string(), z.unknown()).readonly(),
601
+ 'createdAt': z.number().readonly(),
602
+ }), z.object({
603
+ 'mode': z.literal("one-shot").readonly(),
604
+ 'label': z.string().readonly().optional(),
605
+ })), z.intersection(z.object({
606
+ 'id': z.intersection(z.string(), z.unknown()).readonly(),
607
+ 'createdAt': z.number().readonly(),
608
+ }), z.object({
609
+ 'mode': z.literal("continuable").readonly(),
610
+ 'label': z.string().readonly(),
611
+ })), z.intersection(z.object({
612
+ 'id': z.intersection(z.string(), z.unknown()).readonly(),
613
+ 'createdAt': z.number().readonly(),
614
+ }), z.object({
615
+ 'mode': z.literal("unknown").readonly(),
616
+ 'label': z.string().readonly().optional(),
617
+ }))])).optional(),
618
+ 'subagentTiming': z.object({
619
+ 'settledMs': z.number(),
620
+ 'active': z.object({
621
+ 'since': z.number(),
622
+ 'through': z.number(),
623
+ }).optional(),
624
+ 'lastTurnCompleted': z.boolean().optional(),
625
+ }).optional(),
626
+ 'subagent': z.union([z.literal(null), z.object({
627
+ 'mode': z.literal("one-shot"),
628
+ 'label': z.string().optional(),
629
+ 'seq': z.intersection(z.number(), z.unknown()),
630
+ }), z.object({
631
+ 'mode': z.literal("continuable"),
632
+ 'label': z.string(),
633
+ 'seq': z.intersection(z.number(), z.unknown()),
634
+ })]).optional(),
635
+ 'goal': z.union([z.literal(null), z.object({
636
+ 'goal': z.object({
637
+ 'objective': z.string().readonly(),
638
+ 'phase': z.union([z.literal("active"), z.literal("paused"), z.literal("blocked"), z.literal("complete")]).readonly(),
639
+ 'blockedReason': z.object({
640
+ 'code': z.string().readonly(),
641
+ 'message': z.string().readonly(),
642
+ }).readonly().optional(),
643
+ 'maxGoalRounds': z.number().readonly(),
644
+ 'id': z.intersection(z.string(), z.unknown()).readonly(),
645
+ 'revision': z.number().readonly(),
646
+ }).readonly(),
647
+ 'roundsStarted': z.number().readonly(),
648
+ 'createdAt': z.number().readonly(),
649
+ 'updatedAt': z.number().readonly(),
650
+ })]).optional(),
651
+ }), z.record(z.string(), z.union([z.literal(null), z.string(), z.number(), z.literal(false), z.literal(true), z.array(z.lazy(() => JsonValueRemoteCodec$schema4())), z.record(z.string(), z.lazy(() => JsonValueRemoteCodec$schema4()))])).readonly()).readonly(),
652
+ })]))
589
653
  let _deepseek_ai_dsh_api_session_controller_session_prompt_parameter_0$schema$value
590
654
  const _deepseek_ai_dsh_api_session_controller_session_prompt_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_session_prompt_parameter_0$schema$value ??= z.object({
591
655
  'requestId': z.intersection(z.string(), z.unknown()).readonly(),
@@ -652,45 +716,10 @@ const _deepseek_ai_dsh_api_session_controller_session_updateQueue_parameter_0$sc
652
716
  'itemId': z.intersection(z.string(), z.unknown()).readonly(),
653
717
  'action': z.union([z.object({
654
718
  'kind': z.literal("edit").readonly(),
655
- 'content': z.array(z.union([z.object({
656
- 'type': z.literal("file"),
657
- 'attachment': z.object({
658
- 'attachmentId': z.intersection(z.string(), z.unknown()),
659
- 'name': z.string(),
660
- 'bytes': z.number(),
661
- }),
662
- }), z.object({
719
+ 'content': z.array(z.object({
663
720
  'type': z.literal("text"),
664
721
  'text': z.string(),
665
- }), z.object({
666
- 'type': z.literal("image"),
667
- 'attachment': z.object({
668
- 'attachmentId': z.intersection(z.string(), z.unknown()),
669
- 'mediaType': z.union([z.literal("image/png"), z.literal("image/jpeg"), z.literal("image/webp"), z.literal("image/gif")]),
670
- 'bytes': z.number(),
671
- 'width': z.number(),
672
- 'height': z.number(),
673
- 'name': z.string().optional(),
674
- 'originalDimensions': z.object({
675
- 'width': z.number(),
676
- 'height': z.number(),
677
- }).optional(),
678
- }),
679
- 'offloaded': z.literal(true).optional(),
680
- }), z.object({
681
- 'type': z.literal("reasoning"),
682
- 'text': z.string(),
683
- }), z.object({
684
- 'type': z.literal("tool-call"),
685
- 'id': z.intersection(z.string(), z.unknown()),
686
- 'name': z.string(),
687
- 'arguments': z.string(),
688
- }), z.object({
689
- 'type': z.literal("tool-result"),
690
- 'toolCallId': z.intersection(z.string(), z.unknown()),
691
- 'content': z.array(z.lazy(() => ContentBlockRemoteCodec$schema())),
692
- 'isError': z.boolean().optional(),
693
- })])).readonly(),
722
+ })).readonly(),
694
723
  }), z.object({
695
724
  'kind': z.literal("remove").readonly(),
696
725
  }), z.object({
@@ -701,6 +730,17 @@ let _deepseek_ai_dsh_api_session_controller_session_updateQueue_result$schema$va
701
730
  const _deepseek_ai_dsh_api_session_controller_session_updateQueue_result$schema = () => (_deepseek_ai_dsh_api_session_controller_session_updateQueue_result$schema$value ??= z.object({
702
731
  'accepted': z.literal(true).readonly(),
703
732
  }))
733
+ let _deepseek_ai_dsh_api_session_controller_session_workspacePathApplications_parameter_0$schema$value
734
+ const _deepseek_ai_dsh_api_session_controller_session_workspacePathApplications_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_session_workspacePathApplications_parameter_0$schema$value ??= z.object({
735
+ 'path': z.string().readonly(),
736
+ }))
737
+ let _deepseek_ai_dsh_api_session_controller_session_workspacePathApplications_result$schema$value
738
+ const _deepseek_ai_dsh_api_session_controller_session_workspacePathApplications_result$schema = () => (_deepseek_ai_dsh_api_session_controller_session_workspacePathApplications_result$schema$value ??= z.array(z.object({
739
+ 'id': z.string().readonly(),
740
+ 'name': z.string().readonly(),
741
+ 'default': z.boolean().readonly(),
742
+ 'icon': z.union([z.literal(null), z.string()]).readonly(),
743
+ })))
704
744
  let _deepseek_ai_dsh_api_session_controller_skills_list_parameter_0$schema$value
705
745
  const _deepseek_ai_dsh_api_session_controller_skills_list_parameter_0$schema = () => (_deepseek_ai_dsh_api_session_controller_skills_list_parameter_0$schema$value ??= z.object({
706
746
  'sessionId': z.intersection(z.string(), z.unknown()).readonly(),
@@ -783,7 +823,7 @@ export const TYPERT_REMOTE = {
783
823
  typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionAttachmentValue',
784
824
  create: _deepseek_ai_dsh_api_session_controller_session_attachment_result$schema,
785
825
  },
786
- sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":358,"column":3},
826
+ sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":419,"column":3},
787
827
  },
788
828
  {
789
829
  id: '@deepseek-ai/dsh-api-session-controller#session/cancel',
@@ -808,7 +848,7 @@ export const TYPERT_REMOTE = {
808
848
  typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionCancelValue',
809
849
  create: _deepseek_ai_dsh_api_session_controller_session_cancel_result$schema,
810
850
  },
811
- sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":378,"column":3},
851
+ sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":439,"column":3},
812
852
  },
813
853
  {
814
854
  id: '@deepseek-ai/dsh-api-session-controller#session/canOpenWorkspacePath',
@@ -823,7 +863,7 @@ export const TYPERT_REMOTE = {
823
863
  typeSymbol: '@deepseek-ai/dsh-api-session-controller#session/canOpenWorkspacePath:result',
824
864
  create: _deepseek_ai_dsh_api_session_controller_session_canOpenWorkspacePath_result$schema,
825
865
  },
826
- sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":273,"column":3},
866
+ sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":301,"column":3},
827
867
  },
828
868
  {
829
869
  id: '@deepseek-ai/dsh-api-session-controller#session/control',
@@ -840,7 +880,7 @@ export const TYPERT_REMOTE = {
840
880
  typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionControlFrame',
841
881
  create: _deepseek_ai_dsh_api_session_controller_session_control_result$schema,
842
882
  },
843
- sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":411,"column":3},
883
+ sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":502,"column":3},
844
884
  },
845
885
  {
846
886
  id: '@deepseek-ai/dsh-api-session-controller#session/create',
@@ -865,7 +905,7 @@ export const TYPERT_REMOTE = {
865
905
  typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionCreateValue',
866
906
  create: _deepseek_ai_dsh_api_session_controller_session_create_result$schema,
867
907
  },
868
- sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":245,"column":3},
908
+ sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":273,"column":3},
869
909
  },
870
910
  {
871
911
  id: '@deepseek-ai/dsh-api-session-controller#session/follow',
@@ -892,7 +932,7 @@ export const TYPERT_REMOTE = {
892
932
  typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionFollowFrame',
893
933
  create: _deepseek_ai_dsh_api_session_controller_session_follow_result$schema,
894
934
  },
895
- sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":401,"column":3},
935
+ sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":462,"column":3},
896
936
  },
897
937
  {
898
938
  id: '@deepseek-ai/dsh-api-session-controller#session/fork',
@@ -917,7 +957,7 @@ export const TYPERT_REMOTE = {
917
957
  typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionForkValue',
918
958
  create: _deepseek_ai_dsh_api_session_controller_session_fork_result$schema,
919
959
  },
920
- sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":336,"column":3},
960
+ sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":397,"column":3},
921
961
  },
922
962
  {
923
963
  id: '@deepseek-ai/dsh-api-session-controller#session/list',
@@ -943,7 +983,7 @@ export const TYPERT_REMOTE = {
943
983
  typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionListValue',
944
984
  create: _deepseek_ai_dsh_api_session_controller_session_list_result$schema,
945
985
  },
946
- sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":224,"column":9},
986
+ sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":252,"column":9},
947
987
  },
948
988
  {
949
989
  id: '@deepseek-ai/dsh-api-session-controller#session/modelCatalog',
@@ -958,7 +998,7 @@ export const TYPERT_REMOTE = {
958
998
  typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#ModelCatalog',
959
999
  create: _deepseek_ai_dsh_api_session_controller_session_modelCatalog_result$schema,
960
1000
  },
961
- sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":264,"column":3},
1001
+ sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":292,"column":3},
962
1002
  },
963
1003
  {
964
1004
  id: '@deepseek-ai/dsh-api-session-controller#session/openWorkspacePath',
@@ -984,7 +1024,7 @@ export const TYPERT_REMOTE = {
984
1024
  typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionOpenWorkspacePathValue',
985
1025
  create: _deepseek_ai_dsh_api_session_controller_session_openWorkspacePath_result$schema,
986
1026
  },
987
- sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":294,"column":9},
1027
+ sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":322,"column":9},
988
1028
  },
989
1029
  {
990
1030
  id: '@deepseek-ai/dsh-api-session-controller#session/page',
@@ -1010,7 +1050,33 @@ export const TYPERT_REMOTE = {
1010
1050
  typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionPage',
1011
1051
  create: _deepseek_ai_dsh_api_session_controller_session_page_result$schema,
1012
1052
  },
1013
- sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":389,"column":3},
1053
+ sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":450,"column":3},
1054
+ },
1055
+ {
1056
+ id: '@deepseek-ai/dsh-api-session-controller#session/projections',
1057
+ service: 'sessionController',
1058
+ namespace: 'session',
1059
+ method: 'projections',
1060
+ invocation: { kind: 'direct' },
1061
+ parameters: [
1062
+ {
1063
+ name: 'request',
1064
+ wire: 'request',
1065
+ source: 'json',
1066
+ codec: {
1067
+ mode: 'strict',
1068
+ typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionProjectionsRequest',
1069
+ create: _deepseek_ai_dsh_api_session_controller_session_projections_parameter_0$schema,
1070
+ },
1071
+ },
1072
+ ],
1073
+ cancellation: { parameter: 'signal' },
1074
+ result: {
1075
+ mode: 'strict',
1076
+ typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionProjectionsValue',
1077
+ create: _deepseek_ai_dsh_api_session_controller_session_projections_result$schema,
1078
+ },
1079
+ sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":473,"column":9},
1014
1080
  },
1015
1081
  {
1016
1082
  id: '@deepseek-ai/dsh-api-session-controller#session/prompt',
@@ -1036,7 +1102,7 @@ export const TYPERT_REMOTE = {
1036
1102
  typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionPromptValue',
1037
1103
  create: _deepseek_ai_dsh_api_session_controller_session_prompt_result$schema,
1038
1104
  },
1039
- sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":347,"column":3},
1105
+ sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":408,"column":3},
1040
1106
  },
1041
1107
  {
1042
1108
  id: '@deepseek-ai/dsh-api-session-controller#session/rename',
@@ -1061,7 +1127,7 @@ export const TYPERT_REMOTE = {
1061
1127
  typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionRenameValue',
1062
1128
  create: _deepseek_ai_dsh_api_session_controller_session_rename_result$schema,
1063
1129
  },
1064
- sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":326,"column":3},
1130
+ sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":385,"column":3},
1065
1131
  },
1066
1132
  {
1067
1133
  id: '@deepseek-ai/dsh-api-session-controller#session/search',
@@ -1087,7 +1153,7 @@ export const TYPERT_REMOTE = {
1087
1153
  typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionSearchValue',
1088
1154
  create: _deepseek_ai_dsh_api_session_controller_session_search_result$schema,
1089
1155
  },
1090
- sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":235,"column":3},
1156
+ sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":263,"column":3},
1091
1157
  },
1092
1158
  {
1093
1159
  id: '@deepseek-ai/dsh-api-session-controller#session/selectModel',
@@ -1112,7 +1178,7 @@ export const TYPERT_REMOTE = {
1112
1178
  typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionSelectModelValue',
1113
1179
  create: _deepseek_ai_dsh_api_session_controller_session_selectModel_result$schema,
1114
1180
  },
1115
- sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":255,"column":3},
1181
+ sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":283,"column":3},
1116
1182
  },
1117
1183
  {
1118
1184
  id: '@deepseek-ai/dsh-api-session-controller#session/updateQueue',
@@ -1137,7 +1203,33 @@ export const TYPERT_REMOTE = {
1137
1203
  typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SessionUpdateQueueValue',
1138
1204
  create: _deepseek_ai_dsh_api_session_controller_session_updateQueue_result$schema,
1139
1205
  },
1140
- sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":368,"column":3},
1206
+ sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":429,"column":3},
1207
+ },
1208
+ {
1209
+ id: '@deepseek-ai/dsh-api-session-controller#session/workspacePathApplications',
1210
+ service: 'sessionController',
1211
+ namespace: 'session',
1212
+ method: 'workspacePathApplications',
1213
+ invocation: { kind: 'direct' },
1214
+ parameters: [
1215
+ {
1216
+ name: 'request',
1217
+ wire: 'request',
1218
+ source: 'json',
1219
+ codec: {
1220
+ mode: 'strict',
1221
+ typeSymbol: '@deepseek-ai/dsh-api-session-controller#session/workspacePathApplications:request',
1222
+ create: _deepseek_ai_dsh_api_session_controller_session_workspacePathApplications_parameter_0$schema,
1223
+ },
1224
+ },
1225
+ ],
1226
+ cancellation: { parameter: 'signal' },
1227
+ result: {
1228
+ mode: 'strict',
1229
+ typeSymbol: '@deepseek-ai/dsh-api-session-controller#session/workspacePathApplications:result',
1230
+ create: _deepseek_ai_dsh_api_session_controller_session_workspacePathApplications_result$schema,
1231
+ },
1232
+ sourceLocation: {"file":"packages/api/session-controller/src/index.ts","line":352,"column":9},
1141
1233
  },
1142
1234
  {
1143
1235
  id: '@deepseek-ai/dsh-api-session-controller#skills/list',
@@ -1163,7 +1255,7 @@ export const TYPERT_REMOTE = {
1163
1255
  typeSymbol: '@deepseek-ai/dsh-api-session-controller/types#SkillListValue',
1164
1256
  create: _deepseek_ai_dsh_api_session_controller_skills_list_result$schema,
1165
1257
  },
1166
- sourceLocation: {"file":"packages/api/session-controller/src/skill-catalog.ts","line":36,"column":9},
1258
+ sourceLocation: {"file":"packages/api/session-controller/src/skill-catalog.ts","line":35,"column":9},
1167
1259
  },
1168
1260
  ],
1169
1261
  }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The controller's admission gate for archived Sessions: an archived
3
+ * Session, or a subagent descendant of one, must not run a model step until
4
+ * it is restored. The work a Session still runs is reported and stopped by
5
+ * its owners — the Agent registry (`turn`), the job registry seam (`job`),
6
+ * the Subagent runtime (`subagent`), and the Schedule plugin (`schedule`) —
7
+ * through the Workspace registry's archive-admission events.
8
+ */
9
+ import type { Context, Plugin } from '@deepseek-ai/cordis';
10
+ import type { Agent } from '@deepseek-ai/dsh-agent';
11
+ /**
12
+ * The gate as a plugin for `ctx.plugin(...)`: it loads once the Agent
13
+ * registry, Session store, and Workspace registry are available and unwinds
14
+ * with the plugin's fiber. A late waking delivery to an archived Session — a
15
+ * subagent settlement, a queued follow-up — proposes a step the gate rejects,
16
+ * which the loop ends as `blocked` without a request; unarchiving lifts the
17
+ * gate for the whole lineage.
18
+ */
19
+ export declare const ArchivedSessionGate: Plugin.Object<void>;
20
+ /**
21
+ * Whether the Agent's Session, or a Session above it in its subagent lineage,
22
+ * is archived. Lineage follows the durable header fields through
23
+ * subagent-origin Sessions only: a fork of an archived Session is an
24
+ * independent conversation.
25
+ * @param ctx - Host context.
26
+ * @param agent - the Agent proposing a step.
27
+ * @returns whether an archived Session owns the step.
28
+ */
29
+ export declare function underArchivedSession(ctx: Context, agent: Agent): boolean;
30
+ //# sourceMappingURL=archived-session-gate.d.ts.map