@mastra/core 0.24.0 → 1.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (812) hide show
  1. package/CHANGELOG.md +484 -139
  2. package/README.md +2 -3
  3. package/agent/message-list.d.ts +1 -0
  4. package/dist/action/index.d.ts +0 -2
  5. package/dist/action/index.d.ts.map +1 -1
  6. package/dist/agent/__tests__/mock-model.d.ts +3 -1
  7. package/dist/agent/__tests__/mock-model.d.ts.map +1 -1
  8. package/dist/agent/agent-legacy.d.ts +176 -0
  9. package/dist/agent/agent-legacy.d.ts.map +1 -0
  10. package/dist/agent/agent.d.ts +83 -229
  11. package/dist/agent/agent.d.ts.map +1 -1
  12. package/dist/agent/agent.types.d.ts +10 -25
  13. package/dist/agent/agent.types.d.ts.map +1 -1
  14. package/dist/agent/index.cjs +10 -26
  15. package/dist/agent/index.d.ts +1 -2
  16. package/dist/agent/index.d.ts.map +1 -1
  17. package/dist/agent/index.js +2 -2
  18. package/dist/agent/message-list/index.cjs +16 -0
  19. package/dist/agent/message-list/index.d.ts +77 -87
  20. package/dist/agent/message-list/index.d.ts.map +1 -1
  21. package/dist/agent/message-list/index.js +3 -0
  22. package/dist/agent/message-list/prompt/attachments-to-parts.d.ts +2 -2
  23. package/dist/agent/message-list/prompt/attachments-to-parts.d.ts.map +1 -1
  24. package/dist/agent/message-list/prompt/convert-to-mastra-v1.d.ts +2 -2
  25. package/dist/agent/message-list/prompt/download-assets.d.ts.map +1 -1
  26. package/dist/agent/message-list/prompt/invalid-content-error.d.ts +1 -1
  27. package/dist/agent/message-list/prompt/invalid-content-error.d.ts.map +1 -1
  28. package/dist/agent/message-list/types.d.ts +2 -1
  29. package/dist/agent/message-list/types.d.ts.map +1 -1
  30. package/dist/agent/message-list/utils/ai-v4-v5/core-model-message.d.ts +3 -2
  31. package/dist/agent/message-list/utils/ai-v4-v5/core-model-message.d.ts.map +1 -1
  32. package/dist/agent/message-list/utils/ai-v4-v5/ui-message.d.ts +3 -2
  33. package/dist/agent/message-list/utils/ai-v4-v5/ui-message.d.ts.map +1 -1
  34. package/dist/agent/message-list/utils/ai-v5/gemini-compatibility.d.ts +1 -1
  35. package/dist/agent/message-list/utils/ai-v5/gemini-compatibility.d.ts.map +1 -1
  36. package/dist/agent/message-list/utils/convert-messages.d.ts +4 -4
  37. package/dist/agent/message-list/utils/convert-messages.d.ts.map +1 -1
  38. package/dist/agent/test-utils.d.ts +2 -79
  39. package/dist/agent/test-utils.d.ts.map +1 -1
  40. package/dist/agent/trip-wire.d.ts +1 -1
  41. package/dist/agent/trip-wire.d.ts.map +1 -1
  42. package/dist/agent/types.d.ts +23 -37
  43. package/dist/agent/types.d.ts.map +1 -1
  44. package/dist/agent/utils.d.ts +15 -64
  45. package/dist/agent/utils.d.ts.map +1 -1
  46. package/dist/agent/workflows/prepare-stream/index.d.ts +16 -20
  47. package/dist/agent/workflows/prepare-stream/index.d.ts.map +1 -1
  48. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts +5 -7
  49. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts.map +1 -1
  50. package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts +14 -18
  51. package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts.map +1 -1
  52. package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts +6 -6
  53. package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts.map +1 -1
  54. package/dist/agent/workflows/prepare-stream/schema.d.ts +10 -12
  55. package/dist/agent/workflows/prepare-stream/schema.d.ts.map +1 -1
  56. package/dist/agent/workflows/prepare-stream/stream-step.d.ts +3 -7
  57. package/dist/agent/workflows/prepare-stream/stream-step.d.ts.map +1 -1
  58. package/dist/ai-sdk.types.d.ts +4705 -0
  59. package/dist/base.cjs +2 -2
  60. package/dist/base.d.ts +0 -16
  61. package/dist/base.d.ts.map +1 -1
  62. package/dist/base.js +1 -1
  63. package/dist/bundler/index.cjs +2 -2
  64. package/dist/bundler/index.d.ts +2 -1
  65. package/dist/bundler/index.d.ts.map +1 -1
  66. package/dist/bundler/index.js +1 -1
  67. package/dist/cache/index.cjs +3 -3
  68. package/dist/cache/index.js +1 -1
  69. package/dist/{chunk-7J3XX4AO.cjs → chunk-2ZVKF4HP.cjs} +199 -66
  70. package/dist/chunk-2ZVKF4HP.cjs.map +1 -0
  71. package/dist/chunk-4CDL2QJT.js +649 -0
  72. package/dist/chunk-4CDL2QJT.js.map +1 -0
  73. package/dist/chunk-5WRI5ZAA.js +29 -0
  74. package/dist/{chunk-3HXBPDKN.js.map → chunk-5WRI5ZAA.js.map} +1 -1
  75. package/dist/{chunk-KAEQISOW.js → chunk-76K3IYWM.js} +5 -5
  76. package/dist/chunk-76K3IYWM.js.map +1 -0
  77. package/dist/chunk-7AHYOMHJ.js +149 -0
  78. package/dist/chunk-7AHYOMHJ.js.map +1 -0
  79. package/dist/{chunk-UZKIGB7M.cjs → chunk-BMAFVZ2D.cjs} +5 -5
  80. package/dist/chunk-BMAFVZ2D.cjs.map +1 -0
  81. package/dist/chunk-CB575O6L.cjs +12432 -0
  82. package/dist/chunk-CB575O6L.cjs.map +1 -0
  83. package/dist/{chunk-6TEQIYXV.cjs → chunk-CBAB7GOD.cjs} +15 -15
  84. package/dist/chunk-CBAB7GOD.cjs.map +1 -0
  85. package/dist/{chunk-ROS5CMJS.cjs → chunk-CD56CXVE.cjs} +63 -50
  86. package/dist/chunk-CD56CXVE.cjs.map +1 -0
  87. package/dist/{chunk-Z4RIRDU3.js → chunk-CINNK34N.js} +45 -32
  88. package/dist/chunk-CINNK34N.js.map +1 -0
  89. package/dist/{chunk-77JHIM4E.cjs → chunk-DNEURYF3.cjs} +348 -424
  90. package/dist/chunk-DNEURYF3.cjs.map +1 -0
  91. package/dist/{chunk-A5KDVZDL.cjs → chunk-DSNPWVIG.cjs} +9 -9
  92. package/dist/chunk-DSNPWVIG.cjs.map +1 -0
  93. package/dist/chunk-DZUJEN5N.cjs +32 -0
  94. package/dist/{chunk-EBVYYC2Q.cjs.map → chunk-DZUJEN5N.cjs.map} +1 -1
  95. package/dist/chunk-E7K4FTLN.cjs +273 -0
  96. package/dist/chunk-E7K4FTLN.cjs.map +1 -0
  97. package/dist/{chunk-MJMID7LX.cjs → chunk-ECFXGXWO.cjs} +609 -644
  98. package/dist/chunk-ECFXGXWO.cjs.map +1 -0
  99. package/dist/chunk-ET6UOTTU.cjs +154 -0
  100. package/dist/chunk-ET6UOTTU.cjs.map +1 -0
  101. package/dist/chunk-GGYKYORQ.cjs +2060 -0
  102. package/dist/chunk-GGYKYORQ.cjs.map +1 -0
  103. package/dist/{chunk-HLRWYUFN.js → chunk-GRBGQ2GE.js} +5 -5
  104. package/dist/{chunk-HLRWYUFN.js.map → chunk-GRBGQ2GE.js.map} +1 -1
  105. package/dist/{chunk-3VXXCPKX.js → chunk-H6CZGPZD.js} +334 -410
  106. package/dist/chunk-H6CZGPZD.js.map +1 -0
  107. package/dist/chunk-HDJFSJCK.js +2237 -0
  108. package/dist/chunk-HDJFSJCK.js.map +1 -0
  109. package/dist/{chunk-34ZCWSUA.js → chunk-I4CXL4SR.js} +6 -9
  110. package/dist/chunk-I4CXL4SR.js.map +1 -0
  111. package/dist/{chunk-3JX2Y3WH.cjs → chunk-IQO7ANVS.cjs} +18 -21
  112. package/dist/chunk-IQO7ANVS.cjs.map +1 -0
  113. package/dist/{chunk-GPWMM745.cjs → chunk-J7O6WENZ.cjs} +5 -5
  114. package/dist/{chunk-GPWMM745.cjs.map → chunk-J7O6WENZ.cjs.map} +1 -1
  115. package/dist/{chunk-PZUZNPFM.js → chunk-JJ5O45LH.js} +3 -4
  116. package/dist/chunk-JJ5O45LH.js.map +1 -0
  117. package/dist/chunk-JPGVRWWL.js +12385 -0
  118. package/dist/chunk-JPGVRWWL.js.map +1 -0
  119. package/dist/chunk-JUBFO5J3.js +15761 -0
  120. package/dist/chunk-JUBFO5J3.js.map +1 -0
  121. package/dist/{chunk-E3PG7G6E.js → chunk-JV2KH24V.js} +599 -633
  122. package/dist/chunk-JV2KH24V.js.map +1 -0
  123. package/dist/chunk-KEXGB7FK.cjs +29 -0
  124. package/dist/chunk-KEXGB7FK.cjs.map +1 -0
  125. package/dist/chunk-KIZIOFZC.js +265 -0
  126. package/dist/chunk-KIZIOFZC.js.map +1 -0
  127. package/dist/{chunk-UXG7PYML.js → chunk-KJ2SW6VA.js} +9 -9
  128. package/dist/chunk-KJ2SW6VA.js.map +1 -0
  129. package/dist/{chunk-TTELJD4F.js → chunk-L54GIUCB.js} +2 -2
  130. package/dist/chunk-L54GIUCB.js.map +1 -0
  131. package/dist/chunk-LWBQ4P4N.cjs +2240 -0
  132. package/dist/chunk-LWBQ4P4N.cjs.map +1 -0
  133. package/dist/{chunk-ABZOBBLL.cjs → chunk-MA7TEM62.cjs} +735 -562
  134. package/dist/chunk-MA7TEM62.cjs.map +1 -0
  135. package/dist/{chunk-TSNDVBUU.cjs → chunk-MR7ZWBL6.cjs} +2 -2
  136. package/dist/chunk-MR7ZWBL6.cjs.map +1 -0
  137. package/dist/chunk-MSWTA73A.cjs +15825 -0
  138. package/dist/chunk-MSWTA73A.cjs.map +1 -0
  139. package/dist/chunk-MV7KHWUT.js +2031 -0
  140. package/dist/chunk-MV7KHWUT.js.map +1 -0
  141. package/dist/{chunk-3NTOFNIU.js → chunk-OJNJA5ZI.js} +3 -3
  142. package/dist/{chunk-3NTOFNIU.js.map → chunk-OJNJA5ZI.js.map} +1 -1
  143. package/dist/chunk-QM5SRDJX.js +9022 -0
  144. package/dist/chunk-QM5SRDJX.js.map +1 -0
  145. package/dist/{chunk-WBAXXG34.cjs → chunk-QUKUN6NR.cjs} +32 -66
  146. package/dist/chunk-QUKUN6NR.cjs.map +1 -0
  147. package/dist/chunk-S6URFGCZ.js +27 -0
  148. package/dist/chunk-S6URFGCZ.js.map +1 -0
  149. package/dist/chunk-SVLMF4UZ.cjs +9033 -0
  150. package/dist/chunk-SVLMF4UZ.cjs.map +1 -0
  151. package/dist/{chunk-ZMELUU72.js → chunk-TQTAMPSC.js} +3 -3
  152. package/dist/chunk-TQTAMPSC.js.map +1 -0
  153. package/dist/{chunk-5NTO7S5I.cjs → chunk-TWH4PTDG.cjs} +2 -4
  154. package/dist/chunk-TWH4PTDG.cjs.map +1 -0
  155. package/dist/{chunk-WCHE6FJ7.js → chunk-UIZSWUKP.js} +15 -50
  156. package/dist/chunk-UIZSWUKP.js.map +1 -0
  157. package/dist/{chunk-BWGXM3D4.js → chunk-VOQ3ULMT.js} +712 -541
  158. package/dist/chunk-VOQ3ULMT.js.map +1 -0
  159. package/dist/{chunk-MCASUJWY.cjs → chunk-VOY2RXOC.cjs} +36 -59
  160. package/dist/chunk-VOY2RXOC.cjs.map +1 -0
  161. package/dist/{chunk-FHVFGVIO.js → chunk-W7UH2PWL.js} +189 -56
  162. package/dist/chunk-W7UH2PWL.js.map +1 -0
  163. package/dist/chunk-WM6CK2F3.cjs +674 -0
  164. package/dist/chunk-WM6CK2F3.cjs.map +1 -0
  165. package/dist/{chunk-PFXXH2RP.js → chunk-X7JMA3IY.js} +15 -15
  166. package/dist/chunk-X7JMA3IY.js.map +1 -0
  167. package/dist/{chunk-NR77P3TK.js → chunk-XEVG546F.js} +14 -37
  168. package/dist/chunk-XEVG546F.js.map +1 -0
  169. package/dist/{chunk-QFF5JUKT.cjs → chunk-Y63IFHEZ.cjs} +4 -4
  170. package/dist/chunk-Y63IFHEZ.cjs.map +1 -0
  171. package/dist/{chunk-B7V6NYWH.cjs → chunk-Y6ROD72V.cjs} +4 -4
  172. package/dist/{chunk-B7V6NYWH.cjs.map → chunk-Y6ROD72V.cjs.map} +1 -1
  173. package/dist/deployer/index.cjs +8 -6
  174. package/dist/deployer/index.cjs.map +1 -1
  175. package/dist/deployer/index.js +10 -1
  176. package/dist/deployer/index.js.map +1 -1
  177. package/dist/di/index.cjs +3 -3
  178. package/dist/di/index.d.ts +1 -1
  179. package/dist/di/index.js +1 -1
  180. package/dist/error/index.cjs +6 -6
  181. package/dist/error/index.d.ts +0 -1
  182. package/dist/error/index.d.ts.map +1 -1
  183. package/dist/error/index.js +1 -1
  184. package/dist/{scores → evals}/base.d.ts +20 -18
  185. package/dist/evals/base.d.ts.map +1 -0
  186. package/dist/{scores → evals}/base.test-utils.d.ts +25 -25
  187. package/dist/evals/base.test-utils.d.ts.map +1 -0
  188. package/dist/{scores → evals}/hooks.d.ts +3 -3
  189. package/dist/evals/hooks.d.ts.map +1 -0
  190. package/dist/evals/index.cjs +37 -0
  191. package/dist/evals/index.d.ts +4 -0
  192. package/dist/evals/index.d.ts.map +1 -0
  193. package/dist/evals/index.js +4 -0
  194. package/dist/{scores/run-experiment → evals/run}/index.d.ts +18 -18
  195. package/dist/evals/run/index.d.ts.map +1 -0
  196. package/dist/evals/run/scorerAccumulator.d.ts.map +1 -0
  197. package/dist/{scores → evals}/scoreTraces/index.cjs +79 -99
  198. package/dist/evals/scoreTraces/index.cjs.map +1 -0
  199. package/dist/evals/scoreTraces/index.d.ts.map +1 -0
  200. package/dist/{scores → evals}/scoreTraces/index.js +72 -92
  201. package/dist/evals/scoreTraces/index.js.map +1 -0
  202. package/dist/{scores → evals}/scoreTraces/scoreTraces.d.ts +2 -2
  203. package/dist/evals/scoreTraces/scoreTraces.d.ts.map +1 -0
  204. package/dist/{scores → evals}/scoreTraces/scoreTracesWorkflow.d.ts +11 -11
  205. package/dist/evals/scoreTraces/scoreTracesWorkflow.d.ts.map +1 -0
  206. package/dist/{scores → evals}/scoreTraces/utils.d.ts +7 -7
  207. package/dist/evals/scoreTraces/utils.d.ts.map +1 -0
  208. package/dist/{scores → evals}/types.d.ts +22 -22
  209. package/dist/evals/types.d.ts.map +1 -0
  210. package/dist/features/index.cjs +8 -0
  211. package/dist/features/index.cjs.map +1 -0
  212. package/dist/features/index.d.ts +17 -0
  213. package/dist/features/index.d.ts.map +1 -0
  214. package/dist/features/index.js +6 -0
  215. package/dist/features/index.js.map +1 -0
  216. package/dist/hooks/index.cjs +4 -4
  217. package/dist/hooks/index.d.ts +1 -27
  218. package/dist/hooks/index.d.ts.map +1 -1
  219. package/dist/hooks/index.js +1 -1
  220. package/dist/index.cjs +2 -340
  221. package/dist/index.cjs.map +1 -1
  222. package/dist/index.d.ts +1 -18
  223. package/dist/index.d.ts.map +1 -1
  224. package/dist/index.js +1 -113
  225. package/dist/index.js.map +1 -1
  226. package/dist/integration/index.cjs +87 -10
  227. package/dist/integration/index.cjs.map +1 -1
  228. package/dist/integration/index.js +88 -1
  229. package/dist/integration/index.js.map +1 -1
  230. package/dist/integration/integration.d.ts +3 -3
  231. package/dist/integration/integration.d.ts.map +1 -1
  232. package/dist/llm/index.cjs +7 -7
  233. package/dist/llm/index.d.ts +5 -6
  234. package/dist/llm/index.d.ts.map +1 -1
  235. package/dist/llm/index.js +1 -1
  236. package/dist/llm/model/base.types.d.ts +6 -7
  237. package/dist/llm/model/base.types.d.ts.map +1 -1
  238. package/dist/llm/model/gateways/constants.d.ts.map +1 -1
  239. package/dist/llm/model/gateways/models-dev.d.ts.map +1 -1
  240. package/dist/llm/model/model.d.ts +7 -7
  241. package/dist/llm/model/model.d.ts.map +1 -1
  242. package/dist/llm/model/model.loop.d.ts +1 -1
  243. package/dist/llm/model/model.loop.d.ts.map +1 -1
  244. package/dist/llm/model/model.loop.types.d.ts +3 -3
  245. package/dist/llm/model/model.loop.types.d.ts.map +1 -1
  246. package/dist/llm/model/provider-types.generated.d.ts +80 -17
  247. package/dist/llm/model/resolve-model.d.ts +8 -8
  248. package/dist/llm/model/shared.types.d.ts +2 -2
  249. package/dist/llm/model/shared.types.d.ts.map +1 -1
  250. package/dist/logger/constants.d.ts +1 -1
  251. package/dist/logger/default-logger.d.ts +2 -2
  252. package/dist/logger/default-logger.d.ts.map +1 -1
  253. package/dist/logger/index.cjs +11 -11
  254. package/dist/logger/index.js +2 -2
  255. package/dist/logger/logger.d.ts +4 -4
  256. package/dist/logger/logger.d.ts.map +1 -1
  257. package/dist/logger/multi-logger.d.ts +2 -2
  258. package/dist/logger/multi-logger.d.ts.map +1 -1
  259. package/dist/logger/transport.d.ts +3 -3
  260. package/dist/logger/transport.d.ts.map +1 -1
  261. package/dist/loop/index.cjs +2 -2
  262. package/dist/loop/index.js +1 -1
  263. package/dist/loop/loop.d.ts +1 -1
  264. package/dist/loop/loop.d.ts.map +1 -1
  265. package/dist/loop/network/index.d.ts +15 -15
  266. package/dist/loop/network/index.d.ts.map +1 -1
  267. package/dist/loop/test-utils/generateText.d.ts.map +1 -1
  268. package/dist/loop/test-utils/options.d.ts.map +1 -1
  269. package/dist/loop/test-utils/resultObject.d.ts.map +1 -1
  270. package/dist/loop/test-utils/streamObject.d.ts.map +1 -1
  271. package/dist/loop/types.d.ts +4 -7
  272. package/dist/loop/types.d.ts.map +1 -1
  273. package/dist/loop/workflows/agentic-execution/index.d.ts +55 -55
  274. package/dist/loop/workflows/agentic-execution/index.d.ts.map +1 -1
  275. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts +38 -38
  276. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -1
  277. package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts +20 -20
  278. package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts.map +1 -1
  279. package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts +2 -2
  280. package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts.map +1 -1
  281. package/dist/loop/workflows/agentic-loop/index.d.ts +55 -55
  282. package/dist/loop/workflows/agentic-loop/index.d.ts.map +1 -1
  283. package/dist/loop/workflows/schema.d.ts +19 -20
  284. package/dist/loop/workflows/schema.d.ts.map +1 -1
  285. package/dist/loop/workflows/stream.d.ts +1 -1
  286. package/dist/loop/workflows/stream.d.ts.map +1 -1
  287. package/dist/mastra/hooks.d.ts +2 -2
  288. package/dist/mastra/hooks.d.ts.map +1 -1
  289. package/dist/mastra/index.cjs +2 -2
  290. package/dist/mastra/index.d.ts +389 -180
  291. package/dist/mastra/index.d.ts.map +1 -1
  292. package/dist/mastra/index.js +1 -1
  293. package/dist/mcp/index.cjs +41 -4
  294. package/dist/mcp/index.cjs.map +1 -1
  295. package/dist/mcp/index.d.ts +6 -4
  296. package/dist/mcp/index.d.ts.map +1 -1
  297. package/dist/mcp/index.js +39 -2
  298. package/dist/mcp/index.js.map +1 -1
  299. package/dist/mcp/types.d.ts +0 -15
  300. package/dist/mcp/types.d.ts.map +1 -1
  301. package/dist/memory/index.cjs +327 -13
  302. package/dist/memory/index.cjs.map +1 -1
  303. package/dist/memory/index.d.ts +1 -0
  304. package/dist/memory/index.d.ts.map +1 -1
  305. package/dist/memory/index.js +327 -1
  306. package/dist/memory/index.js.map +1 -1
  307. package/dist/memory/memory.d.ts +33 -57
  308. package/dist/memory/memory.d.ts.map +1 -1
  309. package/dist/memory/mock.d.ts +61 -0
  310. package/dist/memory/mock.d.ts.map +1 -0
  311. package/dist/memory/types.d.ts +48 -45
  312. package/dist/memory/types.d.ts.map +1 -1
  313. package/dist/models-dev-DNBKXHT4.js +3 -0
  314. package/dist/{models-dev-4VGIWYS3.js.map → models-dev-DNBKXHT4.js.map} +1 -1
  315. package/dist/models-dev-YBEEQIX6.cjs +12 -0
  316. package/dist/{models-dev-AXZASLL2.cjs.map → models-dev-YBEEQIX6.cjs.map} +1 -1
  317. package/dist/netlify-7G2L5VSH.js +3 -0
  318. package/dist/{netlify-VJXBII33.js.map → netlify-7G2L5VSH.js.map} +1 -1
  319. package/dist/netlify-GWNGSIRZ.cjs +12 -0
  320. package/dist/{netlify-TX6V7SJJ.cjs.map → netlify-GWNGSIRZ.cjs.map} +1 -1
  321. package/dist/{ai-tracing → observability}/context.d.ts +5 -5
  322. package/dist/observability/context.d.ts.map +1 -0
  323. package/dist/observability/index.cjs +36 -0
  324. package/dist/observability/index.d.ts +11 -0
  325. package/dist/observability/index.d.ts.map +1 -0
  326. package/dist/observability/index.js +3 -0
  327. package/dist/observability/no-op.d.ts +22 -0
  328. package/dist/observability/no-op.d.ts.map +1 -0
  329. package/dist/observability/types/index.d.ts +2 -0
  330. package/dist/observability/types/index.d.ts.map +1 -0
  331. package/dist/{ai-tracing/types.d.ts → observability/types/tracing.d.ts} +161 -107
  332. package/dist/observability/types/tracing.d.ts.map +1 -0
  333. package/dist/observability/utils.d.ts +12 -0
  334. package/dist/observability/utils.d.ts.map +1 -0
  335. package/dist/processors/index.cjs +11 -11
  336. package/dist/processors/index.d.ts +10 -9
  337. package/dist/processors/index.d.ts.map +1 -1
  338. package/dist/processors/index.js +1 -1
  339. package/dist/processors/processors/batch-parts.d.ts +2 -1
  340. package/dist/processors/processors/batch-parts.d.ts.map +1 -1
  341. package/dist/processors/processors/language-detector.d.ts +6 -5
  342. package/dist/processors/processors/language-detector.d.ts.map +1 -1
  343. package/dist/processors/processors/moderation.d.ts +8 -7
  344. package/dist/processors/processors/moderation.d.ts.map +1 -1
  345. package/dist/processors/processors/pii-detector.d.ts +8 -7
  346. package/dist/processors/processors/pii-detector.d.ts.map +1 -1
  347. package/dist/processors/processors/prompt-injection-detector.d.ts +6 -5
  348. package/dist/processors/processors/prompt-injection-detector.d.ts.map +1 -1
  349. package/dist/processors/processors/structured-output.d.ts +3 -2
  350. package/dist/processors/processors/structured-output.d.ts.map +1 -1
  351. package/dist/processors/processors/system-prompt-scrubber.d.ts +6 -5
  352. package/dist/processors/processors/system-prompt-scrubber.d.ts.map +1 -1
  353. package/dist/processors/processors/token-limiter.d.ts +5 -4
  354. package/dist/processors/processors/token-limiter.d.ts.map +1 -1
  355. package/dist/processors/processors/unicode-normalizer.d.ts +5 -4
  356. package/dist/processors/processors/unicode-normalizer.d.ts.map +1 -1
  357. package/dist/processors/runner.d.ts +5 -5
  358. package/dist/processors/runner.d.ts.map +1 -1
  359. package/dist/provider-registry.json +175 -42
  360. package/dist/{registry-generator-DXRSYYYT.js → registry-generator-H4YNODDH.js} +2 -2
  361. package/dist/{registry-generator-DXRSYYYT.js.map → registry-generator-H4YNODDH.js.map} +1 -1
  362. package/dist/{registry-generator-6WVOHM2L.cjs → registry-generator-MK63POJO.cjs} +2 -2
  363. package/dist/{registry-generator-6WVOHM2L.cjs.map → registry-generator-MK63POJO.cjs.map} +1 -1
  364. package/dist/relevance/index.cjs +47 -13
  365. package/dist/relevance/index.cjs.map +1 -1
  366. package/dist/relevance/index.d.ts +0 -1
  367. package/dist/relevance/index.d.ts.map +1 -1
  368. package/dist/relevance/index.js +49 -1
  369. package/dist/relevance/index.js.map +1 -1
  370. package/dist/relevance/mastra-agent/index.d.ts.map +1 -1
  371. package/dist/request-context/index.cjs +12 -0
  372. package/dist/{runtime-context → request-context}/index.d.ts +1 -1
  373. package/dist/{runtime-context → request-context}/index.d.ts.map +1 -1
  374. package/dist/request-context/index.js +3 -0
  375. package/dist/server/auth.d.ts.map +1 -1
  376. package/dist/server/index.cjs +9 -25
  377. package/dist/server/index.cjs.map +1 -1
  378. package/dist/server/index.js +4 -21
  379. package/dist/server/index.js.map +1 -1
  380. package/dist/server/types.d.ts +3 -3
  381. package/dist/server/types.d.ts.map +1 -1
  382. package/dist/storage/base.d.ts +75 -143
  383. package/dist/storage/base.d.ts.map +1 -1
  384. package/dist/storage/constants.d.ts +3 -4
  385. package/dist/storage/constants.d.ts.map +1 -1
  386. package/dist/storage/domains/index.d.ts +0 -2
  387. package/dist/storage/domains/index.d.ts.map +1 -1
  388. package/dist/storage/domains/memory/base.d.ts +19 -56
  389. package/dist/storage/domains/memory/base.d.ts.map +1 -1
  390. package/dist/storage/domains/memory/inmemory.d.ts +15 -35
  391. package/dist/storage/domains/memory/inmemory.d.ts.map +1 -1
  392. package/dist/storage/domains/observability/base.d.ts +24 -24
  393. package/dist/storage/domains/observability/base.d.ts.map +1 -1
  394. package/dist/storage/domains/observability/inmemory.d.ts +18 -18
  395. package/dist/storage/domains/observability/inmemory.d.ts.map +1 -1
  396. package/dist/storage/domains/operations/inmemory.d.ts.map +1 -1
  397. package/dist/storage/domains/scores/base.d.ts +5 -5
  398. package/dist/storage/domains/scores/base.d.ts.map +1 -1
  399. package/dist/storage/domains/scores/inmemory.d.ts +5 -5
  400. package/dist/storage/domains/scores/inmemory.d.ts.map +1 -1
  401. package/dist/storage/domains/workflows/base.d.ts +4 -11
  402. package/dist/storage/domains/workflows/base.d.ts.map +1 -1
  403. package/dist/storage/domains/workflows/inmemory.d.ts +4 -11
  404. package/dist/storage/domains/workflows/inmemory.d.ts.map +1 -1
  405. package/dist/storage/index.cjs +74 -1775
  406. package/dist/storage/index.cjs.map +1 -1
  407. package/dist/storage/index.js +1 -1744
  408. package/dist/storage/index.js.map +1 -1
  409. package/dist/storage/mock.d.ts +35 -92
  410. package/dist/storage/mock.d.ts.map +1 -1
  411. package/dist/storage/types.d.ts +77 -75
  412. package/dist/storage/types.d.ts.map +1 -1
  413. package/dist/stream/MastraAgentNetworkStream.d.ts +4 -2
  414. package/dist/stream/MastraAgentNetworkStream.d.ts.map +1 -1
  415. package/dist/stream/MastraWorkflowStream.d.ts +1 -1
  416. package/dist/stream/MastraWorkflowStream.d.ts.map +1 -1
  417. package/dist/stream/RunOutput.d.ts +1 -0
  418. package/dist/stream/RunOutput.d.ts.map +1 -1
  419. package/dist/stream/aisdk/v4/input.d.ts +1 -1
  420. package/dist/stream/aisdk/v4/input.d.ts.map +1 -1
  421. package/dist/stream/aisdk/v5/execute.d.ts +4 -11
  422. package/dist/stream/aisdk/v5/execute.d.ts.map +1 -1
  423. package/dist/stream/aisdk/v5/output.d.ts +1 -1
  424. package/dist/stream/aisdk/v5/output.d.ts.map +1 -1
  425. package/dist/stream/base/output.d.ts +1 -1
  426. package/dist/stream/base/output.d.ts.map +1 -1
  427. package/dist/stream/index.cjs +11 -11
  428. package/dist/stream/index.d.ts +1 -1
  429. package/dist/stream/index.d.ts.map +1 -1
  430. package/dist/stream/index.js +2 -2
  431. package/dist/stream/types.d.ts +2 -6
  432. package/dist/stream/types.d.ts.map +1 -1
  433. package/dist/test-utils/llm-mock.cjs +8 -8
  434. package/dist/test-utils/llm-mock.cjs.map +1 -1
  435. package/dist/test-utils/llm-mock.d.ts +1 -1
  436. package/dist/test-utils/llm-mock.d.ts.map +1 -1
  437. package/dist/test-utils/llm-mock.js +3 -3
  438. package/dist/test-utils/llm-mock.js.map +1 -1
  439. package/dist/tools/index.cjs +4 -4
  440. package/dist/tools/index.js +1 -1
  441. package/dist/tools/is-vercel-tool.cjs +2 -2
  442. package/dist/tools/is-vercel-tool.js +1 -1
  443. package/dist/tools/tool-builder/builder.d.ts +3 -71
  444. package/dist/tools/tool-builder/builder.d.ts.map +1 -1
  445. package/dist/tools/tool.d.ts +25 -25
  446. package/dist/tools/tool.d.ts.map +1 -1
  447. package/dist/tools/types.d.ts +102 -11
  448. package/dist/tools/types.d.ts.map +1 -1
  449. package/dist/tools/validation.d.ts +4 -3
  450. package/dist/tools/validation.d.ts.map +1 -1
  451. package/dist/tts/index.cjs +12 -6
  452. package/dist/tts/index.cjs.map +1 -1
  453. package/dist/tts/index.d.ts +0 -1
  454. package/dist/tts/index.d.ts.map +1 -1
  455. package/dist/tts/index.js +14 -1
  456. package/dist/tts/index.js.map +1 -1
  457. package/dist/types/dynamic-argument.d.ts +3 -3
  458. package/dist/utils/fetchWithRetry.d.ts +9 -0
  459. package/dist/utils/fetchWithRetry.d.ts.map +1 -0
  460. package/dist/utils.cjs +33 -17
  461. package/dist/utils.d.ts +39 -6
  462. package/dist/utils.d.ts.map +1 -1
  463. package/dist/utils.js +1 -1
  464. package/dist/vector/embed.d.ts +1 -1
  465. package/dist/vector/embed.d.ts.map +1 -1
  466. package/dist/vector/index.cjs +80 -8
  467. package/dist/vector/index.cjs.map +1 -1
  468. package/dist/vector/index.js +80 -1
  469. package/dist/vector/index.js.map +1 -1
  470. package/dist/vector/vector.d.ts +5 -2
  471. package/dist/vector/vector.d.ts.map +1 -1
  472. package/dist/voice/composite-voice.d.ts +1 -7
  473. package/dist/voice/composite-voice.d.ts.map +1 -1
  474. package/dist/voice/index.cjs +4 -4
  475. package/dist/voice/index.js +1 -1
  476. package/dist/voice/voice.d.ts +0 -1
  477. package/dist/voice/voice.d.ts.map +1 -1
  478. package/dist/workflows/default.d.ts +35 -43
  479. package/dist/workflows/default.d.ts.map +1 -1
  480. package/dist/workflows/evented/execution-engine.d.ts +5 -3
  481. package/dist/workflows/evented/execution-engine.d.ts.map +1 -1
  482. package/dist/workflows/evented/index.cjs +10 -10
  483. package/dist/workflows/evented/index.js +1 -1
  484. package/dist/workflows/evented/step-executor.d.ts +15 -13
  485. package/dist/workflows/evented/step-executor.d.ts.map +1 -1
  486. package/dist/workflows/evented/workflow-event-processor/index.d.ts +5 -5
  487. package/dist/workflows/evented/workflow-event-processor/index.d.ts.map +1 -1
  488. package/dist/workflows/evented/workflow-event-processor/loop.d.ts +3 -3
  489. package/dist/workflows/evented/workflow-event-processor/loop.d.ts.map +1 -1
  490. package/dist/workflows/evented/workflow-event-processor/parallel.d.ts +2 -2
  491. package/dist/workflows/evented/workflow-event-processor/sleep.d.ts +2 -2
  492. package/dist/workflows/evented/workflow-event-processor/utils.d.ts +2 -7
  493. package/dist/workflows/evented/workflow-event-processor/utils.d.ts.map +1 -1
  494. package/dist/workflows/evented/workflow.d.ts +11 -14
  495. package/dist/workflows/evented/workflow.d.ts.map +1 -1
  496. package/dist/workflows/execution-engine.d.ts +6 -6
  497. package/dist/workflows/execution-engine.d.ts.map +1 -1
  498. package/dist/workflows/index.cjs +22 -14
  499. package/dist/workflows/index.js +1 -1
  500. package/dist/workflows/step.d.ts +5 -5
  501. package/dist/workflows/step.d.ts.map +1 -1
  502. package/dist/workflows/types.d.ts +21 -44
  503. package/dist/workflows/types.d.ts.map +1 -1
  504. package/dist/workflows/utils.d.ts +14 -0
  505. package/dist/workflows/utils.d.ts.map +1 -1
  506. package/dist/workflows/workflow.d.ts +74 -64
  507. package/dist/workflows/workflow.d.ts.map +1 -1
  508. package/evals/scoreTraces.d.ts +1 -0
  509. package/evals.d.ts +1 -0
  510. package/features.d.ts +1 -0
  511. package/observability.d.ts +1 -0
  512. package/package.json +49 -64
  513. package/request-context.d.ts +1 -0
  514. package/src/_types/ai-sdk.types.d.ts +4705 -0
  515. package/src/llm/model/provider-types.generated.d.ts +80 -17
  516. package/agent/input-processor/processors.d.ts +0 -1
  517. package/ai-tracing.d.ts +0 -1
  518. package/dist/agent/index.warning.d.ts +0 -13
  519. package/dist/agent/index.warning.d.ts.map +0 -1
  520. package/dist/agent/input-processor/index.cjs +0 -28
  521. package/dist/agent/input-processor/index.d.ts +0 -10
  522. package/dist/agent/input-processor/index.d.ts.map +0 -1
  523. package/dist/agent/input-processor/index.js +0 -3
  524. package/dist/agent/input-processor/processors/index.d.ts +0 -6
  525. package/dist/agent/input-processor/processors/index.d.ts.map +0 -1
  526. package/dist/agent/input-processor/processors/language-detector.d.ts +0 -18
  527. package/dist/agent/input-processor/processors/language-detector.d.ts.map +0 -1
  528. package/dist/agent/input-processor/processors/moderation.d.ts +0 -18
  529. package/dist/agent/input-processor/processors/moderation.d.ts.map +0 -1
  530. package/dist/agent/input-processor/processors/pii-detector.d.ts +0 -18
  531. package/dist/agent/input-processor/processors/pii-detector.d.ts.map +0 -1
  532. package/dist/agent/input-processor/processors/prompt-injection-detector.d.ts +0 -18
  533. package/dist/agent/input-processor/processors/prompt-injection-detector.d.ts.map +0 -1
  534. package/dist/agent/input-processor/processors/unicode-normalizer.d.ts +0 -18
  535. package/dist/agent/input-processor/processors/unicode-normalizer.d.ts.map +0 -1
  536. package/dist/ai-tracing/context.d.ts.map +0 -1
  537. package/dist/ai-tracing/exporters/base.d.ts +0 -111
  538. package/dist/ai-tracing/exporters/base.d.ts.map +0 -1
  539. package/dist/ai-tracing/exporters/cloud.d.ts +0 -30
  540. package/dist/ai-tracing/exporters/cloud.d.ts.map +0 -1
  541. package/dist/ai-tracing/exporters/console.d.ts +0 -10
  542. package/dist/ai-tracing/exporters/console.d.ts.map +0 -1
  543. package/dist/ai-tracing/exporters/default.d.ts +0 -98
  544. package/dist/ai-tracing/exporters/default.d.ts.map +0 -1
  545. package/dist/ai-tracing/exporters/index.d.ts +0 -9
  546. package/dist/ai-tracing/exporters/index.d.ts.map +0 -1
  547. package/dist/ai-tracing/index.cjs +0 -148
  548. package/dist/ai-tracing/index.d.ts +0 -13
  549. package/dist/ai-tracing/index.d.ts.map +0 -1
  550. package/dist/ai-tracing/index.js +0 -3
  551. package/dist/ai-tracing/model-tracing.d.ts +0 -63
  552. package/dist/ai-tracing/model-tracing.d.ts.map +0 -1
  553. package/dist/ai-tracing/registry.d.ts +0 -51
  554. package/dist/ai-tracing/registry.d.ts.map +0 -1
  555. package/dist/ai-tracing/span_processors/index.d.ts +0 -5
  556. package/dist/ai-tracing/span_processors/index.d.ts.map +0 -1
  557. package/dist/ai-tracing/span_processors/sensitive-data-filter.d.ts +0 -85
  558. package/dist/ai-tracing/span_processors/sensitive-data-filter.d.ts.map +0 -1
  559. package/dist/ai-tracing/spans/base.d.ts +0 -65
  560. package/dist/ai-tracing/spans/base.d.ts.map +0 -1
  561. package/dist/ai-tracing/spans/default.d.ts +0 -13
  562. package/dist/ai-tracing/spans/default.d.ts.map +0 -1
  563. package/dist/ai-tracing/spans/index.d.ts +0 -7
  564. package/dist/ai-tracing/spans/index.d.ts.map +0 -1
  565. package/dist/ai-tracing/spans/no-op.d.ts +0 -15
  566. package/dist/ai-tracing/spans/no-op.d.ts.map +0 -1
  567. package/dist/ai-tracing/tracers/base.d.ts +0 -105
  568. package/dist/ai-tracing/tracers/base.d.ts.map +0 -1
  569. package/dist/ai-tracing/tracers/default.d.ts +0 -7
  570. package/dist/ai-tracing/tracers/default.d.ts.map +0 -1
  571. package/dist/ai-tracing/tracers/index.d.ts +0 -6
  572. package/dist/ai-tracing/tracers/index.d.ts.map +0 -1
  573. package/dist/ai-tracing/types.d.ts.map +0 -1
  574. package/dist/ai-tracing/utils.d.ts +0 -68
  575. package/dist/ai-tracing/utils.d.ts.map +0 -1
  576. package/dist/base.warning.d.ts +0 -9
  577. package/dist/base.warning.d.ts.map +0 -1
  578. package/dist/bundler/index.warning.d.ts +0 -9
  579. package/dist/bundler/index.warning.d.ts.map +0 -1
  580. package/dist/chunk-253FBVD4.cjs +0 -1303
  581. package/dist/chunk-253FBVD4.cjs.map +0 -1
  582. package/dist/chunk-2B3VLGTH.js +0 -87
  583. package/dist/chunk-2B3VLGTH.js.map +0 -1
  584. package/dist/chunk-34ZCWSUA.js.map +0 -1
  585. package/dist/chunk-3HXBPDKN.js +0 -105
  586. package/dist/chunk-3JX2Y3WH.cjs.map +0 -1
  587. package/dist/chunk-3VXXCPKX.js.map +0 -1
  588. package/dist/chunk-4R2TBRS7.cjs +0 -191
  589. package/dist/chunk-4R2TBRS7.cjs.map +0 -1
  590. package/dist/chunk-5NTO7S5I.cjs.map +0 -1
  591. package/dist/chunk-6C7VGVK4.js +0 -267
  592. package/dist/chunk-6C7VGVK4.js.map +0 -1
  593. package/dist/chunk-6KOL2B3A.cjs +0 -75
  594. package/dist/chunk-6KOL2B3A.cjs.map +0 -1
  595. package/dist/chunk-6TEQIYXV.cjs.map +0 -1
  596. package/dist/chunk-6VOPKVYH.cjs +0 -57
  597. package/dist/chunk-6VOPKVYH.cjs.map +0 -1
  598. package/dist/chunk-77JHIM4E.cjs.map +0 -1
  599. package/dist/chunk-7J3XX4AO.cjs.map +0 -1
  600. package/dist/chunk-A5KDVZDL.cjs.map +0 -1
  601. package/dist/chunk-ABZOBBLL.cjs.map +0 -1
  602. package/dist/chunk-AQGLVU53.cjs +0 -603
  603. package/dist/chunk-AQGLVU53.cjs.map +0 -1
  604. package/dist/chunk-BLUDYAPI.js +0 -596
  605. package/dist/chunk-BLUDYAPI.js.map +0 -1
  606. package/dist/chunk-BWGXM3D4.js.map +0 -1
  607. package/dist/chunk-C7OVZMPW.cjs +0 -91
  608. package/dist/chunk-C7OVZMPW.cjs.map +0 -1
  609. package/dist/chunk-DMBN72QF.cjs +0 -39
  610. package/dist/chunk-DMBN72QF.cjs.map +0 -1
  611. package/dist/chunk-DTTOVV72.js +0 -2880
  612. package/dist/chunk-DTTOVV72.js.map +0 -1
  613. package/dist/chunk-E3PG7G6E.js.map +0 -1
  614. package/dist/chunk-EBVYYC2Q.cjs +0 -111
  615. package/dist/chunk-FHVFGVIO.js.map +0 -1
  616. package/dist/chunk-GB5BIA4V.js +0 -167
  617. package/dist/chunk-GB5BIA4V.js.map +0 -1
  618. package/dist/chunk-HEQTUMUA.cjs +0 -271
  619. package/dist/chunk-HEQTUMUA.cjs.map +0 -1
  620. package/dist/chunk-HF3GZRFP.cjs +0 -9
  621. package/dist/chunk-HF3GZRFP.cjs.map +0 -1
  622. package/dist/chunk-JVV5LREI.js +0 -431
  623. package/dist/chunk-JVV5LREI.js.map +0 -1
  624. package/dist/chunk-KAEQISOW.js.map +0 -1
  625. package/dist/chunk-KDX3ZMQ2.js +0 -12
  626. package/dist/chunk-KDX3ZMQ2.js.map +0 -1
  627. package/dist/chunk-LG5B3KIW.js +0 -1215
  628. package/dist/chunk-LG5B3KIW.js.map +0 -1
  629. package/dist/chunk-LZUSZT7R.cjs +0 -170
  630. package/dist/chunk-LZUSZT7R.cjs.map +0 -1
  631. package/dist/chunk-MCASUJWY.cjs.map +0 -1
  632. package/dist/chunk-MJMID7LX.cjs.map +0 -1
  633. package/dist/chunk-MKCC5K77.js +0 -90
  634. package/dist/chunk-MKCC5K77.js.map +0 -1
  635. package/dist/chunk-NPNGPMT2.js +0 -39
  636. package/dist/chunk-NPNGPMT2.js.map +0 -1
  637. package/dist/chunk-NR77P3TK.js.map +0 -1
  638. package/dist/chunk-NUAURT4I.cjs +0 -82
  639. package/dist/chunk-NUAURT4I.cjs.map +0 -1
  640. package/dist/chunk-OIT3PCWA.js +0 -72
  641. package/dist/chunk-OIT3PCWA.js.map +0 -1
  642. package/dist/chunk-P35FNLTQ.cjs +0 -2936
  643. package/dist/chunk-P35FNLTQ.cjs.map +0 -1
  644. package/dist/chunk-PFXXH2RP.js.map +0 -1
  645. package/dist/chunk-PZUZNPFM.js.map +0 -1
  646. package/dist/chunk-QFF5JUKT.cjs.map +0 -1
  647. package/dist/chunk-RKXWLG33.js +0 -7
  648. package/dist/chunk-RKXWLG33.js.map +0 -1
  649. package/dist/chunk-ROS5CMJS.cjs.map +0 -1
  650. package/dist/chunk-SJMKDSRF.js +0 -179
  651. package/dist/chunk-SJMKDSRF.js.map +0 -1
  652. package/dist/chunk-SSULK22X.cjs +0 -14
  653. package/dist/chunk-SSULK22X.cjs.map +0 -1
  654. package/dist/chunk-TSNDVBUU.cjs.map +0 -1
  655. package/dist/chunk-TTELJD4F.js.map +0 -1
  656. package/dist/chunk-TX4TTPYJ.cjs +0 -436
  657. package/dist/chunk-TX4TTPYJ.cjs.map +0 -1
  658. package/dist/chunk-UXG7PYML.js.map +0 -1
  659. package/dist/chunk-UZKIGB7M.cjs.map +0 -1
  660. package/dist/chunk-VF676YCO.cjs +0 -150
  661. package/dist/chunk-VF676YCO.cjs.map +0 -1
  662. package/dist/chunk-VQASQG5D.js +0 -55
  663. package/dist/chunk-VQASQG5D.js.map +0 -1
  664. package/dist/chunk-WBAXXG34.cjs.map +0 -1
  665. package/dist/chunk-WCHE6FJ7.js.map +0 -1
  666. package/dist/chunk-WM4RO23J.js +0 -145
  667. package/dist/chunk-WM4RO23J.js.map +0 -1
  668. package/dist/chunk-Z4RIRDU3.js.map +0 -1
  669. package/dist/chunk-ZABG3SZ2.cjs +0 -93
  670. package/dist/chunk-ZABG3SZ2.cjs.map +0 -1
  671. package/dist/chunk-ZISECZZO.js +0 -72
  672. package/dist/chunk-ZISECZZO.js.map +0 -1
  673. package/dist/chunk-ZMELUU72.js.map +0 -1
  674. package/dist/deployer/index.warning.d.ts +0 -9
  675. package/dist/deployer/index.warning.d.ts.map +0 -1
  676. package/dist/eval/evaluation.d.ts +0 -14
  677. package/dist/eval/evaluation.d.ts.map +0 -1
  678. package/dist/eval/index.cjs +0 -16
  679. package/dist/eval/index.d.ts +0 -4
  680. package/dist/eval/index.d.ts.map +0 -1
  681. package/dist/eval/index.js +0 -3
  682. package/dist/eval/metric.d.ts +0 -8
  683. package/dist/eval/metric.d.ts.map +0 -1
  684. package/dist/eval/types.d.ts +0 -9
  685. package/dist/eval/types.d.ts.map +0 -1
  686. package/dist/integration/index.warning.d.ts +0 -3
  687. package/dist/integration/index.warning.d.ts.map +0 -1
  688. package/dist/integration/integration.warning.d.ts +0 -5
  689. package/dist/integration/integration.warning.d.ts.map +0 -1
  690. package/dist/integration/openapi-toolset.warning.d.ts +0 -5
  691. package/dist/integration/openapi-toolset.warning.d.ts.map +0 -1
  692. package/dist/loop/telemetry/index.d.ts +0 -36
  693. package/dist/loop/telemetry/index.d.ts.map +0 -1
  694. package/dist/loop/telemetry/noop.d.ts +0 -3
  695. package/dist/loop/telemetry/noop.d.ts.map +0 -1
  696. package/dist/loop/test-utils/mockTracer.d.ts +0 -47
  697. package/dist/loop/test-utils/mockTracer.d.ts.map +0 -1
  698. package/dist/loop/test-utils/telemetry.d.ts +0 -6
  699. package/dist/loop/test-utils/telemetry.d.ts.map +0 -1
  700. package/dist/memory/index.warning.d.ts +0 -6
  701. package/dist/memory/index.warning.d.ts.map +0 -1
  702. package/dist/models-dev-4VGIWYS3.js +0 -3
  703. package/dist/models-dev-AXZASLL2.cjs +0 -12
  704. package/dist/netlify-TX6V7SJJ.cjs +0 -12
  705. package/dist/netlify-VJXBII33.js +0 -3
  706. package/dist/relevance/cohere/index.d.ts +0 -9
  707. package/dist/relevance/cohere/index.d.ts.map +0 -1
  708. package/dist/runtime-context/index.cjs +0 -12
  709. package/dist/runtime-context/index.js +0 -3
  710. package/dist/scores/base.d.ts.map +0 -1
  711. package/dist/scores/base.test-utils.d.ts.map +0 -1
  712. package/dist/scores/hooks.d.ts.map +0 -1
  713. package/dist/scores/index.cjs +0 -37
  714. package/dist/scores/index.cjs.map +0 -1
  715. package/dist/scores/index.d.ts +0 -4
  716. package/dist/scores/index.d.ts.map +0 -1
  717. package/dist/scores/index.js +0 -4
  718. package/dist/scores/index.js.map +0 -1
  719. package/dist/scores/run-experiment/index.d.ts.map +0 -1
  720. package/dist/scores/run-experiment/scorerAccumulator.d.ts.map +0 -1
  721. package/dist/scores/scoreTraces/index.cjs.map +0 -1
  722. package/dist/scores/scoreTraces/index.d.ts.map +0 -1
  723. package/dist/scores/scoreTraces/index.js.map +0 -1
  724. package/dist/scores/scoreTraces/scoreTraces.d.ts.map +0 -1
  725. package/dist/scores/scoreTraces/scoreTracesWorkflow.d.ts.map +0 -1
  726. package/dist/scores/scoreTraces/utils.d.ts.map +0 -1
  727. package/dist/scores/types.d.ts.map +0 -1
  728. package/dist/storage/base.warning.d.ts +0 -8
  729. package/dist/storage/base.warning.d.ts.map +0 -1
  730. package/dist/storage/domains/legacy-evals/base.d.ts +0 -13
  731. package/dist/storage/domains/legacy-evals/base.d.ts.map +0 -1
  732. package/dist/storage/domains/legacy-evals/index.d.ts +0 -2
  733. package/dist/storage/domains/legacy-evals/index.d.ts.map +0 -1
  734. package/dist/storage/domains/legacy-evals/inmemory.d.ts +0 -17
  735. package/dist/storage/domains/legacy-evals/inmemory.d.ts.map +0 -1
  736. package/dist/storage/domains/traces/base.d.ts +0 -14
  737. package/dist/storage/domains/traces/base.d.ts.map +0 -1
  738. package/dist/storage/domains/traces/index.d.ts +0 -3
  739. package/dist/storage/domains/traces/index.d.ts.map +0 -1
  740. package/dist/storage/domains/traces/inmemory.d.ts +0 -22
  741. package/dist/storage/domains/traces/inmemory.d.ts.map +0 -1
  742. package/dist/storage/index.warning.d.ts +0 -3
  743. package/dist/storage/index.warning.d.ts.map +0 -1
  744. package/dist/telemetry/composite-exporter.d.ts +0 -10
  745. package/dist/telemetry/composite-exporter.d.ts.map +0 -1
  746. package/dist/telemetry/index.cjs +0 -32
  747. package/dist/telemetry/index.cjs.map +0 -1
  748. package/dist/telemetry/index.d.ts +0 -6
  749. package/dist/telemetry/index.d.ts.map +0 -1
  750. package/dist/telemetry/index.js +0 -3
  751. package/dist/telemetry/index.js.map +0 -1
  752. package/dist/telemetry/otel-vendor.cjs +0 -105
  753. package/dist/telemetry/otel-vendor.cjs.map +0 -1
  754. package/dist/telemetry/otel-vendor.d.ts +0 -11
  755. package/dist/telemetry/otel-vendor.d.ts.map +0 -1
  756. package/dist/telemetry/otel-vendor.js +0 -59
  757. package/dist/telemetry/otel-vendor.js.map +0 -1
  758. package/dist/telemetry/storage-exporter.d.ts +0 -21
  759. package/dist/telemetry/storage-exporter.d.ts.map +0 -1
  760. package/dist/telemetry/telemetry.d.ts +0 -59
  761. package/dist/telemetry/telemetry.d.ts.map +0 -1
  762. package/dist/telemetry/telemetry.decorators.d.ts +0 -15
  763. package/dist/telemetry/telemetry.decorators.d.ts.map +0 -1
  764. package/dist/telemetry/types.d.ts +0 -74
  765. package/dist/telemetry/types.d.ts.map +0 -1
  766. package/dist/telemetry/utility.d.ts +0 -15
  767. package/dist/telemetry/utility.d.ts.map +0 -1
  768. package/dist/tools/index.warning.d.ts +0 -8
  769. package/dist/tools/index.warning.d.ts.map +0 -1
  770. package/dist/tts/index.warning.d.ts +0 -7
  771. package/dist/tts/index.warning.d.ts.map +0 -1
  772. package/dist/vector/index.warning.d.ts +0 -6
  773. package/dist/vector/index.warning.d.ts.map +0 -1
  774. package/dist/workflows/index.warning.d.ts +0 -6
  775. package/dist/workflows/index.warning.d.ts.map +0 -1
  776. package/dist/workflows/legacy/index.cjs +0 -92
  777. package/dist/workflows/legacy/index.cjs.map +0 -1
  778. package/dist/workflows/legacy/index.d.ts +0 -5
  779. package/dist/workflows/legacy/index.d.ts.map +0 -1
  780. package/dist/workflows/legacy/index.js +0 -3
  781. package/dist/workflows/legacy/index.js.map +0 -1
  782. package/dist/workflows/legacy/machine.d.ts +0 -386
  783. package/dist/workflows/legacy/machine.d.ts.map +0 -1
  784. package/dist/workflows/legacy/step.d.ts +0 -15
  785. package/dist/workflows/legacy/step.d.ts.map +0 -1
  786. package/dist/workflows/legacy/types.d.ts +0 -397
  787. package/dist/workflows/legacy/types.d.ts.map +0 -1
  788. package/dist/workflows/legacy/utils.d.ts +0 -68
  789. package/dist/workflows/legacy/utils.d.ts.map +0 -1
  790. package/dist/workflows/legacy/workflow-instance.d.ts +0 -97
  791. package/dist/workflows/legacy/workflow-instance.d.ts.map +0 -1
  792. package/dist/workflows/legacy/workflow.d.ts +0 -109
  793. package/dist/workflows/legacy/workflow.d.ts.map +0 -1
  794. package/dist/workflows/workflow.warning.d.ts +0 -9
  795. package/dist/workflows/workflow.warning.d.ts.map +0 -1
  796. package/eval.d.ts +0 -1
  797. package/runtime-context.d.ts +0 -1
  798. package/scores/scoreTraces.d.ts +0 -1
  799. package/scores.d.ts +0 -1
  800. package/telemetry/otel-vendor.d.ts +0 -1
  801. package/telemetry.d.ts +0 -1
  802. package/workflows/legacy.d.ts +0 -1
  803. /package/dist/agent/{input-processor → message-list}/index.cjs.map +0 -0
  804. /package/dist/agent/{input-processor → message-list}/index.js.map +0 -0
  805. /package/dist/{ai-tracing → evals}/index.cjs.map +0 -0
  806. /package/dist/{ai-tracing → evals}/index.js.map +0 -0
  807. /package/dist/{scores/run-experiment → evals/run}/scorerAccumulator.d.ts +0 -0
  808. /package/dist/{scores → evals}/scoreTraces/index.d.ts +0 -0
  809. /package/dist/{eval → observability}/index.cjs.map +0 -0
  810. /package/dist/{eval → observability}/index.js.map +0 -0
  811. /package/dist/{runtime-context → request-context}/index.cjs.map +0 -0
  812. /package/dist/{runtime-context → request-context}/index.js.map +0 -0
