@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
package/lib/client.js CHANGED
@@ -4359,6 +4359,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4359
4359
  })]);
4360
4360
  let _khorsheed_dsh_room_room_cancel_parameter_0$schema$value;
4361
4361
  const _khorsheed_dsh_room_room_cancel_parameter_0$schema = () => _khorsheed_dsh_room_room_cancel_parameter_0$schema$value ??= object({
4362
+ "expectedRunId": string().readonly().optional(),
4363
+ "expectedStartedAt": number().readonly().optional(),
4362
4364
  "sessionId": intersection(string(), unknown()).readonly(),
4363
4365
  "name": string().readonly()
4364
4366
  });
@@ -4412,11 +4414,66 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4412
4414
  })
4413
4415
  ]).readonly()
4414
4416
  })]);
4417
+ let _khorsheed_dsh_room_room_cancelChild_parameter_0$schema$value;
4418
+ const _khorsheed_dsh_room_room_cancelChild_parameter_0$schema = () => _khorsheed_dsh_room_room_cancelChild_parameter_0$schema$value ??= object({
4419
+ "sessionId": intersection(string(), unknown()),
4420
+ "childSessionId": intersection(string(), unknown())
4421
+ });
4422
+ let _khorsheed_dsh_room_room_cancelChild_result$schema$value;
4423
+ const _khorsheed_dsh_room_room_cancelChild_result$schema = () => _khorsheed_dsh_room_room_cancelChild_result$schema$value ??= union([object({
4424
+ "ok": literal(true).readonly(),
4425
+ "value": object({ "cancelled": boolean().readonly() }).readonly()
4426
+ }), object({
4427
+ "ok": literal(false).readonly(),
4428
+ "error": union([
4429
+ object({ "code": literal("request-conflict").readonly() }),
4430
+ object({ "code": literal("member-cwd-bound").readonly() }),
4431
+ object({ "code": literal("not-coordinator").readonly() }),
4432
+ object({ "code": literal("delivery-not-uncertain").readonly() }),
4433
+ object({ "code": literal("plan-reconciliation-required").readonly() }),
4434
+ object({ "code": literal("coordinator-busy").readonly() }),
4435
+ object({
4436
+ "code": literal("coordinator-not-ready").readonly(),
4437
+ "message": string().readonly()
4438
+ }),
4439
+ object({ "code": literal("coordinator-conflict").readonly() }),
4440
+ object({ "code": literal("active-coordinator").readonly() }),
4441
+ object({ "code": literal("configuration-owned-by-core").readonly() }),
4442
+ object({ "code": literal("session-not-found").readonly() }),
4443
+ object({ "code": literal("not-a-room").readonly() }),
4444
+ object({ "code": literal("invalid-name").readonly() }),
4445
+ object({ "code": literal("duplicate-name").readonly() }),
4446
+ object({ "code": literal("empty-provider").readonly() }),
4447
+ object({ "code": literal("member-not-found").readonly() }),
4448
+ object({ "code": literal("empty-text").readonly() }),
4449
+ object({ "code": literal("nothing-to-update").readonly() }),
4450
+ object({ "code": literal("local-agent-unavailable").readonly() }),
4451
+ object({
4452
+ "code": literal("unknown-provider").readonly(),
4453
+ "provider": string().readonly(),
4454
+ "available": array(string()).readonly()
4455
+ }),
4456
+ object({
4457
+ "code": literal("unknown-targets").readonly(),
4458
+ "names": array(string()).readonly()
4459
+ }),
4460
+ object({ "code": literal("no-targets").readonly() }),
4461
+ object({ "code": literal("relay-not-found").readonly() }),
4462
+ object({ "code": literal("relay-not-pending").readonly() }),
4463
+ object({ "code": literal("main-member").readonly() }),
4464
+ object({ "code": literal("task-not-found").readonly() }),
4465
+ object({ "code": literal("task-closed").readonly() }),
4466
+ object({
4467
+ "code": literal("resume-failed").readonly(),
4468
+ "message": string().readonly()
4469
+ })
4470
+ ]).readonly()
4471
+ })]);
4415
4472
  let _khorsheed_dsh_room_room_closeTask_parameter_0$schema$value;
4416
4473
  const _khorsheed_dsh_room_room_closeTask_parameter_0$schema = () => _khorsheed_dsh_room_room_closeTask_parameter_0$schema$value ??= object({
4417
4474
  "sessionId": intersection(string(), unknown()).readonly(),
4418
4475
  "taskId": string().readonly(),
4419
- "status": union([literal("cancelled"), literal("done")]).readonly().optional()
4476
+ "status": union([literal("done"), literal("cancelled")]).readonly().optional()
4420
4477
  });
4421
4478
  let _khorsheed_dsh_room_room_closeTask_result$schema$value;
4422
4479
  const _khorsheed_dsh_room_room_closeTask_result$schema = () => _khorsheed_dsh_room_room_closeTask_result$schema$value ??= union([object({
@@ -4584,15 +4641,39 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4584
4641
  const _khorsheed_dsh_room_room_getState_result$schema = () => _khorsheed_dsh_room_room_getState_result$schema$value ??= union([object({
4585
4642
  "ok": literal(true).readonly(),
4586
4643
  "value": object({
4644
+ "executions": array(object({
4645
+ "id": string().readonly(),
4646
+ "memberId": string().readonly().optional(),
4647
+ "childSessionId": intersection(string(), unknown()).readonly().optional(),
4648
+ "provider": string().readonly().optional(),
4649
+ "model": string().readonly().optional(),
4650
+ "effort": string().readonly().optional(),
4651
+ "tokens": number().readonly().optional(),
4652
+ "runId": string().readonly().optional(),
4653
+ "member": string().readonly(),
4654
+ "state": union([
4655
+ literal("running"),
4656
+ literal("done"),
4657
+ literal("cancelled"),
4658
+ literal("failed")
4659
+ ]).readonly(),
4660
+ "startedAt": number().readonly(),
4661
+ "elapsedMs": number().readonly().optional(),
4662
+ "error": string().readonly().optional()
4663
+ })).readonly().optional(),
4587
4664
  "plan": object({
4665
+ "stages": array(object({
4666
+ "id": string(),
4667
+ "title": string()
4668
+ })),
4588
4669
  "version": literal(1),
4589
4670
  "id": string(),
4590
4671
  "revision": number(),
4591
4672
  "objective": string(),
4592
4673
  "status": union([
4593
- literal("cancelled"),
4594
- literal("running"),
4595
4674
  literal("draft"),
4675
+ literal("running"),
4676
+ literal("cancelled"),
4596
4677
  literal("paused"),
4597
4678
  literal("completed")
4598
4679
  ]),
@@ -4605,16 +4686,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4605
4686
  }),
4606
4687
  "activeMs": number(),
4607
4688
  "resumedAt": number().optional(),
4608
- "stages": array(object({
4609
- "id": string(),
4610
- "title": string()
4611
- })),
4612
4689
  "tasks": array(object({
4613
4690
  "id": string(),
4614
4691
  "title": string(),
4615
4692
  "stageId": string(),
4616
4693
  "parentId": string().optional(),
4617
- "kind": union([literal("group"), literal("task")]),
4694
+ "kind": union([literal("task"), literal("group")]),
4618
4695
  "ownerMemberId": string().optional(),
4619
4696
  "instruction": string(),
4620
4697
  "criteria": array(string()),
@@ -4622,10 +4699,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4622
4699
  "artifactPaths": array(string()),
4623
4700
  "dependsOn": array(string()),
4624
4701
  "status": union([
4702
+ literal("running"),
4703
+ literal("cancelled"),
4625
4704
  literal("pending"),
4626
4705
  literal("failed"),
4627
- literal("cancelled"),
4628
- literal("running"),
4629
4706
  literal("submitted"),
4630
4707
  literal("accepted")
4631
4708
  ]),
@@ -4634,11 +4711,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4634
4711
  "deliveryId": string(),
4635
4712
  "number": number(),
4636
4713
  "status": union([
4714
+ literal("running"),
4715
+ literal("cancelled"),
4637
4716
  literal("failed"),
4638
4717
  literal("rejected"),
4639
- literal("cancelled"),
4640
4718
  literal("queued"),
4641
- literal("running"),
4642
4719
  literal("uncertain"),
4643
4720
  literal("submitted"),
4644
4721
  literal("accepted")
@@ -4677,11 +4754,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4677
4754
  "dispatchSeq": number().readonly(),
4678
4755
  "memberId": string().readonly(),
4679
4756
  "status": union([
4680
- literal("failed"),
4681
- literal("cancelled"),
4682
- literal("queued"),
4683
4757
  literal("running"),
4684
4758
  literal("done"),
4759
+ literal("cancelled"),
4760
+ literal("failed"),
4761
+ literal("queued"),
4685
4762
  literal("uncertain")
4686
4763
  ]).readonly(),
4687
4764
  "origin": union([
@@ -4711,7 +4788,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4711
4788
  "kind": union([literal("main-agent"), literal("cli")]).readonly(),
4712
4789
  "provider": string().readonly().optional(),
4713
4790
  "instructions": string().readonly().optional(),
4714
- "invitedBy": union([literal("human"), literal("agent")]).readonly(),
4791
+ "invitedBy": union([literal("agent"), literal("human")]).readonly(),
4715
4792
  "cwd": string().readonly().optional(),
4716
4793
  "model": string().readonly().optional(),
4717
4794
  "childSessionId": intersection(string(), unknown()).readonly().optional()
@@ -4743,10 +4820,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4743
4820
  "member": string().readonly(),
4744
4821
  "title": string().readonly(),
4745
4822
  "status": union([
4823
+ literal("done"),
4824
+ literal("cancelled"),
4746
4825
  literal("pending"),
4747
4826
  literal("failed"),
4748
- literal("cancelled"),
4749
- literal("done"),
4750
4827
  literal("in_progress")
4751
4828
  ]).readonly(),
4752
4829
  "blockedBy": string().readonly().optional(),
@@ -4756,10 +4833,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4756
4833
  "runId": string().readonly().optional(),
4757
4834
  "member": string().readonly(),
4758
4835
  "state": union([
4759
- literal("failed"),
4760
- literal("cancelled"),
4761
4836
  literal("running"),
4762
- literal("done")
4837
+ literal("done"),
4838
+ literal("cancelled"),
4839
+ literal("failed")
4763
4840
  ]).readonly(),
4764
4841
  "startedAt": number().readonly(),
4765
4842
  "elapsedMs": number().readonly().optional(),
@@ -5024,7 +5101,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5024
5101
  const _khorsheed_dsh_room_room_reconcileDelivery_parameter_0$schema = () => _khorsheed_dsh_room_room_reconcileDelivery_parameter_0$schema$value ??= object({
5025
5102
  "sessionId": intersection(string(), unknown()).readonly(),
5026
5103
  "deliveryId": string().readonly(),
5027
- "outcome": union([literal("cancelled"), literal("done")]).readonly(),
5104
+ "outcome": union([literal("done"), literal("cancelled")]).readonly(),
5028
5105
  "evidence": string().readonly()
5029
5106
  });
5030
5107
  let _khorsheed_dsh_room_room_reconcileDelivery_result$schema$value;
@@ -5333,7 +5410,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5333
5410
  },
5334
5411
  sourceLocation: {
5335
5412
  "file": "packages/room/src/index.ts",
5336
- "line": 946,
5413
+ "line": 948,
5337
5414
  "column": 9
5338
5415
  }
5339
5416
  },
@@ -5362,7 +5439,36 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5362
5439
  },
5363
5440
  sourceLocation: {
5364
5441
  "file": "packages/room/src/index.ts",
5365
- "line": 1051,
5442
+ "line": 1053,
5443
+ "column": 9
5444
+ }
5445
+ },
5446
+ {
5447
+ id: "@khorsheed/dsh-room#room/cancelChild",
5448
+ service: "room",
5449
+ namespace: "room",
5450
+ method: "cancelChild",
5451
+ invocation: { kind: "direct" },
5452
+ parameters: [{
5453
+ name: "request",
5454
+ wire: "request",
5455
+ source: "json",
5456
+ codec: {
5457
+ mode: "strict",
5458
+ typeSymbol: "@khorsheed/dsh-room#room/cancelChild:request",
5459
+ create: _khorsheed_dsh_room_room_cancelChild_parameter_0$schema,
5460
+ schema: _khorsheed_dsh_room_room_cancelChild_parameter_0$schema()
5461
+ }
5462
+ }],
5463
+ result: {
5464
+ mode: "strict",
5465
+ typeSymbol: "@khorsheed/dsh-room/types#RoomCancelResult",
5466
+ create: _khorsheed_dsh_room_room_cancelChild_result$schema,
5467
+ schema: _khorsheed_dsh_room_room_cancelChild_result$schema()
5468
+ },
5469
+ sourceLocation: {
5470
+ "file": "packages/room/src/index.ts",
5471
+ "line": 1093,
5366
5472
  "column": 9
5367
5473
  }
5368
5474
  },
@@ -5391,7 +5497,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5391
5497
  },
5392
5498
  sourceLocation: {
5393
5499
  "file": "packages/room/src/index.ts",
5394
- "line": 974,
5500
+ "line": 976,
5395
5501
  "column": 9
5396
5502
  }
5397
5503
  },
@@ -5420,7 +5526,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5420
5526
  },
5421
5527
  sourceLocation: {
5422
5528
  "file": "packages/room/src/index.ts",
5423
- "line": 903,
5529
+ "line": 905,
5424
5530
  "column": 9
5425
5531
  }
5426
5532
  },
@@ -5449,7 +5555,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5449
5555
  },
5450
5556
  sourceLocation: {
5451
5557
  "file": "packages/room/src/index.ts",
5452
- "line": 926,
5558
+ "line": 928,
5453
5559
  "column": 9
5454
5560
  }
5455
5561
  },
@@ -5478,7 +5584,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5478
5584
  },
5479
5585
  sourceLocation: {
5480
5586
  "file": "packages/room/src/index.ts",
5481
- "line": 347,
5587
+ "line": 349,
5482
5588
  "column": 9
5483
5589
  }
5484
5590
  },
@@ -5507,7 +5613,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5507
5613
  },
5508
5614
  sourceLocation: {
5509
5615
  "file": "packages/room/src/index.ts",
5510
- "line": 448,
5616
+ "line": 450,
5511
5617
  "column": 3
5512
5618
  }
5513
5619
  },
@@ -5536,7 +5642,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5536
5642
  },
5537
5643
  sourceLocation: {
5538
5644
  "file": "packages/room/src/index.ts",
5539
- "line": 270,
5645
+ "line": 272,
5540
5646
  "column": 9
5541
5647
  }
5542
5648
  },
@@ -5565,7 +5671,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5565
5671
  },
5566
5672
  sourceLocation: {
5567
5673
  "file": "packages/room/src/index.ts",
5568
- "line": 319,
5674
+ "line": 321,
5569
5675
  "column": 9
5570
5676
  }
5571
5677
  },
@@ -5594,7 +5700,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5594
5700
  },
5595
5701
  sourceLocation: {
5596
5702
  "file": "packages/room/src/index.ts",
5597
- "line": 787,
5703
+ "line": 789,
5598
5704
  "column": 9
5599
5705
  }
5600
5706
  },
@@ -5623,7 +5729,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5623
5729
  },
5624
5730
  sourceLocation: {
5625
5731
  "file": "packages/room/src/index.ts",
5626
- "line": 666,
5732
+ "line": 668,
5627
5733
  "column": 9
5628
5734
  }
5629
5735
  },
@@ -5652,7 +5758,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5652
5758
  },
5653
5759
  sourceLocation: {
5654
5760
  "file": "packages/room/src/index.ts",
5655
- "line": 516,
5761
+ "line": 518,
5656
5762
  "column": 9
5657
5763
  }
5658
5764
  },
@@ -5681,7 +5787,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5681
5787
  },
5682
5788
  sourceLocation: {
5683
5789
  "file": "packages/room/src/index.ts",
5684
- "line": 542,
5790
+ "line": 544,
5685
5791
  "column": 9
5686
5792
  }
5687
5793
  },
@@ -5710,7 +5816,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5710
5816
  },
5711
5817
  sourceLocation: {
5712
5818
  "file": "packages/room/src/index.ts",
5713
- "line": 629,
5819
+ "line": 631,
5714
5820
  "column": 9
5715
5821
  }
5716
5822
  },
@@ -5739,7 +5845,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5739
5845
  },
5740
5846
  sourceLocation: {
5741
5847
  "file": "packages/room/src/index.ts",
5742
- "line": 559,
5848
+ "line": 561,
5743
5849
  "column": 9
5744
5850
  }
5745
5851
  },
@@ -5768,7 +5874,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5768
5874
  },
5769
5875
  sourceLocation: {
5770
5876
  "file": "packages/room/src/index.ts",
5771
- "line": 1032,
5877
+ "line": 1034,
5772
5878
  "column": 9
5773
5879
  }
5774
5880
  },
@@ -5797,7 +5903,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5797
5903
  },
5798
5904
  sourceLocation: {
5799
5905
  "file": "packages/room/src/index.ts",
5800
- "line": 471,
5906
+ "line": 473,
5801
5907
  "column": 9
5802
5908
  }
5803
5909
  }
@@ -5833,6 +5939,31 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
5833
5939
  /** `room` namespace dictionaries. */
5834
5940
  /** Simplified Chinese dictionary (the key-set source of truth). */
5835
5941
  const zh = {
5942
+ "activity.status.settled": "已结束",
5943
+ "activity.sessionTotal": "会话累计",
5944
+ "activity.agents": "后台 Agent",
5945
+ "activity.plan": "当前计划",
5946
+ "activity.planDetails": "计划详情与运行限制",
5947
+ "activity.limits": "运行限制",
5948
+ "activity.session": "查看会话",
5949
+ "activity.stop": "中止",
5950
+ "activity.stopChanged": "这次执行已结束或已发生变化,请查看最新状态。",
5951
+ "activity.runningHint": "{count} 个 Agent 正在运行",
5952
+ "activity.notStarted": "尚未开始",
5953
+ "activity.empty": "当前没有这类执行记录",
5954
+ "activity.planning": "协调者正在整理计划",
5955
+ "activity.filter.recent": "最近",
5956
+ "activity.filter.running": "进行中",
5957
+ "activity.filter.attention": "待处理",
5958
+ "activity.filter.all": "全部",
5959
+ "activity.status.queued": "排队中",
5960
+ "activity.status.running": "运行中",
5961
+ "activity.status.done": "已完成",
5962
+ "activity.status.cancelled": "已中止",
5963
+ "activity.status.failed": "失败",
5964
+ "activity.status.uncertain": "待核对",
5965
+ "activity.status.submitted": "待验收",
5966
+ "activity.status.accepted": "已验收",
5836
5967
  "recovery.title": "中断的对话需要对账",
5837
5968
  "recovery.help": "重启前的结果尚未确认,不会自动重试。请查看成员会话并填写核对结论;对账后,已排队的普通对话可以继续,正式目标仍遵守暂停状态。",
5838
5969
  "recovery.done": "确认已完成",
@@ -6039,6 +6170,31 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
6039
6170
  };
