@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
@@ -208,14 +208,137 @@ function convertImageFilePart(part, downloadedAssets) {
208
208
  }
209
209
  }
210
210
  }
211
+ z.union([
212
+ z.string(),
213
+ z.instanceof(Uint8Array),
214
+ z.instanceof(ArrayBuffer),
215
+ z.custom(
216
+ // Buffer might not be available in some environments such as CloudFlare:
217
+ (value) => globalThis.Buffer?.isBuffer(value) ?? false,
218
+ { message: "Must be a Buffer" }
219
+ )
220
+ ]);
221
+ function convertDataContentToBase64String(content) {
222
+ if (typeof content === "string") {
223
+ return content;
224
+ }
225
+ if (content instanceof ArrayBuffer) {
226
+ return convertUint8ArrayToBase64$1(new Uint8Array(content));
227
+ }
228
+ return convertUint8ArrayToBase64$1(content);
229
+ }
230
+
231
+ // src/agent/message-list/prompt/image-utils.ts
232
+ function parseDataUri(dataUri) {
233
+ if (!dataUri.startsWith("data:")) {
234
+ return {
235
+ isDataUri: false,
236
+ base64Content: dataUri
237
+ };
238
+ }
239
+ const base64Index = dataUri.indexOf(",");
240
+ if (base64Index === -1) {
241
+ return {
242
+ isDataUri: true,
243
+ base64Content: dataUri
244
+ };
245
+ }
246
+ const header = dataUri.substring(5, base64Index);
247
+ const base64Content = dataUri.substring(base64Index + 1);
248
+ const semicolonIndex = header.indexOf(";");
249
+ const mimeType = semicolonIndex !== -1 ? header.substring(0, semicolonIndex) : header;
250
+ return {
251
+ isDataUri: true,
252
+ mimeType: mimeType || void 0,
253
+ base64Content
254
+ };
255
+ }
256
+ function createDataUri(base64Content, mimeType = "application/octet-stream") {
257
+ if (base64Content.startsWith("data:")) {
258
+ return base64Content;
259
+ }
260
+ return `data:${mimeType};base64,${base64Content}`;
261
+ }
262
+ function imageContentToString(image, fallbackMimeType) {
263
+ if (typeof image === "string") {
264
+ return image;
265
+ }
266
+ if (image instanceof URL) {
267
+ return image.toString();
268
+ }
269
+ if (image instanceof Uint8Array || image instanceof ArrayBuffer || globalThis.Buffer && Buffer.isBuffer(image)) {
270
+ const base64 = convertDataContentToBase64String(image);
271
+ return base64;
272
+ }
273
+ return String(image);
274
+ }
275
+ function getImageCacheKey(image) {
276
+ if (image instanceof URL) {
277
+ return image.toString();
278
+ }
279
+ if (typeof image === "string") {
280
+ return image.length;
281
+ }
282
+ if (image instanceof Uint8Array) {
283
+ return image.byteLength;
284
+ }
285
+ if (image instanceof ArrayBuffer) {
286
+ return image.byteLength;
287
+ }
288
+ return image;
289
+ }
290
+ function isValidUrl(str) {
291
+ try {
292
+ new URL(str);
293
+ return true;
294
+ } catch {
295
+ if (str.startsWith("//")) {
296
+ try {
297
+ new URL(`https:${str}`);
298
+ return true;
299
+ } catch {
300
+ return false;
301
+ }
302
+ }
303
+ return false;
304
+ }
305
+ }
306
+ function categorizeFileData(data, fallbackMimeType) {
307
+ const parsed = parseDataUri(data);
308
+ const mimeType = parsed.isDataUri && parsed.mimeType ? parsed.mimeType : fallbackMimeType;
309
+ if (parsed.isDataUri) {
310
+ return {
311
+ type: "dataUri",
312
+ mimeType,
313
+ data
314
+ };
315
+ }
316
+ if (isValidUrl(data)) {
317
+ return {
318
+ type: "url",
319
+ mimeType,
320
+ data
321
+ };
322
+ }
323
+ return {
324
+ type: "raw",
325
+ mimeType,
326
+ data
327
+ };
328
+ }
211
329
 
