@dexto/core 1.1.9 → 1.1.11

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 (812) hide show
  1. package/dist/Dexto.cjs +261 -0
  2. package/dist/Dexto.d.ts +212 -0
  3. package/dist/Dexto.d.ts.map +1 -0
  4. package/dist/Dexto.js +236 -0
  5. package/dist/agent/DextoAgent.cjs +428 -123
  6. package/dist/agent/DextoAgent.d.ts +170 -102
  7. package/dist/agent/DextoAgent.d.ts.map +1 -0
  8. package/dist/agent/DextoAgent.js +428 -123
  9. package/dist/agent/agentCard.d.ts +4 -7
  10. package/dist/agent/agentCard.d.ts.map +1 -0
  11. package/dist/agent/error-codes.cjs +2 -0
  12. package/dist/agent/error-codes.d.ts +4 -3
  13. package/dist/agent/error-codes.d.ts.map +1 -0
  14. package/dist/agent/error-codes.js +2 -0
  15. package/dist/agent/errors.cjs +13 -0
  16. package/dist/agent/errors.d.ts +6 -17
  17. package/dist/agent/errors.d.ts.map +1 -0
  18. package/dist/agent/errors.js +13 -0
  19. package/dist/agent/index.cjs +3 -0
  20. package/dist/agent/index.d.ts +6 -57
  21. package/dist/agent/index.d.ts.map +1 -0
  22. package/dist/agent/index.js +2 -0
  23. package/dist/agent/registry/error-codes.cjs +2 -0
  24. package/dist/agent/registry/error-codes.d.ts +4 -3
  25. package/dist/agent/registry/error-codes.d.ts.map +1 -0
  26. package/dist/agent/registry/error-codes.js +2 -0
  27. package/dist/agent/registry/errors.cjs +58 -28
  28. package/dist/agent/registry/errors.d.ts +32 -36
  29. package/dist/agent/registry/errors.d.ts.map +1 -0
  30. package/dist/agent/registry/errors.js +58 -28
  31. package/dist/agent/registry/registry.cjs +242 -54
  32. package/dist/agent/registry/registry.d.ts +84 -21
  33. package/dist/agent/registry/registry.d.ts.map +1 -0
  34. package/dist/agent/registry/registry.js +251 -55
  35. package/dist/agent/registry/types.cjs +36 -3
  36. package/dist/agent/registry/types.d.ts +66 -24
  37. package/dist/agent/registry/types.d.ts.map +1 -0
  38. package/dist/agent/registry/types.js +33 -2
  39. package/dist/agent/registry/user-registry.cjs +140 -0
  40. package/dist/agent/registry/user-registry.d.ts +34 -0
  41. package/dist/agent/registry/user-registry.d.ts.map +1 -0
  42. package/dist/agent/registry/user-registry.js +104 -0
  43. package/dist/agent/schemas.cjs +17 -3
  44. package/dist/agent/schemas.d.ts +685 -463
  45. package/dist/agent/schemas.d.ts.map +1 -0
  46. package/dist/agent/schemas.js +17 -3
  47. package/dist/agent/state-manager.d.ts +7 -12
  48. package/dist/agent/state-manager.d.ts.map +1 -0
  49. package/dist/approval/error-codes.cjs +44 -0
  50. package/dist/approval/error-codes.d.ts +21 -0
  51. package/dist/approval/error-codes.d.ts.map +1 -0
  52. package/dist/approval/error-codes.js +20 -0
  53. package/dist/approval/errors.cjs +251 -0
  54. package/dist/approval/errors.d.ts +110 -0
  55. package/dist/approval/errors.d.ts.map +1 -0
  56. package/dist/approval/errors.js +227 -0
  57. package/dist/approval/index.cjs +84 -0
  58. package/dist/approval/index.d.ts +12 -0
  59. package/dist/approval/index.d.ts.map +1 -0
  60. package/dist/approval/index.js +55 -0
  61. package/dist/approval/manager.cjs +159 -0
  62. package/dist/approval/manager.d.ts +109 -0
  63. package/dist/approval/manager.d.ts.map +1 -0
  64. package/dist/approval/manager.js +135 -0
  65. package/dist/approval/providers/event-based-approval-provider.cjs +156 -0
  66. package/dist/approval/providers/event-based-approval-provider.d.ts +39 -0
  67. package/dist/approval/providers/event-based-approval-provider.d.ts.map +1 -0
  68. package/dist/approval/providers/event-based-approval-provider.js +132 -0
  69. package/dist/approval/providers/factory.cjs +38 -0
  70. package/dist/approval/providers/factory.d.ts +12 -0
  71. package/dist/approval/providers/factory.d.ts.map +1 -0
  72. package/dist/approval/providers/factory.js +14 -0
  73. package/dist/approval/providers/noop-approval-provider.cjs +54 -0
  74. package/dist/approval/providers/noop-approval-provider.d.ts +18 -0
  75. package/dist/approval/providers/noop-approval-provider.d.ts.map +1 -0
  76. package/dist/approval/providers/noop-approval-provider.js +30 -0
  77. package/dist/approval/schemas.cjs +168 -0
  78. package/dist/approval/schemas.d.ts +602 -0
  79. package/dist/approval/schemas.d.ts.map +1 -0
  80. package/dist/approval/schemas.js +126 -0
  81. package/dist/approval/types.cjs +41 -0
  82. package/dist/approval/types.d.ts +140 -0
  83. package/dist/approval/types.d.ts.map +1 -0
  84. package/dist/approval/types.js +16 -0
  85. package/dist/config/agent-resolver.d.ts +3 -4
  86. package/dist/config/agent-resolver.d.ts.map +1 -0
  87. package/dist/config/error-codes.d.ts +2 -3
  88. package/dist/config/error-codes.d.ts.map +1 -0
  89. package/dist/config/errors.d.ts +3 -18
  90. package/dist/config/errors.d.ts.map +1 -0
  91. package/dist/config/index.d.ts +4 -7
  92. package/dist/config/index.d.ts.map +1 -0
  93. package/dist/config/loader.d.ts +2 -5
  94. package/dist/config/loader.d.ts.map +1 -0
  95. package/dist/config/writer.d.ts +8 -11
  96. package/dist/config/writer.d.ts.map +1 -0
  97. package/dist/context/compression/middle-removal.d.ts +3 -6
  98. package/dist/context/compression/middle-removal.d.ts.map +1 -0
  99. package/dist/context/compression/oldest-removal.d.ts +3 -6
  100. package/dist/context/compression/oldest-removal.d.ts.map +1 -0
  101. package/dist/context/compression/types.d.ts +2 -5
  102. package/dist/context/compression/types.d.ts.map +1 -0
  103. package/dist/context/error-codes.d.ts +2 -3
  104. package/dist/context/error-codes.d.ts.map +1 -0
  105. package/dist/context/errors.d.ts +3 -18
  106. package/dist/context/errors.d.ts.map +1 -0
  107. package/dist/context/index.cjs +11 -0
  108. package/dist/context/index.d.ts +4 -19
  109. package/dist/context/index.d.ts.map +1 -0
  110. package/dist/context/index.js +5 -0
  111. package/dist/context/manager.cjs +121 -24
  112. package/dist/context/manager.d.ts +28 -20
  113. package/dist/context/manager.d.ts.map +1 -0
  114. package/dist/context/manager.js +127 -25
  115. package/dist/context/media-helpers.cjs +40 -0
  116. package/dist/context/media-helpers.d.ts +15 -0
  117. package/dist/context/media-helpers.d.ts.map +1 -0
  118. package/dist/context/media-helpers.js +15 -0
  119. package/dist/context/types.d.ts +27 -10
  120. package/dist/context/types.d.ts.map +1 -0
  121. package/dist/context/utils.cjs +811 -71
  122. package/dist/context/utils.d.ts +78 -15
  123. package/dist/context/utils.d.ts.map +1 -0
  124. package/dist/context/utils.js +802 -70
  125. package/dist/errors/DextoBaseError.d.ts +2 -3
  126. package/dist/errors/DextoBaseError.d.ts.map +1 -0
  127. package/dist/errors/DextoRuntimeError.d.ts +5 -16
  128. package/dist/errors/DextoRuntimeError.d.ts.map +1 -0
  129. package/dist/errors/DextoValidationError.d.ts +3 -16
  130. package/dist/errors/DextoValidationError.d.ts.map +1 -0
  131. package/dist/errors/index.d.ts +7 -14
  132. package/dist/errors/index.d.ts.map +1 -0
  133. package/dist/errors/result-bridge.d.ts +3 -18
  134. package/dist/errors/result-bridge.d.ts.map +1 -0
  135. package/dist/errors/types.cjs +4 -0
  136. package/dist/errors/types.d.ts +27 -20
  137. package/dist/errors/types.d.ts.map +1 -0
  138. package/dist/errors/types.js +4 -0
  139. package/dist/events/index.cjs +8 -3
  140. package/dist/events/index.d.ts +63 -35
  141. package/dist/events/index.d.ts.map +1 -0
  142. package/dist/events/index.js +8 -3
  143. package/dist/index.browser.cjs +36 -0
  144. package/dist/index.browser.d.ts +24 -51
  145. package/dist/index.browser.d.ts.map +1 -0
  146. package/dist/index.browser.js +34 -1
  147. package/dist/index.cjs +29 -1
  148. package/dist/index.d.ts +33 -89
  149. package/dist/index.d.ts.map +1 -0
  150. package/dist/index.js +14 -0
  151. package/dist/llm/error-codes.d.ts +2 -3
  152. package/dist/llm/error-codes.d.ts.map +1 -0
  153. package/dist/llm/errors.d.ts +3 -18
  154. package/dist/llm/errors.d.ts.map +1 -0
  155. package/dist/llm/formatters/anthropic.d.ts +2 -4
  156. package/dist/llm/formatters/anthropic.d.ts.map +1 -0
  157. package/dist/llm/formatters/factory.d.ts +3 -6
  158. package/dist/llm/formatters/factory.d.ts.map +1 -0
  159. package/dist/llm/formatters/openai.d.ts +2 -4
  160. package/dist/llm/formatters/openai.d.ts.map +1 -0
  161. package/dist/llm/formatters/types.d.ts +2 -4
  162. package/dist/llm/formatters/types.d.ts.map +1 -0
  163. package/dist/llm/formatters/vercel.d.ts +6 -7
  164. package/dist/llm/formatters/vercel.d.ts.map +1 -0
  165. package/dist/llm/index.d.ts +8 -39
  166. package/dist/llm/index.d.ts.map +1 -0
  167. package/dist/llm/registry.cjs +15 -1
  168. package/dist/llm/registry.d.ts +26 -29
  169. package/dist/llm/registry.d.ts.map +1 -0
  170. package/dist/llm/registry.js +15 -1
  171. package/dist/llm/resolver.d.ts +6 -20
  172. package/dist/llm/resolver.d.ts.map +1 -0
  173. package/dist/llm/schemas.d.ts +15 -17
  174. package/dist/llm/schemas.d.ts.map +1 -0
  175. package/dist/llm/services/anthropic.cjs +24 -11
  176. package/dist/llm/services/anthropic.d.ts +7 -32
  177. package/dist/llm/services/anthropic.d.ts.map +1 -0
  178. package/dist/llm/services/anthropic.js +24 -11
  179. package/dist/llm/services/factory.cjs +21 -15
  180. package/dist/llm/services/factory.d.ts +5 -32
  181. package/dist/llm/services/factory.d.ts.map +1 -0
  182. package/dist/llm/services/factory.js +21 -15
  183. package/dist/llm/services/index.d.ts +2 -21
  184. package/dist/llm/services/index.d.ts.map +1 -0
  185. package/dist/llm/services/openai.cjs +33 -16
  186. package/dist/llm/services/openai.d.ts +7 -32
  187. package/dist/llm/services/openai.d.ts.map +1 -0
  188. package/dist/llm/services/openai.js +33 -16
  189. package/dist/llm/services/test-utils.integration.cjs +2 -2
  190. package/dist/llm/services/test-utils.integration.d.ts +8 -49
  191. package/dist/llm/services/test-utils.integration.d.ts.map +1 -0
  192. package/dist/llm/services/test-utils.integration.js +2 -2
  193. package/dist/llm/services/types.d.ts +5 -22
  194. package/dist/llm/services/types.d.ts.map +1 -0
  195. package/dist/llm/services/vercel.cjs +52 -21
  196. package/dist/llm/services/vercel.d.ts +12 -35
  197. package/dist/llm/services/vercel.d.ts.map +1 -0
  198. package/dist/llm/services/vercel.js +53 -22
  199. package/dist/llm/tokenizer/anthropic.d.ts +2 -4
  200. package/dist/llm/tokenizer/anthropic.d.ts.map +1 -0
  201. package/dist/llm/tokenizer/default.d.ts +2 -4
  202. package/dist/llm/tokenizer/default.d.ts.map +1 -0
  203. package/dist/llm/tokenizer/factory.d.ts +3 -5
  204. package/dist/llm/tokenizer/factory.d.ts.map +1 -0
  205. package/dist/llm/tokenizer/google.d.ts +2 -4
  206. package/dist/llm/tokenizer/google.d.ts.map +1 -0
  207. package/dist/llm/tokenizer/openai.d.ts +2 -4
  208. package/dist/llm/tokenizer/openai.d.ts.map +1 -0
  209. package/dist/llm/tokenizer/types.d.ts +3 -4
  210. package/dist/llm/tokenizer/types.d.ts.map +1 -0
  211. package/dist/llm/types.d.ts +9 -10
  212. package/dist/llm/types.d.ts.map +1 -0
  213. package/dist/llm/validation.d.ts +8 -23
  214. package/dist/llm/validation.d.ts.map +1 -0
  215. package/dist/logger/browser.d.ts +4 -5
  216. package/dist/logger/browser.d.ts.map +1 -0
  217. package/dist/logger/index.d.ts +2 -1
  218. package/dist/logger/index.d.ts.map +1 -0
  219. package/dist/logger/logger.cjs +35 -7
  220. package/dist/logger/logger.d.ts +5 -5
  221. package/dist/logger/logger.d.ts.map +1 -0
  222. package/dist/logger/logger.js +35 -7
  223. package/dist/mcp/error-codes.d.ts +2 -3
  224. package/dist/mcp/error-codes.d.ts.map +1 -0
  225. package/dist/mcp/errors.d.ts +2 -17
  226. package/dist/mcp/errors.d.ts.map +1 -0
  227. package/dist/mcp/index.d.ts +8 -26
  228. package/dist/mcp/index.d.ts.map +1 -0
  229. package/dist/mcp/manager.cjs +462 -114
  230. package/dist/mcp/manager.d.ts +117 -58
  231. package/dist/mcp/manager.d.ts.map +1 -0
  232. package/dist/mcp/manager.js +462 -114
  233. package/dist/mcp/mcp-client.cjs +172 -10
  234. package/dist/mcp/mcp-client.d.ts +36 -14
  235. package/dist/mcp/mcp-client.d.ts.map +1 -0
  236. package/dist/mcp/mcp-client.js +176 -10
  237. package/dist/mcp/resolver.d.ts +5 -20
  238. package/dist/mcp/resolver.d.ts.map +1 -0
  239. package/dist/mcp/schemas.cjs +13 -5
  240. package/dist/mcp/schemas.d.ts +31 -28
  241. package/dist/mcp/schemas.d.ts.map +1 -0
  242. package/dist/mcp/schemas.js +10 -5
  243. package/dist/mcp/types.d.ts +18 -10
  244. package/dist/mcp/types.d.ts.map +1 -0
  245. package/dist/memory/error-codes.cjs +39 -0
  246. package/dist/memory/error-codes.d.ts +15 -0
  247. package/dist/memory/error-codes.d.ts.map +1 -0
  248. package/dist/memory/error-codes.js +15 -0
  249. package/dist/memory/errors.cjs +112 -0
  250. package/dist/memory/errors.d.ts +16 -0
  251. package/dist/memory/errors.d.ts.map +1 -0
  252. package/dist/memory/errors.js +88 -0
  253. package/dist/memory/index.cjs +43 -0
  254. package/dist/memory/index.d.ts +6 -0
  255. package/dist/memory/index.d.ts.map +1 -0
  256. package/dist/memory/index.js +18 -0
  257. package/dist/memory/manager.cjs +214 -0
  258. package/dist/memory/manager.d.ts +56 -0
  259. package/dist/memory/manager.d.ts.map +1 -0
  260. package/dist/memory/manager.js +195 -0
  261. package/dist/memory/schemas.cjs +82 -0
  262. package/dist/memory/schemas.d.ts +129 -0
  263. package/dist/memory/schemas.d.ts.map +1 -0
  264. package/dist/memory/schemas.js +53 -0
  265. package/dist/memory/types.d.ts +76 -0
  266. package/dist/memory/types.d.ts.map +1 -0
  267. package/dist/plugins/builtins/content-policy.cjs +112 -0
  268. package/dist/plugins/builtins/content-policy.d.ts +26 -0
  269. package/dist/plugins/builtins/content-policy.d.ts.map +1 -0
  270. package/dist/plugins/builtins/content-policy.js +88 -0
  271. package/dist/plugins/builtins/response-sanitizer.cjs +102 -0
  272. package/dist/plugins/builtins/response-sanitizer.d.ts +25 -0
  273. package/dist/plugins/builtins/response-sanitizer.d.ts.map +1 -0
  274. package/dist/plugins/builtins/response-sanitizer.js +78 -0
  275. package/dist/plugins/error-codes.cjs +39 -0
  276. package/dist/plugins/error-codes.d.ts +26 -0
  277. package/dist/plugins/error-codes.d.ts.map +1 -0
  278. package/dist/plugins/error-codes.js +15 -0
  279. package/dist/plugins/index.cjs +54 -0
  280. package/dist/plugins/index.d.ts +19 -0
  281. package/dist/plugins/index.d.ts.map +1 -0
  282. package/dist/plugins/index.js +24 -0
  283. package/dist/plugins/loader.cjs +151 -0
  284. package/dist/plugins/loader.d.ts +30 -0
  285. package/dist/plugins/loader.d.ts.map +1 -0
  286. package/dist/plugins/loader.js +124 -0
  287. package/dist/plugins/manager.cjs +386 -0
  288. package/dist/plugins/manager.d.ts +97 -0
  289. package/dist/plugins/manager.d.ts.map +1 -0
  290. package/dist/plugins/manager.js +362 -0
  291. package/dist/plugins/registrations/builtins.cjs +51 -0
  292. package/dist/plugins/registrations/builtins.d.ts +17 -0
  293. package/dist/plugins/registrations/builtins.d.ts.map +1 -0
  294. package/dist/plugins/registrations/builtins.js +27 -0
  295. package/dist/plugins/schemas.cjs +61 -0
  296. package/dist/plugins/schemas.d.ts +138 -0
  297. package/dist/plugins/schemas.d.ts.map +1 -0
  298. package/dist/plugins/schemas.js +35 -0
  299. package/dist/plugins/types.d.ts +152 -0
  300. package/dist/plugins/types.d.ts.map +1 -0
  301. package/dist/preferences/constants.d.ts +2 -3
  302. package/dist/preferences/constants.d.ts.map +1 -0
  303. package/dist/preferences/error-codes.d.ts +2 -3
  304. package/dist/preferences/error-codes.d.ts.map +1 -0
  305. package/dist/preferences/errors.d.ts +4 -19
  306. package/dist/preferences/errors.d.ts.map +1 -0
  307. package/dist/preferences/index.d.ts +5 -20
  308. package/dist/preferences/index.d.ts.map +1 -0
  309. package/dist/preferences/loader.d.ts +9 -12
  310. package/dist/preferences/loader.d.ts.map +1 -0
  311. package/dist/preferences/schemas.d.ts +19 -21
  312. package/dist/preferences/schemas.d.ts.map +1 -0
  313. package/dist/prompts/error-codes.cjs +38 -0
  314. package/dist/prompts/error-codes.d.ts +15 -0
  315. package/dist/prompts/error-codes.d.ts.map +1 -0
  316. package/dist/prompts/error-codes.js +14 -0
  317. package/dist/prompts/errors.cjs +144 -0
  318. package/dist/prompts/errors.d.ts +45 -0
  319. package/dist/prompts/errors.d.ts.map +1 -0
  320. package/dist/prompts/errors.js +120 -0
  321. package/dist/prompts/index.cjs +53 -0
  322. package/dist/prompts/index.d.ts +13 -0
  323. package/dist/prompts/index.d.ts.map +1 -0
  324. package/dist/prompts/index.js +20 -0
  325. package/dist/prompts/name-validation.cjs +45 -0
  326. package/dist/prompts/name-validation.d.ts +9 -0
  327. package/dist/prompts/name-validation.d.ts.map +1 -0
  328. package/dist/prompts/name-validation.js +18 -0
  329. package/dist/prompts/prompt-manager.cjs +374 -0
  330. package/dist/prompts/prompt-manager.d.ts +74 -0
  331. package/dist/prompts/prompt-manager.d.ts.map +1 -0
  332. package/dist/prompts/prompt-manager.js +352 -0
  333. package/dist/prompts/providers/custom-prompt-provider.cjs +283 -0
  334. package/dist/prompts/providers/custom-prompt-provider.d.ts +36 -0
  335. package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -0
  336. package/dist/prompts/providers/custom-prompt-provider.js +259 -0
  337. package/dist/prompts/providers/file-prompt-provider.cjs +399 -0
  338. package/dist/prompts/providers/file-prompt-provider.d.ts +47 -0
  339. package/dist/prompts/providers/file-prompt-provider.d.ts.map +1 -0
  340. package/dist/prompts/providers/file-prompt-provider.js +375 -0
  341. package/dist/prompts/providers/mcp-prompt-provider.cjs +102 -0
  342. package/dist/prompts/providers/mcp-prompt-provider.d.ts +35 -0
  343. package/dist/prompts/providers/mcp-prompt-provider.d.ts.map +1 -0
  344. package/dist/prompts/providers/mcp-prompt-provider.js +78 -0
  345. package/dist/prompts/providers/starter-prompt-provider.cjs +170 -0
  346. package/dist/prompts/providers/starter-prompt-provider.d.ts +45 -0
  347. package/dist/prompts/providers/starter-prompt-provider.d.ts.map +1 -0
  348. package/dist/prompts/providers/starter-prompt-provider.js +146 -0
  349. package/dist/prompts/schemas.cjs +54 -0
  350. package/dist/prompts/schemas.d.ts +65 -0
  351. package/dist/prompts/schemas.d.ts.map +1 -0
  352. package/dist/prompts/schemas.js +30 -0
  353. package/dist/{storage/backend/cache-backend.cjs → prompts/types.cjs} +2 -2
  354. package/dist/prompts/types.d.ts +64 -0
  355. package/dist/prompts/types.d.ts.map +1 -0
  356. package/dist/prompts/utils.cjs +176 -0
  357. package/dist/prompts/utils.d.ts +32 -0
  358. package/dist/prompts/utils.d.ts.map +1 -0
  359. package/dist/prompts/utils.js +149 -0
  360. package/dist/resources/error-codes.cjs +38 -0
  361. package/dist/resources/error-codes.d.ts +13 -0
  362. package/dist/resources/error-codes.d.ts.map +1 -0
  363. package/dist/resources/error-codes.js +14 -0
  364. package/dist/resources/errors.cjs +155 -0
  365. package/dist/resources/errors.d.ts +48 -0
  366. package/dist/resources/errors.d.ts.map +1 -0
  367. package/dist/resources/errors.js +131 -0
  368. package/dist/resources/handlers/blob-handler.cjs +230 -0
  369. package/dist/resources/handlers/blob-handler.d.ts +38 -0
  370. package/dist/resources/handlers/blob-handler.d.ts.map +1 -0
  371. package/dist/resources/handlers/blob-handler.js +206 -0
  372. package/dist/resources/handlers/factory.cjs +50 -0
  373. package/dist/resources/handlers/factory.d.ts +11 -0
  374. package/dist/resources/handlers/factory.d.ts.map +1 -0
  375. package/dist/resources/handlers/factory.js +25 -0
  376. package/dist/resources/handlers/filesystem-handler.cjs +385 -0
  377. package/dist/resources/handlers/filesystem-handler.d.ts +35 -0
  378. package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -0
  379. package/dist/resources/handlers/filesystem-handler.js +351 -0
  380. package/dist/{storage/backend/database-backend.cjs → resources/handlers/types.cjs} +2 -2
  381. package/dist/resources/handlers/types.d.ts +15 -0
  382. package/dist/resources/handlers/types.d.ts.map +1 -0
  383. package/dist/resources/index.cjs +58 -0
  384. package/dist/resources/index.d.ts +39 -0
  385. package/dist/resources/index.d.ts.map +1 -0
  386. package/dist/resources/index.js +34 -0
  387. package/dist/resources/internal-provider.cjs +141 -0
  388. package/dist/resources/internal-provider.d.ts +19 -0
  389. package/dist/resources/internal-provider.d.ts.map +1 -0
  390. package/dist/resources/internal-provider.js +117 -0
  391. package/dist/resources/manager.cjs +221 -0
  392. package/dist/resources/manager.d.ts +29 -0
  393. package/dist/resources/manager.d.ts.map +1 -0
  394. package/dist/resources/manager.js +197 -0
  395. package/dist/resources/reference-parser.cjs +217 -0
  396. package/dist/resources/reference-parser.d.ts +33 -0
  397. package/dist/resources/reference-parser.d.ts.map +1 -0
  398. package/dist/resources/reference-parser.js +190 -0
  399. package/dist/resources/schemas.cjs +98 -0
  400. package/dist/resources/schemas.d.ts +212 -0
  401. package/dist/resources/schemas.d.ts.map +1 -0
  402. package/dist/resources/schemas.js +72 -0
  403. package/dist/resources/types.cjs +16 -0
  404. package/dist/resources/types.d.ts +57 -0
  405. package/dist/resources/types.d.ts.map +1 -0
  406. package/dist/resources/types.js +0 -0
  407. package/dist/search/index.d.ts +2 -4
  408. package/dist/search/index.d.ts.map +1 -0
  409. package/dist/search/search-service.d.ts +5 -9
  410. package/dist/search/search-service.d.ts.map +1 -0
  411. package/dist/search/types.d.ts +7 -10
  412. package/dist/search/types.d.ts.map +1 -0
  413. package/dist/session/chat-session.cjs +103 -10
  414. package/dist/session/chat-session.d.ts +30 -41
  415. package/dist/session/chat-session.d.ts.map +1 -0
  416. package/dist/session/chat-session.js +103 -10
  417. package/dist/session/error-codes.d.ts +2 -3
  418. package/dist/session/error-codes.d.ts.map +1 -0
  419. package/dist/session/errors.d.ts +2 -17
  420. package/dist/session/errors.d.ts.map +1 -0
  421. package/dist/session/history/database.d.ts +6 -9
  422. package/dist/session/history/database.d.ts.map +1 -0
  423. package/dist/session/history/factory.d.ts +4 -8
  424. package/dist/session/history/factory.d.ts.map +1 -0
  425. package/dist/session/history/memory.cjs +39 -0
  426. package/dist/session/history/memory.d.ts +14 -0
  427. package/dist/session/history/memory.d.ts.map +1 -0
  428. package/dist/session/history/memory.js +15 -0
  429. package/dist/session/history/types.d.ts +3 -6
  430. package/dist/session/history/types.d.ts.map +1 -0
  431. package/dist/session/index.d.ts +3 -50
  432. package/dist/session/index.d.ts.map +1 -0
  433. package/dist/session/schemas.d.ts +4 -6
  434. package/dist/session/schemas.d.ts.map +1 -0
  435. package/dist/session/session-manager.cjs +63 -29
  436. package/dist/session/session-manager.d.ts +27 -43
  437. package/dist/session/session-manager.d.ts.map +1 -0
  438. package/dist/session/session-manager.js +63 -29
  439. package/dist/session/title-generator.cjs +140 -0
  440. package/dist/session/title-generator.d.ts +22 -0
  441. package/dist/session/title-generator.d.ts.map +1 -0
  442. package/dist/session/title-generator.js +115 -0
  443. package/dist/storage/blob/factory.cjs +50 -0
  444. package/dist/storage/blob/factory.d.ts +8 -0
  445. package/dist/storage/blob/factory.d.ts.map +1 -0
  446. package/dist/storage/blob/factory.js +26 -0
  447. package/dist/storage/blob/local-blob-store.cjs +487 -0
  448. package/dist/storage/blob/local-blob-store.d.ts +56 -0
  449. package/dist/storage/blob/local-blob-store.d.ts.map +1 -0
  450. package/dist/storage/blob/local-blob-store.js +453 -0
  451. package/dist/storage/blob/schemas.cjs +53 -0
  452. package/dist/storage/blob/schemas.d.ts +80 -0
  453. package/dist/storage/blob/schemas.d.ts.map +1 -0
  454. package/dist/storage/blob/schemas.js +28 -0
  455. package/dist/storage/blob/types.cjs +16 -0
  456. package/dist/storage/blob/types.d.ts +154 -0
  457. package/dist/storage/blob/types.d.ts.map +1 -0
  458. package/dist/storage/blob/types.js +0 -0
  459. package/dist/storage/cache/factory.cjs +63 -0
  460. package/dist/storage/cache/factory.d.ts +8 -0
  461. package/dist/storage/cache/factory.d.ts.map +1 -0
  462. package/dist/storage/cache/factory.js +29 -0
  463. package/dist/storage/cache/memory-cache-store.cjs +107 -0
  464. package/dist/storage/cache/memory-cache-store.d.ts +26 -0
  465. package/dist/storage/cache/memory-cache-store.d.ts.map +1 -0
  466. package/dist/storage/cache/memory-cache-store.js +83 -0
  467. package/dist/storage/{backend/redis-backend.cjs → cache/redis-store.cjs} +8 -22
  468. package/dist/storage/{backend/redis-backend.d.ts → cache/redis-store.d.ts} +8 -14
  469. package/dist/storage/cache/redis-store.d.ts.map +1 -0
  470. package/dist/storage/{backend/redis-backend.js → cache/redis-store.js} +4 -18
  471. package/dist/storage/cache/schemas.cjs +77 -0
  472. package/dist/storage/cache/schemas.d.ts +151 -0
  473. package/dist/storage/cache/schemas.d.ts.map +1 -0
  474. package/dist/storage/cache/schemas.js +52 -0
  475. package/dist/storage/cache/types.cjs +16 -0
  476. package/dist/storage/{backend/cache-backend.d.cts → cache/types.d.ts} +3 -4
  477. package/dist/storage/cache/types.d.ts.map +1 -0
  478. package/dist/storage/cache/types.js +0 -0
  479. package/dist/storage/database/factory.cjs +84 -0
  480. package/dist/storage/database/factory.d.ts +8 -0
  481. package/dist/storage/database/factory.d.ts.map +1 -0
  482. package/dist/storage/database/factory.js +50 -0
  483. package/dist/storage/{backend/memory-backend.cjs → database/memory-database-store.cjs} +10 -28
  484. package/dist/storage/{backend/memory-backend.d.ts → database/memory-database-store.d.ts} +7 -12
  485. package/dist/storage/database/memory-database-store.d.ts.map +1 -0
  486. package/dist/storage/{backend/memory-backend.js → database/memory-database-store.js} +6 -24
  487. package/dist/storage/{backend/postgres-backend.cjs → database/postgres-store.cjs} +11 -11
  488. package/dist/storage/{backend/postgres-backend.d.ts → database/postgres-store.d.ts} +8 -11
  489. package/dist/storage/database/postgres-store.d.ts.map +1 -0
  490. package/dist/storage/{backend/postgres-backend.js → database/postgres-store.js} +7 -7
  491. package/dist/storage/database/schemas.cjs +89 -0
  492. package/dist/storage/database/schemas.d.ts +227 -0
  493. package/dist/storage/database/schemas.d.ts.map +1 -0
  494. package/dist/storage/database/schemas.js +64 -0
  495. package/dist/storage/{backend/sqlite-backend.cjs → database/sqlite-store.cjs} +15 -14
  496. package/dist/storage/{backend/sqlite-backend.d.ts → database/sqlite-store.d.ts} +8 -11
  497. package/dist/storage/database/sqlite-store.d.ts.map +1 -0
  498. package/dist/storage/{backend/sqlite-backend.js → database/sqlite-store.js} +11 -10
  499. package/dist/storage/database/types.cjs +16 -0
  500. package/dist/storage/{backend/database-backend.d.cts → database/types.d.ts} +3 -4
  501. package/dist/storage/database/types.d.ts.map +1 -0
  502. package/dist/storage/database/types.js +0 -0
  503. package/dist/storage/error-codes.cjs +15 -0
  504. package/dist/storage/error-codes.d.ts +19 -5
  505. package/dist/storage/error-codes.d.ts.map +1 -0
  506. package/dist/storage/error-codes.js +15 -0
  507. package/dist/storage/errors.cjs +195 -7
  508. package/dist/storage/errors.d.ts +71 -19
  509. package/dist/storage/errors.d.ts.map +1 -0
  510. package/dist/storage/errors.js +189 -1
  511. package/dist/storage/index.cjs +24 -5
  512. package/dist/storage/index.d.ts +48 -7
  513. package/dist/storage/index.d.ts.map +1 -0
  514. package/dist/storage/index.js +20 -4
  515. package/dist/storage/schemas.cjs +22 -84
  516. package/dist/storage/schemas.d.ts +98 -574
  517. package/dist/storage/schemas.d.ts.map +1 -0
  518. package/dist/storage/schemas.js +25 -84
  519. package/dist/storage/storage-manager.cjs +131 -116
  520. package/dist/storage/storage-manager.d.ts +51 -25
  521. package/dist/storage/storage-manager.d.ts.map +1 -0
  522. package/dist/storage/storage-manager.js +130 -105
  523. package/dist/storage/types.d.ts +7 -5
  524. package/dist/storage/types.d.ts.map +1 -0
  525. package/dist/systemPrompt/contributors.cjs +54 -0
  526. package/dist/systemPrompt/contributors.d.ts +30 -15
  527. package/dist/systemPrompt/contributors.d.ts.map +1 -0
  528. package/dist/systemPrompt/contributors.js +53 -0
  529. package/dist/systemPrompt/error-codes.d.ts +2 -3
  530. package/dist/systemPrompt/error-codes.d.ts.map +1 -0
  531. package/dist/systemPrompt/errors.d.ts +2 -17
  532. package/dist/systemPrompt/errors.d.ts.map +1 -0
  533. package/dist/systemPrompt/in-built-prompts.cjs +13 -15
  534. package/dist/systemPrompt/in-built-prompts.d.ts +4 -14
  535. package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -0
  536. package/dist/systemPrompt/in-built-prompts.js +13 -15
  537. package/dist/systemPrompt/index.cjs +11 -0
  538. package/dist/systemPrompt/index.d.ts +7 -14
  539. package/dist/systemPrompt/index.d.ts.map +1 -0
  540. package/dist/systemPrompt/index.js +8 -0
  541. package/dist/systemPrompt/manager.cjs +24 -6
  542. package/dist/systemPrompt/manager.d.ts +8 -16
  543. package/dist/systemPrompt/manager.d.ts.map +1 -0
  544. package/dist/systemPrompt/manager.js +24 -6
  545. package/dist/systemPrompt/registry.d.ts +6 -16
  546. package/dist/systemPrompt/registry.d.ts.map +1 -0
  547. package/dist/systemPrompt/schemas.cjs +17 -3
  548. package/dist/systemPrompt/schemas.d.ts +204 -30
  549. package/dist/systemPrompt/schemas.d.ts.map +1 -0
  550. package/dist/systemPrompt/schemas.js +17 -3
  551. package/dist/systemPrompt/types.d.ts +3 -12
  552. package/dist/systemPrompt/types.d.ts.map +1 -0
  553. package/dist/tools/confirmation/allowed-tools-provider/factory.cjs +1 -1
  554. package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts +6 -12
  555. package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts.map +1 -0
  556. package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -1
  557. package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts +3 -5
  558. package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts.map +1 -0
  559. package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +9 -9
  560. package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts +7 -13
  561. package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts.map +1 -0
  562. package/dist/tools/confirmation/allowed-tools-provider/storage.js +9 -9
  563. package/dist/tools/confirmation/allowed-tools-provider/types.d.ts +2 -3
  564. package/dist/tools/confirmation/allowed-tools-provider/types.d.ts.map +1 -0
  565. package/dist/tools/error-codes.d.ts +2 -3
  566. package/dist/tools/error-codes.d.ts.map +1 -0
  567. package/dist/tools/errors.d.ts +2 -17
  568. package/dist/tools/errors.d.ts.map +1 -0
  569. package/dist/tools/index.cjs +0 -2
  570. package/dist/tools/index.d.ts +11 -19
  571. package/dist/tools/index.d.ts.map +1 -0
  572. package/dist/tools/index.js +0 -1
  573. package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +57 -0
  574. package/dist/tools/internal-tools/implementations/ask-user-tool.d.ts +18 -0
  575. package/dist/tools/internal-tools/implementations/ask-user-tool.d.ts.map +1 -0
  576. package/dist/tools/internal-tools/implementations/ask-user-tool.js +33 -0
  577. package/dist/tools/internal-tools/implementations/search-history-tool.d.ts +3 -11
  578. package/dist/tools/internal-tools/implementations/search-history-tool.d.ts.map +1 -0
  579. package/dist/tools/internal-tools/index.d.ts +3 -13
  580. package/dist/tools/internal-tools/index.d.ts.map +1 -0
  581. package/dist/tools/internal-tools/provider.cjs +9 -11
  582. package/dist/tools/internal-tools/provider.d.ts +6 -20
  583. package/dist/tools/internal-tools/provider.d.ts.map +1 -0
  584. package/dist/tools/internal-tools/provider.js +9 -11
  585. package/dist/tools/internal-tools/registry.cjs +6 -1
  586. package/dist/tools/internal-tools/registry.d.ts +10 -15
  587. package/dist/tools/internal-tools/registry.d.ts.map +1 -0
  588. package/dist/tools/internal-tools/registry.js +6 -1
  589. package/dist/tools/schemas.cjs +14 -2
  590. package/dist/tools/schemas.d.ts +12 -8
  591. package/dist/tools/schemas.d.ts.map +1 -0
  592. package/dist/tools/schemas.js +10 -2
  593. package/dist/tools/tool-manager.cjs +174 -14
  594. package/dist/tools/tool-manager.d.ts +48 -22
  595. package/dist/tools/tool-manager.d.ts.map +1 -0
  596. package/dist/tools/tool-manager.js +174 -14
  597. package/dist/tools/types.d.ts +9 -11
  598. package/dist/tools/types.d.ts.map +1 -0
  599. package/dist/utils/api-key-resolver.d.ts +5 -7
  600. package/dist/utils/api-key-resolver.d.ts.map +1 -0
  601. package/dist/utils/api-key-store.d.ts +5 -7
  602. package/dist/utils/api-key-store.d.ts.map +1 -0
  603. package/dist/utils/async-context.cjs +51 -0
  604. package/dist/utils/async-context.d.ts +68 -0
  605. package/dist/utils/async-context.d.ts.map +1 -0
  606. package/dist/utils/async-context.js +24 -0
  607. package/dist/utils/debug.cjs +40 -0
  608. package/dist/utils/debug.d.ts +2 -0
  609. package/dist/utils/debug.d.ts.map +1 -0
  610. package/dist/utils/debug.js +16 -0
  611. package/dist/utils/env.d.ts +4 -5
  612. package/dist/utils/env.d.ts.map +1 -0
  613. package/dist/utils/error-conversion.d.ts +2 -3
  614. package/dist/utils/error-conversion.d.ts.map +1 -0
  615. package/dist/utils/execution-context.d.ts +5 -6
  616. package/dist/utils/execution-context.d.ts.map +1 -0
  617. package/dist/utils/fs-walk.d.ts +2 -3
  618. package/dist/utils/fs-walk.d.ts.map +1 -0
  619. package/dist/utils/index.cjs +3 -1
  620. package/dist/utils/index.d.ts +14 -63
  621. package/dist/utils/index.d.ts.map +1 -0
  622. package/dist/utils/index.js +1 -0
  623. package/dist/utils/path.d.ts +9 -10
  624. package/dist/utils/path.d.ts.map +1 -0
  625. package/dist/utils/port-utils.d.ts +2 -3
  626. package/dist/utils/port-utils.d.ts.map +1 -0
  627. package/dist/utils/redactor.d.ts +2 -3
  628. package/dist/utils/redactor.d.ts.map +1 -0
  629. package/dist/utils/result.d.ts +14 -27
  630. package/dist/utils/result.d.ts.map +1 -0
  631. package/dist/utils/safe-stringify.d.ts +2 -3
  632. package/dist/utils/safe-stringify.d.ts.map +1 -0
  633. package/dist/utils/schema-metadata.cjs +235 -0
  634. package/dist/utils/schema-metadata.d.ts +82 -0
  635. package/dist/utils/schema-metadata.d.ts.map +1 -0
  636. package/dist/utils/schema-metadata.js +207 -0
  637. package/dist/utils/schema.d.ts +2 -3
  638. package/dist/utils/schema.d.ts.map +1 -0
  639. package/dist/utils/service-initializer.cjs +71 -34
  640. package/dist/utils/service-initializer.d.ts +18 -43
  641. package/dist/utils/service-initializer.d.ts.map +1 -0
  642. package/dist/utils/service-initializer.js +71 -34
  643. package/dist/utils/user-info.d.ts +2 -3
  644. package/dist/utils/user-info.d.ts.map +1 -0
  645. package/dist/utils/zod-schema-converter.d.ts +3 -5
  646. package/dist/utils/zod-schema-converter.d.ts.map +1 -0
  647. package/package.json +6 -4
  648. package/dist/agent/DextoAgent.d.cts +0 -541
  649. package/dist/agent/agentCard.d.cts +0 -20
  650. package/dist/agent/error-codes.d.cts +0 -14
  651. package/dist/agent/errors.d.cts +0 -44
  652. package/dist/agent/index.d.cts +0 -60
  653. package/dist/agent/registry/error-codes.d.cts +0 -20
  654. package/dist/agent/registry/errors.d.cts +0 -67
  655. package/dist/agent/registry/registry.d.cts +0 -67
  656. package/dist/agent/registry/types.d.cts +0 -100
  657. package/dist/agent/schemas.d.cts +0 -1502
  658. package/dist/agent/state-manager.d.cts +0 -97
  659. package/dist/config/agent-resolver.d.cts +0 -15
  660. package/dist/config/error-codes.d.cts +0 -17
  661. package/dist/config/errors.d.cts +0 -49
  662. package/dist/config/index.d.cts +0 -7
  663. package/dist/config/loader.d.cts +0 -19
  664. package/dist/config/writer.d.cts +0 -38
  665. package/dist/context/compression/middle-removal.d.cts +0 -48
  666. package/dist/context/compression/oldest-removal.d.cts +0 -43
  667. package/dist/context/compression/types.d.cts +0 -21
  668. package/dist/context/error-codes.d.cts +0 -19
  669. package/dist/context/errors.d.cts +0 -36
  670. package/dist/context/index.d.cts +0 -19
  671. package/dist/context/manager.d.cts +0 -254
  672. package/dist/context/types.d.cts +0 -113
  673. package/dist/context/utils.d.cts +0 -79
  674. package/dist/errors/DextoBaseError.d.cts +0 -15
  675. package/dist/errors/DextoRuntimeError.d.cts +0 -37
  676. package/dist/errors/DextoValidationError.d.cts +0 -65
  677. package/dist/errors/index.d.cts +0 -18
  678. package/dist/errors/result-bridge.d.cts +0 -39
  679. package/dist/errors/types.d.cts +0 -62
  680. package/dist/events/index.d.cts +0 -272
  681. package/dist/index.browser.d.cts +0 -53
  682. package/dist/index.d.cts +0 -89
  683. package/dist/llm/error-codes.d.cts +0 -26
  684. package/dist/llm/errors.d.cts +0 -58
  685. package/dist/llm/formatters/anthropic.d.cts +0 -45
  686. package/dist/llm/formatters/factory.d.cts +0 -12
  687. package/dist/llm/formatters/openai.d.cts +0 -38
  688. package/dist/llm/formatters/types.d.cts +0 -43
  689. package/dist/llm/formatters/vercel.d.cts +0 -48
  690. package/dist/llm/index.d.cts +0 -39
  691. package/dist/llm/registry.d.cts +0 -176
  692. package/dist/llm/resolver.d.cts +0 -34
  693. package/dist/llm/schemas.d.cts +0 -111
  694. package/dist/llm/services/anthropic.d.cts +0 -65
  695. package/dist/llm/services/factory.d.cts +0 -39
  696. package/dist/llm/services/index.d.cts +0 -21
  697. package/dist/llm/services/openai.d.cts +0 -65
  698. package/dist/llm/services/test-utils.integration.d.cts +0 -83
  699. package/dist/llm/services/types.d.cts +0 -56
  700. package/dist/llm/services/vercel.d.cts +0 -72
  701. package/dist/llm/tokenizer/anthropic.d.cts +0 -21
  702. package/dist/llm/tokenizer/default.d.cts +0 -16
  703. package/dist/llm/tokenizer/factory.d.cts +0 -12
  704. package/dist/llm/tokenizer/google.d.cts +0 -31
  705. package/dist/llm/tokenizer/openai.d.cts +0 -32
  706. package/dist/llm/tokenizer/types.d.cts +0 -19
  707. package/dist/llm/types.d.cts +0 -29
  708. package/dist/llm/validation.d.cts +0 -60
  709. package/dist/logger/browser.d.cts +0 -29
  710. package/dist/logger/index.d.cts +0 -1
  711. package/dist/logger/logger.d.cts +0 -52
  712. package/dist/mcp/error-codes.d.cts +0 -16
  713. package/dist/mcp/errors.d.cts +0 -72
  714. package/dist/mcp/index.d.cts +0 -26
  715. package/dist/mcp/manager.d.cts +0 -163
  716. package/dist/mcp/mcp-client.d.cts +0 -108
  717. package/dist/mcp/resolver.d.cts +0 -22
  718. package/dist/mcp/schemas.d.cts +0 -266
  719. package/dist/mcp/types.d.cts +0 -21
  720. package/dist/preferences/constants.d.cts +0 -3
  721. package/dist/preferences/error-codes.d.cts +0 -9
  722. package/dist/preferences/errors.d.cts +0 -33
  723. package/dist/preferences/index.d.cts +0 -21
  724. package/dist/preferences/loader.d.cts +0 -45
  725. package/dist/preferences/schemas.d.cts +0 -104
  726. package/dist/search/index.d.cts +0 -5
  727. package/dist/search/search-service.d.cts +0 -47
  728. package/dist/search/types.d.cts +0 -78
  729. package/dist/session/chat-session.d.cts +0 -284
  730. package/dist/session/error-codes.d.cts +0 -13
  731. package/dist/session/errors.d.cts +0 -58
  732. package/dist/session/history/database.d.cts +0 -28
  733. package/dist/session/history/factory.d.cts +0 -11
  734. package/dist/session/history/types.d.cts +0 -17
  735. package/dist/session/index.d.cts +0 -53
  736. package/dist/session/schemas.d.cts +0 -16
  737. package/dist/session/session-manager.d.cts +0 -219
  738. package/dist/storage/backend/cache-backend.d.ts +0 -15
  739. package/dist/storage/backend/database-backend.d.ts +0 -19
  740. package/dist/storage/backend/memory-backend.d.cts +0 -34
  741. package/dist/storage/backend/postgres-backend.d.cts +0 -37
  742. package/dist/storage/backend/redis-backend.d.cts +0 -36
  743. package/dist/storage/backend/sqlite-backend.d.cts +0 -35
  744. package/dist/storage/backend/types.d.cts +0 -14
  745. package/dist/storage/backend/types.d.ts +0 -14
  746. package/dist/storage/error-codes.d.cts +0 -14
  747. package/dist/storage/errors.d.cts +0 -63
  748. package/dist/storage/index.d.cts +0 -7
  749. package/dist/storage/schemas.d.cts +0 -856
  750. package/dist/storage/storage-manager.d.cts +0 -52
  751. package/dist/storage/types.d.cts +0 -5
  752. package/dist/systemPrompt/contributors.d.cts +0 -44
  753. package/dist/systemPrompt/error-codes.d.cts +0 -13
  754. package/dist/systemPrompt/errors.d.cts +0 -55
  755. package/dist/systemPrompt/in-built-prompts.d.cts +0 -28
  756. package/dist/systemPrompt/index.d.cts +0 -14
  757. package/dist/systemPrompt/manager.d.cts +0 -31
  758. package/dist/systemPrompt/registry.d.cts +0 -20
  759. package/dist/systemPrompt/schemas.d.cts +0 -401
  760. package/dist/systemPrompt/types.d.cts +0 -19
  761. package/dist/tools/confirmation/allowed-tools-provider/factory.d.cts +0 -19
  762. package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.cts +0 -17
  763. package/dist/tools/confirmation/allowed-tools-provider/storage.d.cts +0 -26
  764. package/dist/tools/confirmation/allowed-tools-provider/types.d.cts +0 -35
  765. package/dist/tools/confirmation/event-based-confirmation-provider.cjs +0 -158
  766. package/dist/tools/confirmation/event-based-confirmation-provider.d.cts +0 -41
  767. package/dist/tools/confirmation/event-based-confirmation-provider.d.ts +0 -41
  768. package/dist/tools/confirmation/event-based-confirmation-provider.js +0 -134
  769. package/dist/tools/confirmation/factory.cjs +0 -52
  770. package/dist/tools/confirmation/factory.d.cts +0 -37
  771. package/dist/tools/confirmation/factory.d.ts +0 -37
  772. package/dist/tools/confirmation/factory.js +0 -28
  773. package/dist/tools/confirmation/noop-confirmation-provider.cjs +0 -49
  774. package/dist/tools/confirmation/noop-confirmation-provider.d.cts +0 -22
  775. package/dist/tools/confirmation/noop-confirmation-provider.d.ts +0 -22
  776. package/dist/tools/confirmation/noop-confirmation-provider.js +0 -25
  777. package/dist/tools/confirmation/types.d.cts +0 -46
  778. package/dist/tools/confirmation/types.d.ts +0 -46
  779. package/dist/tools/error-codes.d.cts +0 -18
  780. package/dist/tools/errors.d.cts +0 -97
  781. package/dist/tools/index.d.cts +0 -19
  782. package/dist/tools/internal-tools/implementations/search-history-tool.d.cts +0 -15
  783. package/dist/tools/internal-tools/index.d.cts +0 -13
  784. package/dist/tools/internal-tools/provider.d.cts +0 -66
  785. package/dist/tools/internal-tools/registry.d.cts +0 -45
  786. package/dist/tools/schemas.d.cts +0 -21
  787. package/dist/tools/tool-manager.d.cts +0 -106
  788. package/dist/tools/types.d.cts +0 -66
  789. package/dist/utils/api-key-resolver.d.cts +0 -23
  790. package/dist/utils/api-key-store.d.cts +0 -26
  791. package/dist/utils/env.d.cts +0 -29
  792. package/dist/utils/error-conversion.d.cts +0 -13
  793. package/dist/utils/execution-context.d.cts +0 -21
  794. package/dist/utils/fs-walk.d.cts +0 -9
  795. package/dist/utils/index.d.cts +0 -63
  796. package/dist/utils/path.d.cts +0 -54
  797. package/dist/utils/port-utils.d.cts +0 -11
  798. package/dist/utils/port-utils.spec.d.cts +0 -2
  799. package/dist/utils/port-utils.spec.d.ts +0 -2
  800. package/dist/utils/redactor.d.cts +0 -18
  801. package/dist/utils/result.d.cts +0 -180
  802. package/dist/utils/safe-stringify.d.cts +0 -7
  803. package/dist/utils/schema.d.cts +0 -6
  804. package/dist/utils/service-initializer.d.cts +0 -63
  805. package/dist/utils/user-info.d.cts +0 -3
  806. package/dist/utils/zod-schema-converter.d.cts +0 -13
  807. /package/dist/{storage/backend → memory}/types.cjs +0 -0
  808. /package/dist/{storage/backend → memory}/types.js +0 -0
  809. /package/dist/{tools/confirmation → plugins}/types.cjs +0 -0
  810. /package/dist/{tools/confirmation → plugins}/types.js +0 -0
  811. /package/dist/{storage/backend/cache-backend.js → prompts/types.js} +0 -0
  812. /package/dist/{storage/backend/database-backend.js → resources/handlers/types.js} +0 -0
