@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,149 +0,0 @@
1
- // ============================================================
2
- // HttpMCPClient — HTTP / SSE 传输的 MCP 客户端
3
- // ============================================================
4
-
5
- import { MCPClientBase } from './base-client.ts';
6
- import type { MCPServerConfig } from './types.ts';
7
- import { resolveProxyAgentForCategory } from './proxy-agent.ts';
8
- import type { Dispatcher } from 'undici';
9
-
10
- export class HttpMCPClient extends MCPClientBase {
11
- private endpoint = '';
12
- private sessionId?: string;
13
- private dispatcher?: Dispatcher;
14
- /** 用户自定义请求头(如 Authorization) */
15
- private customHeaders?: Record<string, string>;
16
- /** 结构化鉴权配置 */
17
- private authConfig?: { type: string; value: string; name?: string };
18
-
19
- protected async doConnect(config: MCPServerConfig): Promise<void> {
20
- if (!config.endpoint) {
21
- throw new Error(`${config.transport} transport requires an "endpoint" URL in config`);
22
- }
23
- this.endpoint = config.endpoint;
24
- this.dispatcher = resolveProxyAgentForCategory(config.proxyCategory, 'MCP:HTTP');
25
- this.customHeaders = config.headers;
26
- this.authConfig = config.auth;
27
- }
28
-
29
- protected doDisconnect(): void {
30
- this.endpoint = '';
31
- this.sessionId = undefined;
32
- this.customHeaders = undefined;
33
- this.authConfig = undefined;
34
- if (this.dispatcher && typeof (this.dispatcher as any).close === 'function') {
35
- (this.dispatcher as any).close().catch(() => {});
36
- }
37
- this.dispatcher = undefined;
38
- }
39
-
40
- /** 根据 auth 配置生成鉴权请求头 */
41
- private buildAuthHeaders(): Record<string, string> {
42
- if (!this.authConfig) return {};
43
- const { type, value, name } = this.authConfig;
44
- switch (type) {
45
- case 'bearer':
46
- return { Authorization: `Bearer ${value}` };
47
- case 'basic':
48
- // value 已是 base64(user:pass) 编码
49
- return { Authorization: `Basic ${value}` };
50
- case 'apiKey':
51
- return { [name || 'X-API-Key']: value };
52
- case 'custom':
53
- return { [name || 'X-Custom-Auth']: value };
54
- default:
55
- return {};
56
- }
57
- }
58
-
59
- protected send(request: { jsonrpc: string; id: number; method: string; params?: Record<string, unknown> }): void {
60
- // 通知(id=0)不需要响应,用 fire-and-forget
61
- const isNotification = request.id === 0;
62
-
63
- const headers: Record<string, string> = {
64
- 'Content-Type': 'application/json',
65
- 'Accept': 'application/json, text/event-stream',
66
- };
67
-
68
- // MCP SSE/StreamableHTTP 传输可能返回 session id
69
- if (this.sessionId) {
70
- headers['Mcp-Session-Id'] = this.sessionId;
71
- }
72
-
73
- // 注入结构化鉴权头(优先于自定义 headers,确保鉴权不被覆盖)
74
- Object.assign(headers, this.buildAuthHeaders());
75
-
76
- // 注入用户自定义请求头(最后注入,允许覆盖默认值)
77
- if (this.customHeaders) {
78
- Object.assign(headers, this.customHeaders);
79
- }
80
-
81
- const body = JSON.stringify(request);
82
-
83
- // 使用 fetch(Node 18+ 内置),注入 proxy dispatcher
84
- fetch(this.endpoint, {
85
- method: 'POST',
86
- headers,
87
- body,
88
- signal: isNotification ? AbortSignal.timeout(10000) : undefined,
89
- ...(this.dispatcher ? { dispatcher: this.dispatcher } : {}),
90
- } as RequestInit).then(async (res) => {
91
- if (isNotification) return;
92
-
93
- // 捕获 session id
94
- const sessionId = res.headers.get('mcp-session-id');
95
- if (sessionId) this.sessionId = sessionId;
96
-
97
- // 检查 HTTP 错误状态码
98
- if (!res.ok) {
99
- const errBody = await res.text().catch(() => '');
100
- console.error(`[MCP:HTTP] Server returned ${res.status} ${res.statusText} for id=${request.id}: ${errBody.substring(0, 500)}`);
101
- this.handleResponse({
102
- jsonrpc: '2.0',
103
- id: request.id,
104
- error: { code: -32000, message: `HTTP ${res.status}: ${errBody.substring(0, 200)}` },
105
- });
106
- return;
107
- }
108
-
109
- const contentType = res.headers.get('content-type') || '';
110
-
111
- if (contentType.includes('text/event-stream')) {
112
- // SSE 响应:解析事件流中的 JSON-RPC 响应
113
- const text = await res.text();
114
- this.parseSSE(text);
115
- } else {
116
- // 普通 JSON 响应
117
- const data = await res.json();
118
- this.handleResponse(data);
119
- }
120
- }).catch((err) => {
121
- if (isNotification) return;
122
- // 通知 handleResponse 超时由 pending 的 timer 负责
123
- // 此处仅打日志
124
- if (!isNotification) {
125
- console.debug(`[MCP:HTTP] Request failed for id=${request.id}:`, err.message);
126
- }
127
- });
128
- }
129
-
130
- /** 解析 SSE 文本块中的 JSON-RPC 响应 */
131
- private parseSSE(text: string): void {
132
- // 支持 \r\n 和 \n 行分隔符
133
- const lines = text.replace(/\r\n/g, '\n').split('\n');
134
- for (const line of lines) {
135
- if (line.startsWith('data:')) {
136
- const jsonStr = line.slice(5).trim();
137
- if (!jsonStr) continue;
138
- try {
139
- const data = JSON.parse(jsonStr);
140
- if (data.id !== undefined && data.id !== 0) {
141
- this.handleResponse(data);
142
- }
143
- } catch {
144
- // 非 JSON data 忽略
145
- }
146
- }
147
- }
148
- }
149
- }
@@ -1,227 +0,0 @@
1
- // ============================================================
2
- // Proxy Agent — 通用 HTTP/HTTPS/SOCKS 代理解析工具
3
- // ============================================================
4
-
5
- import { ProxyAgent, type Dispatcher } from 'undici';
6
- import { SocksProxyAgent } from 'socks-proxy-agent';
7
- import { execSync } from 'child_process';
8
-
9
- // ---- 代理模式类型 ----
10
-
11
- /** 代理模式:system=系统代理, custom=自定义, direct=直连 */
12
- export type ProxyMode = 'system' | 'custom' | 'direct';
13
-
14
- /** 单分类代理配置 */
15
- export interface ProxyCategoryConfig {
16
- mode: ProxyMode;
17
- /** mode='custom' 时的代理 URL */
18
- url?: string;
19
- }
20
-
21
- /** 分类代理设置(LLM / MCP / Fetch 各自独立) */
22
- export interface ProxySettings {
23
- llm: ProxyCategoryConfig;
24
- mcp: ProxyCategoryConfig;
25
- fetch: ProxyCategoryConfig;
26
- }
27
-
28
- /** 默认代理设置:全部分类走系统代理 */
29
- export const DEFAULT_PROXY_SETTINGS: ProxySettings = {
30
- llm: { mode: 'system' },
31
- mcp: { mode: 'system' },
32
- fetch: { mode: 'system' },
33
- };
34
-
35
- // ---- macOS 系统代理检测 ----
36
-
37
- /**
38
- * 从 macOS 系统偏好设置读取代理配置
39
- * 通过 scutil --proxy 查询,仅 macOS 平台生效
40
- */
41
- function getMacOSSystemProxy(): string | undefined {
42
- if (process.platform !== 'darwin') return undefined;
43
-
44
- try {
45
- const output = execSync('scutil --proxy', { encoding: 'utf-8', timeout: 3000 });
46
- const parsed: Record<string, string> = {};
47
- // scutil 输出格式: " Key : Value"
48
- for (const line of output.split('\n')) {
49
- const m = line.trim().match(/^(\w+)\s*:\s*(.+)$/);
50
- if (m) parsed[m[1]] = m[2].trim();
51
- }
52
-
53
- // 优先 HTTPS 代理,其次 HTTP 代理,最后 SOCKS 代理
54
- if (parsed['HTTPSEnable'] === '1' && parsed['HTTPSProxy']) {
55
- const port = parsed['HTTPSPort'] || '443';
56
- const url = `http://${parsed['HTTPSProxy']}:${port}`;
57
- console.debug(`[Proxy] macOS system HTTPS proxy detected: ${url}`);
58
- return url;
59
- }
60
- if (parsed['HTTPEnable'] === '1' && parsed['HTTPProxy']) {
61
- const port = parsed['HTTPPort'] || '80';
62
- const url = `http://${parsed['HTTPProxy']}:${port}`;
63
- console.debug(`[Proxy] macOS system HTTP proxy detected: ${url}`);
64
- return url;
65
- }
66
- if (parsed['SOCKSEnable'] === '1' && parsed['SOCKSProxy']) {
67
- const port = parsed['SOCKSPort'] || '1080';
68
- const url = `socks5://${parsed['SOCKSProxy']}:${port}`;
69
- console.debug(`[Proxy] macOS system SOCKS proxy detected: ${url}`);
70
- return url;
71
- }
72
-
73
- return undefined;
74
- } catch {
75
- return undefined;
76
- }
77
- }
78
-
79
- // ---- Windows 系统代理检测 ----
80
-
81
- let _cachedSystemProxy: string | undefined | null = null;
82
-
83
- /**
84
- * 从 Windows 注册表读取系统代理配置
85
- * 仅 Windows 平台生效,其他平台返回 undefined
86
- * 结果缓存,避免重复查询注册表
87
- */
88
- export function getWindowsSystemProxy(): string | undefined {
89
- if (_cachedSystemProxy !== null) return _cachedSystemProxy || undefined;
90
-
91
- if (process.platform !== 'win32') {
92
- _cachedSystemProxy = undefined;
93
- return undefined;
94
- }
95
-
96
- try {
97
- const regPath = 'HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings';
98
- const output = execSync(`reg query "${regPath}" /v ProxyEnable`, { encoding: 'utf-8', timeout: 3000, windowsHide: true });
99
- const enabledMatch = output.match(/ProxyEnable\s+REG_DWORD\s+0x(\d+)/i);
100
- if (!enabledMatch || enabledMatch[1] === '0') {
101
- _cachedSystemProxy = undefined;
102
- return undefined;
103
- }
104
-
105
- const serverOutput = execSync(`reg query "${regPath}" /v ProxyServer`, { encoding: 'utf-8', timeout: 3000, windowsHide: true });
106
- const serverMatch = serverOutput.match(/ProxyServer\s+REG_SZ\s+(.+)/i);
107
- if (!serverMatch) {
108
- _cachedSystemProxy = undefined;
109
- return undefined;
110
- }
111
-
112
- const proxyServer = serverMatch[1].trim();
113
- // Windows 代理可能是 ip:port 格式,需要补全协议
114
- const proxyUrl = proxyServer.includes('://') ? proxyServer : `http://${proxyServer}`;
115
- _cachedSystemProxy = proxyUrl;
116
- console.debug(`[Proxy] Windows system proxy detected: ${proxyUrl}`);
117
- return proxyUrl;
118
- } catch {
119
- _cachedSystemProxy = undefined;
120
- return undefined;
121
- }
122
- }
123
-
124
- /** 清除系统代理缓存(设置变更时可调用) */
125
- export function clearSystemProxyCache(): void {
126
- _cachedSystemProxy = null;
127
- }
128
-
129
- /**
130
- * 获取系统代理 URL
131
- * 优先级:环境变量 HTTPS_PROXY / HTTP_PROXY / ALL_PROXY > macOS scutil > Windows 注册表
132
- */
133
- export function getSystemProxyUrl(): string | undefined {
134
- return process.env.HTTPS_PROXY
135
- || process.env.https_proxy
136
- || process.env.HTTP_PROXY
137
- || process.env.http_proxy
138
- || process.env.ALL_PROXY
139
- || process.env.all_proxy
140
- || getMacOSSystemProxy()
141
- || getWindowsSystemProxy();
142
- }
143
-
144
- // ---- Dispatcher 创建 ----
145
-
146
- /**
147
- * 根据代理 URL 创建对应的 dispatcher
148
- *
149
- * 自动识别协议:
150
- * - `http://proxy:8080` → undici ProxyAgent(HTTP 代理)
151
- * - `https://proxy:8443` → undici ProxyAgent(HTTPS 代理)
152
- * - `socks5://proxy:1080`→ SocksProxyAgent(SOCKS5)
153
- * - `socks4://proxy:1080`→ SocksProxyAgent(SOCKS4)
154
- *
155
- * @returns dispatcher 实例,无代理时返回 undefined
156
- */
157
- function createDispatcherFromUrl(proxyUrl: string, label = 'Proxy'): Dispatcher | undefined {
158
- if (proxyUrl.startsWith('socks')) {
159
- console.debug(`[${label}] using SOCKS proxy: ${proxyUrl}`);
160
- return new SocksProxyAgent(proxyUrl) as unknown as Dispatcher;
161
- }
162
-
163
- console.debug(`[${label}] using HTTP proxy: ${proxyUrl}`);
164
- return new ProxyAgent(proxyUrl);
165
- }
166
-
167
- // ---- 新版分类代理解析 ----
168
-
169
- /**
170
- * 根据分类代理配置创建 dispatcher
171
- *
172
- * - `mode='system'`:自动检测系统代理(环境变量 + Windows 注册表)
173
- * - `mode='custom'`:使用用户指定的代理 URL
174
- * - `mode='direct'`:不走代理,返回 undefined
175
- *
176
- * @param category 分类代理配置
177
- * @param label 日志标签(如 'LLM', 'MCP', 'Fetch')
178
- * @returns dispatcher 实例,无代理时返回 undefined
179
- */
180
- export function resolveProxyAgentForCategory(
181
- category?: ProxyCategoryConfig,
182
- label = 'Proxy',
183
- ): Dispatcher | undefined {
184
- if (!category) return undefined;
185
-
186
- switch (category.mode) {
187
- case 'direct':
188
- console.debug(`[${label}] proxy mode: direct (no proxy)`);
189
- return undefined;
190
-
191
- case 'custom':
192
- if (!category.url) {
193
- console.debug(`[${label}] proxy mode: custom but no URL configured, falling back to direct`);
194
- return undefined;
195
- }
196
- return createDispatcherFromUrl(category.url, label);
197
-
198
- case 'system':
199
- default: {
200
- const systemUrl = getSystemProxyUrl();
201
- if (!systemUrl) {
202
- console.debug(`[${label}] proxy mode: system, no system proxy detected`);
203
- return undefined;
204
- }
205
- return createDispatcherFromUrl(systemUrl, label);
206
- }
207
- }
208
- }
209
-
210
- /**
211
- * 获取分类代理的有效 URL(用于 axios 等不支持 undici Dispatcher 的场景)
212
- *
213
- * @returns 代理 URL 字符串,无代理时返回 undefined
214
- */
215
- export function resolveProxyUrlForCategory(category?: ProxyCategoryConfig): string | undefined {
216
- if (!category) return undefined;
217
-
218
- switch (category.mode) {
219
- case 'direct':
220
- return undefined;
221
- case 'custom':
222
- return category.url || undefined;
223
- case 'system':
224
- default:
225
- return getSystemProxyUrl();
226
- }
227
- }
@@ -1,104 +0,0 @@
1
- // ============================================================
2
- // StdioMCPClient — 通过子进程 stdio 通信的 MCP 客户端
3
- // ============================================================
4
-
5
- import { spawn, type ChildProcess } from 'child_process';
6
- import { MCPClientBase } from './base-client.ts';
7
- import type { MCPServerConfig } from './types.ts';
8
-
9
- export class StdioMCPClient extends MCPClientBase {
10
- private process: ChildProcess | null = null;
11
- private buffer = '';
12
-
13
- protected async doConnect(config: MCPServerConfig): Promise<void> {
14
- if (!config.command) {
15
- throw new Error('stdio transport requires a "command" in config');
16
- }
17
-
18
- return new Promise<void>((resolve, reject) => {
19
- const child = spawn(config.command!, config.args || [], {
20
- env: { ...process.env, ...(config.env || {}) },
21
- stdio: ['pipe', 'pipe', 'pipe'],
22
- });
23
-
24
- this.process = child;
25
-
26
- // 超时检查
27
- const timer = setTimeout(() => {
28
- reject(new Error(`stdio MCP server '${config.name}' failed to start within 10s`));
29
- }, 10000);
30
-
31
- child.on('spawn', () => {
32
- clearTimeout(timer);
33
- resolve();
34
- });
35
-
36
- child.on('error', (err) => {
37
- clearTimeout(timer);
38
- reject(new Error(`Failed to start MCP server '${config.name}': ${err.message}`));
39
- });
40
-
41
- // stdout 接收 JSON-RPC 响应(逐行)
42
- child.stdout?.on('data', (chunk: Buffer) => {
43
- this.buffer += chunk.toString();
44
- this.flushBuffer();
45
- });
46
-
47
- // stderr 用于日志
48
- child.stderr?.on('data', (chunk: Buffer) => {
49
- const msg = chunk.toString().trim();
50
- if (msg) console.debug(`[MCP:${config.name}] ${msg}`);
51
- });
52
-
53
- child.on('exit', (code) => {
54
- if (this.connected) {
55
- console.warn(`[MCP:${config.name}] process exited with code ${code}`);
56
- this.connected = false;
57
- }
58
- });
59
- });
60
- }
61
-
62
- protected doDisconnect(): void {
63
- if (this.process) {
64
- this.process.kill('SIGTERM');
65
- this.process = null;
66
- }
67
- this.buffer = '';
68
- }
69
-
70
- protected send(request: { jsonrpc: string; id: number; method: string; params?: Record<string, unknown> }): void {
71
- if (!this.process?.stdin?.writable) {
72
- throw new Error('MCP stdio process is not writable');
73
- }
74
- // 通知 (id=0) 不发 content-length,用 JSON-RPC notification 格式
75
- if (request.id === 0) {
76
- const msg = JSON.stringify({ jsonrpc: request.jsonrpc, method: request.method, params: request.params });
77
- this.process.stdin.write(msg + '\n');
78
- return;
79
- }
80
- const msg = JSON.stringify(request);
81
- this.process.stdin.write(msg + '\n');
82
- }
83
-
84
- // ---- 内部 ----
85
-
86
- private flushBuffer(): void {
87
- const lines = this.buffer.split('\n');
88
- this.buffer = lines.pop() || ''; // 最后一行可能不完整
89
-
90
- for (const line of lines) {
91
- const trimmed = line.trim();
92
- if (!trimmed) continue;
93
- try {
94
- const data = JSON.parse(trimmed);
95
- // 只处理有 id 的响应(非 notification)
96
- if (data.id !== undefined && data.id !== 0) {
97
- this.handleResponse(data);
98
- }
99
- } catch {
100
- // 非 JSON 行忽略
101
- }
102
- }
103
- }
104
- }
package/src/mcp/types.ts DELETED
@@ -1,65 +0,0 @@
1
- // ============================================================
2
- // MCP Client 类型定义
3
- // ============================================================
4
-
5
- import type { ToolDefinition } from '../tool/types.ts';
6
- import type { ProxyCategoryConfig } from './proxy-agent.ts';
7
-
8
- // ---- MCPServerConfig ----
9
-
10
- export type MCPTransport = 'stdio' | 'http' | 'sse' | 'streamableHttp' | (string & {});
11
-
12
- export interface MCPServerConfig {
13
- name: string;
14
- transport: MCPTransport;
15
- /** stdio 模式:启动命令 */
16
- command?: string;
17
- /** stdio 模式:命令参数 */
18
- args?: string[];
19
- /** stdio 模式:环境变量 */
20
- env?: Record<string, string>;
21
- /** HTTP/SSE/StreamableHTTP 模式:服务端点 */
22
- endpoint?: string;
23
- /** HTTP/SSE/StreamableHTTP 模式:自定义请求头(如 Authorization) */
24
- headers?: Record<string, string>;
25
- /** HTTP/SSE/StreamableHTTP 模式:结构化鉴权配置(bearer/basic/apiKey/custom) */
26
- auth?: { type: 'bearer' | 'basic' | 'apiKey' | 'custom'; value: string; name?: string };
27
- /** 请求超时(毫秒) */
28
- timeout?: number;
29
- /** 自动重连配置 */
30
- autoReconnect?: boolean | { maxRetries?: number; interval?: number };
31
- /**
32
- * 分类代理配置(支持 system / custom / direct 三种模式)
33
- *
34
- * 由上层应用(如 workspace settings)传入对应的 ProxyCategoryConfig,
35
- * 客户端根据 mode 自动创建 dispatcher。
36
- */
37
- proxyCategory?: ProxyCategoryConfig;
38
- /** 扩展配置(自定义 transport 的专属数据统一放在此处) */
39
- extra?: Record<string, unknown>;
40
- }
41
-
42
- // ---- MCPClient 接口 ----
43
-
44
- export interface MCPClient {
45
- /** 连接 MCP 服务 */
46
- connect(config: MCPServerConfig): Promise<void>;
47
-
48
- /** 发现远程工具列表 */
49
- listTools(): Promise<ToolDefinition[]>;
50
-
51
- /** 调用远程工具 */
52
- callTool(name: string, args: Record<string, unknown>): Promise<string>;
53
-
54
- /** 发现远程资源列表(可选能力) */
55
- listResources?(): Promise<Array<{ uri: string; name: string; description?: string }>>;
56
-
57
- /** 读取远程资源(可选能力) */
58
- readResource?(uri: string): Promise<string>;
59
-
60
- /** 断开连接 */
61
- disconnect(): void;
62
-
63
- /** 连接状态 */
64
- isConnected(): boolean;
65
- }
@@ -1,146 +0,0 @@
1
- // ============================================================
2
- // MemoryCheckpoint — 记忆管道检查点
3
- // ============================================================
4
- // 记录管道调度器的执行状态,避免重复处理:
5
- // - 上次 L2 聚合时的 L1 条目数
6
- // - 上次 L3 生成时的 L2 条目数
7
- // - 最后执行时间
8
-
9
- import * as fs from 'fs';
10
- import * as path from 'path';
11
-
12
- /** 检查点数据 */
13
- export interface CheckpointData {
14
- /** 上次 L2 聚合时的 L1 条目总数 */
15
- lastL1Count: number;
16
- /** 上次 L3 生成时的 L2 条目总数 */
17
- lastL2Count: number;
18
- /** 最后执行时间(ISO 字符串) */
19
- lastRunAt: string;
20
- /** 累计执行次数 */
21
- runCount: number;
22
- }
23
-
24
- const DEFAULT_CHECKPOINT: CheckpointData = {
25
- lastL1Count: 0,
26
- lastL2Count: 0,
27
- lastRunAt: '',
28
- runCount: 0,
29
- };
30
-
31
- /** 默认检查点文件路径(基于 process.cwd()) */
32
- const DEFAULT_CHECKPOINT_PATH = 'data/memories/checkpoint.json';
33
-
34
- /**
35
- * 记忆管道检查点
36
- *
37
- * 用于管道调度器判断是否需要触发 L2/L3:
38
- * - 当 L1 增量(当前 - lastL1Count)达到阈值时触发 L2
39
- * - 当 L2 增量(当前 - lastL2Count)达到阈值时触发 L3
40
- */
41
- export class MemoryCheckpoint {
42
- private filePath: string;
43
- private data: CheckpointData;
44
-
45
- /**
46
- * @param filePath 检查点文件路径,默认为 {cwd}/data/memories/checkpoint.json
47
- */
48
- constructor(filePath?: string) {
49
- this.filePath = filePath ?? path.join(process.cwd(), DEFAULT_CHECKPOINT_PATH);
50
- this.data = this.load();
51
- }
52
-
53
- /** 获取当前检查点数据 */
54
- get(): CheckpointData {
55
- return { ...this.data };
56
- }
57
-
58
- /**
59
- * 判断是否应触发 L2 聚合
60
- * @param currentL1Count 当前 L1 条目总数
61
- * @param threshold L2 触发阈值
62
- */
63
- shouldTriggerL2(currentL1Count: number, threshold: number): boolean {
64
- return (currentL1Count - this.data.lastL1Count) >= threshold;
65
- }
66
-
67
- /**
68
- * 判断是否应触发 L3 画像更新
69
- * @param currentL2Count 当前 L2 条目总数
70
- * @param threshold L3 触发阈值
71
- */
72
- shouldTriggerL3(currentL2Count: number, threshold: number): boolean {
73
- return (currentL2Count - this.data.lastL2Count) >= threshold;
74
- }
75
-
76
- /**
77
- * 更新检查点(L2 聚合完成后调用)
78
- */
79
- updateL2(currentL1Count: number): void {
80
- this.data.lastL1Count = currentL1Count;
81
- this.data.lastRunAt = new Date().toISOString();
82
- this.data.runCount++;
83
- this.persist();
84
- }
85
-
86
- /**
87
- * 更新检查点(L3 画像完成后调用)
88
- */
89
- updateL3(currentL2Count: number): void {
90
- this.data.lastL2Count = currentL2Count;
91
- this.data.lastRunAt = new Date().toISOString();
92
- this.persist();
93
- }
94
-
95
- /**
96
- * 重置检查点(用于手动触发全量重建)
97
- */
98
- reset(): void {
99
- this.data = { ...DEFAULT_CHECKPOINT };
100
- this.persist();
101
- }
102
-
103
- private load(): CheckpointData {
104
- try {
105
- if (fs.existsSync(this.filePath)) {
106
- const raw = fs.readFileSync(this.filePath, 'utf-8');
107
- const data = JSON.parse(raw) as CheckpointData;
108
- return { ...DEFAULT_CHECKPOINT, ...data };
109
- }
110
- } catch (err) {
111
- console.warn('[MemoryCheckpoint] Failed to load:', err);
112
- }
113
- return { ...DEFAULT_CHECKPOINT };
114
- }
115
-
116
- private persist(): void {
117
- try {
118
- const dir = path.dirname(this.filePath);
119
- if (!fs.existsSync(dir)) {
120
- fs.mkdirSync(dir, { recursive: true });
121
- }
122
- fs.writeFileSync(this.filePath, JSON.stringify(this.data, null, 2), 'utf-8');
123
- } catch (err) {
124
- console.warn('[MemoryCheckpoint] Failed to persist:', err);
125
- }
126
- }
127
- }
128
-
129
- /** 全局单例(可配置路径) */
130
- let checkpointInstance: MemoryCheckpoint | null = null;
131
-
132
- /**
133
- * 获取全局检查点实例
134
- * @param filePath 可选,首次调用时指定自定义路径
135
- */
136
- export function getMemoryCheckpoint(filePath?: string): MemoryCheckpoint {
137
- if (!checkpointInstance) {
138
- checkpointInstance = new MemoryCheckpoint(filePath);
139
- }
140
- return checkpointInstance;
141
- }
142
-
143
- /** 重置全局实例(用于测试或路径变更场景) */
144
- export function resetMemoryCheckpoint(): void {
145
- checkpointInstance = null;
146
- }