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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.i18n.yaml CHANGED
@@ -75,5 +75,5 @@
75
75
  en: a728aeb4aa18db7d
76
76
  zh: b596309cd6707da7
77
77
  /deepseek-ai-dsh-cordis-client-runner/known-limitations-and-deferred-work/dev-note:
78
- en: c4cff307d238c93a
79
- zh: d1a9ff4164056741
78
+ en: e67f633dc6fe7773
79
+ zh: 3bb0c20c93f16f98
package/README.md CHANGED
@@ -143,5 +143,3 @@ These limits define where the browser half needs special care. They are current
143
143
  None.
144
144
 
145
145
  </details>
146
-
147
- **Runtime invariant:** No companion is published. The owned relation (a live Plugin's loader entry exists exactly while one Plugin Run ID is live) is browser-only state reachable through the client half's service, which the node-plane companion cannot observe. The relation is asserted by the package's own load/teardown coverage instead.
package/README.zh.md CHANGED
@@ -143,5 +143,3 @@ React 可能在加载成功后失败。Client 报告其拥有的每个 entry 失
143
143
  无。
144
144
 
145
145
  </details>
146
-
147
- **运行时不变式:** 不发布伴生入口。所属关系(一个 live Plugin 的 loader entry 仅在一个 Plugin Run ID 存活期间存在)是只能通过 Client 半服务访问的浏览器侧状态,Node 平面的伴生入口无法观察。该关系改由本包自己的装载与拆除测试直接断言。
package/lib/client.js CHANGED
@@ -1530,11 +1530,14 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
1530
1530
  returns: "a Session already addressable through the Session Controller."
1531
1531
  },
1532
1532
  {
1533
- signature: "startSession(workspaceId?: WorkspaceId): void",
1533
+ signature: "startSession(workspaceId?: WorkspaceId, options?: StartSessionOptions): void",
1534
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.",
1535
1535
  parameters: [{
1536
1536
  name: "workspaceId",
1537
1537
  description: "explicit target; absent inherits the current or most recent Workspace."
1538
+ }, {
1539
+ name: "options",
1540
+ description: "initial content; existing text or attachments are preserved unless clearPreviousDraft is true."
1538
1541
  }]
1539
1542
  },
1540
1543
  {
@@ -1814,6 +1817,10 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
1814
1817
  name: "ConnectionStateSource",
1815
1818
  declaration: "export interface ConnectionStateSource {\n getSnapshot(): ConnectionState | undefined;\n subscribe(listener: () => void): () => void;\n}"
1816
1819
  },
1820
+ {
1821
+ name: "DraftInitializationOptions",
1822
+ declaration: "export interface DraftInitializationOptions {\n readonly prompt?: string;\n readonly clearPreviousDraft?: boolean;\n}"
1823
+ },
1817
1824
  {
1818
1825
  name: "EntryKeyOf",
1819
1826
  declaration: "export type EntryKeyOf<K extends keyof SlotMap & string> = SlotMap[K] extends {\n kind: 'keyed';\n keyProps: infer P extends object;\n} ? keyof P & string : string;"
@@ -2202,6 +2209,10 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
2202
2209
  name: "SnapshotSelectorHook",
2203
2210
  declaration: "export type SnapshotSelectorHook<T> = <S>(sel: (s: T) => S, eq?: (a: S, b: S) => boolean) => S;"
2204
2211
  },
