@dexto/core 1.3.0 → 1.5.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 (781) hide show
  1. package/README.md +53 -9
  2. package/dist/agent/DextoAgent.cjs +570 -210
  3. package/dist/agent/DextoAgent.d.ts +175 -35
  4. package/dist/agent/DextoAgent.d.ts.map +1 -1
  5. package/dist/agent/DextoAgent.js +568 -208
  6. package/dist/agent/agentCard.js +1 -1
  7. package/dist/agent/error-codes.cjs +1 -0
  8. package/dist/agent/error-codes.d.ts +2 -1
  9. package/dist/agent/error-codes.d.ts.map +1 -1
  10. package/dist/agent/error-codes.js +2 -1
  11. package/dist/agent/errors.cjs +13 -0
  12. package/dist/agent/errors.d.ts +4 -0
  13. package/dist/agent/errors.d.ts.map +1 -1
  14. package/dist/agent/errors.js +14 -1
  15. package/dist/agent/index.cjs +4 -1
  16. package/dist/agent/index.d.ts +2 -2
  17. package/dist/agent/index.d.ts.map +1 -1
  18. package/dist/agent/index.js +6 -2
  19. package/dist/agent/schemas.cjs +90 -68
  20. package/dist/agent/schemas.d.ts +5998 -146
  21. package/dist/agent/schemas.d.ts.map +1 -1
  22. package/dist/agent/schemas.js +90 -65
  23. package/dist/agent/state-manager.cjs +5 -5
  24. package/dist/agent/state-manager.d.ts +4 -4
  25. package/dist/agent/state-manager.js +6 -6
  26. package/dist/agent/types.d.ts +24 -10
  27. package/dist/agent/types.d.ts.map +1 -1
  28. package/dist/approval/error-codes.js +1 -1
  29. package/dist/approval/errors.js +1 -1
  30. package/dist/approval/factory.js +1 -1
  31. package/dist/approval/index.js +1 -1
  32. package/dist/approval/manager.cjs +234 -4
  33. package/dist/approval/manager.d.ts +131 -4
  34. package/dist/approval/manager.d.ts.map +1 -1
  35. package/dist/approval/manager.js +225 -5
  36. package/dist/approval/schemas.cjs +57 -7
  37. package/dist/approval/schemas.d.ts +344 -33
  38. package/dist/approval/schemas.d.ts.map +1 -1
  39. package/dist/approval/schemas.js +54 -8
  40. package/dist/approval/types.cjs +1 -0
  41. package/dist/approval/types.d.ts +32 -1
  42. package/dist/approval/types.d.ts.map +1 -1
  43. package/dist/approval/types.js +2 -1
  44. package/dist/{chunk-C6A6W6XS.js → chunk-PTJYTZNU.js} +44 -1
  45. package/dist/context/compaction/factory.cjs +57 -0
  46. package/dist/context/compaction/factory.d.ts +17 -0
  47. package/dist/context/compaction/factory.d.ts.map +1 -0
  48. package/dist/context/compaction/factory.js +34 -0
  49. package/dist/context/compaction/index.cjs +49 -0
  50. package/dist/context/compaction/index.d.ts +11 -0
  51. package/dist/context/compaction/index.d.ts.map +1 -0
  52. package/dist/context/compaction/index.js +19 -0
  53. package/dist/context/compaction/overflow.cjs +43 -0
  54. package/dist/context/compaction/overflow.d.ts +33 -0
  55. package/dist/context/compaction/overflow.d.ts.map +1 -0
  56. package/dist/context/compaction/overflow.js +19 -0
  57. package/dist/context/compaction/provider.cjs +16 -0
  58. package/dist/context/compaction/provider.d.ts +48 -0
  59. package/dist/context/compaction/provider.d.ts.map +1 -0
  60. package/dist/context/compaction/providers/noop-provider.cjs +48 -0
  61. package/dist/context/compaction/providers/noop-provider.d.ts +24 -0
  62. package/dist/context/compaction/providers/noop-provider.d.ts.map +1 -0
  63. package/dist/context/compaction/providers/noop-provider.js +24 -0
  64. package/dist/context/compaction/providers/reactive-overflow-provider.cjs +61 -0
  65. package/dist/context/compaction/providers/reactive-overflow-provider.d.ts +36 -0
  66. package/dist/context/compaction/providers/reactive-overflow-provider.d.ts.map +1 -0
  67. package/dist/context/compaction/providers/reactive-overflow-provider.js +37 -0
  68. package/dist/{llm/tokenizer/factory.cjs → context/compaction/registry.cjs} +15 -20
  69. package/dist/context/compaction/registry.d.ts +19 -0
  70. package/dist/context/compaction/registry.d.ts.map +1 -0
  71. package/dist/context/compaction/registry.js +16 -0
  72. package/dist/context/compaction/schemas.cjs +38 -0
  73. package/dist/context/compaction/schemas.d.ts +24 -0
  74. package/dist/context/compaction/schemas.d.ts.map +1 -0
  75. package/dist/context/compaction/schemas.js +14 -0
  76. package/dist/{llm/tokenizer/types.cjs → context/compaction/strategies/noop.cjs} +12 -9
  77. package/dist/context/compaction/strategies/noop.d.ts +18 -0
  78. package/dist/context/compaction/strategies/noop.d.ts.map +1 -0
  79. package/dist/context/compaction/strategies/noop.js +13 -0
  80. package/dist/context/compaction/strategies/reactive-overflow.cjs +201 -0
  81. package/dist/context/compaction/strategies/reactive-overflow.d.ts +81 -0
  82. package/dist/context/compaction/strategies/reactive-overflow.d.ts.map +1 -0
  83. package/dist/context/compaction/strategies/reactive-overflow.js +178 -0
  84. package/dist/context/compaction/types.d.ts +20 -0
  85. package/dist/context/compaction/types.d.ts.map +1 -0
  86. package/dist/context/error-codes.cjs +7 -0
  87. package/dist/context/error-codes.d.ts +8 -1
  88. package/dist/context/error-codes.d.ts.map +1 -1
  89. package/dist/context/error-codes.js +8 -1
  90. package/dist/context/errors.cjs +68 -0
  91. package/dist/context/errors.d.ts +21 -0
  92. package/dist/context/errors.d.ts.map +1 -1
  93. package/dist/context/errors.js +69 -1
  94. package/dist/context/index.cjs +3 -1
  95. package/dist/context/index.d.ts +1 -0
  96. package/dist/context/index.d.ts.map +1 -1
  97. package/dist/context/index.js +2 -1
  98. package/dist/context/manager.cjs +280 -323
  99. package/dist/context/manager.d.ts +65 -111
  100. package/dist/context/manager.d.ts.map +1 -1
  101. package/dist/context/manager.js +280 -328
  102. package/dist/context/media-helpers.js +1 -1
  103. package/dist/context/types.cjs +49 -0
  104. package/dist/context/types.d.ts +187 -72
  105. package/dist/context/types.d.ts.map +1 -1
  106. package/dist/context/types.js +35 -0
  107. package/dist/context/utils.cjs +293 -290
  108. package/dist/context/utils.d.ts +32 -18
  109. package/dist/context/utils.d.ts.map +1 -1
  110. package/dist/context/utils.js +293 -290
  111. package/dist/errors/DextoBaseError.js +1 -1
  112. package/dist/errors/DextoRuntimeError.js +1 -1
  113. package/dist/errors/DextoValidationError.js +1 -1
  114. package/dist/errors/index.js +1 -1
  115. package/dist/errors/result-bridge.cjs +2 -3
  116. package/dist/errors/result-bridge.d.ts.map +1 -1
  117. package/dist/errors/result-bridge.js +3 -4
  118. package/dist/errors/types.js +1 -1
  119. package/dist/events/index.cjs +18 -1
  120. package/dist/events/index.d.ts +149 -12
  121. package/dist/events/index.d.ts.map +1 -1
  122. package/dist/events/index.js +19 -2
  123. package/dist/filesystem/error-codes.js +1 -1
  124. package/dist/filesystem/errors.js +1 -1
  125. package/dist/filesystem/filesystem-service.cjs +39 -0
  126. package/dist/filesystem/filesystem-service.d.ts +32 -0
  127. package/dist/filesystem/filesystem-service.d.ts.map +1 -1
  128. package/dist/filesystem/filesystem-service.js +40 -1
  129. package/dist/filesystem/index.d.ts +1 -1
  130. package/dist/filesystem/index.d.ts.map +1 -1
  131. package/dist/filesystem/index.js +1 -1
  132. package/dist/filesystem/path-validator.cjs +69 -1
  133. package/dist/filesystem/path-validator.d.ts +43 -2
  134. package/dist/filesystem/path-validator.d.ts.map +1 -1
  135. package/dist/filesystem/path-validator.js +70 -2
  136. package/dist/image/define-image.cjs +146 -0
  137. package/dist/image/define-image.d.ts +71 -0
  138. package/dist/image/define-image.d.ts.map +1 -0
  139. package/dist/image/define-image.js +121 -0
  140. package/dist/{llm/tokenizer/default.cjs → image/index.cjs} +10 -19
  141. package/dist/image/index.d.ts +53 -0
  142. package/dist/image/index.d.ts.map +1 -0
  143. package/dist/image/index.js +7 -0
  144. package/dist/image/types.d.ts +231 -0
  145. package/dist/image/types.d.ts.map +1 -0
  146. package/dist/image/types.js +0 -0
  147. package/dist/index.browser.cjs +23 -8
  148. package/dist/index.browser.d.ts +4 -3
  149. package/dist/index.browser.d.ts.map +1 -1
  150. package/dist/index.browser.js +20 -3
  151. package/dist/index.cjs +5 -1
  152. package/dist/index.d.ts +2 -0
  153. package/dist/index.d.ts.map +1 -1
  154. package/dist/index.js +3 -1
  155. package/dist/llm/error-codes.cjs +1 -1
  156. package/dist/llm/error-codes.d.ts +1 -1
  157. package/dist/llm/error-codes.d.ts.map +1 -1
  158. package/dist/llm/error-codes.js +2 -2
  159. package/dist/llm/errors.cjs +34 -10
  160. package/dist/llm/errors.d.ts +23 -11
  161. package/dist/llm/errors.d.ts.map +1 -1
  162. package/dist/llm/errors.js +36 -12
  163. package/dist/llm/executor/stream-processor.cjs +375 -0
  164. package/dist/llm/executor/stream-processor.d.ts +55 -0
  165. package/dist/llm/executor/stream-processor.d.ts.map +1 -0
  166. package/dist/llm/executor/stream-processor.js +352 -0
  167. package/dist/llm/executor/tool-output-truncator.cjs +75 -0
  168. package/dist/llm/executor/tool-output-truncator.d.ts +27 -0
  169. package/dist/llm/executor/tool-output-truncator.d.ts.map +1 -0
  170. package/dist/llm/executor/tool-output-truncator.js +48 -0
  171. package/dist/llm/executor/turn-executor.cjs +780 -0
  172. package/dist/llm/executor/turn-executor.d.ts +167 -0
  173. package/dist/llm/executor/turn-executor.d.ts.map +1 -0
  174. package/dist/llm/executor/turn-executor.js +711 -0
  175. package/dist/llm/executor/types.cjs +16 -0
  176. package/dist/llm/executor/types.d.ts +27 -0
  177. package/dist/llm/executor/types.d.ts.map +1 -0
  178. package/dist/llm/executor/types.js +0 -0
  179. package/dist/llm/formatters/vercel.cjs +26 -188
  180. package/dist/llm/formatters/vercel.d.ts +2 -14
  181. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  182. package/dist/llm/formatters/vercel.js +25 -187
  183. package/dist/llm/index.cjs +18 -1
  184. package/dist/llm/index.d.ts +2 -0
  185. package/dist/llm/index.d.ts.map +1 -1
  186. package/dist/llm/index.js +14 -0
  187. package/dist/llm/providers/local/ai-sdk-adapter.cjs +308 -0
  188. package/dist/llm/providers/local/ai-sdk-adapter.d.ts +29 -0
  189. package/dist/llm/providers/local/ai-sdk-adapter.d.ts.map +1 -0
  190. package/dist/llm/providers/local/ai-sdk-adapter.js +278 -0
  191. package/dist/llm/providers/local/downloader.cjs +291 -0
  192. package/dist/llm/providers/local/downloader.d.ts +82 -0
  193. package/dist/llm/providers/local/downloader.d.ts.map +1 -0
  194. package/dist/llm/providers/local/downloader.js +251 -0
  195. package/dist/llm/providers/local/error-codes.cjs +57 -0
  196. package/dist/llm/providers/local/error-codes.d.ts +66 -0
  197. package/dist/llm/providers/local/error-codes.d.ts.map +1 -0
  198. package/dist/llm/providers/local/error-codes.js +34 -0
  199. package/dist/llm/providers/local/errors.cjs +240 -0
  200. package/dist/llm/providers/local/errors.d.ts +31 -0
  201. package/dist/llm/providers/local/errors.d.ts.map +1 -0
  202. package/dist/llm/providers/local/errors.js +217 -0
  203. package/dist/llm/providers/local/gpu-detector.cjs +214 -0
  204. package/dist/llm/providers/local/gpu-detector.d.ts +28 -0
  205. package/dist/llm/providers/local/gpu-detector.d.ts.map +1 -0
  206. package/dist/llm/providers/local/gpu-detector.js +178 -0
  207. package/dist/llm/providers/local/index.cjs +147 -0
  208. package/dist/llm/providers/local/index.d.ts +21 -0
  209. package/dist/llm/providers/local/index.d.ts.map +1 -0
  210. package/dist/llm/providers/local/index.js +126 -0
  211. package/dist/llm/providers/local/node-llama-provider.cjs +216 -0
  212. package/dist/llm/providers/local/node-llama-provider.d.ts +90 -0
  213. package/dist/llm/providers/local/node-llama-provider.d.ts.map +1 -0
  214. package/dist/llm/providers/local/node-llama-provider.js +176 -0
  215. package/dist/llm/providers/local/ollama-provider.cjs +230 -0
  216. package/dist/llm/providers/local/ollama-provider.d.ts +70 -0
  217. package/dist/llm/providers/local/ollama-provider.d.ts.map +1 -0
  218. package/dist/llm/providers/local/ollama-provider.js +198 -0
  219. package/dist/llm/providers/local/registry.cjs +343 -0
  220. package/dist/llm/providers/local/registry.d.ts +51 -0
  221. package/dist/llm/providers/local/registry.d.ts.map +1 -0
  222. package/dist/llm/providers/local/registry.js +312 -0
  223. package/dist/llm/providers/local/schemas.cjs +169 -0
  224. package/dist/llm/providers/local/schemas.d.ts +395 -0
  225. package/dist/llm/providers/local/schemas.d.ts.map +1 -0
  226. package/dist/llm/providers/local/schemas.js +133 -0
  227. package/dist/llm/providers/local/types.cjs +16 -0
  228. package/dist/llm/providers/local/types.d.ts +219 -0
  229. package/dist/llm/providers/local/types.d.ts.map +1 -0
  230. package/dist/llm/providers/local/types.js +0 -0
  231. package/dist/llm/providers/openrouter-model-registry.cjs +350 -0
  232. package/dist/llm/providers/openrouter-model-registry.d.ts +120 -0
  233. package/dist/llm/providers/openrouter-model-registry.d.ts.map +1 -0
  234. package/dist/llm/providers/openrouter-model-registry.js +309 -0
  235. package/dist/llm/registry.cjs +569 -52
  236. package/dist/llm/registry.d.ts +79 -39
  237. package/dist/llm/registry.d.ts.map +1 -1
  238. package/dist/llm/registry.js +564 -49
  239. package/dist/llm/resolver.cjs +62 -34
  240. package/dist/llm/resolver.d.ts +3 -3
  241. package/dist/llm/resolver.d.ts.map +1 -1
  242. package/dist/llm/resolver.js +69 -38
  243. package/dist/llm/schemas.cjs +92 -97
  244. package/dist/llm/schemas.d.ts +162 -39
  245. package/dist/llm/schemas.d.ts.map +1 -1
  246. package/dist/llm/schemas.js +93 -100
  247. package/dist/llm/services/factory.cjs +88 -103
  248. package/dist/llm/services/factory.d.ts +17 -4
  249. package/dist/llm/services/factory.d.ts.map +1 -1
  250. package/dist/llm/services/factory.js +87 -93
  251. package/dist/llm/services/test-utils.integration.cjs +28 -10
  252. package/dist/llm/services/test-utils.integration.d.ts +7 -1
  253. package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
  254. package/dist/llm/services/test-utils.integration.js +33 -12
  255. package/dist/llm/services/types.d.ts +1 -28
  256. package/dist/llm/services/types.d.ts.map +1 -1
  257. package/dist/llm/services/vercel.cjs +58 -469
  258. package/dist/llm/services/vercel.d.ts +39 -21
  259. package/dist/llm/services/vercel.d.ts.map +1 -1
  260. package/dist/llm/services/vercel.js +60 -476
  261. package/dist/llm/types.cjs +11 -4
  262. package/dist/llm/types.d.ts +9 -9
  263. package/dist/llm/types.d.ts.map +1 -1
  264. package/dist/llm/types.js +12 -4
  265. package/dist/llm/validation.js +1 -1
  266. package/dist/logger/browser.js +1 -1
  267. package/dist/logger/factory.js +1 -1
  268. package/dist/logger/index.js +1 -1
  269. package/dist/logger/logger.js +1 -1
  270. package/dist/logger/v2/dexto-logger.cjs +34 -6
  271. package/dist/logger/v2/dexto-logger.d.ts +20 -2
  272. package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
  273. package/dist/logger/v2/dexto-logger.js +35 -7
  274. package/dist/logger/v2/error-codes.js +1 -1
  275. package/dist/logger/v2/errors.js +1 -1
  276. package/dist/logger/v2/schemas.js +1 -1
  277. package/dist/logger/v2/test-utils.cjs +70 -0
  278. package/dist/logger/v2/test-utils.d.ts +17 -0
  279. package/dist/logger/v2/test-utils.d.ts.map +1 -0
  280. package/dist/logger/v2/test-utils.js +46 -0
  281. package/dist/logger/v2/transport-factory.js +1 -1
  282. package/dist/logger/v2/transports/console-transport.js +1 -1
  283. package/dist/logger/v2/transports/file-transport.cjs +6 -0
  284. package/dist/logger/v2/transports/file-transport.d.ts +4 -0
  285. package/dist/logger/v2/transports/file-transport.d.ts.map +1 -1
  286. package/dist/logger/v2/transports/file-transport.js +7 -1
  287. package/dist/logger/v2/types.cjs +1 -0
  288. package/dist/logger/v2/types.d.ts +18 -2
  289. package/dist/logger/v2/types.d.ts.map +1 -1
  290. package/dist/logger/v2/types.js +2 -1
  291. package/dist/mcp/error-codes.cjs +1 -0
  292. package/dist/mcp/error-codes.d.ts +1 -0
  293. package/dist/mcp/error-codes.d.ts.map +1 -1
  294. package/dist/mcp/error-codes.js +2 -1
  295. package/dist/mcp/errors.cjs +13 -0
  296. package/dist/mcp/errors.d.ts +7 -0
  297. package/dist/mcp/errors.d.ts.map +1 -1
  298. package/dist/mcp/errors.js +14 -1
  299. package/dist/mcp/manager.cjs +12 -0
  300. package/dist/mcp/manager.d.ts +17 -0
  301. package/dist/mcp/manager.d.ts.map +1 -1
  302. package/dist/mcp/manager.js +13 -1
  303. package/dist/mcp/mcp-client.cjs +0 -3
  304. package/dist/mcp/mcp-client.d.ts.map +1 -1
  305. package/dist/mcp/mcp-client.js +1 -4
  306. package/dist/mcp/resolver.js +1 -1
  307. package/dist/mcp/schemas.cjs +6 -0
  308. package/dist/mcp/schemas.d.ts +52 -0
  309. package/dist/mcp/schemas.d.ts.map +1 -1
  310. package/dist/mcp/schemas.js +6 -1
  311. package/dist/memory/error-codes.js +1 -1
  312. package/dist/memory/errors.js +1 -1
  313. package/dist/memory/index.js +1 -1
  314. package/dist/memory/manager.js +1 -1
  315. package/dist/memory/schemas.d.ts +3 -3
  316. package/dist/memory/schemas.js +1 -1
  317. package/dist/plugins/builtins/content-policy.js +1 -1
  318. package/dist/plugins/builtins/response-sanitizer.js +1 -1
  319. package/dist/plugins/error-codes.cjs +3 -0
  320. package/dist/plugins/error-codes.d.ts +7 -1
  321. package/dist/plugins/error-codes.d.ts.map +1 -1
  322. package/dist/plugins/error-codes.js +4 -1
  323. package/dist/plugins/index.cjs +7 -0
  324. package/dist/plugins/index.d.ts +4 -2
  325. package/dist/plugins/index.d.ts.map +1 -1
  326. package/dist/plugins/index.js +7 -2
  327. package/dist/plugins/loader.js +1 -1
  328. package/dist/plugins/manager.cjs +92 -7
  329. package/dist/plugins/manager.d.ts +10 -3
  330. package/dist/plugins/manager.d.ts.map +1 -1
  331. package/dist/plugins/manager.js +93 -8
  332. package/dist/plugins/registrations/builtins.js +1 -1
  333. package/dist/plugins/registry.cjs +63 -0
  334. package/dist/plugins/registry.d.ts +101 -0
  335. package/dist/plugins/registry.d.ts.map +1 -0
  336. package/dist/plugins/registry.js +39 -0
  337. package/dist/plugins/schemas.cjs +17 -5
  338. package/dist/plugins/schemas.d.ts +65 -8
  339. package/dist/plugins/schemas.d.ts.map +1 -1
  340. package/dist/plugins/schemas.js +16 -5
  341. package/dist/plugins/types.d.ts +0 -1
  342. package/dist/plugins/types.d.ts.map +1 -1
  343. package/dist/process/command-validator.js +1 -1
  344. package/dist/process/error-codes.js +1 -1
  345. package/dist/process/errors.js +1 -1
  346. package/dist/process/index.js +1 -1
  347. package/dist/process/process-service.cjs +78 -26
  348. package/dist/process/process-service.d.ts +6 -1
  349. package/dist/process/process-service.d.ts.map +1 -1
  350. package/dist/process/process-service.js +79 -27
  351. package/dist/process/types.d.ts +2 -2
  352. package/dist/process/types.d.ts.map +1 -1
  353. package/dist/prompts/error-codes.cjs +1 -0
  354. package/dist/prompts/error-codes.d.ts +2 -1
  355. package/dist/prompts/error-codes.d.ts.map +1 -1
  356. package/dist/prompts/error-codes.js +2 -1
  357. package/dist/prompts/errors.cjs +15 -0
  358. package/dist/prompts/errors.d.ts +4 -0
  359. package/dist/prompts/errors.d.ts.map +1 -1
  360. package/dist/prompts/errors.js +16 -1
  361. package/dist/prompts/index.js +1 -1
  362. package/dist/prompts/name-validation.js +1 -1
  363. package/dist/prompts/prompt-manager.cjs +13 -2
  364. package/dist/prompts/prompt-manager.d.ts +7 -0
  365. package/dist/prompts/prompt-manager.d.ts.map +1 -1
  366. package/dist/prompts/prompt-manager.js +14 -3
  367. package/dist/prompts/providers/config-prompt-provider.cjs +12 -3
  368. package/dist/prompts/providers/config-prompt-provider.d.ts +2 -1
  369. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
  370. package/dist/prompts/providers/config-prompt-provider.js +13 -4
  371. package/dist/prompts/providers/custom-prompt-provider.js +1 -1
  372. package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
  373. package/dist/prompts/schemas.d.ts +12 -0
  374. package/dist/prompts/schemas.d.ts.map +1 -1
  375. package/dist/prompts/schemas.js +1 -1
  376. package/dist/prompts/types.d.ts +2 -0
  377. package/dist/prompts/types.d.ts.map +1 -1
  378. package/dist/prompts/utils.js +1 -1
  379. package/dist/providers/base-registry.cjs +147 -0
  380. package/dist/providers/base-registry.d.ts +147 -0
  381. package/dist/providers/base-registry.d.ts.map +1 -0
  382. package/dist/providers/base-registry.js +123 -0
  383. package/dist/providers/discovery.cjs +95 -0
  384. package/dist/providers/discovery.d.ts +94 -0
  385. package/dist/providers/discovery.d.ts.map +1 -0
  386. package/dist/providers/discovery.js +70 -0
  387. package/dist/providers/index.cjs +24 -0
  388. package/dist/providers/index.d.ts +32 -0
  389. package/dist/providers/index.d.ts.map +1 -0
  390. package/dist/providers/index.js +2 -0
  391. package/dist/resources/error-codes.js +1 -1
  392. package/dist/resources/errors.js +1 -1
  393. package/dist/resources/handlers/blob-handler.js +1 -1
  394. package/dist/resources/handlers/factory.js +1 -1
  395. package/dist/resources/handlers/filesystem-handler.js +1 -1
  396. package/dist/resources/index.js +1 -1
  397. package/dist/resources/internal-provider.js +1 -1
  398. package/dist/resources/manager.js +1 -1
  399. package/dist/resources/reference-parser.cjs +3 -3
  400. package/dist/resources/reference-parser.d.ts.map +1 -1
  401. package/dist/resources/reference-parser.js +4 -4
  402. package/dist/resources/schemas.js +1 -1
  403. package/dist/search/index.js +1 -1
  404. package/dist/search/search-service.js +1 -1
  405. package/dist/session/chat-session.cjs +169 -54
  406. package/dist/session/chat-session.d.ts +69 -29
  407. package/dist/session/chat-session.d.ts.map +1 -1
  408. package/dist/session/chat-session.js +171 -56
  409. package/dist/session/error-codes.js +1 -1
  410. package/dist/session/errors.js +1 -1
  411. package/dist/session/history/database.cjs +134 -21
  412. package/dist/session/history/database.d.ts +37 -8
  413. package/dist/session/history/database.d.ts.map +1 -1
  414. package/dist/session/history/database.js +135 -22
  415. package/dist/session/history/factory.js +1 -1
  416. package/dist/session/history/memory.cjs +18 -0
  417. package/dist/session/history/memory.d.ts +8 -0
  418. package/dist/session/history/memory.d.ts.map +1 -1
  419. package/dist/session/history/memory.js +19 -1
  420. package/dist/session/history/types.d.ts +13 -1
  421. package/dist/session/history/types.d.ts.map +1 -1
  422. package/dist/session/index.cjs +3 -0
  423. package/dist/session/index.d.ts +3 -0
  424. package/dist/session/index.d.ts.map +1 -1
  425. package/dist/session/index.js +3 -1
  426. package/dist/session/message-queue.cjs +201 -0
  427. package/dist/session/message-queue.d.ts +114 -0
  428. package/dist/session/message-queue.d.ts.map +1 -0
  429. package/dist/session/message-queue.js +178 -0
  430. package/dist/session/schemas.js +1 -1
  431. package/dist/session/session-manager.cjs +57 -7
  432. package/dist/session/session-manager.d.ts +18 -0
  433. package/dist/session/session-manager.d.ts.map +1 -1
  434. package/dist/session/session-manager.js +58 -8
  435. package/dist/session/title-generator.cjs +4 -8
  436. package/dist/session/title-generator.d.ts +1 -2
  437. package/dist/session/title-generator.d.ts.map +1 -1
  438. package/dist/session/title-generator.js +5 -9
  439. package/dist/session/types.cjs +16 -0
  440. package/dist/session/types.d.ts +14 -0
  441. package/dist/session/types.d.ts.map +1 -0
  442. package/dist/session/types.js +0 -0
  443. package/dist/storage/blob/factory.cjs +8 -11
  444. package/dist/storage/blob/factory.d.ts +32 -6
  445. package/dist/storage/blob/factory.d.ts.map +1 -1
  446. package/dist/storage/blob/factory.js +9 -12
  447. package/dist/storage/blob/index.cjs +56 -0
  448. package/dist/storage/blob/index.d.ts +45 -0
  449. package/dist/storage/blob/index.d.ts.map +1 -0
  450. package/dist/storage/blob/index.js +30 -0
  451. package/dist/storage/blob/local-blob-store.js +1 -1
  452. package/dist/storage/blob/memory-blob-store.js +1 -1
  453. package/dist/storage/blob/provider.cjs +16 -0
  454. package/dist/storage/blob/provider.d.ts +50 -0
  455. package/dist/storage/blob/provider.d.ts.map +1 -0
  456. package/dist/storage/blob/provider.js +0 -0
  457. package/dist/storage/blob/providers/index.cjs +31 -0
  458. package/dist/storage/blob/providers/index.d.ts +8 -0
  459. package/dist/storage/blob/providers/index.d.ts.map +1 -0
  460. package/dist/storage/blob/providers/index.js +7 -0
  461. package/dist/storage/blob/providers/local.cjs +39 -0
  462. package/dist/storage/blob/providers/local.d.ts +17 -0
  463. package/dist/storage/blob/providers/local.d.ts.map +1 -0
  464. package/dist/storage/blob/providers/local.js +16 -0
  465. package/dist/storage/blob/providers/memory.cjs +39 -0
  466. package/dist/storage/blob/providers/memory.d.ts +17 -0
  467. package/dist/storage/blob/providers/memory.d.ts.map +1 -0
  468. package/dist/storage/blob/providers/memory.js +16 -0
  469. package/dist/storage/blob/registry.cjs +50 -0
  470. package/dist/storage/blob/registry.d.ts +42 -0
  471. package/dist/storage/blob/registry.d.ts.map +1 -0
  472. package/dist/storage/blob/registry.js +26 -0
  473. package/dist/storage/blob/schemas.cjs +9 -12
  474. package/dist/storage/blob/schemas.d.ts +39 -34
  475. package/dist/storage/blob/schemas.d.ts.map +1 -1
  476. package/dist/storage/blob/schemas.js +7 -12
  477. package/dist/storage/cache/factory.cjs +8 -36
  478. package/dist/storage/cache/factory.d.ts +32 -7
  479. package/dist/storage/cache/factory.d.ts.map +1 -1
  480. package/dist/storage/cache/factory.js +9 -27
  481. package/dist/storage/cache/index.cjs +53 -0
  482. package/dist/storage/cache/index.d.ts +44 -0
  483. package/dist/storage/cache/index.d.ts.map +1 -0
  484. package/dist/storage/cache/index.js +28 -0
  485. package/dist/storage/cache/memory-cache-store.js +1 -1
  486. package/dist/storage/cache/provider.cjs +16 -0
  487. package/dist/storage/cache/provider.d.ts +56 -0
  488. package/dist/storage/cache/provider.d.ts.map +1 -0
  489. package/dist/storage/cache/provider.js +0 -0
  490. package/dist/storage/cache/providers/index.cjs +31 -0
  491. package/dist/storage/cache/providers/index.d.ts +8 -0
  492. package/dist/storage/cache/providers/index.d.ts.map +1 -0
  493. package/dist/storage/cache/providers/index.js +7 -0
  494. package/dist/storage/cache/providers/memory.cjs +40 -0
  495. package/dist/storage/cache/providers/memory.d.ts +17 -0
  496. package/dist/storage/cache/providers/memory.d.ts.map +1 -0
  497. package/dist/storage/cache/providers/memory.js +17 -0
  498. package/dist/storage/cache/providers/redis.cjs +66 -0
  499. package/dist/storage/cache/providers/redis.d.ts +20 -0
  500. package/dist/storage/cache/providers/redis.d.ts.map +1 -0
  501. package/dist/storage/cache/providers/redis.js +33 -0
  502. package/dist/storage/cache/redis-store.js +1 -1
  503. package/dist/{llm/tokenizer/google.cjs → storage/cache/registry.cjs} +23 -25
  504. package/dist/storage/cache/registry.d.ts +42 -0
  505. package/dist/storage/cache/registry.d.ts.map +1 -0
  506. package/dist/storage/cache/registry.js +26 -0
  507. package/dist/storage/cache/schemas.cjs +6 -2
  508. package/dist/storage/cache/schemas.d.ts +2 -3
  509. package/dist/storage/cache/schemas.d.ts.map +1 -1
  510. package/dist/storage/cache/schemas.js +4 -2
  511. package/dist/storage/database/factory.cjs +8 -47
  512. package/dist/storage/database/factory.d.ts +34 -8
  513. package/dist/storage/database/factory.d.ts.map +1 -1
  514. package/dist/storage/database/factory.js +9 -38
  515. package/dist/storage/database/index.cjs +58 -0
  516. package/dist/storage/database/index.d.ts +45 -0
  517. package/dist/storage/database/index.d.ts.map +1 -0
  518. package/dist/storage/database/index.js +37 -0
  519. package/dist/storage/database/memory-database-store.js +1 -1
  520. package/dist/storage/database/postgres-store.cjs +12 -0
  521. package/dist/storage/database/postgres-store.d.ts.map +1 -1
  522. package/dist/storage/database/postgres-store.js +13 -1
  523. package/dist/storage/database/provider.cjs +16 -0
  524. package/dist/storage/database/provider.d.ts +56 -0
  525. package/dist/storage/database/provider.d.ts.map +1 -0
  526. package/dist/storage/database/provider.js +0 -0
  527. package/dist/storage/database/providers/index.cjs +34 -0
  528. package/dist/storage/database/providers/index.d.ts +9 -0
  529. package/dist/storage/database/providers/index.d.ts.map +1 -0
  530. package/dist/storage/database/providers/index.js +9 -0
  531. package/dist/storage/database/providers/memory.cjs +40 -0
  532. package/dist/storage/database/providers/memory.d.ts +16 -0
  533. package/dist/storage/database/providers/memory.d.ts.map +1 -0
  534. package/dist/storage/database/providers/memory.js +17 -0
  535. package/dist/storage/database/providers/postgres.cjs +62 -0
  536. package/dist/storage/database/providers/postgres.d.ts +19 -0
  537. package/dist/storage/database/providers/postgres.d.ts.map +1 -0
  538. package/dist/storage/database/providers/postgres.js +29 -0
  539. package/dist/storage/database/providers/sqlite.cjs +66 -0
  540. package/dist/storage/database/providers/sqlite.d.ts +20 -0
  541. package/dist/storage/database/providers/sqlite.d.ts.map +1 -0
  542. package/dist/storage/database/providers/sqlite.js +33 -0
  543. package/dist/storage/database/registry.cjs +50 -0
  544. package/dist/storage/database/registry.d.ts +42 -0
  545. package/dist/storage/database/registry.d.ts.map +1 -0
  546. package/dist/storage/database/registry.js +26 -0
  547. package/dist/storage/database/schemas.cjs +8 -2
  548. package/dist/storage/database/schemas.d.ts +3 -4
  549. package/dist/storage/database/schemas.d.ts.map +1 -1
  550. package/dist/storage/database/schemas.js +5 -2
  551. package/dist/storage/database/sqlite-store.js +1 -1
  552. package/dist/storage/error-codes.cjs +6 -0
  553. package/dist/storage/error-codes.d.ts +7 -1
  554. package/dist/storage/error-codes.d.ts.map +1 -1
  555. package/dist/storage/error-codes.js +7 -1
  556. package/dist/storage/errors.cjs +80 -0
  557. package/dist/storage/errors.d.ts +24 -0
  558. package/dist/storage/errors.d.ts.map +1 -1
  559. package/dist/storage/errors.js +81 -1
  560. package/dist/storage/index.cjs +47 -4
  561. package/dist/storage/index.d.ts +34 -8
  562. package/dist/storage/index.d.ts.map +1 -1
  563. package/dist/storage/index.js +33 -4
  564. package/dist/storage/schemas.cjs +4 -0
  565. package/dist/storage/schemas.d.ts +17 -50
  566. package/dist/storage/schemas.d.ts.map +1 -1
  567. package/dist/storage/schemas.js +6 -2
  568. package/dist/storage/storage-manager.cjs +6 -6
  569. package/dist/storage/storage-manager.d.ts.map +1 -1
  570. package/dist/storage/storage-manager.js +4 -4
  571. package/dist/systemPrompt/contributors.js +1 -1
  572. package/dist/systemPrompt/error-codes.js +1 -1
  573. package/dist/systemPrompt/errors.js +1 -1
  574. package/dist/systemPrompt/in-built-prompts.cjs +7 -6
  575. package/dist/systemPrompt/in-built-prompts.d.ts +2 -2
  576. package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -1
  577. package/dist/systemPrompt/in-built-prompts.js +7 -6
  578. package/dist/systemPrompt/index.js +1 -1
  579. package/dist/systemPrompt/manager.js +1 -1
  580. package/dist/systemPrompt/registry.cjs +2 -2
  581. package/dist/systemPrompt/registry.d.ts +1 -1
  582. package/dist/systemPrompt/registry.d.ts.map +1 -1
  583. package/dist/systemPrompt/registry.js +3 -3
  584. package/dist/systemPrompt/schemas.cjs +2 -2
  585. package/dist/systemPrompt/schemas.d.ts +18 -18
  586. package/dist/systemPrompt/schemas.js +3 -3
  587. package/dist/telemetry/decorators.js +1 -1
  588. package/dist/telemetry/error-codes.js +1 -1
  589. package/dist/telemetry/errors.js +1 -1
  590. package/dist/telemetry/exporters.js +1 -1
  591. package/dist/telemetry/index.js +1 -1
  592. package/dist/telemetry/schemas.js +1 -1
  593. package/dist/telemetry/telemetry.js +1 -1
  594. package/dist/telemetry/utils.js +1 -1
  595. package/dist/tools/bash-pattern-utils.cjs +91 -0
  596. package/dist/tools/bash-pattern-utils.d.ts +58 -0
  597. package/dist/tools/bash-pattern-utils.d.ts.map +1 -0
  598. package/dist/tools/bash-pattern-utils.js +64 -0
  599. package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -1
  600. package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +1 -1
  601. package/dist/tools/confirmation/allowed-tools-provider/storage.js +1 -1
  602. package/dist/tools/custom-tool-registry.cjs +64 -0
  603. package/dist/tools/custom-tool-registry.d.ts +120 -0
  604. package/dist/tools/custom-tool-registry.d.ts.map +1 -0
  605. package/dist/tools/custom-tool-registry.js +40 -0
  606. package/dist/tools/custom-tool-schema-registry.cjs +164 -0
  607. package/dist/tools/custom-tool-schema-registry.d.ts +86 -0
  608. package/dist/tools/custom-tool-schema-registry.d.ts.map +1 -0
  609. package/dist/tools/custom-tool-schema-registry.js +140 -0
  610. package/dist/tools/display-types.cjs +60 -0
  611. package/dist/tools/display-types.d.ts +133 -0
  612. package/dist/tools/display-types.d.ts.map +1 -0
  613. package/dist/tools/display-types.js +32 -0
  614. package/dist/tools/error-codes.cjs +5 -0
  615. package/dist/tools/error-codes.d.ts +6 -1
  616. package/dist/tools/error-codes.d.ts.map +1 -1
  617. package/dist/tools/error-codes.js +6 -1
  618. package/dist/tools/errors.cjs +71 -0
  619. package/dist/tools/errors.d.ts +33 -0
  620. package/dist/tools/errors.d.ts.map +1 -1
  621. package/dist/tools/errors.js +72 -1
  622. package/dist/tools/index.cjs +15 -1
  623. package/dist/tools/index.d.ts +5 -0
  624. package/dist/tools/index.d.ts.map +1 -1
  625. package/dist/tools/index.js +13 -2
  626. package/dist/tools/internal-tools/constants.cjs +3 -9
  627. package/dist/tools/internal-tools/constants.d.ts +1 -1
  628. package/dist/tools/internal-tools/constants.d.ts.map +1 -1
  629. package/dist/tools/internal-tools/constants.js +4 -10
  630. package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +1 -1
  631. package/dist/tools/internal-tools/implementations/ask-user-tool.js +2 -2
  632. package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +1 -1
  633. package/dist/tools/internal-tools/implementations/get-resource-tool.cjs +113 -0
  634. package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts +30 -0
  635. package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts.map +1 -0
  636. package/dist/tools/internal-tools/implementations/get-resource-tool.js +90 -0
  637. package/dist/tools/internal-tools/implementations/list-resources-tool.cjs +91 -0
  638. package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts +24 -0
  639. package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts.map +1 -0
  640. package/dist/tools/internal-tools/implementations/list-resources-tool.js +68 -0
  641. package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -1
  642. package/dist/tools/internal-tools/provider.cjs +175 -31
  643. package/dist/tools/internal-tools/provider.d.ts +62 -14
  644. package/dist/tools/internal-tools/provider.d.ts.map +1 -1
  645. package/dist/tools/internal-tools/provider.js +176 -32
  646. package/dist/tools/internal-tools/registry.cjs +19 -43
  647. package/dist/tools/internal-tools/registry.d.ts +32 -11
  648. package/dist/tools/internal-tools/registry.d.ts.map +1 -1
  649. package/dist/tools/internal-tools/registry.js +20 -44
  650. package/dist/tools/schemas.cjs +36 -6
  651. package/dist/tools/schemas.d.ts +74 -5
  652. package/dist/tools/schemas.d.ts.map +1 -1
  653. package/dist/tools/schemas.js +30 -6
  654. package/dist/tools/tool-manager.cjs +279 -30
  655. package/dist/tools/tool-manager.d.ts +45 -4
  656. package/dist/tools/tool-manager.d.ts.map +1 -1
  657. package/dist/tools/tool-manager.js +284 -31
  658. package/dist/tools/types.d.ts +63 -0
  659. package/dist/tools/types.d.ts.map +1 -1
  660. package/dist/utils/api-key-resolver.cjs +19 -1
  661. package/dist/utils/api-key-resolver.d.ts.map +1 -1
  662. package/dist/utils/api-key-resolver.js +20 -2
  663. package/dist/utils/async-context.js +1 -1
  664. package/dist/utils/debug.js +1 -1
  665. package/dist/{llm/tokenizer/anthropic.cjs → utils/defer.cjs} +19 -20
  666. package/dist/utils/defer.d.ts +63 -0
  667. package/dist/utils/defer.d.ts.map +1 -0
  668. package/dist/utils/defer.js +19 -0
  669. package/dist/utils/error-conversion.js +1 -1
  670. package/dist/utils/execution-context.js +1 -1
  671. package/dist/utils/fs-walk.js +1 -1
  672. package/dist/utils/index.cjs +3 -3
  673. package/dist/utils/index.d.ts +1 -1
  674. package/dist/utils/index.d.ts.map +1 -1
  675. package/dist/utils/index.js +1 -1
  676. package/dist/utils/path.js +1 -1
  677. package/dist/utils/redactor.cjs +18 -3
  678. package/dist/utils/redactor.d.ts +0 -7
  679. package/dist/utils/redactor.d.ts.map +1 -1
  680. package/dist/utils/redactor.js +19 -4
  681. package/dist/utils/result.js +1 -1
  682. package/dist/utils/safe-stringify.js +1 -1
  683. package/dist/utils/schema-metadata.js +1 -1
  684. package/dist/utils/schema.js +1 -1
  685. package/dist/utils/service-initializer.cjs +15 -37
  686. package/dist/utils/service-initializer.d.ts.map +1 -1
  687. package/dist/utils/service-initializer.js +16 -38
  688. package/dist/utils/user-info.js +1 -1
  689. package/dist/utils/zod-schema-converter.js +1 -1
  690. package/package.json +10 -8
  691. package/dist/context/compression/middle-removal.cjs +0 -95
  692. package/dist/context/compression/middle-removal.d.ts +0 -47
  693. package/dist/context/compression/middle-removal.d.ts.map +0 -1
  694. package/dist/context/compression/middle-removal.js +0 -72
  695. package/dist/context/compression/oldest-removal.cjs +0 -83
  696. package/dist/context/compression/oldest-removal.d.ts +0 -42
  697. package/dist/context/compression/oldest-removal.d.ts.map +0 -1
  698. package/dist/context/compression/oldest-removal.js +0 -60
  699. package/dist/context/compression/types.d.ts +0 -18
  700. package/dist/context/compression/types.d.ts.map +0 -1
  701. package/dist/llm/formatters/anthropic.cjs +0 -257
  702. package/dist/llm/formatters/anthropic.d.ts +0 -46
  703. package/dist/llm/formatters/anthropic.d.ts.map +0 -1
  704. package/dist/llm/formatters/anthropic.js +0 -239
  705. package/dist/llm/formatters/factory.cjs +0 -50
  706. package/dist/llm/formatters/factory.d.ts +0 -10
  707. package/dist/llm/formatters/factory.d.ts.map +0 -1
  708. package/dist/llm/formatters/factory.js +0 -27
  709. package/dist/llm/formatters/openai.cjs +0 -203
  710. package/dist/llm/formatters/openai.d.ts +0 -39
  711. package/dist/llm/formatters/openai.d.ts.map +0 -1
  712. package/dist/llm/formatters/openai.js +0 -184
  713. package/dist/llm/formatters/types.d.ts +0 -41
  714. package/dist/llm/formatters/types.d.ts.map +0 -1
  715. package/dist/llm/services/anthropic.cjs +0 -511
  716. package/dist/llm/services/anthropic.d.ts +0 -48
  717. package/dist/llm/services/anthropic.d.ts.map +0 -1
  718. package/dist/llm/services/anthropic.js +0 -447
  719. package/dist/llm/services/openai.cjs +0 -611
  720. package/dist/llm/services/openai.d.ts +0 -48
  721. package/dist/llm/services/openai.d.ts.map +0 -1
  722. package/dist/llm/services/openai.js +0 -547
  723. package/dist/llm/tokenizer/anthropic.d.ts +0 -19
  724. package/dist/llm/tokenizer/anthropic.d.ts.map +0 -1
  725. package/dist/llm/tokenizer/anthropic.js +0 -20
  726. package/dist/llm/tokenizer/default.d.ts +0 -14
  727. package/dist/llm/tokenizer/default.d.ts.map +0 -1
  728. package/dist/llm/tokenizer/default.js +0 -18
  729. package/dist/llm/tokenizer/factory.d.ts +0 -12
  730. package/dist/llm/tokenizer/factory.d.ts.map +0 -1
  731. package/dist/llm/tokenizer/factory.js +0 -21
  732. package/dist/llm/tokenizer/google.d.ts +0 -29
  733. package/dist/llm/tokenizer/google.d.ts.map +0 -1
  734. package/dist/llm/tokenizer/google.js +0 -29
  735. package/dist/llm/tokenizer/openai.cjs +0 -115
  736. package/dist/llm/tokenizer/openai.d.ts +0 -41
  737. package/dist/llm/tokenizer/openai.d.ts.map +0 -1
  738. package/dist/llm/tokenizer/openai.js +0 -91
  739. package/dist/llm/tokenizer/types.d.ts +0 -18
  740. package/dist/llm/tokenizer/types.d.ts.map +0 -1
  741. package/dist/llm/tokenizer/types.js +0 -10
  742. package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +0 -106
  743. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +0 -13
  744. package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +0 -1
  745. package/dist/tools/internal-tools/implementations/bash-exec-tool.js +0 -73
  746. package/dist/tools/internal-tools/implementations/bash-output-tool.cjs +0 -49
  747. package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts +0 -12
  748. package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts.map +0 -1
  749. package/dist/tools/internal-tools/implementations/bash-output-tool.js +0 -26
  750. package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +0 -62
  751. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts +0 -12
  752. package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +0 -1
  753. package/dist/tools/internal-tools/implementations/edit-file-tool.js +0 -39
  754. package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +0 -57
  755. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts +0 -12
  756. package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +0 -1
  757. package/dist/tools/internal-tools/implementations/glob-files-tool.js +0 -34
  758. package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +0 -71
  759. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts +0 -12
  760. package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +0 -1
  761. package/dist/tools/internal-tools/implementations/grep-content-tool.js +0 -48
  762. package/dist/tools/internal-tools/implementations/kill-process-tool.cjs +0 -47
  763. package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts +0 -12
  764. package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts.map +0 -1
  765. package/dist/tools/internal-tools/implementations/kill-process-tool.js +0 -24
  766. package/dist/tools/internal-tools/implementations/read-file-tool.cjs +0 -55
  767. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts +0 -12
  768. package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +0 -1
  769. package/dist/tools/internal-tools/implementations/read-file-tool.js +0 -32
  770. package/dist/tools/internal-tools/implementations/write-file-tool.cjs +0 -56
  771. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts +0 -12
  772. package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +0 -1
  773. package/dist/tools/internal-tools/implementations/write-file-tool.js +0 -33
  774. package/dist/utils/env-file.cjs +0 -118
  775. package/dist/utils/env-file.d.ts +0 -5
  776. package/dist/utils/env-file.d.ts.map +0 -1
  777. package/dist/utils/env-file.js +0 -85
  778. /package/dist/context/{compression/types.js → compaction/provider.js} +0 -0
  779. /package/dist/context/{compression → compaction}/types.cjs +0 -0
  780. /package/dist/{llm/formatters → context/compaction}/types.js +0 -0
  781. /package/dist/{llm/formatters → image}/types.cjs +0 -0
