@deepseek-ai/dsh-cordis-client-runner 0.1.7-rc.1 → 0.2.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.i18n.yaml CHANGED
@@ -1,6 +1,79 @@
1
- # Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
2
- # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
- # after editing either side, bring the other along and re-record with:
1
+ # Bilingual-pair consistency record for README.md (docs/i18n/README.md): per heading
2
+ # section, a hash of its English and Chinese blocks outside code blocks and generated regions.
3
+ # After editing either side, bring the other along and re-record with:
4
4
  # pnpm run verify-translation-pairing --write packages/extensions/cordis-client-runner/README.md
5
- README.md: c5d9a10bde22c6e48b23cd113737a80cc03bcdd0
6
- README.zh.md: c6463de9cd03f1b0de8a9a8fee3037fe01392607
5
+ /:
6
+ en: 0d1382466301a0cb
7
+ zh: 64ee27ce126adad2
8
+ /deepseek-ai-dsh-cordis-client-runner:
9
+ en: ea84dfc91fbdbf90
10
+ zh: 3c70bc4bb1b1a7ab
11
+ /deepseek-ai-dsh-cordis-client-runner/summary:
12
+ en: 639cd79ac2d186c1
13
+ zh: 07d7bf8655111e55
14
+ /deepseek-ai-dsh-cordis-client-runner/table-of-contents:
15
+ en: d152484eb41ac6b4
16
+ zh: 09388d293f9be9cb
17
+ /deepseek-ai-dsh-cordis-client-runner/use-this-package:
18
+ en: 731e4c9c364beeb5
19
+ zh: 6aa113070967571f
20
+ /deepseek-ai-dsh-cordis-client-runner/use-this-package/what-the-page-does:
21
+ en: b303762b91f6d830
22
+ zh: c6e60cf498da3c4e
23
+ /deepseek-ai-dsh-cordis-client-runner/use-this-package/what-the-run-surface-offers:
24
+ en: 155c8371306a5cda
25
+ zh: 8b4cd48a0fc3f545
26
+ /deepseek-ai-dsh-cordis-client-runner/use-this-package/lifecycle-boundaries:
27
+ en: 8444eaa96ee05a5e
28
+ zh: 621bb78731bd0138
29
+ /deepseek-ai-dsh-cordis-client-runner/understand-the-implementation:
30
+ en: 64f24636f966aa86
31
+ zh: a4d3bb2e541b222a
32
+ /deepseek-ai-dsh-cordis-client-runner/understand-the-implementation/design-philosophy:
33
+ en: df635b29eaef982c
34
+ zh: ddaa4bd98359bd30
35
+ /deepseek-ai-dsh-cordis-client-runner/understand-the-implementation/source-map:
36
+ en: cbd46fb5821cfcc7
37
+ zh: 392e5cace2db6194
38
+ /deepseek-ai-dsh-cordis-client-runner/understand-the-implementation/inspecting-slot-inputs:
39
+ en: 33f14a7fff7835e6
40
+ zh: 53838ac8d4a79600
41
+ /deepseek-ai-dsh-cordis-client-runner/understand-the-implementation/how-a-run-is-carried-out:
42
+ en: e64ffad27ecf4bbd
43
+ zh: 7949755b8a782b08
44
+ /deepseek-ai-dsh-cordis-client-runner/further-exploration:
45
+ en: dcfcc126e7345db1
46
+ zh: 47b564ef00a83297
47
+ /deepseek-ai-dsh-cordis-client-runner/model-experience:
48
+ en: 215e7ba838619b7b
49
+ zh: a311da3843709f90
50
+ /deepseek-ai-dsh-cordis-client-runner/model-experience/run-resolution-relayed-by-the-host:
51
+ en: 4573c6b269e4fecb
52
+ zh: 7f76baf2f74bf9cc
53
+ /deepseek-ai-dsh-cordis-client-runner/model-experience/run-resolution-relayed-by-the-host/what-the-model-sees:
54
+ en: 0f941f02680ba2ed
55
+ zh: d62dd787dea11f5f
56
+ /deepseek-ai-dsh-cordis-client-runner/model-experience/run-resolution-relayed-by-the-host/token-effect:
57
+ en: 37462821d8e35933
58
+ zh: bb94b21eff2911e8
59
+ /deepseek-ai-dsh-cordis-client-runner/model-experience/run-resolution-relayed-by-the-host/kv-cache-effect:
60
+ en: da210ff9eb982144
61
+ zh: 633a73ac9bc9e5e6
62
+ /deepseek-ai-dsh-cordis-client-runner/model-experience/render-failure-after-the-run-settled:
63
+ en: 524d638584142d72
64
+ zh: 3ffc463419fba2e1
65
+ /deepseek-ai-dsh-cordis-client-runner/model-experience/render-failure-after-the-run-settled/what-the-model-sees:
66
+ en: f347bd0b5f9e297e
67
+ zh: 0b7bc88659e38306
68
+ /deepseek-ai-dsh-cordis-client-runner/model-experience/render-failure-after-the-run-settled/token-effect:
69
+ en: c8c1657fa4e37ca4
70
+ zh: d03af1593a9b4d3a
71
+ /deepseek-ai-dsh-cordis-client-runner/model-experience/render-failure-after-the-run-settled/kv-cache-effect:
72
+ en: d2d35b83beb936b2
73
+ zh: 604aa6929c7a9c76
74
+ /deepseek-ai-dsh-cordis-client-runner/known-limitations-and-deferred-work:
75
+ en: a728aeb4aa18db7d
76
+ zh: b596309cd6707da7
77
+ /deepseek-ai-dsh-cordis-client-runner/known-limitations-and-deferred-work/dev-note:
78
+ en: c4cff307d238c93a
79
+ zh: d1a9ff4164056741
package/lib/client.js CHANGED
@@ -1329,11 +1329,11 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
1329
1329
  returns: "bounded results, or a business/transport error."
