@cicctencent/agent-server 0.1.1

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 (380) hide show
  1. package/README.md +235 -0
  2. package/dist/cjs/agent/agent-server.d.ts +6 -0
  3. package/dist/cjs/agent/agent-server.d.ts.map +1 -0
  4. package/dist/cjs/agent/agent-server.js +412 -0
  5. package/dist/cjs/agent/agent-server.js.map +1 -0
  6. package/dist/cjs/connectors/index.d.ts +13 -0
  7. package/dist/cjs/connectors/index.d.ts.map +1 -0
  8. package/dist/cjs/connectors/index.js +37 -0
  9. package/dist/cjs/connectors/index.js.map +1 -0
  10. package/dist/cjs/index.d.ts +56 -0
  11. package/dist/cjs/index.d.ts.map +1 -0
  12. package/dist/cjs/index.js +169 -0
  13. package/dist/cjs/index.js.map +1 -0
  14. package/dist/cjs/kb/doc-parser.d.ts +24 -0
  15. package/dist/cjs/kb/doc-parser.d.ts.map +1 -0
  16. package/dist/cjs/kb/doc-parser.js +137 -0
  17. package/dist/cjs/kb/doc-parser.js.map +1 -0
  18. package/dist/cjs/kb/embedding-vector-index.d.ts +30 -0
  19. package/dist/cjs/kb/embedding-vector-index.d.ts.map +1 -0
  20. package/dist/cjs/kb/embedding-vector-index.js +75 -0
  21. package/dist/cjs/kb/embedding-vector-index.js.map +1 -0
  22. package/dist/cjs/kb/file-knowledge-base.d.ts +25 -0
  23. package/dist/cjs/kb/file-knowledge-base.d.ts.map +1 -0
  24. package/dist/cjs/kb/file-knowledge-base.js +200 -0
  25. package/dist/cjs/kb/file-knowledge-base.js.map +1 -0
  26. package/dist/cjs/mcp/api-bridge-client.d.ts +36 -0
  27. package/dist/cjs/mcp/api-bridge-client.d.ts.map +1 -0
  28. package/dist/cjs/mcp/api-bridge-client.js +143 -0
  29. package/dist/cjs/mcp/api-bridge-client.js.map +1 -0
  30. package/dist/cjs/mcp/api-bridge-types.d.ts +91 -0
  31. package/dist/cjs/mcp/api-bridge-types.d.ts.map +1 -0
  32. package/dist/cjs/mcp/api-bridge-types.js +8 -0
  33. package/dist/cjs/mcp/api-bridge-types.js.map +1 -0
  34. package/dist/cjs/mcp/body-template.d.ts +16 -0
  35. package/dist/cjs/mcp/body-template.d.ts.map +1 -0
  36. package/dist/cjs/mcp/body-template.js +62 -0
  37. package/dist/cjs/mcp/body-template.js.map +1 -0
  38. package/dist/cjs/mcp/openapi-importer.d.ts +24 -0
  39. package/dist/cjs/mcp/openapi-importer.d.ts.map +1 -0
  40. package/dist/cjs/mcp/openapi-importer.js +183 -0
  41. package/dist/cjs/mcp/openapi-importer.js.map +1 -0
  42. package/dist/cjs/mcp/template-builder.d.ts +53 -0
  43. package/dist/cjs/mcp/template-builder.d.ts.map +1 -0
  44. package/dist/cjs/mcp/template-builder.js +177 -0
  45. package/dist/cjs/mcp/template-builder.js.map +1 -0
  46. package/dist/cjs/model/automation.d.ts +34 -0
  47. package/dist/cjs/model/automation.d.ts.map +1 -0
  48. package/dist/cjs/model/automation.js +6 -0
  49. package/dist/cjs/model/automation.js.map +1 -0
  50. package/dist/cjs/package.json +3 -0
  51. package/dist/cjs/prompt/prompt-builder.d.ts +14 -0
  52. package/dist/cjs/prompt/prompt-builder.d.ts.map +1 -0
  53. package/dist/cjs/prompt/prompt-builder.js +113 -0
  54. package/dist/cjs/prompt/prompt-builder.js.map +1 -0
  55. package/dist/cjs/sandbox/local-sandbox.d.ts +70 -0
  56. package/dist/cjs/sandbox/local-sandbox.d.ts.map +1 -0
  57. package/dist/cjs/sandbox/local-sandbox.js +442 -0
  58. package/dist/cjs/sandbox/local-sandbox.js.map +1 -0
  59. package/dist/cjs/sandbox/process-code-sandbox.d.ts +25 -0
  60. package/dist/cjs/sandbox/process-code-sandbox.d.ts.map +1 -0
  61. package/dist/cjs/sandbox/process-code-sandbox.js +113 -0
  62. package/dist/cjs/sandbox/process-code-sandbox.js.map +1 -0
  63. package/dist/cjs/sandbox/sandbox-manager.d.ts +47 -0
  64. package/dist/cjs/sandbox/sandbox-manager.d.ts.map +1 -0
  65. package/dist/cjs/sandbox/sandbox-manager.js +126 -0
  66. package/dist/cjs/sandbox/sandbox-manager.js.map +1 -0
  67. package/dist/cjs/service/agent-profile.service.d.ts +27 -0
  68. package/dist/cjs/service/agent-profile.service.d.ts.map +1 -0
  69. package/dist/cjs/service/agent-profile.service.js +143 -0
  70. package/dist/cjs/service/agent-profile.service.js.map +1 -0
  71. package/dist/cjs/service/artifact.service.d.ts +33 -0
  72. package/dist/cjs/service/artifact.service.d.ts.map +1 -0
  73. package/dist/cjs/service/artifact.service.js +214 -0
  74. package/dist/cjs/service/artifact.service.js.map +1 -0
  75. package/dist/cjs/service/audit.service.d.ts +30 -0
  76. package/dist/cjs/service/audit.service.d.ts.map +1 -0
  77. package/dist/cjs/service/audit.service.js +169 -0
  78. package/dist/cjs/service/audit.service.js.map +1 -0
  79. package/dist/cjs/service/chat.service.d.ts +90 -0
  80. package/dist/cjs/service/chat.service.d.ts.map +1 -0
  81. package/dist/cjs/service/chat.service.js +433 -0
  82. package/dist/cjs/service/chat.service.js.map +1 -0
  83. package/dist/cjs/service/engine-pool.d.ts +6 -0
  84. package/dist/cjs/service/engine-pool.d.ts.map +1 -0
  85. package/dist/cjs/service/engine-pool.js +24 -0
  86. package/dist/cjs/service/engine-pool.js.map +1 -0
  87. package/dist/cjs/service/memory.service.d.ts +45 -0
  88. package/dist/cjs/service/memory.service.d.ts.map +1 -0
  89. package/dist/cjs/service/memory.service.js +193 -0
  90. package/dist/cjs/service/memory.service.js.map +1 -0
  91. package/dist/cjs/service/observability.service.d.ts +3 -0
  92. package/dist/cjs/service/observability.service.d.ts.map +1 -0
  93. package/dist/cjs/service/observability.service.js +10 -0
  94. package/dist/cjs/service/observability.service.js.map +1 -0
  95. package/dist/cjs/service/permission.service.d.ts +5 -0
  96. package/dist/cjs/service/permission.service.d.ts.map +1 -0
  97. package/dist/cjs/service/permission.service.js +40 -0
  98. package/dist/cjs/service/permission.service.js.map +1 -0
  99. package/dist/cjs/service/run-registry.d.ts +7 -0
  100. package/dist/cjs/service/run-registry.d.ts.map +1 -0
  101. package/dist/cjs/service/run-registry.js +44 -0
  102. package/dist/cjs/service/run-registry.js.map +1 -0
  103. package/dist/cjs/service/safety-audit.middleware.d.ts +3 -0
  104. package/dist/cjs/service/safety-audit.middleware.d.ts.map +1 -0
  105. package/dist/cjs/service/safety-audit.middleware.js +115 -0
  106. package/dist/cjs/service/safety-audit.middleware.js.map +1 -0
  107. package/dist/cjs/service/security-policy.service.d.ts +18 -0
  108. package/dist/cjs/service/security-policy.service.d.ts.map +1 -0
  109. package/dist/cjs/service/security-policy.service.js +46 -0
  110. package/dist/cjs/service/security-policy.service.js.map +1 -0
  111. package/dist/cjs/service/settings.service.d.ts +18 -0
  112. package/dist/cjs/service/settings.service.d.ts.map +1 -0
  113. package/dist/cjs/service/settings.service.js +222 -0
  114. package/dist/cjs/service/settings.service.js.map +1 -0
  115. package/dist/cjs/service/tool-risk.service.d.ts +3 -0
  116. package/dist/cjs/service/tool-risk.service.d.ts.map +1 -0
  117. package/dist/cjs/service/tool-risk.service.js +23 -0
  118. package/dist/cjs/service/tool-risk.service.js.map +1 -0
  119. package/dist/cjs/service/workspace.service.d.ts +33 -0
  120. package/dist/cjs/service/workspace.service.d.ts.map +1 -0
  121. package/dist/cjs/service/workspace.service.js +107 -0
  122. package/dist/cjs/service/workspace.service.js.map +1 -0
  123. package/dist/cjs/sse/sse-handler.d.ts +15 -0
  124. package/dist/cjs/sse/sse-handler.d.ts.map +1 -0
  125. package/dist/cjs/sse/sse-handler.js +56 -0
  126. package/dist/cjs/sse/sse-handler.js.map +1 -0
  127. package/dist/cjs/store/app-stores.d.ts +42 -0
  128. package/dist/cjs/store/app-stores.d.ts.map +1 -0
  129. package/dist/cjs/store/app-stores.js +226 -0
  130. package/dist/cjs/store/app-stores.js.map +1 -0
  131. package/dist/cjs/store/index.d.ts +3 -0
  132. package/dist/cjs/store/index.d.ts.map +1 -0
  133. package/dist/cjs/store/index.js +10 -0
  134. package/dist/cjs/store/index.js.map +1 -0
  135. package/dist/cjs/store/mcp-server-store.d.ts +35 -0
  136. package/dist/cjs/store/mcp-server-store.d.ts.map +1 -0
  137. package/dist/cjs/store/mcp-server-store.js +288 -0
  138. package/dist/cjs/store/mcp-server-store.js.map +1 -0
  139. package/dist/cjs/tool/builtin.d.ts +18 -0
  140. package/dist/cjs/tool/builtin.d.ts.map +1 -0
  141. package/dist/cjs/tool/builtin.js +43 -0
  142. package/dist/cjs/tool/builtin.js.map +1 -0
  143. package/dist/cjs/tool/local-executors.d.ts +22 -0
  144. package/dist/cjs/tool/local-executors.d.ts.map +1 -0
  145. package/dist/cjs/tool/local-executors.js +126 -0
  146. package/dist/cjs/tool/local-executors.js.map +1 -0
  147. package/dist/cjs/tool/tools/automation.d.ts +3 -0
  148. package/dist/cjs/tool/tools/automation.d.ts.map +1 -0
  149. package/dist/cjs/tool/tools/automation.js +190 -0
  150. package/dist/cjs/tool/tools/automation.js.map +1 -0
  151. package/dist/cjs/tool/tools/communication.d.ts +3 -0
  152. package/dist/cjs/tool/tools/communication.d.ts.map +1 -0
  153. package/dist/cjs/tool/tools/communication.js +302 -0
  154. package/dist/cjs/tool/tools/communication.js.map +1 -0
  155. package/dist/cjs/tool/tools/discovery.d.ts +3 -0
  156. package/dist/cjs/tool/tools/discovery.d.ts.map +1 -0
  157. package/dist/cjs/tool/tools/discovery.js +248 -0
  158. package/dist/cjs/tool/tools/discovery.js.map +1 -0
  159. package/dist/cjs/tool/tools/filesystem.d.ts +3 -0
  160. package/dist/cjs/tool/tools/filesystem.d.ts.map +1 -0
  161. package/dist/cjs/tool/tools/filesystem.js +403 -0
  162. package/dist/cjs/tool/tools/filesystem.js.map +1 -0
  163. package/dist/cjs/tool/tools/git.d.ts +3 -0
  164. package/dist/cjs/tool/tools/git.d.ts.map +1 -0
  165. package/dist/cjs/tool/tools/git.js +224 -0
  166. package/dist/cjs/tool/tools/git.js.map +1 -0
  167. package/dist/cjs/tool/tools/memory.d.ts +3 -0
  168. package/dist/cjs/tool/tools/memory.d.ts.map +1 -0
  169. package/dist/cjs/tool/tools/memory.js +126 -0
  170. package/dist/cjs/tool/tools/memory.js.map +1 -0
  171. package/dist/cjs/tool/tools/sandbox.d.ts +3 -0
  172. package/dist/cjs/tool/tools/sandbox.d.ts.map +1 -0
  173. package/dist/cjs/tool/tools/sandbox.js +413 -0
  174. package/dist/cjs/tool/tools/sandbox.js.map +1 -0
  175. package/dist/cjs/tool/tools/web-utils.d.ts +16 -0
  176. package/dist/cjs/tool/tools/web-utils.d.ts.map +1 -0
  177. package/dist/cjs/tool/tools/web-utils.js +131 -0
  178. package/dist/cjs/tool/tools/web-utils.js.map +1 -0
  179. package/dist/cjs/tool/tools/web.d.ts +3 -0
  180. package/dist/cjs/tool/tools/web.d.ts.map +1 -0
  181. package/dist/cjs/tool/tools/web.js +358 -0
  182. package/dist/cjs/tool/tools/web.js.map +1 -0
  183. package/dist/cjs/types.d.ts +523 -0
  184. package/dist/cjs/types.d.ts.map +1 -0
  185. package/dist/cjs/types.js +6 -0
  186. package/dist/cjs/types.js.map +1 -0
  187. package/dist/cjs/utils/data-dir.d.ts +8 -0
  188. package/dist/cjs/utils/data-dir.d.ts.map +1 -0
  189. package/dist/cjs/utils/data-dir.js +92 -0
  190. package/dist/cjs/utils/data-dir.js.map +1 -0
  191. package/dist/esm/agent/agent-server.d.ts +6 -0
  192. package/dist/esm/agent/agent-server.d.ts.map +1 -0
  193. package/dist/esm/agent/agent-server.js +409 -0
  194. package/dist/esm/agent/agent-server.js.map +1 -0
  195. package/dist/esm/connectors/index.d.ts +13 -0
  196. package/dist/esm/connectors/index.d.ts.map +1 -0
  197. package/dist/esm/connectors/index.js +30 -0
  198. package/dist/esm/connectors/index.js.map +1 -0
  199. package/dist/esm/index.d.ts +56 -0
  200. package/dist/esm/index.d.ts.map +1 -0
  201. package/dist/esm/index.js +57 -0
  202. package/dist/esm/index.js.map +1 -0
  203. package/dist/esm/kb/doc-parser.d.ts +24 -0
  204. package/dist/esm/kb/doc-parser.d.ts.map +1 -0
  205. package/dist/esm/kb/doc-parser.js +100 -0
  206. package/dist/esm/kb/doc-parser.js.map +1 -0
  207. package/dist/esm/kb/embedding-vector-index.d.ts +30 -0
  208. package/dist/esm/kb/embedding-vector-index.d.ts.map +1 -0
  209. package/dist/esm/kb/embedding-vector-index.js +71 -0
  210. package/dist/esm/kb/embedding-vector-index.js.map +1 -0
  211. package/dist/esm/kb/file-knowledge-base.d.ts +25 -0
  212. package/dist/esm/kb/file-knowledge-base.d.ts.map +1 -0
  213. package/dist/esm/kb/file-knowledge-base.js +163 -0
  214. package/dist/esm/kb/file-knowledge-base.js.map +1 -0
  215. package/dist/esm/mcp/api-bridge-client.d.ts +36 -0
  216. package/dist/esm/mcp/api-bridge-client.d.ts.map +1 -0
  217. package/dist/esm/mcp/api-bridge-client.js +139 -0
  218. package/dist/esm/mcp/api-bridge-client.js.map +1 -0
  219. package/dist/esm/mcp/api-bridge-types.d.ts +91 -0
  220. package/dist/esm/mcp/api-bridge-types.d.ts.map +1 -0
  221. package/dist/esm/mcp/api-bridge-types.js +7 -0
  222. package/dist/esm/mcp/api-bridge-types.js.map +1 -0
  223. package/dist/esm/mcp/body-template.d.ts +16 -0
  224. package/dist/esm/mcp/body-template.d.ts.map +1 -0
  225. package/dist/esm/mcp/body-template.js +59 -0
  226. package/dist/esm/mcp/body-template.js.map +1 -0
  227. package/dist/esm/mcp/openapi-importer.d.ts +24 -0
  228. package/dist/esm/mcp/openapi-importer.d.ts.map +1 -0
  229. package/dist/esm/mcp/openapi-importer.js +177 -0
  230. package/dist/esm/mcp/openapi-importer.js.map +1 -0
  231. package/dist/esm/mcp/template-builder.d.ts +53 -0
  232. package/dist/esm/mcp/template-builder.d.ts.map +1 -0
  233. package/dist/esm/mcp/template-builder.js +173 -0
  234. package/dist/esm/mcp/template-builder.js.map +1 -0
  235. package/dist/esm/model/automation.d.ts +34 -0
  236. package/dist/esm/model/automation.d.ts.map +1 -0
  237. package/dist/esm/model/automation.js +5 -0
  238. package/dist/esm/model/automation.js.map +1 -0
  239. package/dist/esm/package.json +3 -0
  240. package/dist/esm/prompt/prompt-builder.d.ts +14 -0
  241. package/dist/esm/prompt/prompt-builder.d.ts.map +1 -0
  242. package/dist/esm/prompt/prompt-builder.js +109 -0
  243. package/dist/esm/prompt/prompt-builder.js.map +1 -0
  244. package/dist/esm/sandbox/local-sandbox.d.ts +70 -0
  245. package/dist/esm/sandbox/local-sandbox.d.ts.map +1 -0
  246. package/dist/esm/sandbox/local-sandbox.js +403 -0
  247. package/dist/esm/sandbox/local-sandbox.js.map +1 -0
  248. package/dist/esm/sandbox/process-code-sandbox.d.ts +25 -0
  249. package/dist/esm/sandbox/process-code-sandbox.d.ts.map +1 -0
  250. package/dist/esm/sandbox/process-code-sandbox.js +76 -0
  251. package/dist/esm/sandbox/process-code-sandbox.js.map +1 -0
  252. package/dist/esm/sandbox/sandbox-manager.d.ts +47 -0
  253. package/dist/esm/sandbox/sandbox-manager.d.ts.map +1 -0
  254. package/dist/esm/sandbox/sandbox-manager.js +88 -0
  255. package/dist/esm/sandbox/sandbox-manager.js.map +1 -0
  256. package/dist/esm/service/agent-profile.service.d.ts +27 -0
  257. package/dist/esm/service/agent-profile.service.d.ts.map +1 -0
  258. package/dist/esm/service/agent-profile.service.js +130 -0
  259. package/dist/esm/service/agent-profile.service.js.map +1 -0
  260. package/dist/esm/service/artifact.service.d.ts +33 -0
  261. package/dist/esm/service/artifact.service.d.ts.map +1 -0
  262. package/dist/esm/service/artifact.service.js +175 -0
  263. package/dist/esm/service/artifact.service.js.map +1 -0
  264. package/dist/esm/service/audit.service.d.ts +30 -0
  265. package/dist/esm/service/audit.service.d.ts.map +1 -0
  266. package/dist/esm/service/audit.service.js +131 -0
  267. package/dist/esm/service/audit.service.js.map +1 -0
  268. package/dist/esm/service/chat.service.d.ts +90 -0
  269. package/dist/esm/service/chat.service.d.ts.map +1 -0
  270. package/dist/esm/service/chat.service.js +388 -0
  271. package/dist/esm/service/chat.service.js.map +1 -0
  272. package/dist/esm/service/engine-pool.d.ts +6 -0
  273. package/dist/esm/service/engine-pool.d.ts.map +1 -0
  274. package/dist/esm/service/engine-pool.js +18 -0
  275. package/dist/esm/service/engine-pool.js.map +1 -0
  276. package/dist/esm/service/memory.service.d.ts +45 -0
  277. package/dist/esm/service/memory.service.d.ts.map +1 -0
  278. package/dist/esm/service/memory.service.js +154 -0
  279. package/dist/esm/service/memory.service.js.map +1 -0
  280. package/dist/esm/service/observability.service.d.ts +3 -0
  281. package/dist/esm/service/observability.service.d.ts.map +1 -0
  282. package/dist/esm/service/observability.service.js +5 -0
  283. package/dist/esm/service/observability.service.js.map +1 -0
  284. package/dist/esm/service/permission.service.d.ts +5 -0
  285. package/dist/esm/service/permission.service.d.ts.map +1 -0
  286. package/dist/esm/service/permission.service.js +33 -0
  287. package/dist/esm/service/permission.service.js.map +1 -0
  288. package/dist/esm/service/run-registry.d.ts +7 -0
  289. package/dist/esm/service/run-registry.d.ts.map +1 -0
  290. package/dist/esm/service/run-registry.js +37 -0
  291. package/dist/esm/service/run-registry.js.map +1 -0
  292. package/dist/esm/service/safety-audit.middleware.d.ts +3 -0
  293. package/dist/esm/service/safety-audit.middleware.d.ts.map +1 -0
  294. package/dist/esm/service/safety-audit.middleware.js +112 -0
  295. package/dist/esm/service/safety-audit.middleware.js.map +1 -0
  296. package/dist/esm/service/security-policy.service.d.ts +18 -0
  297. package/dist/esm/service/security-policy.service.d.ts.map +1 -0
  298. package/dist/esm/service/security-policy.service.js +42 -0
  299. package/dist/esm/service/security-policy.service.js.map +1 -0
  300. package/dist/esm/service/settings.service.d.ts +18 -0
  301. package/dist/esm/service/settings.service.d.ts.map +1 -0
  302. package/dist/esm/service/settings.service.js +181 -0
  303. package/dist/esm/service/settings.service.js.map +1 -0
  304. package/dist/esm/service/tool-risk.service.d.ts +3 -0
  305. package/dist/esm/service/tool-risk.service.d.ts.map +1 -0
  306. package/dist/esm/service/tool-risk.service.js +17 -0
  307. package/dist/esm/service/tool-risk.service.js.map +1 -0
  308. package/dist/esm/service/workspace.service.d.ts +33 -0
  309. package/dist/esm/service/workspace.service.d.ts.map +1 -0
  310. package/dist/esm/service/workspace.service.js +97 -0
  311. package/dist/esm/service/workspace.service.js.map +1 -0
  312. package/dist/esm/sse/sse-handler.d.ts +15 -0
  313. package/dist/esm/sse/sse-handler.d.ts.map +1 -0
  314. package/dist/esm/sse/sse-handler.js +49 -0
  315. package/dist/esm/sse/sse-handler.js.map +1 -0
  316. package/dist/esm/store/app-stores.d.ts +42 -0
  317. package/dist/esm/store/app-stores.d.ts.map +1 -0
  318. package/dist/esm/store/app-stores.js +181 -0
  319. package/dist/esm/store/app-stores.js.map +1 -0
  320. package/dist/esm/store/index.d.ts +3 -0
  321. package/dist/esm/store/index.d.ts.map +1 -0
  322. package/dist/esm/store/index.js +5 -0
  323. package/dist/esm/store/index.js.map +1 -0
  324. package/dist/esm/store/mcp-server-store.d.ts +35 -0
  325. package/dist/esm/store/mcp-server-store.d.ts.map +1 -0
  326. package/dist/esm/store/mcp-server-store.js +251 -0
  327. package/dist/esm/store/mcp-server-store.js.map +1 -0
  328. package/dist/esm/tool/builtin.d.ts +18 -0
  329. package/dist/esm/tool/builtin.d.ts.map +1 -0
  330. package/dist/esm/tool/builtin.js +40 -0
  331. package/dist/esm/tool/builtin.js.map +1 -0
  332. package/dist/esm/tool/local-executors.d.ts +22 -0
  333. package/dist/esm/tool/local-executors.d.ts.map +1 -0
  334. package/dist/esm/tool/local-executors.js +88 -0
  335. package/dist/esm/tool/local-executors.js.map +1 -0
  336. package/dist/esm/tool/tools/automation.d.ts +3 -0
  337. package/dist/esm/tool/tools/automation.d.ts.map +1 -0
  338. package/dist/esm/tool/tools/automation.js +154 -0
  339. package/dist/esm/tool/tools/automation.js.map +1 -0
  340. package/dist/esm/tool/tools/communication.d.ts +3 -0
  341. package/dist/esm/tool/tools/communication.d.ts.map +1 -0
  342. package/dist/esm/tool/tools/communication.js +266 -0
  343. package/dist/esm/tool/tools/communication.js.map +1 -0
  344. package/dist/esm/tool/tools/discovery.d.ts +3 -0
  345. package/dist/esm/tool/tools/discovery.d.ts.map +1 -0
  346. package/dist/esm/tool/tools/discovery.js +245 -0
  347. package/dist/esm/tool/tools/discovery.js.map +1 -0
  348. package/dist/esm/tool/tools/filesystem.d.ts +3 -0
  349. package/dist/esm/tool/tools/filesystem.d.ts.map +1 -0
  350. package/dist/esm/tool/tools/filesystem.js +367 -0
  351. package/dist/esm/tool/tools/filesystem.js.map +1 -0
  352. package/dist/esm/tool/tools/git.d.ts +3 -0
  353. package/dist/esm/tool/tools/git.d.ts.map +1 -0
  354. package/dist/esm/tool/tools/git.js +188 -0
  355. package/dist/esm/tool/tools/git.js.map +1 -0
  356. package/dist/esm/tool/tools/memory.d.ts +3 -0
  357. package/dist/esm/tool/tools/memory.d.ts.map +1 -0
  358. package/dist/esm/tool/tools/memory.js +123 -0
  359. package/dist/esm/tool/tools/memory.js.map +1 -0
  360. package/dist/esm/tool/tools/sandbox.d.ts +3 -0
  361. package/dist/esm/tool/tools/sandbox.d.ts.map +1 -0
  362. package/dist/esm/tool/tools/sandbox.js +377 -0
  363. package/dist/esm/tool/tools/sandbox.js.map +1 -0
  364. package/dist/esm/tool/tools/web-utils.d.ts +16 -0
  365. package/dist/esm/tool/tools/web-utils.d.ts.map +1 -0
  366. package/dist/esm/tool/tools/web-utils.js +88 -0
  367. package/dist/esm/tool/tools/web-utils.js.map +1 -0
  368. package/dist/esm/tool/tools/web.d.ts +3 -0
  369. package/dist/esm/tool/tools/web.d.ts.map +1 -0
  370. package/dist/esm/tool/tools/web.js +319 -0
  371. package/dist/esm/tool/tools/web.js.map +1 -0
  372. package/dist/esm/types.d.ts +523 -0
  373. package/dist/esm/types.d.ts.map +1 -0
  374. package/dist/esm/types.js +5 -0
  375. package/dist/esm/types.js.map +1 -0
  376. package/dist/esm/utils/data-dir.d.ts +8 -0
  377. package/dist/esm/utils/data-dir.d.ts.map +1 -0
  378. package/dist/esm/utils/data-dir.js +48 -0
  379. package/dist/esm/utils/data-dir.js.map +1 -0
  380. package/package.json +56 -0
