@deepseek-ai/dsh-web-app 0.1.5-rc.2 → 0.1.6-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.
package/README.i18n.yaml CHANGED
@@ -2,5 +2,5 @@
2
2
  # side as of the last confirmed-consistent state. Both languages carry equal authority;
3
3
  # after editing either side, bring the other along and re-record with:
4
4
  # pnpm run verify-translation-pairing --write packages/bundle/web-app/README.md
5
- README.md: aea694942173a856861d00a69f15b451cc930976
6
- README.zh.md: f1b402c985ec2c21afdd67f8cb5477196aafeb44
5
+ README.md: d74489dd294bbf0f8c09df02ffc42984517267cd
6
+ README.zh.md: 9d80190bcf332e1271f1f00bceee34c72416cce4
package/README.md CHANGED
@@ -36,6 +36,10 @@ dsh --profile web --no-open --port 8080
36
36
 
37
37
  After startup you see a `dsh web:` line whose root URL carries a fresh process token. Unless `--no-open` or an SSH session suppresses it, the default browser opens that URL, receives a signed cookie, and redirects to the clean root page. You know it worked when the page loads and you can chat with the agent. Two failures to expect: if the frontend is not built, startup stops with a build hint (`pnpm run build` in a checkout); if the browser cannot be opened, a credential-free diagnostic prints to stderr while the server keeps running — open the printed startup URL yourself.
38
38
 
