@khorsheed/dsh-room 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +18 -2
  2. package/README.en.md +84 -0
  3. package/README.i18n.yaml +3 -3
  4. package/README.md +62 -26
  5. package/lib/client.js +952 -285
  6. package/lib/index.js +88 -12
  7. package/lib/{journal-CuRnWk66.js → journal-BWL3-i0s.js} +27 -0
  8. package/lib/tool.js +63 -11
  9. package/lib/typert.host.js +184 -37
  10. package/lib/typert.remote-client.d.ts +2 -0
  11. package/lib/typert.remote-client.js +151 -31
  12. package/lib/types/client/RoomActivityDock.d.ts +19 -0
  13. package/lib/types/client/RoomActivityDock.js +105 -0
  14. package/lib/types/client/RoomComposer.d.ts +1 -1
  15. package/lib/types/client/RoomComposer.js +3 -3
  16. package/lib/types/client/RoomPlanTab.d.ts +15 -0
  17. package/lib/types/client/RoomPlanTab.js +13 -0
  18. package/lib/types/client/RoomPlanView.d.ts +3 -2
  19. package/lib/types/client/RoomPlanView.js +5 -6
  20. package/lib/types/client/executions.d.ts +50 -0
  21. package/lib/types/client/executions.js +70 -0
  22. package/lib/types/client/index.d.ts +1 -1
  23. package/lib/types/client/index.js +33 -1
  24. package/lib/types/client/locales.d.ts +50 -0
  25. package/lib/types/client/locales.js +50 -0
  26. package/lib/types/client/preset-visibility.d.ts +3 -3
  27. package/lib/types/client/preset-visibility.js +2 -2
  28. package/lib/types/client/slots.d.ts +6 -1
  29. package/lib/types/dispatch.js +30 -6
  30. package/lib/types/index.d.ts +5 -0
  31. package/lib/types/index.js +42 -7
  32. package/lib/types/journal.d.ts +1 -1
  33. package/lib/types/journal.js +27 -1
  34. package/lib/types/tool-definition.d.ts +56 -0
  35. package/lib/types/tool-definition.js +393 -0
  36. package/lib/types/tool.d.ts +37 -49
  37. package/lib/types/tool.js +47 -381
  38. package/lib/types/types.d.ts +28 -0
  39. package/package.json +10 -9
  40. package/README.zh.md +0 -48
@@ -83,6 +83,8 @@ const _khorsheed_dsh_room_room_addTask_result$schema = () => (_khorsheed_dsh_roo
83
83
  })]))
84
84
  let _khorsheed_dsh_room_room_cancel_parameter_0$schema$value
85
85
  const _khorsheed_dsh_room_room_cancel_parameter_0$schema = () => (_khorsheed_dsh_room_room_cancel_parameter_0$schema$value ??= z.object({
86
+ 'expectedRunId': z.string().readonly().optional(),
87
+ 'expectedStartedAt': z.number().readonly().optional(),
86
88
  'sessionId': z.intersection(z.string(), z.unknown()).readonly(),
87
89
  'name': z.string().readonly(),
88
90
  }))
@@ -157,11 +159,87 @@ const _khorsheed_dsh_room_room_cancel_result$schema = () => (_khorsheed_dsh_room
157
159
  'message': z.string().readonly(),
158
160
  })]).readonly(),
159
161
  })]))
162
+ let _khorsheed_dsh_room_room_cancelChild_parameter_0$schema$value
163
+ const _khorsheed_dsh_room_room_cancelChild_parameter_0$schema = () => (_khorsheed_dsh_room_room_cancelChild_parameter_0$schema$value ??= z.object({
164
+ 'sessionId': z.intersection(z.string(), z.unknown()),
165
+ 'childSessionId': z.intersection(z.string(), z.unknown()),
166
+ }))
167
+ let _khorsheed_dsh_room_room_cancelChild_result$schema$value
168
+ const _khorsheed_dsh_room_room_cancelChild_result$schema = () => (_khorsheed_dsh_room_room_cancelChild_result$schema$value ??= z.union([z.object({
169
+ 'ok': z.literal(true).readonly(),
170
+ 'value': z.object({
171
+ 'cancelled': z.boolean().readonly(),
172
+ }).readonly(),
173
+ }), z.object({
174
+ 'ok': z.literal(false).readonly(),
175
+ 'error': z.union([z.object({
176
+ 'code': z.literal("request-conflict").readonly(),
177
+ }), z.object({
178
+ 'code': z.literal("member-cwd-bound").readonly(),
179
+ }), z.object({
180
+ 'code': z.literal("not-coordinator").readonly(),
181
+ }), z.object({
182
+ 'code': z.literal("delivery-not-uncertain").readonly(),
183
+ }), z.object({
184
+ 'code': z.literal("plan-reconciliation-required").readonly(),
185
+ }), z.object({
186
+ 'code': z.literal("coordinator-busy").readonly(),
187
+ }), z.object({
188
+ 'code': z.literal("coordinator-not-ready").readonly(),
189
+ 'message': z.string().readonly(),
190
+ }), z.object({
191
+ 'code': z.literal("coordinator-conflict").readonly(),
192
+ }), z.object({
193
+ 'code': z.literal("active-coordinator").readonly(),
194
+ }), z.object({
195
+ 'code': z.literal("configuration-owned-by-core").readonly(),
196
+ }), z.object({
197
+ 'code': z.literal("session-not-found").readonly(),
198
+ }), z.object({
199
+ 'code': z.literal("not-a-room").readonly(),
200
+ }), z.object({
201
+ 'code': z.literal("invalid-name").readonly(),
202
+ }), z.object({
203
+ 'code': z.literal("duplicate-name").readonly(),
204
+ }), z.object({
205
+ 'code': z.literal("empty-provider").readonly(),
206
+ }), z.object({
207
+ 'code': z.literal("member-not-found").readonly(),
208
+ }), z.object({
209
+ 'code': z.literal("empty-text").readonly(),
210
+ }), z.object({
211
+ 'code': z.literal("nothing-to-update").readonly(),
212
+ }), z.object({
213
+ 'code': z.literal("local-agent-unavailable").readonly(),
214
+ }), z.object({
215
+ 'code': z.literal("unknown-provider").readonly(),
216
+ 'provider': z.string().readonly(),
217
+ 'available': z.array(z.string()).readonly(),
218
+ }), z.object({
219
+ 'code': z.literal("unknown-targets").readonly(),
220
+ 'names': z.array(z.string()).readonly(),
221
+ }), z.object({
222
+ 'code': z.literal("no-targets").readonly(),
223
+ }), z.object({
224
+ 'code': z.literal("relay-not-found").readonly(),
225
+ }), z.object({
226
+ 'code': z.literal("relay-not-pending").readonly(),
227
+ }), z.object({
228
+ 'code': z.literal("main-member").readonly(),
229
+ }), z.object({
230
+ 'code': z.literal("task-not-found").readonly(),
231
+ }), z.object({
232
+ 'code': z.literal("task-closed").readonly(),
233
+ }), z.object({
234
+ 'code': z.literal("resume-failed").readonly(),
235
+ 'message': z.string().readonly(),
236
+ })]).readonly(),
237
+ })]))
160
238
  let _khorsheed_dsh_room_room_closeTask_parameter_0$schema$value