2212
+ {
2213
+ name: "StartSessionOptions",
2214
+ declaration: "export type StartSessionOptions = DraftInitializationOptions;"
2215
+ },
2205
2216
  {
2206
2217
  name: "StoreDecl",
2207
2218
  declaration: "export type StoreDecl = StoreHandle<any, any> | StoreFactory;"
@@ -2749,7 +2760,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
2749
2760
  hookContext: "",
2750
2761
  slotInject: "",
2751
2762
  declaredBy: "an entry in 'conversation.composer.bar' (client-ui-conversation), so it exists while that entry is mounted",
2752
- occupants: ["client-ui-chat StatsPills id 'stats'"],
2763
+ occupants: ["client-ui-chat ActivityPill id 'activity'", "client-ui-chat UsagePill id 'usage'"],
2753
2764
  replaceRisk: "none",
2754
2765
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.composer.dock', () => ctx.slots.register(\n { name: 'conversation.composer.dock', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
2755
2766
  source: "packages/client/ui-conversation/src/client/contract/slots.ts:199"
@@ -3052,7 +3063,8 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
3052
3063
  occupants: [
3053
3064
  "client-ui-conversation QueueDock id 'queue'",
3054
3065
  "client-ui-conversation TodoDock id 'todo'",
3055
- "client-ui-goal GoalDock id 'goal'"
3066
+ "client-ui-goal GoalDock id 'goal'",
3067
+ "experimental-client-ui-claude-code-mods Band id 'claude-code-mods'"
3056
3068
  ],
3057
3069
  replaceRisk: "none",
3058
3070
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('conversation.input.dock', () => ctx.slots.register(\n { name: 'conversation.input.dock', id: 'my-entry', order: 100, label: 'My entry' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
@@ -3949,6 +3961,52 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
3949
3961
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('main.conversation', () => ctx.slots.register(\n { name: 'main.conversation' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
3950
3962
  source: "packages/client/ui-conversation/src/client/contract/slots.ts:131"
3951
3963
  },
3964
+ {
3965
+ key: "plugins.add.actions",
3966
+ kind: "list",
3967
+ scope: "root",
3968
+ summary: "Additional MenuItemButton rows after installation: 72px high, with a title and a description capped at two lines.",
3969
+ doc: "Additional MenuItemButton rows after installation: 72px high, with a title and a description capped at two lines.",
3970
+ registerOptions: [
3971
+ {
3972
+ name: "id",
3973
+ requirement: "required",
3974
+ type: "string",
3975
+ 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."
3976
+ },
3977
+ {
3978
+ name: "order",
3979
+ requirement: "optional",
3980
+ type: "number",
3981
+ doc: "Position among the entries, ascending (default 0)."
3982
+ },
3983
+ {
3984
+ name: "label",
3985
+ requirement: "optional",
3986
+ type: "string | (() => string)",
3987
+ 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."
3988
+ }
3989
+ ],
3990
+ ownerProps: ["/** Add-plugin menu actions, independent of any selected bundle or Session. */\nexport interface PluginAddActionsProps {\n /** Close the add-plugin menu before starting the contributed action. */\n readonly onDismiss: () => void\n}"],
3991
+ ownerPropsReferences: [],
3992
+ standardProps: [
3993
+ "useResource: UseResource",
3994
+ "useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
3995
+ "usePanelInfo: UsePanelInfo",
3996
+ "useSessions: UseSessions",
3997
+ "useSessionStatus: UseSessionStatus",
3998
+ "useSessionRetainInfo: UseSessionRetainInfo",
3999
+ "useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>"
4000
+ ],
4001
+ keyDomain: "",
4002
+ hookContext: "",
4003
+ slotInject: "",
4004
+ declaredBy: "an entry in 'main' (client-ui-plugin-manager), so it exists while that entry is mounted",
4005
+ occupants: ["client-ui-agent-preset CreatePluginMenuItem id 'create-plugin'"],
4006
+ replaceRisk: "none",
4007
+ 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"
4009
+ },
3952
4010
  {
3953
4011
  key: "plugins.bundle.activation",
3954
4012
  kind: "keyed",
@@ -3979,7 +4037,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
3979
4037
  occupants: ["experimental-client-ui-voice-input VoiceSetupPrompt key '@deepseek-ai/dsh-experimental-voice-input-bundle'"],
3980
4038
  replaceRisk: "shadows-shipped-ui",
3981
4039
  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}",
3982
- source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:78"
4040
+ source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:86"
3983
4041
  },
3984
4042
  {
3985
4043
  key: "plugins.bundle.config",
@@ -4011,7 +4069,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4011
4069
  occupants: ["experimental-client-ui-voice-input VoicePreparation key '@deepseek-ai/dsh-experimental-voice-input-bundle'"],
4012
4070
  replaceRisk: "shadows-shipped-ui",
4013
4071
  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}",
4014
- source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:94"
4072
+ source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:102"
4015
4073
  },
4016
4074
  {
4017
4075
  key: "plugins.detail.actions",
@@ -4057,7 +4115,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4057
4115
  occupants: [],
4058
4116
  replaceRisk: "none",
4059
4117
  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}",
4060
- source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:108"
4118
+ source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:116"
4061
4119
  },
4062
4120
  {
4063
4121
  key: "plugins.detail.badge",
@@ -4103,7 +4161,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4103
4161
  occupants: [],
4104
4162
  replaceRisk: "none",
4105
4163
  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}",
4106
- source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:113"
4164
+ source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:121"
4107
4165
  },
4108
4166
  {
4109
4167
  key: "plugins.detail.section",
@@ -4149,7 +4207,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4149
4207
  occupants: [],
4150
4208
  replaceRisk: "none",
4151
4209
  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}",
4152
- source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:120"
4210
+ source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:128"
4153
4211
  },
4154
4212
  {
4155
4213
  key: "plugins.item",
@@ -4200,7 +4258,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4200
4258
  ],
4201
4259
  replaceRisk: "none",
4202
4260
  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}",
