@dexto/core 1.7.2 → 1.8.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 (533) hide show
  1. package/dist/agent/DextoAgent.cjs +157 -62
  2. package/dist/agent/DextoAgent.d.ts +71 -17
  3. package/dist/agent/DextoAgent.d.ts.map +1 -1
  4. package/dist/agent/DextoAgent.js +161 -63
  5. package/dist/agent/agent-options.d.ts +6 -10
  6. package/dist/agent/agent-options.d.ts.map +1 -1
  7. package/dist/agent/agentCard.js +1 -1
  8. package/dist/agent/error-codes.js +1 -1
  9. package/dist/agent/errors.js +1 -1
  10. package/dist/agent/index.d.ts +1 -0
  11. package/dist/agent/index.d.ts.map +1 -1
  12. package/dist/agent/index.js +1 -1
  13. package/dist/agent/schemas.d.ts +2 -2
  14. package/dist/agent/schemas.js +1 -1
  15. package/dist/agent/state-manager.js +1 -1
  16. package/dist/approval/error-codes.cjs +1 -1
  17. package/dist/approval/error-codes.d.ts +1 -1
  18. package/dist/approval/error-codes.d.ts.map +1 -1
  19. package/dist/approval/error-codes.js +2 -2
  20. package/dist/approval/errors.cjs +2 -5
  21. package/dist/approval/errors.d.ts.map +1 -1
  22. package/dist/approval/errors.js +3 -6
  23. package/dist/approval/factory.cjs +19 -4
  24. package/dist/approval/factory.d.ts +4 -1
  25. package/dist/approval/factory.d.ts.map +1 -1
  26. package/dist/approval/factory.js +19 -5
  27. package/dist/approval/index.d.ts +1 -1
  28. package/dist/approval/index.d.ts.map +1 -1
  29. package/dist/approval/index.js +1 -1
  30. package/dist/approval/manager.cjs +168 -26
  31. package/dist/approval/manager.d.ts +46 -12
  32. package/dist/approval/manager.d.ts.map +1 -1
  33. package/dist/approval/manager.js +177 -29
  34. package/dist/approval/schemas.cjs +26 -26
  35. package/dist/approval/schemas.d.ts +29 -29
  36. package/dist/approval/schemas.d.ts.map +1 -1
  37. package/dist/approval/schemas.js +23 -23
  38. package/dist/approval/types.cjs +5 -5
  39. package/dist/approval/types.d.ts +18 -18
  40. package/dist/approval/types.d.ts.map +1 -1
  41. package/dist/approval/types.js +6 -6
  42. package/dist/{chunk-PTJYTZNU.js → chunk-C6A6W6XS.js} +1 -44
  43. package/dist/config/index.cjs +75 -0
  44. package/dist/config/index.d.ts +15 -0
  45. package/dist/config/index.d.ts.map +1 -0
  46. package/dist/config/index.js +50 -0
  47. package/dist/context/compaction/overflow.js +1 -1
  48. package/dist/context/compaction/strategies/noop.js +1 -1
  49. package/dist/context/compaction/strategies/reactive-overflow-compaction.js +1 -1
  50. package/dist/context/content-clone.cjs +131 -0
  51. package/dist/context/content-clone.d.ts +7 -0
  52. package/dist/context/content-clone.d.ts.map +1 -0
  53. package/dist/context/content-clone.js +104 -0
  54. package/dist/context/error-codes.js +1 -1
  55. package/dist/context/errors.js +1 -1
  56. package/dist/context/index.cjs +2 -0
  57. package/dist/context/index.d.ts +1 -0
  58. package/dist/context/index.d.ts.map +1 -1
  59. package/dist/context/index.js +2 -1
  60. package/dist/context/manager.cjs +44 -33
  61. package/dist/context/manager.d.ts +7 -7
  62. package/dist/context/manager.d.ts.map +1 -1
  63. package/dist/context/manager.js +45 -34
  64. package/dist/context/media-helpers.js +1 -1
  65. package/dist/context/schemas.cjs +77 -0
  66. package/dist/context/schemas.d.ts +5 -0
  67. package/dist/context/schemas.d.ts.map +1 -0
  68. package/dist/context/schemas.js +53 -0
  69. package/dist/context/types.js +1 -1
  70. package/dist/context/utils.cjs +70 -69
  71. package/dist/context/utils.d.ts +3 -3
  72. package/dist/context/utils.d.ts.map +1 -1
  73. package/dist/context/utils.js +71 -70
  74. package/dist/errors/DextoBaseError.js +1 -1
  75. package/dist/errors/DextoRuntimeError.js +1 -1
  76. package/dist/errors/DextoValidationError.js +1 -1
  77. package/dist/errors/index.js +1 -1
  78. package/dist/errors/result-bridge.js +1 -1
  79. package/dist/errors/types.js +1 -1
  80. package/dist/events/index.cjs +9 -1
  81. package/dist/events/index.d.ts +20 -8
  82. package/dist/events/index.d.ts.map +1 -1
  83. package/dist/events/index.js +10 -2
  84. package/dist/hooks/builtins/content-policy.js +1 -1
  85. package/dist/hooks/builtins/response-sanitizer.js +1 -1
  86. package/dist/hooks/error-codes.js +1 -1
  87. package/dist/hooks/index.js +1 -1
  88. package/dist/hooks/manager.cjs +1 -1
  89. package/dist/hooks/manager.d.ts +2 -2
  90. package/dist/hooks/manager.d.ts.map +1 -1
  91. package/dist/hooks/manager.js +2 -2
  92. package/dist/hooks/types.d.ts +2 -2
  93. package/dist/hooks/types.d.ts.map +1 -1
  94. package/dist/index.browser.js +1 -1
  95. package/dist/index.cjs +2 -0
  96. package/dist/index.d.ts +1 -0
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +2 -1
  99. package/dist/llm/curation-config.js +1 -1
  100. package/dist/llm/curation.js +1 -1
  101. package/dist/llm/error-codes.js +1 -1
  102. package/dist/llm/errors.js +1 -1
  103. package/dist/llm/executor/index.cjs +32 -0
  104. package/dist/llm/executor/index.d.ts +2 -0
  105. package/dist/llm/executor/index.d.ts.map +1 -0
  106. package/dist/llm/executor/index.js +11 -0
  107. package/dist/llm/executor/provider-options.js +1 -1
  108. package/dist/llm/executor/stream-processor.cjs +28 -139
  109. package/dist/llm/executor/stream-processor.d.ts +2 -13
  110. package/dist/llm/executor/stream-processor.d.ts.map +1 -1
  111. package/dist/llm/executor/stream-processor.js +29 -140
  112. package/dist/{session/history/memory.cjs → llm/executor/tool-definitions.cjs} +21 -33
  113. package/dist/llm/executor/tool-definitions.d.ts +4 -0
  114. package/dist/llm/executor/tool-definitions.d.ts.map +1 -0
  115. package/dist/llm/executor/tool-definitions.js +22 -0
  116. package/dist/llm/executor/tool-output-truncator.js +1 -1
  117. package/dist/llm/executor/turn-executor.cjs +1093 -458
  118. package/dist/llm/executor/turn-executor.d.ts +269 -43
  119. package/dist/llm/executor/turn-executor.d.ts.map +1 -1
  120. package/dist/llm/executor/turn-executor.js +1079 -405
  121. package/dist/llm/executor/types.d.ts +6 -0
  122. package/dist/llm/executor/types.d.ts.map +1 -1
  123. package/dist/llm/formatters/vercel.js +1 -1
  124. package/dist/llm/index.cjs +2 -0
  125. package/dist/llm/index.d.ts +1 -0
  126. package/dist/llm/index.d.ts.map +1 -1
  127. package/dist/llm/index.js +2 -1
  128. package/dist/llm/providers/codex-app-server.cjs +22 -2
  129. package/dist/llm/providers/codex-app-server.d.ts.map +1 -1
  130. package/dist/llm/providers/codex-app-server.js +23 -3
  131. package/dist/llm/providers/codex-base-url.js +1 -1
  132. package/dist/llm/providers/local/ai-sdk-adapter.js +1 -1
  133. package/dist/llm/providers/local/downloader.js +1 -1
  134. package/dist/llm/providers/local/error-codes.js +1 -1
  135. package/dist/llm/providers/local/errors.js +1 -1
  136. package/dist/llm/providers/local/gpu-detector.js +1 -1
  137. package/dist/llm/providers/local/index.js +1 -1
  138. package/dist/llm/providers/local/node-llama-provider.js +1 -1
  139. package/dist/llm/providers/local/ollama-provider.js +1 -1
  140. package/dist/llm/providers/local/registry.js +1 -1
  141. package/dist/llm/providers/local/schemas.js +1 -1
  142. package/dist/llm/providers/openrouter-model-registry.js +1 -1
  143. package/dist/llm/reasoning/anthropic-betas.js +1 -1
  144. package/dist/llm/reasoning/anthropic-thinking.js +1 -1
  145. package/dist/llm/reasoning/openai-reasoning-effort.js +1 -1
  146. package/dist/llm/reasoning/profile.js +1 -1
  147. package/dist/llm/reasoning/profiles/anthropic.js +1 -1
  148. package/dist/llm/reasoning/profiles/bedrock.js +1 -1
  149. package/dist/llm/reasoning/profiles/google.js +1 -1
  150. package/dist/llm/reasoning/profiles/openai-compatible.js +1 -1
  151. package/dist/llm/reasoning/profiles/openai.js +1 -1
  152. package/dist/llm/reasoning/profiles/openrouter.js +1 -1
  153. package/dist/llm/reasoning/profiles/shared.js +1 -1
  154. package/dist/llm/reasoning/profiles/vertex.js +1 -1
  155. package/dist/llm/registry/auto-update.js +1 -1
  156. package/dist/llm/registry/index.js +1 -1
  157. package/dist/llm/registry/models.generated.js +1 -1
  158. package/dist/llm/registry/models.manual.js +1 -1
  159. package/dist/llm/registry/sync.js +1 -1
  160. package/dist/llm/resolver.js +1 -1
  161. package/dist/llm/schemas.js +1 -1
  162. package/dist/llm/services/factory.cjs +5 -4
  163. package/dist/llm/services/factory.d.ts +3 -3
  164. package/dist/llm/services/factory.d.ts.map +1 -1
  165. package/dist/llm/services/factory.js +6 -5
  166. package/dist/llm/services/types.d.ts +10 -1
  167. package/dist/llm/services/types.d.ts.map +1 -1
  168. package/dist/llm/services/vercel.cjs +23 -8
  169. package/dist/llm/services/vercel.d.ts +11 -7
  170. package/dist/llm/services/vercel.d.ts.map +1 -1
  171. package/dist/llm/services/vercel.js +24 -9
  172. package/dist/llm/types.js +1 -1
  173. package/dist/llm/usage-metadata.cjs +20 -3
  174. package/dist/llm/usage-metadata.d.ts +1 -0
  175. package/dist/llm/usage-metadata.d.ts.map +1 -1
  176. package/dist/llm/usage-metadata.js +19 -3
  177. package/dist/llm/usage-scope.js +1 -1
  178. package/dist/llm/usage-summary.js +1 -1
  179. package/dist/llm/validation.js +1 -1
  180. package/dist/logger/browser.js +1 -1
  181. package/dist/logger/default-logger-factory.js +1 -1
  182. package/dist/logger/factory.js +1 -1
  183. package/dist/logger/index.js +1 -1
  184. package/dist/logger/logger.js +1 -1
  185. package/dist/logger/v2/dexto-logger.js +1 -1
  186. package/dist/logger/v2/error-codes.js +1 -1
  187. package/dist/logger/v2/errors.js +1 -1
  188. package/dist/logger/v2/schemas.js +1 -1
  189. package/dist/logger/v2/test-utils.js +1 -1
  190. package/dist/logger/v2/transport-factory.js +1 -1
  191. package/dist/logger/v2/transports/console-transport.js +1 -1
  192. package/dist/logger/v2/transports/file-transport.js +1 -1
  193. package/dist/logger/v2/transports/silent-transport.js +1 -1
  194. package/dist/logger/v2/types.js +1 -1
  195. package/dist/mcp/bundled-config.js +1 -1
  196. package/dist/mcp/error-codes.js +1 -1
  197. package/dist/mcp/errors.js +1 -1
  198. package/dist/mcp/index.js +1 -1
  199. package/dist/mcp/manager.js +1 -1
  200. package/dist/mcp/mcp-client.js +1 -1
  201. package/dist/mcp/resolver.js +1 -1
  202. package/dist/mcp/schemas.js +1 -1
  203. package/dist/memory/error-codes.js +1 -1
  204. package/dist/memory/errors.js +1 -1
  205. package/dist/memory/index.js +1 -1
  206. package/dist/memory/manager.cjs +7 -27
  207. package/dist/memory/manager.d.ts +4 -12
  208. package/dist/memory/manager.d.ts.map +1 -1
  209. package/dist/memory/manager.js +8 -28
  210. package/dist/memory/schemas.js +1 -1
  211. package/dist/prompts/error-codes.js +1 -1
  212. package/dist/prompts/errors.js +1 -1
  213. package/dist/prompts/index.js +1 -1
  214. package/dist/prompts/name-validation.js +1 -1
  215. package/dist/prompts/prompt-manager.cjs +9 -38
  216. package/dist/prompts/prompt-manager.d.ts +2 -10
  217. package/dist/prompts/prompt-manager.d.ts.map +1 -1
  218. package/dist/prompts/prompt-manager.js +10 -39
  219. package/dist/prompts/providers/config-prompt-provider.cjs +8 -87
  220. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
  221. package/dist/prompts/providers/config-prompt-provider.js +9 -88
  222. package/dist/prompts/providers/custom-prompt-provider.cjs +21 -22
  223. package/dist/prompts/providers/custom-prompt-provider.d.ts +19 -4
  224. package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
  225. package/dist/prompts/providers/custom-prompt-provider.js +22 -23
  226. package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
  227. package/dist/prompts/schemas.cjs +2 -24
  228. package/dist/prompts/schemas.d.ts +0 -52
  229. package/dist/prompts/schemas.d.ts.map +1 -1
  230. package/dist/prompts/schemas.js +3 -25
  231. package/dist/prompts/types.d.ts +5 -32
  232. package/dist/prompts/types.d.ts.map +1 -1
  233. package/dist/prompts/utils.js +1 -1
  234. package/dist/resources/agent-resources-provider.js +1 -1
  235. package/dist/resources/error-codes.js +1 -1
  236. package/dist/resources/errors.js +1 -1
  237. package/dist/resources/handlers/blob-handler.cjs +14 -11
  238. package/dist/resources/handlers/blob-handler.d.ts +4 -4
  239. package/dist/resources/handlers/blob-handler.d.ts.map +1 -1
  240. package/dist/resources/handlers/blob-handler.js +15 -12
  241. package/dist/resources/handlers/factory.cjs +3 -3
  242. package/dist/resources/handlers/factory.js +4 -4
  243. package/dist/resources/handlers/filesystem-handler.js +1 -1
  244. package/dist/resources/handlers/types.d.ts +2 -2
  245. package/dist/resources/handlers/types.d.ts.map +1 -1
  246. package/dist/resources/index.js +1 -1
  247. package/dist/resources/manager.cjs +10 -7
  248. package/dist/resources/manager.d.ts +4 -4
  249. package/dist/resources/manager.d.ts.map +1 -1
  250. package/dist/resources/manager.js +11 -8
  251. package/dist/resources/reference-parser.js +1 -1
  252. package/dist/resources/schemas.cjs +1 -1
  253. package/dist/resources/schemas.d.ts +2 -2
  254. package/dist/resources/schemas.js +2 -2
  255. package/dist/runtime/host-runtime.js +1 -1
  256. package/dist/runtime/index.cjs +3 -0
  257. package/dist/runtime/index.d.ts +2 -0
  258. package/dist/runtime/index.d.ts.map +1 -1
  259. package/dist/runtime/index.js +3 -1
  260. package/dist/runtime/run-context.js +1 -1
  261. package/dist/search/index.js +1 -1
  262. package/dist/search/search-service.cjs +6 -13
  263. package/dist/search/search-service.d.ts +5 -3
  264. package/dist/search/search-service.d.ts.map +1 -1
  265. package/dist/search/search-service.js +7 -14
  266. package/dist/session/chat-session.cjs +264 -108
  267. package/dist/session/chat-session.d.ts +75 -21
  268. package/dist/session/chat-session.d.ts.map +1 -1
  269. package/dist/session/chat-session.js +268 -108
  270. package/dist/session/error-codes.js +1 -1
  271. package/dist/session/errors.js +1 -1
  272. package/dist/session/index.cjs +19 -2
  273. package/dist/session/index.d.ts +4 -3
  274. package/dist/session/index.d.ts.map +1 -1
  275. package/dist/session/index.js +19 -3
  276. package/dist/session/message-queue.cjs +82 -51
  277. package/dist/session/message-queue.d.ts +13 -8
  278. package/dist/session/message-queue.d.ts.map +1 -1
  279. package/dist/session/message-queue.js +83 -52
  280. package/dist/session/queue-clone.cjs +50 -0
  281. package/dist/session/queue-clone.d.ts +5 -0
  282. package/dist/session/queue-clone.d.ts.map +1 -0
  283. package/dist/session/queue-clone.js +25 -0
  284. package/dist/session/schemas.cjs +74 -2
  285. package/dist/session/schemas.d.ts +94 -0
  286. package/dist/session/schemas.d.ts.map +1 -1
  287. package/dist/session/schemas.js +69 -2
  288. package/dist/session/session-manager.cjs +107 -123
  289. package/dist/session/session-manager.d.ts +7 -6
  290. package/dist/session/session-manager.d.ts.map +1 -1
  291. package/dist/session/session-manager.js +108 -124
  292. package/dist/session/title-generator.cjs +14 -26
  293. package/dist/session/title-generator.d.ts +4 -6
  294. package/dist/session/title-generator.d.ts.map +1 -1
  295. package/dist/session/title-generator.js +16 -28
  296. package/dist/session/types.cjs +28 -0
  297. package/dist/session/types.d.ts +5 -1
  298. package/dist/session/types.d.ts.map +1 -1
  299. package/dist/session/types.js +19 -0
  300. package/dist/{session/history/factory.cjs → skills/index.cjs} +9 -9
  301. package/dist/skills/index.d.ts +4 -0
  302. package/dist/skills/index.d.ts.map +1 -0
  303. package/dist/skills/index.js +7 -0
  304. package/dist/skills/skill-manager.cjs +76 -0
  305. package/dist/skills/skill-manager.d.ts +13 -0
  306. package/dist/skills/skill-manager.d.ts.map +1 -0
  307. package/dist/skills/skill-manager.js +53 -0
  308. package/dist/skills/types.d.ts +24 -0
  309. package/dist/skills/types.d.ts.map +1 -0
  310. package/dist/skills/workspace-skill-source.cjs +120 -0
  311. package/dist/skills/workspace-skill-source.d.ts +16 -0
  312. package/dist/skills/workspace-skill-source.d.ts.map +1 -0
  313. package/dist/skills/workspace-skill-source.js +97 -0
  314. package/dist/storage/approvals/types.cjs +38 -0
  315. package/dist/storage/approvals/types.d.ts +54 -0
  316. package/dist/storage/approvals/types.d.ts.map +1 -0
  317. package/dist/storage/approvals/types.js +14 -0
  318. package/dist/storage/artifacts/types.d.ts +73 -0
  319. package/dist/storage/artifacts/types.d.ts.map +1 -0
  320. package/dist/storage/conversation/database.cjs +233 -0
  321. package/dist/storage/conversation/database.d.ts +38 -0
  322. package/dist/storage/conversation/database.d.ts.map +1 -0
  323. package/dist/storage/conversation/database.js +210 -0
  324. package/dist/storage/conversation/types.cjs +16 -0
  325. package/dist/storage/conversation/types.d.ts +21 -0
  326. package/dist/storage/conversation/types.d.ts.map +1 -0
  327. package/dist/storage/conversation/types.js +0 -0
  328. package/dist/storage/database/types.d.ts +4 -0
  329. package/dist/storage/database/types.d.ts.map +1 -1
  330. package/dist/storage/error-codes.js +1 -1
  331. package/dist/storage/errors.cjs +6 -6
  332. package/dist/storage/errors.d.ts +2 -2
  333. package/dist/storage/errors.js +7 -7
  334. package/dist/storage/index.cjs +42 -5
  335. package/dist/storage/index.d.ts +19 -8
  336. package/dist/storage/index.d.ts.map +1 -1
  337. package/dist/storage/index.js +39 -4
  338. package/dist/storage/memories/types.cjs +16 -0
  339. package/dist/storage/memories/types.d.ts +17 -0
  340. package/dist/storage/memories/types.d.ts.map +1 -0
  341. package/dist/storage/memories/types.js +0 -0
  342. package/dist/storage/message-queue/types.cjs +16 -0
  343. package/dist/storage/message-queue/types.d.ts +15 -0
  344. package/dist/storage/message-queue/types.d.ts.map +1 -0
  345. package/dist/storage/message-queue/types.js +0 -0
  346. package/dist/storage/prompts/types.cjs +16 -0
  347. package/dist/storage/prompts/types.d.ts +14 -0
  348. package/dist/storage/prompts/types.d.ts.map +1 -0
  349. package/dist/storage/prompts/types.js +0 -0
  350. package/dist/storage/runtime-events/types.cjs +16 -0
  351. package/dist/storage/runtime-events/types.d.ts +19 -0
  352. package/dist/storage/runtime-events/types.d.ts.map +1 -0
  353. package/dist/storage/runtime-events/types.js +0 -0
  354. package/dist/storage/sessions/types.cjs +16 -0
  355. package/dist/storage/sessions/types.d.ts +19 -0
  356. package/dist/storage/sessions/types.d.ts.map +1 -0
  357. package/dist/storage/sessions/types.js +0 -0
  358. package/dist/storage/stores/backend.cjs +702 -0
  359. package/dist/storage/stores/backend.d.ts +303 -0
  360. package/dist/storage/stores/backend.d.ts.map +1 -0
  361. package/dist/storage/stores/backend.js +677 -0
  362. package/dist/storage/stores/in-memory.cjs +510 -0
  363. package/dist/storage/stores/in-memory.d.ts +11 -0
  364. package/dist/storage/stores/in-memory.d.ts.map +1 -0
  365. package/dist/storage/stores/in-memory.js +487 -0
  366. package/dist/storage/stores/types.cjs +16 -0
  367. package/dist/storage/stores/types.d.ts +36 -0
  368. package/dist/storage/stores/types.d.ts.map +1 -0
  369. package/dist/storage/stores/types.js +0 -0
  370. package/dist/storage/tool-executions/types.cjs +127 -0
  371. package/dist/storage/tool-executions/types.d.ts +193 -0
  372. package/dist/storage/tool-executions/types.d.ts.map +1 -0
  373. package/dist/storage/tool-executions/types.js +96 -0
  374. package/dist/storage/tool-preferences/types.cjs +16 -0
  375. package/dist/storage/tool-preferences/types.d.ts +29 -0
  376. package/dist/storage/tool-preferences/types.d.ts.map +1 -0
  377. package/dist/storage/tool-preferences/types.js +0 -0
  378. package/dist/storage/tool-state/types.cjs +16 -0
  379. package/dist/storage/tool-state/types.d.ts +20 -0
  380. package/dist/storage/tool-state/types.d.ts.map +1 -0
  381. package/dist/storage/tool-state/types.js +0 -0
  382. package/dist/storage/workspaces/types.cjs +16 -0
  383. package/dist/storage/workspaces/types.d.ts +19 -0
  384. package/dist/storage/workspaces/types.d.ts.map +1 -0
  385. package/dist/storage/workspaces/types.js +0 -0
  386. package/dist/systemPrompt/contributors.cjs +10 -14
  387. package/dist/systemPrompt/contributors.d.ts +3 -3
  388. package/dist/systemPrompt/contributors.d.ts.map +1 -1
  389. package/dist/systemPrompt/contributors.js +11 -15
  390. package/dist/systemPrompt/error-codes.js +1 -1
  391. package/dist/systemPrompt/errors.js +1 -1
  392. package/dist/systemPrompt/in-built-prompts.js +1 -1
  393. package/dist/systemPrompt/index.js +1 -1
  394. package/dist/systemPrompt/manager.js +1 -1
  395. package/dist/systemPrompt/registry.js +1 -1
  396. package/dist/systemPrompt/schemas.js +1 -1
  397. package/dist/telemetry/decorators.js +1 -1
  398. package/dist/telemetry/error-codes.js +1 -1
  399. package/dist/telemetry/errors.js +1 -1
  400. package/dist/telemetry/exporters.js +1 -1
  401. package/dist/telemetry/index.js +1 -1
  402. package/dist/telemetry/schemas.js +1 -1
  403. package/dist/telemetry/telemetry.js +1 -1
  404. package/dist/telemetry/utils.js +1 -1
  405. package/dist/test-utils/in-memory-storage.cjs +9 -17
  406. package/dist/test-utils/in-memory-storage.js +9 -16
  407. package/dist/test-utils/session-state-stores.cjs +21 -24
  408. package/dist/test-utils/session-state-stores.js +22 -24
  409. package/dist/tools/{confirmation → approval}/allowed-tools-provider/factory.cjs +1 -1
  410. package/dist/tools/{confirmation → approval}/allowed-tools-provider/factory.d.ts +2 -2
  411. package/dist/tools/approval/allowed-tools-provider/factory.d.ts.map +1 -0
  412. package/dist/tools/{confirmation → approval}/allowed-tools-provider/factory.js +2 -2
  413. package/dist/tools/approval/allowed-tools-provider/in-memory.d.ts.map +1 -0
  414. package/dist/tools/{confirmation → approval}/allowed-tools-provider/in-memory.js +1 -1
  415. package/dist/tools/approval/allowed-tools-provider/storage.cjs +66 -0
  416. package/dist/tools/{confirmation → approval}/allowed-tools-provider/storage.d.ts +4 -10
  417. package/dist/tools/approval/allowed-tools-provider/storage.d.ts.map +1 -0
  418. package/dist/tools/approval/allowed-tools-provider/storage.js +43 -0
  419. package/dist/tools/approval/allowed-tools-provider/types.cjs +16 -0
  420. package/dist/tools/approval/allowed-tools-provider/types.d.ts.map +1 -0
  421. package/dist/tools/approval/allowed-tools-provider/types.js +0 -0
  422. package/dist/tools/approval/session-tool-policy.cjs +269 -0
  423. package/dist/tools/approval/session-tool-policy.d.ts +43 -0
  424. package/dist/tools/approval/session-tool-policy.d.ts.map +1 -0
  425. package/dist/tools/approval/session-tool-policy.js +245 -0
  426. package/dist/tools/define-tool.js +1 -1
  427. package/dist/tools/display-types.js +1 -1
  428. package/dist/tools/error-codes.cjs +3 -3
  429. package/dist/tools/error-codes.d.ts +4 -4
  430. package/dist/tools/error-codes.d.ts.map +1 -1
  431. package/dist/tools/error-codes.js +4 -4
  432. package/dist/tools/errors.cjs +12 -12
  433. package/dist/tools/errors.d.ts +6 -6
  434. package/dist/tools/errors.d.ts.map +1 -1
  435. package/dist/tools/errors.js +13 -13
  436. package/dist/tools/index.cjs +3 -0
  437. package/dist/tools/index.d.ts +3 -0
  438. package/dist/tools/index.d.ts.map +1 -1
  439. package/dist/tools/index.js +3 -1
  440. package/dist/tools/pattern-utils.js +1 -1
  441. package/dist/tools/presentation/tool-presentation.cjs +182 -0
  442. package/dist/tools/presentation/tool-presentation.d.ts +51 -0
  443. package/dist/tools/presentation/tool-presentation.d.ts.map +1 -0
  444. package/dist/tools/presentation/tool-presentation.js +159 -0
  445. package/dist/tools/presentation.js +1 -1
  446. package/dist/tools/schemas.cjs +5 -10
  447. package/dist/tools/schemas.d.ts +1 -4
  448. package/dist/tools/schemas.d.ts.map +1 -1
  449. package/dist/tools/schemas.js +6 -11
  450. package/dist/tools/session-tool-preferences-store.cjs +12 -28
  451. package/dist/tools/session-tool-preferences-store.d.ts +4 -7
  452. package/dist/tools/session-tool-preferences-store.d.ts.map +1 -1
  453. package/dist/tools/session-tool-preferences-store.js +12 -29
  454. package/dist/tools/tool-call-metadata.js +1 -1
  455. package/dist/tools/tool-manager.cjs +871 -834
  456. package/dist/tools/tool-manager.d.ts +94 -96
  457. package/dist/tools/tool-manager.d.ts.map +1 -1
  458. package/dist/tools/tool-manager.js +876 -833
  459. package/dist/tools/types.d.ts +10 -14
  460. package/dist/tools/types.d.ts.map +1 -1
  461. package/dist/utils/api-key-resolver.js +1 -1
  462. package/dist/utils/async-context.js +1 -1
  463. package/dist/utils/debug.js +1 -1
  464. package/dist/utils/defer.js +1 -1
  465. package/dist/utils/env.js +1 -1
  466. package/dist/utils/error-conversion.js +1 -1
  467. package/dist/utils/execution-context.js +1 -1
  468. package/dist/utils/fs-walk.js +1 -1
  469. package/dist/utils/path.js +1 -1
  470. package/dist/utils/redactor.js +1 -1
  471. package/dist/utils/result.js +1 -1
  472. package/dist/utils/safe-stringify.js +1 -1
  473. package/dist/utils/schema.js +1 -1
  474. package/dist/utils/service-initializer.cjs +37 -33
  475. package/dist/utils/service-initializer.d.ts +9 -5
  476. package/dist/utils/service-initializer.d.ts.map +1 -1
  477. package/dist/utils/service-initializer.js +38 -34
  478. package/dist/utils/zod-schema-converter.js +1 -1
  479. package/dist/workspace/error-codes.cjs +5 -1
  480. package/dist/workspace/error-codes.d.ts +4 -0
  481. package/dist/workspace/error-codes.d.ts.map +1 -1
  482. package/dist/workspace/error-codes.js +6 -2
  483. package/dist/workspace/errors.cjs +43 -0
  484. package/dist/workspace/errors.d.ts +9 -0
  485. package/dist/workspace/errors.d.ts.map +1 -1
  486. package/dist/workspace/errors.js +44 -1
  487. package/dist/workspace/index.d.ts +1 -1
  488. package/dist/workspace/index.d.ts.map +1 -1
  489. package/dist/workspace/index.js +1 -1
  490. package/dist/workspace/manager.cjs +21 -29
  491. package/dist/workspace/manager.d.ts +6 -6
  492. package/dist/workspace/manager.d.ts.map +1 -1
  493. package/dist/workspace/manager.js +22 -30
  494. package/dist/workspace/types.d.ts +47 -0
  495. package/dist/workspace/types.d.ts.map +1 -1
  496. package/package.json +114 -2
  497. package/dist/approval/session-approval-store.cjs +0 -91
  498. package/dist/approval/session-approval-store.d.ts +0 -37
  499. package/dist/approval/session-approval-store.d.ts.map +0 -1
  500. package/dist/approval/session-approval-store.js +0 -68
  501. package/dist/session/history/database.cjs +0 -232
  502. package/dist/session/history/database.d.ts +0 -41
  503. package/dist/session/history/database.d.ts.map +0 -1
  504. package/dist/session/history/database.js +0 -209
  505. package/dist/session/history/factory.d.ts +0 -11
  506. package/dist/session/history/factory.d.ts.map +0 -1
  507. package/dist/session/history/factory.js +0 -8
  508. package/dist/session/history/memory.d.ts +0 -22
  509. package/dist/session/history/memory.d.ts.map +0 -1
  510. package/dist/session/history/memory.js +0 -34
  511. package/dist/session/history/types.d.ts +0 -26
  512. package/dist/session/history/types.d.ts.map +0 -1
  513. package/dist/session/message-queue-store.cjs +0 -75
  514. package/dist/session/message-queue-store.d.ts +0 -16
  515. package/dist/session/message-queue-store.d.ts.map +0 -1
  516. package/dist/session/message-queue-store.js +0 -52
  517. package/dist/storage/storage-manager.cjs +0 -209
  518. package/dist/storage/storage-manager.d.ts +0 -77
  519. package/dist/storage/storage-manager.d.ts.map +0 -1
  520. package/dist/storage/storage-manager.js +0 -186
  521. package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts.map +0 -1
  522. package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts.map +0 -1
  523. package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +0 -69
  524. package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts.map +0 -1
  525. package/dist/tools/confirmation/allowed-tools-provider/storage.js +0 -46
  526. package/dist/tools/confirmation/allowed-tools-provider/types.d.ts.map +0 -1
  527. /package/dist/{session/history → skills}/types.cjs +0 -0
  528. /package/dist/{session/history → skills}/types.js +0 -0
  529. /package/dist/{tools/confirmation/allowed-tools-provider → storage/artifacts}/types.cjs +0 -0
  530. /package/dist/{tools/confirmation/allowed-tools-provider → storage/artifacts}/types.js +0 -0
  531. /package/dist/tools/{confirmation → approval}/allowed-tools-provider/in-memory.cjs +0 -0
  532. /package/dist/tools/{confirmation → approval}/allowed-tools-provider/in-memory.d.ts +0 -0
  533. /package/dist/tools/{confirmation → approval}/allowed-tools-provider/types.d.ts +0 -0
