@deepseek-ai/dsh-cordis-client-runner 0.2.1-alpha.1 → 0.2.1-alpha.2

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 (2) hide show
  1. package/lib/client.js +153 -41
  2. package/package.json +8 -8
package/lib/client.js CHANGED
@@ -1309,7 +1309,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
1309
1309
  },
1310
1310
  {
1311
1311
  signature: "refreshProjections(sessionId: SessionId): Promise<void>",
1312
- description: "Load all Session projections once per connection; retry an unsuccessful initial read.",
1312
+ description: "Read projections without starting migration; retry failed or migration-deferred reads.",
1313
1313
  parameters: [{
1314
1314
  name: "sessionId",
1315
1315
  description: "Session to inspect without opening its conversation."
@@ -1329,7 +1329,7 @@ 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 onCreated?: (childId: SessionId) => void }): Promise<SessionId>",
1332
+ signature: "fork(opts: { sessionId: SessionId atSeq?: number increaseTitle?: boolean onCreated?: (childId: SessionId) => void /** False refuses source migration; omission preserves the Host default. */ allowMigration?: boolean }): 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",
@@ -1415,11 +1415,14 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
1415
1415
  }]
1416
1416
  },
1417
1417
  {
1418
- signature: "setFontSize(px: number): void",
1419
- description: "Change the conversation content font size — the only font-size write entry. Accepted values are written through the settings scope and emit `theme/change`.",
1418
+ signature: "setFontSize(role: FontRole, px: number): void",
1419
+ description: "Change one role's font size — the only font-size write entry. Accepted values are written through the settings scope and emit `theme/change`.",
1420
1420
  parameters: [{
1421
+ name: "role",
1422
+ description: "font role."
1423
+ }, {
1421
1424
  name: "px",
1422
- description: "integer px within FONT_SIZE_MIN..FONT_SIZE_MAX; out-of-range or fractional values throw."
1425
+ description: "integer px within the role's `FONT_SIZE_SPECS` range; out-of-range or fractional values throw."
1423
1426
  }]
1424
1427
  },
1425
1428
  {
@@ -1509,15 +1512,22 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
1509
1512
  throws: ["on failure; a refused creation is also shown through the Workspace notice unless a later navigation or disposal superseded the request."]
1510
1513
  },
1511
1514
  {
1512
- signature: "forkSession(sessionId: SessionId, onCreated?: (childId: SessionId) => void): Promise<SessionId>",
1515
+ signature: "forkSession( sessionId: SessionId, onCreated?: (childId: SessionId) => void, options?: Pick<Parameters<ISessions['fork']>[0], 'allowMigration'>, ): Promise<SessionId>",
1513
1516
  description: "Fork a Session without changing the current selection.",
1514
- parameters: [{
1515
- name: "sessionId",
1516
- description: "source Session."
1517
- }, {
1518
- name: "onCreated",
1519
- description: "observer before the optional child-title update."
1520
- }],
1517
+ parameters: [
1518
+ {
1519
+ name: "sessionId",
1520
+ description: "source Session."
1521
+ },
1522
+ {
1523
+ name: "onCreated",
1524
+ description: "observer before the optional child-title update."
1525
+ },
1526
+ {
1527
+ name: "options",
1528
+ description: "optional permission to start source migration; omission preserves the Host default."
1529
+ }
1530
+ ],
1521
1531
  returns: "the child SessionId after creation and inherited-title increment."
1522
1532
  },
1523
1533
  {
@@ -1531,7 +1541,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
1531
1541
  },
