@luchenglong/cli-bridge 0.2.14 → 0.2.15

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
@@ -9,6 +9,41 @@ GitHub Release(`scripts/verify.mjs` 在 CI 与 prepack 双重锁一致)。
9
9
  > - CodeBuddy 线:[docs/history/codebuddy/CHANGELOG.md](docs/history/codebuddy/CHANGELOG.md)(终版 1.6.2)
10
10
  > - MiMo 线:[docs/history/mimo/CHANGELOG.md](docs/history/mimo/CHANGELOG.md)(终版 1.2.9)
11
11
 
12
+ ## [0.2.15] - 2026-10-23
13
+
14
+ > 用户要求:「必须要让其他 CLI 有与 agy 一样自由的权限」。核对后发现六家里**只有 codex 被沙箱
15
+ > 限制**,其余五家本来就在免确认档。本版把 codex 拉到同档。
16
+
17
+ ### Changed
18
+ - **codex 默认沙箱 `workspace-write` → `danger-full-access`**(`sandboxFor()` 默认值)。
19
+ 这曾是 codex 唯一比别家严的地方,也正是「无权编辑工作区外的内容」的直接来源。
20
+ `plan` 模式仍保留 `read-only`(plan 的语义就是不改动)。想收紧:传 `args.sandboxMode`,
21
+ 或在设置面板改「沙箱策略」。
22
+
23
+ ### 六家权限档位
24
+ | provider | 生效参数 | 限工作区 |
25
+ | --- | --- | --- |
26
+ | agy | `--dangerously-skip-permissions --mode accept-edits` | 否 ✅ 实测可写区外 |
27
+ | opencode | `--auto` | 否 ✅ 实测可写区外 |
28
+ | codex | `-s danger-full-access` + `-c approval_policy="never"` | 否 ✅ 实测可写区外(本版修复) |
29
+ | claude | `--dangerously-skip-permissions` | 否(参数已确认;实测受阻见下) |
30
+ | mimo | `--dangerously-skip-permissions` | 否(参数已确认;实测受阻见下) |
31
+ | codebuddy | `--permission-mode bypassPermissions` | 否(参数已确认;实测受阻见下) |
32
+
33
+ ### 排查中确认的环境问题(不是权限/插件缺陷)
34
+ - **mimo**:`MiMo free API service has ended. Sign in or configure a third-party API.`
35
+ —— 服务方的免费 API 已终止,需登录或配置第三方 API。
36
+ - **claude**:cc-switch 本地代理 `127.0.0.1:15721` 未运行(`ECONNREFUSED`)→ 报
37
+ `API Error: Connection error`。它依赖该代理补 session 头(见 0.2.11),需先启动 cc-switch。
38
+ - **codebuddy**:`%APPDATA%\npm\codebuddy.cmd` 在 Windows 不能直接 spawn(CVE-2024-27980 起抛
39
+ `EINVAL`),需经 shell —— provider 内部已有此处理,属验收脚本侧限制。
40
+ 另注意 `%LOCALAPPDATA%\Programs\CodeBuddy\codebuddy.exe` 是 **IDE 桌面程序**(启动即做更新
41
+ 检查),不是 CLI 入口,别拿它当 CLI 用。
42
+
43
+ ### Added(验收工具)
44
+ - `tests/e2e/outside-write-check.mjs`:让 CLI 写**工作目录之外**的文件,直接验收「与 agy 同等
45
+ 自由」:`node tests/e2e/outside-write-check.mjs codex agy`。
46
+
12
47
  ## [0.2.14] - 2026-10-23
13
48
 
14
49
  > 用户反馈:「agent 委派任务时 agy/opencode/claude/codex 部分 CLI 报错:无权编辑工作区外的内容」。
@@ -240,8 +240,21 @@ DSH 会给子进程 `DSH_SESSION_ID`(实测存在),但**不给**会话目
240
240
  `session-cwd.mjs`,且**不再出现裸 `|| process.cwd()` 兜底**;
241
241
  `tests/e2e/session-cwd-fix.mjs` 在"MCP 进程 cwd 故意设错"的条件下验证实际用的是会话目录。
242
242
 