@@ -21,29 +21,26 @@ __export(stream_processor_exports, {
21
21
  StreamProcessor: () => StreamProcessor
22
22
  });
23
23
  module.exports = __toCommonJS(stream_processor_exports);
24
- var import_tool_output_truncator = require("./tool-output-truncator.js");
25
- var import_utils = require("../../context/utils.js");
26
24
  var import_types2 = require("../../logger/v2/types.js");
27
25
  var import_usage_metadata = require("../usage-metadata.js");
26
+ function finiteUsageCount(value) {
27
+ return typeof value === "number" && Number.isFinite(value) ? value : void 0;
28
+ }
28
29
  class StreamProcessor {
29
30
  /**
30
31
  * @param contextManager Context manager for message persistence
31
32
  * @param eventBus Event bus for emitting events
32
- * @param resourceManager Resource manager for blob storage
33
33
  * @param abortSignal Abort signal for cancellation
34
34
  * @param config Provider/model configuration
35
35
  * @param logger Logger instance
36
36
  * @param streaming If true, emits llm:chunk events. Default true.
37
- * @param toolCallMetadata Map of tool call IDs to tool-call metadata (approval + presentation)
38
37
  */
39
- constructor(contextManager, eventBus, resourceManager, abortSignal, config, logger, streaming = true, toolCallMetadata) {
38
+ constructor(contextManager, eventBus, abortSignal, config, logger, streaming = true) {
40
39
  this.contextManager = contextManager;
41
40
  this.eventBus = eventBus;
42
- this.resourceManager = resourceManager;
43
41
  this.abortSignal = abortSignal;
44
42
  this.config = config;
45
43
  this.streaming = streaming;
46
- this.toolCallMetadata = toolCallMetadata;
47
44
  this.logger = logger.createChild(import_types2.DextoLogComponent.EXECUTOR);
48
45
  this.usageScopeId = config.usageScopeId;
49
46
  }
@@ -56,6 +53,7 @@ class StreamProcessor {
56
53
  logger;
57
54
  hasStepUsage = false;
58
55
  usageScopeId;
56
+ modelToolCalls = [];
59
57
  /**
60
58
  * Track pending tool calls (added to context but no result yet).
61
59
  * On cancel/abort, we add synthetic "cancelled" results to maintain tool_use/tool_result pairing.
@@ -170,60 +168,14 @@ class StreamProcessor {
170
168
  };
171
169
  }
172
170
  await this.contextManager.addToolCall(this.assistantMessageId, toolCall);
173
- this.pendingToolCalls.set(event.toolCallId, {
174
- toolName: event.toolName
175
- });
176
- this.partialToolCalls.delete(event.toolCallId);
177
- break;
178
- }
179
- case "tool-result": {
180
- const rawResult = event.output;
181
- this.logger.debug("Tool result received", {
182
- toolName: event.toolName,
171
+ this.modelToolCalls.push({
183
172
  toolCallId: event.toolCallId,
184
- rawResult
185
- });
186
- const sanitized = await (0, import_utils.sanitizeToolResult)(
187
- rawResult,
188
- {
189
- blobStore: this.resourceManager.getBlobStore(),
190
- toolName: event.toolName,
191
- toolCallId: event.toolCallId,
192
- success: true
193
- },
194
- this.logger
195
- );
196
- const truncated = (0, import_tool_output_truncator.truncateToolResult)(sanitized);
197
- const metadata = this.toolCallMetadata?.get(event.toolCallId);
198
- await this.contextManager.addToolResult(
199
- event.toolCallId,
200
- event.toolName,
201
- truncated,
202
- // Includes meta.success from sanitization
203
- metadata
204
- // Only tool-call metadata if present
205
- );
206
- this.eventBus.emit("llm:tool-result", {
207
173
  toolName: event.toolName,
208
- ...metadata?.presentationSnapshot !== void 0 && {
209
- presentationSnapshot: metadata.presentationSnapshot
210
- },
211
- ...metadata?.meta !== void 0 && {
212
- meta: metadata.meta
213
- },
214
- callId: event.toolCallId,
215
- success: true,
216
- sanitized: truncated,
217
- rawResult,
218
- ...metadata?.requireApproval !== void 0 && {
219
- requireApproval: metadata.requireApproval
220
- },
221
- ...metadata?.approvalStatus !== void 0 && {
222
- approvalStatus: metadata.approvalStatus
223
- }
174
+ input: event.input
175
+ });
176
+ this.pendingToolCalls.set(event.toolCallId, {
177
+ toolName: event.toolName
224
178
  });
225
- this.toolCallMetadata?.delete(event.toolCallId);
226
- this.pendingToolCalls.delete(event.toolCallId);
227
179
  this.partialToolCalls.delete(event.toolCallId);
228
180
  break;
229
181
  }
@@ -314,58 +266,6 @@ class StreamProcessor {
314
266
  }
315
267
  break;
316
268
  }
317
- case "tool-error": {
318
- this.logger.error("Tool execution failed", {
319
- toolName: event.toolName,
320
- toolCallId: event.toolCallId,
321
- error: event.error
322
- });
323
- const errorMessage = event.error instanceof Error ? event.error.message : String(event.error);
324
- const metadata = this.toolCallMetadata?.get(event.toolCallId);
325
- const errorResult = {
326
- content: [{ type: "text", text: `Error: ${errorMessage}` }],
327
- meta: {
328
- toolName: event.toolName,
329
- toolCallId: event.toolCallId,
330
- success: false
331
- }
332
- };
333
- await this.contextManager.addToolResult(
334
- event.toolCallId,
335
- event.toolName,
336
- errorResult,
337
- metadata
338
- );
339
- this.eventBus.emit("llm:tool-result", {
340
- toolName: event.toolName,
341
- ...metadata?.presentationSnapshot !== void 0 && {
342
- presentationSnapshot: metadata.presentationSnapshot
343
- },
344
- ...metadata?.meta !== void 0 && {
345
- meta: metadata.meta
346
- },
347
- callId: event.toolCallId,
348
- success: false,
349
- error: errorMessage,
350
- ...metadata?.requireApproval !== void 0 && {
351
- requireApproval: metadata.requireApproval
352
- },
353
- ...metadata?.approvalStatus !== void 0 && {
354
- approvalStatus: metadata.approvalStatus
355
- }
356
- });
357
- this.eventBus.emit("llm:error", {
358
- error: event.error instanceof Error ? event.error : new Error(String(event.error)),
359
- context: `Tool execution failed: ${event.toolName}`,
360
- toolCallId: event.toolCallId,
361
- recoverable: true
362
- // Tool errors are typically recoverable
363
- });
364
- this.toolCallMetadata?.delete(event.toolCallId);
365
- this.pendingToolCalls.delete(event.toolCallId);
366
- this.partialToolCalls.delete(event.toolCallId);
367
- break;
368
- }
369
269
  case "error": {
370
270
  const err = event.error instanceof Error ? event.error : new Error(String(event.error));
371
271
  await this.persistFailedToolResults(err.message);
@@ -392,7 +292,8 @@ class StreamProcessor {
392
292
  return {
393
293
  text: this.accumulatedText,
394
294
  finishReason: "cancelled",
395
- usage: this.actualTokens
295
+ usage: this.actualTokens,
296
+ toolCalls: this.modelToolCalls
396
297
  };
397
298
  }
398
299
  }
@@ -420,7 +321,8 @@ class StreamProcessor {
420
321
  return {
421
322
  text: this.accumulatedText,
422
323
  finishReason: "cancelled",
423
- usage: this.actualTokens
324
+ usage: this.actualTokens,
325
+ toolCalls: this.modelToolCalls
424
326
  };
425
327
  }
426
328
  this.logger.error("Stream processing failed", { error });
@@ -429,28 +331,29 @@ class StreamProcessor {
429
331
  return {
430
332
  text: this.accumulatedText,
431
333
  finishReason: this.finishReason,
432
- usage: this.actualTokens
334
+ usage: this.actualTokens,
335
+ toolCalls: this.modelToolCalls
433
336
  };
434
337
  }
435
338
  getCacheTokensFromProviderMetadata(providerMetadata) {
436
339
  const anthropicMeta = providerMetadata?.["anthropic"];
437
340
  const bedrockMeta = providerMetadata?.["bedrock"];
438
- const cacheWriteTokens = anthropicMeta?.["cacheCreationInputTokens"] ?? bedrockMeta?.usage?.["cacheWriteInputTokens"] ?? 0;
439
- const cacheReadTokens = anthropicMeta?.["cacheReadInputTokens"] ?? bedrockMeta?.usage?.["cacheReadInputTokens"] ?? 0;
341
+ const cacheWriteTokens = finiteUsageCount(anthropicMeta?.["cacheCreationInputTokens"]) ?? finiteUsageCount(bedrockMeta?.usage?.["cacheWriteInputTokens"]) ?? 0;
342
+ const cacheReadTokens = finiteUsageCount(anthropicMeta?.["cacheReadInputTokens"]) ?? finiteUsageCount(bedrockMeta?.usage?.["cacheReadInputTokens"]) ?? 0;
440
343
  return { cacheReadTokens, cacheWriteTokens };
441
344
  }
442
345
  normalizeUsage(usage, providerMetadata) {
443
- const inputTokensRaw = usage?.inputTokens ?? 0;
444
- const outputTokens = usage?.outputTokens ?? 0;
445
- const totalTokens = usage?.totalTokens ?? 0;
446
- const reasoningTokens = usage?.reasoningTokens;
447
- const cachedInputTokens = usage?.cachedInputTokens;
346
+ const inputTokensRaw = finiteUsageCount(usage?.inputTokens) ?? 0;
347
+ const outputTokens = finiteUsageCount(usage?.outputTokens) ?? 0;
348
+ const totalTokens = finiteUsageCount(usage?.totalTokens) ?? 0;
349
+ const reasoningTokens = finiteUsageCount(usage?.reasoningTokens);
350
+ const cachedInputTokens = finiteUsageCount(usage?.cachedInputTokens);
448
351
  const inputTokenDetails = usage?.inputTokenDetails;
449
352
  const providerCache = this.getCacheTokensFromProviderMetadata(providerMetadata);
450
- const cacheReadTokens = inputTokenDetails?.cacheReadTokens ?? cachedInputTokens ?? providerCache.cacheReadTokens ?? 0;
451
- const cacheWriteTokens = inputTokenDetails?.cacheWriteTokens ?? providerCache.cacheWriteTokens ?? 0;
353
+ const cacheReadTokens = finiteUsageCount(inputTokenDetails?.cacheReadTokens) ?? cachedInputTokens ?? providerCache.cacheReadTokens ?? 0;
354
+ const cacheWriteTokens = finiteUsageCount(inputTokenDetails?.cacheWriteTokens) ?? providerCache.cacheWriteTokens ?? 0;
452
355
  const needsCacheWriteAdjustment = inputTokenDetails === void 0 && cachedInputTokens !== void 0 && providerCache.cacheWriteTokens > 0;
453
- const noCacheTokens = inputTokenDetails?.noCacheTokens ?? (cachedInputTokens !== void 0 ? inputTokensRaw - cachedInputTokens - (needsCacheWriteAdjustment ? providerCache.cacheWriteTokens : 0) : inputTokensRaw);
356
+ const noCacheTokens = finiteUsageCount(inputTokenDetails?.noCacheTokens) ?? (cachedInputTokens !== void 0 ? inputTokensRaw - cachedInputTokens - (needsCacheWriteAdjustment ? providerCache.cacheWriteTokens : 0) : inputTokensRaw);
454
357
  return {
455
358
  inputTokens: Math.max(0, noCacheTokens),
456
359
  outputTokens,
@@ -581,7 +484,6 @@ class StreamProcessor {
581
484
  `Persisting ${options.logLabel} results for ${this.pendingToolCalls.size} pending tool call(s)`
582
485
  );
583
486
  for (const [toolCallId, { toolName }] of this.pendingToolCalls) {
584
- const metadata = this.toolCallMetadata?.get(toolCallId);
585
487
  const syntheticResult = {
586
488
  content: [{ type: "text", text: options.resultText }],
587
489
  meta: {
@@ -594,27 +496,14 @@ class StreamProcessor {
594
496
  toolCallId,
595
497
  toolName,
596
498
  syntheticResult,
597
- metadata
499
+ void 0
598
500
  );
599
501
  this.eventBus.emit("llm:tool-result", {
600
502
  toolName,
601
- ...metadata?.presentationSnapshot !== void 0 && {
602
- presentationSnapshot: metadata.presentationSnapshot
603
- },
604
- ...metadata?.meta !== void 0 && {
605
- meta: metadata.meta
606
- },
607
503
  callId: toolCallId,
608
504
  success: false,
609
- error: options.errorMessage,
610
- ...metadata?.requireApproval !== void 0 && {
611
- requireApproval: metadata.requireApproval
612
- },
613
- ...metadata?.approvalStatus !== void 0 && {
614
- approvalStatus: metadata.approvalStatus
615
- }
505
+ error: options.errorMessage
616
506
  });
617
- this.toolCallMetadata?.delete(toolCallId);
618
507
  }
619
508
  this.pendingToolCalls.clear();
620
509
  }
@@ -1,11 +1,8 @@
1
1
  import { StreamTextResult, ToolSet as VercelToolSet } from 'ai';
2
2
  import { ContextManager } from '../../context/manager.js';
3
3
  import { SessionEventBus } from '../../events/index.js';
4
- import { ResourceManager } from '../../resources/index.js';
5
4
  import { StreamProcessorResult } from './types.js';
6
5
  import type { Logger } from '../../logger/v2/types.js';
7
- import type { ToolPresentationSnapshotV1 } from '../../tools/types.js';
8
- import type { ToolCallMetadata } from '../../tools/tool-call-metadata.js';
9
6
  import type { LLMProvider, ReasoningVariant } from '../types.js';
10
7
  export interface StreamProcessorConfig {
11
8
  provider: LLMProvider;
@@ -21,11 +18,9 @@ export interface StreamProcessorConfig {
21
18
  export declare class StreamProcessor {
22
19
  private contextManager;
23
20
  private eventBus;
24
- private resourceManager;
25
21
  private abortSignal;
26
22
  private config;
27
23
  private streaming;
28
- private toolCallMetadata?;
29
24
  private assistantMessageId;
30
25
  private actualTokens;
31
26
  private finishReason;
@@ -35,6 +30,7 @@ export declare class StreamProcessor {
35
30
  private logger;
36
31
  private hasStepUsage;
37
32
  private readonly usageScopeId;
33
+ private modelToolCalls;
38
34
  /**
39
35
  * Track pending tool calls (added to context but no result yet).
40
36
  * On cancel/abort, we add synthetic "cancelled" results to maintain tool_use/tool_result pairing.
@@ -44,19 +40,12 @@ export declare class StreamProcessor {
44
40
  /**
45
41
  * @param contextManager Context manager for message persistence
46
42
  * @param eventBus Event bus for emitting events
47
- * @param resourceManager Resource manager for blob storage
48
43
  * @param abortSignal Abort signal for cancellation
49
44
  * @param config Provider/model configuration
50
45
  * @param logger Logger instance
51
46
  * @param streaming If true, emits llm:chunk events. Default true.
52
- * @param toolCallMetadata Map of tool call IDs to tool-call metadata (approval + presentation)
53
47
  */
54
- constructor(contextManager: ContextManager, eventBus: SessionEventBus, resourceManager: ResourceManager, abortSignal: AbortSignal, config: StreamProcessorConfig, logger: Logger, streaming?: boolean, toolCallMetadata?: Map<string, {
55
- presentationSnapshot?: ToolPresentationSnapshotV1;
56
- meta?: ToolCallMetadata;
57
- requireApproval?: boolean;
58
- approvalStatus?: "approved" | "rejected";
59
- }> | undefined);
48
+ constructor(contextManager: ContextManager, eventBus: SessionEventBus, abortSignal: AbortSignal, config: StreamProcessorConfig, logger: Logger, streaming?: boolean);
60
49
  process(streamFn: () => StreamTextResult<VercelToolSet, unknown>): Promise<StreamProcessorResult>;
61
50
  private getCacheTokensFromProviderMetadata;
62
51
  private normalizeUsage;
@@ -1 +1 @@
1
- {"version":3,"file":"stream-processor.d.ts","sourceRoot":"","sources":["../../../src/llm/executor/stream-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,IAAI,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAmB,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAG1E,OAAO,KAAK,EAAE,WAAW,EAAoB,gBAAgB,EAAc,MAAM,aAAa,CAAC;AA4C/F,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,gFAAgF;IAChF,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,qBAAa,eAAe;IA4BpB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,gBAAgB,CAAC;IAlC7B,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,YAAY,CAAmE;IACvF,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,iBAAiB,CAAsC;IAC/D,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAgD;IACxE,OAAO,CAAC,gBAAgB,CAAkE;IAE1F;;;;;;;;;OASG;gBAES,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,eAAe,EACzB,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,qBAAqB,EACrC,MAAM,EAAE,MAAM,EACN,SAAS,GAAE,OAAc,EACzB,gBAAgB,CAAC,EAAE,GAAG,CAC1B,MAAM,EACN;QACI,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;QAClD,IAAI,CAAC,EAAE,gBAAgB,CAAC;QACxB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;KAC5C,CACJ,YAAA;IAMC,OAAO,CACT,QAAQ,EAAE,MAAM,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,GACzD,OAAO,CAAC,qBAAqB,CAAC;IA+fjC,OAAO,CAAC,kCAAkC;IAoB1C,OAAO,CAAC,cAAc;IA0CtB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,eAAe;YA8BT,gCAAgC;IA0B9C,OAAO,CAAC,sBAAsB;YAwChB,sBAAsB;YAKtB,gBAAgB;IAO9B;;;;OAIG;YACW,2BAA2B;IAQzC;;OAEG;YACW,wBAAwB;YAQxB,yBAAyB;CAqD1C"}
1
+ {"version":3,"file":"stream-processor.d.ts","sourceRoot":"","sources":["../../../src/llm/executor/stream-processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,IAAI,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAmB,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAKvD,OAAO,KAAK,EAAE,WAAW,EAAoB,gBAAgB,EAAc,MAAM,aAAa,CAAC;AAgD/F,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,gFAAgF;IAChF,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,qBAAa,eAAe;IA2BpB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,SAAS;IA/BrB,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,YAAY,CAAmE;IACvF,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,iBAAiB,CAAsC;IAC/D,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,cAAc,CAAuB;IAC7C;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAgD;IACxE,OAAO,CAAC,gBAAgB,CAAkE;IAE1F;;;;;;;OAOG;gBAES,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,eAAe,EACzB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,qBAAqB,EACrC,MAAM,EAAE,MAAM,EACN,SAAS,GAAE,OAAc;IAM/B,OAAO,CACT,QAAQ,EAAE,MAAM,gBAAgB,CAAC,aAAa,EAAE,OAAO,CAAC,GACzD,OAAO,CAAC,qBAAqB,CAAC;IAiYjC,OAAO,CAAC,kCAAkC;IAoB1C,OAAO,CAAC,cAAc;IA4CtB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,eAAe;YA8BT,gCAAgC;IA0B9C,OAAO,CAAC,sBAAsB;YAwChB,sBAAsB;YAKtB,gBAAgB;IAO9B;;;;OAIG;YACW,2BAA2B;IAQzC;;OAEG;YACW,wBAAwB;YAQxB,yBAAyB;CAuC1C"}
@@ -1,27 +1,24 @@
1
- import "../../chunk-PTJYTZNU.js";
2
- import { truncateToolResult } from "./tool-output-truncator.js";
3
- import { sanitizeToolResult } from "../../context/utils.js";
1
+ import "../../chunk-C6A6W6XS.js";
4
2
  import { DextoLogComponent } from "../../logger/v2/types.js";
5
3
  import { getUsagePricingMetadata } from "../usage-metadata.js";
4
+ function finiteUsageCount(value) {
5
+ return typeof value === "number" && Number.isFinite(value) ? value : void 0;
6
+ }
6
7
  class StreamProcessor {
7
8
  /**
8
9
  * @param contextManager Context manager for message persistence
9
10
  * @param eventBus Event bus for emitting events
10
- * @param resourceManager Resource manager for blob storage
11
11
  * @param abortSignal Abort signal for cancellation
12
12
  * @param config Provider/model configuration
13
13
  * @param logger Logger instance
14
14
  * @param streaming If true, emits llm:chunk events. Default true.
15
- * @param toolCallMetadata Map of tool call IDs to tool-call metadata (approval + presentation)
16
15
  */
17
- constructor(contextManager, eventBus, resourceManager, abortSignal, config, logger, streaming = true, toolCallMetadata) {
16
+ constructor(contextManager, eventBus, abortSignal, config, logger, streaming = true) {
18
17
  this.contextManager = contextManager;
19
18
  this.eventBus = eventBus;
20
- this.resourceManager = resourceManager;
21
19
  this.abortSignal = abortSignal;
22
20
  this.config = config;
23
21
  this.streaming = streaming;
24
- this.toolCallMetadata = toolCallMetadata;
25
22
  this.logger = logger.createChild(DextoLogComponent.EXECUTOR);
26
23
  this.usageScopeId = config.usageScopeId;
27
24
  }
@@ -34,6 +31,7 @@ class StreamProcessor {
34
31
  logger;
35
32
  hasStepUsage = false;
36
33
  usageScopeId;
34
+ modelToolCalls = [];
37
35
  /**
38
36
  * Track pending tool calls (added to context but no result yet).
39
37
  * On cancel/abort, we add synthetic "cancelled" results to maintain tool_use/tool_result pairing.
@@ -148,60 +146,14 @@ class StreamProcessor {
148
146
  };
149
147
  }
150
148
  await this.contextManager.addToolCall(this.assistantMessageId, toolCall);
151
- this.pendingToolCalls.set(event.toolCallId, {
152
- toolName: event.toolName
153
- });
154
- this.partialToolCalls.delete(event.toolCallId);
155
- break;
156
- }
157
- case "tool-result": {
158
- const rawResult = event.output;
159
- this.logger.debug("Tool result received", {
160
- toolName: event.toolName,
149
+ this.modelToolCalls.push({
161
150
  toolCallId: event.toolCallId,
162
- rawResult
163
- });
164
- const sanitized = await sanitizeToolResult(
165
- rawResult,
166
- {
167
- blobStore: this.resourceManager.getBlobStore(),
168
- toolName: event.toolName,
169
- toolCallId: event.toolCallId,
170
- success: true
171
- },
172
- this.logger
173
- );
174
- const truncated = truncateToolResult(sanitized);
175
- const metadata = this.toolCallMetadata?.get(event.toolCallId);
176
- await this.contextManager.addToolResult(
177
- event.toolCallId,
178
- event.toolName,
179
- truncated,
180
- // Includes meta.success from sanitization
181
- metadata
182
- // Only tool-call metadata if present
183
- );
184
- this.eventBus.emit("llm:tool-result", {
185
151
  toolName: event.toolName,
186
- ...metadata?.presentationSnapshot !== void 0 && {
187
- presentationSnapshot: metadata.presentationSnapshot
188
- },
189
- ...metadata?.meta !== void 0 && {
190
- meta: metadata.meta
191
- },
192
- callId: event.toolCallId,
193
- success: true,
194
- sanitized: truncated,
195
- rawResult,
196
- ...metadata?.requireApproval !== void 0 && {
197
- requireApproval: metadata.requireApproval
198
- },
199
- ...metadata?.approvalStatus !== void 0 && {
200
- approvalStatus: metadata.approvalStatus
201
- }
152
+ input: event.input
153
+ });
154
+ this.pendingToolCalls.set(event.toolCallId, {
155
+ toolName: event.toolName
202
156
  });
203
- this.toolCallMetadata?.delete(event.toolCallId);
204
- this.pendingToolCalls.delete(event.toolCallId);
205
157
  this.partialToolCalls.delete(event.toolCallId);
206
158
  break;
207
159
  }
@@ -292,58 +244,6 @@ class StreamProcessor {
292
244
  }
293
245
  break;
294
246
  }
295
- case "tool-error": {
296
- this.logger.error("Tool execution failed", {
297
- toolName: event.toolName,
298
- toolCallId: event.toolCallId,
299
- error: event.error
300
- });
301
- const errorMessage = event.error instanceof Error ? event.error.message : String(event.error);
302
- const metadata = this.toolCallMetadata?.get(event.toolCallId);
303
- const errorResult = {
304
- content: [{ type: "text", text: `Error: ${errorMessage}` }],
305
- meta: {
306
- toolName: event.toolName,
307
- toolCallId: event.toolCallId,
308
- success: false
309
- }
310
- };
311
- await this.contextManager.addToolResult(
312
- event.toolCallId,
313
- event.toolName,
314
- errorResult,
315
- metadata
316
- );
317
- this.eventBus.emit("llm:tool-result", {
318
- toolName: event.toolName,
319
- ...metadata?.presentationSnapshot !== void 0 && {
320
- presentationSnapshot: metadata.presentationSnapshot
321
- },
322
- ...metadata?.meta !== void 0 && {
323
- meta: metadata.meta
324
- },
325
- callId: event.toolCallId,
326
- success: false,
327
- error: errorMessage,
328
- ...metadata?.requireApproval !== void 0 && {
329
- requireApproval: metadata.requireApproval
330
- },
331
- ...metadata?.approvalStatus !== void 0 && {
332
- approvalStatus: metadata.approvalStatus
333
- }
334
- });
335
- this.eventBus.emit("llm:error", {
336
- error: event.error instanceof Error ? event.error : new Error(String(event.error)),
337
- context: `Tool execution failed: ${event.toolName}`,
338
- toolCallId: event.toolCallId,
339
- recoverable: true
340
- // Tool errors are typically recoverable
341
- });
342
- this.toolCallMetadata?.delete(event.toolCallId);
343
- this.pendingToolCalls.delete(event.toolCallId);
344
- this.partialToolCalls.delete(event.toolCallId);
345
- break;
346
- }
347
247
  case "error": {
348
248
  const err = event.error instanceof Error ? event.error : new Error(String(event.error));
349
249
  await this.persistFailedToolResults(err.message);
@@ -370,7 +270,8 @@ class StreamProcessor {
370
270
  return {
371
271
  text: this.accumulatedText,
372
272
  finishReason: "cancelled",
373
- usage: this.actualTokens
273
+ usage: this.actualTokens,
274
+ toolCalls: this.modelToolCalls
374
275
  };
375
276
  }
376
277
  }
@@ -398,7 +299,8 @@ class StreamProcessor {
398
299
  return {
399
300
  text: this.accumulatedText,
400
301
  finishReason: "cancelled",
401
- usage: this.actualTokens
302
+ usage: this.actualTokens,
303
+ toolCalls: this.modelToolCalls
402
304
  };
403
305
  }
404
306
  this.logger.error("Stream processing failed", { error });
@@ -407,28 +309,29 @@ class StreamProcessor {
407
309
  return {
408
310
  text: this.accumulatedText,
409
311
  finishReason: this.finishReason,
410
- usage: this.actualTokens
312
+ usage: this.actualTokens,
313
+ toolCalls: this.modelToolCalls
411
314
  };
412
315
  }
413
316
  getCacheTokensFromProviderMetadata(providerMetadata) {
414
317
  const anthropicMeta = providerMetadata?.["anthropic"];
415
318
  const bedrockMeta = providerMetadata?.["bedrock"];
416
- const cacheWriteTokens = anthropicMeta?.["cacheCreationInputTokens"] ?? bedrockMeta?.usage?.["cacheWriteInputTokens"] ?? 0;
417
- const cacheReadTokens = anthropicMeta?.["cacheReadInputTokens"] ?? bedrockMeta?.usage?.["cacheReadInputTokens"] ?? 0;
319
+ const cacheWriteTokens = finiteUsageCount(anthropicMeta?.["cacheCreationInputTokens"]) ?? finiteUsageCount(bedrockMeta?.usage?.["cacheWriteInputTokens"]) ?? 0;
320
+ const cacheReadTokens = finiteUsageCount(anthropicMeta?.["cacheReadInputTokens"]) ?? finiteUsageCount(bedrockMeta?.usage?.["cacheReadInputTokens"]) ?? 0;
418
321
  return { cacheReadTokens, cacheWriteTokens };
419
322
  }
420
323
  normalizeUsage(usage, providerMetadata) {
421
- const inputTokensRaw = usage?.inputTokens ?? 0;
422
- const outputTokens = usage?.outputTokens ?? 0;
423
- const totalTokens = usage?.totalTokens ?? 0;
424
- const reasoningTokens = usage?.reasoningTokens;
425
- const cachedInputTokens = usage?.cachedInputTokens;
324
+ const inputTokensRaw = finiteUsageCount(usage?.inputTokens) ?? 0;
325
+ const outputTokens = finiteUsageCount(usage?.outputTokens) ?? 0;
326
+ const totalTokens = finiteUsageCount(usage?.totalTokens) ?? 0;
327
+ const reasoningTokens = finiteUsageCount(usage?.reasoningTokens);
328
+ const cachedInputTokens = finiteUsageCount(usage?.cachedInputTokens);
426
329
  const inputTokenDetails = usage?.inputTokenDetails;
427
330
  const providerCache = this.getCacheTokensFromProviderMetadata(providerMetadata);
428
- const cacheReadTokens = inputTokenDetails?.cacheReadTokens ?? cachedInputTokens ?? providerCache.cacheReadTokens ?? 0;
429
- const cacheWriteTokens = inputTokenDetails?.cacheWriteTokens ?? providerCache.cacheWriteTokens ?? 0;
331
+ const cacheReadTokens = finiteUsageCount(inputTokenDetails?.cacheReadTokens) ?? cachedInputTokens ?? providerCache.cacheReadTokens ?? 0;
332
+ const cacheWriteTokens = finiteUsageCount(inputTokenDetails?.cacheWriteTokens) ?? providerCache.cacheWriteTokens ?? 0;
430
333
  const needsCacheWriteAdjustment = inputTokenDetails === void 0 && cachedInputTokens !== void 0 && providerCache.cacheWriteTokens > 0;
431
- const noCacheTokens = inputTokenDetails?.noCacheTokens ?? (cachedInputTokens !== void 0 ? inputTokensRaw - cachedInputTokens - (needsCacheWriteAdjustment ? providerCache.cacheWriteTokens : 0) : inputTokensRaw);
334
+ const noCacheTokens = finiteUsageCount(inputTokenDetails?.noCacheTokens) ?? (cachedInputTokens !== void 0 ? inputTokensRaw - cachedInputTokens - (needsCacheWriteAdjustment ? providerCache.cacheWriteTokens : 0) : inputTokensRaw);
432
335
  return {
433
336
  inputTokens: Math.max(0, noCacheTokens),
434
337
  outputTokens,
@@ -559,7 +462,6 @@ class StreamProcessor {
559
462
  `Persisting ${options.logLabel} results for ${this.pendingToolCalls.size} pending tool call(s)`
560
463
  );
561
464
  for (const [toolCallId, { toolName }] of this.pendingToolCalls) {
562
- const metadata = this.toolCallMetadata?.get(toolCallId);
563
465
  const syntheticResult = {
564
466
  content: [{ type: "text", text: options.resultText }],
565
467
  meta: {
@@ -572,27 +474,14 @@ class StreamProcessor {
572
474
  toolCallId,
573
475
  toolName,
574
476
  syntheticResult,
575
- metadata
477
+ void 0
576
478
  );
577
479
  this.eventBus.emit("llm:tool-result", {
578
480
  toolName,
579
- ...metadata?.presentationSnapshot !== void 0 && {
580
- presentationSnapshot: metadata.presentationSnapshot
581
- },
582
- ...metadata?.meta !== void 0 && {
583
- meta: metadata.meta
584
- },
585
481
  callId: toolCallId,
586
482
  success: false,
587
- error: options.errorMessage,
588
- ...metadata?.requireApproval !== void 0 && {
589
- requireApproval: metadata.requireApproval
590
- },
591
- ...metadata?.approvalStatus !== void 0 && {
592
- approvalStatus: metadata.approvalStatus
593
- }
483
+ error: options.errorMessage
594
484
  });
595
- this.toolCallMetadata?.delete(toolCallId);
596
485
  }
597
486
  this.pendingToolCalls.clear();
598
487
  }
@@ -16,42 +16,30 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var memory_exports = {};
20
- __export(memory_exports, {
21
- MemoryHistoryProvider: () => MemoryHistoryProvider
19
+ var tool_definitions_exports = {};
20
+ __export(tool_definitions_exports, {
21
+ createModelToolDefinitions: () => createModelToolDefinitions
22
22
  });
23
- module.exports = __toCommonJS(memory_exports);
24
- class MemoryHistoryProvider {
25
- constructor(logger) {
26
- this.logger = logger;
27
- }
28
- messages = [];
29
- async getHistory() {
30
- return [...this.messages];
31
- }
32
- async saveMessage(message) {
33
- this.messages.push(message);
34
- }
35
- async updateMessage(message) {
36
- if (!message.id) {
37
- this.logger.warn("MemoryHistoryProvider: Ignoring update for message without id");
38
- return;
39
- }
40
- const index = this.messages.findIndex((m) => m.id === message.id);
41
- if (index !== -1) {
42
- this.messages[index] = message;
43
- }
44
- }
45
- async clearHistory() {
46
- this.messages = [];
47
- }
48
- /**
49
- * No-op for in-memory provider - all operations are already "flushed".
50
- */
51
- async flush() {
23
+ module.exports = __toCommonJS(tool_definitions_exports);
24
+ var import_ai = require("ai");
25
+ const modelToolResultSchema = (0, import_ai.jsonSchema)({});
26
+ function createToolDefinitionBase(tool) {
27
+ return {
28
+ inputSchema: (0, import_ai.jsonSchema)(tool.parameters),
29
+ ...tool.description ? { description: tool.description } : {}
30
+ };
31
+ }
32
+ function createModelToolDefinitions(tools) {
33
+ const definitions = {};
34
+ for (const [toolName, tool] of Object.entries(tools)) {
35
+ definitions[toolName] = {
36
+ ...createToolDefinitionBase(tool),
37
+ outputSchema: modelToolResultSchema
38
+ };
52
39
  }
40
+ return definitions;
53
41
  }
54
42
  // Annotate the CommonJS export names for ESM import in node:
55
43
  0 && (module.exports = {
56
- MemoryHistoryProvider
44
+ createModelToolDefinitions
57
45
  });
@@ -0,0 +1,4 @@
1
+ import { type ToolSet as VercelToolSet } from 'ai';
2
+ import type { ToolSet } from '../../tools/types.js';
3
+ export declare function createModelToolDefinitions(tools: ToolSet): VercelToolSet;
4
+ //# sourceMappingURL=tool-definitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-definitions.d.ts","sourceRoot":"","sources":["../../../src/llm/executor/tool-definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,OAAO,IAAI,aAAa,EAAE,MAAM,IAAI,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAWpD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CASxE"}