sema-core 2.1.1 → 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.
Files changed (132) hide show
  1. package/dist/core/Conversation.d.ts.map +1 -1
  2. package/dist/core/Conversation.js +9 -3
  3. package/dist/core/Conversation.js.map +1 -1
  4. package/dist/core/SemaEngine.d.ts +0 -5
  5. package/dist/core/SemaEngine.d.ts.map +1 -1
  6. package/dist/core/SemaEngine.js +19 -50
  7. package/dist/core/SemaEngine.js.map +1 -1
  8. package/dist/events/types.d.ts +4 -1
  9. package/dist/events/types.d.ts.map +1 -1
  10. package/dist/manager/ConfManager.d.ts.map +1 -1
  11. package/dist/manager/ConfManager.js +3 -0
  12. package/dist/manager/ConfManager.js.map +1 -1
  13. package/dist/manager/PermissionManager.d.ts.map +1 -1
  14. package/dist/manager/PermissionManager.js +124 -216
  15. package/dist/manager/PermissionManager.js.map +1 -1
  16. package/dist/manager/runShellGate.d.ts +25 -0
  17. package/dist/manager/runShellGate.d.ts.map +1 -0
  18. package/dist/manager/runShellGate.js +154 -0
  19. package/dist/manager/runShellGate.js.map +1 -0
  20. package/dist/prompt/inputPredict.d.ts +1 -1
  21. package/dist/prompt/inputPredict.d.ts.map +1 -1
  22. package/dist/prompt/inputPredict.js +1 -1
  23. package/dist/prompt/permission.d.ts.map +1 -1
  24. package/dist/prompt/permission.js +91 -36
  25. package/dist/prompt/permission.js.map +1 -1
  26. package/dist/prompt/skills.d.ts +18 -0
  27. package/dist/prompt/skills.d.ts.map +1 -0
  28. package/dist/prompt/skills.js +151 -0
  29. package/dist/prompt/skills.js.map +1 -0
  30. package/dist/prompt/toolAliases.d.ts +12 -1
  31. package/dist/prompt/toolAliases.d.ts.map +1 -1
  32. package/dist/prompt/toolAliases.js +28 -1
  33. package/dist/prompt/toolAliases.js.map +1 -1
  34. package/dist/prompt/tools/runShell.js +1 -1
  35. package/dist/prompt/tools/skill.d.ts.map +1 -1
  36. package/dist/prompt/tools/skill.js +2 -1
  37. package/dist/prompt/tools/skill.js.map +1 -1
  38. package/dist/services/agents/agentsManager.d.ts +5 -2
  39. package/dist/services/agents/agentsManager.d.ts.map +1 -1
  40. package/dist/services/agents/agentsManager.js +33 -21
  41. package/dist/services/agents/agentsManager.js.map +1 -1
  42. package/dist/services/commands/commandsManager.d.ts +5 -6
  43. package/dist/services/commands/commandsManager.d.ts.map +1 -1
  44. package/dist/services/commands/commandsManager.js +28 -23
  45. package/dist/services/commands/commandsManager.js.map +1 -1
  46. package/dist/services/hooks/hookTriggers.d.ts.map +1 -1
  47. package/dist/services/hooks/hookTriggers.js +4 -1
  48. package/dist/services/hooks/hookTriggers.js.map +1 -1
  49. package/dist/services/hooks/hooksManager.d.ts +8 -2
  50. package/dist/services/hooks/hooksManager.d.ts.map +1 -1
  51. package/dist/services/hooks/hooksManager.js +70 -28
  52. package/dist/services/hooks/hooksManager.js.map +1 -1
  53. package/dist/services/mcp/MCPManager.d.ts +2 -1
  54. package/dist/services/mcp/MCPManager.d.ts.map +1 -1
  55. package/dist/services/mcp/MCPManager.js +4 -2
  56. package/dist/services/mcp/MCPManager.js.map +1 -1
  57. package/dist/services/memory/memManager.d.ts +8 -1
  58. package/dist/services/memory/memManager.d.ts.map +1 -1
  59. package/dist/services/memory/memManager.js +16 -2
  60. package/dist/services/memory/memManager.js.map +1 -1
  61. package/dist/services/plugins/pluginsManager.d.ts +1 -1
  62. package/dist/services/plugins/pluginsManager.d.ts.map +1 -1
  63. package/dist/services/plugins/pluginsManager.js +13 -4
  64. package/dist/services/plugins/pluginsManager.js.map +1 -1
  65. package/dist/services/rules/rulesManager.d.ts +2 -1
  66. package/dist/services/rules/rulesManager.d.ts.map +1 -1
  67. package/dist/services/rules/rulesManager.js +2 -2
  68. package/dist/services/rules/rulesManager.js.map +1 -1
  69. package/dist/services/skills/skillsManager.d.ts +13 -8
  70. package/dist/services/skills/skillsManager.d.ts.map +1 -1
  71. package/dist/services/skills/skillsManager.js +68 -30
  72. package/dist/services/skills/skillsManager.js.map +1 -1
  73. package/dist/tools/EditNotebook.d.ts +1 -1
  74. package/dist/tools/PatchFile.d.ts.map +1 -1
  75. package/dist/tools/PatchFile.js +22 -18
  76. package/dist/tools/PatchFile.js.map +1 -1
  77. package/dist/tools/RunShell.d.ts +9 -9
  78. package/dist/tools/RunShell.d.ts.map +1 -1
  79. package/dist/tools/RunShell.js +11 -14
  80. package/dist/tools/RunShell.js.map +1 -1
  81. package/dist/tools/Skill.d.ts.map +1 -1
  82. package/dist/tools/Skill.js +40 -2
  83. package/dist/tools/Skill.js.map +1 -1
  84. package/dist/tools/ViewFile.d.ts.map +1 -1
  85. package/dist/tools/ViewFile.js +3 -19
  86. package/dist/tools/ViewFile.js.map +1 -1
  87. package/dist/tools/WriteFile.d.ts.map +1 -1
  88. package/dist/tools/WriteFile.js +4 -2
  89. package/dist/tools/WriteFile.js.map +1 -1
  90. package/dist/tools/base/tools.d.ts.map +1 -1
  91. package/dist/tools/base/tools.js +7 -1
  92. package/dist/tools/base/tools.js.map +1 -1
  93. package/dist/types/hook.d.ts +8 -3
  94. package/dist/types/hook.d.ts.map +1 -1
  95. package/dist/types/index.d.ts +1 -1
  96. package/dist/types/index.d.ts.map +1 -1
  97. package/dist/types/plugin.d.ts +2 -0
  98. package/dist/types/plugin.d.ts.map +1 -1
  99. package/dist/types/skill.d.ts +1 -1
  100. package/dist/types/skill.d.ts.map +1 -1
  101. package/dist/util/autoRunContext.d.ts +3 -2
  102. package/dist/util/autoRunContext.d.ts.map +1 -1
  103. package/dist/util/autoRunContext.js +45 -11
  104. package/dist/util/autoRunContext.js.map +1 -1
  105. package/dist/util/commands.d.ts.map +1 -1
  106. package/dist/util/commands.js +6 -1
  107. package/dist/util/commands.js.map +1 -1
  108. package/dist/util/fetchSafety.d.ts +10 -3
  109. package/dist/util/fetchSafety.d.ts.map +1 -1
  110. package/dist/util/fetchSafety.js +22 -29
  111. package/dist/util/fetchSafety.js.map +1 -1
  112. package/dist/util/imageCompress.d.ts +16 -0
  113. package/dist/util/imageCompress.d.ts.map +1 -1
  114. package/dist/util/imageCompress.js +53 -0
  115. package/dist/util/imageCompress.js.map +1 -1
  116. package/dist/util/readPathClass.d.ts +16 -0
  117. package/dist/util/readPathClass.d.ts.map +1 -0
  118. package/dist/util/readPathClass.js +121 -0
  119. package/dist/util/readPathClass.js.map +1 -0
  120. package/dist/util/secureFile.d.ts +4 -0
  121. package/dist/util/secureFile.d.ts.map +1 -1
  122. package/dist/util/secureFile.js +8 -60
  123. package/dist/util/secureFile.js.map +1 -1
  124. package/dist/util/shell.d.ts +1 -0
  125. package/dist/util/shell.d.ts.map +1 -1
  126. package/dist/util/shell.js +36 -0
  127. package/dist/util/shell.js.map +1 -1
  128. package/dist/util/shellSafety.d.ts +26 -15
  129. package/dist/util/shellSafety.d.ts.map +1 -1
  130. package/dist/util/shellSafety.js +277 -60
  131. package/dist/util/shellSafety.js.map +1 -1
  132. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/util/commands.ts"],"names":[],"mappings":"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"}
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 的确定性 SSRF 兜底:命中环回 / 链路本地(含云元数据 169.254.169.254)/
3
- * 内网 / 未指定地址 / 本地主机名,一律按危险处理,不交给模型。URL 解析失败同样按危险处理。
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 declare function isBlockedFetchHost(url: string): boolean;
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;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CA2CvD"}
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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isBlockedFetchHost = isBlockedFetchHost;
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 true;
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 true;
37
+ return 'loopback';
47
38
  if (host === 'metadata.google.internal')
