@dexto/core 1.1.10 → 1.2.0

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