@mastra/core 1.0.0-beta.4 → 1.0.0-beta.6

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 (464) hide show
  1. package/CHANGELOG.md +598 -0
  2. package/dist/agent/agent-legacy.d.ts +17 -20
  3. package/dist/agent/agent-legacy.d.ts.map +1 -1
  4. package/dist/agent/agent-types.test-d.d.ts +2 -0
  5. package/dist/agent/agent-types.test-d.d.ts.map +1 -0
  6. package/dist/agent/agent.d.ts +6 -6
  7. package/dist/agent/agent.d.ts.map +1 -1
  8. package/dist/agent/agent.types.d.ts +3 -1
  9. package/dist/agent/agent.types.d.ts.map +1 -1
  10. package/dist/agent/index.cjs +9 -9
  11. package/dist/agent/index.js +2 -2
  12. package/dist/agent/message-list/index.cjs +3 -3
  13. package/dist/agent/message-list/index.d.ts +49 -0
  14. package/dist/agent/message-list/index.d.ts.map +1 -1
  15. package/dist/agent/message-list/index.js +1 -1
  16. package/dist/agent/message-list/prompt/attachments-to-parts.d.ts.map +1 -1
  17. package/dist/agent/save-queue/index.d.ts +3 -1
  18. package/dist/agent/save-queue/index.d.ts.map +1 -1
  19. package/dist/agent/test-utils.d.ts +37 -0
  20. package/dist/agent/test-utils.d.ts.map +1 -1
  21. package/dist/agent/trip-wire.d.ts.map +1 -1
  22. package/dist/agent/types.d.ts +20 -6
  23. package/dist/agent/types.d.ts.map +1 -1
  24. package/dist/agent/utils.d.ts.map +1 -1
  25. package/dist/agent/workflows/prepare-stream/index.d.ts +10 -10
  26. package/dist/agent/workflows/prepare-stream/index.d.ts.map +1 -1
  27. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts +1 -3
  28. package/dist/agent/workflows/prepare-stream/map-results-step.d.ts.map +1 -1
  29. package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts +4 -4
  30. package/dist/agent/workflows/prepare-stream/prepare-memory-step.d.ts.map +1 -1
  31. package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts +4 -4
  32. package/dist/agent/workflows/prepare-stream/prepare-tools-step.d.ts.map +1 -1
  33. package/dist/agent/workflows/prepare-stream/schema.d.ts +12 -13
  34. package/dist/agent/workflows/prepare-stream/schema.d.ts.map +1 -1
  35. package/dist/agent/workflows/prepare-stream/stream-step.d.ts +8 -1
  36. package/dist/agent/workflows/prepare-stream/stream-step.d.ts.map +1 -1
  37. package/dist/base.cjs +2 -2
  38. package/dist/base.js +1 -1
  39. package/dist/bundler/index.cjs +2 -2
  40. package/dist/bundler/index.js +1 -1
  41. package/dist/cache/index.cjs +3 -3
  42. package/dist/cache/index.js +1 -1
  43. package/dist/{chunk-OJNJA5ZI.js → chunk-3CKZSDTQ.js} +3 -3
  44. package/dist/{chunk-OJNJA5ZI.js.map → chunk-3CKZSDTQ.js.map} +1 -1
  45. package/dist/{chunk-TQTAMPSC.js → chunk-3N3QE4ZK.js} +3 -3
  46. package/dist/chunk-3N3QE4ZK.js.map +1 -0
  47. package/dist/{chunk-WQSGX6XA.cjs → chunk-3TKNXJES.cjs} +56 -15
  48. package/dist/chunk-3TKNXJES.cjs.map +1 -0
  49. package/dist/{chunk-XXBWX7DT.js → chunk-45NA5ZD3.js} +11673 -9468
  50. package/dist/chunk-45NA5ZD3.js.map +1 -0
  51. package/dist/{chunk-KEURQGCQ.js → chunk-4F6RAJFU.js} +105 -21
  52. package/dist/chunk-4F6RAJFU.js.map +1 -0
  53. package/dist/{chunk-ISMGVGUM.cjs → chunk-4JKEUSCC.cjs} +4 -4
  54. package/dist/{chunk-ISMGVGUM.cjs.map → chunk-4JKEUSCC.cjs.map} +1 -1
  55. package/dist/{chunk-CYVNOIXS.cjs → chunk-4KUOSXJ7.cjs} +30 -16
  56. package/dist/chunk-4KUOSXJ7.cjs.map +1 -0
  57. package/dist/{chunk-CBAB7GOD.cjs → chunk-6BJ7XHRH.cjs} +2 -2
  58. package/dist/{chunk-CBAB7GOD.cjs.map → chunk-6BJ7XHRH.cjs.map} +1 -1
  59. package/dist/{chunk-3RW5EMSB.js → chunk-6GOLI2EY.js} +22 -9
  60. package/dist/chunk-6GOLI2EY.js.map +1 -0
  61. package/dist/{chunk-4RXG622P.cjs → chunk-6J4NRNT2.cjs} +600 -37
  62. package/dist/chunk-6J4NRNT2.cjs.map +1 -0
  63. package/dist/{chunk-J7O6WENZ.cjs → chunk-6TBWJV35.js} +5 -5
  64. package/dist/chunk-6TBWJV35.js.map +1 -0
  65. package/dist/chunk-6XCINXZ7.cjs +194 -0
  66. package/dist/chunk-6XCINXZ7.cjs.map +1 -0
  67. package/dist/{chunk-MDKPL2R2.js → chunk-7ZADRRDW.js} +5 -4
  68. package/dist/chunk-7ZADRRDW.js.map +1 -0
  69. package/dist/{chunk-DSNPWVIG.cjs → chunk-AF74UXR5.cjs} +4 -3
  70. package/dist/chunk-AF74UXR5.cjs.map +1 -0
  71. package/dist/{chunk-W3DD3XP5.js → chunk-APMPOYPI.js} +334 -138
  72. package/dist/chunk-APMPOYPI.js.map +1 -0
  73. package/dist/{chunk-LRSB62Z6.cjs → chunk-AQAIS7FH.cjs} +15 -8
  74. package/dist/chunk-AQAIS7FH.cjs.map +1 -0
  75. package/dist/chunk-BWYU7D33.js +192 -0
  76. package/dist/chunk-BWYU7D33.js.map +1 -0
  77. package/dist/{chunk-KEXGB7FK.cjs → chunk-DGV2FWB4.cjs} +7 -7
  78. package/dist/{chunk-KEXGB7FK.cjs.map → chunk-DGV2FWB4.cjs.map} +1 -1
  79. package/dist/{chunk-WTYNK7Q4.js → chunk-DXMSVGJ6.js} +599 -36
  80. package/dist/chunk-DXMSVGJ6.js.map +1 -0
  81. package/dist/{chunk-Y63IFHEZ.cjs → chunk-EOPEDKLG.cjs} +4 -4
  82. package/dist/chunk-EOPEDKLG.cjs.map +1 -0
  83. package/dist/{chunk-NZAXAFI3.js → chunk-F2GAJSBI.js} +3 -3
  84. package/dist/{chunk-NZAXAFI3.js.map → chunk-F2GAJSBI.js.map} +1 -1
  85. package/dist/{chunk-KIZIOFZC.js → chunk-FYP3AT6W.js} +17 -3
  86. package/dist/chunk-FYP3AT6W.js.map +1 -0
  87. package/dist/{chunk-ZCVTH3CH.cjs → chunk-HNHZGFZY.cjs} +5 -4
  88. package/dist/chunk-HNHZGFZY.cjs.map +1 -0
  89. package/dist/{chunk-BMAFVZ2D.cjs → chunk-IWTMMUQY.cjs} +4 -4
  90. package/dist/{chunk-BMAFVZ2D.cjs.map → chunk-IWTMMUQY.cjs.map} +1 -1
  91. package/dist/{chunk-D6EDHNGV.js → chunk-KZLP6TPJ.js} +69 -28
  92. package/dist/chunk-KZLP6TPJ.js.map +1 -0
  93. package/dist/{chunk-5WXEYDFI.cjs → chunk-LDWBLENZ.cjs} +51 -38
  94. package/dist/chunk-LDWBLENZ.cjs.map +1 -0
  95. package/dist/{chunk-HGNRQ3OG.js → chunk-LEZIKVRQ.js} +15 -8
  96. package/dist/chunk-LEZIKVRQ.js.map +1 -0
  97. package/dist/{chunk-S6URFGCZ.js → chunk-LSHPJWM5.js} +3 -3
  98. package/dist/{chunk-S6URFGCZ.js.map → chunk-LSHPJWM5.js.map} +1 -1
  99. package/dist/{chunk-E7K4FTLN.cjs → chunk-NHNXIYDG.cjs} +18 -2
  100. package/dist/chunk-NHNXIYDG.cjs.map +1 -0
  101. package/dist/{chunk-U7VECK2G.js → chunk-NIUEWICQ.js} +145 -19
  102. package/dist/chunk-NIUEWICQ.js.map +1 -0
  103. package/dist/{chunk-2NVBZKZI.cjs → chunk-NN3NOFRU.cjs} +11744 -9526
  104. package/dist/chunk-NN3NOFRU.cjs.map +1 -0
  105. package/dist/{chunk-KJ2SW6VA.js → chunk-NRUZYMHE.js} +4 -3
  106. package/dist/chunk-NRUZYMHE.js.map +1 -0
  107. package/dist/{chunk-IWB65P37.cjs → chunk-OIMB2SNZ.cjs} +155 -29
  108. package/dist/chunk-OIMB2SNZ.cjs.map +1 -0
  109. package/dist/{chunk-IWQDBVJK.js → chunk-OPALPWAM.js} +47 -8
  110. package/dist/chunk-OPALPWAM.js.map +1 -0
  111. package/dist/{chunk-X7JMA3IY.js → chunk-PSCMWPLC.js} +2 -2
  112. package/dist/{chunk-X7JMA3IY.js.map → chunk-PSCMWPLC.js.map} +1 -1
  113. package/dist/{chunk-S6OEQHEI.cjs → chunk-QGWNF2QJ.cjs} +59 -50
  114. package/dist/chunk-QGWNF2QJ.cjs.map +1 -0
  115. package/dist/{chunk-VZC4BWWH.cjs → chunk-RHTV5C5D.cjs} +19 -19
  116. package/dist/chunk-RHTV5C5D.cjs.map +1 -0
  117. package/dist/{chunk-HBJPYQRN.cjs → chunk-RTROJFEU.cjs} +78 -41
  118. package/dist/chunk-RTROJFEU.cjs.map +1 -0
  119. package/dist/chunk-S5FPOCQF.cjs +518 -0
  120. package/dist/chunk-S5FPOCQF.cjs.map +1 -0
  121. package/dist/{chunk-O6NA3Z43.cjs → chunk-SQAX4OW6.cjs} +167 -12
  122. package/dist/chunk-SQAX4OW6.cjs.map +1 -0
  123. package/dist/{chunk-IHJDOC3A.js → chunk-T2UNO766.js} +16 -7
  124. package/dist/chunk-T2UNO766.js.map +1 -0
  125. package/dist/{chunk-FVNT7VTO.js → chunk-TARWUQG6.js} +243 -166
  126. package/dist/chunk-TARWUQG6.js.map +1 -0
  127. package/dist/{chunk-76K3IYWM.js → chunk-TS7B26US.js} +3 -3
  128. package/dist/{chunk-76K3IYWM.js.map → chunk-TS7B26US.js.map} +1 -1
  129. package/dist/{chunk-Y6ROD72V.cjs → chunk-UIGRFDO6.cjs} +4 -4
  130. package/dist/{chunk-Y6ROD72V.cjs.map → chunk-UIGRFDO6.cjs.map} +1 -1
  131. package/dist/{chunk-GRBGQ2GE.js → chunk-UVHSM2GU.cjs} +9 -3
  132. package/dist/chunk-UVHSM2GU.cjs.map +1 -0
  133. package/dist/{chunk-VSM3NLUX.cjs → chunk-VRFSEZBA.cjs} +334 -138
  134. package/dist/chunk-VRFSEZBA.cjs.map +1 -0
  135. package/dist/{chunk-JXESKY4A.js → chunk-WDRA4WKG.js} +163 -9
  136. package/dist/chunk-WDRA4WKG.js.map +1 -0
  137. package/dist/{chunk-RXDJL5QT.js → chunk-WMAMOYRR.js} +14 -14
  138. package/dist/chunk-WMAMOYRR.js.map +1 -0
  139. package/dist/{chunk-2OTDXX73.js → chunk-XY337TTF.js} +24 -10
  140. package/dist/chunk-XY337TTF.js.map +1 -0
  141. package/dist/{chunk-4IKJAKCD.cjs → chunk-Y24HI6ND.cjs} +108 -23
  142. package/dist/chunk-Y24HI6ND.cjs.map +1 -0
  143. package/dist/deployer/index.cjs +2 -2
  144. package/dist/deployer/index.js +1 -1
  145. package/dist/di/index.cjs +10 -2
  146. package/dist/di/index.d.ts +1 -1
  147. package/dist/di/index.d.ts.map +1 -1
  148. package/dist/di/index.js +1 -1
  149. package/dist/evals/base.d.ts +10 -2
  150. package/dist/evals/base.d.ts.map +1 -1
  151. package/dist/evals/base.test-utils.d.ts +25 -25
  152. package/dist/evals/index.cjs +9 -9
  153. package/dist/evals/index.js +2 -2
  154. package/dist/evals/scoreTraces/index.cjs +5 -5
  155. package/dist/evals/scoreTraces/index.js +2 -2
  156. package/dist/evals/types.d.ts +8 -8
  157. package/dist/index.cjs +2 -2
  158. package/dist/index.js +1 -1
  159. package/dist/integration/index.cjs +2 -2
  160. package/dist/integration/index.js +1 -1
  161. package/dist/llm/index.cjs +18 -14
  162. package/dist/llm/index.d.ts +2 -1
  163. package/dist/llm/index.d.ts.map +1 -1
  164. package/dist/llm/index.js +5 -5
  165. package/dist/llm/model/aisdk/v5/model.d.ts.map +1 -1
  166. package/dist/llm/model/gateway-resolver.d.ts.map +1 -1
  167. package/dist/llm/model/gateways/azure.d.ts +36 -0
  168. package/dist/llm/model/gateways/azure.d.ts.map +1 -0
  169. package/dist/llm/model/gateways/base.d.ts +3 -6
  170. package/dist/llm/model/gateways/base.d.ts.map +1 -1
  171. package/dist/llm/model/gateways/index.d.ts +4 -1
  172. package/dist/llm/model/gateways/index.d.ts.map +1 -1
  173. package/dist/llm/model/gateways/models-dev.d.ts +2 -2
  174. package/dist/llm/model/gateways/models-dev.d.ts.map +1 -1
  175. package/dist/llm/model/gateways/netlify.d.ts +2 -2
  176. package/dist/llm/model/gateways/netlify.d.ts.map +1 -1
  177. package/dist/llm/model/model.d.ts.map +1 -1
  178. package/dist/llm/model/model.loop.d.ts +1 -1
  179. package/dist/llm/model/model.loop.d.ts.map +1 -1
  180. package/dist/llm/model/provider-registry.d.ts.map +1 -1
  181. package/dist/llm/model/provider-types.generated.d.ts +245 -12
  182. package/dist/llm/model/registry-generator.d.ts +12 -0
  183. package/dist/llm/model/registry-generator.d.ts.map +1 -1
  184. package/dist/llm/model/router.d.ts.map +1 -1
  185. package/dist/logger/constants.d.ts +1 -0
  186. package/dist/logger/constants.d.ts.map +1 -1
  187. package/dist/logger/index.cjs +11 -11
  188. package/dist/logger/index.js +2 -2
  189. package/dist/logger/transport.d.ts +1 -1
  190. package/dist/logger/transport.d.ts.map +1 -1
  191. package/dist/loop/index.cjs +2 -2
  192. package/dist/loop/index.js +1 -1
  193. package/dist/loop/loop.d.ts.map +1 -1
  194. package/dist/loop/network/index.d.ts +2 -2
  195. package/dist/loop/network/index.d.ts.map +1 -1
  196. package/dist/loop/test-utils/fullStream.d.ts.map +1 -1
  197. package/dist/loop/test-utils/generateText.d.ts.map +1 -1
  198. package/dist/loop/test-utils/resultObject.d.ts.map +1 -1
  199. package/dist/loop/test-utils/streamObject.d.ts.map +1 -1
  200. package/dist/loop/types.d.ts +13 -2
  201. package/dist/loop/types.d.ts.map +1 -1
  202. package/dist/loop/workflows/agentic-execution/index.d.ts +96 -96
  203. package/dist/loop/workflows/agentic-execution/index.d.ts.map +1 -1
  204. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts +65 -65
  205. package/dist/loop/workflows/agentic-execution/llm-execution-step.d.ts.map +1 -1
  206. package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts +32 -32
  207. package/dist/loop/workflows/agentic-execution/llm-mapping-step.d.ts.map +1 -1
  208. package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts +1 -1
  209. package/dist/loop/workflows/agentic-execution/tool-call-step.d.ts.map +1 -1
  210. package/dist/loop/workflows/agentic-loop/index.d.ts +97 -97
  211. package/dist/loop/workflows/agentic-loop/index.d.ts.map +1 -1
  212. package/dist/loop/workflows/schema.d.ts +32 -32
  213. package/dist/loop/workflows/stream.d.ts +1 -1
  214. package/dist/loop/workflows/stream.d.ts.map +1 -1
  215. package/dist/mastra/index.cjs +2 -2
  216. package/dist/mastra/index.d.ts +64 -9
  217. package/dist/mastra/index.d.ts.map +1 -1
  218. package/dist/mastra/index.js +1 -1
  219. package/dist/mcp/index.cjs +4 -4
  220. package/dist/mcp/index.cjs.map +1 -1
  221. package/dist/mcp/index.d.ts +4 -4
  222. package/dist/mcp/index.d.ts.map +1 -1
  223. package/dist/mcp/index.js +2 -2
  224. package/dist/mcp/index.js.map +1 -1
  225. package/dist/mcp/types.d.ts +2 -2
  226. package/dist/mcp/types.d.ts.map +1 -1
  227. package/dist/memory/index.cjs +21 -327
  228. package/dist/memory/index.cjs.map +1 -1
  229. package/dist/memory/index.js +1 -327
  230. package/dist/memory/index.js.map +1 -1
  231. package/dist/memory/memory.d.ts +22 -18
  232. package/dist/memory/memory.d.ts.map +1 -1
  233. package/dist/memory/mock.d.ts +15 -14
  234. package/dist/memory/mock.d.ts.map +1 -1
  235. package/dist/memory/types.d.ts +69 -11
  236. package/dist/memory/types.d.ts.map +1 -1
  237. package/dist/models-dev-F6MTIYTO.js +3 -0
  238. package/dist/{models-dev-6PRLJKVZ.js.map → models-dev-F6MTIYTO.js.map} +1 -1
  239. package/dist/models-dev-XIVR5EJV.cjs +12 -0
  240. package/dist/{models-dev-WHMI5G6Y.cjs.map → models-dev-XIVR5EJV.cjs.map} +1 -1
  241. package/dist/netlify-C2YBIK7A.js +3 -0
  242. package/dist/{netlify-EBQ6YUC6.js.map → netlify-C2YBIK7A.js.map} +1 -1
  243. package/dist/netlify-XWROOTP4.cjs +12 -0
  244. package/dist/{netlify-46I3SNNV.cjs.map → netlify-XWROOTP4.cjs.map} +1 -1
  245. package/dist/observability/index.cjs +16 -8
  246. package/dist/observability/index.js +1 -1
  247. package/dist/observability/types/tracing.d.ts +165 -3
  248. package/dist/observability/types/tracing.d.ts.map +1 -1
  249. package/dist/observability/utils.d.ts +47 -1
  250. package/dist/observability/utils.d.ts.map +1 -1
  251. package/dist/processors/index.cjs +35 -11
  252. package/dist/processors/index.d.ts +101 -23
  253. package/dist/processors/index.d.ts.map +1 -1
  254. package/dist/processors/index.js +1 -1
  255. package/dist/processors/memory/index.d.ts +7 -0
  256. package/dist/processors/memory/index.d.ts.map +1 -0
  257. package/dist/processors/memory/message-history.d.ts +43 -0
  258. package/dist/processors/memory/message-history.d.ts.map +1 -0
  259. package/dist/processors/memory/semantic-recall.d.ts +152 -0
  260. package/dist/processors/memory/semantic-recall.d.ts.map +1 -0
  261. package/dist/processors/memory/working-memory.d.ts +65 -0
  262. package/dist/processors/memory/working-memory.d.ts.map +1 -0
  263. package/dist/processors/processors/batch-parts.d.ts +1 -1
  264. package/dist/processors/processors/batch-parts.d.ts.map +1 -1
  265. package/dist/processors/processors/index.d.ts +2 -1
  266. package/dist/processors/processors/index.d.ts.map +1 -1
  267. package/dist/processors/processors/language-detector.d.ts +15 -1
  268. package/dist/processors/processors/language-detector.d.ts.map +1 -1
  269. package/dist/processors/processors/moderation.d.ts +15 -1
  270. package/dist/processors/processors/moderation.d.ts.map +1 -1
  271. package/dist/processors/processors/pii-detector.d.ts +15 -1
  272. package/dist/processors/processors/pii-detector.d.ts.map +1 -1
  273. package/dist/processors/processors/prompt-injection-detector.d.ts +15 -1
  274. package/dist/processors/processors/prompt-injection-detector.d.ts.map +1 -1
  275. package/dist/processors/processors/structured-output.d.ts +3 -2
  276. package/dist/processors/processors/structured-output.d.ts.map +1 -1
  277. package/dist/processors/processors/system-prompt-scrubber.d.ts +1 -1
  278. package/dist/processors/processors/system-prompt-scrubber.d.ts.map +1 -1
  279. package/dist/processors/processors/token-limiter.d.ts +22 -12
  280. package/dist/processors/processors/token-limiter.d.ts.map +1 -1
  281. package/dist/processors/processors/tool-call-filter.d.ts +28 -0
  282. package/dist/processors/processors/tool-call-filter.d.ts.map +1 -0
  283. package/dist/processors/processors/unicode-normalizer.d.ts +1 -1
  284. package/dist/processors/processors/unicode-normalizer.d.ts.map +1 -1
  285. package/dist/processors/runner.d.ts +35 -4
  286. package/dist/processors/runner.d.ts.map +1 -1
  287. package/dist/provider-registry-BXX7CA3H.cjs +40 -0
  288. package/dist/{provider-registry-RP2W4B24.cjs.map → provider-registry-BXX7CA3H.cjs.map} +1 -1
  289. package/dist/provider-registry-GRYJWVEM.js +3 -0
  290. package/dist/{provider-registry-HDG6UMUC.js.map → provider-registry-GRYJWVEM.js.map} +1 -1
  291. package/dist/provider-registry.json +547 -25
  292. package/dist/{registry-generator-JPCV47SC.cjs → registry-generator-34SC4TAU.cjs} +21 -6
  293. package/dist/registry-generator-34SC4TAU.cjs.map +1 -0
  294. package/dist/{registry-generator-XD4FPZTU.js → registry-generator-UMTNPBJX.js} +21 -7
  295. package/dist/registry-generator-UMTNPBJX.js.map +1 -0
  296. package/dist/relevance/index.cjs +2 -2
  297. package/dist/relevance/index.js +1 -1
  298. package/dist/request-context/index.cjs +10 -2
  299. package/dist/request-context/index.d.ts +26 -0
  300. package/dist/request-context/index.d.ts.map +1 -1
  301. package/dist/request-context/index.js +1 -1
  302. package/dist/server/base.d.ts +51 -0
  303. package/dist/server/base.d.ts.map +1 -0
  304. package/dist/server/composite-auth.d.ts +9 -0
  305. package/dist/server/composite-auth.d.ts.map +1 -0
  306. package/dist/server/index.cjs +112 -2
  307. package/dist/server/index.cjs.map +1 -1
  308. package/dist/server/index.d.ts +4 -0
  309. package/dist/server/index.d.ts.map +1 -1
  310. package/dist/server/index.js +109 -2
  311. package/dist/server/index.js.map +1 -1
  312. package/dist/server/simple-auth.d.ts +27 -0
  313. package/dist/server/simple-auth.d.ts.map +1 -0
  314. package/dist/storage/domains/memory/inmemory.d.ts.map +1 -1
  315. package/dist/storage/index.cjs +37 -29
  316. package/dist/storage/index.js +1 -1
  317. package/dist/storage/types.d.ts +1 -1
  318. package/dist/storage/types.d.ts.map +1 -1
  319. package/dist/storage/utils.d.ts +44 -0
  320. package/dist/storage/utils.d.ts.map +1 -1
  321. package/dist/stream/MastraAgentNetworkStream.d.ts +1 -1
  322. package/dist/stream/MastraAgentNetworkStream.d.ts.map +1 -1
  323. package/dist/stream/MastraWorkflowStream.d.ts +1 -1
  324. package/dist/stream/MastraWorkflowStream.d.ts.map +1 -1
  325. package/dist/stream/RunOutput.d.ts +2 -2
  326. package/dist/stream/RunOutput.d.ts.map +1 -1
  327. package/dist/stream/aisdk/v5/output.d.ts +1 -1
  328. package/dist/stream/aisdk/v5/output.d.ts.map +1 -1
  329. package/dist/stream/aisdk/v5/transform.d.ts.map +1 -1
  330. package/dist/stream/base/base.d.ts +1 -1
  331. package/dist/stream/base/base.d.ts.map +1 -1
  332. package/dist/stream/base/output-format-handlers.d.ts +1 -1
  333. package/dist/stream/base/output-format-handlers.d.ts.map +1 -1
  334. package/dist/stream/base/output.d.ts +1 -1
  335. package/dist/stream/base/output.d.ts.map +1 -1
  336. package/dist/stream/index.cjs +11 -11
  337. package/dist/stream/index.js +2 -2
  338. package/dist/stream/types.d.ts +9 -2
  339. package/dist/stream/types.d.ts.map +1 -1
  340. package/dist/test-utils/llm-mock.cjs +36 -2
  341. package/dist/test-utils/llm-mock.cjs.map +1 -1
  342. package/dist/test-utils/llm-mock.d.ts +3 -0
  343. package/dist/test-utils/llm-mock.d.ts.map +1 -1
  344. package/dist/test-utils/llm-mock.js +32 -2
  345. package/dist/test-utils/llm-mock.js.map +1 -1
  346. package/dist/tools/index.cjs +6 -6
  347. package/dist/tools/index.js +2 -2
  348. package/dist/tools/is-vercel-tool.cjs +2 -2
  349. package/dist/tools/is-vercel-tool.js +1 -1
  350. package/dist/tools/stream.d.ts +2 -1
  351. package/dist/tools/stream.d.ts.map +1 -1
  352. package/dist/tools/tool-builder/builder.d.ts +2 -0
  353. package/dist/tools/tool-builder/builder.d.ts.map +1 -1
  354. package/dist/tools/tool.d.ts +19 -6
  355. package/dist/tools/tool.d.ts.map +1 -1
  356. package/dist/tools/types.d.ts +28 -3
  357. package/dist/tools/types.d.ts.map +1 -1
  358. package/dist/tools/validation.d.ts +14 -2
  359. package/dist/tools/validation.d.ts.map +1 -1
  360. package/dist/tts/index.cjs +2 -2
  361. package/dist/tts/index.js +1 -1
  362. package/dist/utils.cjs +22 -22
  363. package/dist/utils.d.ts +2 -2
  364. package/dist/utils.d.ts.map +1 -1
  365. package/dist/utils.js +1 -1
  366. package/dist/vector/filter/index.cjs +7 -189
  367. package/dist/vector/filter/index.cjs.map +1 -1
  368. package/dist/vector/filter/index.js +1 -190
  369. package/dist/vector/filter/index.js.map +1 -1
  370. package/dist/vector/index.cjs +7 -2
  371. package/dist/vector/index.cjs.map +1 -1
  372. package/dist/vector/index.d.ts +1 -0
  373. package/dist/vector/index.d.ts.map +1 -1
  374. package/dist/vector/index.js +2 -1
  375. package/dist/vector/index.js.map +1 -1
  376. package/dist/vector/types.d.ts +86 -3
  377. package/dist/vector/types.d.ts.map +1 -1
  378. package/dist/vector/vector.d.ts +39 -2
  379. package/dist/vector/vector.d.ts.map +1 -1
  380. package/dist/voice/index.cjs +6 -6
  381. package/dist/voice/index.js +1 -1
  382. package/dist/workflows/default.d.ts +176 -281
  383. package/dist/workflows/default.d.ts.map +1 -1
  384. package/dist/workflows/evented/index.cjs +10 -10
  385. package/dist/workflows/evented/index.js +1 -1
  386. package/dist/workflows/evented/step-executor.d.ts +1 -1
  387. package/dist/workflows/evented/step-executor.d.ts.map +1 -1
  388. package/dist/workflows/execution-engine.d.ts +4 -2
  389. package/dist/workflows/execution-engine.d.ts.map +1 -1
  390. package/dist/workflows/handlers/control-flow.d.ts +135 -0
  391. package/dist/workflows/handlers/control-flow.d.ts.map +1 -0
  392. package/dist/workflows/handlers/entry.d.ts +45 -0
  393. package/dist/workflows/handlers/entry.d.ts.map +1 -0
  394. package/dist/workflows/handlers/sleep.d.ts +62 -0
  395. package/dist/workflows/handlers/sleep.d.ts.map +1 -0
  396. package/dist/workflows/handlers/step.d.ts +60 -0
  397. package/dist/workflows/handlers/step.d.ts.map +1 -0
  398. package/dist/workflows/index.cjs +23 -19
  399. package/dist/workflows/index.js +1 -1
  400. package/dist/workflows/step.d.ts +1 -0
  401. package/dist/workflows/step.d.ts.map +1 -1
  402. package/dist/workflows/types.d.ts +159 -5
  403. package/dist/workflows/types.d.ts.map +1 -1
  404. package/dist/workflows/utils.d.ts +7 -0
  405. package/dist/workflows/utils.d.ts.map +1 -1
  406. package/dist/workflows/workflow.d.ts +12 -8
  407. package/dist/workflows/workflow.d.ts.map +1 -1
  408. package/package.json +12 -10
  409. package/src/llm/model/provider-types.generated.d.ts +245 -12
  410. package/dist/chunk-2NVBZKZI.cjs.map +0 -1
  411. package/dist/chunk-2OTDXX73.js.map +0 -1
  412. package/dist/chunk-3PSWNGBF.js +0 -3
  413. package/dist/chunk-3PSWNGBF.js.map +0 -1
  414. package/dist/chunk-3RW5EMSB.js.map +0 -1
  415. package/dist/chunk-3W5RQCCY.cjs +0 -440
  416. package/dist/chunk-3W5RQCCY.cjs.map +0 -1
  417. package/dist/chunk-436FFEF6.js +0 -34
  418. package/dist/chunk-436FFEF6.js.map +0 -1
  419. package/dist/chunk-4IKJAKCD.cjs.map +0 -1
  420. package/dist/chunk-4RXG622P.cjs.map +0 -1
  421. package/dist/chunk-5WXEYDFI.cjs.map +0 -1
  422. package/dist/chunk-CYVNOIXS.cjs.map +0 -1
  423. package/dist/chunk-D6EDHNGV.js.map +0 -1
  424. package/dist/chunk-DSNPWVIG.cjs.map +0 -1
  425. package/dist/chunk-E7K4FTLN.cjs.map +0 -1
  426. package/dist/chunk-FVNT7VTO.js.map +0 -1
  427. package/dist/chunk-GRBGQ2GE.js.map +0 -1
  428. package/dist/chunk-HBJPYQRN.cjs.map +0 -1
  429. package/dist/chunk-HGNRQ3OG.js.map +0 -1
  430. package/dist/chunk-IHJDOC3A.js.map +0 -1
  431. package/dist/chunk-IWB65P37.cjs.map +0 -1
  432. package/dist/chunk-IWQDBVJK.js.map +0 -1
  433. package/dist/chunk-J7O6WENZ.cjs.map +0 -1
  434. package/dist/chunk-JXESKY4A.js.map +0 -1
  435. package/dist/chunk-KEURQGCQ.js.map +0 -1
  436. package/dist/chunk-KIZIOFZC.js.map +0 -1
  437. package/dist/chunk-KJ2SW6VA.js.map +0 -1
  438. package/dist/chunk-LRSB62Z6.cjs.map +0 -1
  439. package/dist/chunk-MDKPL2R2.js.map +0 -1
  440. package/dist/chunk-O6NA3Z43.cjs.map +0 -1
  441. package/dist/chunk-PE3V7GUL.cjs +0 -4
  442. package/dist/chunk-PE3V7GUL.cjs.map +0 -1
  443. package/dist/chunk-RXDJL5QT.js.map +0 -1
  444. package/dist/chunk-S6OEQHEI.cjs.map +0 -1
  445. package/dist/chunk-TQTAMPSC.js.map +0 -1
  446. package/dist/chunk-U7VECK2G.js.map +0 -1
  447. package/dist/chunk-V3VLOOSW.cjs +0 -36
  448. package/dist/chunk-V3VLOOSW.cjs.map +0 -1
  449. package/dist/chunk-VSM3NLUX.cjs.map +0 -1
  450. package/dist/chunk-VZC4BWWH.cjs.map +0 -1
  451. package/dist/chunk-W3DD3XP5.js.map +0 -1
  452. package/dist/chunk-WQSGX6XA.cjs.map +0 -1
  453. package/dist/chunk-WTYNK7Q4.js.map +0 -1
  454. package/dist/chunk-XXBWX7DT.js.map +0 -1
  455. package/dist/chunk-Y63IFHEZ.cjs.map +0 -1
  456. package/dist/chunk-ZCVTH3CH.cjs.map +0 -1
  457. package/dist/models-dev-6PRLJKVZ.js +0 -3
  458. package/dist/models-dev-WHMI5G6Y.cjs +0 -12
  459. package/dist/netlify-46I3SNNV.cjs +0 -12
  460. package/dist/netlify-EBQ6YUC6.js +0 -3
  461. package/dist/provider-registry-HDG6UMUC.js +0 -3
  462. package/dist/provider-registry-RP2W4B24.cjs +0 -40
  463. package/dist/registry-generator-JPCV47SC.cjs.map +0 -1
  464. package/dist/registry-generator-XD4FPZTU.js.map +0 -1