243
- 注意:cwd 修好只代表"工作区对了"。codex 的 `workspace-write` 仍不允许写 cwd 之外 ——
244
- 那是它的安全设计,跨项目任务需显式传 `sandboxMode: 'danger-full-access'` 或 `addDirs`。
243
+ 注意:cwd 修好只代表"工作区对了"。
244
+ **0.2.15 起 codex 默认沙箱改为 `danger-full-access`**(原先 `workspace-write`),与其余五家
245
+ 的免确认档对齐 —— 用户明确要求「其他 CLI 要有与 agy 一样自由的权限」。六家当前权限档位:
246
+
247
+ | provider | 生效参数 | 是否限工作区 |
248
+ | --- | --- | --- |
249
+ | agy | `--dangerously-skip-permissions --mode accept-edits` | 否 |
250
+ | claude | `--dangerously-skip-permissions` | 否 |
251
+ | mimo | `--dangerously-skip-permissions` | 否 |
252
+ | opencode | `--auto` | 否 |
253
+ | codebuddy | `--permission-mode bypassPermissions` | 否 |
254
+ | codex | `-s danger-full-access` + `-c approval_policy="never"` | 否 |
255
+
256
+ plan 模式仍保留只读语义(codex `read-only`)。想收紧:传 `args.sandboxMode`,
257
+ 或在设置面板改「沙箱策略」(codex 专有)。
245
258
 
246
259
  ## 5. 交付文件清单(每个 provider 完全一致,路径冻结)
247
260
 
