sema-core 2.0.1 → 2.0.3
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/dist/conf/config.d.ts +1 -0
- package/dist/conf/config.d.ts.map +1 -1
- package/dist/conf/config.js +3 -1
- package/dist/conf/config.js.map +1 -1
- package/dist/core/SemaEngine.d.ts +9 -3
- package/dist/core/SemaEngine.d.ts.map +1 -1
- package/dist/core/SemaEngine.js +85 -15
- package/dist/core/SemaEngine.js.map +1 -1
- package/dist/core/SemaSession.d.ts +10 -2
- package/dist/core/SemaSession.d.ts.map +1 -1
- package/dist/core/SemaSession.js +11 -1
- package/dist/core/SemaSession.js.map +1 -1
- package/dist/events/types.d.ts +5 -4
- package/dist/events/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/manager/CheckpointManager.d.ts +52 -0
- package/dist/manager/CheckpointManager.d.ts.map +1 -0
- package/dist/manager/CheckpointManager.js +206 -0
- package/dist/manager/CheckpointManager.js.map +1 -0
- package/dist/manager/PermissionManager.d.ts.map +1 -1
- package/dist/manager/PermissionManager.js +250 -29
- package/dist/manager/PermissionManager.js.map +1 -1
- package/dist/manager/StateManager.d.ts +16 -5
- package/dist/manager/StateManager.d.ts.map +1 -1
- package/dist/manager/StateManager.js +32 -20
- package/dist/manager/StateManager.js.map +1 -1
- package/dist/prompt/permission.d.ts +3 -0
- package/dist/prompt/permission.d.ts.map +1 -0
- package/dist/prompt/permission.js +58 -0
- package/dist/prompt/permission.js.map +1 -0
- package/dist/services/api/queryLLM.d.ts +2 -1
- package/dist/services/api/queryLLM.d.ts.map +1 -1
- package/dist/services/api/queryLLM.js +2 -1
- package/dist/services/api/queryLLM.js.map +1 -1
- package/dist/tools/EditNotebook.d.ts.map +1 -1
- package/dist/tools/EditNotebook.js +3 -0
- package/dist/tools/EditNotebook.js.map +1 -1
- package/dist/tools/PatchFile.d.ts.map +1 -1
- package/dist/tools/PatchFile.js +3 -0
- package/dist/tools/PatchFile.js.map +1 -1
- package/dist/tools/WriteFile.d.ts.map +1 -1
- package/dist/tools/WriteFile.js +3 -0
- package/dist/tools/WriteFile.js.map +1 -1
- package/dist/types/fork.d.ts +46 -0
- package/dist/types/fork.d.ts.map +1 -0
- package/dist/types/fork.js +3 -0
- package/dist/types/fork.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/message.d.ts +1 -0
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/session.d.ts +3 -1
- package/dist/types/session.d.ts.map +1 -1
- package/dist/util/commands.d.ts +2 -4
- package/dist/util/commands.d.ts.map +1 -1
- package/dist/util/commands.js +99 -13
- package/dist/util/commands.js.map +1 -1
- package/dist/util/diff.d.ts +13 -0
- package/dist/util/diff.d.ts.map +1 -1
- package/dist/util/diff.js +18 -0
- package/dist/util/diff.js.map +1 -1
- package/dist/util/history.d.ts.map +1 -1
- package/dist/util/history.js +15 -0
- package/dist/util/history.js.map +1 -1
- package/dist/util/savePath.d.ts +13 -1
- package/dist/util/savePath.d.ts.map +1 -1
- package/dist/util/savePath.js +24 -3
- package/dist/util/savePath.js.map +1 -1
- package/dist/util/snapshotStore.d.ts +29 -0
- package/dist/util/snapshotStore.d.ts.map +1 -0
- package/dist/util/snapshotStore.js +134 -0
- package/dist/util/snapshotStore.js.map +1 -0
- package/dist/util/topic.d.ts +2 -2
- package/dist/util/topic.d.ts.map +1 -1
- package/dist/util/topic.js +4 -3
- package/dist/util/topic.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 会话 Fork 文件级快照管理(单例)
|
|
4
|
+
*
|
|
5
|
+
* 职责:
|
|
6
|
+
* - 维护每会话的 EditLog(文件"改动前镜像"的追加日志),通过 snapshotStore 持久化
|
|
7
|
+
* - 提供 fork 预览(preview)、回滚计划(computeRestorePlan)与回滚执行(applyRestore)
|
|
8
|
+
* - 原地回退时截断 EditLog(truncateEditLog)
|
|
9
|
+
*
|
|
10
|
+
* 设计要点见计划:每文件每 turn-segment 只捕获一次;失败关闭(fail-closed);
|
|
11
|
+
* 回滚按字节级整文件还原;不处理外部修改冲突。
|
|
12
|
+
* blob/editlog 的文件 IO 与退场清理在 util/snapshotStore.ts(纯 IO,避免循环依赖)。
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.getCheckpointManager = void 0;
|
|
16
|
+
const fs_1 = require("fs");
|
|
17
|
+
const path_1 = require("path");
|
|
18
|
+
const ConfManager_1 = require("./ConfManager");
|
|
19
|
+
const StateManager_1 = require("./StateManager");
|
|
20
|
+
const file_1 = require("../util/file");
|
|
21
|
+
const diff_1 = require("../util/diff");
|
|
22
|
+
const snapshotStore_1 = require("../util/snapshotStore");
|
|
23
|
+
class CheckpointManager {
|
|
24
|
+
constructor() {
|
|
25
|
+
// 每会话内存中的 EditLog(懒加载自磁盘)
|
|
26
|
+
this.editLogs = new Map();
|
|
27
|
+
// 每会话当前 turn-segment 起始 seq(beginTurn 时设置)
|
|
28
|
+
this.segmentStarts = new Map();
|
|
29
|
+
}
|
|
30
|
+
projectPath() {
|
|
31
|
+
return (0, ConfManager_1.getConfManager)().getCoreConfig()?.workingDir;
|
|
32
|
+
}
|
|
33
|
+
getEditLog(sessionId) {
|
|
34
|
+
let log = this.editLogs.get(sessionId);
|
|
35
|
+
if (!log) {
|
|
36
|
+
log = (0, snapshotStore_1.loadEditLog)(sessionId, this.projectPath());
|
|
37
|
+
this.editLogs.set(sessionId, log);
|
|
38
|
+
}
|
|
39
|
+
return log;
|
|
40
|
+
}
|
|
41
|
+
persist(sessionId) {
|
|
42
|
+
(0, snapshotStore_1.saveEditLog)(sessionId, this.editLogs.get(sessionId) ?? [], this.projectPath());
|
|
43
|
+
}
|
|
44
|
+
/** 读 blob 并按 LF 归一化为文本(仅用于预览的行数/diff,回滚仍用原始字节) */
|
|
45
|
+
readBlobText(hash) {
|
|
46
|
+
return (0, snapshotStore_1.readBlob)(hash, this.projectPath()).toString('utf8').replace(/\r\n/g, '\n').replace(/\r/g, '\n');
|
|
47
|
+
}
|
|
48
|
+
// ============================================================
|
|
49
|
+
// turn 锚点
|
|
50
|
+
// ============================================================
|
|
51
|
+
/** 开始一个新的 turn:返回当前 EditLog 长度并设为本 segment 起点 */
|
|
52
|
+
beginTurn(sessionId) {
|
|
53
|
+
const seq = this.getEditLog(sessionId).length;
|
|
54
|
+
this.segmentStarts.set(sessionId, seq);
|
|
55
|
+
return seq;
|
|
56
|
+
}
|
|
57
|
+
/** 当前 EditLog 记录数(= 下一条 fork 锚点值) */
|
|
58
|
+
getEditCount(sessionId) {
|
|
59
|
+
return this.getEditLog(sessionId).length;
|
|
60
|
+
}
|
|
61
|
+
// ============================================================
|
|
62
|
+
// 捕获(存的入口)— fail-closed
|
|
63
|
+
// ============================================================
|
|
64
|
+
/**
|
|
65
|
+
* 在工具写盘前记录文件的"改动前镜像"。
|
|
66
|
+
* 失败关闭:捕获失败抛错,由调用方令本次工具调用失败(不写盘)。
|
|
67
|
+
*/
|
|
68
|
+
recordPreEdit(sessionId, agentId, fullFilePath) {
|
|
69
|
+
try {
|
|
70
|
+
const log = this.getEditLog(sessionId);
|
|
71
|
+
const segStart = this.segmentStarts.get(sessionId) ?? 0;
|
|
72
|
+
// 去重:该文件在当前 segment 已捕获过段起始镜像
|
|
73
|
+
if (log.some(r => r.filePath === fullFilePath && r.seq >= segStart)) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const existedBefore = (0, fs_1.existsSync)(fullFilePath);
|
|
77
|
+
let blobHash = null;
|
|
78
|
+
if (existedBefore) {
|
|
79
|
+
blobHash = (0, snapshotStore_1.writeBlob)((0, fs_1.readFileSync)(fullFilePath), this.projectPath());
|
|
80
|
+
}
|
|
81
|
+
log.push({
|
|
82
|
+
seq: log.length,
|
|
83
|
+
agentId,
|
|
84
|
+
filePath: fullFilePath,
|
|
85
|
+
blobHash,
|
|
86
|
+
existedBefore,
|
|
87
|
+
ts: Date.now(),
|
|
88
|
+
});
|
|
89
|
+
this.persist(sessionId);
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
throw new Error(`Failed to capture checkpoint before editing ${fullFilePath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// ============================================================
|
|
96
|
+
// 回滚计划 / 预览 / 执行
|
|
97
|
+
// ============================================================
|
|
98
|
+
/** 选取回滚集:seq >= forkSeq 的记录中,每个文件取最早的一条 */
|
|
99
|
+
computeRestorePlan(sessionId, forkSeq) {
|
|
100
|
+
const log = this.getEditLog(sessionId);
|
|
101
|
+
const byFile = new Map();
|
|
102
|
+
for (const r of log) {
|
|
103
|
+
if (r.seq < forkSeq)
|
|
104
|
+
continue;
|
|
105
|
+
const existing = byFile.get(r.filePath);
|
|
106
|
+
if (!existing || r.seq < existing.seq) {
|
|
107
|
+
byFile.set(r.filePath, r);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return Array.from(byFile.values()).map(r => ({
|
|
111
|
+
filePath: r.filePath,
|
|
112
|
+
blobHash: r.blobHash,
|
|
113
|
+
existedBefore: r.existedBefore,
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
116
|
+
/** 预览:在 messageUuid 处恢复文件会改动哪些文件、各自增删行数(只读) */
|
|
117
|
+
preview(sessionId, messageUuid) {
|
|
118
|
+
const history = (0, StateManager_1.getStateManager)().session(sessionId).getMessageHistory();
|
|
119
|
+
const msg = history.find(m => m.type === 'user' && m.uuid === messageUuid);
|
|
120
|
+
const forkSeq = msg?.checkpointSeq;
|
|
121
|
+
if (!msg || forkSeq === undefined) {
|
|
122
|
+
return { messageUuid, canRestoreFiles: false, files: [] };
|
|
123
|
+
}
|
|
124
|
+
const plan = this.computeRestorePlan(sessionId, forkSeq);
|
|
125
|
+
const files = plan.map(p => this.describeChange(p));
|
|
126
|
+
return { messageUuid, canRestoreFiles: true, files };
|
|
127
|
+
}
|
|
128
|
+
/** 执行回滚(仅 fork(restoreFiles:true) 调用)。返回实际处理的文件路径。 */
|
|
129
|
+
applyRestore(plan) {
|
|
130
|
+
const restored = [];
|
|
131
|
+
for (const p of plan) {
|
|
132
|
+
if (!p.existedBefore) {
|
|
133
|
+
// fork 后才新建的文件 → 删除以回到 fork 态;已被外部删则视为已达成
|
|
134
|
+
try {
|
|
135
|
+
if ((0, fs_1.existsSync)(p.filePath))
|
|
136
|
+
(0, fs_1.unlinkSync)(p.filePath);
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
if (error?.code !== 'ENOENT')
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
const buf = (0, snapshotStore_1.readBlob)(p.blobHash, this.projectPath());
|
|
145
|
+
(0, fs_1.mkdirSync)((0, path_1.dirname)(p.filePath), { recursive: true });
|
|
146
|
+
(0, fs_1.writeFileSync)(p.filePath, buf); // 字节级还原
|
|
147
|
+
}
|
|
148
|
+
restored.push(p.filePath);
|
|
149
|
+
}
|
|
150
|
+
return restored;
|
|
151
|
+
}
|
|
152
|
+
/** 原地回退时把 seq >= forkSeq 的记录截掉(被撤销的快照记录丢弃) */
|
|
153
|
+
truncateEditLog(sessionId, forkSeq) {
|
|
154
|
+
const kept = this.getEditLog(sessionId).filter(r => r.seq < forkSeq);
|
|
155
|
+
this.editLogs.set(sessionId, kept);
|
|
156
|
+
this.segmentStarts.set(sessionId, kept.length);
|
|
157
|
+
this.persist(sessionId);
|
|
158
|
+
}
|
|
159
|
+
/** 释放某会话的内存 EditLog(磁盘文件保留,供重新打开/再次 fork 使用) */
|
|
160
|
+
forgetSession(sessionId) {
|
|
161
|
+
this.editLogs.delete(sessionId);
|
|
162
|
+
this.segmentStarts.delete(sessionId);
|
|
163
|
+
}
|
|
164
|
+
// ============================================================
|
|
165
|
+
// 内部:描述单文件改动
|
|
166
|
+
// ============================================================
|
|
167
|
+
describeChange(p) {
|
|
168
|
+
const displayPath = (0, file_1.getDisplayPath)(p.filePath);
|
|
169
|
+
const binary = (0, file_1.isBinaryFile)(p.filePath);
|
|
170
|
+
const currentExists = (0, fs_1.existsSync)(p.filePath);
|
|
171
|
+
const lineCount = (content) => (content === '' ? 0 : content.split('\n').length);
|
|
172
|
+
// 该文件 fork 后才新建 → 回滚 = 删除
|
|
173
|
+
if (!p.existedBefore) {
|
|
174
|
+
let removals = 0;
|
|
175
|
+
if (currentExists && !binary) {
|
|
176
|
+
removals = lineCount((0, file_1.readTextContent)(p.filePath).content);
|
|
177
|
+
}
|
|
178
|
+
return this.makeChange(p.filePath, displayPath, 'delete', 0, removals, binary);
|
|
179
|
+
}
|
|
180
|
+
const targetText = binary ? '' : this.readBlobText(p.blobHash);
|
|
181
|
+
// 旧文件被删 → 回滚 = 重新写回
|
|
182
|
+
if (!currentExists) {
|
|
183
|
+
const additions = binary ? 0 : lineCount(targetText);
|
|
184
|
+
return this.makeChange(p.filePath, displayPath, 'recreate', additions, 0, binary);
|
|
185
|
+
}
|
|
186
|
+
// 覆盖回旧内容
|
|
187
|
+
if (binary) {
|
|
188
|
+
return this.makeChange(p.filePath, displayPath, 'modify', 0, 0, true);
|
|
189
|
+
}
|
|
190
|
+
const current = (0, file_1.readTextContent)(p.filePath).content;
|
|
191
|
+
const { additions, removals } = (0, diff_1.countPatchLines)((0, diff_1.diffContents)(p.filePath, current, targetText));
|
|
192
|
+
return this.makeChange(p.filePath, displayPath, 'modify', additions, removals, false);
|
|
193
|
+
}
|
|
194
|
+
makeChange(filePath, displayPath, effect, additions, removals, binary) {
|
|
195
|
+
return { filePath, displayPath, effect, additions, removals, ...(binary ? { binary: true } : {}) };
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
let instance = null;
|
|
199
|
+
const getCheckpointManager = () => {
|
|
200
|
+
if (!instance) {
|
|
201
|
+
instance = new CheckpointManager();
|
|
202
|
+
}
|
|
203
|
+
return instance;
|
|
204
|
+
};
|
|
205
|
+
exports.getCheckpointManager = getCheckpointManager;
|
|
206
|
+
//# sourceMappingURL=CheckpointManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckpointManager.js","sourceRoot":"","sources":["../../src/manager/CheckpointManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionManager.d.ts","sourceRoot":"","sources":["../../src/manager/PermissionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"PermissionManager.d.ts","sourceRoot":"","sources":["../../src/manager/PermissionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AA8DzC,KAAK,qBAAqB,GAAG;IAAE,MAAM,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAClF,KAAK,kBAAkB,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAA;AA+BpD,eAAO,MAAM,mBAAmB,GAC9B,MAAM,IAAI,EACV,OAAO,kBAAkB,EACzB,iBAAiB,eAAe,EAChC,mBAAmB,OAAO,EAC1B,SAAS,MAAM,EACf,WAAW,MAAM,EACjB,QAAQ,MAAM,KACb,OAAO,CAAC,qBAAqB,CAgG/B,CAAA;AA6HD,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAkBf"}
|
|
@@ -15,6 +15,9 @@ const file_1 = require("../util/file");
|
|
|
15
15
|
const path_1 = require("path");
|
|
16
16
|
const platform_1 = require("../util/platform");
|
|
17
17
|
const StateManager_1 = require("./StateManager");
|
|
18
|
+
const queryLLM_1 = require("../services/api/queryLLM");
|
|
19
|
+
const compact_1 = require("../util/compact");
|
|
20
|
+
const permission_1 = require("../prompt/permission");
|
|
18
21
|
// ==================== 辅助函数 ====================
|
|
19
22
|
function isPathInsideRoot(filePath, root) {
|
|
20
23
|
const abs = (0, path_1.isAbsolute)(filePath) ? filePath : (0, path_1.resolve)(root, filePath);
|
|
@@ -29,6 +32,13 @@ const SAFE_COMMANDS = new Set([
|
|
|
29
32
|
'pwd', 'tree', 'date', 'which',
|
|
30
33
|
'ls', 'find', 'grep', 'head', 'tail', 'cat', 'du', 'wc', 'echo', 'env', 'printenv'
|
|
31
34
|
]);
|
|
35
|
+
// 子命令字符长度上限:超过则跳过前缀提取(如内联脚本 python -c "...大段...",提取前缀无意义),
|
|
36
|
+
// 同时不提供「按前缀授权」,只允许单次确认。
|
|
37
|
+
// 取值偏宽:容得下带多个长绝对路径的正常命令;超限仅丢失「按前缀授权」便利,不影响命令本身可单次执行。
|
|
38
|
+
const MAX_PREFIX_EXTRACT_LEN = 512;
|
|
39
|
+
// 精确命令授权(run_shell(<完整命令>))的命令长度上限:前缀提取失败时,仅当整条命令足够短才退化为
|
|
40
|
+
// 「按完整命令授权」。过长的完整命令逐字命中概率低,精确授权意义不大,故超过此长度只允许单次确认。
|
|
41
|
+
const MAX_EXACT_AUTH_LEN = 64;
|
|
32
42
|
const FILE_EDIT_TOOLS = new Set([
|
|
33
43
|
tool_1.TOOL_NAME_PATCH_FILE,
|
|
34
44
|
tool_1.TOOL_NAME_WRITE_FILE,
|
|
@@ -169,42 +179,82 @@ function runShellToolHasExactMatch(tool, command, allowedTools) {
|
|
|
169
179
|
const keyWithPrefix = getPermissionKey(tool, { command }, command);
|
|
170
180
|
return allowedTools.includes(keyWithPrefix);
|
|
171
181
|
}
|
|
172
|
-
|
|
182
|
+
// 已保存的前缀授权 run_shell(P:*) 用字符串前缀匹配判定覆盖,无需模型提取前缀
|
|
183
|
+
function matchesSavedPrefix(command, allowedTools) {
|
|
184
|
+
const open = `${RunShell_1.RunShell.name}(`;
|
|
185
|
+
for (const entry of allowedTools) {
|
|
186
|
+
if (!entry.startsWith(open) || !entry.endsWith(':*)'))
|
|
187
|
+
continue;
|
|
188
|
+
const prefix = entry.slice(open.length, -':*)'.length);
|
|
189
|
+
if (prefix && (command === prefix || command.startsWith(`${prefix} `)))
|
|
190
|
+
return true;
|
|
191
|
+
}
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
function isRunShellCommandPermitted(tool, command, allowedTools) {
|
|
173
195
|
return runShellToolHasExactMatch(tool, command, allowedTools) ||
|
|
174
|
-
|
|
196
|
+
matchesSavedPrefix(command, allowedTools);
|
|
175
197
|
}
|
|
176
198
|
async function checkRunShellPermission(tool, command, abortController, allowedTools, agentId, sessionId, toolId) {
|
|
177
|
-
// 移除当前工作目录前缀
|
|
199
|
+
// 移除当前工作目录前缀
|
|
178
200
|
command = command.replace(`cd ${(0, cwd_1.readInitialCwd)()} && `, '');
|
|
201
|
+
// 先拆分子命令并做注入检测——必须先于白名单/AutoRun 放行,否则白名单主命令词(echo/cat/grep 等)
|
|
202
|
+
// 夹带 $()、`` 命令替换或换行即可绕过检测(如 echo $(id))。检出注入 → 转人工且不提供"永久允许"
|
|
203
|
+
const subCommands = (0, commands_1.splitCommand)(command);
|
|
204
|
+
if (subCommands.some(commands_1.hasCommandInjection)) {
|
|
205
|
+
return requestPermissionViaEvent(tool, { command }, null, abortController, agentId, sessionId, toolId, false, true);
|
|
206
|
+
}
|
|
179
207
|
// 命中白名单或项目配置已允许
|
|
180
208
|
if (runShellToolHasExactMatch(tool, command, allowedTools)) {
|
|
181
209
|
return { result: true };
|
|
182
210
|
}
|
|
183
|
-
|
|
184
|
-
//
|
|
185
|
-
const
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
211
|
+
// AutoRun 档位:对整条命令做一次安全判断,判定 safe 直接放行;
|
|
212
|
+
// 判定有风险时继续走下面的确定性覆盖匹配(已保存授权仍可放行),否则转人工。
|
|
213
|
+
const runtime = (0, StateManager_1.getStateManager)().session(sessionId);
|
|
214
|
+
if (runtime.isAutoRun()) {
|
|
215
|
+
let safe = false;
|
|
216
|
+
try {
|
|
217
|
+
safe = (await classifyActionSafety(tool, { command }, abortController.signal, sessionId, agentId)) === 'safe';
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
(0, log_1.logDebug)(`[Permission][AutoRun] 安全判断失败,转人工: ${error}`);
|
|
221
|
+
}
|
|
222
|
+
(0, errors_1.checkAbortSignal)(abortController);
|
|
223
|
+
if (safe) {
|
|
224
|
+
(0, log_1.logDebug)(`[Permission][AutoRun]${tool.name} 自动放行`);
|
|
225
|
+
return { result: true };
|
|
226
|
+
}
|
|
227
|
+
(0, log_1.logDebug)(`[Permission][AutoRun]${tool.name} 判定有风险,转人工申请`);
|
|
228
|
+
}
|
|
229
|
+
// 每个子命令都被 SAFE_COMMANDS / 精确授权 / 已保存前缀覆盖 → 放行(注入已在函数开头排除)
|
|
230
|
+
if (subCommands.length > 0 && subCommands.every(subCmd => isRunShellCommandPermitted(tool, subCmd, allowedTools))) {
|
|
231
|
+
return { result: true };
|
|
232
|
+
}
|
|
233
|
+
// 未完全覆盖 → 转人工。对「首个未被覆盖的子命令」调一次快速模型提取前缀,给出"按前缀授权"选项。
|
|
234
|
+
// 必须用子命令而非整条命令——整条复合命令含 && / || / ; 会被前缀提取提示词判为注入,提取不到前缀。
|
|
235
|
+
// 首个未覆盖子命令过长(如内联脚本 python -c "...大段...")时跳过前缀提取:提取无意义
|
|
236
|
+
const firstUncovered = subCommands.find(subCmd => !isRunShellCommandPermitted(tool, subCmd, allowedTools)) ?? command;
|
|
237
|
+
let prefix = null;
|
|
238
|
+
let allowExact = false;
|
|
239
|
+
if (firstUncovered.length <= MAX_PREFIX_EXTRACT_LEN) {
|
|
240
|
+
const info = await (0, commands_1.getCommandPrefix)(firstUncovered, abortController.signal, sessionId);
|
|
241
|
+
(0, errors_1.checkAbortSignal)(abortController);
|
|
242
|
+
if (info === null) {
|
|
243
|
+
// 模型调用失败 → 退化「精确命令授权」run_shell(<完整命令>)(命令 ≤ 64 时),下次同一条命令可放行;
|
|
244
|
+
// 命令 > 64(即便 ≤ 512)则不给 allow,仅单次确认
|
|
245
|
+
allowExact = command.length <= MAX_EXACT_AUTH_LEN;
|
|
246
|
+
}
|
|
247
|
+
else if (info.commandInjectionDetected || !info.commandPrefix) {
|
|
248
|
+
// 检出注入 或 返回 none/git(如 git push):模型明确判定不宜授权 → 不给 allow,仅单次确认
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
// 提到有效前缀 → 「按前缀授权」run_shell(<前缀>:*)
|
|
252
|
+
prefix = info.commandPrefix;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
// 有前缀 → 按前缀授权;模型失败且命令 ≤ 64 → 精确命令授权;其余(注入/none/命令 > 64/超长)→ 无 allow,仅单次确认
|
|
256
|
+
const showAllow = prefix !== null || allowExact;
|
|
257
|
+
return requestPermissionViaEvent(tool, { command }, prefix, abortController, agentId, sessionId, toolId, showAllow, true);
|
|
208
258
|
}
|
|
209
259
|
// ==================== 权限保存 ====================
|
|
210
260
|
async function savePermission(tool, input, prefix, sessionId) {
|
|
@@ -248,8 +298,179 @@ function getPermissionKey(tool, input, prefix) {
|
|
|
248
298
|
}
|
|
249
299
|
return tool.name;
|
|
250
300
|
}
|
|
301
|
+
// ==================== AutoRun 自动判断 ====================
|
|
302
|
+
/**
|
|
303
|
+
* 将单个工具动作概括为一段可供快速模型判断的描述文本。
|
|
304
|
+
*/
|
|
305
|
+
function buildActionSummary(tool, input) {
|
|
306
|
+
if (tool.name === RunShell_1.RunShell.name) {
|
|
307
|
+
const command = (input.command || '').toString().trim();
|
|
308
|
+
return `Tool: run_shell\nCommand: ${command}`;
|
|
309
|
+
}
|
|
310
|
+
if (isFileEditTool(tool)) {
|
|
311
|
+
const filePath = (0, file_1.getFilePath)(input);
|
|
312
|
+
const outside = !!filePath && !isPathInsideRoot(filePath, (0, cwd_1.readInitialCwd)());
|
|
313
|
+
return `Tool: ${tool.name} (edit/write file)\nPath: ${filePath || '(unknown)'}\nLocation: ${outside ? 'OUTSIDE project directory' : 'inside project directory'}`;
|
|
314
|
+
}
|
|
315
|
+
if (isSkillTool(tool)) {
|
|
316
|
+
return `Tool: Skill\nSkill: ${input.skill || '(unknown)'}`;
|
|
317
|
+
}
|
|
318
|
+
if (isFetchUrlTool(tool)) {
|
|
319
|
+
const url = input.url || '';
|
|
320
|
+
return `Tool: fetch_url\nURL: ${url}\nDomain: ${extractDomain(url) || '(unknown)'}`;
|
|
321
|
+
}
|
|
322
|
+
const label = isMCPTool(tool) ? `${tool.name} (MCP tool)` : tool.name;
|
|
323
|
+
return `Tool: ${label}\nArgs: ${safeStringify(input)}`;
|
|
324
|
+
}
|
|
325
|
+
function safeStringify(input, max = 800) {
|
|
326
|
+
try {
|
|
327
|
+
const s = JSON.stringify(input);
|
|
328
|
+
return s.length > max ? `${s.slice(0, max)}…(truncated)` : s;
|
|
329
|
+
}
|
|
330
|
+
catch {
|
|
331
|
+
return '(unserializable)';
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* 调用快速模型判断动作是否安全。
|
|
336
|
+
* API 错误或返回为空时抛出异常,交由调用方做失败关闭处理。
|
|
337
|
+
*/
|
|
338
|
+
async function classifyActionSafety(tool, input, signal, sessionId, agentId = StateManager_1.MAIN_AGENT_ID) {
|
|
339
|
+
// 旁路:只读「当前执行代理」自身历史作为上下文(子代理用自己的上下文,而非主代理),
|
|
340
|
+
// 叠加安全判断指令,绝不写回会话
|
|
341
|
+
const history = sessionId
|
|
342
|
+
? (0, StateManager_1.getStateManager)().session(sessionId).forAgent(agentId).getMessageHistory()
|
|
343
|
+
: [];
|
|
344
|
+
// 末尾追加待判断动作;prepareMessagesForApi 会剥离历史尾部孤立 tool_use,
|
|
345
|
+
// 配合 NULL_TOOL 占位避免部分 provider 因历史含 tool 块报错
|
|
346
|
+
const actionMsg = (0, message_1.buildUserMsg)([
|
|
347
|
+
{ type: 'text', text: (0, permission_1.AUTO_RUN_SAFETY_CONTEXT_USER_PROMPT)(buildActionSummary(tool, input)) },
|
|
348
|
+
]);
|
|
349
|
+
const messages = [...(0, message_1.prepareMessagesForApi)(history), actionMsg];
|
|
350
|
+
const response = await (0, queryLLM_1.queryLLM)(messages, [{ type: 'text', text: permission_1.AUTO_RUN_SAFETY_CONTEXT_SYSTEM_PROMPT }], signal, [compact_1.NULL_TOOL], {
|
|
351
|
+
modelPointer: 'quick',
|
|
352
|
+
disableChunkEvents: true,
|
|
353
|
+
disableErrorEvents: true,
|
|
354
|
+
disableThinking: true,
|
|
355
|
+
sessionId,
|
|
356
|
+
});
|
|
357
|
+
const content = response.message.content;
|
|
358
|
+
const raw = (typeof content === 'string'
|
|
359
|
+
? content
|
|
360
|
+
: Array.isArray(content)
|
|
361
|
+
? (content.find((c) => c.type === 'text')?.text ?? '')
|
|
362
|
+
: '').trim();
|
|
363
|
+
if (!raw || raw.startsWith(message_1.API_ERR_PREFIX)) {
|
|
364
|
+
throw new Error('AutoRun safety classification failed');
|
|
365
|
+
}
|
|
366
|
+
// 仅当模型明确返回单词 safe 时才放行;带解释/标点/其余任何文本一律按 risky 处理(fail-closed)
|
|
367
|
+
return raw.toLowerCase() === 'safe' ? 'safe' : 'risky';
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* fetch_url 的确定性 SSRF 兜底:命中环回 / 链路本地(含云元数据 169.254.169.254)/
|
|
371
|
+
* 内网 / 未指定地址 / 本地主机名,一律按危险处理,不交给模型,避免被误判为 safe。
|
|
372
|
+
* URL 解析失败同样按危险处理。
|
|
373
|
+
*/
|
|
374
|
+
function isBlockedFetchHost(url) {
|
|
375
|
+
let hostname;
|
|
376
|
+
try {
|
|
377
|
+
hostname = new URL(url).hostname.toLowerCase();
|
|
378
|
+
}
|
|
379
|
+
catch {
|
|
380
|
+
return true;
|
|
381
|
+
}
|
|
382
|
+
// 去掉 IPv6 字面量的方括号
|
|
383
|
+
const host = hostname.replace(/^\[|\]$/g, '');
|
|
384
|
+
// 本地主机名 / 已知云元数据主机名
|
|
385
|
+
if (host === 'localhost' || host.endsWith('.localhost'))
|
|
386
|
+
return true;
|
|
387
|
+
if (host === 'metadata.google.internal')
|
|
388
|
+
return true;
|
|
389
|
+
// IPv4 字面量
|
|
390
|
+
const ipv4 = host.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
|
|
391
|
+
if (ipv4) {
|
|
392
|
+
const a = Number(ipv4[1]);
|
|
393
|
+
const b = Number(ipv4[2]);
|
|
394
|
+
if (a === 0)
|
|
395
|
+
return true; // 0.0.0.0/8 未指定
|
|
396
|
+
if (a === 10)
|
|
397
|
+
return true; // 10.0.0.0/8 私网
|
|
398
|
+
if (a === 127)
|
|
399
|
+
return true; // 127.0.0.0/8 环回
|
|
400
|
+
if (a === 169 && b === 254)
|
|
401
|
+
return true; // 169.254.0.0/16 链路本地(含元数据)
|
|
402
|
+
if (a === 172 && b >= 16 && b <= 31)
|
|
403
|
+
return true; // 172.16.0.0/12 私网
|
|
404
|
+
if (a === 192 && b === 168)
|
|
405
|
+
return true; // 192.168.0.0/16 私网
|
|
406
|
+
if (a === 100 && b >= 64 && b <= 127)
|
|
407
|
+
return true; // 100.64.0.0/10 CGNAT
|
|
408
|
+
return false;
|
|
409
|
+
}
|
|
410
|
+
// IPv6 字面量:环回 / 未指定 / ULA(fc00::/7) / 链路本地(fe80::/10)
|
|
411
|
+
if (host.includes(':')) {
|
|
412
|
+
if (host === '::1' || host === '::')
|
|
413
|
+
return true;
|
|
414
|
+
if (/^f[cd]/.test(host))
|
|
415
|
+
return true; // fc00::/7
|
|
416
|
+
if (/^fe[89ab]/.test(host))
|
|
417
|
+
return true; // fe80::/10
|
|
418
|
+
return false;
|
|
419
|
+
}
|
|
420
|
+
return false;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* AutoRun 档位下尝试自动放行:
|
|
424
|
+
* 1) 确定性:文件编辑只看路径(项目内放行/项目外转人工);Skill 放行;MCP 转人工——均不走 LLM
|
|
425
|
+
* 2) fetch_url:先做确定性 SSRF 兜底(命中内网/元数据等直接转人工),未命中再交给快速模型判断
|
|
426
|
+
* 3) 其余动作交给快速模型做安全判断;失败/超时/异常一律失败关闭(转人工)
|
|
427
|
+
*/
|
|
428
|
+
async function autoApproveInAutoRun(tool, input, signal, sessionId, agentId) {
|
|
429
|
+
// 文件编辑:确定性判断,不走 LLM
|
|
430
|
+
// 项目内放行;项目外一律转人工,避免模型误判为 safe
|
|
431
|
+
if (isFileEditTool(tool)) {
|
|
432
|
+
const filePath = (0, file_1.getFilePath)(input);
|
|
433
|
+
return !filePath || isPathInsideRoot(filePath, (0, cwd_1.readInitialCwd)());
|
|
434
|
+
}
|
|
435
|
+
// Skill:本身无副作用(仅注入提示词),技能内的真实动作会作为下游工具再次过权限闸门,直接放行
|
|
436
|
+
if (isSkillTool(tool)) {
|
|
437
|
+
return true;
|
|
438
|
+
}
|
|
439
|
+
// MCP:外部且不可逆的副作用,下游不再拦截,工具语义对模型不透明,未白名单一律转人工
|
|
440
|
+
if (isMCPTool(tool)) {
|
|
441
|
+
return false;
|
|
442
|
+
}
|
|
443
|
+
// fetch_url:先做确定性 SSRF 兜底,命中内网/链路本地/元数据等直接转人工,不交给模型
|
|
444
|
+
if (isFetchUrlTool(tool)) {
|
|
445
|
+
const url = (input.url || '').toString();
|
|
446
|
+
if (isBlockedFetchHost(url)) {
|
|
447
|
+
(0, log_1.logDebug)(`[Permission][AutoRun] fetch_url 命中内网/元数据 denylist,转人工: ${url}`);
|
|
448
|
+
return false;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
// 其余(fetch_url 通过兜底后等):交给快速模型判断(run_shell 已在 checkRunShellPermission 中提前判断)
|
|
452
|
+
try {
|
|
453
|
+
return (await classifyActionSafety(tool, input, signal, sessionId, agentId)) === 'safe';
|
|
454
|
+
}
|
|
455
|
+
catch (error) {
|
|
456
|
+
(0, log_1.logDebug)(`[Permission][AutoRun] 安全判断失败,转人工: ${error}`);
|
|
457
|
+
return false;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
251
460
|
// ==================== 权限请求 ====================
|
|
252
|
-
async function requestPermissionViaEvent(tool, input, prefix, abortController, agentId, sessionId, toolId, showAllow = true) {
|
|
461
|
+
async function requestPermissionViaEvent(tool, input, prefix, abortController, agentId, sessionId, toolId, showAllow = true, skipAutoRun = false) {
|
|
462
|
+
// AutoRun 档位:发出人工权限申请前,先尝试自动放行
|
|
463
|
+
// skipAutoRun=true 表示调用方(如 run_shell)已完成 AutoRun 判断,避免重复的快速模型调用
|
|
464
|
+
const runtime = (0, StateManager_1.getStateManager)().session(sessionId);
|
|
465
|
+
if (!skipAutoRun && runtime.isAutoRun()) {
|
|
466
|
+
if (await autoApproveInAutoRun(tool, input, abortController.signal, sessionId, agentId)) {
|
|
467
|
+
(0, errors_1.checkAbortSignal)(abortController);
|
|
468
|
+
(0, log_1.logDebug)(`[Permission][AutoRun]${tool.name} 自动放行`);
|
|
469
|
+
return { result: true };
|
|
470
|
+
}
|
|
471
|
+
(0, errors_1.checkAbortSignal)(abortController);
|
|
472
|
+
(0, log_1.logDebug)(`[Permission][AutoRun]${tool.name} 判定有风险,转人工申请`);
|
|
473
|
+
}
|
|
253
474
|
// 使用工具的 genToolPermission 方法获取 title 和 content
|
|
254
475
|
const permissionInfo = tool.genToolPermission?.(input);
|
|
255
476
|
const requestData = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionManager.js","sourceRoot":"","sources":["../../src/manager/PermissionManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PermissionManager.js","sourceRoot":"","sources":["../../src/manager/PermissionManager.ts"],"names":[],"mappings":"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"}
|