6040
6171
  /** English dictionary, checked complete against the zh key set. */
6041
6172
  const en = {
6173
+ "activity.status.settled": "Finished",
6174
+ "activity.sessionTotal": "Session total",
6175
+ "activity.agents": "Background agents",
6176
+ "activity.plan": "Current plan",
6177
+ "activity.planDetails": "Plan details and limits",
6178
+ "activity.limits": "Run limits",
6179
+ "activity.session": "View conversation",
6180
+ "activity.stop": "Stop",
6181
+ "activity.stopChanged": "This execution has ended or changed. Check its latest state.",
6182
+ "activity.runningHint": "{count} agents are running",
6183
+ "activity.notStarted": "Not started",
6184
+ "activity.empty": "No matching executions",
6185
+ "activity.planning": "The coordinator is preparing the plan",
6186
+ "activity.filter.recent": "Recent",
6187
+ "activity.filter.running": "Running",
6188
+ "activity.filter.attention": "Needs attention",
6189
+ "activity.filter.all": "All",
6190
+ "activity.status.queued": "Queued",
6191
+ "activity.status.running": "Running",
6192
+ "activity.status.done": "Completed",
6193
+ "activity.status.cancelled": "Stopped",
6194
+ "activity.status.failed": "Failed",
6195
+ "activity.status.uncertain": "Needs reconciliation",
6196
+ "activity.status.submitted": "Awaiting review",
6197
+ "activity.status.accepted": "Accepted",
6042
6198
  "recovery.title": "Interrupted conversations need reconciliation",
6043
6199
  "recovery.help": "The pre-restart outcome is unknown and will not be retried automatically. Inspect the member session and record your finding. Reconciliation releases queued ordinary conversations; paused goals remain paused.",
6044
6200
  "recovery.done": "Confirm completed",
@@ -6508,43 +6664,43 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
6508
6664
  }
6509
6665
  //#endregion
6510
6666
  //#region \0dsh-css:src/client/MembersView.module.css.mjs
6511
- const css$14 = ".QCtnxq_members{flex-direction:column;gap:8px;padding:12px 16px;display:flex}.QCtnxq_grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:10px;display:grid}.QCtnxq_card{border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#0000001a);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:12px;flex-direction:column;gap:8px;padding:12px;font-size:13px;line-height:18px;display:flex}.QCtnxq_head{align-items:center;gap:10px;min-width:0;display:flex}.QCtnxq_avatarTile{background:color-mix(in srgb, var(--member-color,var(--dsw-alias-label-tertiary,#7f8287)) 85%, black);color:#fff;user-select:none;border-radius:10px;flex:none;place-items:center;width:40px;height:40px;font-size:16px;font-weight:600;display:grid}.QCtnxq_identity{flex-direction:column;gap:1px;min-width:0;display:flex}.QCtnxq_name{color:var(--dsw-alias-label-primary,#1f2329);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.QCtnxq_hint{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);white-space:nowrap;font-size:12px}.QCtnxq_head>.QCtnxq_chipRunning,.QCtnxq_head>.QCtnxq_chipFailed,.QCtnxq_head>.QCtnxq_chipIdle{flex:none;margin-left:auto}.QCtnxq_instructionsBlock{flex-direction:column;gap:2px;min-height:0;display:flex}.QCtnxq_instructions{-webkit-line-clamp:2;color:var(--dsw-alias-label-secondary,#5a5a5ae6);-webkit-box-orient:vertical;margin:0;font-size:12px;line-height:18px;display:-webkit-box;overflow:hidden}.QCtnxq_instructionsExpanded{color:var(--dsw-alias-label-secondary,#5a5a5ae6);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}.QCtnxq_instructionsEmpty{color:var(--dsw-alias-label-caption,#adb2b8);margin:0;font-size:12px;line-height:18px}.QCtnxq_expandToggle{color:var(--dsw-alias-state-business-primary,#4176e6);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-size:12px;line-height:18px}.QCtnxq_foot{flex-wrap:wrap;align-items:center;gap:6px;margin-top:auto;display:flex}.QCtnxq_chipRunning,.QCtnxq_chipFailed,.QCtnxq_chipIdle{white-space:nowrap;border:none;border-radius:999px;align-items:center;padding:1px 8px;font-size:12px;line-height:18px;display:inline-flex}.QCtnxq_chipRunning{background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4176e6) 14%, transparent);color:var(--dsw-alias-state-business-primary,#4176e6);cursor:pointer;animation:2.4s ease-in-out infinite QCtnxq_room-member-chip-breathe}.QCtnxq_chipRunning:hover:not(:disabled){background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4176e6) 22%, transparent)}.QCtnxq_chipRunning:disabled{opacity:.5;cursor:default;animation:none}@keyframes QCtnxq_room-member-chip-breathe{0%,to{opacity:1}50%{opacity:.62}}@media (prefers-reduced-motion:reduce){.QCtnxq_chipRunning{animation:none}}.QCtnxq_chipFailed{background:color-mix(in srgb, var(--dsw-alias-state-error-primary,#ec1313) 12%, transparent);color:var(--dsw-alias-state-error-primary,#ec1313)}.QCtnxq_chipIdle{background:var(--dsw-alias-fill-l1,#0000000f);color:var(--dsw-alias-label-tertiary,#7f7f7fcc)}.QCtnxq_actions{align-items:center;gap:2px;margin-left:auto;display:flex}.QCtnxq_action{white-space:nowrap;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 6px;font-size:12px;line-height:16px}.QCtnxq_action:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,#7f7f7f24);color:var(--dsw-alias-label-primary,#1f2329)}.QCtnxq_action:disabled{opacity:.4;cursor:default}.QCtnxq_invite{border:1px dashed var(--dsw-alias-border-l2,#7f7f7f66);min-height:96px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);cursor:pointer;background:0 0;border-radius:12px;place-items:center;font-size:13px;line-height:20px;display:grid}.QCtnxq_invite:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f24);color:var(--dsw-alias-label-primary,#1f2329)}.QCtnxq_chipRunning:focus:not(:focus-visible),.QCtnxq_expandToggle:focus:not(:focus-visible),.QCtnxq_action:focus:not(:focus-visible),.QCtnxq_invite:focus:not(:focus-visible){outline:none}.QCtnxq_notice{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);padding:4px 8px;font-size:12px;line-height:18px}.QCtnxq_error{color:var(--dsw-alias-text-error,#d9363e);padding:4px 8px;font-size:12px;line-height:18px}.QCtnxq_guide{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;height:100%;min-height:280px;padding:24px;display:flex}.QCtnxq_guideIcon{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);margin-bottom:2px;display:inline-flex}.QCtnxq_guideTitle{color:var(--dsw-alias-label-primary,#1f2329);margin:0;font-size:15px;font-weight:500;line-height:22px}.QCtnxq_guideHint{max-width:420px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);margin:0 0 6px;font-size:13px;line-height:20px}";
6512
- const tagId$14 = "@khorsheed/dsh-room/MembersView.module.css";
6513
- if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$14) + "]") === null) {
6667
+ const css$15 = ".QCtnxq_members{flex-direction:column;gap:8px;padding:12px 16px;display:flex}.QCtnxq_grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:10px;display:grid}.QCtnxq_card{border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#0000001a);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:12px;flex-direction:column;gap:8px;padding:12px;font-size:13px;line-height:18px;display:flex}.QCtnxq_head{align-items:center;gap:10px;min-width:0;display:flex}.QCtnxq_avatarTile{background:color-mix(in srgb, var(--member-color,var(--dsw-alias-label-tertiary,#7f8287)) 85%, black);color:#fff;user-select:none;border-radius:10px;flex:none;place-items:center;width:40px;height:40px;font-size:16px;font-weight:600;display:grid}.QCtnxq_identity{flex-direction:column;gap:1px;min-width:0;display:flex}.QCtnxq_name{color:var(--dsw-alias-label-primary,#1f2329);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.QCtnxq_hint{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);white-space:nowrap;font-size:12px}.QCtnxq_head>.QCtnxq_chipRunning,.QCtnxq_head>.QCtnxq_chipFailed,.QCtnxq_head>.QCtnxq_chipIdle{flex:none;margin-left:auto}.QCtnxq_instructionsBlock{flex-direction:column;gap:2px;min-height:0;display:flex}.QCtnxq_instructions{-webkit-line-clamp:2;color:var(--dsw-alias-label-secondary,#5a5a5ae6);-webkit-box-orient:vertical;margin:0;font-size:12px;line-height:18px;display:-webkit-box;overflow:hidden}.QCtnxq_instructionsExpanded{color:var(--dsw-alias-label-secondary,#5a5a5ae6);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}.QCtnxq_instructionsEmpty{color:var(--dsw-alias-label-caption,#adb2b8);margin:0;font-size:12px;line-height:18px}.QCtnxq_expandToggle{color:var(--dsw-alias-state-business-primary,#4176e6);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-size:12px;line-height:18px}.QCtnxq_foot{flex-wrap:wrap;align-items:center;gap:6px;margin-top:auto;display:flex}.QCtnxq_chipRunning,.QCtnxq_chipFailed,.QCtnxq_chipIdle{white-space:nowrap;border:none;border-radius:999px;align-items:center;padding:1px 8px;font-size:12px;line-height:18px;display:inline-flex}.QCtnxq_chipRunning{background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4176e6) 14%, transparent);color:var(--dsw-alias-state-business-primary,#4176e6);cursor:pointer;animation:2.4s ease-in-out infinite QCtnxq_room-member-chip-breathe}.QCtnxq_chipRunning:hover:not(:disabled){background:color-mix(in srgb, var(--dsw-alias-state-business-primary,#4176e6) 22%, transparent)}.QCtnxq_chipRunning:disabled{opacity:.5;cursor:default;animation:none}@keyframes QCtnxq_room-member-chip-breathe{0%,to{opacity:1}50%{opacity:.62}}@media (prefers-reduced-motion:reduce){.QCtnxq_chipRunning{animation:none}}.QCtnxq_chipFailed{background:color-mix(in srgb, var(--dsw-alias-state-error-primary,#ec1313) 12%, transparent);color:var(--dsw-alias-state-error-primary,#ec1313)}.QCtnxq_chipIdle{background:var(--dsw-alias-fill-l1,#0000000f);color:var(--dsw-alias-label-tertiary,#7f7f7fcc)}.QCtnxq_actions{align-items:center;gap:2px;margin-left:auto;display:flex}.QCtnxq_action{white-space:nowrap;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 6px;font-size:12px;line-height:16px}.QCtnxq_action:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,#7f7f7f24);color:var(--dsw-alias-label-primary,#1f2329)}.QCtnxq_action:disabled{opacity:.4;cursor:default}.QCtnxq_invite{border:1px dashed var(--dsw-alias-border-l2,#7f7f7f66);min-height:96px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);cursor:pointer;background:0 0;border-radius:12px;place-items:center;font-size:13px;line-height:20px;display:grid}.QCtnxq_invite:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f24);color:var(--dsw-alias-label-primary,#1f2329)}.QCtnxq_chipRunning:focus:not(:focus-visible),.QCtnxq_expandToggle:focus:not(:focus-visible),.QCtnxq_action:focus:not(:focus-visible),.QCtnxq_invite:focus:not(:focus-visible){outline:none}.QCtnxq_notice{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);padding:4px 8px;font-size:12px;line-height:18px}.QCtnxq_error{color:var(--dsw-alias-text-error,#d9363e);padding:4px 8px;font-size:12px;line-height:18px}.QCtnxq_guide{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;height:100%;min-height:280px;padding:24px;display:flex}.QCtnxq_guideIcon{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);margin-bottom:2px;display:inline-flex}.QCtnxq_guideTitle{color:var(--dsw-alias-label-primary,#1f2329);margin:0;font-size:15px;font-weight:500;line-height:22px}.QCtnxq_guideHint{max-width:420px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);margin:0 0 6px;font-size:13px;line-height:20px}";
6668
+ const tagId$15 = "@khorsheed/dsh-room/MembersView.module.css";
6669
+ if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$15) + "]") === null) {
6514
6670
  const tag = document.createElement("style");
6515
6671
  tag.dataset.plugin = "@khorsheed/dsh-room";
6516
- tag.dataset.pluginCss = tagId$14;
6517
- tag.textContent = css$14;
6672
+ tag.dataset.pluginCss = tagId$15;
6673
+ tag.textContent = css$15;
6518
6674
  document.head.appendChild(tag);
6519
6675
  }
6520
6676
  var MembersView_module_css_default = {
6521
- "invite": "QCtnxq_invite",
6522
- "guideIcon": "QCtnxq_guideIcon",
6677
+ "card": "QCtnxq_card",
6523
6678
  "name": "QCtnxq_name",
6524
- "chipFailed": "QCtnxq_chipFailed",
6525
6679
  "instructions": "QCtnxq_instructions",
6526
- "error": "QCtnxq_error",
6527
6680
  "guide": "QCtnxq_guide",
6528
- "guideTitle": "QCtnxq_guideTitle",
6529
- "guideHint": "QCtnxq_guideHint",
6530
- "action": "QCtnxq_action",
6531
- "actions": "QCtnxq_actions",
6532
- "notice": "QCtnxq_notice",
6533
- "members": "QCtnxq_members",
6681
+ "hint": "QCtnxq_hint",
6682
+ "error": "QCtnxq_error",
6534
6683
  "head": "QCtnxq_head",
6535
- "avatarTile": "QCtnxq_avatarTile",
6684
+ "instructionsExpanded": "QCtnxq_instructionsExpanded",
6685
+ "instructionsBlock": "QCtnxq_instructionsBlock",
6686
+ "members": "QCtnxq_members",
6687
+ "chipRunning": "QCtnxq_chipRunning",
6536
6688
  "chipIdle": "QCtnxq_chipIdle",
6537
- "card": "QCtnxq_card",
6689
+ "grid": "QCtnxq_grid",
6538
6690
  "identity": "QCtnxq_identity",
6539
- "hint": "QCtnxq_hint",
6540
- "instructionsBlock": "QCtnxq_instructionsBlock",
6541
- "instructionsExpanded": "QCtnxq_instructionsExpanded",
6691
+ "avatarTile": "QCtnxq_avatarTile",
6542
6692
  "instructionsEmpty": "QCtnxq_instructionsEmpty",
6543
- "chipRunning": "QCtnxq_chipRunning",
6544
6693
  "expandToggle": "QCtnxq_expandToggle",
6545
6694
  "foot": "QCtnxq_foot",
6546
- "grid": "QCtnxq_grid",
6547
- "room-member-chip-breathe": "QCtnxq_room-member-chip-breathe"
6695
+ "room-member-chip-breathe": "QCtnxq_room-member-chip-breathe",
6696
+ "actions": "QCtnxq_actions",
6697
+ "invite": "QCtnxq_invite",
6698
+ "notice": "QCtnxq_notice",
6699
+ "guideIcon": "QCtnxq_guideIcon",
6700
+ "chipFailed": "QCtnxq_chipFailed",
6701
+ "action": "QCtnxq_action",
6702
+ "guideTitle": "QCtnxq_guideTitle",
6703
+ "guideHint": "QCtnxq_guideHint"
6548
6704
  };
6549
6705
  //#endregion
6550
6706
  //#region src/client/MemberCard.tsx
@@ -6722,51 +6878,51 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
6722
6878
  }
6723
6879
  //#endregion
6724
6880
  //#region \0dsh-css:src/client/InviteDialog.module.css.mjs