48
- return true;
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 true; // 0.0.0.0/8 未指定
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 true; // 127.0.0.0/8 环回
52
+ return 'loopback'; // 127.0.0.0/8 环回
64
53
  if (a === 169 && b === 254)
65
- return true; // 169.254.0.0/16 链路本地(含元数据)
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 true; // 172.16.0.0/12 私网
58
+ return 'private'; // 172.16.0.0/12 私网
68
59
  if (a === 192 && b === 168)
69
- return true; // 192.168.0.0/16 私网
60
+ return 'private'; // 192.168.0.0/16 私网
70
61
  if (a === 100 && b >= 64 && b <= 127)
71
- return true; // 100.64.0.0/10 CGNAT
72
- return false;
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' || host === '::')
77
- return true;
67
+ if (host === '::1')
68
+ return 'loopback';
69
+ if (host === '::')
70
+ return 'blocked';
78
71
  if (/^f[cd]/.test(host))
79
- return true; // fc00::/7
72
+ return 'private'; // fc00::/7
80
73
  if (/^fe[89ab]/.test(host))
81
- return true; // fe80::/10
82
- return false;
74
+ return 'blocked'; // fe80::/10
75
+ return 'public';
83
76
  }
84
- return false;
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":"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"}
1
+ {"version":3,"file":"fetchSafety.js","sourceRoot":"","sources":["../../src/util/fetchSafety.ts"],"names":[],"mappings":"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"}
@@ -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":"AAOA;;;;;;;;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"}
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":"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"}
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,3 +1,7 @@
1
+ /**
2
+ * 获取文件信息,仅做与权限无关的基础校验(路径长度、存在性)。
3
+ * 读取位置是否允许由 PermissionManager 按 classifyReadPath 裁决,这里不做位置判断。
4
+ */
1
5
  export declare function safeGetFileInfo(filePath: string): {
2
6
  success: boolean;
3
7
  stats?: {
@@ -1 +1 @@
1
- {"version":3,"file":"secureFile.d.ts","sourceRoot":"","sources":["../../src/util/secureFile.ts"],"names":[],"mappings":"AAkEA,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,CAiCA"}
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"}
@@ -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 cwd_1 = require("./cwd");
9
- const log_1 = require("./log");
10
- const STATIC_BASE_PATHS = [(0, node_os_1.homedir)(), '/tmp', '/var/tmp', (0, node_os_1.tmpdir)()];
11
- const SUSPICIOUS_PATTERNS = [
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 > 4096) {
26
- return { isValid: false, normalizedPath, error: 'Path too long (max 4096 characters)' };
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":"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"}
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"}
@@ -59,6 +59,7 @@ export declare class PersistentShell {
59
59
  private sendToShell;
60
60
  pwd(): string;
61
61
  setCwd(cwd: string): Promise<void>;
62
+ resetCwdIfOutside(root: string): Promise<boolean>;
62
63
  close(): void;
63
64
  }
64
65
  export declare const STDOUT_HEAD_TAIL_LINES = 500;
@@ -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;AA4CD,wBAAgB,mBAAmB,IAAI,aAAa,GAAG,IAAI,CAO1D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAYlE;AAED,wBAAgB,0BAA0B,IAAI,aAAa,CAE1D;AAmMD,qBAAa,eAAe;IAC1B,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,kBAAkB,CAAiB;IAC3C,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,iBAAiB,CAAa;gBAE1B,GAAG,EAAE,MAAM;IAuFvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA+B;IAGtD,MAAM,CAAC,OAAO;IAQd,MAAM,CAAC,WAAW,IAAI,eAAe;IASrC,YAAY;YA4DE,YAAY;IA0CpB,IAAI,CACR,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,WAAW,EACzB,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,EAClD,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,sBAAsB,KAAK,IAAI,GAChD,OAAO,CAAC,eAAe,CAAC;IAO3B;;;OAGG;IACH,OAAO,CAAC,WAAW;YAgCL,KAAK;YA0KL,gBAAgB;IAwG9B,OAAO,CAAC,WAAW;IAcnB,GAAG,IAAI,MAAM;IAmBP,MAAM,CAAC,GAAG,EAAE,MAAM;IAkBxB,KAAK,IAAI,IAAI;CAId;AAID,eAAO,MAAM,sBAAsB,MAAM,CAAA;AACzC,eAAO,MAAM,sBAAsB,KAAK,CAAA;AASxC,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,SAAyB,EAAE,EAAE,SAAgB,EAAE,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO;;;EAwBvI"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/util/shell.ts"],"names":[],"mappings":"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"}