sema-core 2.0.14 → 2.0.16

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 (94) hide show
  1. package/README.md +1 -31
  2. package/dist/core/Conversation.d.ts.map +1 -1
  3. package/dist/core/Conversation.js +6 -3
  4. package/dist/core/Conversation.js.map +1 -1
  5. package/dist/core/SemaCore.d.ts +4 -2
  6. package/dist/core/SemaCore.d.ts.map +1 -1
  7. package/dist/core/SemaCore.js +4 -2
  8. package/dist/core/SemaCore.js.map +1 -1
  9. package/dist/core/SemaEngine.d.ts.map +1 -1
  10. package/dist/core/SemaEngine.js +23 -3
  11. package/dist/core/SemaEngine.js.map +1 -1
  12. package/dist/events/types.d.ts +9 -0
  13. package/dist/events/types.d.ts.map +1 -1
  14. package/dist/manager/ConfManager.d.ts.map +1 -1
  15. package/dist/manager/ConfManager.js +2 -16
  16. package/dist/manager/ConfManager.js.map +1 -1
  17. package/dist/manager/PermissionManager.d.ts.map +1 -1
  18. package/dist/manager/PermissionManager.js +81 -6
  19. package/dist/manager/PermissionManager.js.map +1 -1
  20. package/dist/prompt/compact.d.ts +15 -1
  21. package/dist/prompt/compact.d.ts.map +1 -1
  22. package/dist/prompt/compact.js +59 -18
  23. package/dist/prompt/compact.js.map +1 -1
  24. package/dist/prompt/inputPredict.d.ts +2 -0
  25. package/dist/prompt/inputPredict.d.ts.map +1 -0
  26. package/dist/prompt/inputPredict.js +44 -0
  27. package/dist/prompt/inputPredict.js.map +1 -0
  28. package/dist/prompt/permission.d.ts +1 -1
  29. package/dist/prompt/permission.d.ts.map +1 -1
  30. package/dist/prompt/permission.js +38 -5
  31. package/dist/prompt/permission.js.map +1 -1
  32. package/dist/services/agents/genSystemReminder.d.ts +10 -1
  33. package/dist/services/agents/genSystemReminder.d.ts.map +1 -1
  34. package/dist/services/agents/genSystemReminder.js +48 -2
  35. package/dist/services/agents/genSystemReminder.js.map +1 -1
  36. package/dist/services/commands/runCommand.d.ts.map +1 -1
  37. package/dist/services/commands/runCommand.js +13 -3
  38. package/dist/services/commands/runCommand.js.map +1 -1
  39. package/dist/services/mcp/MCPManager.d.ts +19 -5
  40. package/dist/services/mcp/MCPManager.d.ts.map +1 -1
  41. package/dist/services/mcp/MCPManager.js +71 -22
  42. package/dist/services/mcp/MCPManager.js.map +1 -1
  43. package/dist/services/plugins/pluginsManager.d.ts.map +1 -1
  44. package/dist/services/plugins/pluginsManager.js +12 -0
  45. package/dist/services/plugins/pluginsManager.js.map +1 -1
  46. package/dist/services/skills/skillsManager.d.ts +18 -3
  47. package/dist/services/skills/skillsManager.d.ts.map +1 -1
  48. package/dist/services/skills/skillsManager.js +49 -4
  49. package/dist/services/skills/skillsManager.js.map +1 -1
  50. package/dist/tools/PickOption.d.ts.map +1 -1
  51. package/dist/tools/PickOption.js +6 -0
  52. package/dist/tools/PickOption.js.map +1 -1
  53. package/dist/tools/Skill.d.ts.map +1 -1
  54. package/dist/tools/Skill.js +3 -2
  55. package/dist/tools/Skill.js.map +1 -1
  56. package/dist/tools/SubAgent.js +7 -7
  57. package/dist/tools/SubAgent.js.map +1 -1
  58. package/dist/types/index.d.ts +3 -1
  59. package/dist/types/index.d.ts.map +1 -1
  60. package/dist/types/index.js +1 -0
  61. package/dist/types/index.js.map +1 -1
  62. package/dist/types/settings.d.ts +3 -1
  63. package/dist/types/settings.d.ts.map +1 -1
  64. package/dist/types/skill.d.ts +2 -0
  65. package/dist/types/skill.d.ts.map +1 -1
  66. package/dist/util/agentStats.d.ts +3 -1
  67. package/dist/util/agentStats.d.ts.map +1 -1
  68. package/dist/util/agentStats.js +17 -3
  69. package/dist/util/agentStats.js.map +1 -1
  70. package/dist/util/autoRunContext.d.ts +2 -0
  71. package/dist/util/autoRunContext.d.ts.map +1 -1
  72. package/dist/util/autoRunContext.js +2 -0
  73. package/dist/util/autoRunContext.js.map +1 -1
  74. package/dist/util/compact.d.ts +16 -1
  75. package/dist/util/compact.d.ts.map +1 -1
  76. package/dist/util/compact.js +117 -4
  77. package/dist/util/compact.js.map +1 -1
  78. package/dist/util/history.d.ts +1 -1
  79. package/dist/util/history.d.ts.map +1 -1
  80. package/dist/util/history.js +21 -5
  81. package/dist/util/history.js.map +1 -1
  82. package/dist/util/inputPredict.d.ts +15 -0
  83. package/dist/util/inputPredict.d.ts.map +1 -0
  84. package/dist/util/inputPredict.js +135 -0
  85. package/dist/util/inputPredict.js.map +1 -0
  86. package/dist/util/message.d.ts +1 -1
  87. package/dist/util/message.d.ts.map +1 -1
  88. package/dist/util/message.js +2 -2
  89. package/dist/util/message.js.map +1 -1
  90. package/dist/util/shellSafety.d.ts +38 -2
  91. package/dist/util/shellSafety.d.ts.map +1 -1
  92. package/dist/util/shellSafety.js +495 -12
  93. package/dist/util/shellSafety.js.map +1 -1
  94. package/package.json +1 -1
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractPredictionContext = extractPredictionContext;
4
+ exports.predictNextInputInBackground = predictNextInputInBackground;
5
+ const queryLLM_1 = require("../services/api/queryLLM");
6
+ const message_1 = require("./message");
7
+ const StateManager_1 = require("../manager/StateManager");
8
+ const EventSystem_1 = require("../events/EventSystem");
9
+ const autoRunContext_1 = require("./autoRunContext");
10
+ const inputPredict_1 = require("../prompt/inputPredict");
11
+ const errors_1 = require("../types/errors");
12
+ const log_1 = require("./log");
13
+ // assistant 文本截断上限:预测只需要结论/提问,长篇正文是噪声
14
+ const MAX_ASSISTANT_TEXT_LEN = 500;
15
+ // 历史窗口:只取最近 N 条真实用户输入起的切片,控制 token
16
+ const RECENT_USER_TURNS = 4;
17
+ // 真实用户输入消息:user 类型且不含 tool_result(含 tool_result 的是工具结果载体/合成消息)
18
+ function isRealUserMsg(msg) {
19
+ if (msg.type !== 'user')
20
+ return false;
21
+ const content = msg.message.content;
22
+ if (typeof content === 'string')
23
+ return true;
24
+ return !content.some(b => b.type === 'tool_result');
25
+ }
26
+ /**
27
+ * 将会话历史压缩成一串纯 text 块,供输入预测作为上下文。
28
+ * 与 extractAutoRunContext 的差异:保留 assistant 文本摘要(用户往往在回应
29
+ * assistant 的提问/结论,丢掉它预测信号不足),并只取最近 RECENT_USER_TURNS 轮。
30
+ */
31
+ function extractPredictionContext(messages) {
32
+ let start = 0;
33
+ let seen = 0;
34
+ for (let i = messages.length - 1; i >= 0; i--) {
35
+ if (isRealUserMsg(messages[i])) {
36
+ seen++;
37
+ if (seen >= RECENT_USER_TURNS) {
38
+ start = i;
39
+ break;
40
+ }
41
+ }
42
+ }
43
+ const blocks = [];
44
+ const pushUserText = (raw) => {
45
+ const text = (0, autoRunContext_1.stripReminderSys)(raw).trim();
46
+ if (text)
47
+ blocks.push({ type: 'text', text: `User: ${text}` });
48
+ };
49
+ // 截断保尾:提问/待决事项通常在文本末尾
50
+ const pushAssistantText = (raw) => {
51
+ const text = raw.trim();
52
+ if (!text)
53
+ return;
54
+ const t = text.length > MAX_ASSISTANT_TEXT_LEN ? `…${text.slice(-MAX_ASSISTANT_TEXT_LEN)}` : text;
55
+ blocks.push({ type: 'text', text: `Assistant: ${t}` });
56
+ };
57
+ for (const msg of messages.slice(start)) {
58
+ const content = msg.message.content;
59
+ if (msg.type === 'user') {
60
+ if (typeof content === 'string') {
61
+ pushUserText(content);
62
+ continue;
63
+ }
64
+ if (content.some(b => b.type === 'tool_result'))
65
+ continue;
66
+ for (const b of content) {
67
+ if (b.type === 'text')
68
+ pushUserText(b.text);
69
+ }
70
+ continue;
71
+ }
72
+ // assistant 消息:文本摘要 + 副作用工具紧凑行,丢弃 thinking / 只读工具
73
+ if (typeof content === 'string') {
74
+ pushAssistantText(content);
75
+ continue;
76
+ }
77
+ for (const b of content) {
78
+ if (b.type === 'text') {
79
+ pushAssistantText(b.text);
80
+ }
81
+ else if (b.type === 'tool_use') {
82
+ const line = (0, autoRunContext_1.summarizeToolUse)(b);
83
+ if (line)
84
+ blocks.push({ type: 'text', text: line });
85
+ }
86
+ }
87
+ }
88
+ return blocks;
89
+ }
90
+ // 解析输出契约:<predict>…</predict> 取内容;<none/> 或任何不合规输出均视为"不回复"
91
+ function parsePrediction(content) {
92
+ const m = content.match(/<predict>([\s\S]*?)<\/predict>/);
93
+ return m ? m[1].trim() : '';
94
+ }
95
+ /**
96
+ * 后台异步预测用户下一句输入,不阻塞主流程。
97
+ * 一轮回复自然结束后调用;结果以 input:predict 事件发出,
98
+ * prediction 为空串表示"预计不回复"(UI 据此清空提示)。
99
+ */
100
+ async function predictNextInputInBackground(sessionId) {
101
+ try {
102
+ const runtime = (0, StateManager_1.getStateManager)().session(sessionId);
103
+ const history = runtime.forAgent(StateManager_1.MAIN_AGENT_ID).getMessageHistory();
104
+ const context = extractPredictionContext(history);
105
+ if (context.length === 0)
106
+ return;
107
+ // 与 AutoRun 裁决同构:历史压缩进单条 user 消息的多个 text 块(无 tool 块),tools 传 []
108
+ const response = await (0, queryLLM_1.queryLLM)([(0, message_1.buildUserMsg)(context)], [{ type: 'text', text: inputPredict_1.INPUT_PREDICT_SYSTEM_PROMPT }], new AbortController().signal, [], {
109
+ modelPointer: 'quick',
110
+ disableChunkEvents: true,
111
+ disableErrorEvents: true,
112
+ disableThinking: true,
113
+ sessionId,
114
+ });
115
+ const content = response.message.content
116
+ .filter(b => b.type === 'text')
117
+ .map(b => b.text)
118
+ .join('\n');
119
+ if (content.startsWith(message_1.API_ERR_PREFIX))
120
+ return;
121
+ // 迟到校验:会话已进入新一轮则丢弃(新一轮结束时会重新预测)
122
+ if (runtime.getCurrentState() !== 'idle')
123
+ return;
124
+ const prediction = parsePrediction(content);
125
+ (0, log_1.logDebug)(`[inputPredict] 预测结果: ${prediction || '<none>'}`);
126
+ (0, EventSystem_1.getEventBus)().emit('input:predict', { prediction }, sessionId);
127
+ }
128
+ catch (error) {
129
+ // 预测失败不影响主流程,只记录调试日志
130
+ if (!(0, errors_1.isInterruptedException)(error)) {
131
+ (0, log_1.logDebug)(`[inputPredict] 预测失败: ${error}`);
132
+ }
133
+ }
134
+ }
135
+ //# sourceMappingURL=inputPredict.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputPredict.js","sourceRoot":"","sources":["../../src/util/inputPredict.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,6 @@ export declare function buildUserMsg(content: string | Anthropic.ContentBlockPar
12
12
  /**
13
13
  * 构建 additionalReminders:文件引用、首次查询、Plan 模式信息、skill信息
14
14
  */
