@mastra/react 0.0.0-studio-cli-20260504022012 → 0.0.0-sugared-octave-20261030170102

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 (647) hide show
  1. package/LICENSE.md +6 -4
  2. package/README.md +37 -0
  3. package/dist/accumulator-Bjfckb5t.cjs +1753 -0
  4. package/dist/accumulator-Bjfckb5t.cjs.map +1 -0
  5. package/dist/accumulator-DysrPe6U.js +1712 -0
  6. package/dist/accumulator-DysrPe6U.js.map +1 -0
  7. package/dist/agent/extract-tasks.d.ts +10 -0
  8. package/dist/agent/extract-tasks.d.ts.map +1 -0
  9. package/dist/agent/extractRunIdFromMessages.d.ts +9 -2
  10. package/dist/agent/extractRunIdFromMessages.d.ts.map +1 -1
  11. package/dist/agent/hooks.d.ts +77 -13
  12. package/dist/agent/hooks.d.ts.map +1 -1
  13. package/dist/agent/merge-history.d.ts +7 -0
  14. package/dist/agent/merge-history.d.ts.map +1 -0
  15. package/dist/agent/signal-data.d.ts +5 -0
  16. package/dist/agent/signal-data.d.ts.map +1 -0
  17. package/dist/agent/types.d.ts +15 -1
  18. package/dist/agent/types.d.ts.map +1 -1
  19. package/dist/agent/user-message.d.ts +4 -0
  20. package/dist/agent/user-message.d.ts.map +1 -0
  21. package/dist/chat/index.cjs +3 -0
  22. package/dist/chat/index.d.ts +3 -0
  23. package/dist/chat/index.d.ts.map +1 -0
  24. package/dist/chat/index.js +1 -0
  25. package/dist/combine-by-ids-C-0oe4eH.js +23 -0
  26. package/dist/combine-by-ids-C-0oe4eH.js.map +1 -0
  27. package/dist/combine-by-ids-ERVPXXBi.cjs +28 -0
  28. package/dist/combine-by-ids-ERVPXXBi.cjs.map +1 -0
  29. package/dist/experiments-Duv0RgkM.cjs +346 -0
  30. package/dist/experiments-Duv0RgkM.cjs.map +1 -0
  31. package/dist/experiments-DyecjEut.js +299 -0
  32. package/dist/experiments-DyecjEut.js.map +1 -0
  33. package/dist/feedback-refetch-interval-BBcT9r8s.cjs +16 -0
  34. package/dist/feedback-refetch-interval-BBcT9r8s.cjs.map +1 -0
  35. package/dist/feedback-refetch-interval-C12Nzb2r.js +11 -0
  36. package/dist/feedback-refetch-interval-C12Nzb2r.js.map +1 -0
  37. package/dist/hooks/agents/index.cjs +994 -0
  38. package/dist/hooks/agents/index.cjs.map +1 -0
  39. package/dist/hooks/agents/index.d.ts +19 -0
  40. package/dist/hooks/agents/index.d.ts.map +1 -0
  41. package/dist/hooks/agents/index.js +957 -0
  42. package/dist/hooks/agents/index.js.map +1 -0
  43. package/dist/hooks/agents/is-model-not-allowed.d.ts +15 -0
  44. package/dist/hooks/agents/is-model-not-allowed.d.ts.map +1 -0
  45. package/dist/hooks/agents/use-agent-messages.d.ts +18 -0
  46. package/dist/hooks/agents/use-agent-messages.d.ts.map +1 -0
  47. package/dist/hooks/agents/use-agent-plan.d.ts +14 -0
  48. package/dist/hooks/agents/use-agent-plan.d.ts.map +1 -0
  49. package/dist/hooks/agents/use-agent-skills.d.ts +2043 -0
  50. package/dist/hooks/agents/use-agent-skills.d.ts.map +1 -0
  51. package/dist/hooks/agents/use-agent-versions.d.ts +72 -0
  52. package/dist/hooks/agents/use-agent-versions.d.ts.map +1 -0
  53. package/dist/hooks/agents/use-agent-working-memory.d.ts +11 -0
  54. package/dist/hooks/agents/use-agent-working-memory.d.ts.map +1 -0
  55. package/dist/hooks/agents/use-agent-workspace.d.ts +2044 -0
  56. package/dist/hooks/agents/use-agent-workspace.d.ts.map +1 -0
  57. package/dist/hooks/agents/use-agent.d.ts +12 -0
  58. package/dist/hooks/agents/use-agent.d.ts.map +1 -0
  59. package/dist/hooks/agents/use-agents-model-providers.d.ts +9 -0
  60. package/dist/hooks/agents/use-agents-model-providers.d.ts.map +1 -0
  61. package/dist/hooks/agents/use-agents.d.ts +28 -0
  62. package/dist/hooks/agents/use-agents.d.ts.map +1 -0
  63. package/dist/hooks/agents/use-background-tasks.d.ts +51 -0
  64. package/dist/hooks/agents/use-background-tasks.d.ts.map +1 -0
  65. package/dist/hooks/agents/use-browser-session-probe.d.ts +34 -0
  66. package/dist/hooks/agents/use-browser-session-probe.d.ts.map +1 -0
  67. package/dist/hooks/agents/use-channels.d.ts +45 -0
  68. package/dist/hooks/agents/use-channels.d.ts.map +1 -0
  69. package/dist/hooks/agents/use-close-browser.d.ts +17 -0
  70. package/dist/hooks/agents/use-close-browser.d.ts.map +1 -0
  71. package/dist/hooks/agents/use-execute-agent-tool.d.ts +14 -0
  72. package/dist/hooks/agents/use-execute-agent-tool.d.ts.map +1 -0
  73. package/dist/hooks/agents/use-preview-instructions.d.ts +20 -0
  74. package/dist/hooks/agents/use-preview-instructions.d.ts.map +1 -0
  75. package/dist/hooks/agents/use-stored-agents.d.ts +8111 -0
  76. package/dist/hooks/agents/use-stored-agents.d.ts.map +1 -0
  77. package/dist/hooks/agents/use-stored-skills.d.ts +8 -0
  78. package/dist/hooks/agents/use-stored-skills.d.ts.map +1 -0
  79. package/dist/hooks/auth/fetch-with-refresh.d.ts +28 -0
  80. package/dist/hooks/auth/fetch-with-refresh.d.ts.map +1 -0
  81. package/dist/hooks/auth/get-client-query-key.d.ts +7 -0
  82. package/dist/hooks/auth/get-client-query-key.d.ts.map +1 -0
  83. package/dist/hooks/auth/index.cjs +482 -0
  84. package/dist/hooks/auth/index.cjs.map +1 -0
  85. package/dist/hooks/auth/index.d.ts +11 -0
  86. package/dist/hooks/auth/index.d.ts.map +1 -0
  87. package/dist/hooks/auth/index.js +464 -0
  88. package/dist/hooks/auth/index.js.map +1 -0
  89. package/dist/hooks/auth/sso-login.d.ts +8 -0
  90. package/dist/hooks/auth/sso-login.d.ts.map +1 -0
  91. package/dist/hooks/auth/types.d.ts +107 -0
  92. package/dist/hooks/auth/types.d.ts.map +1 -0
  93. package/dist/hooks/auth/use-auth-actions.d.ts +99 -0
  94. package/dist/hooks/auth/use-auth-actions.d.ts.map +1 -0
  95. package/dist/hooks/auth/use-auth-capabilities.d.ts +43 -0
  96. package/dist/hooks/auth/use-auth-capabilities.d.ts.map +1 -0
  97. package/dist/hooks/auth/use-credentials-login.d.ts +63 -0
  98. package/dist/hooks/auth/use-credentials-login.d.ts.map +1 -0
  99. package/dist/hooks/auth/use-credentials-signup.d.ts +66 -0
  100. package/dist/hooks/auth/use-credentials-signup.d.ts.map +1 -0
  101. package/dist/hooks/auth/use-current-user.d.ts +40 -0
  102. package/dist/hooks/auth/use-current-user.d.ts.map +1 -0
  103. package/dist/hooks/auth/use-permission-patterns.d.ts +24 -0
  104. package/dist/hooks/auth/use-permission-patterns.d.ts.map +1 -0
  105. package/dist/hooks/capabilities/index.cjs +139 -0
  106. package/dist/hooks/capabilities/index.cjs.map +1 -0
  107. package/dist/hooks/capabilities/index.d.ts +11 -0
  108. package/dist/hooks/capabilities/index.d.ts.map +1 -0
  109. package/dist/hooks/capabilities/index.js +129 -0
  110. package/dist/hooks/capabilities/index.js.map +1 -0
  111. package/dist/hooks/capabilities/use-feedback-available.d.ts +9 -0
  112. package/dist/hooks/capabilities/use-feedback-available.d.ts.map +1 -0
  113. package/dist/hooks/capabilities/use-observability-capabilities.d.ts +9 -0
  114. package/dist/hooks/capabilities/use-observability-capabilities.d.ts.map +1 -0
  115. package/dist/hooks/capabilities/use-span-aggregate-available.d.ts +9 -0
  116. package/dist/hooks/capabilities/use-span-aggregate-available.d.ts.map +1 -0
  117. package/dist/hooks/capabilities/use-span-query-available.d.ts +9 -0
  118. package/dist/hooks/capabilities/use-span-query-available.d.ts.map +1 -0
  119. package/dist/hooks/capabilities/use-thread-query-available.d.ts +9 -0
  120. package/dist/hooks/capabilities/use-thread-query-available.d.ts.map +1 -0
  121. package/dist/hooks/capabilities/use-trace-aggregate-available.d.ts +10 -0
  122. package/dist/hooks/capabilities/use-trace-aggregate-available.d.ts.map +1 -0
  123. package/dist/hooks/capabilities/use-trace-query-available.d.ts +9 -0
  124. package/dist/hooks/capabilities/use-trace-query-available.d.ts.map +1 -0
  125. package/dist/hooks/capabilities/use-trace-query-delta-polling-available.d.ts +10 -0
  126. package/dist/hooks/capabilities/use-trace-query-delta-polling-available.d.ts.map +1 -0
  127. package/dist/hooks/capabilities/use-trace-query-discovery-available.d.ts +10 -0
  128. package/dist/hooks/capabilities/use-trace-query-discovery-available.d.ts.map +1 -0
  129. package/dist/hooks/capabilities/use-trace-query-root-duration-available.d.ts +10 -0
  130. package/dist/hooks/capabilities/use-trace-query-root-duration-available.d.ts.map +1 -0
  131. package/dist/hooks/configuration/index.cjs +17 -0
  132. package/dist/hooks/configuration/index.cjs.map +1 -0
  133. package/dist/hooks/configuration/index.d.ts +2 -0
  134. package/dist/hooks/configuration/index.d.ts.map +1 -0
  135. package/dist/hooks/configuration/index.js +16 -0
  136. package/dist/hooks/configuration/index.js.map +1 -0
  137. package/dist/hooks/configuration/use-mastra-packages.d.ts +9 -0
  138. package/dist/hooks/configuration/use-mastra-packages.d.ts.map +1 -0
  139. package/dist/hooks/datasets/index.cjs +726 -0
  140. package/dist/hooks/datasets/index.cjs.map +1 -0
  141. package/dist/hooks/datasets/index.d.ts +10 -0
  142. package/dist/hooks/datasets/index.d.ts.map +1 -0
  143. package/dist/hooks/datasets/index.js +703 -0
  144. package/dist/hooks/datasets/index.js.map +1 -0
  145. package/dist/hooks/datasets/use-compare-experiments.d.ts +19 -0
  146. package/dist/hooks/datasets/use-compare-experiments.d.ts.map +1 -0
  147. package/dist/hooks/datasets/use-dataset-experiments.d.ts +92 -0
  148. package/dist/hooks/datasets/use-dataset-experiments.d.ts.map +1 -0
  149. package/dist/hooks/datasets/use-dataset-item-versions.d.ts +31 -0
  150. package/dist/hooks/datasets/use-dataset-item-versions.d.ts.map +1 -0
  151. package/dist/hooks/datasets/use-dataset-items.d.ts +38 -0
  152. package/dist/hooks/datasets/use-dataset-items.d.ts.map +1 -0
  153. package/dist/hooks/datasets/use-dataset-mutations.d.ts +315 -0
  154. package/dist/hooks/datasets/use-dataset-mutations.d.ts.map +1 -0
  155. package/dist/hooks/datasets/use-dataset-versions.d.ts +23 -0
  156. package/dist/hooks/datasets/use-dataset-versions.d.ts.map +1 -0
  157. package/dist/hooks/datasets/use-datasets.d.ts +51 -0
  158. package/dist/hooks/datasets/use-datasets.d.ts.map +1 -0
  159. package/dist/hooks/datasets/use-experiments.d.ts +24 -0
  160. package/dist/hooks/datasets/use-experiments.d.ts.map +1 -0
  161. package/dist/hooks/datasets/use-workflow-schema.d.ts +16 -0
  162. package/dist/hooks/datasets/use-workflow-schema.d.ts.map +1 -0
  163. package/dist/hooks/embedders/index.cjs +18 -0
  164. package/dist/hooks/embedders/index.cjs.map +1 -0
  165. package/dist/hooks/embedders/index.d.ts +2 -0
  166. package/dist/hooks/embedders/index.d.ts.map +1 -0
  167. package/dist/hooks/embedders/index.js +17 -0
  168. package/dist/hooks/embedders/index.js.map +1 -0
  169. package/dist/hooks/embedders/use-embedders.d.ts +17 -0
  170. package/dist/hooks/embedders/use-embedders.d.ts.map +1 -0
  171. package/dist/hooks/experiments/index.cjs +10 -0
  172. package/dist/hooks/experiments/index.d.ts +7 -0
  173. package/dist/hooks/experiments/index.d.ts.map +1 -0
  174. package/dist/hooks/experiments/index.js +1 -0
  175. package/dist/hooks/experiments/usage-accumulator.d.ts +25 -0
  176. package/dist/hooks/experiments/usage-accumulator.d.ts.map +1 -0
  177. package/dist/hooks/experiments/use-experiment-item-usage.d.ts +23 -0
  178. package/dist/hooks/experiments/use-experiment-item-usage.d.ts.map +1 -0
  179. package/dist/hooks/experiments/use-experiment-metrics.d.ts +30 -0
  180. package/dist/hooks/experiments/use-experiment-metrics.d.ts.map +1 -0
  181. package/dist/hooks/experiments/use-experiment-trace.d.ts +13 -0
  182. package/dist/hooks/experiments/use-experiment-trace.d.ts.map +1 -0
  183. package/dist/hooks/experiments/use-experiments-for-dataset-filter.d.ts +22 -0
  184. package/dist/hooks/experiments/use-experiments-for-dataset-filter.d.ts.map +1 -0
  185. package/dist/hooks/experiments/use-experiments-list-metrics.d.ts +19 -0
  186. package/dist/hooks/experiments/use-experiments-list-metrics.d.ts.map +1 -0
  187. package/dist/hooks/experiments/use-infinite-experiments.d.ts +22 -0
  188. package/dist/hooks/experiments/use-infinite-experiments.d.ts.map +1 -0
  189. package/dist/hooks/feedback/feedback-refetch-interval.d.ts +7 -0
  190. package/dist/hooks/feedback/feedback-refetch-interval.d.ts.map +1 -0
  191. package/dist/hooks/feedback/index.cjs +21 -0
  192. package/dist/hooks/feedback/index.cjs.map +1 -0
  193. package/dist/hooks/feedback/index.d.ts +3 -0
  194. package/dist/hooks/feedback/index.d.ts.map +1 -0
  195. package/dist/hooks/feedback/index.js +19 -0
  196. package/dist/hooks/feedback/index.js.map +1 -0
  197. package/dist/hooks/feedback/use-feedback.d.ts +56 -0
  198. package/dist/hooks/feedback/use-feedback.d.ts.map +1 -0
  199. package/dist/hooks/llm/index.cjs +16 -0
  200. package/dist/hooks/llm/index.cjs.map +1 -0
  201. package/dist/hooks/llm/index.d.ts +2 -0
  202. package/dist/hooks/llm/index.d.ts.map +1 -0
  203. package/dist/hooks/llm/index.js +15 -0
  204. package/dist/hooks/llm/index.js.map +1 -0
  205. package/dist/hooks/llm/use-llm-providers.d.ts +7 -0
  206. package/dist/hooks/llm/use-llm-providers.d.ts.map +1 -0
  207. package/dist/hooks/logs/index.cjs +83 -0
  208. package/dist/hooks/logs/index.cjs.map +1 -0
  209. package/dist/hooks/logs/index.d.ts +4 -0
  210. package/dist/hooks/logs/index.d.ts.map +1 -0
  211. package/dist/hooks/logs/index.js +81 -0
  212. package/dist/hooks/logs/index.js.map +1 -0
  213. package/dist/hooks/logs/types.d.ts +36 -0
  214. package/dist/hooks/logs/types.d.ts.map +1 -0
  215. package/dist/hooks/logs/use-logs.d.ts +79 -0
  216. package/dist/hooks/logs/use-logs.d.ts.map +1 -0
  217. package/dist/hooks/mcps/index.cjs +231 -0
  218. package/dist/hooks/mcps/index.cjs.map +1 -0
  219. package/dist/hooks/mcps/index.d.ts +8 -0
  220. package/dist/hooks/mcps/index.d.ts.map +1 -0
  221. package/dist/hooks/mcps/index.js +223 -0
  222. package/dist/hooks/mcps/index.js.map +1 -0
  223. package/dist/hooks/mcps/use-mcp-app-html.d.ts +17 -0
  224. package/dist/hooks/mcps/use-mcp-app-html.d.ts.map +1 -0
  225. package/dist/hooks/mcps/use-mcp-app-tools.d.ts +21 -0
  226. package/dist/hooks/mcps/use-mcp-app-tools.d.ts.map +1 -0
  227. package/dist/hooks/mcps/use-mcp-server-tool.d.ts +25 -0
  228. package/dist/hooks/mcps/use-mcp-server-tool.d.ts.map +1 -0
  229. package/dist/hooks/mcps/use-mcp-server-tools-by-id.d.ts +13 -0
  230. package/dist/hooks/mcps/use-mcp-server-tools-by-id.d.ts.map +1 -0
  231. package/dist/hooks/mcps/use-mcp-server-tools.d.ts +9 -0
  232. package/dist/hooks/mcps/use-mcp-server-tools.d.ts.map +1 -0
  233. package/dist/hooks/mcps/use-mcp-servers.d.ts +8 -0
  234. package/dist/hooks/mcps/use-mcp-servers.d.ts.map +1 -0
  235. package/dist/hooks/mcps/use-try-connect-mcp.d.ts +15 -0
  236. package/dist/hooks/mcps/use-try-connect-mcp.d.ts.map +1 -0
  237. package/dist/hooks/memory/index.cjs +324 -0
  238. package/dist/hooks/memory/index.cjs.map +1 -0
  239. package/dist/hooks/memory/index.d.ts +5 -0
  240. package/dist/hooks/memory/index.d.ts.map +1 -0
  241. package/dist/hooks/memory/index.js +308 -0
  242. package/dist/hooks/memory/index.js.map +1 -0
  243. package/dist/hooks/memory/use-memory-status.d.ts +12 -0
  244. package/dist/hooks/memory/use-memory-status.d.ts.map +1 -0
  245. package/dist/hooks/memory/use-memory-thread-messages.d.ts +13 -0
  246. package/dist/hooks/memory/use-memory-thread-messages.d.ts.map +1 -0
  247. package/dist/hooks/memory/use-memory.d.ts +159 -0
  248. package/dist/hooks/memory/use-memory.d.ts.map +1 -0
  249. package/dist/hooks/memory/use-observational-memory.d.ts +13 -0
  250. package/dist/hooks/memory/use-observational-memory.d.ts.map +1 -0
  251. package/dist/hooks/metrics/index.cjs +989 -0
  252. package/dist/hooks/metrics/index.cjs.map +1 -0
  253. package/dist/hooks/metrics/index.d.ts +16 -0
  254. package/dist/hooks/metrics/index.d.ts.map +1 -0
  255. package/dist/hooks/metrics/index.js +973 -0
  256. package/dist/hooks/metrics/index.js.map +1 -0
  257. package/dist/hooks/metrics/metrics-interval.d.ts +8 -0
  258. package/dist/hooks/metrics/metrics-interval.d.ts.map +1 -0
  259. package/dist/hooks/metrics/metrics-query-filters.d.ts +62 -0
  260. package/dist/hooks/metrics/metrics-query-filters.d.ts.map +1 -0
  261. package/dist/hooks/metrics/use-active-resources-kpi-metrics.d.ts +12 -0
  262. package/dist/hooks/metrics/use-active-resources-kpi-metrics.d.ts.map +1 -0
  263. package/dist/hooks/metrics/use-active-threads-kpi-metrics.d.ts +12 -0
  264. package/dist/hooks/metrics/use-active-threads-kpi-metrics.d.ts.map +1 -0
  265. package/dist/hooks/metrics/use-agent-runs-kpi-metrics.d.ts +9 -0
  266. package/dist/hooks/metrics/use-agent-runs-kpi-metrics.d.ts.map +1 -0
  267. package/dist/hooks/metrics/use-latency-metrics.d.ts +23 -0
  268. package/dist/hooks/metrics/use-latency-metrics.d.ts.map +1 -0
  269. package/dist/hooks/metrics/use-model-cost-kpi-metrics.d.ts +14 -0
  270. package/dist/hooks/metrics/use-model-cost-kpi-metrics.d.ts.map +1 -0
  271. package/dist/hooks/metrics/use-model-usage-cost-metrics.d.ts +17 -0
  272. package/dist/hooks/metrics/use-model-usage-cost-metrics.d.ts.map +1 -0
  273. package/dist/hooks/metrics/use-scores-metrics.d.ts +24 -0
  274. package/dist/hooks/metrics/use-scores-metrics.d.ts.map +1 -0
  275. package/dist/hooks/metrics/use-token-usage-by-agent-metrics.d.ts +15 -0
  276. package/dist/hooks/metrics/use-token-usage-by-agent-metrics.d.ts.map +1 -0
  277. package/dist/hooks/metrics/use-token-usage-timeseries.d.ts +22 -0
  278. package/dist/hooks/metrics/use-token-usage-timeseries.d.ts.map +1 -0
  279. package/dist/hooks/metrics/use-top-active-threads-metrics.d.ts +21 -0
  280. package/dist/hooks/metrics/use-top-active-threads-metrics.d.ts.map +1 -0
  281. package/dist/hooks/metrics/use-top-resources-by-threads-metrics.d.ts +20 -0
  282. package/dist/hooks/metrics/use-top-resources-by-threads-metrics.d.ts.map +1 -0
  283. package/dist/hooks/metrics/use-total-tokens-kpi-metrics.d.ts +13 -0
  284. package/dist/hooks/metrics/use-total-tokens-kpi-metrics.d.ts.map +1 -0
  285. package/dist/hooks/metrics/use-trace-volume-metrics.d.ts +17 -0
  286. package/dist/hooks/metrics/use-trace-volume-metrics.d.ts.map +1 -0
  287. package/dist/hooks/processors/index.cjs +42 -0
  288. package/dist/hooks/processors/index.cjs.map +1 -0
  289. package/dist/hooks/processors/index.d.ts +2 -0
  290. package/dist/hooks/processors/index.d.ts.map +1 -0
  291. package/dist/hooks/processors/index.js +39 -0
  292. package/dist/hooks/processors/index.js.map +1 -0
  293. package/dist/hooks/processors/use-processors.d.ts +64 -0
  294. package/dist/hooks/processors/use-processors.d.ts.map +1 -0
  295. package/dist/hooks/prompt-blocks/index.cjs +179 -0
  296. package/dist/hooks/prompt-blocks/index.cjs.map +1 -0
  297. package/dist/hooks/prompt-blocks/index.d.ts +3 -0
  298. package/dist/hooks/prompt-blocks/index.d.ts.map +1 -0
  299. package/dist/hooks/prompt-blocks/index.js +170 -0
  300. package/dist/hooks/prompt-blocks/index.js.map +1 -0
  301. package/dist/hooks/prompt-blocks/use-prompt-block-versions.d.ts +59 -0
  302. package/dist/hooks/prompt-blocks/use-prompt-block-versions.d.ts.map +1 -0
  303. package/dist/hooks/prompt-blocks/use-stored-prompt-blocks.d.ts +180 -0
  304. package/dist/hooks/prompt-blocks/use-stored-prompt-blocks.d.ts.map +1 -0
  305. package/dist/hooks/query/index.cjs +33 -0
  306. package/dist/hooks/query/index.cjs.map +1 -0
  307. package/dist/hooks/query/index.d.ts +4 -0
  308. package/dist/hooks/query/index.d.ts.map +1 -0
  309. package/dist/hooks/query/index.js +24 -0
  310. package/dist/hooks/query/index.js.map +1 -0
  311. package/dist/hooks/query/query-client-provider.d.ts +8 -0
  312. package/dist/hooks/query/query-client-provider.d.ts.map +1 -0
  313. package/dist/hooks/query/query-utils.d.ts +48 -0
  314. package/dist/hooks/query/query-utils.d.ts.map +1 -0
  315. package/dist/hooks/review/index.cjs +90 -0
  316. package/dist/hooks/review/index.cjs.map +1 -0
  317. package/dist/hooks/review/index.d.ts +4 -0
  318. package/dist/hooks/review/index.d.ts.map +1 -0
  319. package/dist/hooks/review/index.js +87 -0
  320. package/dist/hooks/review/index.js.map +1 -0
  321. package/dist/hooks/review/types.d.ts +24 -0
  322. package/dist/hooks/review/types.d.ts.map +1 -0
  323. package/dist/hooks/review/use-dataset-review-items.d.ts +19 -0
  324. package/dist/hooks/review/use-dataset-review-items.d.ts.map +1 -0
  325. package/dist/hooks/review/use-review-summary.d.ts +9 -0
  326. package/dist/hooks/review/use-review-summary.d.ts.map +1 -0
  327. package/dist/hooks/schedules/index.cjs +106 -0
  328. package/dist/hooks/schedules/index.cjs.map +1 -0
  329. package/dist/hooks/schedules/index.d.ts +5 -0
  330. package/dist/hooks/schedules/index.d.ts.map +1 -0
  331. package/dist/hooks/schedules/index.js +102 -0
  332. package/dist/hooks/schedules/index.js.map +1 -0
  333. package/dist/hooks/schedules/use-schedule-triggers.d.ts +18 -0
  334. package/dist/hooks/schedules/use-schedule-triggers.d.ts.map +1 -0
  335. package/dist/hooks/schedules/use-schedule.d.ts +11 -0
  336. package/dist/hooks/schedules/use-schedule.d.ts.map +1 -0
  337. package/dist/hooks/schedules/use-schedules.d.ts +7 -0
  338. package/dist/hooks/schedules/use-schedules.d.ts.map +1 -0
  339. package/dist/hooks/schedules/use-toggle-schedule.d.ts +13 -0
  340. package/dist/hooks/schedules/use-toggle-schedule.d.ts.map +1 -0
  341. package/dist/hooks/scores/index.cjs +334 -0
  342. package/dist/hooks/scores/index.cjs.map +1 -0
  343. package/dist/hooks/scores/index.d.ts +6 -0
  344. package/dist/hooks/scores/index.d.ts.map +1 -0
  345. package/dist/hooks/scores/index.js +318 -0
  346. package/dist/hooks/scores/index.js.map +1 -0
  347. package/dist/hooks/scores/use-scorer-versions.d.ts +71 -0
  348. package/dist/hooks/scores/use-scorer-versions.d.ts.map +1 -0
  349. package/dist/hooks/scores/use-scorers.d.ts +34 -0
  350. package/dist/hooks/scores/use-scorers.d.ts.map +1 -0
  351. package/dist/hooks/scores/use-stored-scorers.d.ts +151 -0
  352. package/dist/hooks/scores/use-stored-scorers.d.ts.map +1 -0
  353. package/dist/hooks/scores/use-trace-span-scores.d.ts +20 -0
  354. package/dist/hooks/scores/use-trace-span-scores.d.ts.map +1 -0
  355. package/dist/hooks/scores/use-trigger-scorer.d.ts +17 -0
  356. package/dist/hooks/scores/use-trigger-scorer.d.ts.map +1 -0
  357. package/dist/hooks/shared/combine-by-ids.d.ts +15 -0
  358. package/dist/hooks/shared/combine-by-ids.d.ts.map +1 -0
  359. package/dist/hooks/shared/cost.d.ts +7 -0
  360. package/dist/hooks/shared/cost.d.ts.map +1 -0
  361. package/dist/hooks/shared/date-format.d.ts +30 -0
  362. package/dist/hooks/shared/date-format.d.ts.map +1 -0
  363. package/dist/hooks/shared/map.d.ts +2 -0
  364. package/dist/hooks/shared/map.d.ts.map +1 -0
  365. package/dist/hooks/shared/query-options.d.ts +19 -0
  366. package/dist/hooks/shared/query-options.d.ts.map +1 -0
  367. package/dist/hooks/shared/use-in-view.d.ts +23 -0
  368. package/dist/hooks/shared/use-in-view.d.ts.map +1 -0
  369. package/dist/hooks/templates/index.cjs +465 -0
  370. package/dist/hooks/templates/index.cjs.map +1 -0
  371. package/dist/hooks/templates/index.d.ts +2 -0
  372. package/dist/hooks/templates/index.d.ts.map +1 -0
  373. package/dist/hooks/templates/index.js +457 -0
  374. package/dist/hooks/templates/index.js.map +1 -0
  375. package/dist/hooks/templates/use-templates.d.ts +139 -0
  376. package/dist/hooks/templates/use-templates.d.ts.map +1 -0
  377. package/dist/hooks/tool-providers/index.cjs +333 -0
  378. package/dist/hooks/tool-providers/index.cjs.map +1 -0
  379. package/dist/hooks/tool-providers/index.d.ts +10 -0
  380. package/dist/hooks/tool-providers/index.d.ts.map +1 -0
  381. package/dist/hooks/tool-providers/index.js +323 -0
  382. package/dist/hooks/tool-providers/index.js.map +1 -0
  383. package/dist/hooks/tool-providers/use-all-connections.d.ts +41 -0
  384. package/dist/hooks/tool-providers/use-all-connections.d.ts.map +1 -0
  385. package/dist/hooks/tool-providers/use-all-provider-tools.d.ts +25 -0
  386. package/dist/hooks/tool-providers/use-all-provider-tools.d.ts.map +1 -0
  387. package/dist/hooks/tool-providers/use-authorize.d.ts +45 -0
  388. package/dist/hooks/tool-providers/use-authorize.d.ts.map +1 -0
  389. package/dist/hooks/tool-providers/use-disconnect-connection.d.ts +24 -0
  390. package/dist/hooks/tool-providers/use-disconnect-connection.d.ts.map +1 -0
  391. package/dist/hooks/tool-providers/use-existing-connections.d.ts +33 -0
  392. package/dist/hooks/tool-providers/use-existing-connections.d.ts.map +1 -0
  393. package/dist/hooks/tool-providers/use-provider-tools.d.ts +17 -0
  394. package/dist/hooks/tool-providers/use-provider-tools.d.ts.map +1 -0
  395. package/dist/hooks/tool-providers/use-tool-providers.d.ts +23 -0
  396. package/dist/hooks/tool-providers/use-tool-providers.d.ts.map +1 -0
  397. package/dist/hooks/tool-providers/use-toolkits.d.ts +13 -0
  398. package/dist/hooks/tool-providers/use-toolkits.d.ts.map +1 -0
  399. package/dist/hooks/tool-providers/use-update-connection.d.ts +24 -0
  400. package/dist/hooks/tool-providers/use-update-connection.d.ts.map +1 -0
  401. package/dist/hooks/tools/index.cjs +47 -0
  402. package/dist/hooks/tools/index.cjs.map +1 -0
  403. package/dist/hooks/tools/index.d.ts +3 -0
  404. package/dist/hooks/tools/index.d.ts.map +1 -0
  405. package/dist/hooks/tools/index.js +44 -0
  406. package/dist/hooks/tools/index.js.map +1 -0
  407. package/dist/hooks/tools/use-all-tools.d.ts +16 -0
  408. package/dist/hooks/tools/use-all-tools.d.ts.map +1 -0
  409. package/dist/hooks/tools/use-execute-tool.d.ts +13 -0
  410. package/dist/hooks/tools/use-execute-tool.d.ts.map +1 -0
  411. package/dist/hooks/traces/discovery-cache.d.ts +12 -0
  412. package/dist/hooks/traces/discovery-cache.d.ts.map +1 -0
  413. package/dist/hooks/traces/index.cjs +1473 -0
  414. package/dist/hooks/traces/index.cjs.map +1 -0
  415. package/dist/hooks/traces/index.d.ts +26 -0
  416. package/dist/hooks/traces/index.d.ts.map +1 -0
  417. package/dist/hooks/traces/index.js +1424 -0
  418. package/dist/hooks/traces/index.js.map +1 -0
  419. package/dist/hooks/traces/types.d.ts +21 -0
  420. package/dist/hooks/traces/types.d.ts.map +1 -0
  421. package/dist/hooks/traces/use-branch.d.ts +18 -0
  422. package/dist/hooks/traces/use-branch.d.ts.map +1 -0
  423. package/dist/hooks/traces/use-create-feedback.d.ts +21 -0
  424. package/dist/hooks/traces/use-create-feedback.d.ts.map +1 -0
  425. package/dist/hooks/traces/use-delete-feedback.d.ts +21 -0
  426. package/dist/hooks/traces/use-delete-feedback.d.ts.map +1 -0
  427. package/dist/hooks/traces/use-entity-names.d.ts +14 -0
  428. package/dist/hooks/traces/use-entity-names.d.ts.map +1 -0
  429. package/dist/hooks/traces/use-environments.d.ts +10 -0
  430. package/dist/hooks/traces/use-environments.d.ts.map +1 -0
  431. package/dist/hooks/traces/use-query-spans.d.ts +27 -0
  432. package/dist/hooks/traces/use-query-spans.d.ts.map +1 -0
  433. package/dist/hooks/traces/use-query-threads.d.ts +30 -0
  434. package/dist/hooks/traces/use-query-threads.d.ts.map +1 -0
  435. package/dist/hooks/traces/use-service-names.d.ts +10 -0
  436. package/dist/hooks/traces/use-service-names.d.ts.map +1 -0
  437. package/dist/hooks/traces/use-span-aggregate.d.ts +16 -0
  438. package/dist/hooks/traces/use-span-aggregate.d.ts.map +1 -0
  439. package/dist/hooks/traces/use-span-detail.d.ts +14 -0
  440. package/dist/hooks/traces/use-span-detail.d.ts.map +1 -0
  441. package/dist/hooks/traces/use-span-feedback.d.ts +19 -0
  442. package/dist/hooks/traces/use-span-feedback.d.ts.map +1 -0
  443. package/dist/hooks/traces/use-tags.d.ts +10 -0
  444. package/dist/hooks/traces/use-tags.d.ts.map +1 -0
  445. package/dist/hooks/traces/use-thread-has-other-traces.d.ts +17 -0
  446. package/dist/hooks/traces/use-thread-has-other-traces.d.ts.map +1 -0
  447. package/dist/hooks/traces/use-trace-aggregate.d.ts +17 -0
  448. package/dist/hooks/traces/use-trace-aggregate.d.ts.map +1 -0
  449. package/dist/hooks/traces/use-trace-column-preferences-storage-key.d.ts +8 -0
  450. package/dist/hooks/traces/use-trace-column-preferences-storage-key.d.ts.map +1 -0
  451. package/dist/hooks/traces/use-trace-feedback.d.ts +16 -0
  452. package/dist/hooks/traces/use-trace-feedback.d.ts.map +1 -0
  453. package/dist/hooks/traces/use-trace-light-spans.d.ts +16 -0
  454. package/dist/hooks/traces/use-trace-light-spans.d.ts.map +1 -0
  455. package/dist/hooks/traces/use-trace-metadata-filter-fields.d.ts +42 -0
  456. package/dist/hooks/traces/use-trace-metadata-filter-fields.d.ts.map +1 -0
  457. package/dist/hooks/traces/use-trace-or-branch-spans.d.ts +39 -0
  458. package/dist/hooks/traces/use-trace-or-branch-spans.d.ts.map +1 -0
  459. package/dist/hooks/traces/use-trace-query.d.ts +106 -0
  460. package/dist/hooks/traces/use-trace-query.d.ts.map +1 -0
  461. package/dist/hooks/traces/use-trace-spans.d.ts +46 -0
  462. package/dist/hooks/traces/use-trace-spans.d.ts.map +1 -0
  463. package/dist/hooks/traces/use-trace-usage.d.ts +10 -0
  464. package/dist/hooks/traces/use-trace-usage.d.ts.map +1 -0
  465. package/dist/hooks/traces/use-traces.d.ts +244 -0
  466. package/dist/hooks/traces/use-traces.d.ts.map +1 -0
  467. package/dist/hooks/vectors/index.cjs +18 -0
  468. package/dist/hooks/vectors/index.cjs.map +1 -0
  469. package/dist/hooks/vectors/index.d.ts +2 -0
  470. package/dist/hooks/vectors/index.d.ts.map +1 -0
  471. package/dist/hooks/vectors/index.js +17 -0
  472. package/dist/hooks/vectors/index.js.map +1 -0
  473. package/dist/hooks/vectors/use-vectors.d.ts +14 -0
  474. package/dist/hooks/vectors/use-vectors.d.ts.map +1 -0
  475. package/dist/hooks/voice/index.cjs +86 -0
  476. package/dist/hooks/voice/index.cjs.map +1 -0
  477. package/dist/hooks/voice/index.d.ts +2 -0
  478. package/dist/hooks/voice/index.d.ts.map +1 -0
  479. package/dist/hooks/voice/index.js +85 -0
  480. package/dist/hooks/voice/index.js.map +1 -0
  481. package/dist/hooks/voice/use-read-aloud.d.ts +20 -0
  482. package/dist/hooks/voice/use-read-aloud.d.ts.map +1 -0
  483. package/dist/hooks/workflows/index.cjs +169 -0
  484. package/dist/hooks/workflows/index.cjs.map +1 -0
  485. package/dist/hooks/workflows/index.d.ts +7 -0
  486. package/dist/hooks/workflows/index.d.ts.map +1 -0
  487. package/dist/hooks/workflows/index.js +153 -0
  488. package/dist/hooks/workflows/index.js.map +1 -0
  489. package/dist/hooks/workflows/use-workflow-runs.d.ts +51 -0
  490. package/dist/hooks/workflows/use-workflow-runs.d.ts.map +1 -0
  491. package/dist/hooks/workflows/use-workflow.d.ts +14 -0
  492. package/dist/hooks/workflows/use-workflow.d.ts.map +1 -0
  493. package/dist/hooks/workflows/use-workflows-run-counts.d.ts +25 -0
  494. package/dist/hooks/workflows/use-workflows-run-counts.d.ts.map +1 -0
  495. package/dist/hooks/workflows/use-workflows.d.ts +10 -0
  496. package/dist/hooks/workflows/use-workflows.d.ts.map +1 -0
  497. package/dist/hooks/workspace/client-utils.d.ts +5 -0
  498. package/dist/hooks/workspace/client-utils.d.ts.map +1 -0
  499. package/dist/hooks/workspace/compatibility.d.ts +22 -0
  500. package/dist/hooks/workspace/compatibility.d.ts.map +1 -0
  501. package/dist/hooks/workspace/file-type.d.ts +7 -0
  502. package/dist/hooks/workspace/file-type.d.ts.map +1 -0
  503. package/dist/hooks/workspace/index.cjs +614 -0
  504. package/dist/hooks/workspace/index.cjs.map +1 -0
  505. package/dist/hooks/workspace/index.d.ts +11 -0
  506. package/dist/hooks/workspace/index.d.ts.map +1 -0
  507. package/dist/hooks/workspace/index.js +584 -0
  508. package/dist/hooks/workspace/index.js.map +1 -0
  509. package/dist/hooks/workspace/types.d.ts +199 -0
  510. package/dist/hooks/workspace/types.d.ts.map +1 -0
  511. package/dist/hooks/workspace/use-skills-sh.d.ts +104 -0
  512. package/dist/hooks/workspace/use-skills-sh.d.ts.map +1 -0
  513. package/dist/hooks/workspace/use-stored-workspaces.d.ts +12 -0
  514. package/dist/hooks/workspace/use-stored-workspaces.d.ts.map +1 -0
  515. package/dist/hooks/workspace/use-workspace-directory.d.ts +13 -0
  516. package/dist/hooks/workspace/use-workspace-directory.d.ts.map +1 -0
  517. package/dist/hooks/workspace/use-workspace-file-content.d.ts +15 -0
  518. package/dist/hooks/workspace/use-workspace-file-content.d.ts.map +1 -0
  519. package/dist/hooks/workspace/use-workspace-search.d.ts +20 -0
  520. package/dist/hooks/workspace/use-workspace-search.d.ts.map +1 -0
  521. package/dist/hooks/workspace/use-workspace-skills.d.ts +23 -0
  522. package/dist/hooks/workspace/use-workspace-skills.d.ts.map +1 -0
  523. package/dist/hooks/workspace/use-workspace.d.ts +56 -0
  524. package/dist/hooks/workspace/use-workspace.d.ts.map +1 -0
  525. package/dist/hooks-Bt15IwzP.cjs +266 -0
  526. package/dist/hooks-Bt15IwzP.cjs.map +1 -0
  527. package/dist/hooks-Btt7PyI-.js +249 -0
  528. package/dist/hooks-Btt7PyI-.js.map +1 -0
  529. package/dist/hooks-Czqwakn0.cjs +1347 -0
  530. package/dist/hooks-Czqwakn0.cjs.map +1 -0
  531. package/dist/hooks-MRtQ3GE8.js +1330 -0
  532. package/dist/hooks-MRtQ3GE8.js.map +1 -0
  533. package/dist/index.cjs +56 -3001
  534. package/dist/index.cjs.map +1 -1
  535. package/dist/index.d.ts +5 -2
  536. package/dist/index.d.ts.map +1 -1
  537. package/dist/index.js +39 -2936
  538. package/dist/index.js.map +1 -1
  539. package/dist/lib/mastra-db/accumulator.d.ts +42 -0
  540. package/dist/lib/mastra-db/accumulator.d.ts.map +1 -0
  541. package/dist/lib/mastra-db/formatCompletionFeedback.d.ts.map +1 -0
  542. package/dist/lib/mastra-db/fromCoreUserMessage.d.ts +13 -0
  543. package/dist/lib/mastra-db/fromCoreUserMessage.d.ts.map +1 -0
  544. package/dist/lib/mastra-db/index.d.ts +6 -0
  545. package/dist/lib/mastra-db/index.d.ts.map +1 -0
  546. package/dist/lib/mastra-db/types.d.ts +173 -0
  547. package/dist/lib/mastra-db/types.d.ts.map +1 -0
  548. package/dist/map-5-4U5rwA.js +11 -0
  549. package/dist/map-5-4U5rwA.js.map +1 -0
  550. package/dist/map-BGoWBTGy.cjs +16 -0
  551. package/dist/map-BGoWBTGy.cjs.map +1 -0
  552. package/dist/mastra-client-context-DQ5z_ze9.js +49 -0
  553. package/dist/mastra-client-context-DQ5z_ze9.js.map +1 -0
  554. package/dist/mastra-client-context-DX8wJM9p.cjs +60 -0
  555. package/dist/mastra-client-context-DX8wJM9p.cjs.map +1 -0
  556. package/dist/mastra-client-context.d.ts +1 -1
  557. package/dist/mastra-client-context.d.ts.map +1 -1
  558. package/dist/mastra-react-provider.d.ts +2 -2
  559. package/dist/mastra-react-provider.d.ts.map +1 -1
  560. package/dist/query-utils-BVgE_xxj.cjs +173 -0
  561. package/dist/query-utils-BVgE_xxj.cjs.map +1 -0
  562. package/dist/query-utils-DvMERIwf.js +126 -0
  563. package/dist/query-utils-DvMERIwf.js.map +1 -0
  564. package/dist/react.css +72 -127
  565. package/dist/ui/Code/Code.d.ts +3 -2
  566. package/dist/ui/Code/Code.d.ts.map +1 -1
  567. package/dist/ui/Entity/Entity.d.ts +4 -4
  568. package/dist/ui/Entity/Entity.d.ts.map +1 -1
  569. package/dist/ui/Entity/Entry.d.ts +2 -2
  570. package/dist/ui/Entity/Entry.d.ts.map +1 -1
  571. package/dist/ui/Entity/ToolApproval.d.ts +5 -5
  572. package/dist/ui/Entity/ToolApproval.d.ts.map +1 -1
  573. package/dist/ui/Icon/Icon.d.ts +1 -1
  574. package/dist/ui/Icon/Icon.d.ts.map +1 -1
  575. package/dist/ui/IconButton/IconButton.d.ts +1 -1
  576. package/dist/ui/IconButton/IconButton.d.ts.map +1 -1
  577. package/dist/ui/Icons/AgentIcon.d.ts +1 -1
  578. package/dist/ui/Icons/AgentIcon.d.ts.map +1 -1
  579. package/dist/ui/Icons/ToolsIcon.d.ts +1 -1
  580. package/dist/ui/Icons/ToolsIcon.d.ts.map +1 -1
  581. package/dist/ui/Icons/WorkflowIcon.d.ts +1 -1
  582. package/dist/ui/Icons/WorkflowIcon.d.ts.map +1 -1
  583. package/dist/ui/Message/Message.d.ts +9 -9
  584. package/dist/ui/Message/Message.d.ts.map +1 -1
  585. package/dist/ui/MessageFactory/MessageFactory.d.ts +24 -0
  586. package/dist/ui/MessageFactory/MessageFactory.d.ts.map +1 -0
  587. package/dist/ui/MessageFactory/index.d.ts +3 -0
  588. package/dist/ui/MessageFactory/index.d.ts.map +1 -0
  589. package/dist/ui/MessageFactory/types.d.ts +183 -0
  590. package/dist/ui/MessageFactory/types.d.ts.map +1 -0
  591. package/dist/ui/Tooltip/Tooltip.d.ts +3 -3
  592. package/dist/ui/Tooltip/Tooltip.d.ts.map +1 -1
  593. package/dist/ui/index.cjs +561 -0
  594. package/dist/ui/index.cjs.map +1 -0
  595. package/dist/ui/index.d.ts +1 -0
  596. package/dist/ui/index.d.ts.map +1 -1
  597. package/dist/ui/index.js +484 -0
  598. package/dist/ui/index.js.map +1 -0
  599. package/dist/use-in-view-BxdrrnCw.cjs +36 -0
  600. package/dist/use-in-view-BxdrrnCw.cjs.map +1 -0
  601. package/dist/use-in-view-CyjKdplM.js +31 -0
  602. package/dist/use-in-view-CyjKdplM.js.map +1 -0
  603. package/dist/voice/index.d.ts +5 -0
  604. package/dist/voice/index.d.ts.map +1 -0
  605. package/dist/voice/play-stream-with-web-audio.d.ts +2 -0
  606. package/dist/voice/play-stream-with-web-audio.d.ts.map +1 -0
  607. package/dist/voice/record-mic-to-file.d.ts +2 -0
  608. package/dist/voice/record-mic-to-file.d.ts.map +1 -0
  609. package/dist/voice/use-speech-recognition.d.ts +20 -0
  610. package/dist/voice/use-speech-recognition.d.ts.map +1 -0
  611. package/dist/voice-Didej2E1.cjs +278 -0
  612. package/dist/voice-Didej2E1.cjs.map +1 -0
  613. package/dist/voice-ugGu7VyA.js +261 -0
  614. package/dist/voice-ugGu7VyA.js.map +1 -0
  615. package/dist/workflows/WorkflowStepFactory/WorkflowStepFactory.d.ts +8 -0
  616. package/dist/workflows/WorkflowStepFactory/WorkflowStepFactory.d.ts.map +1 -0
  617. package/dist/workflows/WorkflowStepFactory/index.d.ts +3 -0
  618. package/dist/workflows/WorkflowStepFactory/index.d.ts.map +1 -0
  619. package/dist/workflows/WorkflowStepFactory/types.d.ts +96 -0
  620. package/dist/workflows/WorkflowStepFactory/types.d.ts.map +1 -0
  621. package/dist/workflows/hooks.d.ts.map +1 -1
  622. package/dist/workflows/index.d.ts +1 -0
  623. package/dist/workflows/index.d.ts.map +1 -1
  624. package/dist/workflows/types.d.ts +4 -0
  625. package/dist/workflows/types.d.ts.map +1 -1
  626. package/dist/workflows/use-stream-workflow.d.ts +1 -29
  627. package/dist/workflows/use-stream-workflow.d.ts.map +1 -1
  628. package/package.json +70 -38
  629. package/CHANGELOG.md +0 -2495
  630. package/dist/lib/ai-sdk/index.d.ts +0 -5
  631. package/dist/lib/ai-sdk/index.d.ts.map +0 -1
  632. package/dist/lib/ai-sdk/memory/resolveInitialMessages.d.ts +0 -13
  633. package/dist/lib/ai-sdk/memory/resolveInitialMessages.d.ts.map +0 -1
  634. package/dist/lib/ai-sdk/transformers/AISdkNetworkTransformer.d.ts +0 -11
  635. package/dist/lib/ai-sdk/transformers/AISdkNetworkTransformer.d.ts.map +0 -1
  636. package/dist/lib/ai-sdk/transformers/types.d.ts +0 -11
  637. package/dist/lib/ai-sdk/transformers/types.d.ts.map +0 -1
  638. package/dist/lib/ai-sdk/types.d.ts +0 -143
  639. package/dist/lib/ai-sdk/types.d.ts.map +0 -1
  640. package/dist/lib/ai-sdk/utils/formatCompletionFeedback.d.ts.map +0 -1
  641. package/dist/lib/ai-sdk/utils/fromCoreUserMessageToUIMessage.d.ts +0 -11
  642. package/dist/lib/ai-sdk/utils/fromCoreUserMessageToUIMessage.d.ts.map +0 -1
  643. package/dist/lib/ai-sdk/utils/toAssistantUIMessage.d.ts +0 -15
  644. package/dist/lib/ai-sdk/utils/toAssistantUIMessage.d.ts.map +0 -1
  645. package/dist/lib/ai-sdk/utils/toUIMessage.d.ts +0 -18
  646. package/dist/lib/ai-sdk/utils/toUIMessage.d.ts.map +0 -1
  647. /package/dist/lib/{ai-sdk/utils → mastra-db}/formatCompletionFeedback.d.ts +0 -0