212
330
  // src/agent/message-list/prompt/attachments-to-parts.ts
213
331
  function attachmentsToParts(attachments) {
214
332
  const parts = [];
215
333
  for (const attachment of attachments) {
334
+ const categorized = categorizeFileData(attachment.url, attachment.contentType);
335
+ let urlString = attachment.url;
336
+ if (categorized.type === "raw") {
337
+ urlString = createDataUri(attachment.url, attachment.contentType || "application/octet-stream");
338
+ }
216
339
  let url;
217
340
  try {
218
- url = new URL(attachment.url);
341
+ url = new URL(urlString);
219
342
  } catch {
220
343
  throw new Error(`Invalid URL: ${attachment.url}`);
221
344
  }
@@ -240,13 +363,13 @@ function attachmentsToParts(attachments) {
240
363
  if (attachment.contentType?.startsWith("image/")) {
241
364
  parts.push({
242
365
  type: "image",
243
- image: attachment.url,
366
+ image: urlString,
244
367
  mimeType: attachment.contentType
245
368
  });
246
369
  } else if (attachment.contentType?.startsWith("text/")) {
247
370
  parts.push({
248
371
  type: "file",
249
- data: attachment.url,
372
+ data: urlString,
250
373
  mimeType: attachment.contentType
251
374
  });
252
375
  } else {
@@ -255,7 +378,7 @@ function attachmentsToParts(attachments) {
255
378
  }
256
379
  parts.push({
257
380
  type: "file",
258
- data: attachment.url,
381
+ data: urlString,
259
382
  mimeType: attachment.contentType
260
383
  });
261
384
  }
@@ -566,25 +689,6 @@ function convertToV1Messages(messages) {
566
689
  }
567
690
  return v1Messages;
568
691
  }
569
- z.union([
570
- z.string(),
571
- z.instanceof(Uint8Array),
572
- z.instanceof(ArrayBuffer),
573
- z.custom(
574
- // Buffer might not be available in some environments such as CloudFlare:
575
- (value) => globalThis.Buffer?.isBuffer(value) ?? false,
576
- { message: "Must be a Buffer" }
577
- )
578
- ]);
579
- function convertDataContentToBase64String(content) {
580
- if (typeof content === "string") {
581
- return content;
582
- }
583
- if (content instanceof ArrayBuffer) {
584
- return convertUint8ArrayToBase64$1(new Uint8Array(content));
585
- }
586
- return convertUint8ArrayToBase64$1(content);
587
- }
588
692
 
589
693
  // src/utils/fetchWithRetry.ts
590
694
  async function fetchWithRetry(url, options = {}, maxRetries = 3) {
@@ -706,105 +810,6 @@ async function downloadAssetsFromMessages({
706
810
  return Object.fromEntries(downloadFileList);
707
811
  }
708
812
 
709
- // src/agent/message-list/prompt/image-utils.ts
710
- function parseDataUri(dataUri) {
711
- if (!dataUri.startsWith("data:")) {
712
- return {
713
- isDataUri: false,
714
- base64Content: dataUri
715
- };
716
- }
717
- const base64Index = dataUri.indexOf(",");
718
- if (base64Index === -1) {
719
- return {
720
- isDataUri: true,
721
- base64Content: dataUri
722
- };
723
- }
724
- const header = dataUri.substring(5, base64Index);
725
- const base64Content = dataUri.substring(base64Index + 1);
726
- const semicolonIndex = header.indexOf(";");
727
- const mimeType = semicolonIndex !== -1 ? header.substring(0, semicolonIndex) : header;
728
- return {
729
- isDataUri: true,
730
- mimeType: mimeType || void 0,
731
- base64Content
732
- };
733
- }
734
- function createDataUri(base64Content, mimeType = "application/octet-stream") {
735
- if (base64Content.startsWith("data:")) {
736
- return base64Content;
737
- }
738
- return `data:${mimeType};base64,${base64Content}`;
739
- }
740
- function imageContentToString(image, fallbackMimeType) {
741
- if (typeof image === "string") {
742
- return image;
743
- }
744
- if (image instanceof URL) {
745
- return image.toString();
746
- }
747
- if (image instanceof Uint8Array || image instanceof ArrayBuffer || globalThis.Buffer && Buffer.isBuffer(image)) {
748
- const base64 = convertDataContentToBase64String(image);
749
- return base64;
750
- }
751
- return String(image);
752
- }
753
- function getImageCacheKey(image) {
754
- if (image instanceof URL) {
755
- return image.toString();
756
- }
757
- if (typeof image === "string") {
758
- return image.length;
759
- }
760
- if (image instanceof Uint8Array) {
761
- return image.byteLength;
762
- }
763
- if (image instanceof ArrayBuffer) {
764
- return image.byteLength;
765
- }
766
- return image;
767
- }
768
- function isValidUrl(str) {
769
- try {
770
- new URL(str);
771
- return true;
772
- } catch {
773
- if (str.startsWith("//")) {
774
- try {
775
- new URL(`https:${str}`);
776
- return true;
777
- } catch {
778
- return false;
779
- }
780
- }
781
- return false;
782
- }
783
- }
784
- function categorizeFileData(data, fallbackMimeType) {
785
- const parsed = parseDataUri(data);
786
- const mimeType = parsed.isDataUri && parsed.mimeType ? parsed.mimeType : fallbackMimeType;
787
- if (parsed.isDataUri) {
788
- return {
789
- type: "dataUri",
790
- mimeType,
791
- data
792
- };
793
- }
794
- if (isValidUrl(data)) {
795
- return {
796
- type: "url",
797
- mimeType,
798
- data
799
- };
800
- }
801
- return {
802
- type: "raw",
803
- mimeType,
804
- data
805
- };
806
- }
807
-
808
813
  // src/agent/message-list/utils/ai-v5/gemini-compatibility.ts
809
814
  function ensureGeminiCompatibleMessages(messages) {
810
815
  const result = [...messages];
@@ -890,6 +895,9 @@ var MessageList = class _MessageList {
890
895
  userContextMessagesPersisted = /* @__PURE__ */ new Set();
891
896
  generateMessageId;
892
897
  _agentNetworkAppend = false;
898
+ // Event recording for observability
899
+ isRecording = false;
900
+ recordedEvents = [];
893
901
  constructor({
894
902
  threadId,
895
903
  resourceId,
@@ -903,10 +911,34 @@ var MessageList = class _MessageList {
903
911
  this.generateMessageId = generateMessageId;
904
912
  this._agentNetworkAppend = _agentNetworkAppend || false;
905
913
  }
914
+ /**
915
+ * Start recording mutations to the MessageList for observability/tracing
916
+ */
917
+ startRecording() {
918
+ this.isRecording = true;
919
+ this.recordedEvents = [];
920
+ }
921
+ /**
922
+ * Stop recording and return the list of recorded events
923
+ */
924
+ stopRecording() {
925
+ this.isRecording = false;
926
+ const events = [...this.recordedEvents];
927
+ this.recordedEvents = [];
928
+ return events;
929
+ }
906
930
  add(messages, messageSource) {
907
931
  if (messageSource === `user`) messageSource = `input`;
908
932
  if (!messages) return this;
909
- for (const message of Array.isArray(messages) ? messages : [messages]) {
933
+ const messageArray = Array.isArray(messages) ? messages : [messages];
934
+ if (this.isRecording) {
935
+ this.recordedEvents.push({
936
+ type: "add",
937
+ source: messageSource,
938
+ count: messageArray.length
939
+ });
940
+ }
941
+ for (const message of messageArray) {
910
942
  this.addOne(
911
943
  typeof message === `string` ? {
912
944
  role: "user",
@@ -968,6 +1000,22 @@ var MessageList = class _MessageList {
968
1000
  this.userContextMessagesPersisted = this.deserializeSet(state.userContextMessagesPersisted);
969
1001
  return this;
970
1002
  }
1003
+ makeMessageSourceChecker() {
1004
+ const sources = {
1005
+ memory: new Set(Array.from(this.memoryMessages.values()).map((m) => m.id)),
1006
+ output: new Set(Array.from(this.newResponseMessages.values()).map((m) => m.id)),
1007
+ input: new Set(Array.from(this.newUserMessages.values()).map((m) => m.id))
1008
+ };
1009
+ return {
1010
+ ...sources,
1011
+ getSource: (msg) => {
1012
+ if (sources.memory.has(msg.id)) return "memory";
1013
+ if (sources.input.has(msg.id)) return "input";
1014
+ if (sources.output.has(msg.id)) return "response";
1015
+ return null;
1016
+ }
1017
+ };
1018
+ }
971
1019
  getLatestUserContent() {
972
1020
  const currentUserMessages = this.all.core().filter((m) => m.role === "user");
973
1021
  const content = currentUserMessages.at(-1)?.content;
@@ -992,11 +1040,34 @@ var MessageList = class _MessageList {
992
1040
  }
993
1041
  get clear() {
994
1042
  return {
1043
+ all: {
1044
+ db: () => {
1045
+ const allMessages = [...this.messages];
1046
+ this.messages = [];
1047
+ this.newUserMessages.clear();
1048
+ this.newResponseMessages.clear();
1049
+ this.userContextMessages.clear();
1050
+ if (this.isRecording && allMessages.length > 0) {
1051
+ this.recordedEvents.push({
1052
+ type: "clear",
1053
+ count: allMessages.length
1054
+ });
1055
+ }
1056
+ return allMessages;
1057
+ }
1058
+ },
995
1059
  input: {
996
1060
  db: () => {
997
1061
  const userMessages = Array.from(this.newUserMessages);
998
1062
  this.messages = this.messages.filter((m) => !this.newUserMessages.has(m));
999
1063
  this.newUserMessages.clear();
1064
+ if (this.isRecording && userMessages.length > 0) {
1065
+ this.recordedEvents.push({
1066
+ type: "clear",
1067
+ source: "input",
1068
+ count: userMessages.length
1069
+ });
1070
+ }
1000
1071
  return userMessages;
1001
1072
  }
1002
1073
  },
@@ -1005,11 +1076,46 @@ var MessageList = class _MessageList {
1005
1076
  const responseMessages = Array.from(this.newResponseMessages);
1006
1077
  this.messages = this.messages.filter((m) => !this.newResponseMessages.has(m));
1007
1078
  this.newResponseMessages.clear();
1079
+ if (this.isRecording && responseMessages.length > 0) {
1080
+ this.recordedEvents.push({
1081
+ type: "clear",
1082
+ source: "response",
1083
+ count: responseMessages.length
1084
+ });
1085
+ }
1008
1086
  return responseMessages;
1009
1087
  }
1010
1088
  }
1011
1089
  };
1012
1090
  }
1091
+ /**
1092
+ * Remove messages by ID
1093
+ * @param ids - Array of message IDs to remove
1094
+ * @returns Array of removed messages
1095
+ */
1096
+ removeByIds(ids) {
1097
+ const idsSet = new Set(ids);
1098
+ const removed = [];
1099
+ this.messages = this.messages.filter((m) => {
1100
+ if (idsSet.has(m.id)) {
1101
+ removed.push(m);
1102
+ this.memoryMessages.delete(m);
1103
+ this.newUserMessages.delete(m);
1104
+ this.newResponseMessages.delete(m);
1105
+ this.userContextMessages.delete(m);
1106
+ return false;
1107
+ }
1108
+ return true;
1109
+ });
1110
+ if (this.isRecording && removed.length > 0) {
1111
+ this.recordedEvents.push({
1112
+ type: "removeByIds",
1113
+ ids,
1114
+ count: removed.length
1115
+ });
1116
+ }
1117
+ return removed;
1118
+ }
1013
1119
  all = {
1014
1120
  db: () => this.messages,
1015
1121
  v1: () => convertToV1Messages(this.all.db()),
@@ -1313,12 +1419,47 @@ var MessageList = class _MessageList {
1313
1419
  if (unsavedMessages.length === 0) return void 0;
1314
1420
  return Math.min(...unsavedMessages.map((m) => new Date(m.createdAt).getTime()));
1315
1421
  }
1422
+ /**
1423
+ * Check if a message is a new user or response message that should be saved.
1424
+ * Checks by message ID to handle cases where the message object may be a copy.
1425
+ */
1426
+ isNewMessage(messageOrId) {
1427
+ const id = typeof messageOrId === "string" ? messageOrId : messageOrId.id;
1428
+ if (typeof messageOrId !== "string") {
1429
+ if (this.newUserMessages.has(messageOrId) || this.newResponseMessages.has(messageOrId)) {
1430
+ return true;
1431
+ }
1432
+ }
1433
+ return Array.from(this.newUserMessages).some((m) => m.id === id) || Array.from(this.newResponseMessages).some((m) => m.id === id);
1434
+ }
1316
1435
  getSystemMessages(tag) {
1317
1436
  if (tag) {
1318
1437
  return this.taggedSystemMessages[tag] || [];
1319
1438
  }
1320
1439
  return this.systemMessages;
1321
1440
  }
1441
+ /**
1442
+ * Get all system messages (both tagged and untagged)
1443
+ * @returns Array of all system messages
1444
+ */
1445
+ getAllSystemMessages() {
1446
+ return [...this.systemMessages, ...Object.values(this.taggedSystemMessages).flat()];
1447
+ }
1448
+ /**
1449
+ * Replace all system messages with new ones
1450
+ * This clears both tagged and untagged system messages and replaces them with the provided array
1451
+ * @param messages - Array of system messages to set
1452
+ */
1453
+ replaceAllSystemMessages(messages) {
1454
+ this.systemMessages = [];
1455
+ this.taggedSystemMessages = {};
1456
+ for (const message of messages) {
1457
+ if (message.role === "system") {
1458
+ this.systemMessages.push(message);
1459
+ }
1460
+ }
1461
+ return this;
1462
+ }
1322
1463
  addSystem(messages, tag) {
1323
1464
  if (!messages) return this;
1324
1465
  for (const message of Array.isArray(messages) ? messages : [messages]) {
@@ -1377,8 +1518,21 @@ var MessageList = class _MessageList {
1377
1518
  if (tag && !this.isDuplicateSystem(coreMessage, tag)) {
1378
1519
  this.taggedSystemMessages[tag] ||= [];
1379
1520
  this.taggedSystemMessages[tag].push(coreMessage);
1521
+ if (this.isRecording) {
1522
+ this.recordedEvents.push({
1523
+ type: "addSystem",
1524
+ tag,
1525
+ message: coreMessage
1526
+ });
1527
+ }
1380
1528
  } else if (!tag && !this.isDuplicateSystem(coreMessage)) {
1381
1529
  this.systemMessages.push(coreMessage);
1530
+ if (this.isRecording) {
1531
+ this.recordedEvents.push({
1532
+ type: "addSystem",
1533
+ message: coreMessage
1534
+ });
1535
+ }
1382
1536
  }
1383
1537
  }
1384
1538
  isDuplicateSystem(message, tag) {
@@ -1404,9 +1558,20 @@ var MessageList = class _MessageList {
1404
1558
  if (m.content.parts.length) {
1405
1559
  for (const part of m.content.parts) {
1406
1560
  if (part.type === `file`) {
1561
+ let normalizedUrl;
1562
+ if (typeof part.data === "string") {
1563
+ const categorized = categorizeFileData(part.data, part.mimeType);
1564
+ if (categorized.type === "raw") {
1565
+ normalizedUrl = createDataUri(part.data, part.mimeType || "application/octet-stream");
1566
+ } else {
1567
+ normalizedUrl = part.data;
1568
+ }
1569
+ } else {
1570
+ normalizedUrl = part.data;
1571
+ }
1407
1572
  experimentalAttachments.push({
1408
1573
  contentType: part.mimeType,
1409
- url: part.data
1574
+ url: normalizedUrl
1410
1575
  });
1411
1576
  } else if (part.type === "tool-invocation" && (part.toolInvocation.state === "call" || part.toolInvocation.state === "partial-call")) {
1412
1577
  continue;
@@ -1647,6 +1812,9 @@ var MessageList = class _MessageList {
1647
1812
  } else if (messageSource === `response`) {
1648
1813
  this.newResponseMessages.add(messageV2);
1649
1814
  this.newResponseMessagesPersisted.add(messageV2);
1815
+ if (this.newUserMessages.has(messageV2)) {
1816
+ this.newUserMessages.delete(messageV2);
1817
+ }
1650
1818
  } else if (messageSource === `input`) {
1651
1819
  this.newUserMessages.add(messageV2);
1652
1820
  this.newUserMessagesPersisted.add(messageV2);
@@ -1775,8 +1943,10 @@ var MessageList = class _MessageList {
1775
1943
  }
1776
1944
  if (_MessageList.isAIV5CoreMessage(message)) {
1777
1945
  const dbMsg = _MessageList.aiV5ModelMessageToMastraDBMessage(message, messageSource);
1946
+ const rawCreatedAt = "metadata" in message && message.metadata && typeof message.metadata === "object" && "createdAt" in message.metadata ? message.metadata.createdAt : void 0;
1778
1947
  const result = {
1779
1948
  ...dbMsg,
1949
+ createdAt: this.generateCreatedAt(messageSource, rawCreatedAt),
1780
1950
  threadId: this.memoryInfo?.threadId,
1781
1951
  resourceId: this.memoryInfo?.resourceId
1782
1952
  };
@@ -1784,8 +1954,10 @@ var MessageList = class _MessageList {
1784
1954
  }
1785
1955
  if (_MessageList.isAIV5UIMessage(message)) {
1786
1956
  const dbMsg = _MessageList.aiV5UIMessageToMastraDBMessage(message);
1957
+ const rawCreatedAt = "createdAt" in message ? message.createdAt : void 0;
1787
1958
  return {
1788
1959
  ...dbMsg,
1960
+ createdAt: this.generateCreatedAt(messageSource, rawCreatedAt),
1789
1961
  threadId: this.memoryInfo?.threadId,
1790
1962
  resourceId: this.memoryInfo?.resourceId
1791
1963
  };
@@ -1795,16 +1967,16 @@ var MessageList = class _MessageList {
1795
1967
  lastCreatedAt;
1796
1968
  // this makes sure messages added in order will always have a date atleast 1ms apart.
1797
1969
  generateCreatedAt(messageSource, start) {
1798
- start = start instanceof Date ? start : start ? new Date(start) : void 0;
1799
- if (start && !this.lastCreatedAt) {
1800
- this.lastCreatedAt = start.getTime();
1801
- return start;
1970
+ const startDate = start instanceof Date ? start : typeof start === "string" || typeof start === "number" ? new Date(start) : void 0;
1971
+ if (startDate && !this.lastCreatedAt) {
1972
+ this.lastCreatedAt = startDate.getTime();
1973
+ return startDate;
1802
1974
  }
1803
- if (start && messageSource === `memory`) {
1804
- return start;
1975
+ if (startDate && messageSource === `memory`) {
1976
+ return startDate;
1805
1977
  }
1806
1978
  const now = /* @__PURE__ */ new Date();
1807
- const nowTime = start?.getTime() || now.getTime();
1979
+ const nowTime = startDate?.getTime() || now.getTime();
1808
1980
  const lastTime = this.messages.reduce((p, m) => {
1809
1981
  if (m.createdAt.getTime() > p) return m.createdAt.getTime();
1810
1982
  return p;
@@ -2088,10 +2260,14 @@ var MessageList = class _MessageList {
2088
2260
  if (coreMessage.providerOptions) {
2089
2261
  content.providerMetadata = coreMessage.providerOptions;
2090
2262
  }
2263
+ if ("metadata" in coreMessage && coreMessage.metadata !== null && coreMessage.metadata !== void 0) {
2264
+ content.metadata = coreMessage.metadata;
2265
+ }
2266
+ const rawCreatedAt = "metadata" in coreMessage && coreMessage.metadata && typeof coreMessage.metadata === "object" && "createdAt" in coreMessage.metadata ? coreMessage.metadata.createdAt : void 0;
2091
2267
  return {
2092
2268
  id,
2093
2269
  role: _MessageList.getRole(coreMessage),
2094
- createdAt: this.generateCreatedAt(messageSource),
2270
+ createdAt: this.generateCreatedAt(messageSource, rawCreatedAt),
2095
2271
  threadId: this.memoryInfo?.threadId,
2096
2272
  resourceId: this.memoryInfo?.resourceId,
2097
2273
  content
@@ -2144,6 +2320,11 @@ var MessageList = class _MessageList {
2144
2320
  }
2145
2321
  return prev;
2146
2322
  }, 0);
2323
+ const partAny = part;
2324
+ if (partAny && Object.hasOwn(partAny, "providerMetadata") && partAny.providerMetadata && Object.hasOwn(partAny.providerMetadata, "openai") && partAny.providerMetadata.openai && Object.hasOwn(partAny.providerMetadata.openai, "itemId")) {
2325
+ const itemId = partAny.providerMetadata.openai.itemId;
2326
+ key += `|${itemId}`;
2327
+ }
2147
2328
  }
2148
2329
  if (part.type === `file`) {
2149
2330
  key += part.data;
@@ -2290,9 +2471,23 @@ var MessageList = class _MessageList {
2290
2471
  if (role === `tool` || role === `assistant`) {
2291
2472
  throw new Error(incompatibleMessage);
2292
2473
  }
2474
+ let processedImage;
2475
+ if (part.image instanceof URL || part.image instanceof Uint8Array) {
2476
+ processedImage = part.image;
2477
+ } else if (Buffer.isBuffer(part.image) || part.image instanceof ArrayBuffer) {
2478
+ processedImage = new Uint8Array(part.image);
2479
+ } else {
2480
+ const categorized = categorizeFileData(part.image, part.mimeType);
2481
+ if (categorized.type === "raw") {
2482
+ const dataUri = createDataUri(part.image, part.mimeType || "image/png");
2483
+ processedImage = new URL(dataUri);
2484
+ } else {
2485
+ processedImage = new URL(part.image);
2486
+ }
2487
+ }
2293
2488
  roleContent[role].push({
2294
2489
  ...part,
2295
- 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)
2490
+ image: processedImage
2296
2491
  });
2297
2492
  break;
2298
2493
  }
@@ -2942,7 +3137,7 @@ var MessageList = class _MessageList {
2942
3137
  }
2943
3138
  }
2944
3139
  const contentString = mastraDBParts.filter((p) => p.type === "text").map((p) => p.text).join("\n");
2945
- const metadata = {};
3140
+ const metadata = "metadata" in modelMsg && modelMsg.metadata !== null && modelMsg.metadata !== void 0 ? modelMsg.metadata : {};
2946
3141
  const id = `id` in modelMsg && typeof modelMsg.id === `string` ? modelMsg.id : `msg-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
2947
3142
  const message = {
2948
3143
  id,
@@ -2955,7 +3150,7 @@ var MessageList = class _MessageList {
2955
3150
  reasoning: reasoningParts.length > 0 ? reasoningParts.join("\n") : void 0,
2956
3151
  experimental_attachments: experimental_attachments.length > 0 ? experimental_attachments : void 0,
2957
3152
  content: contentString || void 0,
2958
- metadata
3153
+ metadata: Object.keys(metadata).length > 0 ? metadata : void 0
2959
3154
  }
2960
3155
  };
2961
3156
  if (modelMsg.providerOptions) {
@@ -2988,7 +3183,8 @@ var MessageList = class _MessageList {
2988
3183
  if (message.role !== `assistant`) continue;
2989
3184
  for (const [index, part] of message.parts.entries()) {
2990
3185
  if (!AIV5.isToolUIPart(part)) continue;
2991
- if (message.parts.at(index + 1)?.type !== `step-start`) {
3186
+ const nextPart = message.parts.at(index + 1);
3187
+ if (nextPart && nextPart.type !== `step-start` && !AIV5.isToolUIPart(nextPart)) {
2992
3188
  message.parts.splice(index + 1, 0, { type: "step-start" });
2993
3189
  }
2994
3190
  }
@@ -3114,5 +3310,5 @@ var MessageList = class _MessageList {
3114
3310
  };
3115
3311
 
3116
3312
  export { DefaultGeneratedFile, DefaultGeneratedFileWithType, MessageList, convertMessages };
3117
- //# sourceMappingURL=chunk-W3DD3XP5.js.map
3118
- //# sourceMappingURL=chunk-W3DD3XP5.js.map
3313
+ //# sourceMappingURL=chunk-APMPOYPI.js.map
3314
+ //# sourceMappingURL=chunk-APMPOYPI.js.map