@dexto/core 1.1.4 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (597) hide show
  1. package/README.md +125 -0
  2. package/dist/agent/DextoAgent.cjs +793 -0
  3. package/dist/agent/DextoAgent.d.cts +473 -0
  4. package/dist/agent/DextoAgent.d.ts +473 -0
  5. package/dist/agent/DextoAgent.js +774 -0
  6. package/dist/agent/agentCard.cjs +44 -0
  7. package/dist/agent/agentCard.d.cts +20 -0
  8. package/dist/agent/agentCard.d.ts +20 -0
  9. package/dist/agent/agentCard.js +20 -0
  10. package/dist/agent/error-codes.cjs +35 -0
  11. package/dist/agent/error-codes.d.cts +14 -0
  12. package/dist/agent/error-codes.d.ts +14 -0
  13. package/dist/agent/error-codes.js +11 -0
  14. package/dist/agent/errors.cjs +84 -0
  15. package/dist/agent/errors.d.cts +40 -0
  16. package/dist/agent/errors.d.ts +40 -0
  17. package/dist/agent/errors.js +60 -0
  18. package/dist/agent/index.cjs +44 -0
  19. package/dist/agent/index.d.cts +60 -0
  20. package/dist/agent/index.d.ts +60 -0
  21. package/dist/agent/index.js +13 -0
  22. package/dist/agent/registry/error-codes.cjs +42 -0
  23. package/dist/agent/registry/error-codes.d.cts +20 -0
  24. package/dist/agent/registry/error-codes.d.ts +20 -0
  25. package/dist/agent/registry/error-codes.js +18 -0
  26. package/dist/agent/registry/errors.cjs +158 -0
  27. package/dist/agent/registry/errors.d.cts +67 -0
  28. package/dist/agent/registry/errors.d.ts +67 -0
  29. package/dist/{chunk-PI6XFMEW.js → agent/registry/errors.js} +43 -50
  30. package/dist/agent/registry/registry.cjs +291 -0
  31. package/dist/agent/registry/registry.d.cts +67 -0
  32. package/dist/agent/registry/registry.d.ts +67 -0
  33. package/dist/agent/registry/registry.js +256 -0
  34. package/dist/agent/registry/types.cjs +41 -0
  35. package/dist/agent/registry/types.d.cts +100 -0
  36. package/dist/agent/registry/types.d.ts +100 -0
  37. package/dist/agent/registry/types.js +16 -0
  38. package/dist/agent/schemas.cjs +113 -0
  39. package/dist/agent/schemas.d.cts +1502 -0
  40. package/dist/agent/schemas.d.ts +1502 -0
  41. package/dist/agent/schemas.js +88 -0
  42. package/dist/agent/state-manager.cjs +214 -0
  43. package/dist/agent/state-manager.d.cts +97 -0
  44. package/dist/agent/state-manager.d.ts +97 -0
  45. package/dist/agent/state-manager.js +190 -0
  46. package/dist/config/agent-resolver.cjs +153 -0
  47. package/dist/config/agent-resolver.d.cts +15 -0
  48. package/dist/config/agent-resolver.d.ts +15 -0
  49. package/dist/config/agent-resolver.js +122 -0
  50. package/dist/config/error-codes.cjs +39 -0
  51. package/dist/config/error-codes.d.cts +17 -0
  52. package/dist/config/error-codes.d.ts +17 -0
  53. package/dist/config/error-codes.js +15 -0
  54. package/dist/config/errors.cjs +126 -0
  55. package/dist/config/errors.d.cts +49 -0
  56. package/dist/config/errors.d.ts +49 -0
  57. package/dist/config/errors.js +102 -0
  58. package/dist/config/index.cjs +26 -0
  59. package/dist/config/index.d.cts +7 -0
  60. package/dist/config/index.d.ts +7 -0
  61. package/dist/config/index.js +3 -0
  62. package/dist/config/loader.cjs +119 -0
  63. package/dist/config/loader.d.cts +19 -0
  64. package/dist/config/loader.d.ts +19 -0
  65. package/dist/config/loader.js +85 -0
  66. package/dist/config/writer.cjs +182 -0
  67. package/dist/config/writer.d.cts +38 -0
  68. package/dist/config/writer.d.ts +38 -0
  69. package/dist/config/writer.js +146 -0
  70. package/dist/context/compression/middle-removal.cjs +95 -0
  71. package/dist/context/compression/middle-removal.d.cts +48 -0
  72. package/dist/context/compression/middle-removal.d.ts +48 -0
  73. package/dist/context/compression/middle-removal.js +71 -0
  74. package/dist/context/compression/oldest-removal.cjs +70 -0
  75. package/dist/context/compression/oldest-removal.d.cts +43 -0
  76. package/dist/context/compression/oldest-removal.d.ts +43 -0
  77. package/dist/context/compression/oldest-removal.js +46 -0
  78. package/dist/context/compression/types.cjs +16 -0
  79. package/dist/context/compression/types.d.cts +21 -0
  80. package/dist/context/compression/types.d.ts +21 -0
  81. package/dist/context/compression/types.js +0 -0
  82. package/dist/context/error-codes.cjs +41 -0
  83. package/dist/context/error-codes.d.cts +19 -0
  84. package/dist/context/error-codes.d.ts +19 -0
  85. package/dist/context/error-codes.js +17 -0
  86. package/dist/context/errors.cjs +146 -0
  87. package/dist/context/errors.d.cts +36 -0
  88. package/dist/context/errors.d.ts +36 -0
  89. package/dist/context/errors.js +122 -0
  90. package/dist/context/index.cjs +24 -0
  91. package/dist/context/index.d.cts +19 -0
  92. package/dist/context/index.d.ts +19 -0
  93. package/dist/context/index.js +2 -0
  94. package/dist/context/manager.cjs +516 -0
  95. package/dist/context/manager.d.cts +254 -0
  96. package/dist/context/manager.d.ts +254 -0
  97. package/dist/context/manager.js +492 -0
  98. package/dist/context/types.cjs +16 -0
  99. package/dist/context/types.d.cts +113 -0
  100. package/dist/context/types.d.ts +113 -0
  101. package/dist/context/types.js +0 -0
  102. package/dist/context/utils.cjs +406 -0
  103. package/dist/context/utils.d.cts +79 -0
  104. package/dist/context/utils.d.ts +79 -0
  105. package/dist/context/utils.js +374 -0
  106. package/dist/errors/DextoBaseError.cjs +36 -0
  107. package/dist/errors/DextoBaseError.d.cts +15 -0
  108. package/dist/errors/DextoBaseError.d.ts +15 -0
  109. package/dist/errors/DextoBaseError.js +12 -0
  110. package/dist/errors/DextoRuntimeError.cjs +50 -0
  111. package/dist/errors/DextoRuntimeError.d.cts +37 -0
  112. package/dist/errors/DextoRuntimeError.d.ts +37 -0
  113. package/dist/errors/DextoRuntimeError.js +26 -0
  114. package/dist/errors/DextoValidationError.cjs +118 -0
  115. package/dist/errors/DextoValidationError.d.cts +65 -0
  116. package/dist/errors/DextoValidationError.d.ts +65 -0
  117. package/dist/{chunk-XFQLRBHE.js → errors/DextoValidationError.js} +4 -32
  118. package/dist/errors/index.cjs +42 -0
  119. package/dist/errors/index.d.cts +18 -0
  120. package/dist/errors/index.d.ts +18 -0
  121. package/dist/errors/index.js +13 -0
  122. package/dist/errors/result-bridge.cjs +38 -0
  123. package/dist/errors/result-bridge.d.cts +39 -0
  124. package/dist/errors/result-bridge.d.ts +39 -0
  125. package/dist/errors/result-bridge.js +14 -0
  126. package/dist/errors/types.cjs +54 -0
  127. package/dist/errors/types.d.cts +62 -0
  128. package/dist/errors/types.d.ts +62 -0
  129. package/dist/errors/types.js +29 -0
  130. package/dist/events/index.cjs +169 -0
  131. package/dist/events/index.d.cts +272 -0
  132. package/dist/events/index.d.ts +272 -0
  133. package/dist/events/index.js +136 -0
  134. package/dist/index.browser.cjs +9 -220
  135. package/dist/index.browser.d.cts +53 -379
  136. package/dist/index.browser.d.ts +53 -379
  137. package/dist/index.browser.js +4 -210
  138. package/dist/index.cjs +31 -15266
  139. package/dist/index.d.cts +89 -6842
  140. package/dist/index.d.ts +89 -6842
  141. package/dist/index.js +14 -9914
  142. package/dist/llm/error-codes.cjs +48 -0
  143. package/dist/llm/error-codes.d.cts +26 -0
  144. package/dist/llm/error-codes.d.ts +26 -0
  145. package/dist/llm/error-codes.js +24 -0
  146. package/dist/llm/errors.cjs +108 -0
  147. package/dist/llm/errors.d.cts +58 -0
  148. package/dist/llm/errors.d.ts +58 -0
  149. package/dist/llm/errors.js +84 -0
  150. package/dist/llm/formatters/anthropic.cjs +246 -0
  151. package/dist/llm/formatters/anthropic.d.cts +45 -0
  152. package/dist/llm/formatters/anthropic.d.ts +45 -0
  153. package/dist/llm/formatters/anthropic.js +227 -0
  154. package/dist/llm/formatters/factory.cjs +51 -0
  155. package/dist/llm/formatters/factory.d.cts +12 -0
  156. package/dist/llm/formatters/factory.d.ts +12 -0
  157. package/dist/llm/formatters/factory.js +27 -0
  158. package/dist/llm/formatters/openai.cjs +167 -0
  159. package/dist/llm/formatters/openai.d.cts +38 -0
  160. package/dist/llm/formatters/openai.d.ts +38 -0
  161. package/dist/llm/formatters/openai.js +147 -0
  162. package/dist/llm/formatters/types.cjs +16 -0
  163. package/dist/llm/formatters/types.d.cts +43 -0
  164. package/dist/llm/formatters/types.d.ts +43 -0
  165. package/dist/llm/formatters/types.js +0 -0
  166. package/dist/llm/formatters/vercel.cjs +411 -0
  167. package/dist/llm/formatters/vercel.d.cts +48 -0
  168. package/dist/llm/formatters/vercel.d.ts +48 -0
  169. package/dist/llm/formatters/vercel.js +387 -0
  170. package/dist/llm/index.cjs +34 -0
  171. package/dist/llm/index.d.cts +39 -0
  172. package/dist/llm/index.d.ts +39 -0
  173. package/dist/llm/index.js +7 -0
  174. package/dist/llm/registry.cjs +881 -0
  175. package/dist/llm/registry.d.cts +176 -0
  176. package/dist/llm/registry.d.ts +176 -0
  177. package/dist/{chunk-J6AXCN3H.js → llm/registry.js} +25 -455
  178. package/dist/llm/resolver.cjs +154 -0
  179. package/dist/llm/resolver.d.cts +34 -0
  180. package/dist/llm/resolver.d.ts +34 -0
  181. package/dist/llm/resolver.js +136 -0
  182. package/dist/llm/schemas.cjs +188 -0
  183. package/dist/llm/schemas.d.cts +111 -0
  184. package/dist/llm/schemas.d.ts +111 -0
  185. package/dist/llm/schemas.js +172 -0
  186. package/dist/llm/services/anthropic.cjs +398 -0
  187. package/dist/llm/services/anthropic.d.cts +65 -0
  188. package/dist/llm/services/anthropic.d.ts +65 -0
  189. package/dist/llm/services/anthropic.js +374 -0
  190. package/dist/llm/services/factory.cjs +164 -0
  191. package/dist/llm/services/factory.d.cts +39 -0
  192. package/dist/llm/services/factory.d.ts +39 -0
  193. package/dist/llm/services/factory.js +130 -0
  194. package/dist/llm/services/index.cjs +22 -0
  195. package/dist/llm/services/index.d.cts +21 -0
  196. package/dist/llm/services/index.d.ts +21 -0
  197. package/dist/llm/services/index.js +1 -0
  198. package/dist/llm/services/openai.cjs +470 -0
  199. package/dist/llm/services/openai.d.cts +65 -0
  200. package/dist/llm/services/openai.d.ts +65 -0
  201. package/dist/llm/services/openai.js +446 -0
  202. package/dist/llm/services/test-utils.integration.cjs +169 -0
  203. package/dist/llm/services/test-utils.integration.d.cts +83 -0
  204. package/dist/llm/services/test-utils.integration.d.ts +83 -0
  205. package/dist/llm/services/test-utils.integration.js +142 -0
  206. package/dist/llm/services/types.cjs +16 -0
  207. package/dist/llm/services/types.d.cts +56 -0
  208. package/dist/llm/services/types.d.ts +56 -0
  209. package/dist/llm/services/types.js +0 -0
  210. package/dist/llm/services/vercel.cjs +525 -0
  211. package/dist/llm/services/vercel.d.cts +72 -0
  212. package/dist/llm/services/vercel.d.ts +72 -0
  213. package/dist/llm/services/vercel.js +506 -0
  214. package/dist/llm/tokenizer/anthropic.cjs +43 -0
  215. package/dist/llm/tokenizer/anthropic.d.cts +21 -0
  216. package/dist/llm/tokenizer/anthropic.d.ts +21 -0
  217. package/dist/llm/tokenizer/anthropic.js +19 -0
  218. package/dist/llm/tokenizer/default.cjs +41 -0
  219. package/dist/llm/tokenizer/default.d.cts +16 -0
  220. package/dist/llm/tokenizer/default.d.ts +16 -0
  221. package/dist/llm/tokenizer/default.js +17 -0
  222. package/dist/llm/tokenizer/factory.cjs +44 -0
  223. package/dist/llm/tokenizer/factory.d.cts +12 -0
  224. package/dist/llm/tokenizer/factory.d.ts +12 -0
  225. package/dist/llm/tokenizer/factory.js +20 -0
  226. package/dist/llm/tokenizer/google.cjs +52 -0
  227. package/dist/llm/tokenizer/google.d.cts +31 -0
  228. package/dist/llm/tokenizer/google.d.ts +31 -0
  229. package/dist/llm/tokenizer/google.js +28 -0
  230. package/dist/llm/tokenizer/openai.cjs +108 -0
  231. package/dist/llm/tokenizer/openai.d.cts +32 -0
  232. package/dist/llm/tokenizer/openai.d.ts +32 -0
  233. package/dist/llm/tokenizer/openai.js +83 -0
  234. package/dist/llm/tokenizer/types.cjs +33 -0
  235. package/dist/llm/tokenizer/types.d.cts +19 -0
  236. package/dist/llm/tokenizer/types.d.ts +19 -0
  237. package/dist/llm/tokenizer/types.js +9 -0
  238. package/dist/llm/types.cjs +42 -0
  239. package/dist/llm/types.d.cts +29 -0
  240. package/dist/llm/types.d.ts +29 -0
  241. package/dist/llm/types.js +16 -0
  242. package/dist/llm/validation.cjs +162 -0
  243. package/dist/llm/validation.d.cts +60 -0
  244. package/dist/llm/validation.d.ts +60 -0
  245. package/dist/llm/validation.js +138 -0
  246. package/dist/logger/browser.cjs +86 -0
  247. package/dist/logger/browser.d.cts +29 -0
  248. package/dist/logger/browser.d.ts +29 -0
  249. package/dist/logger/browser.js +61 -0
  250. package/dist/logger/index.cjs +22 -0
  251. package/dist/logger/index.d.cts +1 -0
  252. package/dist/logger/index.d.ts +1 -0
  253. package/dist/logger/index.js +1 -0
  254. package/dist/logger/logger.cjs +362 -0
  255. package/dist/logger/logger.d.cts +52 -0
  256. package/dist/logger/logger.d.ts +52 -0
  257. package/dist/logger/logger.js +327 -0
  258. package/dist/mcp/error-codes.cjs +38 -0
  259. package/dist/mcp/error-codes.d.cts +16 -0
  260. package/dist/mcp/error-codes.d.ts +16 -0
  261. package/dist/mcp/error-codes.js +14 -0
  262. package/dist/mcp/errors.cjs +131 -0
  263. package/dist/mcp/errors.d.cts +72 -0
  264. package/dist/mcp/errors.d.ts +72 -0
  265. package/dist/mcp/errors.js +107 -0
  266. package/dist/mcp/index.cjs +34 -0
  267. package/dist/mcp/index.d.cts +26 -0
  268. package/dist/mcp/index.d.ts +26 -0
  269. package/dist/mcp/index.js +7 -0
  270. package/dist/mcp/manager.cjs +473 -0
  271. package/dist/mcp/manager.d.cts +163 -0
  272. package/dist/mcp/manager.d.ts +163 -0
  273. package/dist/mcp/manager.js +449 -0
  274. package/dist/mcp/mcp-client.cjs +420 -0
  275. package/dist/mcp/mcp-client.d.cts +108 -0
  276. package/dist/mcp/mcp-client.d.ts +108 -0
  277. package/dist/mcp/mcp-client.js +396 -0
  278. package/dist/mcp/resolver.cjs +78 -0
  279. package/dist/mcp/resolver.d.cts +22 -0
  280. package/dist/mcp/resolver.d.ts +22 -0
  281. package/dist/mcp/resolver.js +56 -0
  282. package/dist/mcp/schemas.cjs +82 -0
  283. package/dist/mcp/schemas.d.cts +266 -0
  284. package/dist/mcp/schemas.d.ts +266 -0
  285. package/dist/mcp/schemas.js +54 -0
  286. package/dist/mcp/types.cjs +16 -0
  287. package/dist/mcp/types.d.cts +21 -0
  288. package/dist/mcp/types.d.ts +21 -0
  289. package/dist/mcp/types.js +0 -0
  290. package/dist/preferences/constants.cjs +28 -0
  291. package/dist/preferences/constants.d.cts +3 -0
  292. package/dist/preferences/constants.d.ts +3 -0
  293. package/dist/preferences/constants.js +4 -0
  294. package/dist/preferences/error-codes.cjs +35 -0
  295. package/dist/preferences/error-codes.d.cts +9 -0
  296. package/dist/preferences/error-codes.d.ts +9 -0
  297. package/dist/preferences/error-codes.js +11 -0
  298. package/dist/preferences/errors.cjs +75 -0
  299. package/dist/preferences/errors.d.cts +33 -0
  300. package/dist/preferences/errors.d.ts +33 -0
  301. package/dist/preferences/errors.js +50 -0
  302. package/dist/preferences/index.cjs +55 -0
  303. package/dist/preferences/index.d.cts +21 -0
  304. package/dist/preferences/index.d.ts +21 -0
  305. package/dist/preferences/index.js +31 -0
  306. package/dist/preferences/loader.cjs +136 -0
  307. package/dist/preferences/loader.d.cts +45 -0
  308. package/dist/preferences/loader.d.ts +45 -0
  309. package/dist/preferences/loader.js +107 -0
  310. package/dist/preferences/schemas.cjs +74 -0
  311. package/dist/preferences/schemas.d.cts +104 -0
  312. package/dist/preferences/schemas.d.ts +104 -0
  313. package/dist/preferences/schemas.js +47 -0
  314. package/dist/search/index.cjs +28 -0
  315. package/dist/search/index.d.cts +5 -0
  316. package/dist/search/index.d.ts +5 -0
  317. package/dist/search/index.js +4 -0
  318. package/dist/search/search-service.cjs +245 -0
  319. package/dist/search/search-service.d.cts +47 -0
  320. package/dist/search/search-service.d.ts +47 -0
  321. package/dist/search/search-service.js +221 -0
  322. package/dist/search/types.cjs +16 -0
  323. package/dist/search/types.d.cts +78 -0
  324. package/dist/search/types.d.ts +78 -0
  325. package/dist/search/types.js +0 -0
  326. package/dist/session/chat-session.cjs +354 -0
  327. package/dist/session/chat-session.d.cts +284 -0
  328. package/dist/session/chat-session.d.ts +284 -0
  329. package/dist/session/chat-session.js +333 -0
  330. package/dist/session/error-codes.cjs +35 -0
  331. package/dist/session/error-codes.d.cts +13 -0
  332. package/dist/session/error-codes.d.ts +13 -0
  333. package/dist/session/error-codes.js +11 -0
  334. package/dist/session/errors.cjs +93 -0
  335. package/dist/session/errors.d.cts +58 -0
  336. package/dist/session/errors.d.ts +58 -0
  337. package/dist/session/errors.js +69 -0
  338. package/dist/session/history/database.cjs +95 -0
  339. package/dist/session/history/database.d.cts +28 -0
  340. package/dist/session/history/database.d.ts +28 -0
  341. package/dist/session/history/database.js +71 -0
  342. package/dist/session/history/factory.cjs +31 -0
  343. package/dist/session/history/factory.d.cts +11 -0
  344. package/dist/session/history/factory.d.ts +11 -0
  345. package/dist/session/history/factory.js +7 -0
  346. package/dist/session/history/types.cjs +16 -0
  347. package/dist/session/history/types.d.cts +17 -0
  348. package/dist/session/history/types.d.ts +17 -0
  349. package/dist/session/history/types.js +0 -0
  350. package/dist/session/index.cjs +37 -0
  351. package/dist/session/index.d.cts +53 -0
  352. package/dist/session/index.d.ts +53 -0
  353. package/dist/session/index.js +10 -0
  354. package/dist/session/schemas.cjs +32 -0
  355. package/dist/session/schemas.d.cts +16 -0
  356. package/dist/session/schemas.d.ts +16 -0
  357. package/dist/session/schemas.js +8 -0
  358. package/dist/session/session-manager.cjs +481 -0
  359. package/dist/session/session-manager.d.cts +219 -0
  360. package/dist/session/session-manager.d.ts +219 -0
  361. package/dist/session/session-manager.js +457 -0
  362. package/dist/storage/backend/cache-backend.cjs +16 -0
  363. package/dist/storage/backend/cache-backend.d.cts +15 -0
  364. package/dist/storage/backend/cache-backend.d.ts +15 -0
  365. package/dist/storage/backend/cache-backend.js +0 -0
  366. package/dist/storage/backend/database-backend.cjs +16 -0
  367. package/dist/storage/backend/database-backend.d.cts +19 -0
  368. package/dist/storage/backend/database-backend.d.ts +19 -0
  369. package/dist/storage/backend/database-backend.js +0 -0
  370. package/dist/storage/backend/memory-backend.cjs +140 -0
  371. package/dist/storage/backend/memory-backend.d.cts +34 -0
  372. package/dist/storage/backend/memory-backend.d.ts +34 -0
  373. package/dist/storage/backend/memory-backend.js +116 -0
  374. package/dist/storage/backend/postgres-backend.cjs +231 -0
  375. package/dist/storage/backend/postgres-backend.d.cts +37 -0
  376. package/dist/storage/backend/postgres-backend.d.ts +37 -0
  377. package/dist/{postgres-backend-WMWS7RAT.js → storage/backend/postgres-backend.js} +3 -12
  378. package/dist/storage/backend/redis-backend.cjs +184 -0
  379. package/dist/storage/backend/redis-backend.d.cts +36 -0
  380. package/dist/storage/backend/redis-backend.d.ts +36 -0
  381. package/dist/{redis-backend-BNLN3XHX.js → storage/backend/redis-backend.js} +3 -12
  382. package/dist/storage/backend/sqlite-backend.cjs +271 -0
  383. package/dist/storage/backend/sqlite-backend.d.cts +35 -0
  384. package/dist/storage/backend/sqlite-backend.d.ts +35 -0
  385. package/dist/{sqlite-backend-AR6XNK2Q.js → storage/backend/sqlite-backend.js} +6 -17
  386. package/dist/storage/backend/types.cjs +16 -0
  387. package/dist/storage/backend/types.d.cts +14 -0
  388. package/dist/storage/backend/types.d.ts +14 -0
  389. package/dist/storage/backend/types.js +0 -0
  390. package/dist/storage/error-codes.cjs +36 -0
  391. package/dist/storage/error-codes.d.cts +14 -0
  392. package/dist/storage/error-codes.d.ts +14 -0
  393. package/dist/storage/error-codes.js +12 -0
  394. package/dist/storage/errors.cjs +104 -0
  395. package/dist/storage/errors.d.cts +63 -0
  396. package/dist/storage/errors.d.ts +63 -0
  397. package/dist/{chunk-F2QFAECT.js → storage/errors.js} +23 -30
  398. package/dist/storage/index.cjs +33 -0
  399. package/dist/storage/index.d.cts +7 -0
  400. package/dist/storage/index.d.ts +7 -0
  401. package/dist/storage/index.js +7 -0
  402. package/dist/storage/schemas.cjs +113 -0
  403. package/dist/storage/schemas.d.cts +856 -0
  404. package/dist/storage/schemas.d.ts +856 -0
  405. package/dist/storage/schemas.js +89 -0
  406. package/dist/storage/storage-manager.cjs +208 -0
  407. package/dist/storage/storage-manager.d.cts +52 -0
  408. package/dist/storage/storage-manager.d.ts +52 -0
  409. package/dist/storage/storage-manager.js +173 -0
  410. package/dist/storage/types.cjs +16 -0
  411. package/dist/storage/types.d.cts +5 -0
  412. package/dist/storage/types.d.ts +5 -0
  413. package/dist/storage/types.js +0 -0
  414. package/dist/systemPrompt/contributors.cjs +146 -0
  415. package/dist/systemPrompt/contributors.d.cts +44 -0
  416. package/dist/systemPrompt/contributors.d.ts +44 -0
  417. package/dist/systemPrompt/contributors.js +120 -0
  418. package/dist/systemPrompt/error-codes.cjs +35 -0
  419. package/dist/systemPrompt/error-codes.d.cts +13 -0
  420. package/dist/systemPrompt/error-codes.d.ts +13 -0
  421. package/dist/systemPrompt/error-codes.js +11 -0
  422. package/dist/systemPrompt/errors.cjs +93 -0
  423. package/dist/systemPrompt/errors.d.cts +55 -0
  424. package/dist/systemPrompt/errors.d.ts +55 -0
  425. package/dist/systemPrompt/errors.js +69 -0
  426. package/dist/systemPrompt/in-built-prompts.cjs +68 -0
  427. package/dist/systemPrompt/in-built-prompts.d.cts +28 -0
  428. package/dist/systemPrompt/in-built-prompts.d.ts +28 -0
  429. package/dist/systemPrompt/in-built-prompts.js +42 -0
  430. package/dist/systemPrompt/index.cjs +30 -0
  431. package/dist/systemPrompt/index.d.cts +14 -0
  432. package/dist/systemPrompt/index.d.ts +14 -0
  433. package/dist/systemPrompt/index.js +5 -0
  434. package/dist/systemPrompt/manager.cjs +93 -0
  435. package/dist/systemPrompt/manager.d.cts +31 -0
  436. package/dist/systemPrompt/manager.d.ts +31 -0
  437. package/dist/systemPrompt/manager.js +69 -0
  438. package/dist/systemPrompt/registry.cjs +51 -0
  439. package/dist/systemPrompt/registry.d.cts +20 -0
  440. package/dist/systemPrompt/registry.d.ts +20 -0
  441. package/dist/systemPrompt/registry.js +15 -0
  442. package/dist/systemPrompt/schemas.cjs +107 -0
  443. package/dist/systemPrompt/schemas.d.cts +401 -0
  444. package/dist/systemPrompt/schemas.d.ts +401 -0
  445. package/dist/systemPrompt/schemas.js +81 -0
  446. package/dist/systemPrompt/types.cjs +16 -0
  447. package/dist/systemPrompt/types.d.cts +19 -0
  448. package/dist/systemPrompt/types.d.ts +19 -0
  449. package/dist/systemPrompt/types.js +0 -0
  450. package/dist/tools/confirmation/allowed-tools-provider/factory.cjs +44 -0
  451. package/dist/tools/confirmation/allowed-tools-provider/factory.d.cts +19 -0
  452. package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts +19 -0
  453. package/dist/tools/confirmation/allowed-tools-provider/factory.js +20 -0
  454. package/dist/tools/confirmation/allowed-tools-provider/in-memory.cjs +62 -0
  455. package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.cts +17 -0
  456. package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts +17 -0
  457. package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +38 -0
  458. package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +68 -0
  459. package/dist/tools/confirmation/allowed-tools-provider/storage.d.cts +26 -0
  460. package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts +26 -0
  461. package/dist/tools/confirmation/allowed-tools-provider/storage.js +44 -0
  462. package/dist/tools/confirmation/allowed-tools-provider/types.cjs +16 -0
  463. package/dist/tools/confirmation/allowed-tools-provider/types.d.cts +35 -0
  464. package/dist/tools/confirmation/allowed-tools-provider/types.d.ts +35 -0
  465. package/dist/tools/confirmation/allowed-tools-provider/types.js +0 -0
  466. package/dist/tools/confirmation/event-based-confirmation-provider.cjs +158 -0
  467. package/dist/tools/confirmation/event-based-confirmation-provider.d.cts +41 -0
  468. package/dist/tools/confirmation/event-based-confirmation-provider.d.ts +41 -0
  469. package/dist/tools/confirmation/event-based-confirmation-provider.js +134 -0
  470. package/dist/tools/confirmation/factory.cjs +52 -0
  471. package/dist/tools/confirmation/factory.d.cts +37 -0
  472. package/dist/tools/confirmation/factory.d.ts +37 -0
  473. package/dist/tools/confirmation/factory.js +28 -0
  474. package/dist/tools/confirmation/noop-confirmation-provider.cjs +49 -0
  475. package/dist/tools/confirmation/noop-confirmation-provider.d.cts +22 -0
  476. package/dist/tools/confirmation/noop-confirmation-provider.d.ts +22 -0
  477. package/dist/tools/confirmation/noop-confirmation-provider.js +25 -0
  478. package/dist/tools/confirmation/types.cjs +16 -0
  479. package/dist/tools/confirmation/types.d.cts +46 -0
  480. package/dist/tools/confirmation/types.d.ts +46 -0
  481. package/dist/tools/confirmation/types.js +0 -0
  482. package/dist/tools/error-codes.cjs +40 -0
  483. package/dist/tools/error-codes.d.cts +18 -0
  484. package/dist/tools/error-codes.d.ts +18 -0
  485. package/dist/tools/error-codes.js +16 -0
  486. package/dist/tools/errors.cjs +164 -0
  487. package/dist/tools/errors.d.cts +97 -0
  488. package/dist/tools/errors.d.ts +97 -0
  489. package/dist/tools/errors.js +140 -0
  490. package/dist/tools/index.cjs +37 -0
  491. package/dist/tools/index.d.cts +19 -0
  492. package/dist/tools/index.d.ts +19 -0
  493. package/dist/tools/index.js +8 -0
  494. package/dist/tools/internal-tools/implementations/search-history-tool.cjs +61 -0
  495. package/dist/tools/internal-tools/implementations/search-history-tool.d.cts +15 -0
  496. package/dist/tools/internal-tools/implementations/search-history-tool.d.ts +15 -0
  497. package/dist/tools/internal-tools/implementations/search-history-tool.js +37 -0
  498. package/dist/tools/internal-tools/index.cjs +24 -0
  499. package/dist/tools/internal-tools/index.d.cts +13 -0
  500. package/dist/tools/internal-tools/index.d.ts +13 -0
  501. package/dist/tools/internal-tools/index.js +2 -0
  502. package/dist/tools/internal-tools/provider.cjs +159 -0
  503. package/dist/tools/internal-tools/provider.d.cts +66 -0
  504. package/dist/tools/internal-tools/provider.d.ts +66 -0
  505. package/dist/tools/internal-tools/provider.js +135 -0
  506. package/dist/tools/internal-tools/registry.cjs +43 -0
  507. package/dist/tools/internal-tools/registry.d.cts +45 -0
  508. package/dist/tools/internal-tools/registry.d.ts +45 -0
  509. package/dist/tools/internal-tools/registry.js +17 -0
  510. package/dist/tools/schemas.cjs +45 -0
  511. package/dist/tools/schemas.d.cts +21 -0
  512. package/dist/tools/schemas.d.ts +21 -0
  513. package/dist/tools/schemas.js +20 -0
  514. package/dist/tools/tool-manager.cjs +275 -0
  515. package/dist/tools/tool-manager.d.cts +106 -0
  516. package/dist/tools/tool-manager.d.ts +106 -0
  517. package/dist/tools/tool-manager.js +251 -0
  518. package/dist/tools/types.cjs +16 -0
  519. package/dist/tools/types.d.cts +66 -0
  520. package/dist/tools/types.d.ts +66 -0
  521. package/dist/tools/types.js +0 -0
  522. package/dist/utils/api-key-resolver.cjs +62 -0
  523. package/dist/utils/api-key-resolver.d.cts +23 -0
  524. package/dist/utils/api-key-resolver.d.ts +23 -0
  525. package/dist/utils/api-key-resolver.js +36 -0
  526. package/dist/utils/api-key-store.cjs +56 -0
  527. package/dist/utils/api-key-store.d.cts +26 -0
  528. package/dist/utils/api-key-store.d.ts +26 -0
  529. package/dist/utils/api-key-store.js +30 -0
  530. package/dist/utils/env.cjs +154 -0
  531. package/dist/utils/env.d.cts +29 -0
  532. package/dist/utils/env.d.ts +29 -0
  533. package/dist/utils/env.js +118 -0
  534. package/dist/utils/error-conversion.cjs +53 -0
  535. package/dist/utils/error-conversion.d.cts +13 -0
  536. package/dist/utils/error-conversion.d.ts +13 -0
  537. package/dist/utils/error-conversion.js +29 -0
  538. package/dist/utils/execution-context.cjs +85 -0
  539. package/dist/utils/execution-context.d.cts +21 -0
  540. package/dist/utils/execution-context.d.ts +21 -0
  541. package/dist/utils/execution-context.js +49 -0
  542. package/dist/{chunk-MVKLS3LM.js → utils/fs-walk.cjs} +27 -18
  543. package/dist/utils/fs-walk.d.cts +9 -0
  544. package/dist/utils/fs-walk.d.ts +9 -0
  545. package/dist/utils/fs-walk.js +18 -0
  546. package/dist/utils/index.cjs +44 -0
  547. package/dist/utils/index.d.cts +63 -0
  548. package/dist/utils/index.d.ts +63 -0
  549. package/dist/utils/index.js +12 -0
  550. package/dist/utils/path.cjs +197 -0
  551. package/dist/utils/path.d.cts +54 -0
  552. package/dist/utils/path.d.ts +54 -0
  553. package/dist/utils/path.js +159 -0
  554. package/dist/utils/port-utils.cjs +37 -0
  555. package/dist/utils/port-utils.d.cts +11 -0
  556. package/dist/utils/port-utils.d.ts +11 -0
  557. package/dist/utils/port-utils.js +13 -0
  558. package/dist/utils/port-utils.spec.cjs +26 -0
  559. package/dist/utils/port-utils.spec.d.cts +2 -0
  560. package/dist/utils/port-utils.spec.d.ts +2 -0
  561. package/dist/utils/port-utils.spec.js +25 -0
  562. package/dist/utils/redactor.cjs +105 -0
  563. package/dist/utils/redactor.d.cts +18 -0
  564. package/dist/utils/redactor.d.ts +18 -0
  565. package/dist/utils/redactor.js +81 -0
  566. package/dist/utils/result.cjs +115 -0
  567. package/dist/utils/result.d.cts +180 -0
  568. package/dist/utils/result.d.ts +180 -0
  569. package/dist/utils/result.js +82 -0
  570. package/dist/utils/safe-stringify.cjs +57 -0
  571. package/dist/utils/safe-stringify.d.cts +7 -0
  572. package/dist/utils/safe-stringify.d.ts +7 -0
  573. package/dist/utils/safe-stringify.js +33 -0
  574. package/dist/utils/schema.cjs +42 -0
  575. package/dist/utils/schema.d.cts +6 -0
  576. package/dist/utils/schema.d.ts +6 -0
  577. package/dist/utils/schema.js +18 -0
  578. package/dist/utils/service-initializer.cjs +119 -0
  579. package/dist/utils/service-initializer.d.cts +63 -0
  580. package/dist/utils/service-initializer.d.ts +63 -0
  581. package/dist/utils/service-initializer.js +95 -0
  582. package/dist/utils/user-info.cjs +30 -0
  583. package/dist/utils/user-info.d.cts +3 -0
  584. package/dist/utils/user-info.d.ts +3 -0
  585. package/dist/utils/user-info.js +6 -0
  586. package/dist/utils/zod-schema-converter.cjs +112 -0
  587. package/dist/utils/zod-schema-converter.d.cts +13 -0
  588. package/dist/utils/zod-schema-converter.d.ts +13 -0
  589. package/dist/utils/zod-schema-converter.js +87 -0
  590. package/package.json +2 -2
  591. package/dist/chunk-D62MHQBE.js +0 -2203
  592. package/dist/chunk-FCJVTIBV.js +0 -535
  593. package/dist/chunk-TPERKLLN.js +0 -75
  594. package/dist/errors-ZZ4Z3FKB.js +0 -10
  595. package/dist/loader-HBNEYPQZ.js +0 -20
  596. package/dist/path-TP7WBDED.js +0 -21
  597. package/dist/registry-Z4DFXODW.js +0 -14
