sema-core 2.0.7 → 2.0.9

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 (62) hide show
  1. package/dist/core/Conversation.d.ts.map +1 -1
  2. package/dist/core/Conversation.js +3 -0
  3. package/dist/core/Conversation.js.map +1 -1
  4. package/dist/core/SemaCore.d.ts.map +1 -1
  5. package/dist/core/SemaCore.js +10 -2
  6. package/dist/core/SemaCore.js.map +1 -1
  7. package/dist/core/SemaEngine.d.ts +7 -1
  8. package/dist/core/SemaEngine.d.ts.map +1 -1
  9. package/dist/core/SemaEngine.js +94 -23
  10. package/dist/core/SemaEngine.js.map +1 -1
  11. package/dist/core/SemaSession.d.ts +2 -1
  12. package/dist/core/SemaSession.d.ts.map +1 -1
  13. package/dist/core/SemaSession.js +2 -2
  14. package/dist/core/SemaSession.js.map +1 -1
  15. package/dist/events/types.d.ts +2 -0
  16. package/dist/events/types.d.ts.map +1 -1
  17. package/dist/index.d.ts +1 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/manager/ConfManager.d.ts.map +1 -1
  20. package/dist/manager/ConfManager.js +7 -0
  21. package/dist/manager/ConfManager.js.map +1 -1
  22. package/dist/manager/PermissionManager.d.ts.map +1 -1
  23. package/dist/manager/PermissionManager.js +101 -48
  24. package/dist/manager/PermissionManager.js.map +1 -1
  25. package/dist/manager/StateManager.d.ts +12 -1
  26. package/dist/manager/StateManager.d.ts.map +1 -1
  27. package/dist/manager/StateManager.js +18 -0
  28. package/dist/manager/StateManager.js.map +1 -1
  29. package/dist/prompt/permission.d.ts +1 -2
  30. package/dist/prompt/permission.d.ts.map +1 -1
  31. package/dist/prompt/permission.js +43 -65
  32. package/dist/prompt/permission.js.map +1 -1
  33. package/dist/prompt/system.d.ts +1 -1
  34. package/dist/prompt/system.d.ts.map +1 -1
  35. package/dist/prompt/system.js +1 -1
  36. package/dist/prompt/tools/runShell.d.ts.map +1 -1
  37. package/dist/prompt/tools/runShell.js +3 -2
  38. package/dist/prompt/tools/runShell.js.map +1 -1
  39. package/dist/tools/ViewFile.d.ts +13 -3
  40. package/dist/tools/ViewFile.d.ts.map +1 -1
  41. package/dist/tools/ViewFile.js +9 -0
  42. package/dist/tools/ViewFile.js.map +1 -1
  43. package/dist/types/index.d.ts +4 -2
  44. package/dist/types/index.d.ts.map +1 -1
  45. package/dist/types/index.js +1 -0
  46. package/dist/types/index.js.map +1 -1
  47. package/dist/types/message.d.ts +5 -0
  48. package/dist/types/message.d.ts.map +1 -1
  49. package/dist/util/autoRunContext.d.ts +21 -0
  50. package/dist/util/autoRunContext.d.ts.map +1 -0
  51. package/dist/util/autoRunContext.js +121 -0
  52. package/dist/util/autoRunContext.js.map +1 -0
  53. package/dist/util/inputQueue.d.ts +2 -0
  54. package/dist/util/inputQueue.d.ts.map +1 -1
  55. package/dist/util/inputQueue.js.map +1 -1
  56. package/dist/util/message.d.ts.map +1 -1
  57. package/dist/util/message.js +29 -1
  58. package/dist/util/message.js.map +1 -1
  59. package/dist/util/shellSafety.d.ts.map +1 -1
  60. package/dist/util/shellSafety.js +88 -1
  61. package/dist/util/shellSafety.js.map +1 -1
  62. package/package.json +1 -1
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.summarizeActionLine = summarizeActionLine;
4
+ exports.extractAutoRunContext = extractAutoRunContext;
5
+ const file_1 = require("./file");
6
+ const define_1 = require("../prompt/define");
7
+ const tool_1 = require("../prompt/tool");
8
+ // 参数值截断上限:命令 / prompt 可能很长,截断避免压缩后的上下文再度膨胀
9
+ const MAX_VALUE_LEN = 300;
10
+ // 保留紧凑摘要的编辑类工具(只取文件路径,内容对安全判断权重低)
11
+ const EDIT_TOOL_NAMES = new Set([
12
+ tool_1.TOOL_NAME_WRITE_FILE,
13
+ tool_1.TOOL_NAME_PATCH_FILE,
14
+ tool_1.TOOL_NAME_EDIT_NOTEBOOK,
15
+ ]);
16
+ function truncate(value, max = MAX_VALUE_LEN) {
17
+ const t = value.trim();
18
+ return t.length > max ? `${t.slice(0, max)}…` : t;
19
+ }
20
+ // 剥掉 <reminder-sys>…</reminder-sys> 包裹的内容(含标签,跨行)。
21
+ // 环境/规则/文件引用/中途注入提示等都被包在这里,对"下一步动作是否安全"是噪声。
22
+ function stripReminderSys(text) {
23
+ const re = new RegExp(`${define_1.REMINDER_SYS_OPEN}[\\s\\S]*?${define_1.REMINDER_SYS_CLOSE}`, 'g');
24
+ return text.replace(re, '');
25
+ }
26
+ function safeStringify(input) {
27
+ try {
28
+ return JSON.stringify(input) ?? '';
29
+ }
30
+ catch {
31
+ return '(unserializable)';
32
+ }
33
+ }
34
+ // 把「有副作用/轨迹价值」的三类工具概括成一行;非这三类返回 null。
35
+ // 历史提取与待判断动作共用同一套紧凑格式,保证模型看到的行文一致。
36
+ function compactSideEffectLine(name, input) {
37
+ // run_shell:安全闸门最核心的对象,前序命令构成"轨迹",保留完整命令
38
+ if (name === tool_1.TOOL_NAME_RUN_SHELL) {
39
+ const command = truncate(String(input.command ?? ''));
40
+ return command ? `${tool_1.TOOL_NAME_RUN_SHELL} ${command}` : null;
41
+ }
42
+ // fetch_url:外连轨迹(数据外泄/内网访问是明确 risky 类别)
43
+ if (name === tool_1.TOOL_NAME_FETCH_URL) {
44
+ const url = String(input.url ?? '').trim();
45
+ if (!url)
46
+ return null;
47
+ const prompt = truncate(String(input.prompt ?? ''));
48
+ return prompt ? `${tool_1.TOOL_NAME_FETCH_URL} ${url}: ${prompt}` : `${tool_1.TOOL_NAME_FETCH_URL} ${url}`;
49
+ }
50
+ // 编辑/创建类:只取文件路径(判断项目内外 / 系统文件)
51
+ if (EDIT_TOOL_NAMES.has(name)) {
52
+ const filePath = (0, file_1.getFilePath)(input);
53
+ return filePath ? `${name} ${filePath}` : null;
54
+ }
55
+ // 其余(view_file / search_* / todo / cron 等只读或无副作用工具)丢弃
56
+ return null;
57
+ }
58
+ // 历史中的 tool_use:仅保留三类紧凑行,其余丢弃
59
+ function summarizeToolUse(block) {
60
+ return compactSideEffectLine(block.name, (block.input || {}));
61
+ }
62
+ /**
63
+ * 待判断动作的一行紧凑摘要,与历史行同格式(run_shell <command> / fetch_url <url>: <prompt>
64
+ * / <editTool> <path>)。三类之外的工具(skill/mcp/其它)用紧凑兜底,保证任意动作都有可读描述。
65
+ */
66
+ function summarizeActionLine(name, input) {
67
+ const line = compactSideEffectLine(name, input);
68
+ if (line)
69
+ return line;
70
+ return `${name} ${safeStringify(input)}`;
71
+ }
72
+ /**
73
+ * 将会话历史压缩成一串纯 text 块,供 AutoRun 安全判断作为上下文。
74
+ *
75
+ * 只保留两类信号:
76
+ * 1) 用户输入文本(剥掉 reminder-sys 包裹的内容)
77
+ * 2) run_shell / fetch_url / 编辑工具的紧凑摘要(tool_use)
78
+ *
79
+ * 丢弃:tool_result(工具执行结果)、assistant 文本 / 思考、图片、其余只读工具的 tool_use。
80
+ * 保持原始时间顺序,一条 assistant 里多个 tool_use 会展开成多行。
81
+ */
82
+ function extractAutoRunContext(messages) {
83
+ const blocks = [];
84
+ const pushUserText = (raw) => {
85
+ const text = stripReminderSys(raw).trim();
86
+ if (text)
87
+ blocks.push({ type: 'text', text: `User: ${text}` });
88
+ };
89
+ for (const msg of messages) {
90
+ const content = msg.message.content;
91
+ if (msg.type === 'user') {
92
+ if (typeof content === 'string') {
93
+ pushUserText(content);
94
+ continue;
95
+ }
96
+ // 含 tool_result 的 user 消息是「工具结果载体」(合成消息):其 text 块要么是工具追加块
97
+ // (如 skill 载入的整段提示词),要么是注入提醒,均非真实用户输入 → 整条跳过。
98
+ // 真实用户输入消息不含 tool_result,不受影响。
99
+ if (content.some(b => b.type === 'tool_result'))
100
+ continue;
101
+ // 用户消息:只取 text 块(剥 reminder-sys),丢弃 image 等
102
+ for (const b of content) {
103
+ if (b.type === 'text')
104
+ pushUserText(b.text);
105
+ }
106
+ continue;
107
+ }
108
+ // assistant 消息:只取 tool_use 块,丢弃 text / thinking
109
+ if (typeof content === 'string')
110
+ continue;
111
+ for (const b of content) {
112
+ if (b.type !== 'tool_use')
113
+ continue;
114
+ const line = summarizeToolUse(b);
115
+ if (line)
116
+ blocks.push({ type: 'text', text: line });
117
+ }
118
+ }
119
+ return blocks;
120
+ }
121
+ //# sourceMappingURL=autoRunContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoRunContext.js","sourceRoot":"","sources":["../../src/util/autoRunContext.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  /**
2
2
  * 输入队列批处理工具
