@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,254 @@
1
+ import { IMessageFormatter } from '../llm/formatters/types.cjs';
2
+ import { LLMContext } from '../llm/types.cjs';
3
+ import { InternalMessage, ImageData, FileData } from './types.cjs';
4
+ import { ITokenizer } from '../llm/tokenizer/types.cjs';
5
+ import { ICompressionStrategy } from './compression/types.cjs';
6
+ import { DynamicContributorContext } from '../systemPrompt/types.cjs';
7
+ import { PromptManager } from '../systemPrompt/manager.cjs';
8
+ import { IConversationHistoryProvider } from '../session/history/types.cjs';
9
+ import { ValidatedLLMConfig } from '../llm/schemas.cjs';
10
+ import '../mcp/manager.cjs';
11
+ import '../mcp/schemas.cjs';
12
+ import 'zod';
13
+ import '../mcp/types.cjs';
14
+ import '@modelcontextprotocol/sdk/client/index.js';
15
+ import '../tools/types.cjs';
16
+ import 'json-schema';
17
+ import '@modelcontextprotocol/sdk/types.js';
18
+ import '../systemPrompt/schemas.cjs';
19
+
20
+ /**
21
+ * Manages conversation history and provides message formatting capabilities for the LLM context.
22
+ * The ContextManager is responsible for:
23
+ * - Validating and storing conversation messages via the history provider
24
+ * - Managing the system prompt
25
+ * - Formatting messages for specific LLM providers through an injected formatter
26
+ * - Optionally counting tokens using a provided tokenizer
27
+ * - Applying compression strategies sequentially if token limits are exceeded
28
+ * - Providing access to conversation history
29
+ *
30
+ * Note: All conversation history is stored and retrieved via the injected ConversationHistoryProvider.
31
+ * The ContextManager does not maintain an internal history cache.
32
+ * TODO: clean up tokenizer logic if we are relying primarily on LLM API to give us token count.
33
+ * TODO: Move InternalMessage parsing logic to zod
34
+ * Right now its weaker because it doesn't account for tools and other non-text content in the prompt.
35
+ *
36
+ * @template TMessage The message type for the specific LLM provider (e.g., MessageParam, ChatCompletionMessageParam, ModelMessage)
37
+ */
38
+ declare class ContextManager<TMessage = unknown> {
39
+ /**
40
+ * The validated LLM configuration.
41
+ */
42
+ private llmConfig;
43
+ /**
44
+ * PromptManager used to generate/manage the system prompt
45
+ */
46
+ private promptManager;
47
+ /**
48
+ * Formatter used to convert internal messages to LLM-specific format
49
+ */
50
+ private formatter;
51
+ /**
52
+ * Maximum number of tokens allowed in the conversation (if specified)
53
+ */
54
+ private maxInputTokens;
55
+ /**
56
+ * Actual token count from the last LLM response.
57
+ * Used for more accurate token estimation in hybrid approach.
58
+ */
59
+ private lastActualTokenCount;
60
+ /**
61
+ * Compression threshold as a percentage of maxInputTokens.
62
+ * When estimated tokens exceed (maxInputTokens * threshold), compression is triggered.
63
+ */
64
+ private compressionThreshold;
65
+ /**
66
+ * Tokenizer used for counting tokens and enabling compression (if specified)
67
+ */
68
+ private tokenizer;
69
+ /**
70
+ * The sequence of compression strategies to apply when maxInputTokens is exceeded.
71
+ * The order in this array matters, as strategies are applied sequentially until
72
+ * the token count is within the limit.
73
+ */
74
+ private compressionStrategies;
75
+ private historyProvider;
76
+ private readonly sessionId;
77
+ /**
78
+ * Creates a new ContextManager instance
79
+ * @param llmConfig The validated LLM configuration.
80
+ * @param formatter Formatter implementation for the target LLM provider
81
+ * @param promptManager PromptManager instance for the conversation
82
+ * @param maxInputTokens Maximum token limit for the conversation history. Triggers compression if exceeded and a tokenizer is provided.
83
+ * @param tokenizer Tokenizer implementation used for counting tokens and enabling compression.
84
+ * @param historyProvider Session-scoped ConversationHistoryProvider instance for managing conversation history
85
+ * @param sessionId Unique identifier for the conversation session (readonly, for debugging)
86
+ * @param compressionStrategies Optional array of compression strategies to apply when token limits are exceeded
87
+ */
88
+ constructor(llmConfig: ValidatedLLMConfig, formatter: IMessageFormatter, promptManager: PromptManager, maxInputTokens: number, tokenizer: ITokenizer, historyProvider: IConversationHistoryProvider, sessionId: string, compressionStrategies?: ICompressionStrategy[]);
89
+ /**
90
+ * Returns the current token count of the conversation history.
91
+ * @returns Promise that resolves to the number of tokens in the current history
92
+ */
93
+ getTokenCount(): Promise<number>;
94
+ /**
95
+ * Returns the total token count that will be sent to the LLM provider,
96
+ * including system prompt, formatted messages, and provider-specific overhead.
97
+ * This provides a more accurate estimate than getTokenCount() alone.
98
+ *
99
+ * @param context The DynamicContributorContext for system prompt contributors
100
+ * @returns Promise that resolves to the total number of tokens that will be sent to the provider
101
+ */
102
+ getTotalTokenCount(context: DynamicContributorContext): Promise<number>;
103
+ /**
104
+ * Returns the configured maximum number of input tokens for the conversation.
105
+ */
106
+ getMaxInputTokens(): number;
107
+ /**
108
+ * Updates the ContextManager configuration when LLM config changes.
109
+ * This is called when DextoAgent.switchLLM() updates the LLM configuration.
110
+ *
111
+ * @param newMaxInputTokens New maximum token limit
112
+ * @param newTokenizer Optional new tokenizer if provider changed
113
+ * @param newFormatter Optional new formatter if provider/router changed
114
+ */
115
+ updateConfig(newMaxInputTokens: number, newTokenizer?: ITokenizer, newFormatter?: IMessageFormatter): void;
116
+ /**
117
+ * Updates the actual token count from the last LLM response.
118
+ * This enables hybrid token counting for more accurate estimates.
119
+ *
120
+ * @param actualTokens The actual token count reported by the LLM provider
121
+ */
122
+ updateActualTokenCount(actualTokens: number): void;
123
+ /**
124
+ * Estimates if new input would trigger compression using hybrid approach.
125
+ * Combines actual tokens from last response with estimated tokens for new input.
126
+ *
127
+ * @param newInputTokens Estimated tokens for the new user input
128
+ * @returns True if compression should be triggered
129
+ */
130
+ shouldCompress(newInputTokens: number): boolean;
131
+ /**
132
+ * Assembles and returns the current system prompt by invoking the PromptManager.
133
+ */
134
+ getSystemPrompt(context: DynamicContributorContext): Promise<string>;
135
+ /**
136
+ * Gets the raw conversation history
137
+ * Returns a defensive copy to prevent modification
138
+ *
139
+ * @returns Promise that resolves to a read-only copy of the conversation history
140
+ */
141
+ getHistory(): Promise<Readonly<InternalMessage[]>>;
142
+ /**
143
+ * Adds a message to the conversation history.
144
+ * Performs validation based on message role and required fields.
145
+ * Note: Compression based on token limits is applied lazily when calling `getFormattedMessages`, not immediately upon adding.
146
+ *
147
+ * @param message The message to add to the history
148
+ * @throws Error if message validation fails
149
+ */
150
+ addMessage(message: InternalMessage): Promise<void>;
151
+ /**
152
+ * Adds a user message to the conversation
153
+ * Can include image data for multimodal input
154
+ *
155
+ * @param textContent The user message content
156
+ * @param imageData Optional image data for multimodal input
157
+ * @param fileData Optional file data for file input
158
+ * @throws Error if content is empty or not a string
159
+ */
160
+ addUserMessage(textContent: string, imageData?: ImageData, fileData?: FileData): Promise<void>;
161
+ /**
162
+ * Adds an assistant message to the conversation
163
+ * Can include tool calls if the assistant is requesting tool execution
164
+ *
165
+ * @param content The assistant's response text (can be null if only tool calls)
166
+ * @param toolCalls Optional tool calls requested by the assistant
167
+ * @param metadata Optional metadata including token usage, reasoning, and model info
168
+ * @throws Error if neither content nor toolCalls are provided
169
+ */
170
+ addAssistantMessage(content: string | null, toolCalls?: InternalMessage['toolCalls'], metadata?: {
171
+ tokenUsage?: InternalMessage['tokenUsage'];
172
+ reasoning?: string;
173
+ }): Promise<void>;
174
+ /**
175
+ * Adds a tool result message to the conversation
176
+ *
177
+ * @param toolCallId ID of the tool call this result is responding to
178
+ * @param name Name of the tool that executed
179
+ * @param result The result returned by the tool
180
+ * @throws Error if required parameters are missing
181
+ */
182
+ addToolResult(toolCallId: string, name: string, result: unknown): Promise<void>;
183
+ /**
184
+ * Sets the system prompt for the conversation
185
+ *
186
+ * @param prompt The system prompt text
187
+ */
188
+ setSystemPrompt(_prompt: string): void;
189
+ /**
190
+ * Gets the conversation history formatted for the target LLM provider.
191
+ * Applies compression strategies sequentially if the manager is configured with a `maxInputTokens` limit
192
+ * and a `tokenizer`, and the current token count exceeds the limit. Compression happens *before* formatting.
193
+ * Uses the injected formatter to convert internal messages (potentially compressed) to the provider's format.
194
+ *
195
+ * @param contributorContext The DynamicContributorContext for system prompt contributors and formatting
196
+ * @param llmContext The llmContext for the formatter to decide which messages to include based on the model's capabilities
197
+ * @param systemPrompt (Optional) Precomputed system prompt string. If provided, it will be used instead of recomputing the system prompt. Useful for avoiding duplicate computation when both the formatted messages and the raw system prompt are needed in the same request.
198
+ * @param history (Optional) Pre-fetched and potentially compressed history. If not provided, will fetch from history provider.
199
+ * @returns Formatted messages ready to send to the LLM provider API
200
+ * @throws Error if formatting or compression fails critically
201
+ */
202
+ getFormattedMessages(contributorContext: DynamicContributorContext, llmContext: LLMContext, systemPrompt?: string | undefined, history?: InternalMessage[]): Promise<TMessage[]>;
203
+ /**
204
+ * Gets the conversation ready for LLM consumption with proper flow:
205
+ * 1. Get system prompt
206
+ * 2. Get history and compress if needed
207
+ * 3. Format messages
208
+ * This method implements the correct ordering to avoid circular dependencies.
209
+ *
210
+ * @param contributorContext The DynamicContributorContext for system prompt contributors and formatting
211
+ * @param llmContext The llmContext for the formatter to decide which messages to include based on the model's capabilities
212
+ * @returns Object containing formatted messages and system prompt
213
+ */
214
+ getFormattedMessagesWithCompression(contributorContext: DynamicContributorContext, llmContext: LLMContext): Promise<{
215
+ formattedMessages: TMessage[];
216
+ systemPrompt: string;
217
+ tokensUsed: number;
218
+ }>;
219
+ /**
220
+ * Gets the system prompt formatted for the target LLM provider
221
+ * Some providers handle system prompts differently
222
+ *
223
+ * @returns Formatted system prompt or null/undefined based on formatter implementation
224
+ * @throws Error if formatting fails
225
+ */
226
+ getFormattedSystemPrompt(context: DynamicContributorContext): Promise<string | null | undefined>;
227
+ /**
228
+ * Resets the conversation history
229
+ * Does not reset the system prompt
230
+ */
231
+ resetConversation(): Promise<void>;
232
+ /**
233
+ * Checks if history compression is needed based on token count and applies strategies.
234
+ *
235
+ * @param history The conversation history to potentially compress
236
+ * @param systemPromptTokens The actual token count of the system prompt
237
+ * @returns The potentially compressed history
238
+ */
239
+ compressHistoryIfNeeded(history: InternalMessage[], systemPromptTokens: number): Promise<InternalMessage[]>;
240
+ /**
241
+ * Parses a raw LLM stream response, converts it into internal messages and adds them to the history.
242
+ *
243
+ * @param response The stream response from the LLM provider
244
+ */
245
+ processLLMStreamResponse(response: unknown): Promise<void>;
246
+ /**
247
+ * Parses a raw LLM response, converts it into internal messages and adds them to the history.
248
+ *
249
+ * @param response The response from the LLM provider
250
+ */
251
+ processLLMResponse(response: unknown): Promise<void>;
252
+ }
253
+
254
+ export { ContextManager };
@@ -0,0 +1,254 @@
1
+ import { IMessageFormatter } from '../llm/formatters/types.js';
2
+ import { LLMContext } from '../llm/types.js';
3
+ import { InternalMessage, ImageData, FileData } from './types.js';
4
+ import { ITokenizer } from '../llm/tokenizer/types.js';
5
+ import { ICompressionStrategy } from './compression/types.js';
6
+ import { DynamicContributorContext } from '../systemPrompt/types.js';
7
+ import { PromptManager } from '../systemPrompt/manager.js';
8
+ import { IConversationHistoryProvider } from '../session/history/types.js';
9
+ import { ValidatedLLMConfig } from '../llm/schemas.js';
10
+ import '../mcp/manager.js';
11
+ import '../mcp/schemas.js';
12
+ import 'zod';
13
+ import '../mcp/types.js';
14
+ import '@modelcontextprotocol/sdk/client/index.js';
15
+ import '../tools/types.js';
16
+ import 'json-schema';
17
+ import '@modelcontextprotocol/sdk/types.js';
18
+ import '../systemPrompt/schemas.js';
19
+
20
+ /**
21
+ * Manages conversation history and provides message formatting capabilities for the LLM context.
22
+ * The ContextManager is responsible for:
23
+ * - Validating and storing conversation messages via the history provider
24
+ * - Managing the system prompt
25
+ * - Formatting messages for specific LLM providers through an injected formatter
26
+ * - Optionally counting tokens using a provided tokenizer
27
+ * - Applying compression strategies sequentially if token limits are exceeded
28
+ * - Providing access to conversation history
29
+ *
30
+ * Note: All conversation history is stored and retrieved via the injected ConversationHistoryProvider.
31
+ * The ContextManager does not maintain an internal history cache.
32
+ * TODO: clean up tokenizer logic if we are relying primarily on LLM API to give us token count.
33
+ * TODO: Move InternalMessage parsing logic to zod
34
+ * Right now its weaker because it doesn't account for tools and other non-text content in the prompt.
35
+ *
36
+ * @template TMessage The message type for the specific LLM provider (e.g., MessageParam, ChatCompletionMessageParam, ModelMessage)
37
+ */
38
+ declare class ContextManager<TMessage = unknown> {
39
+ /**
40
+ * The validated LLM configuration.
41
+ */
42
+ private llmConfig;
43
+ /**
44
+ * PromptManager used to generate/manage the system prompt
45
+ */
46
+ private promptManager;
47
+ /**
48
+ * Formatter used to convert internal messages to LLM-specific format
49
+ */
50
+ private formatter;
51
+ /**
52
+ * Maximum number of tokens allowed in the conversation (if specified)
53
+ */
54
+ private maxInputTokens;
55
+ /**
56
+ * Actual token count from the last LLM response.
57
+ * Used for more accurate token estimation in hybrid approach.
58
+ */
59
+ private lastActualTokenCount;
60
+ /**
61
+ * Compression threshold as a percentage of maxInputTokens.
62
+ * When estimated tokens exceed (maxInputTokens * threshold), compression is triggered.
63
+ */
64
+ private compressionThreshold;
65
+ /**
66
+ * Tokenizer used for counting tokens and enabling compression (if specified)
67
+ */
68
+ private tokenizer;
69
+ /**
70
+ * The sequence of compression strategies to apply when maxInputTokens is exceeded.
71
+ * The order in this array matters, as strategies are applied sequentially until
72
+ * the token count is within the limit.
73
+ */
74
+ private compressionStrategies;
75
+ private historyProvider;
76
+ private readonly sessionId;
77
+ /**
78
+ * Creates a new ContextManager instance
79
+ * @param llmConfig The validated LLM configuration.
80
+ * @param formatter Formatter implementation for the target LLM provider
81
+ * @param promptManager PromptManager instance for the conversation
82
+ * @param maxInputTokens Maximum token limit for the conversation history. Triggers compression if exceeded and a tokenizer is provided.
83
+ * @param tokenizer Tokenizer implementation used for counting tokens and enabling compression.
84
+ * @param historyProvider Session-scoped ConversationHistoryProvider instance for managing conversation history
85
+ * @param sessionId Unique identifier for the conversation session (readonly, for debugging)
86
+ * @param compressionStrategies Optional array of compression strategies to apply when token limits are exceeded
87
+ */
88
+ constructor(llmConfig: ValidatedLLMConfig, formatter: IMessageFormatter, promptManager: PromptManager, maxInputTokens: number, tokenizer: ITokenizer, historyProvider: IConversationHistoryProvider, sessionId: string, compressionStrategies?: ICompressionStrategy[]);
89
+ /**
90
+ * Returns the current token count of the conversation history.
91
+ * @returns Promise that resolves to the number of tokens in the current history
92
+ */
93
+ getTokenCount(): Promise<number>;
94
+ /**
95
+ * Returns the total token count that will be sent to the LLM provider,
96
+ * including system prompt, formatted messages, and provider-specific overhead.
97
+ * This provides a more accurate estimate than getTokenCount() alone.
98
+ *
99
+ * @param context The DynamicContributorContext for system prompt contributors
100
+ * @returns Promise that resolves to the total number of tokens that will be sent to the provider
101
+ */
102
+ getTotalTokenCount(context: DynamicContributorContext): Promise<number>;
103
+ /**
104
+ * Returns the configured maximum number of input tokens for the conversation.
105
+ */
106
+ getMaxInputTokens(): number;
107
+ /**
108
+ * Updates the ContextManager configuration when LLM config changes.
109
+ * This is called when DextoAgent.switchLLM() updates the LLM configuration.
110
+ *
111
+ * @param newMaxInputTokens New maximum token limit
112
+ * @param newTokenizer Optional new tokenizer if provider changed
113
+ * @param newFormatter Optional new formatter if provider/router changed
114
+ */
115
+ updateConfig(newMaxInputTokens: number, newTokenizer?: ITokenizer, newFormatter?: IMessageFormatter): void;
116
+ /**
117
+ * Updates the actual token count from the last LLM response.
118
+ * This enables hybrid token counting for more accurate estimates.
119
+ *
120
+ * @param actualTokens The actual token count reported by the LLM provider
121
+ */
122
+ updateActualTokenCount(actualTokens: number): void;
123
+ /**
124
+ * Estimates if new input would trigger compression using hybrid approach.
125
+ * Combines actual tokens from last response with estimated tokens for new input.
126
+ *
127
+ * @param newInputTokens Estimated tokens for the new user input
128
+ * @returns True if compression should be triggered
129
+ */
130
+ shouldCompress(newInputTokens: number): boolean;
131
+ /**
132
+ * Assembles and returns the current system prompt by invoking the PromptManager.
133
+ */
134
+ getSystemPrompt(context: DynamicContributorContext): Promise<string>;
135
+ /**
136
+ * Gets the raw conversation history
137
+ * Returns a defensive copy to prevent modification
138
+ *
139
+ * @returns Promise that resolves to a read-only copy of the conversation history
140
+ */
141
+ getHistory(): Promise<Readonly<InternalMessage[]>>;
142
+ /**
143
+ * Adds a message to the conversation history.
144
+ * Performs validation based on message role and required fields.
145
+ * Note: Compression based on token limits is applied lazily when calling `getFormattedMessages`, not immediately upon adding.
146
+ *
147
+ * @param message The message to add to the history
148
+ * @throws Error if message validation fails
149
+ */
150
+ addMessage(message: InternalMessage): Promise<void>;
151
+ /**
152
+ * Adds a user message to the conversation
153
+ * Can include image data for multimodal input
154
+ *
155
+ * @param textContent The user message content
156
+ * @param imageData Optional image data for multimodal input
157
+ * @param fileData Optional file data for file input
158
+ * @throws Error if content is empty or not a string
159
+ */
160
+ addUserMessage(textContent: string, imageData?: ImageData, fileData?: FileData): Promise<void>;
161
+ /**
162
+ * Adds an assistant message to the conversation
163
+ * Can include tool calls if the assistant is requesting tool execution
164
+ *
165
+ * @param content The assistant's response text (can be null if only tool calls)
166
+ * @param toolCalls Optional tool calls requested by the assistant
167
+ * @param metadata Optional metadata including token usage, reasoning, and model info
168
+ * @throws Error if neither content nor toolCalls are provided
169
+ */
170
+ addAssistantMessage(content: string | null, toolCalls?: InternalMessage['toolCalls'], metadata?: {
171
+ tokenUsage?: InternalMessage['tokenUsage'];
172
+ reasoning?: string;
173
+ }): Promise<void>;
174
+ /**
175
+ * Adds a tool result message to the conversation
176
+ *
177
+ * @param toolCallId ID of the tool call this result is responding to
178
+ * @param name Name of the tool that executed
179
+ * @param result The result returned by the tool
180
+ * @throws Error if required parameters are missing
181
+ */
182
+ addToolResult(toolCallId: string, name: string, result: unknown): Promise<void>;
183
+ /**
184
+ * Sets the system prompt for the conversation
185
+ *
186
+ * @param prompt The system prompt text
187
+ */
188
+ setSystemPrompt(_prompt: string): void;
189
+ /**
190
+ * Gets the conversation history formatted for the target LLM provider.
191
+ * Applies compression strategies sequentially if the manager is configured with a `maxInputTokens` limit
192
+ * and a `tokenizer`, and the current token count exceeds the limit. Compression happens *before* formatting.
193
+ * Uses the injected formatter to convert internal messages (potentially compressed) to the provider's format.
194
+ *
195
+ * @param contributorContext The DynamicContributorContext for system prompt contributors and formatting
196
+ * @param llmContext The llmContext for the formatter to decide which messages to include based on the model's capabilities
197
+ * @param systemPrompt (Optional) Precomputed system prompt string. If provided, it will be used instead of recomputing the system prompt. Useful for avoiding duplicate computation when both the formatted messages and the raw system prompt are needed in the same request.
198
+ * @param history (Optional) Pre-fetched and potentially compressed history. If not provided, will fetch from history provider.
199
+ * @returns Formatted messages ready to send to the LLM provider API
200
+ * @throws Error if formatting or compression fails critically
201
+ */
202
+ getFormattedMessages(contributorContext: DynamicContributorContext, llmContext: LLMContext, systemPrompt?: string | undefined, history?: InternalMessage[]): Promise<TMessage[]>;
203
+ /**
204
+ * Gets the conversation ready for LLM consumption with proper flow:
205
+ * 1. Get system prompt
206
+ * 2. Get history and compress if needed
207
+ * 3. Format messages
208
+ * This method implements the correct ordering to avoid circular dependencies.
209
+ *
210
+ * @param contributorContext The DynamicContributorContext for system prompt contributors and formatting
211
+ * @param llmContext The llmContext for the formatter to decide which messages to include based on the model's capabilities
212
+ * @returns Object containing formatted messages and system prompt
213
+ */
214
+ getFormattedMessagesWithCompression(contributorContext: DynamicContributorContext, llmContext: LLMContext): Promise<{
215
+ formattedMessages: TMessage[];
216
+ systemPrompt: string;
217
+ tokensUsed: number;
218
+ }>;
219
+ /**
220
+ * Gets the system prompt formatted for the target LLM provider
221
+ * Some providers handle system prompts differently
222
+ *
223
+ * @returns Formatted system prompt or null/undefined based on formatter implementation
224
+ * @throws Error if formatting fails
225
+ */
226
+ getFormattedSystemPrompt(context: DynamicContributorContext): Promise<string | null | undefined>;
227
+ /**
228
+ * Resets the conversation history
229
+ * Does not reset the system prompt
230
+ */
231
+ resetConversation(): Promise<void>;
232
+ /**
233
+ * Checks if history compression is needed based on token count and applies strategies.
234
+ *
235
+ * @param history The conversation history to potentially compress
236
+ * @param systemPromptTokens The actual token count of the system prompt
237
+ * @returns The potentially compressed history
238
+ */
239
+ compressHistoryIfNeeded(history: InternalMessage[], systemPromptTokens: number): Promise<InternalMessage[]>;
240
+ /**
241
+ * Parses a raw LLM stream response, converts it into internal messages and adds them to the history.
242
+ *
243
+ * @param response The stream response from the LLM provider
244
+ */
245
+ processLLMStreamResponse(response: unknown): Promise<void>;
246
+ /**
247
+ * Parses a raw LLM response, converts it into internal messages and adds them to the history.
248
+ *
249
+ * @param response The response from the LLM provider
250
+ */
251
+ processLLMResponse(response: unknown): Promise<void>;
252
+ }
253
+
254
+ export { ContextManager };