@@ -230,14 +230,137 @@ function convertImageFilePart(part, downloadedAssets) {
230
230
  }
231
231
  }
232
232
  }
233
+ zod.z.union([
234
+ zod.z.string(),
235
+ zod.z.instanceof(Uint8Array),
236
+ zod.z.instanceof(ArrayBuffer),
237
+ zod.z.custom(
238
+ // Buffer might not be available in some environments such as CloudFlare:
239
+ (value) => globalThis.Buffer?.isBuffer(value) ?? false,
240
+ { message: "Must be a Buffer" }
241
+ )
242
+ ]);
243
+ function convertDataContentToBase64String(content) {
244
+ if (typeof content === "string") {
245
+ return content;
246
+ }
247
+ if (content instanceof ArrayBuffer) {
248
+ return chunkSVLMF4UZ_cjs.convertUint8ArrayToBase64(new Uint8Array(content));
249
+ }
250
+ return chunkSVLMF4UZ_cjs.convertUint8ArrayToBase64(content);
251
+ }
252
+
253
+ // src/agent/message-list/prompt/image-utils.ts
254
+ function parseDataUri(dataUri) {
255
+ if (!dataUri.startsWith("data:")) {
256
+ return {
257
+ isDataUri: false,
258
+ base64Content: dataUri
259
+ };
260
+ }
261
+ const base64Index = dataUri.indexOf(",");
262
+ if (base64Index === -1) {
263
+ return {
264
+ isDataUri: true,
265
+ base64Content: dataUri
266
+ };
267
+ }
268
+ const header = dataUri.substring(5, base64Index);
269
+ const base64Content = dataUri.substring(base64Index + 1);
270
+ const semicolonIndex = header.indexOf(";");
271
+ const mimeType = semicolonIndex !== -1 ? header.substring(0, semicolonIndex) : header;
272
+ return {
273
+ isDataUri: true,
274
+ mimeType: mimeType || void 0,
275
+ base64Content
276
+ };
277
+ }
278
+ function createDataUri(base64Content, mimeType = "application/octet-stream") {
279
+ if (base64Content.startsWith("data:")) {
280
+ return base64Content;
281
+ }
282
+ return `data:${mimeType};base64,${base64Content}`;
283
+ }
284
+ function imageContentToString(image, fallbackMimeType) {
285
+ if (typeof image === "string") {
286
+ return image;
287
+ }
288
+ if (image instanceof URL) {
289
+ return image.toString();
290
+ }
291
+ if (image instanceof Uint8Array || image instanceof ArrayBuffer || globalThis.Buffer && Buffer.isBuffer(image)) {
292
+ const base64 = convertDataContentToBase64String(image);
293
+ return base64;
294
+ }
295
+ return String(image);
296
+ }
297
+ function getImageCacheKey(image) {
298
+ if (image instanceof URL) {
299
+ return image.toString();
300
+ }
301
+ if (typeof image === "string") {
302
+ return image.length;
303
+ }
304
+ if (image instanceof Uint8Array) {
305
+ return image.byteLength;
306
+ }
307
+ if (image instanceof ArrayBuffer) {
308
+ return image.byteLength;
309
+ }
310
+ return image;
311
+ }
312
+ function isValidUrl(str) {
313
+ try {
314
+ new URL(str);
315
+ return true;
316
+ } catch {
317
+ if (str.startsWith("//")) {
318
+ try {
319
+ new URL(`https:${str}`);
320
+ return true;
321
+ } catch {
322
+ return false;
323
+ }
324
+ }
325
+ return false;
326
+ }
327
+ }
328
+ function categorizeFileData(data, fallbackMimeType) {
329
+ const parsed = parseDataUri(data);
330
+ const mimeType = parsed.isDataUri && parsed.mimeType ? parsed.mimeType : fallbackMimeType;
331
+ if (parsed.isDataUri) {
332
+ return {
333
+ type: "dataUri",
334
+ mimeType,
335
+ data
336
+ };
337
+ }
338
+ if (isValidUrl(data)) {
339
+ return {
340
+ type: "url",
341
+ mimeType,
342
+ data
343
+ };
344
+ }
345
+ return {
346
+ type: "raw",
347
+ mimeType,
348
+ data
349
+ };
350
+ }
233
351
 
