@dexto/core 1.1.4 → 1.1.6

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 (597) hide show
  1. package/README.md +125 -0
  2. package/dist/agent/DextoAgent.cjs +793 -0
  3. package/dist/agent/DextoAgent.d.cts +473 -0
  4. package/dist/agent/DextoAgent.d.ts +473 -0
  5. package/dist/agent/DextoAgent.js +774 -0
  6. package/dist/agent/agentCard.cjs +44 -0
  7. package/dist/agent/agentCard.d.cts +20 -0
  8. package/dist/agent/agentCard.d.ts +20 -0
  9. package/dist/agent/agentCard.js +20 -0
  10. package/dist/agent/error-codes.cjs +35 -0
  11. package/dist/agent/error-codes.d.cts +14 -0
  12. package/dist/agent/error-codes.d.ts +14 -0
  13. package/dist/agent/error-codes.js +11 -0
  14. package/dist/agent/errors.cjs +84 -0
  15. package/dist/agent/errors.d.cts +40 -0
  16. package/dist/agent/errors.d.ts +40 -0
  17. package/dist/agent/errors.js +60 -0
  18. package/dist/agent/index.cjs +44 -0
  19. package/dist/agent/index.d.cts +60 -0
  20. package/dist/agent/index.d.ts +60 -0
  21. package/dist/agent/index.js +13 -0
  22. package/dist/agent/registry/error-codes.cjs +42 -0
  23. package/dist/agent/registry/error-codes.d.cts +20 -0
  24. package/dist/agent/registry/error-codes.d.ts +20 -0
  25. package/dist/agent/registry/error-codes.js +18 -0
  26. package/dist/agent/registry/errors.cjs +158 -0
  27. package/dist/agent/registry/errors.d.cts +67 -0
  28. package/dist/agent/registry/errors.d.ts +67 -0
  29. package/dist/{chunk-PI6XFMEW.js → agent/registry/errors.js} +43 -50
  30. package/dist/agent/registry/registry.cjs +291 -0
  31. package/dist/agent/registry/registry.d.cts +67 -0
  32. package/dist/agent/registry/registry.d.ts +67 -0
  33. package/dist/agent/registry/registry.js +256 -0
  34. package/dist/agent/registry/types.cjs +41 -0
  35. package/dist/agent/registry/types.d.cts +100 -0
  36. package/dist/agent/registry/types.d.ts +100 -0
  37. package/dist/agent/registry/types.js +16 -0
  38. package/dist/agent/schemas.cjs +113 -0
  39. package/dist/agent/schemas.d.cts +1502 -0
  40. package/dist/agent/schemas.d.ts +1502 -0
  41. package/dist/agent/schemas.js +88 -0
  42. package/dist/agent/state-manager.cjs +214 -0
  43. package/dist/agent/state-manager.d.cts +97 -0
  44. package/dist/agent/state-manager.d.ts +97 -0
  45. package/dist/agent/state-manager.js +190 -0
  46. package/dist/config/agent-resolver.cjs +153 -0
  47. package/dist/config/agent-resolver.d.cts +15 -0
  48. package/dist/config/agent-resolver.d.ts +15 -0
  49. package/dist/config/agent-resolver.js +122 -0
  50. package/dist/config/error-codes.cjs +39 -0
  51. package/dist/config/error-codes.d.cts +17 -0
  52. package/dist/config/error-codes.d.ts +17 -0
  53. package/dist/config/error-codes.js +15 -0
  54. package/dist/config/errors.cjs +126 -0
  55. package/dist/config/errors.d.cts +49 -0
  56. package/dist/config/errors.d.ts +49 -0
  57. package/dist/config/errors.js +102 -0
  58. package/dist/config/index.cjs +26 -0
  59. package/dist/config/index.d.cts +7 -0
  60. package/dist/config/index.d.ts +7 -0
  61. package/dist/config/index.js +3 -0
  62. package/dist/config/loader.cjs +119 -0
  63. package/dist/config/loader.d.cts +19 -0
  64. package/dist/config/loader.d.ts +19 -0
  65. package/dist/config/loader.js +85 -0
  66. package/dist/config/writer.cjs +182 -0
  67. package/dist/config/writer.d.cts +38 -0
  68. package/dist/config/writer.d.ts +38 -0
  69. package/dist/config/writer.js +146 -0
  70. package/dist/context/compression/middle-removal.cjs +95 -0
  71. package/dist/context/compression/middle-removal.d.cts +48 -0
  72. package/dist/context/compression/middle-removal.d.ts +48 -0
  73. package/dist/context/compression/middle-removal.js +71 -0
  74. package/dist/context/compression/oldest-removal.cjs +70 -0
  75. package/dist/context/compression/oldest-removal.d.cts +43 -0
  76. package/dist/context/compression/oldest-removal.d.ts +43 -0
  77. package/dist/context/compression/oldest-removal.js +46 -0
  78. package/dist/context/compression/types.cjs +16 -0
  79. package/dist/context/compression/types.d.cts +21 -0
  80. package/dist/context/compression/types.d.ts +21 -0
  81. package/dist/context/compression/types.js +0 -0
  82. package/dist/context/error-codes.cjs +41 -0
  83. package/dist/context/error-codes.d.cts +19 -0
  84. package/dist/context/error-codes.d.ts +19 -0
  85. package/dist/context/error-codes.js +17 -0
  86. package/dist/context/errors.cjs +146 -0
  87. package/dist/context/errors.d.cts +36 -0
  88. package/dist/context/errors.d.ts +36 -0
  89. package/dist/context/errors.js +122 -0
  90. package/dist/context/index.cjs +24 -0
  91. package/dist/context/index.d.cts +19 -0
  92. package/dist/context/index.d.ts +19 -0
  93. package/dist/context/index.js +2 -0
  94. package/dist/context/manager.cjs +516 -0
  95. package/dist/context/manager.d.cts +254 -0
  96. package/dist/context/manager.d.ts +254 -0
  97. package/dist/context/manager.js +492 -0
  98. package/dist/context/types.cjs +16 -0
  99. package/dist/context/types.d.cts +113 -0
  100. package/dist/context/types.d.ts +113 -0
  101. package/dist/context/types.js +0 -0
  102. package/dist/context/utils.cjs +406 -0
  103. package/dist/context/utils.d.cts +79 -0
  104. package/dist/context/utils.d.ts +79 -0
  105. package/dist/context/utils.js +374 -0
  106. package/dist/errors/DextoBaseError.cjs +36 -0
  107. package/dist/errors/DextoBaseError.d.cts +15 -0
  108. package/dist/errors/DextoBaseError.d.ts +15 -0
  109. package/dist/errors/DextoBaseError.js +12 -0
  110. package/dist/errors/DextoRuntimeError.cjs +50 -0
  111. package/dist/errors/DextoRuntimeError.d.cts +37 -0
  112. package/dist/errors/DextoRuntimeError.d.ts +37 -0
  113. package/dist/errors/DextoRuntimeError.js +26 -0
  114. package/dist/errors/DextoValidationError.cjs +118 -0
  115. package/dist/errors/DextoValidationError.d.cts +65 -0
  116. package/dist/errors/DextoValidationError.d.ts +65 -0
  117. package/dist/{chunk-XFQLRBHE.js → errors/DextoValidationError.js} +4 -32
  118. package/dist/errors/index.cjs +42 -0
  119. package/dist/errors/index.d.cts +18 -0
  120. package/dist/errors/index.d.ts +18 -0
  121. package/dist/errors/index.js +13 -0
  122. package/dist/errors/result-bridge.cjs +38 -0
  123. package/dist/errors/result-bridge.d.cts +39 -0
  124. package/dist/errors/result-bridge.d.ts +39 -0
  125. package/dist/errors/result-bridge.js +14 -0
  126. package/dist/errors/types.cjs +54 -0
  127. package/dist/errors/types.d.cts +62 -0
  128. package/dist/errors/types.d.ts +62 -0
  129. package/dist/errors/types.js +29 -0
  130. package/dist/events/index.cjs +169 -0
  131. package/dist/events/index.d.cts +272 -0
  132. package/dist/events/index.d.ts +272 -0
  133. package/dist/events/index.js +136 -0
  134. package/dist/index.browser.cjs +9 -220
  135. package/dist/index.browser.d.cts +53 -379
  136. package/dist/index.browser.d.ts +53 -379
  137. package/dist/index.browser.js +4 -210
  138. package/dist/index.cjs +31 -15266
  139. package/dist/index.d.cts +89 -6842
  140. package/dist/index.d.ts +89 -6842
  141. package/dist/index.js +14 -9914
  142. package/dist/llm/error-codes.cjs +48 -0
  143. package/dist/llm/error-codes.d.cts +26 -0
  144. package/dist/llm/error-codes.d.ts +26 -0
  145. package/dist/llm/error-codes.js +24 -0
  146. package/dist/llm/errors.cjs +108 -0
  147. package/dist/llm/errors.d.cts +58 -0
  148. package/dist/llm/errors.d.ts +58 -0
  149. package/dist/llm/errors.js +84 -0
  150. package/dist/llm/formatters/anthropic.cjs +246 -0
  151. package/dist/llm/formatters/anthropic.d.cts +45 -0
  152. package/dist/llm/formatters/anthropic.d.ts +45 -0
  153. package/dist/llm/formatters/anthropic.js +227 -0
  154. package/dist/llm/formatters/factory.cjs +51 -0
  155. package/dist/llm/formatters/factory.d.cts +12 -0
  156. package/dist/llm/formatters/factory.d.ts +12 -0
  157. package/dist/llm/formatters/factory.js +27 -0
  158. package/dist/llm/formatters/openai.cjs +167 -0
  159. package/dist/llm/formatters/openai.d.cts +38 -0
  160. package/dist/llm/formatters/openai.d.ts +38 -0
  161. package/dist/llm/formatters/openai.js +147 -0
  162. package/dist/llm/formatters/types.cjs +16 -0
  163. package/dist/llm/formatters/types.d.cts +43 -0
  164. package/dist/llm/formatters/types.d.ts +43 -0
  165. package/dist/llm/formatters/types.js +0 -0
  166. package/dist/llm/formatters/vercel.cjs +411 -0
  167. package/dist/llm/formatters/vercel.d.cts +48 -0
  168. package/dist/llm/formatters/vercel.d.ts +48 -0
  169. package/dist/llm/formatters/vercel.js +387 -0
  170. package/dist/llm/index.cjs +34 -0
  171. package/dist/llm/index.d.cts +39 -0
  172. package/dist/llm/index.d.ts +39 -0
  173. package/dist/llm/index.js +7 -0
  174. package/dist/llm/registry.cjs +881 -0
  175. package/dist/llm/registry.d.cts +176 -0
  176. package/dist/llm/registry.d.ts +176 -0
  177. package/dist/{chunk-J6AXCN3H.js → llm/registry.js} +25 -455
  178. package/dist/llm/resolver.cjs +154 -0
  179. package/dist/llm/resolver.d.cts +34 -0
  180. package/dist/llm/resolver.d.ts +34 -0
  181. package/dist/llm/resolver.js +136 -0
  182. package/dist/llm/schemas.cjs +188 -0
  183. package/dist/llm/schemas.d.cts +111 -0
  184. package/dist/llm/schemas.d.ts +111 -0
  185. package/dist/llm/schemas.js +172 -0
  186. package/dist/llm/services/anthropic.cjs +398 -0
  187. package/dist/llm/services/anthropic.d.cts +65 -0
  188. package/dist/llm/services/anthropic.d.ts +65 -0
  189. package/dist/llm/services/anthropic.js +374 -0
  190. package/dist/llm/services/factory.cjs +164 -0
  191. package/dist/llm/services/factory.d.cts +39 -0
  192. package/dist/llm/services/factory.d.ts +39 -0
  193. package/dist/llm/services/factory.js +130 -0
  194. package/dist/llm/services/index.cjs +22 -0
  195. package/dist/llm/services/index.d.cts +21 -0
  196. package/dist/llm/services/index.d.ts +21 -0
  197. package/dist/llm/services/index.js +1 -0
  198. package/dist/llm/services/openai.cjs +470 -0
  199. package/dist/llm/services/openai.d.cts +65 -0
  200. package/dist/llm/services/openai.d.ts +65 -0
  201. package/dist/llm/services/openai.js +446 -0
  202. package/dist/llm/services/test-utils.integration.cjs +169 -0
  203. package/dist/llm/services/test-utils.integration.d.cts +83 -0
  204. package/dist/llm/services/test-utils.integration.d.ts +83 -0
  205. package/dist/llm/services/test-utils.integration.js +142 -0
  206. package/dist/llm/services/types.cjs +16 -0
  207. package/dist/llm/services/types.d.cts +56 -0
  208. package/dist/llm/services/types.d.ts +56 -0
  209. package/dist/llm/services/types.js +0 -0
  210. package/dist/llm/services/vercel.cjs +525 -0
  211. package/dist/llm/services/vercel.d.cts +72 -0
  212. package/dist/llm/services/vercel.d.ts +72 -0
  213. package/dist/llm/services/vercel.js +506 -0
  214. package/dist/llm/tokenizer/anthropic.cjs +43 -0
  215. package/dist/llm/tokenizer/anthropic.d.cts +21 -0
  216. package/dist/llm/tokenizer/anthropic.d.ts +21 -0
  217. package/dist/llm/tokenizer/anthropic.js +19 -0
  218. package/dist/llm/tokenizer/default.cjs +41 -0
  219. package/dist/llm/tokenizer/default.d.cts +16 -0
  220. package/dist/llm/tokenizer/default.d.ts +16 -0
  221. package/dist/llm/tokenizer/default.js +17 -0
  222. package/dist/llm/tokenizer/factory.cjs +44 -0
  223. package/dist/llm/tokenizer/factory.d.cts +12 -0
  224. package/dist/llm/tokenizer/factory.d.ts +12 -0
  225. package/dist/llm/tokenizer/factory.js +20 -0
  226. package/dist/llm/tokenizer/google.cjs +52 -0
  227. package/dist/llm/tokenizer/google.d.cts +31 -0
  228. package/dist/llm/tokenizer/google.d.ts +31 -0
  229. package/dist/llm/tokenizer/google.js +28 -0
  230. package/dist/llm/tokenizer/openai.cjs +108 -0
  231. package/dist/llm/tokenizer/openai.d.cts +32 -0
  232. package/dist/llm/tokenizer/openai.d.ts +32 -0
  233. package/dist/llm/tokenizer/openai.js +83 -0
  234. package/dist/llm/tokenizer/types.cjs +33 -0
  235. package/dist/llm/tokenizer/types.d.cts +19 -0
  236. package/dist/llm/tokenizer/types.d.ts +19 -0
  237. package/dist/llm/tokenizer/types.js +9 -0
  238. package/dist/llm/types.cjs +42 -0
  239. package/dist/llm/types.d.cts +29 -0
  240. package/dist/llm/types.d.ts +29 -0
  241. package/dist/llm/types.js +16 -0
  242. package/dist/llm/validation.cjs +162 -0
  243. package/dist/llm/validation.d.cts +60 -0
  244. package/dist/llm/validation.d.ts +60 -0
  245. package/dist/llm/validation.js +138 -0
  246. package/dist/logger/browser.cjs +86 -0
  247. package/dist/logger/browser.d.cts +29 -0
  248. package/dist/logger/browser.d.ts +29 -0
  249. package/dist/logger/browser.js +61 -0
  250. package/dist/logger/index.cjs +22 -0
  251. package/dist/logger/index.d.cts +1 -0
  252. package/dist/logger/index.d.ts +1 -0
  253. package/dist/logger/index.js +1 -0
  254. package/dist/logger/logger.cjs +362 -0
  255. package/dist/logger/logger.d.cts +52 -0
  256. package/dist/logger/logger.d.ts +52 -0
  257. package/dist/logger/logger.js +327 -0
  258. package/dist/mcp/error-codes.cjs +38 -0
  259. package/dist/mcp/error-codes.d.cts +16 -0
  260. package/dist/mcp/error-codes.d.ts +16 -0
  261. package/dist/mcp/error-codes.js +14 -0
  262. package/dist/mcp/errors.cjs +131 -0
  263. package/dist/mcp/errors.d.cts +72 -0
  264. package/dist/mcp/errors.d.ts +72 -0
  265. package/dist/mcp/errors.js +107 -0
  266. package/dist/mcp/index.cjs +34 -0
  267. package/dist/mcp/index.d.cts +26 -0
  268. package/dist/mcp/index.d.ts +26 -0
  269. package/dist/mcp/index.js +7 -0
  270. package/dist/mcp/manager.cjs +473 -0
  271. package/dist/mcp/manager.d.cts +163 -0
  272. package/dist/mcp/manager.d.ts +163 -0
  273. package/dist/mcp/manager.js +449 -0
  274. package/dist/mcp/mcp-client.cjs +420 -0
  275. package/dist/mcp/mcp-client.d.cts +108 -0
  276. package/dist/mcp/mcp-client.d.ts +108 -0
  277. package/dist/mcp/mcp-client.js +396 -0
  278. package/dist/mcp/resolver.cjs +78 -0
  279. package/dist/mcp/resolver.d.cts +22 -0
  280. package/dist/mcp/resolver.d.ts +22 -0
  281. package/dist/mcp/resolver.js +56 -0
  282. package/dist/mcp/schemas.cjs +82 -0
  283. package/dist/mcp/schemas.d.cts +266 -0
  284. package/dist/mcp/schemas.d.ts +266 -0
  285. package/dist/mcp/schemas.js +54 -0
  286. package/dist/mcp/types.cjs +16 -0
  287. package/dist/mcp/types.d.cts +21 -0
  288. package/dist/mcp/types.d.ts +21 -0
  289. package/dist/mcp/types.js +0 -0
  290. package/dist/preferences/constants.cjs +28 -0
  291. package/dist/preferences/constants.d.cts +3 -0
  292. package/dist/preferences/constants.d.ts +3 -0
  293. package/dist/preferences/constants.js +4 -0
  294. package/dist/preferences/error-codes.cjs +35 -0
  295. package/dist/preferences/error-codes.d.cts +9 -0
  296. package/dist/preferences/error-codes.d.ts +9 -0
  297. package/dist/preferences/error-codes.js +11 -0
  298. package/dist/preferences/errors.cjs +75 -0
  299. package/dist/preferences/errors.d.cts +33 -0
  300. package/dist/preferences/errors.d.ts +33 -0
  301. package/dist/preferences/errors.js +50 -0
  302. package/dist/preferences/index.cjs +55 -0
  303. package/dist/preferences/index.d.cts +21 -0
  304. package/dist/preferences/index.d.ts +21 -0
  305. package/dist/preferences/index.js +31 -0
  306. package/dist/preferences/loader.cjs +136 -0
  307. package/dist/preferences/loader.d.cts +45 -0
  308. package/dist/preferences/loader.d.ts +45 -0
  309. package/dist/preferences/loader.js +107 -0
  310. package/dist/preferences/schemas.cjs +74 -0
  311. package/dist/preferences/schemas.d.cts +104 -0
  312. package/dist/preferences/schemas.d.ts +104 -0
  313. package/dist/preferences/schemas.js +47 -0
  314. package/dist/search/index.cjs +28 -0
  315. package/dist/search/index.d.cts +5 -0
  316. package/dist/search/index.d.ts +5 -0
  317. package/dist/search/index.js +4 -0
  318. package/dist/search/search-service.cjs +245 -0
  319. package/dist/search/search-service.d.cts +47 -0
  320. package/dist/search/search-service.d.ts +47 -0
  321. package/dist/search/search-service.js +221 -0
  322. package/dist/search/types.cjs +16 -0
  323. package/dist/search/types.d.cts +78 -0
  324. package/dist/search/types.d.ts +78 -0
  325. package/dist/search/types.js +0 -0
  326. package/dist/session/chat-session.cjs +354 -0
  327. package/dist/session/chat-session.d.cts +284 -0
  328. package/dist/session/chat-session.d.ts +284 -0
  329. package/dist/session/chat-session.js +333 -0
  330. package/dist/session/error-codes.cjs +35 -0
  331. package/dist/session/error-codes.d.cts +13 -0
  332. package/dist/session/error-codes.d.ts +13 -0
  333. package/dist/session/error-codes.js +11 -0
  334. package/dist/session/errors.cjs +93 -0
  335. package/dist/session/errors.d.cts +58 -0
  336. package/dist/session/errors.d.ts +58 -0
  337. package/dist/session/errors.js +69 -0
  338. package/dist/session/history/database.cjs +95 -0
  339. package/dist/session/history/database.d.cts +28 -0
  340. package/dist/session/history/database.d.ts +28 -0
  341. package/dist/session/history/database.js +71 -0
  342. package/dist/session/history/factory.cjs +31 -0
  343. package/dist/session/history/factory.d.cts +11 -0
  344. package/dist/session/history/factory.d.ts +11 -0
  345. package/dist/session/history/factory.js +7 -0
  346. package/dist/session/history/types.cjs +16 -0
  347. package/dist/session/history/types.d.cts +17 -0
  348. package/dist/session/history/types.d.ts +17 -0
  349. package/dist/session/history/types.js +0 -0
  350. package/dist/session/index.cjs +37 -0
  351. package/dist/session/index.d.cts +53 -0
  352. package/dist/session/index.d.ts +53 -0
  353. package/dist/session/index.js +10 -0
  354. package/dist/session/schemas.cjs +32 -0
  355. package/dist/session/schemas.d.cts +16 -0
  356. package/dist/session/schemas.d.ts +16 -0
  357. package/dist/session/schemas.js +8 -0
  358. package/dist/session/session-manager.cjs +481 -0
  359. package/dist/session/session-manager.d.cts +219 -0
  360. package/dist/session/session-manager.d.ts +219 -0
  361. package/dist/session/session-manager.js +457 -0
  362. package/dist/storage/backend/cache-backend.cjs +16 -0
  363. package/dist/storage/backend/cache-backend.d.cts +15 -0
  364. package/dist/storage/backend/cache-backend.d.ts +15 -0
  365. package/dist/storage/backend/cache-backend.js +0 -0
  366. package/dist/storage/backend/database-backend.cjs +16 -0
  367. package/dist/storage/backend/database-backend.d.cts +19 -0
  368. package/dist/storage/backend/database-backend.d.ts +19 -0
  369. package/dist/storage/backend/database-backend.js +0 -0
  370. package/dist/storage/backend/memory-backend.cjs +140 -0
  371. package/dist/storage/backend/memory-backend.d.cts +34 -0
  372. package/dist/storage/backend/memory-backend.d.ts +34 -0
  373. package/dist/storage/backend/memory-backend.js +116 -0
  374. package/dist/storage/backend/postgres-backend.cjs +231 -0
  375. package/dist/storage/backend/postgres-backend.d.cts +37 -0
  376. package/dist/storage/backend/postgres-backend.d.ts +37 -0
  377. package/dist/{postgres-backend-WMWS7RAT.js → storage/backend/postgres-backend.js} +3 -12
  378. package/dist/storage/backend/redis-backend.cjs +184 -0
  379. package/dist/storage/backend/redis-backend.d.cts +36 -0
  380. package/dist/storage/backend/redis-backend.d.ts +36 -0
  381. package/dist/{redis-backend-BNLN3XHX.js → storage/backend/redis-backend.js} +3 -12
  382. package/dist/storage/backend/sqlite-backend.cjs +271 -0
  383. package/dist/storage/backend/sqlite-backend.d.cts +35 -0
  384. package/dist/storage/backend/sqlite-backend.d.ts +35 -0
  385. package/dist/{sqlite-backend-AR6XNK2Q.js → storage/backend/sqlite-backend.js} +6 -17
  386. package/dist/storage/backend/types.cjs +16 -0
  387. package/dist/storage/backend/types.d.cts +14 -0
  388. package/dist/storage/backend/types.d.ts +14 -0
  389. package/dist/storage/backend/types.js +0 -0
  390. package/dist/storage/error-codes.cjs +36 -0
  391. package/dist/storage/error-codes.d.cts +14 -0
  392. package/dist/storage/error-codes.d.ts +14 -0
  393. package/dist/storage/error-codes.js +12 -0
  394. package/dist/storage/errors.cjs +104 -0
  395. package/dist/storage/errors.d.cts +63 -0
  396. package/dist/storage/errors.d.ts +63 -0
  397. package/dist/{chunk-F2QFAECT.js → storage/errors.js} +23 -30
  398. package/dist/storage/index.cjs +33 -0
  399. package/dist/storage/index.d.cts +7 -0
  400. package/dist/storage/index.d.ts +7 -0
  401. package/dist/storage/index.js +7 -0
  402. package/dist/storage/schemas.cjs +113 -0
  403. package/dist/storage/schemas.d.cts +856 -0
  404. package/dist/storage/schemas.d.ts +856 -0
  405. package/dist/storage/schemas.js +89 -0
  406. package/dist/storage/storage-manager.cjs +208 -0
  407. package/dist/storage/storage-manager.d.cts +52 -0
  408. package/dist/storage/storage-manager.d.ts +52 -0
  409. package/dist/storage/storage-manager.js +173 -0
  410. package/dist/storage/types.cjs +16 -0
  411. package/dist/storage/types.d.cts +5 -0
  412. package/dist/storage/types.d.ts +5 -0
  413. package/dist/storage/types.js +0 -0
  414. package/dist/systemPrompt/contributors.cjs +146 -0
  415. package/dist/systemPrompt/contributors.d.cts +44 -0
  416. package/dist/systemPrompt/contributors.d.ts +44 -0
  417. package/dist/systemPrompt/contributors.js +120 -0
  418. package/dist/systemPrompt/error-codes.cjs +35 -0
  419. package/dist/systemPrompt/error-codes.d.cts +13 -0
  420. package/dist/systemPrompt/error-codes.d.ts +13 -0
  421. package/dist/systemPrompt/error-codes.js +11 -0
  422. package/dist/systemPrompt/errors.cjs +93 -0
  423. package/dist/systemPrompt/errors.d.cts +55 -0
  424. package/dist/systemPrompt/errors.d.ts +55 -0
  425. package/dist/systemPrompt/errors.js +69 -0
  426. package/dist/systemPrompt/in-built-prompts.cjs +68 -0
  427. package/dist/systemPrompt/in-built-prompts.d.cts +28 -0
  428. package/dist/systemPrompt/in-built-prompts.d.ts +28 -0
  429. package/dist/systemPrompt/in-built-prompts.js +42 -0
  430. package/dist/systemPrompt/index.cjs +30 -0
  431. package/dist/systemPrompt/index.d.cts +14 -0
  432. package/dist/systemPrompt/index.d.ts +14 -0
  433. package/dist/systemPrompt/index.js +5 -0
  434. package/dist/systemPrompt/manager.cjs +93 -0
  435. package/dist/systemPrompt/manager.d.cts +31 -0
  436. package/dist/systemPrompt/manager.d.ts +31 -0
  437. package/dist/systemPrompt/manager.js +69 -0
  438. package/dist/systemPrompt/registry.cjs +51 -0
  439. package/dist/systemPrompt/registry.d.cts +20 -0
  440. package/dist/systemPrompt/registry.d.ts +20 -0
  441. package/dist/systemPrompt/registry.js +15 -0
  442. package/dist/systemPrompt/schemas.cjs +107 -0
  443. package/dist/systemPrompt/schemas.d.cts +401 -0
  444. package/dist/systemPrompt/schemas.d.ts +401 -0
  445. package/dist/systemPrompt/schemas.js +81 -0
  446. package/dist/systemPrompt/types.cjs +16 -0
  447. package/dist/systemPrompt/types.d.cts +19 -0
  448. package/dist/systemPrompt/types.d.ts +19 -0
  449. package/dist/systemPrompt/types.js +0 -0
  450. package/dist/tools/confirmation/allowed-tools-provider/factory.cjs +44 -0
  451. package/dist/tools/confirmation/allowed-tools-provider/factory.d.cts +19 -0
  452. package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts +19 -0
  453. package/dist/tools/confirmation/allowed-tools-provider/factory.js +20 -0
  454. package/dist/tools/confirmation/allowed-tools-provider/in-memory.cjs +62 -0
  455. package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.cts +17 -0
  456. package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts +17 -0
  457. package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +38 -0
  458. package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +68 -0
  459. package/dist/tools/confirmation/allowed-tools-provider/storage.d.cts +26 -0
  460. package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts +26 -0
  461. package/dist/tools/confirmation/allowed-tools-provider/storage.js +44 -0
  462. package/dist/tools/confirmation/allowed-tools-provider/types.cjs +16 -0
  463. package/dist/tools/confirmation/allowed-tools-provider/types.d.cts +35 -0
  464. package/dist/tools/confirmation/allowed-tools-provider/types.d.ts +35 -0
  465. package/dist/tools/confirmation/allowed-tools-provider/types.js +0 -0
  466. package/dist/tools/confirmation/event-based-confirmation-provider.cjs +158 -0
  467. package/dist/tools/confirmation/event-based-confirmation-provider.d.cts +41 -0
  468. package/dist/tools/confirmation/event-based-confirmation-provider.d.ts +41 -0
  469. package/dist/tools/confirmation/event-based-confirmation-provider.js +134 -0
  470. package/dist/tools/confirmation/factory.cjs +52 -0
  471. package/dist/tools/confirmation/factory.d.cts +37 -0
  472. package/dist/tools/confirmation/factory.d.ts +37 -0
  473. package/dist/tools/confirmation/factory.js +28 -0
  474. package/dist/tools/confirmation/noop-confirmation-provider.cjs +49 -0
  475. package/dist/tools/confirmation/noop-confirmation-provider.d.cts +22 -0
  476. package/dist/tools/confirmation/noop-confirmation-provider.d.ts +22 -0
  477. package/dist/tools/confirmation/noop-confirmation-provider.js +25 -0
  478. package/dist/tools/confirmation/types.cjs +16 -0
  479. package/dist/tools/confirmation/types.d.cts +46 -0
  480. package/dist/tools/confirmation/types.d.ts +46 -0
  481. package/dist/tools/confirmation/types.js +0 -0
  482. package/dist/tools/error-codes.cjs +40 -0
  483. package/dist/tools/error-codes.d.cts +18 -0
  484. package/dist/tools/error-codes.d.ts +18 -0
  485. package/dist/tools/error-codes.js +16 -0
  486. package/dist/tools/errors.cjs +164 -0
  487. package/dist/tools/errors.d.cts +97 -0
  488. package/dist/tools/errors.d.ts +97 -0
  489. package/dist/tools/errors.js +140 -0
  490. package/dist/tools/index.cjs +37 -0
  491. package/dist/tools/index.d.cts +19 -0
  492. package/dist/tools/index.d.ts +19 -0
  493. package/dist/tools/index.js +8 -0
  494. package/dist/tools/internal-tools/implementations/search-history-tool.cjs +61 -0
  495. package/dist/tools/internal-tools/implementations/search-history-tool.d.cts +15 -0
  496. package/dist/tools/internal-tools/implementations/search-history-tool.d.ts +15 -0
  497. package/dist/tools/internal-tools/implementations/search-history-tool.js +37 -0
  498. package/dist/tools/internal-tools/index.cjs +24 -0
  499. package/dist/tools/internal-tools/index.d.cts +13 -0
  500. package/dist/tools/internal-tools/index.d.ts +13 -0
  501. package/dist/tools/internal-tools/index.js +2 -0
  502. package/dist/tools/internal-tools/provider.cjs +159 -0
  503. package/dist/tools/internal-tools/provider.d.cts +66 -0
  504. package/dist/tools/internal-tools/provider.d.ts +66 -0
  505. package/dist/tools/internal-tools/provider.js +135 -0
  506. package/dist/tools/internal-tools/registry.cjs +43 -0
  507. package/dist/tools/internal-tools/registry.d.cts +45 -0
  508. package/dist/tools/internal-tools/registry.d.ts +45 -0
  509. package/dist/tools/internal-tools/registry.js +17 -0
  510. package/dist/tools/schemas.cjs +45 -0
  511. package/dist/tools/schemas.d.cts +21 -0
  512. package/dist/tools/schemas.d.ts +21 -0
  513. package/dist/tools/schemas.js +20 -0
  514. package/dist/tools/tool-manager.cjs +275 -0
  515. package/dist/tools/tool-manager.d.cts +106 -0
  516. package/dist/tools/tool-manager.d.ts +106 -0
  517. package/dist/tools/tool-manager.js +251 -0
  518. package/dist/tools/types.cjs +16 -0
  519. package/dist/tools/types.d.cts +66 -0
  520. package/dist/tools/types.d.ts +66 -0
  521. package/dist/tools/types.js +0 -0
  522. package/dist/utils/api-key-resolver.cjs +62 -0
  523. package/dist/utils/api-key-resolver.d.cts +23 -0
  524. package/dist/utils/api-key-resolver.d.ts +23 -0
  525. package/dist/utils/api-key-resolver.js +36 -0
  526. package/dist/utils/api-key-store.cjs +56 -0
  527. package/dist/utils/api-key-store.d.cts +26 -0
  528. package/dist/utils/api-key-store.d.ts +26 -0
  529. package/dist/utils/api-key-store.js +30 -0
  530. package/dist/utils/env.cjs +154 -0
  531. package/dist/utils/env.d.cts +29 -0
  532. package/dist/utils/env.d.ts +29 -0
  533. package/dist/utils/env.js +118 -0
  534. package/dist/utils/error-conversion.cjs +53 -0
  535. package/dist/utils/error-conversion.d.cts +13 -0
  536. package/dist/utils/error-conversion.d.ts +13 -0
  537. package/dist/utils/error-conversion.js +29 -0
  538. package/dist/utils/execution-context.cjs +85 -0
  539. package/dist/utils/execution-context.d.cts +21 -0
  540. package/dist/utils/execution-context.d.ts +21 -0
  541. package/dist/utils/execution-context.js +49 -0
  542. package/dist/{chunk-MVKLS3LM.js → utils/fs-walk.cjs} +27 -18
  543. package/dist/utils/fs-walk.d.cts +9 -0
  544. package/dist/utils/fs-walk.d.ts +9 -0
  545. package/dist/utils/fs-walk.js +18 -0
  546. package/dist/utils/index.cjs +44 -0
  547. package/dist/utils/index.d.cts +63 -0
  548. package/dist/utils/index.d.ts +63 -0
  549. package/dist/utils/index.js +12 -0
  550. package/dist/utils/path.cjs +197 -0
  551. package/dist/utils/path.d.cts +54 -0
  552. package/dist/utils/path.d.ts +54 -0
  553. package/dist/utils/path.js +159 -0
  554. package/dist/utils/port-utils.cjs +37 -0
  555. package/dist/utils/port-utils.d.cts +11 -0
  556. package/dist/utils/port-utils.d.ts +11 -0
  557. package/dist/utils/port-utils.js +13 -0
  558. package/dist/utils/port-utils.spec.cjs +26 -0
  559. package/dist/utils/port-utils.spec.d.cts +2 -0
  560. package/dist/utils/port-utils.spec.d.ts +2 -0
  561. package/dist/utils/port-utils.spec.js +25 -0
  562. package/dist/utils/redactor.cjs +105 -0
  563. package/dist/utils/redactor.d.cts +18 -0
  564. package/dist/utils/redactor.d.ts +18 -0
  565. package/dist/utils/redactor.js +81 -0
  566. package/dist/utils/result.cjs +115 -0
  567. package/dist/utils/result.d.cts +180 -0
  568. package/dist/utils/result.d.ts +180 -0
  569. package/dist/utils/result.js +82 -0
  570. package/dist/utils/safe-stringify.cjs +57 -0
  571. package/dist/utils/safe-stringify.d.cts +7 -0
  572. package/dist/utils/safe-stringify.d.ts +7 -0
  573. package/dist/utils/safe-stringify.js +33 -0
  574. package/dist/utils/schema.cjs +42 -0
  575. package/dist/utils/schema.d.cts +6 -0
  576. package/dist/utils/schema.d.ts +6 -0
  577. package/dist/utils/schema.js +18 -0
  578. package/dist/utils/service-initializer.cjs +119 -0
  579. package/dist/utils/service-initializer.d.cts +63 -0
  580. package/dist/utils/service-initializer.d.ts +63 -0
  581. package/dist/utils/service-initializer.js +95 -0
  582. package/dist/utils/user-info.cjs +30 -0
  583. package/dist/utils/user-info.d.cts +3 -0
  584. package/dist/utils/user-info.d.ts +3 -0
  585. package/dist/utils/user-info.js +6 -0
  586. package/dist/utils/zod-schema-converter.cjs +112 -0
  587. package/dist/utils/zod-schema-converter.d.cts +13 -0
  588. package/dist/utils/zod-schema-converter.d.ts +13 -0
  589. package/dist/utils/zod-schema-converter.js +87 -0
  590. package/package.json +2 -2
  591. package/dist/chunk-D62MHQBE.js +0 -2203
  592. package/dist/chunk-FCJVTIBV.js +0 -535
  593. package/dist/chunk-TPERKLLN.js +0 -75
  594. package/dist/errors-ZZ4Z3FKB.js +0 -10
  595. package/dist/loader-HBNEYPQZ.js +0 -20
  596. package/dist/path-TP7WBDED.js +0 -21
  597. package/dist/registry-Z4DFXODW.js +0 -14
