@deepseek-ai/dsh-web-app 0.1.6-alpha.1 → 0.1.7-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.i18n.yaml CHANGED
@@ -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: 23ff6e925eb097eb99e5fa7ce8678c87c61aeb9c
6
- README.zh.md: 79b6335798e2bf522ce2bc1e201be745bb91e085
5
+ README.md: 9fd7cda152a2ca50eca253c54feb97b01d35e0ff
6
+ README.zh.md: e07e0556c1bd8b0869253add1ae591ce1c060ee0
package/README.md CHANGED
@@ -34,11 +34,11 @@ dsh --profile web
34
34
  dsh --profile web --no-open --port 8080
35
35
  ```
36
36
 
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.
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 same directory without the token. 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.
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#endpoint-and-wire-format) uses the Messages API.
40
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.
41
+ Saved model selections override the composition default. The settings card accepts a Messages-compatible API address and a credential reference.
42
42
 
43
43
  ### Configuration
44
44
 
@@ -63,7 +63,7 @@ When you launch `dsh --profile web` over SSH, the URL line still prints but the
63
63
 
64
64
  ### Per-session agent setup
65
65
 
66
- Each browser session composes its own agent from the shipped presets (the `standard` preset by default), instead of sharing one process-wide tool set. You can change the default preset or add your own presets under `$DSH_HOME/.agent-presets`.
66
+ Each browser session selects a shipped preset (`standard` by default). The Agent presets settings page changes the default and edits preset child plugins; saves persist in `$DSH_HOME/profiles/web/cordis.patch.yml`. Creator's plugin-management tool is enabled only when the Host provides an editable profile.
67
67
 
68
68
  -----
69
69
 
@@ -73,7 +73,7 @@ Each browser session composes its own agent from the shipped presets (the `stand
73
73
  <details>
74
74
  <summary>Implementation internals — click to expand</summary>
75
75
 
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.
76
+ The bundle is one patch layer of five files plus one runtime glue plugin: `cordis.patch.yml` carries the host rows and the preset registry, and each `presets/<id>.patch.yml` inserts one shipped preset declaration, applied in the order `dsh.bundle.patch` lists them. 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.
77
77
 
78
78
  ### Patch semantics
79
79
 
@@ -81,7 +81,7 @@ A patch replaces the targeted row's whole `config`, so each web row restates eve
81
81
 
82
82
  ### Readiness
83
83
 
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. Optional plugin failures do not suppress readiness; a required startup failure or 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.
85
85
 
86
86
  ### LAN trust sampling
87
87
 
@@ -93,7 +93,8 @@ The URL line and browser handoff are readiness signals: supervisors RPC as soon
93
93
  |---|---|
94
94
  | [`src/index.ts`](src/index.ts) | The `web-app` glue plugin: dist resolution, LAN trust sampling, prompt sections, bash variable, URL line, browser handoff |
95
95
  | [`src/startup.ts`](src/startup.ts) | The `web-startup` provider: `--host`, `--port`, `--trusted-host`, `--no-open`, `--help` |
96
- | [`cordis.patch.yml`](cordis.patch.yml) | The web patch: restated base values, web host rows, browser roster, agent plane behind presets |
96
+ | [`cordis.patch.yml`](cordis.patch.yml) | The web patch: restated base values, web host rows, browser roster, preset registry |
97
+ | [`presets/`](presets) | One `@deepseek-ai/dsh-agent-preset` declaration per shipped preset (`standard`, `ptc`, `minimal`, `cordis`), each its own patch file |
97
98
  | — | No runtime invariant companion is published; every contribution (frontend-static child plugin, prompt section, bashEnv registration) is registry-disposed with the fiber, and each owning registry's package carries that relation's invariant; the package holds no mutable state of its own to audit. |
98
99
  | [`tests/web-app.spec.ts`](tests/web-app.spec.ts) | Dist resolution, fallback seat, prompt sections, readiness |
99
100
  | [`tests/startup.spec.ts`](tests/startup.spec.ts) | Command-line parsing over a real Loader tree |
@@ -161,3 +162,5 @@ These limits tell you what to expect in unusual setups — a source checkout, SS
161
162
  None.
162
163
 
163
164
  </details>
