@stardustlc/dsh-suite 0.2.27 → 0.2.28

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/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  [返回简介](README.md) · [使用说明](docs/USAGE.md) · [验证记录](docs/VALIDATION.md)
4
4
 
5
+ ## 0.2.28(2026-10-17)
6
+
7
+ - 依赖 pin 跟随 `@stardustlc/dsh-dream` **0.9.1**(派生索引紧凑序列化,−32% 体积)与 `@stardustlc/dsh-docker` **0.4.2**(补 `publishConfig.access`)。
8
+ - 其余 16 个组件版本未变;`minimumReleaseAgeExclude` 与 pin 逐条对齐。
5
9
  ## 0.2.27 (2026-10-17)
6
10
 
7
11
  - 同步日历 0.10.4、邮件 0.16.3 与 RSS 0.6.3:修复标签与输入框关联、快速打开空连接表单、服务商提示误脱敏及英文窄窗口布局。
package/README.en.md CHANGED
@@ -34,7 +34,7 @@ Install the suite when you need the full set, then configure the accounts and to
34
34
 
35
35
  Enable only the suite bundle in the profile; it loads the components. Each component still has its own account, executable and network requirements.
36
36
 
37
- This version pins Calendar 0.10.4, Email 0.16.3 and RSS 0.6.3, fixing form labels, setup guidance and the narrow-window English layout. See the [per-plugin validation record](docs/validation-2026-10-17-human.md) for basic interactions across 15 plugins, skill toggling in one saved session and deferred external services on official DSH 0.2.1-alpha.5. Minimal PTC 0.5.6's tool SDK fix remains documented in the [execution record](docs/validation-2026-10-17-alpha5.md).
37
+ This version pins Calendar 0.10.4, Email 0.16.3 and RSS 0.6.3, fixing form labels, setup guidance and the narrow-window English layout. The existing versions are rechecked on official DSH **0.2.1-rc.1** in the [new host record](docs/validation-2026-10-17-rc1.md). Earlier per-plugin fixes and scope remain in the [interaction record](docs/validation-2026-10-17-human.md). Minimal PTC 0.5.6's tool SDK fix remains documented in the [execution record](docs/validation-2026-10-17-alpha5.md).
38
38
 
39
39
  Detailed configuration, tool arguments and troubleshooting are in the [usage guide](docs/USAGE.en.md). For standalone development, follow the Node requirement in [package.json](package.json).
40
40
 
package/README.md CHANGED
@@ -34,7 +34,7 @@ dsh plugin --profile desktop add @stardustlc/dsh-suite
34
34
 
35
35
  profile 只启用 Suite 这一层,由它加载组件。组件的账号、外部程序与网络要求仍各自适用。
36
36
 
37
- 本版同步日历 0.10.4、邮件 0.16.3 与 RSS 0.6.3,修复表单标签、配置提示和英文窄窗口布局。官方 DSH 0.2.1-alpha.5 上的 15 个插件基础操作、同会话技能启停,以及暂缓的外部服务范围见 [逐插件验收](docs/validation-2026-10-17-human.md)。极简 PTC 0.5.6 的工具 SDK 修复见 [执行记录](docs/validation-2026-10-17-alpha5.md)。
37
+ 本版同步日历 0.10.4、邮件 0.16.3 与 RSS 0.6.3,修复表单标签、配置提示和英文窄窗口布局。现有版本在官方 DSH **0.2.1-rc.1** 的兼容复查见 [新版宿主记录](docs/validation-2026-10-17-rc1.md);之前的逐插件修复和范围见 [基础操作记录](docs/validation-2026-10-17-human.md)。极简 PTC 0.5.6 的工具 SDK 修复见 [执行记录](docs/validation-2026-10-17-alpha5.md)。
38
38
 
39
39
  详细配置、工具参数与排错见[使用说明](docs/USAGE.md)。从源码独立开发时,Node 要求以 [package.json](package.json) 为准。
40
40
 
@@ -2,6 +2,10 @@
2
2
 
3
3
  本页整理原 README 的历史验证说明,保留当时的版本、日期与范围。自动测试、启动检查、浏览器操作和真实服务验收分别记录,不能相互替代。更详细的版本验收文件仍保留在仓库中。
4
4
 
5
+ ## DSH 0.2.1-rc.1 复查(2026-10-17)
6
+
7
+ 对现有已发布组件复查官方 rc.1。与 alpha.5 的完整源码差异只包含版本号更新;没有为宿主版本号变化给独立插件增加空版本。公开安装、预设执行、浏览器操作及未测试范围见 [rc.1 记录](validation-2026-10-17-rc1.md)。
8
+
5
9
  ## 0.2.27(2026-10-17)
6
10
 
