@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,793 @@
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 DextoAgent_exports = {};
20
+ __export(DextoAgent_exports, {
21
+ DextoAgent: () => DextoAgent
22
+ });
23
+ module.exports = __toCommonJS(DextoAgent_exports);
24
+ var import_session = require("../session/index.js");
25
+ var import_logger = require("../logger/index.js");
26
+ var import_schemas = require("../llm/schemas.cjs");
27
+ var import_resolver = require("../llm/resolver.js");
28
+ var import_validation = require("../llm/validation.js");
29
+ var import_errors = require("./errors.js");
30
+ var import_errors2 = require("../mcp/errors.js");
31
+ var import_result_bridge = require("../errors/result-bridge.cjs");
32
+ var import_result = require("../utils/result.cjs");
33
+ var import_resolver2 = require("../mcp/resolver.js");
34
+ var import_registry = require("../llm/registry.js");
35
+ var import_service_initializer2 = require("../utils/service-initializer.js");
36
+ var import_schemas2 = require("./schemas.js");
37
+ var import_path = require("../utils/path.js");
38
+ var import_safe_stringify = require("../utils/safe-stringify.cjs");
39
+ const requiredServices = [
40
+ "mcpManager",
41
+ "toolManager",
42
+ "promptManager",
43
+ "agentEventBus",
44
+ "stateManager",
45
+ "sessionManager",
46
+ "searchService"
47
+ ];
48
+ class DextoAgent {
49
+ constructor(config, configPath) {
50
+ this.configPath = configPath;
51
+ this.config = import_schemas2.AgentConfigSchema.parse(config);
52
+ import_logger.logger.info("DextoAgent created.");
53
+ }
54
+ /**
55
+ * These services are public for use by the outside world
56
+ * This gives users the option to use methods of the services directly if they know what they are doing
57
+ * But the main recommended entry points/functions would still be the wrapper methods we define below
58
+ */
59
+ mcpManager;
60
+ promptManager;
61
+ agentEventBus;
62
+ stateManager;
63
+ sessionManager;
64
+ toolManager;
65
+ services;
66
+ // Search service for conversation search
67
+ searchService;
68
+ // Default session for backward compatibility
69
+ defaultSession = null;
70
+ // Current default session ID for loadSession functionality
71
+ currentDefaultSessionId = "default";
72
+ // Track initialization state
73
+ _isStarted = false;
74
+ _isStopped = false;
75
+ // Store config for async initialization
76
+ config;
77
+ /**
78
+ * Starts the agent by initializing all async services.
79
+ * This method handles storage backends, MCP connections, session manager initialization, and other async operations.
80
+ * Must be called before using any agent functionality.
81
+ *
82
+ * @throws Error if agent is already started or initialization fails
83
+ */
84
+ async start() {
85
+ if (this._isStarted) {
86
+ throw import_errors.AgentError.alreadyStarted();
87
+ }
88
+ try {
89
+ import_logger.logger.info("Starting DextoAgent...");
90
+ const services = await (0, import_service_initializer2.createAgentServices)(this.config, this.configPath);
91
+ for (const service of requiredServices) {
92
+ if (!services[service]) {
93
+ throw import_errors.AgentError.initializationFailed(
94
+ `Required service ${service} is missing during agent start`
95
+ );
96
+ }
97
+ }
98
+ Object.assign(this, {
99
+ mcpManager: services.mcpManager,
100
+ toolManager: services.toolManager,
101
+ promptManager: services.promptManager,
102
+ agentEventBus: services.agentEventBus,
103
+ stateManager: services.stateManager,
104
+ sessionManager: services.sessionManager,
105
+ services
106
+ });
107
+ this.searchService = services.searchService;
108
+ this._isStarted = true;
109
+ import_logger.logger.info("DextoAgent started successfully.");
110
+ const logPath = (0, import_path.getDextoPath)("logs", "dexto.log");
111
+ console.log(`\u{1F4CB} Logs available at: ${logPath}`);
112
+ } catch (error) {
113
+ import_logger.logger.error("Failed to start DextoAgent", error);
114
+ throw error;
115
+ }
116
+ }
117
+ /**
118
+ * Stops the agent and gracefully shuts down all services.
119
+ * This method handles disconnecting MCP clients, cleaning up sessions, closing storage connections,
120
+ * and releasing all resources. The agent cannot be restarted after being stopped.
121
+ *
122
+ * @throws Error if agent has not been started or shutdown fails
123
+ */
124
+ async stop() {
125
+ if (this._isStopped) {
126
+ import_logger.logger.warn("Agent is already stopped");
127
+ return;
128
+ }
129
+ if (!this._isStarted) {
130
+ throw import_errors.AgentError.notStarted();
131
+ }
132
+ try {
133
+ import_logger.logger.info("Stopping DextoAgent...");
134
+ const shutdownErrors = [];
135
+ try {
136
+ if (this.sessionManager) {
137
+ await this.sessionManager.cleanup();
138
+ import_logger.logger.debug("SessionManager cleaned up successfully");
139
+ }
140
+ } catch (error) {
141
+ const err = error instanceof Error ? error : new Error(String(error));
142
+ shutdownErrors.push(new Error(`SessionManager cleanup failed: ${err.message}`));
143
+ }
144
+ try {
145
+ if (this.mcpManager) {
146
+ await this.mcpManager.disconnectAll();
147
+ import_logger.logger.debug("MCPManager disconnected all clients successfully");
148
+ }
149
+ } catch (error) {
150
+ const err = error instanceof Error ? error : new Error(String(error));
151
+ shutdownErrors.push(new Error(`MCPManager disconnect failed: ${err.message}`));
152
+ }
153
+ try {
154
+ if (this.services?.storageManager) {
155
+ await this.services.storageManager.disconnect();
156
+ import_logger.logger.debug("Storage manager disconnected successfully");
157
+ }
158
+ } catch (error) {
159
+ const err = error instanceof Error ? error : new Error(String(error));
160
+ shutdownErrors.push(new Error(`Storage disconnect failed: ${err.message}`));
161
+ }
162
+ this._isStopped = true;
163
+ this._isStarted = false;
164
+ if (shutdownErrors.length > 0) {
165
+ const errorMessages = shutdownErrors.map((e) => e.message).join("; ");
166
+ import_logger.logger.warn(`DextoAgent stopped with some errors: ${errorMessages}`);
167
+ } else {
168
+ import_logger.logger.info("DextoAgent stopped successfully.");
169
+ }
170
+ } catch (error) {
171
+ import_logger.logger.error("Failed to stop DextoAgent", error);
172
+ throw error;
173
+ }
174
+ }
175
+ /**
176
+ * Checks if the agent has been started.
177
+ * @returns true if agent is started, false otherwise
178
+ */
179
+ isStarted() {
180
+ return this._isStarted;
181
+ }
182
+ /**
183
+ * Checks if the agent has been stopped.
184
+ * @returns true if agent is stopped, false otherwise
185
+ */
186
+ isStopped() {
187
+ return this._isStopped;
188
+ }
189
+ /**
190
+ * Ensures the agent is started before executing operations.
191
+ * @throws Error if agent is not started or has been stopped
192
+ */
193
+ ensureStarted() {
194
+ if (this._isStopped) {
195
+ import_logger.logger.warn("Agent is stopped");
196
+ throw import_errors.AgentError.stopped();
197
+ }
198
+ if (!this._isStarted) {
199
+ import_logger.logger.warn("Agent is not started");
200
+ throw import_errors.AgentError.notStarted();
201
+ }
202
+ }
203
+ // ============= CORE AGENT FUNCTIONALITY =============
204
+ /**
205
+ * Main method for processing user input.
206
+ * Processes user input through the agent's LLM service and returns the response.
207
+ *
208
+ * @param textInput - The user's text message or query to process
209
+ * @param imageDataInput - Optional image data and MIME type for multimodal input
210
+ * @param fileDataInput - Optional file data and MIME type for file input
211
+ * @param sessionId - Optional session ID for multi-session scenarios
212
+ * @returns Promise that resolves to the AI's response text, or null if no significant response
213
+ * @throws Error if processing fails
214
+ */
215
+ async run(textInput, imageDataInput, fileDataInput, sessionId, stream = false) {
216
+ this.ensureStarted();
217
+ try {
218
+ const targetSessionId = sessionId || this.currentDefaultSessionId;
219
+ const llmConfig = this.stateManager.getLLMConfig(targetSessionId);
220
+ const validation = (0, import_validation.validateInputForLLM)(
221
+ {
222
+ text: textInput,
223
+ ...imageDataInput && { imageData: imageDataInput },
224
+ ...fileDataInput && { fileData: fileDataInput }
225
+ },
226
+ {
227
+ provider: llmConfig.provider,
228
+ model: llmConfig.model
229
+ }
230
+ );
231
+ (0, import_result_bridge.ensureOk)(validation);
232
+ const existingSession = await this.sessionManager.getSession(targetSessionId);
233
+ const session = existingSession || await this.sessionManager.createSession(targetSessionId);
234
+ import_logger.logger.debug(
235
+ `DextoAgent.run: sessionId=${targetSessionId}, textLength=${textInput?.length ?? 0}, hasImage=${Boolean(
236
+ imageDataInput
237
+ )}, hasFile=${Boolean(fileDataInput)}`
238
+ );
239
+ const response = await session.run(textInput, imageDataInput, fileDataInput, stream);
240
+ this.sessionManager.incrementMessageCount(session.id).catch(
241
+ (error) => import_logger.logger.warn(
242
+ `Failed to increment message count: ${error instanceof Error ? error.message : String(error)}`
243
+ )
244
+ );
245
+ return response;
246
+ } catch (error) {
247
+ import_logger.logger.error(
248
+ `Error during DextoAgent.run: ${error instanceof Error ? error.message : JSON.stringify(error)}`
249
+ );
250
+ throw error;
251
+ }
252
+ }
253
+ /**
254
+ * Cancels the currently running turn for a session (or the default session).
255
+ * Safe to call even if no run is in progress.
256
+ * @param sessionId Optional session id; defaults to current default session
257
+ * @returns true if a run was in progress and was signaled to abort; false otherwise
258
+ */
259
+ async cancel(sessionId) {
260
+ this.ensureStarted();
261
+ const targetSessionId = sessionId || this.currentDefaultSessionId;
262
+ if (!sessionId && this.defaultSession && this.defaultSession.id === targetSessionId) {
263
+ return this.defaultSession.cancel();
264
+ }
265
+ const existing = await this.sessionManager.getSession(targetSessionId, false);
266
+ if (existing) {
267
+ return existing.cancel();
268
+ }
269
+ return false;
270
+ }
271
+ // ============= SESSION MANAGEMENT =============
272
+ /**
273
+ * Creates a new chat session or returns an existing one.
274
+ * @param sessionId Optional session ID. If not provided, a UUID will be generated.
275
+ * @returns The created or existing ChatSession
276
+ */
277
+ async createSession(sessionId) {
278
+ this.ensureStarted();
279
+ return await this.sessionManager.createSession(sessionId);
280
+ }
281
+ /**
282
+ * Retrieves an existing session by ID.
283
+ * @param sessionId The session ID to retrieve
284
+ * @returns The ChatSession if found, undefined otherwise
285
+ */
286
+ async getSession(sessionId) {
287
+ this.ensureStarted();
288
+ return await this.sessionManager.getSession(sessionId);
289
+ }
290
+ /**
291
+ * Lists all active session IDs.
292
+ * @returns Array of session IDs
293
+ */
294
+ async listSessions() {
295
+ this.ensureStarted();
296
+ return await this.sessionManager.listSessions();
297
+ }
298
+ /**
299
+ * Ends a session by removing it from memory without deleting conversation history.
300
+ * Used for cleanup, agent shutdown, and session expiry.
301
+ * @param sessionId The session ID to end
302
+ */
303
+ async endSession(sessionId) {
304
+ this.ensureStarted();
305
+ if (sessionId === this.currentDefaultSessionId) {
306
+ this.defaultSession = null;
307
+ }
308
+ return this.sessionManager.endSession(sessionId);
309
+ }
310
+ /**
311
+ * Deletes a session and its conversation history permanently.
312
+ * Used for user-initiated permanent deletion.
313
+ * @param sessionId The session ID to delete
314
+ */
315
+ async deleteSession(sessionId) {
316
+ this.ensureStarted();
317
+ if (sessionId === this.currentDefaultSessionId) {
318
+ this.defaultSession = null;
319
+ }
320
+ return this.sessionManager.deleteSession(sessionId);
321
+ }
322
+ /**
323
+ * Gets metadata for a specific session.
324
+ * @param sessionId The session ID
325
+ * @returns The session metadata if found, undefined otherwise
326
+ */
327
+ async getSessionMetadata(sessionId) {
328
+ this.ensureStarted();
329
+ return await this.sessionManager.getSessionMetadata(sessionId);
330
+ }
331
+ /**
332
+ * Gets the conversation history for a specific session.
333
+ * @param sessionId The session ID
334
+ * @returns Promise that resolves to the session's conversation history
335
+ * @throws Error if session doesn't exist
336
+ */
337
+ async getSessionHistory(sessionId) {
338
+ this.ensureStarted();
339
+ const session = await this.sessionManager.getSession(sessionId);
340
+ if (!session) {
341
+ throw import_session.SessionError.notFound(sessionId);
342
+ }
343
+ return await session.getHistory();
344
+ }
345
+ /**
346
+ * Search for messages across all sessions or within a specific session
347
+ *
348
+ * @param query The search query string
349
+ * @param options Search options including session filter, role filter, and pagination
350
+ * @returns Promise that resolves to search results
351
+ */
352
+ async searchMessages(query, options = {}) {
353
+ this.ensureStarted();
354
+ return await this.searchService.searchMessages(query, options);
355
+ }
356
+ /**
357
+ * Search for sessions that contain the specified query
358
+ *
359
+ * @param query The search query string
360
+ * @returns Promise that resolves to session search results
361
+ */
362
+ async searchSessions(query) {
363
+ this.ensureStarted();
364
+ return await this.searchService.searchSessions(query);
365
+ }
366
+ /**
367
+ * Loads a session as the new "default" session for this agent.
368
+ * All subsequent operations that don't specify a session ID will use this session.
369
+ * This provides a clean "current working session" pattern for API users.
370
+ *
371
+ * @param sessionId The session ID to load as default, or null to reset to original default
372
+ * @throws Error if session doesn't exist
373
+ *
374
+ * @example
375
+ * ```typescript
376
+ * // Load a specific session as default
377
+ * await agent.loadSessionAsDefault('project-alpha');
378
+ * await agent.run("What's the status?"); // Uses project-alpha session
379
+ *
380
+ * // Reset to original default
381
+ * await agent.loadSessionAsDefault(null);
382
+ * await agent.run("Hello"); // Uses 'default' session
383
+ * ```
384
+ */
385
+ async loadSessionAsDefault(sessionId = null) {
386
+ this.ensureStarted();
387
+ if (sessionId === null) {
388
+ this.currentDefaultSessionId = "default";
389
+ this.defaultSession = null;
390
+ import_logger.logger.debug("Agent default session reset to original default");
391
+ return;
392
+ }
393
+ const session = await this.sessionManager.getSession(sessionId);
394
+ if (!session) {
395
+ throw import_session.SessionError.notFound(sessionId);
396
+ }
397
+ this.currentDefaultSessionId = sessionId;
398
+ this.defaultSession = null;
399
+ import_logger.logger.info(`Agent default session changed to: ${sessionId}`);
400
+ }
401
+ /**
402
+ * Gets the currently loaded default session ID.
403
+ * This reflects the session loaded via loadSession().
404
+ *
405
+ * @returns The current default session ID
406
+ */
407
+ getCurrentSessionId() {
408
+ this.ensureStarted();
409
+ return this.currentDefaultSessionId;
410
+ }
411
+ /**
412
+ * Gets the currently loaded default session.
413
+ * This respects the session loaded via loadSession().
414
+ *
415
+ * @returns The current default ChatSession
416
+ */
417
+ async getDefaultSession() {
418
+ this.ensureStarted();
419
+ if (!this.defaultSession || this.defaultSession.id !== this.currentDefaultSessionId) {
420
+ this.defaultSession = await this.sessionManager.createSession(
421
+ this.currentDefaultSessionId
422
+ );
423
+ }
424
+ return this.defaultSession;
425
+ }
426
+ /**
427
+ * Resets the conversation history for a specific session or the default session.
428
+ * Keeps the session alive but the conversation history is cleared.
429
+ * @param sessionId Optional session ID. If not provided, resets the currently loaded default session.
430
+ */
431
+ async resetConversation(sessionId) {
432
+ this.ensureStarted();
433
+ try {
434
+ const targetSessionId = sessionId || this.currentDefaultSessionId;
435
+ if (!sessionId) {
436
+ if (!this.defaultSession || this.defaultSession.id !== this.currentDefaultSessionId) {
437
+ this.defaultSession = await this.sessionManager.createSession(
438
+ this.currentDefaultSessionId
439
+ );
440
+ }
441
+ }
442
+ await this.sessionManager.resetSession(targetSessionId);
443
+ import_logger.logger.info(`DextoAgent conversation reset for session: ${targetSessionId}`);
444
+ this.agentEventBus.emit("dexto:conversationReset", {
445
+ sessionId: targetSessionId
446
+ });
447
+ } catch (error) {
448
+ import_logger.logger.error(
449
+ `Error during DextoAgent.resetConversation: ${error instanceof Error ? error.message : String(error)}`
450
+ );
451
+ throw error;
452
+ }
453
+ }
454
+ // ============= LLM MANAGEMENT =============
455
+ /**
456
+ * Gets the current LLM configuration with all defaults applied.
457
+ * @returns Current LLM configuration
458
+ */
459
+ getCurrentLLMConfig() {
460
+ this.ensureStarted();
461
+ return structuredClone(this.stateManager.getLLMConfig());
462
+ }
463
+ /**
464
+ * Switches the LLM service while preserving conversation history.
465
+ * This is a comprehensive method that handles ALL validation, configuration building, and switching internally.
466
+ *
467
+ * Design:
468
+ * - Input: Partial<LLMConfig> (allows optional fields like maxIterations?, router?)
469
+ * - Output: LLMConfig (user-friendly type with all defaults applied)
470
+ *
471
+ * Key features:
472
+ * - Accepts partial LLM configuration object
473
+ * - Extracts and validates parameters internally
474
+ * - Infers provider from model if not provided
475
+ * - Automatically resolves API keys from environment variables
476
+ * - Uses LLMConfigSchema for comprehensive validation
477
+ * - Prevents inconsistent partial updates
478
+ * - Smart defaults for missing configuration values
479
+ *
480
+ * @param llmUpdates Partial LLM configuration object containing the updates to apply
481
+ * @param sessionId Session ID to switch LLM for. If not provided, switches for default session. Use '*' for all sessions
482
+ * @returns Promise that resolves with the validated LLM configuration
483
+ * @throws DextoLLMError if validation fails or switching fails
484
+ *
485
+ * @example
486
+ * ```typescript
487
+ * // Switch to a different model (provider will be inferred, API key auto-resolved)
488
+ * await agent.switchLLM({ model: 'gpt-4o' });
489
+ *
490
+ * // Switch to a different provider with explicit API key
491
+ * await agent.switchLLM({ provider: 'anthropic', model: 'claude-4-sonnet-20250514', apiKey: 'sk-ant-...' });
492
+ *
493
+ * // Switch with router and session options
494
+ * await agent.switchLLM({ provider: 'anthropic', model: 'claude-4-sonnet-20250514', router: 'in-built' }, 'user-123');
495
+ *
496
+ * // Switch for all sessions
497
+ * await agent.switchLLM({ model: 'gpt-4o' }, '*');
498
+ * ```
499
+ */
500
+ async switchLLM(llmUpdates, sessionId) {
501
+ this.ensureStarted();
502
+ import_logger.logger.debug(`DextoAgent.switchLLM: llmUpdates: ${(0, import_safe_stringify.safeStringify)(llmUpdates)}`);
503
+ const parseResult = import_schemas.LLMUpdatesSchema.safeParse(llmUpdates);
504
+ if (!parseResult.success) {
505
+ const validation = (0, import_result.fail)((0, import_result.zodToIssues)(parseResult.error, "error"));
506
+ (0, import_result_bridge.ensureOk)(validation);
507
+ throw new Error("Unreachable");
508
+ }
509
+ const validatedUpdates = parseResult.data;
510
+ const currentLLMConfig = sessionId ? this.stateManager.getRuntimeConfig(sessionId).llm : this.stateManager.getRuntimeConfig().llm;
511
+ const result = (0, import_resolver.resolveAndValidateLLMConfig)(currentLLMConfig, validatedUpdates);
512
+ const validatedConfig = (0, import_result_bridge.ensureOk)(result);
513
+ await this.performLLMSwitch(validatedConfig, sessionId);
514
+ import_logger.logger.info(`DextoAgent.switchLLM: LLM switched to: ${(0, import_safe_stringify.safeStringify)(validatedConfig)}`);
515
+ const warnings = result.issues.filter((issue) => issue.severity === "warning");
516
+ if (warnings.length > 0) {
517
+ import_logger.logger.warn(
518
+ `LLM switch completed with warnings: ${warnings.map((w) => w.message).join(", ")}`
519
+ );
520
+ }
521
+ return validatedConfig;
522
+ }
523
+ /**
524
+ * Performs the actual LLM switch with a validated configuration.
525
+ * This is a helper method that handles state management and session switching.
526
+ *
527
+ * @param validatedConfig - The validated LLM configuration to apply
528
+ * @param sessionScope - Session ID, '*' for all sessions, or undefined for default session
529
+ */
530
+ async performLLMSwitch(validatedConfig, sessionScope) {
531
+ this.stateManager.updateLLM(validatedConfig, sessionScope);
532
+ if (sessionScope === "*") {
533
+ await this.sessionManager.switchLLMForAllSessions(validatedConfig);
534
+ } else if (sessionScope) {
535
+ const session = await this.sessionManager.getSession(sessionScope);
536
+ if (!session) {
537
+ throw import_session.SessionError.notFound(sessionScope);
538
+ }
539
+ await this.sessionManager.switchLLMForSpecificSession(validatedConfig, sessionScope);
540
+ } else {
541
+ await this.sessionManager.switchLLMForDefaultSession(validatedConfig);
542
+ }
543
+ }
544
+ /**
545
+ * Gets all supported LLM providers.
546
+ * Returns a strongly-typed array of valid provider names that can be used with the agent.
547
+ *
548
+ * @returns Array of supported provider names
549
+ *
550
+ * @example
551
+ * ```typescript
552
+ * const providers = agent.getSupportedProviders();
553
+ * console.log(providers); // ['openai', 'anthropic', 'google', 'groq']
554
+ * ```
555
+ */
556
+ getSupportedProviders() {
557
+ return (0, import_registry.getSupportedProviders)();
558
+ }
559
+ /**
560
+ * Gets all supported models grouped by provider with detailed information.
561
+ * Returns a strongly-typed object mapping each provider to its available models,
562
+ * including model metadata such as token limits and default status.
563
+ *
564
+ * @returns Object mapping provider names to their model information
565
+ *
566
+ * @example
567
+ * ```typescript
568
+ * const models = agent.getSupportedModels();
569
+ * console.log(models.openai); // Array of OpenAI models with metadata
570
+ * console.log(models.anthropic[0].maxInputTokens); // Token limit for first Anthropic model
571
+ *
572
+ * // Check if a model is the default for its provider
573
+ * const hasDefault = models.google.some(model => model.isDefault);
574
+ * ```
575
+ */
576
+ getSupportedModels() {
577
+ const result = {};
578
+ const providers = (0, import_registry.getSupportedProviders)();
579
+ for (const provider of providers) {
580
+ const defaultModel = (0, import_registry.getDefaultModelForProvider)(provider);
581
+ const providerInfo = import_registry.LLM_REGISTRY[provider];
582
+ result[provider] = providerInfo.models.map((model) => ({
583
+ ...model,
584
+ isDefault: model.name === defaultModel
585
+ }));
586
+ }
587
+ return result;
588
+ }
589
+ /**
590
+ * Gets supported models for a specific provider.
591
+ * Returns model information including metadata for the specified provider only.
592
+ *
593
+ * @param provider The provider to get models for
594
+ * @returns Array of model information for the specified provider
595
+ * @throws Error if provider is not supported
596
+ *
597
+ * @example
598
+ * ```typescript
599
+ * try {
600
+ * const openaiModels = agent.getSupportedModelsForProvider('openai');
601
+ * const defaultModel = openaiModels.find(model => model.isDefault);
602
+ * console.log(`Default OpenAI model: ${defaultModel?.name}`);
603
+ * } catch (error) {
604
+ * console.error('Unsupported provider');
605
+ * }
606
+ * ```
607
+ */
608
+ getSupportedModelsForProvider(provider) {
609
+ const defaultModel = (0, import_registry.getDefaultModelForProvider)(provider);
610
+ const providerInfo = import_registry.LLM_REGISTRY[provider];
611
+ return providerInfo.models.map((model) => ({
612
+ ...model,
613
+ isDefault: model.name === defaultModel
614
+ }));
615
+ }
616
+ /**
617
+ * Infers the provider from a model name.
618
+ * Searches through all supported providers to find which one supports the given model.
619
+ *
620
+ * @param modelName The model name to search for
621
+ * @returns The provider name if found, null if the model is not supported
622
+ *
623
+ * @example
624
+ * ```typescript
625
+ * const provider = agent.inferProviderFromModel('gpt-4o');
626
+ * console.log(provider); // 'openai'
627
+ *
628
+ * const provider2 = agent.inferProviderFromModel('claude-4-sonnet-20250514');
629
+ * console.log(provider2); // 'anthropic'
630
+ *
631
+ * const provider3 = agent.inferProviderFromModel('unknown-model');
632
+ * console.log(provider3); // null
633
+ * ```
634
+ */
635
+ inferProviderFromModel(modelName) {
636
+ try {
637
+ return (0, import_registry.getProviderFromModel)(modelName);
638
+ } catch {
639
+ return null;
640
+ }
641
+ }
642
+ // ============= MCP SERVER MANAGEMENT =============
643
+ /**
644
+ * Connects a new MCP server and adds it to the runtime configuration.
645
+ * This method handles validation, state management, and establishing the connection.
646
+ *
647
+ * @param name The name of the server to connect.
648
+ * @param config The configuration object for the server.
649
+ * @throws DextoError if validation fails or connection fails
650
+ */
651
+ async connectMcpServer(name, config) {
652
+ this.ensureStarted();
653
+ const existingServerNames = Object.keys(this.stateManager.getRuntimeConfig().mcpServers);
654
+ const validation = (0, import_resolver2.resolveAndValidateMcpServerConfig)(name, config, existingServerNames);
655
+ const validatedConfig = (0, import_result_bridge.ensureOk)(validation);
656
+ this.stateManager.addMcpServer(name, validatedConfig);
657
+ try {
658
+ await this.mcpManager.connectServer(name, validatedConfig);
659
+ this.agentEventBus.emit("dexto:mcpServerConnected", {
660
+ name,
661
+ success: true
662
+ });
663
+ this.agentEventBus.emit("dexto:availableToolsUpdated", {
664
+ tools: Object.keys(await this.toolManager.getAllTools()),
665
+ source: "mcp"
666
+ });
667
+ import_logger.logger.info(`DextoAgent: Successfully added and connected to MCP server '${name}'.`);
668
+ const warnings = validation.issues.filter((i) => i.severity === "warning");
669
+ if (warnings.length > 0) {
670
+ import_logger.logger.warn(
671
+ `MCP server connected with warnings: ${warnings.map((w) => w.message).join(", ")}`
672
+ );
673
+ }
674
+ } catch (error) {
675
+ const errorMessage = error instanceof Error ? error.message : String(error);
676
+ import_logger.logger.error(`DextoAgent: Failed to connect to MCP server '${name}': ${errorMessage}`);
677
+ this.stateManager.removeMcpServer(name);
678
+ this.agentEventBus.emit("dexto:mcpServerConnected", {
679
+ name,
680
+ success: false,
681
+ error: errorMessage
682
+ });
683
+ throw import_errors2.MCPError.connectionFailed(name, errorMessage);
684
+ }
685
+ }
686
+ /**
687
+ * Removes and disconnects an MCP server.
688
+ * @param name The name of the server to remove.
689
+ */
690
+ async removeMcpServer(name) {
691
+ this.ensureStarted();
692
+ await this.mcpManager.removeClient(name);
693
+ this.stateManager.removeMcpServer(name);
694
+ }
695
+ /**
696
+ * Executes a tool from any source (MCP servers, custom tools, or internal tools).
697
+ * This is the unified interface for tool execution that can handle all tool types.
698
+ * @param toolName The name of the tool to execute
699
+ * @param args The arguments to pass to the tool
700
+ * @returns The result of the tool execution
701
+ */
702
+ async executeTool(toolName, args) {
703
+ this.ensureStarted();
704
+ return await this.toolManager.executeTool(toolName, args);
705
+ }
706
+ /**
707
+ * Gets all available tools from all connected MCP servers.
708
+ * Useful for users to discover what tools are available.
709
+ * @returns Promise resolving to a map of tool names to tool definitions
710
+ */
711
+ async getAllMcpTools() {
712
+ this.ensureStarted();
713
+ return await this.mcpManager.getAllTools();
714
+ }
715
+ /**
716
+ * Gets all available tools from all sources (MCP servers and custom tools).
717
+ * This is the unified interface for tool discovery that includes both MCP and custom tools.
718
+ * @returns Promise resolving to a map of tool names to tool definitions
719
+ */
720
+ async getAllTools() {
721
+ this.ensureStarted();
722
+ return await this.toolManager.getAllTools();
723
+ }
724
+ /**
725
+ * Gets all connected MCP clients.
726
+ * Used by the API layer to inspect client status.
727
+ * @returns Map of client names to client instances
728
+ */
729
+ getMcpClients() {
730
+ this.ensureStarted();
731
+ return this.mcpManager.getClients();
732
+ }
733
+ /**
734
+ * Gets all failed MCP connections.
735
+ * Used by the API layer to report connection errors.
736
+ * @returns Record of failed connection names to error messages
737
+ */
738
+ getMcpFailedConnections() {
739
+ this.ensureStarted();
740
+ return this.mcpManager.getFailedConnections();
741
+ }
742
+ // ============= PROMPT MANAGEMENT =============
743
+ /**
744
+ * Gets the current system prompt with all dynamic content resolved.
745
+ * This method builds the complete prompt by invoking all configured prompt contributors
746
+ * (static content, dynamic placeholders, MCP resources, etc.) and returns the final
747
+ * prompt string that will be sent to the LLM.
748
+ *
749
+ * Useful for debugging prompt issues, inspecting what context the AI receives,
750
+ * and understanding how dynamic content is being incorporated.
751
+ *
752
+ * @returns Promise resolving to the complete system prompt string
753
+ *
754
+ * @example
755
+ * ```typescript
756
+ * // Get the current system prompt for inspection
757
+ * const prompt = await agent.getSystemPrompt();
758
+ * console.log('Current system prompt:', prompt);
759
+ *
760
+ * // Useful for debugging prompt-related issues
761
+ * if (response.quality === 'poor') {
762
+ * const prompt = await agent.getSystemPrompt();
763
+ * console.log('Check if prompt includes expected context:', prompt);
764
+ * }
765
+ * ```
766
+ */
767
+ async getSystemPrompt() {
768
+ this.ensureStarted();
769
+ const context = {
770
+ mcpManager: this.mcpManager
771
+ };
772
+ return await this.promptManager.build(context);
773
+ }
774
+ // ============= CONFIGURATION ACCESS =============
775
+ /**
776
+ * Gets the effective configuration for a session or the default configuration.
777
+ * @param sessionId Optional session ID. If not provided, returns default config.
778
+ * @returns The effective configuration object
779
+ */
780
+ getEffectiveConfig(sessionId) {
781
+ this.ensureStarted();
782
+ return sessionId ? this.stateManager.getRuntimeConfig(sessionId) : this.stateManager.getRuntimeConfig();
783
+ }
784
+ // Future methods could encapsulate more complex agent behaviors:
785
+ // - Multi-step task execution with progress tracking
786
+ // - Memory and context management across sessions
787
+ // - Tool chaining and workflow automation
788
+ // - Agent collaboration and delegation
789
+ }
790
+ // Annotate the CommonJS export names for ESM import in node:
791
+ 0 && (module.exports = {
792
+ DextoAgent
793
+ });