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.
Files changed (79) hide show
  1. package/dist/conf/config.d.ts +1 -0
  2. package/dist/conf/config.d.ts.map +1 -1
  3. package/dist/conf/config.js +3 -1
  4. package/dist/conf/config.js.map +1 -1
  5. package/dist/core/SemaEngine.d.ts +9 -3
  6. package/dist/core/SemaEngine.d.ts.map +1 -1
  7. package/dist/core/SemaEngine.js +85 -15
  8. package/dist/core/SemaEngine.js.map +1 -1
  9. package/dist/core/SemaSession.d.ts +10 -2
  10. package/dist/core/SemaSession.d.ts.map +1 -1
  11. package/dist/core/SemaSession.js +11 -1
  12. package/dist/core/SemaSession.js.map +1 -1
  13. package/dist/events/types.d.ts +5 -4
  14. package/dist/events/types.d.ts.map +1 -1
  15. package/dist/index.d.ts +1 -0
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/manager/CheckpointManager.d.ts +52 -0
  18. package/dist/manager/CheckpointManager.d.ts.map +1 -0
  19. package/dist/manager/CheckpointManager.js +206 -0
  20. package/dist/manager/CheckpointManager.js.map +1 -0
  21. package/dist/manager/PermissionManager.d.ts.map +1 -1
  22. package/dist/manager/PermissionManager.js +250 -29
  23. package/dist/manager/PermissionManager.js.map +1 -1
  24. package/dist/manager/StateManager.d.ts +16 -5
  25. package/dist/manager/StateManager.d.ts.map +1 -1
  26. package/dist/manager/StateManager.js +32 -20
  27. package/dist/manager/StateManager.js.map +1 -1
  28. package/dist/prompt/permission.d.ts +3 -0
  29. package/dist/prompt/permission.d.ts.map +1 -0
  30. package/dist/prompt/permission.js +58 -0
  31. package/dist/prompt/permission.js.map +1 -0
  32. package/dist/services/api/queryLLM.d.ts +2 -1
  33. package/dist/services/api/queryLLM.d.ts.map +1 -1
  34. package/dist/services/api/queryLLM.js +2 -1
  35. package/dist/services/api/queryLLM.js.map +1 -1
  36. package/dist/tools/EditNotebook.d.ts.map +1 -1
  37. package/dist/tools/EditNotebook.js +3 -0
  38. package/dist/tools/EditNotebook.js.map +1 -1
  39. package/dist/tools/PatchFile.d.ts.map +1 -1
  40. package/dist/tools/PatchFile.js +3 -0
  41. package/dist/tools/PatchFile.js.map +1 -1
  42. package/dist/tools/WriteFile.d.ts.map +1 -1
  43. package/dist/tools/WriteFile.js +3 -0
  44. package/dist/tools/WriteFile.js.map +1 -1
  45. package/dist/types/fork.d.ts +46 -0
  46. package/dist/types/fork.d.ts.map +1 -0
  47. package/dist/types/fork.js +3 -0
  48. package/dist/types/fork.js.map +1 -0
  49. package/dist/types/index.d.ts +1 -0
  50. package/dist/types/index.d.ts.map +1 -1
  51. package/dist/types/index.js.map +1 -1
  52. package/dist/types/message.d.ts +1 -0
  53. package/dist/types/message.d.ts.map +1 -1
  54. package/dist/types/session.d.ts +3 -1
  55. package/dist/types/session.d.ts.map +1 -1
  56. package/dist/util/commands.d.ts +2 -4
  57. package/dist/util/commands.d.ts.map +1 -1
  58. package/dist/util/commands.js +99 -13
  59. package/dist/util/commands.js.map +1 -1
  60. package/dist/util/diff.d.ts +13 -0
  61. package/dist/util/diff.d.ts.map +1 -1
  62. package/dist/util/diff.js +18 -0
  63. package/dist/util/diff.js.map +1 -1
  64. package/dist/util/history.d.ts.map +1 -1
  65. package/dist/util/history.js +15 -0
  66. package/dist/util/history.js.map +1 -1
  67. package/dist/util/savePath.d.ts +13 -1
  68. package/dist/util/savePath.d.ts.map +1 -1
  69. package/dist/util/savePath.js +24 -3
  70. package/dist/util/savePath.js.map +1 -1
  71. package/dist/util/snapshotStore.d.ts +29 -0
  72. package/dist/util/snapshotStore.d.ts.map +1 -0
  73. package/dist/util/snapshotStore.js +134 -0
  74. package/dist/util/snapshotStore.js.map +1 -0
  75. package/dist/util/topic.d.ts +2 -2
  76. package/dist/util/topic.d.ts.map +1 -1
  77. package/dist/util/topic.js +4 -3
  78. package/dist/util/topic.js.map +1 -1
  79. 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;AAkDzC,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;AAyFD,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"}
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
- function isRunShellCommandPermitted(tool, command, prefix, allowedTools) {
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
- allowedTools.includes(getPermissionKey(tool, { command }, prefix));
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
- const subCommands = (0, commands_1.splitCommand)(command);
184
- // LLM 提取前缀
185
- const commandInfo = await (0, commands_1.getCommandSubcommandPrefix)(command, abortController.signal);
186
- // 防止中断后,还继续处理如弹出权限选择
187
- (0, errors_1.checkAbortSignal)(abortController);
188
- if (!commandInfo || commandInfo.commandInjectionDetected) {
189
- return runShellToolHasExactMatch(tool, command, allowedTools)
190
- ? { result: true }
191
- : requestPermissionViaEvent(tool, { command }, null, abortController, agentId, sessionId, toolId, false);
192
- }
193
- if (subCommands.length < 2) {
194
- return isRunShellCommandPermitted(tool, command, commandInfo.commandPrefix, allowedTools)
195
- ? { result: true }
196
- : requestPermissionViaEvent(tool, { command }, commandInfo.commandPrefix, abortController, agentId, sessionId, toolId);
197
- }
198
- const allSubCommandsAllowed = subCommands.every(subCmd => {
199
- const prefixResult = commandInfo.subcommandPrefixes.get(subCmd);
200
- if (!prefixResult || prefixResult.commandInjectionDetected)
201
- return false;
202
- return isRunShellCommandPermitted(tool, subCmd, prefixResult.commandPrefix, allowedTools);
203
- });
204
- // 如果不是所有子命令都被允许,请求权限时使用主命令的前缀
205
- return allSubCommandsAllowed
206
- ? { result: true }
207
- : requestPermissionViaEvent(tool, { command }, commandInfo.commandPrefix, abortController, agentId, sessionId, toolId);
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":";;;AAmRA,wCAuBC;AAzSD,gDAAwD;AACxD,yCAAqN;AACrN,+CAA2E;AAC3E,qCAA4C;AAC5C,qCAAyD;AACzD,6CAAkF;AAClF,+CAA8C;AAC9C,uDAAmD;AAEnD,4CAAkD;AAClD,uCAA0C;AAC1C,+BAAoD;AACpD,+CAAmD;AACnD,iDAAgD;AAEhD,iDAAiD;AAEjD,SAAS,gBAAgB,CAAC,QAAgB,EAAE,IAAY;IACtD,MAAM,GAAG,GAAG,IAAA,iBAAU,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,cAAO,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACrE,MAAM,GAAG,GAAG,IAAA,eAAQ,EAAC,IAAA,2BAAgB,EAAC,IAAI,CAAC,EAAE,IAAA,2BAAgB,EAAC,GAAG,CAAC,CAAC,CAAA;IACnE,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,IAAI,CAAA;IACnC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAA,iBAAU,EAAC,GAAG,CAAC,CAAA;AAClD,CAAC;AAED,iDAAiD;AAEjD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY;IACjD,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IAC9B,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU;CACnF,CAAC,CAAA;AAEF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,2BAAoB;IACpB,2BAAoB;IACpB,8BAAuB;CACxB,CAAC,CAAA;AAEF,aAAa;AACb,MAAM,aAAa,GAAG,sBAAe,CAAA;AAErC,aAAa;AACb,MAAM,eAAe,GAAG,OAAO,CAAA;AAE/B,iBAAiB;AACjB,MAAM,mBAAmB,GAAG,0BAAmB,CAAA;AAO/C,oDAAoD;AAEpD,SAAS,cAAc,CAAC,IAAU;IAChC,OAAO,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC;AAED,SAAS,WAAW,CAAC,IAAU;IAC7B,OAAO,IAAI,CAAC,IAAI,KAAK,aAAa,CAAA;AACpC,CAAC;AAED,SAAS,SAAS,CAAC,IAAU;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;AAC9C,CAAC;AAED,SAAS,cAAc,CAAC,IAAU;IAChC,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAmB,CAAA;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,aAAa,GAAG,CAAC,GAAW,EAAiB,EAAE;IACnD,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAA;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAEM,MAAM,mBAAmB,GAAG,KAAK,EACtC,IAAU,EACV,KAAyB,EACzB,eAAgC,EAChC,iBAA0B,EAC1B,OAAe,EACf,SAAiB,EACjB,MAAc,EACkB,EAAE;IAClC,IAAA,yBAAgB,EAAC,eAAe,CAAC,CAAA;IAEjC,MAAM,UAAU,GAAG,IAAA,4BAAc,GAAE,CAAC,aAAa,EAAE,CAAA;IACnD,MAAM,aAAa,GAAG,IAAA,4BAAc,GAAE,CAAC,gBAAgB,EAAE,CAAA;IAGzD,aAAa;IACb,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,IAAI,UAAU,EAAE,sBAAsB,EAAE,CAAC;YACvC,IAAA,cAAQ,EAAC,eAAe,IAAI,CAAC,IAAI,SAAS,CAAC,CAAA;YAC3C,OAAO,EAAC,MAAM,EAAE,IAAI,EAAE,CAAA;QACxB,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,8BAAe,GAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACpD,IAAI,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;YACtC,IAAA,cAAQ,EAAC,eAAe,IAAI,CAAC,IAAI,gCAAgC,CAAC,CAAA;YAClE,oBAAoB;YACpB,MAAM,QAAQ,GAAG,IAAA,kBAAW,EAAC,KAAK,CAAC,CAAA;YACnC,IAAI,CAAC,QAAQ,IAAI,gBAAgB,CAAC,QAAQ,EAAE,IAAA,oBAAc,GAAE,CAAC,EAAE,CAAC;gBAC9D,IAAA,cAAQ,EAAC,eAAe,QAAQ,QAAQ,CAAC,CAAA;gBACzC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YACzB,CAAC;iBACI,CAAC;gBACJ,IAAA,cAAQ,EAAC,eAAe,QAAQ,eAAe,CAAC,CAAA;YAClD,CAAC;QACH,CAAC;QAED,IAAA,cAAQ,EAAC,eAAe,IAAI,CAAC,IAAI,iCAAiC,CAAC,CAAA;QAEnE,OAAO,yBAAyB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IAClG,CAAC;IAED,mBAAmB;IACnB,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,UAAU,EAAE,uBAAuB;YAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;QAEhE,MAAM,YAAY,GAAG,aAAa,EAAE,YAAY,IAAI,EAAE,CAAA;QACtD,MAAM,EAAE,OAAO,EAAE,GAAG,qBAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC3C,OAAO,MAAM,uBAAuB,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IAChH,CAAC;IAED,eAAe;IACf,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,IAAI,UAAU,EAAE,mBAAmB,EAAE,CAAC;YACpC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;QACzB,CAAC;QAED,MAAM,YAAY,GAAG,aAAa,EAAE,YAAY,IAAI,EAAE,CAAA;QACtD,MAAM,SAAS,GAAI,KAAa,CAAC,KAAK,IAAI,EAAE,CAAA;QAC5C,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;QAE1E,IAAI,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;QACzB,CAAC;QAED,OAAO,yBAAyB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IAClG,CAAC;IAED,aAAa;IACb,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,IAAI,UAAU,EAAE,qBAAqB,EAAE,CAAC;YACtC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;QACzB,CAAC;QAED,MAAM,YAAY,GAAG,aAAa,EAAE,YAAY,IAAI,EAAE,CAAA;QACtD,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;QACzB,CAAC;QAED,OAAO,yBAAyB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IAClG,CAAC;IAED,mBAAmB;IACnB,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,IAAI,UAAU,EAAE,sBAAsB,EAAE,CAAC;YACvC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;QACzB,CAAC;QAED,MAAM,YAAY,GAAG,aAAa,EAAE,YAAY,IAAI,EAAE,CAAA;QACtD,MAAM,GAAG,GAAI,KAAa,CAAC,GAAG,CAAA;QAE9B,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;YACjC,IAAI,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,mBAAmB,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YACzB,CAAC;QACH,CAAC;QAED,OAAO,yBAAyB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IAClG,CAAC;IAED,IAAA,cAAQ,EAAC,eAAe,IAAI,CAAC,IAAI,yCAAyC,CAAC,CAAA;IAE3E,WAAW;IACX,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;AACzB,CAAC,CAAA;AAxGY,QAAA,mBAAmB,uBAwG/B;AAED,6DAA6D;AAE7D,SAAS,yBAAyB,CAAC,IAAU,EAAE,OAAe,EAAE,YAAsB;IACpF,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAA;IAE3C,kCAAkC;IAClC,MAAM,gBAAgB,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAClD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAC3C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,gDAAgD;YAChD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACrF,IAAI,OAAO;gBAAE,OAAO,IAAI,CAAA;QAC1B,CAAC;aAAM,CAAC;YACN,yCAAyC;YACzC,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YACzC,IAAI,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC;gBAAE,OAAO,IAAI,CAAA;QACjD,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,CAAA;IACrD,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAE3C,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,CAAA;IAClE,OAAO,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;AAC7C,CAAC;AAED,SAAS,0BAA0B,CACjC,IAAU,EACV,OAAe,EACf,MAAqB,EACrB,YAAsB;IAEtB,OAAO,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC;QACtD,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC,CAAA;AAC3E,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,IAAU,EACV,OAAe,EACf,eAAgC,EAChC,YAAsB,EACtB,OAAe,EACf,SAAiB,EACjB,MAAc;IAEd,cAAc;IACd,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,IAAA,oBAAc,GAAE,MAAM,EAAE,EAAE,CAAC,CAAA;IAE3D,gBAAgB;IAChB,IAAI,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC;QAC3D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IACzB,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,uBAAY,EAAC,OAAO,CAAC,CAAA;IACzC,WAAW;IACX,MAAM,WAAW,GAAG,MAAM,IAAA,qCAA0B,EAAC,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;IAErF,qBAAqB;IACrB,IAAA,yBAAgB,EAAC,eAAe,CAAC,CAAA;IAEjC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,wBAAwB,EAAE,CAAC;QACzD,OAAO,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC;YAC3D,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;YAClB,CAAC,CAAC,yBAAyB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IAC5G,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,0BAA0B,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC;YACvF,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;YAClB,CAAC,CAAC,yBAAyB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IAC1H,CAAC;IAED,MAAM,qBAAqB,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QACvD,MAAM,YAAY,GAAG,WAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC/D,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,wBAAwB;YAAE,OAAO,KAAK,CAAA;QACxE,OAAO,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;IAC3F,CAAC,CAAC,CAAA;IAEF,8BAA8B;IAC9B,OAAO,qBAAqB;QAC1B,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;QAClB,CAAC,CAAC,yBAAyB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;AAC1H,CAAC;AAED,iDAAiD;AAE1C,KAAK,UAAU,cAAc,CAClC,IAAU,EACV,KAAyB,EACzB,MAAqB,EACrB,SAAiB;IAEjB,aAAa;IACb,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,IAAA,8BAAe,GAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,yBAAyB,EAAE,CAAA;QAChE,OAAM;IACR,CAAC;IAED,wBAAwB;IACxB,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACjD,MAAM,WAAW,GAAG,IAAA,4BAAc,GAAE,CAAA;IACpC,MAAM,aAAa,GAAG,WAAW,CAAC,gBAAgB,EAAE,CAAA;IAEpD,IAAI,aAAa,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAM;IAErD,MAAM,MAAM,GAAG,aAAa,IAAI,EAAE,YAAY,EAAE,EAAc,EAAE,CAAA;IAChE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC7B,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAA;IAC1B,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;AACtC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAU,EAAE,KAAyB,EAAE,MAAqB;IACpF,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,GAAG,mBAAQ,CAAC,IAAI,IAAI,MAAM,KAAK,CAAA;QACxC,CAAC;QACD,OAAO,GAAG,mBAAQ,CAAC,IAAI,IAAK,KAAa,CAAC,OAAO,IAAI,EAAE,GAAG,CAAA;IAC5D,CAAC;IAED,sCAAsC;IACtC,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,SAAS,GAAI,KAAa,CAAC,KAAK,IAAI,EAAE,CAAA;QAC5C,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAC7D,CAAC;IAED,qBAAqB;IACrB,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,2CAA2C;IAC3C,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,GAAI,KAAa,CAAC,GAAG,IAAI,EAAE,CAAA;QACpC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QACjC,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IACvD,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAA;AAClB,CAAC;AAED,iDAAiD;AAEjD,KAAK,UAAU,yBAAyB,CACtC,IAAU,EACV,KAAyB,EACzB,MAAqB,EACrB,eAAgC,EAChC,OAAe,EACf,SAAiB,EACjB,MAAc,EACd,SAAS,GAAG,IAAI;IAGhB,+CAA+C;IAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,KAAY,CAAC,CAAA;IAE7D,MAAM,WAAW,GAA8B;QAC7C,OAAO;QACP,MAAM;QACN,QAAQ,EAAE,IAAI,CAAC,IAAI;QACnB,KAAK,EAAE,cAAc,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI;QACzC,OAAO,EAAE,cAAc,EAAE,OAAO,IAAI,EAAE;QACtC,OAAO,EAAE,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;KAChE,CAAA;IAED,MAAM,QAAQ,GAAG,IAAA,yBAAW,GAAE,CAAA;IAC9B,QAAQ,CAAC,IAAI,CAAC,yBAAyB,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;IAEhE,OAAO,IAAI,OAAO,CAAwB,CAAC,OAAO,EAAE,EAAE;QACpD,eAAe;QACf,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,QAAQ,CAAC,GAAG,CAAC,0BAA0B,EAAE,cAAc,CAAC,CAAA;YACxD,eAAe,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAA;QACvE,CAAC,CAAA;QAED,MAAM,cAAc,GAAG,CAAC,QAAgC,EAAE,EAAE;YAC1D,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM;gBAAE,OAAM;YAEtC,aAAa,EAAE,CAAA;YAEf,IAAA,aAAO,EAAC,aAAa,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAA;YAC1C,QAAQ,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAE1B,KAAK,OAAO;oBACV,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;oBACzB,MAAK;gBAEP,KAAK,OAAO;oBACV,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;yBAC3C,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;yBACrC,KAAK,CAAC,KAAK,CAAC,EAAE;wBACb,IAAA,cAAQ,EAAC,UAAU,KAAK,EAAE,CAAC,CAAA;wBAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;oBAC3B,CAAC,CAAC,CAAA;oBACJ,MAAK;gBAEP,KAAK,QAAQ;oBACX,qCAAqC;oBACrC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;oBAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAU,EAAE,CAAC,CAAA;oBAC/C,MAAK;gBAEP;oBACE,2BAA2B;oBAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAA,kCAAwB,EAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;oBAChF,MAAK;YACT,CAAC;QACH,CAAC,CAAA;QAED,sBAAsB;QACtB,MAAM,gBAAgB,GAAG,GAAG,EAAE;YAC5B,4BAA4B;YAC5B,yCAAyC;YACzC,MAAM,WAAW,GAAI,eAAe,CAAC,MAAc,CAAC,MAAM,CAAA;YAC1D,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAC7B,OAAM;YACR,CAAC;YAED,aAAa,EAAE,CAAA;YACf,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAU,EAAE,CAAC,CAAA;QACjD,CAAC,CAAA;QAED,YAAY;QACZ,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACnC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAU,EAAE,CAAC,CAAA;YAC/C,OAAM;QACR,CAAC;QAED,QAAQ,CAAC,EAAE,CAAC,0BAA0B,EAAE,cAAc,EAAE,SAAS,CAAC,CAAA;QAClE,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAA;IACpE,CAAC,CAAC,CAAA;AACJ,CAAC;AAGD,SAAS,sBAAsB,CAC7B,IAAU,EACV,KAAyB,EACzB,MAAqB,EACrB,SAAS,GAAG,IAAI;IAEhB,cAAc;IACd,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,CAAE,KAAa,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QAErD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;QACtC,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,gBAAgB,MAAM,UAAU;gBACvC,MAAM,EAAE,IAAI;aACb,CAAA;QACH,CAAC;QAED,MAAM,SAAS,GAAG,OAAO;YACvB,CAAC,CAAC,gBAAgB,OAAO,OAAO;YAChC,CAAC,CAAC,eAAe,CAAA;QAEnB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IACxD,CAAC;IAED,OAAO;IACP,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,kBAAkB;YACzB,MAAM,EAAE,IAAI;SACb,CAAA;IACH,CAAC;IAED,WAAW;IACX,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,SAAS,GAAI,KAAa,CAAC,KAAK,IAAI,EAAE,CAAA;QAC5C,OAAO;YACL,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,SAAS;gBACd,CAAC,CAAC,cAAc,SAAS,QAAQ;gBACjC,CAAC,CAAC,qBAAqB;YACzB,MAAM,EAAE,IAAI;SACb,CAAA;IACH,CAAC;IAED,SAAS;IACT,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO;YACL,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,cAAc,IAAI,CAAC,IAAI,KAAK;YACnC,MAAM,EAAE,IAAI;SACb,CAAA;IACH,CAAC;IAED,eAAe;IACf,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,GAAI,KAAa,CAAC,GAAG,IAAI,EAAE,CAAA;QACpC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QACjC,OAAO;YACL,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,MAAM;gBACX,CAAC,CAAC,cAAc,MAAM,KAAK;gBAC3B,CAAC,CAAC,eAAe;YACnB,MAAM,EAAE,IAAI;SACb,CAAA;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,cAAc,IAAI,CAAC,IAAI,KAAK;QACnC,MAAM,EAAE,IAAI;KACb,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"PermissionManager.js","sourceRoot":"","sources":["../../src/manager/PermissionManager.ts"],"names":[],"mappings":"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"}