7
11
  同步日历、邮件及 RSS 的实际操作修复,并补齐 15 个插件在官方 DSH 0.2.1-alpha.5 的基础交互记录;同一已保存会话内的技能启停无需刷新页面。浏览器、合成工具选择、本机 CalDAV/SMTP、真实账号与原生桌面的不同范围见 [逐插件记录](validation-2026-10-17-human.md)。
@@ -0,0 +1,55 @@
1
+ # DSH 0.2.1-rc.1 兼容复查
2
+
3
+ 宿主使用公开 npm `@deepseek-ai/dsh@0.2.1-rc.1`,对应官方标签 [`dsh-v0.2.1-rc.1`](https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.2.1-rc.1)、提交 `1600d8a1e140dcde43a1a0941940a0480712c011`。环境为 Windows、Node 24,使用独立 profile 和系统 Chrome 无头浏览器;没有切换用户的前台窗口。
4
+
5
+ ## 变化与版本决定
6
+
7
+ 与已验收的 alpha.5 比较,完整官方差异包含 355 个 `package.json`,所有修改都是 `version` 字段。没有应用代码或插件接口变更。现有组件无需为这次宿主更新修改业务代码,也没有新增 npm 版本。
8
+
9
+ Suite 保持 **0.2.27**,日历 **0.10.4**、邮件 **0.16.3**、RSS **0.6.3**、极简 PTC **0.5.6** 及其余组件的精确版本不变。此次仓库变更只补充兼容记录,并让全新安装验收脚本在隔离 profile 中明确使用公开 npm 源,避免本机镜像同步延迟影响判断;用户的全局配置不变。
10
+
11
+ ## 分别核验的结果
12
+
13
+ - 19 个包的官方兼容性预检通过;18 个组件的 Windows 自动测试 **1,752 项通过、5 项跳过**。跳过项为 Code Security 的 3 项原生引擎用例、Dream 1 项与 Minimal PTC 1 项,保留原自动测试的跳过记录。
14
+ - 另行使用真实 Windows 检查程序完成 Code Security 工作台操作;这与上述离线测试的跳过记录分别保存。
15
+ - 通过仓库中的官方 CLI 安装验收入口,从公开 npm 全新安装 Suite 及其 18 个传递组件。版本与 19 个包的 tarball 摘要一致;共同加载 **111 个工具、36 个技能**,完整清单、预设 SDK、调度、HTTP 登录交换、未登录拒绝与进程退出通过。
16
+ - 极简 PTC 的实际模型提示词包含当前工具 SDK,模型侧只暴露 `run_code`。函数体模式执行带 TypeScript 类型和工具桥接的代码,返回 42 并显示日志;REPL 模式验证 41 → 42、不同 owner 隔离和释放后清空状态。仅隔离合成会话使用 Full 权限,没有修改用户权限。
17
+ - Suite 自身 **12 项测试通过**。
18
+
19
+ 离线契约宿主仅注册 110 个工具、35 个技能;完整宿主加载额外的调度功能,因此清单数不同。不能将两类数量混用。
20
+
21
+ ## 15 个插件的实际入口
22
+
23
+ | 插件 | 版本 | rc.1 上的基础操作 |
24
+ | --- | --- | --- |
25
+ | Calendar | 0.10.4 | 标签聚焦与输入;本机 CalDAV 建立日程、回读及测试连接;英文表单和 390px 窄窗 |
26
+ | Cite | 0.4.2 | 输入 BibTeX、本地预览与保存、格式切换、下载和无效输入 |
27
+ | Code Security | 0.4.1 | 真实原生引擎、扫描/错误/取消/复查、脱敏证据、SARIF 导出、自动检查事件与中英文窄窗 |
28
+ | Codex Port | 0.3.0 | 发现合成插件、移植预览、实际移植到隔离目录、空筛选 |
29
+ | Dream | 0.9.0 | 搜索、候选审阅、预览/应用项目规则、保留人工内容和回滚 |
30
+ | Email | 0.16.3 | 草稿、附件、预览、明确确认发送、本机 SMTP 唯一回执、禁止重复发送和复制为新草稿 |
31
+ | FFmpeg | 0.5.0 | 本地音频检查、实际裁剪、缺失文件错误 |
32
+ | FlakeFinder | 0.3.5 | 三次执行本地测试并显示结果,拒绝选项形式的非法目标 |
33
+ | HyperFrames | 0.6.0 | 建立竖屏工程、保存、上传音频、未保存保护、归档与恢复 |
34
+ | Minimal PTC | 0.5.6 | 公开包预设挂载、实际 SDK、函数体与 REPL 工具执行 |
35
+ | PPT | 0.10.0 | 21 项页面复制/删除/撤销、最后一页保护、未保存保护、中英文和 390px 操作 |
36
+ | Remotion | 0.5.0 | 建立竖屏工程、保存、上传音频、未保存保护、归档与恢复 |
37
+ | RSS | 0.6.3 | 来源目录搜索、嵌套分类 OPML 预览/导入、改名、导出和英文窄窗 |
38
+ | SQL | 0.4.5 | SQLite 查询、点击允许一次后写入、错误查询 |
39
+ | Voice | 0.3.6 | 音色清单、非法音色错误;不请求远程合成 |
40
+
41
+ 聊天工具使用标明“本地操作验收(合成)”的适配器选择工具,再交给真实宿主执行。此结果不是远程模型自主选择工具的证明。七个工作台另行核对英文和 390px 布局;表单截图在入场动画结束后复查。日历和邮件缺失账号时的 HTTP 400 属于预期业务拒绝,未计为页面崩溃。
42
+
43
+ 同一已保存会话、同一网页文档中,停用 PPT 后技能从 `/` 菜单消失,启用后返回,没有刷新页面。
44
+
45
+ 安全工作台首次脚本在扫描刷新后直接编辑已折叠的设置而超时;复跑又受到此前合成工程选择的影响。最后改用全新公开安装的 profile,并通过正常控件展开设置,保留全部原扫描和错误处理断言。原始失败输出保留,不将脚本修正记成产品修复。
46
+
47
+ ## 未覆盖与暂缓
48
+
49
+ Docker、Slack、钉钉按用户要求暂缓业务验收,三个包未修改或发布。共同加载和原样回归不代表已连接这些服务。
50
+
51
+ 本轮没有操作原生桌面窗口,没有使用真实模型、云日历、邮箱、OAuth、数据库服务器或远程语音账号。视频工作台的工程操作不等于最终 MP4 渲染;RSS 没有重测外部来源或无 VPN 网络。
52
+
53
+ 仓库复查时没有未关闭 PR;仍有 RSS #2、HyperFrames #2、Email #19 三个已有 Issue,没有代替使用者发表或关闭反馈。
54
+
55
+ 本机详细证据位于 `E:/deepseek/output/dsh-rc1-20261017/`:完整上游差异、自动测试、公开安装清单、逐项操作结果、截图、预期错误和脚本重试记录分别保存。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stardustlc/dsh-suite",
3
- "version": "0.2.27",
3
+ "version": "0.2.28",
4
4
  "description": "一次安装 18 个独立 DSH 插件,并统一组合它们的默认配置。",