39
+ **Settings → Models** displays **DeepSeek**, using `DEEPSEEK_API_KEY`. The default is `deepseek-official` / `deepseek-flash` (DeepSeek-V41-Flash). The [DeepSeek plugin](../../llm/llm-deepseek/README.md#choose-a-protocol) defaults to Messages; set `protocol: chat-completions` in Cordis YAML to select Chat Completions. Web has no protocol selector.
40
+
41
+ Saved model selections override the composition default. Both protocols share `deepseek-official` and `llm-deepseek` settings, so switching preserves model selections and credential references. Endpoint overrides retain their values; the settings card lets users supply a compatible API address.
42
+
39
43
  ### Configuration
40
44
 
41
45
  Most users never set these; the command-line flags feed the four settings below — `--host`, `--port`, and `--trusted-host` come from the invocation, and `--no-open` turns the browser handoff off for that invocation:
@@ -69,7 +73,7 @@ Each browser session composes its own agent from the shipped presets (the `stand
69
73
  <details>
70
74
  <summary>Implementation internals — click to expand</summary>
71
75
 
72
- The bundle is one patch plus one runtime glue plugin. The storage stack and projection cache come from `dsh-base`; the web overlay's workspace and message-feedback rows consume that shared `storageDomain` service. The patch restates the surface-specific values the base deliberately omits, inserts the web-only host rows and browser roster, then moves the agent plane behind presets. The glue plugin owns dist serving, trust sampling, prompt sections, the bash variable, and the readiness announcements.
76
+ The bundle is one patch plus one runtime glue plugin. The storage stack and projection cache come from `dsh-base`; the web overlay's workspace and message-feedback rows consume that shared `storageDomain` service. The patch restates the surface-specific values the base deliberately omits, inserts the web-only host rows and browser roster, then moves the agent plane behind presets. The glue plugin owns dist serving, trust sampling, prompt sections, the bash variable, and the readiness announcements. The `office-to-pdf` row mounts one lazy [Office conversion provider](../../document/office-to-pdf/README.md) for Host consumers, including Desktop compositions using this bundle. The conversion service's Remote methods authorize preview reads, while Document Preview owns the Office viewer and Client cache.
73
77
 
74
78
  ### Patch semantics
75
79
 
@@ -77,7 +81,7 @@ A patch replaces the targeted row's whole `config`, so each web row restates eve
77
81
 
78
82
  ### Readiness
79
83
 
80
- The URL line and browser handoff are readiness signals: supervisors RPC as soon as they observe the line, and a browser requests the page as soon as it opens, so both run only after the Loader tree settles and Connection authentication is available — or immediately in a hand-built tree without a Loader. A tree disposed mid-boot announces nothing.
84
+ The URL line and browser handoff are readiness signals: supervisors RPC as soon as they observe the line, and a browser requests the page as soon as it opens, so both run only after the Loader tree settles, the required-startup audit passes, and Connection authentication is available — or immediately in a hand-built tree without a Loader. Client combo JavaScript and source maps remain unmaterialized at this point. Optional plugin failures do not suppress readiness; a required startup failure or a tree disposed mid-boot announces nothing.
81
85
 
82
86
  ### LAN trust sampling
83
87
 
package/README.zh.md CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: "dsh 的浏览器 GUI:交互式聊天、模型与设置管理、会话历史,供用户运行 dsh web 表层。"
2
+ description: "dsh 的浏览器 GUI:交互式聊天、模型与设置管理、会话历史,供运行 dsh web 表层的用户使用。"
3
3
  kind: "package-bundle"
4
4
  ---
5
5
 
@@ -9,7 +9,7 @@ kind: "package-bundle"
9
9
 
10
10
  ## 概述
11
11
 
12
- 运行 `dsh --profile web`,打开提供聊天、模型与设置管理以及会话历史的交互式浏览器 GUI。它使用与其他 dsh 表层相同的模型访问、工具与安全默认值。启动时会打印经过认证的 URL,通常还会在默认浏览器中打开;SSH 会话和 `--no-open` 会保留该 URL,供你手动打开。你可以更改端口并允许额外主机,但不能绑定所有网络接口。需要在浏览器中交互式工作时选择本包;一次性的命令行任务应使用 `dsh-headless`。
12
+ 运行 `dsh --profile web`,打开提供聊天、模型与设置管理以及会话历史的交互式浏览器 GUI。它使用与其他 dsh 表层相同的模型访问、工具与安全默认值。启动时会打印带认证信息的 URL,通常还会在默认浏览器中打开;SSH 会话和 `--no-open` 会保留该 URL,供你手动打开。你可以更改端口并允许额外主机,但不能绑定所有网络接口。需要在浏览器中交互式工作时选择本包;一次性的命令行任务应使用 `dsh-headless`。
13
13
 
14
14
  ## 目录
15
15
 
@@ -34,7 +34,11 @@ dsh --profile web
34
34
  dsh --profile web --no-open --port 8080
35
35
  ```
36
36
 
37
- 启动后你会看到 `dsh web:` 行,其根 URL 携带新的进程 token。除非 `--no-open` 或 SSH 会话抑制,否则默认浏览器会打开该 URL、取得签名 cookie,再重定向到干净的根页面。页面加载且你可以与 agent(智能体)对话,就说明成功了。两种可预期的失败:前端未构建时,启动会以构建提示停止(checkout 中运行 `pnpm run build`);浏览器无法打开时,stderr 会打印不含凭据的诊断,但服务器会继续运行——请自行打开已打印的启动 URL。
37
+ 启动后你会看到 `dsh web:` 行,其根 URL 携带新的进程 token。除非 `--no-open` 或 SSH 会话抑制,否则默认浏览器会打开该 URL、取得签名 cookie,再重定向到不含认证参数的根页面。页面加载且你可以与 agent 对话,就说明成功了。两种可预期的失败:前端未构建时,启动会以构建提示停止(checkout 中运行 `pnpm run build`);浏览器无法打开时,stderr 会打印不含凭据的诊断,但服务器会继续运行——请自行打开已打印的启动 URL。
38
+
39
+ **设置 → 模型**显示 **DeepSeek**,使用 `DEEPSEEK_API_KEY`。默认模型为 `deepseek-official` / `deepseek-flash`(DeepSeek-V41-Flash)。[DeepSeek 插件](../../llm/llm-deepseek/README.zh.md#choose-a-protocol)默认使用 Messages;在 Cordis YAML 中设置 `protocol: chat-completions` 可选择 Chat Completions。Web 不提供协议选择器。
40
+
41
+ 已保存的模型选择优先于组合默认值。两种协议共用 `deepseek-official` 与 `llm-deepseek` 设置,因此切换协议不改变模型选择或复制凭据。端点覆盖保持原值;设置卡片允许用户填写兼容的 API 地址。
38
42
 
39
43
  ### 配置
40
44
 
@@ -44,14 +48,14 @@ dsh --profile web --no-open --port 8080
44
48
  |---|---|---|
45
49
  | `openBrowser` | `true` | 启动后用默认浏览器打开;SSH 启动会抑制它 |
46
50
  | `printUrl` | `true` | 启动时打印 `dsh web:` URL 行 |
47
- | `surfaceContext` | `true` | 给 agent(智能体)提供 GUI 定位上下文,并把 `DSH_WEB_URL` 暴露给其 shell 命令 |
51
+ | `surfaceContext` | `true` | 给 agent 提供 GUI 定位上下文,并把 `DSH_WEB_URL` 暴露给其 shell 命令 |
48
52
  | `trustedHosts` | `[]` | 允许从网络访问 GUI 的额外主机 |
49
53
 
50
54
  生成的[配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-web-app)是每个受支持字段及其 JSDoc 的穷尽式真源。
51
55
 
52
56
  ### LAN 访问与可信主机
53
57
 
54
- 默认情况下 GUI 只接受本机的连接。绑定所有网络接口的部署也会允许 LAN 内的浏览器访问,此时打印的 URL 会附带一个 LAN 地址;`--trusted-host` 在两种情况下都能添加额外主机。Host 与 Origin 检查控制可达性,token 交换则认证每个 Host API 方法与 WebSocket stream。LAN 地址只在启动时采样一次,因此之后的网络变化不会被感知——重启 GUI 以重新公告。
58
+ 默认情况下 GUI 只接受本机的连接。绑定所有网络接口的部署也会允许 LAN 内的浏览器访问,此时打印的 URL 会附带一个 LAN 地址;`--trusted-host` 在两种情况下都能添加额外主机。Host 与 Origin 检查控制可达性,token 交换则认证每个 Host API 方法与 WebSocket 流。LAN 地址只在启动时采样一次,因此之后的网络变化不会被感知——重启 GUI 以重新公告。
55
59
 
56
60
  ### 通过 SSH 运行
57
61
 
@@ -59,7 +63,7 @@ dsh --profile web --no-open --port 8080
59
63
 
60
64
  ### 按会话的 agent 设置
61
65
 
62
- 每个浏览器会话都从随发行版交付的 preset(默认 `standard`)组合自己的 agent(智能体),而不是共享一套进程级工具集。你可以更改默认 preset,或在 `$DSH_HOME/.agent-presets` 下添加自己的 preset。
66
+ 每个浏览器会话都从随发行版交付的 preset(默认 `standard`)组合自己的 agent,而不是共享一套进程级工具集。你可以更改默认 preset,或在 `$DSH_HOME/.agent-presets` 下添加自己的 preset。
63
67
 
64
68
  -----
65
69
 
@@ -69,7 +73,7 @@ dsh --profile web --no-open --port 8080
69
73
  <details>
70
74
  <summary>实现细节——点击展开</summary>
71
75
 
72
- 本组合包是一份 patch 加一个运行时粘合插件。patch 重述 base 刻意省略的表层专属值,插入仅 Web 使用的宿主行与浏览器名录,然后把 agent 层移到 preset 之后;粘合插件负责 dist 服务、信任采样、提示词段落、bash 变量与就绪宣告。
76
+ 此 bundle 由一个补丁和一个运行时胶水插件组成。存储栈与投影缓存来自 `dsh-base`;Web 叠加层的工作区和消息反馈条目消费共享的 `storageDomain` 服务。补丁重述 base 有意省略的界面专用值,插入 Web 专用宿主条目和浏览器插件列表,再将 Agent 层移到预设后面。胶水插件负责 dist 服务、信任采样、提示词段落、bash 变量和就绪通知。`office-to-pdf` 条目为宿主消费者挂载一个延迟创建引擎的 [Office 转换提供方](../../document/office-to-pdf/README.zh.md),使用此 bundle 的 Desktop 组合也共享该提供方。 转换服务的 Remote 方法负责预览读取授权,Document Preview 负责 Office 查看器和客户端缓存。
73
77
 
74
78
  ### patch 语义
75
79
 
@@ -77,7 +81,7 @@ patch 会替换目标行的整个 `config`,因此每个 Web 行都重述自己
77
81
 
78
82
  ### 就绪宣告
79
83
 
80
- URL 行与浏览器交接都是就绪信号:监督方一观察到该行就发起 RPC,浏览器一打开就请求页面,因此两者只在 Loader 配置树结算且 Connection 认证可用后运行——在没有 Loader 的手工构建树中则立即运行。启动中途被释放的树不会宣告任何内容。
84
+ URL 行与浏览器交接都是就绪信号:监督方一观察到该行就发起 RPC,浏览器一打开就请求页面,因此两者只在 Loader 配置树结算、通过 required 启动检查且 Connection 认证可用后运行——在没有 Loader 的手工构建树中则立即运行。此时 client combo JavaScript 和 source map 仍未物化。可选插件失败不会阻止就绪宣告;required 启动失败或启动中途被释放的树不会宣告任何内容。
81
85
 
82
86
  ### LAN 信任采样
83
87
 
@@ -89,16 +93,16 @@ URL 行与浏览器交接都是就绪信号:监督方一观察到该行就发
89
93
  |---|---|
90
94
  | [`src/index.ts`](src/index.ts) | `web-app` 粘合插件:dist 解析、LAN 信任采样、提示词段落、bash 变量、URL 行、浏览器交接 |
91
95
  | [`src/startup.ts`](src/startup.ts) | `web-startup` 提供方:`--host`、`--port`、`--trusted-host`、`--no-open`、`--help` |
92
- | [`cordis.patch.yml`](cordis.patch.yml) | Web patch:重述的基础值、Web 宿主行、浏览器名录、preset 之后的 agent 层 |
93
- | — | 不发布运行时不变式伴生入口;本包只持有静态 contribution 列表,每项 contribution 都由其 registry 释放。 |
94
- | [`tests/web-app.spec.ts`](tests/web-app.spec.ts) | dist 解析、fallback 席位、提示词段落、就绪宣告 |
96
+ | [`cordis.patch.yml`](cordis.patch.yml) | Web patch:重述的基础值、Web 宿主行、浏览器名录、由 preset 承载的 agent 层 |
97
+ | — | 不发布运行时不变式伴生入口;每项贡献(frontend-static 子插件、提示词段落、bashEnv 注册)都会随 fiber 由注册表释放,且每个所属注册表的包负责该关系的不变式;本包不持有需要审计的可变状态。 |
98
+ | [`tests/web-app.spec.ts`](tests/web-app.spec.ts) | dist 解析、回退席位、提示词段落、就绪宣告 |
95
99
  | [`tests/startup.spec.ts`](tests/startup.spec.ts) | 在真实 Loader 树上的命令行解析 |
96
100
  | [`tests/trusted-hosts.spec.ts`](tests/trusted-hosts.spec.ts) | LAN 信任采样 |
97
101
  | [`tests/browser-open.spec.ts`](tests/browser-open.spec.ts) | 页面可达后的默认浏览器交接 |
98
102
 
99
103
  ### 不变式归属
100
104
 
101
- 不发布不变式伴生入口,因为每项贡献——frontend-static 子插件、提示词段落与 bash 变量注册——都会随 fiber 由 registry 释放,且每个所属 registry 的包负责该关系的不变式。
105
+ 不发布不变式伴生入口,因为每项贡献——frontend-static 子插件、提示词段落与 bash 变量注册——都会随 fiber 由注册表释放,且每个所属注册表的包负责该关系的不变式。
102
106
 
103
107
  </details>
104
108
 
@@ -109,7 +113,7 @@ URL 行与浏览器交接都是就绪信号:监督方一观察到该行就发
109
113
 
110
114
  当你想深入了解共享核心、浏览器重载流水线或已构建的前端时,阅读以下页面。
111
115
 
112
- - [组合包包映射](../README.zh.md)——基于同一核心构建的表层。
116
+ - [组合包索引](../README.zh.md)——基于同一核心构建的表层。
113
117
  - [dsh-base](../base/README.zh.md)——GUI 运行其上的共享核心。
114
118
  - [dsh-client-hmr](../../client/hmr/README.zh.md)——开发期间客户端插件变更如何重载。
115
119
  - [frontend-static](../../host/frontend-static/README.zh.md)——已构建的前端如何被服务。
package/cordis.patch.yml CHANGED
@@ -47,9 +47,6 @@
47
47
  - id: subagent-model-selection-settings
48
48
  name: '@deepseek-ai/dsh-tool-subagent/model-selection-settings'
49
49
 
50
- - id: code-runtime
51
- name: '@deepseek-ai/dsh-code-runtime-worker-thread'
52
-
53
50
  - id: message-feedback
54
51
  name: '@deepseek-ai/dsh-message-feedback'
55
52
  config:
@@ -107,6 +104,8 @@
107
104
 
108
105
  # Workspace file service: bounded read, directory listing, and the
109
106
  # agent-write change feed inside the session workspace root.
107
+ - id: terminal-controller
108
+ name: '@deepseek-ai/dsh-api-terminal-controller'
110
109
  - id: workspace-files
111
110
  name: '@deepseek-ai/dsh-api-workspace-files'
112
111
 
@@ -146,8 +145,9 @@
146
145
  # assembly fact of dsh-web-app, never user config), mounts the
147
146
  # frontend-static fallback owner, registers the web-surface prompt
148
147
  # section and the bash runtime variable, prints the URL line, and opens the
149
- # canonical local URL after the full tree settles. The webStartup provider
150
- # supplies invocation-only values; after the server binds, this row samples
148
+ # canonical local URL after the full Loader tree settles and the required-
149
+ # entry audit passes. The
150
+ # webStartup provider supplies invocation-only values; after the server binds, this row samples
151
151
  # LAN trust once and provides `webRuntime`. A complete agent-preset persona
152
152
  # suppresses the prompt section for that agent while retaining the host-owned
153
153
  # shell variable.
@@ -225,11 +225,20 @@
225
225
  name: '@deepseek-ai/dsh-client-ui-sidebar-right'
226
226
 
227
227
 
228
+ - id: office-to-pdf
229
+ name: '@deepseek-ai/dsh-office-to-pdf'
230
+
228
231
  # The right Sidebar's document tab: bounded file reads with selectable
229
- # Markdown, code, HTML, PDF, and plain-text renderers.
232
+ # Markdown, code, HTML, PDF, Office, and plain-text renderers.
230
233
  - id: ui-sidebar-documentpreview
231
234
  name: '@deepseek-ai/dsh-client-ui-sidebar-documentpreview'
232
235
 
236
+ # Sandboxed HTTP(S) Browser tabs, including loopback targets.
237
+ - id: ui-sidebar-browser
238
+ name: '@deepseek-ai/dsh-client-ui-sidebar-browser'
239
+
240
+ - id: ui-sidebar-terminal
241
+ name: '@deepseek-ai/dsh-client-ui-sidebar-terminal'
233
242
  # The right Sidebar's workspace file tree tab type.
234
243
  - id: ui-sidebar-files
235
244
  name: '@deepseek-ai/dsh-client-ui-sidebar-files'
@@ -243,9 +252,20 @@
243
252
  - id: ui-settings-models
244
253
  name: '@deepseek-ai/dsh-client-ui-settings-models'
245
254
 
255
+ # Plugin management: the sidebar Plugins page installs, enables, disables,
256
+ # and removes the profile's bundles through the `pluginManager` Remote.
257
+ # Without a profile-backed Host it reports itself unavailable.
258
+ - id: ui-plugin-manager
259
+ name: '@deepseek-ai/dsh-client-ui-plugin-manager'
260
+
261
+ # Read-only Plugin list tab in the Settings Plugins section; the built-in
262
+ # bundles the sidebar page leaves out are inspected here.
246
263
  - id: ui-settings-plugin-inventory
247
264
  name: '@deepseek-ai/dsh-client-ui-settings-plugin-inventory'
248
265
 
266
+ - id: ui-settings-unarchive-sessions
267
+ name: '@deepseek-ai/dsh-client-ui-settings-unarchive-sessions'
268
+
249
269
  - id: ui-conversation
250
270
  name: '@deepseek-ai/dsh-client-ui-conversation'
251
271
 
@@ -269,20 +289,26 @@
269
289
  - id: ui-cordis
270
290
  name: '@deepseek-ai/dsh-client-ui-cordis'
271
291
 
272
- # Durable workflow lifecycle as an independent Chat node after the
273
- # existing generic workflow tool row.
274
- - id: ui-workflow-run
275
- name: '@deepseek-ai/dsh-client-ui-workflow-run'
276
-
277
- # Turn tail: the produced-files row under each closing assistant message.
278
- # Remove this entry to turn the surface off; the tail hole renders empty.
292
+ # Turn tail: the changed-files card and delivery cards under each closing
293
+ # assistant message. Remove this entry to turn the surface off; the tail
294
+ # hole renders empty.
279
295
  - id: ui-deliverables
280
296
  name: '@deepseek-ai/dsh-client-ui-deliverables'
281
297
 
298
+ # Records each top-level turn's changed files from git working-tree
299
+ # snapshots; the changed-files card above renders its events.
300
+ - id: workspace-changes
301
+ name: '@deepseek-ai/dsh-workspace-changes'
302
+
282
303
 
283
304
  - id: ui-workspace
284
305
  name: '@deepseek-ai/dsh-client-ui-workspace'
285
306
 
307
+ # Durable workflow lifecycle as an independent Chat node after the
308
+ # existing generic workflow tool row.
309
+ - id: ui-workflow-run
310
+ name: '@deepseek-ai/dsh-client-ui-workflow-run'
311
+
286
312
  # Input triggers: the '/' | '@' pipeline (ui-input-trigger), the command surface over
287
313
  # it (ui-commands), and the reference sources (ui-skill / ui-reference).
288
314
  - id: ui-input-trigger
@@ -365,6 +391,9 @@
365
391
  # exists, so there is no agent to key by. Behind a preset realm those variables
366
392
  # would never reach the model's shell at all.
367
393
 
394
+ - id: tool-plugin-manager
395
+ disabled: true
396
+
368
397
  - id: tool-bash
369
398
  disabled: true
370
399
 
@@ -452,12 +481,15 @@
452
481
  - id: tool-subagent-fork
453
482
  disabled: true
454
483
 
455
- - id: workflow-worker-thread
484
+ - id: workflow-ptc
456
485
  disabled: true
457
486
 
458
487
  - id: tool-workflow
459
488
  disabled: true
460
489
 
490
+ # `base` ships this row disabled; the preset-plane gate reads declared row ids
491
+ # without regard to `disabled`, so this row must stay to keep `tool-ralph` off
492
+ # the host plane and out of collision with every preset's row.
461
493
  - id: tool-ralph
462
494
  disabled: true
463
495
 
package/lib/index.js CHANGED
@@ -4,7 +4,7 @@ import { dirname, join } from "node:path";
4
4
  import { networkInterfaces } from "node:os";
5
5
  import { fileURLToPath } from "node:url";
6
6
  import z from "@deepseek-ai/schemastery";
7
- import { addHarnessSourceSection } from "@deepseek-ai/dsh-app-boot";
7
+ import { addHarnessSourceSection, auditStartupEntries } from "@deepseek-ai/dsh-app-boot";
8
8
  import * as FrontendStatic from "@deepseek-ai/dsh-host-frontend-static";
9
9
  import { launchEnvironmentOf, launchedThroughSsh } from "@deepseek-ai/dsh-launch-environment";
10
10
  import { scrubbedParentEnv } from "@deepseek-ai/dsh-subprocess";
@@ -211,9 +211,10 @@ function apply(ctx, config) {
211
211
  };
212
212
  const settled = connectionCtx.get("loader")?.await();
213
213
  if (settled === void 0) announceReady();
214
- else settled.then(() => {
214
+ else settled.then(async () => {
215
+ await auditStartupEntries(connectionCtx.root, "dsh web", () => {});
215
216
  if (connectionCtx.get("webServer") !== void 0 && connectionCtx.get("connection") !== void 0) announceReady();
216
- }, () => {});
217
+ }).catch(() => {});
217
218
  });
218
219
  }