@@ -1,9 +1,11 @@
1
- import "../chunk-C6A6W6XS.js";
1
+ import "../chunk-PTJYTZNU.js";
2
+ import {
3
+ isToolMessage
4
+ } from "./types.js";
5
+ import { isValidDisplayData } from "../tools/display-types.js";
2
6
  import { validateModelFileSupport } from "../llm/registry.js";
3
- import { ContextError } from "./errors.js";
4
7
  import { safeStringify } from "../utils/safe-stringify.js";
5
8
  import { getFileMediaKind, getResourceKind } from "./media-helpers.js";
6
- const DEFAULT_OVERHEAD_PER_MESSAGE = 4;
7
9
  const MIN_BASE64_HEURISTIC_LENGTH = 512;
8
10
  const MAX_TOOL_TEXT_CHARS = 8e3;
9
11
  const MIN_TOOL_INLINE_MEDIA_BYTES = 1024;
@@ -51,60 +53,38 @@ function clonePart(part) {
51
53
  return cloned;
52
54
  }
53
55
  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;
56
+ if (content == null) {
57
+ return [];
58
+ }
59
+ const normalized = [];
60
+ for (const item of content) {
61
+ if (item.type === "ui-resource") {
62
+ continue;
63
+ }
64
+ if (item.type === "text") {
65
+ normalized.push({ type: "text", text: item.text });
66
+ } else if (item.type === "image") {
67
+ const cloned = {
68
+ type: "image",
69
+ image: item.image
70
+ };
71
+ if (item.mimeType) {
72
+ cloned.mimeType = item.mimeType;
61
73
  }
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
- }
74
+ normalized.push(cloned);
75
+ } else if (item.type === "file") {
76
+ const cloned = {
77
+ type: "file",
78
+ data: item.data,
79
+ mimeType: item.mimeType ?? "application/octet-stream"
80
+ };
81
+ if (item.filename) {
82
+ cloned.filename = item.filename;
94
83
  }
84
+ normalized.push(cloned);
95
85
  }
