sema-core 2.1.0 → 2.1.2
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 +2 -0
- package/dist/conf/config.d.ts.map +1 -1
- package/dist/conf/config.js +4 -1
- package/dist/conf/config.js.map +1 -1
- package/dist/core/Conversation.d.ts.map +1 -1
- package/dist/core/Conversation.js +9 -3
- package/dist/core/Conversation.js.map +1 -1
- package/dist/core/SemaCore.d.ts +5 -0
- package/dist/core/SemaCore.d.ts.map +1 -1
- package/dist/core/SemaCore.js +8 -0
- package/dist/core/SemaCore.js.map +1 -1
- package/dist/core/SemaEngine.d.ts +0 -5
- package/dist/core/SemaEngine.d.ts.map +1 -1
- package/dist/core/SemaEngine.js +19 -50
- package/dist/core/SemaEngine.js.map +1 -1
- package/dist/events/types.d.ts +4 -1
- 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/index.js.map +1 -1
- package/dist/manager/ConfManager.d.ts.map +1 -1
- package/dist/manager/ConfManager.js +3 -0
- package/dist/manager/ConfManager.js.map +1 -1
- package/dist/manager/PermissionManager.d.ts.map +1 -1
- package/dist/manager/PermissionManager.js +124 -216
- package/dist/manager/PermissionManager.js.map +1 -1
- package/dist/manager/UsageStatsManager.d.ts +79 -0
- package/dist/manager/UsageStatsManager.d.ts.map +1 -0
- package/dist/manager/UsageStatsManager.js +402 -0
- package/dist/manager/UsageStatsManager.js.map +1 -0
- package/dist/manager/runShellGate.d.ts +25 -0
- package/dist/manager/runShellGate.d.ts.map +1 -0
- package/dist/manager/runShellGate.js +154 -0
- package/dist/manager/runShellGate.js.map +1 -0
- package/dist/prompt/inputPredict.d.ts +1 -1
- package/dist/prompt/inputPredict.d.ts.map +1 -1
- package/dist/prompt/inputPredict.js +3 -1
- package/dist/prompt/inputPredict.js.map +1 -1
- package/dist/prompt/permission.d.ts.map +1 -1
- package/dist/prompt/permission.js +91 -36
- package/dist/prompt/permission.js.map +1 -1
- package/dist/prompt/skills.d.ts +18 -0
- package/dist/prompt/skills.d.ts.map +1 -0
- package/dist/prompt/skills.js +151 -0
- package/dist/prompt/skills.js.map +1 -0
- package/dist/prompt/toolAliases.d.ts +12 -1
- package/dist/prompt/toolAliases.d.ts.map +1 -1
- package/dist/prompt/toolAliases.js +28 -1
- package/dist/prompt/toolAliases.js.map +1 -1
- package/dist/prompt/tools/runShell.js +1 -1
- package/dist/prompt/tools/skill.d.ts.map +1 -1
- package/dist/prompt/tools/skill.js +2 -1
- package/dist/prompt/tools/skill.js.map +1 -1
- package/dist/services/agents/agentsManager.d.ts +5 -2
- package/dist/services/agents/agentsManager.d.ts.map +1 -1
- package/dist/services/agents/agentsManager.js +33 -21
- package/dist/services/agents/agentsManager.js.map +1 -1
- package/dist/services/api/queryLLM.d.ts.map +1 -1
- package/dist/services/api/queryLLM.js +13 -0
- package/dist/services/api/queryLLM.js.map +1 -1
- package/dist/services/commands/commandsManager.d.ts +5 -6
- package/dist/services/commands/commandsManager.d.ts.map +1 -1
- package/dist/services/commands/commandsManager.js +28 -23
- package/dist/services/commands/commandsManager.js.map +1 -1
- package/dist/services/hooks/hookTriggers.d.ts.map +1 -1
- package/dist/services/hooks/hookTriggers.js +4 -1
- package/dist/services/hooks/hookTriggers.js.map +1 -1
- package/dist/services/hooks/hooksManager.d.ts +8 -2
- package/dist/services/hooks/hooksManager.d.ts.map +1 -1
- package/dist/services/hooks/hooksManager.js +70 -28
- package/dist/services/hooks/hooksManager.js.map +1 -1
- package/dist/services/mcp/MCPManager.d.ts +2 -1
- package/dist/services/mcp/MCPManager.d.ts.map +1 -1
- package/dist/services/mcp/MCPManager.js +4 -2
- package/dist/services/mcp/MCPManager.js.map +1 -1
- package/dist/services/memory/memManager.d.ts +8 -1
- package/dist/services/memory/memManager.d.ts.map +1 -1
- package/dist/services/memory/memManager.js +16 -2
- package/dist/services/memory/memManager.js.map +1 -1
- package/dist/services/plugins/pluginsManager.d.ts +1 -1
- package/dist/services/plugins/pluginsManager.d.ts.map +1 -1
- package/dist/services/plugins/pluginsManager.js +13 -4
- package/dist/services/plugins/pluginsManager.js.map +1 -1
- package/dist/services/rules/rulesManager.d.ts +2 -1
- package/dist/services/rules/rulesManager.d.ts.map +1 -1
- package/dist/services/rules/rulesManager.js +2 -2
- package/dist/services/rules/rulesManager.js.map +1 -1
- package/dist/services/skills/skillsManager.d.ts +13 -8
- package/dist/services/skills/skillsManager.d.ts.map +1 -1
- package/dist/services/skills/skillsManager.js +68 -30
- package/dist/services/skills/skillsManager.js.map +1 -1
- package/dist/tools/EditNotebook.d.ts +1 -1
- package/dist/tools/PatchFile.d.ts.map +1 -1
- package/dist/tools/PatchFile.js +22 -18
- package/dist/tools/PatchFile.js.map +1 -1
- package/dist/tools/RunShell.d.ts +9 -9
- package/dist/tools/RunShell.d.ts.map +1 -1
- package/dist/tools/RunShell.js +11 -14
- package/dist/tools/RunShell.js.map +1 -1
- package/dist/tools/Skill.d.ts.map +1 -1
- package/dist/tools/Skill.js +40 -2
- package/dist/tools/Skill.js.map +1 -1
- package/dist/tools/ViewFile.d.ts.map +1 -1
- package/dist/tools/ViewFile.js +3 -19
- package/dist/tools/ViewFile.js.map +1 -1
- package/dist/tools/WriteFile.d.ts.map +1 -1
- package/dist/tools/WriteFile.js +4 -2
- package/dist/tools/WriteFile.js.map +1 -1
- package/dist/tools/base/tools.d.ts.map +1 -1
- package/dist/tools/base/tools.js +7 -1
- package/dist/tools/base/tools.js.map +1 -1
- package/dist/types/hook.d.ts +8 -3
- package/dist/types/hook.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/plugin.d.ts +2 -0
- package/dist/types/plugin.d.ts.map +1 -1
- package/dist/types/skill.d.ts +1 -1
- package/dist/types/skill.d.ts.map +1 -1
- package/dist/util/autoRunContext.d.ts +3 -2
- package/dist/util/autoRunContext.d.ts.map +1 -1
- package/dist/util/autoRunContext.js +45 -11
- package/dist/util/autoRunContext.js.map +1 -1
- package/dist/util/commands.d.ts.map +1 -1
- package/dist/util/commands.js +6 -1
- package/dist/util/commands.js.map +1 -1
- package/dist/util/fetchSafety.d.ts +10 -3
- package/dist/util/fetchSafety.d.ts.map +1 -1
- package/dist/util/fetchSafety.js +22 -29
- package/dist/util/fetchSafety.js.map +1 -1
- package/dist/util/imageCompress.d.ts +16 -0
- package/dist/util/imageCompress.d.ts.map +1 -1
- package/dist/util/imageCompress.js +53 -0
- package/dist/util/imageCompress.js.map +1 -1
- package/dist/util/readPathClass.d.ts +16 -0
- package/dist/util/readPathClass.d.ts.map +1 -0
- package/dist/util/readPathClass.js +121 -0
- package/dist/util/readPathClass.js.map +1 -0
- package/dist/util/secureFile.d.ts +4 -0
- package/dist/util/secureFile.d.ts.map +1 -1
- package/dist/util/secureFile.js +8 -60
- package/dist/util/secureFile.js.map +1 -1
- package/dist/util/shell.d.ts +1 -0
- package/dist/util/shell.d.ts.map +1 -1
- package/dist/util/shell.js +36 -0
- package/dist/util/shell.js.map +1 -1
- package/dist/util/shellSafety.d.ts +26 -15
- package/dist/util/shellSafety.d.ts.map +1 -1
- package/dist/util/shellSafety.js +277 -60
- package/dist/util/shellSafety.js.map +1 -1
- package/package.json +1 -1
package/dist/util/commands.js
CHANGED
|
@@ -11,6 +11,9 @@ const commands_1 = require("../prompt/commands");
|
|
|
11
11
|
const SQ_PLACEHOLDER = '__SQ_PLACEHOLDER__';
|
|
12
12
|
const DQ_PLACEHOLDER = '__DQ_PLACEHOLDER__';
|
|
13
13
|
const BS_PLACEHOLDER = '__BS_PLACEHOLDER__';
|
|
14
|
+
// 转义分号 \;(find -exec 的结束符写法):若只把 \ 换成占位符,shell-quote 仍会把后面的 ; 当命令
|
|
15
|
+
// 分隔符吃掉,find 段被截断、结束符丢失。先整体换成不含操作符字符的占位符,分词后原样还原。
|
|
16
|
+
const BS_SEMI_PLACEHOLDER = '__BS_SEMI_PLACEHOLDER__';
|
|
14
17
|
// 命令注入特征:反引号 / $( / 换行 / && / || / ;。
|
|
15
18
|
// 但必须区分引号内外——引号里的换行/分号是字面数据(如 echo "多行文本"),不是命令分隔:
|
|
16
19
|
// - 单引号内:全部字面,shell 不做任何解释 → 一律忽略
|
|
@@ -134,6 +137,7 @@ function splitCommand(command) {
|
|
|
134
137
|
const parts = [];
|
|
135
138
|
// 1. 合并相邻的字符串
|
|
136
139
|
for (const part of (0, shell_quote_1.parse)(command
|
|
140
|
+
.replaceAll('\\;', BS_SEMI_PLACEHOLDER)
|
|
137
141
|
.replaceAll('\\', BS_PLACEHOLDER)
|
|
138
142
|
.replaceAll('"', `"${DQ_PLACEHOLDER}`)
|
|
139
143
|
.replaceAll("'", `'${SQ_PLACEHOLDER}`), varName => `$${varName}`)) {
|
|
@@ -168,7 +172,8 @@ function splitCommand(command) {
|
|
|
168
172
|
return part
|
|
169
173
|
.replaceAll(`${SQ_PLACEHOLDER}`, "'")
|
|
170
174
|
.replaceAll(`${DQ_PLACEHOLDER}`, '"')
|
|
171
|
-
.replaceAll(`${BS_PLACEHOLDER}`, '\\')
|
|
175
|
+
.replaceAll(`${BS_PLACEHOLDER}`, '\\')
|
|
176
|
+
.replaceAll(`${BS_SEMI_PLACEHOLDER}`, '\\;');
|
|
172
177
|
});
|
|
173
178
|
// 4. 过滤掉分隔符
|
|
174
179
|
const commandParts = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/util/commands.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/util/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* fetch_url
|
|
3
|
-
*
|
|
2
|
+
* fetch_url 目标主机分级,供 PermissionManager 裁决:
|
|
3
|
+
* blocked → 链路本地(含云元数据 169.254.169.254)/ 已知元数据主机名 / 未指定地址 / URL 解析失败:
|
|
4
|
+
* 确定性转人工,不交模型,不提供「永久允许该域名」
|
|
5
|
+
* private → 内网段(10/8、172.16/12、192.168/16、CGNAT、ULA):转人工,但允许保存域名授权——
|
|
6
|
+
* 公司内网 API 是合法高频目标,不给 allow 会让同一域名每次都问
|
|
7
|
+
* loopback → 环回(localhost、127/8、::1):用户自己机器上的服务,与 run_shell 里 curl localhost 对齐,
|
|
8
|
+
* AutoRun 交模型按请求内容判断;不提供永久授权(「记住 localhost」范围过宽)
|
|
9
|
+
* public → 其余,走正常流程
|
|
4
10
|
*
|
|
5
11
|
* 说明:new URL() (WHATWG) 已把 十进制/十六进制/八进制/短写 IPv4(如 2130706433、0x7f000001、
|
|
6
12
|
* 127.1)规范化为点分十进制,故无需额外处理;这里额外补:
|
|
7
13
|
* - IPv4-mapped IPv6(::ffff:7f00:1 等)
|
|
8
14
|
* - 末尾点 FQDN(localhost. 等)
|
|
9
15
|
*/
|
|
10
|
-
export
|
|
16
|
+
export type FetchHostClass = 'public' | 'loopback' | 'private' | 'blocked';
|
|
17
|
+
export declare function classifyFetchHost(url: string): FetchHostClass;
|
|
11
18
|
//# sourceMappingURL=fetchSafety.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchSafety.d.ts","sourceRoot":"","sources":["../../src/util/fetchSafety.ts"],"names":[],"mappings":"AAoBA
|
|
1
|
+
{"version":3,"file":"fetchSafety.d.ts","sourceRoot":"","sources":["../../src/util/fetchSafety.ts"],"names":[],"mappings":"AAoBA;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAA;AAE1E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CA4C7D"}
|
package/dist/util/fetchSafety.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.classifyFetchHost = classifyFetchHost;
|
|
4
4
|
/**
|
|
5
5
|
* IPv4-mapped IPv6 → 内嵌 IPv4 点分形式。
|
|
6
6
|
* Node 的 URL 会把 ::ffff:127.0.0.1 规范化为 ::ffff:7f00:1,两种写法都要还原。
|
|
@@ -22,30 +22,21 @@ function extractMappedIpv4(host) {
|
|
|
22
22
|
}
|
|
23
23
|
return null;
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
* fetch_url 的确定性 SSRF 兜底:命中环回 / 链路本地(含云元数据 169.254.169.254)/
|
|
27
|
-
* 内网 / 未指定地址 / 本地主机名,一律按危险处理,不交给模型。URL 解析失败同样按危险处理。
|
|
28
|
-
*
|
|
29
|
-
* 说明:new URL() (WHATWG) 已把 十进制/十六进制/八进制/短写 IPv4(如 2130706433、0x7f000001、
|
|
30
|
-
* 127.1)规范化为点分十进制,故无需额外处理;这里额外补:
|
|
31
|
-
* - IPv4-mapped IPv6(::ffff:7f00:1 等)
|
|
32
|
-
* - 末尾点 FQDN(localhost. 等)
|
|
33
|
-
*/
|
|
34
|
-
function isBlockedFetchHost(url) {
|
|
25
|
+
function classifyFetchHost(url) {
|
|
35
26
|
let hostname;
|
|
36
27
|
try {
|
|
37
28
|
hostname = new URL(url).hostname.toLowerCase();
|
|
38
29
|
}
|
|
39
30
|
catch {
|
|
40
|
-
return
|
|
31
|
+
return 'blocked';
|
|
41
32
|
}
|
|
42
33
|
// 去掉 IPv6 字面量方括号,并去掉末尾点(FQDN 绝对形式,如 localhost.)
|
|
43
34
|
let host = hostname.replace(/^\[|\]$/g, '').replace(/\.$/, '');
|
|
44
35
|
// 本地主机名 / 已知云元数据主机名
|
|
45
36
|
if (host === 'localhost' || host.endsWith('.localhost'))
|
|
46
|
-
return
|
|
37
|
+
return 'loopback';
|
|
47
38
|
if (host === 'metadata.google.internal')
|
|
48
|
-
return
|
|
39
|
+
return 'blocked';
|
|
49
40
|
// IPv4-mapped IPv6 → 取出内嵌 IPv4,按下方 IPv4 规则判定
|
|
50
41
|
const mapped = extractMappedIpv4(host);
|
|
51
42
|
if (mapped)
|
|
@@ -56,31 +47,33 @@ function isBlockedFetchHost(url) {
|
|
|
56
47
|
const a = Number(ipv4[1]);
|
|
57
48
|
const b = Number(ipv4[2]);
|
|
58
49
|
if (a === 0)
|
|
59
|
-
return
|
|
60
|
-
if (a === 10)
|
|
61
|
-
return true; // 10.0.0.0/8 私网
|
|
50
|
+
return 'blocked'; // 0.0.0.0/8 未指定
|
|
62
51
|
if (a === 127)
|
|
63
|
-
return
|
|
52
|
+
return 'loopback'; // 127.0.0.0/8 环回
|
|
64
53
|
if (a === 169 && b === 254)
|
|
65
|
-
return
|
|
54
|
+
return 'blocked'; // 169.254.0.0/16 链路本地(含元数据)
|
|
55
|
+
if (a === 10)
|
|
56
|
+
return 'private'; // 10.0.0.0/8 私网
|
|
66
57
|
if (a === 172 && b >= 16 && b <= 31)
|
|
67
|
-
return
|
|
58
|
+
return 'private'; // 172.16.0.0/12 私网
|
|
68
59
|
if (a === 192 && b === 168)
|
|
69
|
-
return
|
|
60
|
+
return 'private'; // 192.168.0.0/16 私网
|
|
70
61
|
if (a === 100 && b >= 64 && b <= 127)
|
|
71
|
-
return
|
|
72
|
-
return
|
|
62
|
+
return 'private'; // 100.64.0.0/10 CGNAT
|
|
63
|
+
return 'public';
|
|
73
64
|
}
|
|
74
65
|
// IPv6 字面量:环回 / 未指定 / ULA(fc00::/7) / 链路本地(fe80::/10)
|
|
75
66
|
if (host.includes(':')) {
|
|
76
|
-
if (host === '::1'
|
|
77
|
-
return
|
|
67
|
+
if (host === '::1')
|
|
68
|
+
return 'loopback';
|
|
69
|
+
if (host === '::')
|
|
70
|
+
return 'blocked';
|
|
78
71
|
if (/^f[cd]/.test(host))
|
|
79
|
-
return
|
|
72
|
+
return 'private'; // fc00::/7
|
|
80
73
|
if (/^fe[89ab]/.test(host))
|
|
81
|
-
return
|
|
82
|
-
return
|
|
74
|
+
return 'blocked'; // fe80::/10
|
|
75
|
+
return 'public';
|
|
83
76
|
}
|
|
84
|
-
return
|
|
77
|
+
return 'public';
|
|
85
78
|
}
|
|
86
79
|
//# sourceMappingURL=fetchSafety.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchSafety.js","sourceRoot":"","sources":["../../src/util/fetchSafety.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"fetchSafety.js","sourceRoot":"","sources":["../../src/util/fetchSafety.ts"],"names":[],"mappings":";;AAqCA,8CA4CC;AAjFD;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;IACtC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IACnB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAE,CAAA;IAClB,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAA;IAC5D,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAA;QAChC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAA;QAChC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,EAAE,CAAA;IACxE,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAmBD,SAAgB,iBAAiB,CAAC,GAAW;IAC3C,IAAI,QAAgB,CAAA;IACpB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,gDAAgD;IAChD,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAE9D,oBAAoB;IACpB,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,UAAU,CAAA;IAC1E,IAAI,IAAI,KAAK,0BAA0B;QAAE,OAAO,SAAS,CAAA;IAEzD,6CAA6C;IAC7C,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;IACtC,IAAI,MAAM;QAAE,IAAI,GAAG,MAAM,CAAA;IAEzB,WAAW;IACX,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAA;IACvE,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QACzB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QACzB,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAA,CAA0B,gBAAgB;QACvE,IAAI,CAAC,KAAK,GAAG;YAAE,OAAO,UAAU,CAAA,CAAuB,iBAAiB;QACxE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;YAAE,OAAO,SAAS,CAAA,CAAW,4BAA4B;QACnF,IAAI,CAAC,KAAK,EAAE;YAAE,OAAO,SAAS,CAAA,CAAyB,gBAAgB;QACvE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,SAAS,CAAA,CAAE,mBAAmB;QAC1E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG;YAAE,OAAO,SAAS,CAAA,CAAW,oBAAoB;QAC3E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG;YAAE,OAAO,SAAS,CAAA,CAAC,sBAAsB;QAC7E,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,sDAAsD;IACtD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO,UAAU,CAAA;QACrC,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,SAAS,CAAA;QACnC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAA,CAAE,WAAW;QACtD,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAA,CAAC,YAAY;QACzD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
import type { InputImageAttachment } from '../types/message';
|
|
2
|
+
/**
|
|
3
|
+
* 规范化用户输入的图片附件:过滤非法 media_type,单张超限则压缩
|
|
4
|
+
* 返回干净可直接转 image content block 的附件数组;
|
|
5
|
+
* 正常轮次(SemaEngine.processQuery)与轮内注入(Conversation 注入路径)共用同一套规则
|
|
6
|
+
*/
|
|
7
|
+
export declare function normalizeImageAttachments(attachments?: InputImageAttachment[]): Promise<InputImageAttachment[]>;
|
|
8
|
+
/** 图片附件转 API image content block(正常轮次与注入路径共用) */
|
|
9
|
+
export declare function toImageContentBlocks(attachments?: InputImageAttachment[]): Array<{
|
|
10
|
+
type: 'image';
|
|
11
|
+
source: {
|
|
12
|
+
type: 'base64';
|
|
13
|
+
media_type: InputImageAttachment['media_type'];
|
|
14
|
+
data: string;
|
|
15
|
+
};
|
|
16
|
+
}>;
|
|
1
17
|
/**
|
|
2
18
|
* 压缩图片至目标大小以内,尽可能保留质量
|
|
3
19
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageCompress.d.ts","sourceRoot":"","sources":["../../src/util/imageCompress.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"imageCompress.d.ts","sourceRoot":"","sources":["../../src/util/imageCompress.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAW5D;;;;GAIG;AACH,wBAAsB,yBAAyB,CAAC,WAAW,CAAC,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAgCrH;AAED,iDAAiD;AACjD,wBAAgB,oBAAoB,CAAC,WAAW,CAAC,EAAE,oBAAoB,EAAE,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC,CAK7L;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,EAClE,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CAAA;CAAE,CAAC,CA6HhG"}
|
|
@@ -3,12 +3,65 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.normalizeImageAttachments = normalizeImageAttachments;
|
|
7
|
+
exports.toImageContentBlocks = toImageContentBlocks;
|
|
6
8
|
exports.compressImage = compressImage;
|
|
7
9
|
const log_1 = require("./log");
|
|
8
10
|
const jimp_1 = __importDefault(require("jimp"));
|
|
9
11
|
const MIN_QUALITY = 20;
|
|
10
12
|
const MIN_DIMENSION = 100;
|
|
11
13
|
const MAX_DIMENSION_HARD_LIMIT = 4096;
|
|
14
|
+
// 粘贴图片单张体积上限,超出则压缩(与 ViewFile 的 MAX_OUTPUT_BYTES 保持一致)
|
|
15
|
+
const MAX_IMAGE_BYTES = 2 * 1024 * 1024;
|
|
16
|
+
// 支持的图片 media_type 白名单
|
|
17
|
+
const SUPPORTED_IMAGE_MEDIA_TYPES = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'];
|
|
18
|
+
/**
|
|
19
|
+
* 规范化用户输入的图片附件:过滤非法 media_type,单张超限则压缩
|
|
20
|
+
* 返回干净可直接转 image content block 的附件数组;
|
|
21
|
+
* 正常轮次(SemaEngine.processQuery)与轮内注入(Conversation 注入路径)共用同一套规则
|
|
22
|
+
*/
|
|
23
|
+
async function normalizeImageAttachments(attachments) {
|
|
24
|
+
if (!attachments || attachments.length === 0)
|
|
25
|
+
return [];
|
|
26
|
+
const result = [];
|
|
27
|
+
for (const att of attachments) {
|
|
28
|
+
if (!SUPPORTED_IMAGE_MEDIA_TYPES.includes(att.media_type)) {
|
|
29
|
+
(0, log_1.logWarn)(`忽略不支持的图片类型: ${att.media_type}`);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
const buffer = Buffer.from(att.data, 'base64');
|
|
34
|
+
if (buffer.length > MAX_IMAGE_BYTES) {
|
|
35
|
+
if (att.media_type === 'image/gif') {
|
|
36
|
+
(0, log_1.logWarn)(`忽略超出上限且不支持压缩的 GIF 附件: ${Math.round(buffer.length / 1024)}KB`);
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
(0, log_1.logInfo)(`图片附件 ${Math.round(buffer.length / 1024)}KB 超过上限 ${Math.round(MAX_IMAGE_BYTES / 1024)}KB,压缩中...`);
|
|
40
|
+
const compressed = await compressImage(buffer, att.media_type, MAX_IMAGE_BYTES);
|
|
41
|
+
const compressedBytes = Math.ceil(compressed.data.length * 3 / 4);
|
|
42
|
+
if (compressedBytes > MAX_IMAGE_BYTES) {
|
|
43
|
+
(0, log_1.logWarn)(`忽略压缩后仍超出上限的图片附件: ${Math.round(compressedBytes / 1024)}KB`);
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
result.push({ type: 'image', data: compressed.data, media_type: compressed.media_type });
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
result.push(att);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
(0, log_1.logWarn)(`处理图片附件失败,已忽略: ${e instanceof Error ? e.message : String(e)}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
/** 图片附件转 API image content block(正常轮次与注入路径共用) */
|
|
59
|
+
function toImageContentBlocks(attachments) {
|
|
60
|
+
return (attachments ?? []).map(a => ({
|
|
61
|
+
type: 'image',
|
|
62
|
+
source: { type: 'base64', media_type: a.media_type, data: a.data },
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
12
65
|
/**
|
|
13
66
|
* 压缩图片至目标大小以内,尽可能保留质量
|
|
14
67
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageCompress.js","sourceRoot":"","sources":["../../src/util/imageCompress.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"imageCompress.js","sourceRoot":"","sources":["../../src/util/imageCompress.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 文件读取位置分类,供 PermissionManager 裁决:
|
|
3
|
+
* - trusted:项目内、系统临时目录、SEMA_ROOT 受信内容目录 → 静默放行
|
|
4
|
+
* - home:当前用户可自由支配或只读无风险的位置(用户目录内;POSIX 下的 /usr /opt 等公共系统目录;
|
|
5
|
+
* Windows 下还含系统目录之外的本地盘路径)→ Ask 询问并可按父目录授权,AutoEdit / AutoRun 自动放行
|
|
6
|
+
* - restricted:敏感凭据文件、其他用户目录、系统目录等其余位置 → 各档位均转人工,只许单次同意
|
|
7
|
+
*/
|
|
8
|
+
export type ReadPathClass = 'trusted' | 'home' | 'restricted';
|
|
9
|
+
export declare const TEMP_BASE_PATHS: string[];
|
|
10
|
+
/**
|
|
11
|
+
* SEMA_ROOT/attachments:宿主(webui)转存的粘贴文本与模型生成的可视化 html 等附件,目录由宿主退场清理。
|
|
12
|
+
* 读取归 trusted(已在 TRUSTED_SEMA_SUBDIRS),编辑也放行——PermissionManager 的文件编辑硬规则与 isTempFile 并列使用。
|
|
13
|
+
*/
|
|
14
|
+
export declare function isAttachmentPath(filePath: string): boolean;
|
|
15
|
+
export declare function classifyReadPath(filePath: string): ReadPathClass;
|
|
16
|
+
//# sourceMappingURL=readPathClass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readPathClass.d.ts","sourceRoot":"","sources":["../../src/util/readPathClass.ts"],"names":[],"mappings":"AAQA;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,YAAY,CAAA;AAK7D,eAAO,MAAM,eAAe,UAI3B,CAAA;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAI1D;AAwED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAmBhE"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TEMP_BASE_PATHS = void 0;
|
|
4
|
+
exports.isAttachmentPath = isAttachmentPath;
|
|
5
|
+
exports.classifyReadPath = classifyReadPath;
|
|
6
|
+
const node_fs_1 = require("node:fs");
|
|
7
|
+
const node_os_1 = require("node:os");
|
|
8
|
+
const node_path_1 = require("node:path");
|
|
9
|
+
const file_1 = require("./file");
|
|
10
|
+
const cwd_1 = require("./cwd");
|
|
11
|
+
const savePath_1 = require("./savePath");
|
|
12
|
+
const platform_1 = require("./platform");
|
|
13
|
+
// 系统临时目录:这些目录树下的文件视为临时文件。
|
|
14
|
+
// tmpdir() 已涵盖 $TMPDIR/$TEMP/$TMP;/var/folders 覆盖 macOS 临时/缓存区。
|
|
15
|
+
// POSIX 字面路径仅在非 Windows 生效:Windows 上 '/tmp' 会被解析成当前盘的 \tmp(如 D:\tmp)而被误信任。
|
|
16
|
+
exports.TEMP_BASE_PATHS = [
|
|
17
|
+
(0, node_os_1.tmpdir)(),
|
|
18
|
+
...(platform_1.IS_WIN ? [] : ['/tmp', '/var/tmp']),
|
|
19
|
+
...(platform_1.IS_MAC ? ['/var/folders'] : []),
|
|
20
|
+
];
|
|
21
|
+
// SEMA_ROOT 下的受信内容子目录:全局 skill/命令/agent/插件/hooks 均为用户自行安装的内容,读取静默放行。
|
|
22
|
+
// 注意:豁免仅覆盖读取,hooks 脚本会被执行,写入仍走文件编辑权限转人工(attachments 例外,见 isAttachmentPath)。
|
|
23
|
+
const TRUSTED_SEMA_SUBDIRS = ['skills', 'commands', 'agents', 'plugins', 'hooks', 'attachments'];
|
|
24
|
+
/**
|
|
25
|
+
* SEMA_ROOT/attachments:宿主(webui)转存的粘贴文本与模型生成的可视化 html 等附件,目录由宿主退场清理。
|
|
26
|
+
* 读取归 trusted(已在 TRUSTED_SEMA_SUBDIRS),编辑也放行——PermissionManager 的文件编辑硬规则与 isTempFile 并列使用。
|
|
27
|
+
*/
|
|
28
|
+
function isAttachmentPath(filePath) {
|
|
29
|
+
const abs = (0, file_1.canonicalizeFilePath)(filePath);
|
|
30
|
+
const dir = (0, node_path_1.join)((0, savePath_1.getSemaRootDir)(), 'attachments');
|
|
31
|
+
return isInside(abs, dir) || isInsideAnyReal(resolveRealPath(abs), [dir]);
|
|
32
|
+
}
|
|
33
|
+
// 敏感凭据(相对用户目录,三平台同名):只收「内容即明文凭据」的条目,刻意保持精简。
|
|
34
|
+
// _netrc 为 .netrc 的 Windows 写法。
|
|
35
|
+
const SENSITIVE_HOME_ENTRIES = ['.ssh', '.aws', '.npmrc', '.netrc', '_netrc', '.git-credentials'];
|
|
36
|
+
// POSIX 下只读无风险的公共系统目录:系统头文件、全局安装的包/工具源码、应用包。读这些位置是
|
|
37
|
+
// 查依赖实现的高频动作,不含用户凭据,归入 home 档(Ask 按目录授权、Auto 档静默放行)。
|
|
38
|
+
// 刻意不收 /etc /var /root /home /Users(配置、日志、其他用户)——仍归 restricted。
|
|
39
|
+
const PUBLIC_SYSTEM_READ_DIRS = platform_1.IS_WIN ? [] : [
|
|
40
|
+
'/usr', '/opt', '/bin', '/sbin', '/lib', '/lib64', '/nix', '/snap',
|
|
41
|
+
...(platform_1.IS_MAC ? ['/System', '/Applications', '/Library'] : []),
|
|
42
|
+
];
|
|
43
|
+
// 公共目录里的例外:钥匙串虽是加密二进制,仍属凭据存放位置
|
|
44
|
+
const PUBLIC_SYSTEM_READ_EXCLUDES = platform_1.IS_MAC ? ['/Library/Keychains'] : [];
|
|
45
|
+
function isInside(child, root) {
|
|
46
|
+
const rel = (0, node_path_1.relative)((0, platform_1.normalizeCmpPath)(root), (0, platform_1.normalizeCmpPath)(child));
|
|
47
|
+
if (!rel)
|
|
48
|
+
return true;
|
|
49
|
+
return rel !== '..' && !rel.startsWith(`..${node_path_1.sep}`) && !(0, node_path_1.isAbsolute)(rel);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* 解析符号链接得到真实路径(macOS 的 /tmp → /private/tmp、Windows 的 8.3 短文件名等均在此归一)。
|
|
53
|
+
* 路径不存在时解析最近一层存在的上级目录,再拼回剩余部分;完全无法解析则原样返回。
|
|
54
|
+
*/
|
|
55
|
+
function resolveRealPath(absPath) {
|
|
56
|
+
let current = absPath;
|
|
57
|
+
const tail = [];
|
|
58
|
+
for (;;) {
|
|
59
|
+
try {
|
|
60
|
+
const real = node_fs_1.realpathSync.native(current);
|
|
61
|
+
return tail.length ? (0, node_path_1.join)(real, ...tail) : real;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
const parent = (0, node_path_1.dirname)(current);
|
|
65
|
+
if (parent === current)
|
|
66
|
+
return absPath;
|
|
67
|
+
tail.unshift((0, node_path_1.basename)(current));
|
|
68
|
+
current = parent;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function isInsideAnyReal(real, roots) {
|
|
73
|
+
return roots.some(root => isInside(real, resolveRealPath(root)));
|
|
74
|
+
}
|
|
75
|
+
// 敏感判定同时看字面路径与真实路径,任一命中即敏感(取严)
|
|
76
|
+
function isSensitivePath(abs, real) {
|
|
77
|
+
const roots = [
|
|
78
|
+
...SENSITIVE_HOME_ENTRIES.map(entry => (0, node_path_1.join)((0, node_os_1.homedir)(), entry)),
|
|
79
|
+
(0, savePath_1.getModelConfigFilePath)(),
|
|
80
|
+
(0, node_path_1.join)((0, savePath_1.getSemaRootDir)(), '.mcp.json'),
|
|
81
|
+
];
|
|
82
|
+
return roots.some(root => isInside(abs, root)) || isInsideAnyReal(real, roots);
|
|
83
|
+
}
|
|
84
|
+
// Windows 下明确不属于当前用户的位置:系统目录、其他用户目录、网络路径。
|
|
85
|
+
// 目录取自环境变量而非写死盘符;其余本地盘路径(D:\work、C:\work 等)视为用户可自由支配。
|
|
86
|
+
function isWindowsRestricted(real) {
|
|
87
|
+
if (/^\\\\[^?.]/.test(real))
|
|
88
|
+
return true;
|
|
89
|
+
const env = process.env;
|
|
90
|
+
const systemRoots = [
|
|
91
|
+
env.SystemRoot,
|
|
92
|
+
env.ProgramFiles,
|
|
93
|
+
env['ProgramFiles(x86)'],
|
|
94
|
+
env.ProgramW6432,
|
|
95
|
+
env.ProgramData,
|
|
96
|
+
(0, node_path_1.dirname)((0, node_os_1.homedir)()),
|
|
97
|
+
].filter((p) => !!p);
|
|
98
|
+
return isInsideAnyReal(real, systemRoots);
|
|
99
|
+
}
|
|
100
|
+
function classifyReadPath(filePath) {
|
|
101
|
+
const abs = (0, file_1.canonicalizeFilePath)(filePath);
|
|
102
|
+
const real = resolveRealPath(abs);
|
|
103
|
+
// 敏感判定排最前:在用户目录下启动(项目根 = ~)或授权过 ~ 时,凭据文件也不会被放行
|
|
104
|
+
if (isSensitivePath(abs, real))
|
|
105
|
+
return 'restricted';
|
|
106
|
+
// 项目与临时目录只认真实路径:项目内指向外部的符号链接按其真实目标归类
|
|
107
|
+
if (isInsideAnyReal(real, [(0, cwd_1.readInitialCwd)(), ...exports.TEMP_BASE_PATHS]))
|
|
108
|
+
return 'trusted';
|
|
109
|
+
// 受信 SEMA 内容由用户自行安装,链接进来的 skill/插件目录同样受信,故字面与真实路径任一命中即可
|
|
110
|
+
const trustedSemaDirs = TRUSTED_SEMA_SUBDIRS.map(sub => (0, node_path_1.join)((0, savePath_1.getSemaRootDir)(), sub));
|
|
111
|
+
if (trustedSemaDirs.some(dir => isInside(abs, dir)) || isInsideAnyReal(real, trustedSemaDirs))
|
|
112
|
+
return 'trusted';
|
|
113
|
+
if (isInsideAnyReal(real, [(0, node_os_1.homedir)()]))
|
|
114
|
+
return 'home';
|
|
115
|
+
if (platform_1.IS_WIN)
|
|
116
|
+
return isWindowsRestricted(real) ? 'restricted' : 'home';
|
|
117
|
+
if (isInsideAnyReal(real, PUBLIC_SYSTEM_READ_DIRS) && !isInsideAnyReal(real, PUBLIC_SYSTEM_READ_EXCLUDES))
|
|
118
|
+
return 'home';
|
|
119
|
+
return 'restricted';
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=readPathClass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readPathClass.js","sourceRoot":"","sources":["../../src/util/readPathClass.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secureFile.d.ts","sourceRoot":"","sources":["../../src/util/secureFile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"secureFile.d.ts","sourceRoot":"","sources":["../../src/util/secureFile.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG;IACjD,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,OAAO,CAAA;QACf,WAAW,EAAE,OAAO,CAAA;QACpB,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,IAAI,CAAA;QACX,KAAK,EAAE,IAAI,CAAA;QACX,KAAK,EAAE,IAAI,CAAA;KACZ,CAAA;IACD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAgCA"}
|
package/dist/util/secureFile.js
CHANGED
|
@@ -2,70 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.safeGetFileInfo = safeGetFileInfo;
|
|
4
4
|
const node_fs_1 = require("node:fs");
|
|
5
|
-
const node_path_1 = require("node:path");
|
|
6
|
-
const node_os_1 = require("node:os");
|
|
7
5
|
const file_1 = require("./file");
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
/\$\{/,
|
|
15
|
-
/`/,
|
|
16
|
-
/\|/,
|
|
17
|
-
/;/,
|
|
18
|
-
/&/,
|
|
19
|
-
/>/,
|
|
20
|
-
/</,
|
|
21
|
-
];
|
|
22
|
-
function validateFilePath(filePath) {
|
|
6
|
+
const MAX_PATH_LENGTH = 4096;
|
|
7
|
+
/**
|
|
8
|
+
* 获取文件信息,仅做与权限无关的基础校验(路径长度、存在性)。
|
|
9
|
+
* 读取位置是否允许由 PermissionManager 按 classifyReadPath 裁决,这里不做位置判断。
|
|
10
|
+
*/
|
|
11
|
+
function safeGetFileInfo(filePath) {
|
|
23
12
|
try {
|
|
24
13
|
const normalizedPath = (0, file_1.canonicalizeFilePath)(filePath);
|
|
25
|
-
if (normalizedPath.length >
|
|
26
|
-
return {
|
|
27
|
-
}
|
|
28
|
-
for (const pattern of SUSPICIOUS_PATTERNS) {
|
|
29
|
-
if (pattern.test(normalizedPath)) {
|
|
30
|
-
return { isValid: false, normalizedPath, error: `Path contains suspicious pattern: ${pattern}` };
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
const allowedPaths = [(0, cwd_1.readInitialCwd)(), ...STATIC_BASE_PATHS];
|
|
34
|
-
const isInAllowedPath = allowedPaths.some(basePath => {
|
|
35
|
-
const base = (0, file_1.canonicalizeFilePath)(basePath);
|
|
36
|
-
const rel = (0, node_path_1.relative)(base, normalizedPath);
|
|
37
|
-
if (!rel || rel === '')
|
|
38
|
-
return true;
|
|
39
|
-
if (rel.startsWith('..')) {
|
|
40
|
-
(0, log_1.logDebug)('[SecureFileService] path escapes base, denied');
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
43
|
-
if ((0, node_path_1.isAbsolute)(rel)) {
|
|
44
|
-
(0, log_1.logDebug)('[SecureFileService] absolute relative path, denied');
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
return true;
|
|
48
|
-
});
|
|
49
|
-
if (!isInAllowedPath) {
|
|
50
|
-
return { isValid: false, normalizedPath, error: 'Path is outside allowed directories' };
|
|
14
|
+
if (normalizedPath.length > MAX_PATH_LENGTH) {
|
|
15
|
+
return { success: false, error: `Path too long (max ${MAX_PATH_LENGTH} characters)` };
|
|
51
16
|
}
|
|
52
|
-
return { isValid: true, normalizedPath };
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
return {
|
|
56
|
-
isValid: false,
|
|
57
|
-
normalizedPath: filePath,
|
|
58
|
-
error: `Path validation failed: ${error instanceof Error ? error.message : String(error)}`
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
function safeGetFileInfo(filePath) {
|
|
63
|
-
const validation = validateFilePath(filePath);
|
|
64
|
-
if (!validation.isValid) {
|
|
65
|
-
return { success: false, error: validation.error };
|
|
66
|
-
}
|
|
67
|
-
try {
|
|
68
|
-
const normalizedPath = validation.normalizedPath;
|
|
69
17
|
if (!(0, node_fs_1.existsSync)(normalizedPath)) {
|
|
70
18
|
return { success: false, error: `File '${normalizedPath}' does not exist` };
|
|
71
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secureFile.js","sourceRoot":"","sources":["../../src/util/secureFile.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"secureFile.js","sourceRoot":"","sources":["../../src/util/secureFile.ts"],"names":[],"mappings":";;AASA,0CA4CC;AArDD,qCAA8C;AAC9C,iCAA6C;AAE7C,MAAM,eAAe,GAAG,IAAI,CAAA;AAE5B;;;GAGG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAa9C,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,IAAA,2BAAoB,EAAC,QAAQ,CAAC,CAAA;QAErD,IAAI,cAAc,CAAC,MAAM,GAAG,eAAe,EAAE,CAAC;YAC5C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,eAAe,cAAc,EAAE,CAAA;QACvF,CAAC;QAED,IAAI,CAAC,IAAA,oBAAU,EAAC,cAAc,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,cAAc,kBAAkB,EAAE,CAAA;QAC7E,CAAC;QAED,MAAM,KAAK,GAAG,IAAA,kBAAQ,EAAC,cAAc,CAAC,CAAA;QAEtC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;gBAChC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB;SACF,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SAC5F,CAAA;IACH,CAAC;AACH,CAAC"}
|
package/dist/util/shell.d.ts
CHANGED
package/dist/util/shell.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/util/shell.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAA;AA2BlE,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAGD,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,YAAY,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMnD;AAiED,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,YAAY,GAAG,KAAK,CAAA;AAEvE,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/util/shell.ts"],"names":[],"mappings":"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"}
|