219
220
  //#endregion
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@deepseek-ai/dsh-web-app",
3
3
  "description": "The dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, web-surface prompt, bash runtime variables, URL line)",
4
- "version": "0.1.5-rc.2",
4
+ "version": "0.1.6-alpha.2",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -41,95 +41,109 @@
41
41
  "dependencies": {
42
42
  "commander": "^15.0.0",
43
43
  "open": "^11.0.0",
44
- "@deepseek-ai/dsh-agent-presets": "^0.1.5-rc.2",
45
- "@deepseek-ai/dsh-api-remotes": "^0.1.5-rc.2",
46
- "@deepseek-ai/dsh-api-session-controller": "^0.1.5-rc.2",
47
- "@deepseek-ai/dsh-api-settings-controller": "^0.1.5-rc.2",
48
- "@deepseek-ai/dsh-api-workspace-controller": "^0.1.5-rc.2",
49
- "@deepseek-ai/dsh-api-workspace-files": "^0.1.5-rc.2",
50
- "@deepseek-ai/dsh-app-boot": "^0.1.5-rc.2",
51
- "@deepseek-ai/dsh-client-file-upload": "^0.1.5-rc.2",
52
- "@deepseek-ai/dsh-client-hmr": "^0.1.5-rc.2",
53
- "@deepseek-ai/dsh-client-locale": "^0.1.5-rc.2",
54
- "@deepseek-ai/dsh-client-resources": "^0.1.5-rc.2",
55
- "@deepseek-ai/dsh-client-ui-agent-preset": "^0.1.5-rc.2",
56
- "@deepseek-ai/dsh-client-modules": "^0.1.5-rc.2",
57
- "@deepseek-ai/dsh-client-ui-approval": "^0.1.5-rc.2",
58
- "@deepseek-ai/dsh-client-ui-attachment": "^0.1.5-rc.2",
59
- "@deepseek-ai/dsh-client-ui-brand-official": "^0.1.5-rc.2",
60
- "@deepseek-ai/dsh-client-ui-chat": "^0.1.5-rc.2",
61
- "@deepseek-ai/dsh-client-ui-conversation": "^0.1.5-rc.2",
62
- "@deepseek-ai/dsh-client-ui-cordis": "^0.1.5-rc.2",
63
- "@deepseek-ai/dsh-client-ui-deliverables": "^0.1.5-rc.2",
64
- "@deepseek-ai/dsh-client-ui-commands": "^0.1.5-rc.2",
65
- "@deepseek-ai/dsh-client-ui-directory-picker-browse": "^0.1.5-rc.2",
66
- "@deepseek-ai/dsh-client-ui-directory-picker-native": "^0.1.5-rc.2",
67
- "@deepseek-ai/dsh-client-ui-goal": "^0.1.5-rc.2",
68
- "@deepseek-ai/dsh-client-ui-jobs": "^0.1.5-rc.2",
69
- "@deepseek-ai/dsh-client-ui-layout": "^0.1.5-rc.2",
70
- "@deepseek-ai/dsh-client-ui-message-feedback": "^0.1.5-rc.2",
71
- "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.5-rc.2",
72
- "@deepseek-ai/dsh-client-ui-open-in-app": "^0.1.5-rc.2",
73
- "@deepseek-ai/dsh-client-ui-permission-presets": "^0.1.5-rc.2",
74
- "@deepseek-ai/dsh-client-ui-plan": "^0.1.5-rc.2",
75
- "@deepseek-ai/dsh-client-ui-reference": "^0.1.5-rc.2",
76
- "@deepseek-ai/dsh-client-ui-renderer": "^0.1.5-rc.2",
77
- "@deepseek-ai/dsh-client-ui-schedule": "^0.1.5-rc.2",
78
- "@deepseek-ai/dsh-client-ui-session": "^0.1.5-rc.2",
79
- "@deepseek-ai/dsh-client-ui-settings": "^0.1.5-rc.2",
80
- "@deepseek-ai/dsh-client-ui-settings-general": "^0.1.5-rc.2",
81
- "@deepseek-ai/dsh-client-ui-settings-models": "^0.1.5-rc.2",
82
- "@deepseek-ai/dsh-client-ui-settings-plugin-inventory": "^0.1.5-rc.2",
83
- "@deepseek-ai/dsh-client-ui-settings-plugins": "^0.1.5-rc.2",
84
- "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.5-rc.2",
85
- "@deepseek-ai/dsh-client-connection": "^0.1.5-rc.2",
86
- "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "^0.1.5-rc.2",
87
- "@deepseek-ai/dsh-client-ui-sidebar-right": "^0.1.5-rc.2",
88
- "@deepseek-ai/dsh-client-ui-skill": "^0.1.5-rc.2",
89
- "@deepseek-ai/dsh-client-ui-subagent": "^0.1.5-rc.2",
90
- "@deepseek-ai/dsh-client-ui-sidebar-files": "^0.1.5-rc.2",
91
- "@deepseek-ai/dsh-client-ui-theme": "^0.1.5-rc.2",
92
- "@deepseek-ai/dsh-client-ui-tool": "^0.1.5-rc.2",
93
- "@deepseek-ai/dsh-client-ui-model-selection": "^0.1.5-rc.2",
94
- "@deepseek-ai/dsh-client-ui-trajectory": "^0.1.5-rc.2",
95
- "@deepseek-ai/dsh-client-ui-user-questions": "^0.1.5-rc.2",
96
- "@deepseek-ai/dsh-client-ui-workflow-run": "^0.1.5-rc.2",
97
- "@deepseek-ai/dsh-client-ui-workspace": "^0.1.5-rc.2",
98
- "@deepseek-ai/dsh-cmdline": "^0.1.5-rc.2",
99
- "@deepseek-ai/dsh-code-runtime-worker-thread": "^0.1.5-rc.2",
100
- "@deepseek-ai/dsh-cordis-client-runner": "^0.1.5-rc.2",
101
- "@deepseek-ai/dsh-file-reference": "^0.1.5-rc.2",
102
- "@deepseek-ai/dsh-file-reference-local": "^0.1.5-rc.2",
103
- "@deepseek-ai/dsh-cordis-host-runner": "^0.1.5-rc.2",
104
- "@deepseek-ai/dsh-host-directory-picker-auto": "^0.1.5-rc.2",
105
- "@deepseek-ai/dsh-host-directory-picker-browse": "^0.1.5-rc.2",
106
- "@deepseek-ai/dsh-host-directory-picker-native": "^0.1.5-rc.2",
107
- "@deepseek-ai/dsh-host-plugin-inventory": "^0.1.5-rc.2",
108
- "@deepseek-ai/dsh-host-webserver": "^0.1.5-rc.2",
109
- "@deepseek-ai/dsh-launch-environment": "^0.1.5-rc.2",
110
- "@deepseek-ai/dsh-host-frontend-static": "^0.1.5-rc.2",
111
- "@deepseek-ai/dsh-message-feedback": "^0.1.5-rc.2",
112
- "@deepseek-ai/dsh-session-log-export": "^0.1.5-rc.2",
113
- "@deepseek-ai/dsh-session-reference": "^0.1.5-rc.2",
114
- "@deepseek-ai/dsh-session-stats": "^0.1.5-rc.2",
115
- "@deepseek-ai/dsh-session-turn-outline": "^0.1.5-rc.2",
116
- "@deepseek-ai/dsh-subprocess": "^0.1.5-rc.2",
117
- "@deepseek-ai/dsh-web-frontend": "^0.1.5-rc.2",
118
- "@deepseek-ai/dsh-workspace": "^0.1.5-rc.2",
44
+ "@deepseek-ai/dsh-api-remotes": "^0.1.6-alpha.2",
45
+ "@deepseek-ai/dsh-api-session-controller": "^0.1.6-alpha.2",
46
+ "@deepseek-ai/dsh-agent-presets": "^0.1.6-alpha.2",
47
+ "@deepseek-ai/dsh-api-settings-controller": "^0.1.6-alpha.2",
48
+ "@deepseek-ai/dsh-api-workspace-controller": "^0.1.6-alpha.2",
49
+ "@deepseek-ai/dsh-client-connection": "^0.1.6-alpha.2",
50
+ "@deepseek-ai/dsh-client-file-upload": "^0.1.6-alpha.2",
51
+ "@deepseek-ai/dsh-client-hmr": "^0.1.6-alpha.2",
52
+ "@deepseek-ai/dsh-client-locale": "^0.1.6-alpha.2",
53
+ "@deepseek-ai/dsh-client-modules": "^0.1.6-alpha.2",
54
+ "@deepseek-ai/dsh-client-resources": "^0.1.6-alpha.2",
55
+ "@deepseek-ai/dsh-client-ui-agent-preset": "^0.1.6-alpha.2",
56
+ "@deepseek-ai/dsh-client-ui-approval": "^0.1.6-alpha.2",
57
+ "@deepseek-ai/dsh-client-ui-attachment": "^0.1.6-alpha.2",
58
+ "@deepseek-ai/dsh-client-ui-brand-official": "^0.1.6-alpha.2",
59
+ "@deepseek-ai/dsh-client-ui-commands": "^0.1.6-alpha.2",
60
+ "@deepseek-ai/dsh-client-ui-conversation": "^0.1.6-alpha.2",
61
+ "@deepseek-ai/dsh-client-ui-cordis": "^0.1.6-alpha.2",
62
+ "@deepseek-ai/dsh-app-boot": "^0.1.6-alpha.2",
63
+ "@deepseek-ai/dsh-client-ui-deliverables": "^0.1.6-alpha.2",
64
+ "@deepseek-ai/dsh-client-ui-directory-picker-browse": "^0.1.6-alpha.2",
65
+ "@deepseek-ai/dsh-client-ui-directory-picker-native": "^0.1.6-alpha.2",
66
+ "@deepseek-ai/dsh-client-ui-goal": "^0.1.6-alpha.2",
67
+ "@deepseek-ai/dsh-client-ui-chat": "^0.1.6-alpha.2",
68
+ "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.6-alpha.2",
69
+ "@deepseek-ai/dsh-client-ui-jobs": "^0.1.6-alpha.2",
70
+ "@deepseek-ai/dsh-client-ui-layout": "^0.1.6-alpha.2",
71
+ "@deepseek-ai/dsh-client-ui-message-feedback": "^0.1.6-alpha.2",
72
+ "@deepseek-ai/dsh-client-ui-model-selection": "^0.1.6-alpha.2",
73
+ "@deepseek-ai/dsh-client-ui-open-in-app": "^0.1.6-alpha.2",
74
+ "@deepseek-ai/dsh-client-ui-reference": "^0.1.6-alpha.2",
75
+ "@deepseek-ai/dsh-client-ui-plan": "^0.1.6-alpha.2",
76
+ "@deepseek-ai/dsh-client-ui-renderer": "^0.1.6-alpha.2",
77
+ "@deepseek-ai/dsh-client-ui-schedule": "^0.1.6-alpha.2",
78
+ "@deepseek-ai/dsh-client-ui-permission-presets": "^0.1.6-alpha.2",
79
+ "@deepseek-ai/dsh-workspace-changes": "^0.1.6-alpha.2",
80
+ "@deepseek-ai/dsh-client-ui-settings-general": "^0.1.6-alpha.2",
81
+ "@deepseek-ai/dsh-client-ui-settings": "^0.1.6-alpha.2",
82
+ "@deepseek-ai/dsh-client-ui-session": "^0.1.6-alpha.2",
83
+ "@deepseek-ai/dsh-client-ui-plugin-manager": "^0.1.6-alpha.2",
84
+ "@deepseek-ai/dsh-client-ui-settings-models": "^0.1.6-alpha.2",
85
+ "@deepseek-ai/dsh-client-ui-settings-plugin-inventory": "^0.1.6-alpha.2",
86
+ "@deepseek-ai/dsh-client-ui-settings-plugins": "^0.1.6-alpha.2",
87
+ "@deepseek-ai/dsh-client-ui-settings-unarchive-sessions": "^0.1.6-alpha.2",
88
+ "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.6-alpha.2",
89
+ "@deepseek-ai/dsh-client-ui-sidebar-browser": "^0.1.6-alpha.2",
90
+ "@deepseek-ai/dsh-client-ui-sidebar-files": "^0.1.6-alpha.2",
91
+ "@deepseek-ai/dsh-client-ui-sidebar-right": "^0.1.6-alpha.2",
92
+ "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "^0.1.6-alpha.2",
93
+ "@deepseek-ai/dsh-client-ui-theme": "^0.1.6-alpha.2",
94
+ "@deepseek-ai/dsh-client-ui-tool": "^0.1.6-alpha.2",
95
+ "@deepseek-ai/dsh-client-ui-user-questions": "^0.1.6-alpha.2",
96
+ "@deepseek-ai/dsh-client-ui-trajectory": "^0.1.6-alpha.2",
97
+ "@deepseek-ai/dsh-client-ui-workflow-run": "^0.1.6-alpha.2",
98
+ "@deepseek-ai/dsh-cmdline": "^0.1.6-alpha.2",
99
+ "@deepseek-ai/dsh-api-workspace-files": "^0.1.6-alpha.2",
100
+ "@deepseek-ai/dsh-client-ui-workspace": "^0.1.6-alpha.2",
101
+ "@deepseek-ai/dsh-client-ui-subagent": "^0.1.6-alpha.2",
102
+ "@deepseek-ai/dsh-client-ui-skill": "^0.1.6-alpha.2",
103
+ "@deepseek-ai/dsh-cordis-client-runner": "^0.1.6-alpha.2",
104
+ "@deepseek-ai/dsh-cordis-host-runner": "^0.1.6-alpha.2",
105
+ "@deepseek-ai/dsh-file-reference": "^0.1.6-alpha.2",
106
+ "@deepseek-ai/dsh-host-directory-picker-auto": "^0.1.6-alpha.2",
107
+ "@deepseek-ai/dsh-host-directory-picker-browse": "^0.1.6-alpha.2",
108
+ "@deepseek-ai/dsh-host-directory-picker-native": "^0.1.6-alpha.2",
109
+ "@deepseek-ai/dsh-host-frontend-static": "^0.1.6-alpha.2",
110
+ "@deepseek-ai/dsh-host-open-in-app": "^0.1.6-alpha.2",
111
+ "@deepseek-ai/dsh-host-webserver": "^0.1.6-alpha.2",
112
+ "@deepseek-ai/dsh-message-feedback": "^0.1.6-alpha.2",
113
+ "@deepseek-ai/dsh-host-plugin-inventory": "^0.1.6-alpha.2",
114
+ "@deepseek-ai/dsh-file-reference-local": "^0.1.6-alpha.2",
115
+ "@deepseek-ai/dsh-launch-environment": "^0.1.6-alpha.2",
116
+ "@deepseek-ai/dsh-session-log-export": "^0.1.6-alpha.2",
117
+ "@deepseek-ai/dsh-session-reference": "^0.1.6-alpha.2",
118
+ "@deepseek-ai/dsh-session-stats": "^0.1.6-alpha.2",
119
+ "@deepseek-ai/dsh-session-turn-outline": "^0.1.6-alpha.2",
120
+ "@deepseek-ai/dsh-subprocess": "^0.1.6-alpha.2",
121
+ "@deepseek-ai/dsh-tool-subagent": "^0.1.6-alpha.2",
122
+ "@deepseek-ai/dsh-workspace": "^0.1.6-alpha.2",
119
123
  "@deepseek-ai/schemastery": "^3.18.2",
120
- "@deepseek-ai/dsh-tool-subagent": "^0.1.5-rc.2",
121
- "@deepseek-ai/dsh-host-open-in-app": "^0.1.5-rc.2"
124
+ "@deepseek-ai/dsh-api-terminal-controller": "^0.1.6-alpha.2",
125
+ "@deepseek-ai/dsh-client-ui-sidebar-terminal": "^0.1.6-alpha.2",
126
+ "@deepseek-ai/dsh-web-frontend": "^0.1.6-alpha.2",
127
+ "@deepseek-ai/dsh-office-to-pdf": "^0.1.6-alpha.2"
122
128
  },