@@ -0,0 +1,396 @@
1
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
2
+ import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
3
+ import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
4
+ import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
5
+ import { logger } from "../logger/index.js";
6
+ import { resolveBundledScript } from "../utils/path.js";
7
+ import { MCPError } from "./errors.js";
8
+ class MCPClient {
9
+ client = null;
10
+ transport = null;
11
+ isConnected = false;
12
+ serverCommand = null;
13
+ originalArgs = null;
14
+ resolvedArgs = null;
15
+ serverEnv = null;
16
+ serverSpawned = false;
17
+ serverPid = null;
18
+ serverAlias = null;
19
+ timeout = 6e4;
20
+ // Default timeout value
21
+ async connect(config, serverName) {
22
+ this.timeout = config.timeout ?? 3e4;
23
+ if (config.type === "stdio") {
24
+ const stdioConfig = config;
25
+ let command = stdioConfig.command;
26
+ if (process.platform === "win32" && command === "npx") {
27
+ command = "C:\\Program Files\\nodejs\\npx.cmd";
28
+ }
29
+ return this.connectViaStdio(command, stdioConfig.args, stdioConfig.env, serverName);
30
+ } else if (config.type === "sse") {
31
+ const sseConfig = config;
32
+ return this.connectViaSSE(sseConfig.url, sseConfig.headers, serverName);
33
+ } else if (config.type === "http") {
34
+ const httpConfig = config;
35
+ return this.connectViaHttp(httpConfig.url, httpConfig.headers || {}, serverName);
36
+ } else {
37
+ const _exhaustive = config;
38
+ throw MCPError.protocolError(`Unsupported server type: ${JSON.stringify(_exhaustive)}`);
39
+ }
40
+ }
41
+ /**
42
+ * Connect to an MCP server via stdio
43
+ * @param command Command to run
44
+ * @param args Arguments for the command
45
+ * @param env Environment variables
46
+ * @param serverAlias Optional server alias/name to show in logs
47
+ */
48
+ async connectViaStdio(command, args = [], env, serverAlias) {
49
+ this.serverCommand = command;
50
+ this.originalArgs = [...args];
51
+ this.resolvedArgs = [...this.originalArgs];
52
+ this.serverEnv = env || null;
53
+ this.serverAlias = serverAlias || null;
54
+ if (command === "node" && this.resolvedArgs && this.resolvedArgs.length > 0 && this.resolvedArgs[0]?.startsWith("dist/")) {
55
+ try {
56
+ const scriptRelativePath = this.resolvedArgs[0];
57
+ this.resolvedArgs[0] = resolveBundledScript(scriptRelativePath);
58
+ logger.debug(
59
+ `Resolved bundled script path: ${scriptRelativePath} -> ${this.resolvedArgs[0]}`
60
+ );
61
+ } catch (e) {
62
+ logger.warn(
63
+ `Failed to resolve path for bundled script ${this.resolvedArgs[0]}: ${JSON.stringify(e, null, 2)}`
64
+ );
65
+ }
66
+ }
67
+ logger.info("=======================================");
68
+ logger.info(`MCP SERVER: ${command} ${this.resolvedArgs.join(" ")}`, null, "magenta");
69
+ if (env) {
70
+ logger.info("Environment:");
71
+ Object.entries(env).forEach(([key, _]) => {
72
+ logger.info(` ${key}= [value hidden]`);
73
+ });
74
+ }
75
+ logger.info("=======================================\n");
76
+ const serverName = this.serverAlias ? `"${this.serverAlias}" (${command} ${this.resolvedArgs.join(" ")})` : `${command} ${this.resolvedArgs.join(" ")}`;
77
+ logger.info(`Connecting to MCP server: ${serverName}`);
78
+ const expandedEnv = {
79
+ ...process.env,
80
+ ...env || {}
81
+ };
82
+ this.transport = new StdioClientTransport({
83
+ command,
84
+ args: this.resolvedArgs,
85
+ env: expandedEnv
86
+ });
87
+ this.client = new Client(
88
+ {
89
+ name: "Dexto-stdio-mcp-client",
90
+ version: "1.0.0"
91
+ },
92
+ {
93
+ capabilities: { tools: {} }
94
+ }
95
+ );
96
+ try {
97
+ logger.info("Establishing connection...");
98
+ await this.client.connect(this.transport);
99
+ this.serverSpawned = true;
100
+ logger.info(`\u2705 Stdio SERVER ${serverName} SPAWNED`);
101
+ logger.info("Connection established!\n\n");
102
+ this.isConnected = true;
103
+ return this.client;
104
+ } catch (error) {
105
+ logger.error(
106
+ `Failed to connect to MCP server ${serverName}: ${JSON.stringify(error.message, null, 2)}`
107
+ );
108
+ throw error;
109
+ }
110
+ }
111
+ async connectViaSSE(url, headers = {}, serverName) {
112
+ logger.debug(`Connecting to SSE MCP server at url: ${url}`);
113
+ this.transport = new SSEClientTransport(new URL(url), {
114
+ // For regular HTTP requests
115
+ requestInit: {
116
+ headers
117
+ }
118
+ // Need to implement eventSourceInit for SSE events.
119
+ });
120
+ logger.debug(`[connectViaSSE] SSE transport: ${JSON.stringify(this.transport, null, 2)}`);
121
+ this.client = new Client(
122
+ {
123
+ name: "Dexto-sse-mcp-client",
124
+ version: "1.0.0"
125
+ },
126
+ {
127
+ capabilities: { tools: {} }
128
+ }
129
+ );
130
+ try {
131
+ logger.info("Establishing connection...");
132
+ await this.client.connect(this.transport);
133
+ this.serverSpawned = true;
134
+ logger.info(`\u2705 ${serverName} SSE SERVER SPAWNED`);
135
+ logger.info("Connection established!\n\n");
136
+ this.isConnected = true;
137
+ return this.client;
138
+ } catch (error) {
139
+ logger.error(
140
+ `Failed to connect to SSE MCP server ${url}: ${JSON.stringify(error.message, null, 2)}`
141
+ );
142
+ throw error;
143
+ }
144
+ }
145
+ /**
146
+ * Connect to an MCP server via Streamable HTTP transport
147
+ */
148
+ async connectViaHttp(url, headers = {}, serverAlias) {
149
+ logger.info(`Connecting to HTTP MCP server at ${url}`);
150
+ this.transport = new StreamableHTTPClientTransport(new URL(url), {
151
+ requestInit: { headers: headers || {} }
152
+ });
153
+ this.client = new Client(
154
+ { name: "Dexto-http-mcp-client", version: "1.0.0" },
155
+ { capabilities: { tools: {} } }
156
+ );
157
+ try {
158
+ logger.info("Establishing HTTP connection...");
159
+ await this.client.connect(this.transport);
160
+ this.isConnected = true;
161
+ logger.info(`\u2705 HTTP SERVER ${serverAlias ?? url} CONNECTED`);
162
+ return this.client;
163
+ } catch (error) {
164
+ logger.error(
165
+ `Failed to connect to HTTP MCP server ${url}: ${JSON.stringify(error.message, null, 2)}`
166
+ );
167
+ throw error;
168
+ }
169
+ }
170
+ /**
171
+ * Disconnect from the server
172
+ */
173
+ async disconnect() {
174
+ if (this.transport && typeof this.transport.close === "function") {
175
+ try {
176
+ await this.transport.close();
177
+ this.isConnected = false;
178
+ this.serverSpawned = false;
179
+ logger.info("Disconnected from MCP server");
180
+ } catch (error) {
181
+ logger.error(
182
+ `Error disconnecting from MCP server: ${JSON.stringify(error.message, null, 2)}`
183
+ );
184
+ }
185
+ }
186
+ }
187
+ /**
188
+ * Call a tool with given name and arguments
189
+ * @param name Tool name
190
+ * @param args Tool arguments
191
+ * @returns Result of the tool execution
192
+ */
193
+ async callTool(name, args) {
194
+ this.ensureConnected();
195
+ try {
196
+ logger.debug(`Calling tool '${name}' with args: ${JSON.stringify(args, null, 2)}`);
197
+ let toolArgs = args;
198
+ if (typeof args === "string") {
199
+ try {
200
+ toolArgs = JSON.parse(args);
201
+ } catch {
202
+ toolArgs = { input: args };
203
+ }
204
+ }
205
+ logger.debug(`Using timeout: ${this.timeout}`);
206
+ const result = await this.client.callTool(
207
+ { name, arguments: toolArgs },
208
+ void 0,
209
+ // resultSchema (optional)
210
+ { timeout: this.timeout }
211
+ // Use server-specific timeout, default 1 minute
212
+ );
213
+ const logResult = JSON.stringify(
214
+ result,
215
+ (key, value) => {
216
+ if (key === "data" && typeof value === "string" && value.length > 100) {
217
+ return `[Base64 data: ${value.length} chars]`;
218
+ }
219
+ return value;
220
+ },
221
+ 2
222
+ );
223
+ logger.debug(`Tool '${name}' result: ${logResult}`);
224
+ if (result === null || result === void 0) {
225
+ return "Tool executed successfully with no result data.";
226
+ }
227
+ return result;
228
+ } catch (error) {
229
+ logger.error(`Tool call '${name}' failed: ${JSON.stringify(error, null, 2)}`);
230
+ return `Error executing tool '${name}': ${error instanceof Error ? error.message : String(error)}`;
231
+ }
232
+ }
233
+ /**
234
+ * Get the list of tools provided by this client
235
+ * @returns Array of available tools
236
+ */
237
+ async getTools() {
238
+ this.ensureConnected();
239
+ const tools = {};
240
+ try {
241
+ const listToolResult = await this.client.listTools({});
242
+ logger.silly(`listTools result: ${JSON.stringify(listToolResult, null, 2)}`);
243
+ if (listToolResult && listToolResult.tools) {
244
+ listToolResult.tools.forEach((tool) => {
245
+ if (!tool.description) {
246
+ logger.warn(`Tool '${tool.name}' is missing a description`);
247
+ }
248
+ if (!tool.inputSchema) {
249
+ throw MCPError.invalidToolSchema(tool.name, "missing input schema");
250
+ }
251
+ tools[tool.name] = {
252
+ description: tool.description ?? "",
253
+ parameters: tool.inputSchema
254
+ };
255
+ });
256
+ } else {
257
+ throw MCPError.protocolError(
258
+ "listTools did not return the expected structure: missing tools"
259
+ );
260
+ }
261
+ } catch (error) {
262
+ logger.warn(
263
+ `Failed to get tools from MCP server, proceeding with zero tools: ${JSON.stringify(error, null, 2)}`
264
+ );
265
+ return tools;
266
+ }
267
+ return tools;
268
+ }
269
+ /**
270
+ * Get the list of prompts provided by this client
271
+ * @returns Array of available prompt names
272
+ * TODO: Turn exception logs back into error and only call this based on capabilities of the server
273
+ */
274
+ async listPrompts() {
275
+ this.ensureConnected();
276
+ try {
277
+ const response = await this.client.listPrompts();
278
+ logger.debug(`listPrompts response: ${JSON.stringify(response, null, 2)}`);
279
+ return response.prompts.map((p) => p.name);
280
+ } catch (error) {
281
+ logger.debug(
282
+ `Failed to list prompts from MCP server (optional feature), skipping: ${JSON.stringify(error, null, 2)}`
283
+ );
284
+ return [];
285
+ }
286
+ }
287
+ /**
288
+ * Get a specific prompt definition
289
+ * @param name Name of the prompt
290
+ * @param args Arguments for the prompt (optional)
291
+ * @returns Prompt definition (structure depends on SDK)
292
+ * TODO: Turn exception logs back into error and only call this based on capabilities of the server
293
+ */
294
+ async getPrompt(name, args) {
295
+ this.ensureConnected();
296
+ try {
297
+ logger.debug(`Getting prompt '${name}' with args: ${JSON.stringify(args, null, 2)}`);
298
+ const response = await this.client.getPrompt(
299
+ { name, arguments: args },
300
+ { timeout: this.timeout }
301
+ );
302
+ logger.debug(`getPrompt '${name}' response: ${JSON.stringify(response, null, 2)}`);
303
+ return response;
304
+ } catch (error) {
305
+ logger.debug(
306
+ `Failed to get prompt '${name}' from MCP server: ${JSON.stringify(error, null, 2)}`
307
+ );
308
+ throw MCPError.protocolError(
309
+ `Error getting prompt '${name}': ${error instanceof Error ? error.message : String(error)}`
310
+ );
311
+ }
312
+ }
313
+ /**
314
+ * Get the list of resources provided by this client
315
+ * @returns Array of available resource URIs
316
+ * TODO: Turn exception logs back into error and only call this based on capabilities of the server
317
+ */
318
+ async listResources() {
319
+ this.ensureConnected();
320
+ try {
321
+ const response = await this.client.listResources();
322
+ logger.debug(`listResources response: ${JSON.stringify(response, null, 2)}`);
323
+ return response.resources.map((r) => r.uri);
324
+ } catch (error) {
325
+ logger.debug(
326
+ `Failed to list resources from MCP server (optional feature), skipping: ${JSON.stringify(error, null, 2)}`
327
+ );
328
+ return [];
329
+ }
330
+ }
331
+ /**
332
+ * Read the content of a specific resource
333
+ * @param uri URI of the resource
334
+ * @returns Content of the resource (structure depends on SDK)
335
+ */
336
+ async readResource(uri) {
337
+ this.ensureConnected();
338
+ try {
339
+ logger.debug(`Reading resource '${uri}'`);
340
+ const response = await this.client.readResource({ uri }, { timeout: this.timeout });
341
+ logger.debug(`readResource '${uri}' response: ${JSON.stringify(response, null, 2)}`);
342
+ return response;
343
+ } catch (error) {
344
+ logger.debug(
345
+ `Failed to read resource '${uri}' from MCP server: ${JSON.stringify(error, null, 2)}`
346
+ );
347
+ throw MCPError.protocolError(
348
+ `Error reading resource '${uri}': ${error instanceof Error ? error.message : String(error)}`
349
+ );
350
+ }
351
+ }
352
+ /**
353
+ * Check if the client is connected
354
+ */
355
+ getConnectionStatus() {
356
+ return this.isConnected;
357
+ }
358
+ /**
359
+ * Get the connected client
360
+ */
361
+ getClient() {
362
+ return this.client;
363
+ }
364
+ /**
365
+ * Get server status information
366
+ */
367
+ getServerInfo() {
368
+ return {
369
+ spawned: this.serverSpawned,
370
+ pid: this.serverPid,
371
+ command: this.serverCommand,
372
+ originalArgs: this.originalArgs,
373
+ resolvedArgs: this.resolvedArgs,
374
+ env: this.serverEnv,
375
+ alias: this.serverAlias
376
+ };
377
+ }
378
+ /**
379
+ * Get the client instance once connected
380
+ * @returns Promise with the MCP client
381
+ */
382
+ async getConnectedClient() {
383
+ if (!this.client || !this.isConnected) {
384
+ throw MCPError.clientNotConnected();
385
+ }
386
+ return this.client;
387
+ }
388
+ ensureConnected() {
389
+ if (!this.isConnected || !this.client) {
390
+ throw MCPError.clientNotConnected("Please call connect() first");
391
+ }
392
+ }
393
+ }
394
+ export {
395
+ MCPClient
396
+ };
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var resolver_exports = {};
20
+ __export(resolver_exports, {
21
+ resolveAndValidateMcpServerConfig: () => resolveAndValidateMcpServerConfig
22
+ });
23
+ module.exports = __toCommonJS(resolver_exports);
24
+ var import_result = require("../utils/result.js");
25
+ var import_types = require("../errors/types.cjs");
26
+ var import_error_codes = require("./error-codes.js");
27
+ var import_schemas = require("./schemas.js");
28
+ function resolveAndValidateMcpServerConfig(serverName, serverConfig, existingServerNames = []) {
29
+ const { candidate, warnings } = resolveMcpServerConfig(
30
+ serverName,
31
+ serverConfig,
32
+ existingServerNames
33
+ );
34
+ if ((0, import_result.hasErrors)(warnings)) {
35
+ return (0, import_result.fail)(warnings);
36
+ }
37
+ return validateMcpServerConfig(candidate, warnings);
38
+ }
39
+ function resolveMcpServerConfig(serverName, candidate, existingServerNames) {
40
+ const warnings = [];
41
+ if (typeof serverName !== "string" || serverName.trim() === "") {
42
+ warnings.push({
43
+ code: import_error_codes.MCPErrorCode.SCHEMA_VALIDATION,
44
+ message: "Server name must be a non-empty string",
45
+ severity: "error",
46
+ scope: import_types.ErrorScope.MCP,
47
+ type: import_types.ErrorType.USER,
48
+ context: { serverName }
49
+ });
50
+ }
51
+ const dup = existingServerNames.find(
52
+ (n) => n.toLowerCase() === serverName.toLowerCase() && n !== serverName
53
+ );
54
+ if (dup) {
55
+ warnings.push({
56
+ code: import_error_codes.MCPErrorCode.DUPLICATE_NAME,
57
+ message: `Server name '${serverName}' is similar to existing '${dup}' (case differs)`,
58
+ severity: "warning",
59
+ scope: import_types.ErrorScope.MCP,
60
+ type: import_types.ErrorType.USER,
61
+ context: { serverName }
62
+ });
63
+ }
64
+ return { candidate, warnings };
65
+ }
66
+ function validateMcpServerConfig(candidate, warnings) {
67
+ const parsed = import_schemas.McpServerConfigSchema.safeParse(candidate);
68
+ if (!parsed.success) {
69
+ return (0, import_result.fail)(
70
+ (0, import_result.zodToIssues)(parsed.error, "error")
71
+ );
72
+ }
73
+ return (0, import_result.ok)(parsed.data, warnings);
74
+ }
75
+ // Annotate the CommonJS export names for ESM import in node:
76
+ 0 && (module.exports = {
77
+ resolveAndValidateMcpServerConfig
78
+ });
@@ -0,0 +1,22 @@
1
+ import { Result } from '../utils/result.cjs';
2
+ import { McpServerConfig, ValidatedMcpServerConfig } from './schemas.cjs';
3
+ import 'zod';
4
+ import '../errors/types.cjs';
5
+ import '../agent/error-codes.cjs';
6
+ import '../config/error-codes.cjs';
7
+ import '../context/error-codes.cjs';
8
+ import '../llm/error-codes.cjs';
9
+ import './error-codes.cjs';
10
+ import '../session/error-codes.cjs';
11
+ import '../storage/error-codes.cjs';
12
+ import '../systemPrompt/error-codes.cjs';
13
+ import '../tools/error-codes.cjs';
14
+ import '../preferences/error-codes.cjs';
15
+ import '../agent/registry/error-codes.cjs';
16
+
17
+ type McpServerContext = {
18
+ serverName?: string;
19
+ };
20
+ declare function resolveAndValidateMcpServerConfig(serverName: string, serverConfig: McpServerConfig, existingServerNames?: string[]): Result<ValidatedMcpServerConfig, McpServerContext>;
21
+
22
+ export { type McpServerContext, resolveAndValidateMcpServerConfig };
@@ -0,0 +1,22 @@
1
+ import { Result } from '../utils/result.js';
2
+ import { McpServerConfig, ValidatedMcpServerConfig } from './schemas.js';
3
+ import 'zod';
4
+ import '../errors/types.js';
5
+ import '../agent/error-codes.js';
6
+ import '../config/error-codes.js';
7
+ import '../context/error-codes.js';
8
+ import '../llm/error-codes.js';
9
+ import './error-codes.js';
10
+ import '../session/error-codes.js';
11
+ import '../storage/error-codes.js';
12
+ import '../systemPrompt/error-codes.js';
13
+ import '../tools/error-codes.js';
14
+ import '../preferences/error-codes.js';
15
+ import '../agent/registry/error-codes.js';
16
+
17
+ type McpServerContext = {
18
+ serverName?: string;
19
+ };
20
+ declare function resolveAndValidateMcpServerConfig(serverName: string, serverConfig: McpServerConfig, existingServerNames?: string[]): Result<ValidatedMcpServerConfig, McpServerContext>;
21
+
22
+ export { type McpServerContext, resolveAndValidateMcpServerConfig };
@@ -0,0 +1,56 @@
1
+ import { ok, fail, hasErrors, zodToIssues } from "../utils/result.js";
2
+ import { ErrorScope, ErrorType } from "../errors/types.js";
3
+ import { MCPErrorCode } from "./error-codes.js";
4
+ import {
5
+ McpServerConfigSchema
6
+ } from "./schemas.js";
7
+ function resolveAndValidateMcpServerConfig(serverName, serverConfig, existingServerNames = []) {
8
+ const { candidate, warnings } = resolveMcpServerConfig(
9
+ serverName,
10
+ serverConfig,
11
+ existingServerNames
12
+ );
13
+ if (hasErrors(warnings)) {
14
+ return fail(warnings);
15
+ }
16
+ return validateMcpServerConfig(candidate, warnings);
17
+ }
18
+ function resolveMcpServerConfig(serverName, candidate, existingServerNames) {
19
+ const warnings = [];
20
+ if (typeof serverName !== "string" || serverName.trim() === "") {
21
+ warnings.push({
22
+ code: MCPErrorCode.SCHEMA_VALIDATION,
23
+ message: "Server name must be a non-empty string",
24
+ severity: "error",
25
+ scope: ErrorScope.MCP,
26
+ type: ErrorType.USER,
27
+ context: { serverName }
28
+ });
29
+ }
30
+ const dup = existingServerNames.find(
31
+ (n) => n.toLowerCase() === serverName.toLowerCase() && n !== serverName
32
+ );
33
+ if (dup) {
34
+ warnings.push({
35
+ code: MCPErrorCode.DUPLICATE_NAME,
36
+ message: `Server name '${serverName}' is similar to existing '${dup}' (case differs)`,
37
+ severity: "warning",
38
+ scope: ErrorScope.MCP,
39
+ type: ErrorType.USER,
40
+ context: { serverName }
41
+ });
42
+ }
43
+ return { candidate, warnings };
44
+ }
45
+ function validateMcpServerConfig(candidate, warnings) {
46
+ const parsed = McpServerConfigSchema.safeParse(candidate);
47
+ if (!parsed.success) {
48
+ return fail(
49
+ zodToIssues(parsed.error, "error")
50
+ );
51
+ }
52
+ return ok(parsed.data, warnings);
53
+ }
54
+ export {
55
+ resolveAndValidateMcpServerConfig
56
+ };
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var schemas_exports = {};
20
+ __export(schemas_exports, {
21
+ HttpServerConfigSchema: () => HttpServerConfigSchema,
22
+ McpServerConfigSchema: () => McpServerConfigSchema,
23
+ ServerConfigsSchema: () => ServerConfigsSchema,
24
+ SseServerConfigSchema: () => SseServerConfigSchema,
25
+ StdioServerConfigSchema: () => StdioServerConfigSchema
26
+ });
27
+ module.exports = __toCommonJS(schemas_exports);
28
+ var import_error_codes = require("./error-codes.js");
29
+ var import_types = require("../errors/types.cjs");
30
+ var import_result = require("../utils/result.cjs");
31
+ var import_zod = require("zod");
32
+ const StdioServerConfigSchema = import_zod.z.object({
33
+ type: import_zod.z.literal("stdio"),
34
+ // allow env in command & args if you want; remove EnvExpandedString if not desired
35
+ command: (0, import_result.EnvExpandedString)().superRefine((s, ctx) => {
36
+ if (s.length === 0) {
37
+ ctx.addIssue({
38
+ code: import_zod.z.ZodIssueCode.custom,
39
+ message: "Stdio server requires a non-empty command",
40
+ params: {
41
+ code: import_error_codes.MCPErrorCode.COMMAND_MISSING,
42
+ scope: import_types.ErrorScope.MCP,
43
+ type: import_types.ErrorType.USER
44
+ },
45
+ path: ["command"]
46
+ });
47
+ }
48
+ }),
49
+ args: import_zod.z.array((0, import_result.EnvExpandedString)()).default([]).describe("Array of arguments for the command (e.g., ['script.js'])"),
50
+ env: import_zod.z.record((0, import_result.EnvExpandedString)()).default({}).describe("Optional environment variables for the server process"),
51
+ timeout: import_zod.z.coerce.number().int().positive().default(3e4),
52
+ connectionMode: import_zod.z.enum(["strict", "lenient"]).default("lenient")
53
+ }).strict();
54
+ const SseServerConfigSchema = import_zod.z.object({
55
+ type: import_zod.z.literal("sse"),
56
+ url: (0, import_result.RequiredEnvURL)(process.env).describe("URL for the SSE server endpoint"),
57
+ headers: import_zod.z.record((0, import_result.EnvExpandedString)()).default({}),
58
+ timeout: import_zod.z.coerce.number().int().positive().default(3e4),
59
+ connectionMode: import_zod.z.enum(["strict", "lenient"]).default("lenient")
60
+ }).strict();
61
+ const HttpServerConfigSchema = import_zod.z.object({
62
+ type: import_zod.z.literal("http"),
63
+ url: (0, import_result.RequiredEnvURL)(process.env).describe("URL for the HTTP server"),
64
+ headers: import_zod.z.record((0, import_result.EnvExpandedString)()).default({}),
65
+ timeout: import_zod.z.coerce.number().int().positive().default(3e4),
66
+ connectionMode: import_zod.z.enum(["strict", "lenient"]).default("lenient")
67
+ }).strict();
68
+ const McpServerConfigSchema = import_zod.z.discriminatedUnion("type", [
69
+ StdioServerConfigSchema,
70
+ SseServerConfigSchema,
71
+ HttpServerConfigSchema
72
+ ]).superRefine((_data, _ctx) => {
73
+ }).brand();
74
+ const ServerConfigsSchema = import_zod.z.record(McpServerConfigSchema).describe("A dictionary of server configurations, keyed by server name").brand();
75
+ // Annotate the CommonJS export names for ESM import in node:
76
+ 0 && (module.exports = {
77
+ HttpServerConfigSchema,
78
+ McpServerConfigSchema,
79
+ ServerConfigsSchema,
80
+ SseServerConfigSchema,
81
+ StdioServerConfigSchema
82
+ });