6725
- const css$13 = ".Oz5isq_overlay{z-index:100;text-align:left;background:0 0;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.Oz5isq_card{border:1px solid var(--dsw-alias-border-l1,#7f7f7f29);background:var(--dsw-alias-bg-layer-1,#fff);width:560px;max-width:calc(100vw - 48px);max-height:calc(100vh - 96px);box-shadow:var(--dsw-shadow-lv3,0 12px 40px #0000003d);border-radius:18px;flex-direction:column;gap:20px;padding:22px 24px;display:flex;overflow-y:auto}.Oz5isq_body{gap:20px;min-width:0;display:flex}.Oz5isq_form{flex-direction:column;flex:auto;gap:12px;min-width:0;display:flex}.Oz5isq_previewCol{flex-direction:column;flex:none;gap:6px;width:208px;display:flex}.Oz5isq_previewLabel{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);font-size:12px;line-height:18px}@media (width<=640px){.Oz5isq_body{flex-direction:column-reverse}.Oz5isq_previewCol{width:auto}}.Oz5isq_title{color:var(--dsw-alias-label-primary,#1f2329);font-size:16px;font-weight:500;line-height:24px}.Oz5isq_field{flex-direction:column;gap:4px;display:flex}.Oz5isq_label{color:var(--dsw-alias-label-secondary,#5a5a5ae6);font-size:12px;font-weight:500;line-height:18px}.Oz5isq_input,.Oz5isq_select,.Oz5isq_textarea{border:1px solid var(--dsw-alias-border-l2,#7f7f7f3d);font:inherit;color:var(--dsw-alias-label-primary,#1f2329);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:8px;outline:none;padding:6px 10px;font-size:13px;line-height:20px}.Oz5isq_input::placeholder,.Oz5isq_textarea::placeholder{color:var(--dsw-alias-label-caption,#adb2b8)}.Oz5isq_textarea{resize:vertical}.Oz5isq_input:focus,.Oz5isq_select:focus,.Oz5isq_textarea:focus{border-color:var(--dsw-alias-border-l4,#7f7f7f66);box-shadow:0 0 0 1px var(--dsw-alias-border-l4,#7f7f7f66)}.Oz5isq_hint{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);font-size:12px;line-height:18px}.Oz5isq_modelField{border:1px solid var(--dsw-alias-border-l2,#7f7f7f3d);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:8px;align-items:center;display:flex;position:relative}.Oz5isq_modelField:focus-within{border-color:var(--dsw-alias-border-l4,#7f7f7f66);box-shadow:0 0 0 1px var(--dsw-alias-border-l4,#7f7f7f66)}.Oz5isq_modelInput{min-width:0;font:inherit;color:var(--dsw-alias-label-primary,#1f2329);background:0 0;border:none;outline:none;flex:auto;padding:6px 10px;font-size:13px;line-height:20px}.Oz5isq_modelInput::placeholder{color:var(--dsw-alias-label-caption,#adb2b8)}.Oz5isq_modelMenuButton{width:24px;height:24px;color:var(--dsw-alias-label-caption,#adb2b8);cursor:pointer;background:0 0;border:none;border-radius:6px;flex:none;justify-content:center;align-items:center;margin-right:4px;display:flex}.Oz5isq_modelMenuButton:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.Oz5isq_modelMenuChevron{transition:transform .16s}.Oz5isq_modelMenuChevronOpen{transform:rotate(180deg)}.Oz5isq_modelMenu{z-index:10;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,var(--dsw-alias-border-l2,#7f7f7f3d));background:var(--dsw-specific-menu,var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,#fff)));min-width:160px;max-height:240px;backdrop-filter:var(--dsw-menu-backdrop-filter,blur(20px));box-shadow:var(--dsw-elevation-prominent,var(--dsw-shadow-lv3,0 12px 40px #0000003d));border-radius:12px;flex-direction:column;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto}.Oz5isq_modelItem,.Oz5isq_modelItemCurrent,.Oz5isq_modelItemDefault{color:var(--dsw-alias-label-primary,#1f2329);text-align:left;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:6px 10px;font-size:12px;line-height:18px;display:flex;overflow:hidden}.Oz5isq_modelItem:hover,.Oz5isq_modelItemCurrent:hover,.Oz5isq_modelItemDefault:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.Oz5isq_modelItemCurrent{font-weight:560}.Oz5isq_modelItemLabel{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.Oz5isq_modelItemCheck{text-align:center;width:14px;color:var(--dsw-alias-label-secondary,#5a5a5ae6);flex:none}.Oz5isq_modelItemDefault{color:var(--dsw-alias-label-secondary,#5a5a5ae6);box-shadow:0 1px 0 var(--dsw-alias-border-l2,#7f7f7f3d);border-radius:8px 8px 0 0;margin-bottom:2px;padding-bottom:7px}.Oz5isq_nameRow{align-items:center;gap:6px;display:flex}.Oz5isq_nameRow .Oz5isq_input{flex:auto;min-width:0}.Oz5isq_dice{border:1px solid var(--dsw-alias-border-l2,#7f7f7f3d);cursor:pointer;background:0 0;border-radius:8px;flex:none;padding:5px 9px;font-size:13px;line-height:20px}.Oz5isq_dice:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.Oz5isq_dice:focus:not(:focus-visible){outline:none}.Oz5isq_advanced{display:block}.Oz5isq_advancedSummary{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);cursor:pointer;user-select:none;font-size:12px;font-weight:500;line-height:18px}.Oz5isq_advancedSummary:hover{color:var(--dsw-alias-label-primary,#1f2329)}.Oz5isq_advancedBody{flex-direction:column;gap:12px;padding-top:10px;display:flex}.Oz5isq_cwdRow{align-items:center;gap:6px;display:flex}.Oz5isq_cwdRow .Oz5isq_input{cursor:default;flex:auto;min-width:0}.Oz5isq_browse{border:1px solid var(--dsw-alias-border-l2,#7f7f7f3d);color:var(--dsw-alias-label-secondary,#5a5a5ae6);cursor:pointer;background:0 0;border-radius:8px;flex:none;padding:5px 10px;font-size:13px;line-height:20px}.Oz5isq_browse:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.Oz5isq_browse:disabled{opacity:.45;cursor:default}.Oz5isq_browse:focus:not(:focus-visible){outline:none}.Oz5isq_error{color:var(--dsw-alias-state-error-primary,#d9363e);font-size:12px;line-height:18px}.Oz5isq_buttons{justify-content:flex-end;gap:8px;display:flex}.Oz5isq_button,.Oz5isq_primary{cursor:pointer;border-radius:999px;justify-content:center;align-items:center;height:32px;padding:0 16px;font-size:13px;font-weight:500;line-height:20px;display:inline-flex}.Oz5isq_button{border:1px solid var(--dsw-alias-border-l3,#7f7f7f4d);color:var(--dsw-alias-label-primary,#1f2329);background:0 0}.Oz5isq_button:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.Oz5isq_primary{color:var(--dsw-alias-label-primary-foreground,#fff);background:var(--dsw-alias-button-primary-fill,#1f2329);border:none}.Oz5isq_primary:hover:not(:disabled){background:var(--dsw-alias-button-primary-hover,#43454a)}.Oz5isq_primary:disabled{opacity:.4;cursor:default}.Oz5isq_button:focus-visible,.Oz5isq_primary:focus-visible{outline:2px solid var(--dsw-alias-button-primary-fill,#1f2329);outline-offset:2px}.Oz5isq_button:focus:not(:focus-visible),.Oz5isq_primary:focus:not(:focus-visible){outline:none}";
6726
- const tagId$13 = "@khorsheed/dsh-room/InviteDialog.module.css";
6727
- if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$13) + "]") === null) {
6881
+ const css$14 = ".Oz5isq_overlay{z-index:100;text-align:left;background:0 0;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.Oz5isq_card{border:1px solid var(--dsw-alias-border-l1,#7f7f7f29);background:var(--dsw-alias-bg-layer-1,#fff);width:560px;max-width:calc(100vw - 48px);max-height:calc(100vh - 96px);box-shadow:var(--dsw-shadow-lv3,0 12px 40px #0000003d);border-radius:18px;flex-direction:column;gap:20px;padding:22px 24px;display:flex;overflow-y:auto}.Oz5isq_body{gap:20px;min-width:0;display:flex}.Oz5isq_form{flex-direction:column;flex:auto;gap:12px;min-width:0;display:flex}.Oz5isq_previewCol{flex-direction:column;flex:none;gap:6px;width:208px;display:flex}.Oz5isq_previewLabel{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);font-size:12px;line-height:18px}@media (width<=640px){.Oz5isq_body{flex-direction:column-reverse}.Oz5isq_previewCol{width:auto}}.Oz5isq_title{color:var(--dsw-alias-label-primary,#1f2329);font-size:16px;font-weight:500;line-height:24px}.Oz5isq_field{flex-direction:column;gap:4px;display:flex}.Oz5isq_label{color:var(--dsw-alias-label-secondary,#5a5a5ae6);font-size:12px;font-weight:500;line-height:18px}.Oz5isq_input,.Oz5isq_select,.Oz5isq_textarea{border:1px solid var(--dsw-alias-border-l2,#7f7f7f3d);font:inherit;color:var(--dsw-alias-label-primary,#1f2329);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:8px;outline:none;padding:6px 10px;font-size:13px;line-height:20px}.Oz5isq_input::placeholder,.Oz5isq_textarea::placeholder{color:var(--dsw-alias-label-caption,#adb2b8)}.Oz5isq_textarea{resize:vertical}.Oz5isq_input:focus,.Oz5isq_select:focus,.Oz5isq_textarea:focus{border-color:var(--dsw-alias-border-l4,#7f7f7f66);box-shadow:0 0 0 1px var(--dsw-alias-border-l4,#7f7f7f66)}.Oz5isq_hint{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);font-size:12px;line-height:18px}.Oz5isq_modelField{border:1px solid var(--dsw-alias-border-l2,#7f7f7f3d);background:var(--dsw-alias-bg-layer-1,#fff);border-radius:8px;align-items:center;display:flex;position:relative}.Oz5isq_modelField:focus-within{border-color:var(--dsw-alias-border-l4,#7f7f7f66);box-shadow:0 0 0 1px var(--dsw-alias-border-l4,#7f7f7f66)}.Oz5isq_modelInput{min-width:0;font:inherit;color:var(--dsw-alias-label-primary,#1f2329);background:0 0;border:none;outline:none;flex:auto;padding:6px 10px;font-size:13px;line-height:20px}.Oz5isq_modelInput::placeholder{color:var(--dsw-alias-label-caption,#adb2b8)}.Oz5isq_modelMenuButton{width:24px;height:24px;color:var(--dsw-alias-label-caption,#adb2b8);cursor:pointer;background:0 0;border:none;border-radius:6px;flex:none;justify-content:center;align-items:center;margin-right:4px;display:flex}.Oz5isq_modelMenuButton:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.Oz5isq_modelMenuChevron{transition:transform .16s}.Oz5isq_modelMenuChevronOpen{transform:rotate(180deg)}.Oz5isq_modelMenu{z-index:10;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,var(--dsw-alias-border-l2,#7f7f7f3d));background:var(--dsw-specific-menu,var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,#fff)));min-width:160px;max-height:240px;backdrop-filter:var(--dsw-menu-backdrop-filter,blur(20px));box-shadow:var(--dsw-elevation-prominent,var(--dsw-shadow-lv3,0 12px 40px #0000003d));border-radius:12px;flex-direction:column;padding:4px;display:flex;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto}.Oz5isq_modelItem,.Oz5isq_modelItemCurrent,.Oz5isq_modelItemDefault{color:var(--dsw-alias-label-primary,#1f2329);text-align:left;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:6px 10px;font-size:12px;line-height:18px;display:flex;overflow:hidden}.Oz5isq_modelItem:hover,.Oz5isq_modelItemCurrent:hover,.Oz5isq_modelItemDefault:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.Oz5isq_modelItemCurrent{font-weight:560}.Oz5isq_modelItemLabel{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.Oz5isq_modelItemCheck{text-align:center;width:14px;color:var(--dsw-alias-label-secondary,#5a5a5ae6);flex:none}.Oz5isq_modelItemDefault{color:var(--dsw-alias-label-secondary,#5a5a5ae6);box-shadow:0 1px 0 var(--dsw-alias-border-l2,#7f7f7f3d);border-radius:8px 8px 0 0;margin-bottom:2px;padding-bottom:7px}.Oz5isq_nameRow{align-items:center;gap:6px;display:flex}.Oz5isq_nameRow .Oz5isq_input{flex:auto;min-width:0}.Oz5isq_dice{border:1px solid var(--dsw-alias-border-l2,#7f7f7f3d);cursor:pointer;background:0 0;border-radius:8px;flex:none;padding:5px 9px;font-size:13px;line-height:20px}.Oz5isq_dice:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.Oz5isq_dice:focus:not(:focus-visible){outline:none}.Oz5isq_advanced{display:block}.Oz5isq_advancedSummary{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);cursor:pointer;user-select:none;font-size:12px;font-weight:500;line-height:18px}.Oz5isq_advancedSummary:hover{color:var(--dsw-alias-label-primary,#1f2329)}.Oz5isq_advancedBody{flex-direction:column;gap:12px;padding-top:10px;display:flex}.Oz5isq_cwdRow{align-items:center;gap:6px;display:flex}.Oz5isq_cwdRow .Oz5isq_input{cursor:default;flex:auto;min-width:0}.Oz5isq_browse{border:1px solid var(--dsw-alias-border-l2,#7f7f7f3d);color:var(--dsw-alias-label-secondary,#5a5a5ae6);cursor:pointer;background:0 0;border-radius:8px;flex:none;padding:5px 10px;font-size:13px;line-height:20px}.Oz5isq_browse:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.Oz5isq_browse:disabled{opacity:.45;cursor:default}.Oz5isq_browse:focus:not(:focus-visible){outline:none}.Oz5isq_error{color:var(--dsw-alias-state-error-primary,#d9363e);font-size:12px;line-height:18px}.Oz5isq_buttons{justify-content:flex-end;gap:8px;display:flex}.Oz5isq_button,.Oz5isq_primary{cursor:pointer;border-radius:999px;justify-content:center;align-items:center;height:32px;padding:0 16px;font-size:13px;font-weight:500;line-height:20px;display:inline-flex}.Oz5isq_button{border:1px solid var(--dsw-alias-border-l3,#7f7f7f4d);color:var(--dsw-alias-label-primary,#1f2329);background:0 0}.Oz5isq_button:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.Oz5isq_primary{color:var(--dsw-alias-label-primary-foreground,#fff);background:var(--dsw-alias-button-primary-fill,#1f2329);border:none}.Oz5isq_primary:hover:not(:disabled){background:var(--dsw-alias-button-primary-hover,#43454a)}.Oz5isq_primary:disabled{opacity:.4;cursor:default}.Oz5isq_button:focus-visible,.Oz5isq_primary:focus-visible{outline:2px solid var(--dsw-alias-button-primary-fill,#1f2329);outline-offset:2px}.Oz5isq_button:focus:not(:focus-visible),.Oz5isq_primary:focus:not(:focus-visible){outline:none}";
6882
+ const tagId$14 = "@khorsheed/dsh-room/InviteDialog.module.css";
6883
+ if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$14) + "]") === null) {
6728
6884
  const tag = document.createElement("style");
6729
6885
  tag.dataset.plugin = "@khorsheed/dsh-room";
6730
- tag.dataset.pluginCss = tagId$13;
6731
- tag.textContent = css$13;
6886
+ tag.dataset.pluginCss = tagId$14;
6887
+ tag.textContent = css$14;
6732
6888
  document.head.appendChild(tag);
6733
6889
  }
6734
6890
  var InviteDialog_module_css_default = {
6891
+ "modelItem": "Oz5isq_modelItem",
6892
+ "nameRow": "Oz5isq_nameRow",
6893
+ "modelMenuButton": "Oz5isq_modelMenuButton",
6735
6894
  "dice": "Oz5isq_dice",
6736
6895
  "modelInput": "Oz5isq_modelInput",
6737
- "hint": "Oz5isq_hint",
6738
- "nameRow": "Oz5isq_nameRow",
6739
- "modelMenuChevronOpen": "Oz5isq_modelMenuChevronOpen",
6740
- "error": "Oz5isq_error",
6741
- "buttons": "Oz5isq_buttons",
6742
- "primary": "Oz5isq_primary",
6743
- "advanced": "Oz5isq_advanced",
6744
- "advancedSummary": "Oz5isq_advancedSummary",
6745
- "select": "Oz5isq_select",
6746
- "modelField": "Oz5isq_modelField",
6747
- "modelMenuChevron": "Oz5isq_modelMenuChevron",
6748
- "modelItemDefault": "Oz5isq_modelItemDefault",
6749
- "modelItemCheck": "Oz5isq_modelItemCheck",
6896
+ "card": "Oz5isq_card",
6750
6897
  "label": "Oz5isq_label",
6751
- "previewCol": "Oz5isq_previewCol",
6752
- "field": "Oz5isq_field",
6753
- "overlay": "Oz5isq_overlay",
6754
- "form": "Oz5isq_form",
6755
6898
  "advancedBody": "Oz5isq_advancedBody",
6899
+ "title": "Oz5isq_title",
6900
+ "form": "Oz5isq_form",
6756
6901
  "browse": "Oz5isq_browse",
6757
- "card": "Oz5isq_card",
6758
6902
  "previewLabel": "Oz5isq_previewLabel",
6759
- "modelItem": "Oz5isq_modelItem",
6760
- "modelMenu": "Oz5isq_modelMenu",
6903
+ "advancedSummary": "Oz5isq_advancedSummary",
6904
+ "hint": "Oz5isq_hint",
6905
+ "primary": "Oz5isq_primary",
6906
+ "field": "Oz5isq_field",
6907
+ "input": "Oz5isq_input",
6908
+ "modelItemCheck": "Oz5isq_modelItemCheck",
6909
+ "cwdRow": "Oz5isq_cwdRow",
6761
6910
  "textarea": "Oz5isq_textarea",
6762
- "title": "Oz5isq_title",
6763
- "modelMenuButton": "Oz5isq_modelMenuButton",
6911
+ "modelMenuChevronOpen": "Oz5isq_modelMenuChevronOpen",
6912
+ "modelMenu": "Oz5isq_modelMenu",
6764
6913
  "button": "Oz5isq_button",
6765
- "body": "Oz5isq_body",
6766
- "cwdRow": "Oz5isq_cwdRow",
6914
+ "error": "Oz5isq_error",
6915
+ "select": "Oz5isq_select",
6916
+ "previewCol": "Oz5isq_previewCol",
6917
+ "advanced": "Oz5isq_advanced",
6767
6918
  "modelItemLabel": "Oz5isq_modelItemLabel",
6768
- "modelItemCurrent": "Oz5isq_modelItemCurrent",
6769
- "input": "Oz5isq_input"
6919
+ "modelItemDefault": "Oz5isq_modelItemDefault",
6920
+ "modelMenuChevron": "Oz5isq_modelMenuChevron",
6921
+ "body": "Oz5isq_body",
6922
+ "overlay": "Oz5isq_overlay",
6923
+ "buttons": "Oz5isq_buttons",
6924
+ "modelField": "Oz5isq_modelField",
6925
+ "modelItemCurrent": "Oz5isq_modelItemCurrent"
6770
6926
  };
6771
6927
  //#endregion
6772
6928
  //#region src/client/InviteDialog.tsx
@@ -7265,13 +7421,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
7265
7421
  }
7266
7422
  //#endregion
7267
7423
  //#region \0dsh-css:src/client/InviteAgentAction.module.css.mjs
7268
- const css$12 = ".FHgm9G_trigger{appearance:none;border:1px solid var(--dsw-alias-border-l2,#80808033);color:var(--dsw-alias-label-secondary,#61666b);cursor:pointer;white-space:nowrap;background:0 0;border-radius:999px;padding:1px 10px;font-size:12px;line-height:18px}.FHgm9G_trigger:hover{background:var(--dsw-alias-fill-light,#80808014);color:var(--dsw-alias-label-primary,#0f1115)}";
7269
- const tagId$12 = "@khorsheed/dsh-room/InviteAgentAction.module.css";
7270
- if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$12) + "]") === null) {
7424
+ const css$13 = ".FHgm9G_trigger{appearance:none;border:1px solid var(--dsw-alias-border-l2,#80808033);color:var(--dsw-alias-label-secondary,#61666b);cursor:pointer;white-space:nowrap;background:0 0;border-radius:999px;padding:1px 10px;font-size:12px;line-height:18px}.FHgm9G_trigger:hover{background:var(--dsw-alias-fill-light,#80808014);color:var(--dsw-alias-label-primary,#0f1115)}";
7425
+ const tagId$13 = "@khorsheed/dsh-room/InviteAgentAction.module.css";
7426
+ if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$13) + "]") === null) {
7271
7427
  const tag = document.createElement("style");
7272
7428
  tag.dataset.plugin = "@khorsheed/dsh-room";
7273
- tag.dataset.pluginCss = tagId$12;
7274
- tag.textContent = css$12;
7429
+ tag.dataset.pluginCss = tagId$13;
7430
+ tag.textContent = css$13;
7275
7431
  document.head.appendChild(tag);
7276
7432
  }
7277
7433
  var InviteAgentAction_module_css_default = { "trigger": "FHgm9G_trigger" };