1330
1330
  },
1331
1331
  {
1332
- signature: "fork(opts: { sessionId: SessionId; atSeq?: number; increaseTitle?: boolean }): Promise<SessionId>",
1332
+ signature: "fork(opts: { sessionId: SessionId atSeq?: number increaseTitle?: boolean onCreated?: (childId: SessionId) => void }): Promise<SessionId>",
1333
1333
  description: "Fork a session from an exact inclusive prefix of the source; on resolution the child is catalogued and can be explicitly retained.",
1334
1334
  parameters: [{
1335
1335
  name: "opts",
1336
- description: "source session id, the optional exact inclusive boundary seq (a real event seq the caller already knows; a cut inside an open turn is balanced Host-side with synthetic closers, and omission selects the latest completed-turn prefix), and whether to increment an inherited durable title before resolving."
1336
+ description: "source session id, the optional exact inclusive boundary seq (a real event seq the caller already knows; a cut inside an open turn is balanced Host-side with synthetic closers, and omission selects the latest completed-turn prefix), and whether to increment an inherited durable title before resolving. `onCreated` observes the catalogued child before that optional rename."
1337
1337
  }],
1338
1338
  returns: "the child session id.",
1339
1339
  throws: ["when the fork fails, or when a requested child-title rename fails after creation."]
@@ -1503,19 +1503,22 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
1503
1503
  description: "target Workspace."
1504
1504
  }, {
1505
1505
  name: "beforeOpen",
1506
- description: "optional synchronous preparation for the selected Session, skipped after supersession."
1506
+ description: "optional synchronous preparation for the selected Session, skipped after supersession; a throw aborts the open and releases the retained reference."
1507
1507
  }],
1508
1508
  returns: "completion; a superseded request may create a Session but does not open it.",
1509
1509
  throws: ["on failure; a refused creation is also shown through the Workspace notice unless a later navigation or disposal superseded the request."]
1510
1510
  },
1511
1511
  {
1512
- signature: "forkSession(sessionId: SessionId): Promise<void>",
1512
+ signature: "forkSession(sessionId: SessionId, onCreated?: (childId: SessionId) => void): Promise<SessionId>",
1513
1513
  description: "Fork a Session without changing the current selection.",
1514
1514
  parameters: [{
1515
1515
  name: "sessionId",
1516
1516
  description: "source Session."
1517
+ }, {
1518
+ name: "onCreated",
1519
+ description: "observer before the optional child-title update."
1517
1520
  }],
1518
- returns: "completion after child creation and inherited-title increment."
1521
+ returns: "the child SessionId after creation and inherited-title increment."
1519
1522
  },
1520
1523
  {
1521
1524
  signature: "connectWorkspace(workspaceId: WorkspaceId): Promise<SessionId>",
@@ -2445,7 +2448,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
2445
2448
  occupants: ["client-ui-message-feedback MessageFeedbackActions id 'feedback'"],
2446
2449
  replaceRisk: "none",
2447
2450
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.chat.assistant-actions', () => ctx.slots.register(\n { name: 'conversation.chat.assistant-actions', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
2448
- source: "packages/client/ui-chat/src/client/contract/slots.ts:271"
2451
+ source: "packages/client/ui-chat/src/client/contract/slots.ts:321"
2449
2452
  },
2450
2453
  {
2451
2454
  key: "conversation.chat.commandview",
@@ -2489,7 +2492,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
2489
2492
  occupants: [],
2490
2493
  replaceRisk: "none",
2491
2494
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.chat.commandview', () => ctx.slots.register(\n { name: 'conversation.chat.commandview', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
2492
- source: "packages/client/ui-chat/src/client/contract/slots.ts:259"
2495
+ source: "packages/client/ui-chat/src/client/contract/slots.ts:309"
2493
2496
  },
2494
2497
  {
2495
2498
  key: "conversation.chat.node",
@@ -2555,7 +2558,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
2555
2558
  ],
2556
2559
  replaceRisk: "shadows-shipped-ui",
2557
2560
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.chat.node', () => ctx.slots.register(\n { name: 'conversation.chat.node', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
2558
- source: "packages/client/ui-chat/src/client/contract/slots.ts:240"
2561
+ source: "packages/client/ui-chat/src/client/contract/slots.ts:290"
2559
2562
  },
2560
2563
  {
2561
2564
  key: "conversation.chat.turnTail",
@@ -2606,10 +2609,14 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
2606
2609
  hookContext: "",
2607
2610
  slotInject: "",
2608
2611
  declaredBy: "an entry in 'conversation.chat.node' (client-ui-chat), so it exists while that entry is mounted",
2609
- occupants: ["client-ui-deliverables DeliverablesTail id '@deepseek-ai/dsh-client-ui-deliverables'", "client-ui-plan PlanCards"],
2612
+ occupants: [
2613
+ "client-ui-deliverables DeliverablesTail id '@deepseek-ai/dsh-client-ui-deliverables'",
2614
+ "client-ui-plan PlanCards",
2615
+ "client-ui-schedule ScheduleTurnCard id 'schedule-created'"
2616
+ ],
2610
2617
  replaceRisk: "none",
2611
2618
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.chat.turnTail', () => ctx.slots.register(\n { name: 'conversation.chat.turnTail', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
2612
- source: "packages/client/ui-chat/src/client/contract/slots.ts:265"
2619
+ source: "packages/client/ui-chat/src/client/contract/slots.ts:315"
2613
2620
  },
