dsh-loop-engine 0.1.5-rc2 → 0.1.5-rc3

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.
Files changed (3) hide show
  1. package/README.md +24 -14
  2. package/README.zh.md +11 -5
  3. package/package.json +22 -22
package/README.md CHANGED
@@ -112,21 +112,28 @@ subpath, also give that shim an `invariant.mjs` (`export * from
112
112
  ## Version compatibility
113
113
 
114
114
  dsh-loop-engine is versioned **in lockstep with the harness it targets**: the
115
- version is the harness version plus a plugin release counter (`0.1.5-rc1`
116
- targets harness `0.1.5-rc.1`), and every harness package it consumes is pinned
117
- exactly in `peerDependencies`. The two must be matched — a mismatch fails
118
- loudly at boot or session resume:
115
+ version is the harness version plus a plugin release counter (`0.1.5-rc1` and
116
+ `0.1.5-rc2` target harness `0.1.5-rc.1`; `0.1.5-rc3` targets harness
117
+ `0.1.5-rc.2`), and every harness package it consumes is pinned exactly in
118
+ `peerDependencies`. The two must be matched — a mismatch fails loudly at boot
119
+ or session resume:
119
120
 
120
121
  | dsh-loop-engine | Requires harness |
121
122
  |---|---|
122
- | 0.1.5-rc1 | **0.1.5-rc.1** |
123
+ | 0.1.5-rc3 | **0.1.5-rc.2** |
124
+ | 0.1.5-rc1, 0.1.5-rc2 | 0.1.5-rc.1 |
123
125
  | 1.0.0-rc8 … 1.0.0-rc15 | 0.1.2-rc.1 |
124
126
  | 1.0.0-rc7 and earlier | 0.1.1-rc.2 |
125
127
 
126
- - **0.1.5-rc1 requires harness 0.1.5-rc.1.** It uses the 0.1.5 assistant-stream
127
- contract (`assistant/message` embeds its exact timed `stream` and rejects
128
- `sourceEventSeqs`), the driver-owned `Inbox` interface, the two-argument
129
- `AgentSetup`, and the `SessionPersistence.create` / `open` handle seam.
128
+ - **Each 0.1.5-rcN release requires the 0.1.5 patch it was built for.**
129
+ `0.1.5-rc1`/`0.1.5-rc2` require harness `0.1.5-rc.1`; `0.1.5-rc3` requires
130
+ harness `0.1.5-rc.2`. All three use the 0.1.5
131
+ assistant-stream contract (`assistant/message` embeds its exact timed
132
+ `stream` and rejects `sourceEventSeqs`), the driver-owned `Inbox` interface,
133
+ the two-argument `AgentSetup`, and the `SessionPersistence.create` / `open`
134
+ handle seam. `0.1.5-rc.2` is a client-UI/docs backport that leaves those
135
+ seams untouched, so the driver code is identical across `0.1.5-rc.1` and
136
+ `0.1.5-rc.2`.
130
137
  - Releases up to `1.0.0-rc15` used the plugin's own version series and target
131
138
  harness `0.1.2-rc.1`; they are not compatible with harness `0.1.5-rc.1`.
132
139
  - To use the plugin with an older harness, install the release matching it
@@ -172,11 +179,14 @@ they were created with.
172
179
  bridged into the web menu (built-ins plus user-level `~/.claude/commands/`)
173
180
  and forwarded to the engine, which expands them natively. Project-level
174
181
  `.claude/commands/` files stay engine-side and also work typed directly.
175
- - The Codex driver runs `codex app-server` and has no interactive tool
176
- approval — permissions come from the session's `sandboxMode` +
177
- `approvalPolicy`. Its `AGENTS.md` instruction files are surfaced through the
178
- dsh skill-injection seam across every directory from the session cwd up to
179
- the git root, plus `~/.codex/AGENTS.md`.
182
+ - The Codex driver runs `codex app-server`; the thread starts with the
183
+ session's `sandboxMode` + `approvalPolicy` stance, and the model's runtime
184
+ approval requests (command, file-change, permissions) are answered through
185
+ the dsh approval seam — `request_user_input` questions go to the
186
+ user-questions seam and MCP elicitations are declined, all fail-closed when
187
+ their seam is absent. Its `AGENTS.md` instruction files are surfaced through
188
+ the dsh skill-injection seam across every directory from the session cwd up
189
+ to the git root, plus `~/.codex/AGENTS.md`.
180
190
  - The Pi driver runs `pi --mode rpc`; Pi has no permission system, so the whole
181
191
  child is sandboxed through the dsh subprocess service (default `read-only`).
182
192
  Its context files (`AGENTS.md`/`CLAUDE.md` with `AGENTS.override.md`
package/README.zh.md CHANGED
@@ -97,15 +97,16 @@ pnpm install
97
97
 
98
98
  ## 版本兼容
99
99
 
100
- `dsh-loop-engine` 与它针对的 harness **同版本对齐**:版本号即 harness 版本加插件发布序号(`0.1.5-rc1` 针对 harness `0.1.5-rc.1`),它消费的每个 harness 包都在 `peerDependencies` 里精确钉住。两者必须匹配——不匹配会在启动或会话恢复时响亮地失败:
100
+ `dsh-loop-engine` 与它针对的 harness **同版本对齐**:版本号即 harness 版本加插件发布序号(`0.1.5-rc1`、`0.1.5-rc2` 针对 harness `0.1.5-rc.1`,`0.1.5-rc3` 针对 harness `0.1.5-rc.2`),它消费的每个 harness 包都在 `peerDependencies` 里精确钉住。两者必须匹配——不匹配会在启动或会话恢复时响亮地失败:
101
101
 
102
102
  | dsh-loop-engine | 需要 harness |
103
103
  |---|---|
104
- | 0.1.5-rc1 | **0.1.5-rc.1** |
104
+ | 0.1.5-rc3 | **0.1.5-rc.2** |
105
+ | 0.1.5-rc1、0.1.5-rc2 | 0.1.5-rc.1 |
105
106
  | 1.0.0-rc8 … 1.0.0-rc15 | 0.1.2-rc.1 |
106
107
  | 1.0.0-rc7 及更早 | 0.1.1-rc.2 |
107
108
 
108
- - **0.1.5-rc1 需要 harness 0.1.5-rc.1。** 它使用 0.1.5 的 assistant-stream 契约(`assistant/message` 内嵌精确计时的 `stream`,并禁止 `sourceEventSeqs`)、由 driver 自己实现的 `Inbox` 接口、双参数 `AgentSetup`,以及 `SessionPersistence.create` / `open` 句柄 seam。
109
+ - **每个 0.1.5-rcN 版本需要它为之构建的那个 0.1.5 补丁。** `0.1.5-rc1`/`0.1.5-rc2` 需要 harness `0.1.5-rc.1`;`0.1.5-rc3` 需要 harness `0.1.5-rc.2`。三者都使用 0.1.5 的 assistant-stream 契约(`assistant/message` 内嵌精确计时的 `stream`,并禁止 `sourceEventSeqs`)、由 driver 自己实现的 `Inbox` 接口、双参数 `AgentSetup`,以及 `SessionPersistence.create` / `open` 句柄 seam。`0.1.5-rc.2` 是一次客户端 UI/文档 backport,没有触碰这些 seam,因此 driver 代码在 `0.1.5-rc.1` 与 `0.1.5-rc.2` 之间完全一致。
109
110
  - `1.0.0-rc15` 及以前的版本沿用插件自己的版本序列,针对 harness `0.1.2-rc.1`,与 harness `0.1.5-rc.1` 不兼容。
110
111
  - 要在更老的 harness 上使用本插件,请安装与之匹配的版本(例如 harness 0.1.2-rc.1 用 `npm i dsh-loop-engine@1.0.0-rc15`)。
111
112
  - 每个 tag 的 GitHub Release 正文会写明它针对的 harness 版本。
@@ -116,10 +117,15 @@ pnpm install
116
117
  2. 要切回默认,选 **In-process** 再重启即可。
117
118
  3. 卸载插件:`dsh plugin --profile web remove dsh-loop-engine`,然后重启 `dsh web`。
118
119
 
120
+ ### 托管引擎接管什么
121
+
122
+ 选中托管引擎后,它接管该会话的命令与技能面:插件禁用 dsh 自己的 `/goal`,并把新会话指向一个受管理的 `loop-engine` agent 预设——它是 `standard` 的副本,去掉了外部引擎无法履行的 dsh 原生 `/compact`、`/plan`、goal 工具与 skill 行——于是斜杠菜单只显示引擎桥接过来的命令与它自己的技能目录。与引擎无关的 dsh 命令(`/export`、`/feedback`、`/permission`)照常可用、保留在菜单里。切回 `in-process` 会恢复之前的预设默认值;已经在跑的会话始终保留它创建时的预设。
123
+
119
124
  ### 引擎说明
120
125
 
121
- - Codex 驱动运行 `codex app-server`,没有交互式工具审批——权限来自会话的 `sandboxMode` + `approvalPolicy`。
122
- - Pi 驱动运行 `pi --mode rpc`;Pi 没有权限系统,所以整个子进程经 dsh subprocess 服务做沙箱化(默认 `read-only`)。
126
+ - Claude Code 驱动每步跑一次 SDK query;它的斜杠命令桥接进 web 菜单(内置命令加上用户级 `~/.claude/commands/`),再转发给引擎由它原生展开。项目级 `.claude/commands/` 留在引擎侧,直接手敲同样可用。
127
+ - Codex 驱动运行 `codex app-server`;线程以会话的 `sandboxMode` + `approvalPolicy` 姿态启动,模型运行时的工具审批请求(command、file-change、permissions)经 dsh 审批 seam 应答——用户提问走 user-questions seam,MCP elicitation 一律拒绝,seam 缺席时均失败关闭。其 `AGENTS.md` 指令文件经 dsh 技能注入接缝暴露:从会话 cwd 逐级到 git 根,外加 `~/.codex/AGENTS.md`。
128
+ - Pi 驱动运行 `pi --mode rpc`;Pi 没有权限系统,所以整个子进程经 dsh subprocess 服务做沙箱化(默认 `read-only`)。它的上下文文件(`AGENTS.md`/`CLAUDE.md`,优先 `AGENTS.override.md`,外加 pi 配置目录下的用户级文件)与 `skills/` 目录(`~/.pi/agent/skills/` 和 `.pi/skills/`)经 dsh 技能注入接缝暴露。
123
129
  - Kimi Code 驱动运行一个常驻的 `kimi acp` 子进程(Agent Client Protocol over stdio),每步一次无状态的 `session/new` + `session/prompt`;durable 会话日志是唯一模型上下文。它把助手文本(`agent_message_chunk`)与**思考**(`agent_thought_chunk`)**增量**写入日志,并把工具调用/流(`tool_call` / `tool_call_update`)映射为 `tool/call` + `tool/result`。ACP 通过 `session/request_permission` 暴露工具审批,驱动根据会话的 dsh 审批旋钮应答(ask 策略拒绝,失败关闭)。子进程经 dsh subprocess seam 拉起——唯一权限边界(默认只读沙箱)。其项目 `AGENTS.md` 链(cwd→git 根)与 `.kimi-code/skills/` 目录(用户与项目)通过 dsh 技能注入接口暴露,其斜杠命令也已桥接(内置命令把原始 `/name` 行转发回引擎展开)。prompt 是 ACP 请求体而非 argv 位置参数,因此**不存在命令行长度上限**。注意 Kimi 剩余的斜杠命令面是纯 TUI(`/login`、`/provider`、`/settings`、`/sessions`…),这些不桥接(ACP prompt 面不扩展它们);`skill:` 命令由技能接口与 kimi 自身的 shorthand 承载。
124
130
 
125
131
  ## License
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dsh-loop-engine",
3
3
  "description": "Web-switchable agent loop engine selection for the DeepSeek Harness - out-of-tree plugin (Claude Code / Codex / Pi / Kimi Code drivers) maintained by @kuun993, zero main-repo changes",
4
- "version": "0.1.5-rc2",
4
+ "version": "0.1.5-rc3",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -68,29 +68,29 @@
68
68
  },
69
69
  "peerDependencies": {
70
70
  "@deepseek-ai/cordis": "^4.0.1",
71
- "@deepseek-ai/dsh-agent": "0.1.5-rc.1",
72
- "@deepseek-ai/dsh-invariants": "0.1.5-rc.1",
73
- "@deepseek-ai/dsh-llm": "0.1.5-rc.1",
74
- "@deepseek-ai/dsh-scope": "0.1.5-rc.1",
75
- "@deepseek-ai/dsh-session": "0.1.5-rc.1",
76
- "@deepseek-ai/dsh-session-persistence": "0.1.5-rc.1",
77
- "@deepseek-ai/dsh-settings": "0.1.5-rc.1",
78
- "@deepseek-ai/dsh-subprocess": "0.1.5-rc.1",
79
- "@deepseek-ai/dsh-timeout": "0.1.5-rc.1"
71
+ "@deepseek-ai/dsh-agent": "0.1.5-rc.2",
72
+ "@deepseek-ai/dsh-invariants": "0.1.5-rc.2",
73
+ "@deepseek-ai/dsh-llm": "0.1.5-rc.2",
74
+ "@deepseek-ai/dsh-scope": "0.1.5-rc.2",
75
+ "@deepseek-ai/dsh-session": "0.1.5-rc.2",
76
+ "@deepseek-ai/dsh-session-persistence": "0.1.5-rc.2",
77
+ "@deepseek-ai/dsh-settings": "0.1.5-rc.2",
78
+ "@deepseek-ai/dsh-subprocess": "0.1.5-rc.2",
79
+ "@deepseek-ai/dsh-timeout": "0.1.5-rc.2"
80
80
  },
81
81
  "devDependencies": {
82
- "@deepseek-ai/dsh-attachment": "0.1.5-rc.1",
83
- "@deepseek-ai/dsh-client-locale": "0.1.5-rc.1",
84
- "@deepseek-ai/dsh-client-store": "0.1.5-rc.1",
85
- "@deepseek-ai/dsh-client-ui-renderer": "0.1.5-rc.1",
86
- "@deepseek-ai/dsh-client-ui-conversation": "0.1.5-rc.1",
87
- "@deepseek-ai/dsh-client-ui-primitives": "0.1.5-rc.1",
88
- "@deepseek-ai/dsh-client-ui-settings": "0.1.5-rc.1",
89
- "@deepseek-ai/dsh-client-ui-slots": "0.1.5-rc.1",
90
- "@deepseek-ai/dsh-home-paths": "0.1.5-rc.1",
91
- "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.5-rc.1",
92
- "@deepseek-ai/dsh-subprocess-local": "0.1.5-rc.1",
93
- "@deepseek-ai/dsh-system-prompt": "0.1.5-rc.1",
82
+ "@deepseek-ai/dsh-attachment": "0.1.5-rc.2",
83
+ "@deepseek-ai/dsh-client-locale": "0.1.5-rc.2",
84
+ "@deepseek-ai/dsh-client-store": "0.1.5-rc.2",
85
+ "@deepseek-ai/dsh-client-ui-renderer": "0.1.5-rc.2",
86
+ "@deepseek-ai/dsh-client-ui-conversation": "0.1.5-rc.2",
87
+ "@deepseek-ai/dsh-client-ui-primitives": "0.1.5-rc.2",
88
+ "@deepseek-ai/dsh-client-ui-settings": "0.1.5-rc.2",
89
+ "@deepseek-ai/dsh-client-ui-slots": "0.1.5-rc.2",
90
+ "@deepseek-ai/dsh-home-paths": "0.1.5-rc.2",
91
+ "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.5-rc.2",
92
+ "@deepseek-ai/dsh-subprocess-local": "0.1.5-rc.2",
93
+ "@deepseek-ai/dsh-system-prompt": "0.1.5-rc.2",
94
94
  "@types/node": "^22.20.0",
95
95
  "@types/react": "^19.0.0",
96
96
  "@vitest/coverage-v8": "^4.1.8",