1532
1542
  {
1533
1543
  signature: "startSession(workspaceId?: WorkspaceId, options?: StartSessionOptions): void",
1534
- description: "Start a New Session flow and navigate to its Session; a creation the Host refuses is shown through the Workspace notice and leaves the selection as it was.",
1544
+ description: "Create a fresh Session, or reuse a blank when preparing an explicit draft. A creation the Host refuses is shown through the Workspace notice and leaves the selection as it was.",
1535
1545
  parameters: [{
1536
1546
  name: "workspaceId",
1537
1547
  description: "explicit target; absent inherits the current or most recent Workspace."
@@ -1845,6 +1855,18 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
1845
1855
  name: "FactoryRegistrationPropsOf",
1846
1856
  declaration: "export type FactoryRegistrationPropsOf<F extends keyof SlotFactoryMap & string> = FactoryRenderPropsOf<F> & PropsStore<FactoryStoreOf<F>> & InjectFace<FactoryInjectOf<F>> & PropsLocale<FactoryLocaleOf<F>> & PropsRenderFactories;"
1847
1857
  },
1858
+ {
1859
+ name: "FontFamilies",
1860
+ declaration: "export type FontFamilies = Readonly<Record<FontRole, string>>;"
1861
+ },
1862
+ {
1863
+ name: "FontRole",
1864
+ declaration: "export type FontRole = typeof FONT_ROLES[number];"
1865
+ },
1866
+ {
1867
+ name: "FontSizes",
1868
+ declaration: "export type FontSizes = Readonly<Record<FontRole, number>>;"
1869
+ },
1848
1870
  {
1849
1871
  name: "GlobalStandardProps",
1850
1872
  declaration: "export interface GlobalStandardProps {\n}"
@@ -1873,6 +1895,10 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
1873
1895
  name: "ISession",
1874
1896
  declaration: "export interface ISession {\n readonly sessionId: SessionId;\n readonly projections: ProjectionsFace;\n beginSubmission(input: BeginSubmissionInput): SubmissionHandle;\n prompt(content: PromptContentPart[], mode: 'queue' | 'steer', signal?: AbortSignal, requestId?: SessionRequestId): Promise<RemoteResult<{\n accepted: true;\n }>>;\n readAttachment(attachmentId: AttachmentIdType): Promise<RemoteResult<{\n attachment: ImageAttachmentRef;\n data: Uint8Array;\n }>>;\n updateQueue(itemId: MessageId, action: QueueAction): Promise<RemoteResult<{\n accepted: true;\n }>>;\n cancel(): Promise<RemoteResult<{\n accepted: true;\n }>>;\n rename(title: string): Promise<RemoteResult<{\n title: string;\n seq: SessionSeq;\n }>>;\n loadOlder(): Promise<void>;\n loadThrough(seq: SessionSeq): Promise<void>;\n command(line: string): Promise<RemoteResult<{\n matched: boolean;\n }>>;\n}"
1875
1897
  },
1898
+ {
1899
+ name: "ISessions",
1900
+ declaration: "export interface ISessions {\n readonly list: ObservableSnapshot<SessionListState>;\n retain(target: SessionTarget, options: SessionRetainOptions): SessionReference;\n using<T>(target: SessionTarget, options: SessionRetainOptions, operation: (reference: SessionReference) => T | Promise<T>): Promise<T>;\n retainInfo(id: SessionId): ObservableSnapshot<SessionRetainInfo>;\n readonly searchResultLimit: number;\n create(opts?: {\n workspaceId?: WorkspaceId;\n cwd?: string;\n sessionId?: SessionId;\n }): Promise<SessionId>;\n subagentAddress(id: SessionId): SubagentAddress | undefined;\n refreshProjections(sessionId: SessionId): Promise<void>;\n refresh(): Promise<void>;\n search(query: string, signal: AbortSignal): Promise<RemoteResult<{\n items: SessionSearchResultItem[];\n hasMore: boolean;\n }>>;\n fork(opts: {\n sessionId: SessionId;\n atSeq?: number;\n increaseTitle?: boolean;\n onCreated?: (childId: SessionId) => void;\n allowMigration?: boolean;\n }): Promise<SessionId>;\n scope(id: SessionId): AgentContext | undefined;\n scopeOf(ctx: Context): SessionId | undefined;\n sessionOf(ctx: Context): SessionFace | undefined;\n binding(id: SessionId): SessionBinding | undefined;\n}"
1901
+ },
1876
1902
  {
1877
1903
  name: "KeyedHooksSources",
1878
1904
  declaration: "export type KeyedHooksSources = Record<string, KeyedStandardSource>;"
@@ -2109,10 +2135,22 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
2109
2135
  name: "SessionIdOf",
2110
2136
  declaration: "export type SessionIdOf = SessionStandardProps extends {\n sessionId: infer S;\n} ? S : string;"
2111
2137
  },
2138
+ {
2139
+ name: "SessionListPhase",
2140
+ declaration: "export type SessionListPhase = 'pending' | 'ready';"
2141
+ },
2142
+ {
2143
+ name: "SessionListState",
2144
+ declaration: "export interface SessionListState {\n ids: SessionId[];\n byId: Record<SessionId, SessionSummary>;\n phase: SessionListPhase;\n projectionsBySession: Readonly<Record<SessionId, SessionProjectionSnapshot>>;\n}"
2145
+ },
2112
2146
  {
2113
2147
  name: "SessionMaybeStandardProps",
2114
2148
  declaration: "export interface SessionMaybeStandardProps {\n}"
2115
2149
  },
2150
+ {
2151
+ name: "SessionProjectionSnapshot",
2152
+ declaration: "export interface SessionProjectionSnapshot {\n readonly values: Readonly<Partial<SessionProjectionMap>>;\n readonly state: 'idle' | 'loading' | 'ready' | 'migration-required' | 'error';\n readonly error: RemoteFailure | null;\n}"
2153
+ },
2116
2154
  {
2117
2155
  name: "SessionProviderComponent",
2118
2156
  declaration: "export type SessionProviderComponent = (props: SessionAreaProps) => ReactNode;"
@@ -2255,7 +2293,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
2255
2293
  },
2256
2294
  {
2257
2295
  name: "ThemeSnapshot",
2258
- declaration: "export interface ThemeSnapshot {\n preference: ThemePreference;\n fontSize: number;\n active: ThemeDefinition;\n themes: readonly ThemeDefinition[];\n revision: number;\n}"
2296
+ declaration: "export interface ThemeSnapshot {\n preference: ThemePreference;\n fontSizes: FontSizes;\n fontFamilies: FontFamilies;\n active: ThemeDefinition;\n themes: readonly ThemeDefinition[];\n revision: number;\n}"
2259
2297
  },
2260
2298
  {
2261
2299
  name: "ThemeTokenModes",
@@ -2459,7 +2497,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
2459
2497
  occupants: ["client-ui-message-feedback MessageFeedbackActions id 'feedback'"],
2460
2498
  replaceRisk: "none",
2461
2499
  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}",
2462
- source: "packages/client/ui-chat/src/client/contract/slots.ts:321"
2500
+ source: "packages/client/ui-chat/src/client/contract/slots.ts:414"
2463
2501
  },
2464
2502
  {
2465
2503
  key: "conversation.chat.commandview",
@@ -2503,7 +2541,46 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
2503
2541
  occupants: [],
2504
2542
  replaceRisk: "none",
2505
2543
  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}",
2506
- source: "packages/client/ui-chat/src/client/contract/slots.ts:309"
2544
+ source: "packages/client/ui-chat/src/client/contract/slots.ts:396"
2545
+ },
2546
+ {
2547
+ key: "conversation.chat.flow",
2548
+ kind: "single",
2549
+ scope: "session",
2550
+ summary: "Ordered Chat rows and local echoes with viewport-bound visibility hooks.",
2551
+ doc: "Ordered Chat rows and local echoes with viewport-bound visibility hooks.",
2552
+ registerOptions: [],
2553
+ ownerProps: ["/** Ordered rows and reconciled local echoes rendered inside one Chat viewport. */\nexport interface ChatFlowOwnerProps extends Pick<ChatNodeOwnerProps,\n 'cwd' | 'openSkill' | 'openFile' | 'inspectCall' | 'forkAt' | 'loadImage' | 'fileMentions'> {\n readonly entries: readonly RenderEntry[]\n readonly pendingInputs: readonly (PendingSubmission | InboxState['next-step'][number])[]\n readonly lastInputTurn: number | undefined\n readonly deferCollapse: boolean\n}"],
2554
+ ownerPropsReferences: [
2555
+ "ChatNodeOwnerProps",
2556
+ "PendingSubmission",
2557
+ "RenderEntry"
2558
+ ],
2559
+ standardProps: [
2560
+ "useResource: UseResource",
2561
+ "useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
2562
+ "usePanelInfo: UsePanelInfo",
2563
+ "useSessions: UseSessions",
2564
+ "useSessionStatus: UseSessionStatus",
2565
+ "useSessionRetainInfo: UseSessionRetainInfo",
2566
+ "useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
2567
+ "useChat: UseChat",
2568
+ "useConversation: UseConversation",
2569
+ "useInput: SnapshotSelectorHook<InputState>",
2570
+ "inputActions: InputActions",
2571
+ "useSession: SessionSnapshotSelector",
2572
+ "sessionId: SessionId",
2573
+ "useProjection: UseProjection",
2574
+ "useTrajectory: UseTrajectory"
2575
+ ],
2576
+ keyDomain: "",
2577
+ hookContext: "ChatFlowHookContext",
2578
+ slotInject: "ChatFlowInjected",
2579
+ declaredBy: "an entry in 'conversation.view' (client-ui-chat), so it exists while that entry is mounted",
2580
+ occupants: ["client-ui-chat ChatFlow"],
2581
+ replaceRisk: "shadows-shipped-ui",
2582
+ example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.chat.flow', () => ctx.slots.register(\n { name: 'conversation.chat.flow' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
2583
+ source: "packages/client/ui-chat/src/client/contract/slots.ts:365"
2507
2584
  },
