@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 +2 -2
- package/README.md +6 -2
- package/README.zh.md +17 -13
- package/cordis.patch.yml +46 -14
- package/lib/index.js +4 -3
- package/package.json +97 -83
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:
|
|
6
|
-
README.zh.md:
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
93
|
-
| — |
|
|
94
|
-
| [`tests/web-app.spec.ts`](tests/web-app.spec.ts) | dist
|
|
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
|
|
105
|
+
不发布不变式伴生入口,因为每项贡献——frontend-static 子插件、提示词段落与 bash 变量注册——都会随 fiber 由注册表释放,且每个所属注册表的包负责该关系的不变式。
|
|
102
106
|
|
|
103
107
|
</details>
|
|
104
108
|
|
|
@@ -109,7 +113,7 @@ URL 行与浏览器交接都是就绪信号:监督方一观察到该行就发
|
|
|
109
113
|
|
|
110
114
|
当你想深入了解共享核心、浏览器重载流水线或已构建的前端时,阅读以下页面。
|
|
111
115
|
|
|
112
|
-
- [
|
|
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
|
|
150
|
-
#
|
|
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
|
-
#
|
|
273
|
-
#
|
|
274
|
-
|
|
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-
|
|
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.
|
|
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-
|
|
45
|
-
"@deepseek-ai/dsh-api-
|
|
46
|
-
"@deepseek-ai/dsh-
|
|
47
|
-
"@deepseek-ai/dsh-api-settings-controller": "^0.1.
|
|
48
|
-
"@deepseek-ai/dsh-api-workspace-controller": "^0.1.
|
|
49
|
-
"@deepseek-ai/dsh-
|
|
50
|
-
"@deepseek-ai/dsh-
|
|
51
|
-
"@deepseek-ai/dsh-client-
|
|
52
|
-
"@deepseek-ai/dsh-client-
|
|
53
|
-
"@deepseek-ai/dsh-client-
|
|
54
|
-
"@deepseek-ai/dsh-client-resources": "^0.1.
|
|
55
|
-
"@deepseek-ai/dsh-client-ui-agent-preset": "^0.1.
|
|
56
|
-
"@deepseek-ai/dsh-client-
|
|
57
|
-
"@deepseek-ai/dsh-client-ui-
|
|
58
|
-
"@deepseek-ai/dsh-client-ui-
|
|
59
|
-
"@deepseek-ai/dsh-client-ui-
|
|
60
|
-
"@deepseek-ai/dsh-client-ui-
|
|
61
|
-
"@deepseek-ai/dsh-client-ui-
|
|
62
|
-
"@deepseek-ai/dsh-
|
|
63
|
-
"@deepseek-ai/dsh-client-ui-deliverables": "^0.1.
|
|
64
|
-
"@deepseek-ai/dsh-client-ui-
|
|
65
|
-
"@deepseek-ai/dsh-client-ui-directory-picker-
|
|
66
|
-
"@deepseek-ai/dsh-client-ui-
|
|
67
|
-
"@deepseek-ai/dsh-client-ui-
|
|
68
|
-
"@deepseek-ai/dsh-client-ui-
|
|
69
|
-
"@deepseek-ai/dsh-client-ui-
|
|
70
|
-
"@deepseek-ai/dsh-client-ui-
|
|
71
|
-
"@deepseek-ai/dsh-client-ui-
|
|
72
|
-
"@deepseek-ai/dsh-client-ui-
|
|
73
|
-
"@deepseek-ai/dsh-client-ui-
|
|
74
|
-
"@deepseek-ai/dsh-client-ui-
|
|
75
|
-
"@deepseek-ai/dsh-client-ui-
|
|
76
|
-
"@deepseek-ai/dsh-client-ui-renderer": "^0.1.
|
|
77
|
-
"@deepseek-ai/dsh-client-ui-schedule": "^0.1.
|
|
78
|
-
"@deepseek-ai/dsh-client-ui-
|
|
79
|
-
"@deepseek-ai/dsh-
|
|
80
|
-
"@deepseek-ai/dsh-client-ui-settings-general": "^0.1.
|
|
81
|
-
"@deepseek-ai/dsh-client-ui-settings
|
|
82
|
-
"@deepseek-ai/dsh-client-ui-
|
|
83
|
-
"@deepseek-ai/dsh-client-ui-
|
|
84
|
-
"@deepseek-ai/dsh-client-ui-
|
|
85
|
-
"@deepseek-ai/dsh-client-
|
|
86
|
-
"@deepseek-ai/dsh-client-ui-
|
|
87
|
-
"@deepseek-ai/dsh-client-ui-
|
|
88
|
-
"@deepseek-ai/dsh-client-ui-
|
|
89
|
-
"@deepseek-ai/dsh-client-ui-
|
|
90
|
-
"@deepseek-ai/dsh-client-ui-sidebar-files": "^0.1.
|
|
91
|
-
"@deepseek-ai/dsh-client-ui-
|
|
92
|
-
"@deepseek-ai/dsh-client-ui-
|
|
93
|
-
"@deepseek-ai/dsh-client-ui-
|
|
94
|
-
"@deepseek-ai/dsh-client-ui-
|
|
95
|
-
"@deepseek-ai/dsh-client-ui-user-questions": "^0.1.
|
|
96
|
-
"@deepseek-ai/dsh-client-ui-
|
|
97
|
-
"@deepseek-ai/dsh-client-ui-
|
|
98
|
-
"@deepseek-ai/dsh-cmdline": "^0.1.
|
|
99
|
-
"@deepseek-ai/dsh-
|
|
100
|
-
"@deepseek-ai/dsh-
|
|
101
|
-
"@deepseek-ai/dsh-
|
|
102
|
-
"@deepseek-ai/dsh-
|
|
103
|
-
"@deepseek-ai/dsh-cordis-
|
|
104
|
-
"@deepseek-ai/dsh-host-
|
|
105
|
-
"@deepseek-ai/dsh-
|
|
106
|
-
"@deepseek-ai/dsh-host-directory-picker-
|
|
107
|
-
"@deepseek-ai/dsh-host-
|
|
108
|
-
"@deepseek-ai/dsh-host-
|
|
109
|
-
"@deepseek-ai/dsh-
|
|
110
|
-
"@deepseek-ai/dsh-host-
|
|
111
|
-
"@deepseek-ai/dsh-
|
|
112
|
-
"@deepseek-ai/dsh-
|
|
113
|
-
"@deepseek-ai/dsh-
|
|
114
|
-
"@deepseek-ai/dsh-
|
|
115
|
-
"@deepseek-ai/dsh-
|
|
116
|
-
"@deepseek-ai/dsh-
|
|
117
|
-
"@deepseek-ai/dsh-
|
|
118
|
-
"@deepseek-ai/dsh-
|
|
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-
|
|
121
|
-
"@deepseek-ai/dsh-
|
|
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/
|
|
127
|
-
"@deepseek-ai/dsh-
|
|
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-
|
|
133
|
-
"@deepseek-ai/dsh-
|
|
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
|
}
|