@cicctencent/agent-core 0.1.1 → 0.1.3

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 (439) hide show
  1. package/dist/cjs/agent/engine.d.ts.map +1 -0
  2. package/dist/cjs/agent/engine.js +766 -0
  3. package/dist/cjs/agent/engine.js.map +1 -0
  4. package/dist/cjs/agent/history-manager.d.ts.map +1 -0
  5. package/dist/cjs/agent/history-manager.js +271 -0
  6. package/dist/cjs/agent/history-manager.js.map +1 -0
  7. package/dist/cjs/agent/llm-caller.d.ts.map +1 -0
  8. package/dist/cjs/agent/llm-caller.js +307 -0
  9. package/dist/cjs/agent/llm-caller.js.map +1 -0
  10. package/dist/cjs/agent/tool-executor.d.ts.map +1 -0
  11. package/dist/cjs/agent/tool-executor.js +568 -0
  12. package/dist/cjs/agent/tool-executor.js.map +1 -0
  13. package/dist/cjs/agent/types.d.ts.map +1 -0
  14. package/dist/cjs/agent/types.js +6 -0
  15. package/dist/cjs/agent/types.js.map +1 -0
  16. package/dist/cjs/agent/workflow.d.ts.map +1 -0
  17. package/dist/cjs/agent/workflow.js +262 -0
  18. package/dist/cjs/agent/workflow.js.map +1 -0
  19. package/dist/cjs/context/collector.d.ts.map +1 -0
  20. package/dist/cjs/context/collector.js +94 -0
  21. package/dist/cjs/context/collector.js.map +1 -0
  22. package/dist/cjs/context/manager.d.ts.map +1 -0
  23. package/dist/cjs/context/manager.js +36 -0
  24. package/dist/cjs/context/manager.js.map +1 -0
  25. package/dist/cjs/context/types.d.ts.map +1 -0
  26. package/dist/cjs/context/types.js +6 -0
  27. package/dist/cjs/context/types.js.map +1 -0
  28. package/dist/cjs/hooks/types.d.ts.map +1 -0
  29. package/dist/cjs/hooks/types.js +6 -0
  30. package/dist/cjs/hooks/types.js.map +1 -0
  31. package/dist/cjs/index.d.ts.map +1 -0
  32. package/dist/cjs/index.js +98 -0
  33. package/dist/cjs/index.js.map +1 -0
  34. package/dist/cjs/llm/anthropic-provider.d.ts.map +1 -0
  35. package/dist/cjs/llm/anthropic-provider.js +356 -0
  36. package/dist/cjs/llm/anthropic-provider.js.map +1 -0
  37. package/dist/cjs/llm/factory.d.ts.map +1 -0
  38. package/dist/cjs/llm/factory.js +34 -0
  39. package/dist/cjs/llm/factory.js.map +1 -0
  40. package/dist/cjs/llm/ollama-provider.d.ts.map +1 -0
  41. package/dist/cjs/llm/ollama-provider.js +34 -0
  42. package/dist/cjs/llm/ollama-provider.js.map +1 -0
  43. package/dist/cjs/llm/openai-provider.d.ts.map +1 -0
  44. package/dist/cjs/llm/openai-provider.js +186 -0
  45. package/dist/cjs/llm/openai-provider.js.map +1 -0
  46. package/dist/cjs/llm/provider.d.ts.map +1 -0
  47. package/dist/cjs/llm/provider.js +18 -0
  48. package/dist/cjs/llm/provider.js.map +1 -0
  49. package/dist/cjs/llm/types.d.ts.map +1 -0
  50. package/dist/cjs/llm/types.js +6 -0
  51. package/dist/cjs/llm/types.js.map +1 -0
  52. package/dist/cjs/mcp/base-client.d.ts.map +1 -0
  53. package/dist/cjs/mcp/base-client.js +112 -0
  54. package/dist/cjs/mcp/base-client.js.map +1 -0
  55. package/dist/cjs/mcp/client.d.ts.map +1 -0
  56. package/dist/cjs/mcp/client.js +76 -0
  57. package/dist/cjs/mcp/client.js.map +1 -0
  58. package/dist/cjs/mcp/factory.d.ts.map +1 -0
  59. package/dist/cjs/mcp/factory.js +43 -0
  60. package/dist/cjs/mcp/factory.js.map +1 -0
  61. package/dist/cjs/mcp/http-client.d.ts.map +1 -0
  62. package/dist/cjs/mcp/http-client.js +142 -0
  63. package/dist/cjs/mcp/http-client.js.map +1 -0
  64. package/dist/cjs/mcp/proxy-agent.d.ts.map +1 -0
  65. package/dist/cjs/mcp/proxy-agent.js +195 -0
  66. package/dist/cjs/mcp/proxy-agent.js.map +1 -0
  67. package/dist/cjs/mcp/stdio-client.d.ts.map +1 -0
  68. package/dist/cjs/mcp/stdio-client.js +95 -0
  69. package/dist/cjs/mcp/stdio-client.js.map +1 -0
  70. package/dist/cjs/mcp/types.d.ts.map +1 -0
  71. package/dist/cjs/mcp/types.js +6 -0
  72. package/dist/cjs/mcp/types.js.map +1 -0
  73. package/dist/cjs/memory/checkpoint.d.ts.map +1 -0
  74. package/dist/cjs/memory/checkpoint.js +160 -0
  75. package/dist/cjs/memory/checkpoint.js.map +1 -0
  76. package/dist/cjs/memory/extractor.d.ts.map +1 -0
  77. package/dist/cjs/memory/extractor.js +121 -0
  78. package/dist/cjs/memory/extractor.js.map +1 -0
  79. package/dist/cjs/memory/persona.d.ts.map +1 -0
  80. package/dist/cjs/memory/persona.js +79 -0
  81. package/dist/cjs/memory/persona.js.map +1 -0
  82. package/dist/cjs/memory/pipeline.d.ts.map +1 -0
  83. package/dist/cjs/memory/pipeline.js +148 -0
  84. package/dist/cjs/memory/pipeline.js.map +1 -0
  85. package/dist/cjs/memory/prompts.d.ts.map +1 -0
  86. package/dist/cjs/memory/prompts.js +70 -0
  87. package/dist/cjs/memory/prompts.js.map +1 -0
  88. package/dist/cjs/memory/recall.d.ts.map +1 -0
  89. package/dist/cjs/memory/recall.js +164 -0
  90. package/dist/cjs/memory/recall.js.map +1 -0
  91. package/dist/cjs/memory/scene.d.ts.map +1 -0
  92. package/dist/cjs/memory/scene.js +101 -0
  93. package/dist/cjs/memory/scene.js.map +1 -0
  94. package/dist/cjs/memory/types.d.ts.map +1 -0
  95. package/dist/cjs/memory/types.js +6 -0
  96. package/dist/cjs/memory/types.js.map +1 -0
  97. package/dist/cjs/middleware/types.d.ts.map +1 -0
  98. package/dist/cjs/middleware/types.js +6 -0
  99. package/dist/cjs/middleware/types.js.map +1 -0
  100. package/dist/cjs/package.json +3 -0
  101. package/dist/cjs/sandbox/types.d.ts.map +1 -0
  102. package/dist/cjs/sandbox/types.js +128 -0
  103. package/dist/cjs/sandbox/types.js.map +1 -0
  104. package/dist/cjs/security/guard.d.ts.map +1 -0
  105. package/dist/cjs/security/guard.js +229 -0
  106. package/dist/cjs/security/guard.js.map +1 -0
  107. package/dist/cjs/security/types.d.ts.map +1 -0
  108. package/dist/cjs/security/types.js +6 -0
  109. package/dist/cjs/security/types.js.map +1 -0
  110. package/dist/cjs/skill/manager.d.ts.map +1 -0
  111. package/dist/cjs/skill/manager.js +413 -0
  112. package/dist/cjs/skill/manager.js.map +1 -0
  113. package/dist/cjs/skill/router.d.ts.map +1 -0
  114. package/dist/cjs/skill/router.js +139 -0
  115. package/dist/cjs/skill/router.js.map +1 -0
  116. package/dist/cjs/skill/types.d.ts.map +1 -0
  117. package/dist/cjs/skill/types.js +6 -0
  118. package/dist/cjs/skill/types.js.map +1 -0
  119. package/dist/cjs/tool/delegate.d.ts.map +1 -0
  120. package/dist/cjs/tool/delegate.js +78 -0
  121. package/dist/cjs/tool/delegate.js.map +1 -0
  122. package/dist/cjs/tool/registry.d.ts.map +1 -0
  123. package/dist/cjs/tool/registry.js +57 -0
  124. package/dist/cjs/tool/registry.js.map +1 -0
  125. package/dist/cjs/tool/types.d.ts.map +1 -0
  126. package/dist/cjs/tool/types.js +6 -0
  127. package/dist/cjs/tool/types.js.map +1 -0
  128. package/dist/cjs/types.d.ts.map +1 -0
  129. package/dist/cjs/types.js +6 -0
  130. package/dist/cjs/types.js.map +1 -0
  131. package/dist/cjs/utils/token-counter.d.ts.map +1 -0
  132. package/dist/cjs/utils/token-counter.js +104 -0
  133. package/dist/cjs/utils/token-counter.js.map +1 -0
  134. package/dist/esm/agent/engine.d.ts +113 -0
  135. package/dist/esm/agent/engine.d.ts.map +1 -0
  136. package/dist/esm/agent/engine.js +762 -0
  137. package/dist/esm/agent/engine.js.map +1 -0
  138. package/dist/esm/agent/history-manager.d.ts +78 -0
  139. package/dist/esm/agent/history-manager.d.ts.map +1 -0
  140. package/dist/esm/agent/history-manager.js +267 -0
  141. package/dist/esm/agent/history-manager.js.map +1 -0
  142. package/dist/esm/agent/llm-caller.d.ts +58 -0
  143. package/dist/esm/agent/llm-caller.d.ts.map +1 -0
  144. package/dist/esm/agent/llm-caller.js +303 -0
  145. package/dist/esm/agent/llm-caller.js.map +1 -0
  146. package/dist/esm/agent/tool-executor.d.ts +95 -0
  147. package/dist/esm/agent/tool-executor.d.ts.map +1 -0
  148. package/dist/esm/agent/tool-executor.js +564 -0
  149. package/dist/esm/agent/tool-executor.js.map +1 -0
  150. package/dist/esm/agent/types.d.ts +128 -0
  151. package/dist/esm/agent/types.d.ts.map +1 -0
  152. package/dist/esm/agent/types.js +5 -0
  153. package/dist/esm/agent/types.js.map +1 -0
  154. package/dist/esm/agent/workflow.d.ts +74 -0
  155. package/dist/esm/agent/workflow.d.ts.map +1 -0
  156. package/dist/esm/agent/workflow.js +248 -0
  157. package/dist/esm/agent/workflow.js.map +1 -0
  158. package/dist/esm/context/collector.d.ts +12 -0
  159. package/dist/esm/context/collector.d.ts.map +1 -0
  160. package/dist/esm/context/collector.js +57 -0
  161. package/dist/esm/context/collector.js.map +1 -0
  162. package/dist/esm/context/manager.d.ts +16 -0
  163. package/dist/esm/context/manager.d.ts.map +1 -0
  164. package/dist/esm/context/manager.js +32 -0
  165. package/dist/esm/context/manager.js.map +1 -0
  166. package/dist/esm/context/types.d.ts +39 -0
  167. package/dist/esm/context/types.d.ts.map +1 -0
  168. package/dist/esm/context/types.js +5 -0
  169. package/dist/esm/context/types.js.map +1 -0
  170. package/dist/esm/hooks/types.d.ts +47 -0
  171. package/dist/esm/hooks/types.d.ts.map +1 -0
  172. package/dist/esm/hooks/types.js +5 -0
  173. package/dist/esm/hooks/types.js.map +1 -0
  174. package/{src/index.ts → dist/esm/index.d.ts} +15 -140
  175. package/dist/esm/index.d.ts.map +1 -0
  176. package/dist/esm/index.js +39 -0
  177. package/dist/esm/index.js.map +1 -0
  178. package/dist/esm/llm/anthropic-provider.d.ts +28 -0
  179. package/dist/esm/llm/anthropic-provider.d.ts.map +1 -0
  180. package/dist/esm/llm/anthropic-provider.js +352 -0
  181. package/dist/esm/llm/anthropic-provider.js.map +1 -0
  182. package/{src/llm/factory.ts → dist/esm/llm/factory.d.ts} +3 -18
  183. package/dist/esm/llm/factory.d.ts.map +1 -0
  184. package/dist/esm/llm/factory.js +30 -0
  185. package/dist/esm/llm/factory.js.map +1 -0
  186. package/dist/esm/llm/ollama-provider.d.ts +13 -0
  187. package/dist/esm/llm/ollama-provider.d.ts.map +1 -0
  188. package/dist/esm/llm/ollama-provider.js +30 -0
  189. package/dist/esm/llm/ollama-provider.js.map +1 -0
  190. package/dist/esm/llm/openai-provider.d.ts +18 -0
  191. package/dist/esm/llm/openai-provider.d.ts.map +1 -0
  192. package/dist/esm/llm/openai-provider.js +182 -0
  193. package/dist/esm/llm/openai-provider.js.map +1 -0
  194. package/{src/llm/provider.ts → dist/esm/llm/provider.d.ts} +1 -9
  195. package/dist/esm/llm/provider.d.ts.map +1 -0
  196. package/dist/esm/llm/provider.js +10 -0
  197. package/dist/esm/llm/provider.js.map +1 -0
  198. package/dist/esm/llm/types.d.ts +78 -0
  199. package/dist/esm/llm/types.d.ts.map +1 -0
  200. package/dist/esm/llm/types.js +5 -0
  201. package/dist/esm/llm/types.js.map +1 -0
  202. package/dist/esm/mcp/base-client.d.ts +50 -0
  203. package/dist/esm/mcp/base-client.d.ts.map +1 -0
  204. package/dist/esm/mcp/base-client.js +108 -0
  205. package/dist/esm/mcp/base-client.js.map +1 -0
  206. package/dist/esm/mcp/client.d.ts +27 -0
  207. package/dist/esm/mcp/client.d.ts.map +1 -0
  208. package/dist/esm/mcp/client.js +70 -0
  209. package/dist/esm/mcp/client.js.map +1 -0
  210. package/dist/esm/mcp/factory.d.ts +16 -0
  211. package/dist/esm/mcp/factory.d.ts.map +1 -0
  212. package/dist/esm/mcp/factory.js +39 -0
  213. package/dist/esm/mcp/factory.js.map +1 -0
  214. package/dist/esm/mcp/http-client.d.ts +24 -0
  215. package/dist/esm/mcp/http-client.d.ts.map +1 -0
  216. package/dist/esm/mcp/http-client.js +138 -0
  217. package/dist/esm/mcp/http-client.js.map +1 -0
  218. package/dist/esm/mcp/proxy-agent.d.ts +49 -0
  219. package/dist/esm/mcp/proxy-agent.d.ts.map +1 -0
  220. package/dist/esm/mcp/proxy-agent.js +187 -0
  221. package/dist/esm/mcp/proxy-agent.js.map +1 -0
  222. package/dist/esm/mcp/stdio-client.d.ts +16 -0
  223. package/dist/esm/mcp/stdio-client.d.ts.map +1 -0
  224. package/dist/esm/mcp/stdio-client.js +91 -0
  225. package/dist/esm/mcp/stdio-client.js.map +1 -0
  226. package/dist/esm/mcp/types.d.ts +60 -0
  227. package/dist/esm/mcp/types.d.ts.map +1 -0
  228. package/dist/esm/mcp/types.js +5 -0
  229. package/dist/esm/mcp/types.js.map +1 -0
  230. package/dist/esm/memory/checkpoint.d.ts +62 -0
  231. package/dist/esm/memory/checkpoint.d.ts.map +1 -0
  232. package/dist/esm/memory/checkpoint.js +121 -0
  233. package/dist/esm/memory/checkpoint.js.map +1 -0
  234. package/dist/esm/memory/extractor.d.ts +59 -0
  235. package/dist/esm/memory/extractor.d.ts.map +1 -0
  236. package/dist/esm/memory/extractor.js +117 -0
  237. package/dist/esm/memory/extractor.js.map +1 -0
  238. package/dist/esm/memory/persona.d.ts +38 -0
  239. package/dist/esm/memory/persona.d.ts.map +1 -0
  240. package/dist/esm/memory/persona.js +75 -0
  241. package/dist/esm/memory/persona.js.map +1 -0
  242. package/dist/esm/memory/pipeline.d.ts +50 -0
  243. package/dist/esm/memory/pipeline.d.ts.map +1 -0
  244. package/dist/esm/memory/pipeline.js +144 -0
  245. package/dist/esm/memory/pipeline.js.map +1 -0
  246. package/dist/esm/memory/prompts.d.ts +9 -0
  247. package/dist/esm/memory/prompts.d.ts.map +1 -0
  248. package/{src/memory/prompts.ts → dist/esm/memory/prompts.js} +6 -13
  249. package/dist/esm/memory/prompts.js.map +1 -0
  250. package/dist/esm/memory/recall.d.ts +66 -0
  251. package/dist/esm/memory/recall.d.ts.map +1 -0
  252. package/dist/esm/memory/recall.js +159 -0
  253. package/dist/esm/memory/recall.js.map +1 -0
  254. package/dist/esm/memory/scene.d.ts +49 -0
  255. package/dist/esm/memory/scene.d.ts.map +1 -0
  256. package/dist/esm/memory/scene.js +97 -0
  257. package/dist/esm/memory/scene.js.map +1 -0
  258. package/dist/esm/memory/types.d.ts +43 -0
  259. package/dist/esm/memory/types.d.ts.map +1 -0
  260. package/dist/esm/memory/types.js +5 -0
  261. package/dist/esm/memory/types.js.map +1 -0
  262. package/dist/esm/middleware/types.d.ts +52 -0
  263. package/dist/esm/middleware/types.d.ts.map +1 -0
  264. package/dist/esm/middleware/types.js +5 -0
  265. package/dist/esm/middleware/types.js.map +1 -0
  266. package/dist/esm/package.json +3 -0
  267. package/dist/esm/sandbox/types.d.ts +59 -0
  268. package/dist/esm/sandbox/types.d.ts.map +1 -0
  269. package/dist/esm/sandbox/types.js +125 -0
  270. package/dist/esm/sandbox/types.js.map +1 -0
  271. package/dist/esm/security/guard.d.ts +41 -0
  272. package/dist/esm/security/guard.d.ts.map +1 -0
  273. package/dist/esm/security/guard.js +225 -0
  274. package/dist/esm/security/guard.js.map +1 -0
  275. package/dist/esm/security/types.d.ts +36 -0
  276. package/dist/esm/security/types.d.ts.map +1 -0
  277. package/dist/esm/security/types.js +5 -0
  278. package/dist/esm/security/types.js.map +1 -0
  279. package/dist/esm/skill/manager.d.ts +95 -0
  280. package/dist/esm/skill/manager.d.ts.map +1 -0
  281. package/dist/esm/skill/manager.js +376 -0
  282. package/dist/esm/skill/manager.js.map +1 -0
  283. package/dist/esm/skill/router.d.ts +26 -0
  284. package/dist/esm/skill/router.d.ts.map +1 -0
  285. package/dist/esm/skill/router.js +135 -0
  286. package/dist/esm/skill/router.js.map +1 -0
  287. package/dist/esm/skill/types.d.ts +55 -0
  288. package/dist/esm/skill/types.d.ts.map +1 -0
  289. package/dist/esm/skill/types.js +5 -0
  290. package/dist/esm/skill/types.js.map +1 -0
  291. package/dist/esm/tool/delegate.d.ts +34 -0
  292. package/dist/esm/tool/delegate.d.ts.map +1 -0
  293. package/dist/esm/tool/delegate.js +75 -0
  294. package/dist/esm/tool/delegate.js.map +1 -0
  295. package/dist/esm/tool/registry.d.ts +24 -0
  296. package/dist/esm/tool/registry.d.ts.map +1 -0
  297. package/dist/esm/tool/registry.js +53 -0
  298. package/dist/esm/tool/registry.js.map +1 -0
  299. package/dist/esm/tool/types.d.ts +101 -0
  300. package/dist/esm/tool/types.d.ts.map +1 -0
  301. package/dist/esm/tool/types.js +5 -0
  302. package/dist/esm/tool/types.js.map +1 -0
  303. package/dist/esm/types.d.ts +150 -0
  304. package/dist/esm/types.d.ts.map +1 -0
  305. package/dist/esm/types.js +5 -0
  306. package/dist/esm/types.js.map +1 -0
  307. package/dist/esm/utils/token-counter.d.ts +22 -0
  308. package/dist/esm/utils/token-counter.d.ts.map +1 -0
  309. package/dist/esm/utils/token-counter.js +99 -0
  310. package/dist/esm/utils/token-counter.js.map +1 -0
  311. package/package.json +16 -10
  312. package/dist/agent/engine.d.ts.map +0 -1
  313. package/dist/agent/history-manager.d.ts.map +0 -1
  314. package/dist/agent/llm-caller.d.ts.map +0 -1
  315. package/dist/agent/tool-executor.d.ts.map +0 -1
  316. package/dist/agent/types.d.ts.map +0 -1
  317. package/dist/agent/workflow.d.ts.map +0 -1
  318. package/dist/context/collector.d.ts.map +0 -1
  319. package/dist/context/manager.d.ts.map +0 -1
  320. package/dist/context/types.d.ts.map +0 -1
  321. package/dist/hooks/types.d.ts.map +0 -1
  322. package/dist/index.d.ts.map +0 -1
  323. package/dist/llm/anthropic-provider.d.ts.map +0 -1
  324. package/dist/llm/factory.d.ts.map +0 -1
  325. package/dist/llm/ollama-provider.d.ts.map +0 -1
  326. package/dist/llm/openai-provider.d.ts.map +0 -1
  327. package/dist/llm/provider.d.ts.map +0 -1
  328. package/dist/llm/types.d.ts.map +0 -1
  329. package/dist/mcp/base-client.d.ts.map +0 -1
  330. package/dist/mcp/client.d.ts.map +0 -1
  331. package/dist/mcp/factory.d.ts.map +0 -1
  332. package/dist/mcp/http-client.d.ts.map +0 -1
  333. package/dist/mcp/proxy-agent.d.ts.map +0 -1
  334. package/dist/mcp/stdio-client.d.ts.map +0 -1
  335. package/dist/mcp/types.d.ts.map +0 -1
  336. package/dist/memory/checkpoint.d.ts.map +0 -1
  337. package/dist/memory/extractor.d.ts.map +0 -1
  338. package/dist/memory/persona.d.ts.map +0 -1
  339. package/dist/memory/pipeline.d.ts.map +0 -1
  340. package/dist/memory/prompts.d.ts.map +0 -1
  341. package/dist/memory/recall.d.ts.map +0 -1
  342. package/dist/memory/scene.d.ts.map +0 -1
  343. package/dist/memory/types.d.ts.map +0 -1
  344. package/dist/middleware/types.d.ts.map +0 -1
  345. package/dist/sandbox/types.d.ts.map +0 -1
  346. package/dist/security/guard.d.ts.map +0 -1
  347. package/dist/security/types.d.ts.map +0 -1
  348. package/dist/skill/manager.d.ts.map +0 -1
  349. package/dist/skill/router.d.ts.map +0 -1
  350. package/dist/skill/types.d.ts.map +0 -1
  351. package/dist/tool/delegate.d.ts.map +0 -1
  352. package/dist/tool/registry.d.ts.map +0 -1
  353. package/dist/tool/types.d.ts.map +0 -1
  354. package/dist/types.d.ts.map +0 -1
  355. package/dist/utils/token-counter.d.ts.map +0 -1
  356. package/src/agent/engine.ts +0 -875
  357. package/src/agent/history-manager.ts +0 -323
  358. package/src/agent/llm-caller.ts +0 -383
  359. package/src/agent/tool-executor.ts +0 -713
  360. package/src/agent/types.ts +0 -136
  361. package/src/agent/workflow.ts +0 -339
  362. package/src/context/collector.ts +0 -59
  363. package/src/context/manager.ts +0 -40
  364. package/src/context/types.ts +0 -51
  365. package/src/hooks/types.ts +0 -77
  366. package/src/llm/anthropic-provider.ts +0 -412
  367. package/src/llm/ollama-provider.ts +0 -39
  368. package/src/llm/openai-provider.ts +0 -200
  369. package/src/llm/types.ts +0 -91
  370. package/src/mcp/base-client.ts +0 -159
  371. package/src/mcp/client.ts +0 -81
  372. package/src/mcp/factory.ts +0 -45
  373. package/src/mcp/http-client.ts +0 -149
  374. package/src/mcp/proxy-agent.ts +0 -227
  375. package/src/mcp/stdio-client.ts +0 -104
  376. package/src/mcp/types.ts +0 -65
  377. package/src/memory/checkpoint.ts +0 -146
  378. package/src/memory/extractor.ts +0 -164
  379. package/src/memory/persona.ts +0 -106
  380. package/src/memory/pipeline.ts +0 -192
  381. package/src/memory/recall.ts +0 -217
  382. package/src/memory/scene.ts +0 -137
  383. package/src/memory/types.ts +0 -54
  384. package/src/middleware/types.ts +0 -62
  385. package/src/sandbox/types.ts +0 -185
  386. package/src/security/guard.ts +0 -249
  387. package/src/security/types.ts +0 -46
  388. package/src/skill/manager.ts +0 -420
  389. package/src/skill/router.ts +0 -158
  390. package/src/skill/types.ts +0 -67
  391. package/src/tool/delegate.ts +0 -105
  392. package/src/tool/registry.ts +0 -64
  393. package/src/tool/types.ts +0 -124
  394. package/src/types.ts +0 -188
  395. package/src/utils/token-counter.ts +0 -108
  396. /package/dist/{agent → cjs/agent}/engine.d.ts +0 -0
  397. /package/dist/{agent → cjs/agent}/history-manager.d.ts +0 -0
  398. /package/dist/{agent → cjs/agent}/llm-caller.d.ts +0 -0
  399. /package/dist/{agent → cjs/agent}/tool-executor.d.ts +0 -0
  400. /package/dist/{agent → cjs/agent}/types.d.ts +0 -0
  401. /package/dist/{agent → cjs/agent}/workflow.d.ts +0 -0
  402. /package/dist/{context → cjs/context}/collector.d.ts +0 -0
  403. /package/dist/{context → cjs/context}/manager.d.ts +0 -0
  404. /package/dist/{context → cjs/context}/types.d.ts +0 -0
  405. /package/dist/{hooks → cjs/hooks}/types.d.ts +0 -0
  406. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  407. /package/dist/{llm → cjs/llm}/anthropic-provider.d.ts +0 -0
  408. /package/dist/{llm → cjs/llm}/factory.d.ts +0 -0
  409. /package/dist/{llm → cjs/llm}/ollama-provider.d.ts +0 -0
  410. /package/dist/{llm → cjs/llm}/openai-provider.d.ts +0 -0
  411. /package/dist/{llm → cjs/llm}/provider.d.ts +0 -0
  412. /package/dist/{llm → cjs/llm}/types.d.ts +0 -0
  413. /package/dist/{mcp → cjs/mcp}/base-client.d.ts +0 -0
  414. /package/dist/{mcp → cjs/mcp}/client.d.ts +0 -0
  415. /package/dist/{mcp → cjs/mcp}/factory.d.ts +0 -0
  416. /package/dist/{mcp → cjs/mcp}/http-client.d.ts +0 -0
  417. /package/dist/{mcp → cjs/mcp}/proxy-agent.d.ts +0 -0
  418. /package/dist/{mcp → cjs/mcp}/stdio-client.d.ts +0 -0
  419. /package/dist/{mcp → cjs/mcp}/types.d.ts +0 -0
  420. /package/dist/{memory → cjs/memory}/checkpoint.d.ts +0 -0
  421. /package/dist/{memory → cjs/memory}/extractor.d.ts +0 -0
  422. /package/dist/{memory → cjs/memory}/persona.d.ts +0 -0
  423. /package/dist/{memory → cjs/memory}/pipeline.d.ts +0 -0
  424. /package/dist/{memory → cjs/memory}/prompts.d.ts +0 -0
  425. /package/dist/{memory → cjs/memory}/recall.d.ts +0 -0
  426. /package/dist/{memory → cjs/memory}/scene.d.ts +0 -0
  427. /package/dist/{memory → cjs/memory}/types.d.ts +0 -0
  428. /package/dist/{middleware → cjs/middleware}/types.d.ts +0 -0
  429. /package/dist/{sandbox → cjs/sandbox}/types.d.ts +0 -0
  430. /package/dist/{security → cjs/security}/guard.d.ts +0 -0
  431. /package/dist/{security → cjs/security}/types.d.ts +0 -0
  432. /package/dist/{skill → cjs/skill}/manager.d.ts +0 -0
  433. /package/dist/{skill → cjs/skill}/router.d.ts +0 -0
  434. /package/dist/{skill → cjs/skill}/types.d.ts +0 -0
  435. /package/dist/{tool → cjs/tool}/delegate.d.ts +0 -0
  436. /package/dist/{tool → cjs/tool}/registry.d.ts +0 -0
  437. /package/dist/{tool → cjs/tool}/types.d.ts +0 -0
  438. /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
  439. /package/dist/{utils → cjs/utils}/token-counter.d.ts +0 -0