@@ -7592,18 +7748,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
7592
7748
  }
7593
7749
  //#endregion
7594
7750
  //#region \0dsh-css:src/client/RoomStatsLine.module.css.mjs
7595
- const css$11 = ".mlqOeW_root{text-align:center;max-width:var(--dsh-chat-content-width,780px);box-sizing:border-box;width:100%;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);white-space:nowrap;text-overflow:ellipsis;margin:0 auto;padding:4px 16px 0;font-size:12px;line-height:20px;display:block;overflow:hidden}.mlqOeW_sep{color:var(--dsw-alias-separator-primary,#7f7f7f66);margin:0 10px}";
7596
- const tagId$11 = "@khorsheed/dsh-room/RoomStatsLine.module.css";
7597
- if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$11) + "]") === null) {
7751
+ const css$12 = ".mlqOeW_root{text-align:center;max-width:var(--dsh-chat-content-width,780px);box-sizing:border-box;width:100%;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);white-space:nowrap;text-overflow:ellipsis;margin:0 auto;padding:4px 16px 0;font-size:12px;line-height:20px;display:block;overflow:hidden}.mlqOeW_sep{color:var(--dsw-alias-separator-primary,#7f7f7f66);margin:0 10px}";
7752
+ const tagId$12 = "@khorsheed/dsh-room/RoomStatsLine.module.css";
7753
+ if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$12) + "]") === null) {
7598
7754
  const tag = document.createElement("style");
7599
7755
  tag.dataset.plugin = "@khorsheed/dsh-room";
7600
- tag.dataset.pluginCss = tagId$11;
7601
- tag.textContent = css$11;
7756
+ tag.dataset.pluginCss = tagId$12;
7757
+ tag.textContent = css$12;
7602
7758
  document.head.appendChild(tag);
7603
7759
  }
7604
7760
  var RoomStatsLine_module_css_default = {
7605
- "root": "mlqOeW_root",
7606
- "sep": "mlqOeW_sep"
7761
+ "sep": "mlqOeW_sep",
7762
+ "root": "mlqOeW_root"
7607
7763
  };
7608
7764
  //#endregion
7609
7765
  //#region src/client/RoomStatsLine.tsx
@@ -7737,71 +7893,71 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
7737
7893
  });
7738
7894
  //#endregion
7739
7895
  //#region \0dsh-css:src/client/RoomDockCapsules.module.css.mjs
7740
- const css$10 = ".ca7yvG_root{box-sizing:border-box;margin:0 auto var(--dsh-composer-stack-gap,6px);width:calc(100% - 4 * var(--dsh-composer-dock-inset,8px));max-width:calc(var(--dsh-composer-card-max-width,780px) - 4 * var(--dsh-composer-dock-inset,8px));flex-direction:column;flex:none;gap:6px;display:flex}.ca7yvG_capsules{align-items:center;gap:6px;min-width:0;display:flex}.ca7yvG_capsule{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#0000001a);min-width:0;max-width:60%;height:28px;color:var(--dsw-alias-label-secondary,#61666b);cursor:pointer;background:0 0;border-radius:24px;align-items:center;gap:6px;padding:0 10px;font-size:13px;font-weight:500;line-height:20px;display:inline-flex;position:relative;overflow:hidden}.ca7yvG_capsule:hover,.ca7yvG_capsule[aria-expanded=true]{border-color:var(--dsw-alias-border-l3,#0000001f);background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.ca7yvG_capsule[aria-expanded=true]{color:var(--dsw-alias-label-primary,#0f1115)}.ca7yvG_ring{flex:none}.ca7yvG_ringTrack{stroke:var(--dsw-alias-fill-l2,#0000001a)}.ca7yvG_ringFill{stroke:var(--dsw-alias-state-business-primary,#4176e6);transition:stroke-dasharray .2s}.ca7yvG_capsulePercent{color:var(--dsw-alias-label-primary,#0f1115);white-space:nowrap;flex:none;font-weight:600}.ca7yvG_capsuleText{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:500;overflow:hidden}.ca7yvG_capsuleGuide{color:var(--dsw-alias-label-tertiary,#81858c);white-space:nowrap;flex:none}.ca7yvG_checklistIcon{color:var(--dsw-alias-label-tertiary,#81858c);flex:none}.ca7yvG_capsule:hover .ca7yvG_checklistIcon,.ca7yvG_capsule[aria-expanded=true] .ca7yvG_checklistIcon{color:var(--dsw-alias-label-secondary,#61666b)}.ca7yvG_capsuleCount{color:var(--dsw-alias-label-primary,#0f1115);flex:none;font-weight:600}.ca7yvG_runners{white-space:nowrap;align-items:center;gap:8px;min-width:0;display:inline-flex;overflow:hidden}.ca7yvG_runner{align-items:center;gap:4px;min-width:0;display:inline-flex}.ca7yvG_runnerSuffix{color:var(--dsw-alias-label-tertiary,#81858c);flex:none}.ca7yvG_capsule[data-running]:after{content:\"\";background:linear-gradient(90deg, transparent 0%, color-mix(in srgb, var(--dsw-alias-bg-base,#fff) 60%, transparent) 55%, transparent 100%);pointer-events:none;width:120px;animation:2.6s ease-out infinite ca7yvG_room-capsule-sweep;position:absolute;top:0;bottom:0;left:0}@keyframes ca7yvG_room-capsule-sweep{0%{left:-120px}90%,to{left:100%}}@media (prefers-reduced-motion:reduce){.ca7yvG_capsule[data-running]:after{animation:none;display:none}.ca7yvG_ringFill{transition:none}}.ca7yvG_addCapsule{width:28px;height:28px;color:var(--dsw-alias-label-tertiary,#81858c);cursor:pointer;background:0 0;border:none;border-radius:50%;flex:none;place-items:center;padding:0;font-size:12px;line-height:18px;display:grid}.ca7yvG_addCapsule:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f);color:var(--dsw-alias-label-secondary,#61666b)}.ca7yvG_card{border:1px solid var(--dsw-alias-border-inverted,#0000);background:var(--dsw-specific-menu,var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,#fff)));backdrop-filter:var(--dsw-menu-backdrop-filter,blur(20px));box-shadow:var(--dsw-shadow-lv3,0 0 1px 0 #0003, 0 0 4px 0 #00000005, 0 12px 32px 0 #00000014);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2,#e5e5e5);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2,#d4d4d4);border-radius:12px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.ca7yvG_goalRow{align-items:baseline;gap:8px;min-width:0;display:flex}.ca7yvG_goalText{min-width:0;color:var(--dsw-alias-label-primary,#0f1115);white-space:pre-wrap;overflow-wrap:anywhere;flex:auto;font-size:13px;font-weight:500;line-height:20px}.ca7yvG_goalEditRow,.ca7yvG_progressRow{align-items:center;gap:8px;display:flex}.ca7yvG_progressTrack{background:var(--dsw-alias-fill-l1,#0000000f);border-radius:2px;flex:auto;height:4px;overflow:hidden}.ca7yvG_progressFill{background:var(--dsw-alias-state-business-primary,#4176e6);border-radius:2px;height:100%;transition:width .2s}.ca7yvG_progressMeta{color:var(--dsw-alias-label-tertiary,#81858c);flex:none;font-size:12px;line-height:18px}.ca7yvG_recentLabel{color:var(--dsw-alias-label-tertiary,#81858c);font-size:12px;line-height:18px}.ca7yvG_advanceRow{color:var(--dsw-alias-label-secondary,#61666b);text-overflow:ellipsis;white-space:nowrap;font-size:13px;line-height:20px;overflow:hidden}.ca7yvG_panelBar{align-items:center;gap:8px;min-width:0;display:flex}.ca7yvG_chips{flex-wrap:wrap;flex:auto;align-items:center;gap:6px;min-width:0;display:flex}.ca7yvG_chip{color:var(--dsw-alias-label-tertiary,#81858c);cursor:pointer;background:0 0;border:none;border-radius:999px;align-items:center;gap:4px;padding:1px 8px;font-size:12px;line-height:18px;display:inline-flex}.ca7yvG_chip:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.ca7yvG_chip[data-active]{background:color-mix(in srgb, var(--room-chip-color,var(--dsw-alias-label-primary,#0f1115)) 14%, transparent);color:var(--room-chip-color,var(--dsw-alias-label-primary,#0f1115));font-weight:500}.ca7yvG_addTrigger{color:var(--dsw-alias-label-tertiary,#81858c);white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;padding:1px 6px;font-size:12px;line-height:18px}.ca7yvG_addTrigger:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f);color:var(--dsw-alias-label-secondary,#61666b)}.ca7yvG_memberDot{border-radius:50%;flex:none;width:6px;height:6px}.ca7yvG_groups{flex-direction:column;gap:10px;max-height:180px;margin:0 -6px;padding:0 6px;display:flex;overflow-y:auto}.ca7yvG_group{flex-direction:column;gap:4px;display:flex}.ca7yvG_head{letter-spacing:.08em;text-transform:uppercase;color:var(--dsw-alias-label-tertiary,#81858c);padding:0 6px;font-size:11px;font-weight:600;line-height:16px}.ca7yvG_list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.ca7yvG_item{min-width:0;color:var(--dsw-alias-label-secondary,#61666b);border-radius:6px;align-items:center;gap:8px;margin:0 -6px;padding:3px 6px;font-size:13px;line-height:20px;display:flex}.ca7yvG_item:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.ca7yvG_glyph{flex:none;place-items:center;width:16px;height:16px;display:grid}.ca7yvG_glyphDone{color:var(--dsw-alias-state-success-primary,#22c55e);animation:.24s ease-out ca7yvG_room-glyph-pop}@keyframes ca7yvG_room-glyph-pop{0%{transform:scale(.6)}to{transform:scale(1)}}.ca7yvG_glyphPending{color:var(--dsw-alias-label-tertiary,#81858c)}.ca7yvG_glyphCancelled{color:var(--dsw-alias-label-caption,#adb2b8)}.ca7yvG_glyphFailed{color:var(--dsw-alias-state-error-primary,#ec1313)}.ca7yvG_glyphProgress{color:var(--dsw-alias-state-business-primary,#4176e6);animation:1s linear infinite ca7yvG_room-task-progress-spin}@keyframes ca7yvG_room-task-progress-spin{to{transform:rotate(360deg)}}.ca7yvG_content{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.ca7yvG_item[data-status=done] .ca7yvG_title{color:var(--dsw-alias-label-tertiary,#81858c);background-image:linear-gradient(currentColor,currentColor);background-position:0 55%;background-repeat:no-repeat;background-size:100% 1px;animation:.24s ease-out ca7yvG_room-task-strike}@keyframes ca7yvG_room-task-strike{0%{opacity:.5;background-size:0 1px}to{opacity:1;background-size:100% 1px}}@media (prefers-reduced-motion:reduce){.ca7yvG_glyphDone,.ca7yvG_item[data-status=done] .ca7yvG_title{animation:none}}.ca7yvG_item[data-status=cancelled] .ca7yvG_title,.ca7yvG_item[data-blocked] .ca7yvG_title{color:var(--dsw-alias-label-tertiary,#81858c)}.ca7yvG_memberChip{background:var(--dsw-alias-fill-l1,#0000000f);color:var(--dsw-alias-label-secondary,#61666b);white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:4px;padding:0 6px;font-size:12px;line-height:18px;display:inline-flex}.ca7yvG_blockedTag{background:var(--dsw-alias-fill-l1,#0000000f);color:var(--dsw-alias-label-tertiary,#81858c);border-radius:999px;flex:none;padding:0 6px;font-size:12px;line-height:18px}.ca7yvG_meta{color:var(--dsw-alias-label-tertiary,#81858c);white-space:nowrap;flex:none;font-size:12px;line-height:18px}.ca7yvG_action{color:var(--dsw-alias-label-tertiary,#81858c);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;padding:1px 6px;font-size:12px;line-height:18px}.ca7yvG_action:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,#2631480f);color:var(--dsw-alias-label-secondary,#61666b)}.ca7yvG_action:disabled{opacity:.4;cursor:default}.ca7yvG_addRow{align-items:center;gap:10px;display:flex}.ca7yvG_memberSelect{max-width:120px;color:var(--dsw-alias-label-secondary,#61666b);cursor:pointer;background:0 0;border:none;outline:none;flex:none;font-size:13px;line-height:20px}.ca7yvG_input{min-width:0;color:var(--dsw-alias-label-primary,#0f1115);caret-color:var(--dsw-alias-state-business-primary,#4176e6);background:0 0;border:none;outline:none;flex:auto;font-size:13px;line-height:20px}.ca7yvG_input::placeholder{color:var(--dsw-alias-label-caption,#adb2b8);user-select:none}.ca7yvG_error{color:var(--dsw-alias-state-error-primary,#ec1313);font-size:12px;line-height:18px}.ca7yvG_capsule:focus:not(:focus-visible),.ca7yvG_addCapsule:focus:not(:focus-visible),.ca7yvG_chip:focus:not(:focus-visible),.ca7yvG_addTrigger:focus:not(:focus-visible),.ca7yvG_action:focus:not(:focus-visible){outline:none}";
7741
- const tagId$10 = "@khorsheed/dsh-room/RoomDockCapsules.module.css";
7742
- if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$10) + "]") === null) {
7896
+ const css$11 = ".ca7yvG_root{box-sizing:border-box;margin:0 auto var(--dsh-composer-stack-gap,6px);width:calc(100% - 4 * var(--dsh-composer-dock-inset,8px));max-width:calc(var(--dsh-composer-card-max-width,780px) - 4 * var(--dsh-composer-dock-inset,8px));flex-direction:column;flex:none;gap:6px;display:flex}.ca7yvG_capsules{align-items:center;gap:6px;min-width:0;display:flex}.ca7yvG_capsule{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#0000001a);min-width:0;max-width:60%;height:28px;color:var(--dsw-alias-label-secondary,#61666b);cursor:pointer;background:0 0;border-radius:24px;align-items:center;gap:6px;padding:0 10px;font-size:13px;font-weight:500;line-height:20px;display:inline-flex;position:relative;overflow:hidden}.ca7yvG_capsule:hover,.ca7yvG_capsule[aria-expanded=true]{border-color:var(--dsw-alias-border-l3,#0000001f);background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.ca7yvG_capsule[aria-expanded=true]{color:var(--dsw-alias-label-primary,#0f1115)}.ca7yvG_ring{flex:none}.ca7yvG_ringTrack{stroke:var(--dsw-alias-fill-l2,#0000001a)}.ca7yvG_ringFill{stroke:var(--dsw-alias-state-business-primary,#4176e6);transition:stroke-dasharray .2s}.ca7yvG_capsulePercent{color:var(--dsw-alias-label-primary,#0f1115);white-space:nowrap;flex:none;font-weight:600}.ca7yvG_capsuleText{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:500;overflow:hidden}.ca7yvG_capsuleGuide{color:var(--dsw-alias-label-tertiary,#81858c);white-space:nowrap;flex:none}.ca7yvG_checklistIcon{color:var(--dsw-alias-label-tertiary,#81858c);flex:none}.ca7yvG_capsule:hover .ca7yvG_checklistIcon,.ca7yvG_capsule[aria-expanded=true] .ca7yvG_checklistIcon{color:var(--dsw-alias-label-secondary,#61666b)}.ca7yvG_capsuleCount{color:var(--dsw-alias-label-primary,#0f1115);flex:none;font-weight:600}.ca7yvG_runners{white-space:nowrap;align-items:center;gap:8px;min-width:0;display:inline-flex;overflow:hidden}.ca7yvG_runner{align-items:center;gap:4px;min-width:0;display:inline-flex}.ca7yvG_runnerSuffix{color:var(--dsw-alias-label-tertiary,#81858c);flex:none}.ca7yvG_capsule[data-running]:after{content:\"\";background:linear-gradient(90deg, transparent 0%, color-mix(in srgb, var(--dsw-alias-bg-base,#fff) 60%, transparent) 55%, transparent 100%);pointer-events:none;width:120px;animation:2.6s ease-out infinite ca7yvG_room-capsule-sweep;position:absolute;top:0;bottom:0;left:0}@keyframes ca7yvG_room-capsule-sweep{0%{left:-120px}90%,to{left:100%}}@media (prefers-reduced-motion:reduce){.ca7yvG_capsule[data-running]:after{animation:none;display:none}.ca7yvG_ringFill{transition:none}}.ca7yvG_addCapsule{width:28px;height:28px;color:var(--dsw-alias-label-tertiary,#81858c);cursor:pointer;background:0 0;border:none;border-radius:50%;flex:none;place-items:center;padding:0;font-size:12px;line-height:18px;display:grid}.ca7yvG_addCapsule:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f);color:var(--dsw-alias-label-secondary,#61666b)}.ca7yvG_card{border:1px solid var(--dsw-alias-border-inverted,#0000);background:var(--dsw-specific-menu,var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-layer-1,#fff)));backdrop-filter:var(--dsw-menu-backdrop-filter,blur(20px));box-shadow:var(--dsw-shadow-lv3,0 0 1px 0 #0003, 0 0 4px 0 #00000005, 0 12px 32px 0 #00000014);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2,#e5e5e5);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2,#d4d4d4);border-radius:12px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.ca7yvG_goalRow{align-items:baseline;gap:8px;min-width:0;display:flex}.ca7yvG_goalText{min-width:0;color:var(--dsw-alias-label-primary,#0f1115);white-space:pre-wrap;overflow-wrap:anywhere;flex:auto;font-size:13px;font-weight:500;line-height:20px}.ca7yvG_goalEditRow,.ca7yvG_progressRow{align-items:center;gap:8px;display:flex}.ca7yvG_progressTrack{background:var(--dsw-alias-fill-l1,#0000000f);border-radius:2px;flex:auto;height:4px;overflow:hidden}.ca7yvG_progressFill{background:var(--dsw-alias-state-business-primary,#4176e6);border-radius:2px;height:100%;transition:width .2s}.ca7yvG_progressMeta{color:var(--dsw-alias-label-tertiary,#81858c);flex:none;font-size:12px;line-height:18px}.ca7yvG_recentLabel{color:var(--dsw-alias-label-tertiary,#81858c);font-size:12px;line-height:18px}.ca7yvG_advanceRow{color:var(--dsw-alias-label-secondary,#61666b);text-overflow:ellipsis;white-space:nowrap;font-size:13px;line-height:20px;overflow:hidden}.ca7yvG_panelBar{align-items:center;gap:8px;min-width:0;display:flex}.ca7yvG_chips{flex-wrap:wrap;flex:auto;align-items:center;gap:6px;min-width:0;display:flex}.ca7yvG_chip{color:var(--dsw-alias-label-tertiary,#81858c);cursor:pointer;background:0 0;border:none;border-radius:999px;align-items:center;gap:4px;padding:1px 8px;font-size:12px;line-height:18px;display:inline-flex}.ca7yvG_chip:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.ca7yvG_chip[data-active]{background:color-mix(in srgb, var(--room-chip-color,var(--dsw-alias-label-primary,#0f1115)) 14%, transparent);color:var(--room-chip-color,var(--dsw-alias-label-primary,#0f1115));font-weight:500}.ca7yvG_addTrigger{color:var(--dsw-alias-label-tertiary,#81858c);white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;padding:1px 6px;font-size:12px;line-height:18px}.ca7yvG_addTrigger:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f);color:var(--dsw-alias-label-secondary,#61666b)}.ca7yvG_memberDot{border-radius:50%;flex:none;width:6px;height:6px}.ca7yvG_groups{flex-direction:column;gap:10px;max-height:180px;margin:0 -6px;padding:0 6px;display:flex;overflow-y:auto}.ca7yvG_group{flex-direction:column;gap:4px;display:flex}.ca7yvG_head{letter-spacing:.08em;text-transform:uppercase;color:var(--dsw-alias-label-tertiary,#81858c);padding:0 6px;font-size:11px;font-weight:600;line-height:16px}.ca7yvG_list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.ca7yvG_item{min-width:0;color:var(--dsw-alias-label-secondary,#61666b);border-radius:6px;align-items:center;gap:8px;margin:0 -6px;padding:3px 6px;font-size:13px;line-height:20px;display:flex}.ca7yvG_item:hover{background:var(--dsw-alias-interactive-bg-hover,#2631480f)}.ca7yvG_glyph{flex:none;place-items:center;width:16px;height:16px;display:grid}.ca7yvG_glyphDone{color:var(--dsw-alias-state-success-primary,#22c55e);animation:.24s ease-out ca7yvG_room-glyph-pop}@keyframes ca7yvG_room-glyph-pop{0%{transform:scale(.6)}to{transform:scale(1)}}.ca7yvG_glyphPending{color:var(--dsw-alias-label-tertiary,#81858c)}.ca7yvG_glyphCancelled{color:var(--dsw-alias-label-caption,#adb2b8)}.ca7yvG_glyphFailed{color:var(--dsw-alias-state-error-primary,#ec1313)}.ca7yvG_glyphProgress{color:var(--dsw-alias-state-business-primary,#4176e6);animation:1s linear infinite ca7yvG_room-task-progress-spin}@keyframes ca7yvG_room-task-progress-spin{to{transform:rotate(360deg)}}.ca7yvG_content{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.ca7yvG_item[data-status=done] .ca7yvG_title{color:var(--dsw-alias-label-tertiary,#81858c);background-image:linear-gradient(currentColor,currentColor);background-position:0 55%;background-repeat:no-repeat;background-size:100% 1px;animation:.24s ease-out ca7yvG_room-task-strike}@keyframes ca7yvG_room-task-strike{0%{opacity:.5;background-size:0 1px}to{opacity:1;background-size:100% 1px}}@media (prefers-reduced-motion:reduce){.ca7yvG_glyphDone,.ca7yvG_item[data-status=done] .ca7yvG_title{animation:none}}.ca7yvG_item[data-status=cancelled] .ca7yvG_title,.ca7yvG_item[data-blocked] .ca7yvG_title{color:var(--dsw-alias-label-tertiary,#81858c)}.ca7yvG_memberChip{background:var(--dsw-alias-fill-l1,#0000000f);color:var(--dsw-alias-label-secondary,#61666b);white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:4px;padding:0 6px;font-size:12px;line-height:18px;display:inline-flex}.ca7yvG_blockedTag{background:var(--dsw-alias-fill-l1,#0000000f);color:var(--dsw-alias-label-tertiary,#81858c);border-radius:999px;flex:none;padding:0 6px;font-size:12px;line-height:18px}.ca7yvG_meta{color:var(--dsw-alias-label-tertiary,#81858c);white-space:nowrap;flex:none;font-size:12px;line-height:18px}.ca7yvG_action{color:var(--dsw-alias-label-tertiary,#81858c);cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;padding:1px 6px;font-size:12px;line-height:18px}.ca7yvG_action:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover,#2631480f);color:var(--dsw-alias-label-secondary,#61666b)}.ca7yvG_action:disabled{opacity:.4;cursor:default}.ca7yvG_addRow{align-items:center;gap:10px;display:flex}.ca7yvG_memberSelect{max-width:120px;color:var(--dsw-alias-label-secondary,#61666b);cursor:pointer;background:0 0;border:none;outline:none;flex:none;font-size:13px;line-height:20px}.ca7yvG_input{min-width:0;color:var(--dsw-alias-label-primary,#0f1115);caret-color:var(--dsw-alias-state-business-primary,#4176e6);background:0 0;border:none;outline:none;flex:auto;font-size:13px;line-height:20px}.ca7yvG_input::placeholder{color:var(--dsw-alias-label-caption,#adb2b8);user-select:none}.ca7yvG_error{color:var(--dsw-alias-state-error-primary,#ec1313);font-size:12px;line-height:18px}.ca7yvG_capsule:focus:not(:focus-visible),.ca7yvG_addCapsule:focus:not(:focus-visible),.ca7yvG_chip:focus:not(:focus-visible),.ca7yvG_addTrigger:focus:not(:focus-visible),.ca7yvG_action:focus:not(:focus-visible){outline:none}";
7897
+ const tagId$11 = "@khorsheed/dsh-room/RoomDockCapsules.module.css";
7898
+ if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$11) + "]") === null) {
7743
7899
  const tag = document.createElement("style");
7744
7900
  tag.dataset.plugin = "@khorsheed/dsh-room";
7745
- tag.dataset.pluginCss = tagId$10;
7746
- tag.textContent = css$10;
7901
+ tag.dataset.pluginCss = tagId$11;
7902
+ tag.textContent = css$11;
7747
7903
  document.head.appendChild(tag);
7748
7904
  }