123
129
  "peerDependencies": {
124
- "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
125
130
  "@deepseek-ai/cordis": "^4.0.2",
126
- "@deepseek-ai/dsh-shell-env": "^0.1.5-rc.2",
127
- "@deepseek-ai/dsh-system-prompt": "^0.1.5-rc.2"
131
+ "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
132
+ "@deepseek-ai/dsh-shell-env": "^0.1.6-alpha.2",
133
+ "@deepseek-ai/dsh-system-prompt": "^0.1.6-alpha.2"
128
134
  },
129
135
  "devDependencies": {
136
+ "@deepseek-ai/libreoffice-kit": "0.0.1",
130
137
  "@deepseek-ai/cordis": "^4.0.2",
138
+ "@deepseek-ai/cordis-plugin-include": "^1.0.7",
131
139
  "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
132
- "@deepseek-ai/dsh-shell-env": "^0.1.5-rc.2",
133
- "@deepseek-ai/dsh-system-prompt": "^0.1.5-rc.2"
140
+ "@deepseek-ai/dsh-fs": "^0.1.6-alpha.2",
141
+ "@deepseek-ai/dsh-fs-local": "^0.1.6-alpha.2",
142
+ "@deepseek-ai/dsh-sandbox-policy": "^0.1.6-alpha.2",
143
+ "@deepseek-ai/dsh-session-projection": "^0.1.6-alpha.2",
144
+ "@deepseek-ai/dsh-shell-env": "^0.1.6-alpha.2",
145
+ "@deepseek-ai/dsh-typert-registry": "^0.1.6-alpha.2",
146
+ "@deepseek-ai/dsh-system-prompt": "^0.1.6-alpha.2",
147
+ "@deepseek-ai/dsh-session": "^0.1.6-alpha.2"
134
148
  }
135
149
  }