@@ -677,7 +677,12 @@ function defineProvider (deps = {}) {
677
677
  function sandboxFor(mode, args, settings) {
678
678
  if (args && args.sandboxMode && SANDBOX_MODES.indexOf(String(args.sandboxMode)) >= 0) return String(args.sandboxMode)
679
679
  if (settings && settings.sandboxMode && SANDBOX_MODES.indexOf(String(settings.sandboxMode)) >= 0) return String(settings.sandboxMode)
680
- return mode === 'plan' ? 'read-only' : 'workspace-write'
680
+ // 默认与其余五家(agy/claude/mimo/codebuddy/opencode 的 skip-permissions / auto 档)对齐:
681
+ // 不限工作区。用户明确要求「其他 CLI 要有与 agy 一样自由的权限」。
682
+ // 此前默认 workspace-write 会导致「无权编辑工作区外」——那是 codex 唯一比别家严的地方。
683
+ // plan 模式仍保留 read-only(plan 的语义就是不改动)。
684
+ // 想收紧:传 args.sandboxMode,或在设置面板改「沙箱模式」。
685
+ return mode === 'plan' ? 'read-only' : 'danger-full-access'
681
686
  }
682
687
 
683
688
  const descriptor = {
@@ -1012,12 +1017,12 @@ function defineProvider (deps = {}) {
1012
1017
  {
1013
1018
  key: 'sandboxMode', label: '沙箱策略', type: 'select',
1014
1019
  options: [
1015
- { value: '', label: '(跟随 mode / codex 自身 config)' },
1016
- { value: 'read-only', label: 'read-only(只读,plan 模式默认)' },
1017
- { value: 'workspace-write', label: 'workspace-write(可写工作区,默认)' },
1018
- { value: 'danger-full-access', label: 'danger-full-access(无沙箱,慎用)' }
1020
+ { value: '', label: '(跟随 mode:非 plan 一律 danger-full-access)' },
1021
+ { value: 'read-only', label: 'read-only(只读)' },
1022
+ { value: 'workspace-write', label: 'workspace-write(仅可写工作目录内)' },
1023
+ { value: 'danger-full-access', label: 'danger-full-access(无限制,默认)' }
1019
1024
  ],
1020
- note: '对应 codex 的 -s;续聊(resume)没有 -s,改经 -c sandbox_mode 生效。'
1025
+ note: '对应 codex 的 -s;续聊(resume)没有 -s,改经 -c sandbox_mode 生效。默认 danger-full-access,与其余五家(agy/claude/mimo/codebuddy/opencode 的 skip-permissions / auto 档)一致;想收紧就选 workspace-write —— 那会禁止写工作目录之外的文件。'
1021
1026
  },
1022
1027
  {
1023
1028
  key: 'approvalPolicy', label: '审批策略', type: 'select',
@@ -33,7 +33,7 @@ import * as claudeMcp from './providers/claude.mjs'
33
33
  import * as codexMcp from './providers/codex.mjs'
34
34
 
35
35
  const SERVER_NAME = 'cli-bridge-mcp'
36
- const SERVER_VERSION = '0.2.14'
36
+ const SERVER_VERSION = '0.2.15'
37
37
  const PROTOCOL = '2024-11-05'
38
38
 
39
39
  const PROVIDERS = [agyMcp, codebuddyMcp, mimoMcp, opencodeMcp, claudeMcp, codexMcp]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luchenglong/cli-bridge",
3
- "version": "0.2.14",
3
+ "version": "0.2.15",
4
4
  "description": "CLI Bridge for DeepSeek Harness (DSH): one package bridging six local coding-CLI agents — agy (Google Antigravity CLI), Tencent CodeBuddy Code, Xiaomi MiMo (MiMoCode), OpenCode, Claude Code, and OpenAI Codex CLI. Each provider keeps its own agent preset (cordis-agy / codebuddy-first / cordis-mimo / opencode-first / claude-first / codex-first), tools (<id>_run / <id>_continue / <id>_status, plus per-provider model listing), rate-limit/network fallback dialog, and zero-dependency MCP server, unified under a single home-level status light, one settings file, and one bundle patch. Merges agy-first-bridge, codebuddy-first-bridge and mimo-first-bridge.",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -117,7 +117,12 @@ export default function defineProvider(deps = {}) {
117
117
  function sandboxFor(mode, args, settings) {
118
118
  if (args && args.sandboxMode && SANDBOX_MODES.indexOf(String(args.sandboxMode)) >= 0) return String(args.sandboxMode)
119
119
  if (settings && settings.sandboxMode && SANDBOX_MODES.indexOf(String(settings.sandboxMode)) >= 0) return String(settings.sandboxMode)
120
- return mode === 'plan' ? 'read-only' : 'workspace-write'
120
+ // 默认与其余五家(agy/claude/mimo/codebuddy/opencode 的 skip-permissions / auto 档)对齐:
121
+ // 不限工作区。用户明确要求「其他 CLI 要有与 agy 一样自由的权限」。
122
+ // 此前默认 workspace-write 会导致「无权编辑工作区外」——那是 codex 唯一比别家严的地方。
123
+ // plan 模式仍保留 read-only(plan 的语义就是不改动)。
124
+ // 想收紧:传 args.sandboxMode,或在设置面板改「沙箱模式」。
125
+ return mode === 'plan' ? 'read-only' : 'danger-full-access'
121
126
  }
122
127
 
123
128
  const descriptor = {
@@ -452,12 +457,12 @@ export default function defineProvider(deps = {}) {
452
457
  {
453
458
  key: 'sandboxMode', label: '沙箱策略', type: 'select',
454
459
  options: [
455
- { value: '', label: '(跟随 mode / codex 自身 config)' },
456
- { value: 'read-only', label: 'read-only(只读,plan 模式默认)' },
457
- { value: 'workspace-write', label: 'workspace-write(可写工作区,默认)' },
458
- { value: 'danger-full-access', label: 'danger-full-access(无沙箱,慎用)' }
460
+ { value: '', label: '(跟随 mode:非 plan 一律 danger-full-access)' },
461
+ { value: 'read-only', label: 'read-only(只读)' },
462
+ { value: 'workspace-write', label: 'workspace-write(仅可写工作目录内)' },
463
+ { value: 'danger-full-access', label: 'danger-full-access(无限制,默认)' }
459
464
  ],
460
- note: '对应 codex 的 -s;续聊(resume)没有 -s,改经 -c sandbox_mode 生效。'
465
+ note: '对应 codex 的 -s;续聊(resume)没有 -s,改经 -c sandbox_mode 生效。默认 danger-full-access,与其余五家(agy/claude/mimo/codebuddy/opencode 的 skip-permissions / auto 档)一致;想收紧就选 workspace-write —— 那会禁止写工作目录之外的文件。'
461
466
  },
462
467
  {
463
468
  key: 'approvalPolicy', label: '审批策略', type: 'select',