@@ -1,10 +1,8 @@
1
- import { fetchWithRetry } from './chunk-DTTOVV72.js';
2
- import { MastraError } from './chunk-PZUZNPFM.js';
3
- import { convertUint8ArrayToBase64, convertBase64ToUint8Array, isUrlSupported } from '@ai-sdk/provider-utils-v5';
4
- import { randomUUID } from 'crypto';
5
- import * as AIV4 from 'ai';
1
+ import { convertToCoreMessages, convertUint8ArrayToBase64 as convertUint8ArrayToBase64$1 } from './chunk-QM5SRDJX.js';
2
+ import { MastraError } from './chunk-JJ5O45LH.js';
3
+ import { v4 } from '@lukeed/uuid';
6
4
  import * as AIV5 from 'ai-v5';
7
- import { convertUint8ArrayToBase64 as convertUint8ArrayToBase64$1 } from '@ai-sdk/provider-utils';
5
+ import { convertUint8ArrayToBase64, convertBase64ToUint8Array, isUrlSupported } from '@ai-sdk/provider-utils-v5';
8
6
  import { z } from 'zod';
9
7
 
10
8
  var DefaultGeneratedFile = class {
@@ -587,6 +585,45 @@ function convertDataContentToBase64String(content) {
587
585
  }
588
586
  return convertUint8ArrayToBase64$1(content);
589
587
  }