@@ -0,0 +1,1753 @@
1
+ // src/agent/signal-data.ts
2
+ const uint8ArrayToBase64 = (bytes) => {
3
+ const chunkSize = 32768;
4
+ let binary = "";
5
+ for (let i = 0; i < bytes.length; i += chunkSize) binary += String.fromCharCode(...bytes.subarray(i, i + chunkSize));
6
+ return btoa(binary);
7
+ };
8
+ function convertSignalDataToBase64String(content) {
9
+ if (typeof content === "string") return content;
10
+ const bytes = content instanceof ArrayBuffer ? new Uint8Array(content) : content;
11
+ return uint8ArrayToBase64(bytes);
12
+ }
13
+ /** Canonical DB `file` part `data` for optimistic UI and memory-shaped storage. */
14
+ function encodeFilePartDataForStorage(data, mimeType) {
15
+ if (typeof data === "string") return data;
16
+ if (data instanceof URL) return data.toString();
17
+ const bytes = data instanceof ArrayBuffer ? new Uint8Array(data) : data;
18
+ const base64 = uint8ArrayToBase64(bytes);
19
+ if (base64.startsWith("data:")) return base64;
20
+ return `data:${mimeType};base64,${base64}`;
21
+ }
22
+ // src/lib/mastra-db/formatCompletionFeedback.ts
23
+ const formatBaseCompletionFeedback = (result, maxIterationReached, formatScorerHeading, incompleteMessage) => {
24
+ const lines = [];
25
+ lines.push("#### Completion Check Results");
26
+ lines.push("");
27
+ lines.push(`Overall: ${result.complete ? "✅ COMPLETE" : "❌ NOT COMPLETE"}`);
28
+ lines.push(`Duration: ${result.totalDuration}ms`);
29
+ if (result.timedOut) lines.push("⚠️ Scoring timed out");
30
+ lines.push("");
31
+ for (const scorer of result.scorers) {
32
+ lines.push(formatScorerHeading(scorer));
33
+ lines.push(`Score: ${scorer.score} ${scorer.passed ? "✅" : "❌"}`);
34
+ if (scorer.reason) lines.push(`Reason: ${scorer.reason}`);
35
+ lines.push("");
36
+ }
37
+ if (result.complete) lines.push("✅ The task is complete.");
38
+ else if (maxIterationReached) lines.push("⚠️ Max iterations reached.");
39
+ else lines.push(incompleteMessage);
40
+ return lines.join("\n");
41
+ };
42
+ const formatCompletionFeedback = (result, maxIterationReached) => {
43
+ return formatBaseCompletionFeedback(result, maxIterationReached, (scorer) => `###### ${scorer.scorerName} (${scorer.scorerId})`, "🔄 Will continue working on the task.");
44
+ };
45
+ const formatStreamCompletionFeedback = (result, maxIterationReached) => {
46
+ return formatBaseCompletionFeedback(result, maxIterationReached, (scorer) => `**${scorer.scorerName}** (${scorer.scorerId})`, "🔄 The task is not yet complete. Please continue working based on the feedback above.");
47
+ };
48
+ // src/lib/mastra-db/types.ts
49
+ /**
50
+ * Canonical metadata block stored under `MastraDBMessage.content.metadata`.
51
+ *
52
+ * Every UX hint the React accumulator needs to surface lives here. Mode-specific
53
+ * fields are all optional so a single record can carry the union without forcing
54
+ * narrowing on the consumer side.
55
+ */
56
+ /**
57
+ * Metadata key carrying a client-generated correlation id. The optimistic
58
+ * pending user bubble and the outgoing `sendMessage` request both stamp this
59
+ * id; the server echoes it back on the `data-user-message` data part so the
60
+ * accumulator can reconcile the pending bubble deterministically (decoupled
61
+ * from the server-assigned signal id). This is transient client state and is
62
+ * stripped once the echo is reconciled and on reload.
63
+ */
64
+ const CLIENT_MESSAGE_ID_KEY = "clientMessageId";
65
+ // src/lib/mastra-db/accumulator.ts
66
+ function toolErrorText(error) {
67
+ if (error && typeof error === "object") {
68
+ if ("message" in error && typeof error.message === "string") return error.message;
69
+ if ("cause" in error) {
70
+ const cause = error.cause;
71
+ if (cause && typeof cause === "object") {
72
+ if (("id" in cause ? cause.id : "code" in cause ? cause.code : void 0) === "AGENT_AGENT_TOOL_EXECUTION_FAILED" && "message" in cause && typeof cause.message === "string") return cause.message;
73
+ }
74
+ }
75
+ }
76
+ return String(error);
77
+ }
78
+ /**
79
+ * Agent-as-tool boundaries wrap progressive chunks in nested `tool-output`
80
+ * envelopes. Peel only agent boundaries; workflow/tool envelopes remain the
81
+ * leaf so existing child-message accumulation can process them normally.
82
+ */
83
+ const normalizeNestedAgentOutput = (output) => {
84
+ const boundaries = [];
85
+ const seen = /* @__PURE__ */ new Set();
86
+ let current = output;
87
+ while (current !== null && typeof current === "object") {
88
+ if (seen.has(current)) return void 0;
89
+ seen.add(current);
90
+ const chunk = current;
91
+ if (chunk.type !== "tool-output") return {
92
+ leaf: current,
93
+ boundaries
94
+ };
95
+ const toolCallId = chunk.payload?.toolCallId;
96
+ const toolName = chunk.payload?.toolName;
97
+ if (typeof toolName !== "string" || !toolName.startsWith("agent-")) return {
98
+ leaf: current,
99
+ boundaries
100
+ };
101
+ if (typeof toolCallId !== "string" || !("output" in (chunk.payload ?? {}))) return void 0;
102
+ boundaries.push({
103
+ toolCallId,
104
+ toolName
105
+ });
106
+ current = chunk.payload?.output;
107
+ }
108
+ };
109
+ const cloneMetadata = (metadata) => metadata ? { ...metadata } : {};
110
+ const withParts = (message, parts) => ({
111
+ ...message,
112
+ content: {
113
+ ...message.content,
114
+ parts
115
+ }
116
+ });
117
+ const withMetadata = (message, metadata) => ({
118
+ ...message,
119
+ content: {
120
+ ...message.content,
121
+ metadata
122
+ }
123
+ });
124
+ const clearPendingStatus = (message) => {
125
+ const { status: _status, queued: _queued, [CLIENT_MESSAGE_ID_KEY]: _clientMessageId, ...rest } = message.content.metadata ?? {};
126
+ return withMetadata(message, rest);
127
+ };
128
+ const clearPendingStatusKeepClientId = (message) => {
129
+ const { status: _status, queued: _queued, ...rest } = message.content.metadata ?? {};
130
+ return withMetadata(message, rest);
131
+ };
132
+ const replaceLast = (conversation, message) => [...conversation.slice(0, -1), message];
133
+ const replaceAt = (conversation, index, message) => [
134
+ ...conversation.slice(0, index),
135
+ message,
136
+ ...conversation.slice(index + 1)
137
+ ];
138
+ const newAssistantMessage = (id, parts, metadata) => ({
139
+ id,
140
+ role: "assistant",
141
+ createdAt: /* @__PURE__ */ new Date(),
142
+ content: {
143
+ format: 2,
144
+ parts,
145
+ metadata: cloneMetadata(metadata)
146
+ }
147
+ });
148
+ const appendAssistantMessage = (conversation, id, parts, metadata) => [...conversation, newAssistantMessage(id, parts, metadata)];
149
+ const isToolPart = (part) => part.type === "tool-invocation";
150
+ const partTextId = (part) => part.type === "text" ? part.textId : void 0;
151
+ const partState = (part) => part.state;
152
+ /**
153
+ * Set any streaming text/reasoning parts on the trailing assistant message to
154
+ * `state: 'done'`. Mirrors the previous `finishStreamingAssistantMessage` from
155
+ * the AI-SDK accumulator.
156
+ */
157
+ const finishStreamingAssistantMessage = (conversation) => {
158
+ const lastMessage = conversation[conversation.length - 1];
159
+ if (!lastMessage || lastMessage.role !== "assistant") return conversation;
160
+ if (lastMessage.content.parts.length === 0) return conversation.slice(0, -1);
161
+ const nextParts = lastMessage.content.parts.map((part) => {
162
+ if ((part.type === "text" || part.type === "reasoning") && partState(part) === "streaming") return {
163
+ ...part,
164
+ state: "done"
165
+ };
166
+ return part;
167
+ });
168
+ return replaceLast(conversation, withParts(lastMessage, nextParts));
169
+ };
170
+ /**
171
+ * Locate the assistant message + tool part owning `toolCallId`. Prefers the
172
+ * most recent assistant message and walks back up to 10 messages, matching the
173
+ * historical accumulator's lookup behavior.
174
+ */
175
+ const locateToolPart = (messages, toolCallId, allowMetadataOnlyMatch) => {
176
+ const findIndex = (parts) => parts.findIndex((part) => isToolPart(part) && part.toolInvocation.toolCallId === toolCallId);
177
+ const lastMessage = messages[messages.length - 1];
178
+ if (lastMessage && lastMessage.role === "assistant") {
179
+ const idx = findIndex(lastMessage.content.parts);
180
+ if (idx !== -1) return {
181
+ messageIndex: messages.length - 1,
182
+ toolPartIndex: idx
183
+ };
184
+ }
185
+ let count = 0;
186
+ const maxMessagesBack = 10;
187
+ for (let i = messages.length - 1; i >= 0; i--) {
188
+ if (count > maxMessagesBack) break;
189
+ const message = messages[i];
190
+ if (message.role !== "assistant") continue;
191
+ const idx = findIndex(message.content.parts);
192
+ if (idx !== -1) return {
193
+ messageIndex: i,
194
+ toolPartIndex: idx
195
+ };
196
+ count++;
197
+ }
198
+ if (!allowMetadataOnlyMatch) return null;
199
+ for (let i = messages.length - 1; i >= 0; i--) if (messages[i].role === "assistant") return {
200
+ messageIndex: i,
201
+ toolPartIndex: -1
202
+ };
203
+ return null;
204
+ };
205
+ /**
206
+ * Merge per-toolCallId background-task bookkeeping onto message metadata.
207
+ */
208
+ const mergeBgTaskMetadata = (existing, mode, args, otherMetadata) => {
209
+ const base = cloneMetadata(existing);
210
+ const existingBgTasks = base.backgroundTasks ?? {};
211
+ const nextBgTasks = { ...existingBgTasks };
212
+ if (args.perTaskEntry) {
213
+ const { toolCallId, startedAt, completedAt, taskId, suspendedAt } = args.perTaskEntry;
214
+ nextBgTasks[toolCallId] = {
215
+ ...existingBgTasks[toolCallId] ?? { taskId },
216
+ taskId,
217
+ ...startedAt !== void 0 ? { startedAt } : {},
218
+ ...completedAt !== void 0 ? { completedAt } : {},
219
+ ...suspendedAt !== void 0 ? { suspendedAt } : {}
220
+ };
221
+ }
222
+ const merged = {
223
+ ...base,
224
+ ...otherMetadata ?? {},
225
+ mode,
226
+ backgroundTasks: nextBgTasks
227
+ };
228
+ if (args.resetRunningCount) merged.runningBackgroundTasksCount = void 0;
229
+ return merged;
230
+ };
231
+ /**
232
+ * Workflow chunk accumulation. Mirrors
233
+ * `mapWorkflowStreamChunkToWatchResult` from the previous accumulator.
234
+ */
235
+ const mapWorkflowStreamChunkToWatchResult = (prev, chunk) => {
236
+ const previous = prev && typeof prev === "object" && prev.steps && typeof prev.steps === "object" ? prev : {
237
+ status: "running",
238
+ input: void 0,
239
+ steps: {}
240
+ };
241
+ if (chunk.type === "workflow-start") return {
242
+ input: previous.input,
243
+ status: "running",
244
+ steps: previous.steps
245
+ };
246
+ if (chunk.type === "workflow-canceled") return {
247
+ ...previous,
248
+ status: "canceled"
249
+ };
250
+ if (chunk.type === "workflow-paused") return {
251
+ ...previous,
252
+ status: "paused"
253
+ };
254
+ if (chunk.type === "workflow-finish") {
255
+ const finalStatus = chunk.payload.workflowStatus;
256
+ const lastStep = Object.values(previous.steps).pop();
257
+ return {
258
+ ...previous,
259
+ status: chunk.payload.workflowStatus,
260
+ ...finalStatus === "success" && lastStep?.status === "success" ? { result: lastStep?.output } : finalStatus === "failed" && lastStep?.status === "failed" ? { error: lastStep?.error } : finalStatus === "tripwire" && chunk.payload.tripwire ? { tripwire: chunk.payload.tripwire } : {}
261
+ };
262
+ }
263
+ const stepId = chunk.payload?.id;
264
+ if (stepId === void 0) return previous;
265
+ const { stepCallId: _stepCallId, stepName: _stepName, ...newPayload } = chunk.payload;
266
+ const newSteps = {
267
+ ...previous.steps,
268
+ [stepId]: {
269
+ ...previous.steps[stepId],
270
+ ...newPayload
271
+ }
272
+ };
273
+ if (chunk.type === "workflow-step-start") return {
274
+ ...previous,
275
+ steps: newSteps
276
+ };
277
+ if (chunk.type === "workflow-step-suspended") {
278
+ const suspended = Object.entries(newSteps).flatMap(([stepId, stepResult]) => {
279
+ if (stepResult?.status === "suspended") {
280
+ const nestedPath = stepResult?.suspendPayload?.__workflow_meta?.path;
281
+ return nestedPath ? [[stepId, ...nestedPath]] : [[stepId]];
282
+ }
283
+ return [];
284
+ });
285
+ return {
286
+ ...previous,
287
+ status: "suspended",
288
+ steps: newSteps,
289
+ suspendPayload: chunk.payload.suspendPayload,
290
+ suspended
291
+ };
292
+ }
293
+ if (chunk.type === "workflow-step-waiting") return {
294
+ ...previous,
295
+ status: "waiting",
296
+ steps: newSteps
297
+ };
298
+ if (chunk.type === "workflow-step-progress") return {
299
+ ...previous,
300
+ steps: {
301
+ ...previous.steps,
302
+ [stepId]: {
303
+ ...previous.steps[stepId],
304
+ foreachProgress: {
305
+ completedCount: chunk.payload.completedCount,
306
+ totalCount: chunk.payload.totalCount,
307
+ currentIndex: chunk.payload.currentIndex,
308
+ iterationStatus: chunk.payload.iterationStatus,
309
+ iterationOutput: chunk.payload.iterationOutput
310
+ }
311
+ }
312
+ }
313
+ };
314
+ if (chunk.type === "workflow-step-result") return {
315
+ ...previous,
316
+ steps: newSteps
317
+ };
318
+ return previous;
319
+ };
320
+ const signalContentsToUserMessages = (contents, metadata) => {
321
+ const makeUserMessage = (parts) => ({
322
+ id: `signal-${Date.now()}`,
323
+ role: "user",
324
+ createdAt: /* @__PURE__ */ new Date(),
325
+ content: {
326
+ format: 2,
327
+ parts,
328
+ metadata: cloneMetadata(metadata)
329
+ }
330
+ });
331
+ const toMessagePart = (part) => {
332
+ if (!part || typeof part !== "object") return [];
333
+ const typedPart = part;
334
+ if (typedPart.type === "text" && typeof typedPart.text === "string") return [{
335
+ type: "text",
336
+ text: typedPart.text
337
+ }];
338
+ if (typedPart.type === "image") {
339
+ const image = typedPart.image;
340
+ const mimeType = typeof typedPart.mediaType === "string" ? typedPart.mediaType : typeof typedPart.mimeType === "string" ? typedPart.mimeType : "image/*";
341
+ if (typeof image === "string" || image instanceof URL || image instanceof ArrayBuffer || image instanceof Uint8Array) return [{
342
+ type: "file",
343
+ mimeType,
344
+ data: encodeFilePartDataForStorage(image, mimeType)
345
+ }];
346
+ return [{
347
+ type: "file",
348
+ mimeType,
349
+ data: ""
350
+ }];
351
+ }
352
+ if (typedPart.type === "file") {
353
+ const data = typedPart.data;
354
+ const mimeType = typeof typedPart.mediaType === "string" ? typedPart.mediaType : typeof typedPart.mimeType === "string" ? typedPart.mimeType : "application/octet-stream";
355
+ if (typeof data === "string" || data instanceof URL || data instanceof ArrayBuffer || data instanceof Uint8Array) return [{
356
+ type: "file",
357
+ mimeType,
358
+ data: encodeFilePartDataForStorage(data, mimeType),
359
+ ...typeof typedPart.filename === "string" ? { filename: typedPart.filename } : {}
360
+ }];
361
+ return [{
362
+ type: "file",
363
+ mimeType,
364
+ data: typeof typedPart.url === "string" ? typedPart.url : "",
365
+ ...typeof typedPart.filename === "string" ? { filename: typedPart.filename } : {}
366
+ }];
367
+ }
368
+ return [];
369
+ };
370
+ if (typeof contents === "string") return [makeUserMessage([{
371
+ type: "text",
372
+ text: contents
373
+ }])];
374
+ if (Array.isArray(contents)) {
375
+ const parts = contents.flatMap(toMessagePart);
376
+ return parts.length ? [makeUserMessage(parts)] : contents.flatMap((content) => signalContentsToUserMessages(content, metadata));
377
+ }
378
+ if (!contents || typeof contents !== "object") return [];
379
+ const message = contents;
380
+ if (message.role && message.role !== "user") return [];
381
+ const content = message.content;
382
+ if (typeof content === "string") return [makeUserMessage([{
383
+ type: "text",
384
+ text: content
385
+ }])];
386
+ if (!Array.isArray(content)) return [];
387
+ const parts = content.flatMap(toMessagePart);
388
+ return parts.length ? [makeUserMessage(parts)] : [];
389
+ };
390
+ const reconcilePendingUserEcho = (message, echoedContents, metadata, options) => {
391
+ const echoedParts = signalContentsToUserMessages(echoedContents, metadata)[0]?.content.parts;
392
+ let reconciled = typeof options.signalId === "string" ? {
393
+ ...message,
394
+ id: options.signalId
395
+ } : message;
396
+ if (echoedParts?.length) reconciled = {
397
+ ...reconciled,
398
+ content: {
399
+ ...reconciled.content,
400
+ parts: echoedParts
401
+ }
402
+ };
403
+ return options.keepClientMessageId ? clearPendingStatusKeepClientId(reconciled) : clearPendingStatus(reconciled);
404
+ };
405
+ const makeToolInvocationPart = (invocation) => ({
406
+ type: "tool-invocation",
407
+ toolInvocation: invocation
408
+ });
409
+ /**
410
+ * Narrow the chunk to the template-literal passthrough variants from
411
+ * `NetworkChunkType`. Encoded as a type guard so the surrounding `switch`
412
+ * statement can stay exhaustive over the remaining string-literal cases.
413
+ */
414
+ const isTemplateLiteralPassthrough = (chunk) => chunk.type.startsWith("agent-execution-event-") || chunk.type.startsWith("workflow-execution-event-");
415
+ /**
416
+ * Narrow the chunk to the `data-${string}` family. Used so the trailing
417
+ * exhaustiveness check can prove the switch covers every remaining variant.
418
+ */
419
+ const isDataChunk = (chunk) => chunk.type.startsWith("data-");
420
+ /**
421
+ * Reduce a single stream chunk into the running `MastraDBMessage[]`
422
+ * conversation. The accumulator owns the entire chunk→DB mapping for the
423
+ * React SDK; consumers downstream (e.g. `toAISdkV5Messages` in the playground)
424
+ * translate the result into AI SDK / assistant-ui shapes as needed.
425
+ */
426
+ const isQueuedUserBubble = (message) => message.role === "user" && message.content.metadata?.queued === true;
427
+ const isUserMessagePendingChunk = (chunk) => chunk.type === "data-user-message-pending";
428
+ const isUserMessageCancelledChunk = (chunk) => chunk.type === "data-user-message-cancelled";
429
+ const accumulateChunk = ({ chunk, conversation, metadata }) => {
430
+ const result = [...conversation];
431
+ if (isUserMessageCancelledChunk(chunk)) return result.filter((message) => !(message.id === chunk.data.id && message.content.metadata?.status === "pending"));
432
+ const isQueuedChunk = isUserMessagePendingChunk(chunk) && chunk.data.metadata.status === "queued";
433
+ const queuedTailLength = (() => {
434
+ let count = 0;
435
+ while (count < result.length && isQueuedUserBubble(result[result.length - 1 - count])) count++;
436
+ return count;
437
+ })();
438
+ if (!isQueuedChunk && queuedTailLength > 0) {
439
+ const echoedId = isDataChunk(chunk) && chunk.type === "data-user-message" ? chunk.data?.id : void 0;
440
+ const tailStart = result.length - queuedTailLength;
441
+ const queuedTail = result.slice(tailStart).filter((message) => message.id !== echoedId);
442
+ return [...accumulateChunk({
443
+ chunk,
444
+ conversation: result.slice(0, tailStart),
445
+ metadata
446
+ }), ...queuedTail];
447
+ }
448
+ if (isUserMessagePendingChunk(chunk)) {
449
+ const { id, contents, metadata: signalMetadata } = chunk.data;
450
+ const clientId = signalMetadata[CLIENT_MESSAGE_ID_KEY];
451
+ const existing = result.find((message) => message.id === id || typeof clientId === "string" && message.content.metadata?.["clientMessageId"] === clientId);
452
+ if (existing) {
453
+ if (existing.content.metadata?.status !== "pending") return result;
454
+ return result.map((message) => message === existing ? {
455
+ ...message,
456
+ id,
457
+ content: {
458
+ ...message.content,
459
+ metadata: {
460
+ ...message.content.metadata,
461
+ ...signalMetadata.status === "queued" ? { queued: true } : {}
462
+ }
463
+ }
464
+ } : message);
465
+ }
466
+ const pendingMessages = signalContentsToUserMessages(contents, {
467
+ ...metadata,
468
+ status: "pending",
469
+ ...typeof clientId === "string" ? { [CLIENT_MESSAGE_ID_KEY]: clientId } : {},
470
+ ...signalMetadata.status === "queued" ? { queued: true } : {}
471
+ });
472
+ return [...result, ...pendingMessages.map((message, index) => ({
473
+ ...message,
474
+ id: index === 0 ? id : `${id}-${index}`
475
+ }))];
476
+ }
477
+ if (isTemplateLiteralPassthrough(chunk)) return result;
478
+ if (isDataChunk(chunk)) {
479
+ if (chunk.type === "data-user-message" && "data" in chunk && (chunk.data?.type === "user-message" || chunk.data?.type === "user")) {
480
+ const signalId = chunk.data.id;
481
+ const echoedClientMessageId = chunk.data?.metadata?.[CLIENT_MESSAGE_ID_KEY];
482
+ if (typeof echoedClientMessageId === "string" && result.some((message) => message.content.metadata?.status === "pending" && message.content.metadata["clientMessageId"] === echoedClientMessageId)) return finishStreamingAssistantMessage(result.map((message) => message.content.metadata?.status === "pending" && message.content.metadata["clientMessageId"] === echoedClientMessageId ? reconcilePendingUserEcho(message, chunk.data.contents, metadata, {
483
+ signalId: typeof signalId === "string" ? signalId : void 0,
484
+ keepClientMessageId: true
485
+ }) : message));
486
+ if (typeof signalId === "string" && result.some((message) => message.id === signalId)) return finishStreamingAssistantMessage(result.map((message) => message.id === signalId && message.content.metadata?.status === "pending" ? reconcilePendingUserEcho(message, chunk.data.contents, metadata, { keepClientMessageId: false }) : message));
487
+ const userMessages = signalContentsToUserMessages(chunk.data.contents, metadata);
488
+ if (!userMessages.length) return result;
489
+ const conversationWithFinishedAssistant = finishStreamingAssistantMessage(result);
490
+ const messageIdPrefix = typeof signalId === "string" ? signalId : `signal-${chunk.runId}-${Date.now()}`;
491
+ return [...conversationWithFinishedAssistant, ...userMessages.map((message, index) => ({
492
+ ...message,
493
+ id: index === 0 ? messageIdPrefix : `${messageIdPrefix}-${index}`
494
+ }))];
495
+ }
496
+ const dataPart = {
497
+ type: chunk.type,
498
+ data: "data" in chunk ? chunk.data : void 0,
499
+ ..."id" in chunk && typeof chunk.id === "string" ? { id: chunk.id } : {}
500
+ };
501
+ const lastMessage = result[result.length - 1];
502
+ if (!lastMessage || lastMessage.role !== "assistant") return appendAssistantMessage(result, `data-${chunk.runId}-${Date.now()}`, [dataPart], metadata);
503
+ return replaceLast(result, withParts(lastMessage, [...lastMessage.content.parts, dataPart]));
504
+ }
505
+ switch (chunk.type) {
506
+ case "tripwire": {
507
+ const newMessage = newAssistantMessage(`tripwire-${chunk.runId + Date.now()}`, [{
508
+ type: "text",
509
+ text: chunk.payload.reason
510
+ }], {
511
+ ...metadata,
512
+ status: "tripwire",
513
+ tripwire: {
514
+ reason: chunk.payload.reason,
515
+ retry: chunk.payload.retry,
516
+ metadata: chunk.payload.metadata,
517
+ processorId: chunk.payload.processorId
518
+ }
519
+ });
520
+ return [...result, newMessage];
521
+ }
522
+ case "start": {
523
+ const messageId = typeof chunk.payload?.messageId === "string" ? chunk.payload.messageId : void 0;
524
+ if (messageId && result.some((message) => message.id === messageId)) return result;
525
+ return [...result, newAssistantMessage(messageId ?? `start-${chunk.runId + Date.now()}`, [], metadata)];
526
+ }
527
+ case "text-start": {
528
+ const lastMessage = result[result.length - 1];
529
+ const textId = chunk.payload.id || `text-${Date.now()}`;
530
+ const tailPart = lastMessage?.content.parts[lastMessage.content.parts.length - 1];
531
+ if (chunk.payload.id && lastMessage?.role === "assistant" && tailPart?.type === "text" && partTextId(tailPart) === textId) return result;
532
+ const newTextPart = {
533
+ type: "text",
534
+ text: "",
535
+ state: "streaming",
536
+ textId,
537
+ providerMetadata: chunk.payload.providerMetadata
538
+ };
539
+ if (!lastMessage || lastMessage.role !== "assistant") return appendAssistantMessage(result, `start-${chunk.runId}-${Date.now()}`, [newTextPart], metadata);
540
+ if (lastMessage.content.metadata?.completionResult) return appendAssistantMessage(result, `start-${chunk.runId}-${Date.now()}`, [newTextPart], metadata);
541
+ return replaceLast(result, withParts(lastMessage, [...lastMessage.content.parts, newTextPart]));
542
+ }
543
+ case "background-task-progress": {
544
+ const lastMessage = result[result.length - 1];
545
+ if (!lastMessage || lastMessage.role !== "assistant") return result;
546
+ return replaceLast(result, withMetadata(lastMessage, {
547
+ mode: metadata.mode,
548
+ ...lastMessage.content.metadata,
549
+ runningBackgroundTasksCount: chunk.payload.runningCount
550
+ }));
551
+ }
552
+ case "text-delta": {
553
+ const lastMessage = result[result.length - 1];
554
+ const textId = chunk.payload.id;
555
+ if (!lastMessage || lastMessage.role !== "assistant") {
556
+ const newTextPart = {
557
+ type: "text",
558
+ text: chunk.payload.text,
559
+ state: "streaming",
560
+ textId,
561
+ providerMetadata: chunk.payload.providerMetadata
562
+ };
563
+ return appendAssistantMessage(result, `text-${chunk.runId}-${Date.now()}`, [newTextPart], metadata);
564
+ }
565
+ const parts = [...lastMessage.content.parts];
566
+ let textPartIndex = textId ? parts.findLastIndex((part) => part.type === "text" && partTextId(part) === textId) : -1;
567
+ if (textPartIndex === -1) textPartIndex = parts.findLastIndex((part) => part.type === "text" && partState(part) === "streaming");
568
+ if (textPartIndex !== -1 && parts.some((part, index) => index > textPartIndex && part.type !== "text")) textPartIndex = -1;
569
+ if (textPartIndex === -1) {
570
+ const newTextPart = {
571
+ type: "text",
572
+ text: chunk.payload.text,
573
+ state: "streaming",
574
+ textId,
575
+ providerMetadata: chunk.payload.providerMetadata
576
+ };
577
+ parts.push(newTextPart);
578
+ } else {
579
+ const textPart = parts[textPartIndex];
580
+ parts[textPartIndex] = {
581
+ ...textPart,
582
+ text: textPart.text + chunk.payload.text,
583
+ state: "streaming"
584
+ };
585
+ }
586
+ return replaceLast(result, withParts(lastMessage, parts));
587
+ }
588
+ case "text-end": return result;
589
+ case "reasoning-start": {
590
+ const lastMessage = result[result.length - 1];
591
+ const newReasoningPart = {
592
+ type: "reasoning",
593
+ reasoning: "",
594
+ state: "streaming",
595
+ providerMetadata: chunk.payload.providerMetadata
596
+ };
597
+ if (!lastMessage || lastMessage.role !== "assistant") return appendAssistantMessage(result, `reasoning-${chunk.runId + Date.now()}`, [newReasoningPart], metadata);
598
+ return replaceLast(result, withParts(lastMessage, [...lastMessage.content.parts, newReasoningPart]));
599
+ }
600
+ case "reasoning-delta": {
601
+ const lastMessage = result[result.length - 1];
602
+ if (!lastMessage || lastMessage.role !== "assistant") {
603
+ const newReasoningPart = {
604
+ type: "reasoning",
605
+ reasoning: chunk.payload.text,
606
+ state: "streaming",
607
+ providerMetadata: chunk.payload.providerMetadata
608
+ };
609
+ return appendAssistantMessage(result, `reasoning-${chunk.runId + Date.now()}`, [newReasoningPart], metadata);
610
+ }
611
+ const parts = [...lastMessage.content.parts];
612
+ const lastIndex = parts.length - 1;
613
+ const lastPart = parts[lastIndex];
614
+ if (lastPart?.type === "reasoning") {
615
+ const reasoningPart = lastPart;
616
+ parts[lastIndex] = {
617
+ ...reasoningPart,
618
+ reasoning: reasoningPart.reasoning + chunk.payload.text,
619
+ state: "streaming"
620
+ };
621
+ } else {
622
+ const newReasoningPart = {
623
+ type: "reasoning",
624
+ reasoning: chunk.payload.text,
625
+ state: "streaming",
626
+ providerMetadata: chunk.payload.providerMetadata
627
+ };
628
+ parts.push(newReasoningPart);
629
+ }
630
+ return replaceLast(result, withParts(lastMessage, parts));
631
+ }
632
+ case "reasoning-end": {
633
+ const lastMessage = result[result.length - 1];
634
+ if (!lastMessage || lastMessage.role !== "assistant") return result;
635
+ const parts = [...lastMessage.content.parts];
636
+ const reasoningIndex = parts.findLastIndex((part) => part.type === "reasoning" && partState(part) === "streaming");
637
+ if (reasoningIndex === -1) return result;
638
+ const reasoningPart = parts[reasoningIndex];
639
+ const existingMeta = reasoningPart.providerMetadata;
640
+ const endMeta = chunk.payload.providerMetadata;
641
+ parts[reasoningIndex] = {
642
+ ...reasoningPart,
643
+ state: "done",
644
+ ...existingMeta || endMeta ? { providerMetadata: {
645
+ ...existingMeta ?? {},
646
+ ...endMeta ?? {}
647
+ } } : {}
648
+ };
649
+ return replaceLast(result, withParts(lastMessage, parts));
650
+ }
651
+ case "reasoning-signature": {
652
+ const lastMessage = result[result.length - 1];
653
+ if (!lastMessage || lastMessage.role !== "assistant") return result;
654
+ const parts = [...lastMessage.content.parts];
655
+ const reasoningIndex = parts.findLastIndex((part) => part.type === "reasoning");
656
+ if (reasoningIndex === -1) return result;
657
+ const reasoningPart = parts[reasoningIndex];
658
+ const existingMeta = reasoningPart.providerMetadata;
659
+ const sigMeta = chunk.payload.providerMetadata;
660
+ parts[reasoningIndex] = {
661
+ ...reasoningPart,
662
+ ...existingMeta || sigMeta ? { providerMetadata: {
663
+ ...existingMeta ?? {},
664
+ ...sigMeta ?? {}
665
+ } } : {}
666
+ };
667
+ return replaceLast(result, withParts(lastMessage, parts));
668
+ }
669
+ case "redacted-reasoning": {
670
+ const lastMessage = result[result.length - 1];
671
+ const redactedData = chunk.payload.data;
672
+ const redactedPart = {
673
+ type: "reasoning",
674
+ reasoning: typeof redactedData === "string" ? redactedData : "",
675
+ state: "done",
676
+ redacted: true,
677
+ providerMetadata: chunk.payload.providerMetadata
678
+ };
679
+ if (!lastMessage || lastMessage.role !== "assistant") return appendAssistantMessage(result, `redacted-reasoning-${chunk.runId + Date.now()}`, [redactedPart], metadata);
680
+ return replaceLast(result, withParts(lastMessage, [...lastMessage.content.parts, redactedPart]));
681
+ }
682
+ case "tool-call": {
683
+ const invocation = {
684
+ state: "call",
685
+ toolCallId: chunk.payload.toolCallId,
686
+ toolName: chunk.payload.toolName,
687
+ args: chunk.payload.args
688
+ };
689
+ const newPart = {
690
+ ...makeToolInvocationPart(invocation),
691
+ title: chunk.payload.title,
692
+ providerMetadata: chunk.payload.providerMetadata
693
+ };
694
+ const existing = locateToolPart(result, chunk.payload.toolCallId, false);
695
+ if (existing && existing.toolPartIndex >= 0) {
696
+ const { messageIndex, toolPartIndex } = existing;
697
+ const targetMessage = result[messageIndex];
698
+ if (targetMessage && targetMessage.role === "assistant") {
699
+ const parts = [...targetMessage.content.parts];
700
+ const prev = parts[toolPartIndex];
701
+ if (isToolPart(prev)) {
702
+ const { argsText: _argsText, ...rest } = prev;
703
+ parts[toolPartIndex] = {
704
+ ...rest,
705
+ toolInvocation: {
706
+ ...prev.toolInvocation,
707
+ state: "call",
708
+ toolName: chunk.payload.toolName,
709
+ toolCallId: chunk.payload.toolCallId,
710
+ args: chunk.payload.args
711
+ },
712
+ title: chunk.payload.title ?? prev.title,
713
+ providerMetadata: chunk.payload.providerMetadata ?? prev.providerMetadata
714
+ };
715
+ return replaceAt(result, messageIndex, withParts(targetMessage, parts));
716
+ }
717
+ }
718
+ }
719
+ const lastMessage = result[result.length - 1];
720
+ if (!lastMessage || lastMessage.role !== "assistant") return appendAssistantMessage(result, `tool-call-${chunk.runId + Date.now()}`, [newPart], metadata);
721
+ return replaceLast(result, withParts(lastMessage, [...lastMessage.content.parts, newPart]));
722
+ }
723
+ case "tool-call-input-streaming-start": {
724
+ const lastMessage = result[result.length - 1];
725
+ const invocation = {
726
+ state: "partial-call",
727
+ toolCallId: chunk.payload.toolCallId,
728
+ toolName: chunk.payload.toolName,
729
+ args: {}
730
+ };
731
+ const newPart = {
732
+ ...makeToolInvocationPart(invocation),
733
+ title: chunk.payload.title,
734
+ argsText: ""
735
+ };
736
+ if (!lastMessage || lastMessage.role !== "assistant") return appendAssistantMessage(result, `tool-call-streaming-${chunk.runId + Date.now()}`, [newPart], metadata);
737
+ return replaceLast(result, withParts(lastMessage, [...lastMessage.content.parts, newPart]));
738
+ }
739
+ case "tool-call-delta": {
740
+ const location = locateToolPart(result, chunk.payload.toolCallId, false);
741
+ if (!location || location.toolPartIndex < 0) return result;
742
+ const { messageIndex, toolPartIndex } = location;
743
+ const targetMessage = result[messageIndex];
744
+ if (!targetMessage || targetMessage.role !== "assistant") return result;
745
+ const parts = [...targetMessage.content.parts];
746
+ const toolPart = parts[toolPartIndex];
747
+ if (!isToolPart(toolPart)) return result;
748
+ const nextArgsText = (toolPart.argsText ?? "") + (chunk.payload.argsTextDelta ?? "");
749
+ parts[toolPartIndex] = {
750
+ ...toolPart,
751
+ argsText: nextArgsText,
752
+ toolInvocation: {
753
+ ...toolPart.toolInvocation,
754
+ state: "partial-call"
755
+ }
756
+ };
757
+ return replaceAt(result, messageIndex, withParts(targetMessage, parts));
758
+ }
759
+ case "tool-call-input-streaming-end": {
760
+ const location = locateToolPart(result, chunk.payload.toolCallId, false);
761
+ if (!location || location.toolPartIndex < 0) return result;
762
+ const { messageIndex, toolPartIndex } = location;
763
+ const targetMessage = result[messageIndex];
764
+ if (!targetMessage || targetMessage.role !== "assistant") return result;
765
+ const parts = [...targetMessage.content.parts];
766
+ const toolPart = parts[toolPartIndex];
767
+ if (!isToolPart(toolPart)) return result;
768
+ let parsedArgs = {};
769
+ const argsText = toolPart.argsText;
770
+ if (typeof argsText === "string" && argsText.length > 0) try {
771
+ const maybe = JSON.parse(argsText);
772
+ if (maybe && typeof maybe === "object" && !Array.isArray(maybe)) parsedArgs = maybe;
773
+ } catch {
774
+ parsedArgs = {};
775
+ }
776
+ parts[toolPartIndex] = {
777
+ ...toolPart,
778
+ toolInvocation: {
779
+ ...toolPart.toolInvocation,
780
+ state: "call",
781
+ args: parsedArgs
782
+ }
783
+ };
784
+ return replaceAt(result, messageIndex, withParts(targetMessage, parts));
785
+ }
786
+ case "tool-output-denied": {
787
+ const location = locateToolPart(result, chunk.payload.toolCallId, false);
788
+ if (!location || location.toolPartIndex < 0) return result;
789
+ const { messageIndex, toolPartIndex } = location;
790
+ const targetMessage = result[messageIndex];
791
+ if (!targetMessage || targetMessage.role !== "assistant") return result;
792
+ const parts = [...targetMessage.content.parts];
793
+ const toolPart = parts[toolPartIndex];
794
+ if (!isToolPart(toolPart)) return result;
795
+ parts[toolPartIndex] = {
796
+ ...toolPart,
797
+ toolInvocation: {
798
+ ...toolPart.toolInvocation,
799
+ state: "output-denied",
800
+ toolName: chunk.payload.toolName,
801
+ args: chunk.payload.args ?? toolPart.toolInvocation.args,
802
+ approval: chunk.payload.approval
803
+ }
804
+ };
805
+ return replaceAt(result, messageIndex, withParts(targetMessage, parts));
806
+ }
807
+ case "tool-error":
808
+ case "tool-result":
809
+ case "background-task-completed":
810
+ case "background-task-failed": {
811
+ const isBgTaskEvent = chunk.type === "background-task-completed" || chunk.type === "background-task-failed";
812
+ const location = locateToolPart(result, chunk.payload.toolCallId, isBgTaskEvent);
813
+ if (!location) return result;
814
+ const { messageIndex, toolPartIndex } = location;
815
+ const targetMessage = result[messageIndex];
816
+ if (!targetMessage || targetMessage.role !== "assistant") return result;
817
+ const parts = [...targetMessage.content.parts];
818
+ const toolPart = toolPartIndex >= 0 ? parts[toolPartIndex] : void 0;
819
+ let payloadResult;
820
+ let payloadError;
821
+ let payloadIsError = false;
822
+ let payloadProviderMetadata;
823
+ let payloadCompletedAt;
824
+ let payloadTaskId;
825
+ switch (chunk.type) {
826
+ case "tool-result":
827
+ payloadResult = chunk.payload.result;
828
+ payloadIsError = Boolean(chunk.payload.isError);
829
+ payloadProviderMetadata = chunk.payload.providerMetadata;
830
+ break;
831
+ case "tool-error":
832
+ payloadError = chunk.payload.error;
833
+ payloadProviderMetadata = chunk.payload.providerMetadata;
834
+ break;
835
+ case "background-task-completed":
836
+ payloadResult = chunk.payload.result;
837
+ payloadCompletedAt = chunk.payload.completedAt;
838
+ payloadTaskId = chunk.payload.taskId;
839
+ break;
840
+ case "background-task-failed":
841
+ payloadError = chunk.payload.error;
842
+ payloadCompletedAt = chunk.payload.completedAt;
843
+ payloadTaskId = chunk.payload.taskId;
844
+ }
845
+ if (toolPart && isToolPart(toolPart)) {
846
+ const { toolName, toolCallId, args } = toolPart.toolInvocation;
847
+ const providerMeta = payloadProviderMetadata ?? toolPart.providerMetadata;
848
+ if (chunk.type === "tool-error" || chunk.type === "background-task-failed" || payloadIsError) {
849
+ const errorText = toolErrorText(chunk.type === "tool-error" || chunk.type === "background-task-failed" ? payloadError : payloadResult);
850
+ parts[toolPartIndex] = {
851
+ ...toolPart,
852
+ providerMetadata: providerMeta,
853
+ toolInvocation: {
854
+ state: "output-error",
855
+ toolCallId,
856
+ toolName,
857
+ args,
858
+ errorText,
859
+ ...chunk.from === "AGENT" ? { result: toolPart.toolInvocation.result } : {}
860
+ }
861
+ };
862
+ } else {
863
+ const resultObj = payloadResult;
864
+ const existingResult = toolPart.toolInvocation.state === "partial-call" || toolPart.toolInvocation.state === "result" ? toolPart.toolInvocation.result : void 0;
865
+ const existingLooksLikeWorkflow = Boolean(existingResult && typeof existingResult === "object" && "steps" in existingResult);
866
+ const isWorkflow = Boolean(resultObj?.result?.steps) || toolName?.startsWith("workflow-") || existingLooksLikeWorkflow;
867
+ const isAgent = chunk.from === "AGENT";
868
+ let output;
869
+ if (isWorkflow) {
870
+ const accumulated = existingLooksLikeWorkflow && existingResult && typeof existingResult === "object" ? existingResult : void 0;
871
+ const payloadWorkflow = resultObj?.result && typeof resultObj.result === "object" ? resultObj.result : void 0;
872
+ if (accumulated || payloadWorkflow) output = {
873
+ ...accumulated ?? {},
874
+ ...payloadWorkflow ?? {},
875
+ steps: payloadWorkflow?.steps ?? accumulated?.steps ?? [],
876
+ status: payloadWorkflow?.status ?? accumulated?.status ?? "success",
877
+ output: payloadResult
878
+ };
879
+ else output = payloadResult;
880
+ } else if (isAgent) {
881
+ const existingOutput = toolPart.toolInvocation.state === "partial-call" || toolPart.toolInvocation.state === "result" ? toolPart.toolInvocation.result : void 0;
882
+ const existingChild = existingOutput?.childMessages;
883
+ output = existingOutput ? {
884
+ ...payloadResult,
885
+ childMessages: existingChild?.length ? existingChild : resultObj?.childMessages
886
+ } : payloadResult;
887
+ } else output = payloadResult;
888
+ parts[toolPartIndex] = {
889
+ ...toolPart,
890
+ providerMetadata: providerMeta,
891
+ toolInvocation: {
892
+ state: "result",
893
+ toolCallId,
894
+ toolName,
895
+ args,
896
+ result: output
897
+ }
898
+ };
899
+ }
900
+ }
901
+ const nextMetadata = mergeBgTaskMetadata(targetMessage.content.metadata, metadata.mode, {
902
+ resetRunningCount: isBgTaskEvent,
903
+ perTaskEntry: isBgTaskEvent && payloadTaskId ? {
904
+ toolCallId: chunk.payload.toolCallId,
905
+ completedAt: payloadCompletedAt,
906
+ taskId: payloadTaskId
907
+ } : void 0
908
+ });
909
+ const nextMessage = {
910
+ ...targetMessage,
911
+ content: {
912
+ ...targetMessage.content,
913
+ parts,
914
+ metadata: nextMetadata
915
+ }
916
+ };
917
+ return replaceAt(result, messageIndex, nextMessage);
918
+ }
919
+ case "background-task-running": {
920
+ const location = locateToolPart(result, chunk.payload.toolCallId, true);
921
+ if (!location) return result;
922
+ const { messageIndex } = location;
923
+ const targetMessage = result[messageIndex];
924
+ if (!targetMessage || targetMessage.role !== "assistant") return result;
925
+ const nextMetadata = mergeBgTaskMetadata(targetMessage.content.metadata, metadata.mode, { perTaskEntry: {
926
+ toolCallId: chunk.payload.toolCallId,
927
+ startedAt: chunk.payload.startedAt,
928
+ taskId: chunk.payload.taskId
929
+ } });
930
+ return replaceAt(result, messageIndex, withMetadata(targetMessage, nextMetadata));
931
+ }
932
+ case "tool-output":
933
+ case "background-task-output": {
934
+ const isBgTaskOutput = chunk.type === "background-task-output";
935
+ const location = locateToolPart(result, chunk.payload.toolCallId, isBgTaskOutput);
936
+ if (!location || location.toolPartIndex < 0) return result;
937
+ const { messageIndex, toolPartIndex } = location;
938
+ const targetMessage = result[messageIndex];
939
+ if (!targetMessage || targetMessage.role !== "assistant") return result;
940
+ const parts = [...targetMessage.content.parts];
941
+ const toolPart = parts[toolPartIndex];
942
+ if (!isToolPart(toolPart)) return result;
943
+ const { toolName, toolCallId, args } = toolPart.toolInvocation;
944
+ const payloadOutput = chunk.type === "background-task-output" ? chunk.payload.payload.payload.output : chunk.payload.output;
945
+ if (payloadOutput?.type?.startsWith("workflow-")) {
946
+ const existingWorkflowState = toolPart.toolInvocation.result;
947
+ const updated = mapWorkflowStreamChunkToWatchResult(existingWorkflowState, payloadOutput);
948
+ parts[toolPartIndex] = {
949
+ ...toolPart,
950
+ toolInvocation: {
951
+ state: "partial-call",
952
+ toolCallId,
953
+ toolName,
954
+ args,
955
+ result: updated
956
+ }
957
+ };
958
+ } else if (toolName.startsWith("agent-") || payloadOutput?.from === "AGENT") {
959
+ const normalized = normalizeNestedAgentOutput(payloadOutput);
960
+ if (!normalized) return result;
961
+ const { leaf, boundaries } = normalized;
962
+ if (leaf.from === "AGENT" || leaf.type === "tool-output" && leaf.payload?.output?.type?.startsWith("workflow-")) return accumulateAgentChunk(leaf, result, metadata, toolCallId, toolName, boundaries);
963
+ return result;
964
+ } else {
965
+ const currentResult = toolPart.toolInvocation.result;
966
+ const existing = Array.isArray(currentResult) ? currentResult : [];
967
+ parts[toolPartIndex] = {
968
+ ...toolPart,
969
+ toolInvocation: {
970
+ state: "partial-call",
971
+ toolCallId,
972
+ toolName,
973
+ args,
974
+ result: [...existing, payloadOutput]
975
+ }
976
+ };
977
+ }
978
+ return replaceAt(result, messageIndex, withParts(targetMessage, parts));
979
+ }
980
+ case "is-task-complete": {
981
+ if (chunk.payload.suppressFeedback) return result;
982
+ const feedback = formatStreamCompletionFeedback({
983
+ complete: chunk.payload.passed,
984
+ scorers: chunk.payload.results,
985
+ totalDuration: chunk.payload.duration,
986
+ timedOut: chunk.payload.timedOut,
987
+ completionReason: chunk.payload.reason
988
+ }, chunk.payload.maxIterationReached);
989
+ const newMessage = newAssistantMessage(`is-task-complete-${chunk.runId + Date.now()}`, [{
990
+ type: "text",
991
+ text: feedback
992
+ }], {
993
+ ...metadata,
994
+ completionResult: { passed: chunk.payload.passed }
995
+ });
996
+ return [...result, newMessage];
997
+ }
998
+ case "source": {
999
+ const lastMessage = result[result.length - 1];
1000
+ if (!lastMessage || lastMessage.role !== "assistant") return result;
1001
+ const parts = [...lastMessage.content.parts];
1002
+ if (chunk.payload.sourceType === "url") {
1003
+ const sourceUrlPart = {
1004
+ type: "source-url",
1005
+ sourceId: chunk.payload.id,
1006
+ url: chunk.payload.url || "",
1007
+ title: chunk.payload.title,
1008
+ providerMetadata: chunk.payload.providerMetadata
1009
+ };
1010
+ parts.push(sourceUrlPart);
1011
+ } else if (chunk.payload.sourceType === "document") parts.push({
1012
+ type: "source-document",
1013
+ sourceId: chunk.payload.id,
1014
+ mediaType: chunk.payload.mimeType || "application/octet-stream",
1015
+ title: chunk.payload.title,
1016
+ filename: chunk.payload.filename,
1017
+ providerMetadata: chunk.payload.providerMetadata
1018
+ });
1019
+ return replaceLast(result, withParts(lastMessage, parts));
1020
+ }
1021
+ case "file": {
1022
+ const lastMessage = result[result.length - 1];
1023
+ if (!lastMessage || lastMessage.role !== "assistant") return result;
1024
+ const parts = [...lastMessage.content.parts];
1025
+ let data;
1026
+ if (typeof chunk.payload.data === "string") data = chunk.payload.base64 ? `data:${chunk.payload.mimeType};base64,${chunk.payload.data}` : `data:${chunk.payload.mimeType},${encodeURIComponent(chunk.payload.data)}`;
1027
+ else {
1028
+ const base64 = uint8ArrayToBase64(chunk.payload.data);
1029
+ data = `data:${chunk.payload.mimeType};base64,${base64}`;
1030
+ }
1031
+ parts.push({
1032
+ type: "file",
1033
+ mimeType: chunk.payload.mimeType,
1034
+ data,
1035
+ providerMetadata: chunk.payload.providerMetadata
1036
+ });
1037
+ return replaceLast(result, withParts(lastMessage, parts));
1038
+ }
1039
+ case "tool-call-approval": {
1040
+ const lastMessage = result[result.length - 1];
1041
+ if (!lastMessage || lastMessage.role !== "assistant") return result;
1042
+ const existingMeta = lastMessage.content.metadata ?? {};
1043
+ const lastRequireApproval = existingMeta.mode === "stream" ? existingMeta.requireApprovalMetadata ?? {} : {};
1044
+ return replaceLast(result, {
1045
+ ...lastMessage,
1046
+ content: {
1047
+ ...lastMessage.content,
1048
+ metadata: {
1049
+ ...existingMeta,
1050
+ mode: "stream",
1051
+ requireApprovalMetadata: {
1052
+ ...lastRequireApproval,
1053
+ [chunk.payload.toolCallId]: {
1054
+ toolCallId: chunk.payload.toolCallId,
1055
+ toolName: chunk.payload.toolName,
1056
+ args: chunk.payload.args
1057
+ }
1058
+ }
1059
+ }
1060
+ }
1061
+ });
1062
+ }
1063
+ case "tool-call-suspended":
1064
+ case "background-task-suspended": {
1065
+ const isBgTaskEvent = chunk.type === "background-task-suspended";
1066
+ let suspToolCallId;
1067
+ let suspToolName;
1068
+ let suspArgs;
1069
+ let suspPayload;
1070
+ let suspSuspendedAt;
1071
+ let suspTaskId;
1072
+ if (chunk.type === "background-task-suspended") {
1073
+ suspToolCallId = chunk.payload.toolCallId;
1074
+ suspToolName = chunk.payload.toolName;
1075
+ suspArgs = chunk.payload.args;
1076
+ suspPayload = chunk.payload.suspendPayload;
1077
+ suspSuspendedAt = chunk.payload.suspendedAt;
1078
+ suspTaskId = chunk.payload.taskId;
1079
+ } else {
1080
+ suspToolCallId = chunk.payload.toolCallId;
1081
+ suspToolName = chunk.payload.toolName;
1082
+ suspArgs = chunk.payload.args;
1083
+ suspPayload = chunk.payload.suspendPayload;
1084
+ }
1085
+ const location = isBgTaskEvent ? locateToolPart(result, suspToolCallId, true) : { messageIndex: result.length - 1 };
1086
+ if (!location) return result;
1087
+ const { messageIndex } = location;
1088
+ const targetMessage = result[messageIndex];
1089
+ if (!targetMessage || targetMessage.role !== "assistant") return result;
1090
+ const existingMeta = targetMessage.content.metadata ?? {};
1091
+ const lastSuspendedTools = existingMeta.mode === "stream" ? existingMeta.suspendedTools ?? {} : {};
1092
+ const nextMetadata = mergeBgTaskMetadata(existingMeta, "stream", {
1093
+ resetRunningCount: isBgTaskEvent,
1094
+ perTaskEntry: isBgTaskEvent && suspTaskId ? {
1095
+ toolCallId: suspToolCallId,
1096
+ suspendedAt: suspSuspendedAt,
1097
+ taskId: suspTaskId
1098
+ } : void 0
1099
+ }, { suspendedTools: {
1100
+ ...lastSuspendedTools,
1101
+ [suspToolName]: {
1102
+ toolCallId: suspToolCallId,
1103
+ toolName: suspToolName,
1104
+ args: suspArgs,
1105
+ suspendPayload: suspPayload,
1106
+ runId: chunk.runId
1107
+ }
1108
+ } });
1109
+ return replaceAt(result, messageIndex, withMetadata(targetMessage, nextMetadata));
1110
+ }
1111
+ case "tool-call-resumed": {
1112
+ const resumedToolCallId = chunk.payload.toolCallId;
1113
+ for (let i = result.length - 1; i >= 0; i--) {
1114
+ const message = result[i];
1115
+ if (!message || message.role !== "assistant") continue;
1116
+ const meta = message.content.metadata;
1117
+ const metadataKeys = chunk.payload.kind === "approval" ? ["pendingToolApprovals", "requireApprovalMetadata"] : ["suspendedTools"];
1118
+ let nextMeta;
1119
+ for (const metadataKey of metadataKeys) {
1120
+ const entries = meta?.[metadataKey];
1121
+ if (!entries) continue;
1122
+ const key = Object.keys(entries).find((k) => (entries[k]?.toolCallId ?? k) === resumedToolCallId);
1123
+ if (!key) continue;
1124
+ const { [key]: _removed, ...remaining } = entries;
1125
+ nextMeta = {
1126
+ ...nextMeta ?? meta,
1127
+ [metadataKey]: remaining
1128
+ };
1129
+ }
1130
+ if (nextMeta) return replaceAt(result, i, withMetadata(message, nextMeta));
1131
+ }
1132
+ return result;
1133
+ }
1134
+ case "finish":
1135
+ case "abort": return finishStreamingAssistantMessage(result);
1136
+ case "error": {
1137
+ const newMessage = newAssistantMessage(`error-${chunk.runId + Date.now()}`, [{
1138
+ type: "text",
1139
+ text: typeof chunk.payload.error === "string" ? chunk.payload.error : JSON.stringify(chunk.payload.error)
1140
+ }], {
1141
+ ...metadata,
1142
+ status: "error"
1143
+ });
1144
+ return [...result, newMessage];
1145
+ }
1146
+ case "step-start": {
1147
+ const stepMessageId = typeof chunk.payload?.messageId === "string" ? chunk.payload.messageId : void 0;
1148
+ if (!stepMessageId) return result;
1149
+ const lastMessage = result[result.length - 1];
1150
+ if (result.some((message) => message.id === stepMessageId)) return result;
1151
+ if (!lastMessage || lastMessage.role !== "assistant") return appendAssistantMessage(result, stepMessageId, [], metadata);
1152
+ if (!lastMessage.content.parts.some((part) => !String(part.type).startsWith("data-"))) return replaceLast(result, {
1153
+ ...lastMessage,
1154
+ id: stepMessageId
1155
+ });
1156
+ return appendAssistantMessage(finishStreamingAssistantMessage(result), stepMessageId, [], metadata);
1157
+ }
1158
+ case "step-finish":
1159
+ case "step-output":
1160
+ case "raw":
1161
+ case "watch":
1162
+ case "response-metadata": return result;
1163
+ case "goal": return result;
1164
+ case "object":
1165
+ case "object-result": return result;
1166
+ case "background-task-started":
1167
+ case "background-task-cancelled":
1168
+ case "background-task-resumed": return result;
1169
+ case "workflow-start":
1170
+ case "workflow-finish":
1171
+ case "workflow-canceled":
1172
+ case "workflow-paused":
1173
+ case "workflow-step-start":
1174
+ case "workflow-step-finish":
1175
+ case "workflow-step-suspended":
1176
+ case "workflow-step-waiting":
1177
+ case "workflow-step-output":
1178
+ case "workflow-step-progress":
1179
+ case "workflow-step-result": return result;
1180
+ case "agent-execution-start":
1181
+ case "agent-execution-approval":
1182
+ case "agent-execution-suspended":
1183
+ case "agent-execution-end":
1184
+ case "agent-execution-abort":
1185
+ case "tool-execution-start":
1186
+ case "tool-execution-end":
1187
+ case "tool-execution-approval":
1188
+ case "tool-execution-suspended":
1189
+ case "tool-execution-abort":
1190
+ case "routing-agent-start":
1191
+ case "routing-agent-text-delta":
1192
+ case "routing-agent-text-start":
1193
+ case "routing-agent-end":
1194
+ case "routing-agent-abort":
1195
+ case "workflow-execution-start":
1196
+ case "workflow-execution-end":
1197
+ case "workflow-execution-suspended":
1198
+ case "workflow-execution-abort":
1199
+ case "network-execution-event-step-finish":
1200
+ case "network-execution-event-finish":
1201
+ case "network-validation-start":
1202
+ case "network-validation-end":
1203
+ case "network-object":
1204
+ case "network-object-result": return result;
1205
+ default: return assertExhaustive(chunk, result);
1206
+ }
1207
+ };
1208
+ /**
1209
+ * Compile-time exhaustiveness helper. At runtime, returns the conversation
1210
+ * unchanged so unexpected chunk variants never throw inside the React stream
1211
+ * pump; TypeScript will fail to compile if `ChunkType` ever grows a new branch
1212
+ * that isn't enumerated above.
1213
+ */
1214
+ const assertExhaustive = (_chunk, fallback) => fallback;
1215
+ const findAgentChildToolIndex = (childMessages, toolCallId, toolName) => {
1216
+ for (let index = childMessages.length - 1; index >= 0; index--) {
1217
+ const message = childMessages[index];
1218
+ if (message?.type !== "tool") continue;
1219
+ if (toolCallId ? message.toolCallId === toolCallId : toolName && message.toolName === toolName) return index;
1220
+ }
1221
+ return -1;
1222
+ };
1223
+ const accumulateAgentChildMessages = (chunk, childMessages) => {
1224
+ if (chunk.type === "text-delta") {
1225
+ const text = chunk.payload.text;
1226
+ const lastChildMessage = childMessages[childMessages.length - 1];
1227
+ const textMessage = {
1228
+ type: "text",
1229
+ content: (lastChildMessage?.type === "text" ? lastChildMessage.content : "") + text
1230
+ };
1231
+ return lastChildMessage?.type === "text" ? [...childMessages.slice(0, -1), textMessage] : [...childMessages, textMessage];
1232
+ }
1233
+ if (chunk.type === "tool-call") {
1234
+ const existingIndex = findAgentChildToolIndex(childMessages, chunk.payload.toolCallId);
1235
+ const toolMessage = {
1236
+ ...existingIndex === -1 ? {} : childMessages[existingIndex],
1237
+ type: "tool",
1238
+ toolCallId: chunk.payload.toolCallId,
1239
+ toolName: chunk.payload.toolName,
1240
+ args: chunk.payload.args
1241
+ };
1242
+ if (existingIndex === -1) return [...childMessages, toolMessage];
1243
+ const nextMessages = [...childMessages];
1244
+ nextMessages[existingIndex] = toolMessage;
1245
+ return nextMessages;
1246
+ }
1247
+ if (chunk.type === "tool-output" && chunk.payload.output?.type?.startsWith("workflow-")) {
1248
+ const toolIndex = findAgentChildToolIndex(childMessages, chunk.payload.toolCallId, chunk.payload.toolName);
1249
+ if (toolIndex === -1) return childMessages;
1250
+ const currentMessage = childMessages[toolIndex];
1251
+ if (currentMessage?.type !== "tool") return childMessages;
1252
+ const existingWorkflowState = currentMessage.toolOutput && typeof currentMessage.toolOutput === "object" ? currentMessage.toolOutput : {};
1253
+ const updated = mapWorkflowStreamChunkToWatchResult(existingWorkflowState, chunk.payload.output);
1254
+ const nextMessages = [...childMessages];
1255
+ nextMessages[toolIndex] = {
1256
+ ...currentMessage,
1257
+ toolOutput: {
1258
+ ...updated,
1259
+ runId: chunk.payload.output.runId
1260
+ }
1261
+ };
1262
+ return nextMessages;
1263
+ }
1264
+ if (chunk.type === "tool-result") {
1265
+ const toolIndex = findAgentChildToolIndex(childMessages, chunk.payload.toolCallId, chunk.payload.toolName);
1266
+ if (toolIndex === -1) return childMessages;
1267
+ const currentMessage = childMessages[toolIndex];
1268
+ if (currentMessage?.type !== "tool") return childMessages;
1269
+ const result = chunk.payload.result;
1270
+ const nextMessages = [...childMessages];
1271
+ nextMessages[toolIndex] = {
1272
+ ...currentMessage,
1273
+ toolOutput: chunk.payload.toolName?.startsWith("workflow-") ? {
1274
+ ...result?.result ?? {},
1275
+ runId: result?.runId
1276
+ } : chunk.payload.result
1277
+ };
1278
+ return nextMessages;
1279
+ }
1280
+ return childMessages;
1281
+ };
1282
+ const routeAgentChunk = (chunk, childMessages, boundaries) => {
1283
+ const [boundary, ...remaining] = boundaries;
1284
+ if (!boundary) return accumulateAgentChildMessages(chunk, childMessages);
1285
+ let toolIndex = findAgentChildToolIndex(childMessages, boundary.toolCallId, boundary.toolName);
1286
+ let nextMessages = childMessages;
1287
+ if (toolIndex === -1) {
1288
+ toolIndex = childMessages.length;
1289
+ nextMessages = [...childMessages, {
1290
+ type: "tool",
1291
+ toolCallId: boundary.toolCallId,
1292
+ toolName: boundary.toolName,
1293
+ args: {}
1294
+ }];
1295
+ }
1296
+ const currentMessage = nextMessages[toolIndex];
1297
+ if (currentMessage?.type !== "tool" || !currentMessage.toolName.startsWith("agent-")) return childMessages;
1298
+ const currentOutput = currentMessage.toolOutput !== null && typeof currentMessage.toolOutput === "object" ? currentMessage.toolOutput : {};
1299
+ const nestedMessages = Array.isArray(currentOutput.childMessages) ? currentOutput.childMessages : [];
1300
+ const updatedNestedMessages = routeAgentChunk(chunk, nestedMessages, remaining);
1301
+ if (updatedNestedMessages === nestedMessages) return childMessages;
1302
+ const updatedMessages = [...nextMessages];
1303
+ updatedMessages[toolIndex] = {
1304
+ ...currentMessage,
1305
+ toolOutput: {
1306
+ ...currentOutput,
1307
+ childMessages: updatedNestedMessages
1308
+ }
1309
+ };
1310
+ return updatedMessages;
1311
+ };
1312
+ const accumulateAgentChunk = (chunk, conversation, _metadata, parentToolCallId, parentToolName, boundaries = []) => {
1313
+ if (!parentToolCallId) return conversation;
1314
+ const location = locateToolPart(conversation, parentToolCallId, false);
1315
+ if (!location) return conversation;
1316
+ const targetMessage = conversation[location.messageIndex];
1317
+ if (!targetMessage || targetMessage.role !== "assistant") return conversation;
1318
+ const parts = [...targetMessage.content.parts];
1319
+ const toolPart = parts[location.toolPartIndex];
1320
+ if (!toolPart || !isToolPart(toolPart)) return conversation;
1321
+ if (parentToolName && toolPart.toolInvocation.toolName !== parentToolName) return conversation;
1322
+ const invocationResult = "result" in toolPart.toolInvocation && toolPart.toolInvocation.result !== null ? toolPart.toolInvocation.result : void 0;
1323
+ const existingResult = invocationResult && typeof invocationResult === "object" ? invocationResult : {};
1324
+ const childMessages = Array.isArray(existingResult.childMessages) ? existingResult.childMessages : [];
1325
+ const updatedChildMessages = routeAgentChunk(chunk, childMessages, boundaries);
1326
+ if (updatedChildMessages === childMessages) return conversation;
1327
+ parts[location.toolPartIndex] = {
1328
+ ...toolPart,
1329
+ toolInvocation: {
1330
+ ...toolPart.toolInvocation,
1331
+ state: "partial-call",
1332
+ result: {
1333
+ ...existingResult,
1334
+ childMessages: updatedChildMessages
1335
+ }
1336
+ }
1337
+ };
1338
+ return replaceAt(conversation, location.messageIndex, withParts(targetMessage, parts));
1339
+ };
1340
+ const networkMode = (metadata) => ({
1341
+ ...metadata,
1342
+ mode: "network"
1343
+ });
1344
+ const findPartIndex = (parts, predicate) => parts.findIndex(predicate);
1345
+ const isDynamicToolPart = (part) => part.type === "dynamic-tool";
1346
+ const lastAssistant = (conversation) => {
1347
+ const last = conversation[conversation.length - 1];
1348
+ return last && last.role === "assistant" ? last : void 0;
1349
+ };
1350
+ /**
1351
+ * Try to parse the buffered routing-agent text as a JSON object. Returns the
1352
+ * parsed object on success, or `null` while the buffer is still incomplete or
1353
+ * not JSON at all.
1354
+ */
1355
+ const tryParseRoutingDecision = (buffered) => {
1356
+ const trimmed = buffered.trim();
1357
+ if (!trimmed.startsWith("{") && !trimmed.startsWith("[")) return null;
1358
+ try {
1359
+ const parsed = JSON.parse(trimmed);
1360
+ if (parsed && typeof parsed === "object") return parsed;
1361
+ return null;
1362
+ } catch {
1363
+ return null;
1364
+ }
1365
+ };
1366
+ /**
1367
+ * Routing-agent text deltas describe the network's routing decision (often a
1368
+ * JSON object such as `{ "isNetwork": true, "agentId": "...", ... }`). The raw
1369
+ * payload is never useful in the rendered thread, so we buffer it in
1370
+ * message-level metadata, promote it to `routingDecision` when it parses as
1371
+ * JSON, and fall back to `routingDecisionText` for non-JSON routing models.
1372
+ * No visible text part is produced.
1373
+ */
1374
+ const handleRoutingAgentDelta = (chunk, conversation, metadata) => {
1375
+ const delta = chunk.payload?.text ?? "";
1376
+ if (!delta) return conversation;
1377
+ const lastMessage = lastAssistant(conversation);
1378
+ const mergeRoutingMetadata = (existing) => {
1379
+ const buffered = (existing.routingDecisionBuffer ?? "") + delta;
1380
+ const next = {
1381
+ ...cloneMetadata(existing),
1382
+ mode: "network"
1383
+ };
1384
+ const parsed = tryParseRoutingDecision(buffered);
1385
+ if (parsed) {
1386
+ next.routingDecision = parsed;
1387
+ delete next.routingDecisionBuffer;
1388
+ delete next.routingDecisionText;
1389
+ } else {
1390
+ next.routingDecisionBuffer = buffered;
1391
+ next.routingDecisionText = buffered;
1392
+ }
1393
+ return next;
1394
+ };
1395
+ if (!lastMessage) {
1396
+ const seed = mergeRoutingMetadata({});
1397
+ return appendAssistantMessage(conversation, `routing-agent-${chunk.payload?.runId ?? "unknown"}-${Date.now()}`, [], {
1398
+ ...networkMode(metadata),
1399
+ ...seed
1400
+ });
1401
+ }
1402
+ return replaceLast(conversation, withMetadata(lastMessage, mergeRoutingMetadata(lastMessage.content.metadata ?? {})));
1403
+ };
1404
+ const handleAgentNetworkChunk = (chunk, conversation, metadata) => {
1405
+ if (chunk.type === "agent-execution-start") {
1406
+ const primitiveId = chunk.payload?.args?.primitiveId;
1407
+ const runId = chunk.payload.runId;
1408
+ if (!primitiveId || !runId) return conversation;
1409
+ const toolPart = {
1410
+ type: "dynamic-tool",
1411
+ toolName: primitiveId,
1412
+ toolCallId: runId,
1413
+ state: "input-available",
1414
+ input: chunk.payload.args
1415
+ };
1416
+ return appendAssistantMessage(conversation, `agent-execution-start-${runId}-${Date.now()}`, [toolPart], {
1417
+ ...networkMode(metadata),
1418
+ selectionReason: chunk.payload?.args?.selectionReason || "",
1419
+ agentInput: chunk.payload?.args?.task,
1420
+ from: "AGENT"
1421
+ });
1422
+ }
1423
+ if (chunk.type === "agent-execution-end") {
1424
+ const lastMessage = lastAssistant(conversation);
1425
+ if (!lastMessage) return conversation;
1426
+ const parts = [...lastMessage.content.parts];
1427
+ const toolPartIndex = findPartIndex(parts, (part) => isDynamicToolPart(part));
1428
+ if (toolPartIndex !== -1) {
1429
+ const toolPart = parts[toolPartIndex];
1430
+ const currentOutput = toolPart.output;
1431
+ parts[toolPartIndex] = {
1432
+ type: "dynamic-tool",
1433
+ toolName: toolPart.toolName,
1434
+ toolCallId: toolPart.toolCallId,
1435
+ state: "output-available",
1436
+ input: toolPart.input,
1437
+ output: {
1438
+ ...currentOutput,
1439
+ result: currentOutput?.result || chunk.payload?.result || ""
1440
+ }
1441
+ };
1442
+ }
1443
+ return replaceLast(conversation, withParts(lastMessage, parts));
1444
+ }
1445
+ if (chunk.type.startsWith("agent-execution-event-")) {
1446
+ const lastMessage = lastAssistant(conversation);
1447
+ if (!lastMessage) return conversation;
1448
+ const agentChunk = chunk.payload;
1449
+ const parts = [...lastMessage.content.parts];
1450
+ const toolPartIndex = findPartIndex(parts, (part) => isDynamicToolPart(part));
1451
+ if (toolPartIndex === -1) return conversation;
1452
+ const toolPart = parts[toolPartIndex];
1453
+ if (agentChunk.type === "text-delta") {
1454
+ const childMessages = toolPart?.output?.childMessages || [];
1455
+ const lastChildMessage = childMessages[childMessages.length - 1];
1456
+ const textMessage = {
1457
+ type: "text",
1458
+ content: (lastChildMessage?.content || "") + agentChunk.payload.text
1459
+ };
1460
+ const nextMessages = lastChildMessage?.type === "text" ? [...childMessages.slice(0, -1), textMessage] : [...childMessages, textMessage];
1461
+ parts[toolPartIndex] = {
1462
+ ...toolPart,
1463
+ output: { childMessages: nextMessages }
1464
+ };
1465
+ } else if (agentChunk.type === "tool-call") {
1466
+ const childMessages = toolPart?.output?.childMessages || [];
1467
+ parts[toolPartIndex] = {
1468
+ ...toolPart,
1469
+ output: {
1470
+ ...toolPart?.output,
1471
+ childMessages: [...childMessages, {
1472
+ type: "tool",
1473
+ toolCallId: agentChunk.payload.toolCallId,
1474
+ toolName: agentChunk.payload.toolName,
1475
+ args: agentChunk.payload.args
1476
+ }]
1477
+ }
1478
+ };
1479
+ } else if (agentChunk.type === "tool-output") {
1480
+ if (agentChunk.payload?.output?.type?.startsWith("workflow-")) {
1481
+ const childMessages = toolPart?.output?.childMessages || [];
1482
+ const lastToolIndex = childMessages.length - 1;
1483
+ const currentMessage = childMessages[lastToolIndex];
1484
+ const actualExistingWorkflowState = currentMessage?.toolOutput || {};
1485
+ const updatedWorkflowState = mapWorkflowStreamChunkToWatchResult(actualExistingWorkflowState, agentChunk.payload.output);
1486
+ if (lastToolIndex >= 0 && childMessages[lastToolIndex]?.type === "tool") parts[toolPartIndex] = {
1487
+ ...toolPart,
1488
+ output: {
1489
+ ...toolPart?.output,
1490
+ childMessages: [...childMessages.slice(0, -1), {
1491
+ ...currentMessage,
1492
+ toolOutput: updatedWorkflowState
1493
+ }]
1494
+ }
1495
+ };
1496
+ }
1497
+ } else if (agentChunk.type === "tool-result") {
1498
+ const childMessages = toolPart?.output?.childMessages || [];
1499
+ const lastToolIndex = childMessages.length - 1;
1500
+ const isWorkflow = Boolean(agentChunk.payload?.result?.result?.steps);
1501
+ if (lastToolIndex >= 0 && childMessages[lastToolIndex]?.type === "tool") parts[toolPartIndex] = {
1502
+ ...toolPart,
1503
+ output: {
1504
+ ...toolPart?.output,
1505
+ childMessages: [...childMessages.slice(0, -1), {
1506
+ ...childMessages[lastToolIndex],
1507
+ toolOutput: isWorkflow ? agentChunk.payload.result.result : agentChunk.payload.result
1508
+ }]
1509
+ }
1510
+ };
1511
+ }
1512
+ return replaceLast(conversation, withParts(lastMessage, parts));
1513
+ }
1514
+ return conversation;
1515
+ };
1516
+ const handleWorkflowNetworkChunk = (chunk, conversation, metadata) => {
1517
+ if (chunk.type === "workflow-execution-start") {
1518
+ const primitiveId = chunk.payload?.args?.primitiveId;
1519
+ const runId = chunk.payload.runId;
1520
+ if (!primitiveId || !runId) return conversation;
1521
+ let agentInput;
1522
+ try {
1523
+ agentInput = JSON.parse(chunk.payload?.args?.prompt);
1524
+ } catch {
1525
+ agentInput = chunk.payload?.args?.prompt;
1526
+ }
1527
+ const toolPart = {
1528
+ type: "dynamic-tool",
1529
+ toolName: primitiveId,
1530
+ toolCallId: runId,
1531
+ state: "input-available",
1532
+ input: chunk.payload.args
1533
+ };
1534
+ return appendAssistantMessage(conversation, `workflow-start-${runId}-${Date.now()}`, [toolPart], {
1535
+ ...networkMode(metadata),
1536
+ selectionReason: chunk.payload?.args?.selectionReason || "",
1537
+ from: "WORKFLOW",
1538
+ agentInput
1539
+ });
1540
+ }
1541
+ if (chunk.type === "workflow-execution-suspended") {
1542
+ const lastMessage = lastAssistant(conversation);
1543
+ if (!lastMessage) return conversation;
1544
+ const existing = lastMessage.content.metadata?.suspendedTools ?? {};
1545
+ return replaceLast(conversation, withMetadata(lastMessage, {
1546
+ ...cloneMetadata(lastMessage.content.metadata),
1547
+ mode: "network",
1548
+ suspendedTools: {
1549
+ ...existing,
1550
+ [chunk.payload.toolName]: {
1551
+ toolCallId: chunk.payload.toolCallId,
1552
+ toolName: chunk.payload.toolName,
1553
+ args: chunk.payload.args,
1554
+ suspendPayload: chunk.payload.suspendPayload,
1555
+ runId: chunk.payload.runId
1556
+ }
1557
+ }
1558
+ }));
1559
+ }
1560
+ if (chunk.type.startsWith("workflow-execution-event-")) {
1561
+ const lastMessage = lastAssistant(conversation);
1562
+ if (!lastMessage) return conversation;
1563
+ const parts = [...lastMessage.content.parts];
1564
+ const toolPartIndex = findPartIndex(parts, (part) => isDynamicToolPart(part));
1565
+ if (toolPartIndex === -1) return conversation;
1566
+ const toolPart = parts[toolPartIndex];
1567
+ const existingWorkflowState = toolPart.output || {};
1568
+ const updatedWorkflowState = mapWorkflowStreamChunkToWatchResult(existingWorkflowState, chunk.payload);
1569
+ parts[toolPartIndex] = {
1570
+ ...toolPart,
1571
+ output: updatedWorkflowState
1572
+ };
1573
+ return replaceLast(conversation, withParts(lastMessage, parts));
1574
+ }
1575
+ return conversation;
1576
+ };
1577
+ const handleToolNetworkChunk = (chunk, conversation, metadata) => {
1578
+ if (chunk.type === "tool-execution-start") {
1579
+ const argsData = chunk.payload.args;
1580
+ const nestedArgs = argsData.args || {};
1581
+ const lastMessage = lastAssistant(conversation);
1582
+ const toolPart = {
1583
+ type: "dynamic-tool",
1584
+ toolName: argsData.toolName || "unknown",
1585
+ toolCallId: argsData.toolCallId || "unknown",
1586
+ state: "input-available",
1587
+ input: nestedArgs
1588
+ };
1589
+ if (!lastMessage) return appendAssistantMessage(conversation, `tool-start-${chunk.payload.runId}-${Date.now()}`, [toolPart], {
1590
+ ...networkMode(metadata),
1591
+ selectionReason: metadata.mode === "network" ? metadata.selectionReason || argsData.selectionReason : "",
1592
+ agentInput: nestedArgs
1593
+ });
1594
+ const parts = [...lastMessage.content.parts, toolPart];
1595
+ return replaceLast(conversation, withParts(lastMessage, parts));
1596
+ }
1597
+ if (chunk.type === "tool-execution-approval") {
1598
+ const lastMessage = lastAssistant(conversation);
1599
+ if (!lastMessage) return conversation;
1600
+ const existing = lastMessage.content.metadata?.requireApprovalMetadata ?? {};
1601
+ return replaceLast(conversation, withMetadata(lastMessage, {
1602
+ ...cloneMetadata(lastMessage.content.metadata),
1603
+ mode: "network",
1604
+ requireApprovalMetadata: {
1605
+ ...existing,
1606
+ [chunk.payload.toolName]: {
1607
+ toolCallId: chunk.payload.toolCallId,
1608
+ toolName: chunk.payload.toolName,
1609
+ args: chunk.payload.args,
1610
+ runId: chunk.payload.runId
1611
+ }
1612
+ }
1613
+ }));
1614
+ }
1615
+ if (chunk.type === "tool-execution-suspended") {
1616
+ const lastMessage = lastAssistant(conversation);
1617
+ if (!lastMessage) return conversation;
1618
+ const existing = lastMessage.content.metadata?.suspendedTools ?? {};
1619
+ return replaceLast(conversation, withMetadata(lastMessage, {
1620
+ ...cloneMetadata(lastMessage.content.metadata),
1621
+ mode: "network",
1622
+ suspendedTools: {
1623
+ ...existing,
1624
+ [chunk.payload.toolName]: {
1625
+ toolCallId: chunk.payload.toolCallId,
1626
+ toolName: chunk.payload.toolName,
1627
+ args: chunk.payload.args,
1628
+ suspendPayload: chunk.payload.suspendPayload,
1629
+ runId: chunk.payload.runId
1630
+ }
1631
+ }
1632
+ }));
1633
+ }
1634
+ if (chunk.type === "tool-execution-end") {
1635
+ const lastMessage = lastAssistant(conversation);
1636
+ if (!lastMessage) return conversation;
1637
+ const parts = [...lastMessage.content.parts];
1638
+ const toolPartIndex = findPartIndex(parts, (part) => isDynamicToolPart(part) && part.toolCallId === chunk.payload.toolCallId);
1639
+ if (toolPartIndex !== -1) {
1640
+ const toolPart = parts[toolPartIndex];
1641
+ const currentOutput = toolPart.output;
1642
+ parts[toolPartIndex] = {
1643
+ type: "dynamic-tool",
1644
+ toolName: toolPart.toolName,
1645
+ toolCallId: toolPart.toolCallId,
1646
+ state: "output-available",
1647
+ input: toolPart.input,
1648
+ output: currentOutput?.result || chunk.payload?.result || ""
1649
+ };
1650
+ }
1651
+ return replaceLast(conversation, withParts(lastMessage, parts));
1652
+ }
1653
+ return conversation;
1654
+ };
1655
+ /**
1656
+ * Reduce a single network-mode chunk into the running `MastraDBMessage[]`
1657
+ * conversation. Ports the historical `AISdkNetworkTransformer` so the playground
1658
+ * keeps rendering network badges (routing text, agent/workflow/tool execution,
1659
+ * suspensions, approvals, completion feedback) until the next major.
1660
+ */
1661
+ const accumulateNetworkChunk = ({ chunk, conversation, metadata }) => {
1662
+ const newConversation = [...conversation];
1663
+ if (chunk.type === "routing-agent-text-delta") return handleRoutingAgentDelta(chunk, newConversation, metadata);
1664
+ if (chunk.type.startsWith("agent-execution-")) return handleAgentNetworkChunk(chunk, newConversation, metadata);
1665
+ if (chunk.type.startsWith("workflow-execution-")) return handleWorkflowNetworkChunk(chunk, newConversation, metadata);
1666
+ if (chunk.type.startsWith("tool-execution-")) return handleToolNetworkChunk(chunk, newConversation, metadata);
1667
+ if (chunk.type === "network-validation-end") {
1668
+ if (chunk.payload.suppressFeedback) return newConversation;
1669
+ const textPart = {
1670
+ type: "text",
1671
+ text: formatCompletionFeedback({
1672
+ complete: chunk.payload.passed,
1673
+ scorers: chunk.payload.results,
1674
+ totalDuration: chunk.payload.duration,
1675
+ timedOut: chunk.payload.timedOut,
1676
+ completionReason: chunk.payload.reason
1677
+ }, chunk.payload.maxIterationReached)
1678
+ };
1679
+ return appendAssistantMessage(newConversation, `network-validation-end-${chunk.payload.runId}-${Date.now()}`, [textPart], {
1680
+ ...networkMode(metadata),
1681
+ completionResult: { passed: chunk.payload.passed }
1682
+ });
1683
+ }
1684
+ if (chunk.type === "network-execution-event-step-finish") {
1685
+ const lastMessage = lastAssistant(newConversation);
1686
+ if (!lastMessage) return newConversation;
1687
+ const agentChunk = chunk.payload;
1688
+ const parts = [...lastMessage.content.parts];
1689
+ const textPartIndex = findPartIndex(parts, (part) => part.type === "text");
1690
+ if (textPartIndex === -1) {
1691
+ parts.push({
1692
+ type: "text",
1693
+ text: agentChunk.result,
1694
+ state: "done"
1695
+ });
1696
+ return replaceLast(newConversation, withParts(lastMessage, parts));
1697
+ }
1698
+ const textPart = parts[textPartIndex];
1699
+ if (textPart.type === "text") {
1700
+ parts[textPartIndex] = {
1701
+ ...textPart,
1702
+ state: "done"
1703
+ };
1704
+ return replaceLast(newConversation, withParts(lastMessage, parts));
1705
+ }
1706
+ return newConversation;
1707
+ }
1708
+ return newConversation;
1709
+ };
1710
+ Object.defineProperty(exports, "CLIENT_MESSAGE_ID_KEY", {
1711
+ enumerable: true,
1712
+ get: function() {
1713
+ return CLIENT_MESSAGE_ID_KEY;
1714
+ }
1715
+ });
1716
+ Object.defineProperty(exports, "accumulateChunk", {
1717
+ enumerable: true,
1718
+ get: function() {
1719
+ return accumulateChunk;
1720
+ }
1721
+ });
1722
+ Object.defineProperty(exports, "accumulateNetworkChunk", {
1723
+ enumerable: true,
1724
+ get: function() {
1725
+ return accumulateNetworkChunk;
1726
+ }
1727
+ });
1728
+ Object.defineProperty(exports, "convertSignalDataToBase64String", {
1729
+ enumerable: true,
1730
+ get: function() {
1731
+ return convertSignalDataToBase64String;
1732
+ }
1733
+ });
1734
+ Object.defineProperty(exports, "encodeFilePartDataForStorage", {
1735
+ enumerable: true,
1736
+ get: function() {
1737
+ return encodeFilePartDataForStorage;
1738
+ }
1739
+ });
1740
+ Object.defineProperty(exports, "finishStreamingAssistantMessage", {
1741
+ enumerable: true,
1742
+ get: function() {
1743
+ return finishStreamingAssistantMessage;
1744
+ }
1745
+ });
1746
+ Object.defineProperty(exports, "mapWorkflowStreamChunkToWatchResult", {
1747
+ enumerable: true,
1748
+ get: function() {
1749
+ return mapWorkflowStreamChunkToWatchResult;
1750
+ }
1751
+ });
1752
+
1753
+ //# sourceMappingURL=accumulator-Bjfckb5t.cjs.map