161
239
  const _khorsheed_dsh_room_room_closeTask_parameter_0$schema = () => (_khorsheed_dsh_room_room_closeTask_parameter_0$schema$value ??= z.object({
162
240
  'sessionId': z.intersection(z.string(), z.unknown()).readonly(),
163
241
  'taskId': z.string().readonly(),
164
- 'status': z.union([z.literal("cancelled"), z.literal("done")]).readonly().optional(),
242
+ 'status': z.union([z.literal("done"), z.literal("cancelled")]).readonly().optional(),
165
243
  }))
166
244
  let _khorsheed_dsh_room_room_closeTask_result$schema$value
167
245
  const _khorsheed_dsh_room_room_closeTask_result$schema = () => (_khorsheed_dsh_room_room_closeTask_result$schema$value ??= z.union([z.object({
@@ -394,12 +472,31 @@ let _khorsheed_dsh_room_room_getState_result$schema$value
394
472
  const _khorsheed_dsh_room_room_getState_result$schema = () => (_khorsheed_dsh_room_room_getState_result$schema$value ??= z.union([z.object({
395
473
  'ok': z.literal(true).readonly(),
396
474
  'value': z.object({
475
+ 'executions': z.array(z.object({
476
+ 'id': z.string().readonly(),
477
+ 'memberId': z.string().readonly().optional(),
478
+ 'childSessionId': z.intersection(z.string(), z.unknown()).readonly().optional(),
479
+ 'provider': z.string().readonly().optional(),
480
+ 'model': z.string().readonly().optional(),
481
+ 'effort': z.string().readonly().optional(),
482
+ 'tokens': z.number().readonly().optional(),
483
+ 'runId': z.string().readonly().optional(),
484
+ 'member': z.string().readonly(),
485
+ 'state': z.union([z.literal("running"), z.literal("done"), z.literal("cancelled"), z.literal("failed")]).readonly(),
486
+ 'startedAt': z.number().readonly(),
487
+ 'elapsedMs': z.number().readonly().optional(),
488
+ 'error': z.string().readonly().optional(),
489
+ })).readonly().optional(),
397
490
  'plan': z.object({
491
+ 'stages': z.array(z.object({
492
+ 'id': z.string(),
493
+ 'title': z.string(),
494
+ })),
398
495
  'version': z.literal(1),
399
496
  'id': z.string(),
400
497
  'revision': z.number(),
401
498
  'objective': z.string(),
402
- 'status': z.union([z.literal("cancelled"), z.literal("running"), z.literal("draft"), z.literal("paused"), z.literal("completed")]),
499
+ 'status': z.union([z.literal("draft"), z.literal("running"), z.literal("cancelled"), z.literal("paused"), z.literal("completed")]),
403
500
  'reason': z.string().optional(),
404
501
  'budget': z.object({
405
502
  'maxParallel': z.number(),
@@ -409,28 +506,24 @@ const _khorsheed_dsh_room_room_getState_result$schema = () => (_khorsheed_dsh_ro
409
506
  }),
410
507
  'activeMs': z.number(),
411
508
  'resumedAt': z.number().optional(),
412
- 'stages': z.array(z.object({
413
- 'id': z.string(),
414
- 'title': z.string(),
415
- })),
416
509
  'tasks': z.array(z.object({
417
510
  'id': z.string(),
418
511
  'title': z.string(),
419
512
  'stageId': z.string(),
420
513
  'parentId': z.string().optional(),
421
- 'kind': z.union([z.literal("group"), z.literal("task")]),
514
+ 'kind': z.union([z.literal("task"), z.literal("group")]),
422
515
  'ownerMemberId': z.string().optional(),
423
516
  'instruction': z.string(),
424
517
  'criteria': z.array(z.string()),
425
518
  'inputRefs': z.array(z.string()),
426
519
  'artifactPaths': z.array(z.string()),
427
520
  'dependsOn': z.array(z.string()),
428
- 'status': z.union([z.literal("pending"), z.literal("failed"), z.literal("cancelled"), z.literal("running"), z.literal("submitted"), z.literal("accepted")]),
521
+ 'status': z.union([z.literal("running"), z.literal("cancelled"), z.literal("pending"), z.literal("failed"), z.literal("submitted"), z.literal("accepted")]),
429
522
  'attempts': z.array(z.object({
430
523
  'id': z.string(),
431
524
  'deliveryId': z.string(),
432
525
  'number': z.number(),
433
- 'status': z.union([z.literal("failed"), z.literal("rejected"), z.literal("cancelled"), z.literal("queued"), z.literal("running"), z.literal("uncertain"), z.literal("submitted"), z.literal("accepted")]),
526
+ 'status': z.union([z.literal("running"), z.literal("cancelled"), z.literal("failed"), z.literal("rejected"), z.literal("queued"), z.literal("uncertain"), z.literal("submitted"), z.literal("accepted")]),
434
527
  'createdAt': z.number(),
435
528
  'startedAt': z.number().optional(),
436
529
  'settledAt': z.number().optional(),
@@ -464,7 +557,7 @@ const _khorsheed_dsh_room_room_getState_result$schema = () => (_khorsheed_dsh_ro
464
557
  'id': z.string().readonly(),
465
558
  'dispatchSeq': z.number().readonly(),
466
559
  'memberId': z.string().readonly(),
467
- 'status': z.union([z.literal("failed"), z.literal("cancelled"), z.literal("queued"), z.literal("running"), z.literal("done"), z.literal("uncertain")]).readonly(),
560
+ 'status': z.union([z.literal("running"), z.literal("done"), z.literal("cancelled"), z.literal("failed"), z.literal("queued"), z.literal("uncertain")]).readonly(),
468
561
  'origin': z.union([z.literal("human"), z.literal("coordinator"), z.literal("report"), z.literal("relay")]).readonly(),
469
562
  'text': z.string().readonly(),
470
563
  'error': z.string().readonly().optional(),
@@ -487,7 +580,7 @@ const _khorsheed_dsh_room_room_getState_result$schema = () => (_khorsheed_dsh_ro
487
580
  'kind': z.union([z.literal("main-agent"), z.literal("cli")]).readonly(),
488
581
  'provider': z.string().readonly().optional(),
489
582
  'instructions': z.string().readonly().optional(),
490
- 'invitedBy': z.union([z.literal("human"), z.literal("agent")]).readonly(),
583
+ 'invitedBy': z.union([z.literal("agent"), z.literal("human")]).readonly(),
491
584
  'cwd': z.string().readonly().optional(),
492
585
  'model': z.string().readonly().optional(),
493
586
  'childSessionId': z.intersection(z.string(), z.unknown()).readonly().optional(),
@@ -505,14 +598,14 @@ const _khorsheed_dsh_room_room_getState_result$schema = () => (_khorsheed_dsh_ro
505
598
  'id': z.string().readonly(),
506
599
  'member': z.string().readonly(),
507
600
  'title': z.string().readonly(),
508
- 'status': z.union([z.literal("pending"), z.literal("failed"), z.literal("cancelled"), z.literal("done"), z.literal("in_progress")]).readonly(),
601
+ 'status': z.union([z.literal("done"), z.literal("cancelled"), z.literal("pending"), z.literal("failed"), z.literal("in_progress")]).readonly(),
509
602
  'blockedBy': z.string().readonly().optional(),
510
603
  'updatedAt': z.number().readonly(),
511
604
  })).readonly(),
512
605
  'runs': z.array(z.object({
513
606
  'runId': z.string().readonly().optional(),
514
607
  'member': z.string().readonly(),
515
- 'state': z.union([z.literal("failed"), z.literal("cancelled"), z.literal("running"), z.literal("done")]).readonly(),
608
+ 'state': z.union([z.literal("running"), z.literal("done"), z.literal("cancelled"), z.literal("failed")]).readonly(),
516
609
  'startedAt': z.number().readonly(),
517
610
  'elapsedMs': z.number().readonly().optional(),
518
611
  'error': z.string().readonly().optional(),
@@ -858,7 +951,7 @@ let _khorsheed_dsh_room_room_reconcileDelivery_parameter_0$schema$value
858
951
  const _khorsheed_dsh_room_room_reconcileDelivery_parameter_0$schema = () => (_khorsheed_dsh_room_room_reconcileDelivery_parameter_0$schema$value ??= z.object({
859
952
  'sessionId': z.intersection(z.string(), z.unknown()).readonly(),
860
953
  'deliveryId': z.string().readonly(),
861
- 'outcome': z.union([z.literal("cancelled"), z.literal("done")]).readonly(),
954
+ 'outcome': z.union([z.literal("done"), z.literal("cancelled")]).readonly(),
862
955
  'evidence': z.string().readonly(),
863
956
  }))
864
957
  let _khorsheed_dsh_room_room_reconcileDelivery_result$schema$value
@@ -1274,7 +1367,7 @@ export const TYPERT = {
1274
1367
  create: _khorsheed_dsh_room_room_addTask_result$schema,
1275
1368
  schema: _khorsheed_dsh_room_room_addTask_result$schema(),
1276
1369
  },
1277
- sourceLocation: {"file":"packages/room/src/index.ts","line":946,"column":9},
1370
+ sourceLocation: {"file":"packages/room/src/index.ts","line":948,"column":9},
1278
1371
  },
1279
1372
  {
1280
1373
  id: '@khorsheed/dsh-room#room/cancel',
@@ -1301,7 +1394,34 @@ export const TYPERT = {
1301
1394
  create: _khorsheed_dsh_room_room_cancel_result$schema,
1302
1395
  schema: _khorsheed_dsh_room_room_cancel_result$schema(),
1303
1396
  },
1304
- sourceLocation: {"file":"packages/room/src/index.ts","line":1051,"column":9},
1397
+ sourceLocation: {"file":"packages/room/src/index.ts","line":1053,"column":9},
1398
+ },
1399
+ {
1400
+ id: '@khorsheed/dsh-room#room/cancelChild',
1401
+ service: 'room',
1402
+ namespace: 'room',
1403
+ method: 'cancelChild',
1404
+ invocation: { kind: 'direct' },
1405
+ parameters: [
1406
+ {
1407
+ name: 'request',
1408
+ wire: 'request',
1409
+ source: 'json',
1410
+ codec: {
1411
+ mode: 'strict',
1412
+ typeSymbol: '@khorsheed/dsh-room#room/cancelChild:request',
1413
+ create: _khorsheed_dsh_room_room_cancelChild_parameter_0$schema,
1414
+ schema: _khorsheed_dsh_room_room_cancelChild_parameter_0$schema(),
1415
+ },
1416
+ },
1417
+ ],
1418
+ result: {
1419
+ mode: 'strict',
1420
+ typeSymbol: '@khorsheed/dsh-room/types#RoomCancelResult',
1421
+ create: _khorsheed_dsh_room_room_cancelChild_result$schema,
1422
+ schema: _khorsheed_dsh_room_room_cancelChild_result$schema(),
1423
+ },
1424
+ sourceLocation: {"file":"packages/room/src/index.ts","line":1093,"column":9},
1305
1425
  },
1306
1426
  {
1307
1427
  id: '@khorsheed/dsh-room#room/closeTask',
@@ -1328,7 +1448,7 @@ export const TYPERT = {
1328
1448
  create: _khorsheed_dsh_room_room_closeTask_result$schema,
1329
1449
  schema: _khorsheed_dsh_room_room_closeTask_result$schema(),
1330
1450
  },
1331
- sourceLocation: {"file":"packages/room/src/index.ts","line":974,"column":9},
1451
+ sourceLocation: {"file":"packages/room/src/index.ts","line":976,"column":9},
1332
1452
  },
1333
1453
  {
1334
1454
  id: '@khorsheed/dsh-room#room/confirmRelay',
@@ -1355,7 +1475,7 @@ export const TYPERT = {
1355
1475
  create: _khorsheed_dsh_room_room_confirmRelay_result$schema,
1356
1476
  schema: _khorsheed_dsh_room_room_confirmRelay_result$schema(),
1357
1477
  },
1358
- sourceLocation: {"file":"packages/room/src/index.ts","line":903,"column":9},
1478
+ sourceLocation: {"file":"packages/room/src/index.ts","line":905,"column":9},
1359
1479
  },
1360
1480
  {
1361
1481
  id: '@khorsheed/dsh-room#room/dismissRelay',
@@ -1382,7 +1502,7 @@ export const TYPERT = {
1382
1502
  create: _khorsheed_dsh_room_room_dismissRelay_result$schema,
1383
1503
  schema: _khorsheed_dsh_room_room_dismissRelay_result$schema(),
1384
1504
  },
1385
- sourceLocation: {"file":"packages/room/src/index.ts","line":926,"column":9},
1505
+ sourceLocation: {"file":"packages/room/src/index.ts","line":928,"column":9},
1386
1506
  },
1387
1507
  {
1388
1508
  id: '@khorsheed/dsh-room#room/getState',
@@ -1409,7 +1529,7 @@ export const TYPERT = {
1409
1529
  create: _khorsheed_dsh_room_room_getState_result$schema,
1410
1530
  schema: _khorsheed_dsh_room_room_getState_result$schema(),
1411
1531
  },
1412
- sourceLocation: {"file":"packages/room/src/index.ts","line":347,"column":9},
1532
+ sourceLocation: {"file":"packages/room/src/index.ts","line":349,"column":9},
1413
1533
  },
1414
1534
  {
1415
1535
  id: '@khorsheed/dsh-room#room/invite',
@@ -1436,7 +1556,7 @@ export const TYPERT = {
1436
1556
  create: _khorsheed_dsh_room_room_invite_result$schema,
1437
1557
  schema: _khorsheed_dsh_room_room_invite_result$schema(),
1438
1558
  },
1439
- sourceLocation: {"file":"packages/room/src/index.ts","line":448,"column":3},
1559
+ sourceLocation: {"file":"packages/room/src/index.ts","line":450,"column":3},
1440
1560
  },
1441
1561
  {
1442
1562
  id: '@khorsheed/dsh-room#room/isRoom',
@@ -1463,7 +1583,7 @@ export const TYPERT = {
1463
1583
  create: _khorsheed_dsh_room_room_isRoom_result$schema,
1464
1584
  schema: _khorsheed_dsh_room_room_isRoom_result$schema(),
1465
1585
  },
1466
- sourceLocation: {"file":"packages/room/src/index.ts","line":270,"column":9},
1586
+ sourceLocation: {"file":"packages/room/src/index.ts","line":272,"column":9},
1467
1587
  },
1468
1588
  {
1469
1589
  id: '@khorsheed/dsh-room#room/listProviders',
@@ -1490,7 +1610,7 @@ export const TYPERT = {
1490
1610
  create: _khorsheed_dsh_room_room_listProviders_result$schema,
1491
1611
  schema: _khorsheed_dsh_room_room_listProviders_result$schema(),
1492
1612
  },
1493
- sourceLocation: {"file":"packages/room/src/index.ts","line":319,"column":9},
1613
+ sourceLocation: {"file":"packages/room/src/index.ts","line":321,"column":9},
1494
1614
  },
1495
1615
  {
1496
1616
  id: '@khorsheed/dsh-room#room/planCommand',
@@ -1517,7 +1637,7 @@ export const TYPERT = {
1517
1637
  create: _khorsheed_dsh_room_room_planCommand_result$schema,
1518
1638
  schema: _khorsheed_dsh_room_room_planCommand_result$schema(),
1519
1639
  },
1520
- sourceLocation: {"file":"packages/room/src/index.ts","line":787,"column":9},
1640
+ sourceLocation: {"file":"packages/room/src/index.ts","line":789,"column":9},
1521
1641
  },
1522
1642
  {
1523
1643
  id: '@khorsheed/dsh-room#room/postMessage',
@@ -1544,7 +1664,7 @@ export const TYPERT = {
1544
1664
  create: _khorsheed_dsh_room_room_postMessage_result$schema,
1545
1665
  schema: _khorsheed_dsh_room_room_postMessage_result$schema(),
1546
1666
  },
1547
- sourceLocation: {"file":"packages/room/src/index.ts","line":666,"column":9},
1667
+ sourceLocation: {"file":"packages/room/src/index.ts","line":668,"column":9},
1548
1668
  },
1549
1669
  {
1550
1670
  id: '@khorsheed/dsh-room#room/prepareMember',
@@ -1571,7 +1691,7 @@ export const TYPERT = {
1571
1691
  create: _khorsheed_dsh_room_room_prepareMember_result$schema,
1572
1692
  schema: _khorsheed_dsh_room_room_prepareMember_result$schema(),
1573
1693
  },
1574
- sourceLocation: {"file":"packages/room/src/index.ts","line":516,"column":9},
1694
+ sourceLocation: {"file":"packages/room/src/index.ts","line":518,"column":9},
1575
1695
  },
1576
1696
  {
1577
1697
  id: '@khorsheed/dsh-room#room/reconcileDelivery',
@@ -1598,7 +1718,7 @@ export const TYPERT = {
1598
1718
  create: _khorsheed_dsh_room_room_reconcileDelivery_result$schema,
1599
1719
  schema: _khorsheed_dsh_room_room_reconcileDelivery_result$schema(),
1600
1720
  },
1601
- sourceLocation: {"file":"packages/room/src/index.ts","line":542,"column":9},
1721
+ sourceLocation: {"file":"packages/room/src/index.ts","line":544,"column":9},
1602
1722
  },
1603
1723
  {
1604
1724
  id: '@khorsheed/dsh-room#room/removeMember',
@@ -1625,7 +1745,7 @@ export const TYPERT = {
1625
1745
  create: _khorsheed_dsh_room_room_removeMember_result$schema,
1626
1746
  schema: _khorsheed_dsh_room_room_removeMember_result$schema(),
1627
1747
  },
1628
- sourceLocation: {"file":"packages/room/src/index.ts","line":629,"column":9},
1748
+ sourceLocation: {"file":"packages/room/src/index.ts","line":631,"column":9},
1629
1749
  },
1630
1750
  {
1631
1751
  id: '@khorsheed/dsh-room#room/setCoordinator',
@@ -1652,7 +1772,7 @@ export const TYPERT = {
1652
1772
  create: _khorsheed_dsh_room_room_setCoordinator_result$schema,
1653
1773
  schema: _khorsheed_dsh_room_room_setCoordinator_result$schema(),
1654
1774
  },
1655
- sourceLocation: {"file":"packages/room/src/index.ts","line":559,"column":9},
1775
+ sourceLocation: {"file":"packages/room/src/index.ts","line":561,"column":9},
1656
1776
  },
1657
1777
  {
1658
1778
  id: '@khorsheed/dsh-room#room/setGoal',
@@ -1679,7 +1799,7 @@ export const TYPERT = {
1679
1799
  create: _khorsheed_dsh_room_room_setGoal_result$schema,
1680
1800
  schema: _khorsheed_dsh_room_room_setGoal_result$schema(),
1681
1801
  },
1682
- sourceLocation: {"file":"packages/room/src/index.ts","line":1032,"column":9},
1802
+ sourceLocation: {"file":"packages/room/src/index.ts","line":1034,"column":9},
1683
1803
  },
1684
1804
  {
1685
1805
  id: '@khorsheed/dsh-room#room/updateMember',
@@ -1706,7 +1826,7 @@ export const TYPERT = {
1706
1826
  create: _khorsheed_dsh_room_room_updateMember_result$schema,
1707
1827
  schema: _khorsheed_dsh_room_room_updateMember_result$schema(),
1708
1828
  },
1709
- sourceLocation: {"file":"packages/room/src/index.ts","line":471,"column":9},
1829
+ sourceLocation: {"file":"packages/room/src/index.ts","line":473,"column":9},
1710
1830
  },
1711
1831
  ],
1712
1832
  model: {
@@ -1911,6 +2031,13 @@ export const TYPERT = {
1911
2031
  "signature": "@Remote('cancel') async cancel(request: RoomCancelRequest): Promise<RoomCancelResult>",
1912
2032
  "summary": "Cancel a member's in-flight run through the local-agent facade.",
1913
2033
  "jsDoc": "/**\n * Cancel a member's in-flight run through the local-agent facade. A hit\n * journals the terminal `cancelled` edge immediately (the engine's own\n * settle for that run then no-ops); a miss — no facade, no delegation\n * handle, or nothing in flight — journals nothing and reports\n * `cancelled: false`.\n * @param request - room session, member name.\n * @returns the cancellation receipt, or a rejection.\n */"
2034
+ },
2035
+ {
2036
+ "kind": "method",
2037
+ "name": "cancelChild",
2038
+ "signature": "@Remote('cancelChild') async cancelChild(request: { sessionId: SessionId; childSessionId: SessionId }): Promise<RoomCancelResult>",
2039
+ "summary": "Native descendant controls share the host's continuation and cancellation channels.",
2040
+ "jsDoc": "/** Native descendant controls share the host's continuation and cancellation channels. */"
1914
2041
  }
1915
2042
  ],
1916
2043
  "types": [
@@ -2112,7 +2239,11 @@ export const TYPERT = {
2112
2239
  },
2113
2240
  {
2114
2241
  "name": "MessageSourceMap",
2115
- "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 'agent-message': AgentMessageSource;\n 'subagent-settled': SubagentSettledMessageSource;\n room: { kind: 'room'; } & ContextFormed;\n}"
2242
+ "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 'skill-invocation': SkillInvocationSource;\n 'message-tools': { kind: 'message-tools'; readonly op?: MessageToolsOp; } & ContextFormed;\n 'agent-message': AgentMessageSource;\n 'subagent-settled': SubagentSettledMessageSource;\n room: { kind: 'room'; } & ContextFormed;\n sidechat: { kind: 'sidechat'; } & ContextFormed;\n worktrees: { kind: 'worktrees'; } & ContextFormed;\n}"
2243
+ },
2244
+ {
2245
+ "name": "MessageToolsOp",
2246
+ "declaration": "export type MessageToolsOp = 'edit' | 'edit-trigger' | 'restore-assistant';"
2116
2247
  },
2117
2248
  {
2118
2249
  "name": "ModelMessageSource",
@@ -2192,7 +2323,7 @@ export const TYPERT = {
2192
2323
  },
2193
2324
  {
2194
2325
  "name": "RoomCancelRequest",
2195
- "declaration": "export interface RoomCancelRequest {\n readonly sessionId: SessionId;\n readonly name: string;\n}"
2326
+ "declaration": "export interface RoomCancelRequest {\n readonly expectedRunId?: string;\n readonly expectedStartedAt?: number;\n readonly sessionId: SessionId;\n readonly name: string;\n}"
2196
2327
  },
2197
2328
  {
2198
2329
  "name": "RoomCancelResult",
@@ -2226,6 +2357,14 @@ export const TYPERT = {
2226
2357
  "name": "RoomDispatchEvent",
2227
2358
  "declaration": "export interface RoomDispatchEvent {\n readonly plan?: { readonly goalId: string; readonly taskId?: string; readonly attemptId?: string; };\n readonly requestSignature?: string;\n readonly id?: string;\n readonly targetIds?: readonly string[];\n readonly origin?: 'human' | 'coordinator' | 'report' | 'relay';\n readonly replyTo?: string;\n readonly reportFor?: string;\n readonly targets: readonly string[];\n readonly text: string;\n}"
2228
2359
  },
2360
+ {
2361
+ "name": "RoomExecution",
2362
+ "declaration": "export interface RoomExecution extends RoomMemberRun {\n readonly id: string;\n readonly memberId?: string;\n readonly childSessionId?: SessionId;\n readonly provider?: string;\n readonly model?: string;\n readonly effort?: string;\n readonly tokens?: number;\n}"
2363
+ },
2364
+ {
2365
+ "name": "RoomExecutionMetadataEvent",
2366
+ "declaration": "export interface RoomExecutionMetadataEvent {\n readonly runId: string;\n readonly model?: string;\n readonly effort?: string;\n readonly tokens?: number;\n}"
2367
+ },
2229
2368
  {
2230
2369
  "name": "RoomFailure",
2231
2370
  "declaration": "export type RoomFailure = { readonly code: 'request-conflict'; } | { readonly code: 'member-cwd-bound'; } | { readonly code: 'not-coordinator'; } | { readonly code: 'delivery-not-uncertain'; } | { readonly code: 'plan-reconciliation-required'; } | { readonly code: 'coordinator-busy'; } | { readonly code: 'coordinator-not-ready'; readonly message: string; } | { readonly code: 'coordinator-conflict'; } | { readonly code: 'active-coordinator'; } | { readonly code: 'configuration-owned-by-core'; } | { readonly code: 'session-not-found'; } | { readonly code: 'not-a-room'; } | { readonly code: 'invalid-name'; } | { readonly code: 'duplicate-name'; } | { readonly code: 'empty-provider'; } | { readonly code: 'member-not-found'; } | { readonly code: 'empty-text'; } | { readonly code: 'nothing-to-update'; } | { readonly code: 'local-agent-unavailable'; } | { readonly code: 'unknown-provider'; readonly provider: string; readonly available: readonly string[]; } | { readonly code: 'unknown-targets'; readonly names: readonly string[]; } | { readonly code: 'no-targets'; } | { readonly code: 'relay-not-found'; } | { readonly code: 'relay-not-pending'; } | { readonly code: 'main-member'; } | { readonly code: 'task-not-found'; } | { readonly code: 'task-closed'; } | { readonly code: 'resume-failed'; readonly message: string; };"
@@ -2384,7 +2523,7 @@ export const TYPERT = {
2384
2523
  },
2385
2524
  {
2386
2525
  "name": "RoomRunStateEvent",
2387
- "declaration": "export interface RoomRunStateEvent {\n readonly runId?: string;\n readonly member: string;\n readonly state: 'running' | 'done' | 'cancelled' | 'failed';\n readonly startedAt: number;\n readonly elapsedMs?: number;\n readonly error?: string;\n}"
2526
+ "declaration": "export interface RoomRunStateEvent {\n readonly childSessionId?: SessionId;\n readonly model?: string;\n readonly effort?: string;\n readonly tokens?: number;\n readonly runId?: string;\n readonly member: string;\n readonly state: 'running' | 'done' | 'cancelled' | 'failed';\n readonly startedAt: number;\n readonly elapsedMs?: number;\n readonly error?: string;\n}"
2388
2527
  },
2389
2528
  {
2390
2529
  "name": "RoomSetCoordinatorRequest",
@@ -2408,7 +2547,7 @@ export const TYPERT = {
2408
2547
  },
2409
2548
  {
2410
2549
  "name": "RoomState",
2411
- "declaration": "export interface RoomState {\n readonly plan?: Omit<RoomPlan, 'requests'>;\n readonly deliveries?: readonly RoomDelivery[];\n readonly coordinator?: RoomCoordinatorEvent;\n readonly members: readonly RoomMember[];\n readonly relays: readonly RoomRelay[];\n readonly tasks: readonly RoomTask[];\n readonly runs: readonly RoomMemberRun[];\n readonly goal?: string;\n}"
2550
+ "declaration": "export interface RoomState {\n readonly executions?: readonly RoomExecution[];\n readonly plan?: Omit<RoomPlan, 'requests'>;\n readonly deliveries?: readonly RoomDelivery[];\n readonly coordinator?: RoomCoordinatorEvent;\n readonly members: readonly RoomMember[];\n readonly relays: readonly RoomRelay[];\n readonly tasks: readonly RoomTask[];\n readonly runs: readonly RoomMemberRun[];\n readonly goal?: string;\n}"
2412
2551
  },
2413
2552
  {
2414
2553
  "name": "RoomTask",
@@ -2452,7 +2591,7 @@ export const TYPERT = {
2452
2591
  },
2453
2592
  {
2454
2593
  "name": "Session",
2455
- "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}"
2594
+ "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 toolHistory(): ToolHistory;\n deriveMessages(): Message[];\n deriveEventMessage(event: SessionEvent): Message | null;\n}"
2456
2595
  },
2457
2596
  {
2458
2597
  "name": "SessionEvent",
@@ -2460,7 +2599,7 @@ export const TYPERT = {
2460
2599
  },
2461
2600
  {
2462
2601
  "name": "SessionEventMap",
2463
- "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 '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 '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 'subagent/descriptor': SubagentDescriptorData;\n 'image/offload': { targets: ImageOffloadTarget[]; };\n 'session/title': SessionTitleEventData;\n 'todo/write': { todos: TodoItem[]; };\n 'permission/preset': { preset: string; };\n 'agent-preset/selected': { agentPreset: string; };\n 'subagent/catalog': SubagentCatalogEvent;\n 'local-agent/stream': LocalAgentStreamCheckpoint;\n 'room/created': RoomCreatedEvent;\n 'room/member-added': RoomMemberAddedEvent;\n 'room/member-updated': RoomMemberUpdatedEvent;\n 'room/member-removed': RoomMemberRemovedEvent;\n 'room/dispatch': RoomDispatchEvent;\n 'room/speech': RoomSpeechEvent;\n 'room/run-state': RoomRunStateEvent;\n 'room/relay': RoomRelayEvent;\n 'room/relay-resolved': RoomRelayResolvedEvent;\n 'room/task-added': RoomTaskAddedEvent;\n 'room/task-updated': RoomTaskUpdatedEvent;\n 'room/task-edited': RoomTaskEditedEvent;\n 'room/goal': RoomGoalEvent;\n 'room/plan-state': RoomPlan;\n 'room/coordinator': RoomCoordinatorEvent;\n 'room/delivery-state': RoomDeliveryStateEvent;\n}"
2602
+ "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 'subagent/descriptor': SubagentDescriptorData;\n 'image/offload': { targets: ImageOffloadTarget[]; };\n 'session/title': SessionTitleEventData;\n 'todo/write': { todos: TodoItem[]; };\n 'permission/preset': { preset: string; };\n 'subagent/catalog': SubagentCatalogEvent;\n 'local-agent/stream': LocalAgentStreamCheckpoint;\n 'room/created': RoomCreatedEvent;\n 'room/member-added': RoomMemberAddedEvent;\n 'room/member-updated': RoomMemberUpdatedEvent;\n 'room/member-removed': RoomMemberRemovedEvent;\n 'room/dispatch': RoomDispatchEvent;\n 'room/speech': RoomSpeechEvent;\n 'room/run-state': RoomRunStateEvent;\n 'room/execution-metadata': RoomExecutionMetadataEvent;\n 'room/relay': RoomRelayEvent;\n 'room/relay-resolved': RoomRelayResolvedEvent;\n 'room/task-added': RoomTaskAddedEvent;\n 'room/task-updated': RoomTaskUpdatedEvent;\n 'room/task-edited': RoomTaskEditedEvent;\n 'room/goal': RoomGoalEvent;\n 'room/plan-state': RoomPlan;\n 'room/coordinator': RoomCoordinatorEvent;\n 'room/delivery-state': RoomDeliveryStateEvent;\n}"
2464
2603
  },
2465
2604
  {
2466
2605
  "name": "SessionEventType",
@@ -2502,6 +2641,10 @@ export const TYPERT = {
2502
2641
  "name": "SessionTitleSource",
2503
2642
  "declaration": "export type SessionTitleSource = { readonly kind: 'fallback'; } | { readonly kind: 'provider'; readonly provider: SessionTitleProviderId; readonly model?: SessionTitleModelIdentity; } | { readonly kind: 'user'; };"
2504
2643
  },
2644
+ {
2645
+ "name": "SkillInvocationSource",
2646
+ "declaration": "export interface SkillInvocationSource {\n readonly kind: 'skill-invocation';\n readonly name: string;\n readonly form: 'instructions';\n}"
2647
+ },
2505
2648
  {
2506
2649
  "name": "StreamChunk",
2507
2650
  "declaration": "export type StreamChunk = { type: 'block-start'; index: number; blockType: ContentBlockType; } | { type: 'text-delta'; index: number; text: string; } | { type: 'reasoning-delta'; index: number; text: string; } | { type: 'tool-call-delta'; index: number; id: ToolCallId; name?: string; argumentsDelta: string; } | { type: 'block-end'; index: number; block: ContentBlock; } | { type: 'usage'; usage: TokenUsage; } | { type: 'finish'; reason: FinishReason; replayState?: ReplayEnvelope; };"
@@ -2570,6 +2713,10 @@ export const TYPERT = {
2570
2713
  "name": "ToolCallId",
2571
2714
  "declaration": "export type ToolCallId = Branded<'ToolCallId'>;"
2572
2715
  },
2716
+ {
2717
+ "name": "ToolHistory",
2718
+ "declaration": "export interface ToolHistory {\n readonly tools: readonly ToolSchema[];\n readonly updates: readonly { readonly messageId: MessageId; readonly additions: readonly ToolSchema[]; }[];\n}"
2719
+ },
2573
2720
  {
2574
2721
  "name": "ToolMessageSource",
2575
2722
  "declaration": "export interface ToolMessageSource {\n kind: 'tool';\n callId: ToolCallId;\n}"
@@ -10,6 +10,7 @@ declare module '@deepseek-ai/dsh-typert-protocol' {
10
10
  interface TypertRemoteNamespace$726f6f6d {
11
11
  addTask: (request: RoomAddTaskRequest) => Promise<RemoteResult<RoomAddTaskResult>>
12
12
  cancel: (request: RoomCancelRequest) => Promise<RemoteResult<RoomCancelResult>>
13
+ cancelChild: (request: { sessionId: SessionId; childSessionId: SessionId; }) => Promise<RemoteResult<RoomCancelResult>>
13
14
  closeTask: (request: RoomCloseTaskRequest) => Promise<RemoteResult<RoomCloseTaskResult>>
14
15
  confirmRelay: (request: RoomRelayResolveRequest) => Promise<RemoteResult<RoomRelayResolveResult>>
15
16
  dismissRelay: (request: RoomRelayResolveRequest) => Promise<RemoteResult<RoomRelayResolveResult>>
@@ -29,6 +30,7 @@ declare module '@deepseek-ai/dsh-typert-protocol' {
29
30
  interface TypertRemoteMap {
30
31
  'room/addTask': (request: RoomAddTaskRequest) => Promise<RemoteResult<RoomAddTaskResult>>
31
32
  'room/cancel': (request: RoomCancelRequest) => Promise<RemoteResult<RoomCancelResult>>
33
+ 'room/cancelChild': (request: { sessionId: SessionId; childSessionId: SessionId; }) => Promise<RemoteResult<RoomCancelResult>>
32
34
  'room/closeTask': (request: RoomCloseTaskRequest) => Promise<RemoteResult<RoomCloseTaskResult>>
33
35
  'room/confirmRelay': (request: RoomRelayResolveRequest) => Promise<RemoteResult<RoomRelayResolveResult>>
34
36
  'room/dismissRelay': (request: RoomRelayResolveRequest) => Promise<RemoteResult<RoomRelayResolveResult>>