588
+
589
+ // src/utils/fetchWithRetry.ts
590
+ async function fetchWithRetry(url, options = {}, maxRetries = 3) {
591
+ let retryCount = 0;
592
+ let lastError = null;
593
+ while (retryCount < maxRetries) {
594
+ try {
595
+ const response = await fetch(url, options);
596
+ if (!response.ok) {
597
+ if (response.status >= 400 && response.status < 500) {
598
+ throw new Error(`Request failed with status: ${response.status} ${response.statusText}`);
599
+ }
600
+ lastError = new Error(`Request failed with status: ${response.status} ${response.statusText}`);
601
+ retryCount++;
602
+ if (retryCount >= maxRetries) {
603
+ throw lastError;
604
+ }
605
+ const delay = Math.min(1e3 * Math.pow(2, retryCount), 1e4);
606
+ await new Promise((resolve) => setTimeout(resolve, delay));
607
+ continue;
608
+ }
609
+ return response;
610
+ } catch (error) {
611
+ lastError = error instanceof Error ? error : new Error(String(error));
612
+ if (lastError.message.includes("status: 4")) {
613
+ throw lastError;
614
+ }
615
+ retryCount++;
616
+ if (retryCount >= maxRetries) {
617
+ break;
618
+ }
619
+ const delay = Math.min(1e3 * Math.pow(2, retryCount), 1e4);
620
+ await new Promise((resolve) => setTimeout(resolve, delay));
621
+ }
622
+ }
623
+ throw lastError || new Error("Request failed after multiple retry attempts");
624
+ }
625
+
626
+ // src/agent/message-list/prompt/download-assets.ts
590
627
  var downloadFromUrl = async ({ url, downloadRetries }) => {
591
628
  const urlText = url.toString();
592
629
  try {
@@ -649,7 +686,13 @@ async function downloadAssetsFromMessages({
649
686
  const downloadedFiles = await pMap(
650
687
  filesToDownload,
651
688
  async (fileItem) => {
652
- return downloadFromUrl({ url: fileItem.url, downloadRetries });
689
+ if (!fileItem.isUrlSupportedByModel) {
690
+ return null;
691
+ }
692
+ return {
693
+ url: fileItem.url.toString(),
694
+ ...await downloadFromUrl({ url: fileItem.url, downloadRetries })
695
+ };
653
696
  },
654
697
  {
655
698
  concurrency: downloadConcurrency
@@ -657,7 +700,7 @@ async function downloadAssetsFromMessages({
657
700
  );
658
701
  const downloadFileList = downloadedFiles.filter(
659
702
  (downloadedFile) => downloadedFile?.data != null
660
- ).map(({ data, mediaType }, index) => [filesToDownload?.[index]?.url.toString(), { data, mediaType }]);
703
+ ).map(({ url, data, mediaType }) => [url, { data, mediaType }]);
661
704
  return Object.fromEntries(downloadFileList);
662
705
  }
663
706
 
@@ -701,23 +744,10 @@ function imageContentToString(image, fallbackMimeType) {
701
744
  }
702
745
  if (image instanceof Uint8Array || image instanceof ArrayBuffer || globalThis.Buffer && Buffer.isBuffer(image)) {
703
746
  const base64 = convertDataContentToBase64String(image);
704
- if (fallbackMimeType && !base64.startsWith("data:")) {
705
- return `data:${fallbackMimeType};base64,${base64}`;
706
- }
707
747
  return base64;
708
748
  }
709
749
  return String(image);
710
750
  }
711
- function imageContentToDataUri(image, mimeType = "image/png") {
712
- const imageStr = imageContentToString(image, mimeType);
713
- if (imageStr.startsWith("data:")) {
714
- return imageStr;
715
- }
716
- if (imageStr.startsWith("http://") || imageStr.startsWith("https://")) {
717
- return imageStr;
718
- }
719
- return `data:${mimeType};base64,${imageStr}`;
720
- }
721
751
  function getImageCacheKey(image) {
722
752
  if (image instanceof URL) {
723
753
  return image.toString();
@@ -810,6 +840,35 @@ function getToolName(type) {
810
840
  return type;
811
841
  }
812
842
 
843
+ // src/agent/message-list/utils/convert-messages.ts
844
+ var MessageConverter = class {
845
+ messageList;
846
+ constructor(messages) {
847
+ this.messageList = new MessageList();
848
+ this.messageList.add(messages, "memory");
849
+ }
850
+ to(format) {
851
+ switch (format) {
852
+ // Old format keys (backward compatibility)
853
+ case "Mastra.V2":
854
+ return this.messageList.get.all.db();
855
+ case "AIV4.UI":
856
+ return this.messageList.get.all.aiV4.ui();
857
+ case "AIV4.Core":
858
+ return this.messageList.get.all.aiV4.core();
859
+ case "AIV5.UI":
860
+ return this.messageList.get.all.aiV5.ui();
861
+ case "AIV5.Model":
862
+ return this.messageList.get.all.aiV5.model();
863
+ default:
864
+ throw new Error(`Unsupported output format: ${format}`);
865
+ }
866
+ }
867
+ };
868
+ function convertMessages(messages) {
869
+ return new MessageConverter(messages);
870
+ }
871
+
813
872
  // src/agent/message-list/index.ts
814
873
  var MessageList = class _MessageList {
815
874
  messages = [];
@@ -932,7 +991,7 @@ var MessageList = class _MessageList {
932
991
  get clear() {
933
992
  return {
934
993
  input: {
935
- v2: () => {
994
+ db: () => {
936
995
  const userMessages = Array.from(this.newUserMessages);
937
996
  this.messages = this.messages.filter((m) => !this.newUserMessages.has(m));
938
997
  this.newUserMessages.clear();
@@ -940,7 +999,7 @@ var MessageList = class _MessageList {
940
999
  }
941
1000
  },
942
1001
  response: {
943
- v2: () => {
1002
+ db: () => {
944
1003
  const responseMessages = Array.from(this.newResponseMessages);
945
1004
  this.messages = this.messages.filter((m) => !this.newResponseMessages.has(m));
946
1005
  this.newResponseMessages.clear();
@@ -950,19 +1009,18 @@ var MessageList = class _MessageList {
950
1009
  };
951
1010
  }
952
1011
  all = {
953
- v3: () => this.cleanV3Metadata(this.messages.map(this.mastraMessageV2ToMastraMessageV3)),
954
- v2: () => this.messages,
955
- v1: () => convertToV1Messages(this.all.v2()),
1012
+ db: () => this.messages,
1013
+ v1: () => convertToV1Messages(this.all.db()),
956
1014
  aiV5: {
957
1015
  model: () => this.aiV5UIMessagesToAIV5ModelMessages(this.all.aiV5.ui()),
958
- ui: () => this.all.v3().map(_MessageList.mastraMessageV3ToAIV5UIMessage),
1016
+ ui: () => this.all.db().map(_MessageList.mastraDBMessageToAIV5UIMessage),
959
1017
  // Used when calling AI SDK streamText/generateText
960
1018
  prompt: () => {
961
1019
  const systemMessages = this.aiV4CoreMessagesToAIV5ModelMessages(
962
1020
  [...this.systemMessages, ...Object.values(this.taggedSystemMessages).flat()],
963
1021
  `system`
964
1022
  );
965
- const modelMessages = this.all.aiV5.model();
1023
+ const modelMessages = this.aiV5UIMessagesToAIV5ModelMessages(this.all.aiV5.ui(), true);
966
1024
  const messages = [...systemMessages, ...modelMessages];
967
1025
  return ensureGeminiCompatibleMessages(messages);
968
1026
  },
@@ -971,7 +1029,7 @@ var MessageList = class _MessageList {
971
1029
  downloadConcurrency: 10,
972
1030
  downloadRetries: 3
973
1031
  }) => {
974
- const modelMessages = this.all.aiV5.model();
1032
+ const modelMessages = this.aiV5UIMessagesToAIV5ModelMessages(this.all.aiV5.ui(), true);
975
1033
  const systemMessages = this.aiV4CoreMessagesToAIV5ModelMessages(
976
1034
  [...this.systemMessages, ...Object.values(this.taggedSystemMessages).flat()],
977
1035
  `system`
@@ -1015,11 +1073,11 @@ var MessageList = class _MessageList {
1015
1073
  /* @deprecated use list.get.all.aiV4.prompt() instead */
1016
1074
  prompt: () => this.all.aiV4.prompt(),
1017
1075
  /* @deprecated use list.get.all.aiV4.ui() */
1018
- ui: () => this.all.v2().map(_MessageList.mastraMessageV2ToAIV4UIMessage),
1076
+ ui: () => this.all.db().map(_MessageList.mastraDBMessageToAIV4UIMessage),
1019
1077
  /* @deprecated use list.get.all.aiV4.core() */
1020
1078
  core: () => this.aiV4UIMessagesToAIV4CoreMessages(this.all.aiV4.ui()),
1021
1079
  aiV4: {
1022
- ui: () => this.all.v2().map(_MessageList.mastraMessageV2ToAIV4UIMessage),
1080
+ ui: () => this.all.db().map(_MessageList.mastraDBMessageToAIV4UIMessage),
1023
1081
  core: () => this.aiV4UIMessagesToAIV4CoreMessages(this.all.aiV4.ui()),
1024
1082
  // Used when calling AI SDK streamText/generateText
1025
1083
  prompt: () => {
@@ -1038,64 +1096,56 @@ var MessageList = class _MessageList {
1038
1096
  }
1039
1097
  };
1040
1098
  remembered = {
1041
- v3: () => this.remembered.v2().map(this.mastraMessageV2ToMastraMessageV3),
1042
- v2: () => this.messages.filter((m) => this.memoryMessages.has(m)),
1043
- v1: () => convertToV1Messages(this.remembered.v2()),
1099
+ db: () => this.messages.filter((m) => this.memoryMessages.has(m)),
1100
+ v1: () => convertToV1Messages(this.remembered.db()),
1044
1101
  aiV5: {
1045
1102
  model: () => this.aiV5UIMessagesToAIV5ModelMessages(this.remembered.aiV5.ui()),
1046
- ui: () => this.remembered.v3().map(_MessageList.mastraMessageV3ToAIV5UIMessage)
1103
+ ui: () => this.remembered.db().map(_MessageList.mastraDBMessageToAIV5UIMessage)
1047
1104
  },
1048
1105
  /* @deprecated use list.get.remembered.aiV4.ui() */
1049
- ui: () => this.remembered.v2().map(_MessageList.mastraMessageV2ToAIV4UIMessage),
1106
+ ui: () => this.remembered.db().map(_MessageList.mastraDBMessageToAIV4UIMessage),
1050
1107
  /* @deprecated use list.get.remembered.aiV4.core() */
1051
1108
  core: () => this.aiV4UIMessagesToAIV4CoreMessages(this.all.aiV4.ui()),
1052
1109
  aiV4: {
1053
- ui: () => this.remembered.v2().map(_MessageList.mastraMessageV2ToAIV4UIMessage),
1110
+ ui: () => this.remembered.db().map(_MessageList.mastraDBMessageToAIV4UIMessage),
1054
1111
  core: () => this.aiV4UIMessagesToAIV4CoreMessages(this.all.aiV4.ui())
1055
1112
  }
1056
1113
  };
1057
1114
  // TODO: need to update this for new .aiV4/5.x() pattern
1058
1115
  rememberedPersisted = {
1059
- v2: () => this.all.v2().filter((m) => this.memoryMessagesPersisted.has(m)),
1060
- v1: () => convertToV1Messages(this.rememberedPersisted.v2()),
1061
- ui: () => this.rememberedPersisted.v2().map(_MessageList.mastraMessageV2ToAIV4UIMessage),
1116
+ db: () => this.all.db().filter((m) => this.memoryMessagesPersisted.has(m)),
1117
+ v1: () => convertToV1Messages(this.rememberedPersisted.db()),
1118
+ ui: () => this.rememberedPersisted.db().map(_MessageList.mastraDBMessageToAIV4UIMessage),
1062
1119
  core: () => this.aiV4UIMessagesToAIV4CoreMessages(this.rememberedPersisted.ui())
1063
1120
  };
1064
1121
  input = {
1065
- v3: () => this.cleanV3Metadata(
1066
- this.messages.filter((m) => this.newUserMessages.has(m)).map(this.mastraMessageV2ToMastraMessageV3)
1067
- ),
1068
- v2: () => this.messages.filter((m) => this.newUserMessages.has(m)),
1069
- v1: () => convertToV1Messages(this.input.v2()),
1122
+ db: () => this.messages.filter((m) => this.newUserMessages.has(m)),
1123
+ v1: () => convertToV1Messages(this.input.db()),
1070
1124
  aiV5: {
1071
1125
  model: () => this.aiV5UIMessagesToAIV5ModelMessages(this.input.aiV5.ui()),
1072
- ui: () => this.input.v3().map(_MessageList.mastraMessageV3ToAIV5UIMessage)
1126
+ ui: () => this.input.db().map(_MessageList.mastraDBMessageToAIV5UIMessage)
1073
1127
  },
1074
1128
  /* @deprecated use list.get.input.aiV4.ui() instead */
1075
- ui: () => this.input.v2().map(_MessageList.mastraMessageV2ToAIV4UIMessage),
1129
+ ui: () => this.input.db().map(_MessageList.mastraDBMessageToAIV4UIMessage),
1076
1130
  /* @deprecated use list.get.core.aiV4.ui() instead */
1077
1131
  core: () => this.aiV4UIMessagesToAIV4CoreMessages(this.input.ui()),
1078
1132
  aiV4: {
1079
- ui: () => this.input.v2().map(_MessageList.mastraMessageV2ToAIV4UIMessage),
1133
+ ui: () => this.input.db().map(_MessageList.mastraDBMessageToAIV4UIMessage),
1080
1134
  core: () => this.aiV4UIMessagesToAIV4CoreMessages(this.input.aiV4.ui())
1081
1135
  }
1082
1136
  };
1083
1137
  // TODO: need to update this for new .aiV4/5.x() pattern
1084
1138
  inputPersisted = {
1085
- v3: () => this.cleanV3Metadata(
1086
- this.messages.filter((m) => this.newUserMessagesPersisted.has(m)).map(this.mastraMessageV2ToMastraMessageV3)
1087
- ),
1088
- v2: () => this.messages.filter((m) => this.newUserMessagesPersisted.has(m)),
1089
- v1: () => convertToV1Messages(this.inputPersisted.v2()),
1090
- ui: () => this.inputPersisted.v2().map(_MessageList.mastraMessageV2ToAIV4UIMessage),
1139
+ db: () => this.messages.filter((m) => this.newUserMessagesPersisted.has(m)),
1140
+ v1: () => convertToV1Messages(this.inputPersisted.db()),
1141
+ ui: () => this.inputPersisted.db().map(_MessageList.mastraDBMessageToAIV4UIMessage),
1091
1142
  core: () => this.aiV4UIMessagesToAIV4CoreMessages(this.inputPersisted.ui())
1092
1143
  };
1093
1144
  response = {
1094
- v3: () => this.response.v2().map(this.mastraMessageV2ToMastraMessageV3),
1095
- v2: () => this.messages.filter((m) => this.newResponseMessages.has(m)),
1096
- v1: () => convertToV1Messages(this.response.v3().map(_MessageList.mastraMessageV3ToV2)),
1145
+ db: () => this.messages.filter((m) => this.newResponseMessages.has(m)),
1146
+ v1: () => convertToV1Messages(this.response.db()),
1097
1147
  aiV5: {
1098
- ui: () => this.response.v3().map(_MessageList.mastraMessageV3ToAIV5UIMessage),
1148
+ ui: () => this.response.db().map(_MessageList.mastraDBMessageToAIV5UIMessage),
1099
1149
  model: () => this.aiV5UIMessagesToAIV5ModelMessages(this.response.aiV5.ui()).filter(
1100
1150
  (m) => m.role === `tool` || m.role === `assistant`
1101
1151
  ),
@@ -1238,17 +1288,14 @@ var MessageList = class _MessageList {
1238
1288
  }
1239
1289
  },
1240
1290
  aiV4: {
1241
- ui: () => this.response.v2().map(_MessageList.mastraMessageV2ToAIV4UIMessage),
1291
+ ui: () => this.response.db().map(_MessageList.mastraDBMessageToAIV4UIMessage),
1242
1292
  core: () => this.aiV4UIMessagesToAIV4CoreMessages(this.response.aiV4.ui())
1243
1293
  }
1244
1294
  };
1245
1295
  // TODO: need to update this for new .aiV4/5.x() pattern
1246
1296
  responsePersisted = {
1247
- v3: () => this.cleanV3Metadata(
1248
- this.messages.filter((m) => this.newResponseMessagesPersisted.has(m)).map(this.mastraMessageV2ToMastraMessageV3)
1249
- ),
1250
- v2: () => this.messages.filter((m) => this.newResponseMessagesPersisted.has(m)),
1251
- ui: () => this.responsePersisted.v2().map(_MessageList.mastraMessageV2ToAIV4UIMessage)
1297
+ db: () => this.messages.filter((m) => this.newResponseMessagesPersisted.has(m)),
1298
+ ui: () => this.responsePersisted.db().map(_MessageList.mastraDBMessageToAIV4UIMessage)
1252
1299
  };
1253
1300
  drainUnsavedMessages() {
1254
1301
  const messages = this.messages.filter((m) => this.newUserMessages.has(m) || this.newResponseMessages.has(m));
@@ -1275,7 +1322,7 @@ var MessageList = class _MessageList {
1275
1322
  return this;
1276
1323
  }
1277
1324
  aiV4UIMessagesToAIV4CoreMessages(messages) {
1278
- return AIV4.convertToCoreMessages(this.sanitizeAIV4UIMessages(messages));
1325
+ return convertToCoreMessages(this.sanitizeAIV4UIMessages(messages));
1279
1326
  }
1280
1327
  sanitizeAIV4UIMessages(messages) {
1281
1328
  const msgs = messages.map((m) => {
@@ -1299,7 +1346,7 @@ var MessageList = class _MessageList {
1299
1346
  }
1300
1347
  /**
1301
1348
  * Converts various message formats to AIV4 CoreMessage format for system messages
1302
- * @param message - The message to convert (can be string, MastraMessageV2, or AI SDK message types)
1349
+ * @param message - The message to convert (can be string, MastraDBMessage, or AI SDK message types)
1303
1350
  * @returns AIV4 CoreMessage in the proper format
1304
1351
  */
1305
1352
  systemMessageToAICore(message) {
@@ -1307,10 +1354,11 @@ var MessageList = class _MessageList {
1307
1354
  return { role: "system", content: message };
1308
1355
  }
1309
1356
  if (_MessageList.isAIV5CoreMessage(message)) {
1310
- return this.aiV5ModelMessagesToAIV4CoreMessages([message], `system`)[0];
1357
+ const dbMsg = _MessageList.aiV5ModelMessageToMastraDBMessage(message, "system");
1358
+ return _MessageList.mastraDBMessageSystemToV4Core(dbMsg);
1311
1359
  }
1312
- if (_MessageList.isMastraMessageV2(message)) {
1313
- return _MessageList.mastraMessageV2SystemToV4Core(message);
1360
+ if (_MessageList.isMastraDBMessage(message)) {
1361
+ return _MessageList.mastraDBMessageSystemToV4Core(message);
1314
1362
  }
1315
1363
  return message;
1316
1364
  }
@@ -1339,7 +1387,7 @@ var MessageList = class _MessageList {
1339
1387
  (m) => _MessageList.cacheKeyFromAIV4CoreMessageContent(m.content) === _MessageList.cacheKeyFromAIV4CoreMessageContent(message.content)
1340
1388
  );
1341
1389
  }
1342
- static mastraMessageV2ToAIV4UIMessage(m) {
1390
+ static mastraDBMessageToAIV4UIMessage(m) {
1343
1391
  const experimentalAttachments = m.content.experimental_attachments ? [...m.content.experimental_attachments] : [];
1344
1392
  const contentString = typeof m.content.content === `string` && m.content.content !== "" ? m.content.content : m.content.parts.reduce((prev, part) => {
1345
1393
  if (part.type === `text`) {
@@ -1434,12 +1482,12 @@ var MessageList = class _MessageList {
1434
1482
  return uiMessage;
1435
1483
  }
1436
1484
  /**
1437
- * Converts a MastraMessageV2 system message directly to AIV4 CoreMessage format
1485
+ * Converts a MastraDBMessage system message directly to AIV4 CoreMessage format
1438
1486
  * This is more efficient than converting to UI message first and then to core
1439
- * @param message - The MastraMessageV2 message to convert
1487
+ * @param message - The MastraDBMessage message to convert
1440
1488
  * @returns AIV4 CoreMessage with system role
1441
1489
  */
1442
- static mastraMessageV2SystemToV4Core(message) {
1490
+ static mastraDBMessageSystemToV4Core(message) {
1443
1491
  if (message.role !== `system` || !message.content.content)
1444
1492
  throw new MastraError({
1445
1493
  id: "INVALID_SYSTEM_MESSAGE_FORMAT",
@@ -1486,7 +1534,7 @@ var MessageList = class _MessageList {
1486
1534
  }
1487
1535
  if (message.role === `system`) {
1488
1536
  if (messageSource === `memory`) return null;
1489
- const isSupportedSystemFormat = _MessageList.isAIV4CoreMessage(message) || _MessageList.isAIV5CoreMessage(message) || _MessageList.isMastraMessageV2(message);
1537
+ const isSupportedSystemFormat = _MessageList.isAIV4CoreMessage(message) || _MessageList.isAIV5CoreMessage(message) || _MessageList.isMastraDBMessage(message);
1490
1538
  if (isSupportedSystemFormat) {
1491
1539
  return this.addSystem(message);
1492
1540
  }
@@ -1501,7 +1549,7 @@ var MessageList = class _MessageList {
1501
1549
  }
1502
1550
  });
1503
1551
  }
1504
- const messageV2 = this.inputToMastraMessageV2(message, messageSource);
1552
+ const messageV2 = this.inputToMastraDBMessage(message, messageSource);
1505
1553
  const { exists, shouldReplace, id } = this.shouldReplaceMessage(messageV2);
1506
1554
  const latestMessage = this.messages.at(-1);
1507
1555
  if (messageSource === `memory`) {
@@ -1693,7 +1741,7 @@ var MessageList = class _MessageList {
1693
1741
  }
1694
1742
  }
1695
1743
  }
1696
- inputToMastraMessageV2(message, messageSource) {
1744
+ inputToMastraDBMessage(message, messageSource) {
1697
1745
  if (
1698
1746
  // we can't throw if the threadId doesn't match and this message came from memory
1699
1747
  // this is because per-user semantic recall can retrieve messages from other threads
@@ -1709,25 +1757,33 @@ var MessageList = class _MessageList {
1709
1757
  );
1710
1758
  }
1711
1759
  if (_MessageList.isMastraMessageV1(message)) {
1712
- return this.mastraMessageV1ToMastraMessageV2(message, messageSource);
1760
+ return this.mastraMessageV1ToMastraDBMessage(message, messageSource);
1713
1761
  }
1714
- if (_MessageList.isMastraMessageV2(message)) {
1715
- return this.hydrateMastraMessageV2Fields(message);
1762
+ if (_MessageList.isMastraDBMessage(message)) {
1763
+ return this.hydrateMastraDBMessageFields(message);
1716
1764
  }
1717
1765
  if (_MessageList.isAIV4CoreMessage(message)) {
1718
- return this.aiV4CoreMessageToMastraMessageV2(message, messageSource);
1766
+ return this.aiV4CoreMessageToMastraDBMessage(message, messageSource);
1719
1767
  }
1720
1768
  if (_MessageList.isAIV4UIMessage(message)) {
1721
- return this.aiV4UIMessageToMastraMessageV2(message, messageSource);
1769
+ return this.aiV4UIMessageToMastraDBMessage(message, messageSource);
1722
1770
  }
1723
1771
  if (_MessageList.isAIV5CoreMessage(message)) {
1724
- return _MessageList.mastraMessageV3ToV2(this.aiV5ModelMessageToMastraMessageV3(message, messageSource));
1772
+ const dbMsg = _MessageList.aiV5ModelMessageToMastraDBMessage(message, messageSource);
1773
+ const result = {
1774
+ ...dbMsg,
1775
+ threadId: this.memoryInfo?.threadId,
1776
+ resourceId: this.memoryInfo?.resourceId
1777
+ };
1778
+ return result;
1725
1779
  }
1726
1780
  if (_MessageList.isAIV5UIMessage(message)) {
1727
- return _MessageList.mastraMessageV3ToV2(this.aiV5UIMessageToMastraMessageV3(message, messageSource));
1728
- }
1729
- if (_MessageList.isMastraMessageV3(message)) {
1730
- return _MessageList.mastraMessageV3ToV2(this.hydrateMastraMessageV3Fields(message));
1781
+ const dbMsg = _MessageList.aiV5UIMessageToMastraDBMessage(message);
1782
+ return {
1783
+ ...dbMsg,
1784
+ threadId: this.memoryInfo?.threadId,
1785
+ resourceId: this.memoryInfo?.resourceId
1786
+ };
1731
1787
  }
1732
1788
  throw new Error(`Found unhandled message ${JSON.stringify(message)}`);
1733
1789
  }
@@ -1760,10 +1816,10 @@ var MessageList = class _MessageList {
1760
1816
  if (this.generateMessageId) {
1761
1817
  return this.generateMessageId();
1762
1818
  }
1763
- return randomUUID();
1819
+ return v4();
1764
1820
  }
1765
- mastraMessageV1ToMastraMessageV2(message, messageSource) {
1766
- const coreV2 = this.aiV4CoreMessageToMastraMessageV2(
1821
+ mastraMessageV1ToMastraDBMessage(message, messageSource) {
1822
+ const coreV2 = this.aiV4CoreMessageToMastraDBMessage(
1767
1823
  {
1768
1824
  content: message.content,
1769
1825
  role: message.role
@@ -1779,11 +1835,10 @@ var MessageList = class _MessageList {
1779
1835
  content: coreV2.content
1780
1836
  };
1781
1837
  }
1782
- hydrateMastraMessageV3Fields(message) {
1783
- if (!(message.createdAt instanceof Date)) message.createdAt = new Date(message.createdAt);
1784
- return message;
1785
- }
1786
- hydrateMastraMessageV2Fields(message) {
1838
+ hydrateMastraDBMessageFields(message) {
1839
+ if (!message.id) {
1840
+ message.id = this.newMessageId();
1841
+ }
1787
1842
  if (!(message.createdAt instanceof Date)) message.createdAt = new Date(message.createdAt);
1788
1843
  if (message.content.toolInvocations && message.content.parts) {
1789
1844
  message.content.toolInvocations = message.content.toolInvocations.map((ti) => {
@@ -1800,7 +1855,7 @@ var MessageList = class _MessageList {
1800
1855
  }
1801
1856
  return message;
1802
1857
  }
1803
- aiV4UIMessageToMastraMessageV2(message, messageSource) {
1858
+ aiV4UIMessageToMastraDBMessage(message, messageSource) {
1804
1859
  const content = {
1805
1860
  format: 2,
1806
1861
  parts: message.parts
@@ -1823,7 +1878,7 @@ var MessageList = class _MessageList {
1823
1878
  content
1824
1879
  };
1825
1880
  }
1826
- aiV4CoreMessageToMastraMessageV2(coreMessage, messageSource) {
1881
+ aiV4CoreMessageToMastraDBMessage(coreMessage, messageSource) {
1827
1882
  const id = `id` in coreMessage ? coreMessage.id : this.newMessageId();
1828
1883
  const parts = [];
1829
1884
  const experimentalAttachments = [];
@@ -1995,21 +2050,16 @@ var MessageList = class _MessageList {
1995
2050
  return !_MessageList.isMastraMessage(msg) && !(`parts` in msg) && `content` in msg && !_MessageList.hasAIV5CoreMessageCharacteristics(msg);
1996
2051
  }
1997
2052
  static isMastraMessage(msg) {
1998
- return _MessageList.isMastraMessageV3(msg) || _MessageList.isMastraMessageV2(msg) || _MessageList.isMastraMessageV1(msg);
2053
+ return _MessageList.isMastraDBMessage(msg) || _MessageList.isMastraMessageV1(msg);
1999
2054
  }
2000
2055
  static isMastraMessageV1(msg) {
2001
- return !_MessageList.isMastraMessageV2(msg) && !_MessageList.isMastraMessageV3(msg) && (`threadId` in msg || `resourceId` in msg);
2056
+ return !_MessageList.isMastraDBMessage(msg) && (`threadId` in msg || `resourceId` in msg);
2002
2057
  }
2003
- static isMastraMessageV2(msg) {
2058
+ static isMastraDBMessage(msg) {
2004
2059
  return Boolean(
2005
2060
  `content` in msg && msg.content && !Array.isArray(msg.content) && typeof msg.content !== `string` && `format` in msg.content && msg.content.format === 2
2006
2061
  );
2007
2062
  }
2008
- static isMastraMessageV3(msg) {
2009
- return Boolean(
2010
- `content` in msg && msg.content && !Array.isArray(msg.content) && typeof msg.content !== `string` && `format` in msg.content && msg.content.format === 3
2011
- );
2012
- }
2013
2063
  static getRole(message) {
2014
2064
  if (message.role === `assistant` || message.role === `tool`) return `assistant`;
2015
2065
  if (message.role === `user`) return `user`;
@@ -2106,18 +2156,12 @@ var MessageList = class _MessageList {
2106
2156
  if (oneMM1 && twoMM1) {
2107
2157
  return oneMM1.id === twoMM1.id && _MessageList.cacheKeyFromAIV4CoreMessageContent(oneMM1.content) === _MessageList.cacheKeyFromAIV4CoreMessageContent(twoMM1.content);
2108
2158
  }
2109
- const oneMM2 = _MessageList.isMastraMessageV2(one) && one;
2110
- const twoMM2 = _MessageList.isMastraMessageV2(two) && two;
2159
+ const oneMM2 = _MessageList.isMastraDBMessage(one) && one;
2160
+ const twoMM2 = _MessageList.isMastraDBMessage(two) && two;
2111
2161
  if (oneMM2 && !twoMM2) return false;
2112
2162
  if (oneMM2 && twoMM2) {
2113
2163
  return oneMM2.id === twoMM2.id && _MessageList.cacheKeyFromAIV4Parts(oneMM2.content.parts) === _MessageList.cacheKeyFromAIV4Parts(twoMM2.content.parts);
2114
2164
  }
2115
- const oneMM3 = _MessageList.isMastraMessageV3(one) && one;
2116
- const twoMM3 = _MessageList.isMastraMessageV3(two) && two;
2117
- if (oneMM3 && !twoMM3) return false;
2118
- if (oneMM3 && twoMM3) {
2119
- return oneMM3.id === twoMM3.id && _MessageList.cacheKeyFromAIV5Parts(oneMM3.content.parts) === _MessageList.cacheKeyFromAIV5Parts(twoMM3.content.parts);
2120
- }
2121
2165
  const oneUIV5 = _MessageList.isAIV5UIMessage(one) && one;
2122
2166
  const twoUIV5 = _MessageList.isAIV5UIMessage(two) && two;
2123
2167
  if (oneUIV5 && !twoUIV5) return false;
@@ -2132,25 +2176,6 @@ var MessageList = class _MessageList {
2132
2176
  }
2133
2177
  return true;
2134
2178
  }
2135
- cleanV3Metadata(messages) {
2136
- return messages.map((msg) => {
2137
- if (!msg.content.metadata || typeof msg.content.metadata !== "object") {
2138
- return msg;
2139
- }
2140
- const metadata = { ...msg.content.metadata };
2141
- const hasOriginalContent = "__originalContent" in metadata;
2142
- const hasOriginalAttachments = "__originalExperimentalAttachments" in metadata;
2143
- if (!hasOriginalContent && !hasOriginalAttachments) {
2144
- return msg;
2145
- }
2146
- const { __originalContent, __originalExperimentalAttachments, ...cleanMetadata } = metadata;
2147
- if (Object.keys(cleanMetadata).length === 0) {
2148
- const { metadata: metadata2, ...contentWithoutMetadata } = msg.content;
2149
- return { ...msg, content: contentWithoutMetadata };
2150
- }
2151
- return { ...msg, content: { ...msg.content, metadata: cleanMetadata } };
2152
- });
2153
- }
2154
2179
  static aiV4CoreMessageToV1PromptMessage(coreMessage) {
2155
2180
  if (coreMessage.role === `system`) {
2156
2181
  return coreMessage;
@@ -2347,240 +2372,103 @@ var MessageList = class _MessageList {
2347
2372
  `Encountered unknown role ${role} when converting V5 ModelMessage -> V5 LanguageModelV2Message, input message: ${JSON.stringify(modelMessage, null, 2)}`
2348
2373
  );
2349
2374
  }
2350
- static mastraMessageV3ToV2(v3Msg) {
2351
- const toolInvocationParts = v3Msg.content.parts.filter((p) => AIV5.isToolUIPart(p));
2352
- const hadToolInvocations = v3Msg.content.metadata?.__hadToolInvocations === true;
2353
- let toolInvocations = void 0;
2354
- if (toolInvocationParts.length > 0) {
2355
- const invocations = toolInvocationParts.map((p) => {
2356
- const toolName = getToolName(p);
2357
- if (p.state === `output-available`) {
2358
- return {
2359
- args: p.input,
2360
- result: typeof p.output === "object" && p.output && "value" in p.output ? p.output.value : p.output,
2361
- toolCallId: p.toolCallId,
2362
- toolName,
2363
- state: "result"
2364
- };
2365
- }
2366
- return {
2367
- args: p.input,
2368
- state: "call",
2369
- toolName,
2370
- toolCallId: p.toolCallId
2371
- };
2372
- });
2373
- toolInvocations = invocations;
2374
- } else if (hadToolInvocations && v3Msg.role === "assistant") {
2375
- toolInvocations = [];
2376
- }
2377
- const attachmentUrls = new Set(v3Msg.content.metadata?.__attachmentUrls || []);
2378
- const v2Msg = {
2379
- id: v3Msg.id,
2380
- resourceId: v3Msg.resourceId,
2381
- threadId: v3Msg.threadId,
2382
- createdAt: v3Msg.createdAt,
2383
- role: v3Msg.role,
2384
- content: {
2385
- format: 2,
2386
- parts: v3Msg.content.parts.map((p) => {
2387
- if (AIV5.isToolUIPart(p) || p.type === "dynamic-tool") {
2388
- const toolName = getToolName(p);
2389
- const shared = {
2390
- state: p.state,
2391
- args: p.input,
2392
- toolCallId: p.toolCallId,
2393
- toolName
2394
- };
2395
- if (p.state === `output-available`) {
2396
- return {
2397
- type: "tool-invocation",
2398
- toolInvocation: {
2399
- ...shared,
2400
- state: "result",
2401
- result: typeof p.output === "object" && p.output && "value" in p.output ? p.output.value : p.output
2402
- },
2403
- providerMetadata: p.callProviderMetadata
2404
- };
2405
- }
2406
- return {
2407
- type: "tool-invocation",
2408
- toolInvocation: {
2409
- ...shared,
2410
- state: p.state === `input-available` ? `call` : `partial-call`
2411
- }
2412
- };
2413
- }
2414
- switch (p.type) {
2415
- case "text":
2416
- return p;
2417
- case "file": {
2418
- const fileDataSource = "url" in p && typeof p.url === "string" ? p.url : "data" in p && typeof p.data === "string" ? p.data : void 0;
2419
- if (!fileDataSource) {
2420
- return null;
2421
- }
2422
- if (attachmentUrls.has(fileDataSource)) {
2423
- return null;
2424
- }
2425
- return {
2426
- type: "file",
2427
- mimeType: p.mediaType,
2428
- data: fileDataSource,
2429
- providerMetadata: p.providerMetadata
2430
- };
2431
- }
2432
- case "reasoning":
2433
- if (p.text === "") return null;
2434
- return {
2435
- type: "reasoning",
2436
- reasoning: p.text,
2437
- details: [{ type: "text", text: p.text }],
2438
- providerMetadata: p.providerMetadata
2439
- };
2440
- case "source-url":
2441
- return {
2442
- type: "source",
2443
- source: {
2444
- url: p.url,
2445
- id: p.sourceId,
2446
- sourceType: "url"
2447
- },
2448
- providerMetadata: p.providerMetadata
2449
- };
2450
- case "step-start":
2451
- return p;
2452
- }
2453
- return null;
2454
- }).filter((p) => Boolean(p))
2455
- }
2456
- };
2457
- if (toolInvocations !== void 0) {
2458
- v2Msg.content.toolInvocations = toolInvocations;
2459
- }
2460
- if (v3Msg.content.metadata) {
2461
- const { __originalContent, __originalExperimentalAttachments, __attachmentUrls, ...userMetadata } = v3Msg.content.metadata;
2462
- v2Msg.content.metadata = userMetadata;
2463
- }
2464
- const originalContent = v3Msg.content.metadata?.__originalContent;
2465
- if (originalContent !== void 0) {
2466
- const hasOnlyTextOrStepStart = v2Msg.content.parts.every((p) => p.type === `step-start` || p.type === `text`);
2467
- if (typeof originalContent === `string` || hasOnlyTextOrStepStart) {
2468
- v2Msg.content.content = originalContent;
2469
- }
2470
- }
2471
- const originalAttachments = v3Msg.content.metadata?.__originalExperimentalAttachments;
2472
- if (originalAttachments && Array.isArray(originalAttachments)) {
2473
- v2Msg.content.experimental_attachments = originalAttachments || [];
2474
- }
2475
- const originalContentIsV5 = Array.isArray(v3Msg.content.metadata?.__originalContent) && v3Msg.content.metadata?.__originalContent.some((part) => part.type === "file");
2476
- const urlFileParts = originalContentIsV5 ? [] : v2Msg.content.parts.filter(
2477
- (p) => p.type === "file" && typeof p.data === "string" && (p.data.startsWith("http://") || p.data.startsWith("https://")) && !p.providerMetadata
2478
- // Don't move if it has providerMetadata (needed for roundtrip)
2479
- );
2480
- if (urlFileParts.length > 0) {
2481
- if (!v2Msg.content.experimental_attachments) {
2482
- v2Msg.content.experimental_attachments = [];
2483
- }
2484
- for (const urlPart of urlFileParts) {
2485
- if (urlPart.type === "file") {
2486
- v2Msg.content.experimental_attachments.push({
2487
- url: urlPart.data,
2488
- contentType: urlPart.mimeType
2375
+ /**
2376
+ * Direct conversion from MastraDBMessage to AIV5 UIMessage
2377
+ */
2378
+ static mastraDBMessageToAIV5UIMessage(dbMsg) {
2379
+ const parts = [];
2380
+ const metadata = { ...dbMsg.content.metadata || {} };
2381
+ if (dbMsg.createdAt) metadata.createdAt = dbMsg.createdAt;
2382
+ if (dbMsg.threadId) metadata.threadId = dbMsg.threadId;
2383
+ if (dbMsg.resourceId) metadata.resourceId = dbMsg.resourceId;
2384
+ const hasToolInvocationParts = dbMsg.content.parts?.some((p) => p.type === "tool-invocation");
2385
+ if (dbMsg.content.toolInvocations && !hasToolInvocationParts) {
2386
+ for (const invocation of dbMsg.content.toolInvocations) {
2387
+ if (invocation.state === "result") {
2388
+ parts.push({
2389
+ type: `tool-${invocation.toolName}`,
2390
+ toolCallId: invocation.toolCallId,
2391
+ state: "output-available",
2392
+ input: invocation.args,
2393
+ output: invocation.result
2394
+ });
2395
+ } else {
2396
+ parts.push({
2397
+ type: `tool-${invocation.toolName}`,
2398
+ toolCallId: invocation.toolCallId,
2399
+ state: invocation.state === "call" ? "input-available" : "input-streaming",
2400
+ input: invocation.args
2489
2401
  });
2490
2402
  }
2491
2403
  }
2492
- v2Msg.content.parts = v2Msg.content.parts.filter(
2493
- (p) => !(p.type === "file" && typeof p.data === "string" && (p.data.startsWith("http://") || p.data.startsWith("https://")) && !p.providerMetadata)
2494
- );
2495
- }
2496
- if (toolInvocations && toolInvocations.length > 0) {
2497
- const resultToolInvocations = toolInvocations.filter((t) => t.state === "result");
2498
- if (resultToolInvocations.length > 0) {
2499
- v2Msg.content.toolInvocations = resultToolInvocations;
2500
- }
2501
- }
2502
- if (v3Msg.type) v2Msg.type = v3Msg.type;
2503
- return v2Msg;
2504
- }
2505
- mastraMessageV2ToMastraMessageV3(v2Msg) {
2506
- const parts = [];
2507
- const v3Msg = {
2508
- id: v2Msg.id,
2509
- content: {
2510
- format: 3,
2511
- parts
2512
- },
2513
- role: v2Msg.role,
2514
- createdAt: v2Msg.createdAt instanceof Date ? v2Msg.createdAt : new Date(v2Msg.createdAt),
2515
- resourceId: v2Msg.resourceId,
2516
- threadId: v2Msg.threadId,
2517
- type: v2Msg.type
2518
- };
2519
- if (v2Msg.content.metadata) {
2520
- v3Msg.content.metadata = { ...v2Msg.content.metadata };
2521
2404
  }
2522
- if (v2Msg.content.content !== void 0) {
2523
- v3Msg.content.metadata = {
2524
- ...v3Msg.content.metadata || {},
2525
- __originalContent: v2Msg.content.content
2526
- };
2405
+ const hasReasoningInParts = dbMsg.content.parts?.some((p) => p.type === "reasoning");
2406
+ const hasFileInParts = dbMsg.content.parts?.some((p) => p.type === "file");
2407
+ if (dbMsg.content.reasoning && !hasReasoningInParts) {
2408
+ parts.push({
2409
+ type: "reasoning",
2410
+ text: dbMsg.content.reasoning
2411
+ });
2527
2412
  }
2528
- if (v2Msg.content.experimental_attachments !== void 0) {
2529
- v3Msg.content.metadata = {
2530
- ...v3Msg.content.metadata || {},
2531
- __originalExperimentalAttachments: v2Msg.content.experimental_attachments
2532
- };
2413
+ const attachmentUrls = /* @__PURE__ */ new Set();
2414
+ if (dbMsg.content.experimental_attachments && !hasFileInParts) {
2415
+ for (const attachment of dbMsg.content.experimental_attachments) {
2416
+ attachmentUrls.add(attachment.url);
2417
+ parts.push({
2418
+ type: "file",
2419
+ url: attachment.url,
2420
+ mediaType: attachment.contentType || "unknown"
2421
+ });
2422
+ }
2533
2423
  }
2534
- const fileUrls = /* @__PURE__ */ new Set();
2535
- for (const part of v2Msg.content.parts) {
2536
- switch (part.type) {
2537
- case "step-start":
2538
- case "text":
2539
- parts.push(part);
2540
- break;
2541
- case "tool-invocation":
2542
- if (part.toolInvocation.state === `result`) {
2424
+ let hasNonToolReasoningParts = false;
2425
+ if (dbMsg.content.parts) {
2426
+ for (const part of dbMsg.content.parts) {
2427
+ if (part.type === "tool-invocation" && part.toolInvocation) {
2428
+ const inv = part.toolInvocation;
2429
+ if (inv.state === "result") {
2543
2430
  parts.push({
2544
- type: `tool-${part.toolInvocation.toolName}`,
2545
- toolCallId: part.toolInvocation.toolCallId,
2431
+ type: `tool-${inv.toolName}`,
2432
+ toolCallId: inv.toolCallId,
2433
+ input: inv.args,
2434
+ output: inv.result,
2546
2435
  state: "output-available",
2547
- input: part.toolInvocation.args,
2548
- output: part.toolInvocation.result,
2549
2436
  callProviderMetadata: part.providerMetadata
2550
2437
  });
2551
2438
  } else {
2552
2439
  parts.push({
2553
- type: `tool-${part.toolInvocation.toolName}`,
2554
- toolCallId: part.toolInvocation.toolCallId,
2555
- state: part.toolInvocation.state === `call` ? `input-available` : `input-streaming`,
2556
- input: part.toolInvocation.args
2440
+ type: `tool-${inv.toolName}`,
2441
+ toolCallId: inv.toolCallId,
2442
+ input: inv.args,
2443
+ state: "input-available",
2444
+ callProviderMetadata: part.providerMetadata
2557
2445
  });
2558
2446
  }
2559
- break;
2560
- case "source":
2561
- parts.push({
2562
- type: "source-url",
2563
- sourceId: part.source.id,
2564
- url: part.source.url,
2565
- title: part.source.title,
2566
- providerMetadata: part.source.providerMetadata || part.providerMetadata
2567
- });
2568
- break;
2569
- case "reasoning":
2570
- const text = part.reasoning || (part.details?.reduce((p, c) => {
2571
- if (c.type === `text`) return p + c.text;
2447
+ continue;
2448
+ }
2449
+ if (part.type === "reasoning") {
2450
+ const reasoningPart = part;
2451
+ const text = reasoningPart.text || reasoningPart.reasoning || (reasoningPart.details?.reduce((p, c) => {
2452
+ if (c.type === `text` && c.text) return p + c.text;
2572
2453
  return p;
2573
2454
  }, "") ?? "");
2574
- if (text || part.details?.length) {
2455
+ if (text || reasoningPart.details?.length) {
2575
2456
  parts.push({
2576
2457
  type: "reasoning",
2577
2458
  text: text || "",
2578
2459
  state: "done",
2579
- providerMetadata: part.providerMetadata
2460
+ ...part.providerMetadata && { providerMetadata: part.providerMetadata }
2580
2461
  });
2581
2462
  }
2582
- break;
2583
- case "file": {
2463
+ continue;
2464
+ }
2465
+ if (part.type === "tool-invocation" || part.type.startsWith("tool-")) {
2466
+ continue;
2467
+ }
2468
+ if (part.type === "file") {
2469
+ if (typeof part.data === "string" && attachmentUrls.has(part.data)) {
2470
+ continue;
2471
+ }
2584
2472
  const categorized = typeof part.data === "string" ? categorizeFileData(part.data, part.mimeType) : { type: "raw", mimeType: part.mimeType};
2585
2473
  if (categorized.type === "url" && typeof part.data === "string") {
2586
2474
  parts.push({
@@ -2589,7 +2477,6 @@ var MessageList = class _MessageList {
2589
2477
  mediaType: categorized.mimeType || "image/png",
2590
2478
  providerMetadata: part.providerMetadata
2591
2479
  });
2592
- fileUrls.add(part.data);
2593
2480
  } else {
2594
2481
  let filePartData;
2595
2482
  let extractedMimeType = part.mimeType;
@@ -2621,36 +2508,376 @@ var MessageList = class _MessageList {
2621
2508
  providerMetadata: part.providerMetadata
2622
2509
  });
2623
2510
  }
2624
- fileUrls.add(part.data);
2625
- break;
2511
+ } else if (part.type === "source") {
2512
+ const sourcePart = part;
2513
+ parts.push({
2514
+ type: "source-url",
2515
+ url: sourcePart.source.url,
2516
+ ...part.providerMetadata && { providerMetadata: part.providerMetadata }
2517
+ });
2518
+ } else if (part.type === "text") {
2519
+ parts.push({
2520
+ type: "text",
2521
+ text: part.text,
2522
+ ...part.providerMetadata && { providerMetadata: part.providerMetadata }
2523
+ });
2524
+ hasNonToolReasoningParts = true;
2525
+ } else {
2526
+ parts.push(part);
2527
+ hasNonToolReasoningParts = true;
2626
2528
  }
2627
2529
  }
2628
2530
  }
2629
- if (v2Msg.content.content && !v3Msg.content.parts?.some((p) => p.type === `text`)) {
2630
- v3Msg.content.parts.push({ type: "text", text: v2Msg.content.content });
2531
+ if (dbMsg.content.content && !hasNonToolReasoningParts) {
2532
+ parts.push({ type: "text", text: dbMsg.content.content });
2631
2533
  }
2632
- const attachmentUrls = [];
2633
- if (v2Msg.content.experimental_attachments?.length) {
2634
- for (const attachment of v2Msg.content.experimental_attachments) {
2635
- if (fileUrls.has(attachment.url)) continue;
2636
- attachmentUrls.push(attachment.url);
2637
- parts.push({
2638
- url: attachment.url,
2639
- mediaType: attachment.contentType || "unknown",
2640
- type: "file"
2534
+ return {
2535
+ id: dbMsg.id,
2536
+ role: dbMsg.role,
2537
+ metadata,
2538
+ parts
2539
+ };
2540
+ }
2541
+ /**
2542
+ * Direct conversion from AIV5 UIMessage to MastraDBMessage
2543
+ * Combines logic from aiV5UIMessageToMastraMessageV3 + mastraMessageV3ToV2
2544
+ */
2545
+ static aiV5UIMessageToMastraDBMessage(uiMsg) {
2546
+ const { parts, metadata: rawMetadata } = uiMsg;
2547
+ const metadata = rawMetadata || {};
2548
+ const createdAtValue = metadata.createdAt;
2549
+ const createdAt = createdAtValue ? typeof createdAtValue === "string" ? new Date(createdAtValue) : createdAtValue instanceof Date ? createdAtValue : /* @__PURE__ */ new Date() : /* @__PURE__ */ new Date();
2550
+ const threadId = metadata.threadId;
2551
+ const resourceId = metadata.resourceId;
2552
+ const cleanMetadata = { ...metadata };
2553
+ delete cleanMetadata.createdAt;
2554
+ delete cleanMetadata.threadId;
2555
+ delete cleanMetadata.resourceId;
2556
+ const toolInvocationParts = parts.filter((p) => AIV5.isToolUIPart(p));
2557
+ const reasoningParts = parts.filter((p) => p.type === "reasoning");
2558
+ const fileParts = parts.filter((p) => p.type === "file");
2559
+ const textParts = parts.filter((p) => p.type === "text");
2560
+ let toolInvocations = void 0;
2561
+ if (toolInvocationParts.length > 0) {
2562
+ toolInvocations = toolInvocationParts.map((p) => {
2563
+ const toolName = getToolName(p);
2564
+ if (p.state === "output-available") {
2565
+ return {
2566
+ args: p.input,
2567
+ result: typeof p.output === "object" && p.output && "value" in p.output ? p.output.value : p.output,
2568
+ toolCallId: p.toolCallId,
2569
+ toolName,
2570
+ state: "result"
2571
+ };
2572
+ }
2573
+ return {
2574
+ args: p.input,
2575
+ toolCallId: p.toolCallId,
2576
+ toolName,
2577
+ state: "call"
2578
+ };
2579
+ });
2580
+ }
2581
+ let reasoning = void 0;
2582
+ if (reasoningParts.length > 0) {
2583
+ reasoning = reasoningParts.map((p) => p.text).join("\n");
2584
+ }
2585
+ let experimental_attachments = void 0;
2586
+ if (fileParts.length > 0) {
2587
+ experimental_attachments = fileParts.map((p) => ({
2588
+ url: p.url || "",
2589
+ contentType: p.mediaType
2590
+ }));
2591
+ }
2592
+ let content = void 0;
2593
+ if (textParts.length > 0) {
2594
+ content = textParts.map((p) => p.text).join("");
2595
+ }
2596
+ const v2Parts = parts.map((p) => {
2597
+ if (AIV5.isToolUIPart(p)) {
2598
+ const toolName = getToolName(p);
2599
+ const callProviderMetadata = "callProviderMetadata" in p ? p.callProviderMetadata : void 0;
2600
+ if (p.state === "output-available") {
2601
+ return {
2602
+ type: "tool-invocation",
2603
+ toolInvocation: {
2604
+ toolCallId: p.toolCallId,
2605
+ toolName,
2606
+ args: p.input,
2607
+ result: typeof p.output === "object" && p.output && "value" in p.output ? p.output.value : p.output,
2608
+ state: "result"
2609
+ },
2610
+ providerMetadata: callProviderMetadata
2611
+ };
2612
+ }
2613
+ return {
2614
+ type: "tool-invocation",
2615
+ toolInvocation: {
2616
+ toolCallId: p.toolCallId,
2617
+ toolName,
2618
+ args: p.input,
2619
+ state: "call"
2620
+ },
2621
+ providerMetadata: callProviderMetadata
2622
+ };
2623
+ }
2624
+ if (p.type === "reasoning") {
2625
+ return {
2626
+ type: "reasoning",
2627
+ reasoning: "",
2628
+ details: [
2629
+ {
2630
+ type: "text",
2631
+ text: p.text
2632
+ }
2633
+ ],
2634
+ providerMetadata: p.providerMetadata
2635
+ };
2636
+ }
2637
+ if (p.type === "file") {
2638
+ return {
2639
+ type: "file",
2640
+ mimeType: p.mediaType,
2641
+ data: p.url || "",
2642
+ providerMetadata: p.providerMetadata
2643
+ };
2644
+ }
2645
+ if (p.type === "source-url") {
2646
+ return {
2647
+ type: "source",
2648
+ source: {
2649
+ url: p.url,
2650
+ sourceType: "url",
2651
+ id: p.url,
2652
+ // Use URL as ID
2653
+ providerMetadata: p.providerMetadata
2654
+ },
2655
+ providerMetadata: p.providerMetadata
2656
+ };
2657
+ }
2658
+ if (p.type === "text") {
2659
+ return {
2660
+ type: "text",
2661
+ text: p.text,
2662
+ providerMetadata: p.providerMetadata
2663
+ };
2664
+ }
2665
+ if (p.type === "step-start") {
2666
+ return p;
2667
+ }
2668
+ return null;
2669
+ }).filter((p) => p !== null);
2670
+ return {
2671
+ id: uiMsg.id,
2672
+ role: uiMsg.role,
2673
+ createdAt,
2674
+ threadId,
2675
+ resourceId,
2676
+ content: {
2677
+ format: 2,
2678
+ parts: v2Parts,
2679
+ toolInvocations,
2680
+ reasoning,
2681
+ experimental_attachments,
2682
+ content,
2683
+ metadata: Object.keys(cleanMetadata).length > 0 ? cleanMetadata : void 0
2684
+ }
2685
+ };
2686
+ }
2687
+ /**
2688
+ * Direct conversion from AIV5 ModelMessage to MastraDBMessage
2689
+ * Combines logic from aiV5ModelMessageToMastraMessageV3 + mastraMessageV3ToV2
2690
+ */
2691
+ static aiV5ModelMessageToMastraDBMessage(modelMsg, _messageSource) {
2692
+ const content = Array.isArray(modelMsg.content) ? modelMsg.content : [{ type: "text", text: modelMsg.content }];
2693
+ const v2Parts = [];
2694
+ const toolInvocations = [];
2695
+ const reasoningParts = [];
2696
+ const experimental_attachments = [];
2697
+ const textParts = [];
2698
+ let lastPartWasToolResult = false;
2699
+ for (const part of content) {
2700
+ const providerMetadata = {
2701
+ ...modelMsg.providerMetadata || {},
2702
+ ...part.providerMetadata || {}
2703
+ };
2704
+ const hasProviderMetadata = Object.keys(providerMetadata).length > 0;
2705
+ if (part.type === "text") {
2706
+ const textPart = {
2707
+ type: "text",
2708
+ text: part.text,
2709
+ ...hasProviderMetadata && { experimental_providerMetadata: providerMetadata }
2710
+ };
2711
+ v2Parts.push(textPart);
2712
+ textParts.push({ text: part.text, providerMetadata: hasProviderMetadata ? providerMetadata : void 0 });
2713
+ lastPartWasToolResult = false;
2714
+ } else if (part.type === "tool-call") {
2715
+ const toolCallPart = part;
2716
+ const toolInvocationPart = {
2717
+ type: "tool-invocation",
2718
+ toolInvocation: {
2719
+ toolCallId: toolCallPart.toolCallId,
2720
+ toolName: toolCallPart.toolName,
2721
+ args: toolCallPart.input,
2722
+ state: "call"
2723
+ },
2724
+ ...hasProviderMetadata && { providerMetadata }
2725
+ };
2726
+ v2Parts.push(toolInvocationPart);
2727
+ toolInvocations.push({
2728
+ toolCallId: toolCallPart.toolCallId,
2729
+ toolName: toolCallPart.toolName,
2730
+ args: toolCallPart.input,
2731
+ state: "call"
2641
2732
  });
2733
+ lastPartWasToolResult = false;
2734
+ } else if (part.type === "tool-result") {
2735
+ const toolResultPart = part;
2736
+ const matchingCall = toolInvocations.find((inv) => inv.toolCallId === toolResultPart.toolCallId);
2737
+ const matchingV2Part = v2Parts.find(
2738
+ (p) => p.type === "tool-invocation" && "toolInvocation" in p && p.toolInvocation.toolCallId === toolResultPart.toolCallId
2739
+ );
2740
+ if (matchingCall) {
2741
+ matchingCall.state = "result";
2742
+ matchingCall.result = typeof toolResultPart.output === "object" && toolResultPart.output && "value" in toolResultPart.output ? toolResultPart.output.value : toolResultPart.output;
2743
+ } else {
2744
+ const resultPartWithName = toolResultPart;
2745
+ toolInvocations.push({
2746
+ toolCallId: toolResultPart.toolCallId,
2747
+ toolName: resultPartWithName.toolName || "unknown",
2748
+ args: {},
2749
+ result: typeof toolResultPart.output === "object" && toolResultPart.output && "value" in toolResultPart.output ? toolResultPart.output.value : toolResultPart.output,
2750
+ state: "result"
2751
+ });
2752
+ }
2753
+ if (matchingV2Part && matchingV2Part.type === "tool-invocation") {
2754
+ matchingV2Part.toolInvocation.state = "result";
2755
+ matchingV2Part.toolInvocation.result = typeof toolResultPart.output === "object" && toolResultPart.output && "value" in toolResultPart.output ? toolResultPart.output.value : toolResultPart.output;
2756
+ if (hasProviderMetadata) {
2757
+ matchingV2Part.providerMetadata = providerMetadata;
2758
+ }
2759
+ } else {
2760
+ const resultPartWithName = toolResultPart;
2761
+ const toolInvocationPart = {
2762
+ type: "tool-invocation",
2763
+ toolInvocation: {
2764
+ toolCallId: toolResultPart.toolCallId,
2765
+ toolName: resultPartWithName.toolName || "unknown",
2766
+ args: {},
2767
+ result: typeof toolResultPart.output === "object" && toolResultPart.output && "value" in toolResultPart.output ? toolResultPart.output.value : toolResultPart.output,
2768
+ state: "result"
2769
+ },
2770
+ ...hasProviderMetadata && { providerMetadata }
2771
+ };
2772
+ v2Parts.push(toolInvocationPart);
2773
+ }
2774
+ lastPartWasToolResult = true;
2775
+ } else if (part.type === "reasoning") {
2776
+ const reasoningPart = part;
2777
+ const v2ReasoningPart = {
2778
+ type: "reasoning",
2779
+ reasoning: reasoningPart.text,
2780
+ details: [{ type: "text", text: reasoningPart.text }],
2781
+ ...hasProviderMetadata && { providerMetadata }
2782
+ };
2783
+ v2Parts.push(v2ReasoningPart);
2784
+ reasoningParts.push(reasoningPart.text);
2785
+ lastPartWasToolResult = false;
2786
+ } else if (part.type === "image") {
2787
+ const imagePart = part;
2788
+ let imageData;
2789
+ const mimeType = imagePart.mimeType || "image/jpeg";
2790
+ if ("url" in imagePart && typeof imagePart.url === "string") {
2791
+ imageData = imagePart.url;
2792
+ } else if ("data" in imagePart) {
2793
+ if (typeof imagePart.data === "string") {
2794
+ imageData = imagePart.data.startsWith("data:") || imagePart.data.startsWith("http") ? imagePart.data : `data:${mimeType};base64,${imagePart.data}`;
2795
+ } else {
2796
+ const base64 = Buffer.from(imagePart.data).toString("base64");
2797
+ imageData = `data:${mimeType};base64,${base64}`;
2798
+ }
2799
+ } else {
2800
+ imageData = "";
2801
+ }
2802
+ const imageFilePart = {
2803
+ type: "file",
2804
+ data: imageData,
2805
+ mimeType,
2806
+ ...hasProviderMetadata && { providerMetadata }
2807
+ };
2808
+ v2Parts.push(imageFilePart);
2809
+ experimental_attachments.push({
2810
+ url: imageData,
2811
+ contentType: mimeType
2812
+ });
2813
+ lastPartWasToolResult = false;
2814
+ } else if (part.type === "file") {
2815
+ const filePart = part;
2816
+ const mimeType = filePart.mediaType || "application/octet-stream";
2817
+ let fileData;
2818
+ if ("url" in filePart && typeof filePart.url === "string") {
2819
+ fileData = filePart.url;
2820
+ } else if ("data" in filePart) {
2821
+ if (typeof filePart.data === "string") {
2822
+ fileData = filePart.data.startsWith("data:") || filePart.data.startsWith("http") ? filePart.data : `data:${mimeType};base64,${filePart.data}`;
2823
+ } else {
2824
+ const base64 = Buffer.from(filePart.data).toString("base64");
2825
+ fileData = `data:${mimeType};base64,${base64}`;
2826
+ }
2827
+ } else {
2828
+ fileData = "";
2829
+ }
2830
+ const v2FilePart = {
2831
+ type: "file",
2832
+ data: fileData,
2833
+ mimeType,
2834
+ ...hasProviderMetadata && { providerMetadata }
2835
+ };
2836
+ v2Parts.push(v2FilePart);
2837
+ experimental_attachments.push({
2838
+ url: fileData,
2839
+ contentType: mimeType
2840
+ });
2841
+ lastPartWasToolResult = false;
2642
2842
  }
2643
2843
  }
2644
- if (attachmentUrls.length > 0) {
2645
- v3Msg.content.metadata = {
2646
- ...v3Msg.content.metadata || {},
2647
- __attachmentUrls: attachmentUrls
2648
- };
2844
+ if (modelMsg.role === "assistant" && lastPartWasToolResult && v2Parts.length > 0) {
2845
+ const lastPart = v2Parts[v2Parts.length - 1];
2846
+ if (lastPart && lastPart.type !== "text") {
2847
+ const emptyTextPart = { type: "text", text: "" };
2848
+ v2Parts.push(emptyTextPart);
2849
+ textParts.push({ text: "" });
2850
+ }
2851
+ }
2852
+ let contentString = void 0;
2853
+ if (textParts.length > 0) {
2854
+ contentString = textParts.map((p) => p.text).join("\n");
2649
2855
  }
2650
- return v3Msg;
2856
+ const metadata = {};
2857
+ const id = `id` in modelMsg && typeof modelMsg.id === `string` ? modelMsg.id : `msg-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
2858
+ return {
2859
+ id,
2860
+ role: _MessageList.getRole(modelMsg),
2861
+ createdAt: /* @__PURE__ */ new Date(),
2862
+ content: {
2863
+ format: 2,
2864
+ parts: v2Parts,
2865
+ toolInvocations: toolInvocations.length > 0 ? toolInvocations : void 0,
2866
+ reasoning: reasoningParts.length > 0 ? reasoningParts.join("\n") : void 0,
2867
+ experimental_attachments: experimental_attachments.length > 0 ? experimental_attachments : void 0,
2868
+ content: contentString,
2869
+ metadata
2870
+ }
2871
+ };
2872
+ }
2873
+ aiV4CoreMessagesToAIV5ModelMessages(messages, source) {
2874
+ return this.aiV5UIMessagesToAIV5ModelMessages(
2875
+ messages.map((m) => this.aiV4CoreMessageToMastraDBMessage(m, source)).map((m) => _MessageList.mastraDBMessageToAIV5UIMessage(m))
2876
+ );
2651
2877
  }
2652
- aiV5UIMessagesToAIV5ModelMessages(messages) {
2653
- const preprocessed = this.addStartStepPartsForAIV5(this.sanitizeV5UIMessages(messages));
2878
+ aiV5UIMessagesToAIV5ModelMessages(messages, filterIncompleteToolCalls = false) {
2879
+ const sanitized = this.sanitizeV5UIMessages(messages, filterIncompleteToolCalls);
2880
+ const preprocessed = this.addStartStepPartsForAIV5(sanitized);
2654
2881
  const result = AIV5.convertToModelMessages(preprocessed);
2655
2882
  return result;
2656
2883
  }
@@ -2666,12 +2893,15 @@ var MessageList = class _MessageList {
2666
2893
  }
2667
2894
  return messages;
2668
2895
  }
2669
- sanitizeV5UIMessages(messages) {
2896
+ sanitizeV5UIMessages(messages, filterIncompleteToolCalls = false) {
2670
2897
  const msgs = messages.map((m) => {
2671
2898
  if (m.parts.length === 0) return false;
2672
2899
  const safeParts = m.parts.filter((p) => {
2673
2900
  if (!AIV5.isToolUIPart(p)) return true;
2674
- return p.state === "output-available" || p.state === "output-error";
2901
+ if (filterIncompleteToolCalls) {
2902
+ return p.state === "output-available" || p.state === "output-error";
2903
+ }
2904
+ return p.state !== "input-streaming";
2675
2905
  });
2676
2906
  if (!safeParts.length) return false;
2677
2907
  const sanitized = {
@@ -2690,242 +2920,6 @@ var MessageList = class _MessageList {
2690
2920
  }).filter((m) => Boolean(m));
2691
2921
  return msgs;
2692
2922
  }
2693
- static mastraMessageV3ToAIV5UIMessage(m) {
2694
- const metadata = {
2695
- ...m.content.metadata || {}
2696
- };
2697
- if (m.createdAt) metadata.createdAt = m.createdAt;
2698
- if (m.threadId) metadata.threadId = m.threadId;
2699
- if (m.resourceId) metadata.resourceId = m.resourceId;
2700
- const filteredParts = m.content.parts;
2701
- return {
2702
- id: m.id,
2703
- role: m.role,
2704
- metadata,
2705
- parts: filteredParts
2706
- };
2707
- }
2708
- aiV5ModelMessagesToAIV4CoreMessages(messages, messageSource) {
2709
- const v3 = messages.map((msg) => this.aiV5ModelMessageToMastraMessageV3(msg, messageSource));
2710
- const v2 = v3.map(_MessageList.mastraMessageV3ToV2);
2711
- const ui = v2.map(_MessageList.mastraMessageV2ToAIV4UIMessage);
2712
- const core = this.aiV4UIMessagesToAIV4CoreMessages(ui);
2713
- return core;
2714
- }
2715
- aiV4CoreMessagesToAIV5ModelMessages(messages, source) {
2716
- return this.aiV5UIMessagesToAIV5ModelMessages(
2717
- messages.map((m) => this.aiV4CoreMessageToMastraMessageV2(m, source)).map((m) => this.mastraMessageV2ToMastraMessageV3(m)).map((m) => _MessageList.mastraMessageV3ToAIV5UIMessage(m))
2718
- );
2719
- }
2720
- aiV5UIMessageToMastraMessageV3(message, messageSource) {
2721
- const content = {
2722
- format: 3,
2723
- parts: message.parts,
2724
- metadata: message.metadata
2725
- };
2726
- const metadata = message.metadata;
2727
- const createdAt = (() => {
2728
- if ("createdAt" in message && message.createdAt instanceof Date) {
2729
- return message.createdAt;
2730
- }
2731
- if (metadata && "createdAt" in metadata && metadata.createdAt instanceof Date) {
2732
- return metadata.createdAt;
2733
- }
2734
- return void 0;
2735
- })();
2736
- if ("metadata" in message && message.metadata) {
2737
- content.metadata = { ...message.metadata };
2738
- }
2739
- return {
2740
- id: message.id || this.newMessageId(),
2741
- role: _MessageList.getRole(message),
2742
- createdAt: this.generateCreatedAt(messageSource, createdAt),
2743
- threadId: this.memoryInfo?.threadId,
2744
- resourceId: this.memoryInfo?.resourceId,
2745
- content
2746
- };
2747
- }
2748
- aiV5ModelMessageToMastraMessageV3(coreMessage, messageSource) {
2749
- const id = `id` in coreMessage && typeof coreMessage.id === `string` ? coreMessage.id : this.newMessageId();
2750
- const parts = [];
2751
- if (typeof coreMessage.content === "string") {
2752
- parts.push({
2753
- type: "text",
2754
- text: coreMessage.content,
2755
- // Preserve providerOptions from ModelMessage level (e.g., system messages with cacheControl)
2756
- ..."providerOptions" in coreMessage && coreMessage.providerOptions ? { providerMetadata: coreMessage.providerOptions } : {}
2757
- });
2758
- } else if (Array.isArray(coreMessage.content)) {
2759
- for (const part of coreMessage.content) {
2760
- switch (part.type) {
2761
- case "text":
2762
- const prevPart = parts.at(-1);
2763
- if (coreMessage.role === "assistant" && prevPart && AIV5.isToolUIPart(prevPart) && prevPart.state === "output-available") {
2764
- parts.push({
2765
- type: "step-start"
2766
- });
2767
- }
2768
- const mergedProviderMetadataV3 = {
2769
- ..."providerOptions" in coreMessage && coreMessage.providerOptions ? coreMessage.providerOptions : {},
2770
- ...part.providerOptions || {}
2771
- };
2772
- parts.push({
2773
- type: "text",
2774
- text: part.text,
2775
- ...Object.keys(mergedProviderMetadataV3).length > 0 ? { providerMetadata: mergedProviderMetadataV3 } : {}
2776
- });
2777
- break;
2778
- case "tool-call":
2779
- parts.push({
2780
- type: `tool-${part.toolName}`,
2781
- state: "input-available",
2782
- toolCallId: part.toolCallId,
2783
- input: part.input
2784
- });
2785
- break;
2786
- case "tool-result":
2787
- parts.push({
2788
- type: `tool-${part.toolName}`,
2789
- state: "output-available",
2790
- toolCallId: part.toolCallId,
2791
- output: typeof part.output === "string" ? { type: "text", value: part.output } : part.output ?? { type: "text", value: "" },
2792
- input: {},
2793
- callProviderMetadata: part.providerOptions
2794
- });
2795
- break;
2796
- case "reasoning":
2797
- parts.push({
2798
- type: "reasoning",
2799
- text: part.text,
2800
- providerMetadata: part.providerOptions
2801
- });
2802
- break;
2803
- case "image": {
2804
- let imageData;
2805
- let extractedMimeType = part.mediaType;
2806
- const imageStr = imageContentToDataUri(part.image, extractedMimeType || "image/png");
2807
- const parsed = parseDataUri(imageStr);
2808
- if (parsed.isDataUri) {
2809
- imageData = parsed.base64Content;
2810
- if (!extractedMimeType && parsed.mimeType) {
2811
- extractedMimeType = parsed.mimeType;
2812
- }
2813
- } else if (imageStr.startsWith("http://") || imageStr.startsWith("https://")) {
2814
- parts.push({
2815
- type: "file",
2816
- url: imageStr,
2817
- mediaType: part.mediaType || "image/jpeg",
2818
- // Default to image/jpeg for URLs
2819
- providerMetadata: part.providerOptions
2820
- });
2821
- break;
2822
- } else {
2823
- imageData = imageStr;
2824
- }
2825
- const finalMimeType = extractedMimeType || "image/jpeg";
2826
- const dataUri = imageData.startsWith("data:") ? imageData : createDataUri(imageData, finalMimeType);
2827
- parts.push({
2828
- type: "file",
2829
- url: dataUri,
2830
- mediaType: finalMimeType,
2831
- providerMetadata: part.providerOptions
2832
- });
2833
- break;
2834
- }
2835
- case "file": {
2836
- if (part.data instanceof URL) {
2837
- const urlStr = part.data.toString();
2838
- let extractedMimeType = part.mediaType;
2839
- const parsed = parseDataUri(urlStr);
2840
- if (parsed.isDataUri) {
2841
- if (!extractedMimeType && parsed.mimeType) {
2842
- extractedMimeType = parsed.mimeType;
2843
- }
2844
- if (parsed.base64Content !== urlStr) {
2845
- const dataUri = createDataUri(parsed.base64Content, extractedMimeType || "image/png");
2846
- parts.push({
2847
- type: "file",
2848
- url: dataUri,
2849
- mediaType: extractedMimeType || "image/png",
2850
- providerMetadata: part.providerOptions
2851
- });
2852
- } else {
2853
- parts.push({
2854
- type: "file",
2855
- url: urlStr,
2856
- mediaType: part.mediaType || "image/png",
2857
- providerMetadata: part.providerOptions
2858
- });
2859
- }
2860
- } else {
2861
- parts.push({
2862
- type: "file",
2863
- url: urlStr,
2864
- mediaType: part.mediaType || "application/octet-stream",
2865
- providerMetadata: part.providerOptions
2866
- });
2867
- }
2868
- } else if (typeof part.data === "string") {
2869
- const categorized = categorizeFileData(part.data, part.mediaType);
2870
- if (categorized.type === "url" || categorized.type === "dataUri") {
2871
- parts.push({
2872
- type: "file",
2873
- url: part.data,
2874
- mediaType: categorized.mimeType || "application/octet-stream",
2875
- providerMetadata: part.providerOptions
2876
- });
2877
- } else {
2878
- try {
2879
- const base64Data = convertDataContentToBase64String(part.data);
2880
- const dataUri = createDataUri(base64Data, categorized.mimeType || "image/png");
2881
- parts.push({
2882
- type: "file",
2883
- url: dataUri,
2884
- mediaType: categorized.mimeType || "image/png",
2885
- providerMetadata: part.providerOptions
2886
- });
2887
- } catch (error) {
2888
- console.error(`Failed to convert binary data to base64 in CoreMessage file part: ${error}`, error);
2889
- }
2890
- }
2891
- } else {
2892
- try {
2893
- const base64Data = convertDataContentToBase64String(part.data);
2894
- const dataUri = createDataUri(base64Data, part.mediaType || "image/png");
2895
- parts.push({
2896
- type: "file",
2897
- url: dataUri,
2898
- mediaType: part.mediaType || "image/png",
2899
- providerMetadata: part.providerOptions
2900
- });
2901
- } catch (error) {
2902
- console.error(`Failed to convert binary data to base64 in CoreMessage file part: ${error}`, error);
2903
- }
2904
- }
2905
- break;
2906
- }
2907
- }
2908
- }
2909
- }
2910
- const content = {
2911
- format: 3,
2912
- parts
2913
- };
2914
- if (coreMessage.content) {
2915
- content.metadata = {
2916
- ...content.metadata || {},
2917
- __originalContent: coreMessage.content
2918
- };
2919
- }
2920
- return {
2921
- id,
2922
- role: _MessageList.getRole(coreMessage),
2923
- createdAt: this.generateCreatedAt(messageSource),
2924
- threadId: this.memoryInfo?.threadId,
2925
- resourceId: this.memoryInfo?.resourceId,
2926
- content
2927
- };
2928
- }
2929
2923
  static hasAIV5UIMessageCharacteristics(msg) {
2930
2924
  if (`toolInvocations` in msg || `reasoning` in msg || `experimental_attachments` in msg || `data` in msg || `annotations` in msg)
2931
2925
  return false;
@@ -3017,34 +3011,6 @@ var MessageList = class _MessageList {
3017
3011
  }
3018
3012
  };
3019
3013
 
3020
- // src/agent/message-list/utils/convert-messages.ts
3021
- var MessageConverter = class {
3022
- messageList;
3023
- constructor(messages) {
3024
- this.messageList = new MessageList();
3025
- this.messageList.add(messages, "memory");
3026
- }
3027
- to(format) {
3028
- switch (format) {
3029
- case "Mastra.V2":
3030
- return this.messageList.get.all.v2();
3031
- case "AIV4.UI":
3032
- return this.messageList.get.all.aiV4.ui();
3033
- case "AIV4.Core":
3034
- return this.messageList.get.all.aiV4.core();
3035
- case "AIV5.UI":
3036
- return this.messageList.get.all.aiV5.ui();
3037
- case "AIV5.Model":
3038
- return this.messageList.get.all.aiV5.model();
3039
- default:
3040
- throw new Error(`Unsupported output format: ${format}`);
3041
- }
3042
- }
3043
- };
3044
- function convertMessages(messages) {
3045
- return new MessageConverter(messages);
3046
- }
3047
-
3048
3014
  export { DefaultGeneratedFile, DefaultGeneratedFileWithType, MessageList, convertMessages };
3049
- //# sourceMappingURL=chunk-E3PG7G6E.js.map
3050
- //# sourceMappingURL=chunk-E3PG7G6E.js.map
3015
+ //# sourceMappingURL=chunk-JV2KH24V.js.map
3016
+ //# sourceMappingURL=chunk-JV2KH24V.js.map