@zhin.js/agent 0.1.25 → 0.1.26

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 (307) hide show
  1. package/lib/agent-prompt/registry.js +1 -1
  2. package/lib/agent-prompt/registry.js.map +1 -1
  3. package/lib/ai-event-bus.d.ts +19 -0
  4. package/lib/ai-event-bus.d.ts.map +1 -0
  5. package/lib/ai-event-bus.js +75 -0
  6. package/lib/ai-event-bus.js.map +1 -0
  7. package/lib/ai-event-subscriber.d.ts +38 -0
  8. package/lib/ai-event-subscriber.d.ts.map +1 -0
  9. package/lib/ai-event-subscriber.js +61 -0
  10. package/lib/ai-event-subscriber.js.map +1 -0
  11. package/lib/builtin/ask-user-tool.d.ts +2 -0
  12. package/lib/builtin/ask-user-tool.d.ts.map +1 -1
  13. package/lib/builtin/ask-user-tool.js +2 -0
  14. package/lib/builtin/ask-user-tool.js.map +1 -1
  15. package/lib/builtin/bash-tool.d.ts +7 -3
  16. package/lib/builtin/bash-tool.d.ts.map +1 -1
  17. package/lib/builtin/bash-tool.js +51 -9
  18. package/lib/builtin/bash-tool.js.map +1 -1
  19. package/lib/builtin/bing-search-html.d.ts.map +1 -1
  20. package/lib/builtin/bing-search-html.js +14 -7
  21. package/lib/builtin/bing-search-html.js.map +1 -1
  22. package/lib/builtin/builtin-base-tool.d.ts +2 -0
  23. package/lib/builtin/builtin-base-tool.d.ts.map +1 -1
  24. package/lib/builtin/builtin-base-tool.js +5 -0
  25. package/lib/builtin/builtin-base-tool.js.map +1 -1
  26. package/lib/builtin/edit-file-tool.d.ts +1 -1
  27. package/lib/builtin/edit-file-tool.d.ts.map +1 -1
  28. package/lib/builtin/edit-file-tool.js +33 -1
  29. package/lib/builtin/edit-file-tool.js.map +1 -1
  30. package/lib/builtin/file-edit-quote-utils.d.ts +1 -3
  31. package/lib/builtin/file-edit-quote-utils.d.ts.map +1 -1
  32. package/lib/builtin/file-edit-quote-utils.js +1 -3
  33. package/lib/builtin/file-edit-quote-utils.js.map +1 -1
  34. package/lib/builtin/glob-tool.d.ts +1 -1
  35. package/lib/builtin/glob-tool.d.ts.map +1 -1
  36. package/lib/builtin/glob-tool.js +15 -3
  37. package/lib/builtin/glob-tool.js.map +1 -1
  38. package/lib/builtin/grep-tool.d.ts +1 -1
  39. package/lib/builtin/grep-tool.d.ts.map +1 -1
  40. package/lib/builtin/grep-tool.js +16 -3
  41. package/lib/builtin/grep-tool.js.map +1 -1
  42. package/lib/builtin/list-dir-tool.d.ts +1 -1
  43. package/lib/builtin/list-dir-tool.d.ts.map +1 -1
  44. package/lib/builtin/list-dir-tool.js +14 -3
  45. package/lib/builtin/list-dir-tool.js.map +1 -1
  46. package/lib/builtin/read-file-tool.d.ts +1 -1
  47. package/lib/builtin/read-file-tool.d.ts.map +1 -1
  48. package/lib/builtin/read-file-tool.js +24 -3
  49. package/lib/builtin/read-file-tool.js.map +1 -1
  50. package/lib/builtin/run-deferred-task-tool.d.ts +3 -0
  51. package/lib/builtin/run-deferred-task-tool.d.ts.map +1 -1
  52. package/lib/builtin/run-deferred-task-tool.js +2 -0
  53. package/lib/builtin/run-deferred-task-tool.js.map +1 -1
  54. package/lib/builtin/spawn-task-tool.d.ts.map +1 -1
  55. package/lib/builtin/spawn-task-tool.js +2 -0
  56. package/lib/builtin/spawn-task-tool.js.map +1 -1
  57. package/lib/builtin/web-fetch-tool.d.ts +2 -2
  58. package/lib/builtin/web-fetch-tool.d.ts.map +1 -1
  59. package/lib/builtin/web-fetch-tool.js +12 -18
  60. package/lib/builtin/web-fetch-tool.js.map +1 -1
  61. package/lib/builtin/write-file-tool.d.ts +1 -1
  62. package/lib/builtin/write-file-tool.d.ts.map +1 -1
  63. package/lib/builtin/write-file-tool.js +33 -1
  64. package/lib/builtin/write-file-tool.js.map +1 -1
  65. package/lib/common-adapter-tools.d.ts +8 -41
  66. package/lib/common-adapter-tools.d.ts.map +1 -1
  67. package/lib/common-adapter-tools.js +23 -182
  68. package/lib/common-adapter-tools.js.map +1 -1
  69. package/lib/deferred-worker-runner.d.ts +13 -2
  70. package/lib/deferred-worker-runner.d.ts.map +1 -1
  71. package/lib/deferred-worker-runner.js +91 -13
  72. package/lib/deferred-worker-runner.js.map +1 -1
  73. package/lib/discovery/agents.js +1 -1
  74. package/lib/discovery/agents.js.map +1 -1
  75. package/lib/discovery/skills.js +1 -1
  76. package/lib/discovery/skills.js.map +1 -1
  77. package/lib/discovery/tools.d.ts +1 -1
  78. package/lib/discovery/tools.d.ts.map +1 -1
  79. package/lib/discovery/tools.js +17 -4
  80. package/lib/discovery/tools.js.map +1 -1
  81. package/lib/discovery/utils.js +1 -1
  82. package/lib/discovery/utils.js.map +1 -1
  83. package/lib/hooks.d.ts.map +1 -1
  84. package/lib/hooks.js +2 -0
  85. package/lib/hooks.js.map +1 -1
  86. package/lib/index.d.ts +9 -1
  87. package/lib/index.d.ts.map +1 -1
  88. package/lib/index.js +6 -0
  89. package/lib/index.js.map +1 -1
  90. package/lib/init/message-media.d.ts +3 -1
  91. package/lib/init/message-media.d.ts.map +1 -1
  92. package/lib/init/message-media.js +20 -0
  93. package/lib/init/message-media.js.map +1 -1
  94. package/lib/init/register-ai-service.js.map +1 -1
  95. package/lib/init/register-ai-trigger.d.ts.map +1 -1
  96. package/lib/init/register-ai-trigger.js +71 -10
  97. package/lib/init/register-ai-trigger.js.map +1 -1
  98. package/lib/init/register-builtin-tools.js +7 -7
  99. package/lib/init/register-builtin-tools.js.map +1 -1
  100. package/lib/init/register-typing-indicator.d.ts +9 -0
  101. package/lib/init/register-typing-indicator.d.ts.map +1 -0
  102. package/lib/init/register-typing-indicator.js +206 -0
  103. package/lib/init/register-typing-indicator.js.map +1 -0
  104. package/lib/init.d.ts.map +1 -1
  105. package/lib/init.js +2 -0
  106. package/lib/init.js.map +1 -1
  107. package/lib/mcp-client/connection.d.ts +2 -0
  108. package/lib/mcp-client/connection.d.ts.map +1 -1
  109. package/lib/mcp-client/connection.js +7 -0
  110. package/lib/mcp-client/connection.js.map +1 -1
  111. package/lib/mcp-client/index.d.ts +2 -0
  112. package/lib/mcp-client/index.d.ts.map +1 -1
  113. package/lib/mcp-client/index.js +19 -2
  114. package/lib/mcp-client/index.js.map +1 -1
  115. package/lib/monitoring/index.d.ts +79 -0
  116. package/lib/monitoring/index.d.ts.map +1 -0
  117. package/lib/monitoring/index.js +197 -0
  118. package/lib/monitoring/index.js.map +1 -0
  119. package/lib/monitoring/metrics.d.ts +240 -0
  120. package/lib/monitoring/metrics.d.ts.map +1 -0
  121. package/lib/monitoring/metrics.js +483 -0
  122. package/lib/monitoring/metrics.js.map +1 -0
  123. package/lib/orchestrator/agent-dispatcher.d.ts +170 -0
  124. package/lib/orchestrator/agent-dispatcher.d.ts.map +1 -0
  125. package/lib/orchestrator/agent-dispatcher.js +379 -0
  126. package/lib/orchestrator/agent-dispatcher.js.map +1 -0
  127. package/lib/orchestrator/hook-registry.d.ts.map +1 -1
  128. package/lib/orchestrator/hook-registry.js +2 -0
  129. package/lib/orchestrator/hook-registry.js.map +1 -1
  130. package/lib/orchestrator/index.d.ts +2 -0
  131. package/lib/orchestrator/index.d.ts.map +1 -1
  132. package/lib/orchestrator/index.js +2 -0
  133. package/lib/orchestrator/index.js.map +1 -1
  134. package/lib/orchestrator/mcp-lifecycle.d.ts +1 -1
  135. package/lib/orchestrator/mcp-lifecycle.d.ts.map +1 -1
  136. package/lib/orchestrator/mcp-lifecycle.js +2 -2
  137. package/lib/orchestrator/mcp-lifecycle.js.map +1 -1
  138. package/lib/orchestrator/mcp-registry.d.ts +8 -1
  139. package/lib/orchestrator/mcp-registry.d.ts.map +1 -1
  140. package/lib/orchestrator/mcp-registry.js +28 -5
  141. package/lib/orchestrator/mcp-registry.js.map +1 -1
  142. package/lib/orchestrator/task-queue.d.ts +147 -0
  143. package/lib/orchestrator/task-queue.d.ts.map +1 -0
  144. package/lib/orchestrator/task-queue.js +337 -0
  145. package/lib/orchestrator/task-queue.js.map +1 -0
  146. package/lib/orchestrator/tool-selection.d.ts.map +1 -1
  147. package/lib/orchestrator/tool-selection.js +3 -0
  148. package/lib/orchestrator/tool-selection.js.map +1 -1
  149. package/lib/orchestrator/types.d.ts +8 -0
  150. package/lib/orchestrator/types.d.ts.map +1 -1
  151. package/lib/plugin-ai-hook-bus.d.ts +4 -0
  152. package/lib/plugin-ai-hook-bus.d.ts.map +1 -0
  153. package/lib/plugin-ai-hook-bus.js +24 -0
  154. package/lib/plugin-ai-hook-bus.js.map +1 -0
  155. package/lib/security/anomaly-detection.d.ts +119 -0
  156. package/lib/security/anomaly-detection.d.ts.map +1 -0
  157. package/lib/security/anomaly-detection.js +305 -0
  158. package/lib/security/anomaly-detection.js.map +1 -0
  159. package/lib/security/audit-logger.d.ts +158 -0
  160. package/lib/security/audit-logger.d.ts.map +1 -0
  161. package/lib/security/audit-logger.js +379 -0
  162. package/lib/security/audit-logger.js.map +1 -0
  163. package/lib/security/bash-tool-context.d.ts +3 -3
  164. package/lib/security/bash-tool-context.d.ts.map +1 -1
  165. package/lib/security/budget-limiter.d.ts +156 -0
  166. package/lib/security/budget-limiter.d.ts.map +1 -0
  167. package/lib/security/budget-limiter.js +363 -0
  168. package/lib/security/budget-limiter.js.map +1 -0
  169. package/lib/security/dangerous-tool-policy.d.ts +17 -0
  170. package/lib/security/dangerous-tool-policy.d.ts.map +1 -0
  171. package/lib/security/dangerous-tool-policy.js +137 -0
  172. package/lib/security/dangerous-tool-policy.js.map +1 -0
  173. package/lib/security/exec-policy.d.ts +21 -12
  174. package/lib/security/exec-policy.d.ts.map +1 -1
  175. package/lib/security/exec-policy.js +198 -25
  176. package/lib/security/exec-policy.js.map +1 -1
  177. package/lib/security/file-policy.d.ts +0 -1
  178. package/lib/security/file-policy.d.ts.map +1 -1
  179. package/lib/security/file-policy.js +112 -14
  180. package/lib/security/file-policy.js.map +1 -1
  181. package/lib/security/file-role-policy.d.ts +119 -0
  182. package/lib/security/file-role-policy.d.ts.map +1 -0
  183. package/lib/security/file-role-policy.js +268 -0
  184. package/lib/security/file-role-policy.js.map +1 -0
  185. package/lib/security/index.d.ts +59 -0
  186. package/lib/security/index.d.ts.map +1 -1
  187. package/lib/security/index.js +68 -0
  188. package/lib/security/index.js.map +1 -1
  189. package/lib/security/network-policy.d.ts +94 -0
  190. package/lib/security/network-policy.d.ts.map +1 -0
  191. package/lib/security/network-policy.js +291 -0
  192. package/lib/security/network-policy.js.map +1 -0
  193. package/lib/security/owner-approve-always-store.d.ts +2 -0
  194. package/lib/security/owner-approve-always-store.d.ts.map +1 -1
  195. package/lib/security/owner-approve-always-store.js +37 -0
  196. package/lib/security/owner-approve-always-store.js.map +1 -1
  197. package/lib/security/sandbox-enhanced.d.ts +170 -0
  198. package/lib/security/sandbox-enhanced.d.ts.map +1 -0
  199. package/lib/security/sandbox-enhanced.js +630 -0
  200. package/lib/security/sandbox-enhanced.js.map +1 -0
  201. package/lib/security/sandbox.d.ts +104 -0
  202. package/lib/security/sandbox.d.ts.map +1 -0
  203. package/lib/security/sandbox.js +373 -0
  204. package/lib/security/sandbox.js.map +1 -0
  205. package/lib/security/security-config.example.d.ts +33 -0
  206. package/lib/security/security-config.example.d.ts.map +1 -0
  207. package/lib/security/security-config.example.js +166 -0
  208. package/lib/security/security-config.example.js.map +1 -0
  209. package/lib/subagent-goal-notify.d.ts +13 -0
  210. package/lib/subagent-goal-notify.d.ts.map +1 -0
  211. package/lib/subagent-goal-notify.js +32 -0
  212. package/lib/subagent-goal-notify.js.map +1 -0
  213. package/lib/subagent.d.ts +24 -0
  214. package/lib/subagent.d.ts.map +1 -1
  215. package/lib/subagent.js +98 -16
  216. package/lib/subagent.js.map +1 -1
  217. package/lib/typing-indicator/adapter-integration.d.ts +140 -0
  218. package/lib/typing-indicator/adapter-integration.d.ts.map +1 -0
  219. package/lib/typing-indicator/adapter-integration.js +473 -0
  220. package/lib/typing-indicator/adapter-integration.js.map +1 -0
  221. package/lib/typing-indicator/index.d.ts +170 -0
  222. package/lib/typing-indicator/index.d.ts.map +1 -0
  223. package/lib/typing-indicator/index.js +311 -0
  224. package/lib/typing-indicator/index.js.map +1 -0
  225. package/lib/typing-indicator/integration.d.ts +91 -0
  226. package/lib/typing-indicator/integration.d.ts.map +1 -0
  227. package/lib/typing-indicator/integration.js +219 -0
  228. package/lib/typing-indicator/integration.js.map +1 -0
  229. package/lib/zhin-agent/config.d.ts +20 -2
  230. package/lib/zhin-agent/config.d.ts.map +1 -1
  231. package/lib/zhin-agent/config.js +27 -9
  232. package/lib/zhin-agent/config.js.map +1 -1
  233. package/lib/zhin-agent/event-emitter.d.ts +11 -0
  234. package/lib/zhin-agent/event-emitter.d.ts.map +1 -0
  235. package/lib/zhin-agent/event-emitter.js +43 -0
  236. package/lib/zhin-agent/event-emitter.js.map +1 -0
  237. package/lib/zhin-agent/index.d.ts +9 -31
  238. package/lib/zhin-agent/index.d.ts.map +1 -1
  239. package/lib/zhin-agent/index.js +70 -672
  240. package/lib/zhin-agent/index.js.map +1 -1
  241. package/lib/zhin-agent/llm-runner.d.ts +16 -0
  242. package/lib/zhin-agent/llm-runner.d.ts.map +1 -0
  243. package/lib/zhin-agent/llm-runner.js +85 -0
  244. package/lib/zhin-agent/llm-runner.js.map +1 -0
  245. package/lib/zhin-agent/model-resolver.d.ts +9 -0
  246. package/lib/zhin-agent/model-resolver.d.ts.map +1 -0
  247. package/lib/zhin-agent/model-resolver.js +25 -0
  248. package/lib/zhin-agent/model-resolver.js.map +1 -0
  249. package/lib/zhin-agent/phase-trace.d.ts +12 -0
  250. package/lib/zhin-agent/phase-trace.d.ts.map +1 -0
  251. package/lib/zhin-agent/phase-trace.js +24 -0
  252. package/lib/zhin-agent/phase-trace.js.map +1 -0
  253. package/lib/zhin-agent/prompt-assembly.d.ts +22 -0
  254. package/lib/zhin-agent/prompt-assembly.d.ts.map +1 -0
  255. package/lib/zhin-agent/prompt-assembly.js +66 -0
  256. package/lib/zhin-agent/prompt-assembly.js.map +1 -0
  257. package/lib/zhin-agent/prompt-builder.d.ts +200 -0
  258. package/lib/zhin-agent/prompt-builder.d.ts.map +1 -0
  259. package/lib/zhin-agent/prompt-builder.js +574 -0
  260. package/lib/zhin-agent/prompt-builder.js.map +1 -0
  261. package/lib/zhin-agent/prompt-templates.d.ts +160 -0
  262. package/lib/zhin-agent/prompt-templates.d.ts.map +1 -0
  263. package/lib/zhin-agent/prompt-templates.js +436 -0
  264. package/lib/zhin-agent/prompt-templates.js.map +1 -0
  265. package/lib/zhin-agent/prompt.d.ts +15 -0
  266. package/lib/zhin-agent/prompt.d.ts.map +1 -1
  267. package/lib/zhin-agent/prompt.js +149 -4
  268. package/lib/zhin-agent/prompt.js.map +1 -1
  269. package/lib/zhin-agent/session-io.d.ts +10 -0
  270. package/lib/zhin-agent/session-io.d.ts.map +1 -0
  271. package/lib/zhin-agent/session-io.js +14 -0
  272. package/lib/zhin-agent/session-io.js.map +1 -0
  273. package/lib/zhin-agent/task-continuation.d.ts +144 -0
  274. package/lib/zhin-agent/task-continuation.d.ts.map +1 -0
  275. package/lib/zhin-agent/task-continuation.js +346 -0
  276. package/lib/zhin-agent/task-continuation.js.map +1 -0
  277. package/lib/zhin-agent/text-sanitize.d.ts +2 -5
  278. package/lib/zhin-agent/text-sanitize.d.ts.map +1 -1
  279. package/lib/zhin-agent/text-sanitize.js +2 -25
  280. package/lib/zhin-agent/text-sanitize.js.map +1 -1
  281. package/lib/zhin-agent/tool-calls-user-format.d.ts.map +1 -1
  282. package/lib/zhin-agent/tool-calls-user-format.js +12 -3
  283. package/lib/zhin-agent/tool-calls-user-format.js.map +1 -1
  284. package/lib/zhin-agent/tool-orchestration.d.ts +9 -0
  285. package/lib/zhin-agent/tool-orchestration.d.ts.map +1 -0
  286. package/lib/zhin-agent/tool-orchestration.js +68 -0
  287. package/lib/zhin-agent/tool-orchestration.js.map +1 -0
  288. package/lib/zhin-agent/tool-search-orchestrator.d.ts.map +1 -1
  289. package/lib/zhin-agent/tool-search-orchestrator.js +5 -2
  290. package/lib/zhin-agent/tool-search-orchestrator.js.map +1 -1
  291. package/lib/zhin-agent/turn-pipeline.d.ts +5 -0
  292. package/lib/zhin-agent/turn-pipeline.d.ts.map +1 -0
  293. package/lib/zhin-agent/turn-pipeline.js +541 -0
  294. package/lib/zhin-agent/turn-pipeline.js.map +1 -0
  295. package/lib/zhin-agent/turn-tracker.d.ts +17 -0
  296. package/lib/zhin-agent/turn-tracker.d.ts.map +1 -0
  297. package/lib/zhin-agent/turn-tracker.js +54 -0
  298. package/lib/zhin-agent/turn-tracker.js.map +1 -0
  299. package/lib/zhin-agent/web-search-locale-attach.d.ts +4 -0
  300. package/lib/zhin-agent/web-search-locale-attach.d.ts.map +1 -0
  301. package/lib/zhin-agent/web-search-locale-attach.js +19 -0
  302. package/lib/zhin-agent/web-search-locale-attach.js.map +1 -0
  303. package/lib/zhin-agent/zhin-agent-private.d.ts +66 -0
  304. package/lib/zhin-agent/zhin-agent-private.d.ts.map +1 -0
  305. package/lib/zhin-agent/zhin-agent-private.js +4 -0
  306. package/lib/zhin-agent/zhin-agent-private.js.map +1 -0
  307. package/package.json +5 -5
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Agent 沙箱环境
3
+ *
4
+ * 提供进程级隔离和资源限制。
5
+ *
6
+ * 功能:
7
+ * - 进程隔离(子进程执行)
8
+ * - 资源限制(CPU、内存、时间)
9
+ * - 文件系统隔离(工作目录限制)
10
+ * - 环境变量清理
11
+ * - 网络隔离(可选)
12
+ */
13
+ export interface SandboxConfig {
14
+ /** 是否启用沙箱 */
15
+ enabled: boolean;
16
+ /** 工作目录限制(命令只能在此目录下执行) */
17
+ workingDirectory?: string;
18
+ /** 最大执行时间(毫秒) */
19
+ timeout?: number;
20
+ /** 最大内存使用(MB) */
21
+ maxMemoryMB?: number;
22
+ /** 最大 CPU 使用率(百分比) */
23
+ maxCpuPercent?: number;
24
+ /** 最大输出大小(字节) */
25
+ maxOutputSize?: number;
26
+ /** 允许的环境变量 */
27
+ allowedEnvVars?: string[];
28
+ /** 禁止的环境变量 */
29
+ blockedEnvVars?: string[];
30
+ /** 是否保留 HOME 目录 */
31
+ preserveHome?: boolean;
32
+ /** 是否保留 PATH */
33
+ preservePath?: boolean;
34
+ /** 额外的环境变量 */
35
+ extraEnvVars?: Record<string, string>;
36
+ /** 是否启用网络(默认 false) */
37
+ enableNetwork?: boolean;
38
+ /** 允许的域名(如果启用网络) */
39
+ allowedDomains?: string[];
40
+ }
41
+ export interface SandboxResult {
42
+ /** 是否成功 */
43
+ success: boolean;
44
+ /** 标准输出 */
45
+ stdout: string;
46
+ /** 标准错误 */
47
+ stderr: string;
48
+ /** 退出码 */
49
+ exitCode: number | null;
50
+ /** 执行时间(毫秒) */
51
+ duration: number;
52
+ /** 是否超时 */
53
+ timedOut: boolean;
54
+ /** 是否被沙箱阻止 */
55
+ blocked: boolean;
56
+ /** 阻止原因 */
57
+ blockReason?: string;
58
+ /** 资源使用情况 */
59
+ resourceUsage?: {
60
+ cpuTime: number;
61
+ memoryUsage: number;
62
+ };
63
+ }
64
+ export declare class Sandbox {
65
+ private config;
66
+ constructor(config?: Partial<SandboxConfig>);
67
+ /**
68
+ * 在沙箱中执行命令
69
+ */
70
+ execute(command: string, options?: {
71
+ cwd?: string;
72
+ env?: Record<string, string>;
73
+ timeout?: number;
74
+ }): Promise<SandboxResult>;
75
+ /**
76
+ * 不安全的命令执行(沙箱未启用时)
77
+ */
78
+ private executeUnsafe;
79
+ /**
80
+ * 更新配置
81
+ */
82
+ updateConfig(config: Partial<SandboxConfig>): void;
83
+ /**
84
+ * 获取配置
85
+ */
86
+ getConfig(): SandboxConfig;
87
+ }
88
+ /**
89
+ * 获取全局沙箱实例
90
+ */
91
+ export declare function getSandbox(): Sandbox;
92
+ /**
93
+ * 初始化沙箱
94
+ */
95
+ export declare function initSandbox(config: Partial<SandboxConfig>): Sandbox;
96
+ /**
97
+ * 在沙箱中执行命令
98
+ */
99
+ export declare function executeInSandbox(command: string, options?: {
100
+ cwd?: string;
101
+ env?: Record<string, string>;
102
+ timeout?: number;
103
+ }): Promise<SandboxResult>;
104
+ //# sourceMappingURL=sandbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/security/sandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,MAAM,WAAW,aAAa;IAC5B,aAAa;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,0BAA0B;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc;IACd,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc;IACd,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,mBAAmB;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc;IACd,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,uBAAuB;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AA2CD,MAAM,WAAW,aAAa;IAC5B,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW;IACX,MAAM,EAAE,MAAM,CAAC;IACf,WAAW;IACX,MAAM,EAAE,MAAM,CAAC;IACf,UAAU;IACV,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa;IACb,aAAa,CAAC,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AA4ID,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,GAAE,OAAO,CAAC,aAAa,CAAM;IAI/C;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QACvC,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,aAAa,CAAC;IA2H1B;;OAEG;YACW,aAAa;IAgE3B;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAIlD;;OAEG;IACH,SAAS,IAAI,aAAa;CAG3B;AAMD;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAKpC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAGnE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAChE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,aAAa,CAAC,CAEzB"}
@@ -0,0 +1,373 @@
1
+ /**
2
+ * Agent 沙箱环境
3
+ *
4
+ * 提供进程级隔离和资源限制。
5
+ *
6
+ * 功能:
7
+ * - 进程隔离(子进程执行)
8
+ * - 资源限制(CPU、内存、时间)
9
+ * - 文件系统隔离(工作目录限制)
10
+ * - 环境变量清理
11
+ * - 网络隔离(可选)
12
+ */
13
+ import * as child_process from 'node:child_process';
14
+ import * as os from 'node:os';
15
+ import * as fs from 'node:fs';
16
+ const DEFAULT_CONFIG = {
17
+ enabled: true,
18
+ timeout: 30000, // 30 秒
19
+ maxMemoryMB: 512, // 512 MB
20
+ maxCpuPercent: 50, // 50%
21
+ maxOutputSize: 10 * 1024 * 1024, // 10 MB
22
+ preserveHome: true,
23
+ preservePath: true,
24
+ enableNetwork: false,
25
+ allowedEnvVars: [
26
+ 'PATH',
27
+ 'HOME',
28
+ 'USER',
29
+ 'SHELL',
30
+ 'LANG',
31
+ 'LC_ALL',
32
+ 'LC_CTYPE',
33
+ 'TERM',
34
+ 'NODE_ENV',
35
+ 'npm_config_cache',
36
+ 'npm_config_prefix',
37
+ ],
38
+ blockedEnvVars: [
39
+ 'AWS_SECRET_ACCESS_KEY',
40
+ 'AWS_ACCESS_KEY_ID',
41
+ 'AZURE_CLIENT_SECRET',
42
+ 'AZURE_CLIENT_ID',
43
+ 'GOOGLE_APPLICATION_CREDENTIALS',
44
+ 'KUBECONFIG',
45
+ 'DOCKER_HOST',
46
+ 'DOCKER_TLS_VERIFY',
47
+ 'DOCKER_CERT_PATH',
48
+ 'SSH_AUTH_SOCK',
49
+ 'SSH_AGENT_PID',
50
+ 'GPG_AGENT_INFO',
51
+ 'XDG_RUNTIME_DIR',
52
+ ],
53
+ };
54
+ // ── 环境变量清理 ──────────────────────────────────────────────────────
55
+ /**
56
+ * 清理环境变量,移除敏感变量并只保留允许的变量
57
+ */
58
+ function cleanEnvironment(config) {
59
+ const cleanEnv = {};
60
+ // 保留允许的环境变量
61
+ if (config.allowedEnvVars) {
62
+ for (const varName of config.allowedEnvVars) {
63
+ if (process.env[varName]) {
64
+ cleanEnv[varName] = process.env[varName];
65
+ }
66
+ }
67
+ }
68
+ // 移除被阻止的环境变量
69
+ if (config.blockedEnvVars) {
70
+ for (const varName of config.blockedEnvVars) {
71
+ delete cleanEnv[varName];
72
+ }
73
+ }
74
+ // 保留 HOME 目录
75
+ if (config.preserveHome) {
76
+ cleanEnv.HOME = os.homedir();
77
+ }
78
+ // 保留 PATH
79
+ if (config.preservePath) {
80
+ cleanEnv.PATH = process.env.PATH || '/usr/local/bin:/usr/bin:/bin';
81
+ }
82
+ // 添加额外的环境变量(但要检查是否在阻止列表中)
83
+ if (config.extraEnvVars) {
84
+ for (const [key, value] of Object.entries(config.extraEnvVars)) {
85
+ // 检查是否在阻止列表中
86
+ if (config.blockedEnvVars && config.blockedEnvVars.includes(key)) {
87
+ continue; // 跳过被阻止的变量
88
+ }
89
+ cleanEnv[key] = value;
90
+ }
91
+ }
92
+ return cleanEnv;
93
+ }
94
+ // ── 命令验证 ──────────────────────────────────────────────────────────
95
+ function matchDangerousSandboxCommand(command) {
96
+ const lower = command.toLowerCase();
97
+ if ((lower.includes('curl') || lower.includes('wget')) &&
98
+ lower.includes('|') &&
99
+ /\bsh\b/.test(lower)) {
100
+ return '沙箱内禁止执行危险命令模式: curl|sh / wget|sh 类管道';
101
+ }
102
+ if ((lower.includes('curl') || lower.includes('wget')) &&
103
+ lower.includes('&&') &&
104
+ lower.includes('./')) {
105
+ return '沙箱内禁止执行危险命令模式: curl/wget 下载后直接执行';
106
+ }
107
+ if (/\b(?:rm|rmdir)\b/.test(lower) && lower.includes('node_modules')) {
108
+ return '沙箱内禁止执行危险命令模式: 删除 node_modules';
109
+ }
110
+ if (lower.includes('find') && lower.includes('node_modules') && lower.includes('-delete')) {
111
+ return '沙箱内禁止执行危险命令模式: find -delete node_modules';
112
+ }
113
+ if (lower.includes('eval(') || lower.includes('exec(')) {
114
+ return '沙箱内禁止执行危险命令模式: eval/exec';
115
+ }
116
+ if (lower.includes('child_process') || lower.includes('spawn(') || lower.includes('fork(')) {
117
+ return '沙箱内禁止执行危险命令模式: 进程注入相关调用';
118
+ }
119
+ return undefined;
120
+ }
121
+ /**
122
+ * 验证命令是否在沙箱允许范围内
123
+ */
124
+ function validateCommand(command, config) {
125
+ // 检查是否尝试更改目录
126
+ if (/\bcd\s/.test(command)) {
127
+ return { valid: false, reason: '沙箱内禁止使用 cd 命令' };
128
+ }
129
+ // 检查是否尝试访问沙箱外的文件
130
+ if (config.workingDirectory) {
131
+ // 检查绝对路径访问
132
+ const absolutePathPattern = /(?:^|\s|;|&&|\|\|)(\/[^\s;|&`"'{}[\]()]+?)(?:\s|$|;|&&|\|\|)/g;
133
+ let match;
134
+ while ((match = absolutePathPattern.exec(command)) !== null) {
135
+ const filePath = match[1].trim();
136
+ // 检查是否是沙箱内的路径
137
+ const allowedPaths = [
138
+ config.workingDirectory,
139
+ '/dev/null',
140
+ '/tmp/',
141
+ '/usr/',
142
+ '/bin/',
143
+ '/sbin/',
144
+ '/etc/', // 允许读取系统配置
145
+ '/var/',
146
+ '/proc/',
147
+ ];
148
+ const isAllowed = allowedPaths.some(allowed => filePath.startsWith(allowed));
149
+ if (!isAllowed) {
150
+ return {
151
+ valid: false,
152
+ reason: `沙箱内禁止访问工作目录外的文件: ${filePath}`,
153
+ };
154
+ }
155
+ }
156
+ // 检查父目录遍历
157
+ if (/\.\.\//.test(command)) {
158
+ return {
159
+ valid: false,
160
+ reason: '沙箱内禁止使用父目录遍历(../)',
161
+ };
162
+ }
163
+ }
164
+ const blocked = matchDangerousSandboxCommand(command);
165
+ if (blocked) {
166
+ return { valid: false, reason: blocked };
167
+ }
168
+ return { valid: true };
169
+ }
170
+ // ── 沙箱执行器 ────────────────────────────────────────────────────────
171
+ export class Sandbox {
172
+ config;
173
+ constructor(config = {}) {
174
+ this.config = { ...DEFAULT_CONFIG, ...config };
175
+ }
176
+ /**
177
+ * 在沙箱中执行命令
178
+ */
179
+ async execute(command, options) {
180
+ if (!this.config.enabled) {
181
+ // 沙箱未启用,直接执行
182
+ return this.executeUnsafe(command, options);
183
+ }
184
+ const startTime = Date.now();
185
+ // 验证命令
186
+ const validation = validateCommand(command, this.config);
187
+ if (!validation.valid) {
188
+ return {
189
+ success: false,
190
+ stdout: '',
191
+ stderr: validation.reason,
192
+ exitCode: 1,
193
+ duration: Date.now() - startTime,
194
+ timedOut: false,
195
+ blocked: true,
196
+ blockReason: validation.reason,
197
+ };
198
+ }
199
+ // 清理环境变量
200
+ const cleanEnv = cleanEnvironment(this.config);
201
+ // 合并用户提供的环境变量(但要检查是否在阻止列表中)
202
+ if (options?.env) {
203
+ for (const [key, value] of Object.entries(options.env)) {
204
+ // 检查是否在阻止列表中
205
+ if (this.config.blockedEnvVars && this.config.blockedEnvVars.includes(key)) {
206
+ continue; // 跳过被阻止的变量
207
+ }
208
+ cleanEnv[key] = value;
209
+ }
210
+ }
211
+ // 设置工作目录
212
+ const cwd = options?.cwd || this.config.workingDirectory || process.cwd();
213
+ // 确保工作目录存在
214
+ if (!fs.existsSync(cwd)) {
215
+ fs.mkdirSync(cwd, { recursive: true });
216
+ }
217
+ // 执行命令
218
+ return new Promise((resolve) => {
219
+ const timeout = options?.timeout || this.config.timeout || 30000;
220
+ let timedOut = false;
221
+ let killed = false;
222
+ const child = child_process.spawn('bash', ['-c', command], {
223
+ cwd,
224
+ env: cleanEnv,
225
+ stdio: ['pipe', 'pipe', 'pipe'],
226
+ timeout,
227
+ // 资源限制(仅 Linux/macOS)
228
+ ...(process.platform !== 'win32' && {
229
+ // 内存限制(通过 ulimit)
230
+ // 注意:Node.js 没有直接的内存限制 API,需要通过 ulimit 命令
231
+ }),
232
+ });
233
+ let stdout = '';
234
+ let stderr = '';
235
+ child.stdout?.on('data', (data) => {
236
+ const chunk = data.toString();
237
+ if (stdout.length + chunk.length <= (this.config.maxOutputSize || 10 * 1024 * 1024)) {
238
+ stdout += chunk;
239
+ }
240
+ });
241
+ child.stderr?.on('data', (data) => {
242
+ const chunk = data.toString();
243
+ if (stderr.length + chunk.length <= (this.config.maxOutputSize || 10 * 1024 * 1024)) {
244
+ stderr += chunk;
245
+ }
246
+ });
247
+ // 超时处理
248
+ const timer = setTimeout(() => {
249
+ timedOut = true;
250
+ killed = true;
251
+ child.kill('SIGKILL');
252
+ }, timeout);
253
+ child.on('close', (exitCode) => {
254
+ clearTimeout(timer);
255
+ const duration = Date.now() - startTime;
256
+ resolve({
257
+ success: exitCode === 0 && !timedOut,
258
+ stdout: stdout.slice(0, this.config.maxOutputSize),
259
+ stderr: stderr.slice(0, this.config.maxOutputSize),
260
+ exitCode,
261
+ duration,
262
+ timedOut,
263
+ blocked: false,
264
+ resourceUsage: {
265
+ cpuTime: 0, // 需要从 /proc 或 ps 获取
266
+ memoryUsage: 0,
267
+ },
268
+ });
269
+ });
270
+ child.on('error', (error) => {
271
+ clearTimeout(timer);
272
+ resolve({
273
+ success: false,
274
+ stdout,
275
+ stderr: error.message,
276
+ exitCode: 1,
277
+ duration: Date.now() - startTime,
278
+ timedOut: false,
279
+ blocked: false,
280
+ });
281
+ });
282
+ });
283
+ }
284
+ /**
285
+ * 不安全的命令执行(沙箱未启用时)
286
+ */
287
+ async executeUnsafe(command, options) {
288
+ const startTime = Date.now();
289
+ return new Promise((resolve) => {
290
+ const timeout = options?.timeout || 30000;
291
+ let timedOut = false;
292
+ const child = child_process.spawn('bash', ['-c', command], {
293
+ cwd: options?.cwd || process.cwd(),
294
+ env: { ...process.env, ...options?.env },
295
+ stdio: ['pipe', 'pipe', 'pipe'],
296
+ timeout,
297
+ });
298
+ let stdout = '';
299
+ let stderr = '';
300
+ child.stdout?.on('data', (data) => {
301
+ stdout += data.toString();
302
+ });
303
+ child.stderr?.on('data', (data) => {
304
+ stderr += data.toString();
305
+ });
306
+ const timer = setTimeout(() => {
307
+ timedOut = true;
308
+ child.kill('SIGKILL');
309
+ }, timeout);
310
+ child.on('close', (exitCode) => {
311
+ clearTimeout(timer);
312
+ resolve({
313
+ success: exitCode === 0 && !timedOut,
314
+ stdout,
315
+ stderr,
316
+ exitCode,
317
+ duration: Date.now() - startTime,
318
+ timedOut,
319
+ blocked: false,
320
+ });
321
+ });
322
+ child.on('error', (error) => {
323
+ clearTimeout(timer);
324
+ resolve({
325
+ success: false,
326
+ stdout,
327
+ stderr: error.message,
328
+ exitCode: 1,
329
+ duration: Date.now() - startTime,
330
+ timedOut: false,
331
+ blocked: false,
332
+ });
333
+ });
334
+ });
335
+ }
336
+ /**
337
+ * 更新配置
338
+ */
339
+ updateConfig(config) {
340
+ this.config = { ...this.config, ...config };
341
+ }
342
+ /**
343
+ * 获取配置
344
+ */
345
+ getConfig() {
346
+ return { ...this.config };
347
+ }
348
+ }
349
+ // ── 全局沙箱实例 ──────────────────────────────────────────────────────
350
+ let globalSandbox = null;
351
+ /**
352
+ * 获取全局沙箱实例
353
+ */
354
+ export function getSandbox() {
355
+ if (!globalSandbox) {
356
+ globalSandbox = new Sandbox();
357
+ }
358
+ return globalSandbox;
359
+ }
360
+ /**
361
+ * 初始化沙箱
362
+ */
363
+ export function initSandbox(config) {
364
+ globalSandbox = new Sandbox(config);
365
+ return globalSandbox;
366
+ }
367
+ /**
368
+ * 在沙箱中执行命令
369
+ */
370
+ export async function executeInSandbox(command, options) {
371
+ return getSandbox().execute(command, options);
372
+ }
373
+ //# sourceMappingURL=sandbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/security/sandbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Agent 安全策略配置示例
3
+ *
4
+ * 展示如何配置所有安全策略。
5
+ */
6
+ import type { SecurityPolicyConfig } from './index.js';
7
+ /**
8
+ * 生产环境安全配置
9
+ *
10
+ * 严格的安全策略,适用于生产环境
11
+ */
12
+ export declare const PRODUCTION_SECURITY_CONFIG: SecurityPolicyConfig;
13
+ /**
14
+ * 开发环境安全配置
15
+ *
16
+ * 宽松的安全策略,适用于开发和测试
17
+ */
18
+ export declare const DEVELOPMENT_SECURITY_CONFIG: SecurityPolicyConfig;
19
+ /**
20
+ * 最小安全配置
21
+ *
22
+ * 仅启用基本安全检查,适用于受信任环境
23
+ */
24
+ export declare const MINIMAL_SECURITY_CONFIG: SecurityPolicyConfig;
25
+ /**
26
+ * 根据环境获取安全配置
27
+ */
28
+ export declare function getSecurityConfigForEnvironment(env?: string): SecurityPolicyConfig;
29
+ /**
30
+ * 合并自定义配置与默认配置
31
+ */
32
+ export declare function mergeSecurityConfig(base: SecurityPolicyConfig, custom: Partial<SecurityPolicyConfig>): SecurityPolicyConfig;
33
+ //# sourceMappingURL=security-config.example.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-config.example.d.ts","sourceRoot":"","sources":["../../src/security/security-config.example.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,oBA+DxC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE,oBAgDzC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,oBAYrC,CAAC;AAEF;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAWlF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,oBAAoB,EAC1B,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACpC,oBAAoB,CAMtB"}