@@ -1,20 +1,71 @@
1
1
  import { MCPClient } from "./mcp-client.js";
2
2
  import { logger } from "../logger/index.js";
3
3
  import { MCPError } from "./errors.js";
4
+ import { eventBus } from "../events/index.js";
4
5
  class MCPManager {
5
6
  clients = /* @__PURE__ */ new Map();
6
7
  connectionErrors = {};
7
- toolToClientMap = /* @__PURE__ */ new Map();
8
- serverToolsMap = /* @__PURE__ */ new Map();
8
+ toolCache = /* @__PURE__ */ new Map();
9
9
  toolConflicts = /* @__PURE__ */ new Set();
10
- promptToClientMap = /* @__PURE__ */ new Map();
11
- resourceToClientMap = /* @__PURE__ */ new Map();
10
+ // Track which tool names have conflicts
11
+ promptCache = /* @__PURE__ */ new Map();
12
+ resourceCache = /* @__PURE__ */ new Map();
12
13
  sanitizedNameToServerMap = /* @__PURE__ */ new Map();
14
+ approvalManager = null;
15
+ // Will be set by service initializer
13
16
  // Use a distinctive delimiter that won't appear in normal server/tool names
14
17
  // Using double hyphen as it's allowed in LLM tool name patterns (^[a-zA-Z0-9_-]+$)
15
18
  static SERVER_DELIMITER = "--";
16
19
  constructor() {
17
20
  }
21
+ /**
22
+ * Set the approval manager for handling elicitation requests from MCP servers
23
+ *
24
+ * TODO: Consider making ApprovalManager a required constructor parameter instead of using a setter.
25
+ * This would make the dependency explicit and remove the need for defensive `if (!approvalManager)` checks.
26
+ * Current setter pattern is useful if we want to expose MCPManager as a standalone service to end-users
27
+ * without requiring them to know about ApprovalManager.
28
+ */
29
+ setApprovalManager(approvalManager) {
30
+ this.approvalManager = approvalManager;
31
+ for (const [_name, client] of this.clients.entries()) {
32
+ if (client instanceof MCPClient) {
33
+ client.setApprovalManager(approvalManager);
34
+ }
35
+ }
36
+ }
37
+ buildQualifiedResourceKey(serverName, resourceUri) {
38
+ return `mcp:${serverName}:${resourceUri}`;
39
+ }
40
+ parseQualifiedResourceKey(key) {
41
+ if (!key.startsWith("mcp:")) {
42
+ throw MCPError.resourceNotFound(key);
43
+ }
44
+ const [, serverName, ...rest] = key.split(":");
45
+ if (!serverName || rest.length === 0) {
46
+ throw MCPError.resourceNotFound(key);
47
+ }
48
+ return { serverName, resourceUri: rest.join(":") };
49
+ }
50
+ removeServerResources(serverName) {
51
+ for (const [key, entry] of Array.from(this.resourceCache.entries())) {
52
+ if (entry.serverName === serverName) {
53
+ this.resourceCache.delete(key);
54
+ }
55
+ }
56
+ }
57
+ getResourceCacheEntry(resourceKey) {
58
+ if (this.resourceCache.has(resourceKey)) {
59
+ return this.resourceCache.get(resourceKey);
60
+ }
61
+ try {
62
+ const { serverName, resourceUri } = this.parseQualifiedResourceKey(resourceKey);
63
+ const canonicalKey = this.buildQualifiedResourceKey(serverName, resourceUri);
64
+ return this.resourceCache.get(canonicalKey);
65
+ } catch {
66
+ return void 0;
67
+ }
68
+ }
18
69
  /**
19
70
  * Register a client that provides tools (and potentially more)
20
71
  * @param name Unique name for the client
@@ -32,53 +83,66 @@ class MCPManager {
32
83
  }
33
84
  this.clients.set(name, client);
34
85
  this.sanitizedNameToServerMap.set(sanitizedName, name);
86
+ this.setupClientNotifications(name, client);
35
87
  logger.info(`Registered client: ${name}`);
36
88
  delete this.connectionErrors[name];
37
89
  }
90
+ /**
91
+ * Clears all cached data for a disconnected MCP client
92
+ *
93
+ * Performs comprehensive cleanup of tool, prompt, and resource caches.
94
+ * Uses two-pass algorithm to detect and resolve tool name conflicts:
95
+ * if a conflicted tool now has only one provider, restores simple name.
96
+ *
97
+ * @param clientName - The name/identifier of the MCP server being removed
98
+ * @private
99
+ */
38
100
  clearClientCache(clientName) {
39
101
  const client = this.clients.get(clientName);
40
102
  if (!client) return;
41
- const hadServerTools = this.serverToolsMap.has(clientName);
42
- this.serverToolsMap.delete(clientName);
43
103
  const sanitizedName = this.sanitizeServerName(clientName);
44
104
  if (this.sanitizedNameToServerMap.get(sanitizedName) === clientName) {
45
105
  this.sanitizedNameToServerMap.delete(sanitizedName);
46
106
  }
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
- }
107
+ const removedToolBaseNames = /* @__PURE__ */ new Set();
108
+ for (const [toolKey, entry] of Array.from(this.toolCache.entries())) {
109
+ if (entry.serverName === clientName) {
110
+ const delimiterIndex = toolKey.lastIndexOf(MCPManager.SERVER_DELIMITER);
111
+ const baseName = delimiterIndex === -1 ? toolKey : toolKey.substring(delimiterIndex + MCPManager.SERVER_DELIMITER.length);
112
+ removedToolBaseNames.add(baseName);
113
+ this.toolCache.delete(toolKey);
54
114
  }
55
- );
56
- if (hadServerTools) {
57
- this.rebuildToolConflicts();
58
115
  }
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);
116
+ for (const baseName of removedToolBaseNames) {
117
+ const remainingTools = Array.from(this.toolCache.entries()).filter(([key, _]) => {
118
+ const delimiterIndex = key.lastIndexOf(MCPManager.SERVER_DELIMITER);
119
+ const bn = delimiterIndex === -1 ? key : key.substring(delimiterIndex + MCPManager.SERVER_DELIMITER.length);
120
+ return bn === baseName;
121
+ });
122
+ if (remainingTools.length === 0) {
123
+ this.toolConflicts.delete(baseName);
124
+ } else if (remainingTools.length === 1 && this.toolConflicts.has(baseName)) {
125
+ const singleTool = remainingTools[0];
126
+ if (singleTool) {
127
+ const [qualifiedKey, entry] = singleTool;
128
+ this.toolCache.delete(qualifiedKey);
129
+ this.toolCache.set(baseName, entry);
130
+ this.toolConflicts.delete(baseName);
131
+ logger.debug(`Restored tool '${baseName}' to simple name (conflict resolved)`);
132
+ }
67
133
  }
68
134
  }