4203
- source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:88"
4261
+ source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:96"
4204
4262
  },
4205
4263
  {
4206
4264
  key: "plugins.row.config",
@@ -4232,7 +4290,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4232
4290
  occupants: [],
4233
4291
  replaceRisk: "none",
4234
4292
  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}",
4235
- source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:102"
4293
+ source: "packages/client/ui-plugin-manager/src/client/slot-contract.ts:110"
4236
4294
  },
4237
4295
  {
4238
4296
  key: "rightbar",
@@ -4785,6 +4843,33 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4785
4843
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('settings.trigger', () => ctx.slots.register(\n { name: 'settings.trigger' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
4786
4844
  source: "packages/client/ui-settings/src/client/contract/slots.ts:27"
4787
4845
  },
4846
+ {
4847
+ key: "shell.bottom",
4848
+ kind: "single",
4849
+ scope: "root",
4850
+ summary: "Full-width bottom content below all three columns.",
4851
+ doc: "Full-width bottom content below all three columns. Its rendered height\nreduces the columns' available height; empty content reserves no space.\nThe occupant owns its height, visibility, and controls. It receives no\nSession binding and remains mounted across main-panel navigation.",
4852
+ registerOptions: [],
4853
+ ownerProps: [],
4854
+ ownerPropsReferences: [],
4855
+ standardProps: [
4856
+ "useResource: UseResource",
4857
+ "useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>",
4858
+ "usePanelInfo: UsePanelInfo",
4859
+ "useSessions: UseSessions",
4860
+ "useSessionStatus: UseSessionStatus",
4861
+ "useSessionRetainInfo: UseSessionRetainInfo",
4862
+ "useWorkspaces: SnapshotSelectorHook<WorkspaceSnapshot>"
4863
+ ],
4864
+ keyDomain: "",
4865
+ hookContext: "",
4866
+ slotInject: "",
4867
+ declaredBy: "an entry in 'root' (client-ui-layout), so it exists while that entry is mounted",
4868
+ occupants: ["experimental-inspector InspectorPage"],
4869
+ replaceRisk: "shadows-shipped-ui",
4870
+ example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('shell.bottom', () => ctx.slots.register(\n { name: 'shell.bottom' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
4871
+ source: "packages/client/ui-layout/src/client/index.ts:94"
4872
+ },
4788
4873
  {
4789
4874
  key: "shell.leading",
4790
4875
  kind: "single",
@@ -4810,7 +4895,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4810
4895
  occupants: ["client-ui-sidebar HeaderLeadingControls"],
4811
4896
  replaceRisk: "shadows-shipped-ui",
4812
4897
  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}",
4813
- source: "packages/client/ui-layout/src/client/index.ts:112"
4898
+ source: "packages/client/ui-layout/src/client/index.ts:119"
4814
4899
  },
4815
4900
  {
4816
4901
  key: "shell.overlay",
@@ -4867,7 +4952,7 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
4867
4952
  ],
4868
4953
  replaceRisk: "none",
4869
4954
  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}",
4870
- source: "packages/client/ui-layout/src/client/index.ts:98"
4955
+ source: "packages/client/ui-layout/src/client/index.ts:105"
4871
4956
  },
4872
4957
  {
4873
4958
  key: "shell.quota-notice",
@@ -5153,7 +5238,8 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5153
5238
  "client-ui-sidebar-files FilesBody",
5154
5239
  "client-ui-sidebar-right GuideBody",
5155
5240
  "client-ui-sidebar-terminal LazyTerminalBody",
5156
- "client-ui-subagent SidebarChatTab"
5241
+ "client-ui-subagent SidebarChatTab",
5242
+ "experimental-session-inspector SessionInspectorView"
5157
5243
  ],
5158
5244
  replaceRisk: "none",
5159
5245
  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}",
@@ -5962,14 +6048,14 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
5962
6048
  occupants: ["client-ui-attachment MessageImages"],
5963
6049
  replaceRisk: "shadows-shipped-ui",
5964
6050
  example: "return {\n inject: ['slots'],\n apply(ctx) {\n ctx.slots.inject('tool.call.images', () => ctx.slots.register(\n { name: 'tool.call.images' },\n () => React.createElement('div', null, 'hello'),\n ))\n },\n}",
5965
- source: "packages/client/ui-tool/src/client/contract/slots.ts:46"
6051
+ source: "packages/client/ui-tool/src/client/contract/slots.ts:44"
5966
6052
  },
5967
6053
  {
5968
6054
  key: "tool.call.toolview",
5969
6055
  kind: "keyed",
5970
6056
  scope: "session",
5971
6057
  summary: "Keyed Tool call view dispatched by wire Tool name.",
5972
- doc: "Keyed Tool call view dispatched by wire Tool name. Any name is allowed,\nincluding tools registered by your package. Register with\n`key: '<tool name>'`; a typo never renders.\n\nRegistering an occupied key replaces its view; unclaimed keys use the\ngeneric row. The owner supplies the call identity and frozen running\nor settled node through explicit phase props. Preparing blocks have no dispatched\narguments; useToolCallArgumentsPartial optionally subscribes to their raw prefix.",
6058
+ doc: "Keyed Tool call view dispatched by wire Tool name. Any name is allowed,\nincluding tools registered by your package. Register with\n`key: '<tool name>'`; a typo never renders.\n\nRegistering an occupied key replaces its view; unclaimed keys use the\ngeneric row. The owner supplies the call identity and running\nor settled node through explicit phase props. Every stage supplies\n`name` and a lazy `args` view; preparing arguments may be incomplete.",
5973
6059
  registerOptions: [{
5974
6060
  name: "key",
5975
6061
  requirement: "required",
@@ -6007,8 +6093,8 @@ call: (method, args = null) => env.invoke(method, args) }, harnessTrap(), ...Obj
6007
6093
  "useTrajectory: UseTrajectory"
6008
6094
  ],
6009
6095
  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",
6010
- hookContext: "ToolCallHookContext",
6011
- slotInject: "ToolCallInjected",
6096
+ hookContext: "",
6097
+ slotInject: "",
6012
6098
  declaredBy: "an entry in 'conversation.chat.node' (client-ui-tool), so it exists while that entry is mounted",
6013
6099
  occupants: [
6014
6100
  "client-ui-deliverables PresentRow key 'present'",
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.0-rc.2",
4
+ "version": "0.2.1-alpha.1",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -38,18 +38,18 @@
38
38
  },
39
39
  "license": "MIT",
40
40
  "peerDependencies": {
41
- "@deepseek-ai/cordis": "~4.0.4"
41
+ "@deepseek-ai/cordis": "~4.0.5-alpha.1"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/react": "~18.3.1",
45
45
  "react": "^18.2.0",
46
- "@deepseek-ai/cordis-plugin-loader": "~1.0.5",
47
- "@deepseek-ai/dsh-client-modules": "0.2.0-rc.2",
48
- "@deepseek-ai/dsh-api-remotes": "0.2.0-rc.2",
49
- "@deepseek-ai/dsh-client-ui-renderer": "0.2.0-rc.2",
50
- "@deepseek-ai/cordis": "~4.0.4",
51
- "@deepseek-ai/dsh-client-ui-theme": "0.2.0-rc.2",
52
- "@deepseek-ai/dsh-util-values": "0.2.0-rc.2"
46
+ "@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",
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"
53
53
  },
54
54
  "files": [
55
55
  "lib/index.js",