234
352
  // src/agent/message-list/prompt/attachments-to-parts.ts
235
353
  function attachmentsToParts(attachments) {
236
354
  const parts = [];
237
355
  for (const attachment of attachments) {
356
+ const categorized = categorizeFileData(attachment.url, attachment.contentType);
357
+ let urlString = attachment.url;
358
+ if (categorized.type === "raw") {
359
+ urlString = createDataUri(attachment.url, attachment.contentType || "application/octet-stream");
360
+ }
238
361
  let url;
239
362
  try {
240
- url = new URL(attachment.url);
363
+ url = new URL(urlString);
241
364
  } catch {
242
365
  throw new Error(`Invalid URL: ${attachment.url}`);
243
366
  }
@@ -262,13 +385,13 @@ function attachmentsToParts(attachments) {
262
385
  if (attachment.contentType?.startsWith("image/")) {
263
386
  parts.push({
264
387
  type: "image",
265
- image: attachment.url,
388
+ image: urlString,
266
389
  mimeType: attachment.contentType
267
390
  });
268
391
  } else if (attachment.contentType?.startsWith("text/")) {
269
392
  parts.push({
270
393
  type: "file",
271
- data: attachment.url,
394
+ data: urlString,
272
395
  mimeType: attachment.contentType
273
396
  });
274
397
  } else {
@@ -277,7 +400,7 @@ function attachmentsToParts(attachments) {
277
400
  }
278
401
  parts.push({
279
402
  type: "file",
280
- data: attachment.url,
403
+ data: urlString,
281
404
  mimeType: attachment.contentType
282
405
  });
283
406
  }
@@ -588,25 +711,6 @@ function convertToV1Messages(messages) {
588
711
  }
589
712
  return v1Messages;
590
713
  }
591
- zod.z.union([
592
- zod.z.string(),
593
- zod.z.instanceof(Uint8Array),
594
- zod.z.instanceof(ArrayBuffer),
595
- zod.z.custom(
596
- // Buffer might not be available in some environments such as CloudFlare:
597
- (value) => globalThis.Buffer?.isBuffer(value) ?? false,
598
- { message: "Must be a Buffer" }
599
- )
600
- ]);
601
- function convertDataContentToBase64String(content) {
602
- if (typeof content === "string") {
603
- return content;
604
- }
605
- if (content instanceof ArrayBuffer) {
606
- return chunkSVLMF4UZ_cjs.convertUint8ArrayToBase64(new Uint8Array(content));
607
- }
608
- return chunkSVLMF4UZ_cjs.convertUint8ArrayToBase64(content);
609
- }
610
714
 
611
715
  // src/utils/fetchWithRetry.ts
612
716
  async function fetchWithRetry(url, options = {}, maxRetries = 3) {
@@ -728,105 +832,6 @@ async function downloadAssetsFromMessages({
728
832
  return Object.fromEntries(downloadFileList);
729
833
  }
730
834
 
731
- // src/agent/message-list/prompt/image-utils.ts
732
- function parseDataUri(dataUri) {
733
- if (!dataUri.startsWith("data:")) {
734
- return {
735
- isDataUri: false,
736
- base64Content: dataUri
737
- };
738
- }
739
- const base64Index = dataUri.indexOf(",");
740
- if (base64Index === -1) {
741
- return {
742
- isDataUri: true,
743
- base64Content: dataUri
744
- };
745
- }
746
- const header = dataUri.substring(5, base64Index);
747
- const base64Content = dataUri.substring(base64Index + 1);
748
- const semicolonIndex = header.indexOf(";");
749
- const mimeType = semicolonIndex !== -1 ? header.substring(0, semicolonIndex) : header;
750
- return {
751
- isDataUri: true,
752
- mimeType: mimeType || void 0,
753
- base64Content
754
- };
755
- }
756
- function createDataUri(base64Content, mimeType = "application/octet-stream") {
757
- if (base64Content.startsWith("data:")) {
758
- return base64Content;
759
- }
760
- return `data:${mimeType};base64,${base64Content}`;
761
- }
762
- function imageContentToString(image, fallbackMimeType) {
763
- if (typeof image === "string") {
764
- return image;
765
- }
766
- if (image instanceof URL) {
767
- return image.toString();
768
- }
769
- if (image instanceof Uint8Array || image instanceof ArrayBuffer || globalThis.Buffer && Buffer.isBuffer(image)) {
770
- const base64 = convertDataContentToBase64String(image);
771
- return base64;
772
- }
773
- return String(image);
774
- }
775
- function getImageCacheKey(image) {
776
- if (image instanceof URL) {
777
- return image.toString();
778
- }
779
- if (typeof image === "string") {
780
- return image.length;
781
- }
782
- if (image instanceof Uint8Array) {
783
- return image.byteLength;
784
- }
785
- if (image instanceof ArrayBuffer) {
786
- return image.byteLength;
787
- }
788
- return image;
789
- }
790
- function isValidUrl(str) {
791
- try {
792
- new URL(str);
793
- return true;
794
- } catch {
795
- if (str.startsWith("//")) {
796
- try {
797
- new URL(`https:${str}`);
798
- return true;
799
- } catch {
800
- return false;
801
- }
802
- }
803
- return false;
804
- }
805
- }
806
- function categorizeFileData(data, fallbackMimeType) {
807
- const parsed = parseDataUri(data);
808
- const mimeType = parsed.isDataUri && parsed.mimeType ? parsed.mimeType : fallbackMimeType;
809
- if (parsed.isDataUri) {
810
- return {
811
- type: "dataUri",
812
- mimeType,
813
- data
814
- };
815
- }
816
- if (isValidUrl(data)) {
817
- return {
818
- type: "url",
819
- mimeType,
820
- data
821
- };
822
- }
823
- return {
824
- type: "raw",
825
- mimeType,
826
- data
827
- };
828
- }
829
-
830
835
  // src/agent/message-list/utils/ai-v5/gemini-compatibility.ts
831
836
  function ensureGeminiCompatibleMessages(messages) {
832
837
  const result = [...messages];
@@ -912,6 +917,9 @@ var MessageList = class _MessageList {
912
917
  userContextMessagesPersisted = /* @__PURE__ */ new Set();
913
918
  generateMessageId;
914
919
  _agentNetworkAppend = false;
920
+ // Event recording for observability
921
+ isRecording = false;
922
+ recordedEvents = [];
915
923
  constructor({
916
924
  threadId,
917
925
  resourceId,
@@ -925,10 +933,34 @@ var MessageList = class _MessageList {
925
933
  this.generateMessageId = generateMessageId;
926
934
  this._agentNetworkAppend = _agentNetworkAppend || false;
927
935
  }
936
+ /**
937
+ * Start recording mutations to the MessageList for observability/tracing
938
+ */
939
+ startRecording() {
940
+ this.isRecording = true;
941
+ this.recordedEvents = [];
942
+ }
943
+ /**
944
+ * Stop recording and return the list of recorded events
945
+ */
946
+ stopRecording() {
947
+ this.isRecording = false;
948
+ const events = [...this.recordedEvents];
949
+ this.recordedEvents = [];
950
+ return events;
951
+ }
928
952
  add(messages, messageSource) {
929
953
  if (messageSource === `user`) messageSource = `input`;
930
954
  if (!messages) return this;
931
- for (const message of Array.isArray(messages) ? messages : [messages]) {
955
+ const messageArray = Array.isArray(messages) ? messages : [messages];
956
+ if (this.isRecording) {
957
+ this.recordedEvents.push({
958
+ type: "add",
959
+ source: messageSource,
960
+ count: messageArray.length
961
+ });
962
+ }
963
+ for (const message of messageArray) {
932
964
  this.addOne(
933
965
  typeof message === `string` ? {
934
966
  role: "user",
@@ -990,6 +1022,22 @@ var MessageList = class _MessageList {
990
1022
  this.userContextMessagesPersisted = this.deserializeSet(state.userContextMessagesPersisted);
991
1023
  return this;
992
1024
  }
1025
+ makeMessageSourceChecker() {
1026
+ const sources = {
1027
+ memory: new Set(Array.from(this.memoryMessages.values()).map((m) => m.id)),
1028
+ output: new Set(Array.from(this.newResponseMessages.values()).map((m) => m.id)),
1029
+ input: new Set(Array.from(this.newUserMessages.values()).map((m) => m.id))
1030
+ };
1031
+ return {
1032
+ ...sources,
1033
+ getSource: (msg) => {
1034
+ if (sources.memory.has(msg.id)) return "memory";
1035
+ if (sources.input.has(msg.id)) return "input";
1036
+ if (sources.output.has(msg.id)) return "response";
1037
+ return null;
1038
+ }
1039
+ };
1040
+ }
993
1041
  getLatestUserContent() {
994
1042
  const currentUserMessages = this.all.core().filter((m) => m.role === "user");
995
1043
  const content = currentUserMessages.at(-1)?.content;
@@ -1014,11 +1062,34 @@ var MessageList = class _MessageList {
1014
1062
  }
1015
1063
  get clear() {
1016
1064
  return {
1065
+ all: {
1066
+ db: () => {
1067
+ const allMessages = [...this.messages];
1068
+ this.messages = [];
1069
+ this.newUserMessages.clear();
1070
+ this.newResponseMessages.clear();
1071
+ this.userContextMessages.clear();
1072
+ if (this.isRecording && allMessages.length > 0) {
1073
+ this.recordedEvents.push({
1074
+ type: "clear",
1075
+ count: allMessages.length
1076
+ });
1077
+ }
1078
+ return allMessages;
1079
+ }
1080
+ },
1017
1081
  input: {
1018
1082
  db: () => {
1019
1083
  const userMessages = Array.from(this.newUserMessages);
1020
1084
  this.messages = this.messages.filter((m) => !this.newUserMessages.has(m));
1021
1085
  this.newUserMessages.clear();
1086
+ if (this.isRecording && userMessages.length > 0) {
1087
+ this.recordedEvents.push({
1088
+ type: "clear",
1089
+ source: "input",
1090
+ count: userMessages.length
1091
+ });
1092
+ }
1022
1093
  return userMessages;
1023
1094
  }
1024
1095
  },
@@ -1027,11 +1098,46 @@ var MessageList = class _MessageList {
1027
1098
  const responseMessages = Array.from(this.newResponseMessages);
1028
1099
  this.messages = this.messages.filter((m) => !this.newResponseMessages.has(m));
1029
1100
  this.newResponseMessages.clear();
1101
+ if (this.isRecording && responseMessages.length > 0) {
1102
+ this.recordedEvents.push({
1103
+ type: "clear",
1104
+ source: "response",
1105
+ count: responseMessages.length
1106
+ });
1107
+ }
1030
1108
  return responseMessages;
1031
1109
  }
1032
1110
  }
1033
1111
  };
1034
1112
  }
1113
+ /**
1114
+ * Remove messages by ID
1115
+ * @param ids - Array of message IDs to remove
1116
+ * @returns Array of removed messages
1117
+ */
1118
+ removeByIds(ids) {
1119
+ const idsSet = new Set(ids);
1120
+ const removed = [];
1121
+ this.messages = this.messages.filter((m) => {
1122
+ if (idsSet.has(m.id)) {
1123
+ removed.push(m);
1124
+ this.memoryMessages.delete(m);
1125
+ this.newUserMessages.delete(m);
1126
+ this.newResponseMessages.delete(m);
1127
+ this.userContextMessages.delete(m);
1128
+ return false;
1129
+ }
1130
+ return true;
1131
+ });
1132
+ if (this.isRecording && removed.length > 0) {
1133
+ this.recordedEvents.push({
1134
+ type: "removeByIds",
1135
+ ids,
1136
+ count: removed.length
1137
+ });
1138
+ }
1139
+ return removed;
1140
+ }
1035
1141
  all = {
1036
1142
  db: () => this.messages,
1037
1143
  v1: () => convertToV1Messages(this.all.db()),
@@ -1335,12 +1441,47 @@ var MessageList = class _MessageList {
1335
1441
  if (unsavedMessages.length === 0) return void 0;
1336
1442
  return Math.min(...unsavedMessages.map((m) => new Date(m.createdAt).getTime()));
1337
1443
  }
1444
+ /**
1445
+ * Check if a message is a new user or response message that should be saved.
1446
+ * Checks by message ID to handle cases where the message object may be a copy.
1447
+ */
1448
+ isNewMessage(messageOrId) {
1449
+ const id = typeof messageOrId === "string" ? messageOrId : messageOrId.id;
1450
+ if (typeof messageOrId !== "string") {
1451
+ if (this.newUserMessages.has(messageOrId) || this.newResponseMessages.has(messageOrId)) {
1452
+ return true;
1453
+ }
1454
+ }
1455
+ return Array.from(this.newUserMessages).some((m) => m.id === id) || Array.from(this.newResponseMessages).some((m) => m.id === id);
1456
+ }
1338
1457
  getSystemMessages(tag) {
1339
1458
  if (tag) {
1340
1459
  return this.taggedSystemMessages[tag] || [];
1341
1460
  }
1342
1461
  return this.systemMessages;
1343
1462
  }
1463
+ /**
1464
+ * Get all system messages (both tagged and untagged)
1465
+ * @returns Array of all system messages
1466
+ */
1467
+ getAllSystemMessages() {
1468
+ return [...this.systemMessages, ...Object.values(this.taggedSystemMessages).flat()];
1469
+ }
1470
+ /**
1471
+ * Replace all system messages with new ones
1472
+ * This clears both tagged and untagged system messages and replaces them with the provided array
1473
+ * @param messages - Array of system messages to set
1474
+ */
1475
+ replaceAllSystemMessages(messages) {
1476
+ this.systemMessages = [];
1477
+ this.taggedSystemMessages = {};
1478
+ for (const message of messages) {
1479
+ if (message.role === "system") {
1480
+ this.systemMessages.push(message);
1481
+ }
1482
+ }
1483
+ return this;
1484
+ }
1344
1485
  addSystem(messages, tag) {
1345
1486
  if (!messages) return this;
1346
1487
  for (const message of Array.isArray(messages) ? messages : [messages]) {
@@ -1399,8 +1540,21 @@ var MessageList = class _MessageList {
1399
1540
  if (tag && !this.isDuplicateSystem(coreMessage, tag)) {
1400
1541
  this.taggedSystemMessages[tag] ||= [];
1401
1542
  this.taggedSystemMessages[tag].push(coreMessage);
1543
+ if (this.isRecording) {
1544
+ this.recordedEvents.push({
1545
+ type: "addSystem",
1546
+ tag,
1547
+ message: coreMessage
1548
+ });
1549
+ }
1402
1550
  } else if (!tag && !this.isDuplicateSystem(coreMessage)) {
1403
1551
  this.systemMessages.push(coreMessage);
1552
+ if (this.isRecording) {
1553
+ this.recordedEvents.push({
1554
+ type: "addSystem",
1555
+ message: coreMessage
1556
+ });
1557
+ }
1404
1558
  }
1405
1559
  }
1406
1560
  isDuplicateSystem(message, tag) {
@@ -1426,9 +1580,20 @@ var MessageList = class _MessageList {
1426
1580
  if (m.content.parts.length) {
1427
1581
  for (const part of m.content.parts) {
1428
1582
  if (part.type === `file`) {
1583
+ let normalizedUrl;
1584
+ if (typeof part.data === "string") {
1585
+ const categorized = categorizeFileData(part.data, part.mimeType);
1586
+ if (categorized.type === "raw") {
1587
+ normalizedUrl = createDataUri(part.data, part.mimeType || "application/octet-stream");
1588
+ } else {
1589
+ normalizedUrl = part.data;
1590
+ }
1591
+ } else {
1592
+ normalizedUrl = part.data;
1593
+ }
1429
1594
  experimentalAttachments.push({
1430
1595
  contentType: part.mimeType,
1431
- url: part.data
1596
+ url: normalizedUrl
1432
1597
  });
1433
1598
  } else if (part.type === "tool-invocation" && (part.toolInvocation.state === "call" || part.toolInvocation.state === "partial-call")) {
1434
1599
  continue;
@@ -1669,6 +1834,9 @@ var MessageList = class _MessageList {
1669
1834
  } else if (messageSource === `response`) {
1670
1835
  this.newResponseMessages.add(messageV2);
1671
1836
  this.newResponseMessagesPersisted.add(messageV2);
1837
+ if (this.newUserMessages.has(messageV2)) {
1838
+ this.newUserMessages.delete(messageV2);
1839
+ }
1672
1840
  } else if (messageSource === `input`) {
1673
1841
  this.newUserMessages.add(messageV2);
1674
1842
  this.newUserMessagesPersisted.add(messageV2);
@@ -1797,8 +1965,10 @@ var MessageList = class _MessageList {
1797
1965
  }
1798
1966
  if (_MessageList.isAIV5CoreMessage(message)) {
1799
1967
  const dbMsg = _MessageList.aiV5ModelMessageToMastraDBMessage(message, messageSource);
1968
+ const rawCreatedAt = "metadata" in message && message.metadata && typeof message.metadata === "object" && "createdAt" in message.metadata ? message.metadata.createdAt : void 0;
1800
1969
  const result = {
1801
1970
  ...dbMsg,
1971
+ createdAt: this.generateCreatedAt(messageSource, rawCreatedAt),
1802
1972
  threadId: this.memoryInfo?.threadId,
1803
1973
  resourceId: this.memoryInfo?.resourceId
1804
1974
  };
@@ -1806,8 +1976,10 @@ var MessageList = class _MessageList {
1806
1976
  }
1807
1977
  if (_MessageList.isAIV5UIMessage(message)) {
1808
1978
  const dbMsg = _MessageList.aiV5UIMessageToMastraDBMessage(message);
1979
+ const rawCreatedAt = "createdAt" in message ? message.createdAt : void 0;
1809
1980
  return {
1810
1981
  ...dbMsg,
1982
+ createdAt: this.generateCreatedAt(messageSource, rawCreatedAt),
1811
1983
  threadId: this.memoryInfo?.threadId,
1812
1984
  resourceId: this.memoryInfo?.resourceId
1813
1985
  };
@@ -1817,16 +1989,16 @@ var MessageList = class _MessageList {
1817
1989
  lastCreatedAt;
1818
1990
  // this makes sure messages added in order will always have a date atleast 1ms apart.
1819
1991
  generateCreatedAt(messageSource, start) {
1820
- start = start instanceof Date ? start : start ? new Date(start) : void 0;
1821
- if (start && !this.lastCreatedAt) {
1822
- this.lastCreatedAt = start.getTime();
1823
- return start;
1992
+ const startDate = start instanceof Date ? start : typeof start === "string" || typeof start === "number" ? new Date(start) : void 0;
1993
+ if (startDate && !this.lastCreatedAt) {
1994
+ this.lastCreatedAt = startDate.getTime();
1995
+ return startDate;
1824
1996
  }
1825
- if (start && messageSource === `memory`) {
1826
- return start;
1997
+ if (startDate && messageSource === `memory`) {
1998
+ return startDate;
1827
1999
  }
1828
2000
  const now = /* @__PURE__ */ new Date();
1829
- const nowTime = start?.getTime() || now.getTime();
2001
+ const nowTime = startDate?.getTime() || now.getTime();
1830
2002
  const lastTime = this.messages.reduce((p, m) => {
1831
2003
  if (m.createdAt.getTime() > p) return m.createdAt.getTime();
1832
2004
  return p;
@@ -2110,10 +2282,14 @@ var MessageList = class _MessageList {
2110
2282
  if (coreMessage.providerOptions) {
2111
2283
  content.providerMetadata = coreMessage.providerOptions;
2112
2284
  }
2285
+ if ("metadata" in coreMessage && coreMessage.metadata !== null && coreMessage.metadata !== void 0) {
2286
+ content.metadata = coreMessage.metadata;
2287
+ }
2288
+ const rawCreatedAt = "metadata" in coreMessage && coreMessage.metadata && typeof coreMessage.metadata === "object" && "createdAt" in coreMessage.metadata ? coreMessage.metadata.createdAt : void 0;
2113
2289
  return {
2114
2290
  id,
2115
2291
  role: _MessageList.getRole(coreMessage),
2116
- createdAt: this.generateCreatedAt(messageSource),
2292
+ createdAt: this.generateCreatedAt(messageSource, rawCreatedAt),
2117
2293
  threadId: this.memoryInfo?.threadId,
2118
2294
  resourceId: this.memoryInfo?.resourceId,
2119
2295
  content
@@ -2166,6 +2342,11 @@ var MessageList = class _MessageList {
2166
2342
  }
2167
2343
  return prev;
2168
2344
  }, 0);
2345
+ const partAny = part;
2346
+ if (partAny && Object.hasOwn(partAny, "providerMetadata") && partAny.providerMetadata && Object.hasOwn(partAny.providerMetadata, "openai") && partAny.providerMetadata.openai && Object.hasOwn(partAny.providerMetadata.openai, "itemId")) {
2347
+ const itemId = partAny.providerMetadata.openai.itemId;
2348
+ key += `|${itemId}`;
2349
+ }
2169
2350
  }
2170
2351
  if (part.type === `file`) {
2171
2352
  key += part.data;
@@ -2312,9 +2493,23 @@ var MessageList = class _MessageList {
2312
2493
  if (role === `tool` || role === `assistant`) {
2313
2494
  throw new Error(incompatibleMessage);
2314
2495
  }
2496
+ let processedImage;
2497
+ if (part.image instanceof URL || part.image instanceof Uint8Array) {
2498
+ processedImage = part.image;
2499
+ } else if (Buffer.isBuffer(part.image) || part.image instanceof ArrayBuffer) {
2500
+ processedImage = new Uint8Array(part.image);
2501
+ } else {
2502
+ const categorized = categorizeFileData(part.image, part.mimeType);
2503
+ if (categorized.type === "raw") {
2504
+ const dataUri = createDataUri(part.image, part.mimeType || "image/png");
2505
+ processedImage = new URL(dataUri);
2506
+ } else {
2507
+ processedImage = new URL(part.image);
2508
+ }
2509
+ }
2315
2510
  roleContent[role].push({
2316
2511
  ...part,
2317
- image: part.image instanceof URL || part.image instanceof Uint8Array ? part.image : Buffer.isBuffer(part.image) || part.image instanceof ArrayBuffer ? new Uint8Array(part.image) : new URL(part.image)
2512
+ image: processedImage
2318
2513
  });
2319
2514
  break;
2320
2515
  }
@@ -2964,7 +3159,7 @@ var MessageList = class _MessageList {
2964
3159
  }
2965
3160
  }
2966
3161
  const contentString = mastraDBParts.filter((p) => p.type === "text").map((p) => p.text).join("\n");
2967
- const metadata = {};
3162
+ const metadata = "metadata" in modelMsg && modelMsg.metadata !== null && modelMsg.metadata !== void 0 ? modelMsg.metadata : {};
2968
3163
  const id = `id` in modelMsg && typeof modelMsg.id === `string` ? modelMsg.id : `msg-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
2969
3164
  const message = {
2970
3165
  id,
@@ -2977,7 +3172,7 @@ var MessageList = class _MessageList {
2977
3172
  reasoning: reasoningParts.length > 0 ? reasoningParts.join("\n") : void 0,
2978
3173
  experimental_attachments: experimental_attachments.length > 0 ? experimental_attachments : void 0,
2979
3174
  content: contentString || void 0,
2980
- metadata
3175
+ metadata: Object.keys(metadata).length > 0 ? metadata : void 0
2981
3176
  }
2982
3177
  };
2983
3178
  if (modelMsg.providerOptions) {
@@ -3010,7 +3205,8 @@ var MessageList = class _MessageList {
3010
3205
  if (message.role !== `assistant`) continue;
3011
3206
  for (const [index, part] of message.parts.entries()) {
3012
3207
  if (!AIV5__namespace.isToolUIPart(part)) continue;
3013
- if (message.parts.at(index + 1)?.type !== `step-start`) {
3208
+ const nextPart = message.parts.at(index + 1);
3209
+ if (nextPart && nextPart.type !== `step-start` && !AIV5__namespace.isToolUIPart(nextPart)) {
3014
3210
  message.parts.splice(index + 1, 0, { type: "step-start" });
3015
3211
  }
3016
3212
  }
@@ -3139,5 +3335,5 @@ exports.DefaultGeneratedFile = DefaultGeneratedFile;
3139
3335
  exports.DefaultGeneratedFileWithType = DefaultGeneratedFileWithType;
3140
3336
  exports.MessageList = MessageList;
3141
3337
  exports.convertMessages = convertMessages;
3142
- //# sourceMappingURL=chunk-VSM3NLUX.cjs.map
3143
- //# sourceMappingURL=chunk-VSM3NLUX.cjs.map
3338
+ //# sourceMappingURL=chunk-VRFSEZBA.cjs.map
3339
+ //# sourceMappingURL=chunk-VRFSEZBA.cjs.map