3
3
  */
4
+ import type { InputImageAttachment } from '../types/message';
4
5
  type InputItem = {
5
6
  inputId: string;
6
7
  input: string;
7
8
  originalInput?: string;
8
9
  silent?: boolean;
10
+ attachments?: InputImageAttachment[];
9
11
  };
10
12
  /**
11
13
  * 从待处理队列中取出下一批输入
@@ -1 +1 @@
1
- {"version":3,"file":"inputQueue.d.ts","sourceRoot":"","sources":["../../src/util/inputQueue.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,KAAK,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAE7F;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAiB/D"}
1
+ {"version":3,"file":"inputQueue.d.ts","sourceRoot":"","sources":["../../src/util/inputQueue.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAE5D,KAAK,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAA;CAAE,CAAA;AAEnI;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAiB/D"}
@@ -1 +1 @@
1
- {"version":3,"file":"inputQueue.js","sourceRoot":"","sources":["../../src/util/inputQueue.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAWH,sCAiBC;AAxBD;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,OAAoB;IAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEnC,cAAc;IACd,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,aAAa;IACb,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;IACtE,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1B,YAAY;QACZ,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC1B,CAAC;IAED,gBAAgB;IAChB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;AAC1C,CAAC"}
1
+ {"version":3,"file":"inputQueue.js","sourceRoot":"","sources":["../../src/util/inputQueue.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAaH,sCAiBC;AAxBD;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,OAAoB;IAChD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEnC,cAAc;IACd,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,aAAa;IACb,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;IACtE,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1B,YAAY;QACZ,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC1B,CAAC;IAED,gBAAgB;IAChB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,CAAA;AAC1C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/util/message.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAA;AAGzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAMzC,eAAO,MAAM,iBAAiB,kCAAkC,CAAA;AAChE,eAAO,MAAM,kBAAkB,mCACG,CAAA;AAClC,eAAO,MAAM,UAAU,2EAA2E,CAAA;AAClG,eAAO,MAAM,UAAU,2EAA2E,CAAA;AAGlG,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,eAAO,MAAM,cAAc,cAAc,CAAA;AAKzC,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAGD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,iBAAiB,EAAE,EAC/C,aAAa,CAAC,EAAE,iBAAiB,EACjC,aAAa,CAAC,EAAE,iBAAiB,GAChC,OAAO,CAQT;AAGD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,eAAe,EAAE,SAAS,CAAC,iBAAiB,EAAE,EAC9C,cAAc,EAAE,OAAO,EAAE,EACzB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,MAAM,EACjB,YAAY,GAAE,OAAe,GAC5B,SAAS,CAAC,iBAAiB,EAAE,CA6B/B;AAGD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,OAAO,EAAE,GAClB,CAAC,OAAO,GAAG,SAAS,CAAC,EAAE,CAwGzB"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/util/message.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAA;AAGzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAMzC,eAAO,MAAM,iBAAiB,kCAAkC,CAAA;AAChE,eAAO,MAAM,kBAAkB,mCACG,CAAA;AAClC,eAAO,MAAM,UAAU,2EAA2E,CAAA;AAClG,eAAO,MAAM,UAAU,2EAA2E,CAAA;AAGlG,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,eAAO,MAAM,cAAc,cAAc,CAAA;AAKzC,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAGD,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,iBAAiB,EAAE,EAC/C,aAAa,CAAC,EAAE,iBAAiB,EACjC,aAAa,CAAC,EAAE,iBAAiB,GAChC,OAAO,CAQT;AAGD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,eAAe,EAAE,SAAS,CAAC,iBAAiB,EAAE,EAC9C,cAAc,EAAE,OAAO,EAAE,EACzB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,MAAM,EACjB,YAAY,GAAE,OAAe,GAC5B,SAAS,CAAC,iBAAiB,EAAE,CA6B/B;AAuBD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,OAAO,EAAE,GAClB,CAAC,OAAO,GAAG,SAAS,CAAC,EAAE,CAkHzB"}
@@ -64,6 +64,23 @@ function buildAdditionalReminders(systemReminders, messageHistory, agentMode, se
64
64
  }
65
65
  return reminders;
66
66
  }
67
+ // 将 user 消息内容中的 tool_result 块统一排到最前面(稳定排序)
68
+ // Anthropic API 要求:assistant 有多个 tool_use 时,下一条 user 消息里所有 tool_result
69
+ // 必须连续排在最前面。若中间夹入 text 等其它块(如 skill 的 additionalBlocks),
70
+ // 合并后会打断 tool_result 的连续性,导致 400 "tool_use ids were found without
71
+ // tool_result blocks immediately after"
72
+ function reorderToolResultsFirst(content) {
73
+ if (!Array.isArray(content))
74
+ return content;
75
+ const hasToolResult = content.some(block => block.type === 'tool_result');
76
+ const hasOther = content.some(block => block.type !== 'tool_result');
77
+ // 无需重排:没有 tool_result,或全是 tool_result
78
+ if (!hasToolResult || !hasOther)
79
+ return content;
80
+ const toolResults = content.filter(block => block.type === 'tool_result');
81
+ const others = content.filter(block => block.type !== 'tool_result');
82
+ return [...toolResults, ...others];
83
+ }
67
84
  // 处理消息规范化:删除空assistant消息,合并连续user消息,处理空tool_use
68
85
  function prepareMessagesForApi(messages) {
69
86
  const result = [];
@@ -157,6 +174,17 @@ function prepareMessagesForApi(messages) {
157
174
  }
158
175
  }
159
176
  });
160
- return result;
177
+ // 最终归一化:确保每条 user 消息里的 tool_result 块都排在最前面
178
+ return result.map(message => {
179
+ if (message.type !== 'user')
180
+ return message;
181
+ const reordered = reorderToolResultsFirst(message.message.content);
182
+ if (reordered === message.message.content)
183
+ return message;
184
+ return {
185
+ ...message,
186
+ message: { ...message.message, content: reordered },
187
+ };
188
+ });
161
189
  }
162
190
  //# sourceMappingURL=message.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/util/message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/util/message.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"shellSafety.d.ts","sourceRoot":"","sources":["../../src/util/shellSafety.ts"],"names":[],"mappings":"AAsBA;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAOvD;AAqBD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQ5D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE9D;AAWD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAW9D"}
1
+ {"version":3,"file":"shellSafety.d.ts","sourceRoot":"","sources":["../../src/util/shellSafety.ts"],"names":[],"mappings":"AAyGA;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAOvD;AAqBD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQ5D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE9D;AAeD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAW9D"}
@@ -18,9 +18,89 @@ const DANGEROUS_FIND_FLAGS = /(^|\s)-(exec(dir)?|ok(dir)?|delete|fprintf?|fls)\b
18
18
  const SAFE_FULL_COMMANDS = new Set([
19
19
  'git status', 'git diff', 'git log', 'git branch',
20
20
  ]);
21
+ // git 只读子命令:仅输出、不改动仓库/工作区。带这些子命令的 git 命令可直接放行
22
+ // (仍需通过下方 DANGEROUS_GIT_FLAGS 兜底)。
23
+ // 刻意排除 config / tag / branch / remote / stash 等——它们带参数即可写(如
24
+ // `git config k v`、`git tag x`、`git branch -D`、`git remote add`),无法只看子命令放行。
25
+ // 刻意排除 help——它会拉起 man/pager/浏览器(git help -w),属同类外部命令向量。
26
+ const READONLY_GIT_SUBCOMMANDS = new Set([
27
+ 'log', 'show', 'diff', 'status', 'blame', 'reflog', 'shortlog', 'describe',
28
+ 'rev-parse', 'rev-list', 'ls-files', 'ls-tree', 'cat-file', 'whatchanged',
29
+ 'name-rev', 'grep', 'cherry', 'count-objects', 'var', 'version',
30
+ ]);
31
+ // 纯过滤器:读 stdin/文件、默认只写 stdout,可作为只读管道的一段直接放行。
32
+ // 注意 sort / uniq 仍有写文件的口子,由 isReadonlyFilterCommand 单独兜底。
33
+ const READONLY_FILTER_COMMANDS = new Set([
34
+ 'sort', 'uniq', 'nl', 'tac', 'rev', 'cut', 'tr', 'column', 'comm',
35
+ ]);
36
+ // sort 写文件 flag:-o / -ofile / 组合短选项含 o(如 -no) / --output。命中则该 sort 不只读。
37
+ const SORT_WRITE_FLAG_RE = /(^|\s)(-[a-z]*o|--output)/;
38
+ // 统计 uniq 的操作数个数(INPUT/OUTPUT)。
39
+ // - 单独的 `-` 是合法 stdin 操作数,须计入
40
+ // - `--` 是 end-of-options,其后所有 token(含以 - 开头的)一律算操作数,
41
+ // 否则 `uniq -- in -out` 会把 -out 当 flag 漏算,绕过写文件拦截
42
+ function countUniqOperands(args) {
43
+ const dd = args.indexOf('--');
44
+ if (dd >= 0) {
45
+ const before = args.slice(0, dd).filter(t => t === '-' || !t.startsWith('-'));
46
+ return before.length + (args.length - dd - 1);
47
+ }
48
+ return args.filter(t => t === '-' || !t.startsWith('-')).length;
49
+ }
50
+ /**
51
+ * 判断单个子命令是否为「只读过滤器」,可直接放行。
52
+ * 多数过滤器只写 stdout,但 sort 可经 -o 写文件、uniq 第二个位置参数即输出文件,单独拦截。
53
+ */
54
+ function isReadonlyFilterCommand(seg) {
55
+ const tokens = seg.trim().split(/\s+/);
56
+ const first = tokens[0];
57
+ if (!first || !READONLY_FILTER_COMMANDS.has(first))
58
+ return false;
59
+ // sort -o/--output 把结果写入文件
60
+ if (first === 'sort' && SORT_WRITE_FLAG_RE.test(seg))
61
+ return false;
62
+ // uniq [INPUT [OUTPUT]]:出现第二个位置参数即写文件,保守拒绝 2+ 个操作数。
63
+ if (first === 'uniq' && countUniqOperands(tokens.slice(1)) >= 2)
64
+ return false;
65
+ return true;
66
+ }
67
+ // git 危险 flag:即便子命令只读也可能执行命令或写文件,命中则不走只读快速通道。
68
+ // -c <k=v> 覆盖任意配置 → core.pager/alias/diff 驱动可执行任意命令
69
+ // --exec-path/--exec 指定/执行外部程序
70
+ // --ext-diff 启用外部 diff 驱动(可执行配置的外部命令)
71
+ // --output[=] 把输出写入文件(git diff --output=...)
72
+ // --open-files-in-pager / -O[<pager>] 用指定 pager 打开匹配文件 → 执行任意命令
73
+ // (git grep -O'sh -c …');-O 支持附着值,故用 -[A-Za-z]*O 兼顾 -Oless / -nO 等形式
74
+ const DANGEROUS_GIT_FLAGS = /(^|\s)(?:(?:-c|--exec-path|--exec|--ext-diff|--output|--open-files-in-pager)(?:\s|=|$)|-[A-Za-z]*O)/;
75
+ /**
76
+ * 判断单个子命令是否为「只读 git 命令」,可直接放行。
77
+ * 要求:首词为 git、第二词为只读子命令、且整段不含危险 flag。
78
+ * 形如 `git -C /path log`(git 与子命令间夹带需取值的全局选项)不识别为只读 →
79
+ * 退回人工确认,安全优先。
80
+ */
81
+ function isReadonlyGitCommand(seg) {
82
+ const tokens = seg.trim().split(/\s+/);
83
+ if (tokens[0] !== 'git')
84
+ return false;
85
+ const sub = tokens[1];
86
+ if (!sub || !READONLY_GIT_SUBCOMMANDS.has(sub))
87
+ return false;
88
+ if (DANGEROUS_GIT_FLAGS.test(seg))
89
+ return false;
90
+ return true;
91
+ }
21
92
  // 段内重定向:> >> < << <<< >| <> n> n>> &> 等。命中则不走只读快速通道,