2508
2585
  {
2509
2586
  key: "conversation.chat.node",
@@ -2546,7 +2623,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
2546
2623
  keyDomain: "fixed by the owner's key table { [Kind in ChatNodeKind]: { node: ChatNode<Kind> } }, already taken: assistant-step, command, command-input, compaction, context, manual-compaction, model-retry, question-reply, steering, system-prompt, tool-call, turn-error, turn-max-tokens, turn-process, turn-tail, turn-trigger, unknown, user, workflow-run",
2547
2624
  hookContext: "ChatNodeHookContext",
2548
2625
  slotInject: "ChatNodeInjected",
2549
- declaredBy: "an entry in 'conversation.view' (client-ui-chat), so it exists while that entry is mounted",
2626
+ declaredBy: "an entry in 'conversation.chat.flow' (client-ui-chat), so it exists while that entry is mounted",
2550
2627
  occupants: [
2551
2628
  "client-ui-chat UserMessageNodeView key 'user'",
2552
2629
  "client-ui-chat UserMessageNodeView key 'steering'",
@@ -2570,7 +2647,42 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
2570
2647
  ],
2571
2648
  replaceRisk: "shadows-shipped-ui",
2572
2649
  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}",
2573
- source: "packages/client/ui-chat/src/client/contract/slots.ts:290"
2650
+ source: "packages/client/ui-chat/src/client/contract/slots.ts:377"
2651
+ },
2652
+ {
2653
+ key: "conversation.chat.reasoning.body",
2654
+ kind: "single",
2655
+ scope: "session",
2656
+ summary: "Expanded reasoning body with the unchanged model text.",
2657
+ doc: "Expanded reasoning body with the unchanged model text. The official entry\nhas priority 100 and calls the reasoning Content Factory; smaller priority\nvalues replace it. Contributions must preserve access to the original text.",
2658
+ registerOptions: [],
2659
+ ownerProps: ["/** Original model-provided reasoning offered to the expanded Body Slot. */\nexport interface ReasoningBodyOwnerProps {\n /** Complete or streaming reasoning text. */\n readonly text: string\n /** Whether the reasoning tail is still streaming. */\n readonly running: boolean\n}"],
2660
+ ownerPropsReferences: [],
2661
+ standardProps: [
2662
+ "useResource: UseResource",
2663
+ "useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
2664
+ "usePanelInfo: UsePanelInfo",
2665
+ "useSessions: UseSessions",
2666
+ "useSessionStatus: UseSessionStatus",
2667
+ "useSessionRetainInfo: UseSessionRetainInfo",
2668
+ "useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
2669
+ "useChat: UseChat",
2670
+ "useConversation: UseConversation",
2671
+ "useInput: SnapshotSelectorHook<InputState>",
2672
+ "inputActions: InputActions",
2673
+ "useSession: SessionSnapshotSelector",
2674
+ "sessionId: SessionId",
2675
+ "useProjection: UseProjection",
2676
+ "useTrajectory: UseTrajectory"
2677
+ ],
2678
+ keyDomain: "",
2679
+ hookContext: "",
2680
+ slotInject: "",
2681
+ declaredBy: "an entry in 'conversation.chat.node' (client-ui-chat), so it exists while that entry is mounted",
2682
+ occupants: ["client-ui-chat DefaultReasoningBody", "experimental-client-ui-cot-translation TranslationBody"],
2683
+ replaceRisk: "shadows-shipped-ui",
2684
+ example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.chat.reasoning.body', () => ctx.slots.register(\n { name: 'conversation.chat.reasoning.body' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
2685
+ source: "packages/client/ui-chat/src/client/contract/slots.ts:402"
2574
2686
  },