7749
7905
  var RoomDockCapsules_module_css_default = {
7750
- "capsuleText": "ca7yvG_capsuleText",
7751
- "checklistIcon": "ca7yvG_checklistIcon",
7752
- "error": "ca7yvG_error",
7753
- "room-capsule-sweep": "ca7yvG_room-capsule-sweep",
7754
- "addCapsule": "ca7yvG_addCapsule",
7755
- "goalEditRow": "ca7yvG_goalEditRow",
7756
- "progressRow": "ca7yvG_progressRow",
7757
- "progressMeta": "ca7yvG_progressMeta",
7758
- "chips": "ca7yvG_chips",
7906
+ "memberSelect": "ca7yvG_memberSelect",
7907
+ "input": "ca7yvG_input",
7908
+ "list": "ca7yvG_list",
7909
+ "addRow": "ca7yvG_addRow",
7759
7910
  "capsulePercent": "ca7yvG_capsulePercent",
7760
- "addTrigger": "ca7yvG_addTrigger",
7761
- "glyphDone": "ca7yvG_glyphDone",
7762
- "room-task-strike": "ca7yvG_room-task-strike",
7763
- "capsuleGuide": "ca7yvG_capsuleGuide",
7764
- "meta": "ca7yvG_meta",
7765
- "card": "ca7yvG_card",
7766
7911
  "groups": "ca7yvG_groups",
7767
- "content": "ca7yvG_content",
7768
- "group": "ca7yvG_group",
7769
- "title": "ca7yvG_title",
7912
+ "card": "ca7yvG_card",
7913
+ "meta": "ca7yvG_meta",
7914
+ "room-task-progress-spin": "ca7yvG_room-task-progress-spin",
7915
+ "addTrigger": "ca7yvG_addTrigger",
7916
+ "glyphCancelled": "ca7yvG_glyphCancelled",
7917
+ "ringTrack": "ca7yvG_ringTrack",
7918
+ "room-glyph-pop": "ca7yvG_room-glyph-pop",
7919
+ "panelBar": "ca7yvG_panelBar",
7770
7920
  "capsule": "ca7yvG_capsule",
7771
- "runner": "ca7yvG_runner",
7772
- "progressTrack": "ca7yvG_progressTrack",
7773
- "blockedTag": "ca7yvG_blockedTag",
7774
- "input": "ca7yvG_input",
7775
- "list": "ca7yvG_list",
7776
- "capsules": "ca7yvG_capsules",
7777
- "glyphCancelled": "ca7yvG_glyphCancelled",
7778
- "chip": "ca7yvG_chip",
7779
- "advanceRow": "ca7yvG_advanceRow",
7780
- "progressFill": "ca7yvG_progressFill",
7781
- "memberSelect": "ca7yvG_memberSelect",
7782
- "room-glyph-pop": "ca7yvG_room-glyph-pop",
7921
+ "glyphDone": "ca7yvG_glyphDone",
7783
7922
  "glyphFailed": "ca7yvG_glyphFailed",
7784
- "goalRow": "ca7yvG_goalRow",
7785
7923
  "root": "ca7yvG_root",
7786
- "runnerSuffix": "ca7yvG_runnerSuffix",
7787
- "runners": "ca7yvG_runners",
7788
- "ringFill": "ca7yvG_ringFill",
7924
+ "blockedTag": "ca7yvG_blockedTag",
7925
+ "error": "ca7yvG_error",
7926
+ "ring": "ca7yvG_ring",
7927
+ "action": "ca7yvG_action",
7928
+ "capsuleCount": "ca7yvG_capsuleCount",
7929
+ "goalRow": "ca7yvG_goalRow",
7789
7930
  "glyphProgress": "ca7yvG_glyphProgress",
7790
- "panelBar": "ca7yvG_panelBar",
7791
- "memberDot": "ca7yvG_memberDot",
7931
+ "runners": "ca7yvG_runners",
7932
+ "group": "ca7yvG_group",
7933
+ "goalText": "ca7yvG_goalText",
7792
7934
  "glyphPending": "ca7yvG_glyphPending",
7793
- "head": "ca7yvG_head",
7935
+ "runner": "ca7yvG_runner",
7936
+ "capsules": "ca7yvG_capsules",
7937
+ "chip": "ca7yvG_chip",
7938
+ "progressRow": "ca7yvG_progressRow",
7939
+ "ringFill": "ca7yvG_ringFill",
7940
+ "progressMeta": "ca7yvG_progressMeta",
7941
+ "chips": "ca7yvG_chips",
7794
7942
  "glyph": "ca7yvG_glyph",
7795
- "room-task-progress-spin": "ca7yvG_room-task-progress-spin",
7943
+ "room-capsule-sweep": "ca7yvG_room-capsule-sweep",
7944
+ "title": "ca7yvG_title",
7796
7945
  "item": "ca7yvG_item",
7797
- "memberChip": "ca7yvG_memberChip",
7798
- "ring": "ca7yvG_ring",
7799
- "addRow": "ca7yvG_addRow",
7946
+ "capsuleText": "ca7yvG_capsuleText",
7947
+ "addCapsule": "ca7yvG_addCapsule",
7948
+ "progressTrack": "ca7yvG_progressTrack",
7949
+ "capsuleGuide": "ca7yvG_capsuleGuide",
7950
+ "runnerSuffix": "ca7yvG_runnerSuffix",
7951
+ "room-task-strike": "ca7yvG_room-task-strike",
7800
7952
  "recentLabel": "ca7yvG_recentLabel",
7801
- "capsuleCount": "ca7yvG_capsuleCount",
7802
- "action": "ca7yvG_action",
7803
- "goalText": "ca7yvG_goalText",
7804
- "ringTrack": "ca7yvG_ringTrack"
7953
+ "progressFill": "ca7yvG_progressFill",
7954
+ "advanceRow": "ca7yvG_advanceRow",
7955
+ "memberDot": "ca7yvG_memberDot",
7956
+ "head": "ca7yvG_head",
7957
+ "goalEditRow": "ca7yvG_goalEditRow",
7958
+ "content": "ca7yvG_content",
7959
+ "memberChip": "ca7yvG_memberChip",
7960
+ "checklistIcon": "ca7yvG_checklistIcon"
7805
7961
  };
7806
7962
  //#endregion
7807
7963
  //#region src/client/RoomDockCapsules.tsx
@@ -8540,31 +8696,31 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8540
8696
  }
8541
8697
  //#endregion
8542
8698
  //#region \0dsh-css:src/client/RoomTodoStrip.module.css.mjs
8543
- const css$9 = ".DjKAXq_root{box-sizing:border-box;margin:0 auto var(--dsh-composer-stack-gap,6px);width:calc(100% - 4 * var(--dsh-composer-dock-inset,8px));max-width:calc(var(--dsh-composer-card-max-width,780px) - 4 * var(--dsh-composer-dock-inset,8px));border:1px solid var(--dsw-alias-border-l1,#00000014);background:var(--dsw-specific-tip,var(--dsw-alias-bg-layer-1,#fff));--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2,#7f7f7f47);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2,#7f7f7f66);border-radius:12px;flex:none;overflow:hidden}.DjKAXq_body{flex-direction:column;gap:8px;padding:6px 12px;display:flex}.DjKAXq_header{text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:10px;width:100%;padding:0;display:flex}.DjKAXq_lead{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:none;place-items:center;display:grid}.DjKAXq_title{color:var(--dsw-alias-label-primary,#1f2329);flex:none;font-size:13px;font-weight:500;line-height:24px}.DjKAXq_progress{min-width:0;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:13px;font-weight:400;line-height:20px;overflow:hidden}.DjKAXq_chevron{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:none;place-items:center;display:grid}.DjKAXq_list{flex-direction:column;gap:8px;max-height:180px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.DjKAXq_item{min-width:0;color:var(--dsw-alias-label-secondary,#1f2329bf);align-items:center;gap:10px;font-size:13px;line-height:20px;display:flex}.DjKAXq_glyph{flex:none;place-items:center;width:16px;height:16px;display:grid}.DjKAXq_glyphCompleted{color:var(--dsw-alias-state-success-primary,#34a853)}.DjKAXq_glyphPending{color:var(--dsw-alias-label-caption,#adb2b8)}.DjKAXq_glyphProgress{color:var(--dsw-alias-state-business-primary,#4176e6);animation:1s linear infinite DjKAXq_room-todo-progress-spin}@keyframes DjKAXq_room-todo-progress-spin{to{transform:rotate(360deg)}}.DjKAXq_content{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.DjKAXq_header:focus:not(:focus-visible){outline:none}";
8544
- const tagId$9 = "@khorsheed/dsh-room/RoomTodoStrip.module.css";
8545
- if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$9) + "]") === null) {
8699
+ const css$10 = ".DjKAXq_root{box-sizing:border-box;margin:0 auto var(--dsh-composer-stack-gap,6px);width:calc(100% - 4 * var(--dsh-composer-dock-inset,8px));max-width:calc(var(--dsh-composer-card-max-width,780px) - 4 * var(--dsh-composer-dock-inset,8px));border:1px solid var(--dsw-alias-border-l1,#00000014);background:var(--dsw-specific-tip,var(--dsw-alias-bg-layer-1,#fff));--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2,#7f7f7f47);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2,#7f7f7f66);border-radius:12px;flex:none;overflow:hidden}.DjKAXq_body{flex-direction:column;gap:8px;padding:6px 12px;display:flex}.DjKAXq_header{text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:10px;width:100%;padding:0;display:flex}.DjKAXq_lead{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:none;place-items:center;display:grid}.DjKAXq_title{color:var(--dsw-alias-label-primary,#1f2329);flex:none;font-size:13px;font-weight:500;line-height:24px}.DjKAXq_progress{min-width:0;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:13px;font-weight:400;line-height:20px;overflow:hidden}.DjKAXq_chevron{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:none;place-items:center;display:grid}.DjKAXq_list{flex-direction:column;gap:8px;max-height:180px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.DjKAXq_item{min-width:0;color:var(--dsw-alias-label-secondary,#1f2329bf);align-items:center;gap:10px;font-size:13px;line-height:20px;display:flex}.DjKAXq_glyph{flex:none;place-items:center;width:16px;height:16px;display:grid}.DjKAXq_glyphCompleted{color:var(--dsw-alias-state-success-primary,#34a853)}.DjKAXq_glyphPending{color:var(--dsw-alias-label-caption,#adb2b8)}.DjKAXq_glyphProgress{color:var(--dsw-alias-state-business-primary,#4176e6);animation:1s linear infinite DjKAXq_room-todo-progress-spin}@keyframes DjKAXq_room-todo-progress-spin{to{transform:rotate(360deg)}}.DjKAXq_content{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.DjKAXq_header:focus:not(:focus-visible){outline:none}";
8700
+ const tagId$10 = "@khorsheed/dsh-room/RoomTodoStrip.module.css";
8701
+ if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$10) + "]") === null) {
8546
8702
  const tag = document.createElement("style");
8547
8703
  tag.dataset.plugin = "@khorsheed/dsh-room";
8548
- tag.dataset.pluginCss = tagId$9;
8549
- tag.textContent = css$9;
8704
+ tag.dataset.pluginCss = tagId$10;
8705
+ tag.textContent = css$10;
8550
8706
  document.head.appendChild(tag);
8551
8707
  }
8552
8708
  var RoomTodoStrip_module_css_default = {
8553
- "room-todo-progress-spin": "DjKAXq_room-todo-progress-spin",
8554
- "item": "DjKAXq_item",
8709
+ "title": "DjKAXq_title",
8710
+ "list": "DjKAXq_list",
8555
8711
  "lead": "DjKAXq_lead",
8556
- "header": "DjKAXq_header",
8557
- "chevron": "DjKAXq_chevron",
8712
+ "item": "DjKAXq_item",
8713
+ "root": "DjKAXq_root",
8714
+ "body": "DjKAXq_body",
8558
8715
  "glyph": "DjKAXq_glyph",
8716
+ "progress": "DjKAXq_progress",
8559
8717
  "glyphCompleted": "DjKAXq_glyphCompleted",
8560
- "list": "DjKAXq_list",
8561
- "root": "DjKAXq_root",
8718
+ "room-todo-progress-spin": "DjKAXq_room-todo-progress-spin",
8562
8719
  "glyphPending": "DjKAXq_glyphPending",
8563
- "glyphProgress": "DjKAXq_glyphProgress",
8720
+ "header": "DjKAXq_header",
8564
8721
  "content": "DjKAXq_content",
8565
- "body": "DjKAXq_body",
8566
- "title": "DjKAXq_title",
8567
- "progress": "DjKAXq_progress"
8722
+ "chevron": "DjKAXq_chevron",
8723
+ "glyphProgress": "DjKAXq_glyphProgress"
8568
8724
  };
8569
8725
  //#endregion