@@ -0,0 +1,449 @@
1
+ import { MCPClient } from "./mcp-client.js";
2
+ import { logger } from "../logger/index.js";
3
+ import { MCPError } from "./errors.js";
4
+ class MCPManager {
5
+ clients = /* @__PURE__ */ new Map();
6
+ connectionErrors = {};
7
+ toolToClientMap = /* @__PURE__ */ new Map();
8
+ serverToolsMap = /* @__PURE__ */ new Map();
9
+ toolConflicts = /* @__PURE__ */ new Set();
10
+ promptToClientMap = /* @__PURE__ */ new Map();
11
+ resourceToClientMap = /* @__PURE__ */ new Map();
12
+ sanitizedNameToServerMap = /* @__PURE__ */ new Map();
13
+ // Use a distinctive delimiter that won't appear in normal server/tool names
14
+ // Using double hyphen as it's allowed in LLM tool name patterns (^[a-zA-Z0-9_-]+$)
15
+ static SERVER_DELIMITER = "--";
16
+ constructor() {
17
+ }
18
+ /**
19
+ * Register a client that provides tools (and potentially more)
20
+ * @param name Unique name for the client
21
+ * @param client The client instance, expected to be IMCPClient
22
+ */
23
+ registerClient(name, client) {
24
+ if (this.clients.has(name)) {
25
+ logger.warn(`Client '${name}' already registered. Overwriting.`);
26
+ }
27
+ this.clearClientCache(name);
28
+ const sanitizedName = this.sanitizeServerName(name);
29
+ const existingServerWithSameSanitizedName = this.sanitizedNameToServerMap.get(sanitizedName);
30
+ if (existingServerWithSameSanitizedName && existingServerWithSameSanitizedName !== name) {
31
+ throw MCPError.duplicateName(name, existingServerWithSameSanitizedName);
32
+ }
33
+ this.clients.set(name, client);
34
+ this.sanitizedNameToServerMap.set(sanitizedName, name);
35
+ logger.info(`Registered client: ${name}`);
36
+ delete this.connectionErrors[name];
37
+ }
38
+ clearClientCache(clientName) {
39
+ const client = this.clients.get(clientName);
40
+ if (!client) return;
41
+ const hadServerTools = this.serverToolsMap.has(clientName);
42
+ this.serverToolsMap.delete(clientName);
43
+ const sanitizedName = this.sanitizeServerName(clientName);
44
+ if (this.sanitizedNameToServerMap.get(sanitizedName) === clientName) {
45
+ this.sanitizedNameToServerMap.delete(sanitizedName);
46
+ }
47
+ [this.toolToClientMap, this.promptToClientMap, this.resourceToClientMap].forEach(
48
+ (cacheMap) => {
49
+ for (const [key, mappedClient] of Array.from(cacheMap.entries())) {
50
+ if (mappedClient === client) {
51
+ cacheMap.delete(key);
52
+ }
53
+ }
54
+ }
55
+ );
56
+ if (hadServerTools) {
57
+ this.rebuildToolConflicts();
58
+ }
59
+ logger.debug(`Cleared cache for client: ${clientName}`);
60
+ }
61
+ rebuildToolConflicts() {
62
+ this.toolConflicts.clear();
63
+ const toolCounts = /* @__PURE__ */ new Map();
64
+ for (const serverTools of this.serverToolsMap.values()) {
65
+ for (const toolName of serverTools.keys()) {
66
+ toolCounts.set(toolName, (toolCounts.get(toolName) || 0) + 1);
67
+ }
68
+ }
69
+ for (const [toolName, count] of toolCounts.entries()) {
70
+ if (count > 1) {
71
+ this.toolConflicts.add(toolName);
72
+ this.toolToClientMap.delete(toolName);
73
+ }
74
+ }
75
+ for (const [_, serverTools] of this.serverToolsMap.entries()) {
76
+ for (const [toolName, client] of serverTools.entries()) {
77
+ if (!this.toolConflicts.has(toolName)) {
78
+ this.toolToClientMap.set(toolName, client);
79
+ }
80
+ }
81
+ }
82
+ }
83
+ /**
84
+ * Sanitize server name for use in tool prefixing.
85
+ * Ensures the name is safe for LLM provider tool naming constraints.
86
+ */
87
+ sanitizeServerName(serverName) {
88
+ return serverName.replace(/[^a-zA-Z0-9_-]/g, "_");
89
+ }
90
+ async updateClientCache(clientName, client) {
91
+ const serverTools = /* @__PURE__ */ new Map();
92
+ this.serverToolsMap.set(clientName, serverTools);
93
+ try {
94
+ const tools = await client.getTools();
95
+ logger.debug(
96
+ `\u{1F527} Discovered ${Object.keys(tools).length} tools from server '${clientName}': [${Object.keys(tools).join(", ")}]`
97
+ );
98
+ for (const toolName in tools) {
99
+ serverTools.set(toolName, client);
100
+ const existingClient = this.toolToClientMap.get(toolName);
101
+ if (existingClient && existingClient !== client) {
102
+ this.toolConflicts.add(toolName);
103
+ this.toolToClientMap.delete(toolName);
104
+ logger.warn(
105
+ `\u26A0\uFE0F Tool conflict detected for '${toolName}' - will use server prefix`
106
+ );
107
+ } else if (!this.toolConflicts.has(toolName)) {
108
+ this.toolToClientMap.set(toolName, client);
109
+ logger.debug(`\u2705 Tool '${toolName}' mapped to ${clientName}`);
110
+ }
111
+ }
112
+ logger.debug(
113
+ `\u2705 Successfully cached ${Object.keys(tools).length} tools for client: ${clientName}`
114
+ );
115
+ } catch (error) {
116
+ logger.error(
117
+ `\u274C Error retrieving tools for client ${clientName}: ${error instanceof Error ? error.message : String(error)}`
118
+ );
119
+ return;
120
+ }
121
+ try {
122
+ const prompts = await client.listPrompts();
123
+ prompts.forEach((promptName) => {
124
+ this.promptToClientMap.set(promptName, client);
125
+ });
126
+ logger.debug(`Cached prompts for client: ${clientName}`);
127
+ } catch (error) {
128
+ logger.debug(`Skipping prompts for client ${clientName}: ${error}`);
129
+ }
130
+ try {
131
+ const resources = await client.listResources();
132
+ resources.forEach((resourceUri) => {
133
+ this.resourceToClientMap.set(resourceUri, client);
134
+ });
135
+ logger.debug(`Cached resources for client: ${clientName}`);
136
+ } catch (error) {
137
+ logger.debug(`Skipping resources for client ${clientName}: ${error}`);
138
+ }
139
+ }
140
+ /**
141
+ * Get all available MCP tools from all connected clients, updating the cache.
142
+ * Conflicted tools are prefixed with server name using distinctive delimiter.
143
+ * @returns Promise resolving to a ToolSet mapping tool names to Tool definitions
144
+ */
145
+ async getAllTools() {
146
+ const allTools = {};
147
+ const clientToolsCache = /* @__PURE__ */ new Map();
148
+ const getClientTools = async (client) => {
149
+ if (!clientToolsCache.has(client)) {
150
+ const tools = await client.getTools();
151
+ clientToolsCache.set(client, tools);
152
+ }
153
+ return clientToolsCache.get(client);
154
+ };
155
+ for (const [toolName, client] of Array.from(this.toolToClientMap.entries())) {
156
+ const clientTools = await getClientTools(client);
157
+ const toolDef = clientTools[toolName];
158
+ if (toolDef) {
159
+ allTools[toolName] = toolDef;
160
+ }
161
+ }
162
+ for (const [serverName, serverTools] of this.serverToolsMap.entries()) {
163
+ for (const [toolName, client] of serverTools.entries()) {
164
+ if (this.toolConflicts.has(toolName)) {
165
+ const sanitizedServerName = this.sanitizeServerName(serverName);
166
+ const qualifiedName = `${sanitizedServerName}${MCPManager.SERVER_DELIMITER}${toolName}`;
167
+ const clientTools = await getClientTools(client);
168
+ const toolDef = clientTools[toolName];
169
+ if (toolDef) {
170
+ allTools[qualifiedName] = {
171
+ ...toolDef,
172
+ description: toolDef.description ? `${toolDef.description} (via ${serverName})` : `Tool from ${serverName}`
173
+ };
174
+ }
175
+ }
176
+ }
177
+ }
178
+ logger.debug(
179
+ `\u{1F527} MCP tool discovery: ${Object.keys(allTools).length} total tools, ${this.toolConflicts.size} conflicts, connected servers: ${Array.from(this.serverToolsMap.keys()).join(", ")}`
180
+ );
181
+ if (logger.getLevel() === "debug") {
182
+ Object.keys(allTools).forEach((toolName) => {
183
+ if (toolName.includes(MCPManager.SERVER_DELIMITER)) {
184
+ logger.debug(` - ${toolName} (qualified)`);
185
+ } else {
186
+ logger.debug(` - ${toolName}`);
187
+ }
188
+ });
189
+ }
190
+ logger.silly(`MCP tools: ${JSON.stringify(allTools, null, 2)}`);
191
+ return allTools;
192
+ }
193
+ /**
194
+ * Parse a qualified tool name to extract server name and actual tool name.
195
+ * Uses distinctive delimiter to avoid ambiguity and splits on last occurrence.
196
+ */
197
+ parseQualifiedToolName(toolName) {
198
+ const delimiterIndex = toolName.lastIndexOf(MCPManager.SERVER_DELIMITER);
199
+ if (delimiterIndex === -1) {
200
+ return null;
201
+ }
202
+ const serverPrefix = toolName.substring(0, delimiterIndex);
203
+ const actualToolName = toolName.substring(
204
+ delimiterIndex + MCPManager.SERVER_DELIMITER.length
205
+ );
206
+ const originalServerName = this.sanitizedNameToServerMap.get(serverPrefix);
207
+ if (originalServerName && this.serverToolsMap.get(originalServerName)?.has(actualToolName)) {
208
+ return { serverName: originalServerName, toolName: actualToolName };
209
+ }
210
+ return null;
211
+ }
212
+ /**
213
+ * Get client that provides a specific tool from the cache.
214
+ * Handles both simple tool names and server-prefixed tool names.
215
+ * @param toolName Name of the tool (may include server prefix)
216
+ * @returns The client that provides the tool, or undefined if not found
217
+ */
218
+ getToolClient(toolName) {
219
+ const parsed = this.parseQualifiedToolName(toolName);
220
+ if (parsed) {
221
+ const serverTools = this.serverToolsMap.get(parsed.serverName);
222
+ return serverTools?.get(parsed.toolName);
223
+ }
224
+ return this.toolToClientMap.get(toolName);
225
+ }
226
+ /**
227
+ * Execute a specific MCP tool with the given arguments.
228
+ * @param toolName Name of the MCP tool to execute (may include server prefix)
229
+ * @param args Arguments to pass to the tool
230
+ * @param sessionId Optional session ID
231
+ * @returns Promise resolving to the tool execution result
232
+ */
233
+ async executeTool(toolName, args, _sessionId) {
234
+ const client = this.getToolClient(toolName);
235
+ if (!client) {
236
+ logger.error(`\u274C No MCP tool found: ${toolName}`);
237
+ logger.debug(
238
+ `Available MCP tools: ${Array.from(this.toolToClientMap.keys()).join(", ")}`
239
+ );
240
+ logger.debug(`Conflicted tools: ${Array.from(this.toolConflicts).join(", ")}`);
241
+ logger.debug(
242
+ `Server tools map keys: ${Array.from(this.serverToolsMap.keys()).join(", ")}`
243
+ );
244
+ throw MCPError.toolNotFound(toolName);
245
+ }
246
+ const parsed = this.parseQualifiedToolName(toolName);
247
+ const actualToolName = parsed ? parsed.toolName : toolName;
248
+ const serverName = parsed ? parsed.serverName : "direct";
249
+ logger.debug(`\u25B6\uFE0F Executing MCP tool '${actualToolName}' on server '${serverName}'...`);
250
+ try {
251
+ const result = await client.callTool(actualToolName, args);
252
+ return result;
253
+ } catch (error) {
254
+ logger.error(
255
+ `\u274C MCP tool execution failed: '${actualToolName}' - ${error instanceof Error ? error.message : String(error)}`
256
+ );
257
+ throw error;
258
+ }
259
+ }
260
+ /**
261
+ * Get all available prompt names from all connected clients, updating the cache.
262
+ * @returns Promise resolving to an array of unique prompt names.
263
+ */
264
+ async listAllPrompts() {
265
+ return Array.from(this.promptToClientMap.keys());
266
+ }
267
+ /**
268
+ * Get the client that provides a specific prompt from the cache.
269
+ * @param promptName Name of the prompt.
270
+ * @returns The client instance or undefined.
271
+ */
272
+ getPromptClient(promptName) {
273
+ return this.promptToClientMap.get(promptName);
274
+ }
275
+ /**
276
+ * Get a specific prompt definition by name.
277
+ * @param name Name of the prompt.
278
+ * @param args Arguments for the prompt (optional).
279
+ * @returns Promise resolving to the prompt definition.
280
+ */
281
+ async getPrompt(name, args) {
282
+ const client = this.getPromptClient(name);
283
+ if (!client) {
284
+ throw MCPError.promptNotFound(name);
285
+ }
286
+ return await client.getPrompt(name, args);
287
+ }
288
+ /**
289
+ * Get all available resource URIs from all connected clients, updating the cache.
290
+ * @returns Promise resolving to an array of unique resource URIs.
291
+ */
292
+ async listAllResources() {
293
+ return Array.from(this.resourceToClientMap.keys());
294
+ }
295
+ /**
296
+ * Get the client that provides a specific resource from the cache.
297
+ * @param resourceUri URI of the resource.
298
+ * @returns The client instance or undefined.
299
+ */
300
+ getResourceClient(resourceUri) {
301
+ return this.resourceToClientMap.get(resourceUri);
302
+ }
303
+ /**
304
+ * Read a specific resource by URI.
305
+ * @param uri URI of the resource.
306
+ * @returns Promise resolving to the resource content.
307
+ */
308
+ async readResource(uri) {
309
+ const client = this.getResourceClient(uri);
310
+ if (!client) {
311
+ throw MCPError.resourceNotFound(uri);
312
+ }
313
+ return await client.readResource(uri);
314
+ }
315
+ /**
316
+ * Initialize clients from server configurations
317
+ * @param serverConfigs Server configurations with individual connection modes
318
+ * @returns Promise resolving when initialization is complete
319
+ */
320
+ async initializeFromConfig(serverConfigs) {
321
+ if (Object.keys(serverConfigs).length === 0) {
322
+ logger.info("No MCP servers configured - running without external tools");
323
+ return;
324
+ }
325
+ const successfulConnections = [];
326
+ const connectionPromises = [];
327
+ const strictServers = [];
328
+ const lenientServers = [];
329
+ for (const [name, config] of Object.entries(serverConfigs)) {
330
+ const effectiveMode = config.connectionMode || "lenient";
331
+ if (effectiveMode === "strict") {
332
+ strictServers.push(name);
333
+ } else {
334
+ lenientServers.push(name);
335
+ }
336
+ const connectPromise = this.connectServer(name, config).then(() => {
337
+ successfulConnections.push(name);
338
+ }).catch((error) => {
339
+ logger.debug(
340
+ `Handled connection error for '${name}' during initialization: ${error.message}`
341
+ );
342
+ });
343
+ connectionPromises.push(connectPromise);
344
+ }
345
+ await Promise.all(connectionPromises);
346
+ const failedStrictServers = strictServers.filter(
347
+ (name) => !successfulConnections.includes(name)
348
+ );
349
+ if (failedStrictServers.length > 0) {
350
+ const strictErrors = failedStrictServers.map((name) => `${name}: ${this.connectionErrors[name] || "Unknown error"}`).join("; ");
351
+ throw MCPError.connectionFailed("strict servers", strictErrors);
352
+ }
353
+ }
354
+ /**
355
+ * Dynamically connect to a new MCP server.
356
+ * @param name The unique name for the new server connection.
357
+ * @param config The configuration for the server.
358
+ * @returns Promise resolving when the connection attempt is complete.
359
+ * @throws Error if the connection fails.
360
+ */
361
+ async connectServer(name, config) {
362
+ if (this.clients.has(name)) {
363
+ logger.warn(`Client '${name}' is already connected or registered.`);
364
+ return;
365
+ }
366
+ const client = new MCPClient();
367
+ try {
368
+ logger.info(`Attempting to connect to new server '${name}'...`);
369
+ await client.connect(config, name);
370
+ this.registerClient(name, client);
371
+ await this.updateClientCache(name, client);
372
+ logger.info(`Successfully connected and cached new server '${name}'`);
373
+ } catch (error) {
374
+ const errorMsg = error instanceof Error ? error.message : String(error);
375
+ this.connectionErrors[name] = errorMsg;
376
+ logger.error(`Failed to connect to new server '${name}': ${errorMsg}`);
377
+ this.clients.delete(name);
378
+ throw MCPError.connectionFailed(name, errorMsg);
379
+ }
380
+ }
381
+ /**
382
+ * Get all registered clients
383
+ * @returns Map of client names to client instances
384
+ */
385
+ getClients() {
386
+ return this.clients;
387
+ }
388
+ /**
389
+ * Get the errors from failed connections
390
+ * @returns Map of server names to error messages
391
+ */
392
+ getFailedConnections() {
393
+ return this.connectionErrors;
394
+ }
395
+ /**
396
+ * Disconnect and remove a specific client by name.
397
+ * @param name The name of the client to remove.
398
+ */
399
+ async removeClient(name) {
400
+ const client = this.clients.get(name);
401
+ if (client) {
402
+ if (typeof client.disconnect === "function") {
403
+ try {
404
+ await client.disconnect();
405
+ logger.info(`Successfully disconnected client: ${name}`);
406
+ } catch (error) {
407
+ logger.error(
408
+ `Error disconnecting client '${name}': ${error instanceof Error ? error.message : String(error)}`
409
+ );
410
+ }
411
+ }
412
+ this.clearClientCache(name);
413
+ this.clients.delete(name);
414
+ logger.info(`Removed client from manager: ${name}`);
415
+ }
416
+ if (this.connectionErrors[name]) {
417
+ delete this.connectionErrors[name];
418
+ logger.info(`Cleared connection error for removed client: ${name}`);
419
+ }
420
+ }
421
+ /**
422
+ * Disconnect all clients and clear caches
423
+ */
424
+ async disconnectAll() {
425
+ const disconnectPromises = [];
426
+ for (const [name, client] of Array.from(this.clients.entries())) {
427
+ if (client.disconnect) {
428
+ disconnectPromises.push(
429
+ client.disconnect().then(() => logger.info(`Disconnected client: ${name}`)).catch(
430
+ (error) => logger.error(`Failed to disconnect client '${name}': ${error}`)
431
+ )
432
+ );
433
+ }
434
+ }
435
+ await Promise.all(disconnectPromises);
436
+ this.clients.clear();
437
+ this.connectionErrors = {};
438
+ this.toolToClientMap.clear();
439
+ this.serverToolsMap.clear();
440
+ this.toolConflicts.clear();
441
+ this.promptToClientMap.clear();
442
+ this.resourceToClientMap.clear();
443
+ this.sanitizedNameToServerMap.clear();
444
+ logger.info("Disconnected all clients and cleared caches.");
445
+ }
446
+ }
447
+ export {
448
+ MCPManager
449
+ };