@dexto/core 1.1.10 → 1.1.11

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 (812) hide show
  1. package/dist/Dexto.cjs +261 -0
  2. package/dist/Dexto.d.ts +212 -0
  3. package/dist/Dexto.d.ts.map +1 -0
  4. package/dist/Dexto.js +236 -0
  5. package/dist/agent/DextoAgent.cjs +428 -123
  6. package/dist/agent/DextoAgent.d.ts +170 -102
  7. package/dist/agent/DextoAgent.d.ts.map +1 -0
  8. package/dist/agent/DextoAgent.js +428 -123
  9. package/dist/agent/agentCard.d.ts +4 -7
  10. package/dist/agent/agentCard.d.ts.map +1 -0
  11. package/dist/agent/error-codes.cjs +2 -0
  12. package/dist/agent/error-codes.d.ts +4 -3
  13. package/dist/agent/error-codes.d.ts.map +1 -0
  14. package/dist/agent/error-codes.js +2 -0
  15. package/dist/agent/errors.cjs +13 -0
  16. package/dist/agent/errors.d.ts +6 -17
  17. package/dist/agent/errors.d.ts.map +1 -0
  18. package/dist/agent/errors.js +13 -0
  19. package/dist/agent/index.cjs +3 -0
  20. package/dist/agent/index.d.ts +6 -57
  21. package/dist/agent/index.d.ts.map +1 -0
  22. package/dist/agent/index.js +2 -0
  23. package/dist/agent/registry/error-codes.cjs +2 -0
  24. package/dist/agent/registry/error-codes.d.ts +4 -3
  25. package/dist/agent/registry/error-codes.d.ts.map +1 -0
  26. package/dist/agent/registry/error-codes.js +2 -0
  27. package/dist/agent/registry/errors.cjs +58 -28
  28. package/dist/agent/registry/errors.d.ts +32 -36
  29. package/dist/agent/registry/errors.d.ts.map +1 -0
  30. package/dist/agent/registry/errors.js +58 -28
  31. package/dist/agent/registry/registry.cjs +242 -54
  32. package/dist/agent/registry/registry.d.ts +84 -21
  33. package/dist/agent/registry/registry.d.ts.map +1 -0
  34. package/dist/agent/registry/registry.js +251 -55
  35. package/dist/agent/registry/types.cjs +36 -3
  36. package/dist/agent/registry/types.d.ts +66 -24
  37. package/dist/agent/registry/types.d.ts.map +1 -0
  38. package/dist/agent/registry/types.js +33 -2
  39. package/dist/agent/registry/user-registry.cjs +140 -0
  40. package/dist/agent/registry/user-registry.d.ts +34 -0
  41. package/dist/agent/registry/user-registry.d.ts.map +1 -0
  42. package/dist/agent/registry/user-registry.js +104 -0
  43. package/dist/agent/schemas.cjs +17 -3
  44. package/dist/agent/schemas.d.ts +685 -463
  45. package/dist/agent/schemas.d.ts.map +1 -0
  46. package/dist/agent/schemas.js +17 -3
  47. package/dist/agent/state-manager.d.ts +7 -12
  48. package/dist/agent/state-manager.d.ts.map +1 -0
  49. package/dist/approval/error-codes.cjs +44 -0
  50. package/dist/approval/error-codes.d.ts +21 -0
  51. package/dist/approval/error-codes.d.ts.map +1 -0
  52. package/dist/approval/error-codes.js +20 -0
  53. package/dist/approval/errors.cjs +251 -0
  54. package/dist/approval/errors.d.ts +110 -0
  55. package/dist/approval/errors.d.ts.map +1 -0
  56. package/dist/approval/errors.js +227 -0
  57. package/dist/approval/index.cjs +84 -0
  58. package/dist/approval/index.d.ts +12 -0
  59. package/dist/approval/index.d.ts.map +1 -0
  60. package/dist/approval/index.js +55 -0
  61. package/dist/approval/manager.cjs +159 -0
  62. package/dist/approval/manager.d.ts +109 -0
  63. package/dist/approval/manager.d.ts.map +1 -0
  64. package/dist/approval/manager.js +135 -0
  65. package/dist/approval/providers/event-based-approval-provider.cjs +156 -0
  66. package/dist/approval/providers/event-based-approval-provider.d.ts +39 -0
  67. package/dist/approval/providers/event-based-approval-provider.d.ts.map +1 -0
  68. package/dist/approval/providers/event-based-approval-provider.js +132 -0
  69. package/dist/approval/providers/factory.cjs +38 -0
  70. package/dist/approval/providers/factory.d.ts +12 -0
  71. package/dist/approval/providers/factory.d.ts.map +1 -0
  72. package/dist/approval/providers/factory.js +14 -0
  73. package/dist/approval/providers/noop-approval-provider.cjs +54 -0
  74. package/dist/approval/providers/noop-approval-provider.d.ts +18 -0
  75. package/dist/approval/providers/noop-approval-provider.d.ts.map +1 -0
  76. package/dist/approval/providers/noop-approval-provider.js +30 -0
  77. package/dist/approval/schemas.cjs +168 -0
  78. package/dist/approval/schemas.d.ts +602 -0
  79. package/dist/approval/schemas.d.ts.map +1 -0
  80. package/dist/approval/schemas.js +126 -0
  81. package/dist/approval/types.cjs +41 -0
  82. package/dist/approval/types.d.ts +140 -0
  83. package/dist/approval/types.d.ts.map +1 -0
  84. package/dist/approval/types.js +16 -0
  85. package/dist/config/agent-resolver.d.ts +3 -4
  86. package/dist/config/agent-resolver.d.ts.map +1 -0
  87. package/dist/config/error-codes.d.ts +2 -3
  88. package/dist/config/error-codes.d.ts.map +1 -0
  89. package/dist/config/errors.d.ts +3 -18
  90. package/dist/config/errors.d.ts.map +1 -0
  91. package/dist/config/index.d.ts +4 -7
  92. package/dist/config/index.d.ts.map +1 -0
  93. package/dist/config/loader.d.ts +2 -5
  94. package/dist/config/loader.d.ts.map +1 -0
  95. package/dist/config/writer.d.ts +8 -11
  96. package/dist/config/writer.d.ts.map +1 -0
  97. package/dist/context/compression/middle-removal.d.ts +3 -6
  98. package/dist/context/compression/middle-removal.d.ts.map +1 -0
  99. package/dist/context/compression/oldest-removal.d.ts +3 -6
  100. package/dist/context/compression/oldest-removal.d.ts.map +1 -0
  101. package/dist/context/compression/types.d.ts +2 -5
  102. package/dist/context/compression/types.d.ts.map +1 -0
  103. package/dist/context/error-codes.d.ts +2 -3
  104. package/dist/context/error-codes.d.ts.map +1 -0
  105. package/dist/context/errors.d.ts +3 -18
  106. package/dist/context/errors.d.ts.map +1 -0
  107. package/dist/context/index.cjs +11 -0
  108. package/dist/context/index.d.ts +4 -19
  109. package/dist/context/index.d.ts.map +1 -0
  110. package/dist/context/index.js +5 -0
  111. package/dist/context/manager.cjs +121 -24
  112. package/dist/context/manager.d.ts +28 -20
  113. package/dist/context/manager.d.ts.map +1 -0
  114. package/dist/context/manager.js +127 -25
  115. package/dist/context/media-helpers.cjs +40 -0
  116. package/dist/context/media-helpers.d.ts +15 -0
  117. package/dist/context/media-helpers.d.ts.map +1 -0
  118. package/dist/context/media-helpers.js +15 -0
  119. package/dist/context/types.d.ts +27 -10
  120. package/dist/context/types.d.ts.map +1 -0
  121. package/dist/context/utils.cjs +811 -71
  122. package/dist/context/utils.d.ts +78 -15
  123. package/dist/context/utils.d.ts.map +1 -0
  124. package/dist/context/utils.js +802 -70
  125. package/dist/errors/DextoBaseError.d.ts +2 -3
  126. package/dist/errors/DextoBaseError.d.ts.map +1 -0
  127. package/dist/errors/DextoRuntimeError.d.ts +5 -16
  128. package/dist/errors/DextoRuntimeError.d.ts.map +1 -0
  129. package/dist/errors/DextoValidationError.d.ts +3 -16
  130. package/dist/errors/DextoValidationError.d.ts.map +1 -0
  131. package/dist/errors/index.d.ts +7 -14
  132. package/dist/errors/index.d.ts.map +1 -0
  133. package/dist/errors/result-bridge.d.ts +3 -18
  134. package/dist/errors/result-bridge.d.ts.map +1 -0
  135. package/dist/errors/types.cjs +4 -0
  136. package/dist/errors/types.d.ts +27 -20
  137. package/dist/errors/types.d.ts.map +1 -0
  138. package/dist/errors/types.js +4 -0
  139. package/dist/events/index.cjs +8 -3
  140. package/dist/events/index.d.ts +63 -35
  141. package/dist/events/index.d.ts.map +1 -0
  142. package/dist/events/index.js +8 -3
  143. package/dist/index.browser.cjs +36 -0
  144. package/dist/index.browser.d.ts +24 -51
  145. package/dist/index.browser.d.ts.map +1 -0
  146. package/dist/index.browser.js +34 -1
  147. package/dist/index.cjs +29 -1
  148. package/dist/index.d.ts +33 -89
  149. package/dist/index.d.ts.map +1 -0
  150. package/dist/index.js +14 -0
  151. package/dist/llm/error-codes.d.ts +2 -3
  152. package/dist/llm/error-codes.d.ts.map +1 -0
  153. package/dist/llm/errors.d.ts +3 -18
  154. package/dist/llm/errors.d.ts.map +1 -0
  155. package/dist/llm/formatters/anthropic.d.ts +2 -4
  156. package/dist/llm/formatters/anthropic.d.ts.map +1 -0
  157. package/dist/llm/formatters/factory.d.ts +3 -6
  158. package/dist/llm/formatters/factory.d.ts.map +1 -0
  159. package/dist/llm/formatters/openai.d.ts +2 -4
  160. package/dist/llm/formatters/openai.d.ts.map +1 -0
  161. package/dist/llm/formatters/types.d.ts +2 -4
  162. package/dist/llm/formatters/types.d.ts.map +1 -0
  163. package/dist/llm/formatters/vercel.d.ts +6 -7
  164. package/dist/llm/formatters/vercel.d.ts.map +1 -0
  165. package/dist/llm/index.d.ts +8 -39
  166. package/dist/llm/index.d.ts.map +1 -0
  167. package/dist/llm/registry.cjs +15 -1
  168. package/dist/llm/registry.d.ts +26 -29
  169. package/dist/llm/registry.d.ts.map +1 -0
  170. package/dist/llm/registry.js +15 -1
  171. package/dist/llm/resolver.d.ts +6 -20
  172. package/dist/llm/resolver.d.ts.map +1 -0
  173. package/dist/llm/schemas.d.ts +15 -17
  174. package/dist/llm/schemas.d.ts.map +1 -0
  175. package/dist/llm/services/anthropic.cjs +24 -11
  176. package/dist/llm/services/anthropic.d.ts +7 -32
  177. package/dist/llm/services/anthropic.d.ts.map +1 -0
  178. package/dist/llm/services/anthropic.js +24 -11
  179. package/dist/llm/services/factory.cjs +21 -15
  180. package/dist/llm/services/factory.d.ts +5 -32
  181. package/dist/llm/services/factory.d.ts.map +1 -0
  182. package/dist/llm/services/factory.js +21 -15
  183. package/dist/llm/services/index.d.ts +2 -21
  184. package/dist/llm/services/index.d.ts.map +1 -0
  185. package/dist/llm/services/openai.cjs +33 -16
  186. package/dist/llm/services/openai.d.ts +7 -32
  187. package/dist/llm/services/openai.d.ts.map +1 -0
  188. package/dist/llm/services/openai.js +33 -16
  189. package/dist/llm/services/test-utils.integration.cjs +2 -2
  190. package/dist/llm/services/test-utils.integration.d.ts +8 -49
  191. package/dist/llm/services/test-utils.integration.d.ts.map +1 -0
  192. package/dist/llm/services/test-utils.integration.js +2 -2
  193. package/dist/llm/services/types.d.ts +5 -22
  194. package/dist/llm/services/types.d.ts.map +1 -0
  195. package/dist/llm/services/vercel.cjs +52 -21
  196. package/dist/llm/services/vercel.d.ts +12 -35
  197. package/dist/llm/services/vercel.d.ts.map +1 -0
  198. package/dist/llm/services/vercel.js +53 -22
  199. package/dist/llm/tokenizer/anthropic.d.ts +2 -4
  200. package/dist/llm/tokenizer/anthropic.d.ts.map +1 -0
  201. package/dist/llm/tokenizer/default.d.ts +2 -4
  202. package/dist/llm/tokenizer/default.d.ts.map +1 -0
  203. package/dist/llm/tokenizer/factory.d.ts +3 -5
  204. package/dist/llm/tokenizer/factory.d.ts.map +1 -0
  205. package/dist/llm/tokenizer/google.d.ts +2 -4
  206. package/dist/llm/tokenizer/google.d.ts.map +1 -0
  207. package/dist/llm/tokenizer/openai.d.ts +2 -4
  208. package/dist/llm/tokenizer/openai.d.ts.map +1 -0
  209. package/dist/llm/tokenizer/types.d.ts +3 -4
  210. package/dist/llm/tokenizer/types.d.ts.map +1 -0
  211. package/dist/llm/types.d.ts +9 -10
  212. package/dist/llm/types.d.ts.map +1 -0
  213. package/dist/llm/validation.d.ts +8 -23
  214. package/dist/llm/validation.d.ts.map +1 -0
  215. package/dist/logger/browser.d.ts +4 -5
  216. package/dist/logger/browser.d.ts.map +1 -0
  217. package/dist/logger/index.d.ts +2 -1
  218. package/dist/logger/index.d.ts.map +1 -0
  219. package/dist/logger/logger.cjs +35 -7
  220. package/dist/logger/logger.d.ts +5 -5
  221. package/dist/logger/logger.d.ts.map +1 -0
  222. package/dist/logger/logger.js +35 -7
  223. package/dist/mcp/error-codes.d.ts +2 -3
  224. package/dist/mcp/error-codes.d.ts.map +1 -0
  225. package/dist/mcp/errors.d.ts +2 -17
  226. package/dist/mcp/errors.d.ts.map +1 -0
  227. package/dist/mcp/index.d.ts +8 -26
  228. package/dist/mcp/index.d.ts.map +1 -0
  229. package/dist/mcp/manager.cjs +462 -114
  230. package/dist/mcp/manager.d.ts +117 -58
  231. package/dist/mcp/manager.d.ts.map +1 -0
  232. package/dist/mcp/manager.js +462 -114
  233. package/dist/mcp/mcp-client.cjs +172 -10
  234. package/dist/mcp/mcp-client.d.ts +36 -14
  235. package/dist/mcp/mcp-client.d.ts.map +1 -0
  236. package/dist/mcp/mcp-client.js +176 -10
  237. package/dist/mcp/resolver.d.ts +5 -20
  238. package/dist/mcp/resolver.d.ts.map +1 -0
  239. package/dist/mcp/schemas.cjs +13 -5
  240. package/dist/mcp/schemas.d.ts +31 -28
  241. package/dist/mcp/schemas.d.ts.map +1 -0
  242. package/dist/mcp/schemas.js +10 -5
  243. package/dist/mcp/types.d.ts +18 -10
  244. package/dist/mcp/types.d.ts.map +1 -0
  245. package/dist/memory/error-codes.cjs +39 -0
  246. package/dist/memory/error-codes.d.ts +15 -0
  247. package/dist/memory/error-codes.d.ts.map +1 -0
  248. package/dist/memory/error-codes.js +15 -0
  249. package/dist/memory/errors.cjs +112 -0
  250. package/dist/memory/errors.d.ts +16 -0
  251. package/dist/memory/errors.d.ts.map +1 -0
  252. package/dist/memory/errors.js +88 -0
  253. package/dist/memory/index.cjs +43 -0
  254. package/dist/memory/index.d.ts +6 -0
  255. package/dist/memory/index.d.ts.map +1 -0
  256. package/dist/memory/index.js +18 -0
  257. package/dist/memory/manager.cjs +214 -0
  258. package/dist/memory/manager.d.ts +56 -0
  259. package/dist/memory/manager.d.ts.map +1 -0
  260. package/dist/memory/manager.js +195 -0
  261. package/dist/memory/schemas.cjs +82 -0
  262. package/dist/memory/schemas.d.ts +129 -0
  263. package/dist/memory/schemas.d.ts.map +1 -0
  264. package/dist/memory/schemas.js +53 -0
  265. package/dist/memory/types.d.ts +76 -0
  266. package/dist/memory/types.d.ts.map +1 -0
  267. package/dist/plugins/builtins/content-policy.cjs +112 -0
  268. package/dist/plugins/builtins/content-policy.d.ts +26 -0
  269. package/dist/plugins/builtins/content-policy.d.ts.map +1 -0
  270. package/dist/plugins/builtins/content-policy.js +88 -0
  271. package/dist/plugins/builtins/response-sanitizer.cjs +102 -0
  272. package/dist/plugins/builtins/response-sanitizer.d.ts +25 -0
  273. package/dist/plugins/builtins/response-sanitizer.d.ts.map +1 -0
  274. package/dist/plugins/builtins/response-sanitizer.js +78 -0
  275. package/dist/plugins/error-codes.cjs +39 -0
  276. package/dist/plugins/error-codes.d.ts +26 -0
  277. package/dist/plugins/error-codes.d.ts.map +1 -0
  278. package/dist/plugins/error-codes.js +15 -0
  279. package/dist/plugins/index.cjs +54 -0
  280. package/dist/plugins/index.d.ts +19 -0
  281. package/dist/plugins/index.d.ts.map +1 -0
  282. package/dist/plugins/index.js +24 -0
  283. package/dist/plugins/loader.cjs +151 -0
  284. package/dist/plugins/loader.d.ts +30 -0
  285. package/dist/plugins/loader.d.ts.map +1 -0
  286. package/dist/plugins/loader.js +124 -0
  287. package/dist/plugins/manager.cjs +386 -0
  288. package/dist/plugins/manager.d.ts +97 -0
  289. package/dist/plugins/manager.d.ts.map +1 -0
  290. package/dist/plugins/manager.js +362 -0
  291. package/dist/plugins/registrations/builtins.cjs +51 -0
  292. package/dist/plugins/registrations/builtins.d.ts +17 -0
  293. package/dist/plugins/registrations/builtins.d.ts.map +1 -0
  294. package/dist/plugins/registrations/builtins.js +27 -0
  295. package/dist/plugins/schemas.cjs +61 -0
  296. package/dist/plugins/schemas.d.ts +138 -0
  297. package/dist/plugins/schemas.d.ts.map +1 -0
  298. package/dist/plugins/schemas.js +35 -0
  299. package/dist/plugins/types.d.ts +152 -0
  300. package/dist/plugins/types.d.ts.map +1 -0
  301. package/dist/preferences/constants.d.ts +2 -3
  302. package/dist/preferences/constants.d.ts.map +1 -0
  303. package/dist/preferences/error-codes.d.ts +2 -3
  304. package/dist/preferences/error-codes.d.ts.map +1 -0
  305. package/dist/preferences/errors.d.ts +4 -19
  306. package/dist/preferences/errors.d.ts.map +1 -0
  307. package/dist/preferences/index.d.ts +5 -20
  308. package/dist/preferences/index.d.ts.map +1 -0
  309. package/dist/preferences/loader.d.ts +9 -12
  310. package/dist/preferences/loader.d.ts.map +1 -0
  311. package/dist/preferences/schemas.d.ts +19 -21
  312. package/dist/preferences/schemas.d.ts.map +1 -0
  313. package/dist/prompts/error-codes.cjs +38 -0
  314. package/dist/prompts/error-codes.d.ts +15 -0
  315. package/dist/prompts/error-codes.d.ts.map +1 -0
  316. package/dist/prompts/error-codes.js +14 -0
  317. package/dist/prompts/errors.cjs +144 -0
  318. package/dist/prompts/errors.d.ts +45 -0
  319. package/dist/prompts/errors.d.ts.map +1 -0
  320. package/dist/prompts/errors.js +120 -0
  321. package/dist/prompts/index.cjs +53 -0
  322. package/dist/prompts/index.d.ts +13 -0
  323. package/dist/prompts/index.d.ts.map +1 -0
  324. package/dist/prompts/index.js +20 -0
  325. package/dist/prompts/name-validation.cjs +45 -0
  326. package/dist/prompts/name-validation.d.ts +9 -0
  327. package/dist/prompts/name-validation.d.ts.map +1 -0
  328. package/dist/prompts/name-validation.js +18 -0
  329. package/dist/prompts/prompt-manager.cjs +374 -0
  330. package/dist/prompts/prompt-manager.d.ts +74 -0
  331. package/dist/prompts/prompt-manager.d.ts.map +1 -0
  332. package/dist/prompts/prompt-manager.js +352 -0
  333. package/dist/prompts/providers/custom-prompt-provider.cjs +283 -0
  334. package/dist/prompts/providers/custom-prompt-provider.d.ts +36 -0
  335. package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -0
  336. package/dist/prompts/providers/custom-prompt-provider.js +259 -0
  337. package/dist/prompts/providers/file-prompt-provider.cjs +399 -0
  338. package/dist/prompts/providers/file-prompt-provider.d.ts +47 -0
  339. package/dist/prompts/providers/file-prompt-provider.d.ts.map +1 -0
  340. package/dist/prompts/providers/file-prompt-provider.js +375 -0
  341. package/dist/prompts/providers/mcp-prompt-provider.cjs +102 -0
  342. package/dist/prompts/providers/mcp-prompt-provider.d.ts +35 -0
  343. package/dist/prompts/providers/mcp-prompt-provider.d.ts.map +1 -0
  344. package/dist/prompts/providers/mcp-prompt-provider.js +78 -0
  345. package/dist/prompts/providers/starter-prompt-provider.cjs +170 -0
  346. package/dist/prompts/providers/starter-prompt-provider.d.ts +45 -0
  347. package/dist/prompts/providers/starter-prompt-provider.d.ts.map +1 -0
  348. package/dist/prompts/providers/starter-prompt-provider.js +146 -0
  349. package/dist/prompts/schemas.cjs +54 -0
  350. package/dist/prompts/schemas.d.ts +65 -0
  351. package/dist/prompts/schemas.d.ts.map +1 -0
  352. package/dist/prompts/schemas.js +30 -0
  353. package/dist/{storage/backend/cache-backend.cjs → prompts/types.cjs} +2 -2
  354. package/dist/prompts/types.d.ts +64 -0
  355. package/dist/prompts/types.d.ts.map +1 -0
  356. package/dist/prompts/utils.cjs +176 -0
  357. package/dist/prompts/utils.d.ts +32 -0
  358. package/dist/prompts/utils.d.ts.map +1 -0
  359. package/dist/prompts/utils.js +149 -0
  360. package/dist/resources/error-codes.cjs +38 -0
  361. package/dist/resources/error-codes.d.ts +13 -0
  362. package/dist/resources/error-codes.d.ts.map +1 -0
  363. package/dist/resources/error-codes.js +14 -0
  364. package/dist/resources/errors.cjs +155 -0
  365. package/dist/resources/errors.d.ts +48 -0
  366. package/dist/resources/errors.d.ts.map +1 -0
  367. package/dist/resources/errors.js +131 -0
  368. package/dist/resources/handlers/blob-handler.cjs +230 -0
  369. package/dist/resources/handlers/blob-handler.d.ts +38 -0
  370. package/dist/resources/handlers/blob-handler.d.ts.map +1 -0
  371. package/dist/resources/handlers/blob-handler.js +206 -0
  372. package/dist/resources/handlers/factory.cjs +50 -0
  373. package/dist/resources/handlers/factory.d.ts +11 -0
  374. package/dist/resources/handlers/factory.d.ts.map +1 -0
  375. package/dist/resources/handlers/factory.js +25 -0
  376. package/dist/resources/handlers/filesystem-handler.cjs +385 -0
  377. package/dist/resources/handlers/filesystem-handler.d.ts +35 -0
  378. package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -0
  379. package/dist/resources/handlers/filesystem-handler.js +351 -0
  380. package/dist/{storage/backend/database-backend.cjs → resources/handlers/types.cjs} +2 -2
  381. package/dist/resources/handlers/types.d.ts +15 -0
  382. package/dist/resources/handlers/types.d.ts.map +1 -0
  383. package/dist/resources/index.cjs +58 -0
  384. package/dist/resources/index.d.ts +39 -0
  385. package/dist/resources/index.d.ts.map +1 -0
  386. package/dist/resources/index.js +34 -0
  387. package/dist/resources/internal-provider.cjs +141 -0
  388. package/dist/resources/internal-provider.d.ts +19 -0
  389. package/dist/resources/internal-provider.d.ts.map +1 -0
  390. package/dist/resources/internal-provider.js +117 -0
  391. package/dist/resources/manager.cjs +221 -0
  392. package/dist/resources/manager.d.ts +29 -0
  393. package/dist/resources/manager.d.ts.map +1 -0
  394. package/dist/resources/manager.js +197 -0
  395. package/dist/resources/reference-parser.cjs +217 -0
  396. package/dist/resources/reference-parser.d.ts +33 -0
  397. package/dist/resources/reference-parser.d.ts.map +1 -0
  398. package/dist/resources/reference-parser.js +190 -0
  399. package/dist/resources/schemas.cjs +98 -0
  400. package/dist/resources/schemas.d.ts +212 -0
  401. package/dist/resources/schemas.d.ts.map +1 -0
  402. package/dist/resources/schemas.js +72 -0
  403. package/dist/resources/types.cjs +16 -0
  404. package/dist/resources/types.d.ts +57 -0
  405. package/dist/resources/types.d.ts.map +1 -0
  406. package/dist/resources/types.js +0 -0
  407. package/dist/search/index.d.ts +2 -4
  408. package/dist/search/index.d.ts.map +1 -0
  409. package/dist/search/search-service.d.ts +5 -9
  410. package/dist/search/search-service.d.ts.map +1 -0
  411. package/dist/search/types.d.ts +7 -10
  412. package/dist/search/types.d.ts.map +1 -0
  413. package/dist/session/chat-session.cjs +103 -10
  414. package/dist/session/chat-session.d.ts +30 -41
  415. package/dist/session/chat-session.d.ts.map +1 -0
  416. package/dist/session/chat-session.js +103 -10
  417. package/dist/session/error-codes.d.ts +2 -3
  418. package/dist/session/error-codes.d.ts.map +1 -0
  419. package/dist/session/errors.d.ts +2 -17
  420. package/dist/session/errors.d.ts.map +1 -0
  421. package/dist/session/history/database.d.ts +6 -9
  422. package/dist/session/history/database.d.ts.map +1 -0
  423. package/dist/session/history/factory.d.ts +4 -8
  424. package/dist/session/history/factory.d.ts.map +1 -0
  425. package/dist/session/history/memory.cjs +39 -0
  426. package/dist/session/history/memory.d.ts +14 -0
  427. package/dist/session/history/memory.d.ts.map +1 -0
  428. package/dist/session/history/memory.js +15 -0
  429. package/dist/session/history/types.d.ts +3 -6
  430. package/dist/session/history/types.d.ts.map +1 -0
  431. package/dist/session/index.d.ts +3 -50
  432. package/dist/session/index.d.ts.map +1 -0
  433. package/dist/session/schemas.d.ts +4 -6
  434. package/dist/session/schemas.d.ts.map +1 -0
  435. package/dist/session/session-manager.cjs +63 -29
  436. package/dist/session/session-manager.d.ts +27 -43
  437. package/dist/session/session-manager.d.ts.map +1 -0
  438. package/dist/session/session-manager.js +63 -29
  439. package/dist/session/title-generator.cjs +140 -0
  440. package/dist/session/title-generator.d.ts +22 -0
  441. package/dist/session/title-generator.d.ts.map +1 -0
  442. package/dist/session/title-generator.js +115 -0
  443. package/dist/storage/blob/factory.cjs +50 -0
  444. package/dist/storage/blob/factory.d.ts +8 -0
  445. package/dist/storage/blob/factory.d.ts.map +1 -0
  446. package/dist/storage/blob/factory.js +26 -0
  447. package/dist/storage/blob/local-blob-store.cjs +487 -0
  448. package/dist/storage/blob/local-blob-store.d.ts +56 -0
  449. package/dist/storage/blob/local-blob-store.d.ts.map +1 -0
  450. package/dist/storage/blob/local-blob-store.js +453 -0
  451. package/dist/storage/blob/schemas.cjs +53 -0
  452. package/dist/storage/blob/schemas.d.ts +80 -0
  453. package/dist/storage/blob/schemas.d.ts.map +1 -0
  454. package/dist/storage/blob/schemas.js +28 -0
  455. package/dist/storage/blob/types.cjs +16 -0
  456. package/dist/storage/blob/types.d.ts +154 -0
  457. package/dist/storage/blob/types.d.ts.map +1 -0
  458. package/dist/storage/blob/types.js +0 -0
  459. package/dist/storage/cache/factory.cjs +63 -0
  460. package/dist/storage/cache/factory.d.ts +8 -0
  461. package/dist/storage/cache/factory.d.ts.map +1 -0
  462. package/dist/storage/cache/factory.js +29 -0
  463. package/dist/storage/cache/memory-cache-store.cjs +107 -0
  464. package/dist/storage/cache/memory-cache-store.d.ts +26 -0
  465. package/dist/storage/cache/memory-cache-store.d.ts.map +1 -0
  466. package/dist/storage/cache/memory-cache-store.js +83 -0
  467. package/dist/storage/{backend/redis-backend.cjs → cache/redis-store.cjs} +8 -22
  468. package/dist/storage/{backend/redis-backend.d.ts → cache/redis-store.d.ts} +8 -14
  469. package/dist/storage/cache/redis-store.d.ts.map +1 -0
  470. package/dist/storage/{backend/redis-backend.js → cache/redis-store.js} +4 -18
  471. package/dist/storage/cache/schemas.cjs +77 -0
  472. package/dist/storage/cache/schemas.d.ts +151 -0
  473. package/dist/storage/cache/schemas.d.ts.map +1 -0
  474. package/dist/storage/cache/schemas.js +52 -0
  475. package/dist/storage/cache/types.cjs +16 -0
  476. package/dist/storage/{backend/cache-backend.d.cts → cache/types.d.ts} +3 -4
  477. package/dist/storage/cache/types.d.ts.map +1 -0
  478. package/dist/storage/cache/types.js +0 -0
  479. package/dist/storage/database/factory.cjs +84 -0
  480. package/dist/storage/database/factory.d.ts +8 -0
  481. package/dist/storage/database/factory.d.ts.map +1 -0
  482. package/dist/storage/database/factory.js +50 -0
  483. package/dist/storage/{backend/memory-backend.cjs → database/memory-database-store.cjs} +10 -28
  484. package/dist/storage/{backend/memory-backend.d.ts → database/memory-database-store.d.ts} +7 -12
  485. package/dist/storage/database/memory-database-store.d.ts.map +1 -0
  486. package/dist/storage/{backend/memory-backend.js → database/memory-database-store.js} +6 -24
  487. package/dist/storage/{backend/postgres-backend.cjs → database/postgres-store.cjs} +11 -11
  488. package/dist/storage/{backend/postgres-backend.d.ts → database/postgres-store.d.ts} +8 -11
  489. package/dist/storage/database/postgres-store.d.ts.map +1 -0
  490. package/dist/storage/{backend/postgres-backend.js → database/postgres-store.js} +7 -7
  491. package/dist/storage/database/schemas.cjs +89 -0
  492. package/dist/storage/database/schemas.d.ts +227 -0
  493. package/dist/storage/database/schemas.d.ts.map +1 -0
  494. package/dist/storage/database/schemas.js +64 -0
  495. package/dist/storage/{backend/sqlite-backend.cjs → database/sqlite-store.cjs} +15 -14
  496. package/dist/storage/{backend/sqlite-backend.d.ts → database/sqlite-store.d.ts} +8 -11
  497. package/dist/storage/database/sqlite-store.d.ts.map +1 -0
  498. package/dist/storage/{backend/sqlite-backend.js → database/sqlite-store.js} +11 -10
  499. package/dist/storage/database/types.cjs +16 -0
  500. package/dist/storage/{backend/database-backend.d.cts → database/types.d.ts} +3 -4
  501. package/dist/storage/database/types.d.ts.map +1 -0
  502. package/dist/storage/database/types.js +0 -0
  503. package/dist/storage/error-codes.cjs +15 -0
  504. package/dist/storage/error-codes.d.ts +19 -5
  505. package/dist/storage/error-codes.d.ts.map +1 -0
  506. package/dist/storage/error-codes.js +15 -0
  507. package/dist/storage/errors.cjs +195 -7
  508. package/dist/storage/errors.d.ts +71 -19
  509. package/dist/storage/errors.d.ts.map +1 -0
  510. package/dist/storage/errors.js +189 -1
  511. package/dist/storage/index.cjs +24 -5
  512. package/dist/storage/index.d.ts +48 -7
  513. package/dist/storage/index.d.ts.map +1 -0
  514. package/dist/storage/index.js +20 -4
  515. package/dist/storage/schemas.cjs +22 -84
  516. package/dist/storage/schemas.d.ts +98 -574
  517. package/dist/storage/schemas.d.ts.map +1 -0
  518. package/dist/storage/schemas.js +25 -84
  519. package/dist/storage/storage-manager.cjs +131 -116
  520. package/dist/storage/storage-manager.d.ts +51 -25
  521. package/dist/storage/storage-manager.d.ts.map +1 -0
  522. package/dist/storage/storage-manager.js +130 -105
  523. package/dist/storage/types.d.ts +7 -5
  524. package/dist/storage/types.d.ts.map +1 -0
  525. package/dist/systemPrompt/contributors.cjs +54 -0
  526. package/dist/systemPrompt/contributors.d.ts +30 -15
  527. package/dist/systemPrompt/contributors.d.ts.map +1 -0
  528. package/dist/systemPrompt/contributors.js +53 -0
  529. package/dist/systemPrompt/error-codes.d.ts +2 -3
  530. package/dist/systemPrompt/error-codes.d.ts.map +1 -0
  531. package/dist/systemPrompt/errors.d.ts +2 -17
  532. package/dist/systemPrompt/errors.d.ts.map +1 -0
  533. package/dist/systemPrompt/in-built-prompts.cjs +13 -15
  534. package/dist/systemPrompt/in-built-prompts.d.ts +4 -14
  535. package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -0
  536. package/dist/systemPrompt/in-built-prompts.js +13 -15
  537. package/dist/systemPrompt/index.cjs +11 -0
  538. package/dist/systemPrompt/index.d.ts +7 -14
  539. package/dist/systemPrompt/index.d.ts.map +1 -0
  540. package/dist/systemPrompt/index.js +8 -0
  541. package/dist/systemPrompt/manager.cjs +24 -6
  542. package/dist/systemPrompt/manager.d.ts +8 -16
  543. package/dist/systemPrompt/manager.d.ts.map +1 -0
  544. package/dist/systemPrompt/manager.js +24 -6
  545. package/dist/systemPrompt/registry.d.ts +6 -16
  546. package/dist/systemPrompt/registry.d.ts.map +1 -0
  547. package/dist/systemPrompt/schemas.cjs +17 -3
  548. package/dist/systemPrompt/schemas.d.ts +204 -30
  549. package/dist/systemPrompt/schemas.d.ts.map +1 -0
  550. package/dist/systemPrompt/schemas.js +17 -3
  551. package/dist/systemPrompt/types.d.ts +3 -12
  552. package/dist/systemPrompt/types.d.ts.map +1 -0
  553. package/dist/tools/confirmation/allowed-tools-provider/factory.cjs +1 -1
  554. package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts +6 -12
  555. package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts.map +1 -0
  556. package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -1
  557. package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts +3 -5
  558. package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts.map +1 -0
  559. package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +9 -9
  560. package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts +7 -13
  561. package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts.map +1 -0
  562. package/dist/tools/confirmation/allowed-tools-provider/storage.js +9 -9
  563. package/dist/tools/confirmation/allowed-tools-provider/types.d.ts +2 -3
  564. package/dist/tools/confirmation/allowed-tools-provider/types.d.ts.map +1 -0
  565. package/dist/tools/error-codes.d.ts +2 -3
  566. package/dist/tools/error-codes.d.ts.map +1 -0
  567. package/dist/tools/errors.d.ts +2 -17
  568. package/dist/tools/errors.d.ts.map +1 -0
  569. package/dist/tools/index.cjs +0 -2
  570. package/dist/tools/index.d.ts +11 -19
  571. package/dist/tools/index.d.ts.map +1 -0
  572. package/dist/tools/index.js +0 -1
  573. package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +57 -0
  574. package/dist/tools/internal-tools/implementations/ask-user-tool.d.ts +18 -0
  575. package/dist/tools/internal-tools/implementations/ask-user-tool.d.ts.map +1 -0
  576. package/dist/tools/internal-tools/implementations/ask-user-tool.js +33 -0
  577. package/dist/tools/internal-tools/implementations/search-history-tool.d.ts +3 -11
  578. package/dist/tools/internal-tools/implementations/search-history-tool.d.ts.map +1 -0
  579. package/dist/tools/internal-tools/index.d.ts +3 -13
  580. package/dist/tools/internal-tools/index.d.ts.map +1 -0
  581. package/dist/tools/internal-tools/provider.cjs +9 -11
  582. package/dist/tools/internal-tools/provider.d.ts +6 -20
  583. package/dist/tools/internal-tools/provider.d.ts.map +1 -0
  584. package/dist/tools/internal-tools/provider.js +9 -11
  585. package/dist/tools/internal-tools/registry.cjs +6 -1
  586. package/dist/tools/internal-tools/registry.d.ts +10 -15
  587. package/dist/tools/internal-tools/registry.d.ts.map +1 -0
  588. package/dist/tools/internal-tools/registry.js +6 -1
  589. package/dist/tools/schemas.cjs +14 -2
  590. package/dist/tools/schemas.d.ts +12 -8
  591. package/dist/tools/schemas.d.ts.map +1 -0
  592. package/dist/tools/schemas.js +10 -2
  593. package/dist/tools/tool-manager.cjs +174 -14
  594. package/dist/tools/tool-manager.d.ts +48 -22
  595. package/dist/tools/tool-manager.d.ts.map +1 -0
  596. package/dist/tools/tool-manager.js +174 -14
  597. package/dist/tools/types.d.ts +9 -11
  598. package/dist/tools/types.d.ts.map +1 -0
  599. package/dist/utils/api-key-resolver.d.ts +5 -7
  600. package/dist/utils/api-key-resolver.d.ts.map +1 -0
  601. package/dist/utils/api-key-store.d.ts +5 -7
  602. package/dist/utils/api-key-store.d.ts.map +1 -0
  603. package/dist/utils/async-context.cjs +51 -0
  604. package/dist/utils/async-context.d.ts +68 -0
  605. package/dist/utils/async-context.d.ts.map +1 -0
  606. package/dist/utils/async-context.js +24 -0
  607. package/dist/utils/debug.cjs +40 -0
  608. package/dist/utils/debug.d.ts +2 -0
  609. package/dist/utils/debug.d.ts.map +1 -0
  610. package/dist/utils/debug.js +16 -0
  611. package/dist/utils/env.d.ts +4 -5
  612. package/dist/utils/env.d.ts.map +1 -0
  613. package/dist/utils/error-conversion.d.ts +2 -3
  614. package/dist/utils/error-conversion.d.ts.map +1 -0
  615. package/dist/utils/execution-context.d.ts +5 -6
  616. package/dist/utils/execution-context.d.ts.map +1 -0
  617. package/dist/utils/fs-walk.d.ts +2 -3
  618. package/dist/utils/fs-walk.d.ts.map +1 -0
  619. package/dist/utils/index.cjs +3 -1
  620. package/dist/utils/index.d.ts +14 -63
  621. package/dist/utils/index.d.ts.map +1 -0
  622. package/dist/utils/index.js +1 -0
  623. package/dist/utils/path.d.ts +9 -10
  624. package/dist/utils/path.d.ts.map +1 -0
  625. package/dist/utils/port-utils.d.ts +2 -3
  626. package/dist/utils/port-utils.d.ts.map +1 -0
  627. package/dist/utils/redactor.d.ts +2 -3
  628. package/dist/utils/redactor.d.ts.map +1 -0
  629. package/dist/utils/result.d.ts +14 -27
  630. package/dist/utils/result.d.ts.map +1 -0
  631. package/dist/utils/safe-stringify.d.ts +2 -3
  632. package/dist/utils/safe-stringify.d.ts.map +1 -0
  633. package/dist/utils/schema-metadata.cjs +235 -0
  634. package/dist/utils/schema-metadata.d.ts +82 -0
  635. package/dist/utils/schema-metadata.d.ts.map +1 -0
  636. package/dist/utils/schema-metadata.js +207 -0
  637. package/dist/utils/schema.d.ts +2 -3
  638. package/dist/utils/schema.d.ts.map +1 -0
  639. package/dist/utils/service-initializer.cjs +71 -34
  640. package/dist/utils/service-initializer.d.ts +18 -43
  641. package/dist/utils/service-initializer.d.ts.map +1 -0
  642. package/dist/utils/service-initializer.js +71 -34
  643. package/dist/utils/user-info.d.ts +2 -3
  644. package/dist/utils/user-info.d.ts.map +1 -0
  645. package/dist/utils/zod-schema-converter.d.ts +3 -5
  646. package/dist/utils/zod-schema-converter.d.ts.map +1 -0
  647. package/package.json +6 -4
  648. package/dist/agent/DextoAgent.d.cts +0 -541
  649. package/dist/agent/agentCard.d.cts +0 -20
  650. package/dist/agent/error-codes.d.cts +0 -14
  651. package/dist/agent/errors.d.cts +0 -44
  652. package/dist/agent/index.d.cts +0 -60
  653. package/dist/agent/registry/error-codes.d.cts +0 -20
  654. package/dist/agent/registry/errors.d.cts +0 -67
  655. package/dist/agent/registry/registry.d.cts +0 -67
  656. package/dist/agent/registry/types.d.cts +0 -100
  657. package/dist/agent/schemas.d.cts +0 -1502
  658. package/dist/agent/state-manager.d.cts +0 -97
  659. package/dist/config/agent-resolver.d.cts +0 -15
  660. package/dist/config/error-codes.d.cts +0 -17
  661. package/dist/config/errors.d.cts +0 -49
  662. package/dist/config/index.d.cts +0 -7
  663. package/dist/config/loader.d.cts +0 -19
  664. package/dist/config/writer.d.cts +0 -38
  665. package/dist/context/compression/middle-removal.d.cts +0 -48
  666. package/dist/context/compression/oldest-removal.d.cts +0 -43
  667. package/dist/context/compression/types.d.cts +0 -21
  668. package/dist/context/error-codes.d.cts +0 -19
  669. package/dist/context/errors.d.cts +0 -36
  670. package/dist/context/index.d.cts +0 -19
  671. package/dist/context/manager.d.cts +0 -254
  672. package/dist/context/types.d.cts +0 -113
  673. package/dist/context/utils.d.cts +0 -79
  674. package/dist/errors/DextoBaseError.d.cts +0 -15
  675. package/dist/errors/DextoRuntimeError.d.cts +0 -37
  676. package/dist/errors/DextoValidationError.d.cts +0 -65
  677. package/dist/errors/index.d.cts +0 -18
  678. package/dist/errors/result-bridge.d.cts +0 -39
  679. package/dist/errors/types.d.cts +0 -62
  680. package/dist/events/index.d.cts +0 -272
  681. package/dist/index.browser.d.cts +0 -53
  682. package/dist/index.d.cts +0 -89
  683. package/dist/llm/error-codes.d.cts +0 -26
  684. package/dist/llm/errors.d.cts +0 -58
  685. package/dist/llm/formatters/anthropic.d.cts +0 -45
  686. package/dist/llm/formatters/factory.d.cts +0 -12
  687. package/dist/llm/formatters/openai.d.cts +0 -38
  688. package/dist/llm/formatters/types.d.cts +0 -43
  689. package/dist/llm/formatters/vercel.d.cts +0 -48
  690. package/dist/llm/index.d.cts +0 -39
  691. package/dist/llm/registry.d.cts +0 -176
  692. package/dist/llm/resolver.d.cts +0 -34
  693. package/dist/llm/schemas.d.cts +0 -111
  694. package/dist/llm/services/anthropic.d.cts +0 -65
  695. package/dist/llm/services/factory.d.cts +0 -39
  696. package/dist/llm/services/index.d.cts +0 -21
  697. package/dist/llm/services/openai.d.cts +0 -65
  698. package/dist/llm/services/test-utils.integration.d.cts +0 -83
  699. package/dist/llm/services/types.d.cts +0 -56
  700. package/dist/llm/services/vercel.d.cts +0 -72
  701. package/dist/llm/tokenizer/anthropic.d.cts +0 -21
  702. package/dist/llm/tokenizer/default.d.cts +0 -16
  703. package/dist/llm/tokenizer/factory.d.cts +0 -12
  704. package/dist/llm/tokenizer/google.d.cts +0 -31
  705. package/dist/llm/tokenizer/openai.d.cts +0 -32
  706. package/dist/llm/tokenizer/types.d.cts +0 -19
  707. package/dist/llm/types.d.cts +0 -29
  708. package/dist/llm/validation.d.cts +0 -60
  709. package/dist/logger/browser.d.cts +0 -29
  710. package/dist/logger/index.d.cts +0 -1
  711. package/dist/logger/logger.d.cts +0 -52
  712. package/dist/mcp/error-codes.d.cts +0 -16
  713. package/dist/mcp/errors.d.cts +0 -72
  714. package/dist/mcp/index.d.cts +0 -26
  715. package/dist/mcp/manager.d.cts +0 -163
  716. package/dist/mcp/mcp-client.d.cts +0 -108
  717. package/dist/mcp/resolver.d.cts +0 -22
  718. package/dist/mcp/schemas.d.cts +0 -266
  719. package/dist/mcp/types.d.cts +0 -21
  720. package/dist/preferences/constants.d.cts +0 -3
  721. package/dist/preferences/error-codes.d.cts +0 -9
  722. package/dist/preferences/errors.d.cts +0 -33
  723. package/dist/preferences/index.d.cts +0 -21
  724. package/dist/preferences/loader.d.cts +0 -45
  725. package/dist/preferences/schemas.d.cts +0 -104
  726. package/dist/search/index.d.cts +0 -5
  727. package/dist/search/search-service.d.cts +0 -47
  728. package/dist/search/types.d.cts +0 -78
  729. package/dist/session/chat-session.d.cts +0 -284
  730. package/dist/session/error-codes.d.cts +0 -13
  731. package/dist/session/errors.d.cts +0 -58
  732. package/dist/session/history/database.d.cts +0 -28
  733. package/dist/session/history/factory.d.cts +0 -11
  734. package/dist/session/history/types.d.cts +0 -17
  735. package/dist/session/index.d.cts +0 -53
  736. package/dist/session/schemas.d.cts +0 -16
  737. package/dist/session/session-manager.d.cts +0 -219
  738. package/dist/storage/backend/cache-backend.d.ts +0 -15
  739. package/dist/storage/backend/database-backend.d.ts +0 -19
  740. package/dist/storage/backend/memory-backend.d.cts +0 -34
  741. package/dist/storage/backend/postgres-backend.d.cts +0 -37
  742. package/dist/storage/backend/redis-backend.d.cts +0 -36
  743. package/dist/storage/backend/sqlite-backend.d.cts +0 -35
  744. package/dist/storage/backend/types.d.cts +0 -14
  745. package/dist/storage/backend/types.d.ts +0 -14
  746. package/dist/storage/error-codes.d.cts +0 -14
  747. package/dist/storage/errors.d.cts +0 -63
  748. package/dist/storage/index.d.cts +0 -7
  749. package/dist/storage/schemas.d.cts +0 -856
  750. package/dist/storage/storage-manager.d.cts +0 -52
  751. package/dist/storage/types.d.cts +0 -5
  752. package/dist/systemPrompt/contributors.d.cts +0 -44
  753. package/dist/systemPrompt/error-codes.d.cts +0 -13
  754. package/dist/systemPrompt/errors.d.cts +0 -55
  755. package/dist/systemPrompt/in-built-prompts.d.cts +0 -28
  756. package/dist/systemPrompt/index.d.cts +0 -14
  757. package/dist/systemPrompt/manager.d.cts +0 -31
  758. package/dist/systemPrompt/registry.d.cts +0 -20
  759. package/dist/systemPrompt/schemas.d.cts +0 -401
  760. package/dist/systemPrompt/types.d.cts +0 -19
  761. package/dist/tools/confirmation/allowed-tools-provider/factory.d.cts +0 -19
  762. package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.cts +0 -17
  763. package/dist/tools/confirmation/allowed-tools-provider/storage.d.cts +0 -26
  764. package/dist/tools/confirmation/allowed-tools-provider/types.d.cts +0 -35
  765. package/dist/tools/confirmation/event-based-confirmation-provider.cjs +0 -158
  766. package/dist/tools/confirmation/event-based-confirmation-provider.d.cts +0 -41
  767. package/dist/tools/confirmation/event-based-confirmation-provider.d.ts +0 -41
  768. package/dist/tools/confirmation/event-based-confirmation-provider.js +0 -134
  769. package/dist/tools/confirmation/factory.cjs +0 -52
  770. package/dist/tools/confirmation/factory.d.cts +0 -37
  771. package/dist/tools/confirmation/factory.d.ts +0 -37
  772. package/dist/tools/confirmation/factory.js +0 -28
  773. package/dist/tools/confirmation/noop-confirmation-provider.cjs +0 -49
  774. package/dist/tools/confirmation/noop-confirmation-provider.d.cts +0 -22
  775. package/dist/tools/confirmation/noop-confirmation-provider.d.ts +0 -22
  776. package/dist/tools/confirmation/noop-confirmation-provider.js +0 -25
  777. package/dist/tools/confirmation/types.d.cts +0 -46
  778. package/dist/tools/confirmation/types.d.ts +0 -46
  779. package/dist/tools/error-codes.d.cts +0 -18
  780. package/dist/tools/errors.d.cts +0 -97
  781. package/dist/tools/index.d.cts +0 -19
  782. package/dist/tools/internal-tools/implementations/search-history-tool.d.cts +0 -15
  783. package/dist/tools/internal-tools/index.d.cts +0 -13
  784. package/dist/tools/internal-tools/provider.d.cts +0 -66
  785. package/dist/tools/internal-tools/registry.d.cts +0 -45
  786. package/dist/tools/schemas.d.cts +0 -21
  787. package/dist/tools/tool-manager.d.cts +0 -106
  788. package/dist/tools/types.d.cts +0 -66
  789. package/dist/utils/api-key-resolver.d.cts +0 -23
  790. package/dist/utils/api-key-store.d.cts +0 -26
  791. package/dist/utils/env.d.cts +0 -29
  792. package/dist/utils/error-conversion.d.cts +0 -13
  793. package/dist/utils/execution-context.d.cts +0 -21
  794. package/dist/utils/fs-walk.d.cts +0 -9
  795. package/dist/utils/index.d.cts +0 -63
  796. package/dist/utils/path.d.cts +0 -54
  797. package/dist/utils/port-utils.d.cts +0 -11
  798. package/dist/utils/port-utils.spec.d.cts +0 -2
  799. package/dist/utils/port-utils.spec.d.ts +0 -2
  800. package/dist/utils/redactor.d.cts +0 -18
  801. package/dist/utils/result.d.cts +0 -180
  802. package/dist/utils/safe-stringify.d.cts +0 -7
  803. package/dist/utils/schema.d.cts +0 -6
  804. package/dist/utils/service-initializer.d.cts +0 -63
  805. package/dist/utils/user-info.d.cts +0 -3
  806. package/dist/utils/zod-schema-converter.d.cts +0 -13
  807. /package/dist/{storage/backend → memory}/types.cjs +0 -0
  808. /package/dist/{storage/backend → memory}/types.js +0 -0
  809. /package/dist/{tools/confirmation → plugins}/types.cjs +0 -0
  810. /package/dist/{tools/confirmation → plugins}/types.js +0 -0
  811. /package/dist/{storage/backend/cache-backend.js → prompts/types.js} +0 -0
  812. /package/dist/{storage/backend/database-backend.js → resources/handlers/types.js} +0 -0