8570
8726
  //#region src/client/RoomTodoStrip.tsx
@@ -8733,37 +8889,116 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8733
8889
  });
8734
8890
  }
8735
8891
  //#endregion
8892
+ //#region src/client/executions.ts
8893
+ function descendantRows(sessions, root, state, now, active = []) {
8894
+ const known = /* @__PURE__ */ new Set([...state.members.map((member) => member.childSessionId), ...(state.executions ?? []).map((run) => run.childSessionId)]);
8895
+ const representedRunning = new Set(executionRows(state).filter((row) => row.status === "running").map((row) => row.childSessionId));
8896
+ const coordinatorChild = state.members.find((member) => state.coordinator === void 0 ? member.kind === "main-agent" : member.id === state.coordinator.memberId)?.childSessionId;
8897
+ const result = [];
8898
+ const seen = /* @__PURE__ */ new Set([root]);
8899
+ const visit = (parent) => {
8900
+ for (const child of Object.values(sessions)) {
8901
+ if (child.parentId !== parent || child.origin !== "subagent" || seen.has(child.id)) continue;
8902
+ seen.add(child.id);
8903
+ const running = child.running === true || active.includes(child.id);
8904
+ if (child.id !== coordinatorChild && (!known.has(child.id) || running && !representedRunning.has(child.id))) {
8905
+ const timing = child.projectionValues?.subagentTiming;
8906
+ const usage = child.projectionValues?.tokenUsage;
8907
+ const elapsedMs = timing === void 0 ? void 0 : timing.settledMs + (timing.active === void 0 ? 0 : Math.max(0, (running ? now : timing.active.through) - timing.active.since));
8908
+ const tokens = usage === void 0 ? void 0 : usage.uncachedInputTokens + usage.outputTokens + usage.cacheReadTokens + usage.cacheWriteTokens;
8909
+ result.push({
8910
+ id: `session:${child.id}`,
8911
+ member: child.displayTitle || child.id,
8912
+ title: child.displayTitle || child.id,
8913
+ childSessionId: child.id,
8914
+ status: running ? "running" : "settled",
8915
+ sessionTotal: true,
8916
+ ...elapsedMs === void 0 ? {} : { elapsedMs },
8917
+ ...tokens === void 0 || !Number.isFinite(tokens) ? {} : { tokens }
8918
+ });
8919
+ }
8920
+ visit(child.id);
8921
+ }
8922
+ };
8923
+ visit(root);
8924
+ return result;
8925
+ }
8926
+ /** One row per delivery/attempt, not one row per persistent member session. */
8927
+ function executionRows(state) {
8928
+ const coordinator = state.members.find((member) => state.coordinator === void 0 ? member.kind === "main-agent" : member.id === state.coordinator.memberId);
8929
+ const history = new Map((state.executions ?? state.runs.map((run) => ({
8930
+ ...run,
8931
+ id: run.runId ?? `${run.member}:${run.startedAt}`
8932
+ }))).map((run) => [run.id, run]));
8933
+ const rows = [];
8934
+ for (const delivery of state.deliveries ?? []) {
8935
+ const execution = history.get(delivery.id);
8936
+ history.delete(delivery.id);
8937
+ const member = state.members.find((member) => member.id === delivery.memberId);
8938
+ if (coordinator !== void 0 && delivery.memberId === coordinator.id || delivery.origin === "report") continue;
8939
+ const task = delivery.plan?.goalId === state.plan?.id ? state.plan?.tasks.find((task) => task.id === delivery.plan?.taskId) : void 0;
8940
+ const attempt = task?.attempts.find((attempt) => attempt.id === delivery.plan?.attemptId);
8941
+ const terminal = delivery.status === "done" && attempt !== void 0 ? attempt.status === "accepted" ? "accepted" : attempt.status === "submitted" ? "submitted" : "done" : delivery.status;
8942
+ const status = execution?.state === "failed" && delivery.status === "running" ? "uncertain" : terminal;
8943
+ const title = task?.title ?? state.tasks.find((task) => task.deliveryId === delivery.id)?.title ?? delivery.text;
8944
+ rows.push({
8945
+ title: title.replace(/\s+/g, " ").trim(),
8946
+ ...member?.provider === void 0 ? {} : { provider: member.provider },
8947
+ ...execution,
8948
+ id: delivery.id,
8949
+ status,
8950
+ member: member?.name ?? execution?.member ?? delivery.memberId,
8951
+ ...execution === void 0 ? {} : { execution },
8952
+ ...execution?.childSessionId !== void 0 || member?.childSessionId === void 0 ? {} : { childSessionId: member.childSessionId },
8953
+ ...delivery.error === void 0 ? {} : { error: delivery.error }
8954
+ });
8955
+ }
8956
+ for (const execution of history.values()) {
8957
+ const member = state.members.find((member) => member.id === execution.memberId || execution.memberId === void 0 && member.name === execution.member);
8958
+ if (coordinator !== void 0 && member === coordinator) continue;
8959
+ rows.push({
8960
+ ...execution,
8961
+ execution,
8962
+ title: state.tasks.find((task) => task.deliveryId === execution.runId)?.title ?? execution.member,
8963
+ status: execution.state,
8964
+ member: member?.name ?? execution.member,
8965
+ ...execution.childSessionId !== void 0 || member?.childSessionId === void 0 ? {} : { childSessionId: member.childSessionId }
8966
+ });
8967
+ }
8968
+ return rows.reverse();
8969
+ }
8970
+ //#endregion
8736
8971
  //#region \0dsh-css:src/client/RoomPlanView.module.css.mjs
8737
- const css$8 = ".rlOoWW_root{color:var(--dsw-alias-label-primary,#333);border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f40);border-radius:10px;min-width:0;max-height:min(45vh,420px);margin:6px 0;padding:10px 12px;font-size:12px;overflow:auto}.rlOoWW_root summary{cursor:pointer;overflow-wrap:anywhere}.rlOoWW_root p{margin:8px 0}.rlOoWW_root button{font:inherit;color:inherit;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f40);cursor:pointer;background:0 0;border-radius:6px;padding:5px 9px}.rlOoWW_root button:disabled{opacity:.45;cursor:default}.rlOoWW_root a{color:var(--dsw-alias-button-info-fill,#315ad5);overflow-wrap:anywhere}.rlOoWW_fields{gap:8px;margin-top:10px;display:grid}.rlOoWW_fields label{gap:4px;display:grid}.rlOoWW_fields textarea{box-sizing:border-box;resize:vertical;width:100%;min-height:52px;font:inherit;color:inherit;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f40);background:0 0;border-radius:6px;padding:6px}.rlOoWW_budget{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin:10px 0;display:grid}.rlOoWW_budget label{gap:4px;display:grid}.rlOoWW_budget input{box-sizing:border-box;width:100%;font:inherit;color:inherit;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f40);background:0 0;border-radius:5px;padding:4px}.rlOoWW_actions{flex-wrap:wrap;gap:6px;margin:8px 0;display:flex}.rlOoWW_stage,.rlOoWW_task,.rlOoWW_childTask,.rlOoWW_attempt,.rlOoWW_review{border-top:1px solid var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f40);margin-top:10px;padding-top:8px}.rlOoWW_childTask{margin-left:14px}.rlOoWW_attempt{padding-left:10px}.rlOoWW_text{white-space:pre-wrap;overflow-wrap:anywhere}.rlOoWW_reference{overflow-wrap:anywhere;font-family:monospace}.rlOoWW_dependency{margin-right:8px}";
8738
- const tagId$8 = "@khorsheed/dsh-room/RoomPlanView.module.css";
8739
- if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$8) + "]") === null) {
8972
+ const css$9 = ".rlOoWW_root{color:var(--dsw-alias-label-primary,#333);border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f40);border-radius:10px;min-width:0;max-height:min(45vh,420px);margin:6px 0;padding:10px 12px;font-size:12px;overflow:auto}.rlOoWW_root summary{cursor:pointer;overflow-wrap:anywhere}.rlOoWW_root p{margin:8px 0}.rlOoWW_root button{font:inherit;color:inherit;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f40);cursor:pointer;background:0 0;border-radius:6px;padding:5px 9px}.rlOoWW_root button:disabled{opacity:.45;cursor:default}.rlOoWW_root a{color:var(--dsw-alias-button-info-fill,#315ad5);overflow-wrap:anywhere}.rlOoWW_fields{gap:8px;margin-top:10px;display:grid}.rlOoWW_fields label{gap:4px;display:grid}.rlOoWW_fields textarea{box-sizing:border-box;resize:vertical;width:100%;min-height:52px;font:inherit;color:inherit;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f40);background:0 0;border-radius:6px;padding:6px}.rlOoWW_budget{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin:10px 0;display:grid}.rlOoWW_budget label{gap:4px;display:grid}.rlOoWW_budget input{box-sizing:border-box;width:100%;font:inherit;color:inherit;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f40);background:0 0;border-radius:5px;padding:4px}.rlOoWW_actions{flex-wrap:wrap;gap:6px;margin:8px 0;display:flex}.rlOoWW_stage,.rlOoWW_task,.rlOoWW_childTask,.rlOoWW_attempt,.rlOoWW_review{border-top:1px solid var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f40);margin-top:10px;padding-top:8px}.rlOoWW_childTask{margin-left:14px}.rlOoWW_attempt{padding-left:10px}.rlOoWW_text{white-space:pre-wrap;overflow-wrap:anywhere}.rlOoWW_reference{overflow-wrap:anywhere;font-family:monospace}.rlOoWW_dependency{margin-right:8px}.rlOoWW_expanded{border:0;max-height:none;margin:0;padding:16px;font-size:13px;overflow:visible}";
8973
+ const tagId$9 = "@khorsheed/dsh-room/RoomPlanView.module.css";
8974
+ if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$9) + "]") === null) {
8740
8975
  const tag = document.createElement("style");
8741
8976
  tag.dataset.plugin = "@khorsheed/dsh-room";
8742
- tag.dataset.pluginCss = tagId$8;
8743
- tag.textContent = css$8;
8977
+ tag.dataset.pluginCss = tagId$9;
8978
+ tag.textContent = css$9;
8744
8979
  document.head.appendChild(tag);
8745
8980
  }
8746
8981
  var RoomPlanView_module_css_default = {
8747
- "budget": "rlOoWW_budget",
8748
- "stage": "rlOoWW_stage",
8749
- "childTask": "rlOoWW_childTask",
8750
8982
  "root": "rlOoWW_root",
8983
+ "budget": "rlOoWW_budget",
8984
+ "task": "rlOoWW_task",
8985
+ "fields": "rlOoWW_fields",
8751
8986
  "attempt": "rlOoWW_attempt",
8752
8987
  "text": "rlOoWW_text",
8753
8988
  "reference": "rlOoWW_reference",
8989
+ "expanded": "rlOoWW_expanded",
8990
+ "stage": "rlOoWW_stage",
8754
8991
  "dependency": "rlOoWW_dependency",
8755
8992
  "review": "rlOoWW_review",
8756
- "actions": "rlOoWW_actions",
8757
- "fields": "rlOoWW_fields",
8758
- "task": "rlOoWW_task"
8993
+ "childTask": "rlOoWW_childTask",
8994
+ "actions": "rlOoWW_actions"
8759
8995
  };
8760
8996
  //#endregion
8761
8997
  //#region src/client/RoomPlanView.tsx
8762
8998
  /** Goal review is optional room chrome; ordinary chat never opens this form. */
8763
- function RoomPlanView({ plan, members, command, openSession, stopMember, t }) {
8999
+ function RoomPlanView({ plan, members, command, openSession, stopMember, expanded = false, t }) {
8764
9000
  const [creating, setCreating] = (0, react.useState)(false);
8765
9001
  const [objective, setObjective] = (0, react.useState)("");
8766
- const [execute, setExecute] = (0, react.useState)(false);
8767
9002
  const [busy, setBusy] = (0, react.useState)(false);
8768
9003
  const [error, setError] = (0, react.useState)(null);
8769
9004
  const [reason, setReason] = (0, react.useState)("");
@@ -8983,7 +9218,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
8983
9218
  }),
8984
9219
  owner && stopMember && attempt?.startedAt !== void 0 && attempt.settledAt === void 0 && ["running", "submitted"].includes(attempt.status) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
8985
9220
  type: "button",
8986
- onClick: () => stopMember(owner.name),
9221
+ onClick: () => stopMember(owner.name, attempt.deliveryId),
8987
9222
  children: t("composer.stop")
8988
9223
  }),
8989
9224
  (uncertain || !closed && (reviewable || task.status === "failed")) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
@@ -9089,30 +9324,41 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9089
9324
  value: objective,
9090
9325
  onChange: (event) => setObjective(event.target.value)
9091
9326
  })] }),
9092
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
9093
- type: "checkbox",
9094
- checked: execute,
9095
- onChange: (event) => setExecute(event.target.checked)
9096
- }), t("plan.execute")] }),
9097
- budgetFields,
9098
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9099
- type: "button",
9100
- disabled: busy || objective.trim() === "",
9101
- onClick: () => {
9102
- run({
9103
- action: "create",
9104
- objective: objective.trim(),
9105
- mode: execute ? "execute" : "draft",
9106
- budget
9107
- });
9108
- },
9109
- children: t(execute ? "plan.start" : "plan.saveDraft")
9327
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("details", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("summary", { children: t("activity.limits") }), budgetFields] }),
9328
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9329
+ className: RoomPlanView_module_css_default.actions,
9330
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9331
+ type: "button",
9332
+ disabled: busy || objective.trim() === "",
9333
+ onClick: () => {
9334
+ run({
9335
+ action: "create",
9336
+ objective: objective.trim(),
9337
+ mode: "execute",
9338
+ budget
9339
+ });
9340
+ },
9341
+ children: t("plan.start")
9342
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9343
+ type: "button",
9344
+ disabled: busy || objective.trim() === "",
9345
+ onClick: () => {
9346
+ run({
9347
+ action: "create",
9348
+ objective: objective.trim(),
9349
+ mode: "draft",
9350
+ budget
9351
+ });
9352
+ },
9353
+ children: t("plan.saveDraft")
9354
+ })]
9110
9355
  })
9111
9356
  ]
9112
9357
  });
