@dexto/core 1.1.10 → 1.2.0

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