@@ -2,9 +2,290 @@ import { logger } from "../logger/index.js";
2
2
  import { validateModelFileSupport } from "../llm/registry.js";
3
3
  import { ContextError } from "./errors.js";
4
4
  import { safeStringify } from "../utils/safe-stringify.js";
5
+ import { getFileMediaKind, getResourceKind } from "./media-helpers.js";
5
6
  const DEFAULT_OVERHEAD_PER_MESSAGE = 4;
6
7
  const MIN_BASE64_HEURISTIC_LENGTH = 512;
7
8
  const MAX_TOOL_TEXT_CHARS = 8e3;
9
+ const MIN_TOOL_INLINE_MEDIA_BYTES = 1024;
10
+ function slugifyForFilename(value, maxLength = 48) {
11
+ if (!value) return null;
12
+ const slug = value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
13
+ if (!slug) return null;
14
+ return slug.length > maxLength ? slug.slice(0, maxLength) : slug;
15
+ }
16
+ function inferExtensionFromMime(mimeType, fallback) {
17
+ if (!mimeType) return fallback;
18
+ const subtype = mimeType.split("/")[1]?.split(";")[0]?.split("+")[0];
19
+ if (!subtype) return fallback;
20
+ const clean = subtype.replace(/[^a-z0-9]/gi, "").toLowerCase();
21
+ return clean || fallback;
22
+ }
23
+ function sanitizeExistingFilename(filename) {
24
+ return filename.replace(/[^a-zA-Z0-9._-]+/g, "-");
25
+ }
26
+ function generateUniqueSuffix() {
27
+ return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 6)}`;
28
+ }
29
+ function clonePart(part) {
30
+ if (part.type === "text") {
31
+ return { type: "text", text: part.text };
32
+ }
33
+ if (part.type === "image") {
34
+ const cloned2 = {
35
+ type: "image",
36
+ image: part.image
37
+ };
38
+ if (part.mimeType) {
39
+ cloned2.mimeType = part.mimeType;
40
+ }
41
+ return cloned2;
42
+ }
43
+ const cloned = {
44
+ type: "file",
45
+ data: part.data,
46
+ mimeType: part.mimeType
47
+ };
48
+ if (part.filename) {
49
+ cloned.filename = part.filename;
50
+ }
51
+ return cloned;
52
+ }
53
+ function coerceContentToParts(content) {
54
+ if (Array.isArray(content)) {
55
+ const normalized = [];
56
+ for (const item of content) {
57
+ if (item == null) continue;
58
+ if (typeof item === "string") {
59
+ normalized.push({ type: "text", text: item });
60
+ continue;
61
+ }
62
+ if (typeof item === "object" && "type" in item) {
63
+ const type = item.type;
64
+ if (type === "text") {
65
+ const textPart = item;
66
+ normalized.push({ type: "text", text: textPart.text });
67
+ continue;
68
+ }
69
+ if (type === "image") {
70
+ const imagePart = item;
71
+ const cloned = {
72
+ type: "image",
73
+ image: imagePart.image
74
+ };
75
+ if (imagePart.mimeType) {
76
+ cloned.mimeType = imagePart.mimeType;
77
+ }
78
+ normalized.push(cloned);
79
+ continue;
80
+ }
81
+ if (type === "file") {
82
+ const filePart = item;
83
+ const cloned = {
84
+ type: "file",
85
+ data: filePart.data,
86
+ mimeType: filePart.mimeType ?? "application/octet-stream"
87
+ };
88
+ if (filePart.filename) {
89
+ cloned.filename = filePart.filename;
90
+ }
91
+ normalized.push(cloned);
92
+ continue;
93
+ }
94
+ }
95
+ }
96
+ return normalized;
97
+ }
98
+ if (typeof content === "string") {
99
+ if (content.length === 0) {
100
+ return [];
101
+ }
102
+ return [{ type: "text", text: content }];
103
+ }
104
+ if (content == null) {
105
+ return [];
106
+ }
107
+ return [{ type: "text", text: safeStringify(content) }];
108
+ }
109
+ function detectInlineMedia(part, index) {
110
+ if (part.type === "text") {
111
+ return null;
112
+ }
113
+ if (part.type === "image") {
114
+ const value = part.image;
115
+ const mimeType2 = part.mimeType ?? "image/jpeg";
116
+ if (typeof value === "string") {
117
+ if (value.startsWith("@blob:")) return null;
118
+ if (value.startsWith("http://") || value.startsWith("https://") || value.startsWith("blob:")) {
119
+ return null;
120
+ }
121
+ if (isLikelyBase64String(value, 128)) {
122
+ return {
123
+ index,
124
+ kind: "image",
125
+ mimeType: mimeType2,
126
+ approxBytes: base64LengthToBytes(value.length),
127
+ data: value
128
+ };
129
+ }
130
+ } else if (value instanceof Buffer) {
131
+ return {
132
+ index,
133
+ kind: "image",
134
+ mimeType: mimeType2,
135
+ approxBytes: value.length,
136
+ data: value
137
+ };
138
+ } else if (value instanceof Uint8Array) {
139
+ const buffer = Buffer.from(value);
140
+ return {
141
+ index,
142
+ kind: "image",
143
+ mimeType: mimeType2,
144
+ approxBytes: buffer.length,
145
+ data: buffer
146
+ };
147
+ } else if (value instanceof ArrayBuffer) {
148
+ const buffer = Buffer.from(new Uint8Array(value));
149
+ return {
150
+ index,
151
+ kind: "image",
152
+ mimeType: mimeType2,
153
+ approxBytes: buffer.length,
154
+ data: buffer
155
+ };
156
+ }
157
+ return null;
158
+ }
159
+ const data = part.data;
160
+ const mimeType = part.mimeType ?? "application/octet-stream";
161
+ const filename = part.filename;
162
+ if (typeof data === "string") {
163
+ if (data.startsWith("@blob:")) return null;
164
+ if (data.startsWith("http://") || data.startsWith("https://") || data.startsWith("blob:")) {
165
+ return null;
166
+ }
167
+ if (data.startsWith("data:")) {
168
+ const parsed = parseDataUri(data);
169
+ if (parsed) {
170
+ return {
171
+ index,
172
+ kind: "file",
173
+ mimeType: parsed.mediaType,
174
+ approxBytes: base64LengthToBytes(parsed.base64.length),
175
+ data: parsed.base64,
176
+ filename
177
+ };
178
+ }
179
+ }
180
+ if (isLikelyBase64String(data, 128)) {
181
+ return {
182
+ index,
183
+ kind: "file",
184
+ mimeType,
185
+ approxBytes: base64LengthToBytes(data.length),
186
+ data,
187
+ filename
188
+ };
189
+ }
190
+ } else if (data instanceof Buffer) {
191
+ return {
192
+ index,
193
+ kind: "file",
194
+ mimeType,
195
+ approxBytes: data.length,
196
+ data,
197
+ filename
198
+ };
199
+ } else if (data instanceof Uint8Array) {
200
+ const buffer = Buffer.from(data);
201
+ return {
202
+ index,
203
+ kind: "file",
204
+ mimeType,
205
+ approxBytes: buffer.length,
206
+ data: buffer,
207
+ filename
208
+ };
209
+ } else if (data instanceof ArrayBuffer) {
210
+ const buffer = Buffer.from(new Uint8Array(data));
211
+ return {
212
+ index,
213
+ kind: "file",
214
+ mimeType,
215
+ approxBytes: buffer.length,
216
+ data: buffer,
217
+ filename
218
+ };
219
+ }
220
+ return null;
221
+ }
222
+ function buildToolBlobName(kind, mimeType, options, preferredName) {
223
+ if (preferredName) {
224
+ return sanitizeExistingFilename(preferredName);
225
+ }
226
+ const toolSegment = slugifyForFilename(options?.toolName ?? "", 40);
227
+ const callSegment = slugifyForFilename(options?.toolCallId ?? "", 16);
228
+ const parts = ["tool"];
229
+ if (toolSegment) parts.push(toolSegment);
230
+ if (callSegment) parts.push(callSegment);
231
+ parts.push(kind);
232
+ const ext = inferExtensionFromMime(
233
+ mimeType,
234
+ kind === "image" ? "jpg" : kind === "file" ? "bin" : "bin"
235
+ );
236
+ const unique = generateUniqueSuffix();
237
+ return `${parts.join("-")}-${unique}.${ext}`;
238
+ }
239
+ async function resolveBlobReferenceToParts(resourceUri, resourceManager) {
240
+ try {
241
+ const result = await resourceManager.read(resourceUri);
242
+ const parts = [];
243
+ for (const item of result.contents ?? []) {
244
+ if (!item || typeof item !== "object") {
245
+ continue;
246
+ }
247
+ if (typeof item.text === "string") {
248
+ parts.push({ type: "text", text: item.text });
249
+ continue;
250
+ }
251
+ const base64Data = typeof item.blob === "string" ? item.blob : typeof item.data === "string" ? item.data : void 0;
252
+ const mimeType = typeof item.mimeType === "string" ? item.mimeType : void 0;
253
+ if (!base64Data || !mimeType) {
254
+ continue;
255
+ }
256
+ const resolvedMime = mimeType ?? "application/octet-stream";
257
+ if (resolvedMime.startsWith("image/")) {
258
+ const dataUri = `data:${resolvedMime};base64,${base64Data}`;
259
+ const imagePart = {
260
+ type: "image",
261
+ image: dataUri,
262
+ mimeType: resolvedMime
263
+ };
264
+ parts.push(imagePart);
265
+ continue;
266
+ }
267
+ const filePart = {
268
+ type: "file",
269
+ data: resolvedMime.startsWith("audio/") ? `data:${resolvedMime};base64,${base64Data}` : base64Data,
270
+ mimeType: resolvedMime
271
+ };
272
+ if (typeof item.filename === "string" && item.filename.length > 0) {
273
+ filePart.filename = item.filename;
274
+ } else if (typeof result._meta?.originalName === "string") {
275
+ filePart.filename = result._meta.originalName;
276
+ }
277
+ parts.push(filePart);
278
+ }
279
+ if (parts.length === 0) {
280
+ const fallbackName = typeof result._meta?.originalName === "string" && result._meta.originalName || resourceUri;
281
+ parts.push({ type: "text", text: `[Attachment: ${fallbackName}]` });
282
+ }
283
+ return parts;
284
+ } catch (error) {
285
+ logger.warn(`Failed to resolve blob reference ${resourceUri}: ${String(error)}`);
286
+ return [{ type: "text", text: `[Attachment unavailable: ${resourceUri}]` }];
287
+ }
288
+ }
8
289
  function countMessagesTokens(history, tokenizer, overheadPerMessage = DEFAULT_OVERHEAD_PER_MESSAGE) {
9
290
  let total = 0;
10
291
  logger.debug(`Counting tokens for ${history.length} messages`);
@@ -99,6 +380,136 @@ function getFileData(filePart) {
99
380
  logger.warn(`Unexpected file data type in getFileData: ${typeof data}`);
100
381
  return "";
101
382
  }
383
+ async function getImageDataWithBlobSupport(imagePart, resourceManager) {
384
+ const { image } = imagePart;
385
+ if (typeof image === "string" && image.startsWith("@blob:")) {
386
+ try {
387
+ const uri = image.substring(1);
388
+ const resourceUri = uri.startsWith("blob:") ? uri : `blob:${uri}`;
389
+ const result = await resourceManager.read(resourceUri);
390
+ if (result.contents[0]?.blob && typeof result.contents[0].blob === "string") {
391
+ return result.contents[0].blob;
392
+ }
393
+ logger.warn(`Blob reference ${image} did not contain blob data`);
394
+ } catch (error) {
395
+ logger.warn(`Failed to resolve blob reference ${image}: ${String(error)}`);
396
+ }
397
+ }
398
+ return getImageData(imagePart);
399
+ }
400
+ async function getFileDataWithBlobSupport(filePart, resourceManager) {
401
+ const { data } = filePart;
402
+ if (typeof data === "string" && data.startsWith("@blob:")) {
403
+ try {
404
+ const uri = data.substring(1);
405
+ const resourceUri = uri.startsWith("blob:") ? uri : `blob:${uri}`;
406
+ const result = await resourceManager.read(resourceUri);
407
+ if (result.contents[0]?.blob && typeof result.contents[0].blob === "string") {
408
+ return result.contents[0].blob;
409
+ }
410
+ logger.warn(`Blob reference ${data} did not contain blob data`);
411
+ } catch (error) {
412
+ logger.warn(`Failed to resolve blob reference ${data}: ${String(error)}`);
413
+ }
414
+ }
415
+ return getFileData(filePart);
416
+ }
417
+ async function expandBlobReferences(content, resourceManager) {
418
+ if (typeof content === "string") {
419
+ const blobRefPattern = /@blob:[a-f0-9]+/g;
420
+ const matches = [...content.matchAll(blobRefPattern)];
421
+ if (matches.length === 0) {
422
+ return content;
423
+ }
424
+ const resolvedCache = /* @__PURE__ */ new Map();
425
+ const parts = [];
426
+ let lastIndex = 0;
427
+ for (const match of matches) {
428
+ const matchIndex = match.index ?? 0;
429
+ const token = match[0];
430
+ if (matchIndex > lastIndex) {
431
+ const segment = content.slice(lastIndex, matchIndex);
432
+ if (segment.length > 0) {
433
+ parts.push({ type: "text", text: segment });
434
+ }
435
+ }
436
+ const uri = token.substring(1);
437
+ const resourceUri = uri.startsWith("blob:") ? uri : `blob:${uri}`;
438
+ let resolvedParts = resolvedCache.get(resourceUri);
439
+ if (!resolvedParts) {
440
+ resolvedParts = await resolveBlobReferenceToParts(resourceUri, resourceManager);
441
+ resolvedCache.set(resourceUri, resolvedParts);
442
+ }
443
+ if (resolvedParts.length > 0) {
444
+ parts.push(...resolvedParts.map((part) => ({ ...part })));
445
+ } else {
446
+ parts.push({ type: "text", text: token });
447
+ }
448
+ lastIndex = matchIndex + token.length;
449
+ }
450
+ if (lastIndex < content.length) {
451
+ const trailing = content.slice(lastIndex);
452
+ if (trailing.length > 0) {
453
+ parts.push({ type: "text", text: trailing });
454
+ }
455
+ }
456
+ const normalized = parts.filter((part) => part.type !== "text" || part.text.length > 0);
457
+ if (normalized.length === 1 && normalized[0]?.type === "text") {
458
+ return normalized[0].text;
459
+ }
460
+ return normalized;
461
+ }
462
+ if (Array.isArray(content)) {
463
+ const expandedParts = [];
464
+ for (const part of content) {
465
+ if (part.type === "image" && typeof part.image === "string" && part.image.startsWith("@blob:")) {
466
+ const uri = part.image.substring(1);
467
+ const resourceUri = uri.startsWith("blob:") ? uri : `blob:${uri}`;
468
+ const resolved = await resolveBlobReferenceToParts(resourceUri, resourceManager);
469
+ if (resolved.length > 0) {
470
+ expandedParts.push(...resolved.map((part2) => ({ ...part2 })));
471
+ } else {
472
+ expandedParts.push(part);
473
+ }
474
+ continue;
475
+ }
476
+ if (part.type === "file" && typeof part.data === "string" && part.data.startsWith("@blob:")) {
477
+ const uri = part.data.substring(1);
478
+ const resourceUri = uri.startsWith("blob:") ? uri : `blob:${uri}`;
479
+ const resolved = await resolveBlobReferenceToParts(resourceUri, resourceManager);
480
+ if (resolved.length > 0) {
481
+ expandedParts.push(...resolved.map((part2) => ({ ...part2 })));
482
+ } else {
483
+ try {
484
+ const resolvedData = await getFileDataWithBlobSupport(
485
+ part,
486
+ resourceManager
487
+ );
488
+ expandedParts.push({ ...part, data: resolvedData });
489
+ } catch (error) {
490
+ logger.warn(`Failed to resolve file blob reference: ${String(error)}`);
491
+ expandedParts.push(part);
492
+ }
493
+ }
494
+ continue;
495
+ }
496
+ if (part.type === "text" && part.text.includes("@blob:")) {
497
+ const expanded = await expandBlobReferences(part.text, resourceManager);
498
+ if (typeof expanded === "string") {
499
+ expandedParts.push({ ...part, text: expanded });
500
+ } else if (Array.isArray(expanded)) {
501
+ expandedParts.push(...expanded.map((part2) => ({ ...part2 })));
502
+ } else {
503
+ expandedParts.push(part);
504
+ }
505
+ continue;
506
+ }
507
+ expandedParts.push(part);
508
+ }
509
+ return expandedParts;
510
+ }
511
+ return content;
512
+ }
102
513
  function filterMessagesByLLMCapabilities(messages, config) {
103
514
  try {
104
515
  return messages.map((message) => {
@@ -175,24 +586,142 @@ function sanitizeDeepObject(obj) {
175
586
  }
176
587
  return obj;
177
588
  }
178
- function sanitizeToolResultToContent(result) {
589
+ async function normalizeToolResult(result) {
590
+ const content = await sanitizeToolResultToContentWithBlobs(result);
591
+ const parts = coerceContentToParts(content);
592
+ const inlineMedia = [];
593
+ parts.forEach((part, index) => {
594
+ const hint = detectInlineMedia(part, index);
595
+ if (hint) {
596
+ inlineMedia.push(hint);
597
+ }
598
+ });
599
+ return {
600
+ parts,
601
+ inlineMedia
602
+ };
603
+ }
604
+ function shouldPersistInlineMedia(hint) {
605
+ const kind = getFileMediaKind(hint.mimeType);
606
+ if (kind === "audio" || kind === "video") {
607
+ return true;
608
+ }
609
+ return hint.approxBytes >= MIN_TOOL_INLINE_MEDIA_BYTES;
610
+ }
611
+ async function persistToolMedia(normalized, options) {
612
+ const parts = normalized.parts.map((part) => clonePart(part));
613
+ const blobStore = options.blobStore;
614
+ const namingOptions = options.toolName || options.toolCallId ? {
615
+ ...options.toolName ? { toolName: options.toolName } : {},
616
+ ...options.toolCallId ? { toolCallId: options.toolCallId } : {}
617
+ } : void 0;
618
+ if (blobStore) {
619
+ for (const hint of normalized.inlineMedia) {
620
+ if (!shouldPersistInlineMedia(hint)) {
621
+ continue;
622
+ }
623
+ try {
624
+ const originalName = hint.filename ?? buildToolBlobName(
625
+ hint.kind === "image" ? "image" : "file",
626
+ hint.mimeType,
627
+ namingOptions
628
+ );
629
+ const blobRef = await blobStore.store(hint.data, {
630
+ mimeType: hint.mimeType,
631
+ originalName,
632
+ source: "tool"
633
+ });
634
+ const resourceUri = blobRef.uri;
635
+ if (hint.kind === "image") {
636
+ parts[hint.index] = createBlobImagePart(resourceUri, blobRef.metadata.mimeType);
637
+ } else {
638
+ const resolvedMimeType = blobRef.metadata.mimeType || hint.mimeType;
639
+ const filename = blobRef.metadata.originalName ?? hint.filename;
640
+ parts[hint.index] = createBlobFilePart(resourceUri, resolvedMimeType, filename);
641
+ }
642
+ } catch (error) {
643
+ logger.warn(
644
+ `Failed to persist tool media: ${error instanceof Error ? error.message : String(error)}`
645
+ );
646
+ }
647
+ }
648
+ }
649
+ const resources = extractResourceDescriptors(parts);
650
+ return {
651
+ parts,
652
+ ...resources ? { resources } : {}
653
+ };
654
+ }
655
+ async function sanitizeToolResultToContentWithBlobs(result, blobStore, namingOptions) {
179
656
  try {
180
657
  if (typeof result === "string") {
181
658
  const dataUri = parseDataUri(result);
182
659
  if (dataUri) {
183
660
  const mediaType = dataUri.mediaType;
184
661
  logger.debug(
185
- `sanitizeToolResultToContent: detected data URI (${mediaType}), converting to media part`
662
+ `sanitizeToolResultToContentWithBlobs: detected data URI (${mediaType})`
186
663
  );
664
+ const approxSize = Math.floor(dataUri.base64.length * 3 / 4);
665
+ const shouldStoreAsBlob = blobStore && approxSize > 1024;
666
+ if (shouldStoreAsBlob) {
667
+ try {
668
+ logger.debug(
669
+ `Storing data URI as blob (${approxSize} bytes, ${mediaType})`
670
+ );
671
+ const blobRef = await blobStore.store(result, {
672
+ mimeType: mediaType,
673
+ source: "tool",
674
+ originalName: buildToolBlobName("output", mediaType, namingOptions)
675
+ });
676
+ logger.debug(`Stored blob: ${blobRef.uri} (${approxSize} bytes)`);
677
+ if (mediaType.startsWith("image/")) {
678
+ return [createBlobImagePart(blobRef.uri, mediaType)];
679
+ }
680
+ return [createBlobFilePart(blobRef.uri, mediaType, void 0)];
681
+ } catch (error) {
682
+ logger.warn(
683
+ `Failed to store blob, falling back to inline: ${String(error)}`
684
+ );
685
+ }
686
+ }
187
687
  if (mediaType.startsWith("image/")) {
188
688
  return [{ type: "image", image: dataUri.base64, mimeType: mediaType }];
189
689
  }
190
- return [{ type: "file", data: dataUri.base64, mimeType: mediaType }];
690
+ return [
691
+ {
692
+ type: "file",
693
+ data: dataUri.base64,
694
+ mimeType: mediaType
695
+ }
696
+ ];
191
697
  }
192
698
  if (isLikelyBase64String(result)) {
193
- logger.debug(
194
- "sanitizeToolResultToContent: detected base64-like string, converting to file part"
195
- );
699
+ logger.debug("sanitizeToolResultToContentWithBlobs: detected base64-like string");
700
+ const approxSize = Math.floor(result.length * 3 / 4);
701
+ const shouldStoreAsBlob = blobStore && approxSize > 1024;
702
+ if (shouldStoreAsBlob) {
703
+ try {
704
+ const blobRef = await blobStore.store(result, {
705
+ mimeType: "application/octet-stream",
706
+ source: "tool",
707
+ originalName: buildToolBlobName("output", void 0, namingOptions)
708
+ });
709
+ logger.debug(
710
+ `Stored tool result as blob: ${blobRef.uri} (${approxSize} bytes)`
711
+ );
712
+ return [
713
+ createBlobFilePart(
714
+ blobRef.uri,
715
+ "application/octet-stream",
716
+ "tool-output.bin"
717
+ )
718
+ ];
719
+ } catch (error) {
720
+ logger.warn(
721
+ `Failed to store blob, falling back to inline: ${String(error)}`
722
+ );
723
+ }
724
+ }
196
725
  return [
197
726
  {
198
727
  type: "file",
@@ -206,7 +735,7 @@ function sanitizeToolResultToContent(result) {
206
735
  const head = result.slice(0, 4e3);
207
736
  const tail = result.slice(-1e3);
208
737
  logger.debug(
209
- `sanitizeToolResultToContent: truncating long text tool output (len=${result.length})`
738
+ `sanitizeToolResultToContentWithBlobs: truncating long text tool output (len=${result.length})`
210
739
  );
211
740
  return `${head}