22
93
  // 防止 `echo x > /etc/passwd`、`cat secret > file` 这类「只读首词 + 重定向」变成写文件原语。
23
94
  const REDIRECTION_RE = /(^|\s)\d*(?:>>|<<<|<<|>\||<>|<&|>&|>|<)/;
95
+ // 无副作用重定向:不写真实文件、不读任意文件,剥离后不影响只读判定。
96
+ // n>/dev/null、n>>/dev/null、n</dev/null —— 丢弃/空输入到 /dev/null(要求紧跟边界,
97
+ // 排除 /dev/null/../etc 与 /dev/nullx 等伪装)
98
+ // n>&m、>&-、2>&1 —— fd 合并/关闭,不产生文件(splitCommand 会把 2>&1 规范化为 2>& 1)
99
+ // 仅 /dev/null 与 fd 复制视为安全,重定向到其它路径一律保留交 REDIRECTION_RE 拦截。
100
+ const SAFE_REDIR_RE = /(?<=^|\s)(?:\d*(?:>>?|<)\s*\/dev\/null(?=\s|$)|\d*>&\s*(?:\d+|-)(?=\s|$))/g;
101
+ function stripSafeRedirections(seg) {
102
+ return seg.replace(SAFE_REDIR_RE, ' ');
103
+ }
24
104
  /**
25
105
  * 命令是否含重定向。用于「前缀授权」纵深防御:前缀匹配只看首词,
26
106
  * 而 `echo x > file` 的危险来自重定向,故含重定向的命令不应被前缀授权覆盖,
@@ -87,9 +167,16 @@ function isUnsafeForPrefixAuth(command) {
87
167
  return hasRedirection(command) || hasDangerousCommand(command);
88
168
  }
89
169
  function isReadonlySafeSubcommand(seg) {
90
- const s = seg.trim();
170
+ if (!seg.trim())
171
+ return false;
172
+ // 先剥离「无副作用」重定向(丢弃到 /dev/null、fd 合并/关闭),残留任何重定向仍按危险拦截
173
+ const s = stripSafeRedirections(seg).trim();
91
174
  if (!s || REDIRECTION_RE.test(s))
92
175
  return false;
176
+ if (isReadonlyGitCommand(s))
177
+ return true;
178
+ if (isReadonlyFilterCommand(s))
179
+ return true;
93
180
  const first = s.split(/\s+/)[0];
94
181
  if (!READONLY_COMMANDS.has(first))
95
182
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"shellSafety.js","sourceRoot":"","sources":["../../src/util/shellSafety.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shellSafety.js","sourceRoot":"","sources":["../../src/util/shellSafety.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sema-core",
3
- "version": "2.0.7",
3
+ "version": "2.0.9",
4
4
  "description": "Event-driven core library for Sema AI assistant",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",