@@ -0,0 +1,403 @@
1
+ /**
2
+ * @file LocalSandbox — 进程级沙箱实现
3
+ * @description 为每个 Agent 会话提供隔离的文件系统和 Shell 执行环境
4
+ * 文件系统限制在沙箱目录内,命令执行受 SecurityGuard + 沙箱黑名单保护
5
+ */
6
+ import { exec as cpExec } from 'child_process';
7
+ import * as fs from 'fs/promises';
8
+ import { existsSync } from 'fs';
9
+ import * as path from 'path';
10
+ import * as crypto from 'crypto';
11
+ import { SecurityGuard } from '@cicctencent/agent-core';
12
+ import { SANDBOX_BLOCKED_COMMANDS, SANDBOX_SAFE_ENV_KEYS, DEFAULT_SANDBOX_CONFIG } from '@cicctencent/agent-core';
13
+ import { getProjectDataPath } from "../utils/data-dir.js";
14
+ // ---- 辅助函数 ----
15
+ /**
16
+ * 过滤环境变量,只保留安全白名单中的变量
17
+ */
18
+ function filterEnvForSandbox(env) {
19
+ const filtered = {};
20
+ for (const key of SANDBOX_SAFE_ENV_KEYS) {
21
+ if (env[key])
22
+ filtered[key] = env[key];
23
+ }
24
+ // 始终强制 Python UTF-8 输出
25
+ filtered['PYTHONIOENCODING'] = 'utf-8';
26
+ filtered['PYTHONUTF8'] = '1';
27
+ return filtered;
28
+ }
29
+ /**
30
+ * 脚本语言 → 文件扩展名 + 执行命令映射
31
+ */
32
+ const LANGUAGE_MAP = {
33
+ python: { ext: '.py', command: 'python3' },
34
+ nodejs: { ext: '.cjs', command: 'node' },
35
+ shell: { ext: '.sh', command: process.platform === 'win32' ? 'bash' : 'bash' },
36
+ };
37
+ // ---- SandboxFileSystemExecutor ----
38
+ /**
39
+ * 沙箱文件系统执行器
40
+ * 所有路径操作限制在沙箱 rootDir 内,阻止路径穿越
41
+ */
42
+ export class SandboxFileSystemExecutor {
43
+ rootDir;
44
+ maxFileSize;
45
+ constructor(rootDir, maxFileSize) {
46
+ this.rootDir = rootDir;
47
+ this.maxFileSize = maxFileSize;
48
+ }
49
+ async readFile(filePath) {
50
+ const resolved = this.resolveReadPath(filePath);
51
+ return fs.readFile(resolved, 'utf-8');
52
+ }
53
+ async readFileBuffer(filePath) {
54
+ const resolved = this.resolveReadPath(filePath);
55
+ return fs.readFile(resolved);
56
+ }
57
+ async writeFile(filePath, content) {
58
+ const resolved = this.resolveAndValidate(filePath);
59
+ // 检查文件大小限制
60
+ const contentSize = Buffer.byteLength(content, 'utf-8');
61
+ if (contentSize > this.maxFileSize) {
62
+ throw new Error(`Sandbox: file size ${contentSize} bytes exceeds limit ${this.maxFileSize} bytes`);
63
+ }
64
+ // 确保父目录存在(且在沙箱内)
65
+ const dir = path.dirname(resolved);
66
+ await fs.mkdir(dir, { recursive: true });
67
+ await fs.writeFile(resolved, content, 'utf-8');
68
+ }
69
+ async appendFile(filePath, content) {
70
+ const resolved = this.resolveAndValidate(filePath);
71
+ const dir = path.dirname(resolved);
72
+ await fs.mkdir(dir, { recursive: true });
73
+ await fs.appendFile(resolved, content, 'utf-8');
74
+ }
75
+ async listDir(dirPath) {
76
+ const resolved = this.resolveAndValidate(dirPath);
77
+ const entries = await fs.readdir(resolved, { withFileTypes: true });
78
+ return entries.map(e => (e.isDirectory() ? e.name + '/' : e.name));
79
+ }
80
+ /**
81
+ * 解析路径并验证是否在沙箱目录内
82
+ * 如果路径越界(绝对路径或 .. 穿越),自动修正到沙箱内而非抛错
83
+ */
84
+ resolveAndValidate(filePath) {
85
+ const normalizedRoot = path.resolve(this.rootDir);
86
+ // 先正常解析
87
+ let resolved = path.isAbsolute(filePath)
88
+ ? path.resolve(filePath)
89
+ : path.resolve(this.rootDir, filePath);
90
+ // 检查是否在沙箱内
91
+ const relative = path.relative(normalizedRoot, resolved);
92
+ if (relative.startsWith('..') || path.isAbsolute(relative)) {
93
+ // 路径越界:自动修正,提取文件名/相对路径部分,重新定位到沙箱内
94
+ // 例: /Users/xxx/output.pptx → sandboxRoot/output.pptx
95
+ // 例: ../../../tmp/file.txt → sandboxRoot/file.txt
96
+ const safeName = path.basename(filePath);
97
+ resolved = path.resolve(this.rootDir, safeName);
98
+ }
99
+ return resolved;
100
+ }
101
+ /**
102
+ * 解析只读路径 — 允许读取沙箱目录和项目 data/ 目录
103
+ * data/ 目录存放对话内容、主题配置等只读资源,read_file 可安全访问
104
+ */
105
+ resolveReadPath(filePath) {
106
+ const normalizedRoot = path.resolve(this.rootDir);
107
+ // 1. 先解析为沙箱内路径
108
+ let resolved = path.isAbsolute(filePath)
109
+ ? path.resolve(filePath)
110
+ : path.resolve(this.rootDir, filePath);
111
+ // 检查是否在沙箱内
112
+ const relative = path.relative(normalizedRoot, resolved);
113
+ if (!relative.startsWith('..') && !path.isAbsolute(relative)) {
114
+ // 在沙箱内,但如果文件不存在且是相对路径,尝试从项目 data/ 目录读取
115
+ if (!existsSync(resolved) && !path.isAbsolute(filePath)) {
116
+ const dataResolved = path.resolve(getProjectDataPath(), filePath);
117
+ const normalizedDataDir = path.resolve(getProjectDataPath());
118
+ const relToData = path.relative(normalizedDataDir, dataResolved);
119
+ if (!relToData.startsWith('..') && !path.isAbsolute(relToData) && existsSync(dataResolved)) {
120
+ return dataResolved;
121
+ }
122
+ }
123
+ return resolved;
124
+ }
125
+ // 2. 不在沙箱内,检查是否在项目 data/ 目录内
126
+ const dataDir = getProjectDataPath();
127
+ const normalizedDataDir = path.resolve(dataDir);
128
+ const relativeToData = path.relative(normalizedDataDir, resolved);
129
+ if (!relativeToData.startsWith('..') && !path.isAbsolute(relativeToData)) {
130
+ return resolved; // 在 data/ 目录内,允许读取
131
+ }
132
+ // 3. 路径不在任何允许目录内:回退到沙箱内
133
+ const safeName = path.basename(filePath);
134
+ return path.resolve(this.rootDir, safeName);
135
+ }
136
+ }
137
+ // ---- SandboxShellExecutor ----
138
+ /**
139
+ * 沙箱 Shell 执行器
140
+ * - cwd 限制在沙箱目录
141
+ * - 环境变量经过白名单过滤
142
+ * - 命令经过 SecurityGuard + 沙箱黑名单检查
143
+ */
144
+ export class SandboxShellExecutor {
145
+ rootDir;
146
+ commandRestriction;
147
+ guard;
148
+ outputBuffer = [];
149
+ maxBuffer = 500;
150
+ sandboxEnv;
151
+ constructor(rootDir, commandRestriction) {
152
+ this.rootDir = rootDir;
153
+ this.commandRestriction = commandRestriction;
154
+ // 创建带沙箱黑名单的 SecurityGuard
155
+ this.guard = new SecurityGuard({
156
+ deleteProtection: true,
157
+ blacklistEnabled: true,
158
+ rules: SANDBOX_BLOCKED_COMMANDS,
159
+ });
160
+ // 预计算沙箱环境变量
161
+ this.sandboxEnv = filterEnvForSandbox(process.env);
162
+ }
163
+ async exec(command, timeout = 2000) {
164
+ // 命令安全检查
165
+ if (this.commandRestriction) {
166
+ const sanitized = this.guard.sanitize(command.trim());
167
+ if (!sanitized.safe) {
168
+ return `[Sandbox blocked] ${sanitized.reason}`;
169
+ }
170
+ // 如果命令被改写,使用改写后的命令
171
+ if (sanitized.rewritten) {
172
+ command = sanitized.rewritten;
173
+ }
174
+ }
175
+ const isWindows = process.platform === 'win32';
176
+ // Windows: chcp 65001 让 cmd.exe 使用 UTF-8 代码页
177
+ const shellCommand = isWindows
178
+ ? `chcp 65001 >nul 2>&1 & ${command}`
179
+ : command;
180
+ return new Promise((resolve) => {
181
+ cpExec(shellCommand, {
182
+ timeout,
183
+ maxBuffer: 1024 * 1024 * 5, // 5MB
184
+ windowsHide: true,
185
+ encoding: 'buffer',
186
+ cwd: this.rootDir, // 关键:cwd 限制在沙箱目录
187
+ env: this.sandboxEnv,
188
+ }, (error, stdoutBuf, stderrBuf) => {
189
+ let output = '';
190
+ const stdout = stdoutBuf ? stdoutBuf.toString('utf-8') : '';
191
+ const stderr = stderrBuf ? stderrBuf.toString('utf-8') : '';
192
+ if (stdout)
193
+ output += stdout;
194
+ if (stderr)
195
+ output += (output ? '\n' : '') + stderr;
196
+ if (error && !output.trim()) {
197
+ output = error.message;
198
+ }
199
+ // 保存到输出缓冲区(供 read 使用)
200
+ const lines = output.split('\n');
201
+ this.outputBuffer.push(...lines);
202
+ if (this.outputBuffer.length > this.maxBuffer) {
203
+ this.outputBuffer = this.outputBuffer.slice(-this.maxBuffer);
204
+ }
205
+ resolve(output || '(no output)');
206
+ });
207
+ });
208
+ }
209
+ write(_data) {
210
+ // 沙箱模式不支持交互式写入
211
+ }
212
+ read(lines = 50) {
213
+ const start = Math.max(0, this.outputBuffer.length - lines);
214
+ return this.outputBuffer.slice(start).join('\n') || '(no terminal output)';
215
+ }
216
+ }
217
+ // ---- JSON Builder 辅助模块 ----
218
+ /**
219
+ * 注入到沙箱 _scripts/_json_builder.cjs 的帮助模块。
220
+ * LLM 通过 write_file + append_file 构建 JS 脚本,运行时生成 JSON 数据文件,
221
+ * 避免将大量 JSON 作为工具参数传递(消除转义膨胀和截断风险)。
222
+ *
223
+ * 用法:
224
+ * const B = require('./_scripts/_json_builder');
225
+ * B.init('data.json');
226
+ * B.add({ type: 'cover', title: 'Report' });
227
+ * B.add({ type: 'content', title: 'Slide 2', body: '...' });
228
+ * B.meta({ title: 'My Report', theme: 'midnight' });
229
+ * B.done(); // → 写入 data.json
230
+ */
231
+ const JSON_BUILDER_SOURCE = `// _json_builder.cjs — JSON data builder helper
232
+ // Usage: require this, call init(), add() for each item, meta() for metadata, done() to write.
233
+ const fs = require('fs');
234
+ const path = require('path');
235
+ let _items = [];
236
+ let _meta = {};
237
+ let _output = 'data.json';
238
+
239
+ module.exports = {
240
+ init(output) {
241
+ _output = output || 'data.json';
242
+ _items = [];
243
+ _meta = {};
244
+ },
245
+ add(item) {
246
+ _items.push(item);
247
+ },
248
+ meta(obj) {
249
+ Object.assign(_meta, obj);
250
+ },
251
+ done() {
252
+ // Use 'slides' for presentations, 'blocks' for documents/PDFs (check meta.type)
253
+ const data = { ..._meta };
254
+ if (_meta.type === 'document' || _meta.type === 'pdf') {
255
+ data.blocks = _items;
256
+ } else {
257
+ data.slides = _items;
258
+ }
259
+ const json = JSON.stringify(data, null, 2);
260
+ const dir = path.dirname(_output);
261
+ if (dir && dir !== '.') { try { fs.mkdirSync(dir, { recursive: true }); } catch(e) {} }
262
+ fs.writeFileSync(_output, json, 'utf-8');
263
+ console.log('JSON builder: wrote ' + _items.length + ' items to ' + _output + ' (' + json.length + ' chars)');
264
+ }
265
+ };
266
+ `;
267
+ // ---- LocalSandbox ----
268
+ /**
269
+ * 本地沙箱实例
270
+ * 封装受限的 Shell 和 FileSystem 执行器,提供 runScript 能力
271
+ */
272
+ export class LocalSandbox {
273
+ id;
274
+ rootDir;
275
+ config;
276
+ shellExecutor;
277
+ fsExecutor;
278
+ scriptsDir;
279
+ constructor(id, config) {
280
+ this.id = id;
281
+ this.rootDir = config.rootDir;
282
+ this.config = { ...DEFAULT_SANDBOX_CONFIG, ...config };
283
+ this.scriptsDir = path.join(this.rootDir, '_scripts');
284
+ this.shellExecutor = new SandboxShellExecutor(this.rootDir, this.config.commandRestriction ?? true);
285
+ this.fsExecutor = new SandboxFileSystemExecutor(this.rootDir, this.config.maxFileSize ?? DEFAULT_SANDBOX_CONFIG.maxFileSize);
286
+ }
287
+ /** 初始化沙箱目录(创建后必须调用) */
288
+ async init() {
289
+ await fs.mkdir(this.rootDir, { recursive: true });
290
+ await fs.mkdir(this.scriptsDir, { recursive: true });
291
+ // 注入 JSON Builder 辅助模块(供 LLM 用脚本方式构建大型 JSON 数据文件)
292
+ await fs.writeFile(path.join(this.scriptsDir, '_json_builder.cjs'), JSON_BUILDER_SOURCE, 'utf-8');
293
+ // 注入 HTML 报告模板生成器和主题(供报表创作助手使用)
294
+ await this.injectHtmlRenderer();
295
+ }
296
+ /** 将 html-renderer.cjs 和主题文件注入沙箱 _scripts/ 目录 */
297
+ async injectHtmlRenderer() {
298
+ const templateDir = getProjectDataPath('doc-templates/html');
299
+ const rendererSrc = path.join(templateDir, 'html-renderer.cjs');
300
+ const themesSrcDir = path.join(templateDir, 'themes');
301
+ try {
302
+ if (existsSync(rendererSrc)) {
303
+ await fs.copyFile(rendererSrc, path.join(this.scriptsDir, '_html_renderer.cjs'));
304
+ }
305
+ // 复制主题目录
306
+ const themesDstDir = path.join(this.scriptsDir, 'html-themes');
307
+ await fs.mkdir(themesDstDir, { recursive: true });
308
+ if (existsSync(themesSrcDir)) {
309
+ const themeFiles = await fs.readdir(themesSrcDir);
310
+ for (const f of themeFiles) {
311
+ if (f.endsWith('.json')) {
312
+ await fs.copyFile(path.join(themesSrcDir, f), path.join(themesDstDir, f));
313
+ }
314
+ }
315
+ }
316
+ }
317
+ catch (err) {
318
+ // 非致命错误,不影响沙箱初始化
319
+ console.warn('[Sandbox] Failed to inject html-renderer:', err);
320
+ }
321
+ }
322
+ getShellExecutor() {
323
+ return this.shellExecutor;
324
+ }
325
+ getFileSystemExecutor() {
326
+ return this.fsExecutor;
327
+ }
328
+ async runScript(language, code, timeout) {
329
+ const langConfig = LANGUAGE_MAP[language];
330
+ if (!langConfig) {
331
+ throw new Error(`Sandbox: unsupported language "${language}"`);
332
+ }
333
+ // 安全检查:拦截脚本内容中向用户目录的绝对路径写操作
334
+ const absPathPattern = /(?:writeFile|writeFileSync|createWriteStream|open\s*\(|savefig|to_csv|to_excel|to_parquet|to_html)\s*\(?\s*['"][^'"]*\/(Users|home)\//i;
335
+ const cpMvPattern = /\b(?:cp|mv|tee)\s+[^|;&\n]*\s+['"]?\/(Users|home)\//i;
336
+ if (absPathPattern.test(code) || cpMvPattern.test(code)) {
337
+ return '[Sandbox blocked] Script contains absolute path write to user directory. Use relative paths instead (e.g. "output.pptx", "report.html").';
338
+ }
339
+ // Node.js 脚本:自动注入 output/ 目录创建 + 全面 patch fs 方法
340
+ // 防止 pptxgenjs/docx 等库写入子目录时因目录不存在而静默失败
341
+ // 覆盖: writeFileSync, writeFile(callback), fs.promises.writeFile, createWriteStream
342
+ let finalCode = code;
343
+ if (language === 'nodejs') {
344
+ const preamble = [
345
+ "// Auto-injected: ensure output/ dir and patch ALL fs write methods to auto-create parent dirs",
346
+ "try { require('fs').mkdirSync('output', { recursive: true }); } catch(e) {}",
347
+ "const _fs = require('fs');",
348
+ "const _path = require('path');",
349
+ "function _ensureDir(p) { try { const d = _path.dirname(p); if(d && d !== '.') _fs.mkdirSync(d, { recursive: true }); } catch(e) {} }",
350
+ "const _origWriteFileSync = _fs.writeFileSync;",
351
+ "_fs.writeFileSync = function(p, ...a) { _ensureDir(p); return _origWriteFileSync.call(this, p, ...a); };",
352
+ "const _origWriteFile = _fs.writeFile;",
353
+ "_fs.writeFile = function(p, ...a) { _ensureDir(p); return _origWriteFile.call(this, p, ...a); };",
354
+ "const _origCreateWriteStream = _fs.createWriteStream;",
355
+ "_fs.createWriteStream = function(p, ...a) { _ensureDir(p); return _origCreateWriteStream.call(this, p, ...a); };",
356
+ "if (_fs.promises) {",
357
+ " const _origPromisesWriteFile = _fs.promises.writeFile;",
358
+ " _fs.promises.writeFile = async function(p, ...a) { _ensureDir(p); return _origPromisesWriteFile.call(this, p, ...a); };",
359
+ "}",
360
+ "",
361
+ ].join('\n');
362
+ finalCode = preamble + code;
363
+ }
364
+ else if (language === 'python') {
365
+ const preamble = [
366
+ "# Auto-injected: ensure output/ dir exists",
367
+ "import os as _os",
368
+ "try: _os.makedirs('output', exist_ok=True)",
369
+ "except: pass",
370
+ "",
371
+ ].join('\n');
372
+ finalCode = preamble + code;
373
+ }
374
+ // 生成唯一脚本文件名
375
+ const timestamp = Date.now();
376
+ const random = crypto.randomBytes(4).toString('hex');
377
+ const fileName = `script_${timestamp}_${random}${langConfig.ext}`;
378
+ const scriptPath = path.join(this.scriptsDir, fileName);
379
+ // 写入脚本文件
380
+ await fs.writeFile(scriptPath, finalCode, 'utf-8');
381
+ try {
382
+ // 构建执行命令
383
+ const execTimeout = timeout ?? this.config.execTimeout ?? DEFAULT_SANDBOX_CONFIG.execTimeout;
384
+ const command = `${langConfig.command} "${scriptPath}"`;
385
+ // 通过沙箱 Shell 执行器运行
386
+ const result = await this.shellExecutor.exec(command, execTimeout);
387
+ return result;
388
+ }
389
+ finally {
390
+ // 清理临时脚本文件(静默失败)
391
+ fs.unlink(scriptPath).catch(() => { });
392
+ }
393
+ }
394
+ async destroy() {
395
+ try {
396
+ await fs.rm(this.rootDir, { recursive: true, force: true });
397
+ }
398
+ catch {
399
+ // 静默处理清理失败
400
+ }
401
+ }
402
+ }
403
+ //# sourceMappingURL=local-sandbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-sandbox.js","sourceRoot":"","sources":["../../../src/sandbox/local-sandbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @file ProcessCodeSandbox — 进程级代码执行沙箱
3
+ * @description 扩展 LocalSandbox,实现 CodeSandbox 接口
4
+ * 支持结构化执行结果(stdout/stderr/files/charts)
5
+ */
6
+ import { LocalSandbox } from './local-sandbox.js';
7
+ import type { CodeSandbox, CodeExecutionResult } from '@cicctencent/agent-core';
8
+ export declare class ProcessCodeSandbox extends LocalSandbox implements CodeSandbox {
9
+ /**
10
+ * 执行代码并返回结构化结果
11
+ * @param code 代码内容
12
+ * @param lang 语言:python / nodejs / shell
13
+ * @param timeout 超时(ms),默认 30000
14
+ */
15
+ execute(code: string, lang: 'python' | 'nodejs' | 'shell', timeout?: number): Promise<CodeExecutionResult>;
16
+ /**
17
+ * 列出沙箱目录中的文件(排除脚本文件本身)
18
+ */
19
+ private listNewFiles;
20
+ /**
21
+ * 读取沙箱中指定文件的内容
22
+ */
23
+ readFile(filename: string): Promise<Buffer | null>;
24
+ }
25
+ //# sourceMappingURL=process-code-sandbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-code-sandbox.d.ts","sourceRoot":"","sources":["../../../src/sandbox/process-code-sandbox.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEhF,qBAAa,kBAAmB,SAAQ,YAAa,YAAW,WAAW;IACzE;;;;;OAKG;IACG,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,EACnC,OAAO,GAAE,MAAc,GACtB,OAAO,CAAC,mBAAmB,CAAC;IAmC/B;;OAEG;YACW,YAAY;IAW1B;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAQzD"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * @file ProcessCodeSandbox — 进程级代码执行沙箱
3
+ * @description 扩展 LocalSandbox,实现 CodeSandbox 接口
4
+ * 支持结构化执行结果(stdout/stderr/files/charts)
5
+ */
6
+ import * as fs from 'fs/promises';
7
+ import * as path from 'path';
8
+ import { existsSync } from 'fs';
9
+ import { LocalSandbox } from "./local-sandbox.js";
10
+ export class ProcessCodeSandbox extends LocalSandbox {
11
+ /**
12
+ * 执行代码并返回结构化结果
13
+ * @param code 代码内容
14
+ * @param lang 语言:python / nodejs / shell
15
+ * @param timeout 超时(ms),默认 30000
16
+ */
17
+ async execute(code, lang, timeout = 30000) {
18
+ const startTime = Date.now();
19
+ const scriptLang = lang === 'nodejs' ? 'nodejs' : lang === 'python' ? 'python' : 'shell';
20
+ try {
21
+ // 使用父类 runScript 执行代码
22
+ const output = await this.runScript(scriptLang, code, timeout);
23
+ const duration = Date.now() - startTime;
24
+ // 扫描沙箱目录中新生成的文件
25
+ const files = await this.listNewFiles();
26
+ // 检测图表文件(PNG/HTML/SVG)
27
+ const charts = files.filter(f => /\.(png|html|svg|jpg|jpeg)$/i.test(f));
28
+ return {
29
+ stdout: output,
30
+ stderr: '',
31
+ exitCode: 0,
32
+ files,
33
+ charts: charts.length > 0 ? charts : undefined,
34
+ duration,
35
+ };
36
+ }
37
+ catch (error) {
38
+ const duration = Date.now() - startTime;
39
+ return {
40
+ stdout: '',
41
+ stderr: error.message || String(error),
42
+ exitCode: 1,
43
+ files: [],
44
+ duration,
45
+ };
46
+ }
47
+ }
48
+ /**
49
+ * 列出沙箱目录中的文件(排除脚本文件本身)
50
+ */
51
+ async listNewFiles() {
52
+ try {
53
+ const entries = await fs.readdir(this.rootDir);
54
+ return entries
55
+ .filter(f => !f.startsWith('_script_')) // 排除临时脚本文件
56
+ .map(f => f);
57
+ }
58
+ catch {
59
+ return [];
60
+ }
61
+ }
62
+ /**
63
+ * 读取沙箱中指定文件的内容
64
+ */
65
+ async readFile(filename) {
66
+ const filePath = path.join(this.rootDir, filename);
67
+ // 防止路径穿越
68
+ const resolved = path.resolve(filePath);
69
+ if (!resolved.startsWith(path.resolve(this.rootDir)))
70
+ return null;
71
+ if (!existsSync(resolved))
72
+ return null;
73
+ return fs.readFile(resolved);
74
+ }
75
+ }
76
+ //# sourceMappingURL=process-code-sandbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-code-sandbox.js","sourceRoot":"","sources":["../../../src/sandbox/process-code-sandbox.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAClD;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CACX,IAAY,EACZ,IAAmC,EACnC,UAAkB,KAAK;QAEvB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;QAEzF,IAAI,CAAC;YACH,sBAAsB;YACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAExC,gBAAgB;YAChB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAExC,uBAAuB;YACvB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAExE,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,CAAC;gBACX,KAAK;gBACL,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBAC9C,QAAQ;aACT,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,OAAO;gBACL,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC;gBACtC,QAAQ,EAAE,CAAC;gBACX,KAAK,EAAE,EAAE;gBACT,QAAQ;aACT,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/C,OAAO,OAAO;iBACX,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW;iBAClD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACnD,SAAS;QACT,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAClE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QACvC,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;CACF"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @file LocalSandboxManager — 沙箱生命周期管理
3
+ * @description 管理沙箱的创建、获取、销毁,沙箱目录统一在 {cwd}/data/sandboxes/ 下
4
+ */
5
+ import type { Sandbox, SandboxConfig, SandboxManager } from '@cicctencent/agent-core';
6
+ /**
7
+ * 本地沙箱管理器
8
+ * - 创建沙箱时自动在 baseDir/{id} 下创建隔离目录
9
+ * - 支持获取已创建的沙箱实例
10
+ * - 销毁时清理沙箱目录
11
+ */
12
+ export declare class LocalSandboxManager implements SandboxManager {
13
+ private sandboxes;
14
+ private readonly baseDir;
15
+ constructor(baseDir?: string);
16
+ /**
17
+ * 创建沙箱(复用已有实例)
18
+ * 同一 thread 的多次对话复用同一个沙箱,避免销毁导致 artifacts 丢失。
19
+ * 如需强制清理,请先调用 destroy()。
20
+ */
21
+ create(id: string, config?: Partial<SandboxConfig>): Promise<Sandbox>;
22
+ /**
23
+ * 获取已创建的沙箱
24
+ */
25
+ get(id: string): Sandbox | undefined;
26
+ /**
27
+ * 销毁指定沙箱(清理目录 + 移除引用)
28
+ */
29
+ destroy(id: string): Promise<void>;
30
+ /**
31
+ * 销毁所有沙箱
32
+ */
33
+ destroyAll(): Promise<void>;
34
+ /**
35
+ * 获取当前活跃沙箱数量
36
+ */
37
+ get size(): number;
38
+ /**
39
+ * 获取所有活跃沙箱 ID
40
+ */
41
+ listIds(): string[];
42
+ }
43
+ /**
44
+ * 获取默认沙箱管理器单例
45
+ */
46
+ export declare function getSandboxManager(): LocalSandboxManager;
47
+ //# sourceMappingURL=sandbox-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox-manager.d.ts","sourceRoot":"","sources":["../../../src/sandbox/sandbox-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAItF;;;;;GAKG;AACH,qBAAa,mBAAoB,YAAW,cAAc;IACxD,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,CAAC,EAAE,MAAM;IAI5B;;;;OAIG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB3E;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIpC;;OAEG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,OAAO,IAAI,MAAM,EAAE;CAGpB;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,mBAAmB,CAKvD"}