212
741
  ... [${result.length - 5e3} chars omitted] ...
@@ -218,84 +747,219 @@ ${tail}`;
218
747
  const parts = [];
219
748
  for (const item of result) {
220
749
  if (item == null) continue;
221
- if (typeof item === "string") {
222
- const dataUri = parseDataUri(item);
223
- if (dataUri) {
224
- const mt = dataUri.mediaType;
225
- if (mt.startsWith("image/"))
226
- parts.push({ type: "image", image: dataUri.base64, mimeType: mt });
227
- else parts.push({ type: "file", data: dataUri.base64, mimeType: mt });
228
- continue;
229
- }
230
- if (isLikelyBase64String(item)) {
231
- parts.push({
232
- type: "file",
233
- data: item,
234
- mimeType: "application/octet-stream",
235
- filename: "tool-output.bin"
236
- });
237
- continue;
238
- }
239
- parts.push({ type: "text", text: item });
240
- continue;
241
- }
242
- if (typeof item === "object") {
243
- const obj = item;
244
- if (obj.type === "text" && typeof obj.text === "string") {
245
- parts.push({ type: "text", text: obj.text });
246
- continue;
247
- }
248
- if (obj.type === "image" && obj.image !== void 0 || "image" in obj) {
249
- parts.push({
250
- type: "image",
251
- image: getImageData({ image: obj.image }),
252
- mimeType: obj.mimeType || "image/jpeg"
253
- });
254
- continue;
255
- }
256
- if (obj.type === "file" && obj.data !== void 0) {
257
- parts.push({
258
- type: "file",
259
- data: getFileData({ data: obj.data }),
260
- mimeType: obj.mimeType || "application/octet-stream",
261
- filename: obj.filename
262
- });
263
- continue;
264
- }
265
- if ("data" in obj && (typeof obj.mimeType === "string" || obj.filename)) {
266
- parts.push({
267
- type: "file",
268
- data: getFileData({ data: obj.data }),
269
- mimeType: obj.mimeType || "application/octet-stream",
270
- filename: obj.filename
271
- });
272
- continue;
273
- }
274
- const cleaned = sanitizeDeepObject(obj);
275
- parts.push({ type: "text", text: safeStringify(cleaned) });
276
- continue;
750
+ const processedItem = await sanitizeToolResultToContentWithBlobs(
751
+ item,
752
+ blobStore,
753
+ namingOptions
754
+ );
755
+ if (typeof processedItem === "string") {
756
+ parts.push({ type: "text", text: processedItem });
757
+ } else if (Array.isArray(processedItem)) {
758
+ parts.push(...processedItem);
277
759
  }
278
- parts.push({ type: "text", text: String(item) });
279
760
  }
280
761
  return parts;
281
762
  }
282
763
  if (result && typeof result === "object") {
283
764
  const anyObj = result;
765
+ if ("content" in anyObj && Array.isArray(anyObj.content)) {
766
+ logger.debug(
767
+ `Processing MCP tool result with ${anyObj.content.length} content items`
768
+ );
769
+ const processedContent = [];
770
+ for (const item of anyObj.content) {
771
+ if (item && typeof item === "object") {
772
+ if (item.type === "resource" && item.resource) {
773
+ const resource = item.resource;
774
+ if (resource.text && resource.mimeType) {
775
+ const fileData = resource.text;
776
+ const mimeType = resource.mimeType;
777
+ const approxSize = typeof fileData === "string" ? Math.floor(fileData.length * 3 / 4) : 0;
778
+ const shouldStoreAsBlob = blobStore && approxSize > 1024;
779
+ if (shouldStoreAsBlob) {
780
+ try {
781
+ logger.debug(
782
+ `Storing MCP resource as blob (${approxSize} bytes, ${mimeType})`
783
+ );
784
+ const blobRef = await blobStore.store(fileData, {
785
+ mimeType,
786
+ source: "tool",
787
+ originalName: buildToolBlobName(
788
+ mimeType.startsWith("image/") ? "image" : "file",
789
+ mimeType,
790
+ namingOptions,
791
+ resource.title
792
+ )
793
+ });
794
+ logger.debug(
795
+ `Stored MCP resource blob: ${blobRef.uri} (${approxSize} bytes)`
796
+ );
797
+ if (mimeType.startsWith("image/")) {
798
+ processedContent.push(
799
+ createBlobImagePart(blobRef.uri, mimeType)
800
+ );
801
+ } else {
802
+ processedContent.push(
803
+ createBlobFilePart(
804
+ blobRef.uri,
805
+ mimeType,
806
+ resource.title
807
+ )
808
+ );
809
+ }
810
+ continue;
811
+ } catch (error) {
812
+ logger.warn(
813
+ `Failed to store MCP resource blob, falling back to inline: ${String(error)}`
814
+ );
815
+ }
816
+ }
817
+ if (mimeType.startsWith("image/")) {
818
+ processedContent.push({
819
+ type: "image",
820
+ image: fileData,
821
+ mimeType
822
+ });
823
+ } else if (mimeType.startsWith("video/")) {
824
+ processedContent.push({
825
+ type: "file",
826
+ data: fileData,
827
+ mimeType,
828
+ filename: resource.title
829
+ });
830
+ } else {
831
+ processedContent.push({
832
+ type: "file",
833
+ data: fileData,
834
+ mimeType,
835
+ filename: resource.title
836
+ });
837
+ }
838
+ continue;
839
+ }
840
+ }
841
+ if ("data" in item && item.mimeType) {
842
+ const fileData = getFileData({ data: item.data });
843
+ const mimeType = item.mimeType;
844
+ const approxSize = typeof fileData === "string" ? Math.floor(fileData.length * 3 / 4) : 0;
845
+ const shouldStoreAsBlob = blobStore && approxSize > 1024;
846
+ if (shouldStoreAsBlob) {
847
+ try {
848
+ logger.debug(
849
+ `Storing MCP content item as blob (${approxSize} bytes, ${mimeType})`
850
+ );
851
+ const blobRef = await blobStore.store(fileData, {
852
+ mimeType,
853
+ source: "tool",
854
+ originalName: buildToolBlobName(
855
+ item.type === "image" ? "image" : "file",
856
+ mimeType,
857
+ namingOptions,
858
+ item.filename
859
+ )
860
+ });
861
+ logger.debug(
862
+ `Stored MCP blob: ${blobRef.uri} (${approxSize} bytes)`
863
+ );
864
+ if (item.type === "image") {
865
+ processedContent.push(
866
+ createBlobImagePart(blobRef.uri, mimeType)
867
+ );
868
+ } else {
869
+ processedContent.push(
870
+ createBlobFilePart(blobRef.uri, mimeType, item.filename)
871
+ );
872
+ }
873
+ continue;
874
+ } catch (error) {
875
+ logger.warn(
876
+ `Failed to store MCP blob, falling back to inline: ${String(error)}`
877
+ );
878
+ }
879
+ }
880
+ if (item.type === "image") {
881
+ processedContent.push({
882
+ type: "image",
883
+ image: fileData,
884
+ mimeType
885
+ });
886
+ } else {
887
+ processedContent.push({
888
+ type: "file",
889
+ data: fileData,
890
+ mimeType,
891
+ filename: item.filename
892
+ });
893
+ }
894
+ continue;
895
+ }
896
+ }
897
+ processedContent.push(item);
898
+ }
899
+ return processedContent;
900
+ }
284
901
  if ("image" in anyObj) {
902
+ const imageData = getImageData({ image: anyObj.image });
903
+ const mimeType = anyObj.mimeType || "image/jpeg";
904
+ const approxSize = typeof imageData === "string" ? Math.floor(imageData.length * 3 / 4) : 0;
905
+ const shouldStoreAsBlob = blobStore && approxSize > 1024;
906
+ if (shouldStoreAsBlob) {
907
+ try {
908
+ const blobRef = await blobStore.store(imageData, {
909
+ mimeType,
910
+ source: "tool",
911
+ originalName: buildToolBlobName("image", mimeType, namingOptions)
912
+ });
913
+ logger.debug(
914
+ `Stored tool image as blob: ${blobRef.uri} (${approxSize} bytes)`
915
+ );
916
+ return [createBlobImagePart(blobRef.uri, mimeType)];
917
+ } catch (error) {
918
+ logger.warn(
919
+ `Failed to store image blob, falling back to inline: ${String(error)}`
920
+ );
921
+ }
922
+ }
285
923
  return [
286
924
  {
287
925
  type: "image",
288
- image: getImageData({ image: anyObj.image }),
289
- mimeType: anyObj.mimeType || "image/jpeg"
926
+ image: imageData,
927
+ mimeType
290
928
  }
291
929
  ];
292
930
  }
293
931
  if ("data" in anyObj && anyObj.mimeType) {
932
+ const fileData = getFileData({ data: anyObj.data });
933
+ const mimeType = anyObj.mimeType;
934
+ const approxSize = typeof fileData === "string" ? Math.floor(fileData.length * 3 / 4) : 0;
935
+ const shouldStoreAsBlob = blobStore && approxSize > 1024;
936
+ if (shouldStoreAsBlob) {
937
+ try {
938
+ const blobRef = await blobStore.store(fileData, {
939
+ mimeType,
940
+ source: "tool",
941
+ originalName: buildToolBlobName(
942
+ "file",
943
+ mimeType,
944
+ namingOptions,
945
+ anyObj.filename
946
+ )
947
+ });
948
+ logger.debug(
949
+ `Stored tool file as blob: ${blobRef.uri} (${approxSize} bytes)`
950
+ );
951
+ return [createBlobFilePart(blobRef.uri, mimeType, anyObj.filename)];
952
+ } catch (error) {
953
+ logger.warn(
954
+ `Failed to store file blob, falling back to inline: ${String(error)}`
955
+ );
956
+ }
957
+ }
294
958
  return [
295
959
  {
296
960
  type: "file",
297
- data: getFileData({ data: anyObj.data }),
298
- mimeType: anyObj.mimeType,
961
+ data: fileData,
962
+ mimeType,
299
963
  filename: anyObj.filename
300
964
  }
301
965
  ];
@@ -305,7 +969,9 @@ ${tail}`;
305
969
  }