2575
2687
  {
2576
2688
  key: "conversation.chat.turnTail",
@@ -2628,7 +2740,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
2628
2740
  ],
2629
2741
  replaceRisk: "none",
2630
2742
  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}",
2631
- source: "packages/client/ui-chat/src/client/contract/slots.ts:315"
2743
+ source: "packages/client/ui-chat/src/client/contract/slots.ts:408"
2632
2744
  },
2633
2745
  {
2634
2746
  key: "conversation.composer",
@@ -2937,7 +3049,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
2937
3049
  occupants: ["client-ui-directory-picker-browse BrowseDirectoryFlow", "client-ui-directory-picker-native NativeDirectoryFlow"],
2938
3050
  replaceRisk: "shadows-shipped-ui",
2939
3051
  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}",
2940
- source: "packages/client/ui-workspace/src/client/contract/slots.ts:117"
3052
+ source: "packages/client/ui-workspace/src/client/contract/slots.ts:118"
2941
3053
  },
2942
3054
  {
2943
3055
  key: "conversation.input.activity",
@@ -3374,11 +3486,11 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
3374
3486
  keyDomain: "",
3375
3487
  hookContext: "",
3376
3488
  slotInject: "",
3377
- declaredBy: "an entry in 'conversation.view' (client-ui-chat), so it exists while that entry is mounted",
3489
+ declaredBy: "an entry in 'conversation.chat.flow' (client-ui-chat), so it exists while that entry is mounted",
3378
3490
  occupants: ["client-ui-attachment MessageImages"],
3379
3491
  replaceRisk: "shadows-shipped-ui",
3380
3492
  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}",