165
+
166
+ The Web composition includes the account Remote controller and Account settings section.
package/README.zh.md CHANGED
@@ -34,11 +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
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 不提供协议选择器。
39
+ **设置 → 模型**显示 **DeepSeek**,使用 `DEEPSEEK_API_KEY`。默认模型为 `deepseek-official` / `deepseek-flash`(DeepSeek-V41-Flash)。[DeepSeek 插件](../../llm/llm-deepseek/README.zh.md#endpoint-and-wire-format)使用 Messages API。
40
40
 
41
- 已保存的模型选择优先于组合默认值。两种协议共用 `deepseek-official` 与 `llm-deepseek` 设置,因此切换协议不改变模型选择或复制凭据。端点覆盖保持原值;设置卡片允许用户填写兼容的 API 地址。
41
+ 已保存的模型选择覆盖组合默认值。设置卡接受兼容 Messages 的 API 地址与凭据引用。
42
42
 
43
43
  ### 配置
44
44
 
@@ -63,7 +63,7 @@ dsh --profile web --no-open --port 8080
63
63
 
64
64
  ### 按会话的 agent 设置
65
65
 
66
- 每个浏览器会话都从随发行版交付的 preset(默认 `standard`)组合自己的 agent,而不是共享一套进程级工具集。你可以更改默认 preset,或在 `$DSH_HOME/.agent-presets` 下添加自己的 preset。
66
+ 每个浏览器会话选择一个随发行版交付的 preset(默认 `standard`)。Agent 预设设置页可更改默认项并编辑预设的子插件;保存结果持久化到 `$DSH_HOME/profiles/web/cordis.patch.yml`。只有 Host 提供可编辑的 profile 时,Creator 的插件管理工具才会启用。
67
67
 
68
68
  -----
69
69
 
@@ -73,7 +73,7 @@ dsh --profile web --no-open --port 8080
73
73
  <details>
74
74
  <summary>实现细节——点击展开</summary>
75
75
 
76
- 本组合包是一份 patch 加一个运行时粘合插件。存储栈与投影缓存来自 `dsh-base`;Web 叠加层的 workspace 与 message-feedback 行使用共享的 `storageDomain` 服务。patch 重述 base 刻意省略的表层专属值,插入仅 Web 使用的宿主行与浏览器名录,然后把 agent 层改由 preset 承载;粘合插件负责 dist 服务、信任采样、提示词段落、bash 变量与就绪宣告。
76
+ 此 bundle 由一层五个文件的补丁和一个运行时胶水插件组成:`cordis.patch.yml` 承载宿主行和 preset 注册表,每个 `presets/<id>.patch.yml` 插入一条随发行版交付的 preset 声明,按 `dsh.bundle.patch` 列出的顺序应用。存储栈与投影缓存来自 `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 查看器和客户端缓存。
77
77
 
78
78
  ### patch 语义
79
79
 
@@ -81,7 +81,7 @@ patch 会替换目标行的整个 `config`,因此每个 Web 行都重述自己
81
81
 
82
82
  ### 就绪宣告
83
83
 
84
- URL 行与浏览器交接都是就绪信号:监督方一观察到该行就发起 RPC,浏览器一打开就请求页面,因此两者只在 Loader 配置树结算、通过 required 启动检查且 Connection 认证可用后运行——在没有 Loader 的手工构建树中则立即运行。可选插件失败不会阻止就绪宣告;required 启动失败或启动中途被释放的树不会宣告任何内容。
84
+ URL 行与浏览器交接都是就绪信号:监督方一观察到该行就发起 RPC,浏览器一打开就请求页面,因此两者只在 Loader 配置树结算、通过 required 启动检查且 Connection 认证可用后运行——在没有 Loader 的手工构建树中则立即运行。此时 client combo JavaScript 和 source map 仍未物化。可选插件失败不会阻止就绪宣告;required 启动失败或启动中途被释放的树不会宣告任何内容。
85
85
 
86
86
  ### LAN 信任采样
87
87
 
@@ -93,7 +93,8 @@ URL 行与浏览器交接都是就绪信号:监督方一观察到该行就发
93
93
  |---|---|
94
94
  | [`src/index.ts`](src/index.ts) | `web-app` 粘合插件:dist 解析、LAN 信任采样、提示词段落、bash 变量、URL 行、浏览器交接 |
95
95
  | [`src/startup.ts`](src/startup.ts) | `web-startup` 提供方:`--host`、`--port`、`--trusted-host`、`--no-open`、`--help` |
96
- | [`cordis.patch.yml`](cordis.patch.yml) | Web patch:重述的基础值、Web 宿主行、浏览器名录、由 preset 承载的 agent 层 |
96
+ | [`cordis.patch.yml`](cordis.patch.yml) | Web patch:重述的基础值、Web 宿主行、浏览器名录、preset 注册表 |
97
+ | [`presets/`](presets) | 每个随发行版交付的 preset(`standard`、`ptc`、`minimal`、`cordis`)各一条 `@deepseek-ai/dsh-agent-preset` 声明,各自一个补丁文件 |
97
98
  | — | 不发布运行时不变式伴生入口;每项贡献(frontend-static 子插件、提示词段落、bashEnv 注册)都会随 fiber 由注册表释放,且每个所属注册表的包负责该关系的不变式;本包不持有需要审计的可变状态。 |
98
99
  | [`tests/web-app.spec.ts`](tests/web-app.spec.ts) | dist 解析、回退席位、提示词段落、就绪宣告 |
99
100
  | [`tests/startup.spec.ts`](tests/startup.spec.ts) | 在真实 Loader 树上的命令行解析 |
@@ -161,3 +162,5 @@ URL 行与浏览器交接都是就绪信号:监督方一观察到该行就发
161
162
  无。
162
163
 
163
164
  </details>
165
+
166
+ Web 组合包含账号 Remote 控制器和账号设置页面。
package/cordis.patch.yml CHANGED
@@ -102,6 +102,10 @@
102
102
  - id: session-controller
103
103
  name: '@deepseek-ai/dsh-api-session-controller'
104
104
 
105
+ # One background job's observation record streamed over Typert Remote;
106
+ # the roster rides the session control stream above.
107
+ - id: job-controller
108
+ name: '@deepseek-ai/dsh-api-job-controller'
105
109
  # Workspace file service: bounded read, directory listing, and the
106
110
  # agent-write change feed inside the session workspace root.
107
111
  - id: terminal-controller
@@ -111,6 +115,12 @@
111
115
 
112
116
  # Configuration-surface reads and writes over Typert Remote. Each method
113
117
  # reports an actionable error when its settings-domain provider is absent.
118
+ - id: ui-settings-account
119
+ name: '@deepseek-ai/dsh-client-ui-settings-account'
120
+
121
+ - id: account-controller
122
+ name: '@deepseek-ai/dsh-api-account-controller'
123
+
114
124
  - id: settings-controller
115
125
  name: '@deepseek-ai/dsh-api-settings-controller'
116
126
 
@@ -121,6 +131,12 @@
121
131
  - id: cordis-host-runner
122
132
  name: '@deepseek-ai/dsh-cordis-host-runner'
123
133
 
134
+ # The Host inspect providers are process-global: the registry rejects a
135
+ # duplicate id, so they register here once and every preset's `tool-cordis`
136
+ # row reads them.
137
+ - id: cordis-inspect-providers
138
+ name: '@deepseek-ai/dsh-tool-cordis/host'
139
+
124
140
  # Ordinary provider for the parsed Web flags. Its plugin-level injection
125
141
  # waits for cmdlineArgs; no launcher metadata or special row kind is needed.
126
142
  - id: web-startup
@@ -145,8 +161,9 @@
145
161
  # assembly fact of dsh-web-app, never user config), mounts the
146
162
  # frontend-static fallback owner, registers the web-surface prompt
147
163
  # section and the bash runtime variable, prints the URL line, and opens the
148
- # canonical local URL after the full tree settles. The webStartup provider
149
- # supplies invocation-only values; after the server binds, this row samples
164
+ # canonical local URL after the full Loader tree settles and the required-
165
+ # entry audit passes. The
166
+ # webStartup provider supplies invocation-only values; after the server binds, this row samples
150
167
  # LAN trust once and provides `webRuntime`. A complete agent-preset persona
151
168
  # suppresses the prompt section for that agent while retaining the host-owned
152
169
  # shell variable.
@@ -224,14 +241,22 @@
224
241
  name: '@deepseek-ai/dsh-client-ui-sidebar-right'
225
242
 
226
243
 
244
+ - id: office-to-pdf
245
+ name: '@deepseek-ai/dsh-office-to-pdf'
246
+
227
247
  # The right Sidebar's document tab: bounded file reads with selectable
228
- # Markdown, code, HTML, PDF, and plain-text renderers.
248
+ # Markdown, code, HTML, PDF, Office, and plain-text renderers.
229
249
  - id: ui-sidebar-documentpreview
230
250
  name: '@deepseek-ai/dsh-client-ui-sidebar-documentpreview'
231
251
 
232
- # The right Sidebar's workspace file tree tab type.
252
+ # Web profiles opt in; Desktop retains sandboxed HTTP(S) Browser tabs.
253
+ - id: ui-sidebar-browser
254
+ name: '@deepseek-ai/dsh-client-ui-sidebar-browser'
255
+ disabled: !!js "ctx.get('profileContext')?.name !== 'desktop'"
256
+
233
257
  - id: ui-sidebar-terminal
234
258
  name: '@deepseek-ai/dsh-client-ui-sidebar-terminal'
259
+ # The right Sidebar's workspace file tree tab type.
235
260
  - id: ui-sidebar-files
236
261
  name: '@deepseek-ai/dsh-client-ui-sidebar-files'
237
262
 
@@ -244,12 +269,17 @@
244
269
  - id: ui-settings-models
245
270
  name: '@deepseek-ai/dsh-client-ui-settings-models'
246
271
 
272
+ # Plugin management: the sidebar Plugins page installs, enables, disables,
273
+ # and removes the profile's bundles through the `pluginManager` Remote.
274
+ # Without a profile-backed Host it reports itself unavailable.
275
+ - id: ui-plugin-manager
276
+ name: '@deepseek-ai/dsh-client-ui-plugin-manager'
277
+
278
+ # Read-only Plugin list tab in the Settings Plugins section; the built-in
279
+ # bundles the sidebar page leaves out are inspected here.
247
280
  - id: ui-settings-plugin-inventory
248
281
  name: '@deepseek-ai/dsh-client-ui-settings-plugin-inventory'
249
282
 
250
- - id: ui-settings-unarchive-sessions
251
- name: '@deepseek-ai/dsh-client-ui-settings-unarchive-sessions'
252
-
253
283
  - id: ui-conversation
254
284
  name: '@deepseek-ai/dsh-client-ui-conversation'
255
285
 
@@ -273,20 +303,26 @@
273
303
  - id: ui-cordis
274
304
  name: '@deepseek-ai/dsh-client-ui-cordis'
275
305
 
276
- # Durable workflow lifecycle as an independent Chat node after the
277
- # existing generic workflow tool row.
278
- - id: ui-workflow-run
279
- name: '@deepseek-ai/dsh-client-ui-workflow-run'
280
-
281
- # Turn tail: the produced-files row under each closing assistant message.
282
- # Remove this entry to turn the surface off; the tail hole renders empty.
306
+ # Turn tail: the changed-files card and delivery cards under each closing
307
+ # assistant message. Remove this entry to turn the surface off; the tail
308
+ # hole renders empty.
283
309
  - id: ui-deliverables
284
310
  name: '@deepseek-ai/dsh-client-ui-deliverables'
285
311
 
312
+ # Records each top-level turn's changed files from git working-tree
313
+ # snapshots; the changed-files card above renders its events.
314
+ - id: workspace-changes
315
+ name: '@deepseek-ai/dsh-workspace-changes'
316
+
286
317
 
287
318
  - id: ui-workspace
288
319
  name: '@deepseek-ai/dsh-client-ui-workspace'
289
320
 
321
+ # Durable workflow lifecycle as an independent Chat node after the
322
+ # existing generic workflow tool row.
323
+ - id: ui-workflow-run
324
+ name: '@deepseek-ai/dsh-client-ui-workflow-run'
325
+
290
326
  # Input triggers: the '/' | '@' pipeline (ui-input-trigger), the command surface over
291
327
  # it (ui-commands), and the reference sources (ui-skill / ui-reference).
292
328
  - id: ui-input-trigger
@@ -304,6 +340,12 @@
304
340
  - id: ui-reference
305
341
  name: '@deepseek-ai/dsh-client-ui-reference'
306
342
 
343
+
344
+ # Background jobs: the session-header roster with on-demand streaming
345
+ # record panels over the session job-output service.
346
+ - id: ui-jobs
347
+ name: '@deepseek-ai/dsh-client-ui-jobs'
348
+
307
349
  # Read-only active Schedule catalog. The shipped Web graph resolves the
308
350
  # client package but leaves it disabled; the explicit Schedule overlay
309
351
  # enables this same row together with the host Schedule services.
@@ -311,10 +353,6 @@
311
353
  name: '@deepseek-ai/dsh-client-ui-schedule'
312
354
  disabled: true
313
355
 
314
- # Background jobs: the session-header list over the jobsBySession mirror.
315
- - id: ui-jobs
316
- name: '@deepseek-ai/dsh-client-ui-jobs'
317
-
318
356
  # Goal surface: GoalBar in the input dock over the goal session projection.
319
357
  - id: ui-goal
320
358
  name: '@deepseek-ai/dsh-client-ui-goal'
@@ -337,11 +375,27 @@
337
375
  - id: ui-agent-preset
338
376
  name: '@deepseek-ai/dsh-client-ui-agent-preset'
339
377
 
340
- # Plugin configuration: the host-plane sections a user owns, as expandable
341
- # cards. A namespace this deployment does not expose renders nothing.
378
+ # The Built-in plugins settings section: the navigation entry and the tab
379
+ # row the inventory tab registers into. The official configuration pages
380
+ # are the companion rows below.
342
381
  - id: ui-settings-plugins
343
382
  name: '@deepseek-ai/dsh-client-ui-settings-plugins'
344
383
 
384
+ # The official settings pages: one companion package per host-plane
385
+ # namespace, each registering its page into the Plugins page while the
386
+ # Host serves the namespace.
387
+ - id: ui-settings-shell
388
+ name: '@deepseek-ai/dsh-client-ui-settings-shell'
389
+
390
+ - id: ui-settings-agent-loop
391
+ name: '@deepseek-ai/dsh-client-ui-settings-agent-loop'
392
+
393
+ - id: ui-settings-subagent
394
+ name: '@deepseek-ai/dsh-client-ui-settings-subagent'
395
+
396
+ - id: ui-settings-web-search
397
+ name: '@deepseek-ai/dsh-client-ui-settings-web-search'
398
+
345
399
  # Plan control: the composer plan seat over the plan projection + /plan channel.
346
400
  - id: ui-plan
347
401
  name: '@deepseek-ai/dsh-client-ui-plan'
@@ -369,6 +423,9 @@
369
423
  # exists, so there is no agent to key by. Behind a preset realm those variables
370
424
  # would never reach the model's shell at all.
371
425
 
426
+ - id: tool-plugin-manager
427
+ disabled: true
428
+
372
429
  - id: tool-bash
373
430
  disabled: true
374
431
 
@@ -477,15 +534,11 @@
477
534
  - id: tool-web
478
535
  disabled: true
479
536
 
480
- # The preset roster. The shipped presets are bundled inside
481
- # `dsh-agent-presets` itself and prepended as a read-only `system` root
482
- # (`includeShippedRoot`); `$DSH_HOME/.agent-presets` is where a person — or an
483
- # agent — authors their own, appended by the same package (`includeUserRoot`),
484
- # and carries the same trust as shell access because a preset IS a
485
- # composition. This row only names the default and any deployment-added
486
- # `roots`; no launcher patching is involved.
537
+ # The preset selection registry. The shipped preset declarations follow as
538
+ # separate patch files under `presets/`, listed after this file in
539
+ # `package.json` `dsh.bundle.patch`.
487
540
  - insert:
488
- - id: agent-presets
489
- name: '@deepseek-ai/dsh-agent-presets'
541
+ - id: agent-preset-registry
542
+ name: '@deepseek-ai/dsh-agent-preset-registry'
490
543
  config:
491
544
  default: standard
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.6-alpha.1",
4
+ "version": "0.1.7-alpha.1",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -23,6 +23,7 @@
23
23
  "default": "./lib/startup.js"
24
24
  },
25
25
  "./cordis.patch.yml": "./cordis.patch.yml",
26
+ "./presets/*.patch.yml": "./presets/*.patch.yml",
26
27
  "./src/*": "./src/*",
27
28
  "./package.json": "./package.json"
28
29
  },
@@ -30,108 +31,167 @@
30
31
  "lib/index.js",
31
32
  "lib/startup.js",
32
33
  "cordis.patch.yml",
34
+ "presets/standard.patch.yml",
35
+ "presets/ptc.patch.yml",
36
+ "presets/minimal.patch.yml",
37
+ "presets/cordis.patch.yml",
33
38
  "lib/types/**/*.d.ts"
34
39
  ],
35
40
  "license": "MIT",
36
41
  "dsh": {
37
42
  "bundle": {
38
- "patch": "./cordis.patch.yml"
43
+ "patch": [
44
+ "./cordis.patch.yml",
45
+ "./presets/standard.patch.yml",
46
+ "./presets/ptc.patch.yml",
47
+ "./presets/minimal.patch.yml",
48
+ "./presets/cordis.patch.yml"
49
+ ]
39
50
  }
40
51
  },
41
52
  "dependencies": {
42
53
  "commander": "^15.0.0",
43
54
  "open": "^11.0.0",
44
- "@deepseek-ai/dsh-agent-presets": "^0.1.6-alpha.1",
45
- "@deepseek-ai/dsh-api-remotes": "^0.1.6-alpha.1",
46
- "@deepseek-ai/dsh-api-session-controller": "^0.1.6-alpha.1",
47
- "@deepseek-ai/dsh-api-workspace-controller": "^0.1.6-alpha.1",
48
- "@deepseek-ai/dsh-api-settings-controller": "^0.1.6-alpha.1",
49
- "@deepseek-ai/dsh-app-boot": "^0.1.6-alpha.1",
50
- "@deepseek-ai/dsh-client-connection": "^0.1.6-alpha.1",
51
- "@deepseek-ai/dsh-client-file-upload": "^0.1.6-alpha.1",
52
- "@deepseek-ai/dsh-client-hmr": "^0.1.6-alpha.1",
53
- "@deepseek-ai/dsh-client-locale": "^0.1.6-alpha.1",
54
- "@deepseek-ai/dsh-client-modules": "^0.1.6-alpha.1",
55
- "@deepseek-ai/dsh-client-resources": "^0.1.6-alpha.1",
56
- "@deepseek-ai/dsh-client-ui-agent-preset": "^0.1.6-alpha.1",
57
- "@deepseek-ai/dsh-client-ui-approval": "^0.1.6-alpha.1",
58
- "@deepseek-ai/dsh-client-ui-attachment": "^0.1.6-alpha.1",
59
- "@deepseek-ai/dsh-client-ui-brand-official": "^0.1.6-alpha.1",
60
- "@deepseek-ai/dsh-client-ui-chat": "^0.1.6-alpha.1",
61
- "@deepseek-ai/dsh-client-ui-conversation": "^0.1.6-alpha.1",
62
- "@deepseek-ai/dsh-client-ui-cordis": "^0.1.6-alpha.1",
63
- "@deepseek-ai/dsh-client-ui-deliverables": "^0.1.6-alpha.1",
64
- "@deepseek-ai/dsh-client-ui-directory-picker-browse": "^0.1.6-alpha.1",
65
- "@deepseek-ai/dsh-client-ui-directory-picker-native": "^0.1.6-alpha.1",
66
- "@deepseek-ai/dsh-client-ui-goal": "^0.1.6-alpha.1",
67
- "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.6-alpha.1",
68
- "@deepseek-ai/dsh-client-ui-jobs": "^0.1.6-alpha.1",
69
- "@deepseek-ai/dsh-client-ui-layout": "^0.1.6-alpha.1",
70
- "@deepseek-ai/dsh-client-ui-message-feedback": "^0.1.6-alpha.1",
71
- "@deepseek-ai/dsh-client-ui-model-selection": "^0.1.6-alpha.1",
72
- "@deepseek-ai/dsh-client-ui-open-in-app": "^0.1.6-alpha.1",
73
- "@deepseek-ai/dsh-client-ui-permission-presets": "^0.1.6-alpha.1",
74
- "@deepseek-ai/dsh-client-ui-plan": "^0.1.6-alpha.1",
75
- "@deepseek-ai/dsh-client-ui-reference": "^0.1.6-alpha.1",
76
- "@deepseek-ai/dsh-client-ui-renderer": "^0.1.6-alpha.1",
77
- "@deepseek-ai/dsh-client-ui-schedule": "^0.1.6-alpha.1",
78
- "@deepseek-ai/dsh-client-ui-session": "^0.1.6-alpha.1",
79
- "@deepseek-ai/dsh-client-ui-settings": "^0.1.6-alpha.1",
80
- "@deepseek-ai/dsh-client-ui-settings-models": "^0.1.6-alpha.1",
81
- "@deepseek-ai/dsh-client-ui-commands": "^0.1.6-alpha.1",
82
- "@deepseek-ai/dsh-client-ui-settings-plugins": "^0.1.6-alpha.1",
83
- "@deepseek-ai/dsh-client-ui-settings-general": "^0.1.6-alpha.1",
84
- "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.6-alpha.1",
85
- "@deepseek-ai/dsh-client-ui-sidebar-files": "^0.1.6-alpha.1",
86
- "@deepseek-ai/dsh-client-ui-sidebar-right": "^0.1.6-alpha.1",
87
- "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "^0.1.6-alpha.1",
88
- "@deepseek-ai/dsh-client-ui-settings-unarchive-sessions": "^0.1.6-alpha.1",
89
- "@deepseek-ai/dsh-client-ui-subagent": "^0.1.6-alpha.1",
90
- "@deepseek-ai/dsh-client-ui-theme": "^0.1.6-alpha.1",
91
- "@deepseek-ai/dsh-client-ui-skill": "^0.1.6-alpha.1",
92
- "@deepseek-ai/dsh-client-ui-tool": "^0.1.6-alpha.1",
93
- "@deepseek-ai/dsh-client-ui-settings-plugin-inventory": "^0.1.6-alpha.1",
94
- "@deepseek-ai/dsh-client-ui-user-questions": "^0.1.6-alpha.1",
95
- "@deepseek-ai/dsh-client-ui-workspace": "^0.1.6-alpha.1",
96
- "@deepseek-ai/dsh-cmdline": "^0.1.6-alpha.1",
97
- "@deepseek-ai/dsh-cordis-client-runner": "^0.1.6-alpha.1",
98
- "@deepseek-ai/dsh-cordis-host-runner": "^0.1.6-alpha.1",
99
- "@deepseek-ai/dsh-file-reference": "^0.1.6-alpha.1",
100
- "@deepseek-ai/dsh-client-ui-workflow-run": "^0.1.6-alpha.1",
101
- "@deepseek-ai/dsh-file-reference-local": "^0.1.6-alpha.1",
102
- "@deepseek-ai/dsh-host-directory-picker-auto": "^0.1.6-alpha.1",
103
- "@deepseek-ai/dsh-host-directory-picker-browse": "^0.1.6-alpha.1",
104
- "@deepseek-ai/dsh-client-ui-trajectory": "^0.1.6-alpha.1",
105
- "@deepseek-ai/dsh-host-directory-picker-native": "^0.1.6-alpha.1",
106
- "@deepseek-ai/dsh-api-workspace-files": "^0.1.6-alpha.1",
107
- "@deepseek-ai/dsh-host-frontend-static": "^0.1.6-alpha.1",
108
- "@deepseek-ai/dsh-host-open-in-app": "^0.1.6-alpha.1",
109
- "@deepseek-ai/dsh-host-plugin-inventory": "^0.1.6-alpha.1",
110
- "@deepseek-ai/dsh-host-webserver": "^0.1.6-alpha.1",
111
- "@deepseek-ai/dsh-launch-environment": "^0.1.6-alpha.1",
112
- "@deepseek-ai/dsh-message-feedback": "^0.1.6-alpha.1",
113
- "@deepseek-ai/dsh-session-log-export": "^0.1.6-alpha.1",
114
- "@deepseek-ai/dsh-session-reference": "^0.1.6-alpha.1",
115
- "@deepseek-ai/dsh-session-stats": "^0.1.6-alpha.1",
116
- "@deepseek-ai/dsh-session-turn-outline": "^0.1.6-alpha.1",
117
- "@deepseek-ai/dsh-subprocess": "^0.1.6-alpha.1",
118
- "@deepseek-ai/dsh-tool-subagent": "^0.1.6-alpha.1",
119
- "@deepseek-ai/dsh-workspace": "^0.1.6-alpha.1",
120
- "@deepseek-ai/schemastery": "^3.18.2",
121
- "@deepseek-ai/dsh-api-terminal-controller": "^0.1.6-alpha.1",
122
- "@deepseek-ai/dsh-client-ui-sidebar-terminal": "^0.1.6-alpha.1",
123
- "@deepseek-ai/dsh-web-frontend": "^0.1.6-alpha.1"
55
+ "@deepseek-ai/dsh-agent-instructions": "^0.1.7-alpha.1",
56
+ "@deepseek-ai/dsh-agent-preset": "^0.1.7-alpha.1",
57
+ "@deepseek-ai/dsh-agent-preset-registry": "^0.1.7-alpha.1",
58
+ "@deepseek-ai/dsh-agent-tool-presentation": "^0.1.7-alpha.1",
59
+ "@deepseek-ai/dsh-api-job-controller": "^0.1.7-alpha.1",
60
+ "@deepseek-ai/dsh-api-remotes": "^0.1.7-alpha.1",
61
+ "@deepseek-ai/dsh-api-session-controller": "^0.1.7-alpha.1",
62
+ "@deepseek-ai/dsh-api-settings-controller": "^0.1.7-alpha.1",
63
+ "@deepseek-ai/dsh-api-terminal-controller": "^0.1.7-alpha.1",
64
+ "@deepseek-ai/dsh-api-workspace-files": "^0.1.7-alpha.1",
65
+ "@deepseek-ai/dsh-app-boot": "^0.1.7-alpha.1",
66
+ "@deepseek-ai/dsh-client-connection": "^0.1.7-alpha.1",
67
+ "@deepseek-ai/dsh-client-file-upload": "^0.1.7-alpha.1",
68
+ "@deepseek-ai/dsh-client-hmr": "^0.1.7-alpha.1",
69
+ "@deepseek-ai/dsh-client-locale": "^0.1.7-alpha.1",
70
+ "@deepseek-ai/dsh-client-modules": "^0.1.7-alpha.1",
71
+ "@deepseek-ai/dsh-client-resources": "^0.1.7-alpha.1",
72
+ "@deepseek-ai/dsh-client-ui-agent-preset": "^0.1.7-alpha.1",
73
+ "@deepseek-ai/dsh-client-ui-approval": "^0.1.7-alpha.1",
74
+ "@deepseek-ai/dsh-client-ui-brand-official": "^0.1.7-alpha.1",
75
+ "@deepseek-ai/dsh-client-ui-attachment": "^0.1.7-alpha.1",
76
+ "@deepseek-ai/dsh-client-ui-chat": "^0.1.7-alpha.1",
77
+ "@deepseek-ai/dsh-client-ui-commands": "^0.1.7-alpha.1",
78
+ "@deepseek-ai/dsh-client-ui-conversation": "^0.1.7-alpha.1",
79
+ "@deepseek-ai/dsh-client-ui-cordis": "^0.1.7-alpha.1",
80
+ "@deepseek-ai/dsh-client-ui-deliverables": "^0.1.7-alpha.1",
81
+ "@deepseek-ai/dsh-client-ui-directory-picker-browse": "^0.1.7-alpha.1",
82
+ "@deepseek-ai/dsh-client-ui-directory-picker-native": "^0.1.7-alpha.1",
83
+ "@deepseek-ai/dsh-client-ui-goal": "^0.1.7-alpha.1",
84
+ "@deepseek-ai/dsh-api-workspace-controller": "^0.1.7-alpha.1",
85
+ "@deepseek-ai/dsh-client-ui-input-trigger": "^0.1.7-alpha.1",
86
+ "@deepseek-ai/dsh-client-ui-jobs": "^0.1.7-alpha.1",
87
+ "@deepseek-ai/dsh-client-ui-layout": "^0.1.7-alpha.1",
88
+ "@deepseek-ai/dsh-client-ui-message-feedback": "^0.1.7-alpha.1",
89
+ "@deepseek-ai/dsh-client-ui-model-selection": "^0.1.7-alpha.1",
90
+ "@deepseek-ai/dsh-client-ui-open-in-app": "^0.1.7-alpha.1",
91
+ "@deepseek-ai/dsh-client-ui-permission-presets": "^0.1.7-alpha.1",
92
+ "@deepseek-ai/dsh-client-ui-plugin-manager": "^0.1.7-alpha.1",
93
+ "@deepseek-ai/dsh-client-ui-reference": "^0.1.7-alpha.1",
94
+ "@deepseek-ai/dsh-client-ui-plan": "^0.1.7-alpha.1",
95
+ "@deepseek-ai/dsh-client-ui-renderer": "^0.1.7-alpha.1",
96
+ "@deepseek-ai/dsh-client-ui-schedule": "^0.1.7-alpha.1",
97
+ "@deepseek-ai/dsh-client-ui-session": "^0.1.7-alpha.1",
98
+ "@deepseek-ai/dsh-client-ui-settings": "^0.1.7-alpha.1",
99
+ "@deepseek-ai/dsh-client-ui-settings-general": "^0.1.7-alpha.1",
100
+ "@deepseek-ai/dsh-client-ui-settings-models": "^0.1.7-alpha.1",
101
+ "@deepseek-ai/dsh-client-ui-settings-plugins": "^0.1.7-alpha.1",
102
+ "@deepseek-ai/dsh-client-ui-settings-plugin-inventory": "^0.1.7-alpha.1",
103
+ "@deepseek-ai/dsh-client-ui-settings-shell": "^0.1.7-alpha.1",
104
+ "@deepseek-ai/dsh-client-ui-settings-agent-loop": "^0.1.7-alpha.1",
105
+ "@deepseek-ai/dsh-client-ui-settings-web-search": "^0.1.7-alpha.1",
106
+ "@deepseek-ai/dsh-client-ui-sidebar": "^0.1.7-alpha.1",
107
+ "@deepseek-ai/dsh-client-ui-sidebar-browser": "^0.1.7-alpha.1",
108
+ "@deepseek-ai/dsh-client-ui-sidebar-documentpreview": "^0.1.7-alpha.1",
109
+ "@deepseek-ai/dsh-client-ui-sidebar-right": "^0.1.7-alpha.1",
110
+ "@deepseek-ai/dsh-client-ui-sidebar-terminal": "^0.1.7-alpha.1",
111
+ "@deepseek-ai/dsh-client-ui-sidebar-files": "^0.1.7-alpha.1",
112
+ "@deepseek-ai/dsh-client-ui-skill": "^0.1.7-alpha.1",
113
+ "@deepseek-ai/dsh-client-ui-theme": "^0.1.7-alpha.1",
114
+ "@deepseek-ai/dsh-client-ui-tool": "^0.1.7-alpha.1",
115
+ "@deepseek-ai/dsh-client-ui-trajectory": "^0.1.7-alpha.1",
116
+ "@deepseek-ai/dsh-client-ui-user-questions": "^0.1.7-alpha.1",
117
+ "@deepseek-ai/dsh-client-ui-subagent": "^0.1.7-alpha.1",
118
+ "@deepseek-ai/dsh-client-ui-workflow-run": "^0.1.7-alpha.1",
119
+ "@deepseek-ai/dsh-cmdline": "^0.1.7-alpha.1",
120
+ "@deepseek-ai/dsh-command-compact": "^0.1.7-alpha.1",
121
+ "@deepseek-ai/dsh-command-goal": "^0.1.7-alpha.1",
122
+ "@deepseek-ai/dsh-client-ui-workspace": "^0.1.7-alpha.1",
123
+ "@deepseek-ai/dsh-compaction-tool-result-pruner": "^0.1.7-alpha.1",
124
+ "@deepseek-ai/dsh-cordis-host-runner": "^0.1.7-alpha.1",
125
+ "@deepseek-ai/dsh-compaction-basic": "^0.1.7-alpha.1",
126
+ "@deepseek-ai/dsh-file-reference": "^0.1.7-alpha.1",
127
+ "@deepseek-ai/dsh-host-directory-picker-auto": "^0.1.7-alpha.1",
128
+ "@deepseek-ai/dsh-host-directory-picker-browse": "^0.1.7-alpha.1",
129
+ "@deepseek-ai/dsh-host-directory-picker-native": "^0.1.7-alpha.1",
130
+ "@deepseek-ai/dsh-file-reference-local": "^0.1.7-alpha.1",
131
+ "@deepseek-ai/dsh-host-frontend-static": "^0.1.7-alpha.1",
132
+ "@deepseek-ai/dsh-host-plugin-inventory": "^0.1.7-alpha.1",
133
+ "@deepseek-ai/dsh-host-webserver": "^0.1.7-alpha.1",
134
+ "@deepseek-ai/dsh-message-feedback": "^0.1.7-alpha.1",
135
+ "@deepseek-ai/dsh-host-open-in-app": "^0.1.7-alpha.1",
136
+ "@deepseek-ai/dsh-cordis-client-runner": "^0.1.7-alpha.1",
137
+ "@deepseek-ai/dsh-office-to-pdf": "^0.1.7-alpha.1",
138
+ "@deepseek-ai/dsh-persona": "^0.1.7-alpha.1",
139
+ "@deepseek-ai/dsh-launch-environment": "^0.1.7-alpha.1",
140
+ "@deepseek-ai/dsh-plan-mode": "^0.1.7-alpha.1",
141
+ "@deepseek-ai/dsh-client-ui-settings-subagent": "^0.1.7-alpha.1",
142
+ "@deepseek-ai/dsh-plugin-manager": "^0.1.7-alpha.1",
143
+ "@deepseek-ai/dsh-session-log-export": "^0.1.7-alpha.1",
144
+ "@deepseek-ai/dsh-session-reference": "^0.1.7-alpha.1",
145
+ "@deepseek-ai/dsh-session-stats": "^0.1.7-alpha.1",
146
+ "@deepseek-ai/dsh-terminal": "^0.1.7-alpha.1",
147
+ "@deepseek-ai/dsh-terminal-bash": "^0.1.7-alpha.1",
148
+ "@deepseek-ai/dsh-tool-ask-user": "^0.1.7-alpha.1",
149
+ "@deepseek-ai/dsh-subprocess": "^0.1.7-alpha.1",
150
+ "@deepseek-ai/dsh-tool-bash-persistent": "^0.1.7-alpha.1",
151
+ "@deepseek-ai/dsh-tool-cordis": "^0.1.7-alpha.1",
152
+ "@deepseek-ai/dsh-tool-fs-search": "^0.1.7-alpha.1",
153
+ "@deepseek-ai/dsh-tool-bash": "^0.1.7-alpha.1",
154
+ "@deepseek-ai/dsh-tool-goal": "^0.1.7-alpha.1",
155
+ "@deepseek-ai/dsh-tool-jobs": "^0.1.7-alpha.1",
156
+ "@deepseek-ai/dsh-tool-present": "^0.1.7-alpha.1",
157
+ "@deepseek-ai/dsh-tool-pwsh": "^0.1.7-alpha.1",
158
+ "@deepseek-ai/dsh-tool-fs": "^0.1.7-alpha.1",
159
+ "@deepseek-ai/dsh-tool-pwsh-persistent": "^0.1.7-alpha.1",
160
+ "@deepseek-ai/dsh-tool-ralph": "^0.1.7-alpha.1",
161
+ "@deepseek-ai/dsh-tool-skill": "^0.1.7-alpha.1",
162
+ "@deepseek-ai/dsh-skill-filesystem": "^0.1.7-alpha.1",
163
+ "@deepseek-ai/dsh-tool-subagent": "^0.1.7-alpha.1",
164
+ "@deepseek-ai/dsh-session-turn-outline": "^0.1.7-alpha.1",
165
+ "@deepseek-ai/dsh-tool-todo": "^0.1.7-alpha.1",
166
+ "@deepseek-ai/dsh-tool-web": "^0.1.7-alpha.1",
167
+ "@deepseek-ai/dsh-tool-workflow": "^0.1.7-alpha.1",
168
+ "@deepseek-ai/dsh-web-frontend": "^0.1.7-alpha.1",
169
+ "@deepseek-ai/dsh-workflow-ptc": "^0.1.7-alpha.1",
170
+ "@deepseek-ai/dsh-workspace": "^0.1.7-alpha.1",
171
+ "@deepseek-ai/dsh-workspace-changes": "^0.1.7-alpha.1",
172
+ "@deepseek-ai/dsh-api-account-controller": "^0.1.7-alpha.1",
173
+ "@deepseek-ai/dsh-client-ui-settings-account": "^0.1.7-alpha.1",
174
+ "@deepseek-ai/schemastery": "^3.18.3",
175
+ "@deepseek-ai/dsh-tool-subagent-control": "^0.1.7-alpha.1"
124
176
  },
125
177
  "peerDependencies": {
126
- "@deepseek-ai/cordis": "^4.0.2",
127
- "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
128
- "@deepseek-ai/dsh-shell-env": "^0.1.6-alpha.1",
129
- "@deepseek-ai/dsh-system-prompt": "^0.1.6-alpha.1"
178
+ "@deepseek-ai/cordis": "^4.0.3",
179
+ "@deepseek-ai/cordis-plugin-loader": "^1.0.4",
180
+ "@deepseek-ai/dsh-shell-env": "^0.1.7-alpha.1",
181
+ "@deepseek-ai/dsh-system-prompt": "^0.1.7-alpha.1"
130
182
  },
131
183
  "devDependencies": {
132
- "@deepseek-ai/cordis": "^4.0.2",
133
- "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
134
- "@deepseek-ai/dsh-system-prompt": "^0.1.6-alpha.1",
135
- "@deepseek-ai/dsh-shell-env": "^0.1.6-alpha.1"
184
+ "@deepseek-ai/libreoffice-kit": "0.0.1",
185
+ "@deepseek-ai/cordis": "^4.0.3",
186
+ "@deepseek-ai/cordis-plugin-include": "^1.0.8",
187
+ "@deepseek-ai/cordis-plugin-loader": "^1.0.4",
188
+ "@deepseek-ai/dsh-fs": "^0.1.7-alpha.1",
189
+ "@deepseek-ai/dsh-fs-local": "^0.1.7-alpha.1",
190
+ "@deepseek-ai/dsh-sandbox-policy": "^0.1.7-alpha.1",
191
+ "@deepseek-ai/dsh-session": "^0.1.7-alpha.1",
192
+ "@deepseek-ai/dsh-session-projection": "^0.1.7-alpha.1",
193
+ "@deepseek-ai/dsh-system-prompt": "^0.1.7-alpha.1",
194
+ "@deepseek-ai/dsh-typert-registry": "^0.1.7-alpha.1",
195
+ "@deepseek-ai/dsh-shell-env": "^0.1.7-alpha.1"
136
196
  }
137
197
  }
@@ -0,0 +1,154 @@
1
+ # Agent preset cordis: one `@deepseek-ai/dsh-agent-preset` declaration inserted
2
+ # after the web patch. Edits saved from the Web editor override this row's
3
+ # `config.plugins` by id from the profile patch.
4
+ - insert:
5
+ - id: preset-cordis
6
+ name: '@deepseek-ai/dsh-agent-preset'
7
+ config:
8
+ id: cordis
9
+ order: 4
10
+ plugins:
11
+ # Same persona as `standard`: tool descriptions and the skill catalog carry
12
+ # the operating detail, and the skills own the preset-authoring rules.
13
+ - id: persona
14
+ name: '@deepseek-ai/dsh-persona'
15
+ config:
16
+ suffix: Your working directory is {{cwd}}.
17
+ prefix: >-
18
+ You are a coding agent powered by the {{model}} model.
19
+ - id: agent-instructions
20
+ name: '@deepseek-ai/dsh-agent-instructions'
21
+ config:
22
+ maxBytes: 65536
23
+ - id: tool-bash
24
+ name: '@deepseek-ai/dsh-tool-bash'
25
+ disabled: !!js process.platform === 'win32'
26
+ - id: tool-pwsh
27
+ name: '@deepseek-ai/dsh-tool-pwsh'
28
+ disabled: !!js process.platform !== 'win32'
29
+ - id: tool-fs
30
+ name: '@deepseek-ai/dsh-tool-fs'
31
+ - id: tool-fs-search
32
+ name: '@deepseek-ai/dsh-tool-fs-search'
33
+ config:
34
+ sampleOverCapGlobResults: false
35
+ - id: tool-jobs
36
+ name: '@deepseek-ai/dsh-tool-jobs'
37
+ - id: command-goal
38
+ name: '@deepseek-ai/dsh-command-goal'
39
+ - id: tool-goal
40
+ name: '@deepseek-ai/dsh-tool-goal'
41
+ - id: planning
42
+ name: cordis:group
43
+ group: true
44
+ isolate:
45
+ planMode: true
46
+ config:
47
+ - id: plan-mode
48
+ name: '@deepseek-ai/dsh-plan-mode'
49
+ config:
50
+ section: |
51
+ You are in plan mode. Stay in plan mode until exit_plan_mode succeeds or the user switches the session mode. Imperative language to implement changes means plan the implementation, not execute it. A user's conversational agreement — including an answer confirming something you asked — approves nothing and does not end plan mode; fold the confirmed decision into the plan and submit it through exit_plan_mode.
52
+
53
+ Explore first. Use non-mutating reads, searches, static analysis, and checks to ground the plan in the actual repository. Do not edit or write files, change configuration, run formatters or code generation that rewrites tracked files, commit, or otherwise carry out the plan. Prefer existing functions and patterns over new machinery.
54
+
55
+ The tool catalog stays the same across modes for request-cache stability. These plan-mode rules override any later tool description or guidance that suggests using mutation tools; those tools remain listed to keep the tool catalog unchanged. Do not use todo_write to track this planning phase: it tracks implementation after an approved plan, while the plan itself belongs in exit_plan_mode.
56
+
57
+ Resolve discoverable facts by inspection. Use ask_user_question only for user-owned choices or material ambiguity that inspection cannot answer. Do not ask the user where code lives or how current behavior works when you can find out.
58
+
59
+ Make the plan decision-complete: state the goal and success criteria; group implementation changes by subsystem; identify public API, schema, and data-flow changes; cover edge cases, failure modes, tests, acceptance criteria, and explicit assumptions. Keep it concise enough to review but detailed enough that another engineer can implement it without making design decisions.
60
+
61
+ When ready, call exit_plan_mode with the complete plan markdown, starting with a # title. Make exit_plan_mode the only and final tool call in that assistant response: it presents the plan for approval, and implementation begins only in a later step after approval. Do not paste the final plan as a plain reply or ask "should I proceed?" through prose or ask_user_question. If review rejects it, incorporate the feedback and present again. If the review channel is unavailable or aborted, stay in plan mode and ask the user to switch modes manually; do not proceed with implementation.
62
+ - id: compaction
63
+ name: cordis:group
64
+ group: true
65
+ isolate:
66
+ compaction: true
67
+ toolResultPruner: true
68
+ config:
69
+ - id: compaction-basic
70
+ name: '@deepseek-ai/dsh-compaction-basic'
71
+ - id: command-compact
72
+ name: '@deepseek-ai/dsh-command-compact'
73
+ - id: tool-result-pruner
74
+ name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
75
+ config:
76
+ thresholdChars: 8192
77
+ headChars: 4096
78
+ tailChars: 1024
79
+ - id: delegation
80
+ name: cordis:group
81
+ group: true
82
+ isolate:
83
+ workflowEngine: true
84
+ config:
85
+ - id: tool-subagent-control
86
+ name: '@deepseek-ai/dsh-tool-subagent-control'
87
+ - id: tool-subagent-list-agents
88
+ name: '@deepseek-ai/dsh-tool-subagent-control/list-agents'
89
+ - id: tool-subagent
90
+ name: '@deepseek-ai/dsh-tool-subagent'
91
+ config:
92
+ provider: spawn
93
+ toolName: subagent
94
+ modelSelectionSettings: true
95
+ backgroundMode: continuable
96
+ - id: tool-subagent-fork
97
+ name: '@deepseek-ai/dsh-tool-subagent'
98
+ config:
99
+ provider: fork
100
+ toolName: subagent_fork
101
+ backgroundMode: continuable
102
+ - id: tool-subagent-codex
103
+ name: '@deepseek-ai/dsh-tool-subagent'
104
+ disabled: true
105
+ config:
106
+ provider: codex
107
+ toolName: subagent_codex
108
+ backgroundMode: one-shot
109
+ maxDepth: provider-managed
110
+ - id: tool-subagent-claude-code
111
+ name: '@deepseek-ai/dsh-tool-subagent'
112
+ disabled: true
113
+ config:
114
+ provider: claude-code
115
+ toolName: subagent_claude_code
116
+ backgroundMode: one-shot
117
+ maxDepth: provider-managed
118
+ - id: workflow-ptc
119
+ name: '@deepseek-ai/dsh-workflow-ptc'
120
+ config:
121
+ provider: spawn
122
+ - id: tool-workflow
123
+ name: '@deepseek-ai/dsh-tool-workflow'
124
+ - id: tool-ralph
125
+ name: '@deepseek-ai/dsh-tool-ralph'
126
+ disabled: true
127
+ config:
128
+ subagentProvider: spawn
129
+ maxRounds: 64
130
+ - id: tool-ask-user
131
+ name: '@deepseek-ai/dsh-tool-ask-user'
132
+ - id: tool-todo
133
+ name: '@deepseek-ai/dsh-tool-todo'
134
+ config:
135
+ allowParallelInProgress: true
136
+ - id: tool-web
137
+ name: '@deepseek-ai/dsh-tool-web'
138
+ config:
139
+ fetch: true
140
+ searchTimeoutMs: 60000
141
+ - id: tool-cordis
142
+ name: '@deepseek-ai/dsh-tool-cordis'
143
+ - id: skill-filesystem
144
+ name: '@deepseek-ai/dsh-skill-filesystem'
145
+ config:
146
+ customSkillDirs:
147
+ - !!js process.getBuiltinModule('node:path').join(process.getBuiltinModule('node:path').dirname(process.getBuiltinModule('node:module').createRequire(baseUrl).resolve('@deepseek-ai/dsh-agent-preset/package.json')), 'skills')
148
+ - id: tool-skill
149
+ name: '@deepseek-ai/dsh-tool-skill'
150
+ - id: present
151
+ name: '@deepseek-ai/dsh-tool-present'
152
+ - id: tool-plugin-manager
153
+ name: '@deepseek-ai/dsh-plugin-manager/tools'
154
+ disabled: !!js "!ctx.get('profileContext')"
@@ -0,0 +1,61 @@
1
+ # Agent preset minimal: one `@deepseek-ai/dsh-agent-preset` declaration inserted
2
+ # after the web patch. Edits saved from the Web editor override this row's
3
+ # `config.plugins` by id from the profile patch.
4
+ - insert:
5
+ - id: preset-minimal
6
+ name: '@deepseek-ai/dsh-agent-preset'
7
+ config:
8
+ id: minimal
9
+ order: 3
10
+ plugins:
11
+ - id: persona
12
+ name: '@deepseek-ai/dsh-persona'
13
+ config:
14
+ prefix: You are a helpful software engineer assistant.
15
+ complete: true
16
+ includeRuntimeContext: false
17
+ - id: persistent-shell
18
+ name: cordis:group
19
+ group: true
20
+ isolate:
21
+ terminals: true
22
+ config:
23
+ - id: pty
24
+ name: '@deepseek-ai/dsh-terminal'
25
+ - id: terminal-bash
26
+ name: '@deepseek-ai/dsh-terminal-bash'
27
+ disabled: !!js process.platform === 'win32'
28
+ config:
29
+ timeoutMs: 300000
30
+ - id: persistent-bash
31
+ name: '@deepseek-ai/dsh-tool-bash-persistent'
32
+ disabled: !!js process.platform === 'win32'
33
+ config:
34
+ timeoutMs: 300000
35
+ description: |-
36
+ Run commands in a bash shell
37
+ * When invoking this tool, the contents of the "command" parameter does NOT need to be XML-escaped.
38
+ * Network access depends on the task environment. Prefer configured mirrors/proxies when they are available.
39
+ * State is persistent across command calls and discussions with the user.
40
+ * To inspect a particular line range of a file, e.g. lines 10-25, try 'sed -n 10,25p /path/to/the/file'.
41
+ * Please avoid commands that may produce a very large amount of output.
42
+ * Please run long lived commands in the background, e.g. 'sleep 10 &' or start a server in the background.
43
+ - id: terminal-pwsh
44
+ name: '@deepseek-ai/dsh-terminal-bash'
45
+ disabled: !!js process.platform !== 'win32'
46
+ config:
47
+ shellDialect: pwsh
48
+ timeoutMs: 300000
49
+ - id: persistent-pwsh
50
+ name: '@deepseek-ai/dsh-tool-pwsh-persistent'
51
+ disabled: !!js process.platform !== 'win32'
52
+ config:
53
+ timeoutMs: 300000
54
+ description: |-
55
+ Run commands in a PowerShell shell
56
+ * When invoking this tool, the contents of the "command" parameter does NOT need to be XML-escaped.
57
+ * You don't have access to the internet via this tool.
58
+ * State is persistent across command calls and discussions with the user.
59
+ * Use native Windows paths (C:\...) and $env:NAME variables; this is PowerShell, not bash.
60
+ * Please avoid commands that may produce a very large amount of output.
61
+ * Please run long lived commands in the background, e.g. 'Start-Job' or start a server with Start-Process.
@@ -0,0 +1,152 @@
1
+ # Agent preset ptc: one `@deepseek-ai/dsh-agent-preset` declaration inserted
2
+ # after the web patch. Edits saved from the Web editor override this row's
3
+ # `config.plugins` by id from the profile patch.
4
+ - insert:
5
+ - id: preset-ptc
6
+ name: '@deepseek-ai/dsh-agent-preset'
7
+ config:
8
+ id: ptc
9
+ order: 2
10
+ plugins:
11
+ - id: persona
12
+ name: '@deepseek-ai/dsh-persona'
13
+ config:
14
+ suffix: Your working directory is {{cwd}}.
15
+ prefix: You are a coding agent powered by the {{model}} model.
16
+ - id: agent-instructions
17
+ name: '@deepseek-ai/dsh-agent-instructions'
18
+ config:
19
+ maxBytes: 65536
20
+ - id: tool-bash
21
+ name: '@deepseek-ai/dsh-tool-bash'
22
+ disabled: !!js process.platform === 'win32'
23
+ - id: tool-pwsh
24
+ name: '@deepseek-ai/dsh-tool-pwsh'
25
+ disabled: !!js process.platform !== 'win32'
26
+ - id: tool-fs
27
+ name: '@deepseek-ai/dsh-tool-fs'
28
+ - id: tool-fs-search
29
+ name: '@deepseek-ai/dsh-tool-fs-search'
30
+ config:
31
+ sampleOverCapGlobResults: false
32
+ - id: tool-jobs
33
+ name: '@deepseek-ai/dsh-tool-jobs'
34
+ - id: skill-filesystem
35
+ name: '@deepseek-ai/dsh-skill-filesystem'
36
+ - id: tool-skill
37
+ name: '@deepseek-ai/dsh-tool-skill'
38
+ - id: command-goal
39
+ name: '@deepseek-ai/dsh-command-goal'
40
+ - id: tool-goal
41
+ name: '@deepseek-ai/dsh-tool-goal'
42
+ - id: planning
43
+ name: cordis:group
44
+ group: true
45
+ isolate:
46
+ planMode: true
47
+ config:
48
+ - id: plan-mode
49
+ name: '@deepseek-ai/dsh-plan-mode'
50
+ config:
51
+ section: |
52
+ You are in plan mode. Stay in plan mode until exit_plan_mode succeeds or the user switches the session mode. Imperative language to implement changes means plan the implementation, not execute it. A user's conversational agreement — including an answer confirming something you asked — approves nothing and does not end plan mode; fold the confirmed decision into the plan and submit it through exit_plan_mode.
53
+
54
+ Explore first. Use non-mutating reads, searches, static analysis, and checks to ground the plan in the actual repository. Do not edit or write files, change configuration, run formatters or code generation that rewrites tracked files, commit, or otherwise carry out the plan. Prefer existing functions and patterns over new machinery.
55
+
56
+ The tool catalog stays the same across modes for request-cache stability. These plan-mode rules override any later tool description or guidance that suggests using mutation tools; those tools remain listed to keep the tool catalog unchanged. Do not use todo_write to track this planning phase: it tracks implementation after an approved plan, while the plan itself belongs in exit_plan_mode.
57
+
58
+ Resolve discoverable facts by inspection. Use ask_user_question only for user-owned choices or material ambiguity that inspection cannot answer. Do not ask the user where code lives or how current behavior works when you can find out.
59
+
60
+ Make the plan decision-complete: state the goal and success criteria; group implementation changes by subsystem; identify public API, schema, and data-flow changes; cover edge cases, failure modes, tests, acceptance criteria, and explicit assumptions. Keep it concise enough to review but detailed enough that another engineer can implement it without making design decisions.
61
+
62
+ When ready, call exit_plan_mode with the complete plan markdown, starting with a # title. Make exit_plan_mode the only and final tool call in that assistant response: it presents the plan for approval, and implementation begins only in a later step after approval. Do not paste the final plan as a plain reply or ask "should I proceed?" through prose or ask_user_question. If review rejects it, incorporate the feedback and present again. If the review channel is unavailable or aborted, stay in plan mode and ask the user to switch modes manually; do not proceed with implementation.
63
+ - id: compaction
64
+ name: cordis:group
65
+ group: true
66
+ isolate:
67
+ compaction: true
68
+ toolResultPruner: true
69
+ config:
70
+ - id: compaction-basic
71
+ name: '@deepseek-ai/dsh-compaction-basic'
72
+ - id: command-compact
73
+ name: '@deepseek-ai/dsh-command-compact'
74
+ - id: tool-result-pruner
75
+ name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
76
+ config:
77
+ thresholdChars: 8192
78
+ headChars: 4096
79
+ tailChars: 1024
80
+ - id: delegation
81
+ name: cordis:group
82
+ group: true
83
+ isolate:
84
+ workflowEngine: true
85
+ config:
86
+ - id: tool-subagent-control
87
+ name: '@deepseek-ai/dsh-tool-subagent-control'
88
+ - id: tool-subagent-list-agents
89
+ name: '@deepseek-ai/dsh-tool-subagent-control/list-agents'
90
+ - id: tool-subagent
91
+ name: '@deepseek-ai/dsh-tool-subagent'
92
+ config:
93
+ provider: spawn
94
+ toolName: subagent
95
+ modelSelectionSettings: true
96
+ backgroundMode: continuable
97
+ - id: tool-subagent-fork
98
+ name: '@deepseek-ai/dsh-tool-subagent'
99
+ config:
100
+ provider: fork
101
+ toolName: subagent_fork
102
+ backgroundMode: continuable
103
+ - id: tool-subagent-codex
104
+ name: '@deepseek-ai/dsh-tool-subagent'
105
+ disabled: true
106
+ config:
107
+ provider: codex
108
+ toolName: subagent_codex
109
+ backgroundMode: one-shot
110
+ maxDepth: provider-managed
111
+ - id: tool-subagent-claude-code
112
+ name: '@deepseek-ai/dsh-tool-subagent'
113
+ disabled: true
114
+ config:
115
+ provider: claude-code
116
+ toolName: subagent_claude_code
117
+ backgroundMode: one-shot
118
+ maxDepth: provider-managed
119
+ - id: workflow-ptc
120
+ name: '@deepseek-ai/dsh-workflow-ptc'
121
+ disabled: true
122
+ config:
123
+ provider: spawn
124
+ - id: tool-workflow
125
+ name: '@deepseek-ai/dsh-tool-workflow'
126
+ disabled: true
127
+ - id: tool-ralph
128
+ name: '@deepseek-ai/dsh-tool-ralph'
129
+ disabled: true
130
+ config:
131
+ subagentProvider: spawn
132
+ maxRounds: 64
133
+ - id: tool-ask-user
134
+ name: '@deepseek-ai/dsh-tool-ask-user'
135
+ - id: tool-todo
136
+ name: '@deepseek-ai/dsh-tool-todo'
137
+ config:
138
+ allowParallelInProgress: true
139
+ - id: tool-web
140
+ name: '@deepseek-ai/dsh-tool-web'
141
+ config:
142
+ fetch: true
143
+ searchTimeoutMs: 60000
144
+ - id: tool-presentation
145
+ name: '@deepseek-ai/dsh-agent-tool-presentation'
146
+ config:
147
+ mode: ptc
148
+ - id: present
149
+ name: '@deepseek-ai/dsh-tool-present'
150
+ - id: tool-plugin-manager
151
+ name: '@deepseek-ai/dsh-plugin-manager/tools'
152
+ disabled: true
@@ -0,0 +1,146 @@
1
+ # Agent preset standard: one `@deepseek-ai/dsh-agent-preset` declaration inserted
2
+ # after the web patch. Edits saved from the Web editor override this row's
3
+ # `config.plugins` by id from the profile patch.
4
+ - insert:
5
+ - id: preset-standard
6
+ name: '@deepseek-ai/dsh-agent-preset'
7
+ config:
8
+ id: standard
9
+ order: 1
10
+ plugins:
11
+ - id: persona
12
+ name: '@deepseek-ai/dsh-persona'
13
+ config:
14
+ suffix: Your working directory is {{cwd}}.
15
+ prefix: You are a coding agent powered by the {{model}} model.
16
+ - id: agent-instructions
17
+ name: '@deepseek-ai/dsh-agent-instructions'
18
+ config:
19
+ maxBytes: 65536
20
+ - id: tool-bash
21
+ name: '@deepseek-ai/dsh-tool-bash'
22
+ disabled: !!js process.platform === 'win32'
23
+ - id: tool-pwsh
24
+ name: '@deepseek-ai/dsh-tool-pwsh'
25
+ disabled: !!js process.platform !== 'win32'
26
+ - id: tool-fs
27
+ name: '@deepseek-ai/dsh-tool-fs'
28
+ - id: tool-fs-search
29
+ name: '@deepseek-ai/dsh-tool-fs-search'
30
+ config:
31
+ sampleOverCapGlobResults: false
32
+ - id: tool-jobs
33
+ name: '@deepseek-ai/dsh-tool-jobs'
34
+ - id: skill-filesystem
35
+ name: '@deepseek-ai/dsh-skill-filesystem'
36
+ - id: tool-skill
37
+ name: '@deepseek-ai/dsh-tool-skill'
38
+ - id: command-goal
39
+ name: '@deepseek-ai/dsh-command-goal'
40
+ - id: tool-goal
41
+ name: '@deepseek-ai/dsh-tool-goal'
42
+ - id: planning
43
+ name: cordis:group
44
+ group: true
45
+ isolate:
46
+ planMode: true
47
+ config:
48
+ - id: plan-mode
49
+ name: '@deepseek-ai/dsh-plan-mode'
50
+ config:
51
+ section: |
52
+ You are in plan mode. Stay in plan mode until exit_plan_mode succeeds or the user switches the session mode. Imperative language to implement changes means plan the implementation, not execute it. A user's conversational agreement — including an answer confirming something you asked — approves nothing and does not end plan mode; fold the confirmed decision into the plan and submit it through exit_plan_mode.
53
+
54
+ Explore first. Use non-mutating reads, searches, static analysis, and checks to ground the plan in the actual repository. Do not edit or write files, change configuration, run formatters or code generation that rewrites tracked files, commit, or otherwise carry out the plan. Prefer existing functions and patterns over new machinery.
55
+
56
+ The tool catalog stays the same across modes for request-cache stability. These plan-mode rules override any later tool description or guidance that suggests using mutation tools; those tools remain listed to keep the tool catalog unchanged. Do not use todo_write to track this planning phase: it tracks implementation after an approved plan, while the plan itself belongs in exit_plan_mode.
57
+
58
+ Resolve discoverable facts by inspection. Use ask_user_question only for user-owned choices or material ambiguity that inspection cannot answer. Do not ask the user where code lives or how current behavior works when you can find out.
59
+
60
+ Make the plan decision-complete: state the goal and success criteria; group implementation changes by subsystem; identify public API, schema, and data-flow changes; cover edge cases, failure modes, tests, acceptance criteria, and explicit assumptions. Keep it concise enough to review but detailed enough that another engineer can implement it without making design decisions.
61
+
62
+ When ready, call exit_plan_mode with the complete plan markdown, starting with a # title. Make exit_plan_mode the only and final tool call in that assistant response: it presents the plan for approval, and implementation begins only in a later step after approval. Do not paste the final plan as a plain reply or ask "should I proceed?" through prose or ask_user_question. If review rejects it, incorporate the feedback and present again. If the review channel is unavailable or aborted, stay in plan mode and ask the user to switch modes manually; do not proceed with implementation.
63
+ - id: compaction
64
+ name: cordis:group
65
+ group: true
66
+ isolate:
67
+ compaction: true
68
+ toolResultPruner: true
69
+ config:
70
+ - id: compaction-basic
71
+ name: '@deepseek-ai/dsh-compaction-basic'
72
+ - id: command-compact
73
+ name: '@deepseek-ai/dsh-command-compact'
74
+ - id: tool-result-pruner
75
+ name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
76
+ config:
77
+ thresholdChars: 8192
78
+ headChars: 4096
79
+ tailChars: 1024
80
+ - id: delegation
81
+ name: cordis:group
82
+ group: true
83
+ isolate:
84
+ workflowEngine: true
85
+ config:
86
+ - id: tool-subagent-control
87
+ name: '@deepseek-ai/dsh-tool-subagent-control'
88
+ - id: tool-subagent-list-agents
89
+ name: '@deepseek-ai/dsh-tool-subagent-control/list-agents'
90
+ - id: tool-subagent
91
+ name: '@deepseek-ai/dsh-tool-subagent'
92
+ config:
93
+ provider: spawn
94
+ toolName: subagent
95
+ modelSelectionSettings: true
96
+ backgroundMode: continuable
97
+ - id: tool-subagent-fork
98
+ name: '@deepseek-ai/dsh-tool-subagent'
99
+ config:
100
+ provider: fork
101
+ toolName: subagent_fork
102
+ backgroundMode: continuable
103
+ - id: tool-subagent-codex
104
+ name: '@deepseek-ai/dsh-tool-subagent'
105
+ disabled: true
106
+ config:
107
+ provider: codex
108
+ toolName: subagent_codex
109
+ backgroundMode: one-shot
110
+ maxDepth: provider-managed
111
+ - id: tool-subagent-claude-code
112
+ name: '@deepseek-ai/dsh-tool-subagent'
113
+ disabled: true
114
+ config:
115
+ provider: claude-code
116
+ toolName: subagent_claude_code
117
+ backgroundMode: one-shot
118
+ maxDepth: provider-managed
119
+ - id: workflow-ptc
120
+ name: '@deepseek-ai/dsh-workflow-ptc'
121
+ config:
122
+ provider: spawn
123
+ - id: tool-workflow
124
+ name: '@deepseek-ai/dsh-tool-workflow'
125
+ - id: tool-ralph
126
+ name: '@deepseek-ai/dsh-tool-ralph'
127
+ disabled: true
128
+ config:
129
+ subagentProvider: spawn
130
+ maxRounds: 64
131
+ - id: tool-ask-user
132
+ name: '@deepseek-ai/dsh-tool-ask-user'
133
+ - id: tool-todo
134
+ name: '@deepseek-ai/dsh-tool-todo'
135
+ config:
136
+ allowParallelInProgress: true
137
+ - id: tool-web
138
+ name: '@deepseek-ai/dsh-tool-web'
139
+ config:
140
+ fetch: true
141
+ searchTimeoutMs: 60000
142
+ - id: present
143
+ name: '@deepseek-ai/dsh-tool-present'
144
+ - id: tool-plugin-manager
145
+ name: '@deepseek-ai/dsh-plugin-manager/tools'
146
+ disabled: true