@@ -1,200 +0,0 @@
1
- /**
2
- * @file OpenAI 兼容 LLM Provider
3
- * @description 使用原生 fetch 实现,支持任意 OpenAI 兼容端点(OpenAI / DeepSeek / Ollama / vLLM 等)
4
- */
5
-
6
- import type { LLMProvider, ModelConfig, ModelInfo, ChatParams, ChatResponse, ChatChunk } from './types.ts';
7
- import type { Message } from '../types.ts';
8
-
9
- export class OpenAIProvider implements LLMProvider {
10
- protected config: Required<Pick<ModelConfig, 'provider' | 'model'>> & ModelConfig;
11
-
12
- constructor(config: ModelConfig) {
13
- this.config = {
14
- ...config,
15
- provider: config.provider || 'openai',
16
- model: config.model || 'gpt-4',
17
- baseUrl: config.baseUrl || 'https://api.openai.com/v1',
18
- temperature: config.temperature ?? 0.7,
19
- maxTokens: (typeof config.maxTokens === 'number' && config.maxTokens > 0) ? config.maxTokens : 4096,
20
- timeout: config.timeout ?? 120000,
21
- };
22
- }
23
-
24
- getModel(): ModelInfo {
25
- return {
26
- provider: this.config.provider,
27
- model: this.config.model,
28
- contextWindow: 128000,
29
- supportsTools: true,
30
- supportsStreaming: true,
31
- };
32
- }
33
-
34
- async ping(): Promise<boolean> {
35
- try {
36
- const res = await this.doRequest({
37
- model: this.config.model,
38
- messages: [{ role: 'user', content: 'ping' }],
39
- max_tokens: 5,
40
- });
41
- return res.ok;
42
- } catch {
43
- return false;
44
- }
45
- }
46
-
47
- async chat(params: ChatParams): Promise<ChatResponse> {
48
- const body = this.buildRequestBody(params, false);
49
- const res = await this.doRequest(body, params.abortSignal);
50
-
51
- if (!res.ok) {
52
- const errText = await res.text().catch(() => 'Unknown error');
53
- throw new Error(`LLM API error ${res.status}: ${errText}`);
54
- }
55
-
56
- const data = await res.json();
57
- return {
58
- choices: data.choices?.map((c: any) => ({
59
- message: c.message as Message,
60
- finish_reason: c.finish_reason || 'stop',
61
- })) || [],
62
- usage: data.usage
63
- ? {
64
- promptTokens: data.usage.prompt_tokens || 0,
65
- completionTokens: data.usage.completion_tokens || 0,
66
- totalTokens: data.usage.total_tokens || 0,
67
- }
68
- : undefined,
69
- };
70
- }
71
-
72
- async *chatStream(params: ChatParams): AsyncGenerator<ChatChunk> {
73
- const body = this.buildRequestBody(params, true);
74
- const res = await this.doRequest(body, params.abortSignal);
75
-
76
- if (!res.ok) {
77
- const errText = await res.text().catch(() => 'Unknown error');
78
- throw new Error(`LLM API error ${res.status}: ${errText}`);
79
- }
80
-
81
- const reader = res.body?.getReader();
82
- if (!reader) throw new Error('No response body');
83
-
84
- const decoder = new TextDecoder();
85
- let buffer = '';
86
-
87
- try {
88
- while (true) {
89
- const { done, value } = await reader.read();
90
- if (done) break;
91
-
92
- buffer += decoder.decode(value, { stream: true });
93
- const lines = buffer.split('\n');
94
- buffer = lines.pop() || '';
95
-
96
- for (const line of lines) {
97
- const trimmed = line.trim();
98
- if (!trimmed || trimmed === 'data: [DONE]') continue;
99
- if (!trimmed.startsWith('data: ')) continue;
100
-
101
- try {
102
- const json = JSON.parse(trimmed.slice(6));
103
- const delta = json.choices?.[0]?.delta;
104
- const finish = json.choices?.[0]?.finish_reason;
105
-
106
- // 解析 usage(通常在最后一个 chunk 中,stream_options.include_usage=true)
107
- if (json.usage) {
108
- yield {
109
- delta: {},
110
- finish_reason: finish || undefined,
111
- usage: {
112
- promptTokens: json.usage.prompt_tokens || 0,
113
- completionTokens: json.usage.completion_tokens || 0,
114
- totalTokens: json.usage.total_tokens || 0,
115
- },
116
- };
117
- continue;
118
- }
119
-
120
- if (delta || finish) {
121
- yield {
122
- delta: {
123
- content: delta?.content || null,
124
- reasoning_content: delta?.reasoning_content || null,
125
- role: delta?.role,
126
- tool_calls: delta?.tool_calls,
127
- },
128
- finish_reason: finish || undefined,
129
- };
130
- }
131
- } catch {
132
- // skip malformed chunks
133
- }
134
- }
135
- }
136
- } finally {
137
- reader.releaseLock();
138
- }
139
- }
140
-
141
- /** 更新配置(如 API Key 变更后) */
142
- updateConfig(updates: Partial<ModelConfig>): void {
143
- Object.assign(this.config, updates);
144
- }
145
-
146
- // ---- 内部方法 ----
147
-
148
- protected buildRequestBody(params: ChatParams, stream: boolean): Record<string, any> {
149
- const body: Record<string, any> = {
150
- model: this.config.model,
151
- messages: params.messages,
152
- temperature: params.temperature ?? this.config.temperature,
153
- max_tokens: (typeof params.maxTokens === 'number' && params.maxTokens > 0)
154
- ? params.maxTokens
155
- : (typeof this.config.maxTokens === 'number' && this.config.maxTokens > 0)
156
- ? this.config.maxTokens
157
- : 4096,
158
- stream,
159
- };
160
-
161
- if (params.tools?.length) {
162
- body.tools = params.tools;
163
- if (params.toolChoice) body.tool_choice = params.toolChoice;
164
- }
165
-
166
- if (stream) {
167
- body.stream_options = { include_usage: true };
168
- }
169
-
170
- return body;
171
- }
172
-
173
- protected async doRequest(body: Record<string, any>, signal?: AbortSignal): Promise<Response> {
174
- const url = `${this.config.baseUrl!.replace(/\/$/, '')}/chat/completions`;
175
-
176
- const controller = new AbortController();
177
- const timeout = setTimeout(() => controller.abort(), this.config.timeout);
178
-
179
- // 合并外部 signal
180
- if (signal) {
181
- if (signal.aborted) controller.abort();
182
- else signal.addEventListener('abort', () => controller.abort(), { once: true });
183
- }
184
-
185
- try {
186
- return await fetch(url, {
187
- method: 'POST',
188
- headers: {
189
- 'Content-Type': 'application/json',
190
- ...(this.config.apiKey ? { Authorization: `Bearer ${this.config.apiKey}` } : {}),
191
- },
192
- body: JSON.stringify(body),
193
- signal: controller.signal,
194
- ...(this.config.proxy ? { dispatcher: this.config.proxy } : {}),
195
- } as RequestInit);
196
- } finally {
197
- clearTimeout(timeout);
198
- }
199
- }
200
- }
package/src/llm/types.ts DELETED
@@ -1,91 +0,0 @@
1
- // ============================================================
2
- // LLM Provider 类型定义
3
- // ============================================================
4
-
5
- import type { Message, TokenUsage } from '../types.ts';
6
- import type { ToolDefinition } from '../tool/types.ts';
7
- import type { Dispatcher } from 'undici';
8
-
9
- // ---- ModelConfig — 模型配置 ----
10
-
11
- export interface ModelConfig {
12
- /** 供应商标识:'openai' | 'anthropic' | 'azure' | 'ollama' | 自定义 */
13
- provider: string;
14
- /** 模型名称 */
15
- model: string;
16
- /** API Key */
17
- apiKey?: string;
18
- /** API Base URL(自定义端点) */
19
- baseUrl?: string;
20
- /** 温度参数,默认 0.7 */
21
- temperature?: number;
22
- /** 最大输出 token 数 */
23
- maxTokens?: number;
24
- /** 请求超时(毫秒) */
25
- timeout?: number;
26
- /** 供应商特定参数透传 */
27
- extra?: Record<string, unknown>;
28
- /** 网络代理 dispatcher(运行时注入,不持久化) */
29
- proxy?: Dispatcher;
30
- }
31
-
32
- export interface ModelInfo {
33
- provider: string;
34
- model: string;
35
- contextWindow: number;
36
- supportsTools: boolean;
37
- supportsStreaming: boolean;
38
- }
39
-
40
- // ---- ChatParams / ChatResponse ----
41
-
42
- /** LLM 推理请求参数 */
43
- export interface ChatParams {
44
- messages: Message[];
45
- /** 可用工具列表(OpenAI Function Calling 格式) */
46
- tools?: ToolDefinition[];
47
- /** 工具调用策略 */
48
- toolChoice?: 'auto' | 'none' | { type: 'function'; function: { name: string } };
49
- /** 覆盖 ModelConfig 中的 temperature */
50
- temperature?: number;
51
- /** 覆盖 ModelConfig 中的 maxTokens */
52
- maxTokens?: number;
53
- /** 中止信号 */
54
- abortSignal?: AbortSignal;
55
- }
56
-
57
- /** LLM 推理响应 */
58
- export interface ChatResponse {
59
- choices: Array<{
60
- message: Message;
61
- /** 结束原因:'stop' | 'tool_calls' | 'length' | 'content_filter' */
62
- finish_reason: string;
63
- }>;
64
- usage?: TokenUsage;
65
- }
66
-
67
- /** 流式响应片段 */
68
- export interface ChatChunk {
69
- /** 增量内容 */
70
- delta: Partial<Message>;
71
- finish_reason?: string;
72
- /** Token 使用统计(仅最后一个 chunk 可能包含) */
73
- usage?: TokenUsage;
74
- }
75
-
76
- // ---- LLMProvider 接口 ----
77
-
78
- /** LLM 供应商统一接口 */
79
- export interface LLMProvider {
80
- /** 非流式推理 */
81
- chat(params: ChatParams): Promise<ChatResponse>;
82
-
83
- /** 流式推理(返回 AsyncGenerator 逐片段推送) */
84
- chatStream(params: ChatParams): AsyncGenerator<ChatChunk>;
85
-
86
- /** 获取当前模型信息 */
87
- getModel(): ModelInfo;
88
-
89
- /** 测试连接是否正常 */
90
- ping(): Promise<boolean>;
91
- }
@@ -1,159 +0,0 @@
1
- // ============================================================
2
- // MCPClientBase — JSON-RPC 2.0 基础层
3
- // ============================================================
4
-
5
- import type { MCPClient, MCPServerConfig } from './types.ts';
6
- import type { ToolDefinition } from '../tool/types.ts';
7
-
8
- /** JSON-RPC 请求 */
9
- interface JsonRpcRequest {
10
- jsonrpc: '2.0';
11
- id: number;
12
- method: string;
13
- params?: Record<string, unknown>;
14
- }
15
-
16
- /** JSON-RPC 响应 */
17
- interface JsonRpcResponse {
18
- jsonrpc: '2.0';
19
- id: number;
20
- result?: unknown;
21
- error?: { code: number; message: string; data?: unknown };
22
- }
23
-
24
- /**
25
- * MCPClient 抽象基类
26
- * 子类只需实现 send() 和 doConnect() / doDisconnect()
27
- */
28
- export abstract class MCPClientBase implements MCPClient {
29
- protected config!: MCPServerConfig;
30
- protected connected = false;
31
- private requestId = 0;
32
- /** 等待响应的 Promise 队列:id → { resolve, reject, timer } */
33
- private pending = new Map<number, {
34
- resolve: (v: unknown) => void;
35
- reject: (e: Error) => void;
36
- timer: ReturnType<typeof setTimeout>;
37
- }>();
38
-
39
- // ---- 抽象方法(子类实现) ----
40
-
41
- /** 建立物理连接 */
42
- protected abstract doConnect(config: MCPServerConfig): Promise<void>;
43
-
44
- /** 断开物理连接 */
45
- protected abstract doDisconnect(): void;
46
-
47
- /** 发送 JSON-RPC 消息到 MCP 服务端 */
48
- protected abstract send(request: JsonRpcRequest): void;
49
-
50
- // ---- 公共接口 ----
51
-
52
- async connect(config: MCPServerConfig): Promise<void> {
53
- this.config = config;
54
- await this.doConnect(config);
55
- this.connected = true;
56
-
57
- // MCP 协议握手
58
- await this.call('initialize', {
59
- protocolVersion: '2024-11-05',
60
- capabilities: {},
61
- clientInfo: { name: 'work_agent', version: '1.0.0' },
62
- });
63
- // 通知初始化完成
64
- this.notify('notifications/initialized');
65
- }
66
-
67
- async listTools(): Promise<ToolDefinition[]> {
68
- const result = await this.call('tools/list', {}) as { tools?: any[] };
69
- if (!result?.tools) return [];
70
-
71
- return result.tools.map((t: any) => ({
72
- type: 'function' as const,
73
- function: {
74
- name: t.name,
75
- description: t.description || '',
76
- parameters: t.inputSchema || { type: 'object', properties: {} },
77
- },
78
- }));
79
- }
80
-
81
- async callTool(name: string, args: Record<string, unknown>): Promise<string> {
82
- const result = await this.call('tools/call', { name, arguments: args }) as {
83
- content?: Array<{ type: string; text?: string }>;
84
- isError?: boolean;
85
- };
86
-
87
- if (result?.isError) {
88
- const errMsg = result.content?.map(c => c.text || '').join('\n') || 'MCP tool returned error';
89
- throw new Error(errMsg);
90
- }
91
-
92
- // 提取文本结果
93
- return result?.content?.map(c => c.text || JSON.stringify(c)).join('\n') || '';
94
- }
95
-
96
- disconnect(): void {
97
- // 拒绝所有等待中的请求
98
- for (const [id, p] of this.pending) {
99
- clearTimeout(p.timer);
100
- p.reject(new Error('MCP client disconnected'));
101
- }
102
- this.pending.clear();
103
- this.connected = false;
104
- this.doDisconnect();
105
- }
106
-
107
- isConnected(): boolean {
108
- return this.connected;
109
- }
110
-
111
- // ---- JSON-RPC 核心 ----
112
-
113
- /** 发送 JSON-RPC 请求并等待响应 */
114
- protected call(method: string, params?: Record<string, unknown>): Promise<unknown> {
115
- const id = ++this.requestId;
116
- const timeout = this.config.timeout || 30000;
117
-
118
- return new Promise((resolve, reject) => {
119
- const timer = setTimeout(() => {
120
- this.pending.delete(id);
121
- reject(new Error(`MCP call '${method}' timed out after ${timeout}ms`));
122
- }, timeout);
123
-
124
- this.pending.set(id, { resolve, reject, timer });
125
-
126
- try {
127
- this.send({ jsonrpc: '2.0', id, method, params });
128
- } catch (e: any) {
129
- clearTimeout(timer);
130
- this.pending.delete(id);
131
- reject(e);
132
- }
133
- });
134
- }
135
-
136
- /** 发送 JSON-RPC 通知(无 id,无响应) */
137
- protected notify(method: string, params?: Record<string, unknown>): void {
138
- try {
139
- this.send({ jsonrpc: '2.0', id: 0, method, params });
140
- } catch {
141
- // 通知失败静默忽略
142
- }
143
- }
144
-
145
- /** 子类收到 JSON-RPC 响应时调用此方法 */
146
- protected handleResponse(data: JsonRpcResponse): void {
147
- const pending = this.pending.get(data.id);
148
- if (!pending) return;
149
-
150
- this.pending.delete(data.id);
151
- clearTimeout(pending.timer);
152
-
153
- if (data.error) {
154
- pending.reject(new Error(`MCP error ${data.error.code}: ${data.error.message}`));
155
- } else {
156
- pending.resolve(data.result);
157
- }
158
- }
159
- }
package/src/mcp/client.ts DELETED
@@ -1,81 +0,0 @@
1
- // ============================================================
2
- // MCP Client — 工具自动注册辅助函数
3
- // ============================================================
4
-
5
- import type { MCPClient } from './types.ts';
6
- import type { ToolRegistry } from '../tool/registry.ts';
7
-
8
- /** MCP 工具名前缀,用于与 builtin/skill 等工具区分 */
9
- export const MCP_TOOL_PREFIX = 'mcp_';
10
-
11
- /**
12
- * 将名称中的非安全字符替换为下划线,确保可安全用于工具名拼接
13
- */
14
- export function sanitizeForToolName(name: string): string {
15
- return name
16
- .replace(/[^a-zA-Z0-9_]/g, '_') // 非安全字符 → _
17
- .replace(/_+/g, '_') // 合并连续下划线
18
- .replace(/^_|_$/g, ''); // 去除首尾下划线
19
- }
20
-
21
- /**
22
- * 构建带命名空间的 MCP 工具名
23
- *
24
- * - 连接器工具:`mcp_{connectorId}_{serverName}_{toolName}`
25
- * - 独立工具:`mcp_{serverName}_{toolName}`
26
- *
27
- * 命名空间从根源上解决多 MCP 服务器工具名冲突问题。
28
- */
29
- export function buildMCPToolName(toolName: string, serverName: string, connectorId?: string): string {
30
- const safeTool = sanitizeForToolName(toolName);
31
- const safeServer = sanitizeForToolName(serverName);
32
- if (connectorId) {
33
- const safeConn = sanitizeForToolName(connectorId);
34
- return `${MCP_TOOL_PREFIX}${safeConn}_${safeServer}_${safeTool}`;
35
- }
36
- return `${MCP_TOOL_PREFIX}${safeServer}_${safeTool}`;
37
- }
38
-
39
- /**
40
- * 将 MCP 服务的远程工具批量注册到 ToolRegistry
41
- *
42
- * 工具名自动添加命名空间前缀 `mcp_[{connectorId}_]{serverName}_{toolName}`,
43
- * 避免多 MCP 服务器间工具名冲突。调用 MCP 服务时使用原始名字。
44
- *
45
- * @param connectorId 连接器 ID(公有 MCP 服务器传 undefined,连接器私有传连接器 ID)
46
- */
47
- export async function registerMCPTools(
48
- registry: ToolRegistry,
49
- mcpClient: MCPClient,
50
- serverName: string,
51
- connectorId?: string,
52
- serverId?: number | string,
53
- ): Promise<void> {
54
- const remoteTools = await mcpClient.listTools();
55
- console.log(`[MCP] registerMCPTools for '${serverName}' (connector=${connectorId || 'none'}): ${remoteTools.length} tools — ${remoteTools.map(t => t.function.name).join(', ')}`);
56
- for (const def of remoteTools) {
57
- const originalName = def.function.name;
58
- const prefixedName = buildMCPToolName(originalName, serverName, connectorId);
59
- registry.register({
60
- definition: {
61
- ...def,
62
- function: { ...def.function, name: prefixedName },
63
- },
64
- executor: async (args) => {
65
- console.log(`[MCP] executor '${prefixedName}' called (server=${serverName})`);
66
- console.log(` → args: ${JSON.stringify(args)}`);
67
- try {
68
- const result = await mcpClient.callTool(originalName, args);
69
- console.log(` ← result (${result.length} chars): ${result.substring(0, 200)}${result.length > 200 ? '...' : ''}`);
70
- return result;
71
- } catch (e: any) {
72
- console.error(` ✗ executor '${prefixedName}' failed: ${e?.message || e}`);
73
- throw e;
74
- }
75
- },
76
- category: 'mcp',
77
- concurrent: true, // MCP 工具默认可并发(纯网络请求)
78
- metadata: { mcpServer: serverName, serverId, originalName, connectorId },
79
- });
80
- }
81
- }
@@ -1,45 +0,0 @@
1
- // ============================================================
2
- // MCPClient Factory — 根据 transport 类型创建对应 Client
3
- // 支持上层应用通过 registerTransport 注册自定义 transport
4
- // ============================================================
5
-
6
- import type { MCPClient, MCPServerConfig } from './types.ts';
7
- import { StdioMCPClient } from './stdio-client.ts';
8
- import { HttpMCPClient } from './http-client.ts';
9
-
10
- /** 自定义 transport 工厂函数签名 */
11
- export type TransportFactory = () => MCPClient;
12
-
13
- /** 已注册的自定义 transport 工厂映射 */
14
- const customTransports = new Map<string, TransportFactory>();
15
-
16
- /**
17
- * 注册自定义 transport 工厂
18
- * 上层应用通过此方法扩展 core 层不内置的 transport 类型(如 api-bridge)
19
- */
20
- export function registerTransport(transport: string, factory: TransportFactory): void {
21
- customTransports.set(transport, factory);
22
- console.log(`[MCP Factory] registered custom transport: ${transport}`);
23
- }
24
-
25
- /**
26
- * 根据 MCPServerConfig.transport 创建对应的 MCPClient 实例
27
- *
28
- * 内置支持:stdio / http / sse
29
- * 自定义 transport:通过 registerTransport 注册后支持
30
- */
31
- export function createMCPClient(config: MCPServerConfig): MCPClient {
32
- switch (config.transport) {
33
- case 'stdio':
34
- return new StdioMCPClient();
35
- case 'http':
36
- case 'sse':
37
- case 'streamableHttp':
38
- return new HttpMCPClient();
39
- default: {
40
- const factory = customTransports.get(config.transport);
41
- if (factory) return factory();
42
- throw new Error(`Unsupported MCP transport: ${config.transport}`);
43
- }
44
- }
45
- }