9113
9358
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("details", {
9114
- className: RoomPlanView_module_css_default.root,
9359
+ className: expanded ? `${RoomPlanView_module_css_default.root} ${RoomPlanView_module_css_default.expanded}` : RoomPlanView_module_css_default.root,
9115
9360
  "data-testid": "room-plan",
9361
+ open: expanded || void 0,
9116
9362
  children: [
9117
9363
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("summary", { children: plan === void 0 ? t("plan.create") : `${plan.objective} · ${status(plan.status)} · ${t("plan.acceptedCount", {
9118
9364
  done: accepted,
@@ -9123,21 +9369,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9123
9369
  children: error
9124
9370
  }),
9125
9371
  plan === void 0 ? createForm : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
9126
- /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", { children: [
9127
- t("plan.revision"),
9128
- ": ",
9129
- plan.revision,
9130
- " · ",
9131
- t("plan.attempts"),
9132
- ": ",
9133
- plan.tasks.reduce((count, task) => count + task.attempts.length, 0),
9134
- "/",
9135
- plan.budget.maxAttempts,
9136
- " · ",
9137
- t("plan.parallel"),
9138
- ": ",
9139
- plan.budget.maxParallel
9140
- ] }),
9141
9372
  plan.reason && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
9142
9373
  role: "status",
9143
9374
  children: plan.reason
@@ -9183,18 +9414,21 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9183
9414
  if (open) setReviewTask(null);
9184
9415
  },
9185
9416
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("summary", { children: t("plan.goalControls") }), goalControls && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
9186
- budgetFields,
9187
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9188
- type: "button",
9189
- disabled: busy,
9190
- onClick: () => {
9191
- run({
9192
- action: "budget",
9193
- budget
9194
- });
9195
- },
9196
- children: t("plan.updateBudget")
9197
- }),
9417
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("details", { children: [
9418
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("summary", { children: t("activity.limits") }),
9419
+ budgetFields,
9420
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9421
+ type: "button",
9422
+ disabled: busy,
9423
+ onClick: () => {
9424
+ run({
9425
+ action: "budget",
9426
+ budget
9427
+ });
9428
+ },
9429
+ children: t("plan.updateBudget")
9430
+ })
9431
+ ] }),
9198
9432
  evidenceFields,
9199
9433
  /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9200
9434
  className: RoomPlanView_module_css_default.actions,
@@ -9233,6 +9467,352 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9233
9467
  });
9234
9468
  }
9235
9469
  //#endregion
9470
+ //#region \0dsh-css:src/client/RoomActivityDock.module.css.mjs
9471
+ const css$8 = "._0J2h3G_root{width:100%;min-width:0;color:var(--dsw-alias-label-primary,#1f2329);font-size:13px}._0J2h3G_capsules{padding:0 var(--dsh-composer-dock-inset,8px) 6px;flex-wrap:wrap;gap:6px;display:flex}._0J2h3G_capsule{background:var(--dsw-alias-bg-layer-2,#f3f4f6);color:inherit;font:inherit;cursor:pointer;border:1px solid #0000;border-radius:12px;align-items:center;gap:7px;padding:5px 12px;display:inline-flex}._0J2h3G_capsule:hover,._0J2h3G_capsule[aria-expanded=true]{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f26)}._0J2h3G_icon{flex:none;place-items:center;width:16px;height:16px;display:grid}._0J2h3G_runningDot{background:var(--dsw-alias-state-success-primary,#34a853);border-radius:50%;width:8px;height:8px}._0J2h3G_panel{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,#7f7f7f33);background:var(--dsw-specific-menu,var(--dsw-alias-bg-layer-1,#fff));width:100%;max-height:min(48vh,440px);box-shadow:var(--dsw-shadow-lv2,0 4px 16px #0000000d);border-radius:18px;margin-bottom:8px;padding:16px;overflow:auto}._0J2h3G_heading{overflow-wrap:anywhere;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}._0J2h3G_heading strong{font-weight:500}._0J2h3G_filters{flex-wrap:wrap;gap:2px;display:flex}._0J2h3G_filters button,._0J2h3G_footer button{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:7px;padding:5px 8px;font-size:12px}._0J2h3G_filters button[aria-pressed=true],._0J2h3G_filters button:hover,._0J2h3G_footer button:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1f)}._0J2h3G_grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:10px;display:grid}._0J2h3G_card{background:var(--dsw-alias-bg-layer-2,#f5f6f8);border-radius:12px;min-width:0;padding:5px}._0J2h3G_cardMain{box-sizing:border-box;width:100%;color:inherit;text-align:left;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:9px;display:block}._0J2h3G_cardMain:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f14)}._0J2h3G_cardMain:disabled{cursor:default}._0J2h3G_meta{color:var(--dsw-alias-label-tertiary,#737982);flex-wrap:wrap;justify-content:space-between;gap:6px;font-size:12px;display:flex}._0J2h3G_title{-webkit-line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;margin:6px 0;font-weight:500;display:-webkit-box;overflow:hidden}._0J2h3G_secondary{color:var(--dsw-alias-label-tertiary,#737982);overflow-wrap:anywhere;font-size:12px}._0J2h3G_footer{color:var(--dsw-alias-label-tertiary,#737982);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px;padding:0 6px 4px;font-size:12px;display:flex}._0J2h3G_footer button{align-items:center;gap:5px;display:inline-flex}._0J2h3G_footer button:disabled{opacity:.5;cursor:default}._0J2h3G_error{overflow-wrap:anywhere;color:var(--dsw-alias-state-error-primary,#b33);margin:6px 9px;font-size:12px}._0J2h3G_empty{color:var(--dsw-alias-label-tertiary,#737982);text-align:center;padding:14px}._0J2h3G_planList{display:grid}._0J2h3G_planRow{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;overflow-wrap:anywhere;background:0 0;border:0;grid-template-columns:14px minmax(0,1fr) auto;align-items:center;gap:9px;padding:10px 0;display:grid}._0J2h3G_planRow:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f14)}._0J2h3G_taskDot{width:9px;height:9px;color:var(--dsw-alias-label-tertiary,#737982);border:1px solid;border-radius:50%}._0J2h3G_taskDot[data-status=accepted]{background:var(--dsw-alias-state-success-primary,#34a853);border-color:#0000}._0J2h3G_meta [data-status=running],._0J2h3G_taskDot[data-status=running]{color:var(--dsw-alias-state-business-primary,#4176e6)}._0J2h3G_meta [data-status=failed],._0J2h3G_meta [data-status=uncertain]{color:var(--dsw-alias-state-error-primary,#b33)}._0J2h3G_meta [data-status=submitted]{color:var(--dsw-alias-state-warning-primary,#a67018)}@media (width<=500px){._0J2h3G_planRow{grid-template-columns:14px minmax(0,1fr)}._0J2h3G_planRow ._0J2h3G_secondary{grid-column:2}._0J2h3G_panel{padding:12px}}";
9472
+ const tagId$8 = "@khorsheed/dsh-room/RoomActivityDock.module.css";
9473
+ if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$8) + "]") === null) {
9474
+ const tag = document.createElement("style");
9475
+ tag.dataset.plugin = "@khorsheed/dsh-room";
9476
+ tag.dataset.pluginCss = tagId$8;
9477
+ tag.textContent = css$8;
9478
+ document.head.appendChild(tag);
9479
+ }
9480
+ var RoomActivityDock_module_css_default = {
9481
+ "error": "_0J2h3G_error",
9482
+ "runningDot": "_0J2h3G_runningDot",
9483
+ "cardMain": "_0J2h3G_cardMain",
9484
+ "footer": "_0J2h3G_footer",
9485
+ "icon": "_0J2h3G_icon",
9486
+ "panel": "_0J2h3G_panel",
9487
+ "meta": "_0J2h3G_meta",
9488
+ "capsules": "_0J2h3G_capsules",
9489
+ "title": "_0J2h3G_title",
9490
+ "heading": "_0J2h3G_heading",
9491
+ "root": "_0J2h3G_root",
9492
+ "grid": "_0J2h3G_grid",
9493
+ "empty": "_0J2h3G_empty",
9494
+ "filters": "_0J2h3G_filters",
9495
+ "capsule": "_0J2h3G_capsule",
9496
+ "taskDot": "_0J2h3G_taskDot",
9497
+ "secondary": "_0J2h3G_secondary",
9498
+ "planList": "_0J2h3G_planList",
9499
+ "card": "_0J2h3G_card",
9500
+ "planRow": "_0J2h3G_planRow"
9501
+ };
9502
+ //#endregion
9503
+ //#region src/client/RoomActivityDock.tsx
9504
+ const EMPTY_SESSIONS = { byId: {} };
9505
+ const NO_SESSIONS = {
9506
+ subscribe: () => () => {},
9507
+ getSnapshot: () => EMPTY_SESSIONS
9508
+ };
9509
+ /** Composer-owned capsules: panels grow above their triggers, never into the input. */
9510
+ function RoomActivityDock({ state, sessionId, backgroundSessions = NO_SESSIONS, activeChildren, stopChild, openSession, stopExecution, planCommand, openPlan, stopMember, t }) {
9511
+ const [expanded, setExpanded] = (0, react.useState)(null);
9512
+ const [filter, setFilter] = (0, react.useState)("recent");
9513
+ const [detail, setDetail] = (0, react.useState)(false);
9514
+ const [pending, setPending] = (0, react.useState)(null);
9515
+ const [error, setError] = (0, react.useState)(null);
9516
+ const [now, setNow] = (0, react.useState)(Date.now);
9517
+ const [active, setActive] = (0, react.useState)([]);
9518
+ const root = (0, react.useRef)(null);
9519
+ const id = (0, react.useId)();
9520
+ const sessions = (0, react.useSyncExternalStore)(backgroundSessions.subscribe, backgroundSessions.getSnapshot);
9521
+ const descendants = sessionId === void 0 ? [] : descendantRows(sessions.byId, sessionId, state, now, active);
9522
+ const rows = [...executionRows(state), ...descendants];
9523
+ const hasChildren = Object.values(sessions.byId).some((child) => child.parentId === sessionId && child.origin === "subagent");
9524
+ (0, react.useEffect)(() => {
9525
+ if (!activeChildren || !hasChildren) return;
9526
+ let disposed = false;
9527
+ let pending = false;
9528
+ const refresh = async () => {
9529
+ if (pending) return;
9530
+ pending = true;
9531
+ try {
9532
+ const value = await activeChildren();
9533
+ if (!disposed && value !== void 0) setActive(value);
9534
+ } catch {} finally {
9535
+ pending = false;
9536
+ }
9537
+ };
9538
+ refresh();
9539
+ const timer = setInterval(() => {
9540
+ refresh();
9541
+ }, 2e3);
9542
+ return () => {
9543
+ disposed = true;
9544
+ clearInterval(timer);
9545
+ };
9546
+ }, [activeChildren, hasChildren]);
9547
+ const running = rows.filter((row) => row.status === "running");
9548
+ (0, react.useEffect)(() => {
9549
+ if (expanded === null) return;
9550
+ const close = (event) => {
9551
+ if (event.target instanceof Node && !root.current?.contains(event.target)) setExpanded(null);
9552
+ };
9553
+ const escape = (event) => {
9554
+ if (event.key === "Escape") {
9555
+ setExpanded(null);
9556
+ root.current?.querySelector("[aria-expanded=\"true\"]")?.focus();
9557
+ }
9558
+ };
9559
+ document.addEventListener("pointerdown", close);
9560
+ document.addEventListener("keydown", escape);
9561
+ return () => {
9562
+ document.removeEventListener("pointerdown", close);
9563
+ document.removeEventListener("keydown", escape);
9564
+ };
9565
+ }, [expanded]);
9566
+ (0, react.useEffect)(() => {
9567
+ if (expanded !== "agents" || running.length === 0) return;
9568
+ setNow(Date.now());
9569
+ const timer = setInterval(() => setNow(Date.now()), 1e3);
9570
+ return () => clearInterval(timer);
9571
+ }, [expanded, running.length]);
9572
+ const stop = async (row) => {
9573
+ if (pending !== null) return;
9574
+ setPending(row.id);
9575
+ setError(null);
9576
+ try {
9577
+ const result = row.sessionTotal && row.childSessionId ? await stopChild?.(row.childSessionId) : row.execution ? await stopExecution?.(row.member, row.execution) : void 0;
9578
+ if (!result) return;
9579
+ if (!result.ok) setError(result.message);
9580
+ } catch {
9581
+ setError(t("composer.error.generic"));
9582
+ } finally {
9583
+ setPending(null);
9584
+ }
9585
+ };
9586
+ const leaf = state.plan?.tasks.filter((task) => task.kind === "task" && task.status !== "cancelled") ?? [];
9587
+ const accepted = leaf.filter((task) => task.status === "accepted").length;
9588
+ const visible = filter === "running" ? running : filter === "attention" ? rows.filter((row) => [
9589
+ "failed",
9590
+ "uncertain",
9591
+ "submitted"
9592
+ ].includes(row.status)) : filter === "recent" ? rows.slice(0, 6) : rows;
9593
+ if (rows.length === 0 && state.plan === void 0) return null;
9594
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9595
+ ref: root,
9596
+ className: RoomActivityDock_module_css_default.root,
9597
+ "data-testid": "room-activity-dock",
9598
+ children: [
9599
+ expanded === "agents" && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
9600
+ className: RoomActivityDock_module_css_default.panel,
9601
+ id: `${id}-agents`,
9602
+ "aria-label": t("activity.agents"),
9603
+ children: [
9604
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9605
+ className: RoomActivityDock_module_css_default.heading,
9606
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: t("activity.agents") }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9607
+ className: RoomActivityDock_module_css_default.filters,
9608
+ children: [
9609
+ "recent",
9610
+ "running",
9611
+ "attention",
9612
+ "all"
9613
+ ].map((value) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9614
+ type: "button",
9615
+ "aria-pressed": filter === value,
9616
+ onClick: () => setFilter(value),
9617
+ children: t(`activity.filter.${value}`)
9618
+ }, value))
9619
+ })]
9620
+ }),
9621
+ error && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
9622
+ role: "alert",
9623
+ children: error
9624
+ }),
9625
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9626
+ className: RoomActivityDock_module_css_default.grid,
9627
+ children: visible.map((row) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("article", {
9628
+ className: RoomActivityDock_module_css_default.card,
9629
+ children: [
9630
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
9631
+ type: "button",
9632
+ className: RoomActivityDock_module_css_default.cardMain,
9633
+ disabled: !row.childSessionId || !openSession,
9634
+ onClick: () => row.childSessionId && openSession?.(row.childSessionId),
9635
+ "aria-label": `${t("activity.session")}: ${row.title}`,
9636
+ children: [
9637
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
9638
+ className: RoomActivityDock_module_css_default.meta,
9639
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: row.member }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
9640
+ "data-status": row.status,
9641
+ children: t(`activity.status.${row.status}`)
9642
+ })]
9643
+ }),
9644
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
9645
+ className: RoomActivityDock_module_css_default.title,
9646
+ title: row.title,
9647
+ children: row.title
9648
+ }),
9649
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
9650
+ className: RoomActivityDock_module_css_default.secondary,
9651
+ children: [
9652
+ row.provider,
9653
+ row.model,
9654
+ row.effort
9655
+ ].filter(Boolean).join(" · ")
9656
+ })
9657
+ ]
9658
+ }),
9659
+ row.error && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
9660
+ className: RoomActivityDock_module_css_default.error,
9661
+ children: row.error
9662
+ }),
9663
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9664
+ className: RoomActivityDock_module_css_default.footer,
9665
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [
9666
+ row.sessionTotal ? `${t("activity.sessionTotal")} · ` : "",
9667
+ row.status === "queued" ? t("activity.notStarted") : row.status === "running" && row.startedAt !== void 0 ? formatDurationMs(Math.max(0, now - row.startedAt)) : row.elapsedMs === void 0 ? "—" : formatDurationMs(row.elapsedMs),
9668
+ row.tokens === void 0 ? "" : ` · ${Intl.NumberFormat(void 0, {
9669
+ notation: "compact",
9670
+ maximumFractionDigits: 1
9671
+ }).format(row.tokens)} tok`
9672
+ ] }), row.status === "running" && (row.execution && stopExecution || row.sessionTotal && stopChild) ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
9673
+ type: "button",
9674
+ disabled: pending !== null,
9675
+ onClick: () => {
9676
+ stop(row);
9677
+ },
9678
+ "aria-label": `${t("activity.stop")}: ${row.title}`,
9679
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconStopFillMedium, { size: 12 }), t("activity.stop")]
9680
+ }) : row.childSessionId && openSession && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9681
+ type: "button",
9682
+ onClick: () => openSession(row.childSessionId),
9683
+ children: t("activity.session")
9684
+ })]
9685
+ })
9686
+ ]
9687
+ }, row.id))
9688
+ }),
9689
+ visible.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
9690
+ className: RoomActivityDock_module_css_default.empty,
9691
+ children: t("activity.empty")
9692
+ })
9693
+ ]
9694
+ }),
9695
+ expanded === "plan" && state.plan && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
9696
+ className: RoomActivityDock_module_css_default.panel,
9697
+ id: `${id}-plan`,
9698
+ "aria-label": t("activity.plan"),
9699
+ children: [
9700
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9701
+ className: RoomActivityDock_module_css_default.heading,
9702
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: state.plan.objective }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
9703
+ className: RoomActivityDock_module_css_default.secondary,
9704
+ children: [
9705
+ t(`plan.status.${state.plan.status}`),
9706
+ " · ",
9707
+ t("plan.acceptedCount", {
9708
+ done: accepted,
9709
+ total: leaf.length
9710
+ })
9711
+ ]
9712
+ })]
9713
+ }),
9714
+ state.plan.reason && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
9715
+ className: RoomActivityDock_module_css_default.error,
9716
+ children: state.plan.reason
9717
+ }),
9718
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
9719
+ className: RoomActivityDock_module_css_default.planList,
9720
+ children: leaf.map((task) => {
9721
+ const member = state.members.find((member) => member.id === task.ownerMemberId);
9722
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
9723
+ type: "button",
9724
+ className: RoomActivityDock_module_css_default.planRow,
9725
+ onClick: () => {
9726
+ if (openPlan) openPlan();
9727
+ else setDetail(true);
9728
+ },
9729
+ children: [
9730
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
9731
+ className: RoomActivityDock_module_css_default.taskDot,
9732
+ "data-status": task.status,
9733
+ "aria-hidden": true
9734
+ }),
9735
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: task.title }),
9736
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
9737
+ className: RoomActivityDock_module_css_default.secondary,
9738
+ children: [
9739
+ member?.name,
9740
+ " · ",
9741
+ t(`plan.status.${task.status}`)
9742
+ ]
9743
+ })
9744
+ ]
9745
+ }, task.id);
9746
+ })
9747
+ }),
9748
+ leaf.length === 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
9749
+ className: RoomActivityDock_module_css_default.empty,
9750
+ children: t("activity.planning")
9751
+ }),
9752
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9753
+ className: RoomActivityDock_module_css_default.footer,
9754
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
9755
+ type: "button",
9756
+ onClick: () => {
9757
+ if (openPlan) openPlan();
9758
+ else setDetail((value) => !value);
9759
+ },
9760
+ children: t("activity.planDetails")
9761
+ })]
9762
+ }),
9763
+ detail && !openPlan && planCommand && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RoomPlanView, {
9764
+ expanded: true,
9765
+ plan: state.plan,
9766
+ members: state.members,
9767
+ command: planCommand,
9768
+ openSession,
9769
+ stopMember,
9770
+ t
9771
+ })
9772
+ ]
9773
+ }),
9774
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
9775
+ className: RoomActivityDock_module_css_default.capsules,
9776
+ children: [rows.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
9777
+ type: "button",
9778
+ className: RoomActivityDock_module_css_default.capsule,
9779
+ "aria-expanded": expanded === "agents",
9780
+ "aria-controls": `${id}-agents`,
9781
+ title: running.length > 0 ? t("activity.runningHint", { count: new Set(running.map((row) => row.member)).size }) : t("activity.agents"),
9782
+ onClick: () => setExpanded((value) => value === "agents" ? null : "agents"),
9783
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
9784
+ className: RoomActivityDock_module_css_default.icon,
9785
+ children: running.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
9786
+ className: RoomActivityDock_module_css_default.runningDot,
9787
+ "data-testid": "room-running-dot",
9788
+ "aria-hidden": true
9789
+ }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconAgentPresetOutlineMedium, { size: 16 })
9790
+ }), t("activity.agents")]
9791
+ }), state.plan && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
9792
+ type: "button",
9793
+ className: RoomActivityDock_module_css_default.capsule,
9794
+ "aria-expanded": expanded === "plan",
9795
+ "aria-controls": `${id}-plan`,
9796
+ onClick: () => setExpanded((value) => value === "plan" ? null : "plan"),
9797
+ children: [
9798
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(IconChecklistOutlineMedium, { size: 16 }),
9799
+ t("activity.plan"),
9800
+ " ",
9801
+ /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
9802
+ className: RoomActivityDock_module_css_default.secondary,
9803
+ children: [
9804
+ accepted,
9805
+ "/",
9806
+ leaf.length
9807
+ ]
9808
+ })
9809
+ ]
9810
+ })]
9811
+ })
9812
+ ]
9813
+ });
9814
+ }
9815
+ //#endregion
9236
9816
  //#region \0dsh-css:src/client/RoomQueueStrip.module.css.mjs
9237
9817
  const css$7 = ".t5cYHq_root{box-sizing:border-box;margin:0 auto var(--dsh-composer-stack-gap,6px);width:calc(100% - 4 * var(--dsh-composer-dock-inset,8px));max-width:calc(var(--dsh-composer-card-max-width,780px) - 4 * var(--dsh-composer-dock-inset,8px));border:1px solid var(--dsw-alias-border-l1,#00000014);background:var(--dsw-specific-tip,var(--dsw-alias-bg-layer-1,#fff));border-radius:12px;flex:none;overflow:hidden}.t5cYHq_header{box-sizing:border-box;width:100%;min-height:36px;color:var(--dsw-alias-label-primary,#1f2329);text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:10px;padding:4px 12px;display:flex}.t5cYHq_lead{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:none;place-items:center;display:grid}.t5cYHq_count{flex:auto;min-width:0;font-size:13px;font-weight:500;line-height:24px}.t5cYHq_chevron{width:14px;height:14px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);flex:none;place-items:center;display:grid}.t5cYHq_list{--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2,#7f7f7f47);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2,#7f7f7f66);max-height:180px;margin:0;padding:0 12px 6px;list-style:none;overflow-y:auto}.t5cYHq_row{box-sizing:border-box;align-items:center;gap:10px;width:100%;min-height:28px;display:flex}.t5cYHq_preview{min-width:0;color:var(--dsw-alias-label-primary-dimmed,#1f23299e);text-overflow:ellipsis;white-space:nowrap;word-break:break-word;flex:auto;font-size:13px;line-height:20px;overflow:hidden}.t5cYHq_header:focus:not(:focus-visible){outline:none}";
9238
9818
  const tagId$7 = "@khorsheed/dsh-room/RoomQueueStrip.module.css";
@@ -9244,14 +9824,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9244
9824
  document.head.appendChild(tag);
9245
9825
  }
9246
9826
  var RoomQueueStrip_module_css_default = {
9827
+ "lead": "t5cYHq_lead",
9247
9828
  "root": "t5cYHq_root",
9248
- "list": "t5cYHq_list",
9829
+ "header": "t5cYHq_header",
9249
9830
  "chevron": "t5cYHq_chevron",
9250
9831
  "preview": "t5cYHq_preview",
9251
- "count": "t5cYHq_count",
9832
+ "list": "t5cYHq_list",
9252
9833
  "row": "t5cYHq_row",
9253
- "header": "t5cYHq_header",
9254
- "lead": "t5cYHq_lead"
9834
+ "count": "t5cYHq_count"
9255
9835
  };
9256
9836
  //#endregion
9257
9837
  //#region src/client/RoomQueueStrip.tsx
@@ -9433,24 +10013,24 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9433
10013
  document.head.appendChild(tag);
9434
10014
  }
9435
10015
  var RoomModelPicker_module_css_default = {
9436
- "groups": "_0nCswa_groups",
9437
- "check": "_0nCswa_check",
10016
+ "trigger": "_0nCswa_trigger",
9438
10017
  "menu": "_0nCswa_menu",
9439
- "group": "_0nCswa_group",
9440
- "option": "_0nCswa_option",
9441
- "triggerEffort": "_0nCswa_triggerEffort",
10018
+ "chevronOpen": "_0nCswa_chevronOpen",
10019
+ "groups": "_0nCswa_groups",
9442
10020
  "root": "_0nCswa_root",
9443
- "cellChevron": "_0nCswa_cellChevron",
9444
- "cellValue": "_0nCswa_cellValue",
9445
10021
  "triggerLabel": "_0nCswa_triggerLabel",
9446
10022
  "cell": "_0nCswa_cell",
10023
+ "cellChevron": "_0nCswa_cellChevron",
10024
+ "status": "_0nCswa_status",
9447
10025
  "cellLabel": "_0nCswa_cellLabel",
9448
- "chevronOpen": "_0nCswa_chevronOpen",
10026
+ "group": "_0nCswa_group",
10027
+ "option": "_0nCswa_option",
10028
+ "triggerEffort": "_0nCswa_triggerEffort",
10029
+ "chevron": "_0nCswa_chevron",
9449
10030
  "groupTitle": "_0nCswa_groupTitle",
9450
- "trigger": "_0nCswa_trigger",
9451
10031
  "modelName": "_0nCswa_modelName",
9452
- "chevron": "_0nCswa_chevron",
9453
- "status": "_0nCswa_status"
10032
+ "cellValue": "_0nCswa_cellValue",
10033
+ "check": "_0nCswa_check"
9454
10034
  };
9455
10035
  //#endregion
9456
10036
  //#region src/client/RoomModelPicker.tsx
@@ -9707,19 +10287,19 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9707
10287
  document.head.appendChild(tag);
9708
10288
  }
9709
10289
  var RoomComposer_module_css_default = {
9710
- "menu": "UGGjQG_menu",
9711
- "dot": "UGGjQG_dot",
10290
+ "dock": "UGGjQG_dock",
9712
10291
  "hint": "UGGjQG_hint",
9713
- "error": "UGGjQG_error",
9714
10292
  "card": "UGGjQG_card",
10293
+ "row": "UGGjQG_row",
10294
+ "primary": "UGGjQG_primary",
9715
10295
  "coordinator": "UGGjQG_coordinator",
10296
+ "dot": "UGGjQG_dot",
10297
+ "item": "UGGjQG_item",
9716
10298
  "input": "UGGjQG_input",
9717
- "row": "UGGjQG_row",
9718
10299
  "itemActive": "UGGjQG_itemActive",
9719
- "item": "UGGjQG_item",
9720
- "root": "UGGjQG_root",
9721
- "dock": "UGGjQG_dock",
9722
- "primary": "UGGjQG_primary"
10300
+ "menu": "UGGjQG_menu",
10301
+ "error": "UGGjQG_error",
10302
+ "root": "UGGjQG_root"
9723
10303
  };
9724
10304
  //#endregion
9725
10305
  //#region src/client/RoomComposer.tsx
@@ -9802,7 +10382,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9802
10382
  return sessionId !== void 0 && isRoomCached(sessionId) ? { room: true } : null;
9803
10383
  }
9804
10384
  /** The room composer takeover component. */
9805
- function RoomComposer({ sessionId, roomStore, submit, stop, addTask, closeTask, setGoal, planCommand, openPlanSession, reconcileDelivery, roomCwd, invite, listProviders, listNames, browseDirectory, modelSurface, renderHarnessModelPicker, roomChrome, modelDirectory, renderMemberConfiguration, renderMemberInbox, stopMember, useSession, useProjection, t }) {
10385
+ function RoomComposer({ sessionId, roomStore, submit, stop, addTask, closeTask, setGoal, planCommand, openPlanSession, openPlan, stopExecution, backgroundSessions, activeChildren, stopChild, reconcileDelivery, roomCwd, invite, listProviders, listNames, browseDirectory, modelSurface, renderHarnessModelPicker, roomChrome, modelDirectory, renderMemberConfiguration, renderMemberInbox, stopMember, useSession, useProjection, t }) {
9806
10386
  const state = (0, react.useSyncExternalStore)(roomStore.subscribe, () => roomStore.getCached(sessionId));
9807
10387
  const [draft, setDraft] = (0, react.useState)("");
9808
10388
  const [busy, setBusy] = (0, react.useState)(false);
@@ -9915,7 +10495,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9915
10495
  useProjection,
9916
10496
  t
9917
10497
  }),
9918
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RoomDockCapsules, {
10498
+ (state === void 0 || state.plan === void 0 && (state.executions?.length ?? 0) === 0) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RoomDockCapsules, {
9919
10499
  sessionId,
9920
10500
  roomStore,
9921
10501
  addTask,
@@ -9932,14 +10512,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9932
10512
  roomChrome,
9933
10513
  t
9934
10514
  }),
9935
- state !== void 0 && planCommand !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RoomPlanView, {
9936
- plan: state.plan,
9937
- members: state.members,
9938
- command: planCommand,
9939
- openSession: openPlanSession,
9940
- stopMember,
9941
- t
9942
- }),
9943
10515
  state !== void 0 && reconcileDelivery !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RoomRecoveryView, {
9944
10516
  deliveries: state.deliveries ?? [],
9945
10517
  members: state.members,
@@ -9953,7 +10525,20 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
9953
10525
  preview: row.status === "uncertain" ? `${row.error ?? "Outcome unknown"}: ${row.text}` : row.text
9954
10526
  }))],
9955
10527
  t
9956
- })
10528
+ }),
10529
+ state !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RoomActivityDock, {
10530
+ sessionId,
10531
+ state,
10532
+ backgroundSessions,
10533
+ activeChildren,
10534
+ stopChild,
10535
+ openSession: openPlanSession,
10536
+ stopExecution,
10537
+ planCommand,
10538
+ openPlan,
10539
+ stopMember,
10540
+ t
10541
+ }, sessionId)
9957
10542
  ]
9958
10543
  }),
9959
10544
  error !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
@@ -10079,6 +10664,27 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10079
10664
  });
10080
10665
  }
10081
10666
  //#endregion
10667
+ //#region src/client/RoomPlanTab.tsx
10668
+ const ROOM_PLAN_KIND = "room-plan";
10669
+ const ROOM_PLAN_TAB_ID = "@khorsheed/dsh-room/plan";
10670
+ /** Uses the host's session-scoped sidebar, with the same review commands as the dock. */
10671
+ function RoomPlanTab({ sessionId, roomStore, planCommand, openPlanSession, stopMember, t }) {
10672
+ const state = (0, react.useSyncExternalStore)(roomStore.subscribe, () => roomStore.getCached(sessionId));
10673
+ (0, react.useEffect)(() => {
10674
+ roomStore.ensure(sessionId);
10675
+ }, [roomStore, sessionId]);
10676
+ if (!state || !planCommand) return null;
10677
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RoomPlanView, {
10678
+ expanded: true,
10679
+ plan: state.plan,
10680
+ members: state.members,
10681
+ command: planCommand,
10682
+ openSession: openPlanSession,
10683
+ stopMember,
10684
+ t
10685
+ }, sessionId);
10686
+ }
10687
+ //#endregion
10082
10688
  //#region \0dsh-css:src/client/RoomSpeechView.module.css.mjs
10083
10689
  const css$4 = ".tEFZ_W_speech{flex-direction:column;gap:2px;padding-left:8px;display:flex}.tEFZ_W_identity{align-items:center;gap:6px;height:22px;display:flex}.tEFZ_W_dot{border-radius:50%;flex:none;width:8px;height:8px}.tEFZ_W_chip{color:var(--dsw-alias-label-primary,#1f2329);white-space:nowrap;background:#6187d838;border-radius:6px;padding:0 8px;font-size:12px;line-height:1.6;display:inline-block}.tEFZ_W_provider{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);font-size:12px;line-height:18px}.tEFZ_W_body{color:var(--dsw-alias-label-primary,#1f2329);font-size:14px;line-height:24px}.tEFZ_W_clamped{max-height:240px;position:relative;overflow:hidden}.tEFZ_W_fade{background:linear-gradient(180deg, color-mix(in srgb, var(--dsw-alias-bg-base,#fff) 0%, transparent), var(--dsw-alias-bg-base,#fff));height:48px;position:absolute;bottom:0;left:0;right:0}.tEFZ_W_expandToggle{color:var(--dsw-alias-state-business-primary,#4176e6);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-size:12px;line-height:18px}.tEFZ_W_actions{align-items:center;gap:10px;height:28px;display:flex}.tEFZ_W_action{width:28px;height:28px;color:var(--dsw-alias-label-tertiary,#7f7f7fcc);cursor:pointer;background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;padding:6px;display:inline-flex}.tEFZ_W_action:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f24);color:var(--dsw-alias-label-secondary,#5a5a5ae6)}.tEFZ_W_meta,.tEFZ_W_time{color:var(--dsw-alias-label-tertiary,#7f7f7fcc);white-space:nowrap;font-size:14px;line-height:24px}@media (hover:hover){[data-time-hover-root] .tEFZ_W_time{opacity:0;transition:opacity 80ms}[data-time-hover-root]:hover .tEFZ_W_time,[data-time-hover-root]:focus-within .tEFZ_W_time{opacity:1}}.tEFZ_W_action:focus:not(:focus-visible),.tEFZ_W_expandToggle:focus:not(:focus-visible){outline:none}";
10084
10690
  const tagId$4 = "@khorsheed/dsh-room/RoomSpeechView.module.css";
@@ -10090,19 +10696,19 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10090
10696
  document.head.appendChild(tag);
10091
10697
  }
10092
10698
  var RoomSpeechView_module_css_default = {
10093
- "chip": "tEFZ_W_chip",
10094
- "actions": "tEFZ_W_actions",
10095
- "meta": "tEFZ_W_meta",
10096
- "body": "tEFZ_W_body",
10097
- "action": "tEFZ_W_action",
10098
- "speech": "tEFZ_W_speech",
10699
+ "provider": "tEFZ_W_provider",
10099
10700
  "dot": "tEFZ_W_dot",
10100
10701
  "identity": "tEFZ_W_identity",
10101
- "fade": "tEFZ_W_fade",
10102
- "provider": "tEFZ_W_provider",
10103
- "expandToggle": "tEFZ_W_expandToggle",
10702
+ "body": "tEFZ_W_body",
10104
10703
  "clamped": "tEFZ_W_clamped",
10105
- "time": "tEFZ_W_time"
10704
+ "fade": "tEFZ_W_fade",
10705
+ "action": "tEFZ_W_action",
10706
+ "chip": "tEFZ_W_chip",
10707
+ "speech": "tEFZ_W_speech",
10708
+ "actions": "tEFZ_W_actions",
10709
+ "meta": "tEFZ_W_meta",
10710
+ "time": "tEFZ_W_time",
10711
+ "expandToggle": "tEFZ_W_expandToggle"
10106
10712
  };
10107
10713
  //#endregion
10108
10714
  //#region src/client/RoomSpeechView.tsx
@@ -10256,13 +10862,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10256
10862
  document.head.appendChild(tag);
10257
10863
  }
10258
10864
  var RoomRunView_module_css_default = {
10259
- "dsh-room-run-sweep": "_7amxlW_dsh-room-run-sweep",
10260
- "reason": "_7amxlW_reason",
10261
- "leading": "_7amxlW_leading",
10262
- "run": "_7amxlW_run",
10263
10865
  "title": "_7amxlW_title",
10866
+ "run": "_7amxlW_run",
10264
10867
  "elapsed": "_7amxlW_elapsed",
10265
- "stop": "_7amxlW_stop"
10868
+ "reason": "_7amxlW_reason",
10869
+ "leading": "_7amxlW_leading",
10870
+ "stop": "_7amxlW_stop",
10871
+ "dsh-room-run-sweep": "_7amxlW_dsh-room-run-sweep"
10266
10872
  };
10267
10873
  //#endregion
10268
10874
  //#region src/client/RoomRunView.tsx
@@ -10806,8 +11412,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10806
11412
  };
10807
11413
  //#endregion
10808
11414
  //#region src/client/preset-visibility.ts
10809
- /** The composition criterion's row: room's companion tool package. */
10810
- const ROOM_TOOL_ROW_MODULE = "@khorsheed/dsh-room-tool";
11415
+ /** The composition criterion's row: this package's own `./tool` composition entry. */
11416
+ const ROOM_TOOL_ROW_MODULE = "@khorsheed/dsh-room/tool";
10811
11417
  /** The current session's agent preset, the badge's dual read per host line. */
10812
11418
  function presetOf(row) {
10813
11419
  const value = row?.projectionValues?.agentPreset ?? row?.agentPreset;
@@ -10915,9 +11521,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
10915
11521
  document.head.appendChild(tag);
10916
11522
  }
10917
11523
  var RoomRelayView_module_css_default = {
10918
- "action": "_79-ovW_action",
10919
11524
  "row": "_79-ovW_row",
10920
- "text": "_79-ovW_text"
11525
+ "text": "_79-ovW_text",
11526
+ "action": "_79-ovW_action"
10921
11527
  };
10922
11528
  //#endregion
10923
11529
  //#region src/client/RoomRelayView.tsx
@@ -11352,6 +11958,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11352
11958
  locale: NS,
11353
11959
  inject: (sessionId) => inviteFace(sessionId)
11354
11960
  }, InviteAgentAction));
11961
+ const sidebar = ctx.get("sidebarRight");
11962
+ const sidebarTabs = ctx.get("sidebarRightTabs");
11355
11963
  const composerEntry = {
11356
11964
  name: "conversation.composer",
11357
11965
  priority: -10,
@@ -11385,13 +11993,45 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11385
11993
  };
11386
11994
  },
11387
11995
  openPlanSession: (id) => openSession(id),
11996
+ backgroundSessions: ctx.sessions.list,
11997
+ activeChildren: async () => {
11998
+ const result = await ctx.get("remote.localAgentGateway")?.activeDelegations?.();
11999
+ return result?.ok ? result.value : void 0;
12000
+ },
12001
+ stopChild: async (childSessionId) => {
12002
+ const result = await remote?.cancelChild({
12003
+ sessionId,
12004
+ childSessionId
12005
+ });
12006
+ return result?.ok && result.value.ok && result.value.value.cancelled ? { ok: true } : {
12007
+ ok: false,
12008
+ message: t("activity.stopChanged")
12009
+ };
12010
+ },
12011
+ ...sidebar === void 0 || sidebarTabs === void 0 ? {} : { openPlan: () => {
12012
+ sidebar.openTab(ROOM_PLAN_KIND, { params: {} });
12013
+ } },
12014
+ stopExecution: async (name, run) => {
12015
+ const result = await remote?.cancel({
12016
+ sessionId,
12017
+ name,
12018
+ expectedStartedAt: run.startedAt,
12019
+ ...run.runId === void 0 ? {} : { expectedRunId: run.runId }
12020
+ });
12021
+ await roomStore.refresh(sessionId);
12022
+ return result?.ok && result.value.ok && result.value.value.cancelled ? { ok: true } : {
12023
+ ok: false,
12024
+ message: t("activity.stopChanged")
12025
+ };
12026
+ },
11388
12027
  submit,
11389
12028
  renderMemberConfiguration: ctx.get("localAgentUi")?.renderMemberConfiguration,
11390
12029
  renderMemberInbox: ctx.get("localAgentUi")?.renderMemberInbox,
11391
- stopMember: (name) => {
12030
+ stopMember: (name, expectedRunId) => {
11392
12031
  remote?.cancel({
11393
12032
  sessionId,
11394
- name
12033
+ name,
12034
+ ...expectedRunId === void 0 ? {} : { expectedRunId }
11395
12035
  }).then(() => roomStore.refresh(sessionId));
11396
12036
  },
11397
12037
  modelDirectory: modelDirectoryFor(sessionId),
@@ -11400,6 +12040,33 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
11400
12040
  }
11401
12041
  })
11402
12042
  };
12043
+ if (sidebar !== void 0 && sidebarTabs !== void 0) {
12044
+ const planToggle = new RegistrationToggle(() => sidebarTabs.register({
12045
+ id: ROOM_PLAN_TAB_ID,
12046
+ kind: ROOM_PLAN_KIND,
12047
+ title: () => t("activity.plan")
12048
+ }), () => roomChrome.show(mainSessionId(ctx.sessions.list.getSnapshot())));
12049
+ planToggle.setReady(true);
12050
+ const unsubscribe = roomChrome.subscribe(() => planToggle.sync());
12051
+ disposers.push(async () => {
12052
+ unsubscribe();
12053
+ planToggle.setReady(false);
12054
+ });
12055
+ ctx.slots.inject("sidebar.right.pane.tab", () => ctx.slots.register({
12056
+ name: "sidebar.right.pane.tab",
12057
+ key: ROOM_PLAN_TAB_ID,
12058
+ locale: NS,
12059
+ inject: (sessionId) => {
12060
+ const { roomStore, planCommand, openPlanSession, stopMember } = composerEntry.inject(sessionId);
12061
+ return {
12062
+ roomStore,
12063
+ planCommand,
12064
+ openPlanSession,
12065
+ stopMember
12066
+ };
12067
+ }
12068
+ }, RoomPlanTab));
12069
+ }
11403
12070
  let composerDispose;
11404
12071
  ctx.slots.inject("conversation.composer", () => {
11405
12072
  composerDispose = ctx.slots.register(composerEntry, RoomComposer);