agim-cli 1.2.133 → 1.2.134
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
|
@@ -4,6 +4,47 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [1.2.134] - 2026-06-02
|
|
8
|
+
|
|
9
|
+
### Changed (/plan 状态文案:按 active agent 翻译生效机制)
|
|
10
|
+
|
|
11
|
+
之前 `/plan` 无参数时把所有 agent 的实现细节一起列出来,与用户当前哪个
|
|
12
|
+
agent 没绑关系。改成:
|
|
13
|
+
|
|
14
|
+
1. **重点行**:当前 agent 的具体生效机制(高亮 + 旗标名)
|
|
15
|
+
2. 其他 agent 的对照仅作参考
|
|
16
|
+
|
|
17
|
+
示例(active agent = claude-code 时):
|
|
18
|
+
```
|
|
19
|
+
📐 Plan 模式: `off`(当前 agent: `claude-code`)
|
|
20
|
+
|
|
21
|
+
**生效方式(claude-code)**: `--permission-mode plan`(只读权限模式)
|
|
22
|
+
|
|
23
|
+
切换:
|
|
24
|
+
/plan on 开启 plan 模式
|
|
25
|
+
/plan off 关闭,恢复正常执行
|
|
26
|
+
|
|
27
|
+
其他 agent 的对应机制:
|
|
28
|
+
· codex: -s read-only 沙盒(OS 层只读,非 approval 闸门)
|
|
29
|
+
· cursor: --plan 旗标(cursor-agent 自带的 plan 模式)
|
|
30
|
+
· opencode: --agent plan(切到 opencode 内置 plan agent)
|
|
31
|
+
· native: policy denyList 拒绝 native_write_file / native_exec + native_exit_plan_mode 握手出 plan 模式
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Fixed (cursor 误报"未对接 plan 模式")
|
|
35
|
+
|
|
36
|
+
`PLAN_CAPABLE_AGENTS` 集合漏了 `cursor`,但 cursor adapter 自 v1.2.49 就
|
|
37
|
+
通过 `--plan` 旗标支持 plan mode。结果是用户在 cursor 下 /plan on 时被警
|
|
38
|
+
告"cursor 暂未对接"——纯文案 bug。补全 set。
|
|
39
|
+
|
|
40
|
+
### 不做的(事实核对)
|
|
41
|
+
- 跨 adapter `buildArgs` 综合回归测试 —— 现有 4 个 adapter 的 `adapter.test.ts`
|
|
42
|
+
里都已经有 `planMode: true` 的 buildArgs 测试,再写一份综合版会重复。
|
|
43
|
+
|
|
44
|
+
### 文件
|
|
45
|
+
- 修改 `src/core/commands/plan.ts`(~30 行新逻辑 + 1 行 capable set 修复)
|
|
46
|
+
- 9/9 现有 plan 测试绿
|
|
47
|
+
|
|
7
48
|
## [1.2.133] - 2026-06-02
|
|
8
49
|
|
|
9
50
|
### Added (Plan-history admin UI — 原 P2 提前来做)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/core/commands/plan.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/core/commands/plan.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAuBhD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAqFxF"}
|
|
@@ -31,7 +31,9 @@ const OFF_TOKENS = new Set(['off', 'exit', 'stop', 'disable', '关', '关闭']);
|
|
|
31
31
|
* - native (v1.2.120): plan-mode-state.db + resolvePolicy() denies
|
|
32
32
|
* native_write_file + native_exec; system prompt gets
|
|
33
33
|
* a PlanMode banner */
|
|
34
|
-
|
|
34
|
+
// v1.2.134 — added 'cursor' which has had --plan since v1.2.49 but was
|
|
35
|
+
// missing from this set (so the warning incorrectly fired for cursor).
|
|
36
|
+
const PLAN_CAPABLE_AGENTS = new Set(['claude-code', 'opencode', 'codex', 'cursor', 'native']);
|
|
35
37
|
export async function handlePlanCommand(args, ctx) {
|
|
36
38
|
if (process.env.IMHUB_DISABLE_PLAN_MODE === '1') {
|
|
37
39
|
return '🚫 Plan 模式已通过 IMHUB_DISABLE_PLAN_MODE 全局禁用,请联系运维。';
|
|
@@ -42,16 +44,33 @@ export async function handlePlanCommand(args, ctx) {
|
|
|
42
44
|
const cur = existing?.planMode ? 'on' : 'off';
|
|
43
45
|
const agent = existing?.agent || ctx.defaultAgent;
|
|
44
46
|
const capable = PLAN_CAPABLE_AGENTS.has(agent);
|
|
47
|
+
// v1.2.134 — per-agent breakdown of how plan mode is actually enforced.
|
|
48
|
+
// Used to also list "exit handshake" — kept narrow to what each agent does.
|
|
49
|
+
const PLAN_MECH = {
|
|
50
|
+
'claude-code': '`--permission-mode plan`(只读权限模式)',
|
|
51
|
+
'codex': '`-s read-only` 沙盒(OS 层只读,非 approval 闸门)',
|
|
52
|
+
'cursor': '`--plan` 旗标(cursor-agent 自带的 plan 模式)',
|
|
53
|
+
'opencode': '`--agent plan`(切到 opencode 内置 plan agent)',
|
|
54
|
+
'native': 'policy denyList 拒绝 native_write_file / native_exec + `native_exit_plan_mode` 握手出 plan 模式',
|
|
55
|
+
};
|
|
56
|
+
const activeMech = PLAN_MECH[agent] ?? '(该 agent 未对接 plan 模式)';
|
|
57
|
+
const others = Object.entries(PLAN_MECH)
|
|
58
|
+
.filter(([k]) => k !== agent)
|
|
59
|
+
.map(([k, v]) => ` · ${k}: ${v}`)
|
|
60
|
+
.join('\n');
|
|
45
61
|
const agentNote = capable
|
|
46
62
|
? ''
|
|
47
63
|
: `\n\n⚠️ 当前 agent **${agent}** 暂未对接 plan 模式 —— /plan 会改 session 标志位,但 ${agent} 不读它。要规划-only 行为请用 ${agent} 自身的只读模式,或 /cc / /oc 切到对接版本。`;
|
|
48
|
-
return `📐 Plan 模式: \`${cur}\`(当前 agent:
|
|
64
|
+
return `📐 Plan 模式: \`${cur}\`(当前 agent: \`${agent}\`)
|
|
49
65
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
/plan off
|
|
66
|
+
**生效方式(${agent})**: ${activeMech}
|
|
67
|
+
|
|
68
|
+
切换:
|
|
69
|
+
/plan on 开启 plan 模式
|
|
70
|
+
/plan off 关闭,恢复正常执行
|
|
71
|
+
|
|
72
|
+
其他 agent 的对应机制:
|
|
73
|
+
${others}
|
|
55
74
|
|
|
56
75
|
plan 模式下文件不会被修改,适合先讨论方案再动手。${agentNote}`;
|
|
57
76
|
}
|
|
@@ -64,7 +83,7 @@ plan 模式下文件不会被修改,适合先讨论方案再动手。${agentNo
|
|
|
64
83
|
const activeAgent = existing?.agent || ctx.defaultAgent;
|
|
65
84
|
const capabilityNote = PLAN_CAPABLE_AGENTS.has(activeAgent)
|
|
66
85
|
? ''
|
|
67
|
-
: `\n\n⚠️ 当前 agent **${activeAgent}** 不读 planMode 标志位(claude-code / opencode 才支持)。标志会保存,但要切到上述 agent 才会生效。`;
|
|
86
|
+
: `\n\n⚠️ 当前 agent **${activeAgent}** 不读 planMode 标志位(claude-code / opencode / codex / cursor / native 才支持)。标志会保存,但要切到上述 agent 才会生效。`;
|
|
68
87
|
// v1.2.120 — compose the composite key once. native reads from the
|
|
69
88
|
// plan-mode-state.db keyed by this exact composite (matches
|
|
70
89
|
// sendPrompt's makeThreadKey call).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/core/commands/plan.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,4EAA4E;AAC5E,sEAAsE;AACtE,8DAA8D;AAC9D,+EAA+E;AAC/E,2EAA2E;AAC3E,0EAA0E;AAC1E,6EAA6E;AAC7E,6CAA6C;AAC7C,EAAE;AACF,2EAA2E;AAC3E,yEAAyE;AACzE,4EAA4E;AAC5E,uEAAuE;AACvE,oEAAoE;AACpE,EAAE;AACF,0EAA0E;AAC1E,4EAA4E;AAC5E,wCAAwC;AAGxC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,uBAAuB,CAAA;AAE9B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;AACxE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;AAEzE;;;;;;;uCAOuC;AACvC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/core/commands/plan.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agim-cli",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.134",
|
|
4
4
|
"description": "Agim (阿吉姆) — universal messenger-to-agent bridge. Connect WeChat / Feishu / DingTalk / Email to Claude Code / Codex / OpenCode, or any custom agent via ACP. Installs the `agim` command.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|