96
- return normalized;
97
- }
98
- if (typeof content === "string") {
99
- if (content.length === 0) {
100
- return [];
101
- }
102
- return [{ type: "text", text: content }];
103
86
  }
104
- if (content == null) {
105
- return [];
106
- }
107
- return [{ type: "text", text: safeStringify(content) }];
87
+ return normalized;
108
88
  }
109
89
  function detectInlineMedia(part, index) {
110
90
  if (part.type === "text") {
@@ -263,17 +243,16 @@ async function resolveBlobReferenceToParts(resourceUri, resourceManager, logger,
263
243
  parts.push({ type: "text", text: item.text });
264
244
  continue;
265
245
  }
266
- const base64Data = typeof item.blob === "string" ? item.blob : typeof item.data === "string" ? item.data : void 0;
246
+ const base64Data = "blob" in item && typeof item.blob === "string" ? item.blob : "data" in item && typeof item.data === "string" ? item.data : void 0;
267
247
  const mimeType = typeof item.mimeType === "string" ? item.mimeType : void 0;
268
248
  if (!base64Data || !mimeType) {
269
249
  continue;
270
250
  }
271
251
  const resolvedMime = mimeType ?? "application/octet-stream";
272
252
  if (resolvedMime.startsWith("image/")) {
273
- const dataUri = `data:${resolvedMime};base64,${base64Data}`;
274
253
  const imagePart = {
275
254
  type: "image",
276
- image: dataUri,
255
+ image: base64Data,
277
256
  mimeType: resolvedMime
278
257
  };
279
258
  parts.push(imagePart);
@@ -281,11 +260,12 @@ async function resolveBlobReferenceToParts(resourceUri, resourceManager, logger,
281
260
  }
282
261
  const filePart = {
283
262
  type: "file",
284
- data: resolvedMime.startsWith("audio/") ? `data:${resolvedMime};base64,${base64Data}` : base64Data,
263
+ data: base64Data,
285
264
  mimeType: resolvedMime
286
265
  };
287
- if (typeof item.filename === "string" && item.filename.length > 0) {
288
- filePart.filename = item.filename;
266
+ const itemWithFilename = item;
267
+ if (typeof itemWithFilename.filename === "string" && itemWithFilename.filename.length > 0) {
268
+ filePart.filename = itemWithFilename.filename;
289
269
  } else if (typeof result._meta?.originalName === "string") {
290
270
  filePart.filename = result._meta.originalName;
291
271
  }
@@ -301,67 +281,17 @@ async function resolveBlobReferenceToParts(resourceUri, resourceManager, logger,
301
281
  return [{ type: "text", text: `[Attachment unavailable: ${resourceUri}]` }];
302
282
  }
303
283
  }
304
- function countMessagesTokens(history, tokenizer, overheadPerMessage = DEFAULT_OVERHEAD_PER_MESSAGE, logger) {
305
- let total = 0;
306
- logger.debug(`Counting tokens for ${history.length} messages`);
307
- try {
308
- for (const message of history) {
309
- if (message.content) {
310
- if (typeof message.content === "string") {
311
- total += tokenizer.countTokens(message.content);
312
- } else if (Array.isArray(message.content)) {
313
- message.content.forEach((part) => {
314
- if (part.type === "text" && typeof part.text === "string") {
315
- total += tokenizer.countTokens(part.text);
316
- } else if (part.type === "image") {
317
- if (typeof part.image === "string") {
318
- if (isDataUri(part.image)) {
319
- const base64Payload = extractBase64FromDataUri(part.image);
320
- const byteLength = base64LengthToBytes(base64Payload.length);
321
- total += Math.ceil(byteLength / 1024);
322
- } else {
323
- total += estimateTextTokens(part.image);
324
- }
325
- } else if (part.image instanceof Uint8Array || part.image instanceof Buffer || part.image instanceof ArrayBuffer) {
326
- const bytes = part.image instanceof ArrayBuffer ? part.image.byteLength : part.image.length;
327
- total += Math.ceil(bytes / 1024);
328
- }
329
- } else if (part.type === "file") {
330
- if (typeof part.data === "string") {
331
- if (isDataUri(part.data)) {
332
- const base64Payload = extractBase64FromDataUri(part.data);
333
- const byteLength = base64LengthToBytes(base64Payload.length);
334
- total += Math.ceil(byteLength / 1024);
335
- } else {
336
- total += estimateTextTokens(part.data);
337
- }
338
- } else if (part.data instanceof Uint8Array || part.data instanceof Buffer || part.data instanceof ArrayBuffer) {
339
- const bytes = part.data instanceof ArrayBuffer ? part.data.byteLength : part.data.length;
340
- total += Math.ceil(bytes / 1024);
341
- }
342
- }
343
- });
344
- }
345
- }
346
- if (message.toolCalls) {
347
- for (const call of message.toolCalls) {
348
- if (call.function?.name) {
349
- total += tokenizer.countTokens(call.function.name);
350
- }
351
- if (call.function?.arguments) {
352
- total += tokenizer.countTokens(call.function.arguments);
353
- }
354
- }
355
- }
356
- total += overheadPerMessage;
284
+ function estimateMessagesTokens(messages) {
285
+ return messages.reduce((sum, msg) => {
286
+ if (Array.isArray(msg.content)) {
287
+ return sum + msg.content.reduce((partSum, part) => {
288
+ if (part.type === "text") return partSum + Math.ceil(part.text.length / 4);
289
+ if (part.type === "image" || part.type === "file") return partSum + 1e3;
290
+ return partSum;
291
+ }, 0);
357
292
  }
358
- } catch (error) {
359
- logger.error(
360
- `countMessagesTokens failed: ${error instanceof Error ? error.message : String(error)}`
361
- );
362
- throw ContextError.tokenCountFailed(error instanceof Error ? error.message : String(error));
363
- }
364
- return total;
293
+ return sum;
294
+ }, 0);
365
295
  }
366
296
  function getImageData(imagePart, logger) {
367
297
  const { image } = imagePart;
@@ -402,8 +332,9 @@ async function getImageDataWithBlobSupport(imagePart, resourceManager, logger) {
402
332
  const uri = image.substring(1);
403
333
  const resourceUri = uri.startsWith("blob:") ? uri : `blob:${uri}`;
404
334
  const result = await resourceManager.read(resourceUri);
405
- if (result.contents[0]?.blob && typeof result.contents[0].blob === "string") {
406
- return result.contents[0].blob;
335
+ const firstContent = result.contents[0];
336
+ if (firstContent && "blob" in firstContent && firstContent.blob && typeof firstContent.blob === "string") {
337
+ return firstContent.blob;
407
338
  }
408
339
  logger.warn(`Blob reference ${image} did not contain blob data`);
409
340
  } catch (error) {
@@ -419,8 +350,9 @@ async function getFileDataWithBlobSupport(filePart, resourceManager, logger) {
419
350
  const uri = data.substring(1);
420
351
  const resourceUri = uri.startsWith("blob:") ? uri : `blob:${uri}`;
421
352
  const result = await resourceManager.read(resourceUri);
422
- if (result.contents[0]?.blob && typeof result.contents[0].blob === "string") {
423
- return result.contents[0].blob;
353
+ const firstContent = result.contents[0];
354
+ if (firstContent && "blob" in firstContent && firstContent.blob && typeof firstContent.blob === "string") {
355
+ return firstContent.blob;
424
356
  }
425
357
  logger.warn(`Blob reference ${data} did not contain blob data`);
426
358
  } catch (error) {
@@ -429,122 +361,119 @@ async function getFileDataWithBlobSupport(filePart, resourceManager, logger) {
429
361
  }
430
362
  return getFileData(filePart, logger);
431
363
  }
432
- async function expandBlobReferences(content, resourceManager, logger, allowedMediaTypes) {
433
- if (typeof content === "string") {
434
- const blobRefPattern = /@blob:[a-f0-9]+/g;
435
- const matches = [...content.matchAll(blobRefPattern)];
436
- if (matches.length === 0) {
437
- return content;
438
- }
439
- const resolvedCache = /* @__PURE__ */ new Map();
440
- const parts = [];
441
- let lastIndex = 0;
442
- for (const match of matches) {
443
- const matchIndex = match.index ?? 0;
444
- const token = match[0];
445
- if (matchIndex > lastIndex) {
446
- const segment = content.slice(lastIndex, matchIndex);
447
- if (segment.length > 0) {
448
- parts.push({ type: "text", text: segment });
449
- }
450
- }
451
- const uri = token.substring(1);
452
- const resourceUri = uri.startsWith("blob:") ? uri : `blob:${uri}`;
453
- let resolvedParts = resolvedCache.get(resourceUri);
454
- if (!resolvedParts) {
455
- resolvedParts = await resolveBlobReferenceToParts(
456
- resourceUri,
457
- resourceManager,
458
- logger,
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 });
364
+ async function expandBlobsInText(text, resourceManager, logger, allowedMediaTypes) {
365
+ if (!text.includes("@blob:")) {
366
+ return [{ type: "text", text }];
367
+ }
368
+ const blobRefPattern = /@blob:[a-f0-9]+/g;
369
+ const matches = [...text.matchAll(blobRefPattern)];
370
+ if (matches.length === 0) {
371
+ return [{ type: "text", text }];
372
+ }
373
+ const resolvedCache = /* @__PURE__ */ new Map();
374
+ const parts = [];
375
+ let lastIndex = 0;
376
+ for (const match of matches) {
377
+ const matchIndex = match.index ?? 0;
378
+ const token = match[0];
379
+ if (matchIndex > lastIndex) {
380
+ const segment = text.slice(lastIndex, matchIndex);
381
+ if (segment.length > 0) {
382
+ parts.push({ type: "text", text: segment });
467
383
  }
468
- lastIndex = matchIndex + token.length;
469
384
  }
470
- if (lastIndex < content.length) {
471
- const trailing = content.slice(lastIndex);
472
- if (trailing.length > 0) {
473
- parts.push({ type: "text", text: trailing });
474
- }
385
+ const uri = token.substring(1);
386
+ const resourceUri = uri.startsWith("blob:") ? uri : `blob:${uri}`;
387
+ let resolvedParts = resolvedCache.get(resourceUri);
388
+ if (!resolvedParts) {
389
+ resolvedParts = await resolveBlobReferenceToParts(
390
+ resourceUri,
391
+ resourceManager,
392
+ logger,
393
+ allowedMediaTypes
394
+ );
395
+ resolvedCache.set(resourceUri, resolvedParts);
475
396
  }
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;
397
+ if (resolvedParts.length > 0) {
398
+ parts.push(...resolvedParts.map((p) => ({ ...p })));
399
+ } else {
400
+ parts.push({ type: "text", text: token });
479
401
  }
480
- return normalized;
402
+ lastIndex = matchIndex + token.length;
481
403
  }
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
- logger,
492
- allowedMediaTypes
493
- );
494
- if (resolved.length > 0) {
495
- expandedParts.push(...resolved.map((part2) => ({ ...part2 })));
496
- } else {
497
- expandedParts.push(part);
498
- }
499
- continue;
500
- }
501
- if (part.type === "file" && typeof part.data === "string" && part.data.startsWith("@blob:")) {
502
- const uri = part.data.substring(1);
503
- const resourceUri = uri.startsWith("blob:") ? uri : `blob:${uri}`;
504
- const resolved = await resolveBlobReferenceToParts(
505
- resourceUri,
506
- resourceManager,
507
- logger,
508
- allowedMediaTypes
509
- );
510
- if (resolved.length > 0) {
511
- expandedParts.push(...resolved.map((part2) => ({ ...part2 })));
512
- } else {
513
- try {
514
- const resolvedData = await getFileDataWithBlobSupport(
515
- part,
516
- resourceManager,
517
- logger
518
- );
519
- expandedParts.push({ ...part, data: resolvedData });
520
- } catch (error) {
521
- logger.warn(`Failed to resolve file blob reference: ${String(error)}`);
522
- expandedParts.push(part);
523
- }
524
- }
525
- continue;
404
+ if (lastIndex < text.length) {
405
+ const trailing = text.slice(lastIndex);
406
+ if (trailing.length > 0) {
407
+ parts.push({ type: "text", text: trailing });
408
+ }
409
+ }
410
+ return parts.filter((p) => p.type !== "text" || p.text.length > 0);
411
+ }
412
+ async function expandBlobReferences(content, resourceManager, logger, allowedMediaTypes) {
413
+ if (content == null || !Array.isArray(content)) {
414
+ return [];
415
+ }
416
+ const expandedParts = [];
417
+ for (const part of content) {
418
+ if (part.type === "ui-resource") {
419
+ expandedParts.push(part);
420
+ continue;
421
+ }
422
+ if (part.type === "image" && typeof part.image === "string" && part.image.startsWith("@blob:")) {
423
+ const uri = part.image.substring(1);
424
+ const resourceUri = uri.startsWith("blob:") ? uri : `blob:${uri}`;
425
+ const resolved = await resolveBlobReferenceToParts(
426
+ resourceUri,
427
+ resourceManager,
428
+ logger,
429
+ allowedMediaTypes
430
+ );
431
+ if (resolved.length > 0) {
432
+ expandedParts.push(...resolved.map((p) => ({ ...p })));
433
+ } else {
434
+ expandedParts.push(part);
526
435
  }
527
- if (part.type === "text" && part.text.includes("@blob:")) {
528
- const expanded = await expandBlobReferences(
529
- part.text,
530
- resourceManager,
531
- logger,
532
- allowedMediaTypes
533
- );
534
- if (typeof expanded === "string") {
535
- expandedParts.push({ ...part, text: expanded });
536
- } else if (Array.isArray(expanded)) {
537
- expandedParts.push(...expanded.map((part2) => ({ ...part2 })));
538
- } else {
436
+ continue;
437
+ }
438
+ if (part.type === "file" && typeof part.data === "string" && part.data.startsWith("@blob:")) {
439
+ const uri = part.data.substring(1);
440
+ const resourceUri = uri.startsWith("blob:") ? uri : `blob:${uri}`;
441
+ const resolved = await resolveBlobReferenceToParts(
442
+ resourceUri,
443
+ resourceManager,
444
+ logger,
445
+ allowedMediaTypes
446
+ );
447
+ if (resolved.length > 0) {
448
+ expandedParts.push(...resolved.map((p) => ({ ...p })));
449
+ } else {
450
+ try {
451
+ const resolvedData = await getFileDataWithBlobSupport(
452
+ part,
453
+ resourceManager,
454
+ logger
455
+ );
456
+ expandedParts.push({ ...part, data: resolvedData });
457
+ } catch (error) {
458
+ logger.warn(`Failed to resolve file blob reference: ${String(error)}`);
539
459
  expandedParts.push(part);
540
460
  }
541
- continue;
542
461
  }
543
- expandedParts.push(part);
462
+ continue;
463
+ }
464
+ if (part.type === "text" && part.text.includes("@blob:")) {
465
+ const expanded = await expandBlobsInText(
466
+ part.text,
467
+ resourceManager,
468
+ logger,
469
+ allowedMediaTypes
470
+ );
471
+ expandedParts.push(...expanded);
472
+ continue;
544
473
  }
545
- return expandedParts;
474
+ expandedParts.push(part);
546
475
  }
547
- return content;
476
+ return expandedParts;
548
477
  }
549
478
  function filterMessagesByLLMCapabilities(messages, config, logger) {
550
479
  try {
@@ -688,7 +617,25 @@ async function normalizeToolResult(result, logger) {
688
617
  void 0,
689
618
  void 0
690
619
  );
691
- const parts = coerceContentToParts(content);
620
+ const uiResources = [];
621
+ const otherContent = [];
622
+ if (Array.isArray(content)) {
623
+ for (const item of content) {
624
+ if (item && typeof item === "object" && "type" in item && item.type === "ui-resource") {
625
+ uiResources.push(item);
626
+ } else {
627
+ otherContent.push(item);
628
+ }
629
+ }
630
+ } else {
631
+ otherContent.push(content);
632
+ }
633
+ if (uiResources.length > 0) {
634
+ logger.debug(
635
+ `normalizeToolResult: extracted ${uiResources.length} UI resource(s): ${uiResources.map((r) => r.uri).join(", ")}`
636
+ );
637
+ }
638
+ const parts = coerceContentToParts(otherContent);
692
639
  const inlineMedia = [];
693
640
  parts.forEach((part, index) => {
694
641
  const hint = detectInlineMedia(part, index);
@@ -698,6 +645,7 @@ async function normalizeToolResult(result, logger) {
698
645
  });
699
646
  return {
700
647
  parts,
648
+ uiResources,
701
649
  inlineMedia
702
650
  };
703
651
  }
@@ -715,6 +663,7 @@ async function persistToolMedia(normalized, options, logger) {
715
663
  ...options.toolName ? { toolName: options.toolName } : {},
716
664
  ...options.toolCallId ? { toolCallId: options.toolCallId } : {}
717
665
  } : void 0;
666
+ const storedBlobs = [];
718
667
  if (blobStore) {
719
668
  for (const hint of normalized.inlineMedia) {
720
669
  if (!shouldPersistInlineMedia(hint)) {
@@ -739,6 +688,14 @@ async function persistToolMedia(normalized, options, logger) {
739
688
  const filename = blobRef.metadata.originalName ?? hint.filename;
740
689
  parts[hint.index] = createBlobFilePart(resourceUri, resolvedMimeType, filename);
741
690
  }
691
+ storedBlobs.push({
692
+ uri: resourceUri,
693
+ kind: hint.kind,
694
+ mimeType: blobRef.metadata.mimeType,
695
+ ...blobRef.metadata.originalName && {
696
+ filename: blobRef.metadata.originalName
697
+ }
698
+ });
742
699
  } catch (error) {
743
700
  logger.warn(
744
701
  `Failed to persist tool media: ${error instanceof Error ? error.message : String(error)}`
@@ -746,9 +703,18 @@ async function persistToolMedia(normalized, options, logger) {
746
703
  }
747
704
  }
748
705
  }
706
+ if (storedBlobs.length > 0) {
707
+ const annotations = storedBlobs.map((blob) => {
708
+ const label = blob.filename || blob.kind;
709
+ return `[Stored resource_ref:${blob.uri} (${label}, ${blob.mimeType})]`;
710
+ }).join("\n");
711
+ parts.push({ type: "text", text: annotations });
712
+ logger.debug(`Added blob reference annotations for ${storedBlobs.length} resource(s)`);
713
+ }
749
714
  const resources = extractResourceDescriptors(parts);
750
715
  return {
751
716
  parts,
717
+ uiResources: normalized.uiResources,
752
718
  ...resources ? { resources } : {}
753
719
  };
754
720
  }
@@ -795,53 +761,22 @@ async function sanitizeToolResultToContentWithBlobs(result, logger, blobStore, n
795
761
  }
796
762
  ];
797
763
  }
798
- if (isLikelyBase64String(result)) {
799
- logger.debug("sanitizeToolResultToContentWithBlobs: detected base64-like string");
800
- const approxSize = Math.floor(result.length * 3 / 4);
801
- const shouldStoreAsBlob = blobStore && approxSize > 1024;
802
- if (shouldStoreAsBlob) {
803
- try {
804
- const blobRef = await blobStore.store(result, {
805
- mimeType: "application/octet-stream",
806
- source: "tool",
807
- originalName: buildToolBlobName("output", void 0, namingOptions)
808
- });
809
- logger.debug(
810
- `Stored tool result as blob: ${blobRef.uri} (${approxSize} bytes)`
811
- );
812
- return [
813
- createBlobFilePart(
814
- blobRef.uri,
815
- "application/octet-stream",
816
- "tool-output.bin"
817
- )
818
- ];
819
- } catch (error) {
820
- logger.warn(
821
- `Failed to store blob, falling back to inline: ${String(error)}`
822
- );
823
- }
824
- }
825
- return [
826
- {
827
- type: "file",
828
- data: result,
829
- mimeType: "application/octet-stream",
830
- filename: "tool-output.bin"
831
- }
832
- ];
833
- }
834
764
  if (result.length > MAX_TOOL_TEXT_CHARS) {
835
765
  const head = result.slice(0, 4e3);
836
766
  const tail = result.slice(-1e3);
837
767
  logger.debug(
838
768
  `sanitizeToolResultToContentWithBlobs: truncating long text tool output (len=${result.length})`
839
769
  );
840
- return `${head}
770
+ return [
771
+ {
772
+ type: "text",
773
+ text: `${head}
841
774
  ... [${result.length - 5e3} chars omitted] ...
842
- ${tail}`;
775
+ ${tail}`
776
+ }
777
+ ];
843
778
  }
844
- return result;
779
+ return [{ type: "text", text: result }];
845
780
  }
846
781
  if (Array.isArray(result)) {
847
782
  const parts = [];
@@ -853,10 +788,10 @@ ${tail}`;
853
788
  blobStore,
854
789
  namingOptions
855
790
  );
856
- if (typeof processedItem === "string") {
857
- parts.push({ type: "text", text: processedItem });
858
- } else if (Array.isArray(processedItem)) {
859
- parts.push(...processedItem);
791
+ if (Array.isArray(processedItem)) {
792
+ parts.push(
793
+ ...processedItem
794
+ );
860
795
  }
861
796
  }
862
797
  return parts;
@@ -870,6 +805,34 @@ ${tail}`;
870
805
  const processedContent = [];
871
806
  for (const item of anyObj.content) {
872
807
  if (item && typeof item === "object") {
808
+ if (item.type === "resource" && item.resource) {
809
+ const resource = item.resource;
810
+ const resourceUri = resource.uri;
811
+ if (resourceUri && resourceUri.startsWith("ui://")) {
812
+ logger.debug(
813
+ `Detected MCP-UI resource: ${resourceUri} (${resource.mimeType})`
814
+ );
815
+ const resourceMeta = resource._meta || {};
816
+ const title = resourceMeta.title || resource.title;
817
+ const preferredSize = resourceMeta.preferredSize || resource.preferredSize;
818
+ const uiPart = {
819
+ type: "ui-resource",
820
+ uri: resourceUri,
821
+ mimeType: resource.mimeType || "text/html",
822
+ content: resource.text,
823
+ blob: resource.blob,
824
+ metadata: {
825
+ title,
826
+ preferredSize
827
+ }
828
+ };
829
+ if (!uiPart.metadata?.title && !uiPart.metadata?.preferredSize) {
830
+ delete uiPart.metadata;
831
+ }
832
+ processedContent.push(uiPart);
833
+ continue;
834
+ }
835
+ }
873
836
  if (item.type === "resource" && item.resource) {
874
837
  const resource = item.resource;
875
838
  if (resource.text && resource.mimeType) {
@@ -1066,17 +1029,17 @@ ${tail}`;
1066
1029
  ];
1067
1030
  }
1068
1031
  const cleaned = sanitizeDeepObject(anyObj, logger);
1069
- return safeStringify(cleaned);
1032
+ return [{ type: "text", text: safeStringify(cleaned) }];
1070
1033
  }
1071
- return safeStringify(result ?? "");
1034
+ return [{ type: "text", text: safeStringify(result ?? "") }];
1072
1035
  } catch (err) {
1073
1036
  logger.warn(
1074
1037
  `sanitizeToolResultToContentWithBlobs failed, falling back to string: ${String(err)}`
1075
1038
  );
1076
1039
  try {
1077
- return safeStringify(result ?? "");
1040
+ return [{ type: "text", text: safeStringify(result ?? "") }];
1078
1041
  } catch {
1079
- return String(result ?? "");
1042
+ return [{ type: "text", text: String(result ?? "") }];
1080
1043
  }
1081
1044
  }
1082
1045
  }
@@ -1120,7 +1083,19 @@ function extractResourceDescriptors(parts) {
1120
1083
  return resources.length > 0 ? resources : void 0;
1121
1084
  }
1122
1085
  async function sanitizeToolResult(result, options, logger) {
1123
- const normalized = await normalizeToolResult(result, logger);
1086
+ let display;
1087
+ let resultForNormalization = result;
1088
+ if (result && typeof result === "object" && "_display" in result) {
1089
+ const { _display: rawDisplay, ...rest } = result;
1090
+ if (isValidDisplayData(rawDisplay)) {
1091
+ display = rawDisplay;
1092
+ logger.debug(
1093
+ `sanitizeToolResult: extracted display data (type=${display.type}) for ${options.toolName}`
1094
+ );
1095
+ }
1096
+ resultForNormalization = rest;
1097
+ }
1098
+ const normalized = await normalizeToolResult(resultForNormalization, logger);
1124
1099
  const persisted = await persistToolMedia(
1125
1100
  normalized,
1126
1101
  {
@@ -1131,14 +1106,24 @@ async function sanitizeToolResult(result, options, logger) {
1131
1106
  logger
1132
1107
  );
1133
1108
  const fallbackContent = [{ type: "text", text: "" }];
1134
- const content = persisted.parts.length > 0 ? persisted.parts : fallbackContent;
1109
+ const allContent = [
1110
+ ...persisted.parts,
1111
+ ...persisted.uiResources
1112
+ ];
1113
+ const content = allContent.length > 0 ? allContent : fallbackContent;
1114
+ if (persisted.uiResources.length > 0) {
1115
+ logger.debug(
1116
+ `sanitizeToolResult: including ${persisted.uiResources.length} UI resource(s) in final content for ${options.toolName}`
1117
+ );
1118
+ }
1135
1119
  return {
1136
1120
  content,
1137
1121
  ...persisted.resources ? { resources: persisted.resources } : {},
1138
1122
  meta: {
1139
1123
  toolName: options.toolName,
1140
1124
  toolCallId: options.toolCallId,
1141
- ...typeof options.success === "boolean" ? { success: options.success } : {}
1125
+ success: options.success,
1126
+ ...display ? { display } : {}
1142
1127
  }
1143
1128
  };
1144
1129
  }
@@ -1171,16 +1156,6 @@ function summarizeToolContentForText(content) {
1171
1156
  function base64LengthToBytes(charLength) {
1172
1157
  return Math.floor(charLength * 3 / 4);
1173
1158
  }
1174
- function isDataUri(str) {
1175
- return str.startsWith("data:") && str.includes(";base64,");
1176
- }
1177
- function extractBase64FromDataUri(dataUri) {
1178
- const commaIndex = dataUri.indexOf(",");
1179
- return commaIndex !== -1 ? dataUri.substring(commaIndex + 1) : "";
1180
- }
1181
- function estimateTextTokens(text) {
1182
- return Math.ceil(text.length / 4);
1183
- }
1184
1159
  function toTextForToolMessage(content) {
1185
1160
  if (Array.isArray(content)) {
1186
1161
  return summarizeToolContentForText(content);
@@ -1190,11 +1165,39 @@ function toTextForToolMessage(content) {
1190
1165
  }
1191
1166
  return String(content ?? "");
1192
1167
  }
1168
+ function filterCompacted(history) {
1169
+ let summaryIndex = -1;
1170
+ for (let i = history.length - 1; i >= 0; i--) {
1171
+ const msg = history[i];
1172
+ if (msg?.metadata?.isSummary === true) {
1173
+ summaryIndex = i;
1174
+ break;
1175
+ }
1176
+ }
1177
+ if (summaryIndex === -1) {
1178
+ return history.slice();
1179
+ }
1180
+ return history.slice(summaryIndex);
1181
+ }
1182
+ function formatToolOutputForDisplay(message) {
1183
+ if (isToolMessage(message) && message.compactedAt) {
1184
+ return "[Old tool result content cleared]";
1185
+ }
1186
+ if (typeof message.content === "string") {
1187
+ return message.content;
1188
+ }
1189
+ if (Array.isArray(message.content)) {
1190
+ return message.content.filter((part) => part.type === "text").map((part) => part.text).join("\n");
1191
+ }
1192
+ return "[no content]";
1193
+ }
1193
1194
  export {
1194
- countMessagesTokens,
1195
+ estimateMessagesTokens,
1195
1196
  expandBlobReferences,
1196
1197
  fileTypesToMimePatterns,
1198
+ filterCompacted,
1197
1199
  filterMessagesByLLMCapabilities,
1200
+ formatToolOutputForDisplay,
1198
1201
  getFileData,
1199
1202
  getFileDataWithBlobSupport,
1200
1203
  getFileMediaKind,