dsh-edge 0.7.1 → 0.8.0
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 +17 -3
- package/README.zh.md +17 -3
- package/THIRD_PARTY_NOTICES.md +4 -2
- package/dist/index.html +1 -1
- package/dist/plugins/@deepseek-ai/dsh-client-ui-message-feedback/client.js +727 -0
- package/package.json +4 -1
- package/worker/direct/index.js +1156 -1075
- package/worker/isolated/index.js +836 -755
- package/wrangler.jsonc +2 -1
package/README.i18n.yaml
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
# last confirmed-consistent state. Both languages carry equal authority.
|
|
3
3
|
# After editing either side, update both and re-record every pair with:
|
|
4
4
|
# pnpm run doc-pairs -- --write
|
|
5
|
-
README.md:
|
|
6
|
-
README.zh.md:
|
|
5
|
+
README.md: d7f86667222cff9746c871ae1416b183367e5f45
|
|
6
|
+
README.zh.md: b67b127fb62599d1b2b0c5ebf00631bb39c2766c
|
package/README.md
CHANGED
|
@@ -16,6 +16,10 @@ The runtime keeps upstream ownership clear:
|
|
|
16
16
|
- The upstream `dsh-llm-deepseek` cordis plugin is installed directly, auto-registering its settings namespace and configurable provider entry. Edge maps the native DSH `bash` tool onto Cloudflare Computer.
|
|
17
17
|
- Durable Object SQLite implements the upstream persistence backend contract. `PersistenceCoordinator` still owns write-behind, revisions, resume preparation, and crash recovery.
|
|
18
18
|
- Model history is projected from canonical events rather than persisted in a second Edge schema.
|
|
19
|
+
- `GoalService` and `ToolGoal` run as upstream cordis plugins (direct composition). Browser GoalBar mutations route through `TypertGatewayService`.
|
|
20
|
+
- `SessionProjectionCache` persists goal, title, and model state across Durable Object restart via KV cache.
|
|
21
|
+
- `EdgeFileSystem` provides read, write, edit, and read_image tools backed by the Durable Object VFS.
|
|
22
|
+
- Context compaction, token metering, and automatic session titles run as upstream cordis plugins.
|
|
19
23
|
|
|
20
24
|
The browser also remains upstream-owned:
|
|
21
25
|
|
|
@@ -28,6 +32,7 @@ The browser also remains upstream-owned:
|
|
|
28
32
|
|
|
29
33
|
## Find what you need
|
|
30
34
|
|
|
35
|
+
- [Subsystem wiki with architecture and roadmap](https://github.com/pawaca/dsh-edge/wiki)
|
|
31
36
|
- [Install or upgrade on Cloudflare](#install-on-cloudflare)
|
|
32
37
|
- [Compare native, adapted, and unavailable capabilities](#cloudflare-compatibility-matrix)
|
|
33
38
|
- [Configure DeepSeek credentials, models, timeouts, and owner authentication](#api-key-boundary)
|
|
@@ -122,8 +127,12 @@ This reference separates code that runs natively in Workers, code adapted at an
|
|
|
122
127
|
| DSH transport | Typed HTTP RPC plus mux and host WebSocket downlinks | Reused with an Edge server implementation | Use the upstream fetch carrier for unary methods and preserve its envelopes, schemas, projections, lazy blank-session behavior, bounded content search, prompt and queue mutations, workspace mutations, queue snapshots, and event frames. Durable Object WebSocket hibernation owns both downlinks; mux reconnects replay pending live inbox state, while REST/SSE routes remain a diagnostic compatibility path. |
|
|
123
128
|
| Workspace registry | Storage-domain global state plus `WorkspaceRecord` rows | Native backend adaptation | Keep the upstream global and record value shapes, including manual session order and archive membership, but map their physical keys and atomic writes to Durable Object storage. Edge constrains the registry to the one native `/workspace` VFS; rename, delete, recreation, and session reordering retain the upstream RPC and Host-frame semantics. |
|
|
124
129
|
| Existing Web UI | Runtime-loaded shell and `dsh.client` plugin graph | Reused with generic composition fallbacks | Assemble the upstream shell and supported upstream client bundles as Worker assets. Shared slot-occupancy rules hide actions whose provider is absent; Cloudflare serves ordinary assets directly, while `/`, `/login`, and `/api/*` enter the Worker for owner access control. The assembled asset policy prevents every direct or SPA-fallback shell alias from being framed. |
|
|
125
|
-
| Other tools | Web Search, filesystem editor tools, MCP, skills, workflows, jobs, and subagents | Search
|
|
130
|
+
| Other tools | Web Search, filesystem editor tools, MCP, skills, workflows, jobs, and subagents | Search, file, and goal tools ported; MCP, skills, workflows, and subagents not yet ported | Reuse upstream DeepSeek Web Search with its 30-second tool-call timeout. File tools (read/write/edit/read_image) adapted via `EdgeFileSystem` backed by Computer VFS. Goal tools (`ToolGoal`) composed directly with `GoalService` as upstream cordis plugins. MCP client (`dsh-mcp-client`) not yet installed; Streamable HTTP transport is feasible on the free plan. Add the remaining tools individually against Worker-compatible capabilities; do not advertise unavailable host behavior. |
|
|
126
131
|
| Attachments | Local attachment storage, upstream image references, composer, gallery, lightbox, and provider conversion | Adapted at the native storage seam | Reuse upstream `AttachmentStore`, admission, protocol, authorization, UI, and DeepSeek conversion unchanged. Store immutable PNG/JPEG bytes under their SHA-256 identities in private R2 for new permanent deployments or in a 64 MiB, 512 KiB-chunked DO backend for temporary deployments and owners who select it while upgrading a pre-attachment Worker; session events retain only upstream refs. The first backend is pinned per owner instance so claiming or upgrading cannot strand existing references. |
|
|
132
|
+
| Goal tracking | `GoalService` with create/edit/pause/resume/complete/clear mutations and GoalBar UI | Reused | Install upstream `GoalService` and `ToolGoal` as cordis plugins (direct composition). Browser GoalBar mutations route through `TypertGatewayService` at `/api/goals/<method>`. `SessionProjectionCache` persists goal state across DO restart. |
|
|
133
|
+
| Context compaction | Token metering, automatic compaction, and session title generation | Reused | Install upstream cordis plugins directly. Context compaction, token metering, tool-result pruning, and automatic session title generation run unchanged. |
|
|
134
|
+
| Session projection | Real-time derived state push to connected clients | Reused with Edge bridge | Upstream `onChanged` callback pushes title, model, and goal projection frames to connected WebSocket clients. `SessionProjectionCache` caches projections in DO KV for cold-session recovery. |
|
|
135
|
+
| Queue and steer | Edit, remove, or promote queued messages; steer a running agent | Reused | Queue mutations use the synchronous live-inbox mutation as their acceptance point. Steer mode sends next-step messages to the running `ReactLoopAgent`. |
|
|
127
136
|
| Authentication and tenancy | Local trusted-user boundary | Single-owner adaptation | Require one high-entropy Worker secret, exchange it for a signed 30-day HttpOnly `SameSite=Strict` cookie, and route every accepted request to one fixed owner object. This intentionally provides no registration, user database, roles, or multi-tenant routing. |
|
|
128
137
|
|
|
129
138
|
The browser request path is:
|
|
@@ -140,6 +149,9 @@ Cloudflare static assets -> upstream Web shell + client plugin graph
|
|
|
140
149
|
-> ReactLoopAgent.followup(queue) or ReactLoopAgent.steer(steer)
|
|
141
150
|
-> pre-step admission gate waits for the sessions.flush durability barrier
|
|
142
151
|
-> session/queue snapshots publish live and replay on mux reconnect
|
|
152
|
+
-> TypertGatewayService dispatches goals/edit, goals/clear via Typert RPC
|
|
153
|
+
-> onChanged bridge pushes title/model/goal projection frames
|
|
154
|
+
-> SessionProjectionCache reads/writes KV for cold-session state
|
|
143
155
|
-> upstream dsh-llm-deepseek plugin resolves configuration from settings + launch environment
|
|
144
156
|
-> upstream attachment resolver reads and verifies authorized backend bytes
|
|
145
157
|
-> upstream LlmRuntime + ReactLoopAgent stream/event pipeline
|
|
@@ -162,7 +174,8 @@ The local integration suite uses an SSE stand-in with real Wrangler, Durable Obj
|
|
|
162
174
|
- image admission through the upstream composer, protocol, provider, authorization, fork reuse, and restart persistence;
|
|
163
175
|
- Workspace create/list/rename/delete/reorder/archive, live/reconnect baselines, and Host frames;
|
|
164
176
|
- real browser boot, UI-issued Workspace rename, image turn, content search, branch, archive, and expired-session login recovery;
|
|
165
|
-
- conversation continuity, event replay, two-step bash and Web Search tool exchanges, and Wrangler-restart restoration
|
|
177
|
+
- conversation continuity, event replay, two-step bash and Web Search tool exchanges, and Wrangler-restart restoration;
|
|
178
|
+
- Typert URL routing validation and snapshot-level tool definition verification; goal and file tool end-to-end integration tests are not yet implemented.
|
|
166
179
|
|
|
167
180
|
A focused failure test proves that post-enqueue durability failure blocks model use without reporting the already-woken prompt as rejected. Committed model-visible and ARIA goldens pin tool transcripts and the assembled upstream Web client. A live DeepSeek call requires the developer's key and is intentionally outside the repository test suite.
|
|
168
181
|
|
|
@@ -181,7 +194,7 @@ A focused failure test proves that post-enqueue durability failure blocks model
|
|
|
181
194
|
| `DSH_EDGE_DEFAULT_COMMAND_TIMEOUT_MS` | Default Computer command timeout; defaults to 120,000 ms. |
|
|
182
195
|
| `DSH_EDGE_MAX_COMMAND_TIMEOUT_MS` | Caller-selectable timeout ceiling; defaults to 120,000 ms and cannot be lower than the default. |
|
|
183
196
|
|
|
184
|
-
Invalid deployment configuration fails before session lookup or SSE response creation. Edge mounts upstream `web_search` with
|
|
197
|
+
Invalid deployment configuration fails before session lookup or SSE response creation. Edge mounts upstream `web_search` and `web_fetch` with 30-second tool-call timeouts and structured results. `web_fetch` uses the upstream anonymous HTTP(S) provider and converts HTML to Markdown in the Worker. It accepts only HTTP(S) URLs without embedded credentials, rejects IP literals and local naming scopes before every request and same-origin redirect hop, and bounds URL length, response bytes, decoded characters, redirect count, and elapsed time. The Worker enables Cloudflare's strictly-public global fetch path so DNS changes cannot route a model-selected URL to a same-zone origin or private binding; JavaScript-rendered pages remain outside this basic HTTP fetch path.
|
|
185
198
|
|
|
186
199
|
### Owner authentication
|
|
187
200
|
|
|
@@ -275,6 +288,7 @@ pnpm --filter dsh-edge example:install
|
|
|
275
288
|
- Fork copies a completed-turn prefix through the canonical session seed format and retains parent lineage. Edge refuses seeds above 8,192 events or 8 MiB instead of materializing unbounded history.
|
|
276
289
|
- Queue mutations edit, remove, or promote an item through the live upstream Agent inbox. The synchronous mutation is the acceptance point; the persistence coordinator owns later write-behind and retirement retry.
|
|
277
290
|
- Workspace mutations persist upstream workspace-domain global and record shapes through the Durable Object backend. Archive preserves the session log and Workspace slot; unary responses and Host frames carry the same full snapshots as upstream.
|
|
291
|
+
- Goal mutations (create, edit, pause, resume, complete, clear) route through `TypertGatewayService` at `/api/goals/<method>`. Each `@Remote` service requires its Typert descriptor to be registered via `ctx.typert.register()`; no per-method HTTP handler is needed.
|
|
278
292
|
|
|
279
293
|
### Authentication and downlinks
|
|
280
294
|
|
package/README.zh.md
CHANGED
|
@@ -16,6 +16,10 @@
|
|
|
16
16
|
- 上游 `dsh-llm-deepseek` cordis 插件直接安装,自动注册 Settings 命名空间和可配置 Provider 条目。Edge 把原生 DSH `bash` 工具映射到 Cloudflare Computer。
|
|
17
17
|
- Durable Object SQLite 实现上游持久化后端约定;write-behind、revision、恢复准备与崩溃恢复仍由 `PersistenceCoordinator` 负责。
|
|
18
18
|
- 模型历史从 canonical 事件投影,不在 Edge 中建立第二套 schema。
|
|
19
|
+
- `GoalService` 和 `ToolGoal` 作为上游 cordis 插件直接组合。浏览器 GoalBar mutation 经由 `TypertGatewayService` 路由。
|
|
20
|
+
- `SessionProjectionCache` 通过 KV 缓存在 Durable Object 重启后持久化 goal、title 和 model 状态。
|
|
21
|
+
- `EdgeFileSystem` 提供 read、write、edit 和 read_image 工具,底层使用 Durable Object VFS。
|
|
22
|
+
- 上下文压缩、token 计量和自动 session 标题作为上游 cordis 插件运行。
|
|
19
23
|
|
|
20
24
|
浏览器也保持上游所有权:
|
|
21
25
|
|
|
@@ -28,6 +32,7 @@
|
|
|
28
32
|
|
|
29
33
|
## 快速导航
|
|
30
34
|
|
|
35
|
+
- [子系统 wiki:架构与路线图](https://github.com/pawaca/dsh-edge/wiki)
|
|
31
36
|
- [在 Cloudflare 上安装或升级](#安装到-cloudflare)
|
|
32
37
|
- [对比原生复用、已适配与未支持能力](#cloudflare-兼容矩阵)
|
|
33
38
|
- [配置 DeepSeek 凭据、模型、超时与 owner 认证](#api-key-边界)
|
|
@@ -122,8 +127,12 @@ curl -b /tmp/dsh-edge-cookie -N -X POST -H 'content-type: application/json' \
|
|
|
122
127
|
| DSH transport | Typed HTTP RPC 加 mux/host WebSocket downlink | 复用并提供 Edge 服务端实现 | 对 unary method 使用上游 fetch carrier,并保留其 envelope、schema、projection、lazy blank-session 行为、有界内容搜索、prompt 与 queue mutation、workspace mutation、queue snapshot 和 event frame。两条 downlink 都由 Durable Object WebSocket 休眠机制持有;mux 重连会重放 live inbox 的待处理状态,REST/SSE 路由则保留为诊断兼容路径。 |
|
|
123
128
|
| Workspace registry | Storage-domain global state 加 `WorkspaceRecord` rows | 原生 backend 适配 | 保持上游 global 和 record value shape,包括手动 session 顺序与 archive membership;仅把物理 key 和原子写入映射到 Durable Object storage。Edge 把 registry 限制为一个原生 `/workspace` VFS;rename、delete、recreate 与 session reorder 保持上游 RPC 和 Host-frame 语义。 |
|
|
124
129
|
| Existing Web UI | 运行时加载的 shell 和 `dsh.client` 插件 graph | 复用并采用通用 composition fallback | 把上游 shell 和受支持的上游客户端包组装成 Worker 静态资源;共享的 slot occupancy 规则会隐藏缺少 provider 的 action。Cloudflare 直接提供普通资源,`/`、`/login` 与 `/api/*` 则进入 Worker 执行 owner access control。组装后的 asset policy 会阻止所有直接或 SPA-fallback shell alias 被嵌入 frame。 |
|
|
125
|
-
| Other tools | Web Search、filesystem editor tools、MCP、skills、workflows、jobs 和 subagents | Search
|
|
130
|
+
| Other tools | Web Search、filesystem editor tools、MCP、skills、workflows、jobs 和 subagents | Search、文件和 goal 工具已移植;MCP、skills、workflows 和 subagents 尚未移植 | 复用上游 DeepSeek Web Search 及其 30 秒 tool-call timeout。文件工具(read/write/edit/read_image)通过 `EdgeFileSystem` 适配 Computer VFS。Goal 工具(`ToolGoal`)作为上游 cordis 插件直接与 `GoalService` 组合。MCP client(`dsh-mcp-client`)尚未安装;Streamable HTTP transport 在免费 plan 上可行。逐个针对 Worker-compatible capabilities 增加其余工具,不宣称不可用的 host 行为。 |
|
|
126
131
|
| Attachments | 本地 attachment storage、上游 image reference、composer、gallery、lightbox 与 provider conversion | 在原生 storage seam 上适配 | 原样复用上游 `AttachmentStore`、admission、协议、授权、UI 与 DeepSeek conversion。PNG/JPEG 不可变字节按 SHA-256 identity 存入新永久部署的私有 R2,或存入临时部署以及升级旧版 Worker 时由 owner 选择的 64 MiB、按 512 KiB 分块的 DO backend;session event 只保留上游 ref。每个 owner instance 首次选择的 backend 会被固定,认领或升级不会让既有引用失联。 |
|
|
132
|
+
| Goal tracking | `GoalService` 提供 create/edit/pause/resume/complete/clear mutation 与 GoalBar UI | 复用 | 作为 cordis 插件安装上游 `GoalService` 和 `ToolGoal`(直接组合)。浏览器 GoalBar mutation 通过 `TypertGatewayService` 路由到 `/api/goals/<method>`。`SessionProjectionCache` 在 DO 重启后持久化 goal 状态。 |
|
|
133
|
+
| Context compaction | Token 计量、自动压缩和 session 标题生成 | 复用 | 直接安装上游 cordis 插件。上下文压缩、token 计量、工具结果修剪和自动 session 标题生成原样运行。 |
|
|
134
|
+
| Session projection | 向已连接客户端实时推送派生状态 | 复用并添加 Edge bridge | 上游 `onChanged` 回调向已连接 WebSocket 客户端推送 title、model 和 goal projection frame。`SessionProjectionCache` 在 DO KV 中缓存 projection,用于冷 session 恢复。 |
|
|
135
|
+
| Queue and steer | 编辑、移除或提升排队消息;steering 运行中的 agent | 复用 | Queue mutation 以同步 live-inbox mutation 为接纳点。Steer 模式向运行中的 `ReactLoopAgent` 发送 next-step 消息。 |
|
|
127
136
|
| Authentication and tenancy | 本地 trusted-user boundary | 单 owner 适配 | 要求一个高熵 Worker secret,把它交换为带签名、有效期 30 天的 HttpOnly `SameSite=Strict` cookie,并把所有已接纳请求路由到一个固定 owner object。这里刻意不提供注册、用户数据库、角色或多租户路由。 |
|
|
128
137
|
|
|
129
138
|
浏览器请求路径是:
|
|
@@ -140,6 +149,9 @@ Cloudflare static assets -> upstream Web shell + client plugin graph
|
|
|
140
149
|
-> ReactLoopAgent.followup(queue) or ReactLoopAgent.steer(steer)
|
|
141
150
|
-> pre-step admission gate waits for the sessions.flush durability barrier
|
|
142
151
|
-> session/queue snapshots publish live and replay on mux reconnect
|
|
152
|
+
-> TypertGatewayService dispatches goals/edit, goals/clear via Typert RPC
|
|
153
|
+
-> onChanged bridge pushes title/model/goal projection frames
|
|
154
|
+
-> SessionProjectionCache reads/writes KV for cold-session state
|
|
143
155
|
-> upstream dsh-llm-deepseek plugin resolves configuration from settings + launch environment
|
|
144
156
|
-> 上游 attachment resolver 读取并校验已授权的 backend 字节
|
|
145
157
|
-> upstream LlmRuntime + ReactLoopAgent stream/event pipeline
|
|
@@ -162,7 +174,8 @@ Cloudflare static assets -> upstream Web shell + client plugin graph
|
|
|
162
174
|
- 图片经上游 composer、协议、provider 完成准入,以及授权、fork 复用与重启持久性;
|
|
163
175
|
- Workspace create/list/rename/delete/reorder/archive、实时/重连 baseline 和 Host frame;
|
|
164
176
|
- 真实浏览器启动、UI 发起的 Workspace rename、图片 turn、内容搜索、branch、archive 和 session 过期后的登录恢复;
|
|
165
|
-
- 对话连续性、event 重放、两步 bash 与 Web Search tool 交互,以及 Wrangler
|
|
177
|
+
- 对话连续性、event 重放、两步 bash 与 Web Search tool 交互,以及 Wrangler 重启后恢复;
|
|
178
|
+
- Typert URL 路由验证和 snapshot 级别工具定义验证;goal 和文件工具的端到端集成测试尚未实现。
|
|
166
179
|
|
|
167
180
|
一项聚焦故障测试证明,入队后的持久化失败会阻止模型调用,不会把已唤醒 Agent 的 prompt 报告为拒绝。仓库中的 model-visible 与 ARIA golden 会固定 tool transcript 和组装后的上游 Web client。真实 DeepSeek 调用需要开发者的 key,故不纳入仓库测试套件。
|
|
168
181
|
|
|
@@ -181,7 +194,7 @@ Cloudflare static assets -> upstream Web shell + client plugin graph
|
|
|
181
194
|
| `DSH_EDGE_DEFAULT_COMMAND_TIMEOUT_MS` | Computer 命令默认 timeout;默认 120,000 ms。 |
|
|
182
195
|
| `DSH_EDGE_MAX_COMMAND_TIMEOUT_MS` | 调用方可选 timeout 上限;默认 120,000 ms,且不能低于默认 timeout。 |
|
|
183
196
|
|
|
184
|
-
部署配置无效时,会在查询 session 或创建 SSE response 前失败。Edge 挂载上游 `web_search`,使用 30 秒 tool-call timeout 和结构化 result
|
|
197
|
+
部署配置无效时,会在查询 session 或创建 SSE response 前失败。Edge 挂载上游 `web_search` 与 `web_fetch`,使用 30 秒 tool-call timeout 和结构化 result。`web_fetch` 使用上游匿名 HTTP(S) provider,并在 Worker 内把 HTML 转成 Markdown。它只接受不含嵌入凭据的 HTTP(S) URL,在每次请求和每个同源 redirect hop 前拒绝 IP literal 与本地命名范围,并限制 URL 长度、response 字节数、解码字符数、redirect 次数与耗时。Worker 启用 Cloudflare 的 strictly-public global fetch 路径,DNS 变化无法把模型选择的 URL 路由到同区 origin 或私网 binding;需要 JavaScript 渲染的页面不属于这条基础 HTTP fetch 路径。
|
|
185
198
|
|
|
186
199
|
### Owner 认证
|
|
187
200
|
|
|
@@ -275,6 +288,7 @@ pnpm --filter dsh-edge example:install
|
|
|
275
288
|
- Fork 通过 canonical session seed format 复制 completed-turn prefix,并保留 parent lineage。Edge 拒绝超过 8,192 个事件或 8 MiB 的 seed,不会物化无界 history。
|
|
276
289
|
- Queue mutation 通过 live upstream Agent inbox 编辑、移除或提升条目。同步 mutation 是接纳点;后续 write-behind 与 retirement retry 由 persistence coordinator 负责。
|
|
277
290
|
- Workspace mutation 通过 Durable Object backend 持久化上游 workspace-domain global 与 record shape。Archive 保留 session log 与 Workspace slot;unary response 与 Host frame 携带和上游一致的完整 snapshot。
|
|
291
|
+
- Goal mutation(create、edit、pause、resume、complete、clear)通过 `TypertGatewayService` 路由到 `/api/goals/<method>`。每个 `@Remote` Service 需要通过 `ctx.typert.register()` 注册其 Typert 描述符;不需要编写 per-method HTTP handler。
|
|
278
292
|
|
|
279
293
|
### 认证与 downlink
|
|
280
294
|
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
## DeepSeek Harness
|
|
9
9
|
|
|
10
|
-
`dsh-edge` assembles published DeepSeek Harness packages and applies
|
|
10
|
+
`dsh-edge` assembles published DeepSeek Harness packages and applies 10 version-bound adaptations to the pinned `0.1.1-rc.2` release. DeepSeek Harness remains under its upstream MIT license:
|
|
11
11
|
|
|
12
12
|
```text
|
|
13
13
|
MIT License
|
|
@@ -35,7 +35,7 @@ SOFTWARE.
|
|
|
35
35
|
|
|
36
36
|
## Bundled component inventory
|
|
37
37
|
|
|
38
|
-
The following
|
|
38
|
+
The following 464 package versions form the conservative, platform-neutral production closure used to assemble the Web and Worker artifacts in this distribution. Platform-specific build binaries that are not distributed in those artifacts are excluded; tree shaking can omit additional code. The inventory and legal texts are generated during packaging rather than referring recipients to a source checkout. License expressions are SPDX identifiers supplied by each package. Dependencies installed separately by npm remain declared in this package's `package.json`.
|
|
39
39
|
|
|
40
40
|
| Component | License |
|
|
41
41
|
| --- | --- |
|
|
@@ -249,6 +249,7 @@ The following 463 package versions form the conservative, platform-neutral produ
|
|
|
249
249
|
| `@deepseek-ai/dsh-user-questions@0.1.1-rc.2` | `MIT` |
|
|
250
250
|
| `@deepseek-ai/dsh-web@0.1.1-rc.2` | `MIT` |
|
|
251
251
|
| `@deepseek-ai/dsh-web-app@0.1.1-rc.2` | `MIT` |
|
|
252
|
+
| `@deepseek-ai/dsh-web-fetch-http@0.1.1-rc.2` | `MIT` |
|
|
252
253
|
| `@deepseek-ai/dsh-web-frontend@0.1.1-rc.2` | `MIT` |
|
|
253
254
|
| `@deepseek-ai/dsh-web-search-deepseek@0.1.1-rc.2` | `MIT` |
|
|
254
255
|
| `@deepseek-ai/dsh-workflow@0.1.1-rc.2` | `MIT` |
|
|
@@ -9075,6 +9076,7 @@ Applies to:
|
|
|
9075
9076
|
- `@deepseek-ai/dsh-user-questions@0.1.1-rc.2` (`LICENSE`)
|
|
9076
9077
|
- `@deepseek-ai/dsh-web@0.1.1-rc.2` (`LICENSE`)
|
|
9077
9078
|
- `@deepseek-ai/dsh-web-app@0.1.1-rc.2` (`LICENSE`)
|
|
9079
|
+
- `@deepseek-ai/dsh-web-fetch-http@0.1.1-rc.2` (`LICENSE`)
|
|
9078
9080
|
- `@deepseek-ai/dsh-web-frontend@0.1.1-rc.2` (`LICENSE`)
|
|
9079
9081
|
- `@deepseek-ai/dsh-web-search-deepseek@0.1.1-rc.2` (`LICENSE`)
|
|
9080
9082
|
- `@deepseek-ai/dsh-workflow@0.1.1-rc.2` (`LICENSE`)
|
package/dist/index.html
CHANGED
|
@@ -39,7 +39,7 @@ window.__ModuleLoader__={
|
|
|
39
39
|
return exports.createClientModuleSystem(this,{id:registration.id,exports},options)
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
})()</script><script src="/plugins/@deepseek-ai/dsh-client-modules/client.js?rev=7eb526320903"></script><script src="/plugins/@deepseek-ai/dsh-client-runtime/client.js?rev=aba836a0c42d"></script><script>globalThis["__DSH_BOOT__"] = {"rev":"
|
|
42
|
+
})()</script><script src="/plugins/@deepseek-ai/dsh-client-modules/client.js?rev=7eb526320903"></script><script src="/plugins/@deepseek-ai/dsh-client-runtime/client.js?rev=aba836a0c42d"></script><script>globalThis["__DSH_BOOT__"] = {"rev":"00ceef7a03ce","entries":[{"id":"@deepseek-ai/dsh-typert-registry","url":"/plugins/@deepseek-ai/dsh-typert-registry/client.js?rev=f41d56e0b747","rev":"f41d56e0b747","inject":[],"immediately":true},{"id":"@deepseek-ai/dsh-api-gateway","url":"/plugins/@deepseek-ai/dsh-api-gateway/client.js?rev=965b70361a00","rev":"965b70361a00","inject":["@deepseek-ai/dsh-typert-registry","@deepseek-ai/dsh-client-connection"],"immediately":true},{"id":"@deepseek-ai/dsh-client-modules","url":"/plugins/@deepseek-ai/dsh-client-modules/client.js?rev=7eb526320903","rev":"7eb526320903","inject":[],"immediately":true},{"id":"@deepseek-ai/dsh-client-connection","url":"/plugins/@deepseek-ai/dsh-client-connection/client.js?rev=70b02b2d3fc2","rev":"70b02b2d3fc2","inject":[],"immediately":true},{"id":"@deepseek-ai/dsh-api-remotes","url":"/plugins/@deepseek-ai/dsh-api-remotes/client.js?rev=9a16f4532366","rev":"9a16f4532366","inject":["@deepseek-ai/dsh-api-gateway"],"immediately":true},{"id":"@deepseek-ai/dsh-client-runtime","url":"/plugins/@deepseek-ai/dsh-client-runtime/client.js?rev=aba836a0c42d","rev":"aba836a0c42d","inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-typert-registry","@deepseek-ai/dsh-api-remotes"],"immediately":true},{"id":"@deepseek-ai/dsh-client-ui-theme","url":"/plugins/@deepseek-ai/dsh-client-ui-theme/client.js?rev=e19c47b60a1c","rev":"e19c47b60a1c","inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-api-remotes"],"immediately":true},{"id":"@deepseek-ai/dsh-client-locale","url":"/plugins/@deepseek-ai/dsh-client-locale/client.js?rev=2660ca3f6a00","rev":"2660ca3f6a00","inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-api-remotes"],"immediately":true},{"id":"@deepseek-ai/dsh-client-ui-layout","url":"/plugins/@deepseek-ai/dsh-client-ui-layout/client.js?rev=abdb7f55acba","rev":"abdb7f55acba","inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-theme"]},{"id":"@deepseek-ai/dsh-client-ui-renderer","url":"/plugins/@deepseek-ai/dsh-client-ui-renderer/client.js?rev=79b59d365f3b","rev":"79b59d365f3b","inject":["@deepseek-ai/dsh-client-runtime"],"immediately":true},{"id":"@deepseek-ai/dsh-client-ui-sidebar","url":"/plugins/@deepseek-ai/dsh-client-ui-sidebar/client.js?rev=7563cb4b02ca","rev":"7563cb4b02ca","inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-layout","@deepseek-ai/dsh-client-locale"]},{"id":"@deepseek-ai/dsh-client-ui-settings","url":"/plugins/@deepseek-ai/dsh-client-ui-settings/client.js?rev=5d1695c62b38","rev":"5d1695c62b38","inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-api-remotes"]},{"id":"@deepseek-ai/dsh-client-ui-settings-general","url":"/plugins/@deepseek-ai/dsh-client-ui-settings-general/client.js?rev=f733efde3f2f","rev":"f733efde3f2f","inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-ui-sidebar"]},{"id":"@deepseek-ai/dsh-client-ui-settings-models","url":"/plugins/@deepseek-ai/dsh-client-ui-settings-models/client.js?rev=f12fb342db3b","rev":"f12fb342db3b","inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-api-remotes"]},{"id":"@deepseek-ai/dsh-client-ui-conversation","url":"/plugins/@deepseek-ai/dsh-client-ui-conversation/client.js?rev=cf4575517765","rev":"cf4575517765","inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-ui-layout"]},{"id":"@deepseek-ai/dsh-client-ui-brand-official","url":"/plugins/@deepseek-ai/dsh-client-ui-brand-official/client.js?rev=c426d52ce216","rev":"c426d52ce216","inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-sidebar"]},{"id":"@deepseek-ai/dsh-client-ui-attachment","url":"/plugins/@deepseek-ai/dsh-client-ui-attachment/client.js?rev=5349ce7aa495","rev":"5349ce7aa495","inject":["@deepseek-ai/dsh-client-ui-conversation"]},{"id":"@deepseek-ai/dsh-client-ui-tool","url":"/plugins/@deepseek-ai/dsh-client-ui-tool/client.js?rev=48c8d92e8828","rev":"48c8d92e8828","inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-conversation"]},{"id":"@deepseek-ai/dsh-client-ui-workflow-run","url":"/plugins/@deepseek-ai/dsh-client-ui-workflow-run/client.js?rev=60e130ad4f36","rev":"60e130ad4f36","inject":["@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation"]},{"id":"@deepseek-ai/dsh-client-ui-deliverables","url":"/plugins/@deepseek-ai/dsh-client-ui-deliverables/client.js?rev=13a78ee19f2e","rev":"13a78ee19f2e","inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation"]},{"id":"@deepseek-ai/dsh-client-ui-workspace","url":"/plugins/@deepseek-ai/dsh-client-ui-workspace/client.js?rev=2e1cd4f55f0c","rev":"2e1cd4f55f0c","inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-sidebar"]},{"id":"@deepseek-ai/dsh-client-ui-input-trigger","url":"/plugins/@deepseek-ai/dsh-client-ui-input-trigger/client.js?rev=b9564b9138a7","rev":"b9564b9138a7","inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale"]},{"id":"@deepseek-ai/dsh-client-ui-commands","url":"/plugins/@deepseek-ai/dsh-client-ui-commands/client.js?rev=887c0ca028a4","rev":"887c0ca028a4","inject":["@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-input-trigger","@deepseek-ai/dsh-client-ui-conversation"]},{"id":"@deepseek-ai/dsh-client-ui-skill","url":"/plugins/@deepseek-ai/dsh-client-ui-skill/client.js?rev=f229a70eecce","rev":"f229a70eecce","inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-tool","@deepseek-ai/dsh-client-ui-input-trigger","@deepseek-ai/dsh-api-remotes"]},{"id":"@deepseek-ai/dsh-client-ui-subagent","url":"/plugins/@deepseek-ai/dsh-client-ui-subagent/client.js?rev=0bb1ff842ae8","rev":"0bb1ff842ae8","inject":["@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-primitives","@deepseek-ai/dsh-client-ui-input-trigger"]},{"id":"@deepseek-ai/dsh-client-ui-jobs","url":"/plugins/@deepseek-ai/dsh-client-ui-jobs/client.js?rev=ed0d04a8c154","rev":"ed0d04a8c154","inject":["@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-primitives"]},{"id":"@deepseek-ai/dsh-client-ui-goal","url":"/plugins/@deepseek-ai/dsh-client-ui-goal/client.js?rev=31aac5c02463","rev":"31aac5c02463","inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-conversation"]},{"id":"@deepseek-ai/dsh-client-ui-message-feedback","url":"/plugins/@deepseek-ai/dsh-client-ui-message-feedback/client.js?rev=b3ebba00affa","rev":"b3ebba00affa","inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-conversation"]},{"id":"@deepseek-ai/dsh-client-ui-model-selection","url":"/plugins/@deepseek-ai/dsh-client-ui-model-selection/client.js?rev=639da97bfe66","rev":"639da97bfe66","inject":["@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-commands","@deepseek-ai/dsh-api-remotes"]},{"id":"@deepseek-ai/dsh-client-ui-permission-presets","url":"/plugins/@deepseek-ai/dsh-client-ui-permission-presets/client.js?rev=e36eeb24d0eb","rev":"e36eeb24d0eb","inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-commands","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-ui-settings"]},{"id":"@deepseek-ai/dsh-client-ui-agent-preset","url":"/plugins/@deepseek-ai/dsh-client-ui-agent-preset/client.js?rev=96dbaff92d41","rev":"96dbaff92d41","inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-api-remotes"]},{"id":"@deepseek-ai/dsh-client-ui-user-questions","url":"/plugins/@deepseek-ai/dsh-client-ui-user-questions/client.js?rev=350ccf0385ba","rev":"350ccf0385ba","inject":["@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-conversation"]},{"id":"@deepseek-ai/dsh-client-ui-trajectory","url":"/plugins/@deepseek-ai/dsh-client-ui-trajectory/client.js?rev=3345fd0d652c","rev":"3345fd0d652c","inject":["@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation"]},{"id":"dsh-edge-client-ui","url":"/plugins/dsh-edge-client-ui/client.js?rev=5402e80fc597","rev":"5402e80fc597","inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-locale"]}]}</script>
|
|
43
43
|
<meta charset="utf-8" />
|
|
44
44
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
45
45
|
<link rel="manifest" href="/manifest.webmanifest" />
|