@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
package/README.md ADDED
@@ -0,0 +1,235 @@
1
+ # @cicctencent/agent-server
2
+
3
+ Server-layer toolkit for `@cicctencent/agent-core` — Agent 初始化、SSE 流式推送、内置工具、沙箱、MCP 桥接、知识库、Chat/Settings/Memory/Security 服务,通过 SPI 接口实现可定制性。
4
+
5
+ **框架无关**:不依赖 Express/Fastify/Koa,通过 `SSEResponse` 接口适配任意 HTTP 框架。
6
+
7
+ ## 架构
8
+
9
+ ```
10
+ ┌─────────────────────────────────────────────────┐
11
+ │ Layer 3: 应用层 (如 workai) │
12
+ │ 路由、认证、DB 模型、业务逻辑、doc-generator │
13
+ ├─────────────────────────────────────────────────┤
14
+ │ Layer 2: @cicctencent/agent-server (本包) │
15
+ │ Agent 初始化、SSE、Chat、工具、沙箱、MCP 桥接 │
16
+ │ KB、安全审计、连接器框架,通过 SPI 自定义 │
17
+ ├─────────────────────────────────────────────────┤
18
+ │ Layer 1: @cicctencent/agent-core │
19
+ │ 纯引擎:LLM 编排、工具执行、MCP、Memory、A2A │
20
+ └─────────────────────────────────────────────────┘
21
+ ```
22
+
23
+ ## 快速开始
24
+
25
+ ```typescript
26
+ import { createAgentServer, createBuiltinTools, createSafetyAuditMiddleware } from '@cicctencent/agent-server';
27
+ import { createLLMProvider } from '@cicctencent/agent-core';
28
+ import express from 'express';
29
+
30
+ const app = express();
31
+
32
+ const server = createAgentServer({
33
+ llmProvider: createLLMProvider({
34
+ provider: 'openai',
35
+ model: 'gpt-4',
36
+ apiKey: process.env.OPENAI_API_KEY!,
37
+ }),
38
+ tools: createBuiltinTools(),
39
+ middleware: [createSafetyAuditMiddleware()],
40
+ });
41
+
42
+ // runAgentStream 接收 SSEResponse 接口,Express Response 天然兼容
43
+ app.post('/api/work/chat/stream', async (req, res) => {
44
+ await server.runAgentStream(res, {
45
+ content: req.body.content,
46
+ threadId: req.body.threadId,
47
+ });
48
+ });
49
+
50
+ app.listen(3000);
51
+ ```
52
+
53
+ ## 框架无关
54
+
55
+ `agent-server` 不依赖任何 HTTP 框架。`runAgentStream` / `reconnectAgentStream` 接收 `SSEResponse` 接口:
56
+
57
+ ```typescript
58
+ interface SSEResponse {
59
+ write(data: string): void;
60
+ end(): void;
61
+ readonly writableEnded: boolean;
62
+ setHeader(name: string, value: string | number): void;
63
+ flushHeaders?(): void;
64
+ status?(code: number): void;
65
+ json?(data: any): void;
66
+ }
67
+ ```
68
+
69
+ Express `Response`、Fastify `Reply`(适配后)、原生 `http.ServerResponse` 均可适配。
70
+
71
+ ## SPI 自定义
72
+
73
+ ```typescript
74
+ import {
75
+ createAgentServer,
76
+ DefaultSettingsProvider,
77
+ DefaultChatStoreProvider,
78
+ createBuiltinTools,
79
+ createSafetyAuditMiddleware,
80
+ } from '@cicctencent/agent-server';
81
+
82
+ const server = createAgentServer({
83
+ llmProvider,
84
+ settingsProvider: new MyDbSettingsProvider(),
85
+ chatStoreProvider: new MyDbChatStore(),
86
+ promptBuilder: new MyPromptBuilder(),
87
+ tools: [...createBuiltinTools(), myCustomTool],
88
+ middleware: [createSafetyAuditMiddleware(), myAuthMiddleware],
89
+ connectors: [myCustomAdapter],
90
+ dataDir: './data',
91
+ });
92
+ ```
93
+
94
+ ## SPI 接口
95
+
96
+ | 接口 | 默认实现 | 用途 |
97
+ |------|---------|------|
98
+ | `SettingsProvider` | `DefaultSettingsProvider` | 设置持久化 |
99
+ | `ChatStoreProvider` | `DefaultChatStoreProvider` | 对话 CRUD + 历史重建 |
100
+ | `PromptBuilderProvider` | `DefaultPromptBuilder` | 系统提示词构建 |
101
+ | `ModelConfigResolver` | — | 模型配置解析 |
102
+ | `MCPServiceProvider` | — | MCP 服务器管理 |
103
+ | `SkillServiceProvider` | — | 技能 CRUD 管理 |
104
+ | `ConnectorServiceProvider` | — | 数据源连接器管理 |
105
+ | `AgentProfileProvider` | `DefaultAgentProfileProvider` | 多 Agent 配置管理 |
106
+
107
+ ## 模块清单
108
+
109
+ ### 核心工厂
110
+ - `createAgentServer(options)` — 创建 AgentServer 实例
111
+
112
+ ### 默认 SPI 实现
113
+ - `DefaultSettingsProvider` — JSON 文件设置存储
114
+ - `DefaultChatStoreProvider` — JSON 文件对话存储 + 历史重建
115
+ - `DefaultAgentProfileProvider` — JSON 文件 Agent Profile 管理
116
+ - `DefaultPromptBuilder` — 系统提示词构建器
117
+
118
+ ### 服务
119
+ - `MemoryService` / `getMemoryService()` — 长期记忆持久化
120
+ - `getEnginePool()` — AgentEngine 实例复用池
121
+ - `getRunRegistry()` — Agent 运行会话注册表
122
+ - `getSecurityPolicy()` / `updateSecurityPolicy()` — 安全策略管理
123
+ - `assessToolRisk()` / `isLowRiskTool()` — 工具风险评估
124
+ - `createPermissionRequest()` / `findApprovedPermission()` — 权限审批
125
+ - `appendAuditLog()` / `listAuditLogs()` — 审计日志
126
+ - `createSafetyAuditMiddleware()` — 安全审计中间件
127
+ - `logEvent()` / `setLogTransport()` — 可观测性
128
+ - `saveArtifact()` / `resolveArtifactPath()` / `getMimeType()` — Artifact 存储
129
+ - `getWorkspaces()` / `createWorkspace()` / `ensureDefaultWorkspace()` — 工作空间 CRUD
130
+
131
+ ### SSE
132
+ - `writeSSE()` / `initSSEResponse()` — SSE 事件写入(框架无关)
133
+ - `runAgentSSEStream()` — Agent SSE 流式推送
134
+
135
+ ### 内置工具
136
+ - `createBuiltinTools()` — 聚合所有内置工具
137
+ - `createFilesystemTools()` — execute_command, read_terminal, write_file, read_file, search_code, edit_file, append_file
138
+ - `createDiscoveryTools()` — read_tool_doc, load_skill, read_tool_result, read_offload
139
+ - `createWebTools()` — web_fetch, http_request, browser_navigate
140
+ - `createMemoryTools()` — save_memory, recall_memory, delete_memory
141
+ - `createSandboxTools()` — run_script, show_widget, save_artifact
142
+ - `createCommunicationTools()` — send_email, create_event, list_events
143
+ - `createAutomationTools()` — create_automation, list_automations, delete_automation
144
+ - `createGitTools()` — git_status, git_diff, git_commit, git_log
145
+
146
+ ### 工具执行器
147
+ - `LocalShellExecutor` — 基于 child_process 的 Shell 执行器
148
+ - `LocalFileSystemExecutor` — 基于 fs/promises 的文件系统执行器
149
+
150
+ ### 沙箱
151
+ - `LocalSandbox` — 进程级沙箱实例(隔离文件系统 + Shell + 脚本执行)
152
+ - `LocalSandboxManager` / `getSandboxManager()` — 沙箱生命周期管理器
153
+ - `ProcessCodeSandbox` — 结构化代码执行沙箱(stdout/stderr/files/charts)
154
+ - `SandboxFileSystemExecutor` — 沙箱内文件系统执行器(路径穿越防护)
155
+ - `SandboxShellExecutor` — 沙箱内 Shell 执行器(命令黑名单 + 环境变量过滤)
156
+
157
+ ### MCP 桥接
158
+ - `ApiBridgeClient` — HTTP API → MCP 桥接客户端
159
+ - `buildFromTemplate` — 通用模板请求构建器(配置驱动)
160
+ - `resolveBodyTemplate()` — `${param|default}` 模板解析
161
+ - `importFromOpenAPI()` — OpenAPI 3.x / Swagger 2.0 → MCP 工具定义
162
+ - 类型:`RequestBuilderFn`, `AuthConfig`, `ResponseConfig`, `TemplateBuilderExtra`
163
+
164
+ ### 知识库
165
+ - `FileKnowledgeBase` — 基于文件的知识库(文档分块 + embedding 存储)
166
+ - `EmbeddingVectorIndex` — 基于 Embedding 的向量索引
167
+ - `parseDocument()` — 文档解析与分块(Markdown/TXT/JSON)
168
+
169
+ ### 连接器
170
+ - `registerAdapter()` / `getAdapter()` — 数据源适配器注册表
171
+
172
+ ### 存储
173
+ - `JsonStore` / `JsonListStore` — 通用 JSON 文件存储
174
+ - `McpServerStore` — 目录型 MCP 服务器存储
175
+ - `getToolResultStore()` — 工具结果存储单例
176
+ - `FileNoteStore` — 工作空间笔记存储(agent.md)
177
+ - `WorkspaceStore` / `getWorkspaceStore()` — 工作空间存储
178
+ - `AutomationStore` / `getAutomationStore()` — 自动化任务存储
179
+ - `AutomationRunStore` / `getAutomationRunStore()` — 自动化执行记录存储
180
+
181
+ ### 数据模型
182
+ - `AutomationEntity` / `AutomationRunEntity` / `AutomationStatus` — 自动化任务类型
183
+
184
+ ### 工具函数
185
+ - `getProjectDataPath()` / `ensureDataDir()` — 数据目录管理
186
+ - `expandEnvVars()` — 环境变量展开
187
+ - `setAppName()` / `getAppName()` — 应用名设置
188
+ - `ensureDefaultData()` — 默认数据文件复制
189
+
190
+ ## AgentServer API
191
+
192
+ ```typescript
193
+ interface AgentServer {
194
+ agentSystem: AgentSystem;
195
+ registerTool(tool): void;
196
+ unregisterTool(name): void;
197
+ registerMiddleware(mw): void;
198
+ unregisterMiddleware(name): void;
199
+ runAgentStream(res: SSEResponse, params, signal?): Promise<void>;
200
+ reconnectAgentStream(res: SSEResponse, threadId): Promise<void>;
201
+ getEngineForProfile(profileId?): AgentEngine;
202
+ abortAgent(threadId): boolean;
203
+ steerAgent(sessionId, message): boolean;
204
+ clearEnginePool(): void;
205
+ refreshLLMConfig(): void;
206
+ refreshAgentConfig(): void;
207
+ getRegisteredTools(): ToolInfo[];
208
+ getLoadedSkills(): SkillInfo[];
209
+ isAgentAvailable(): boolean;
210
+ checkRunStatus(threadId): RunStatus;
211
+ providers: { ... };
212
+ }
213
+ ```
214
+
215
+ ## Optional Dependencies
216
+
217
+ 以下依赖为可选(`optionalDependencies`),仅在用到对应功能时需要安装:
218
+
219
+ | 依赖 | 用途 |
220
+ |------|------|
221
+ | `jsonpath-plus` | MCP api-bridge 响应提取 |
222
+ | `@apidevtools/swagger-parser` | OpenAPI 导入 |
223
+ | `fast-glob` | search_code 工具 |
224
+ | `turndown` / `html-to-text` | web_fetch 工具 HTML 转换 |
225
+ | `cheerio` / `axios` / `socks-proxy-agent` | web_fetch / http_request 工具 |
226
+ | `simple-git` | git 工具 |
227
+
228
+ 未安装时对应工具会在运行时报错,不影响其他功能。
229
+
230
+ ## 构建
231
+
232
+ ```bash
233
+ cd packages/agent-server
234
+ npm run build
235
+ ```
@@ -0,0 +1,6 @@
1
+ import type { AgentServer, AgentServerOptions } from '../types.js';
2
+ /**
3
+ * 创建 AgentServer 实例
4
+ */
5
+ export declare function createAgentServer(options: AgentServerOptions): AgentServer;
6
+ //# sourceMappingURL=agent-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-server.d.ts","sourceRoot":"","sources":["../../../src/agent/agent-server.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAKnB,MAAM,aAAa,CAAC;AAarB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAgV1E"}
@@ -0,0 +1,412 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // AgentServer Factory — createAgentServer
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createAgentServer = createAgentServer;
7
+ const agent_core_1 = require("@cicctencent/agent-core");
8
+ const settings_service_ts_1 = require("../service/settings.service.js");
9
+ const chat_service_ts_1 = require("../service/chat.service.js");
10
+ const agent_profile_service_ts_1 = require("../service/agent-profile.service.js");
11
+ const prompt_builder_ts_1 = require("../prompt/prompt-builder.js");
12
+ const memory_service_ts_1 = require("../service/memory.service.js");
13
+ const engine_pool_ts_1 = require("../service/engine-pool.js");
14
+ const run_registry_ts_1 = require("../service/run-registry.js");
15
+ const sse_handler_ts_1 = require("../sse/sse-handler.js");
16
+ const local_executors_ts_1 = require("../tool/local-executors.js");
17
+ const index_ts_1 = require("../connectors/index.js");
18
+ /**
19
+ * 创建 AgentServer 实例
20
+ */
21
+ function createAgentServer(options) {
22
+ const dataDir = options.dataDir;
23
+ // ---- 初始化 SPI 提供者 ----
24
+ const settingsProvider = options.settingsProvider ?? new settings_service_ts_1.DefaultSettingsProvider(dataDir);
25
+ const chatStoreProvider = options.chatStoreProvider ?? new chat_service_ts_1.DefaultChatStoreProvider(dataDir);
26
+ const agentProfileProvider = options.agentProfileProvider ?? new agent_profile_service_ts_1.DefaultAgentProfileProvider(dataDir);
27
+ const promptBuilder = options.promptBuilder ?? new prompt_builder_ts_1.DefaultPromptBuilder();
28
+ const memoryService = (0, memory_service_ts_1.getMemoryService)(dataDir);
29
+ // ---- 注册自定义连接器 ----
30
+ if (options.connectors) {
31
+ for (const adapter of options.connectors) {
32
+ (0, index_ts_1.registerAdapter)(adapter);
33
+ }
34
+ }
35
+ // ---- 中间件注册表 ----
36
+ const registeredMiddlewares = [...(options.middleware || [])];
37
+ // ---- 共享实例 ----
38
+ const historyPersistence = new agent_core_1.JsonlHistoryPersistence({ dir: dataDir ? `${dataDir}/history` : 'history' });
39
+ const usageTracker = new agent_core_1.InMemoryUsageTracker();
40
+ const shellExecutor = new local_executors_ts_1.LocalShellExecutor();
41
+ const fsExecutor = new local_executors_ts_1.LocalFileSystemExecutor();
42
+ let engine = null;
43
+ let toolRegistry = null;
44
+ let skillManager = null;
45
+ let contextManager = null;
46
+ let llmProvider = options.llmProvider;
47
+ function getAgentSystem() {
48
+ if (engine) {
49
+ return { engine, toolRegistry: toolRegistry, skillManager: skillManager, contextManager: contextManager, llmProvider };
50
+ }
51
+ const settings = settingsProvider.getSettings();
52
+ toolRegistry = new agent_core_1.ToolRegistry();
53
+ const builtinTools = options.tools ?? [];
54
+ const extraTools = options.extraTools ?? [];
55
+ toolRegistry.registerAll([...builtinTools, ...extraTools]);
56
+ skillManager = new agent_core_1.SkillManager();
57
+ const skillsDir = options.skillsDir || process.env.SKILLS_DIR || './data/skills';
58
+ try {
59
+ skillManager.loadFromDir(skillsDir, 'system');
60
+ }
61
+ catch (e) {
62
+ console.warn('[AgentServer] Failed to load skills from', skillsDir, e);
63
+ }
64
+ contextManager = new agent_core_1.ContextManager();
65
+ const securityGuard = new agent_core_1.SecurityGuard();
66
+ const config = {
67
+ llmProvider,
68
+ toolRegistry,
69
+ contextManager,
70
+ skillManager,
71
+ securityGuard,
72
+ maxIterations: options.maxIterations ?? 15,
73
+ maxMessages: options.maxMessages ?? 50,
74
+ toolTimeout: options.toolTimeout ?? 30000,
75
+ llmTimeout: options.llmTimeout ?? 120000,
76
+ basePrompt: options.basePrompt ?? settings.agentConfig?.basePrompt ?? 'You are a helpful AI assistant with access to tools. Use tools when needed to accomplish tasks. Always explain your actions clearly. Respond in the same language as the user.',
77
+ contextBudget: settings.agentConfig?.contextBudget ?? { maxToolOutput: 8000 },
78
+ retryPolicy: settings.agentConfig?.retryPolicy ?? { maxRetries: 1, initialDelay: 1000, maxDelay: 30000, backoffFactor: 2 },
79
+ historyPersistence,
80
+ usageTracker,
81
+ middleware: [...registeredMiddlewares],
82
+ };
83
+ engine = new agent_core_1.AgentRuntimeBuilder()
84
+ .withLLMProvider(llmProvider, options.fallbackProvider)
85
+ .withTools(toolRegistry)
86
+ .withSkills(skillManager)
87
+ .withConfig(config)
88
+ .build().engine;
89
+ return { engine, toolRegistry, skillManager, contextManager, llmProvider };
90
+ }
91
+ function getEngineForProfile(profileId, profileOverride, skipCache = false) {
92
+ const numericProfileId = profileId != null ? Number(profileId) : undefined;
93
+ if (numericProfileId !== undefined && (isNaN(numericProfileId) || numericProfileId <= 0)) {
94
+ return getEngineForProfile(undefined, profileOverride, skipCache);
95
+ }
96
+ const pool = (0, engine_pool_ts_1.getEnginePool)();
97
+ if (!skipCache) {
98
+ const cached = pool.get(numericProfileId);
99
+ if (cached)
100
+ return cached;
101
+ }
102
+ const { toolRegistry: baseRegistry, skillManager: baseSkillManager, contextManager: ctxManager } = getAgentSystem();
103
+ const profile = profileOverride || (numericProfileId ? agentProfileProvider.getProfile(numericProfileId) : agentProfileProvider.getDefaultProfile());
104
+ if (!profile)
105
+ return engine;
106
+ const isDefaultAgent = profile.isDefault === true || profile.agentType === 'default';
107
+ const agentToolRegistry = new agent_core_1.ToolRegistry();
108
+ baseRegistry.getDefinitions().forEach(def => {
109
+ const tool = baseRegistry.get(def.function.name);
110
+ if (tool && tool.category !== 'mcp')
111
+ agentToolRegistry.register(tool);
112
+ });
113
+ const agentSkillManager = new agent_core_1.SkillManager();
114
+ const profileSkillIds = new Set(profile.selectedSkills || []);
115
+ for (const skillId of profileSkillIds) {
116
+ const skill = baseSkillManager.get(skillId);
117
+ if (skill)
118
+ agentSkillManager.register(skill);
119
+ }
120
+ const skillRouter = agentSkillManager.getAll().length > 0 ? new agent_core_1.SkillRouter(agentSkillManager) : undefined;
121
+ const securityGuard = new agent_core_1.SecurityGuard();
122
+ const memoryPrompt = memoryService.getAllForPrompt(10) || undefined;
123
+ const settings = settingsProvider.getSettings();
124
+ const config = {
125
+ llmProvider,
126
+ toolRegistry: agentToolRegistry,
127
+ contextManager: ctxManager,
128
+ skillManager: agentSkillManager,
129
+ skillRouter,
130
+ securityGuard,
131
+ maxIterations: profile.maxIterations || 15,
132
+ maxMessages: profile.maxMessages || 50,
133
+ toolTimeout: profile.toolTimeout || 30000,
134
+ llmTimeout: 120000,
135
+ basePrompt: isDefaultAgent
136
+ ? promptBuilder.buildDefaultPrompt(profile, agentToolRegistry, memoryPrompt)
137
+ : promptBuilder.buildSpecialistPrompt(profile, agentToolRegistry, agentSkillManager, memoryPrompt),
138
+ contextBudget: settings.agentConfig?.contextBudget,
139
+ deniedTools: [...(settings.agentConfig?.deniedTools || []), ...(profile.disabledTools || [])].filter(Boolean),
140
+ retryPolicy: settings.agentConfig?.retryPolicy || { maxRetries: 1, initialDelay: 1000, maxDelay: 30000, backoffFactor: 2 },
141
+ historyPersistence,
142
+ usageTracker,
143
+ middleware: [...registeredMiddlewares],
144
+ };
145
+ const newEngine = new agent_core_1.AgentRuntimeBuilder()
146
+ .withLLMProvider(llmProvider, options.fallbackProvider)
147
+ .withTools(agentToolRegistry)
148
+ .withSkills(agentSkillManager)
149
+ .withProfile({
150
+ id: profile.id, name: profile.name, description: profile.description,
151
+ agentType: profile.agentType, isDefault: profile.isDefault,
152
+ disabledTools: profile.disabledTools,
153
+ selectedSkills: profileSkillIds.size > 0 ? [...profileSkillIds] : undefined,
154
+ alwaysInjectSkills: profile.alwaysInjectSkills,
155
+ maxIterations: profile.maxIterations || 15, maxMessages: profile.maxMessages || 50,
156
+ toolTimeout: profile.toolTimeout || 30000, model: profile.model,
157
+ })
158
+ .withConfig(config)
159
+ .build().engine;
160
+ if (!skipCache)
161
+ pool.set(numericProfileId, newEngine);
162
+ return newEngine;
163
+ }
164
+ const DB_FLUSH_INTERVAL = 5000;
165
+ const DB_FLUSH_CHARS = 500;
166
+ async function runAgentStream(res, params, abortSignal) {
167
+ res.setHeader('Content-Type', 'text/event-stream');
168
+ res.setHeader('Cache-Control', 'no-cache');
169
+ res.setHeader('Connection', 'keep-alive');
170
+ res.setHeader('X-Accel-Buffering', 'no');
171
+ res.flushHeaders();
172
+ const rawProfileId = params.agentProfileId;
173
+ const requestedAgentProfileId = rawProfileId != null && rawProfileId !== '' ? Number(rawProfileId) : undefined;
174
+ const engineInstance = getEngineForProfile(requestedAgentProfileId);
175
+ const sessionId = params.threadId || `session_${Date.now()}`;
176
+ const traceId = params.traceId || `trace_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
177
+ const threadIdNum = Number(sessionId);
178
+ const registry = (0, run_registry_ts_1.getRunRegistry)(dataDir);
179
+ const run = registry.startRun(threadIdNum, sessionId, traceId);
180
+ (0, agent_core_1.logEvent)({ event: 'agent.stream.open', sessionId, data: { threadId: threadIdNum, agentProfileId: requestedAgentProfileId } });
181
+ if (!isNaN(threadIdNum)) {
182
+ try {
183
+ const preMsg = chatStoreProvider.addMessage({ threadId: threadIdNum, role: 'assistant', content: '', type: 'text', meta: { status: 'streaming' } });
184
+ run.messageId = preMsg.id;
185
+ registry.setMessageId(threadIdNum, preMsg.id);
186
+ }
187
+ catch (err) {
188
+ console.warn('[AgentServer] Pre-save failed:', err?.message);
189
+ }
190
+ }
191
+ try {
192
+ if (!isNaN(threadIdNum)) {
193
+ const history = chatStoreProvider.buildThreadHistory(threadIdNum);
194
+ if (history.length > 0)
195
+ engineInstance.setHistory(sessionId, history);
196
+ }
197
+ }
198
+ catch (err) {
199
+ console.warn('[AgentServer] History restore failed:', err?.message);
200
+ }
201
+ const customContext = { traceId };
202
+ customContext.toolRegistry = engineInstance.getToolRegistry();
203
+ customContext.skillManager = engineInstance.getSkillManager();
204
+ customContext.shell = shellExecutor;
205
+ customContext.fs = fsExecutor;
206
+ let memoryOverride;
207
+ try {
208
+ const allEntries = memoryService.getAllEntries();
209
+ if (allEntries.length > 0) {
210
+ const recallEngine = new agent_core_1.MemoryRecallEngine();
211
+ const recallResult = await recallEngine.recall((0, agent_core_1.extractTextFromContent)(params.content), allEntries, { maxResults: 5 });
212
+ const recalled = (0, agent_core_1.formatRecallForPrompt)(recallResult);
213
+ if (recalled)
214
+ memoryOverride = recalled;
215
+ }
216
+ }
217
+ catch (err) {
218
+ console.warn('[AgentServer] Memory recall failed:', err?.message);
219
+ }
220
+ const emitSubEvent = (evt) => { registry.addEvent(threadIdNum, 'sub-agent', evt); };
221
+ customContext.emitSubEvent = emitSubEvent;
222
+ const emitWidget = (evt) => { run.widgets.push(evt); registry.addEvent(threadIdNum, 'html-widget', evt); };
223
+ customContext.emitWidget = emitWidget;
224
+ const emitArtifact = (artifact) => { run.artifacts.push(artifact); registry.addEvent(threadIdNum, 'file-artifact', artifact); };
225
+ customContext.emitArtifact = emitArtifact;
226
+ const unsubscribe = registry.subscribe(threadIdNum, (evt) => {
227
+ if (!res.writableEnded) {
228
+ try {
229
+ (0, sse_handler_ts_1.writeSSE)(res, evt.event, evt.data);
230
+ }
231
+ catch { }
232
+ }
233
+ });
234
+ if (run.messageId)
235
+ registry.addEvent(threadIdNum, 'message-id', { messageId: run.messageId });
236
+ let lastFlushedLen = 0;
237
+ const flushToDB = () => {
238
+ if (!run.messageId || isNaN(threadIdNum))
239
+ return;
240
+ if (run.fullContent.length === lastFlushedLen && run.status === 'running')
241
+ return;
242
+ lastFlushedLen = run.fullContent.length;
243
+ try {
244
+ chatStoreProvider.updateMessage(threadIdNum, run.messageId, {
245
+ content: run.fullContent,
246
+ meta: { status: 'streaming', reasoning: run.reasoningText || undefined, toolCalls: run.toolCalls.length > 0 ? run.toolCalls.map(tc => ({ ...tc })) : undefined, widgets: run.widgets.length > 0 ? [...run.widgets] : undefined, artifacts: run.artifacts.length > 0 ? [...run.artifacts] : undefined },
247
+ });
248
+ }
249
+ catch (err) {
250
+ console.warn('[AgentServer] DB flush failed:', err?.message);
251
+ }
252
+ };
253
+ const dbFlushTimer = setInterval(flushToDB, DB_FLUSH_INTERVAL);
254
+ if (dbFlushTimer && typeof dbFlushTimer === 'object' && 'unref' in dbFlushTimer)
255
+ dbFlushTimer.unref();
256
+ const eventAdapterState = (0, agent_core_1.createAgentEventCollectorState)();
257
+ if (engineInstance.getHistoryLength(sessionId) === 0) {
258
+ try {
259
+ await engineInstance.loadHistory(sessionId);
260
+ }
261
+ catch (e) {
262
+ console.warn(`[AgentServer] History load failed:`, e?.message);
263
+ }
264
+ }
265
+ try {
266
+ for await (const event of engineInstance.run({ sessionId, message: params.content, abortSignal, context: { sessionId, custom: customContext }, systemPromptOverride: memoryOverride })) {
267
+ const mapped = (0, agent_core_1.mapAgentEvent)(event, eventAdapterState, { preset: 'sse', toolRegistry: engineInstance.getToolRegistry(), resolveToolDisplayName: (toolName) => promptBuilder.resolveToolDisplayName(toolName, engineInstance.getToolRegistry()) });
268
+ if (event.type === 'done')
269
+ registry.setStepCount(threadIdNum, event.iterations || 0);
270
+ if (mapped) {
271
+ const doneData = mapped.event === 'done' && typeof mapped.data === 'object' && mapped.data ? { ...mapped.data, messageId: run.messageId, reasoning: run.reasoningText || undefined, toolCallDetails: run.toolCalls.length > 0 ? run.toolCalls.map(tc => ({ ...tc })) : undefined } : mapped.data;
272
+ registry.addEvent(threadIdNum, mapped.event, doneData);
273
+ }
274
+ if (run.fullContent.length - lastFlushedLen >= DB_FLUSH_CHARS)
275
+ flushToDB();
276
+ }
277
+ registry.finishRun(threadIdNum, 'done');
278
+ (0, agent_core_1.logEvent)({ event: 'agent.stream.done', sessionId, data: { threadId: threadIdNum, steps: run.stepCount, toolCalls: run.toolCallCount } });
279
+ if (run.messageId && !isNaN(threadIdNum)) {
280
+ try {
281
+ chatStoreProvider.updateMessage(threadIdNum, run.messageId, { content: run.fullContent, meta: { reasoning: run.reasoningText || undefined, toolCalls: run.toolCalls.length > 0 ? run.toolCalls.map(tc => ({ ...tc })) : undefined, widgets: run.widgets.length > 0 ? [...run.widgets] : undefined, artifacts: run.artifacts.length > 0 ? [...run.artifacts] : undefined } });
282
+ }
283
+ catch { }
284
+ }
285
+ }
286
+ catch (err) {
287
+ registry.finishRun(threadIdNum, 'error', err.message || 'Agent stream failed');
288
+ (0, agent_core_1.logEvent)({ event: 'agent.stream.error', level: 'error', traceId, sessionId, data: { threadId: threadIdNum, error: err.message || 'Agent stream failed' } });
289
+ if (run.messageId && !isNaN(threadIdNum)) {
290
+ try {
291
+ chatStoreProvider.updateMessage(threadIdNum, run.messageId, { content: run.fullContent || `Error: ${err.message}`, meta: { status: 'error', error: err.message } });
292
+ }
293
+ catch { }
294
+ }
295
+ }
296
+ finally {
297
+ if (dbFlushTimer)
298
+ clearInterval(dbFlushTimer);
299
+ unsubscribe();
300
+ if (!res.writableEnded)
301
+ res.end();
302
+ }
303
+ }
304
+ async function reconnectAgentStream(res, threadId) {
305
+ const registry = (0, run_registry_ts_1.getRunRegistry)(dataDir);
306
+ const run = registry.getRun(threadId);
307
+ if (!run) {
308
+ res.status?.(404);
309
+ res.json?.({ ret: -1, data: null, msg: 'No active run for this thread' });
310
+ res.end();
311
+ return;
312
+ }
313
+ (0, agent_core_1.logEvent)({ event: 'agent.stream.reconnect', data: { threadId } });
314
+ res.setHeader('Content-Type', 'text/event-stream');
315
+ res.setHeader('Cache-Control', 'no-cache');
316
+ res.setHeader('Connection', 'keep-alive');
317
+ res.setHeader('X-Accel-Buffering', 'no');
318
+ res.flushHeaders();
319
+ const replayBound = run.eventBuffer.length;
320
+ const unsubscribe = registry.subscribe(threadId, (evt) => { if (!res.writableEnded) {
321
+ try {
322
+ (0, sse_handler_ts_1.writeSSE)(res, evt.event, evt.data);
323
+ }
324
+ catch { }
325
+ } });
326
+ for (let i = 0; i < replayBound; i++) {
327
+ if (res.writableEnded) {
328
+ unsubscribe();
329
+ return;
330
+ }
331
+ const evt = run.eventBuffer[i];
332
+ if (evt)
333
+ (0, sse_handler_ts_1.writeSSE)(res, evt.event, evt.data);
334
+ }
335
+ if (run.status !== 'running') {
336
+ unsubscribe();
337
+ if (!res.writableEnded)
338
+ res.end();
339
+ return;
340
+ }
341
+ try {
342
+ while (!res.writableEnded) {
343
+ const currentRun = registry.getRun(threadId);
344
+ if (!currentRun || currentRun.status !== 'running') {
345
+ if (currentRun && !res.writableEnded) {
346
+ const finalEvt = currentRun.status === 'error' ? { event: 'error', data: { error: currentRun.error || 'Agent execution failed' } } : { event: 'done', data: { text: currentRun.fullContent || '', steps: currentRun.stepCount, toolCalls: currentRun.toolCallCount } };
347
+ try {
348
+ (0, sse_handler_ts_1.writeSSE)(res, finalEvt.event, finalEvt.data);
349
+ }
350
+ catch { }
351
+ }
352
+ break;
353
+ }
354
+ await new Promise(r => setTimeout(r, 500));
355
+ }
356
+ }
357
+ finally {
358
+ unsubscribe();
359
+ if (!res.writableEnded)
360
+ res.end();
361
+ }
362
+ }
363
+ const server = {
364
+ agentSystem: { get engine() { return getAgentSystem().engine; }, get toolRegistry() { return getAgentSystem().toolRegistry; }, get skillManager() { return getAgentSystem().skillManager; }, get contextManager() { return getAgentSystem().contextManager; }, get llmProvider() { return getAgentSystem().llmProvider; } },
365
+ registerTool(tool) { const { toolRegistry: reg } = getAgentSystem(); if (!reg.has(tool.definition.function.name))
366
+ reg.register(tool); },
367
+ unregisterTool(name) { const { toolRegistry: reg } = getAgentSystem(); reg.unregister(name); },
368
+ registerMiddleware(mw) { if (registeredMiddlewares.some(m => m.name === mw.name))
369
+ return; registeredMiddlewares.push(mw); if (engine)
370
+ engine.config.middleware = [...registeredMiddlewares]; },
371
+ unregisterMiddleware(name) { const idx = registeredMiddlewares.findIndex(m => m.name === name); if (idx >= 0) {
372
+ registeredMiddlewares.splice(idx, 1);
373
+ if (engine)
374
+ engine.config.middleware = [...registeredMiddlewares];
375
+ } },
376
+ runAgentStream, reconnectAgentStream, getEngineForProfile,
377
+ getEngine() { return engine; },
378
+ abortAgent(threadId) { const registry = (0, run_registry_ts_1.getRunRegistry)(dataDir); const run = registry.getRun(threadId); if (!run)
379
+ return false; if (engine)
380
+ engine.abort(String(threadId)); registry.finishRun(threadId, 'error', 'Aborted by user'); return true; },
381
+ steerAgent(sessionId, message) { if (!engine)
382
+ return false; return engine.steer(sessionId, message); },
383
+ clearEnginePool() { (0, engine_pool_ts_1.getEnginePool)().clear(); },
384
+ refreshLLMConfig() { (0, engine_pool_ts_1.getEnginePool)().clear(); console.log('[AgentServer] LLM config refreshed — engine pool cleared'); },
385
+ refreshAgentConfig() { if (!engine)
386
+ return; const settings = settingsProvider.getSettings(); const securityGuard = new agent_core_1.SecurityGuard(); const config = { llmProvider, toolRegistry: toolRegistry, contextManager: contextManager, skillManager: skillManager, securityGuard, maxIterations: settings.agentConfig?.maxIterations || 15, maxMessages: settings.agentConfig?.maxMessages || 50, toolTimeout: settings.agentConfig?.toolTimeout || 30000, llmTimeout: 120000, basePrompt: settings.agentConfig?.basePrompt || 'You are a helpful AI assistant with access to tools. Use tools when needed to accomplish tasks. Always explain your actions clearly. Respond in the same language as the user.', historyPersistence, usageTracker, middleware: [...registeredMiddlewares] }; engine.destroy(); engine = new agent_core_1.AgentRuntimeBuilder().withLLMProvider(llmProvider).withTools(toolRegistry).withSkills(skillManager).withConfig(config).build().engine; console.log('[AgentServer] Agent engine refreshed'); },
387
+ async refreshMCPTools() { return { connected: 0, tools: 0, errors: ['MCP sync not configured'] }; },
388
+ getRegisteredTools() { const { toolRegistry: reg } = getAgentSystem(); return reg.getDefinitions().map(d => { const tool = reg.get(d.function.name); return { name: d.function.name, description: d.function.description, category: tool?.category || 'builtin' }; }); },
389
+ getLoadedSkills() { const { skillManager: sm } = getAgentSystem(); return sm.getAll().map(s => ({ id: s.id, name: s.name, description: s.description, tags: s.tags, content: s.content })); },
390
+ getRegisteredMiddlewares() { return registeredMiddlewares; },
391
+ getUsageStats(filter) { return usageTracker.stats(filter); },
392
+ isAgentAvailable() { const settings = settingsProvider.getSettings(); if (settings.modelProviders && settings.modelProviders.length > 0) {
393
+ return !!settings.modelProviders.find(mp => mp.apiKey || mp.provider === 'ollama');
394
+ } return !!(settings.apiKeys.openai || settings.apiKeys.anthropic || process.env.OPENAI_API_KEY || process.env.ANTHROPIC_API_KEY); },
395
+ getAgentUnavailableReason() { const settings = settingsProvider.getSettings(); if (!settings.modelProviders || settings.modelProviders.length === 0)
396
+ return '未配置任何模型供应商。请在「设置」页面添加模型配置。'; const available = settings.modelProviders.find(mp => mp.apiKey || mp.provider === 'ollama'); if (!available)
397
+ return '已配置模型供应商,但缺少 API Key。请在「设置」页面填写 API Key。'; return 'AI 服务不可用,请检查设置中的供应商和 API Key 配置'; },
398
+ checkRunStatus(threadId) { const registry = (0, run_registry_ts_1.getRunRegistry)(dataDir); const run = registry.getRun(threadId); if (!run) {
399
+ const snapshot = registry.getRunSnapshot(threadId);
400
+ return { hasActiveRun: false, status: snapshot?.status || 'no_run', messageId: snapshot?.messageId, eventCount: 0, checkpointCount: 0 };
401
+ } return { hasActiveRun: run.status === 'running', status: run.status, messageId: run.messageId, eventCount: run.eventBuffer.length, checkpointCount: run.checkpoints.length }; },
402
+ providers: { settings: settingsProvider, chatStore: chatStoreProvider, promptBuilder, modelConfigResolver: options.modelConfigResolver, mcpService: options.mcpServiceProvider, skillService: options.skillServiceProvider, connectorService: options.connectorServiceProvider, agentProfile: agentProfileProvider },
403
+ };
404
+ setTimeout(() => { try {
405
+ getAgentSystem();
406
+ }
407
+ catch { } }, 2000);
408
+ if (options.onInit)
409
+ options.onInit(server);
410
+ return server;
411
+ }
412
+ //# sourceMappingURL=agent-server.js.map