306
970
  return safeStringify(result ?? "");
307
971
  } catch (err) {
308
- logger.warn(`sanitizeToolResultToContent failed, falling back to string: ${String(err)}`);
972
+ logger.warn(
973
+ `sanitizeToolResultToContentWithBlobs failed, falling back to string: ${String(err)}`
974
+ );
309
975
  try {
310
976
  return safeStringify(result ?? "");
311
977
  } catch {
@@ -313,6 +979,64 @@ ${tail}`;
313
979
  }
314
980
  }
315
981
  }
982
+ function inferResourceKind(mimeType) {
983
+ return getResourceKind(mimeType);
984
+ }
985
+ function createBlobImagePart(uri, mimeType) {
986
+ return {
987
+ type: "image",
988
+ image: `@${uri}`,
989
+ ...mimeType ? { mimeType } : {}
990
+ };
991
+ }
992
+ function createBlobFilePart(uri, mimeType, filename) {
993
+ return {
994
+ type: "file",
995
+ data: `@${uri}`,
996
+ mimeType,
997
+ ...filename ? { filename } : {}
998
+ };
999
+ }
1000
+ function extractResourceDescriptors(parts) {
1001
+ const resources = [];
1002
+ for (const part of parts) {
1003
+ if (part.type === "image" && typeof part.image === "string" && part.image.startsWith("@blob:")) {
1004
+ resources.push({
1005
+ uri: part.image.substring(1),
1006
+ kind: "image",
1007
+ mimeType: part.mimeType ?? "image/jpeg"
1008
+ });
1009
+ }
1010
+ if (part.type === "file" && typeof part.data === "string" && part.data.startsWith("@blob:")) {
1011
+ resources.push({
1012
+ uri: part.data.substring(1),
1013
+ kind: inferResourceKind(part.mimeType),
1014
+ mimeType: part.mimeType,
1015
+ ...part.filename ? { filename: part.filename } : {}
1016
+ });
1017
+ }
1018
+ }
1019
+ return resources.length > 0 ? resources : void 0;
1020
+ }
1021
+ async function sanitizeToolResult(result, options) {
1022
+ const normalized = await normalizeToolResult(result);
1023
+ const persisted = await persistToolMedia(normalized, {
1024
+ ...options.blobStore ? { blobStore: options.blobStore } : {},
1025
+ toolName: options.toolName,
1026
+ toolCallId: options.toolCallId
1027
+ });
1028
+ const fallbackContent = [{ type: "text", text: "" }];
1029
+ const content = persisted.parts.length > 0 ? persisted.parts : fallbackContent;
1030
+ return {
1031
+ content,
1032
+ ...persisted.resources ? { resources: persisted.resources } : {},
1033
+ meta: {
1034
+ toolName: options.toolName,
1035
+ toolCallId: options.toolCallId,
1036
+ ...typeof options.success === "boolean" ? { success: options.success } : {}
1037
+ }
1038
+ };
1039
+ }
316
1040
  function summarizeToolContentForText(content) {
317
1041
  if (!Array.isArray(content)) return String(content || "");
318
1042
  const parts = [];
@@ -363,12 +1087,20 @@ function toTextForToolMessage(content) {
363
1087
  }
364
1088
  export {
365
1089
  countMessagesTokens,
1090
+ expandBlobReferences,
366
1091
  filterMessagesByLLMCapabilities,
367
1092
  getFileData,
1093
+ getFileDataWithBlobSupport,
1094
+ getFileMediaKind,
368
1095
  getImageData,
1096
+ getImageDataWithBlobSupport,
1097
+ getResourceKind,
369
1098
  isLikelyBase64String,
1099
+ normalizeToolResult,
370
1100
  parseDataUri,
371
- sanitizeToolResultToContent,
1101
+ persistToolMedia,
1102
+ sanitizeToolResult,
1103
+ sanitizeToolResultToContentWithBlobs,
372
1104
  summarizeToolContentForText,
373
1105
  toTextForToolMessage
374
1106
  };