@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,113 @@
1
+ import { LLMProvider, LLMRouter } from '../llm/types.js';
2
+
3
+ /**
4
+ * Internal representation of a message in a conversation.
5
+ * Standardizes message format across different LLM providers.
6
+ */
7
+ interface ImageData {
8
+ image: string | Uint8Array | Buffer | ArrayBuffer | URL;
9
+ mimeType?: string;
10
+ }
11
+ interface FileData {
12
+ data: string | Uint8Array | Buffer | ArrayBuffer | URL;
13
+ mimeType: string;
14
+ filename?: string;
15
+ }
16
+ interface TextPart {
17
+ type: 'text';
18
+ text: string;
19
+ }
20
+ interface ImagePart extends ImageData {
21
+ type: 'image';
22
+ }
23
+ interface FilePart extends FileData {
24
+ type: 'file';
25
+ }
26
+ interface InternalMessage {
27
+ /**
28
+ * The role of the entity sending the message.
29
+ * - 'system': System instructions or context
30
+ * - 'user': End-user input
31
+ * - 'assistant': LLM response
32
+ * - 'tool': Result from a tool execution
33
+ */
34
+ role: 'system' | 'user' | 'assistant' | 'tool';
35
+ /**
36
+ * Timestamp when the message was created (Unix timestamp in milliseconds).
37
+ * TODO: Populate this field when messages are created. Currently not implemented.
38
+ * @see https://github.com/truffle-ai/dexto/issues/XXX
39
+ */
40
+ timestamp?: number;
41
+ /**
42
+ * The content of the message.
43
+ * - String for system, assistant (text only), and tool messages.
44
+ * - Array of parts for user messages (can include text, images, and files).
45
+ * - null if an assistant message only contains tool calls.
46
+ */
47
+ content: string | null | Array<TextPart | ImagePart | FilePart>;
48
+ /**
49
+ * Optional model reasoning text associated with an assistant response.
50
+ * Present when the provider supports reasoning and returns a final reasoning trace.
51
+ */
52
+ reasoning?: string;
53
+ /**
54
+ * Optional token usage accounting for this assistant response.
55
+ */
56
+ tokenUsage?: {
57
+ inputTokens?: number;
58
+ outputTokens?: number;
59
+ reasoningTokens?: number;
60
+ totalTokens?: number;
61
+ };
62
+ /**
63
+ * Optional model identifier for assistant messages.
64
+ * Indicates which LLM model generated this response.
65
+ */
66
+ model?: string;
67
+ /** Optional provider identifier for assistant messages. */
68
+ provider?: LLMProvider;
69
+ /**
70
+ * Optional router metadata for assistant messages.
71
+ * Indicates which router was used to route the request.
72
+ */
73
+ router?: LLMRouter;
74
+ /**
75
+ * Tool calls made by the assistant.
76
+ * Only present in assistant messages when the LLM requests tool execution.
77
+ */
78
+ toolCalls?: Array<{
79
+ /**
80
+ * Unique identifier for this tool call
81
+ */
82
+ id: string;
83
+ /**
84
+ * The type of tool call (currently only 'function' is supported)
85
+ */
86
+ type: 'function';
87
+ /**
88
+ * Function call details
89
+ */
90
+ function: {
91
+ /**
92
+ * Name of the function to call
93
+ */
94
+ name: string;
95
+ /**
96
+ * Arguments for the function in JSON string format
97
+ */
98
+ arguments: string;
99
+ };
100
+ }>;
101
+ /**
102
+ * ID of the tool call this message is responding to.
103
+ * Only present in tool messages.
104
+ */
105
+ toolCallId?: string;
106
+ /**
107
+ * Name of the tool that produced this result.
108
+ * Only present in tool messages.
109
+ */
110
+ name?: string;
111
+ }
112
+
113
+ export type { FileData, FilePart, ImageData, ImagePart, InternalMessage, TextPart };
File without changes
@@ -0,0 +1,406 @@
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 utils_exports = {};
20
+ __export(utils_exports, {
21
+ countMessagesTokens: () => countMessagesTokens,
22
+ filterMessagesByLLMCapabilities: () => filterMessagesByLLMCapabilities,
23
+ getFileData: () => getFileData,
24
+ getImageData: () => getImageData,
25
+ isLikelyBase64String: () => isLikelyBase64String,
26
+ parseDataUri: () => parseDataUri,
27
+ sanitizeToolResultToContent: () => sanitizeToolResultToContent,
28
+ summarizeToolContentForText: () => summarizeToolContentForText,
29
+ toTextForToolMessage: () => toTextForToolMessage
30
+ });
31
+ module.exports = __toCommonJS(utils_exports);
32
+ var import_logger = require("../logger/index.cjs");
33
+ var import_registry = require("../llm/registry.cjs");
34
+ var import_errors = require("./errors.js");
35
+ var import_safe_stringify = require("../utils/safe-stringify.cjs");
36
+ const DEFAULT_OVERHEAD_PER_MESSAGE = 4;
37
+ const MIN_BASE64_HEURISTIC_LENGTH = 512;
38
+ const MAX_TOOL_TEXT_CHARS = 8e3;
39
+ function countMessagesTokens(history, tokenizer, overheadPerMessage = DEFAULT_OVERHEAD_PER_MESSAGE) {
40
+ let total = 0;
41
+ import_logger.logger.debug(`Counting tokens for ${history.length} messages`);
42
+ try {
43
+ for (const message of history) {
44
+ if (message.content) {
45
+ if (typeof message.content === "string") {
46
+ total += tokenizer.countTokens(message.content);
47
+ } else if (Array.isArray(message.content)) {
48
+ message.content.forEach((part) => {
49
+ if (part.type === "text" && typeof part.text === "string") {
50
+ total += tokenizer.countTokens(part.text);
51
+ } else if (part.type === "image") {
52
+ if (typeof part.image === "string") {
53
+ if (isDataUri(part.image)) {
54
+ const base64Payload = extractBase64FromDataUri(part.image);
55
+ const byteLength = base64LengthToBytes(base64Payload.length);
56
+ total += Math.ceil(byteLength / 1024);
57
+ } else {
58
+ total += estimateTextTokens(part.image);
59
+ }
60
+ } else if (part.image instanceof Uint8Array || part.image instanceof Buffer || part.image instanceof ArrayBuffer) {
61
+ const bytes = part.image instanceof ArrayBuffer ? part.image.byteLength : part.image.length;
62
+ total += Math.ceil(bytes / 1024);
63
+ }
64
+ } else if (part.type === "file") {
65
+ if (typeof part.data === "string") {
66
+ if (isDataUri(part.data)) {
67
+ const base64Payload = extractBase64FromDataUri(part.data);
68
+ const byteLength = base64LengthToBytes(base64Payload.length);
69
+ total += Math.ceil(byteLength / 1024);
70
+ } else {
71
+ total += estimateTextTokens(part.data);
72
+ }
73
+ } else if (part.data instanceof Uint8Array || part.data instanceof Buffer || part.data instanceof ArrayBuffer) {
74
+ const bytes = part.data instanceof ArrayBuffer ? part.data.byteLength : part.data.length;
75
+ total += Math.ceil(bytes / 1024);
76
+ }
77
+ }
78
+ });
79
+ }
80
+ }
81
+ if (message.toolCalls) {
82
+ for (const call of message.toolCalls) {
83
+ if (call.function?.name) {
84
+ total += tokenizer.countTokens(call.function.name);
85
+ }
86
+ if (call.function?.arguments) {
87
+ total += tokenizer.countTokens(call.function.arguments);
88
+ }
89
+ }
90
+ }
91
+ total += overheadPerMessage;
92
+ }
93
+ } catch (error) {
94
+ import_logger.logger.error(
95
+ `countMessagesTokens failed: ${error instanceof Error ? error.message : String(error)}`
96
+ );
97
+ throw import_errors.ContextError.tokenCountFailed(error instanceof Error ? error.message : String(error));
98
+ }
99
+ return total;
100
+ }
101
+ function getImageData(imagePart) {
102
+ const { image } = imagePart;
103
+ if (typeof image === "string") {
104
+ return image;
105
+ } else if (image instanceof Buffer) {
106
+ return image.toString("base64");
107
+ } else if (image instanceof Uint8Array) {
108
+ return Buffer.from(image).toString("base64");
109
+ } else if (image instanceof ArrayBuffer) {
110
+ return Buffer.from(new Uint8Array(image)).toString("base64");
111
+ } else if (image instanceof URL) {
112
+ return image.toString();
113
+ }
114
+ import_logger.logger.warn(`Unexpected image data type in getImageData: ${typeof image}`);
115
+ return "";
116
+ }
117
+ function getFileData(filePart) {
118
+ const { data } = filePart;
119
+ if (typeof data === "string") {
120
+ return data;
121
+ } else if (data instanceof Buffer) {
122
+ return data.toString("base64");
123
+ } else if (data instanceof Uint8Array) {
124
+ return Buffer.from(data).toString("base64");
125
+ } else if (data instanceof ArrayBuffer) {
126
+ return Buffer.from(new Uint8Array(data)).toString("base64");
127
+ } else if (data instanceof URL) {
128
+ return data.toString();
129
+ }
130
+ import_logger.logger.warn(`Unexpected file data type in getFileData: ${typeof data}`);
131
+ return "";
132
+ }
133
+ function filterMessagesByLLMCapabilities(messages, config) {
134
+ try {
135
+ return messages.map((message) => {
136
+ if (message.role !== "user" || !Array.isArray(message.content)) {
137
+ return message;
138
+ }
139
+ const filteredContent = message.content.filter((part) => {
140
+ if (part.type === "text" || part.type === "image") {
141
+ return true;
142
+ }
143
+ if (part.type === "file" && part.mimeType) {
144
+ const validation = (0, import_registry.validateModelFileSupport)(
145
+ config.provider,
146
+ config.model,
147
+ part.mimeType
148
+ );
149
+ return validation.isSupported;
150
+ }
151
+ return true;
152
+ });
153
+ if (filteredContent.length === 0) {
154
+ filteredContent.push({
155
+ type: "text",
156
+ text: `[File attachment removed - not supported by ${config.model}]`
157
+ });
158
+ }
159
+ return {
160
+ ...message,
161
+ content: filteredContent
162
+ };
163
+ });
164
+ } catch (error) {
165
+ import_logger.logger.warn(`Failed to filter messages by LLM capabilities: ${String(error)}`);
166
+ return messages;
167
+ }
168
+ }
169
+ function isLikelyBase64String(value, minLength = MIN_BASE64_HEURISTIC_LENGTH) {
170
+ if (!value || value.length < minLength) return false;
171
+ if (value.startsWith("data:") && value.includes(";base64,")) return true;
172
+ const b64Regex = /^[A-Za-z0-9+/=\r\n]+$/;
173
+ if (!b64Regex.test(value)) return false;
174
+ const nonWordRatio = (value.match(/[^A-Za-z0-9+/=]/g)?.length || 0) / value.length;
175
+ return nonWordRatio < 0.01;
176
+ }
177
+ function parseDataUri(value) {
178
+ if (!value.startsWith("data:")) return null;
179
+ const commaIdx = value.indexOf(",");
180
+ if (commaIdx === -1) return null;
181
+ const meta = value.slice(5, commaIdx);
182
+ if (!/;base64$/i.test(meta)) return null;
183
+ const mediaType = meta.replace(/;base64$/i, "") || "application/octet-stream";
184
+ const base64 = value.slice(commaIdx + 1);
185
+ return { mediaType, base64 };
186
+ }
187
+ function sanitizeDeepObject(obj) {
188
+ if (obj == null) return obj;
189
+ if (typeof obj === "string") {
190
+ if (isLikelyBase64String(obj)) {
191
+ const approxBytes = Math.floor(obj.length * 3 / 4);
192
+ import_logger.logger.debug(
193
+ `sanitizeDeepObject: replaced large base64 string (~${approxBytes} bytes) with placeholder`
194
+ );
195
+ return `[binary data omitted ~${approxBytes} bytes]`;
196
+ }
197
+ return obj;
198
+ }
199
+ if (Array.isArray(obj)) return obj.map((x) => sanitizeDeepObject(x));
200
+ if (typeof obj === "object") {
201
+ const out = {};
202
+ for (const [k, v] of Object.entries(obj)) {
203
+ out[k] = sanitizeDeepObject(v);
204
+ }
205
+ return out;
206
+ }
207
+ return obj;
208
+ }
209
+ function sanitizeToolResultToContent(result) {
210
+ try {
211
+ if (typeof result === "string") {
212
+ const dataUri = parseDataUri(result);
213
+ if (dataUri) {
214
+ const mediaType = dataUri.mediaType;
215
+ import_logger.logger.debug(
216
+ `sanitizeToolResultToContent: detected data URI (${mediaType}), converting to media part`
217
+ );
218
+ if (mediaType.startsWith("image/")) {
219
+ return [{ type: "image", image: dataUri.base64, mimeType: mediaType }];
220
+ }
221
+ return [{ type: "file", data: dataUri.base64, mimeType: mediaType }];
222
+ }
223
+ if (isLikelyBase64String(result)) {
224
+ import_logger.logger.debug(
225
+ "sanitizeToolResultToContent: detected base64-like string, converting to file part"
226
+ );
227
+ return [
228
+ {
229
+ type: "file",
230
+ data: result,
231
+ mimeType: "application/octet-stream",
232
+ filename: "tool-output.bin"
233
+ }
234
+ ];
235
+ }
236
+ if (result.length > MAX_TOOL_TEXT_CHARS) {
237
+ const head = result.slice(0, 4e3);
238
+ const tail = result.slice(-1e3);
239
+ import_logger.logger.debug(
240
+ `sanitizeToolResultToContent: truncating long text tool output (len=${result.length})`
241
+ );
242
+ return `${head}
243
+ ... [${result.length - 5e3} chars omitted] ...
244
+ ${tail}`;
245
+ }
246
+ return result;
247
+ }
248
+ if (Array.isArray(result)) {
249
+ const parts = [];
250
+ for (const item of result) {
251
+ if (item == null) continue;
252
+ if (typeof item === "string") {
253
+ const dataUri = parseDataUri(item);
254
+ if (dataUri) {
255
+ const mt = dataUri.mediaType;
256
+ if (mt.startsWith("image/"))
257
+ parts.push({ type: "image", image: dataUri.base64, mimeType: mt });
258
+ else parts.push({ type: "file", data: dataUri.base64, mimeType: mt });
259
+ continue;
260
+ }
261
+ if (isLikelyBase64String(item)) {
262
+ parts.push({
263
+ type: "file",
264
+ data: item,
265
+ mimeType: "application/octet-stream",
266
+ filename: "tool-output.bin"
267
+ });
268
+ continue;
269
+ }
270
+ parts.push({ type: "text", text: item });
271
+ continue;
272
+ }
273
+ if (typeof item === "object") {
274
+ const obj = item;
275
+ if (obj.type === "text" && typeof obj.text === "string") {
276
+ parts.push({ type: "text", text: obj.text });
277
+ continue;
278
+ }
279
+ if (obj.type === "image" && obj.image !== void 0 || "image" in obj) {
280
+ parts.push({
281
+ type: "image",
282
+ image: getImageData({ image: obj.image }),
283
+ mimeType: obj.mimeType || "image/jpeg"
284
+ });
285
+ continue;
286
+ }
287
+ if (obj.type === "file" && obj.data !== void 0) {
288
+ parts.push({
289
+ type: "file",
290
+ data: getFileData({ data: obj.data }),
291
+ mimeType: obj.mimeType || "application/octet-stream",
292
+ filename: obj.filename
293
+ });
294
+ continue;
295
+ }
296
+ if ("data" in obj && (typeof obj.mimeType === "string" || obj.filename)) {
297
+ parts.push({
298
+ type: "file",
299
+ data: getFileData({ data: obj.data }),
300
+ mimeType: obj.mimeType || "application/octet-stream",
301
+ filename: obj.filename
302
+ });
303
+ continue;
304
+ }
305
+ const cleaned = sanitizeDeepObject(obj);
306
+ parts.push({ type: "text", text: (0, import_safe_stringify.safeStringify)(cleaned) });
307
+ continue;
308
+ }
309
+ parts.push({ type: "text", text: String(item) });
310
+ }
311
+ return parts;
312
+ }
313
+ if (result && typeof result === "object") {
314
+ const anyObj = result;
315
+ if ("image" in anyObj) {
316
+ return [
317
+ {
318
+ type: "image",
319
+ image: getImageData({ image: anyObj.image }),
320
+ mimeType: anyObj.mimeType || "image/jpeg"
321
+ }
322
+ ];
323
+ }
324
+ if ("data" in anyObj && anyObj.mimeType) {
325
+ return [
326
+ {
327
+ type: "file",
328
+ data: getFileData({ data: anyObj.data }),
329
+ mimeType: anyObj.mimeType,
330
+ filename: anyObj.filename
331
+ }
332
+ ];
333
+ }
334
+ const cleaned = sanitizeDeepObject(anyObj);
335
+ return (0, import_safe_stringify.safeStringify)(cleaned);
336
+ }
337
+ return (0, import_safe_stringify.safeStringify)(result ?? "");
338
+ } catch (err) {
339
+ import_logger.logger.warn(`sanitizeToolResultToContent failed, falling back to string: ${String(err)}`);
340
+ try {
341
+ return (0, import_safe_stringify.safeStringify)(result ?? "");
342
+ } catch {
343
+ return String(result ?? "");
344
+ }
345
+ }
346
+ }
347
+ function summarizeToolContentForText(content) {
348
+ if (!Array.isArray(content)) return String(content || "");
349
+ const parts = [];
350
+ for (const p of content) {
351
+ if (p.type === "text") {
352
+ parts.push(p.text);
353
+ } else if (p.type === "image") {
354
+ let bytes = 0;
355
+ if (typeof p.image === "string") bytes = Math.floor(p.image.length * 3 / 4);
356
+ else if (p.image instanceof ArrayBuffer) bytes = p.image.byteLength;
357
+ else if (p.image instanceof Uint8Array) bytes = p.image.length;
358
+ else if (p.image instanceof Buffer) bytes = p.image.length;
359
+ parts.push(`[image ${p.mimeType || "image"} ~${Math.ceil(bytes / 1024)}KB]`);
360
+ } else if (p.type === "file") {
361
+ let bytes = 0;
362
+ if (typeof p.data === "string") bytes = Math.floor(p.data.length * 3 / 4);
363
+ else if (p.data instanceof ArrayBuffer) bytes = p.data.byteLength;
364
+ else if (p.data instanceof Uint8Array) bytes = p.data.length;
365
+ else if (p.data instanceof Buffer) bytes = p.data.length;
366
+ const label = p.filename ? `${p.filename}` : `${p.mimeType || "file"}`;
367
+ parts.push(`[file ${label} ~${Math.ceil(bytes / 1024)}KB]`);
368
+ }
369
+ }
370
+ const summary = parts.join("\n");
371
+ return summary.slice(0, 4e3);
372
+ }
373
+ function base64LengthToBytes(charLength) {
374
+ return Math.floor(charLength * 3 / 4);
375
+ }
376
+ function isDataUri(str) {
377
+ return str.startsWith("data:") && str.includes(";base64,");
378
+ }
379
+ function extractBase64FromDataUri(dataUri) {
380
+ const commaIndex = dataUri.indexOf(",");
381
+ return commaIndex !== -1 ? dataUri.substring(commaIndex + 1) : "";
382
+ }
383
+ function estimateTextTokens(text) {
384
+ return Math.ceil(text.length / 4);
385
+ }
386
+ function toTextForToolMessage(content) {
387
+ if (Array.isArray(content)) {
388
+ return summarizeToolContentForText(content);
389
+ }
390
+ if (typeof content === "string") {
391
+ return isLikelyBase64String(content) ? "[binary data omitted]" : content;
392
+ }
393
+ return String(content ?? "");
394
+ }
395
+ // Annotate the CommonJS export names for ESM import in node:
396
+ 0 && (module.exports = {
397
+ countMessagesTokens,
398
+ filterMessagesByLLMCapabilities,
399
+ getFileData,
400
+ getImageData,
401
+ isLikelyBase64String,
402
+ parseDataUri,
403
+ sanitizeToolResultToContent,
404
+ summarizeToolContentForText,
405
+ toTextForToolMessage
406
+ });
@@ -0,0 +1,79 @@
1
+ import { InternalMessage } from './types.cjs';
2
+ import { ITokenizer } from '../llm/tokenizer/types.cjs';
3
+ import { LLMContext } from '../llm/types.cjs';
4
+
5
+ /**
6
+ * Counts the total tokens in an array of InternalMessages using a provided tokenizer.
7
+ * Includes an estimated overhead per message.
8
+ *
9
+ * NOTE: This function counts tokens on the raw InternalMessage history and has limitations:
10
+ * 1. It does not account for provider-specific formatting (uses raw content).
11
+ * 2. It ignores the token cost of images and files in multimodal messages (counts text only).
12
+ * 3. The overhead is a fixed approximation.
13
+ * For more accurate counting reflecting the final provider payload, use ContextManager.countTotalTokens().
14
+ *
15
+ * @param history The array of messages to count.
16
+ * @param tokenizer The tokenizer instance to use for counting.
17
+ * @param overheadPerMessage Optional overhead tokens per message. Defaults to 4.
18
+ * @returns The total token count.
19
+ * @throws Error if token counting fails within the tokenizer.
20
+ */
21
+ declare function countMessagesTokens(history: InternalMessage[], tokenizer: ITokenizer, overheadPerMessage?: number): number;
22
+ /**
23
+ * Extracts image data (base64 or URL) from an ImagePart or raw buffer.
24
+ * @param imagePart The image part containing image data
25
+ * @returns Base64-encoded string or URL string
26
+ */
27
+ declare function getImageData(imagePart: {
28
+ image: string | Uint8Array | Buffer | ArrayBuffer | URL;
29
+ }): string;
30
+ /**
31
+ * Extracts file data (base64 or URL) from a FilePart or raw buffer.
32
+ * @param filePart The file part containing file data
33
+ * @returns Base64-encoded string or URL string
34
+ */
35
+ declare function getFileData(filePart: {
36
+ data: string | Uint8Array | Buffer | ArrayBuffer | URL;
37
+ }): string;
38
+ /**
39
+ * Filters message content based on LLM capabilities.
40
+ * Removes unsupported file attachments while preserving supported content.
41
+ * Uses model-specific validation when available, falls back to provider-level.
42
+ * @param messages Array of internal messages to filter
43
+ * @param config The LLM configuration (provider and optional model)
44
+ * @returns Filtered messages with unsupported content removed
45
+ */
46
+ declare function filterMessagesByLLMCapabilities(messages: InternalMessage[], config: LLMContext): InternalMessage[];
47
+ /**
48
+ * Detect if a string is likely a Base64 blob (not a typical sentence/text).
49
+ * Uses a length threshold and character set heuristic.
50
+ */
51
+ declare function isLikelyBase64String(value: string, minLength?: number): boolean;
52
+ /**
53
+ * Parse data URI and return { mediaType, base64 } or null if not a data URI.
54
+ */
55
+ declare function parseDataUri(value: string): {
56
+ mediaType: string;
57
+ base64: string;
58
+ } | null;
59
+ /**
60
+ * Convert an arbitrary tool result into safe InternalMessage content.
61
+ * - Converts data URIs and base64 blobs to media/file parts
62
+ * - Removes huge binary blobs inside objects
63
+ * - Truncates extremely long raw text
64
+ */
65
+ declare function sanitizeToolResultToContent(result: unknown): InternalMessage['content'];
66
+ /**
67
+ * Produce a short textual summary for tool content, to be used with providers
68
+ * that only accept text for tool messages (e.g., OpenAI/Anthropic tool role).
69
+ */
70
+ declare function summarizeToolContentForText(content: InternalMessage['content']): string;
71
+ /**
72
+ * Convert arbitrary tool content to safe text for providers that only accept textual tool messages.
73
+ * - If content is an array of parts, summarize it.
74
+ * - If content is a string that looks like base64/data URI, replace with a short placeholder.
75
+ * - Otherwise pass text through.
76
+ */
77
+ declare function toTextForToolMessage(content: InternalMessage['content']): string;
78
+
79
+ export { countMessagesTokens, filterMessagesByLLMCapabilities, getFileData, getImageData, isLikelyBase64String, parseDataUri, sanitizeToolResultToContent, summarizeToolContentForText, toTextForToolMessage };
@@ -0,0 +1,79 @@
1
+ import { InternalMessage } from './types.js';
2
+ import { ITokenizer } from '../llm/tokenizer/types.js';
3
+ import { LLMContext } from '../llm/types.js';
4
+
5
+ /**
6
+ * Counts the total tokens in an array of InternalMessages using a provided tokenizer.
7
+ * Includes an estimated overhead per message.
8
+ *
9
+ * NOTE: This function counts tokens on the raw InternalMessage history and has limitations:
10
+ * 1. It does not account for provider-specific formatting (uses raw content).
11
+ * 2. It ignores the token cost of images and files in multimodal messages (counts text only).
12
+ * 3. The overhead is a fixed approximation.
13
+ * For more accurate counting reflecting the final provider payload, use ContextManager.countTotalTokens().
14
+ *
15
+ * @param history The array of messages to count.
16
+ * @param tokenizer The tokenizer instance to use for counting.
17
+ * @param overheadPerMessage Optional overhead tokens per message. Defaults to 4.
18
+ * @returns The total token count.
19
+ * @throws Error if token counting fails within the tokenizer.
20
+ */
21
+ declare function countMessagesTokens(history: InternalMessage[], tokenizer: ITokenizer, overheadPerMessage?: number): number;
22
+ /**
23
+ * Extracts image data (base64 or URL) from an ImagePart or raw buffer.
24
+ * @param imagePart The image part containing image data
25
+ * @returns Base64-encoded string or URL string
26
+ */
27
+ declare function getImageData(imagePart: {
28
+ image: string | Uint8Array | Buffer | ArrayBuffer | URL;
29
+ }): string;
30
+ /**
31
+ * Extracts file data (base64 or URL) from a FilePart or raw buffer.
32
+ * @param filePart The file part containing file data
33
+ * @returns Base64-encoded string or URL string
34
+ */
35
+ declare function getFileData(filePart: {
36
+ data: string | Uint8Array | Buffer | ArrayBuffer | URL;
37
+ }): string;
38
+ /**
39
+ * Filters message content based on LLM capabilities.
40
+ * Removes unsupported file attachments while preserving supported content.
41
+ * Uses model-specific validation when available, falls back to provider-level.
42
+ * @param messages Array of internal messages to filter
43
+ * @param config The LLM configuration (provider and optional model)
44
+ * @returns Filtered messages with unsupported content removed
45
+ */
46
+ declare function filterMessagesByLLMCapabilities(messages: InternalMessage[], config: LLMContext): InternalMessage[];
47
+ /**
48
+ * Detect if a string is likely a Base64 blob (not a typical sentence/text).
49
+ * Uses a length threshold and character set heuristic.
50
+ */
51
+ declare function isLikelyBase64String(value: string, minLength?: number): boolean;
52
+ /**
53
+ * Parse data URI and return { mediaType, base64 } or null if not a data URI.
54
+ */
55
+ declare function parseDataUri(value: string): {
56
+ mediaType: string;
57
+ base64: string;
58
+ } | null;
59
+ /**
60
+ * Convert an arbitrary tool result into safe InternalMessage content.
61
+ * - Converts data URIs and base64 blobs to media/file parts
62
+ * - Removes huge binary blobs inside objects
63
+ * - Truncates extremely long raw text
64
+ */
65
+ declare function sanitizeToolResultToContent(result: unknown): InternalMessage['content'];
66
+ /**
67
+ * Produce a short textual summary for tool content, to be used with providers
68
+ * that only accept text for tool messages (e.g., OpenAI/Anthropic tool role).
69
+ */
70
+ declare function summarizeToolContentForText(content: InternalMessage['content']): string;
71
+ /**
72
+ * Convert arbitrary tool content to safe text for providers that only accept textual tool messages.
73
+ * - If content is an array of parts, summarize it.
74
+ * - If content is a string that looks like base64/data URI, replace with a short placeholder.
75
+ * - Otherwise pass text through.
76
+ */
77
+ declare function toTextForToolMessage(content: InternalMessage['content']): string;
78
+
79
+ export { countMessagesTokens, filterMessagesByLLMCapabilities, getFileData, getImageData, isLikelyBase64String, parseDataUri, sanitizeToolResultToContent, summarizeToolContentForText, toTextForToolMessage };