15
- export declare function buildAdditionalReminders(systemReminders: Anthropic.ContentBlockParam[], messageHistory: Message[], agentMode: AgentMode, sessionId: string, hasSkillTool?: boolean): Anthropic.ContentBlockParam[];
15
+ export declare function buildAdditionalReminders(systemReminders: Anthropic.ContentBlockParam[], messageHistory: Message[], agentMode: AgentMode, sessionId: string, hasSkillTool?: boolean): Promise<Anthropic.ContentBlockParam[]>;
16
16
  export declare function prepareMessagesForApi(messages: Message[]): (UserMsg | AiMessage)[];
17
17
  //# sourceMappingURL=message.d.ts.map
@@ -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;AAuBD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,OAAO,EAAE,GAClB,CAAC,OAAO,GAAG,SAAS,CAAC,EAAE,CAkHzB"}
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,wBAAsB,wBAAwB,CAC5C,eAAe,EAAE,SAAS,CAAC,iBAAiB,EAAE,EAC9C,cAAc,EAAE,OAAO,EAAE,EACzB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,MAAM,EACjB,YAAY,GAAE,OAAe,GAC5B,OAAO,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CA6BxC;AAuBD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,OAAO,EAAE,GAClB,CAAC,OAAO,GAAG,SAAS,CAAC,EAAE,CAkHzB"}
@@ -39,14 +39,14 @@ function buildUserMsg(content, toolUseResult, controlSignal) {
39
39
  /**
40
40
  * 构建 additionalReminders:文件引用、首次查询、Plan 模式信息、skill信息
41
41
  */
42
- function buildAdditionalReminders(systemReminders, messageHistory, agentMode, sessionId, hasSkillTool = false) {
42
+ async function buildAdditionalReminders(systemReminders, messageHistory, agentMode, sessionId, hasSkillTool = false) {
43
43
  // 文件引用 每次输入均添加
44
44
  const reminders = [...systemReminders];
45
45
  // 判断是否为首次查询(消息历史为空),添加首次查询的额外信息 skills\rules
46
46
  if (messageHistory.length === 0) {
47
47
  // 添加 skills 信息(仅当工具集中包含 Skill 工具时)
48
48
  if (hasSkillTool) {
49
- reminders.push(...(0, genSystemReminder_1.generateSkillsReminder)());
49
+ reminders.push(...await (0, genSystemReminder_1.generateSkillsReminder)());
50
50
  }
51
51
  // 添加 rules 信息
52
52
  reminders.push(...(0, genSystemReminder_1.generateRulesReminders)());
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/util/message.ts"],"names":[],"mappings":";;;AAiBA,4DAEC;AAOD,oDAEC;AAGD,oCAYC;AAMD,4DAmCC;AAuBD,sDAoHC;AA9ND,mCAAmC;AACnC,yCAAgC;AAGhC,4EAA4H;AAC5H,wFAAoF;AACpF,0DAAyD;AAEzD,WAAW;AACE,QAAA,iBAAiB,GAAG,+BAA+B,CAAA;AACnD,QAAA,kBAAkB,GAC7B,gCAAgC,CAAA;AACrB,QAAA,UAAU,GAAG,wEAAwE,CAAA;AACrF,QAAA,UAAU,GAAG,wEAAwE,CAAA;AAElG,sBAAsB;AACtB,SAAgB,wBAAwB,CAAC,YAAoB;IAC3D,OAAO,6EAA6E,YAAY,EAAE,CAAA;AACpG,CAAC;AAEY,QAAA,cAAc,GAAG,WAAW,CAAA;AAEzC,MAAM,iBAAiB,GAAG,CAAC,yBAAiB,EAAE,0BAAkB,EAAE,kBAAU,EAAE,kBAAU,CAAU,CAAA;AAElG,cAAc;AACd,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAwC,CAAC,CAAA;AAC7E,CAAC;AAED,SAAS;AACT,SAAgB,YAAY,CAC1B,OAA+C,EAC/C,aAAiC,EACjC,aAAiC;IAEjC,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QAClC,IAAI,EAAE,IAAA,mBAAU,GAAE;QAClB,aAAa;QACb,aAAa;KACd,CAAA;AACH,CAAC;AAGD;;GAEG;AACH,SAAgB,wBAAwB,CACtC,eAA8C,EAC9C,cAAyB,EACzB,SAAoB,EACpB,SAAiB,EACjB,eAAwB,KAAK;IAE7B,eAAe;IACf,MAAM,SAAS,GAAG,CAAC,GAAG,eAAe,CAAC,CAAA;IAEtC,6CAA6C;IAC7C,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,mCAAmC;QACnC,IAAI,YAAY,EAAE,CAAC;YACjB,SAAS,CAAC,IAAI,CAAC,GAAG,IAAA,0CAAsB,GAAE,CAAC,CAAA;QAC7C,CAAC;QAED,cAAc;QACd,SAAS,CAAC,IAAI,CAAC,GAAG,IAAA,0CAAsB,GAAE,CAAC,CAAA;IAC7C,CAAC;IAED,iCAAiC;IACjC,MAAM,OAAO,GAAG,IAAA,8BAAe,GAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACpD,IAAI,SAAS,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAC1D,SAAS,CAAC,IAAI,CAAC,GAAG,IAAA,yCAAqB,GAAE,CAAC,CAAA;QAC1C,OAAO,CAAC,oBAAoB,EAAE,CAAA;IAChC,CAAC;IAED,qCAAqC;IACrC,IAAI,SAAS,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;QAC9D,SAAS,CAAC,IAAI,CAAC,GAAG,IAAA,iDAAuB,GAAE,CAAC,CAAA;QAC5C,OAAO,CAAC,sBAAsB,EAAE,CAAA;IAClC,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,2CAA2C;AAC3C,uEAAuE;AACvE,yDAAyD;AACzD,kEAAkE;AAClE,wCAAwC;AACxC,SAAS,uBAAuB,CAC9B,OAA+C;IAE/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAA;IAE3C,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;IACzE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;IACpE,sCAAsC;IACtC,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ;QAAE,OAAO,OAAO,CAAA;IAE/C,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;IACzE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;IACpE,OAAO,CAAC,GAAG,WAAW,EAAE,GAAG,MAAM,CAAC,CAAA;AACpC,CAAC;AAED,gDAAgD;AAChD,SAAgB,qBAAqB,CACnC,QAAmB;IAEnB,MAAM,MAAM,GAA4B,EAAE,CAAA;IAE1C,6CAA6C;IAC7C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAA;IACpC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAA;IAEvC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACzB,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACjC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACtC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC9B,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBAC1B,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;gBACpD,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO;gBACzB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;YAE9D,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACtB,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBACjC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;gBACtC,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,iCAAiC;IACjC,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IAEtF,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACzB,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,uBAAuB;gBACvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrE,OAAM;gBACR,CAAC;gBAED,kCAAkC;gBAClC,MAAM,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAC9D,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CACnE,CAAA;gBAED,qCAAqC;gBACrC,IAAI,kBAAkB,EAAE,CAAC;oBACvB,OAAM;gBACR,CAAC;gBAED,WAAW;gBACX,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBAC7D,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;wBACnB,KAAK,MAAM;4BACT,OAAO,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAA;wBACnD,KAAK,UAAU;4BACb,OAAO,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAA;wBACvD,KAAK,UAAU;4BACb,OAAO,UAAU,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAA;wBACtG;4BACE,OAAO,IAAI,CAAA;oBACf,CAAC;gBACH,CAAC,CAAC,CAAA;gBAEF,iCAAiC;gBACjC,MAAM,eAAe,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;gBAChF,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,OAAM;gBACR,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,OAAO;oBACV,OAAO,EAAE;wBACP,GAAG,OAAO,CAAC,OAAO;wBAClB,OAAO,EAAE,eAAe;qBACzB;iBACF,CAAC,CAAA;gBACF,OAAM;YACR,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,WAAW,GAAG,IAAA,gBAAI,EAAC,MAAM,CAAC,CAAA;gBAChC,6BAA6B;gBAC7B,IAAI,WAAW,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;oBACjC,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAA;oBAC/C,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAA;oBAC9C,gBAAgB;oBAChB,MAAM,aAAa,GAAG;wBACpB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;wBAC9F,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;qBACxG,CAAA;oBACD,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG;wBAC1B,GAAG,WAAW;wBACd,OAAO,EAAE;4BACP,GAAG,WAAW,CAAC,OAAO;4BACtB,OAAO,EAAE,aAAa;yBACvB;qBACF,CAAA;oBACD,OAAM;gBACR,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACpB,OAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,2CAA2C;IAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QAC1B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,OAAO,CAAA;QAC3C,MAAM,SAAS,GAAG,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAClE,IAAI,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,OAAO,CAAA;QACzD,OAAO;YACL,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;SACpD,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/util/message.ts"],"names":[],"mappings":";;;AAiBA,4DAEC;AAOD,oDAEC;AAGD,oCAYC;AAMD,4DAmCC;AAuBD,sDAoHC;AA9ND,mCAAmC;AACnC,yCAAgC;AAGhC,4EAA4H;AAC5H,wFAAoF;AACpF,0DAAyD;AAEzD,WAAW;AACE,QAAA,iBAAiB,GAAG,+BAA+B,CAAA;AACnD,QAAA,kBAAkB,GAC7B,gCAAgC,CAAA;AACrB,QAAA,UAAU,GAAG,wEAAwE,CAAA;AACrF,QAAA,UAAU,GAAG,wEAAwE,CAAA;AAElG,sBAAsB;AACtB,SAAgB,wBAAwB,CAAC,YAAoB;IAC3D,OAAO,6EAA6E,YAAY,EAAE,CAAA;AACpG,CAAC;AAEY,QAAA,cAAc,GAAG,WAAW,CAAA;AAEzC,MAAM,iBAAiB,GAAG,CAAC,yBAAiB,EAAE,0BAAkB,EAAE,kBAAU,EAAE,kBAAU,CAAU,CAAA;AAElG,cAAc;AACd,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAwC,CAAC,CAAA;AAC7E,CAAC;AAED,SAAS;AACT,SAAgB,YAAY,CAC1B,OAA+C,EAC/C,aAAiC,EACjC,aAAiC;IAEjC,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QAClC,IAAI,EAAE,IAAA,mBAAU,GAAE;QAClB,aAAa;QACb,aAAa;KACd,CAAA;AACH,CAAC;AAGD;;GAEG;AACI,KAAK,UAAU,wBAAwB,CAC5C,eAA8C,EAC9C,cAAyB,EACzB,SAAoB,EACpB,SAAiB,EACjB,eAAwB,KAAK;IAE7B,eAAe;IACf,MAAM,SAAS,GAAG,CAAC,GAAG,eAAe,CAAC,CAAA;IAEtC,6CAA6C;IAC7C,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,mCAAmC;QACnC,IAAI,YAAY,EAAE,CAAC;YACjB,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,IAAA,0CAAsB,GAAE,CAAC,CAAA;QACnD,CAAC;QAED,cAAc;QACd,SAAS,CAAC,IAAI,CAAC,GAAG,IAAA,0CAAsB,GAAE,CAAC,CAAA;IAC7C,CAAC;IAED,iCAAiC;IACjC,MAAM,OAAO,GAAG,IAAA,8BAAe,GAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACpD,IAAI,SAAS,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAC1D,SAAS,CAAC,IAAI,CAAC,GAAG,IAAA,yCAAqB,GAAE,CAAC,CAAA;QAC1C,OAAO,CAAC,oBAAoB,EAAE,CAAA;IAChC,CAAC;IAED,qCAAqC;IACrC,IAAI,SAAS,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;QAC9D,SAAS,CAAC,IAAI,CAAC,GAAG,IAAA,iDAAuB,GAAE,CAAC,CAAA;QAC5C,OAAO,CAAC,sBAAsB,EAAE,CAAA;IAClC,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,2CAA2C;AAC3C,uEAAuE;AACvE,yDAAyD;AACzD,kEAAkE;AAClE,wCAAwC;AACxC,SAAS,uBAAuB,CAC9B,OAA+C;IAE/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAA;IAE3C,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;IACzE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;IACpE,sCAAsC;IACtC,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ;QAAE,OAAO,OAAO,CAAA;IAE/C,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;IACzE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;IACpE,OAAO,CAAC,GAAG,WAAW,EAAE,GAAG,MAAM,CAAC,CAAA;AACpC,CAAC;AAED,gDAAgD;AAChD,SAAgB,qBAAqB,CACnC,QAAmB;IAEnB,MAAM,MAAM,GAA4B,EAAE,CAAA;IAE1C,6CAA6C;IAC7C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAA;IACpC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAA;IAEvC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACzB,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACjC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACtC,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC9B,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBAC1B,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;gBACpD,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO;gBACzB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;YAE9D,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACtB,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBACjC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;gBACtC,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,iCAAiC;IACjC,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IAEtF,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACzB,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,uBAAuB;gBACvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrE,OAAM;gBACR,CAAC;gBAED,kCAAkC;gBAClC,MAAM,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAC9D,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CACnE,CAAA;gBAED,qCAAqC;gBACrC,IAAI,kBAAkB,EAAE,CAAC;oBACvB,OAAM;gBACR,CAAC;gBAED,WAAW;gBACX,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBAC7D,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;wBACnB,KAAK,MAAM;4BACT,OAAO,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAA;wBACnD,KAAK,UAAU;4BACb,OAAO,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAA;wBACvD,KAAK,UAAU;4BACb,OAAO,UAAU,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAA;wBACtG;4BACE,OAAO,IAAI,CAAA;oBACf,CAAC;gBACH,CAAC,CAAC,CAAA;gBAEF,iCAAiC;gBACjC,MAAM,eAAe,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;gBAChF,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,OAAM;gBACR,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,OAAO;oBACV,OAAO,EAAE;wBACP,GAAG,OAAO,CAAC,OAAO;wBAClB,OAAO,EAAE,eAAe;qBACzB;iBACF,CAAC,CAAA;gBACF,OAAM;YACR,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,WAAW,GAAG,IAAA,gBAAI,EAAC,MAAM,CAAC,CAAA;gBAChC,6BAA6B;gBAC7B,IAAI,WAAW,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;oBACjC,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAA;oBAC/C,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAA;oBAC9C,gBAAgB;oBAChB,MAAM,aAAa,GAAG;wBACpB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;wBAC9F,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;qBACxG,CAAA;oBACD,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG;wBAC1B,GAAG,WAAW;wBACd,OAAO,EAAE;4BACP,GAAG,WAAW,CAAC,OAAO;4BACtB,OAAO,EAAE,aAAa;yBACvB;qBACF,CAAA;oBACD,OAAM;gBACR,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACpB,OAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,2CAA2C;IAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QAC1B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,OAAO,CAAA;QAC3C,MAAM,SAAS,GAAG,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAClE,IAAI,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,OAAO,CAAA;QACzD,OAAO;YACL,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;SACpD,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -7,12 +7,25 @@
7
7
  * 并正确处理引号),再用 REDIRECTION_RE 检测;解析失败时保守按「含重定向」处理。
8
8
  */
9
9
  export declare function hasRedirection(command: string): boolean;
10
+ export type SubstitutionClass = 'readonly' | 'gray' | 'dangerous';
11
+ /**
12
+ * 对「注入特征仅可能来自 $() 命令替换」的整条命令做递归分类。
13
+ * 内层命令先递归分类(内层自身可含 && / | / 嵌套 $() 等);随后骨架经 splitCommand
14
+ * 分段,逐段按顶层三层规则判定:危险首词/解释器/嵌套危险 find → dangerous;
15
+ * 只读安全 → readonly;其余 → gray。骨架残留任何注入特征(换行等)→ dangerous。
16
+ *
17
+ * 供权限闸门使用:dangerous → 确定性转人工(不给模型机会);readonly/gray → 交
18
+ * AutoRun 模型判断。刻意不提供确定性放行——放行与否只由模型或人工裁决,解析器
19
+ * 误差最多把命令送去模型,绝不静默放过。
20
+ */
21
+ export declare function classifyCommandSubstitutions(command: string, depth?: number): SubstitutionClass;
10
22
  /**
11
23
  * 命令是否含「语义危险」子命令:危险首词(rm/sudo/mv 等)或 find 危险 flag。
12
24
  * 不含重定向——重定向是否危险取决于路径(项目内可能安全),应交给上层模型判断。
13
25
  *
14
- * 用于 AutoRun:命中即「确定性危险」,直接转人工,不调模型(避免模型误判 safe 放行)。
15
- * 解析失败保守按「危险」处理(fail-closed)。
26
+ * 用于前缀授权禁令(isUnsafeForPrefixAuth):命中即不提供/不匹配前缀授权。
27
+ * AutoRun 权限闸门改用 classifyDangerousCommand 做进一步分级(硬危险 / 删除类灰区),
28
+ * 两者的「危险」集合严格一致。解析失败保守按「危险」处理(fail-closed)。
16
29
  */
17
30
  export declare function hasDangerousCommand(command: string): boolean;
18
31
  /**
@@ -23,6 +36,29 @@ export declare function hasDangerousCommand(command: string): boolean;
23
36
  * 涵盖:含重定向 / 危险首词(rm、sudo、mv 等)/ find 危险 flag。
24
37
  */
25
38
  export declare function isUnsafeForPrefixAuth(command: string): boolean;
39
+ /**
40
+ * 危险命令分级结果:
41
+ * none → 不含危险子命令(与 hasDangerousCommand === false 等价)
42
+ * deletable → 仅含删除类子命令(rm/rmdir/mv/find -delete)且所有删除目标确定性落在
43
+ * 允许范围内(由调用方回调裁决,通常为项目内或系统临时目录)→ AutoRun 可交模型判断
44
+ * hard → 硬危险(sudo/dd/chmod 等)、删除目标无法静态确认落在允许范围、或解析失败
45
+ * (fail-closed)→ 确定性转人工,不给模型机会
46
+ */
47
+ export type DangerClass = 'none' | 'deletable' | 'hard';
48
+ export type DeleteTargetKind = 'literal' | 'globdir';
49
+ export type DeleteTargetChecker = (path: string, kind: DeleteTargetKind) => boolean;
50
+ /**
51
+ * 整条命令的危险分级:逐子命令取最严(任一 hard → hard;否则任一 deletable → deletable)。
52
+ * 与 hasDangerousCommand 严格对齐:本函数返回 none 当且仅当 hasDangerousCommand 为 false,
53
+ * 即分级只在「现状确定性转人工」的集合内部细分,绝不扩大放行面。
54
+ *
55
+ * 命令里出现 cd/pushd/popd 时后续子命令的 cwd 无法静态跟踪,相对路径目标一律拒绝
56
+ * (绝对路径不受影响)。解析失败 fail-closed 判 hard。
57
+ *
58
+ * @param isDeletableTarget 路径策略回调:判定单个删除目标(已解析为字面路径)是否落在
59
+ * 允许删除的范围(由调用方定义,通常为项目内或系统临时目录,排除项目根自身与 .git)
60
+ */
61
+ export declare function classifyDangerousCommand(command: string, isDeletableTarget: DeleteTargetChecker): DangerClass;
26
62
  /**
27
63
  * 整条命令是否可判定为「只读安全」,可直接放行(无需人工/模型)。
28
64
  * 基于 splitCommand 的分词逐子命令判定,从根本上消除「整串 split(' ')[0]」带来的
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"shellSafety.d.ts","sourceRoot":"","sources":["../../src/util/shellSafety.ts"],"names":[],"mappings":"AA6GA;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAOvD;AAqGD,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,MAAM,GAAG,WAAW,CAAA;AAgFjE;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,iBAAiB,CAqB1F;AAcD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQ5D;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE9D;AASD;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAA;AAMvD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,CAAA;AACpD,MAAM,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,KAAK,OAAO,CAAA;AAmKnF;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,mBAAmB,GAAG,WAAW,CAkB7G;AAsBD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAW9D"}