5
5
  "type": "module",
6
6
  "dsh": {
@@ -50,11 +50,11 @@
50
50
  "node": "^22.19.0 || >=24.0.0"
51
51
  },
52
52
  "dependencies": {
53
- "@stardustlc/dsh-docker": "0.4.1",
54
- "@stardustlc/dsh-dream": "0.9.0",
53
+ "@stardustlc/dsh-docker": "0.4.2",
54
+ "@stardustlc/dsh-dream": "0.9.1",
55
55
  "dsh-calendar": "0.10.4",
56
56
  "dsh-cite": "0.4.2",
57
- "dsh-code-security": "0.4.1",
57
+ "dsh-code-security": "0.4.1",
58
58
  "dsh-codex-port": "0.3.0",
59
59
  "dsh-dingtalk": "0.2.2",
60
60
  "dsh-email": "0.16.3",
@@ -1,130 +1,130 @@
1
- # Harness 0.1.7 declarative preset; generated from the bundled agent composition.
2
- - insert:
3
- - id: preset-ptc-minimal
4
- name: "@deepseek-ai/dsh-agent-preset"
5
- config:
6
- id: ptc-minimal
7
- name: 极简 PTC 模式
8
- description: 简洁提示词、完整插件工具与 PTC 编排;Windows 支持 Git Bash 和持久 PowerShell。
9
- order: 4
10
- plugins:
11
- # The `ptc-minimal` agent preset: the `ptc` (PTC 模式) capabilities with the
12
- # `minimal` (极简模式) prompt.
13
- #
14
- # Everything in `ptc` is here unchanged — full standard capabilities plus the
15
- # PTC tool presentation (`tool-presentation` with `mode: ptc`), where the
16
- # model composes a TypeScript program against a generated SDK and `run_code`
17
- # executes it. What differs is the persona row, taken verbatim from `minimal`:
18
- # a fixed one-line identity plus the Host-generated PTC SDK, marked complete
19
- # with `includeRuntimeContext: false`. Other identity and workspace guidance
20
- # cannot add prompt text, and runtime context snapshots are suppressed.
21
- # The `agent-instructions` row from `ptc` is
22
- # dropped for the same reason — its workspace instruction baselines would add
23
- # user-role text the minimal prompt policy excludes.
24
- #
25
- # This file is an AGENT-PLANE composition. It is mounted under one agent's
26
- # scope context, so every tool it registers belongs to that session alone.
27
- # A service row here MUST sit inside a group carrying an `isolate` realm.
28
-
29
- # ── identity ────────────────────────────────────────────────────────────────
30
-
31
- # The complete prompt keeps the minimal identity and the callable tool SDK.
32
- - id: persona
33
- name: dsh-minimal-ptc/ptc-persona
34
- config:
35
- prefix: You are a helpful software engineer assistant.
36
- complete: true
37
- includeRuntimeContext: false
38
-
39
- # ── shell ───────────────────────────────────────────────────────────────────
40
-
41
- # `shell-env` stays in the HOST composition: `apps/cli/src/web.ts` injects it to
42
- # publish `DSH_WEB_URL`/`DSH_WEB_MODE`. Both shell tools consume the host
43
- # registry from here; their executors are host-plane too.
44
- - id: tool-bash
45
- name: '@deepseek-ai/dsh-tool-bash'
46
- disabled: !!js process.platform === 'win32'
47
-
48
- - id: tool-pwsh
49
- name: '@deepseek-ai/dsh-tool-pwsh'
50
- disabled: true
51
-
52
- # Windows persistent PowerShell PTY stack (rc.1 minimal parity). Replaces the
53
- # one-shot pwsh row on win32; the gitbash group below keeps a stateless bash
54
- # tool beside it. The model-facing tool name remains `pwsh`.
55
- - id: persistent-shell
56
- name: cordis:group
57
- group: true
58
- disabled: !!js process.platform !== 'win32'
59
- isolate:
60
- terminals: true
61
- config:
62
- - id: pty
63
- name: '@deepseek-ai/dsh-terminal'
64
-
65
- - id: terminal-pwsh
66
- name: '@deepseek-ai/dsh-terminal-bash'
67
- disabled: !!js process.platform !== 'win32'
68
- config:
69
- shellDialect: pwsh
70
- timeoutMs: 300000
71
-
72
- - id: persistent-pwsh
73
- name: '@deepseek-ai/dsh-tool-pwsh-persistent'
74
- disabled: !!js process.platform !== 'win32'
75
- config:
76
- timeoutMs: 300000
77
- description: |-
78
- Run commands in a PowerShell shell
79
- * When invoking this tool, the contents of the "command" parameter does NOT need to be XML-escaped.
80
- * Network access depends on the host environment.
81
- * State is persistent across command calls and discussions with the user.
82
- * Use native Windows paths (C:\...) and $env:NAME variables; this is PowerShell, not bash.
83
- * Please avoid commands that may produce a very large amount of output.
84
- * Please run long lived commands in the background, e.g. 'Start-Job' or start a server with Start-Process.
85
-
86
- # Windows Git Bash shell stack. The preset-local executor runs every `bash`
87
- # call through Git for Windows bash, keeping the model-facing tool name and
88
- # stateless semantics identical to the POSIX `tool-bash` row above. Only
89
- # mounted on win32; the POSIX host keeps the official bash runner.
90
- - id: gitbash-shell
91
- name: cordis:group
92
- group: true
93
- disabled: !!js process.platform !== 'win32'
94
- isolate:
95
- shell: true
96
- config:
97
- - id: gitbash-executor
98
- name: dsh-minimal-ptc/gitbash-executor
99
- config:
100
- # 留空:executor 自动探测 GIT_BASH → 常见安装目录 → PATH → 'bash'
101
- # 如需固定路径可显式写 shellPath: 'C:\\Program Files\\Git\\bin\\bash.exe'
102
- timeoutMs: 120000
103
- maxTimeoutMs: 600000
104
- maxOutputBytes: 64000
105
- maxSpillBytes: 67108864
106
- graceMs: 3000
107
-
108
- - id: tool-bash-win
109
- name: '@deepseek-ai/dsh-tool-bash'
110
- config:
111
- enableRunInBackground: false
112
-
113
- # ── filesystem ──────────────────────────────────────────────────────────────
114
-
115
- # Both register into the host `tools` registry and provide nothing, so
116
- # they need no realm. The `fs` service and its policy stay in the host.
117
- - id: tool-fs
118
- name: '@deepseek-ai/dsh-tool-fs'
119
-
120
- - id: tool-fs-search
121
- name: '@deepseek-ai/dsh-tool-fs-search'
122
- config:
123
- sampleOverCapGlobResults: false
124
-
125
- # ── background jobs ────────────────────────────────────────────────────────
126
-
127
- # Only the model-facing controls. The task REGISTRY stays on the host plane.
1
+ # Harness 0.1.7 declarative preset; generated from the bundled agent composition.
2
+ - insert:
3
+ - id: preset-ptc-minimal
4
+ name: "@deepseek-ai/dsh-agent-preset"
5
+ config:
6
+ id: ptc-minimal
7
+ name: 极简 PTC 模式
8
+ description: 简洁提示词、完整插件工具与 PTC 编排;Windows 支持 Git Bash 和持久 PowerShell。
9
+ order: 4
10
+ plugins:
11
+ # The `ptc-minimal` agent preset: the `ptc` (PTC 模式) capabilities with the
12
+ # `minimal` (极简模式) prompt.
13
+ #
14
+ # Everything in `ptc` is here unchanged — full standard capabilities plus the
15
+ # PTC tool presentation (`tool-presentation` with `mode: ptc`), where the
16
+ # model composes a TypeScript program against a generated SDK and `run_code`
17
+ # executes it. What differs is the persona row, taken verbatim from `minimal`:
18
+ # a fixed one-line identity plus the Host-generated PTC SDK, marked complete
19
+ # with `includeRuntimeContext: false`. Other identity and workspace guidance
20
+ # cannot add prompt text, and runtime context snapshots are suppressed.
21
+ # The `agent-instructions` row from `ptc` is
22
+ # dropped for the same reason — its workspace instruction baselines would add
23
+ # user-role text the minimal prompt policy excludes.
24
+ #
25
+ # This file is an AGENT-PLANE composition. It is mounted under one agent's
26
+ # scope context, so every tool it registers belongs to that session alone.
27
+ # A service row here MUST sit inside a group carrying an `isolate` realm.
28
+
29
+ # ── identity ────────────────────────────────────────────────────────────────
30
+
31
+ # The complete prompt keeps the minimal identity and the callable tool SDK.
32
+ - id: persona
33
+ name: dsh-minimal-ptc/ptc-persona
34
+ config:
35
+ prefix: You are a helpful software engineer assistant.
36
+ complete: true
37
+ includeRuntimeContext: false
38
+
39
+ # ── shell ───────────────────────────────────────────────────────────────────
40
+
41
+ # `shell-env` stays in the HOST composition: `apps/cli/src/web.ts` injects it to
42
+ # publish `DSH_WEB_URL`/`DSH_WEB_MODE`. Both shell tools consume the host
43
+ # registry from here; their executors are host-plane too.
44
+ - id: tool-bash
45
+ name: '@deepseek-ai/dsh-tool-bash'
46
+ disabled: !!js process.platform === 'win32'
47
+
48
+ - id: tool-pwsh
49
+ name: '@deepseek-ai/dsh-tool-pwsh'
50
+ disabled: true
51
+
52
+ # Windows persistent PowerShell PTY stack (rc.1 minimal parity). Replaces the
53
+ # one-shot pwsh row on win32; the gitbash group below keeps a stateless bash
54
+ # tool beside it. The model-facing tool name remains `pwsh`.
55
+ - id: persistent-shell
56
+ name: cordis:group
57
+ group: true
58
+ disabled: !!js process.platform !== 'win32'
59
+ isolate:
60
+ terminals: true
61
+ config:
62
+ - id: pty
63
+ name: '@deepseek-ai/dsh-terminal'
64
+
65
+ - id: terminal-pwsh
66
+ name: '@deepseek-ai/dsh-terminal-bash'
67
+ disabled: !!js process.platform !== 'win32'
68
+ config:
69
+ shellDialect: pwsh
70
+ timeoutMs: 300000
71
+
72
+ - id: persistent-pwsh
73
+ name: '@deepseek-ai/dsh-tool-pwsh-persistent'
74
+ disabled: !!js process.platform !== 'win32'
75
+ config:
76
+ timeoutMs: 300000
77
+ description: |-
78
+ Run commands in a PowerShell shell
79
+ * When invoking this tool, the contents of the "command" parameter does NOT need to be XML-escaped.
80
+ * Network access depends on the host environment.
81
+ * State is persistent across command calls and discussions with the user.
82
+ * Use native Windows paths (C:\...) and $env:NAME variables; this is PowerShell, not bash.
83
+ * Please avoid commands that may produce a very large amount of output.
84
+ * Please run long lived commands in the background, e.g. 'Start-Job' or start a server with Start-Process.
85
+
86
+ # Windows Git Bash shell stack. The preset-local executor runs every `bash`
87
+ # call through Git for Windows bash, keeping the model-facing tool name and
88
+ # stateless semantics identical to the POSIX `tool-bash` row above. Only
89
+ # mounted on win32; the POSIX host keeps the official bash runner.
90
+ - id: gitbash-shell
91
+ name: cordis:group
92
+ group: true
93
+ disabled: !!js process.platform !== 'win32'
94
+ isolate:
95
+ shell: true
96
+ config:
97
+ - id: gitbash-executor
98
+ name: dsh-minimal-ptc/gitbash-executor
99
+ config:
100
+ # 留空:executor 自动探测 GIT_BASH → 常见安装目录 → PATH → 'bash'
101
+ # 如需固定路径可显式写 shellPath: 'C:\\Program Files\\Git\\bin\\bash.exe'
102
+ timeoutMs: 120000
103
+ maxTimeoutMs: 600000
104
+ maxOutputBytes: 64000
105
+ maxSpillBytes: 67108864
106
+ graceMs: 3000
107
+
108
+ - id: tool-bash-win
109
+ name: '@deepseek-ai/dsh-tool-bash'
110
+ config:
111
+ enableRunInBackground: false
112
+
113
+ # ── filesystem ──────────────────────────────────────────────────────────────
114
+
115
+ # Both register into the host `tools` registry and provide nothing, so
116
+ # they need no realm. The `fs` service and its policy stay in the host.
117
+ - id: tool-fs
118
+ name: '@deepseek-ai/dsh-tool-fs'
119
+
120
+ - id: tool-fs-search
121
+ name: '@deepseek-ai/dsh-tool-fs-search'
122
+ config:
123
+ sampleOverCapGlobResults: false
124
+
125
+ # ── background jobs ────────────────────────────────────────────────────────
126
+
127
+ # Only the model-facing controls. The task REGISTRY stays on the host plane.
128
128
  - id: tool-jobs
129
129
  name: '@deepseek-ai/dsh-tool-jobs'
130
130
 
@@ -132,180 +132,180 @@
132
132
  # Wait for service activation; do not freeze an early readiness
133
133
  # check into a disabled row while the Host is still booting.
134
134
  name: dsh-minimal-ptc/schedule-tools
135
-
136
- # ── skills ──────────────────────────────────────────────────────────────────
137
-
138
- # The skill REGISTRY lives in the host composition and is layered per scope:
139
- # these rows register into THIS preset's layer of it, so they need no realm.
140
- - id: skill-filesystem
141
- name: '@deepseek-ai/dsh-skill-filesystem'
142
-
143
- - id: tool-skill
144
- name: '@deepseek-ai/dsh-tool-skill'
145
-
146
- # ── goals ───────────────────────────────────────────────────────────────────
147
-
148
- # Only the model-facing tool plus the human command. The goal SERVICE, its
149
- # session driver stay on the host plane.
150
- - id: command-goal
151
- name: '@deepseek-ai/dsh-command-goal'
152
-
153
- - id: tool-goal
154
- name: '@deepseek-ai/dsh-tool-goal'
155
-
156
- # ── plan mode ───────────────────────────────────────────────────────────────
157
-
158
- # Plan state is per-agent by nature, so an entry-local realm is not a
159
- # workaround here — it is the correct lifetime.
160
- - id: planning
161
- name: cordis:group
162
- group: true
163
- isolate:
164
- planMode: true
165
- config:
166
- - id: plan-mode
167
- name: '@deepseek-ai/dsh-plan-mode'
168
- config:
169
- section: |
170
- 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.
171
-
172
- 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.
173
-
174
- 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.
175
-
176
- 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.
177
-
178
- 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.
179
-
180
- 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.
181
-
182
- # ── compaction ──────────────────────────────────────────────────────────────
183
-
184
- # `compaction-basic` reads `toolResultPrune` through `ctx.get`, so the pruner
185
- # must share this realm rather than sit outside it. `tokenMeter` stays HOST-side.
186
- - id: compaction
187
- name: cordis:group
188
- group: true
189
- isolate:
190
- compaction: true
191
- toolResultPruner: true
192
- config:
193
- - id: compaction-basic
194
- name: '@deepseek-ai/dsh-compaction-basic'
195
-
196
- - id: command-compact
197
- name: '@deepseek-ai/dsh-command-compact'
198
-
199
- - id: tool-result-pruner
200
- name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
201
- config:
202
- thresholdChars: 8192
203
- headChars: 4096
204
- tailChars: 1024
205
-
206
- # ── delegation and workflows ────────────────────────────────────────────────
207
-
208
- # The `subagents` registry and its spawn/fork backends live in the HOST
209
- # composition. This preset contributes the delegation TOOLS. `workflows` shares
210
- # one entry-local realm here, and a consumer left outside would resolve a host
211
- # registry this preset does not populate.
212
- - id: delegation
213
- name: cordis:group
214
- group: true
215
- isolate:
216
- workflowEngine: true
217
- config:
218
- - id: tool-subagent-control
219
- name: '@deepseek-ai/dsh-tool-subagent-control'
220
-
221
- - id: tool-subagent-list-agents
222
- name: '@deepseek-ai/dsh-tool-subagent-control/list-agents'
223
-
224
- - id: tool-subagent
225
- name: '@deepseek-ai/dsh-tool-subagent'
226
- config:
227
- provider: spawn
228
- toolName: subagent
229
- modelSelectionSettings: true
135
+
136
+ # ── skills ──────────────────────────────────────────────────────────────────
137
+
138
+ # The skill REGISTRY lives in the host composition and is layered per scope:
139
+ # these rows register into THIS preset's layer of it, so they need no realm.
140
+ - id: skill-filesystem
141
+ name: '@deepseek-ai/dsh-skill-filesystem'
142
+
143
+ - id: tool-skill
144
+ name: '@deepseek-ai/dsh-tool-skill'
145
+
146
+ # ── goals ───────────────────────────────────────────────────────────────────
147
+
148
+ # Only the model-facing tool plus the human command. The goal SERVICE, its
149
+ # session driver stay on the host plane.
150
+ - id: command-goal
151
+ name: '@deepseek-ai/dsh-command-goal'
152
+
153
+ - id: tool-goal
154
+ name: '@deepseek-ai/dsh-tool-goal'
155
+
156
+ # ── plan mode ───────────────────────────────────────────────────────────────
157
+
158
+ # Plan state is per-agent by nature, so an entry-local realm is not a
159
+ # workaround here — it is the correct lifetime.
160
+ - id: planning
161
+ name: cordis:group
162
+ group: true
163
+ isolate:
164
+ planMode: true
165
+ config:
166
+ - id: plan-mode
167
+ name: '@deepseek-ai/dsh-plan-mode'
168
+ config:
169
+ section: |
170
+ 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.
171
+
172
+ 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.
173
+
174
+ 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.
175
+
176
+ 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.
177
+
178
+ 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.
179
+
180
+ 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.
181
+
182
+ # ── compaction ──────────────────────────────────────────────────────────────
183
+
184
+ # `compaction-basic` reads `toolResultPrune` through `ctx.get`, so the pruner
185
+ # must share this realm rather than sit outside it. `tokenMeter` stays HOST-side.
186
+ - id: compaction
187
+ name: cordis:group
188
+ group: true
189
+ isolate:
190
+ compaction: true
191
+ toolResultPruner: true
192
+ config:
193
+ - id: compaction-basic
194
+ name: '@deepseek-ai/dsh-compaction-basic'
195
+
196
+ - id: command-compact
197
+ name: '@deepseek-ai/dsh-command-compact'
198
+
199
+ - id: tool-result-pruner
200
+ name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
201
+ config:
202
+ thresholdChars: 8192
203
+ headChars: 4096
204
+ tailChars: 1024
205
+
206
+ # ── delegation and workflows ────────────────────────────────────────────────
207
+
208
+ # The `subagents` registry and its spawn/fork backends live in the HOST
209
+ # composition. This preset contributes the delegation TOOLS. `workflows` shares
210
+ # one entry-local realm here, and a consumer left outside would resolve a host
211
+ # registry this preset does not populate.
212
+ - id: delegation
213
+ name: cordis:group
214
+ group: true
215
+ isolate:
216
+ workflowEngine: true
217
+ config:
218
+ - id: tool-subagent-control
219
+ name: '@deepseek-ai/dsh-tool-subagent-control'
220
+
221
+ - id: tool-subagent-list-agents
222
+ name: '@deepseek-ai/dsh-tool-subagent-control/list-agents'
223
+
224
+ - id: tool-subagent
225
+ name: '@deepseek-ai/dsh-tool-subagent'
226
+ config:
227
+ provider: spawn
228
+ toolName: subagent
229
+ modelSelectionSettings: true
230
230
  backgroundMode: continuable
231
-
232
- - id: tool-subagent-fork
233
- name: '@deepseek-ai/dsh-tool-subagent'
234
- config:
235
- provider: fork
231
+
232
+ - id: tool-subagent-fork
233
+ name: '@deepseek-ai/dsh-tool-subagent'
234
+ config:
235
+ provider: fork
236
236
  toolName: subagent_fork
237
237
  backgroundMode: continuable
238
-
239
- # Product providers are host-plane singletons. Remove `disabled` from
240
- # either ordinary tool row to expose that product to agents on this preset.
241
- - id: tool-subagent-codex
242
- name: '@deepseek-ai/dsh-tool-subagent'
243
- disabled: true
244
- config:
245
- provider: codex
246
- toolName: subagent_codex
247
- backgroundMode: one-shot
248
- maxDepth: provider-managed
249
-
250
- - id: tool-subagent-claude-code
251
- name: '@deepseek-ai/dsh-tool-subagent'
252
- disabled: true
253
- config:
254
- provider: claude-code
255
- toolName: subagent_claude_code
256
- backgroundMode: one-shot
257
- maxDepth: provider-managed
258
-
259
- - id: workflow-ptc
260
- name: '@deepseek-ai/dsh-workflow-ptc'
261
- config:
262
- provider: spawn
263
-
264
- - id: tool-workflow
265
- name: '@deepseek-ai/dsh-tool-workflow'
266
- # Keep the engine above for `ralph`, but do not publish a second
267
- # model-authored orchestration surface beside `run_code` in PTC mode.
268
- disabled: true
269
-
270
- - id: tool-ralph
271
- name: '@deepseek-ai/dsh-tool-ralph'
272
- config:
273
- subagentProvider: spawn
274
- maxRounds: 64
275
-
276
- # ── remaining model-facing rows ─────────────────────────────────────────────
277
-
278
- - id: tool-ask-user
279
- name: '@deepseek-ai/dsh-tool-ask-user'
280
-
281
- - id: tool-todo
282
- name: '@deepseek-ai/dsh-tool-todo'
283
- config:
284
- allowParallelInProgress: true
285
-
286
- # The `web` service and its search provider stay in the host composition; only
287
- # the model-facing tool is per-session.
288
- - id: tool-web
289
- name: '@deepseek-ai/dsh-tool-web'
290
- config:
291
- fetch: true
292
- searchTimeoutMs: 60000
293
-
294
- # ── presentation ────────────────────────────────────────────────────────────
295
-
296
- # PTC for this agent alone. The row waits for the host's `ptcRuntime`
297
- # rather than assuming it: a deployment that composes no TypeScript runtime
298
- # fails this preset at mount, naming this id, instead of at the first request.
299
- - id: tool-presentation
300
- name: '@deepseek-ai/dsh-agent-tool-presentation'
301
- config:
302
- mode: ptc
303
-
304
- # Official `ptc` parity rows (0.1.6): the deliverables presenter and the
305
- # plugin-manager tools (off by default, mirroring the official preset).
306
- - id: present
307
- name: '@deepseek-ai/dsh-tool-present'
308
-
309
- - id: tool-plugin-manager
310
- name: '@deepseek-ai/dsh-plugin-manager/tools'
311
- disabled: true
238
+
239
+ # Product providers are host-plane singletons. Remove `disabled` from
240
+ # either ordinary tool row to expose that product to agents on this preset.
241
+ - id: tool-subagent-codex
242
+ name: '@deepseek-ai/dsh-tool-subagent'
243
+ disabled: true
244
+ config:
245
+ provider: codex
246
+ toolName: subagent_codex
247
+ backgroundMode: one-shot
248
+ maxDepth: provider-managed
249
+
250
+ - id: tool-subagent-claude-code
251
+ name: '@deepseek-ai/dsh-tool-subagent'
252
+ disabled: true
253
+ config:
254
+ provider: claude-code
255
+ toolName: subagent_claude_code
256
+ backgroundMode: one-shot
257
+ maxDepth: provider-managed
258
+
259
+ - id: workflow-ptc
260
+ name: '@deepseek-ai/dsh-workflow-ptc'
261
+ config:
262
+ provider: spawn
263
+
264
+ - id: tool-workflow
265
+ name: '@deepseek-ai/dsh-tool-workflow'
266
+ # Keep the engine above for `ralph`, but do not publish a second
267
+ # model-authored orchestration surface beside `run_code` in PTC mode.
268
+ disabled: true
269
+
270
+ - id: tool-ralph
271
+ name: '@deepseek-ai/dsh-tool-ralph'
272
+ config:
273
+ subagentProvider: spawn
274
+ maxRounds: 64
275
+
276
+ # ── remaining model-facing rows ─────────────────────────────────────────────
277
+
278
+ - id: tool-ask-user
279
+ name: '@deepseek-ai/dsh-tool-ask-user'
280
+
281
+ - id: tool-todo
282
+ name: '@deepseek-ai/dsh-tool-todo'
283
+ config:
284
+ allowParallelInProgress: true
285
+
286
+ # The `web` service and its search provider stay in the host composition; only
287
+ # the model-facing tool is per-session.
288
+ - id: tool-web
289
+ name: '@deepseek-ai/dsh-tool-web'
290
+ config:
291
+ fetch: true
292
+ searchTimeoutMs: 60000
293
+
294
+ # ── presentation ────────────────────────────────────────────────────────────
295
+
296
+ # PTC for this agent alone. The row waits for the host's `ptcRuntime`
297
+ # rather than assuming it: a deployment that composes no TypeScript runtime
298
+ # fails this preset at mount, naming this id, instead of at the first request.
299
+ - id: tool-presentation
300
+ name: '@deepseek-ai/dsh-agent-tool-presentation'
301
+ config:
302
+ mode: ptc
303
+
304
+ # Official `ptc` parity rows (0.1.6): the deliverables presenter and the
305
+ # plugin-manager tools (off by default, mirroring the official preset).
306
+ - id: present
307
+ name: '@deepseek-ai/dsh-tool-present'
308
+
309
+ - id: tool-plugin-manager
310
+ name: '@deepseek-ai/dsh-plugin-manager/tools'
311
+ disabled: true