3381
- source: "packages/client/ui-chat/src/client/contract/slots.ts:303"
3493
+ source: "packages/client/ui-chat/src/client/contract/slots.ts:390"
3382
3494
  },
3383
3495
  {
3384
3496
  key: "conversation.plan-review.actions",
@@ -3728,7 +3840,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
3728
3840
  occupants: ["client-ui-attachment MessageImages"],
3729
3841
  replaceRisk: "shadows-shipped-ui",
3730
3842
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.trajectory.images', () => ctx.slots.register(\n { name: 'conversation.trajectory.images' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
3731
- source: "packages/client/ui-trajectory/src/client/trajectory-contract.ts:98"
3843
+ source: "packages/client/ui-trajectory/src/client/trajectory-contract.ts:103"
3732
3844
  },
3733
3845
  {
3734
3846
  key: "conversation.view",
@@ -4005,7 +4117,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4005
4117
  occupants: ["client-ui-agent-preset CreatePluginMenuItem id 'create-plugin'"],
4006
4118
  replaceRisk: "none",
4007
4119
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('plugins.add.actions', () => ctx.slots.register(\n { name: 'plugins.add.actions', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
4008
- source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:84"
4120
+ source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:89"
4009
4121
  },
4010
4122
  {
4011
4123
  key: "plugins.bundle.activation",
@@ -4037,7 +4149,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4037
4149
  occupants: ["experimental-client-ui-voice-input VoiceSetupPrompt key '@deepseek-ai/dsh-experimental-voice-input-bundle'"],
4038
4150
  replaceRisk: "shadows-shipped-ui",
4039
4151
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('plugins.bundle.activation', () => ctx.slots.register(\n { name: 'plugins.bundle.activation', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
4040
- source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:86"
4152
+ source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:91"
4041
4153
  },
4042
4154
  {
4043
4155
  key: "plugins.bundle.config",
@@ -4062,14 +4174,14 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4062
4174
  "useSessionRetainInfo: UseSessionRetainInfo",
4063
4175
  "useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>"
4064
4176
  ],
4065
- keyDomain: "open: any string the owner dispatches (no compile-time key set), already taken: @deepseek-ai/dsh-experimental-voice-input-bundle",
4177
+ keyDomain: "open: any string the owner dispatches (no compile-time key set), already taken: @deepseek-ai/dsh-experimental-cot-translation-bundle, @deepseek-ai/dsh-experimental-voice-input-bundle",
4066
4178
  hookContext: "",
4067
4179
  slotInject: "",
4068
4180
  declaredBy: "an entry in 'main' (client-ui-plugin-manager), so it exists while that entry is mounted",
4069
- occupants: ["experimental-client-ui-voice-input VoicePreparation key '@deepseek-ai/dsh-experimental-voice-input-bundle'"],
4181
+ occupants: ["experimental-client-ui-cot-translation TranslationSettings key '@deepseek-ai/dsh-experimental-cot-translation-bundle'", "experimental-client-ui-voice-input VoicePreparation key '@deepseek-ai/dsh-experimental-voice-input-bundle'"],
4070
4182
  replaceRisk: "shadows-shipped-ui",
4071
4183
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('plugins.bundle.config', () => ctx.slots.register(\n { name: 'plugins.bundle.config', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
4072
- source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:102"
4184
+ source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:107"
4073
4185
  },
4074
4186
  {
4075
4187
  key: "plugins.detail.actions",
@@ -4115,7 +4227,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4115
4227
  occupants: [],
4116
4228
  replaceRisk: "none",
4117
4229
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('plugins.detail.actions', () => ctx.slots.register(\n { name: 'plugins.detail.actions', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
4118
- source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:116"
4230
+ source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:121"
4119
4231
  },
4120
4232
  {
4121
4233
  key: "plugins.detail.badge",
@@ -4161,7 +4273,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4161
4273
  occupants: [],
4162
4274
  replaceRisk: "none",
4163
4275
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('plugins.detail.badge', () => ctx.slots.register(\n { name: 'plugins.detail.badge', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
4164
- source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:121"
4276
+ source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:126"
4165
4277
  },
4166
4278
  {
4167
4279
  key: "plugins.detail.section",
@@ -4207,7 +4319,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4207
4319
  occupants: [],
4208
4320
  replaceRisk: "none",
4209
4321
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('plugins.detail.section', () => ctx.slots.register(\n { name: 'plugins.detail.section', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
4210
- source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:128"
4322
+ source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:133"
4211
4323
  },
4212
4324
  {
4213
4325
  key: "plugins.item",
@@ -4258,7 +4370,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4258
4370
  ],
4259
4371
  replaceRisk: "none",
4260
4372
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('plugins.item', () => ctx.slots.register(\n { name: 'plugins.item', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
4261
- source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:96"
4373
+ source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:101"
4262
4374
  },
4263
4375
  {
4264
4376
  key: "plugins.row.config",
@@ -4290,7 +4402,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4290
4402
  occupants: [],
4291
4403
  replaceRisk: "none",
4292
4404
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('plugins.row.config', () => ctx.slots.register(\n { name: 'plugins.row.config', key: '<one key the owner dispatches>' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
4293
- source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:110"
4405
+ source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:115"
4294
4406
  },
4295
4407
  {
4296
4408
  key: "rightbar",
@@ -4507,7 +4619,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4507
4619
  "client-ui-settings-session-log UploadRow",
4508
4620
  "client-ui-shortcuts ShortcutsRow id 'shortcuts'",
4509
4621
  "client-ui-theme AppearanceRow id 'appearance'",
4510
- "client-ui-theme FontSizeRow id 'font-size'"
4622
+ "client-ui-theme FontSettingsGroup id 'font-size'"
4511
4623
  ],
4512
4624
  replaceRisk: "none",
4513
4625
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('settings.general.item', () => ctx.slots.register(\n { name: 'settings.general.item', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
@@ -4984,7 +5096,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4984
5096
  occupants: ["client-ui-settings-account AccountQuotaNotice"],
4985
5097
  replaceRisk: "none",
4986
5098
  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}",
4987
- source: "packages/client/ui-chat/src/client/contract/slots.ts:329"
5099
+ source: "packages/client/ui-chat/src/client/contract/slots.ts:422"
4988
5100
  },
4989
5101
  {
4990
5102
  key: "sidebar",
@@ -5762,7 +5874,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5762
5874
  occupants: ["client-ui-schedule SessionScheduleHover id 'schedule-tasks'"],
5763
5875
  replaceRisk: "none",
5764
5876
  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}",
5765
- source: "packages/client/ui-workspace/src/client/contract/slots.ts:134"
5877
+ source: "packages/client/ui-workspace/src/client/contract/slots.ts:135"
5766
5878
  },
5767
5879
  {
5768
5880
  key: "sidebar.session.row.leading",
@@ -5808,7 +5920,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5808
5920
  occupants: ["client-ui-schedule SessionScheduleMark id 'schedule-mark'"],
5809
5921
  replaceRisk: "none",
5810
5922
  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}",
5811
- source: "packages/client/ui-workspace/src/client/contract/slots.ts:129"
5923
+ source: "packages/client/ui-workspace/src/client/contract/slots.ts:130"
5812
5924
  },
5813
5925
  {
5814
5926
  key: "sidebar.settings",
@@ -5916,7 +6028,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5916
6028
  occupants: ["client-ui-directory-picker-browse BrowseDirectoryFlow", "client-ui-directory-picker-native NativeDirectoryFlow"],
5917
6029
  replaceRisk: "shadows-shipped-ui",
5918
6030
  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}",
5919
- source: "packages/client/ui-workspace/src/client/contract/slots.ts:119"
6031
+ source: "packages/client/ui-workspace/src/client/contract/slots.ts:120"
5920
6032
  },
5921
6033
  {
5922
6034
  key: "sidebar.workspaces.session.menu.item",
@@ -5967,7 +6079,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5967
6079
  ],
5968
6080
  replaceRisk: "none",
5969
6081
  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}",
5970
- source: "packages/client/ui-workspace/src/client/contract/slots.ts:166"
6082
+ source: "packages/client/ui-workspace/src/client/contract/slots.ts:167"
5971
6083
  },
5972
6084
  {
5973
6085
  key: "sidebar.workspaces.session.row.action",
@@ -6013,7 +6125,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
6013
6125
  occupants: ["client-ui-workspace ArchiveSessionRowButton id 'archive'", "client-ui-workspace PinSessionRowButton id 'pin'"],
6014
6126
  replaceRisk: "none",
6015
6127
  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}",
6016
- source: "packages/client/ui-workspace/src/client/contract/slots.ts:184"
6128
+ source: "packages/client/ui-workspace/src/client/contract/slots.ts:185"
6017
6129
  },
6018
6130
  {
6019
6131
  key: "tool.call.images",
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.2.1-alpha.1",
4
+ "version": "0.2.1-alpha.2",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -41,15 +41,15 @@
41
41
  "@deepseek-ai/cordis": "~4.0.5-alpha.1"
42
42
  },
43
43
  "devDependencies": {
44
- "@types/react": "~18.3.1",
45
- "react": "^18.2.0",
46
44
  "@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.1",
47
- "@deepseek-ai/dsh-api-remotes": "0.2.1-alpha.1",
48
- "@deepseek-ai/dsh-client-modules": "0.2.1-alpha.1",
49
- "@deepseek-ai/dsh-client-ui-renderer": "0.2.1-alpha.1",
45
+ "@deepseek-ai/dsh-api-remotes": "0.2.1-alpha.2",
46
+ "@deepseek-ai/dsh-client-modules": "0.2.1-alpha.2",
47
+ "@deepseek-ai/dsh-client-ui-renderer": "0.2.1-alpha.2",
48
+ "@deepseek-ai/dsh-client-ui-theme": "0.2.1-alpha.2",
49
+ "@types/react": "~18.3.1",
50
50
  "@deepseek-ai/cordis": "~4.0.5-alpha.1",
51
- "@deepseek-ai/dsh-util-values": "0.2.1-alpha.1",
52
- "@deepseek-ai/dsh-client-ui-theme": "0.2.1-alpha.1"
51
+ "react": "^18.2.0",
52
+ "@deepseek-ai/dsh-util-values": "0.2.1-alpha.2"
53
53
  },
54
54
  "files": [
55
55
  "lib/index.js",