kagent-ts 0.1.3 → 0.1.5

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 (349) hide show
  1. package/LICENSE +68 -21
  2. package/README.md +27 -371
  3. package/dist/compression/progressive-compressor.d.ts +66 -0
  4. package/dist/compression/progressive-compressor.d.ts.map +1 -0
  5. package/dist/compression/progressive-compressor.js +367 -0
  6. package/dist/compression/progressive-compressor.js.map +1 -0
  7. package/dist/compression/types.d.ts +1 -5
  8. package/dist/compression/types.d.ts.map +1 -1
  9. package/dist/context/context-manager.d.ts +34 -15
  10. package/dist/context/context-manager.d.ts.map +1 -1
  11. package/dist/context/context-manager.js +78 -28
  12. package/dist/context/context-manager.js.map +1 -1
  13. package/dist/context/types.d.ts +20 -4
  14. package/dist/context/types.d.ts.map +1 -1
  15. package/dist/core/agent.d.ts +407 -35
  16. package/dist/core/agent.d.ts.map +1 -1
  17. package/dist/core/agent.js +685 -70
  18. package/dist/core/agent.js.map +1 -1
  19. package/dist/core/fusion-agent.d.ts +207 -0
  20. package/dist/core/fusion-agent.d.ts.map +1 -0
  21. package/dist/core/fusion-agent.js +769 -0
  22. package/dist/core/fusion-agent.js.map +1 -0
  23. package/dist/core/hooks.d.ts +19 -7
  24. package/dist/core/hooks.d.ts.map +1 -1
  25. package/dist/core/plan-solve-agent.d.ts +1 -15
  26. package/dist/core/plan-solve-agent.d.ts.map +1 -1
  27. package/dist/core/plan-solve-agent.js +144 -117
  28. package/dist/core/plan-solve-agent.js.map +1 -1
  29. package/dist/core/react-agent.d.ts +0 -13
  30. package/dist/core/react-agent.d.ts.map +1 -1
  31. package/dist/core/react-agent.js +128 -101
  32. package/dist/core/react-agent.js.map +1 -1
  33. package/dist/core/response-schema.d.ts +65 -0
  34. package/dist/core/response-schema.d.ts.map +1 -1
  35. package/dist/core/response-schema.js +174 -1
  36. package/dist/core/response-schema.js.map +1 -1
  37. package/dist/core/system-prompts.d.ts +27 -0
  38. package/dist/core/system-prompts.d.ts.map +1 -0
  39. package/dist/core/system-prompts.js +112 -0
  40. package/dist/core/system-prompts.js.map +1 -0
  41. package/dist/eval/benchmark.d.ts +81 -0
  42. package/dist/eval/benchmark.d.ts.map +1 -0
  43. package/dist/eval/benchmark.js +292 -0
  44. package/dist/eval/benchmark.js.map +1 -0
  45. package/dist/eval/eval-runner.d.ts +79 -0
  46. package/dist/eval/eval-runner.d.ts.map +1 -0
  47. package/dist/eval/eval-runner.js +252 -0
  48. package/dist/eval/eval-runner.js.map +1 -0
  49. package/dist/eval/index.d.ts +7 -0
  50. package/dist/eval/index.d.ts.map +1 -0
  51. package/dist/eval/index.js +13 -0
  52. package/dist/eval/index.js.map +1 -0
  53. package/dist/eval/tool-call-evaluator.d.ts +72 -0
  54. package/dist/eval/tool-call-evaluator.d.ts.map +1 -0
  55. package/dist/eval/tool-call-evaluator.js +265 -0
  56. package/dist/eval/tool-call-evaluator.js.map +1 -0
  57. package/dist/eval/types.d.ts +219 -0
  58. package/dist/eval/types.d.ts.map +1 -0
  59. package/dist/eval/types.js +3 -0
  60. package/dist/eval/types.js.map +1 -0
  61. package/dist/index.d.ts +61 -14
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +121 -8
  64. package/dist/index.js.map +1 -1
  65. package/dist/llm/anthropic-provider.d.ts +141 -0
  66. package/dist/llm/anthropic-provider.d.ts.map +1 -0
  67. package/dist/llm/anthropic-provider.js +486 -0
  68. package/dist/llm/anthropic-provider.js.map +1 -0
  69. package/dist/llm/errors.d.ts +26 -0
  70. package/dist/llm/errors.d.ts.map +1 -0
  71. package/dist/llm/errors.js +19 -0
  72. package/dist/llm/errors.js.map +1 -0
  73. package/dist/llm/factory.d.ts +73 -0
  74. package/dist/llm/factory.d.ts.map +1 -0
  75. package/dist/llm/factory.js +77 -0
  76. package/dist/llm/factory.js.map +1 -0
  77. package/dist/llm/fallback-provider.d.ts +47 -0
  78. package/dist/llm/fallback-provider.d.ts.map +1 -0
  79. package/dist/llm/fallback-provider.js +91 -0
  80. package/dist/llm/fallback-provider.js.map +1 -0
  81. package/dist/llm/interface.d.ts +54 -11
  82. package/dist/llm/interface.d.ts.map +1 -1
  83. package/dist/llm/interface.js +34 -0
  84. package/dist/llm/interface.js.map +1 -1
  85. package/dist/llm/model-router.d.ts +126 -0
  86. package/dist/llm/model-router.d.ts.map +1 -0
  87. package/dist/llm/model-router.js +178 -0
  88. package/dist/llm/model-router.js.map +1 -0
  89. package/dist/llm/openai-provider.d.ts +8 -32
  90. package/dist/llm/openai-provider.d.ts.map +1 -1
  91. package/dist/llm/openai-provider.js +27 -60
  92. package/dist/llm/openai-provider.js.map +1 -1
  93. package/dist/llm/rate-limiter.d.ts +41 -0
  94. package/dist/llm/rate-limiter.d.ts.map +1 -0
  95. package/dist/llm/rate-limiter.js +93 -0
  96. package/dist/llm/rate-limiter.js.map +1 -0
  97. package/dist/llm/retry.d.ts +26 -0
  98. package/dist/llm/retry.d.ts.map +1 -0
  99. package/dist/llm/retry.js +44 -0
  100. package/dist/llm/retry.js.map +1 -0
  101. package/dist/llm/token-budget.d.ts +97 -0
  102. package/dist/llm/token-budget.d.ts.map +1 -0
  103. package/dist/llm/token-budget.js +115 -0
  104. package/dist/llm/token-budget.js.map +1 -0
  105. package/dist/logging/index.d.ts +2 -0
  106. package/dist/logging/index.d.ts.map +1 -0
  107. package/dist/logging/index.js +7 -0
  108. package/dist/logging/index.js.map +1 -0
  109. package/dist/logging/logger.d.ts +38 -0
  110. package/dist/logging/logger.d.ts.map +1 -0
  111. package/dist/logging/logger.js +34 -0
  112. package/dist/logging/logger.js.map +1 -0
  113. package/dist/mcp/index.d.ts +4 -0
  114. package/dist/mcp/index.d.ts.map +1 -0
  115. package/dist/mcp/index.js +8 -0
  116. package/dist/mcp/index.js.map +1 -0
  117. package/dist/mcp/mcp-client-manager.d.ts +72 -0
  118. package/dist/mcp/mcp-client-manager.d.ts.map +1 -0
  119. package/dist/mcp/mcp-client-manager.js +235 -0
  120. package/dist/mcp/mcp-client-manager.js.map +1 -0
  121. package/dist/mcp/mcp-types.d.ts +58 -0
  122. package/dist/mcp/mcp-types.d.ts.map +1 -0
  123. package/dist/mcp/mcp-types.js +20 -0
  124. package/dist/mcp/mcp-types.js.map +1 -0
  125. package/dist/memory/index.d.ts +3 -0
  126. package/dist/memory/index.d.ts.map +1 -0
  127. package/dist/memory/index.js +6 -0
  128. package/dist/memory/index.js.map +1 -0
  129. package/dist/memory/memory-manager.d.ts +119 -0
  130. package/dist/memory/memory-manager.d.ts.map +1 -0
  131. package/dist/memory/memory-manager.js +334 -0
  132. package/dist/memory/memory-manager.js.map +1 -0
  133. package/dist/messages/types.d.ts +2 -0
  134. package/dist/messages/types.d.ts.map +1 -1
  135. package/dist/orchestrator/index.d.ts +5 -0
  136. package/dist/orchestrator/index.d.ts.map +1 -0
  137. package/dist/orchestrator/index.js +13 -0
  138. package/dist/orchestrator/index.js.map +1 -0
  139. package/dist/orchestrator/json-extractor.d.ts +18 -0
  140. package/dist/orchestrator/json-extractor.d.ts.map +1 -0
  141. package/dist/orchestrator/json-extractor.js +111 -0
  142. package/dist/orchestrator/json-extractor.js.map +1 -0
  143. package/dist/orchestrator/orchestrator-agent.d.ts +152 -0
  144. package/dist/orchestrator/orchestrator-agent.d.ts.map +1 -0
  145. package/dist/orchestrator/orchestrator-agent.js +675 -0
  146. package/dist/orchestrator/orchestrator-agent.js.map +1 -0
  147. package/dist/orchestrator/orchestrator-response.d.ts +40 -0
  148. package/dist/orchestrator/orchestrator-response.d.ts.map +1 -0
  149. package/dist/orchestrator/orchestrator-response.js +275 -0
  150. package/dist/orchestrator/orchestrator-response.js.map +1 -0
  151. package/dist/orchestrator/orchestrator-types.d.ts +116 -0
  152. package/dist/orchestrator/orchestrator-types.d.ts.map +1 -0
  153. package/dist/orchestrator/orchestrator-types.js +3 -0
  154. package/dist/orchestrator/orchestrator-types.js.map +1 -0
  155. package/dist/preferences/preference-manager.d.ts +8 -3
  156. package/dist/preferences/preference-manager.d.ts.map +1 -1
  157. package/dist/preferences/preference-manager.js +17 -4
  158. package/dist/preferences/preference-manager.js.map +1 -1
  159. package/dist/rag/chroma-store.d.ts +52 -0
  160. package/dist/rag/chroma-store.d.ts.map +1 -0
  161. package/dist/rag/chroma-store.js +110 -0
  162. package/dist/rag/chroma-store.js.map +1 -0
  163. package/dist/rag/document-loader.d.ts +21 -0
  164. package/dist/rag/document-loader.d.ts.map +1 -0
  165. package/dist/rag/document-loader.js +129 -0
  166. package/dist/rag/document-loader.js.map +1 -0
  167. package/dist/rag/embedding-provider.d.ts +36 -0
  168. package/dist/rag/embedding-provider.d.ts.map +1 -0
  169. package/dist/rag/embedding-provider.js +74 -0
  170. package/dist/rag/embedding-provider.js.map +1 -0
  171. package/dist/rag/index.d.ts +17 -0
  172. package/dist/rag/index.d.ts.map +1 -0
  173. package/dist/rag/index.js +27 -0
  174. package/dist/rag/index.js.map +1 -0
  175. package/dist/rag/keyword-index.d.ts +53 -0
  176. package/dist/rag/keyword-index.d.ts.map +1 -0
  177. package/dist/rag/keyword-index.js +161 -0
  178. package/dist/rag/keyword-index.js.map +1 -0
  179. package/dist/rag/llm-reranker.d.ts +36 -0
  180. package/dist/rag/llm-reranker.d.ts.map +1 -0
  181. package/dist/rag/llm-reranker.js +95 -0
  182. package/dist/rag/llm-reranker.js.map +1 -0
  183. package/dist/rag/rag-manager.d.ts +54 -0
  184. package/dist/rag/rag-manager.d.ts.map +1 -0
  185. package/dist/rag/rag-manager.js +179 -0
  186. package/dist/rag/rag-manager.js.map +1 -0
  187. package/dist/rag/rag-types.d.ts +143 -0
  188. package/dist/rag/rag-types.d.ts.map +1 -0
  189. package/dist/rag/rag-types.js +9 -0
  190. package/dist/rag/rag-types.js.map +1 -0
  191. package/dist/rag/rrf.d.ts +47 -0
  192. package/dist/rag/rrf.d.ts.map +1 -0
  193. package/dist/rag/rrf.js +70 -0
  194. package/dist/rag/rrf.js.map +1 -0
  195. package/dist/rag/search-knowledge.d.ts +24 -0
  196. package/dist/rag/search-knowledge.d.ts.map +1 -0
  197. package/dist/rag/search-knowledge.js +86 -0
  198. package/dist/rag/search-knowledge.js.map +1 -0
  199. package/dist/rag/text-splitter.d.ts +25 -0
  200. package/dist/rag/text-splitter.d.ts.map +1 -0
  201. package/dist/rag/text-splitter.js +136 -0
  202. package/dist/rag/text-splitter.js.map +1 -0
  203. package/dist/rag/vector-store.d.ts +34 -0
  204. package/dist/rag/vector-store.d.ts.map +1 -0
  205. package/dist/rag/vector-store.js +73 -0
  206. package/dist/rag/vector-store.js.map +1 -0
  207. package/dist/reflection/error-notebook.d.ts +125 -0
  208. package/dist/reflection/error-notebook.d.ts.map +1 -0
  209. package/dist/reflection/error-notebook.js +368 -0
  210. package/dist/reflection/error-notebook.js.map +1 -0
  211. package/dist/reflection/index.d.ts +8 -0
  212. package/dist/reflection/index.d.ts.map +1 -0
  213. package/dist/reflection/index.js +12 -0
  214. package/dist/reflection/index.js.map +1 -0
  215. package/dist/reflection/memory-reflector.d.ts +97 -0
  216. package/dist/reflection/memory-reflector.d.ts.map +1 -0
  217. package/dist/reflection/memory-reflector.js +215 -0
  218. package/dist/reflection/memory-reflector.js.map +1 -0
  219. package/dist/reflection/reflection-agent.d.ts +105 -0
  220. package/dist/reflection/reflection-agent.d.ts.map +1 -0
  221. package/dist/reflection/reflection-agent.js +234 -0
  222. package/dist/reflection/reflection-agent.js.map +1 -0
  223. package/dist/reflection/reflection-hook.d.ts +50 -0
  224. package/dist/reflection/reflection-hook.d.ts.map +1 -0
  225. package/dist/reflection/reflection-hook.js +108 -0
  226. package/dist/reflection/reflection-hook.js.map +1 -0
  227. package/dist/rules/project-rules.d.ts +47 -0
  228. package/dist/rules/project-rules.d.ts.map +1 -0
  229. package/dist/rules/project-rules.js +166 -0
  230. package/dist/rules/project-rules.js.map +1 -0
  231. package/dist/security/boundaries.d.ts +81 -0
  232. package/dist/security/boundaries.d.ts.map +1 -0
  233. package/dist/security/boundaries.js +158 -0
  234. package/dist/security/boundaries.js.map +1 -0
  235. package/dist/security/index.d.ts +2 -0
  236. package/dist/security/index.d.ts.map +1 -0
  237. package/dist/security/index.js +11 -0
  238. package/dist/security/index.js.map +1 -0
  239. package/dist/session/session-types.d.ts +25 -4
  240. package/dist/session/session-types.d.ts.map +1 -1
  241. package/dist/skills/file-skill-loader.d.ts +9 -20
  242. package/dist/skills/file-skill-loader.d.ts.map +1 -1
  243. package/dist/skills/file-skill-loader.js +35 -164
  244. package/dist/skills/file-skill-loader.js.map +1 -1
  245. package/dist/skills/index.d.ts +1 -1
  246. package/dist/skills/index.d.ts.map +1 -1
  247. package/dist/skills/index.js +1 -2
  248. package/dist/skills/index.js.map +1 -1
  249. package/dist/skills/skill-manager.d.ts +22 -29
  250. package/dist/skills/skill-manager.d.ts.map +1 -1
  251. package/dist/skills/skill-manager.js +63 -85
  252. package/dist/skills/skill-manager.js.map +1 -1
  253. package/dist/skills/types.d.ts +4 -16
  254. package/dist/skills/types.d.ts.map +1 -1
  255. package/dist/subagent/index.d.ts +4 -0
  256. package/dist/subagent/index.d.ts.map +1 -0
  257. package/dist/subagent/index.js +8 -0
  258. package/dist/subagent/index.js.map +1 -0
  259. package/dist/subagent/subagent-loader.d.ts +53 -0
  260. package/dist/subagent/subagent-loader.d.ts.map +1 -0
  261. package/dist/subagent/subagent-loader.js +155 -0
  262. package/dist/subagent/subagent-loader.js.map +1 -0
  263. package/dist/subagent/subagent-manager.d.ts +161 -0
  264. package/dist/subagent/subagent-manager.d.ts.map +1 -0
  265. package/dist/subagent/subagent-manager.js +468 -0
  266. package/dist/subagent/subagent-manager.js.map +1 -0
  267. package/dist/subagent/subagent-types.d.ts +77 -0
  268. package/dist/subagent/subagent-types.d.ts.map +1 -0
  269. package/dist/subagent/subagent-types.js +3 -0
  270. package/dist/subagent/subagent-types.js.map +1 -0
  271. package/dist/tools/builtin/bash.d.ts +3 -0
  272. package/dist/tools/builtin/bash.d.ts.map +1 -0
  273. package/dist/tools/builtin/bash.js +87 -0
  274. package/dist/tools/builtin/bash.js.map +1 -0
  275. package/dist/tools/builtin/edit-file.d.ts.map +1 -1
  276. package/dist/tools/builtin/edit-file.js +1 -0
  277. package/dist/tools/builtin/edit-file.js.map +1 -1
  278. package/dist/tools/builtin/index.d.ts +14 -0
  279. package/dist/tools/builtin/index.d.ts.map +1 -1
  280. package/dist/tools/builtin/index.js +45 -1
  281. package/dist/tools/builtin/index.js.map +1 -1
  282. package/dist/tools/builtin/list-errors.d.ts +7 -0
  283. package/dist/tools/builtin/list-errors.d.ts.map +1 -0
  284. package/dist/tools/builtin/list-errors.js +64 -0
  285. package/dist/tools/builtin/list-errors.js.map +1 -0
  286. package/dist/tools/builtin/list-subagents.d.ts +7 -0
  287. package/dist/tools/builtin/list-subagents.d.ts.map +1 -0
  288. package/dist/tools/builtin/list-subagents.js +21 -0
  289. package/dist/tools/builtin/list-subagents.js.map +1 -0
  290. package/dist/tools/builtin/recall.d.ts +11 -0
  291. package/dist/tools/builtin/recall.d.ts.map +1 -0
  292. package/dist/tools/builtin/recall.js +60 -0
  293. package/dist/tools/builtin/recall.js.map +1 -0
  294. package/dist/tools/builtin/remember.d.ts +12 -0
  295. package/dist/tools/builtin/remember.d.ts.map +1 -0
  296. package/dist/tools/builtin/remember.js +72 -0
  297. package/dist/tools/builtin/remember.js.map +1 -0
  298. package/dist/tools/builtin/skill.d.ts +14 -0
  299. package/dist/tools/builtin/skill.d.ts.map +1 -0
  300. package/dist/tools/builtin/skill.js +71 -0
  301. package/dist/tools/builtin/skill.js.map +1 -0
  302. package/dist/tools/builtin/spawn-subagent.d.ts +7 -0
  303. package/dist/tools/builtin/spawn-subagent.d.ts.map +1 -0
  304. package/dist/tools/builtin/spawn-subagent.js +43 -0
  305. package/dist/tools/builtin/spawn-subagent.js.map +1 -0
  306. package/dist/tools/builtin/web-fetch.d.ts +3 -0
  307. package/dist/tools/builtin/web-fetch.d.ts.map +1 -0
  308. package/dist/tools/builtin/web-fetch.js +101 -0
  309. package/dist/tools/builtin/web-fetch.js.map +1 -0
  310. package/dist/tools/builtin/write-file.d.ts.map +1 -1
  311. package/dist/tools/builtin/write-file.js +1 -0
  312. package/dist/tools/builtin/write-file.js.map +1 -1
  313. package/dist/tools/circuit-breaker.d.ts +19 -10
  314. package/dist/tools/circuit-breaker.d.ts.map +1 -1
  315. package/dist/tools/circuit-breaker.js +22 -11
  316. package/dist/tools/circuit-breaker.js.map +1 -1
  317. package/dist/tools/error-tracker.d.ts +28 -44
  318. package/dist/tools/error-tracker.d.ts.map +1 -1
  319. package/dist/tools/error-tracker.js +39 -156
  320. package/dist/tools/error-tracker.js.map +1 -1
  321. package/dist/tools/tool-filter.d.ts +70 -0
  322. package/dist/tools/tool-filter.d.ts.map +1 -0
  323. package/dist/tools/tool-filter.js +92 -0
  324. package/dist/tools/tool-filter.js.map +1 -0
  325. package/dist/tools/tool-output-truncator.d.ts +36 -0
  326. package/dist/tools/tool-output-truncator.d.ts.map +1 -0
  327. package/dist/tools/tool-output-truncator.js +117 -0
  328. package/dist/tools/tool-output-truncator.js.map +1 -0
  329. package/dist/tools/tool-registry.d.ts +25 -9
  330. package/dist/tools/tool-registry.d.ts.map +1 -1
  331. package/dist/tools/tool-registry.js +77 -28
  332. package/dist/tools/tool-registry.js.map +1 -1
  333. package/dist/tools/tool-validator.d.ts +13 -0
  334. package/dist/tools/tool-validator.d.ts.map +1 -0
  335. package/dist/tools/tool-validator.js +116 -0
  336. package/dist/tools/tool-validator.js.map +1 -0
  337. package/dist/tools/types.d.ts +86 -3
  338. package/dist/tools/types.d.ts.map +1 -1
  339. package/dist/tools/types.js +51 -2
  340. package/dist/tools/types.js.map +1 -1
  341. package/dist/trace/trace-logger.d.ts +30 -4
  342. package/dist/trace/trace-logger.d.ts.map +1 -1
  343. package/dist/trace/trace-logger.js +83 -7
  344. package/dist/trace/trace-logger.js.map +1 -1
  345. package/package.json +14 -4
  346. package/dist/compression/sliding-window.d.ts +0 -21
  347. package/dist/compression/sliding-window.d.ts.map +0 -1
  348. package/dist/compression/sliding-window.js +0 -44
  349. package/dist/compression/sliding-window.js.map +0 -1
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.McpClientManager = void 0;
4
+ const mcp_types_1 = require("./mcp-types");
5
+ const logger_1 = require("../logging/logger");
6
+ const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
7
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/client/stdio.js");
8
+ const sse_js_1 = require("@modelcontextprotocol/sdk/client/sse.js");
9
+ // ─── Config resolver ────────────────────────────────────────────────────────
10
+ function resolveTransportConfig(config) {
11
+ if (config.command && config.url) {
12
+ throw new mcp_types_1.McpConnectionError("MCP server config must specify either 'command' (stdio) or 'url' (SSE), not both.");
13
+ }
14
+ if (config.command) {
15
+ return { type: "stdio", command: config.command, args: config.args, env: config.env };
16
+ }
17
+ if (config.url) {
18
+ return { type: "sse", url: config.url };
19
+ }
20
+ throw new mcp_types_1.McpConnectionError("MCP server config must specify either 'command' (stdio) or 'url' (SSE).");
21
+ }
22
+ /**
23
+ * Manages connections to MCP (Model Context Protocol) servers.
24
+ *
25
+ * Lifecycle:
26
+ * 1. `connectToServer()` / `connectAll()` — connect, discover tools,
27
+ * register adapted tools in ToolRegistry
28
+ * 2. Tools execute via the adapted `Tool` wrapper (delegates to MCP client)
29
+ * 3. `disconnect()` / `disconnectAll()` — unregister tools, close connections
30
+ */
31
+ class McpClientManager {
32
+ /** Active connections keyed by server name. */
33
+ connections = new Map();
34
+ /** The ToolRegistry where adapted tools are registered. */
35
+ toolRegistry;
36
+ logger;
37
+ constructor(toolRegistry, logger) {
38
+ this.toolRegistry = toolRegistry;
39
+ this.logger = logger ?? new logger_1.ConsoleLogger();
40
+ }
41
+ // ─── Connection Management ────────────────────────────────────────────────
42
+ /**
43
+ * Connect to a single MCP server, discover its tools, and register them
44
+ * in the ToolRegistry with a `{serverName}_` prefix.
45
+ *
46
+ * Idempotent — if the server is already connected, this is a no-op.
47
+ *
48
+ * @throws McpConnectionError if the config is invalid or the
49
+ * connection/tool-discovery fails (only for new connections).
50
+ */
51
+ async connectToServer(serverName, config) {
52
+ if (this.connections.has(serverName)) {
53
+ return; // Already connected — idempotent
54
+ }
55
+ const transportConfig = resolveTransportConfig(config);
56
+ // Build transport
57
+ let transport;
58
+ if (transportConfig.type === "stdio") {
59
+ transport = new stdio_js_1.StdioClientTransport({
60
+ command: transportConfig.command,
61
+ args: transportConfig.args,
62
+ env: transportConfig.env,
63
+ });
64
+ }
65
+ else {
66
+ transport = new sse_js_1.SSEClientTransport(new URL(transportConfig.url));
67
+ }
68
+ // Create client and connect
69
+ const client = new index_js_1.Client({ name: "kagent-ts", version: "0.1.3" }, { capabilities: {} });
70
+ try {
71
+ await client.connect(transport);
72
+ }
73
+ catch (err) {
74
+ throw new mcp_types_1.McpConnectionError(`Failed to connect to MCP server "${serverName}": ${err instanceof Error ? err.message : String(err)}`);
75
+ }
76
+ // Discover tools
77
+ let mcpToolDescriptors;
78
+ try {
79
+ const result = await client.listTools();
80
+ mcpToolDescriptors = result.tools;
81
+ }
82
+ catch (err) {
83
+ await client.close().catch(() => { });
84
+ throw new mcp_types_1.McpConnectionError(`Failed to list tools from MCP server "${serverName}": ${err instanceof Error ? err.message : String(err)}`);
85
+ }
86
+ // Adapt and register tools
87
+ const adaptedTools = [];
88
+ for (const mcpTool of mcpToolDescriptors) {
89
+ const adapted = this.adaptTool(serverName, mcpTool, client);
90
+ if (this.toolRegistry.has(adapted.name)) {
91
+ this.logger.warn("MCP", `Tool "${adapted.name}" is already registered. ` +
92
+ `Skipping MCP tool "${serverName}/${mcpTool.name}".`);
93
+ continue;
94
+ }
95
+ adaptedTools.push(adapted);
96
+ }
97
+ if (adaptedTools.length === 0) {
98
+ this.logger.warn("MCP", `Server "${serverName}" exposed no usable tools.`);
99
+ }
100
+ else {
101
+ this.toolRegistry.registerMany(adaptedTools);
102
+ this.logger.info("MCP", `Registered ${adaptedTools.length} tool(s) from server "${serverName}".`);
103
+ }
104
+ this.connections.set(serverName, { serverName, client, tools: adaptedTools });
105
+ }
106
+ /**
107
+ * Connect to multiple MCP servers. Failures for individual servers are
108
+ * collected and logged; other servers still connect.
109
+ *
110
+ * @returns An array of connection error reports (empty if all succeeded).
111
+ */
112
+ async connectAll(servers) {
113
+ const errors = [];
114
+ await Promise.allSettled(Object.entries(servers).map(async ([name, config]) => {
115
+ try {
116
+ await this.connectToServer(name, config);
117
+ }
118
+ catch (err) {
119
+ const message = err instanceof Error ? err.message : String(err);
120
+ errors.push({ serverName: name, error: message });
121
+ this.logger.error("MCP", `Failed to connect to server "${name}": ${message}`);
122
+ }
123
+ }));
124
+ return errors;
125
+ }
126
+ /**
127
+ * Disconnect from a single server and unregister its tools.
128
+ */
129
+ async disconnect(serverName) {
130
+ const conn = this.connections.get(serverName);
131
+ if (!conn)
132
+ return;
133
+ // Unregister tools
134
+ for (const tool of conn.tools) {
135
+ this.toolRegistry.remove(tool.name);
136
+ }
137
+ // Close the client
138
+ try {
139
+ await conn.client.close();
140
+ }
141
+ catch (err) {
142
+ this.logger.warn("MCP", `Error while closing connection to "${serverName}": ${err instanceof Error ? err.message : String(err)}`);
143
+ }
144
+ this.connections.delete(serverName);
145
+ this.logger.info("MCP", `Disconnected from server "${serverName}".`);
146
+ }
147
+ /**
148
+ * Disconnect from all MCP servers and unregister all MCP-provided tools.
149
+ */
150
+ async disconnectAll() {
151
+ const names = Array.from(this.connections.keys());
152
+ await Promise.allSettled(names.map((name) => this.disconnect(name)));
153
+ }
154
+ // ─── Queries ──────────────────────────────────────────────────────────────
155
+ /**
156
+ * Check if a specific server is currently connected.
157
+ */
158
+ hasServer(serverName) {
159
+ return this.connections.has(serverName);
160
+ }
161
+ /**
162
+ * Get connection status for all servers.
163
+ */
164
+ getStatus() {
165
+ return Array.from(this.connections.entries()).map(([name, conn]) => ({
166
+ serverName: name,
167
+ connected: true,
168
+ toolCount: conn.tools.length,
169
+ }));
170
+ }
171
+ /**
172
+ * Whether at least one server is connected.
173
+ */
174
+ get isConnected() {
175
+ return this.connections.size > 0;
176
+ }
177
+ /**
178
+ * Get the number of connected servers.
179
+ */
180
+ get connectedCount() {
181
+ return this.connections.size;
182
+ }
183
+ // ─── Tool Adapter ─────────────────────────────────────────────────────────
184
+ /**
185
+ * Adapt an MCP SDK tool descriptor into the framework's Tool interface.
186
+ *
187
+ * The adapted tool's name is `{serverName}_{mcpToolName}` to avoid
188
+ * collisions between servers and with locally-registered tools.
189
+ *
190
+ * The `execute` function closes over the client instance and handles
191
+ * result content parsing (extracting text from MCP's Content[] array).
192
+ */
193
+ adaptTool(serverName, mcpTool, client) {
194
+ const prefixedName = `${serverName}_${mcpTool.name}`;
195
+ return {
196
+ name: prefixedName,
197
+ description: mcpTool.description ?? "",
198
+ parameters: (mcpTool.inputSchema ?? { type: "object", properties: {} }),
199
+ execute: async (args) => {
200
+ // Check connection is still alive
201
+ if (!this.connections.has(serverName)) {
202
+ return `Error: MCP server "${serverName}" is no longer connected. Tool "${prefixedName}" is unavailable.`;
203
+ }
204
+ try {
205
+ const result = await client.callTool({
206
+ name: mcpTool.name,
207
+ arguments: args,
208
+ });
209
+ // MCP results carry an array of content items (text, image, etc.)
210
+ let output = "(MCP tool returned no content)";
211
+ if (result.content && Array.isArray(result.content)) {
212
+ const textParts = result.content
213
+ .map((c) => (c.text ? c.text : JSON.stringify(c)))
214
+ .filter(Boolean);
215
+ if (textParts.length > 0) {
216
+ output = textParts.join("\n");
217
+ }
218
+ }
219
+ // Prefix with "Error:" so the framework's circuit-breaker /
220
+ // retry-guidance path handles it correctly.
221
+ if (result.isError) {
222
+ return `Error: ${output}`;
223
+ }
224
+ return output;
225
+ }
226
+ catch (err) {
227
+ const message = err instanceof Error ? err.message : String(err);
228
+ return `Error executing MCP tool "${serverName}/${mcpTool.name}": ${message}`;
229
+ }
230
+ },
231
+ };
232
+ }
233
+ }
234
+ exports.McpClientManager = McpClientManager;
235
+ //# sourceMappingURL=mcp-client-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client-manager.js","sourceRoot":"","sources":["../../src/mcp/mcp-client-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * MCP (Model Context Protocol) type definitions.
3
+ *
4
+ * Users define MCP servers via `McpServerConfig`. The framework
5
+ * connects, discovers tools, adapts them, and registers with ToolRegistry.
6
+ */
7
+ /**
8
+ * Configuration for connecting to an MCP server.
9
+ *
10
+ * Two mutually exclusive modes:
11
+ * - stdio: set `command` (optionally `args` and `env`)
12
+ * - SSE: set `url`
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * // stdio: local filesystem server
17
+ * { command: "npx", args: ["-y", "@modelcontextprotocol/server-filesystem", "."] }
18
+ *
19
+ * // SSE: remote server
20
+ * { url: "http://localhost:3001/sse" }
21
+ * ```
22
+ */
23
+ export interface McpServerConfig {
24
+ /** Command for stdio transport (e.g., "npx", "uvx"). Exclusive with `url`. */
25
+ command?: string;
26
+ /** Arguments passed to the stdio command. */
27
+ args?: string[];
28
+ /** Environment variables injected into the stdio process. */
29
+ env?: Record<string, string>;
30
+ /**
31
+ * URL for SSE transport (e.g., "http://localhost:3000/sse").
32
+ * Exclusive with `command`.
33
+ */
34
+ url?: string;
35
+ }
36
+ /**
37
+ * Snapshot of a single MCP server's connection state.
38
+ */
39
+ export interface McpConnectionStatus {
40
+ serverName: string;
41
+ connected: boolean;
42
+ toolCount: number;
43
+ error?: string;
44
+ }
45
+ /**
46
+ * Report from a failed connection attempt.
47
+ */
48
+ export interface McpConnectionErrorReport {
49
+ serverName: string;
50
+ error: string;
51
+ }
52
+ /**
53
+ * Specialized error for MCP connection/issues.
54
+ */
55
+ export declare class McpConnectionError extends Error {
56
+ constructor(message: string);
57
+ }
58
+ //# sourceMappingURL=mcp-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-types.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ /**
3
+ * MCP (Model Context Protocol) type definitions.
4
+ *
5
+ * Users define MCP servers via `McpServerConfig`. The framework
6
+ * connects, discovers tools, adapts them, and registers with ToolRegistry.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.McpConnectionError = void 0;
10
+ /**
11
+ * Specialized error for MCP connection/issues.
12
+ */
13
+ class McpConnectionError extends Error {
14
+ constructor(message) {
15
+ super(message);
16
+ this.name = "McpConnectionError";
17
+ }
18
+ }
19
+ exports.McpConnectionError = McpConnectionError;
20
+ //# sourceMappingURL=mcp-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-types.js","sourceRoot":"","sources":["../../src/mcp/mcp-types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAkDH;;GAEG;AACH,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AALD,gDAKC"}
@@ -0,0 +1,3 @@
1
+ export { MemoryManager } from "./memory-manager";
2
+ export type { Memory, MemoryType } from "./memory-manager";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemoryManager = void 0;
4
+ var memory_manager_1 = require("./memory-manager");
5
+ Object.defineProperty(exports, "MemoryManager", { enumerable: true, get: function () { return memory_manager_1.MemoryManager; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":";;;AAAA,mDAAiD;AAAxC,+GAAA,aAAa,OAAA"}
@@ -0,0 +1,119 @@
1
+ /** Memory type. */
2
+ export type MemoryType = "rule" | "project";
3
+ /**
4
+ * A single memory entry.
5
+ *
6
+ * **Rule**: a constraint the user set — why they required it, and when it
7
+ * takes effect. Example: "Always use kebab-case for file names."
8
+ *
9
+ * **Project**: a fact or decision about the project — what happened, why
10
+ * (constraint / deadline that drove it), and how the agent should apply it.
11
+ * Example: "We switched from MySQL to PostgreSQL because of JSONB support."
12
+ */
13
+ export interface Memory {
14
+ /** Slug (kebab-case, used as filename). */
15
+ name: string;
16
+ /** One-line summary shown in the index. */
17
+ description: string;
18
+ /** Memory type. */
19
+ type: MemoryType;
20
+ /** Markdown body. For rules: why + when. For projects: fact + why + how to apply. */
21
+ content: string;
22
+ }
23
+ /**
24
+ * Long-term memory manager (index + individual files).
25
+ *
26
+ * Storage layout:
27
+ * ```
28
+ * .memory/
29
+ * MEMORY.md ← index (200 lines + 25 KB dual limit)
30
+ * <name>.md ← individual memory files with frontmatter
31
+ * ```
32
+ *
33
+ * Usage:
34
+ * ```ts
35
+ * const mem = new MemoryManager({ storageDir: ".memory" });
36
+ * mem.add({ name: "use-kebab-case", description: "File naming convention",
37
+ * type: "rule", content: "...why and when..." });
38
+ * // Later: inject into system prompt
39
+ * const hint = mem.buildPromptHint();
40
+ * ```
41
+ */
42
+ export declare class MemoryManager {
43
+ private index;
44
+ private storageDir;
45
+ private indexFile;
46
+ private lastLoadedMtime;
47
+ constructor(storageDir?: string);
48
+ /**
49
+ * Add or update a memory entry.
50
+ *
51
+ * If a memory with the same `name` already exists it is overwritten.
52
+ * When the index exceeds the 200-line / 25 KB limit, the oldest entries
53
+ * are silently removed to make room.
54
+ */
55
+ add(memory: Memory): void;
56
+ /**
57
+ * Remove a memory by name.
58
+ */
59
+ remove(name: string): boolean;
60
+ /**
61
+ * Check if a memory exists by name.
62
+ */
63
+ has(name: string): boolean;
64
+ /**
65
+ * Get a single memory by name (loads full content from disk).
66
+ */
67
+ get(name: string): Memory | null;
68
+ /**
69
+ * Get all memories (loads full content from disk).
70
+ */
71
+ getAll(): Memory[];
72
+ /**
73
+ * Get memories by type.
74
+ */
75
+ getByType(type: MemoryType): Memory[];
76
+ /**
77
+ * Total number of memories.
78
+ */
79
+ get count(): number;
80
+ /**
81
+ * Build a compact system-prompt hint listing memory names + type badges.
82
+ *
83
+ * Full content is loaded on demand via the `recall` tool, keeping the
84
+ * system prompt lean. Each line is ~50 chars so the full index of 200
85
+ * entries stays under ~2500 tokens.
86
+ *
87
+ * The content is LLM-generated (via the `remember` tool), so it is
88
+ * wrapped with {@link wrapUntrusted} boundary markers and scanned for
89
+ * prompt-injection signatures before being returned. This prevents
90
+ * the LLM from accidentally poisoning its own system prompt via
91
+ * memory names.
92
+ */
93
+ buildPromptHint(): string;
94
+ /**
95
+ * Re-read the MEMORY.md index from disk if it was modified since the
96
+ * last load. Returns true when a reload occurred.
97
+ *
98
+ * Individual memory files are NOT reloaded — the index is lightweight,
99
+ * and full memory content is fetched on demand via the `recall` tool.
100
+ */
101
+ reloadIfChanged(): boolean;
102
+ private memoryPath;
103
+ private ensureDir;
104
+ private formatFile;
105
+ private loadFile;
106
+ private parseFile;
107
+ private persistIndex;
108
+ private loadIndex;
109
+ private parseIndex;
110
+ private inferType;
111
+ /**
112
+ * Silently remove the oldest entries until both the line and byte limits
113
+ * are satisfied. Index entries are ordered oldest-first, so we shift from
114
+ * the front until the computed index content fits.
115
+ */
116
+ private pruneIfNeeded;
117
+ private buildIndexContent;
118
+ }
119
+ //# sourceMappingURL=memory-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-manager.d.ts","sourceRoot":"","sources":["../../src/memory/memory-manager.ts"],"names":[],"mappings":"AAUA,mBAAmB;AACnB,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAE5C;;;;;;;;;GASG;AACH,MAAM,WAAW,MAAM;IACrB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,IAAI,EAAE,UAAU,CAAC;IACjB,qFAAqF;IACrF,OAAO,EAAE,MAAM,CAAC;CACjB;AAgBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAa;gBAExB,UAAU,CAAC,EAAE,MAAM;IAS/B;;;;;;OAMG;IACH,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAwBzB;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAa7B;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMhC;;OAEG;IACH,MAAM,IAAI,MAAM,EAAE;IASlB;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,EAAE;IAIrC;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAID;;;;;;;;;;;;OAYG;IACH,eAAe,IAAI,MAAM;IAuBzB;;;;;;OAMG;IACH,eAAe,IAAI,OAAO;IAiB1B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,SAAS;IAuBjB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,SAAS;IAOjB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,iBAAiB;CAO1B"}