69
- for (const [toolName, count] of toolCounts.entries()) {
70
- if (count > 1) {
71
- this.toolConflicts.add(toolName);
72
- this.toolToClientMap.delete(toolName);
135
+ for (const [promptName, entry] of Array.from(this.promptCache.entries())) {
136
+ if (entry.serverName === clientName) {
137
+ this.promptCache.delete(promptName);
73
138
  }
74
139
  }
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
- }
140
+ for (const [key, entry] of Array.from(this.resourceCache.entries())) {
141
+ if (entry.client === client || entry.serverName === clientName) {
142
+ this.resourceCache.delete(key);
80
143
  }
81
144
  }
145
+ logger.debug(`Cleared cache for client: ${clientName}`);
82
146
  }
83
147
  /**
84
148
  * Sanitize server name for use in tool prefixing.
@@ -87,25 +151,80 @@ class MCPManager {
87
151
  sanitizeServerName(serverName) {
88
152
  return serverName.replace(/[^a-zA-Z0-9_-]/g, "_");
89
153
  }
154
+ /**
155
+ * Updates internal caches for a connected MCP client
156
+ *
157
+ * This method performs initial cache population after a client connects.
158
+ * It fetches and caches tools, prompts, and resources from the MCP server,
159
+ * implementing conflict detection and resolution for tool names.
160
+ *
161
+ * @param clientName - The name/identifier of the MCP server
162
+ * @param client - The connected MCP client instance
163
+ *
164
+ * @remarks
165
+ * **Tool Caching:**
166
+ * - Fetches all tools and caches them with full definitions
167
+ * - Detects naming conflicts when multiple servers provide same tool name
168
+ * - On conflict: uses qualified names (`server--toolname`) for all conflicting tools
169
+ * - Updates toolConflicts set to track which base names have conflicts
170
+ *
171
+ * **Prompt Caching:**
172
+ * - Fetches all prompts and their metadata (description, arguments)
173
+ * - Stores full prompt definitions in promptCache for efficient access
174
+ * - Falls back to minimal metadata if full definition fetch fails
175
+ *
176
+ * **Resource Caching:**
177
+ * - Fetches all resource summaries (uri, name, mimeType)
178
+ * - Stores resource metadata in resourceCache for quick lookups
179
+ *
180
+ * **Error Handling:**
181
+ * - Tool fetch errors abort caching entirely (early return)
182
+ * - Prompt/resource errors log warnings but don't block other caching
183
+ * - Individual prompt metadata errors are caught and logged
184
+ *
185
+ * @private
186
+ */
90
187
  async updateClientCache(clientName, client) {
91
- const serverTools = /* @__PURE__ */ new Map();
92
- this.serverToolsMap.set(clientName, serverTools);
93
188
  try {
94
189
  const tools = await client.getTools();
95
190
  logger.debug(
96
191
  `\u{1F527} Discovered ${Object.keys(tools).length} tools from server '${clientName}': [${Object.keys(tools).join(", ")}]`
97
192
  );
98
193
  for (const toolName in tools) {
99
- serverTools.set(toolName, client);
100
- const existingClient = this.toolToClientMap.get(toolName);
101
- if (existingClient && existingClient !== client) {
194
+ const toolDef = tools[toolName];
195
+ if (!toolDef) continue;
196
+ const existingEntry = this.toolCache.get(toolName);
197
+ if (existingEntry && existingEntry.serverName !== clientName) {
102
198
  this.toolConflicts.add(toolName);
103
- this.toolToClientMap.delete(toolName);
199
+ this.toolCache.delete(toolName);
200
+ const existingSanitized = this.sanitizeServerName(existingEntry.serverName);
201
+ const existingQualified = `${existingSanitized}${MCPManager.SERVER_DELIMITER}${toolName}`;
202
+ this.toolCache.set(existingQualified, existingEntry);
203
+ const newSanitized = this.sanitizeServerName(clientName);
204
+ const newQualified = `${newSanitized}${MCPManager.SERVER_DELIMITER}${toolName}`;
205
+ this.toolCache.set(newQualified, {
206
+ serverName: clientName,
207
+ client,
208
+ definition: toolDef
209
+ });
104
210
  logger.warn(
105
- `\u26A0\uFE0F Tool conflict detected for '${toolName}' - will use server prefix`
211
+ `\u26A0\uFE0F Tool conflict detected for '${toolName}' - using server prefixes: ${existingQualified}, ${newQualified}`
106
212
  );
107
- } else if (!this.toolConflicts.has(toolName)) {
108
- this.toolToClientMap.set(toolName, client);
213
+ } else if (this.toolConflicts.has(toolName)) {
214
+ const sanitizedName = this.sanitizeServerName(clientName);
215
+ const qualifiedName = `${sanitizedName}${MCPManager.SERVER_DELIMITER}${toolName}`;
216
+ this.toolCache.set(qualifiedName, {
217
+ serverName: clientName,
218
+ client,
219
+ definition: toolDef
220
+ });
221
+ logger.debug(`\u2705 Tool '${qualifiedName}' cached (known conflict)`);
222
+ } else {
223
+ this.toolCache.set(toolName, {
224
+ serverName: clientName,
225
+ client,
226
+ definition: toolDef
227
+ });
109
228
  logger.debug(`\u2705 Tool '${toolName}' mapped to ${clientName}`);
110
229
  }
111
230
  }
@@ -120,17 +239,33 @@ class MCPManager {
120
239
  }
121
240
  try {
122
241
  const prompts = await client.listPrompts();
123
- prompts.forEach((promptName) => {
124
- this.promptToClientMap.set(promptName, client);
125
- });
126
- logger.debug(`Cached prompts for client: ${clientName}`);
242
+ for (const prompt of prompts) {
243
+ const definition = {
244
+ name: prompt.name,
245
+ ...prompt.title && { title: prompt.title },
246
+ ...prompt.description && { description: prompt.description },
247
+ ...prompt.arguments && { arguments: prompt.arguments }
248
+ };
249
+ this.promptCache.set(prompt.name, {
250
+ serverName: clientName,
251
+ client,
252
+ definition
253
+ });
254
+ }
255
+ logger.debug(`Cached ${prompts.length} prompts for client: ${clientName}`);
127
256
  } catch (error) {
128
257
  logger.debug(`Skipping prompts for client ${clientName}: ${error}`);
129
258
  }
130
259
  try {
260
+ this.removeServerResources(clientName);
131
261
  const resources = await client.listResources();
132
- resources.forEach((resourceUri) => {
133
- this.resourceToClientMap.set(resourceUri, client);
262
+ resources.forEach((summary) => {
263
+ const key = this.buildQualifiedResourceKey(clientName, summary.uri);
264
+ this.resourceCache.set(key, {
265
+ serverName: clientName,
266
+ client,
267
+ summary
268
+ });
134
269
  });
135
270
  logger.debug(`Cached resources for client: ${clientName}`);
136
271
  } catch (error) {
@@ -138,45 +273,28 @@ class MCPManager {
138
273
  }
139
274
  }
140
275
  /**
141
- * Get all available MCP tools from all connected clients, updating the cache.
142
- * Conflicted tools are prefixed with server name using distinctive delimiter.
276
+ * Get all available MCP tools from cache (no network calls).
277
+ * Conflicted tools are already stored with qualified names.
143
278
  * @returns Promise resolving to a ToolSet mapping tool names to Tool definitions
144
279
  */
145
280
  async getAllTools() {
146
281
  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
- }
282
+ for (const [toolKey, entry] of this.toolCache.entries()) {
283
+ const toolDef = entry.definition;
284
+ if (toolKey.includes(MCPManager.SERVER_DELIMITER)) {
285
+ allTools[toolKey] = {
286
+ ...toolDef,
287
+ description: toolDef.description ? `${toolDef.description} (via ${entry.serverName})` : `Tool from ${entry.serverName}`
288
+ };
289
+ } else {
290
+ allTools[toolKey] = toolDef;
176
291
  }
177
292
  }
293
+ const serverNames = Array.from(
294
+ new Set(Array.from(this.toolCache.values()).map((e) => e.serverName))
295
+ );
178
296
  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(", ")}`
297
+ `\u{1F527} MCP tools from cache: ${Object.keys(allTools).length} total tools, ${this.toolConflicts.size} conflicts, connected servers: ${serverNames.join(", ")}`
180
298
  );
181
299
  if (logger.getLevel() === "debug") {
182
300
  Object.keys(allTools).forEach((toolName) => {
@@ -204,7 +322,7 @@ class MCPManager {
204
322
  delimiterIndex + MCPManager.SERVER_DELIMITER.length
205
323
  );
206
324
  const originalServerName = this.sanitizedNameToServerMap.get(serverPrefix);
207
- if (originalServerName && this.serverToolsMap.get(originalServerName)?.has(actualToolName)) {
325
+ if (originalServerName && this.toolCache.has(toolName)) {
208
326
  return { serverName: originalServerName, toolName: actualToolName };
209
327
  }
210
328
  return null;
@@ -216,12 +334,7 @@ class MCPManager {
216
334
  * @returns The client that provides the tool, or undefined if not found
217
335
  */
218
336
  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);
337
+ return this.toolCache.get(toolName)?.client;
225
338
  }
226
339
  /**
227
340
  * Execute a specific MCP tool with the given arguments.
@@ -234,13 +347,8 @@ class MCPManager {
234
347
  const client = this.getToolClient(toolName);
235
348
  if (!client) {
236
349
  logger.error(`\u274C No MCP tool found: ${toolName}`);
237
- logger.debug(
238
- `Available MCP tools: ${Array.from(this.toolToClientMap.keys()).join(", ")}`
239
- );
350
+ logger.debug(`Available MCP tools: ${Array.from(this.toolCache.keys()).join(", ")}`);
240
351
  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
352
  throw MCPError.toolNotFound(toolName);
245
353
  }
246
354
  const parsed = this.parseQualifiedToolName(toolName);
@@ -262,7 +370,7 @@ class MCPManager {
262
370
  * @returns Promise resolving to an array of unique prompt names.
263
371
  */
264
372
  async listAllPrompts() {
265
- return Array.from(this.promptToClientMap.keys());
373
+ return Array.from(this.promptCache.keys());
266
374
  }
267
375
  /**
268
376
  * Get the client that provides a specific prompt from the cache.
@@ -270,7 +378,7 @@ class MCPManager {
270
378
  * @returns The client instance or undefined.
271
379
  */
272
380
  getPromptClient(promptName) {
273
- return this.promptToClientMap.get(promptName);
381
+ return this.promptCache.get(promptName)?.client;
274
382
  }
275
383
  /**
276
384
  * Get a specific prompt definition by name.
@@ -286,31 +394,64 @@ class MCPManager {
286
394
  return await client.getPrompt(name, args);
287
395
  }
288
396
  /**
289
- * Get all available resource URIs from all connected clients, updating the cache.
290
- * @returns Promise resolving to an array of unique resource URIs.
397
+ * Get cached prompt metadata (no network calls).
398
+ * @param promptName Name of the prompt.
399
+ * @returns Cached prompt definition or undefined if not cached.
400
+ */
401
+ getPromptMetadata(promptName) {
402
+ const entry = this.promptCache.get(promptName);
403
+ return entry?.definition;
404
+ }
405
+ /**
406
+ * Get all cached prompt metadata (no network calls).
407
+ * @returns Array of all cached prompt definitions with server info.
408
+ */
409
+ getAllPromptMetadata() {
410
+ return Array.from(this.promptCache.entries()).map(([promptName, entry]) => ({
411
+ promptName,
412
+ serverName: entry.serverName,
413
+ definition: entry.definition
414
+ }));
415
+ }
416
+ /**
417
+ * Get all cached MCP resources (no network calls).
291
418
  */
292
419
  async listAllResources() {
293
- return Array.from(this.resourceToClientMap.keys());
420
+ return Array.from(this.resourceCache.entries()).map(([key, { serverName, summary }]) => ({
421
+ key,
422
+ serverName,
423
+ summary
424
+ }));
294
425
  }
295
426
  /**
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.
427
+ * Determine if a qualified MCP resource is cached.
428
+ */
429
+ hasResource(resourceKey) {
430
+ return this.getResourceCacheEntry(resourceKey) !== void 0;
431
+ }
432
+ /**
433
+ * Get cached resource metadata by qualified key.
299
434
  */
300
- getResourceClient(resourceUri) {
301
- return this.resourceToClientMap.get(resourceUri);
435
+ getResource(resourceKey) {
436
+ const entry = this.getResourceCacheEntry(resourceKey);
437
+ if (!entry) return void 0;
438
+ return {
439
+ key: resourceKey,
440
+ serverName: entry.serverName,
441
+ summary: entry.summary
442
+ };
302
443
  }
303
444
  /**
304
- * Read a specific resource by URI.
305
- * @param uri URI of the resource.
445
+ * Read a specific resource by qualified URI.
446
+ * @param resourceKey Qualified resource key in the form mcp:server:uri.
306
447
  * @returns Promise resolving to the resource content.
307
448
  */
308
- async readResource(uri) {
309
- const client = this.getResourceClient(uri);
310
- if (!client) {
311
- throw MCPError.resourceNotFound(uri);
449
+ async readResource(resourceKey) {
450
+ const entry = this.getResourceCacheEntry(resourceKey);
451
+ if (!entry) {
452
+ throw MCPError.resourceNotFound(resourceKey);
312
453
  }
313
- return await client.readResource(uri);
454
+ return await entry.client.readResource(entry.summary.uri);
314
455
  }
315
456
  /**
316
457
  * Initialize clients from server configurations
@@ -367,6 +508,9 @@ class MCPManager {
367
508
  try {
368
509
  logger.info(`Attempting to connect to new server '${name}'...`);
369
510
  await client.connect(config, name);
511
+ if (this.approvalManager) {
512
+ client.setApprovalManager(this.approvalManager);
513
+ }
370
514
  this.registerClient(name, client);
371
515
  await this.updateClientCache(name, client);
372
516
  logger.info(`Successfully connected and cached new server '${name}'`);
@@ -392,6 +536,20 @@ class MCPManager {
392
536
  getFailedConnections() {
393
537
  return this.connectionErrors;
394
538
  }
539
+ /**
540
+ * Refresh all client caches by re-fetching capabilities from servers
541
+ * Useful when you want to force a full refresh of tools, prompts, and resources
542
+ * In normal operation, caches are automatically kept fresh via server notifications
543
+ */
544
+ async refresh() {
545
+ logger.debug("Refreshing all MCPManager caches...");
546
+ const refreshPromises = [];
547
+ for (const [clientName, client] of this.clients.entries()) {
548
+ refreshPromises.push(this.updateClientCache(clientName, client));
549
+ }
550
+ await Promise.all(refreshPromises);
551
+ logger.debug(`\u2705 MCPManager cache refresh complete for ${this.clients.size} client(s)`);
552
+ }
395
553
  /**
396
554
  * Disconnect and remove a specific client by name.
397
555
  * @param name The name of the client to remove.
@@ -435,14 +593,204 @@ class MCPManager {
435
593
  await Promise.all(disconnectPromises);
436
594
  this.clients.clear();
437
595
  this.connectionErrors = {};
438
- this.toolToClientMap.clear();
439
- this.serverToolsMap.clear();
596
+ this.toolCache.clear();
440
597
  this.toolConflicts.clear();
441
- this.promptToClientMap.clear();
442
- this.resourceToClientMap.clear();
598
+ this.promptCache.clear();
599
+ this.resourceCache.clear();
443
600
  this.sanitizedNameToServerMap.clear();
444
601
  logger.info("Disconnected all clients and cleared caches.");
445
602
  }
603
+ /**
604
+ * Set up notification listeners for a specific client
605
+ */
606
+ setupClientNotifications(clientName, client) {
607
+ try {
608
+ client.on("resourceUpdated", async (params) => {
609
+ logger.debug(
610
+ `Received resource update notification from ${clientName}: ${params.uri}`
611
+ );
612
+ await this.handleResourceUpdated(clientName, params);
613
+ });
614
+ client.on("promptsListChanged", async () => {
615
+ logger.debug(`Received prompts list change notification from ${clientName}`);
616
+ await this.handlePromptsListChanged(clientName, client);
617
+ });
618
+ client.on("toolsListChanged", async () => {
619
+ logger.debug(`Received tools list change notification from ${clientName}`);
620
+ await this.handleToolsListChanged(clientName, client);
621
+ });
622
+ logger.debug(`Set up notification listeners for client: ${clientName}`);
623
+ } catch (error) {
624
+ logger.warn(`Failed to set up notification listeners for ${clientName}: ${error}`);
625
+ }
626
+ }
627
+ /**
628
+ * Handle resource updated notification
629
+ */
630
+ async handleResourceUpdated(serverName, params) {
631
+ try {
632
+ const client = this.clients.get(serverName);
633
+ if (client) {
634
+ const key = this.buildQualifiedResourceKey(serverName, params.uri);
635
+ try {
636
+ const resources = await client.listResources();
637
+ const updatedResource = resources.find((r) => r.uri === params.uri);
638
+ if (updatedResource) {
639
+ this.resourceCache.set(key, {
640
+ serverName,
641
+ client,
642
+ summary: updatedResource
643
+ });
644
+ logger.debug(`Updated resource cache for: ${params.uri}`);
645
+ }
646
+ } catch (error) {
647
+ logger.warn(`Failed to refresh resource ${params.uri}: ${error}`);
648
+ }
649
+ }
650
+ eventBus.emit("dexto:mcpResourceUpdated", {
651
+ serverName,
652
+ resourceUri: params.uri
653
+ });
654
+ } catch (error) {
655
+ logger.error(`Error handling resource update: ${error}`);
656
+ }
657
+ }
658
+ /**
659
+ * Handle prompts list changed notification
660
+ */
661
+ async handlePromptsListChanged(serverName, client) {
662
+ try {
663
+ const existingPrompts = Array.from(this.promptCache.entries()).filter(([_, entry]) => entry.client === client).map(([promptName]) => promptName);
664
+ existingPrompts.forEach((promptName) => {
665
+ this.promptCache.delete(promptName);
666
+ });
667
+ try {
668
+ const newPrompts = await client.listPrompts();
669
+ for (const prompt of newPrompts) {
670
+ const definition = {
671
+ name: prompt.name,
672
+ ...prompt.title && { title: prompt.title },
673
+ ...prompt.description && { description: prompt.description },
674
+ ...prompt.arguments && { arguments: prompt.arguments }
675
+ };
676
+ this.promptCache.set(prompt.name, {
677
+ serverName,
678
+ client,
679
+ definition
680
+ });
681
+ }
682
+ const promptNames = newPrompts.map((p) => p.name);
683
+ logger.debug(
684
+ `Updated prompts cache for ${serverName}: [${promptNames.join(", ")}]`
685
+ );
686
+ eventBus.emit("dexto:mcpPromptsListChanged", {
687
+ serverName,
688
+ prompts: promptNames
689
+ });
690
+ } catch (error) {
691
+ logger.warn(`Failed to refresh prompts for ${serverName}: ${error}`);
692
+ }
693
+ } catch (error) {
694
+ logger.error(`Error handling prompts list change: ${error}`);
695
+ }
696
+ }
697
+ /**
698
+ * Handle tools list changed notification
699
+ */
700
+ async handleToolsListChanged(serverName, client) {
701
+ try {
702
+ const removedToolBaseNames = /* @__PURE__ */ new Set();
703
+ for (const [toolKey, entry] of Array.from(this.toolCache.entries())) {
704
+ if (entry.serverName === serverName) {
705
+ const delimiterIndex = toolKey.lastIndexOf(MCPManager.SERVER_DELIMITER);
706
+ const baseName = delimiterIndex === -1 ? toolKey : toolKey.substring(
707
+ delimiterIndex + MCPManager.SERVER_DELIMITER.length
708
+ );
709
+ removedToolBaseNames.add(baseName);
710
+ this.toolCache.delete(toolKey);
711
+ }
712
+ }
713
+ try {
714
+ const tools = await client.getTools();
715
+ const toolNames = Object.keys(tools);
716
+ logger.debug(
717
+ `\u{1F527} Refreshing tools from server '${serverName}': [${toolNames.join(", ")}]`
718
+ );
719
+ for (const toolName in tools) {
720
+ const toolDef = tools[toolName];
721
+ if (!toolDef) continue;
722
+ const existingEntry = this.toolCache.get(toolName);
723
+ if (existingEntry && existingEntry.serverName !== serverName) {
724
+ this.toolConflicts.add(toolName);
725
+ this.toolCache.delete(toolName);
726
+ const existingSanitized = this.sanitizeServerName(existingEntry.serverName);
727
+ const existingQualified = `${existingSanitized}${MCPManager.SERVER_DELIMITER}${toolName}`;
728
+ this.toolCache.set(existingQualified, existingEntry);
729
+ const newSanitized = this.sanitizeServerName(serverName);
730
+ const newQualified = `${newSanitized}${MCPManager.SERVER_DELIMITER}${toolName}`;
731
+ this.toolCache.set(newQualified, {
732
+ serverName,
733
+ client,
734
+ definition: toolDef
735
+ });
736
+ logger.warn(
737
+ `\u26A0\uFE0F Tool conflict detected for '${toolName}' - using server prefixes: ${existingQualified}, ${newQualified}`
738
+ );
739
+ } else if (this.toolConflicts.has(toolName)) {
740
+ const sanitizedName = this.sanitizeServerName(serverName);
741
+ const qualifiedName = `${sanitizedName}${MCPManager.SERVER_DELIMITER}${toolName}`;
742
+ this.toolCache.set(qualifiedName, {
743
+ serverName,
744
+ client,
745
+ definition: toolDef
746
+ });
747
+ logger.debug(`\u2705 Tool '${qualifiedName}' cached (known conflict)`);
748
+ } else {
749
+ this.toolCache.set(toolName, {
750
+ serverName,
751
+ client,
752
+ definition: toolDef
753
+ });
754
+ logger.debug(`\u2705 Tool '${toolName}' mapped to ${serverName}`);
755
+ }
756
+ }
757
+ for (const baseName of removedToolBaseNames) {
758
+ const remainingTools = Array.from(this.toolCache.entries()).filter(
759
+ ([key, _]) => {
760
+ const delimiterIndex = key.lastIndexOf(MCPManager.SERVER_DELIMITER);
761
+ const bn = delimiterIndex === -1 ? key : key.substring(
762
+ delimiterIndex + MCPManager.SERVER_DELIMITER.length
763
+ );
764
+ return bn === baseName;
765
+ }
766
+ );
767
+ if (remainingTools.length === 0) {
768
+ this.toolConflicts.delete(baseName);
769
+ } else if (remainingTools.length === 1 && this.toolConflicts.has(baseName)) {
770
+ const singleTool = remainingTools[0];
771
+ if (singleTool) {
772
+ const [qualifiedKey, entry] = singleTool;
773
+ this.toolCache.delete(qualifiedKey);
774
+ this.toolCache.set(baseName, entry);
775
+ this.toolConflicts.delete(baseName);
776
+ logger.debug(
777
+ `Restored tool '${baseName}' to simple name (conflict resolved)`
778
+ );
779
+ }
780
+ }
781
+ }
782
+ logger.debug(`Updated tools cache for ${serverName}: [${toolNames.join(", ")}]`);
783
+ eventBus.emit("dexto:mcpToolsListChanged", {
784
+ serverName,
785
+ tools: toolNames
786
+ });
787
+ } catch (error) {
788
+ logger.warn(`Failed to refresh tools for ${serverName}: ${error}`);
789
+ }
790
+ } catch (error) {
791
+ logger.error(`Error handling tools list change: ${error}`);
792
+ }
793
+ }
446
794
  }
447
795
  export {
448
796
  MCPManager