2614
2621
  {
2615
2622
  key: "conversation.composer",
@@ -2918,7 +2925,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
2918
2925
  occupants: ["client-ui-directory-picker-browse BrowseDirectoryFlow", "client-ui-directory-picker-native NativeDirectoryFlow"],
2919
2926
  replaceRisk: "shadows-shipped-ui",
2920
2927
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.hero.workspace.directoryFlow', () => ctx.slots.register(\n { name: 'conversation.hero.workspace.directoryFlow' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
2921
- source: "packages/client/ui-workspace/src/client/contract/slots.ts:99"
2928
+ source: "packages/client/ui-workspace/src/client/contract/slots.ts:117"
2922
2929
  },
2923
2930
  {
2924
2931
  key: "conversation.input.activity",
@@ -3358,7 +3365,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
3358
3365
  occupants: ["client-ui-attachment MessageImages"],
3359
3366
  replaceRisk: "shadows-shipped-ui",
3360
3367
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.message.images', () => ctx.slots.register(\n { name: 'conversation.message.images' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
3361
- source: "packages/client/ui-chat/src/client/contract/slots.ts:253"
3368
+ source: "packages/client/ui-chat/src/client/contract/slots.ts:303"
3362
3369
  },
3363
3370
  {
3364
3371
  key: "conversation.plan-review.actions",
@@ -3536,7 +3543,6 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
3536
3543
  occupants: [
3537
3544
  "client-ui-agent-preset AgentPresetLabel id 'agent-preset'",
3538
3545
  "client-ui-jobs JobListAction id 'job-list'",
3539
- "client-ui-schedule ScheduleCatalogAction id 'schedule-catalog'",
3540
3546
  "client-ui-subagent SubagentCatalogAction id 'subagent-catalog'",
3541
3547
  "experimental-client-ui-agent-team TeamAction id 'agent-team'"
3542
3548
  ],
@@ -3663,7 +3669,11 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
3663
3669
  hookContext: "",
3664
3670
  slotInject: "",
3665
3671
  declaredBy: "an entry in 'conversation.session.header' (client-ui-conversation), so it exists while that entry is mounted",
3666
- occupants: ["client-ui-open-in-app OpenInAppAction id 'open-in-app'", "session-log-export SessionLogDownloadHeaderAction id 'session-log-download'"],
3672
+ occupants: [
3673
+ "client-ui-open-in-app OpenInAppAction id 'open-in-app'",
3674
+ "client-ui-schedule ScheduleCatalogAction id 'schedule-catalog'",
3675
+ "session-log-export SessionLogDownloadHeaderAction id 'session-log-download'"
3676
+ ],
3667
3677
  replaceRisk: "none",
3668
3678
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.session.header.utilities', () => ctx.slots.register(\n { name: 'conversation.session.header.utilities', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
3669
3679
  source: "packages/client/ui-conversation/src/client/contract/slots.ts:162"
@@ -3896,10 +3906,14 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
3896
3906
  hookContext: "",
3897
3907
  slotInject: "",
3898
3908
  declaredBy: "an entry in 'root' (client-ui-layout), so it exists while that entry is mounted",
3899
- occupants: ["client-ui-conversation ConversationPanel key 'conversation'", "client-ui-plugin-manager PluginManagerPage"],
3909
+ occupants: [
3910
+ "client-ui-conversation ConversationPanel key 'conversation'",
3911
+ "client-ui-plugin-manager PluginManagerPage",
3912
+ "client-ui-schedule TaskManagerPage"
3913
+ ],
3900
3914
  replaceRisk: "shadows-shipped-ui",
3901
3915
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('main', () => ctx.slots.register(\n { name: 'main', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
3902
- source: "packages/client/ui-layout/src/client/index.ts:66"
3916
+ source: "packages/client/ui-layout/src/client/index.ts:73"
3903
3917
  },
3904
3918
  {
3905
3919
  key: "main.conversation",
@@ -4244,7 +4258,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4244
4258
  occupants: ["client-ui-sidebar-right RightbarRoot"],
4245
4259
  replaceRisk: "shadows-shipped-ui",
4246
4260
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('rightbar', () => ctx.slots.register(\n { name: 'rightbar' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
4247
- source: "packages/client/ui-layout/src/client/index.ts:80"
4261
+ source: "packages/client/ui-layout/src/client/index.ts:87"
4248
4262
  },
4249
4263
  {
4250
4264
  key: "rightbar.session",
@@ -4279,7 +4293,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4279
4293
  occupants: ["client-ui-sidebar-right RightbarSeat"],
4280
4294
  replaceRisk: "shadows-shipped-ui",
4281
4295
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('rightbar.session', () => ctx.slots.register(\n { name: 'rightbar.session' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
4282
- source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:42"
4296
+ source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:43"
4283
4297
  },
4284
4298
  {
4285
4299
  key: "root",
@@ -4431,6 +4445,8 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4431
4445
  "client-ui-permission-presets PermissionRow id 'permission'",
4432
4446
  "client-ui-settings-general DeveloperToolsRow id 'developer-tools'",
4433
4447
  "client-ui-settings-general CurrentVersionRow id 'current-version'",
4448
+ "client-ui-settings-session-log UploadRow",
4449
+ "client-ui-shortcuts ShortcutsRow id 'shortcuts'",
4434
4450
  "client-ui-theme AppearanceRow id 'appearance'",
4435
4451
  "client-ui-theme FontSizeRow id 'font-size'"
4436
4452
  ],
@@ -4472,7 +4488,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4472
4488
  summary: "Optional sidebar account launcher; opens the shell-owned settings panel.",
4473
4489
  doc: "Optional sidebar account launcher; opens the shell-owned settings panel.",
4474
4490
  registerOptions: [],
4475
- ownerProps: ["/** Sidebar launcher geometry and settings navigation. */\nexport interface SettingsLauncherOwnerProps {\n /** Whether the sidebar shows labels. */\n wide: boolean\n /** Open the settings panel. */\n openSettings: () => void\n /** @param id - registered onboarding editor to open explicitly. */\n openOnboarding: (id: string) => void\n}"],
4491
+ ownerProps: ["/** Sidebar launcher geometry and settings navigation. */\nexport interface SettingsLauncherOwnerProps {\n /** Whether the sidebar shows labels. */\n wide: boolean\n /** Whether the settings dialog covers the sidebar; a launcher may treat a false-to-true edge as one Settings entry. */\n settingsOpen: boolean\n /** Effective Settings key labels and accessible combination; omitted when unbound. */\n settingsShortcut?: { readonly keys: readonly string[]; readonly aria?: string | undefined }\n /** Open the settings panel. */\n openSettings: () => void\n /** @param id - registered onboarding editor to open explicitly. */\n openOnboarding: (id: string) => void\n}"],
4476
4492
  ownerPropsReferences: [],
4477
4493
  standardProps: [
4478
4494
  "useResource: UseResource",
@@ -4793,7 +4809,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4793
4809
  occupants: ["client-ui-sidebar HeaderLeadingControls"],
4794
4810
  replaceRisk: "shadows-shipped-ui",
4795
4811
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('shell.leading', () => ctx.slots.register(\n { name: 'shell.leading' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
4796
- source: "packages/client/ui-layout/src/client/index.ts:105"
4812
+ source: "packages/client/ui-layout/src/client/index.ts:112"
4797
4813
  },
4798
4814
  {
4799
4815
  key: "shell.overlay",
@@ -4837,13 +4853,52 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4837
4853
  slotInject: "",
4838
4854
  declaredBy: "an entry in 'root' (client-ui-layout), so it exists while that entry is mounted",
4839
4855
  occupants: [
4856
+ "client-ui-chat QuotaNoticeHost id 'chat.quota-notice'",
4857
+ "client-ui-plugin-manager PluginRefreshToast id 'plugin-manager.refresh-toast'",
4858
+ "client-ui-schedule ScheduleDeleteToast id 'schedule.delete-toast'",
4859
+ "client-ui-settings-account DesktopOnboardingEntry id 'desktop-onboarding'",
4860
+ "client-ui-settings-account AccountPlatformHost id 'account.platform-page'",
4861
+ "client-ui-settings-session-log UploadToast id 'session-log-upload-toast'",
4862
+ "client-ui-shortcuts ShortcutReference id 'shortcuts'",
4840
4863
  "client-ui-workspace SessionRenameDialog id 'workspace.session-rename'",
4841
4864
  "client-ui-workspace SessionArchiveConfirmDialog id 'workspace.session-archive'",
4842
4865
  "client-ui-workspace RowActionToast id 'workspace.row-toast'"
4843
4866
  ],
4844
4867
  replaceRisk: "none",
4845
4868
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('shell.overlay', () => ctx.slots.register(\n { name: 'shell.overlay', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
4846
- source: "packages/client/ui-layout/src/client/index.ts:91"
4869
+ source: "packages/client/ui-layout/src/client/index.ts:98"
4870
+ },
4871
+ {
4872
+ key: "shell.quota-notice",
4873
+ kind: "chain",
4874
+ scope: "root",
4875
+ summary: "Frame-wide quota notice chain.",
4876
+ doc: "Frame-wide quota notice chain. The Chat-owned host in `shell.overlay`\noffers the one live notice; the first entry whose selector claims its\ncode takes over the surface, and the all-decline case renders the host's\ngeneric warning Toast. The host lives outside the Chat panel, so a notice\nsurvives switching or closing the panel that reported it.",
4877
+ registerOptions: [{
4878
+ name: "select",
4879
+ requirement: "required",
4880
+ type: "(owner) => unknown | null",
4881
+ doc: "Pure routing selector. Entries are tried in ascending order; the first non-null result wins and arrives as the component's `matched` prop. All-null falls through to the owner's fallback."
4882
+ }],
4883
+ ownerProps: ["/** Owner currency of one quota notice offered to the frame-wide chain. */\nexport interface QuotaNoticeOwnerProps {\n /** Stable failure code retained in the Session log. */\n code: QuotaNoticeCode\n /** Provider-neutral notice copy in the active locale. */\n message: string\n /** Take the notice down. */\n dismiss: () => void\n /**\n * Prevent later quota failures from replacing this notice. Dismissal clears\n * all holds; releasing the last hold resumes future notices without replay.\n * Callers must release on unmount.\n * @returns idempotent release that cannot clear another hold.\n */\n keepOpen: () => () => void\n}"],
4884
+ ownerPropsReferences: ["QuotaNoticeCode"],
4885
+ standardProps: [
4886
+ "useResource: UseResource",
4887
+ "useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
4888
+ "usePanelInfo: UsePanelInfo",
4889
+ "useSessions: UseSessions",
4890
+ "useSessionStatus: UseSessionStatus",
4891
+ "useSessionRetainInfo: UseSessionRetainInfo",
4892
+ "useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>"
4893
+ ],
4894
+ keyDomain: "",
4895
+ hookContext: "",
4896
+ slotInject: "",
4897
+ declaredBy: "an entry in 'shell.overlay' (client-ui-chat), so it exists while that entry is mounted",
4898
+ occupants: ["client-ui-settings-account AccountQuotaNotice"],
4899
+ replaceRisk: "none",
4900
+ example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('shell.quota-notice', () => ctx.slots.register(\n { name: 'shell.quota-notice', select: owner => null },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
4901
+ source: "packages/client/ui-chat/src/client/contract/slots.ts:329"
4847
4902
  },
4848
4903
  {
4849
4904
  key: "sidebar",
@@ -4870,7 +4925,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4870
4925
  occupants: ["client-ui-sidebar SidebarRoot"],
4871
4926
  replaceRisk: "shadows-shipped-ui",
4872
4927
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar', () => ctx.slots.register(\n { name: 'sidebar' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
4873
- source: "packages/client/ui-layout/src/client/index.ts:61"
4928
+ source: "packages/client/ui-layout/src/client/index.ts:68"
4874
4929
  },
4875
4930
  {
4876
4931
  key: "sidebar.brand.mark",
@@ -4897,7 +4952,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4897
4952
  occupants: ["client-ui-brand-official OfficialBrandMark"],
4898
4953
  replaceRisk: "shadows-shipped-ui",
4899
4954
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.brand.mark', () => ctx.slots.register(\n { name: 'sidebar.brand.mark' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
4900
- source: "packages/client/ui-sidebar/src/client/contract/slots.ts:24"
4955
+ source: "packages/client/ui-sidebar/src/client/contract/slots.ts:25"
4901
4956
  },
4902
4957
  {
4903
4958
  key: "sidebar.brand.name",
@@ -4924,7 +4979,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4924
4979
  occupants: ["client-ui-brand-official OfficialBrandName"],
4925
4980
  replaceRisk: "shadows-shipped-ui",
4926
4981
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.brand.name', () => ctx.slots.register(\n { name: 'sidebar.brand.name' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
4927
- source: "packages/client/ui-sidebar/src/client/contract/slots.ts:29"
4982
+ source: "packages/client/ui-sidebar/src/client/contract/slots.ts:30"
4928
4983
  },
4929
4984
  {
4930
4985
  key: "sidebar.chat.conversation",
@@ -5005,7 +5060,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5005
5060
  occupants: ["client-ui-cordis CordisPanel id 'cordis-panel'"],
5006
5061
  replaceRisk: "none",
5007
5062
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.footer.action', () => ctx.slots.register(\n { name: 'sidebar.footer.action', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
5008
- source: "packages/client/ui-sidebar/src/client/contract/slots.ts:52"
5063
+ source: "packages/client/ui-sidebar/src/client/contract/slots.ts:53"
5009
5064
  },
5010
5065
  {
5011
5066
  key: "sidebar.panellist",
@@ -5048,10 +5103,10 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5048
5103
  hookContext: "",
5049
5104
  slotInject: "",
5050
5105
  declaredBy: "an entry in 'sidebar' (client-ui-sidebar), so it exists while that entry is mounted",
5051
- occupants: ["client-ui-plugin-manager PluginsPanelIcon"],
5106
+ occupants: ["client-ui-plugin-manager PluginsPanelIcon", "client-ui-schedule TaskManagerIcon"],
5052
5107
  replaceRisk: "none",
5053
5108
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.panellist', () => ctx.slots.register(\n { name: 'sidebar.panellist', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
5054
- source: "packages/client/ui-sidebar/src/client/contract/slots.ts:34"
5109
+ source: "packages/client/ui-sidebar/src/client/contract/slots.ts:35"
5055
5110
  },
5056
5111
  {
5057
5112
  key: "sidebar.right.pane.tab",
@@ -5091,6 +5146,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5091
5146
  occupants: [
5092
5147
  "client-ui-deliverables ReviewTab",
5093
5148
  "client-ui-plan PlanPreview",
5149
+ "client-ui-schedule ScheduleTaskTab",
5094
5150
  "client-ui-sidebar-browser BrowserBody",
5095
5151
  "client-ui-sidebar-documentpreview TextPreview",
5096
5152
  "client-ui-sidebar-files FilesBody",
@@ -5100,7 +5156,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5100
5156
  ],
5101
5157
  replaceRisk: "none",
5102
5158
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.right.pane.tab', () => ctx.slots.register(\n { name: 'sidebar.right.pane.tab', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
5103
- source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:58"
5159
+ source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:59"
5104
5160
  },
5105
5161
  {
5106
5162
  key: "sidebar.right.pane.tab.title",
@@ -5139,6 +5195,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5139
5195
  declaredBy: "an entry in 'rightbar.session' (client-ui-sidebar-right), so it exists while that entry is mounted",
5140
5196
  occupants: [
5141
5197
  "client-ui-plan PlanTitle",
5198
+ "client-ui-schedule ScheduleTaskTabTitle",
5142
5199
  "client-ui-sidebar-browser BrowserTitle",
5143
5200
  "client-ui-sidebar-documentpreview TextTitle",
5144
5201
  "client-ui-sidebar-files FilesTitle",
@@ -5147,7 +5204,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5147
5204
  ],
5148
5205
  replaceRisk: "none",
5149
5206
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.right.pane.tab.title', () => ctx.slots.register(\n { name: 'sidebar.right.pane.tab.title', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
5150
- source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:72"
5207
+ source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:73"
5151
5208
  },
5152
5209
  {
5153
5210
  key: "sidebar.right.tab.document",
@@ -5424,7 +5481,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5424
5481
  occupants: [],
5425
5482
  replaceRisk: "none",
5426
5483
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.right.tab.guide', () => ctx.slots.register(\n { name: 'sidebar.right.tab.guide', select: owner => null },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
5427
- source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:83"
5484
+ source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:84"
5428
5485
  },
5429
5486
  {
5430
5487
  key: "sidebar.right.tab.guide.entry",
@@ -5464,7 +5521,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5464
5521
  occupants: ["client-ui-sidebar-terminal TerminalGuide"],
5465
5522
  replaceRisk: "none",
5466
5523
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.right.tab.guide.entry', () => ctx.slots.register(\n { name: 'sidebar.right.tab.guide.entry', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
5467
- source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:90"
5524
+ source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:91"
5468
5525
  },
5469
5526
  {
5470
5527
  key: "sidebar.right.tab.menu.item",
@@ -5518,7 +5575,99 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5518
5575
  occupants: [],
5519
5576
  replaceRisk: "none",
5520
5577
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.right.tab.menu.item', () => ctx.slots.register(\n { name: 'sidebar.right.tab.menu.item', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
5521
- source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:102"
5578
+ source: "packages/client/ui-sidebar-right/src/client/contract/slots.ts:103"
5579
+ },
5580
+ {
5581
+ key: "sidebar.session.row.hover",
5582
+ kind: "list",
5583
+ scope: "root",
5584
+ summary: "Section of the Session row's hover card between its relative time and its trailing status line.",
5585
+ doc: "Section of the Session row's hover card between its relative time and\nits trailing status line. Mounted only while that card is open.",
5586
+ registerOptions: [
5587
+ {
5588
+ name: "id",
5589
+ requirement: "required",
5590
+ type: "string",
5591
+ doc: "Your cell key. Use an id of your own: a fresh id is added beside the shipped entries, while reusing a shipped id puts you in THAT cell and replaces it. Owners that filter by id address you by it."
5592
+ },
5593
+ {
5594
+ name: "order",
5595
+ requirement: "optional",
5596
+ type: "number",
5597
+ doc: "Position among the entries, ascending (default 0)."
5598
+ },
5599
+ {
5600
+ name: "label",
5601
+ requirement: "optional",
5602
+ type: "string | (() => string)",
5603
+ doc: "Display text where the owner projects one (nav rows, tabs). A thunk is re-read on every projection, so localized text follows the active locale without re-registering."
5604
+ }
5605
+ ],
5606
+ ownerProps: ["/**\n * Owner share of the two Session-row schedule seats. Both receive only the\n * row's Session identity: the occupant reads that Session's own scheduled\n * tasks, and reading them activates nothing.\n */\nexport interface SessionRowScheduleOwnerProps {\n /** Session this row shows; the occupant addresses its own data by this id. */\n readonly sessionId: SessionId\n}"],
5607
+ ownerPropsReferences: ["SessionId"],
5608
+ standardProps: [
5609
+ "useResource: UseResource",
5610
+ "useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
5611
+ "usePanelInfo: UsePanelInfo",
5612
+ "useSessions: UseSessions",
5613
+ "useSessionStatus: UseSessionStatus",
5614
+ "useSessionRetainInfo: UseSessionRetainInfo",
5615
+ "useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>"
5616
+ ],
5617
+ keyDomain: "",
5618
+ hookContext: "",
5619
+ slotInject: "",
5620
+ declaredBy: "an entry in 'sidebar.workspaces' (client-ui-workspace), so it exists while that entry is mounted",
5621
+ occupants: ["client-ui-schedule SessionScheduleHover id 'schedule-tasks'"],
5622
+ replaceRisk: "none",
5623
+ example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.session.row.hover', () => ctx.slots.register(\n { name: 'sidebar.session.row.hover', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
5624
+ source: "packages/client/ui-workspace/src/client/contract/slots.ts:134"
5625
+ },
5626
+ {
5627
+ key: "sidebar.session.row.leading",
5628
+ kind: "list",
5629
+ scope: "root",
5630
+ summary: "Leading decoration of one Session row, in the 16px cell before the title that the row's own state dot otherwise occupies.",
5631
+ doc: "Leading decoration of one Session row, in the 16px cell before the title\nthat the row's own state dot otherwise occupies. A higher-priority state\n(a pending interaction, a new message, live activity) replaces the seat\nwith that dot for the same row, so an occupant here never renders beside\na status dot and is mounted only by a row whose primary state is idle.\nAn archived row keeps that cell blank — neither its status dot nor this\nseat renders there, and its live status appears on the hover card only.",
5632
+ registerOptions: [
5633
+ {
5634
+ name: "id",
5635
+ requirement: "required",
5636
+ type: "string",
5637
+ doc: "Your cell key. Use an id of your own: a fresh id is added beside the shipped entries, while reusing a shipped id puts you in THAT cell and replaces it. Owners that filter by id address you by it."
5638
+ },
5639
+ {
5640
+ name: "order",
5641
+ requirement: "optional",
5642
+ type: "number",
5643
+ doc: "Position among the entries, ascending (default 0)."
5644
+ },
5645
+ {
5646
+ name: "label",
5647
+ requirement: "optional",
5648
+ type: "string | (() => string)",
5649
+ doc: "Display text where the owner projects one (nav rows, tabs). A thunk is re-read on every projection, so localized text follows the active locale without re-registering."
5650
+ }
5651
+ ],
5652
+ ownerProps: ["/**\n * Owner share of the two Session-row schedule seats. Both receive only the\n * row's Session identity: the occupant reads that Session's own scheduled\n * tasks, and reading them activates nothing.\n */\nexport interface SessionRowScheduleOwnerProps {\n /** Session this row shows; the occupant addresses its own data by this id. */\n readonly sessionId: SessionId\n}"],
5653
+ ownerPropsReferences: ["SessionId"],
5654
+ standardProps: [
5655
+ "useResource: UseResource",
5656
+ "useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
5657
+ "usePanelInfo: UsePanelInfo",
5658
+ "useSessions: UseSessions",
5659
+ "useSessionStatus: UseSessionStatus",
5660
+ "useSessionRetainInfo: UseSessionRetainInfo",
5661
+ "useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>"
5662
+ ],
5663
+ keyDomain: "",
5664
+ hookContext: "",
5665
+ slotInject: "",
5666
+ declaredBy: "an entry in 'sidebar.workspaces' (client-ui-workspace), so it exists while that entry is mounted",
5667
+ occupants: ["client-ui-schedule SessionScheduleMark id 'schedule-mark'"],
5668
+ replaceRisk: "none",
5669
+ example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.session.row.leading', () => ctx.slots.register(\n { name: 'sidebar.session.row.leading', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
5670
+ source: "packages/client/ui-workspace/src/client/contract/slots.ts:129"
5522
5671
  },
5523
5672
  {
5524
5673
  key: "sidebar.settings",
@@ -5545,7 +5694,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5545
5694
  occupants: ["client-ui-settings-general SettingsRoot"],
5546
5695
  replaceRisk: "shadows-shipped-ui",
5547
5696
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.settings', () => ctx.slots.register(\n { name: 'sidebar.settings' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
5548
- source: "packages/client/ui-sidebar/src/client/contract/slots.ts:47"
5697
+ source: "packages/client/ui-sidebar/src/client/contract/slots.ts:48"
5549
5698
  },
5550
5699
  {
5551
5700
  key: "sidebar.toggle.badge",
@@ -5572,7 +5721,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5572
5721
  occupants: ["client-ui-settings-general DesktopUpdateBadge"],
5573
5722
  replaceRisk: "shadows-shipped-ui",
5574
5723
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.toggle.badge', () => ctx.slots.register(\n { name: 'sidebar.toggle.badge' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
5575
- source: "packages/client/ui-sidebar/src/client/contract/slots.ts:18"
5724
+ source: "packages/client/ui-sidebar/src/client/contract/slots.ts:19"
5576
5725
  },
5577
5726
  {
5578
5727
  key: "sidebar.workspaces",
@@ -5599,7 +5748,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5599
5748
  occupants: ["client-ui-workspace WorkspaceBrowser"],
5600
5749
  replaceRisk: "shadows-shipped-ui",
5601
5750
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.workspaces', () => ctx.slots.register(\n { name: 'sidebar.workspaces' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
5602
- source: "packages/client/ui-sidebar/src/client/contract/slots.ts:41"
5751
+ source: "packages/client/ui-sidebar/src/client/contract/slots.ts:42"
5603
5752
  },
5604
5753
  {
5605
5754
  key: "sidebar.workspaces.directoryFlow",
@@ -5626,7 +5775,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5626
5775
  occupants: ["client-ui-directory-picker-browse BrowseDirectoryFlow", "client-ui-directory-picker-native NativeDirectoryFlow"],
5627
5776
  replaceRisk: "shadows-shipped-ui",
5628
5777
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.workspaces.directoryFlow', () => ctx.slots.register(\n { name: 'sidebar.workspaces.directoryFlow' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
5629
- source: "packages/client/ui-workspace/src/client/contract/slots.ts:101"
5778
+ source: "packages/client/ui-workspace/src/client/contract/slots.ts:119"
5630
5779
  },
5631
5780
  {
5632
5781
  key: "sidebar.workspaces.session.menu.item",
@@ -5654,7 +5803,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5654
5803
  doc: "Display text where the owner projects one (nav rows, tabs). A thunk is re-read on every projection, so localized text follows the active locale without re-registering."
5655
5804
  }
5656
5805
  ],
5657
- ownerProps: ["/** Owner share of one Session row action occurrence: the row the action belongs to. */\nexport interface SessionRowOwnerProps {\n /** Session the row shows. */\n sessionId: SessionId\n /** Row display title: persisted title, project basename, or Session id. */\n displayTitle: string\n}"],
5806
+ ownerProps: ["/** Owner share of one Session row action occurrence: the row the action belongs to. */\nexport interface SessionRowOwnerProps {\n /** Session the row shows. */\n sessionId: SessionId\n /** Row display title: persisted title, or empty when the Session has none. */\n displayTitle: string\n}"],
5658
5807
  ownerPropsReferences: ["SessionId"],
5659
5808
  standardProps: [
5660
5809
  "useResource: UseResource",
@@ -5667,7 +5816,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5667
5816
  ],
5668
5817
  keyDomain: "",
5669
5818
  hookContext: "MenuOpenState",
5670
- slotInject: "{ hooks: { menuOpenState: SlotHookFactory<'sidebar.workspaces.session.menu.item', UseMenuOpenState> } }",
5819
+ slotInject: "{ hooks: { menuOpenState: SlotHookFactory<'sidebar.workspaces.session.menu.item', UseMenuOpenState> shortcuts: HostObservable<readonly ShortcutCatalogEntry[]> } }",
5671
5820
  declaredBy: "an entry in 'sidebar.workspaces' (client-ui-workspace), so it exists while that entry is mounted",
5672
5821
  occupants: [
5673
5822
  "client-ui-workspace PinSessionMenuItem id 'pin'",
@@ -5677,7 +5826,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5677
5826
  ],
5678
5827
  replaceRisk: "none",
5679
5828
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n const copyLabel = 'Copy Session ID' // Localize in the contributing package.\n ctx.slots.inject('sidebar.workspaces.session.menu.item', () => ctx.slots.register(\n { name: 'sidebar.workspaces.session.menu.item', id: 'copy-session-id', order: 500 },\n ({ sessionId, useMenuOpenState }) => {\n const [, setMenuOpen] = useMenuOpenState()\n return React.createElement(\n 'button',\n { type: 'button', role: 'menuitem', onClick: () => { setMenuOpen(false); void navigator.clipboard.writeText(sessionId) } },\n copyLabel,\n )\n },\n ))\n },\n}",
5680
- source: "packages/client/ui-workspace/src/client/contract/slots.ts:133"
5829
+ source: "packages/client/ui-workspace/src/client/contract/slots.ts:166"
5681
5830
  },
5682
5831
  {
5683
5832
  key: "sidebar.workspaces.session.row.action",
@@ -5705,7 +5854,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5705
5854
  doc: "Display text where the owner projects one (nav rows, tabs). A thunk is re-read on every projection, so localized text follows the active locale without re-registering."
5706
5855
  }
5707
5856
  ],
5708
- ownerProps: ["/** Owner share of one Session row action occurrence: the row the action belongs to. */\nexport interface SessionRowOwnerProps {\n /** Session the row shows. */\n sessionId: SessionId\n /** Row display title: persisted title, project basename, or Session id. */\n displayTitle: string\n}"],
5857
+ ownerProps: ["/** Owner share of one Session row action occurrence: the row the action belongs to. */\nexport interface SessionRowOwnerProps {\n /** Session the row shows. */\n sessionId: SessionId\n /** Row display title: persisted title, or empty when the Session has none. */\n displayTitle: string\n}"],
5709
5858
  ownerPropsReferences: ["SessionId"],
5710
5859
  standardProps: [
5711
5860
  "useResource: UseResource",
@@ -5723,7 +5872,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5723
5872
  occupants: ["client-ui-workspace ArchiveSessionRowButton id 'archive'", "client-ui-workspace PinSessionRowButton id 'pin'"],
5724
5873
  replaceRisk: "none",
5725
5874
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('sidebar.workspaces.session.row.action', () => ctx.slots.register(\n { name: 'sidebar.workspaces.session.row.action', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
5726
- source: "packages/client/ui-workspace/src/client/contract/slots.ts:148"
5875
+ source: "packages/client/ui-workspace/src/client/contract/slots.ts:184"
5727
5876
  },
5728
5877
  {
5729
5878
  key: "tool.call.images",
@@ -5802,7 +5951,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5802
5951
  "useProjection: UseProjection",
5803
5952
  "useTrajectory: UseTrajectory"
5804
5953
  ],
5805
- keyDomain: "open: any string the owner dispatches (no compile-time key set), already taken: ask_user_question, bash, cordis_define, cordis_inspect_list, cordis_inspect_query, cordis_inspect_self, cordis_run, cordis_stop, cordis_undefine, create_goal, edit, get_goal, glob, grep, interrupt_agent, job_kill, job_list, job_output, list_agents, list_subagent_models, lsp, present, ralph, read, read_image, schedule_create, schedule_delete, schedule_list, send_message, session_event_read, session_event_search, session_event_trace, session_search, session_trace, skill, spawn_teammate, subagent, team_task_create, team_task_get, team_task_list, team_task_update, terminal_close, terminal_list, terminal_open, terminal_read, terminal_signal, todo_write, update_goal, wait_agent, web_fetch, web_search, workflow, write",
5954
+ keyDomain: "open: any string the owner dispatches (no compile-time key set), already taken: ask_user_question, bash, cordis_define, cordis_inspect_list, cordis_inspect_query, cordis_inspect_self, cordis_run, cordis_stop, cordis_undefine, create_goal, edit, get_goal, glob, grep, interrupt_agent, job_kill, job_list, job_output, list_agents, list_subagent_models, lsp, present, ralph, read, read_image, schedule_create, schedule_delete, schedule_list, schedule_update, send_message, session_event_read, session_event_search, session_event_trace, session_search, session_trace, skill, spawn_teammate, subagent, team_task_create, team_task_get, team_task_list, team_task_update, terminal_close, terminal_list, terminal_open, terminal_read, terminal_signal, todo_write, update_goal, wait_agent, web_fetch, web_search, workflow, write",
5806
5955
  hookContext: "ToolCallHookContext",
5807
5956
  slotInject: "ToolCallInjected",
5808
5957
  declaredBy: "an entry in 'conversation.chat.node' (client-ui-tool), so it exists while that entry is mounted",
@@ -5817,6 +5966,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5817
5966
  "client-ui-tool DetailsRow key 'schedule_create'",
5818
5967
  "client-ui-tool DetailsRow key 'schedule_list'",
5819
5968
  "client-ui-tool DetailsRow key 'schedule_delete'",
5969
+ "client-ui-tool DetailsRow key 'schedule_update'",
5820
5970
  "client-ui-tool DetailsRow key 'cordis_inspect_list'",
5821
5971
  "client-ui-tool DetailsRow key 'cordis_inspect_query'",
5822
5972
  "client-ui-tool DetailsRow key 'cordis_inspect_self'",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@deepseek-ai/dsh-cordis-client-runner",
3
3
  "description": "Browser half of dynamic dual-half plugin packages: event subscription, closure evaluation, guard facade, and loader entries",
4
- "version": "0.1.7-rc.1",
4
+ "version": "0.2.0-rc.1",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -44,12 +44,12 @@
44
44
  "@types/react": "~18.3.1",
45
45
  "react": "^18.2.0",
46
46
  "@deepseek-ai/cordis-plugin-loader": "~1.0.5",
47
- "@deepseek-ai/dsh-api-remotes": "0.1.7-rc.1",
48
- "@deepseek-ai/dsh-client-modules": "0.1.7-rc.1",
49
- "@deepseek-ai/dsh-client-ui-renderer": "0.1.7-rc.1",
50
- "@deepseek-ai/dsh-client-ui-theme": "0.1.7-rc.1",
47
+ "@deepseek-ai/dsh-api-remotes": "0.2.0-rc.1",
48
+ "@deepseek-ai/dsh-client-modules": "0.2.0-rc.1",
49
+ "@deepseek-ai/dsh-client-ui-renderer": "0.2.0-rc.1",
50
+ "@deepseek-ai/dsh-client-ui-theme": "0.2.0-rc.1",
51
51
  "@deepseek-ai/cordis": "~4.0.4",
52
- "@deepseek-ai/dsh-util-values": "0.1.7-rc.1"
52
+ "@deepseek-ai/dsh-util-values": "0.2.0-rc.1"
53
53
  },
54
54
  "files": [
55
55
  "lib/index.js",