@mastra/server 0.0.0-unified-sidebar-20251010130811 → 0.0.0-unified-workspace-snapshot-20260128233410

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 (480) hide show
  1. package/CHANGELOG.md +2775 -3
  2. package/README.md +2 -2
  3. package/a2a/store.d.ts +1 -0
  4. package/auth.d.ts +1 -0
  5. package/dist/{chunk-SIW6CYO3.js → chunk-24SISJRB.js} +13 -17
  6. package/dist/chunk-24SISJRB.js.map +1 -0
  7. package/dist/chunk-2ZLYWOYM.cjs +623 -0
  8. package/dist/chunk-2ZLYWOYM.cjs.map +1 -0
  9. package/dist/chunk-3W67K7YE.js +13 -0
  10. package/dist/chunk-3W67K7YE.js.map +1 -0
  11. package/dist/chunk-4G5R2KZI.js +312 -0
  12. package/dist/chunk-4G5R2KZI.js.map +1 -0
  13. package/dist/chunk-4HFYR562.cjs +82 -0
  14. package/dist/chunk-4HFYR562.cjs.map +1 -0
  15. package/dist/chunk-4LVJBXI2.cjs +324 -0
  16. package/dist/chunk-4LVJBXI2.cjs.map +1 -0
  17. package/dist/chunk-5GXOE6RS.cjs +33179 -0
  18. package/dist/chunk-5GXOE6RS.cjs.map +1 -0
  19. package/dist/chunk-5HVOCRC4.cjs +344 -0
  20. package/dist/chunk-5HVOCRC4.cjs.map +1 -0
  21. package/dist/chunk-5VXFAF6R.cjs +212 -0
  22. package/dist/chunk-5VXFAF6R.cjs.map +1 -0
  23. package/dist/{chunk-7NADHFD2.cjs → chunk-64ITUOXI.cjs} +2 -2
  24. package/dist/chunk-64ITUOXI.cjs.map +1 -0
  25. package/dist/{chunk-XVPBGW6Y.cjs → chunk-6G2RQWKA.cjs} +17 -21
  26. package/dist/chunk-6G2RQWKA.cjs.map +1 -0
  27. package/dist/{chunk-MMROOK5J.js → chunk-6QWQZI4Q.js} +2 -2
  28. package/dist/{chunk-7NADHFD2.cjs.map → chunk-6QWQZI4Q.js.map} +1 -1
  29. package/dist/chunk-7D3UAMQM.cjs +82 -0
  30. package/dist/chunk-7D3UAMQM.cjs.map +1 -0
  31. package/dist/chunk-7XHQEMU2.js +246 -0
  32. package/dist/chunk-7XHQEMU2.js.map +1 -0
  33. package/dist/chunk-AAHPYUEC.cjs +211 -0
  34. package/dist/chunk-AAHPYUEC.cjs.map +1 -0
  35. package/dist/chunk-AOU2LXZK.js +1190 -0
  36. package/dist/chunk-AOU2LXZK.js.map +1 -0
  37. package/dist/{chunk-2PLXW4ZX.cjs → chunk-AQI6GLTN.cjs} +74 -74
  38. package/dist/{chunk-2PLXW4ZX.cjs.map → chunk-AQI6GLTN.cjs.map} +1 -1
  39. package/dist/chunk-BB46GZPA.js +245 -0
  40. package/dist/chunk-BB46GZPA.js.map +1 -0
  41. package/dist/chunk-CW327NIR.js +442 -0
  42. package/dist/chunk-CW327NIR.js.map +1 -0
  43. package/dist/chunk-D5VCL56B.js +317 -0
  44. package/dist/chunk-D5VCL56B.js.map +1 -0
  45. package/dist/{chunk-YWOK4F5A.js → chunk-DEG24CE7.js} +68 -9
  46. package/dist/chunk-DEG24CE7.js.map +1 -0
  47. package/dist/chunk-DH5UZ4DD.js +203 -0
  48. package/dist/chunk-DH5UZ4DD.js.map +1 -0
  49. package/dist/chunk-EJCBKZET.cjs +219 -0
  50. package/dist/chunk-EJCBKZET.cjs.map +1 -0
  51. package/dist/{chunk-VY4ENABS.cjs → chunk-ERXWG5L2.cjs} +68 -8
  52. package/dist/chunk-ERXWG5L2.cjs.map +1 -0
  53. package/dist/chunk-ETCMV326.cjs +450 -0
  54. package/dist/chunk-ETCMV326.cjs.map +1 -0
  55. package/dist/chunk-ETVLWGEB.js +596 -0
  56. package/dist/chunk-ETVLWGEB.js.map +1 -0
  57. package/dist/chunk-EV5H2JQU.js +45 -0
  58. package/dist/chunk-EV5H2JQU.js.map +1 -0
  59. package/dist/chunk-FA66XJZJ.js +334 -0
  60. package/dist/chunk-FA66XJZJ.js.map +1 -0
  61. package/dist/chunk-FRRHYZR6.cjs +88 -0
  62. package/dist/chunk-FRRHYZR6.cjs.map +1 -0
  63. package/dist/chunk-G34VLTQC.js +33140 -0
  64. package/dist/chunk-G34VLTQC.js.map +1 -0
  65. package/dist/chunk-H2FLPRXD.cjs +1195 -0
  66. package/dist/chunk-H2FLPRXD.cjs.map +1 -0
  67. package/dist/{chunk-RQK4FQUD.js → chunk-H66LLFDL.js} +5 -47
  68. package/dist/chunk-H66LLFDL.js.map +1 -0
  69. package/dist/chunk-H6UO5RMT.cjs +252 -0
  70. package/dist/chunk-H6UO5RMT.cjs.map +1 -0
  71. package/dist/chunk-HDGF45K7.cjs +128 -0
  72. package/dist/chunk-HDGF45K7.cjs.map +1 -0
  73. package/dist/chunk-HT4LP3BO.js +75 -0
  74. package/dist/chunk-HT4LP3BO.js.map +1 -0
  75. package/dist/chunk-HZINLMHL.cjs +252 -0
  76. package/dist/chunk-HZINLMHL.cjs.map +1 -0
  77. package/dist/chunk-I4MLE3R3.js +212 -0
  78. package/dist/chunk-I4MLE3R3.js.map +1 -0
  79. package/dist/chunk-I7CFYVAL.cjs +322 -0
  80. package/dist/chunk-I7CFYVAL.cjs.map +1 -0
  81. package/dist/chunk-IS3HHGL4.js +250 -0
  82. package/dist/chunk-IS3HHGL4.js.map +1 -0
  83. package/dist/chunk-JHSXUNQV.cjs +703 -0
  84. package/dist/chunk-JHSXUNQV.cjs.map +1 -0
  85. package/dist/chunk-K4HSW5ZF.js +77 -0
  86. package/dist/chunk-K4HSW5ZF.js.map +1 -0
  87. package/dist/{chunk-HPXAM2PG.js → chunk-KADBYP7R.js} +231 -37
  88. package/dist/chunk-KADBYP7R.js.map +1 -0
  89. package/dist/chunk-LFTVDHOD.js +200 -0
  90. package/dist/chunk-LFTVDHOD.js.map +1 -0
  91. package/dist/chunk-LJ6YRVDI.cjs +15 -0
  92. package/dist/chunk-LJ6YRVDI.cjs.map +1 -0
  93. package/dist/{chunk-ZULZ2752.js → chunk-LOA7RQYO.js} +3 -3
  94. package/dist/{chunk-ZULZ2752.js.map → chunk-LOA7RQYO.js.map} +1 -1
  95. package/dist/chunk-MCYD5LW7.cjs +90 -0
  96. package/dist/chunk-MCYD5LW7.cjs.map +1 -0
  97. package/dist/chunk-ONN5EA7E.js +26 -0
  98. package/dist/chunk-ONN5EA7E.js.map +1 -0
  99. package/dist/chunk-OS7SAIRA.js +250 -0
  100. package/dist/chunk-OS7SAIRA.js.map +1 -0
  101. package/dist/chunk-OZGT6GOC.cjs +1405 -0
  102. package/dist/chunk-OZGT6GOC.cjs.map +1 -0
  103. package/dist/chunk-P7IT44NU.js +1153 -0
  104. package/dist/chunk-P7IT44NU.js.map +1 -0
  105. package/dist/chunk-PWXUI3OG.cjs +252 -0
  106. package/dist/chunk-PWXUI3OG.cjs.map +1 -0
  107. package/dist/chunk-QXDNFBJQ.js +220 -0
  108. package/dist/chunk-QXDNFBJQ.js.map +1 -0
  109. package/dist/chunk-RIX6WEJ2.js +83 -0
  110. package/dist/chunk-RIX6WEJ2.js.map +1 -0
  111. package/dist/{chunk-TOP25AIO.cjs → chunk-RSSBE2Q6.cjs} +237 -37
  112. package/dist/chunk-RSSBE2Q6.cjs.map +1 -0
  113. package/dist/chunk-S4SLHUJ7.cjs +253 -0
  114. package/dist/chunk-S4SLHUJ7.cjs.map +1 -0
  115. package/dist/chunk-SG3SQGMV.js +332 -0
  116. package/dist/chunk-SG3SQGMV.js.map +1 -0
  117. package/dist/chunk-SRQBCSNC.js +184 -0
  118. package/dist/chunk-SRQBCSNC.js.map +1 -0
  119. package/dist/chunk-SUKFO7UM.cjs +29 -0
  120. package/dist/chunk-SUKFO7UM.cjs.map +1 -0
  121. package/dist/chunk-T5KH32UA.cjs +47 -0
  122. package/dist/chunk-T5KH32UA.cjs.map +1 -0
  123. package/dist/chunk-TCWPL26W.js +119 -0
  124. package/dist/chunk-TCWPL26W.js.map +1 -0
  125. package/dist/chunk-UNWXKDYP.js +1373 -0
  126. package/dist/chunk-UNWXKDYP.js.map +1 -0
  127. package/dist/chunk-USR6JK77.js +62 -0
  128. package/dist/chunk-USR6JK77.js.map +1 -0
  129. package/dist/chunk-VL4AR6TK.cjs +284 -0
  130. package/dist/chunk-VL4AR6TK.cjs.map +1 -0
  131. package/dist/{chunk-LPM6BBAX.cjs → chunk-VX3VN7FN.cjs} +4 -55
  132. package/dist/chunk-VX3VN7FN.cjs.map +1 -0
  133. package/dist/chunk-W6H577VU.cjs +190 -0
  134. package/dist/chunk-W6H577VU.cjs.map +1 -0
  135. package/dist/chunk-XIRAKXBF.cjs +1220 -0
  136. package/dist/chunk-XIRAKXBF.cjs.map +1 -0
  137. package/dist/chunk-XKLJYRAA.js +77 -0
  138. package/dist/chunk-XKLJYRAA.js.map +1 -0
  139. package/dist/chunk-Z45X45WX.js +684 -0
  140. package/dist/chunk-Z45X45WX.js.map +1 -0
  141. package/dist/chunk-ZI4WQHQA.cjs +352 -0
  142. package/dist/chunk-ZI4WQHQA.cjs.map +1 -0
  143. package/dist/chunk-ZKMVCV4G.cjs +71 -0
  144. package/dist/chunk-ZKMVCV4G.cjs.map +1 -0
  145. package/dist/{dist-G2BYZJOC.cjs → dist-7NTDEVLP.cjs} +28 -28
  146. package/dist/{dist-G2BYZJOC.cjs.map → dist-7NTDEVLP.cjs.map} +1 -1
  147. package/dist/{dist-X7XR3M3Z.js → dist-B5GMANA6.js} +3 -3
  148. package/dist/{dist-X7XR3M3Z.js.map → dist-B5GMANA6.js.map} +1 -1
  149. package/dist/dist-EDO7GEGI.js +3 -0
  150. package/dist/{dist-YREX2TJT.js.map → dist-EDO7GEGI.js.map} +1 -1
  151. package/dist/{dist-RFMYFILX.cjs → dist-OF24ZMHH.cjs} +30 -30
  152. package/dist/{dist-RFMYFILX.cjs.map → dist-OF24ZMHH.cjs.map} +1 -1
  153. package/dist/{dist-4MVGNSRL.cjs → dist-P6YSNLL3.cjs} +20 -20
  154. package/dist/{dist-4MVGNSRL.cjs.map → dist-P6YSNLL3.cjs.map} +1 -1
  155. package/dist/{dist-PQZUVLPC.js → dist-SMBO5KVB.js} +3 -3
  156. package/dist/{dist-PQZUVLPC.js.map → dist-SMBO5KVB.js.map} +1 -1
  157. package/dist/{dist-XVBSOGFK.js → dist-THPMW5QR.js} +3 -3
  158. package/dist/{dist-XVBSOGFK.js.map → dist-THPMW5QR.js.map} +1 -1
  159. package/dist/{dist-FZYCV3VB.cjs → dist-VZTG56X2.cjs} +26 -26
  160. package/dist/{dist-FZYCV3VB.cjs.map → dist-VZTG56X2.cjs.map} +1 -1
  161. package/dist/dist-ZLC23RVC.cjs +16 -0
  162. package/dist/{dist-P4MXBQ3U.cjs.map → dist-ZLC23RVC.cjs.map} +1 -1
  163. package/dist/{dist-R7WYX6LC.js → dist-ZOZ6MHJH.js} +3 -3
  164. package/dist/{dist-R7WYX6LC.js.map → dist-ZOZ6MHJH.js.map} +1 -1
  165. package/dist/docs/README.md +31 -0
  166. package/dist/docs/SKILL.md +32 -0
  167. package/dist/docs/SOURCE_MAP.json +6 -0
  168. package/dist/docs/server/01-custom-adapters.md +380 -0
  169. package/dist/docs/server/02-reference.md +833 -0
  170. package/dist/server/auth/defaults.d.ts +3 -0
  171. package/dist/server/auth/defaults.d.ts.map +1 -0
  172. package/dist/server/auth/helpers.d.ts +21 -0
  173. package/dist/server/auth/helpers.d.ts.map +1 -0
  174. package/dist/server/auth/index.cjs +48 -0
  175. package/dist/server/auth/index.cjs.map +1 -0
  176. package/dist/server/auth/index.d.ts +3 -0
  177. package/dist/server/auth/index.d.ts.map +1 -0
  178. package/dist/server/auth/index.js +3 -0
  179. package/dist/server/auth/index.js.map +1 -0
  180. package/dist/server/auth/path-pattern.d.ts +43 -0
  181. package/dist/server/auth/path-pattern.d.ts.map +1 -0
  182. package/dist/server/constants.d.ts +51 -0
  183. package/dist/server/constants.d.ts.map +1 -0
  184. package/dist/server/handlers/a2a.cjs +15 -7
  185. package/dist/server/handlers/a2a.d.ts +492 -10
  186. package/dist/server/handlers/a2a.d.ts.map +1 -1
  187. package/dist/server/handlers/a2a.js +1 -1
  188. package/dist/server/handlers/agent-builder.cjs +31 -31
  189. package/dist/server/handlers/agent-builder.d.ts +622 -84
  190. package/dist/server/handlers/agent-builder.d.ts.map +1 -1
  191. package/dist/server/handlers/agent-builder.js +1 -1
  192. package/dist/server/handlers/agent-versions.cjs +60 -0
  193. package/dist/server/handlers/agent-versions.cjs.map +1 -0
  194. package/dist/server/handlers/agent-versions.d.ts +479 -0
  195. package/dist/server/handlers/agent-versions.d.ts.map +1 -0
  196. package/dist/server/handlers/agent-versions.js +3 -0
  197. package/dist/server/handlers/agent-versions.js.map +1 -0
  198. package/dist/server/handlers/agents.cjs +85 -37
  199. package/dist/server/handlers/agents.d.ts +3385 -149
  200. package/dist/server/handlers/agents.d.ts.map +1 -1
  201. package/dist/server/handlers/agents.js +1 -1
  202. package/dist/server/handlers/error.cjs +6 -2
  203. package/dist/server/handlers/error.d.ts +12 -0
  204. package/dist/server/handlers/error.d.ts.map +1 -1
  205. package/dist/server/handlers/error.js +1 -1
  206. package/dist/server/handlers/logs.cjs +7 -7
  207. package/dist/server/handlers/logs.d.ts +135 -27
  208. package/dist/server/handlers/logs.d.ts.map +1 -1
  209. package/dist/server/handlers/logs.js +1 -1
  210. package/dist/server/handlers/mcp.cjs +40 -0
  211. package/dist/server/handlers/mcp.cjs.map +1 -0
  212. package/dist/server/handlers/mcp.d.ts +132 -0
  213. package/dist/server/handlers/mcp.d.ts.map +1 -0
  214. package/dist/server/handlers/mcp.js +3 -0
  215. package/dist/server/handlers/mcp.js.map +1 -0
  216. package/dist/server/handlers/memory.cjs +67 -31
  217. package/dist/server/handlers/memory.d.ts +1073 -102
  218. package/dist/server/handlers/memory.d.ts.map +1 -1
  219. package/dist/server/handlers/memory.js +1 -1
  220. package/dist/server/handlers/observability.cjs +9 -9
  221. package/dist/server/handlers/observability.d.ts +147 -42
  222. package/dist/server/handlers/observability.d.ts.map +1 -1
  223. package/dist/server/handlers/observability.js +1 -1
  224. package/dist/server/handlers/processors.cjs +20 -0
  225. package/dist/server/handlers/processors.cjs.map +1 -0
  226. package/dist/server/handlers/processors.d.ts +181 -0
  227. package/dist/server/handlers/processors.d.ts.map +1 -0
  228. package/dist/server/handlers/processors.js +3 -0
  229. package/dist/server/handlers/processors.js.map +1 -0
  230. package/dist/server/handlers/scores.cjs +13 -13
  231. package/dist/server/handlers/scores.d.ts +110 -240
  232. package/dist/server/handlers/scores.d.ts.map +1 -1
  233. package/dist/server/handlers/scores.js +1 -1
  234. package/dist/server/handlers/stored-agents.cjs +28 -0
  235. package/dist/server/handlers/stored-agents.cjs.map +1 -0
  236. package/dist/server/handlers/stored-agents.d.ts +317 -0
  237. package/dist/server/handlers/stored-agents.d.ts.map +1 -0
  238. package/dist/server/handlers/stored-agents.js +3 -0
  239. package/dist/server/handlers/stored-agents.js.map +1 -0
  240. package/dist/server/handlers/system.cjs +12 -0
  241. package/dist/server/handlers/system.cjs.map +1 -0
  242. package/dist/server/handlers/system.d.ts +7 -0
  243. package/dist/server/handlers/system.d.ts.map +1 -0
  244. package/dist/server/handlers/system.js +3 -0
  245. package/dist/server/handlers/system.js.map +1 -0
  246. package/dist/server/handlers/test-utils.cjs +15 -0
  247. package/dist/server/handlers/test-utils.cjs.map +1 -0
  248. package/dist/server/handlers/test-utils.d.ts +6 -0
  249. package/dist/server/handlers/test-utils.d.ts.map +1 -0
  250. package/dist/server/handlers/test-utils.js +13 -0
  251. package/dist/server/handlers/test-utils.js.map +1 -0
  252. package/dist/server/handlers/tools.cjs +11 -11
  253. package/dist/server/handlers/tools.d.ts +69 -23
  254. package/dist/server/handlers/tools.d.ts.map +1 -1
  255. package/dist/server/handlers/tools.js +1 -1
  256. package/dist/server/handlers/utils.cjs +27 -3
  257. package/dist/server/handlers/utils.d.ts +31 -0
  258. package/dist/server/handlers/utils.d.ts.map +1 -1
  259. package/dist/server/handlers/utils.js +1 -1
  260. package/dist/server/handlers/vector.cjs +31 -7
  261. package/dist/server/handlers/vector.d.ts +93 -9
  262. package/dist/server/handlers/vector.d.ts.map +1 -1
  263. package/dist/server/handlers/vector.js +1 -1
  264. package/dist/server/handlers/voice.cjs +21 -9
  265. package/dist/server/handlers/voice.d.ts +81 -40
  266. package/dist/server/handlers/voice.d.ts.map +1 -1
  267. package/dist/server/handlers/voice.js +1 -1
  268. package/dist/server/handlers/workflows.cjs +57 -37
  269. package/dist/server/handlers/workflows.d.ts +983 -78
  270. package/dist/server/handlers/workflows.d.ts.map +1 -1
  271. package/dist/server/handlers/workflows.js +1 -1
  272. package/dist/server/handlers/workspace.cjs +80 -0
  273. package/dist/server/handlers/workspace.cjs.map +1 -0
  274. package/dist/server/handlers/workspace.d.ts +591 -0
  275. package/dist/server/handlers/workspace.d.ts.map +1 -0
  276. package/dist/server/handlers/workspace.js +3 -0
  277. package/dist/server/handlers/workspace.js.map +1 -0
  278. package/dist/server/handlers.cjs +32 -37
  279. package/dist/server/handlers.d.ts +1 -2
  280. package/dist/server/handlers.d.ts.map +1 -1
  281. package/dist/server/handlers.js +12 -13
  282. package/dist/server/http-exception.d.ts +0 -5
  283. package/dist/server/http-exception.d.ts.map +1 -1
  284. package/dist/server/schemas/a2a.d.ts +786 -0
  285. package/dist/server/schemas/a2a.d.ts.map +1 -0
  286. package/dist/server/schemas/agent-builder.d.ts +225 -0
  287. package/dist/server/schemas/agent-builder.d.ts.map +1 -0
  288. package/dist/server/schemas/agent-versions.d.ts +1646 -0
  289. package/dist/server/schemas/agent-versions.d.ts.map +1 -0
  290. package/dist/server/schemas/agents.d.ts +1815 -0
  291. package/dist/server/schemas/agents.d.ts.map +1 -0
  292. package/dist/server/schemas/common.d.ts +179 -0
  293. package/dist/server/schemas/common.d.ts.map +1 -0
  294. package/dist/server/schemas/logs.d.ts +124 -0
  295. package/dist/server/schemas/logs.d.ts.map +1 -0
  296. package/dist/server/schemas/mcp.d.ts +299 -0
  297. package/dist/server/schemas/mcp.d.ts.map +1 -0
  298. package/dist/server/schemas/memory.d.ts +1216 -0
  299. package/dist/server/schemas/memory.d.ts.map +1 -0
  300. package/dist/server/schemas/processors.d.ts +519 -0
  301. package/dist/server/schemas/processors.d.ts.map +1 -0
  302. package/dist/server/schemas/scores.d.ts +259 -0
  303. package/dist/server/schemas/scores.d.ts.map +1 -0
  304. package/dist/server/schemas/stored-agents.d.ts +850 -0
  305. package/dist/server/schemas/stored-agents.d.ts.map +1 -0
  306. package/dist/server/schemas/system.d.ts +36 -0
  307. package/dist/server/schemas/system.d.ts.map +1 -0
  308. package/dist/server/schemas/vectors.d.ts +107 -0
  309. package/dist/server/schemas/vectors.d.ts.map +1 -0
  310. package/dist/server/schemas/workflows.d.ts +863 -0
  311. package/dist/server/schemas/workflows.d.ts.map +1 -0
  312. package/dist/server/schemas/workspace.d.ts +1107 -0
  313. package/dist/server/schemas/workspace.d.ts.map +1 -0
  314. package/dist/server/server-adapter/index.cjs +661 -0
  315. package/dist/server/server-adapter/index.cjs.map +1 -0
  316. package/dist/server/server-adapter/index.d.ts +163 -0
  317. package/dist/server/server-adapter/index.d.ts.map +1 -0
  318. package/dist/server/server-adapter/index.js +630 -0
  319. package/dist/server/server-adapter/index.js.map +1 -0
  320. package/dist/server/server-adapter/openapi-utils.d.ts +69 -0
  321. package/dist/server/server-adapter/openapi-utils.d.ts.map +1 -0
  322. package/dist/server/server-adapter/redact.d.ts +26 -0
  323. package/dist/server/server-adapter/redact.d.ts.map +1 -0
  324. package/dist/server/server-adapter/routes/a2a.d.ts +3 -0
  325. package/dist/server/server-adapter/routes/a2a.d.ts.map +1 -0
  326. package/dist/server/server-adapter/routes/agent-builder.d.ts +3 -0
  327. package/dist/server/server-adapter/routes/agent-builder.d.ts.map +1 -0
  328. package/dist/server/server-adapter/routes/agents.d.ts +3 -0
  329. package/dist/server/server-adapter/routes/agents.d.ts.map +1 -0
  330. package/dist/server/server-adapter/routes/index.d.ts +52 -0
  331. package/dist/server/server-adapter/routes/index.d.ts.map +1 -0
  332. package/dist/server/server-adapter/routes/legacy.d.ts +7 -0
  333. package/dist/server/server-adapter/routes/legacy.d.ts.map +1 -0
  334. package/dist/server/server-adapter/routes/logs.d.ts +3 -0
  335. package/dist/server/server-adapter/routes/logs.d.ts.map +1 -0
  336. package/dist/server/server-adapter/routes/mcp.d.ts +9 -0
  337. package/dist/server/server-adapter/routes/mcp.d.ts.map +1 -0
  338. package/dist/server/server-adapter/routes/memory.d.ts +3 -0
  339. package/dist/server/server-adapter/routes/memory.d.ts.map +1 -0
  340. package/dist/server/server-adapter/routes/observability.d.ts +3 -0
  341. package/dist/server/server-adapter/routes/observability.d.ts.map +1 -0
  342. package/dist/server/server-adapter/routes/processors.d.ts +3 -0
  343. package/dist/server/server-adapter/routes/processors.d.ts.map +1 -0
  344. package/dist/server/server-adapter/routes/route-builder.d.ts +112 -0
  345. package/dist/server/server-adapter/routes/route-builder.d.ts.map +1 -0
  346. package/dist/server/server-adapter/routes/scorers.d.ts +3 -0
  347. package/dist/server/server-adapter/routes/scorers.d.ts.map +1 -0
  348. package/dist/server/server-adapter/routes/stored-agents.d.ts +8 -0
  349. package/dist/server/server-adapter/routes/stored-agents.d.ts.map +1 -0
  350. package/dist/server/server-adapter/routes/stream-types.d.ts +10 -0
  351. package/dist/server/server-adapter/routes/stream-types.d.ts.map +1 -0
  352. package/dist/server/server-adapter/routes/system.d.ts +12 -0
  353. package/dist/server/server-adapter/routes/system.d.ts.map +1 -0
  354. package/dist/server/server-adapter/routes/tools.d.ts +3 -0
  355. package/dist/server/server-adapter/routes/tools.d.ts.map +1 -0
  356. package/dist/server/server-adapter/routes/vectors.d.ts +3 -0
  357. package/dist/server/server-adapter/routes/vectors.d.ts.map +1 -0
  358. package/dist/server/server-adapter/routes/workflows.d.ts +3 -0
  359. package/dist/server/server-adapter/routes/workflows.d.ts.map +1 -0
  360. package/dist/server/server-adapter/routes/workspace.d.ts +8 -0
  361. package/dist/server/server-adapter/routes/workspace.d.ts.map +1 -0
  362. package/dist/server/utils.d.ts +17 -3
  363. package/dist/server/utils.d.ts.map +1 -1
  364. package/dist/{token-53CFGXUO.cjs → token-6GSAFR2W-ABXTQD64-MC4IMVOB.cjs} +11 -12
  365. package/dist/token-6GSAFR2W-ABXTQD64-MC4IMVOB.cjs.map +1 -0
  366. package/dist/{token-WAEKDUVY.js → token-6GSAFR2W-ABXTQD64-Z6U2TA2C.js} +8 -9
  367. package/dist/token-6GSAFR2W-ABXTQD64-Z6U2TA2C.js.map +1 -0
  368. package/dist/token-6GSAFR2W-F2L44NEJ-B3QIV63M.cjs +63 -0
  369. package/dist/token-6GSAFR2W-F2L44NEJ-B3QIV63M.cjs.map +1 -0
  370. package/dist/token-6GSAFR2W-F2L44NEJ-GFZ37A2V.js +61 -0
  371. package/dist/token-6GSAFR2W-F2L44NEJ-GFZ37A2V.js.map +1 -0
  372. package/dist/token-6GSAFR2W-WGTMOPEU-6HSZQUFZ.cjs +63 -0
  373. package/dist/token-6GSAFR2W-WGTMOPEU-6HSZQUFZ.cjs.map +1 -0
  374. package/dist/token-6GSAFR2W-WGTMOPEU-JKP67ZX4.js +61 -0
  375. package/dist/token-6GSAFR2W-WGTMOPEU-JKP67ZX4.js.map +1 -0
  376. package/dist/token-util-NEHG7TUY-4YJ4EPCL-MBTAVIJ3.js +8 -0
  377. package/dist/token-util-NEHG7TUY-4YJ4EPCL-MBTAVIJ3.js.map +1 -0
  378. package/dist/token-util-NEHG7TUY-4YJ4EPCL-SQ4NADRW.cjs +10 -0
  379. package/dist/token-util-NEHG7TUY-4YJ4EPCL-SQ4NADRW.cjs.map +1 -0
  380. package/dist/token-util-NEHG7TUY-TV2H7N56-GGCGMPDG.js +8 -0
  381. package/dist/token-util-NEHG7TUY-TV2H7N56-GGCGMPDG.js.map +1 -0
  382. package/dist/token-util-NEHG7TUY-TV2H7N56-R7OENTCJ.cjs +10 -0
  383. package/dist/token-util-NEHG7TUY-TV2H7N56-R7OENTCJ.cjs.map +1 -0
  384. package/dist/token-util-NEHG7TUY-XQP3QSPX-BL5O5N7R.cjs +10 -0
  385. package/dist/token-util-NEHG7TUY-XQP3QSPX-BL5O5N7R.cjs.map +1 -0
  386. package/dist/token-util-NEHG7TUY-XQP3QSPX-YCJRRNXO.js +8 -0
  387. package/dist/token-util-NEHG7TUY-XQP3QSPX-YCJRRNXO.js.map +1 -0
  388. package/handlers/server/handlers.d.ts +1 -0
  389. package/handlers.d.ts +1 -0
  390. package/package.json +46 -16
  391. package/server-adapter.d.ts +1 -0
  392. package/dist/chunk-2S4IMB6E.cjs +0 -130
  393. package/dist/chunk-2S4IMB6E.cjs.map +0 -1
  394. package/dist/chunk-3LTO44EP.cjs +0 -570
  395. package/dist/chunk-3LTO44EP.cjs.map +0 -1
  396. package/dist/chunk-3SNGNFUJ.cjs +0 -128
  397. package/dist/chunk-3SNGNFUJ.cjs.map +0 -1
  398. package/dist/chunk-4QCXUEAT.js +0 -25
  399. package/dist/chunk-4QCXUEAT.js.map +0 -1
  400. package/dist/chunk-5BNQIYQN.js +0 -189
  401. package/dist/chunk-5BNQIYQN.js.map +0 -1
  402. package/dist/chunk-67GYDFSB.js +0 -160
  403. package/dist/chunk-67GYDFSB.js.map +0 -1
  404. package/dist/chunk-6ZR275MD.cjs +0 -165
  405. package/dist/chunk-6ZR275MD.cjs.map +0 -1
  406. package/dist/chunk-7HDOBOGG.cjs +0 -17517
  407. package/dist/chunk-7HDOBOGG.cjs.map +0 -1
  408. package/dist/chunk-ABRFV4XP.js +0 -83
  409. package/dist/chunk-ABRFV4XP.js.map +0 -1
  410. package/dist/chunk-AHB4JCIQ.js +0 -160
  411. package/dist/chunk-AHB4JCIQ.js.map +0 -1
  412. package/dist/chunk-BATEJLED.js +0 -124
  413. package/dist/chunk-BATEJLED.js.map +0 -1
  414. package/dist/chunk-BZLZFHAT.cjs +0 -682
  415. package/dist/chunk-BZLZFHAT.cjs.map +0 -1
  416. package/dist/chunk-CY4TP3FK.js +0 -16
  417. package/dist/chunk-CY4TP3FK.js.map +0 -1
  418. package/dist/chunk-DB63UMTV.js +0 -660
  419. package/dist/chunk-DB63UMTV.js.map +0 -1
  420. package/dist/chunk-EP3JQDPD.cjs +0 -131
  421. package/dist/chunk-EP3JQDPD.cjs.map +0 -1
  422. package/dist/chunk-FWO7VQDC.js +0 -17481
  423. package/dist/chunk-FWO7VQDC.js.map +0 -1
  424. package/dist/chunk-FZNS32WJ.js +0 -46
  425. package/dist/chunk-FZNS32WJ.js.map +0 -1
  426. package/dist/chunk-G4PUALCE.cjs +0 -28
  427. package/dist/chunk-G4PUALCE.cjs.map +0 -1
  428. package/dist/chunk-HPXAM2PG.js.map +0 -1
  429. package/dist/chunk-I3C4ODGV.cjs +0 -335
  430. package/dist/chunk-I3C4ODGV.cjs.map +0 -1
  431. package/dist/chunk-JSLAYFEW.js +0 -662
  432. package/dist/chunk-JSLAYFEW.js.map +0 -1
  433. package/dist/chunk-LLUOPR3J.js +0 -323
  434. package/dist/chunk-LLUOPR3J.js.map +0 -1
  435. package/dist/chunk-LNT5N7XW.cjs +0 -197
  436. package/dist/chunk-LNT5N7XW.cjs.map +0 -1
  437. package/dist/chunk-LPM6BBAX.cjs.map +0 -1
  438. package/dist/chunk-MMROOK5J.js.map +0 -1
  439. package/dist/chunk-MQDBNHBT.cjs +0 -680
  440. package/dist/chunk-MQDBNHBT.cjs.map +0 -1
  441. package/dist/chunk-MYR4PVGN.js +0 -123
  442. package/dist/chunk-MYR4PVGN.js.map +0 -1
  443. package/dist/chunk-OEOGYAQC.js +0 -553
  444. package/dist/chunk-OEOGYAQC.js.map +0 -1
  445. package/dist/chunk-OYL5TBJW.cjs +0 -48
  446. package/dist/chunk-OYL5TBJW.cjs.map +0 -1
  447. package/dist/chunk-QQXMIP6C.js +0 -122
  448. package/dist/chunk-QQXMIP6C.js.map +0 -1
  449. package/dist/chunk-RE4RPXT2.cjs +0 -18
  450. package/dist/chunk-RE4RPXT2.cjs.map +0 -1
  451. package/dist/chunk-RQK4FQUD.js.map +0 -1
  452. package/dist/chunk-SIW6CYO3.js.map +0 -1
  453. package/dist/chunk-TOP25AIO.cjs.map +0 -1
  454. package/dist/chunk-TRGAMKHX.cjs +0 -167
  455. package/dist/chunk-TRGAMKHX.cjs.map +0 -1
  456. package/dist/chunk-VY4ENABS.cjs.map +0 -1
  457. package/dist/chunk-XN74I6VW.cjs +0 -88
  458. package/dist/chunk-XN74I6VW.cjs.map +0 -1
  459. package/dist/chunk-XVPBGW6Y.cjs.map +0 -1
  460. package/dist/chunk-YWOK4F5A.js.map +0 -1
  461. package/dist/dist-P4MXBQ3U.cjs +0 -16
  462. package/dist/dist-YREX2TJT.js +0 -3
  463. package/dist/server/handlers/legacyWorkflows.cjs +0 -48
  464. package/dist/server/handlers/legacyWorkflows.cjs.map +0 -1
  465. package/dist/server/handlers/legacyWorkflows.d.ts +0 -59
  466. package/dist/server/handlers/legacyWorkflows.d.ts.map +0 -1
  467. package/dist/server/handlers/legacyWorkflows.js +0 -3
  468. package/dist/server/handlers/legacyWorkflows.js.map +0 -1
  469. package/dist/server/handlers/telemetry.cjs +0 -20
  470. package/dist/server/handlers/telemetry.cjs.map +0 -1
  471. package/dist/server/handlers/telemetry.d.ts +0 -33
  472. package/dist/server/handlers/telemetry.d.ts.map +0 -1
  473. package/dist/server/handlers/telemetry.js +0 -3
  474. package/dist/server/handlers/telemetry.js.map +0 -1
  475. package/dist/token-53CFGXUO.cjs.map +0 -1
  476. package/dist/token-WAEKDUVY.js.map +0 -1
  477. package/dist/token-util-LY37VCIN.js +0 -7
  478. package/dist/token-util-LY37VCIN.js.map +0 -1
  479. package/dist/token-util-S4A355II.cjs +0 -9
  480. package/dist/token-util-S4A355II.cjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,6 +1,2776 @@
1
1
  # @mastra/server
2
2
 
3
- ## 0.0.0-unified-sidebar-20251010130811
3
+ ## 0.0.0-unified-workspace-snapshot-20260128233410
4
+
5
+ ### Minor Changes
6
+
7
+ - Added explicit auth control to built-in API routes. All routes now have a requiresAuth property that determines whether authentication is required. This eliminates route matching overhead and makes auth requirements clear in route definitions. Routes default to requiresAuth: true (protected) for security. To make a route public, set requiresAuth: false in the route definition. ([#12153](https://github.com/mastra-ai/mastra/pull/12153))
8
+
9
+ - Added dynamic agent management with CRUD operations and version tracking ([#12038](https://github.com/mastra-ai/mastra/pull/12038))
10
+
11
+ **New Features:**
12
+ - Create, edit, and delete agents directly from the Mastra Studio UI
13
+ - Full version history for agents with compare and restore capabilities
14
+ - Visual diff viewer to compare agent configurations across versions
15
+ - Agent creation modal with comprehensive configuration options (model selection, instructions, tools, workflows, sub-agents, memory)
16
+ - AI-powered instruction enhancement
17
+
18
+ **Storage:**
19
+ - New storage interfaces for stored agents and agent versions
20
+ - PostgreSQL, LibSQL, and MongoDB implementations included
21
+ - In-memory storage for development and testing
22
+
23
+ **API:**
24
+ - RESTful endpoints for agent CRUD operations
25
+ - Version management endpoints (create, list, activate, restore, delete, compare)
26
+ - Automatic versioning on agent updates when enabled
27
+
28
+ **Client SDK:**
29
+ - JavaScript client with full support for stored agents and versions
30
+ - Type-safe methods for all CRUD and version operations
31
+
32
+ **Usage Example:**
33
+
34
+ ```typescript
35
+ // Server-side: Configure storage
36
+ import { Mastra } from '@mastra/core';
37
+ import { PgAgentsStorage } from '@mastra/pg';
38
+
39
+ const mastra = new Mastra({
40
+ agents: { agentOne },
41
+ storage: {
42
+ agents: new PgAgentsStorage({
43
+ connectionString: process.env.DATABASE_URL,
44
+ }),
45
+ },
46
+ });
47
+
48
+ // Client-side: Use the SDK
49
+ import { MastraClient } from '@mastra/client-js';
50
+
51
+ const client = new MastraClient({ baseUrl: 'http://localhost:3000' });
52
+
53
+ // Create a stored agent
54
+ const agent = await client.createStoredAgent({
55
+ name: 'Customer Support Agent',
56
+ description: 'Handles customer inquiries',
57
+ model: { provider: 'ANTHROPIC', name: 'claude-sonnet-4-5' },
58
+ instructions: 'You are a helpful customer support agent...',
59
+ tools: ['search', 'email'],
60
+ });
61
+
62
+ // Create a version snapshot
63
+ await client.storedAgent(agent.id).createVersion({
64
+ name: 'v1.0 - Initial release',
65
+ changeMessage: 'First production version',
66
+ });
67
+
68
+ // Compare versions
69
+ const diff = await client.storedAgent(agent.id).compareVersions('version-1', 'version-2');
70
+ ```
71
+
72
+ **Why:**
73
+ This feature enables teams to manage agents dynamically without code changes, making it easier to iterate on agent configurations and maintain a complete audit trail of changes.
74
+
75
+ - Added support for including custom API routes in the generated OpenAPI documentation. Custom routes registered via `registerApiRoute()` now appear in the OpenAPI spec alongside built-in Mastra routes. ([#11786](https://github.com/mastra-ai/mastra/pull/11786))
76
+
77
+ - Added workspace API endpoints for filesystem operations, skill management, and content search. ([`30e1998`](https://github.com/mastra-ai/mastra/commit/30e1998941bc9f8161371379381d7477480e4ce3))
78
+
79
+ **New endpoints:**
80
+ - `GET /workspace` - Get workspace info and capabilities
81
+ - `GET/POST/DELETE /workspace/fs/*` - Filesystem operations (read, write, list, delete, mkdir, stat)
82
+ - `GET /workspace/skills` - List available skills
83
+ - `GET /workspace/skills/:name` - Get skill details
84
+ - `GET /workspace/skills/:name/references` - List skill references
85
+ - `POST /workspace/search` - Search indexed content
86
+
87
+ **Usage:**
88
+
89
+ ```typescript
90
+ // Read a file
91
+ const response = await fetch('/api/workspace/fs/read?path=/docs/guide.md');
92
+ const { content } = await response.json();
93
+
94
+ // List skills
95
+ const skills = await fetch('/api/workspace/skills').then(r => r.json());
96
+
97
+ // Search content
98
+ const results = await fetch('/api/workspace/search', {
99
+ method: 'POST',
100
+ body: JSON.stringify({ query: 'authentication', mode: 'hybrid' }),
101
+ }).then(r => r.json());
102
+ ```
103
+
104
+ ### Patch Changes
105
+
106
+ - Fixed a bug introduced in PR #12251 where requestContext was not passed through to agent and workflow operations. This could cause tools and nested operations that rely on requestContext values to fail or behave incorrectly. ([#12428](https://github.com/mastra-ai/mastra/pull/12428))
107
+
108
+ - Fix broken import for deepEqual by inlining the function into server. ([#12446](https://github.com/mastra-ai/mastra/pull/12446))
109
+
110
+ - Added requestContextSchema type support. ([#12259](https://github.com/mastra-ai/mastra/pull/12259))
111
+
112
+ - Fixed authentication bypass for custom routes in dev mode. Routes registered with registerApiRoute and requiresAuth: true now correctly enforce authentication even when MASTRA_DEV=true. ([#12339](https://github.com/mastra-ai/mastra/pull/12339))
113
+
114
+ - Fixed malformed JSON body handling in Hono adapter. When a POST request contains invalid JSON (e.g., missing closing braces), the server now returns HTTP 400 Bad Request with a structured error message instead of silently accepting the request with HTTP 200. This prevents workflows from starting with undefined input data. ([#12310](https://github.com/mastra-ai/mastra/issues/12310)) ([#12332](https://github.com/mastra-ai/mastra/pull/12332))
115
+
116
+ - Fix path parameter routes not respecting requiresAuth setting ([#12143](https://github.com/mastra-ai/mastra/pull/12143))
117
+
118
+ Fixes issue where custom API routes with path parameters (e.g., `/users/:id`) were incorrectly requiring authentication even when `requiresAuth` was set to `false`. The authentication middleware now uses pattern matching to correctly match dynamic routes against registered patterns.
119
+
120
+ Changes:
121
+ - Inlined path pattern matching utility (based on regexparam) to avoid dependency complexity
122
+ - Updated `isCustomRoutePublic()` to iterate through routes and match path patterns
123
+ - Enhanced `pathMatchesPattern()` to support path parameters (`:id`), optional parameters (`:id?`), and wildcards (`*`)
124
+ - Added comprehensive test coverage for path parameter matching scenarios
125
+
126
+ Fixes #12106
127
+
128
+ - Improves CommonJS support by adding typefiles to the root directory ([#12068](https://github.com/mastra-ai/mastra/pull/12068))
129
+
130
+ - Added `mcpOptions` to server adapters for serverless MCP support. ([#12324](https://github.com/mastra-ai/mastra/pull/12324))
131
+
132
+ **Why:** MCP HTTP transport uses session management by default, which requires persistent state across requests. This doesn't work in serverless environments like Cloudflare Workers or Vercel Edge where each request runs in isolation. The new `mcpOptions` parameter lets you enable stateless mode without overriding the entire `sendResponse()` method.
133
+
134
+ **Before:**
135
+
136
+ ```typescript
137
+ const server = new MastraServer({
138
+ app,
139
+ mastra,
140
+ });
141
+ // No way to pass serverless option to MCP HTTP transport
142
+ ```
143
+
144
+ **After:**
145
+
146
+ ```typescript
147
+ const server = new MastraServer({
148
+ app,
149
+ mastra,
150
+ mcpOptions: {
151
+ serverless: true,
152
+ },
153
+ });
154
+ // MCP HTTP transport now runs in stateless mode
155
+ ```
156
+
157
+ - Fixed memory API endpoints to respect MASTRA_RESOURCE_ID_KEY and MASTRA_THREAD_ID_KEY from middleware. Previously, these endpoints ignored the reserved context keys and used client-provided values directly, allowing authenticated users to potentially access other users' threads and messages. Now when middleware sets these reserved keys, they take precedence over client-provided values for secure user isolation. ([#12251](https://github.com/mastra-ai/mastra/pull/12251))
158
+
159
+ - Route prefixes are now normalized for consistent handling (trailing slashes removed, leading slashes added, multiple slashes collapsed). ([#12295](https://github.com/mastra-ai/mastra/pull/12295))
160
+
161
+ - Fixed route prefix behavior to correctly replace the default /api prefix instead of prepending to it. Previously, setting prefix: '/api/v2' resulted in routes at /api/v2/api/agents. Now routes correctly appear at /api/v2/agents as documented. ([#12221](https://github.com/mastra-ai/mastra/pull/12221))
162
+
163
+ - Updated dependencies [[`90fc0e5`](https://github.com/mastra-ai/mastra/commit/90fc0e5717cb280c2d4acf4f0410b510bb4c0a72), [`1cf5d2e`](https://github.com/mastra-ai/mastra/commit/1cf5d2ea1b085be23e34fb506c80c80a4e6d9c2b), [`943772b`](https://github.com/mastra-ai/mastra/commit/943772b4378f625f0f4e19ea2b7c392bd8e71786), [`b5c711b`](https://github.com/mastra-ai/mastra/commit/b5c711b281dd1fb81a399a766bc9f86c55efc13e), [`3efbe5a`](https://github.com/mastra-ai/mastra/commit/3efbe5ae20864c4f3143457f4f3ee7dc2fa5ca76), [`1e49e7a`](https://github.com/mastra-ai/mastra/commit/1e49e7ab5f173582154cb26b29d424de67d09aef), [`30e1998`](https://github.com/mastra-ai/mastra/commit/30e1998941bc9f8161371379381d7477480e4ce3), [`771ad96`](https://github.com/mastra-ai/mastra/commit/771ad962441996b5c43549391a3e6a02c6ddedc2), [`2b0936b`](https://github.com/mastra-ai/mastra/commit/2b0936b0c9a43eeed9bef63e614d7e02ee803f7e), [`3b04f30`](https://github.com/mastra-ai/mastra/commit/3b04f3010604f3cdfc8a0674731700ad66471cee), [`97e26de`](https://github.com/mastra-ai/mastra/commit/97e26deaebd9836647a67b96423281d66421ca07), [`10523f4`](https://github.com/mastra-ai/mastra/commit/10523f4882d9b874b40ce6e3715f66dbcd4947d2), [`cb72d20`](https://github.com/mastra-ai/mastra/commit/cb72d2069d7339bda8a0e76d4f35615debb07b84), [`42856b1`](https://github.com/mastra-ai/mastra/commit/42856b1c8aeea6371c9ee77ae2f5f5fe34400933), [`66f33ff`](https://github.com/mastra-ai/mastra/commit/66f33ff68620018513e499c394411d1d39b3aa5c), [`ab3c190`](https://github.com/mastra-ai/mastra/commit/ab3c1901980a99910ca9b96a7090c22e24060113), [`d4f06c8`](https://github.com/mastra-ai/mastra/commit/d4f06c85ffa5bb0da38fb82ebf3b040cc6b4ec4e), [`0350626`](https://github.com/mastra-ai/mastra/commit/03506267ec41b67add80d994c0c0fcce93bbc75f), [`bc9fa00`](https://github.com/mastra-ai/mastra/commit/bc9fa00859c5c4a796d53a0a5cae46ab4a3072e4), [`f46a478`](https://github.com/mastra-ai/mastra/commit/f46a4782f595949c696569e891f81c8d26338508), [`90fc0e5`](https://github.com/mastra-ai/mastra/commit/90fc0e5717cb280c2d4acf4f0410b510bb4c0a72), [`f05a3a5`](https://github.com/mastra-ai/mastra/commit/f05a3a5cf2b9a9c2d40c09cb8c762a4b6cd5d565), [`a291da9`](https://github.com/mastra-ai/mastra/commit/a291da9363efd92dafd8775dccb4f2d0511ece7a), [`c5d71da`](https://github.com/mastra-ai/mastra/commit/c5d71da1c680ce5640b1a7f8ca0e024a4ab1cfed), [`07042f9`](https://github.com/mastra-ai/mastra/commit/07042f9f89080f38b8f72713ba1c972d5b1905b8)]:
164
+ - @mastra/core@0.0.0-unified-workspace-snapshot-20260128233410
165
+
166
+ ## 1.0.4
167
+
168
+ ### Patch Changes
169
+
170
+ - Release stable ([#12102](https://github.com/mastra-ai/mastra/pull/12102))
171
+
172
+ - Updated dependencies:
173
+ - @mastra/core@1.0.4
174
+
175
+ ## 1.0.4-alpha.0
176
+
177
+ ### Patch Changes
178
+
179
+ - Release stable ([#12102](https://github.com/mastra-ai/mastra/pull/12102))
180
+
181
+ - Updated dependencies:
182
+ - @mastra/core@1.0.4-alpha.0
183
+
184
+ ## 1.0.0
185
+
186
+ ### Major Changes
187
+
188
+ - Moving scorers under the eval domain, api method consistency, prebuilt evals, scorers require ids. ([#9589](https://github.com/mastra-ai/mastra/pull/9589))
189
+
190
+ - Every Mastra primitive (agent, MCPServer, workflow, tool, processor, scorer, and vector) now has a get, list, and add method associated with it. Each primitive also now requires an id to be set. ([#9675](https://github.com/mastra-ai/mastra/pull/9675))
191
+
192
+ Primitives that are added to other primitives are also automatically added to the Mastra instance
193
+
194
+ - Update handlers to use `listWorkflowRuns` instead of `getWorkflowRuns`. Fix type names from `StoragelistThreadsByResourceIdInput/Output` to `StorageListThreadsByResourceIdInput/Output`. ([#9507](https://github.com/mastra-ai/mastra/pull/9507))
195
+
196
+ - Remove `getMessagesPaginated()` and add `perPage: false` support ([#9670](https://github.com/mastra-ai/mastra/pull/9670))
197
+
198
+ Removes deprecated `getMessagesPaginated()` method. The `listMessages()` API and score handlers now support `perPage: false` to fetch all records without pagination limits.
199
+
200
+ **Storage changes:**
201
+ - `StoragePagination.perPage` type changed from `number` to `number | false`
202
+ - All storage implementations support `perPage: false`:
203
+ - Memory: `listMessages()`
204
+ - Scores: `listScoresBySpan()`, `listScoresByRunId()`, `listScoresByExecutionId()`
205
+ - HTTP query parser accepts `"false"` string (e.g., `?perPage=false`)
206
+
207
+ **Memory changes:**
208
+ - `memory.query()` parameter type changed from `StorageGetMessagesArg` to `StorageListMessagesInput`
209
+ - Uses flat parameters (`page`, `perPage`, `include`, `filter`, `vectorSearchString`) instead of `selectBy` object
210
+
211
+ **Stricter validation:**
212
+ - `listMessages()` requires non-empty, non-whitespace `threadId` (throws error instead of returning empty results)
213
+
214
+ **Migration:**
215
+
216
+ ```typescript
217
+ // Storage/Memory: Replace getMessagesPaginated with listMessages
218
+ - storage.getMessagesPaginated({ threadId, selectBy: { pagination: { page: 0, perPage: 20 } } })
219
+ + storage.listMessages({ threadId, page: 0, perPage: 20 })
220
+ + storage.listMessages({ threadId, page: 0, perPage: false }) // Fetch all
221
+
222
+ // Memory: Replace selectBy with flat parameters
223
+ - memory.query({ threadId, selectBy: { last: 20, include: [...] } })
224
+ + memory.query({ threadId, perPage: 20, include: [...] })
225
+
226
+ // Client SDK
227
+ - thread.getMessagesPaginated({ selectBy: { pagination: { page: 0 } } })
228
+ + thread.listMessages({ page: 0, perPage: 20 })
229
+ ```
230
+
231
+ - **Removed `storage.getMessages()`** ([#9695](https://github.com/mastra-ai/mastra/pull/9695))
232
+
233
+ The `getMessages()` method has been removed from all storage implementations. Use `listMessages()` instead, which provides pagination support.
234
+
235
+ **Migration:**
236
+
237
+ ```typescript
238
+ // Before
239
+ const messages = await storage.getMessages({ threadId: 'thread-1' });
240
+
241
+ // After
242
+ const result = await storage.listMessages({
243
+ threadId: 'thread-1',
244
+ page: 0,
245
+ perPage: 50,
246
+ });
247
+ const messages = result.messages; // Access messages array
248
+ console.log(result.total); // Total count
249
+ console.log(result.hasMore); // Whether more pages exist
250
+ ```
251
+
252
+ **Message ordering default**
253
+
254
+ `listMessages()` defaults to ASC (oldest first) ordering by `createdAt`, matching the previous `getMessages()` behavior.
255
+
256
+ **To use DESC ordering (newest first):**
257
+
258
+ ```typescript
259
+ const result = await storage.listMessages({
260
+ threadId: 'thread-1',
261
+ orderBy: { field: 'createdAt', direction: 'DESC' },
262
+ });
263
+ ```
264
+
265
+ **Renamed `client.getThreadMessages()` → `client.listThreadMessages()`**
266
+
267
+ **Migration:**
268
+
269
+ ```typescript
270
+ // Before
271
+ const response = await client.getThreadMessages(threadId, { agentId });
272
+
273
+ // After
274
+ const response = await client.listThreadMessages(threadId, { agentId });
275
+ ```
276
+
277
+ The response format remains the same.
278
+
279
+ **Removed `StorageGetMessagesArg` type**
280
+
281
+ Use `StorageListMessagesInput` instead:
282
+
283
+ ```typescript
284
+ // Before
285
+ import type { StorageGetMessagesArg } from '@mastra/core';
286
+
287
+ // After
288
+ import type { StorageListMessagesInput } from '@mastra/core';
289
+ ```
290
+
291
+ - Bump minimum required Node.js version to 22.13.0 ([#9706](https://github.com/mastra-ai/mastra/pull/9706))
292
+
293
+ - Replace `getThreadsByResourceIdPaginated` with `listThreadsByResourceId` across memory handlers. Update client SDK to use `listThreads()` with `offset`/`limit` parameters instead of deprecated `getMemoryThreads()`. Consolidate `/api/memory/threads` routes to single paginated endpoint. ([#9508](https://github.com/mastra-ai/mastra/pull/9508))
294
+
295
+ - This simplifies the Memory API by removing the confusing rememberMessages method and renaming query to recall for better clarity. ([#9701](https://github.com/mastra-ai/mastra/pull/9701))
296
+
297
+ The rememberMessages method name implied it might persist data when it was actually just retrieving messages, same as query. Having two methods that did essentially the same thing was unnecessary.
298
+
299
+ Before:
300
+
301
+ ```typescript
302
+ // Two methods that did the same thing
303
+ memory.rememberMessages({ threadId, resourceId, config, vectorMessageSearch });
304
+ memory.query({ threadId, resourceId, perPage, vectorSearchString });
305
+ ```
306
+
307
+ After:
308
+
309
+ ```typescript
310
+ // Single unified method with clear purpose
311
+ memory.recall({ threadId, resourceId, perPage, vectorMessageSearch, threadConfig });
312
+ ```
313
+
314
+ All usages have been updated across the codebase including tests. The agent now calls recall directly with the appropriate parameters.
315
+
316
+ - Rename RuntimeContext to RequestContext ([#9511](https://github.com/mastra-ai/mastra/pull/9511))
317
+
318
+ - Rename `defaultVNextStreamOptions` to `defaultOptions`. Add "Legacy" suffix to v1 option properties and methods (`defaultGenerateOptions` → `defaultGenerateOptionsLegacy`, `defaultStreamOptions` → `defaultStreamOptionsLegacy`). ([#9535](https://github.com/mastra-ai/mastra/pull/9535))
319
+
320
+ - **Breaking Change**: Convert OUTPUT generic from `OutputSchema` constraint to plain generic ([#11741](https://github.com/mastra-ai/mastra/pull/11741))
321
+
322
+ This change removes the direct dependency on Zod typings in the public API by converting all `OUTPUT extends OutputSchema` generic constraints to plain `OUTPUT` generics throughout the codebase. This is preparation for moving to a standard schema approach.
323
+ - All generic type parameters previously constrained to `OutputSchema` (e.g., `<OUTPUT extends OutputSchema = undefined>`) are now plain generics with defaults (e.g., `<OUTPUT = undefined>`)
324
+ - Affects all public APIs including `Agent`, `MastraModelOutput`, `AgentExecutionOptions`, and stream/generate methods
325
+ - `InferSchemaOutput<OUTPUT>` replaced with `OUTPUT` throughout
326
+ - `PartialSchemaOutput<OUTPUT>` replaced with `Partial<OUTPUT>`
327
+ - Schema fields now use `NonNullable<OutputSchema<OUTPUT>>` instead of `OUTPUT` directly
328
+ - Added `FullOutput<OUTPUT>` type representing complete output with all fields
329
+ - Added `AgentExecutionOptionsBase<OUTPUT>` type
330
+ - `getFullOutput()` method now returns `Promise<FullOutput<OUTPUT>>`
331
+ - `Agent` class now generic: `Agent<TAgentId, TTools, TOutput>`
332
+ - `agent.generate()` and `agent.stream()` methods have updated signatures
333
+ - `MastraModelOutput<OUTPUT>` no longer requires `OutputSchema` constraint
334
+ - Network route and streaming APIs updated to use plain OUTPUT generic
335
+
336
+ **Before:**
337
+
338
+ ```typescript
339
+ const output = await agent.generate<z.ZodType>([...], {
340
+ structuredOutput: { schema: mySchema }
341
+ });
342
+
343
+ **After:**
344
+ const output = await agent.generate<z.infer<typeof mySchema>>([...], {
345
+ structuredOutput: { schema: mySchema }
346
+ });
347
+ // Or rely on type inference:
348
+ const output = await agent.generate([...], {
349
+ structuredOutput: { schema: mySchema }
350
+ });
351
+
352
+ ```
353
+
354
+ - Remove `getThreadsByResourceId` and `getThreadsByResourceIdPaginated` methods from storage interfaces in favor of `listThreadsByResourceId`. The new method uses `offset`/`limit` pagination and a nested `orderBy` object structure (`{ field, direction }`). ([#9536](https://github.com/mastra-ai/mastra/pull/9536))
355
+
356
+ - Renamed a bunch of observability/tracing-related things to drop the AI prefix. ([#9744](https://github.com/mastra-ai/mastra/pull/9744))
357
+
358
+ - **Breaking Change**: Remove legacy v1 watch events and consolidate on v2 implementation. ([#9252](https://github.com/mastra-ai/mastra/pull/9252))
359
+
360
+ This change simplifies the workflow watching API by removing the legacy v1 event system and promoting v2 as the standard (renamed to just `watch`).
361
+
362
+ **What's Changed**
363
+ - Removed legacy v1 watch event handlers and types
364
+ - Renamed `watch-v2` to `watch` throughout the codebase
365
+ - Removed `.watch()` method from client-js SDK (`Workflow` and `AgentBuilder` classes)
366
+ - Removed `/watch` HTTP endpoints from server and deployer
367
+ - Removed `WorkflowWatchResult` and v1 `WatchEvent` types
368
+
369
+ - Pagination APIs now use `page`/`perPage` instead of `offset`/`limit` ([#9592](https://github.com/mastra-ai/mastra/pull/9592))
370
+
371
+ All storage and memory pagination APIs have been updated to use `page` (0-indexed) and `perPage` instead of `offset` and `limit`, aligning with standard REST API patterns.
372
+
373
+ **Affected APIs:**
374
+ - `Memory.listThreadsByResourceId()`
375
+ - `Memory.listMessages()`
376
+ - `Storage.listWorkflowRuns()`
377
+
378
+ **Migration:**
379
+
380
+ ```typescript
381
+ // Before
382
+ await memory.listThreadsByResourceId({
383
+ resourceId: 'user-123',
384
+ offset: 20,
385
+ limit: 10,
386
+ });
387
+
388
+ // After
389
+ await memory.listThreadsByResourceId({
390
+ resourceId: 'user-123',
391
+ page: 2, // page = Math.floor(offset / limit)
392
+ perPage: 10,
393
+ });
394
+
395
+ // Before
396
+ await memory.listMessages({
397
+ threadId: 'thread-456',
398
+ offset: 20,
399
+ limit: 10,
400
+ });
401
+
402
+ // After
403
+ await memory.listMessages({
404
+ threadId: 'thread-456',
405
+ page: 2,
406
+ perPage: 10,
407
+ });
408
+
409
+ // Before
410
+ await storage.listWorkflowRuns({
411
+ workflowName: 'my-workflow',
412
+ offset: 20,
413
+ limit: 10,
414
+ });
415
+
416
+ // After
417
+ await storage.listWorkflowRuns({
418
+ workflowName: 'my-workflow',
419
+ page: 2,
420
+ perPage: 10,
421
+ });
422
+ ```
423
+
424
+ **Additional improvements:**
425
+ - Added validation for negative `page` values in all storage implementations
426
+ - Improved `perPage` validation to handle edge cases (negative values, `0`, `false`)
427
+ - Added reusable query parser utilities for consistent validation in handlers
428
+
429
+ - Changing getAgents -> listAgents, getTools -> listTools, getWorkflows -> listWorkflows ([#9495](https://github.com/mastra-ai/mastra/pull/9495))
430
+
431
+ - Removed old tracing code based on OpenTelemetry ([#9237](https://github.com/mastra-ai/mastra/pull/9237))
432
+
433
+ - Remove deprecated vector prompts and cohere provider from code ([#9596](https://github.com/mastra-ai/mastra/pull/9596))
434
+
435
+ - Mark as stable ([`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc))
436
+
437
+ - Enforcing id required on Processor primitive ([#9591](https://github.com/mastra-ai/mastra/pull/9591))
438
+
439
+ - Renamed `MastraMessageV2` to `MastraDBMessage` ([#9255](https://github.com/mastra-ai/mastra/pull/9255))
440
+ Made the return format of all methods that return db messages consistent. It's always `{ messages: MastraDBMessage[] }` now, and messages can be converted after that using `@mastra/ai-sdk/ui`'s `toAISdkV4/5Messages()` function
441
+
442
+ - moved ai-tracing code into @mastra/observability ([#9661](https://github.com/mastra-ai/mastra/pull/9661))
443
+
444
+ - Remove legacy evals from Mastra ([#9491](https://github.com/mastra-ai/mastra/pull/9491))
445
+
446
+ ### Minor Changes
447
+
448
+ - Add stored agents support ([#10953](https://github.com/mastra-ai/mastra/pull/10953))
449
+
450
+ Agents can now be stored in the database and loaded at runtime. This lets you persist agent configurations and dynamically create executable Agent instances from storage.
451
+
452
+ ```typescript
453
+ import { Mastra } from '@mastra/core';
454
+ import { LibSQLStore } from '@mastra/libsql';
455
+
456
+ const mastra = new Mastra({
457
+ storage: new LibSQLStore({ url: ':memory:' }),
458
+ tools: { myTool },
459
+ scorers: { myScorer },
460
+ });
461
+
462
+ // Create agent in storage via API or directly
463
+ await mastra.getStorage().createAgent({
464
+ agent: {
465
+ id: 'my-agent',
466
+ name: 'My Agent',
467
+ instructions: 'You are helpful',
468
+ model: { provider: 'openai', name: 'gpt-4' },
469
+ tools: { myTool: {} },
470
+ scorers: { myScorer: { sampling: { type: 'ratio', rate: 0.5 } } },
471
+ },
472
+ });
473
+
474
+ // Load and use the agent
475
+ const agent = await mastra.getStoredAgentById('my-agent');
476
+ const response = await agent.generate('Hello!');
477
+
478
+ // List all stored agents with pagination
479
+ const { agents, total, hasMore } = await mastra.listStoredAgents({
480
+ page: 0,
481
+ perPage: 10,
482
+ });
483
+ ```
484
+
485
+ Also adds a memory registry to Mastra so stored agents can reference memory instances by key.
486
+
487
+ - Added human-in-the-loop (HITL) tool approval support for `generate()` method. ([#12056](https://github.com/mastra-ai/mastra/pull/12056))
488
+
489
+ **Why:** This provides parity between `stream()` and `generate()` for tool approval flows, allowing non-streaming use cases to leverage `requireToolApproval` without needing to switch to streaming.
490
+
491
+ Previously, tool approval with `requireToolApproval` only worked with `stream()`. Now you can use the same approval flow with `generate()` for non-streaming use cases.
492
+
493
+ **Using tool approval with generate()**
494
+
495
+ ```typescript
496
+ const output = await agent.generate('Find user John', {
497
+ requireToolApproval: true,
498
+ });
499
+
500
+ // Check if a tool is waiting for approval
501
+ if (output.finishReason === 'suspended') {
502
+ console.log('Tool requires approval:', output.suspendPayload.toolName);
503
+
504
+ // Approve the tool call
505
+ const result = await agent.approveToolCallGenerate({
506
+ runId: output.runId,
507
+ toolCallId: output.suspendPayload.toolCallId,
508
+ });
509
+
510
+ console.log(result.text);
511
+ }
512
+ ```
513
+
514
+ **Declining a tool call**
515
+
516
+ ```typescript
517
+ if (output.finishReason === 'suspended') {
518
+ const result = await agent.declineToolCallGenerate({
519
+ runId: output.runId,
520
+ toolCallId: output.suspendPayload.toolCallId,
521
+ });
522
+ }
523
+ ```
524
+
525
+ **New methods added:**
526
+ - `agent.approveToolCallGenerate({ runId, toolCallId })` - Approves a pending tool call and returns the complete result
527
+ - `agent.declineToolCallGenerate({ runId, toolCallId })` - Declines a pending tool call and returns the complete result
528
+
529
+ **Server routes added:**
530
+ - `POST /api/agents/:agentId/approve-tool-call-generate`
531
+ - `POST /api/agents/:agentId/decline-tool-call-generate`
532
+
533
+ The playground UI now also supports tool approval when using generate mode.
534
+
535
+ - Update peer dependencies to match core package version bump (1.0.0) ([#9237](https://github.com/mastra-ai/mastra/pull/9237))
536
+
537
+ - Memory scope defaults changed from 'thread' to 'resource' ([#8983](https://github.com/mastra-ai/mastra/pull/8983))
538
+
539
+ Both `workingMemory.scope` and `semanticRecall.scope` now default to `'resource'` instead of `'thread'`. This means:
540
+ - Working memory persists across all conversations for the same user/resource
541
+ - Semantic recall searches across all threads for the same user/resource
542
+
543
+ **Migration**: To maintain the previous thread-scoped behavior, explicitly set `scope: 'thread'`:
544
+
545
+ ```typescript
546
+ memory: new Memory({
547
+ storage,
548
+ workingMemory: {
549
+ enabled: true,
550
+ scope: 'thread', // Explicitly set for thread-scoped behavior
551
+ },
552
+ semanticRecall: {
553
+ scope: 'thread', // Explicitly set for thread-scoped behavior
554
+ },
555
+ }),
556
+ ```
557
+
558
+ Also fixed issues where playground semantic recall search could show missing or incorrect results in certain cases.
559
+
560
+ - Update peer dependencies to match core package version bump (1.0.0) ([#9495](https://github.com/mastra-ai/mastra/pull/9495))
561
+
562
+ - Update peer dependencies to match core package version bump (0.22.1) ([#8649](https://github.com/mastra-ai/mastra/pull/8649))
563
+
564
+ - Add observeStream support for agent-builder template installation ([#9372](https://github.com/mastra-ai/mastra/pull/9372))
565
+ - Add observeStream, observeStreamVNext, observeStreamLegacy, and resumeStream methods to agent-builder client SDK
566
+ - Add corresponding server handlers and deployer routes for observe streaming
567
+ - Add tracingOptions parameter to existing agent-builder handlers for parity with workflows
568
+ - Update template installation processor to support both legacy and VNext streaming event formats
569
+
570
+ - Update peer dependencies to match core package version bump (0.22.0) ([#8983](https://github.com/mastra-ai/mastra/pull/8983))
571
+
572
+ - Unified observability schema with entity-based span identification ([#11132](https://github.com/mastra-ai/mastra/pull/11132))
573
+
574
+ ## What changed
575
+
576
+ Spans now use a unified identification model with `entityId`, `entityType`, and `entityName` instead of separate `agentId`, `toolId`, `workflowId` fields.
577
+
578
+ **Before:**
579
+
580
+ ```typescript
581
+ // Old span structure
582
+ span.agentId; // 'my-agent'
583
+ span.toolId; // undefined
584
+ span.workflowId; // undefined
585
+ ```
586
+
587
+ **After:**
588
+
589
+ ```typescript
590
+ // New span structure
591
+ span.entityType; // EntityType.AGENT
592
+ span.entityId; // 'my-agent'
593
+ span.entityName; // 'My Agent'
594
+ ```
595
+
596
+ ## New `listTraces()` API
597
+
598
+ Query traces with filtering, pagination, and sorting:
599
+
600
+ ```typescript
601
+ const { spans, pagination } = await storage.listTraces({
602
+ filters: {
603
+ entityType: EntityType.AGENT,
604
+ entityId: 'my-agent',
605
+ userId: 'user-123',
606
+ environment: 'production',
607
+ status: TraceStatus.SUCCESS,
608
+ startedAt: { start: new Date('2024-01-01'), end: new Date('2024-01-31') },
609
+ },
610
+ pagination: { page: 0, perPage: 50 },
611
+ orderBy: { field: 'startedAt', direction: 'DESC' },
612
+ });
613
+ ```
614
+
615
+ **Available filters:** date ranges (`startedAt`, `endedAt`), entity (`entityType`, `entityId`, `entityName`), identity (`userId`, `organizationId`), correlation IDs (`runId`, `sessionId`, `threadId`), deployment (`environment`, `source`, `serviceName`), `tags`, `metadata`, and `status`.
616
+
617
+ ## New retrieval methods
618
+ - `getSpan({ traceId, spanId })` - Get a single span
619
+ - `getRootSpan({ traceId })` - Get the root span of a trace
620
+ - `getTrace({ traceId })` - Get all spans for a trace
621
+
622
+ ## Backward compatibility
623
+
624
+ The legacy `getTraces()` method continues to work. When you pass `name: "agent run: my-agent"`, it automatically transforms to `entityId: "my-agent", entityType: AGENT`.
625
+
626
+ ## Migration
627
+
628
+ **Automatic:** SQL-based stores (PostgreSQL, LibSQL, MSSQL) automatically add new columns to existing `spans` tables on initialization. Existing data is preserved with new columns set to `NULL`.
629
+
630
+ **No action required:** Your existing code continues to work. Adopt the new fields and `listTraces()` API at your convenience.
631
+
632
+ - Added new `listThreads` method for flexible thread filtering across all storage adapters. ([#11832](https://github.com/mastra-ai/mastra/pull/11832))
633
+
634
+ **New Features**
635
+ - Filter threads by `resourceId`, `metadata`, or both (with AND logic for metadata key-value pairs)
636
+ - All filter parameters are optional, allowing you to list all threads or filter as needed
637
+ - Full pagination and sorting support
638
+
639
+ **Example Usage**
640
+
641
+ ```typescript
642
+ // List all threads
643
+ const allThreads = await memory.listThreads({});
644
+
645
+ // Filter by resourceId only
646
+ const userThreads = await memory.listThreads({
647
+ filter: { resourceId: 'user-123' },
648
+ });
649
+
650
+ // Filter by metadata only
651
+ const supportThreads = await memory.listThreads({
652
+ filter: { metadata: { category: 'support' } },
653
+ });
654
+
655
+ // Filter by both with pagination
656
+ const filteredThreads = await memory.listThreads({
657
+ filter: {
658
+ resourceId: 'user-123',
659
+ metadata: { priority: 'high', status: 'open' },
660
+ },
661
+ orderBy: { field: 'updatedAt', direction: 'DESC' },
662
+ page: 0,
663
+ perPage: 20,
664
+ });
665
+ ```
666
+
667
+ **Security Improvements**
668
+ - Added validation to prevent SQL injection via malicious metadata keys
669
+ - Added pagination parameter validation to prevent integer overflow attacks
670
+
671
+ - Update peer dependencies to match core package version bump (1.0.0) ([#9491](https://github.com/mastra-ai/mastra/pull/9491))
672
+
673
+ - Unified `getWorkflowRunById` and `getWorkflowRunExecutionResult` into a single API that returns `WorkflowState` with both metadata and execution state. ([#11429](https://github.com/mastra-ai/mastra/pull/11429))
674
+
675
+ **What changed:**
676
+ - `getWorkflowRunById` now returns a unified `WorkflowState` object containing metadata (runId, workflowName, resourceId, createdAt, updatedAt) along with processed execution state (status, result, error, payload, steps)
677
+ - Added optional `fields` parameter to request only specific fields for better performance
678
+ - Added optional `withNestedWorkflows` parameter to control nested workflow step inclusion
679
+ - Removed `getWorkflowRunExecutionResult` - use `getWorkflowRunById` instead (breaking change)
680
+ - Removed `/execution-result` API endpoints from server (breaking change)
681
+ - Removed `runExecutionResult()` method from client SDK (breaking change)
682
+ - Removed `GetWorkflowRunExecutionResultResponse` type from client SDK (breaking change)
683
+
684
+ **Before:**
685
+
686
+ ```typescript
687
+ // Had to call two different methods for different data
688
+ const run = await workflow.getWorkflowRunById(runId); // Returns raw WorkflowRun with snapshot
689
+ const result = await workflow.getWorkflowRunExecutionResult(runId); // Returns processed execution state
690
+ ```
691
+
692
+ **After:**
693
+
694
+ ```typescript
695
+ // Single method returns everything
696
+ const run = await workflow.getWorkflowRunById(runId);
697
+ // Returns: { runId, workflowName, resourceId, createdAt, updatedAt, status, result, error, payload, steps }
698
+
699
+ // Request only specific fields for better performance (avoids expensive step fetching)
700
+ const status = await workflow.getWorkflowRunById(runId, { fields: ['status'] });
701
+
702
+ // Skip nested workflow steps for faster response
703
+ const run = await workflow.getWorkflowRunById(runId, { withNestedWorkflows: false });
704
+ ```
705
+
706
+ **Why:** The previous API required calling two separate methods to get complete workflow run information. This unification simplifies the API surface and gives users control over performance - fetching all steps (especially nested workflows) can be expensive, so the `fields` and `withNestedWorkflows` options let users request only what they need.
707
+
708
+ ### Patch Changes
709
+
710
+ - Add embedded documentation support for Mastra packages ([#11472](https://github.com/mastra-ai/mastra/pull/11472))
711
+
712
+ Mastra packages now include embedded documentation in the published npm package under `dist/docs/`. This enables coding agents and AI assistants to understand and use the framework by reading documentation directly from `node_modules`.
713
+
714
+ Each package includes:
715
+ - **SKILL.md** - Entry point explaining the package's purpose and capabilities
716
+ - **SOURCE_MAP.json** - Machine-readable index mapping exports to types and implementation files
717
+ - **Topic folders** - Conceptual documentation organized by feature area
718
+
719
+ Documentation is driven by the `packages` frontmatter field in MDX files, which maps docs to their corresponding packages. CI validation ensures all docs include this field.
720
+
721
+ - Remove `streamVNext`, `resumeStreamVNext`, and `observeStreamVNext` methods, call `stream`, `resumeStream` and `observeStream` directly ([#11499](https://github.com/mastra-ai/mastra/pull/11499))
722
+
723
+ ```diff
724
+ + const run = await workflow.createRun({ runId: '123' });
725
+ - const stream = await run.streamVNext({ inputData: { ... } });
726
+ + const stream = await run.stream({ inputData: { ... } });
727
+ ```
728
+
729
+ - Replace deprecated client.getTraces with a client.listTraces ([#11711](https://github.com/mastra-ai/mastra/pull/11711))
730
+
731
+ - Make step optional in all resume APIs ([#9454](https://github.com/mastra-ai/mastra/pull/9454))
732
+
733
+ - Fix semantic search endpoint to return results in the correct format. Also fix the delete messages endpoint to properly normalize ids in the expected format. ([#10032](https://github.com/mastra-ai/mastra/pull/10032))
734
+
735
+ - Extract routing from @deployer/server into server adapter packages. ([#10263](https://github.com/mastra-ai/mastra/pull/10263))
736
+ New packages:
737
+ - @mastra/express
738
+ - @mastra/hono
739
+
740
+ These packages support mastra server routes on express and hono respectively.
741
+ Better abstractions will be built on top of these packages in the near future, enabling users to easily attach mastra routes to any existing server framework.
742
+
743
+ - Fix navigation for processors Studio tab ([#12062](https://github.com/mastra-ai/mastra/pull/12062))
744
+
745
+ - Fix type safety for message ordering - restrict `orderBy` to only accept `'createdAt'` field ([#11069](https://github.com/mastra-ai/mastra/pull/11069))
746
+
747
+ Messages don't have an `updatedAt` field, but the previous type allowed ordering by it, which would return empty results. This change adds compile-time type safety by making `StorageOrderBy` generic and restricting `StorageListMessagesInput.orderBy` to only accept `'createdAt'`. The API validation schemas have also been updated to reject invalid orderBy values at runtime.
748
+
749
+ - Add resourceId to workflow routes ([#11166](https://github.com/mastra-ai/mastra/pull/11166))
750
+
751
+ - Fixed inconsistent query parameter handling across server adapters. ([#11429](https://github.com/mastra-ai/mastra/pull/11429))
752
+
753
+ **What changed:** Query parameters are now processed consistently across all server adapters (Express, Hono, Fastify, Koa). Added internal helper `normalizeQueryParams` and `ParsedRequestParams` type to `@mastra/server` for adapter implementations.
754
+
755
+ **Why:** Different HTTP frameworks handle query parameters differently - some return single strings while others return arrays for repeated params like `?tag=a&tag=b`. This caused type inconsistencies that could lead to validation failures in certain adapters.
756
+
757
+ **User impact:** None for typical usage - HTTP endpoints and client SDK behavior are unchanged. If you extend server adapter classes and override `getParams` or `parseQueryParams`, update your implementation to use `Record<string, string | string[]>` for query parameters.
758
+
759
+ - Add agent id to the list agent ([#9770](https://github.com/mastra-ai/mastra/pull/9770))
760
+
761
+ - Added new /api/processors endpoints to list, get details, and execute processors. Processor workflows are now auto-detected based on their schema. ([#12059](https://github.com/mastra-ai/mastra/pull/12059))
762
+
763
+ - Update tool execution signature ([#9587](https://github.com/mastra-ai/mastra/pull/9587))
764
+
765
+ Consolidated the 3 different execution contexts to one
766
+
767
+ ```typescript
768
+ // before depending on the context the tool was executed in
769
+ tool.execute({ context: data });
770
+ tool.execute({ context: { inputData: data } });
771
+ tool.execute(data);
772
+
773
+ // now, for all contexts
774
+ tool.execute(data, context);
775
+ ```
776
+
777
+ **Before:**
778
+
779
+ ```typescript
780
+ inputSchema: z.object({ something: z.string() }),
781
+ execute: async ({ context, tracingContext, runId, ... }) => {
782
+ return doSomething(context.string);
783
+ }
784
+ ```
785
+
786
+ **After:**
787
+
788
+ ```typescript
789
+ inputSchema: z.object({ something: z.string() }),
790
+ execute: async (inputData, context) => {
791
+ const { agent, mcp, workflow, ...sharedContext } = context
792
+
793
+ // context that only an agent would get like toolCallId, messages, suspend, resume, etc
794
+ if (agent) {
795
+ doSomething(inputData.something, agent)
796
+ // context that only a workflow would get like runId, state, suspend, resume, etc
797
+ } else if (workflow) {
798
+ doSomething(inputData.something, workflow)
799
+ // context that only a workflow would get like "extra", "elicitation"
800
+ } else if (mcp) {
801
+ doSomething(inputData.something, mcp)
802
+ } else {
803
+ // Running a tool in no execution context
804
+ return doSomething(inputData.something);
805
+ }
806
+ }
807
+ ```
808
+
809
+ - Removes the deprecated `threadId` and `resourceId` options from `AgentExecutionOptions`. These have been deprecated for months in favour of the `memory` option. ([#11897](https://github.com/mastra-ai/mastra/pull/11897))
810
+
811
+ ### Breaking Changes
812
+
813
+ #### `@mastra/core`
814
+
815
+ The `threadId` and `resourceId` options have been removed from `agent.generate()` and `agent.stream()`. Use the `memory` option instead:
816
+
817
+ ```ts
818
+ // Before
819
+ await agent.stream('Hello', {
820
+ threadId: 'thread-123',
821
+ resourceId: 'user-456',
822
+ });
823
+
824
+ // After
825
+ await agent.stream('Hello', {
826
+ memory: {
827
+ thread: 'thread-123',
828
+ resource: 'user-456',
829
+ },
830
+ });
831
+ ```
832
+
833
+ #### `@mastra/server`
834
+
835
+ The `threadId`, `resourceId`, and `resourceid` fields have been removed from the main agent execution body schema. The server now expects the `memory` option format in request bodies. Legacy routes (`/api/agents/:agentId/generate-legacy` and `/api/agents/:agentId/stream-legacy`) continue to support the deprecated fields.
836
+
837
+ #### `@mastra/react`
838
+
839
+ The `useChat` hook now internally converts `threadId` to the `memory` option format when making API calls. No changes needed in component code - the hook handles the conversion automatically.
840
+
841
+ #### `@mastra/client-js`
842
+
843
+ When using the client SDK agent methods, use the `memory` option instead of `threadId`/`resourceId`:
844
+
845
+ ```ts
846
+ const agent = client.getAgent('my-agent');
847
+
848
+ // Before
849
+ await agent.generate([...], {
850
+ threadId: 'thread-123',
851
+ resourceId: 'user-456',
852
+ });
853
+
854
+ // After
855
+ await agent.generate([...], {
856
+ memory: {
857
+ thread: 'thread-123',
858
+ resource: 'user-456',
859
+ },
860
+ });
861
+ ```
862
+
863
+ - Fixed orderBy query parameter parsing for memory endpoints. The listMessages and listThreads endpoints now correctly parse orderBy when passed as a JSON string in URL query parameters, matching the existing behavior for include and filter parameters. ([#11767](https://github.com/mastra-ai/mastra/pull/11767))
864
+
865
+ - Add human-in-the-loop (HITL) support to agent networks ([#11678](https://github.com/mastra-ai/mastra/pull/11678))
866
+ - Add suspend/resume capabilities to agent network
867
+ - Enable auto-resume for suspended network execution via `autoResumeSuspendedTools`
868
+
869
+ `agent.resumeNetwork`, `agent.approveNetworkToolCall`, `agent.declineNetworkToolCall`
870
+
871
+ - Add the description field to listAgents ([#9672](https://github.com/mastra-ai/mastra/pull/9672))
872
+
873
+ - Fix query parameter parsing for complex nested optional types ([#11711](https://github.com/mastra-ai/mastra/pull/11711))
874
+
875
+ Fixes an issue where complex query parameters (like `startedAt` and `endedAt` date range filters) would fail with "Expected object, received string" errors when using the `listTraces` API.
876
+
877
+ The fix addresses two issues:
878
+ - Properly unwraps all layers of nested optional/nullable types (e.g., from `.partial()` on already-optional fields)
879
+ - Ensures compatibility with both zod v3 and v4
880
+
881
+ - Add execution metadata to A2A message/send responses. The A2A protocol now returns detailed execution information including tool calls, tool results, token usage, and finish reason in the task metadata. This allows clients to inspect which tools were invoked during agent execution and access execution statistics without additional queries. ([#11241](https://github.com/mastra-ai/mastra/pull/11241))
882
+
883
+ - Fix the link issue in observability ([#9764](https://github.com/mastra-ai/mastra/pull/9764))
884
+
885
+ - Fixes issue #11185 where `MastraServer.tools` was rejecting tools created with `createTool({ inputSchema })`. Changed the tools property type from `Record<string, Tool>` to `ToolsInput` to accept tools with any schema types (input, output, or none), as well as Vercel AI SDK tools and provider-defined tools. ([`5118f38`](https://github.com/mastra-ai/mastra/commit/5118f384a70b1166012fde3b901f3227870b1009))
886
+
887
+ Tools created with `createTool({ inputSchema: z.object(...) })` now work without TypeScript errors.
888
+
889
+ - Fix workflow observability view broken by invalid entityType parameter ([#11427](https://github.com/mastra-ai/mastra/pull/11427))
890
+
891
+ The UI workflow observability view was failing with a Zod validation error when trying to filter traces by workflow. The UI was sending `entityType=workflow`, but the backend's `EntityType` enum only accepts `workflow_run`.
892
+
893
+ **Root Cause**: The legacy value transformation was happening in the handler (after validation), but Zod validation occurred earlier in the request pipeline, rejecting the request before it could be transformed.
894
+
895
+ **Solution**:
896
+ - Added `z.preprocess()` to the query schema to transform `workflow` → `workflow_run` before validation
897
+ - Kept handler transformation for defense in depth
898
+ - Updated UI to use `EntityType.WORKFLOW_RUN` enum value for type safety
899
+
900
+ This maintains backward compatibility with legacy clients while fixing the validation error.
901
+
902
+ Fixes #11412
903
+
904
+ - Add timeTravel APIs and add timeTravel feature to studio ([#10361](https://github.com/mastra-ai/mastra/pull/10361))
905
+
906
+ - Improve type handling with Zod ([#12091](https://github.com/mastra-ai/mastra/pull/12091))
907
+
908
+ - feat: Add field filtering and nested workflow control to workflow execution result endpoint ([#11246](https://github.com/mastra-ai/mastra/pull/11246))
909
+
910
+ Adds two optional query parameters to `/api/workflows/:workflowId/runs/:runId/execution-result` endpoint:
911
+ - `fields`: Request only specific fields (e.g., `status`, `result`, `error`)
912
+ - `withNestedWorkflows`: Control whether to fetch nested workflow data
913
+
914
+ This significantly reduces response payload size and improves response times for large workflows.
915
+
916
+ ## Server Endpoint Usage
917
+
918
+ ```http
919
+ # Get only status (minimal payload - fastest)
920
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status
921
+
922
+ # Get status and result
923
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status,result
924
+
925
+ # Get all fields but without nested workflow data (faster)
926
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?withNestedWorkflows=false
927
+
928
+ # Get only specific fields without nested workflow data
929
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status,steps&withNestedWorkflows=false
930
+
931
+ # Get full data (default behavior)
932
+ GET /api/workflows/:workflowId/runs/:runId/execution-result
933
+ ```
934
+
935
+ ## Client SDK Usage
936
+
937
+ ```typescript
938
+ import { MastraClient } from '@mastra/client-js';
939
+
940
+ const client = new MastraClient({ baseUrl: 'http://localhost:4111' });
941
+ const workflow = client.getWorkflow('myWorkflow');
942
+
943
+ // Get only status (minimal payload - fastest)
944
+ const statusOnly = await workflow.runExecutionResult(runId, {
945
+ fields: ['status'],
946
+ });
947
+ console.log(statusOnly.status); // 'success' | 'failed' | 'running' | etc.
948
+
949
+ // Get status and result
950
+ const statusAndResult = await workflow.runExecutionResult(runId, {
951
+ fields: ['status', 'result'],
952
+ });
953
+
954
+ // Get all fields but without nested workflow data (faster)
955
+ const resultWithoutNested = await workflow.runExecutionResult(runId, {
956
+ withNestedWorkflows: false,
957
+ });
958
+
959
+ // Get specific fields without nested workflow data
960
+ const optimized = await workflow.runExecutionResult(runId, {
961
+ fields: ['status', 'steps'],
962
+ withNestedWorkflows: false,
963
+ });
964
+
965
+ // Get full execution result (default behavior)
966
+ const fullResult = await workflow.runExecutionResult(runId);
967
+ ```
968
+
969
+ ## Core API Changes
970
+
971
+ The `Workflow.getWorkflowRunExecutionResult` method now accepts an options object:
972
+
973
+ ```typescript
974
+ await workflow.getWorkflowRunExecutionResult(runId, {
975
+ withNestedWorkflows: false, // default: true, set to false to skip nested workflow data
976
+ fields: ['status', 'result'], // optional field filtering
977
+ });
978
+ ```
979
+
980
+ ## Inngest Compatibility
981
+
982
+ The `@mastra/inngest` package has been updated to use the new options object API. This is a non-breaking internal change - no action required from inngest workflow users.
983
+
984
+ ## Performance Impact
985
+
986
+ For workflows with large step outputs:
987
+ - Requesting only `status`: ~99% reduction in payload size
988
+ - Requesting `status,result,error`: ~95% reduction in payload size
989
+ - Using `withNestedWorkflows=false`: Avoids expensive nested workflow data fetching
990
+ - Combining both: Maximum performance optimization
991
+
992
+ - Refactor storage architecture to use domain-specific stores via `getStore()` pattern ([#11361](https://github.com/mastra-ai/mastra/pull/11361))
993
+
994
+ ### Summary
995
+
996
+ This release introduces a new storage architecture that replaces passthrough methods on `MastraStorage` with domain-specific storage interfaces accessed via `getStore()`. This change reduces code duplication across storage adapters and provides a cleaner, more modular API.
997
+
998
+ ### Migration Guide
999
+
1000
+ All direct method calls on storage instances should be updated to use `getStore()`:
1001
+
1002
+ ```typescript
1003
+ // Before
1004
+ const thread = await storage.getThreadById({ threadId });
1005
+ await storage.persistWorkflowSnapshot({ workflowName, runId, snapshot });
1006
+ await storage.createSpan(span);
1007
+
1008
+ // After
1009
+ const memory = await storage.getStore('memory');
1010
+ const thread = await memory?.getThreadById({ threadId });
1011
+
1012
+ const workflows = await storage.getStore('workflows');
1013
+ await workflows?.persistWorkflowSnapshot({ workflowName, runId, snapshot });
1014
+
1015
+ const observability = await storage.getStore('observability');
1016
+ await observability?.createSpan(span);
1017
+ ```
1018
+
1019
+ ### Available Domains
1020
+ - **`memory`**: Thread and message operations (`getThreadById`, `saveThread`, `saveMessages`, etc.)
1021
+ - **`workflows`**: Workflow state persistence (`persistWorkflowSnapshot`, `loadWorkflowSnapshot`, `getWorkflowRunById`, etc.)
1022
+ - **`scores`**: Evaluation scores (`saveScore`, `listScoresByScorerId`, etc.)
1023
+ - **`observability`**: Tracing and spans (`createSpan`, `updateSpan`, `getTrace`, etc.)
1024
+ - **`agents`**: Stored agent configurations (`createAgent`, `getAgentById`, `listAgents`, etc.)
1025
+
1026
+ ### Breaking Changes
1027
+ - Passthrough methods have been removed from `MastraStorage` base class
1028
+ - All storage adapters now require accessing domains via `getStore()`
1029
+ - The `stores` property on storage instances is now the canonical way to access domain storage
1030
+
1031
+ ### Internal Changes
1032
+ - Each storage adapter now initializes domain-specific stores in its constructor
1033
+ - Domain stores share database connections and handle their own table initialization
1034
+
1035
+ - Add tool call approval ([#8649](https://github.com/mastra-ai/mastra/pull/8649))
1036
+
1037
+ - Fix scorers listing filtring ([#9801](https://github.com/mastra-ai/mastra/pull/9801))
1038
+
1039
+ - **Breaking Changes** ([#11028](https://github.com/mastra-ai/mastra/pull/11028))
1040
+ - Renamed `RuntimeContext` type to `ServerContext` to avoid confusion with the user-facing `RequestContext` (previously called `RuntimeContext`)
1041
+ - Removed `playground` and `isDev` options from server adapter constructors - these only set context variables without any actual functionality
1042
+
1043
+ **Changes**
1044
+
1045
+ **@mastra/server**
1046
+ - Renamed `RuntimeContext` type to `ServerContext` in route handler types
1047
+ - Renamed `createTestRuntimeContext` to `createTestServerContext` in test utilities
1048
+ - Renamed `isPlayground` parameter to `isStudio` in `formatAgent` function
1049
+
1050
+ **@mastra/hono**
1051
+ - Removed `playground` and `isDev` from `HonoVariables` type
1052
+ - Removed setting of `playground` and `isDev` context variables in middleware
1053
+
1054
+ **@mastra/express**
1055
+ - Removed `playground` and `isDev` from `Express.Locals` interface
1056
+ - Removed setting of `playground` and `isDev` in response locals
1057
+
1058
+ - Fixes issue where clicking the reset button in the model picker would fail to restore the original LanguageModelV2 (or any other types) object that was passed during agent construction. ([#9481](https://github.com/mastra-ai/mastra/pull/9481))
1059
+
1060
+ - Unified MastraServer API with MCP transport routes ([#10644](https://github.com/mastra-ai/mastra/pull/10644))
1061
+
1062
+ **Breaking Changes:**
1063
+ - Renamed `HonoServerAdapter` to `MastraServer` in `@mastra/hono`
1064
+ - Renamed `ExpressServerAdapter` to `MastraServer` in `@mastra/express`
1065
+ - Configuration now passed to constructor instead of separate method calls
1066
+ - Renamed base class from `ServerAdapter` to `MastraServerBase` in `@mastra/server`
1067
+
1068
+ **New Features:**
1069
+ - Added MCP transport routes (HTTP and SSE) to server adapters
1070
+ - MCP endpoints available at `/api/mcp/:serverId/mcp` (HTTP) and `/api/mcp/:serverId/sse` (SSE)
1071
+ - Added `express.json()` middleware compatibility for MCP routes
1072
+ - Moved authentication helpers from deployer to `@mastra/server/auth`
1073
+
1074
+ **Testing:**
1075
+ - Added shared MCP route and transport test suites in `@internal/server-adapter-test-utils`
1076
+ - Added comprehensive MCP endpoint tests for both Hono and Express adapters
1077
+ - Added GitHub Actions workflow for server adapter CI testing
1078
+
1079
+ - Add storage composition to MastraStorage ([#11401](https://github.com/mastra-ai/mastra/pull/11401))
1080
+
1081
+ `MastraStorage` can now compose storage domains from different adapters. Use it when you need different databases for different purposes - for example, PostgreSQL for memory and workflows, but a different database for observability.
1082
+
1083
+ ```typescript
1084
+ import { MastraStorage } from '@mastra/core/storage';
1085
+ import { MemoryPG, WorkflowsPG, ScoresPG } from '@mastra/pg';
1086
+ import { MemoryLibSQL } from '@mastra/libsql';
1087
+
1088
+ // Compose domains from different stores
1089
+ const storage = new MastraStorage({
1090
+ id: 'composite',
1091
+ domains: {
1092
+ memory: new MemoryLibSQL({ url: 'file:./local.db' }),
1093
+ workflows: new WorkflowsPG({ connectionString: process.env.DATABASE_URL }),
1094
+ scores: new ScoresPG({ connectionString: process.env.DATABASE_URL }),
1095
+ },
1096
+ });
1097
+ ```
1098
+
1099
+ **Breaking changes:**
1100
+ - `storage.supports` property no longer exists
1101
+ - `StorageSupports` type is no longer exported from `@mastra/core/storage`
1102
+
1103
+ All stores now support the same features. For domain availability, use `getStore()`:
1104
+
1105
+ ```typescript
1106
+ const store = await storage.getStore('memory');
1107
+ if (store) {
1108
+ // domain is available
1109
+ }
1110
+ ```
1111
+
1112
+ - Remove deprecated playground-only prompt generation handler (functionality moved to @mastra/server) ([#11074](https://github.com/mastra-ai/mastra/pull/11074))
1113
+
1114
+ Improve prompt enhancement UX: show toast errors when enhancement fails, disable button when no model has a configured API key, and prevent users from disabling all models in the model list
1115
+
1116
+ Add missing `/api/agents/:agentId/instructions/enhance` endpoint that was referenced by `@mastra/client-js` and `@mastra/playground-ui`
1117
+
1118
+ - Update peer dependencies to match core package version bump (1.0.0) ([#9489](https://github.com/mastra-ai/mastra/pull/9489))
1119
+
1120
+ - Add delete workflow run API ([#10991](https://github.com/mastra-ai/mastra/pull/10991))
1121
+
1122
+ ```typescript
1123
+ await workflow.deleteWorkflowRunById(runId);
1124
+ ```
1125
+
1126
+ - Add initial state input to workflow form in studio ([#11560](https://github.com/mastra-ai/mastra/pull/11560))
1127
+
1128
+ - Fix 'Memory is not initialized' error in playground for agents with sub-agents but no memory ([#11780](https://github.com/mastra-ai/mastra/pull/11780))
1129
+
1130
+ When using agents with sub-agents (e.g., agent networks) but no memory configured, the playground UI would log HTTPException errors when fetching messages for sub-agents without memory.
1131
+
1132
+ Changed GET /api/memory/threads/:threadId/messages to return empty messages `{ messages: [], uiMessages: [] }` instead of throwing 400 error when memory is not configured for the requested agent.
1133
+
1134
+ - Allow direct access to server app handle directly from Mastra instance. ([#10598](https://github.com/mastra-ai/mastra/pull/10598))
1135
+
1136
+ ```ts
1137
+ // Before: HTTP request to localhost
1138
+ const response = await fetch(`http://localhost:5000/api/tools`);
1139
+
1140
+ // After: Direct call via app.fetch()
1141
+ const app = mastra.getServerApp<Hono>();
1142
+ const response = await app.fetch(new Request('http://internal/api/tools'));
1143
+ ```
1144
+
1145
+ - Added `mastra.getServerApp<T>()` to access the underlying Hono/Express app
1146
+ - Added `mastra.getMastraServer()` and `mastra.setMastraServer()` for adapter access
1147
+ - Added `MastraServerBase` class in `@mastra/core/server` for adapter implementations
1148
+ - Server adapters now auto-register with Mastra in their constructor
1149
+
1150
+ - Add `/api/system/packages` endpoint that returns installed Mastra packages and versions from the dev environment ([#11211](https://github.com/mastra-ai/mastra/pull/11211))
1151
+
1152
+ - Add `perStep` option to workflow run methods, allowing a workflow to run just a step instead of all the workflow steps ([#11276](https://github.com/mastra-ai/mastra/pull/11276))
1153
+
1154
+ - Standardize pagination params to page/perPage with backwards compatibility for limit/offset ([#10790](https://github.com/mastra-ai/mastra/pull/10790))
1155
+ - Server now accepts both `page`/`perPage` and legacy `limit`/`offset` params for workflow runs and MCP server listing endpoints
1156
+ - Client SDK sends both param formats to support older server versions
1157
+ - Added `createCombinedPaginationSchema` helper for endpoints needing backwards compatibility
1158
+ - Marked `limit` and `offset` as deprecated in client types
1159
+
1160
+ - Fixed server handler bugs: filter parsing now handles colons in values (timestamps, URLs), dateRange validation now converts JSON strings to Date objects, deleteMessages schema accepts object forms, and added missing responseSchema for legacy stream route ([#10362](https://github.com/mastra-ai/mastra/pull/10362))
1161
+
1162
+ - **Client (`@mastra/client-js`):** ([#10653](https://github.com/mastra-ai/mastra/pull/10653))
1163
+ - Fixed `sendStreamingMessage` to properly return a streaming response instead of attempting to parse it as JSON
1164
+
1165
+ **Server (`@mastra/server`):**
1166
+ - Fixed A2A message handler to pass `contextId` as `threadId` for memory persistence across conversations
1167
+ - Added support for user-provided `resourceId` via `params.metadata.resourceId` or `message.metadata.resourceId`, falling back to `agentId`
1168
+
1169
+ - Fix undefined runtimeContext using memory from playground ([#9328](https://github.com/mastra-ai/mastra/pull/9328))
1170
+
1171
+ - Make step optional in resumeStreamVNext API ([#9453](https://github.com/mastra-ai/mastra/pull/9453))
1172
+
1173
+ - Adds thread cloning to create independent copies of conversations that can diverge. ([#11517](https://github.com/mastra-ai/mastra/pull/11517))
1174
+
1175
+ ```typescript
1176
+ // Clone a thread
1177
+ const { thread, clonedMessages } = await memory.cloneThread({
1178
+ sourceThreadId: 'thread-123',
1179
+ title: 'My Clone',
1180
+ options: {
1181
+ messageLimit: 10, // optional: only copy last N messages
1182
+ },
1183
+ });
1184
+
1185
+ // Check if a thread is a clone
1186
+ if (memory.isClone(thread)) {
1187
+ const source = await memory.getSourceThread(thread.id);
1188
+ }
1189
+
1190
+ // List all clones of a thread
1191
+ const clones = await memory.listClones('thread-123');
1192
+ ```
1193
+
1194
+ Includes:
1195
+ - Storage implementations for InMemory, PostgreSQL, LibSQL, Upstash
1196
+ - API endpoint: `POST /api/memory/threads/:threadId/clone`
1197
+ - Embeddings created for cloned messages (semantic recall)
1198
+ - Clone button in playground UI Memory tab
1199
+
1200
+ - The `stream` API endpoint now automatically redacts `request` data from stream chunks (`step-start`, `step-finish`, `finish`) which could contain system prompts, tool definitions, and API keys. Redaction is enabled by default and can be disabled for debugging/internal services via `streamOptions.redact`. ([#10705](https://github.com/mastra-ai/mastra/pull/10705))
1201
+
1202
+ - Remove `waitForEvent` from workflows. `waitForEvent` is now removed, please use suspend & resume flow instead. See https://mastra.ai/en/docs/workflows/suspend-and-resume for more details on suspend & resume flow. ([#9214](https://github.com/mastra-ai/mastra/pull/9214))
1203
+
1204
+ - Add optional `partial` query parameter to `/api/agents` and `/api/workflows` endpoints to return minimal data without schemas, reducing payload size for list views: ([#10886](https://github.com/mastra-ai/mastra/pull/10886))
1205
+ - When `partial=true`: tool schemas (inputSchema, outputSchema) are omitted
1206
+ - When `partial=true`: workflow steps are replaced with stepCount integer
1207
+ - When `partial=true`: workflow root schemas (inputSchema, outputSchema) are omitted
1208
+ - Maintains backward compatibility when partial parameter is not provided
1209
+
1210
+ **Server Endpoint Usage**
1211
+
1212
+ ```bash
1213
+ # Get partial agent data (no tool schemas)
1214
+ GET /api/agents?partial=true
1215
+
1216
+ # Get full agent data (default behavior)
1217
+ GET /api/agents
1218
+
1219
+ # Get partial workflow data (stepCount instead of steps, no schemas)
1220
+ GET /api/workflows?partial=true
1221
+
1222
+ # Get full workflow data (default behavior)
1223
+ GET /api/workflows
1224
+ ```
1225
+
1226
+ **Client SDK Usage**
1227
+
1228
+ ```typescript
1229
+ import { MastraClient } from '@mastra/client-js';
1230
+
1231
+ const client = new MastraClient({ baseUrl: 'http://localhost:4111' });
1232
+
1233
+ // Get partial agent list (smaller payload)
1234
+ const partialAgents = await client.listAgents({ partial: true });
1235
+
1236
+ // Get full agent list with tool schemas
1237
+ const fullAgents = await client.listAgents();
1238
+
1239
+ // Get partial workflow list (smaller payload)
1240
+ const partialWorkflows = await client.listWorkflows({ partial: true });
1241
+
1242
+ // Get full workflow list with steps and schemas
1243
+ const fullWorkflows = await client.listWorkflows();
1244
+ ```
1245
+
1246
+ - Use memory mock in server tests ([#9486](https://github.com/mastra-ai/mastra/pull/9486))
1247
+
1248
+ - Support new Workflow tripwire run status. Tripwires that are thrown from within a workflow will now bubble up and return a graceful state with information about tripwires. ([#10947](https://github.com/mastra-ai/mastra/pull/10947))
1249
+
1250
+ When a workflow contains an agent step that triggers a tripwire, the workflow returns with `status: 'tripwire'` and includes tripwire details:
1251
+
1252
+ ```typescript
1253
+ const run = await workflow.createRun();
1254
+ const result = await run.start({ inputData: { message: 'Hello' } });
1255
+
1256
+ if (result.status === 'tripwire') {
1257
+ console.log('Workflow terminated by tripwire:', result.tripwire?.reason);
1258
+ console.log('Processor ID:', result.tripwire?.processorId);
1259
+ console.log('Retry requested:', result.tripwire?.retry);
1260
+ }
1261
+ ```
1262
+
1263
+ Adds new UI state for tripwire in agent chat and workflow UI.
1264
+
1265
+ This is distinct from `status: 'failed'` which indicates an unexpected error. A tripwire status means a processor intentionally stopped execution (e.g., for content moderation).
1266
+
1267
+ - Network handler now accesses thread and resource parameters from the nested memory object instead of directly from request body. ([#10294](https://github.com/mastra-ai/mastra/pull/10294))
1268
+
1269
+ - Remove format from stream/generate ([#9577](https://github.com/mastra-ai/mastra/pull/9577))
1270
+
1271
+ - Make agentId optional for memory read operations (getThread, listThreads, listMessages) ([#11540](https://github.com/mastra-ai/mastra/pull/11540))
1272
+
1273
+ When workflows use multiple agents sharing the same threadId/resourceId, users can now retrieve threads and messages without specifying an agentId. The server falls back to using storage directly when agentId is not provided.
1274
+
1275
+ - Fixed voice transcription endpoint ([#11348](https://github.com/mastra-ai/mastra/pull/11348))
1276
+
1277
+ The voice transcription endpoint (`/api/agents/:agentId/voice/listen`) now correctly handles multipart/form-data requests for audio uploads rather than only parsing JSON request bodies.
1278
+
1279
+ Both Express and Hono adapters now parse multipart/form-data bodies and handle JSON-encoded form fields.
1280
+
1281
+ **Breaking change:** The server schema field for the transcription endpoint was renamed from `audioData` to `audio` to match the client SDK. If you are making direct API calls to the transcription endpoint (not using the SDK), you will need to update your request body to use `audio` instead of `audioData`.
1282
+
1283
+ - Updated dependencies [[`ac0d2f4`](https://github.com/mastra-ai/mastra/commit/ac0d2f4ff8831f72c1c66c2be809706d17f65789), [`2319326`](https://github.com/mastra-ai/mastra/commit/2319326f8c64e503a09bbcf14be2dd65405445e0), [`d2d3e22`](https://github.com/mastra-ai/mastra/commit/d2d3e22a419ee243f8812a84e3453dd44365ecb0), [`08766f1`](https://github.com/mastra-ai/mastra/commit/08766f15e13ac0692fde2a8bd366c2e16e4321df), [`72df8ae`](https://github.com/mastra-ai/mastra/commit/72df8ae595584cdd7747d5c39ffaca45e4507227), [`ebae12a`](https://github.com/mastra-ai/mastra/commit/ebae12a2dd0212e75478981053b148a2c246962d), [`c8417b4`](https://github.com/mastra-ai/mastra/commit/c8417b41d9f3486854dc7842d977fbe5e2166264), [`bc72b52`](https://github.com/mastra-ai/mastra/commit/bc72b529ee4478fe89ecd85a8be47ce0127b82a0), [`39c9743`](https://github.com/mastra-ai/mastra/commit/39c97432d084294f8ba85fbf3ef28098ff21459e), [`1dbd8c7`](https://github.com/mastra-ai/mastra/commit/1dbd8c729fb6536ec52f00064d76b80253d346e9), [`c61a0a5`](https://github.com/mastra-ai/mastra/commit/c61a0a5de4904c88fd8b3718bc26d1be1c2ec6e7), [`05b8bee`](https://github.com/mastra-ai/mastra/commit/05b8bee9e50e6c2a4a2bf210eca25ee212ca24fa), [`3076c67`](https://github.com/mastra-ai/mastra/commit/3076c6778b18988ae7d5c4c5c466366974b2d63f), [`3d93a15`](https://github.com/mastra-ai/mastra/commit/3d93a15796b158c617461c8b98bede476ebb43e2), [`9198899`](https://github.com/mastra-ai/mastra/commit/91988995c427b185c33714b7f3be955367911324), [`ed3e3dd`](https://github.com/mastra-ai/mastra/commit/ed3e3ddec69d564fe2b125e083437f76331f1283), [`c59e13c`](https://github.com/mastra-ai/mastra/commit/c59e13c7688284bd96b2baee3e314335003548de), [`c042bd0`](https://github.com/mastra-ai/mastra/commit/c042bd0b743e0e86199d0cb83344ca7690e34a9c), [`f743dbb`](https://github.com/mastra-ai/mastra/commit/f743dbb8b40d1627b5c10c0e6fc154f4ebb6e394), [`21a15de`](https://github.com/mastra-ai/mastra/commit/21a15de369fe82aac26bb642ed7be73505475e8b), [`e54953e`](https://github.com/mastra-ai/mastra/commit/e54953ed8ce1b28c0d62a19950163039af7834b4), [`ae8baf7`](https://github.com/mastra-ai/mastra/commit/ae8baf7d8adcb0ff9dac11880400452bc49b33ff), [`fec5129`](https://github.com/mastra-ai/mastra/commit/fec5129de7fc64423ea03661a56cef31dc747a0d), [`940a2b2`](https://github.com/mastra-ai/mastra/commit/940a2b27480626ed7e74f55806dcd2181c1dd0c2), [`1a0d3fc`](https://github.com/mastra-ai/mastra/commit/1a0d3fc811482c9c376cdf79ee615c23bae9b2d6), [`85d7ee1`](https://github.com/mastra-ai/mastra/commit/85d7ee18ff4e14d625a8a30ec6656bb49804989b), [`c6c1092`](https://github.com/mastra-ai/mastra/commit/c6c1092f8fbf76109303f69e000e96fd1960c4ce), [`0491e7c`](https://github.com/mastra-ai/mastra/commit/0491e7c9b714cb0ba22187ee062147ec2dd7c712), [`f6f4903`](https://github.com/mastra-ai/mastra/commit/f6f4903397314f73362061dc5a3e8e7c61ea34aa), [`d5ed981`](https://github.com/mastra-ai/mastra/commit/d5ed981c8701c1b8a27a5f35a9a2f7d9244e695f), [`85a628b`](https://github.com/mastra-ai/mastra/commit/85a628b1224a8f64cd82ea7f033774bf22df7a7e), [`0e8ed46`](https://github.com/mastra-ai/mastra/commit/0e8ed467c54d6901a6a365f270ec15d6faadb36c), [`33a4d2e`](https://github.com/mastra-ai/mastra/commit/33a4d2e4ed8af51f69256232f00c34d6b6b51d48), [`9650cce`](https://github.com/mastra-ai/mastra/commit/9650cce52a1d917ff9114653398e2a0f5c3ba808), [`6c049d9`](https://github.com/mastra-ai/mastra/commit/6c049d94063fdcbd5b81c4912a2bf82a92c9cc0b), [`910db9e`](https://github.com/mastra-ai/mastra/commit/910db9e0312888495eb5617b567f247d03303814), [`2f897df`](https://github.com/mastra-ai/mastra/commit/2f897df208508f46f51b7625e5dd20c37f93e0e3), [`d629361`](https://github.com/mastra-ai/mastra/commit/d629361a60f6565b5bfb11976fdaf7308af858e2), [`4f94ed8`](https://github.com/mastra-ai/mastra/commit/4f94ed8177abfde3ec536e3574883e075423350c), [`feb7ee4`](https://github.com/mastra-ai/mastra/commit/feb7ee4d09a75edb46c6669a3beaceec78811747), [`4aaa844`](https://github.com/mastra-ai/mastra/commit/4aaa844a4f19d054490f43638a990cc57bda8d2f), [`c237233`](https://github.com/mastra-ai/mastra/commit/c23723399ccedf7f5744b3f40997b79246bfbe64), [`38380b6`](https://github.com/mastra-ai/mastra/commit/38380b60fca905824bdf6b43df307a58efb1aa15), [`6833c69`](https://github.com/mastra-ai/mastra/commit/6833c69607418d257750bbcdd84638993d343539), [`932d63d`](https://github.com/mastra-ai/mastra/commit/932d63dd51be9c8bf1e00e3671fe65606c6fb9cd), [`4a1a6cb`](https://github.com/mastra-ai/mastra/commit/4a1a6cb3facad54b2bb6780b00ce91d6de1edc08), [`08c31c1`](https://github.com/mastra-ai/mastra/commit/08c31c188ebccd598acaf55e888b6397d01f7eae), [`919a22b`](https://github.com/mastra-ai/mastra/commit/919a22b25876f9ed5891efe5facbe682c30ff497), [`15f9e21`](https://github.com/mastra-ai/mastra/commit/15f9e216177201ea6e3f6d0bfb063fcc0953444f), [`3443770`](https://github.com/mastra-ai/mastra/commit/3443770662df8eb24c9df3589b2792d78cfcb811), [`69136e7`](https://github.com/mastra-ai/mastra/commit/69136e748e32f57297728a4e0f9a75988462f1a7), [`b0e2ea5`](https://github.com/mastra-ai/mastra/commit/b0e2ea5b52c40fae438b9e2f7baee6f0f89c5442), [`f0a07e0`](https://github.com/mastra-ai/mastra/commit/f0a07e0111b3307c5fabfa4094c5c2cfb734fbe6), [`ff94dea`](https://github.com/mastra-ai/mastra/commit/ff94dea935f4e34545c63bcb6c29804732698809), [`0d41fe2`](https://github.com/mastra-ai/mastra/commit/0d41fe245355dfc66d61a0d9c85d9400aac351ff), [`b760b73`](https://github.com/mastra-ai/mastra/commit/b760b731aca7c8a3f041f61d57a7f125ae9cb215), [`aaa40e7`](https://github.com/mastra-ai/mastra/commit/aaa40e788628b319baa8e889407d11ad626547fa), [`1521d71`](https://github.com/mastra-ai/mastra/commit/1521d716e5daedc74690c983fbd961123c56756b), [`449aed2`](https://github.com/mastra-ai/mastra/commit/449aed2ba9d507b75bf93d427646ea94f734dfd1), [`eb648a2`](https://github.com/mastra-ai/mastra/commit/eb648a2cc1728f7678768dd70cd77619b448dab9), [`695a621`](https://github.com/mastra-ai/mastra/commit/695a621528bdabeb87f83c2277cf2bb084c7f2b4), [`9e1911d`](https://github.com/mastra-ai/mastra/commit/9e1911db2b4db85e0e768c3f15e0d61e319869f6), [`ac3cc23`](https://github.com/mastra-ai/mastra/commit/ac3cc2397d1966bc0fc2736a223abc449d3c7719), [`c456e01`](https://github.com/mastra-ai/mastra/commit/c456e0149e3c176afcefdbd9bb1d2c5917723725), [`ebac155`](https://github.com/mastra-ai/mastra/commit/ebac15564a590117db7078233f927a7e28a85106), [`a86f4df`](https://github.com/mastra-ai/mastra/commit/a86f4df0407311e0d2ea49b9a541f0938810d6a9), [`dd1c38d`](https://github.com/mastra-ai/mastra/commit/dd1c38d1b75f1b695c27b40d8d9d6ed00d5e0f6f), [`5948e6a`](https://github.com/mastra-ai/mastra/commit/5948e6a5146c83666ba3f294b2be576c82a513fb), [`5b2ff46`](https://github.com/mastra-ai/mastra/commit/5b2ff4651df70c146523a7fca773f8eb0a2272f8), [`edb07e4`](https://github.com/mastra-ai/mastra/commit/edb07e49283e0c28bd094a60e03439bf6ecf0221), [`e0941c3`](https://github.com/mastra-ai/mastra/commit/e0941c3d7fc75695d5d258e7008fd5d6e650800c), [`db41688`](https://github.com/mastra-ai/mastra/commit/db4168806d007417e2e60b4f68656dca4e5f40c9), [`2b459f4`](https://github.com/mastra-ai/mastra/commit/2b459f466fd91688eeb2a44801dc23f7f8a887ab), [`798d0c7`](https://github.com/mastra-ai/mastra/commit/798d0c740232653b1d754870e6b43a55c364ffe2), [`0c0580a`](https://github.com/mastra-ai/mastra/commit/0c0580a42f697cd2a7d5973f25bfe7da9055038a), [`8940859`](https://github.com/mastra-ai/mastra/commit/89408593658199b4ad67f7b65e888f344e64a442), [`486352b`](https://github.com/mastra-ai/mastra/commit/486352b66c746602b68a95839f830de14c7fb8c0), [`ab035c2`](https://github.com/mastra-ai/mastra/commit/ab035c2ef6d8cc7bb25f06f1a38508bd9e6f126b), [`e629310`](https://github.com/mastra-ai/mastra/commit/e629310f1a73fa236d49ec7a1d1cceb6229dc7cc), [`0131105`](https://github.com/mastra-ai/mastra/commit/0131105532e83bdcbb73352fc7d0879eebf140dc), [`5ca599d`](https://github.com/mastra-ai/mastra/commit/5ca599d0bb59a1595f19f58473fcd67cc71cef58), [`09e4bae`](https://github.com/mastra-ai/mastra/commit/09e4bae18dd5357d2ae078a4a95a2af32168ab08), [`47b1c16`](https://github.com/mastra-ai/mastra/commit/47b1c16a01c7ffb6765fe1e499b49092f8b7eba3), [`4c6b492`](https://github.com/mastra-ai/mastra/commit/4c6b492c4dd591c6a592520c1f6855d6e936d71f), [`bff1145`](https://github.com/mastra-ai/mastra/commit/bff114556b3cbadad9b2768488708f8ad0e91475), [`dff01d8`](https://github.com/mastra-ai/mastra/commit/dff01d81ce1f4e4087cfac20fa868e6db138dd14), [`9d5059e`](https://github.com/mastra-ai/mastra/commit/9d5059eae810829935fb08e81a9bb7ecd5b144a7), [`ffe84d5`](https://github.com/mastra-ai/mastra/commit/ffe84d54f3b0f85167fe977efd027dba027eb998), [`5c8ca24`](https://github.com/mastra-ai/mastra/commit/5c8ca247094e0cc2cdbd7137822fb47241f86e77), [`9d819d5`](https://github.com/mastra-ai/mastra/commit/9d819d54b61481639f4008e4694791bddf187edd), [`24b76d8`](https://github.com/mastra-ai/mastra/commit/24b76d8e17656269c8ed09a0c038adb9cc2ae95a), [`31d13d5`](https://github.com/mastra-ai/mastra/commit/31d13d5fdc2e2380e2e3ee3ec9fb29d2a00f265d), [`ef756c6`](https://github.com/mastra-ai/mastra/commit/ef756c65f82d16531c43f49a27290a416611e526), [`e191844`](https://github.com/mastra-ai/mastra/commit/e1918444ca3f80e82feef1dad506cd4ec6e2875f), [`243a823`](https://github.com/mastra-ai/mastra/commit/243a8239c5906f5c94e4f78b54676793f7510ae3), [`b00ccd3`](https://github.com/mastra-ai/mastra/commit/b00ccd325ebd5d9e37e34dd0a105caae67eb568f), [`28f5f89`](https://github.com/mastra-ai/mastra/commit/28f5f89705f2409921e3c45178796c0e0d0bbb64), [`22553f1`](https://github.com/mastra-ai/mastra/commit/22553f11c63ee5e966a9c034a349822249584691), [`4c62166`](https://github.com/mastra-ai/mastra/commit/4c621669f4a29b1f443eca3ba70b814afa286266), [`e601b27`](https://github.com/mastra-ai/mastra/commit/e601b272c70f3a5ecca610373aa6223012704892), [`7d56d92`](https://github.com/mastra-ai/mastra/commit/7d56d9213886e8353956d7d40df10045fd12b299), [`81dc110`](https://github.com/mastra-ai/mastra/commit/81dc11008d147cf5bdc8996ead1aa61dbdebb6fc), [`7bcbf10`](https://github.com/mastra-ai/mastra/commit/7bcbf10133516e03df964b941f9a34e9e4ab4177), [`029540c`](https://github.com/mastra-ai/mastra/commit/029540ca1e582fc2dd8d288ecd4a9b0f31a954ef), [`7237163`](https://github.com/mastra-ai/mastra/commit/72371635dbf96a87df4b073cc48fc655afbdce3d), [`2500740`](https://github.com/mastra-ai/mastra/commit/2500740ea23da067d6e50ec71c625ab3ce275e64), [`4353600`](https://github.com/mastra-ai/mastra/commit/43536005a65988a8eede236f69122e7f5a284ba2), [`653e65a`](https://github.com/mastra-ai/mastra/commit/653e65ae1f9502c2958a32f47a5a2df11e612a92), [`873ecbb`](https://github.com/mastra-ai/mastra/commit/873ecbb517586aa17d2f1e99283755b3ebb2863f), [`6986fb0`](https://github.com/mastra-ai/mastra/commit/6986fb064f5db6ecc24aa655e1d26529087b43b3), [`3d3366f`](https://github.com/mastra-ai/mastra/commit/3d3366f31683e7137d126a3a57174a222c5801fb), [`5a4953f`](https://github.com/mastra-ai/mastra/commit/5a4953f7d25bb15ca31ed16038092a39cb3f98b3), [`4f9bbe5`](https://github.com/mastra-ai/mastra/commit/4f9bbe5968f42c86f4930b8193de3c3c17e5bd36), [`efe406a`](https://github.com/mastra-ai/mastra/commit/efe406a1353c24993280ebc2ed61dd9f65b84b26), [`eb9e522`](https://github.com/mastra-ai/mastra/commit/eb9e522ce3070a405e5b949b7bf5609ca51d7fe2), [`fd3d338`](https://github.com/mastra-ai/mastra/commit/fd3d338a2c362174ed5b383f1f011ad9fb0302aa), [`20e6f19`](https://github.com/mastra-ai/mastra/commit/20e6f1971d51d3ff6dd7accad8aaaae826d540ed), [`053e979`](https://github.com/mastra-ai/mastra/commit/053e9793b28e970086b0507f7f3b76ea32c1e838), [`02e51fe`](https://github.com/mastra-ai/mastra/commit/02e51feddb3d4155cfbcc42624fd0d0970d032c0), [`71c8d6c`](https://github.com/mastra-ai/mastra/commit/71c8d6c161253207b2b9588bdadb7eed604f7253), [`7aedb74`](https://github.com/mastra-ai/mastra/commit/7aedb74883adf66af38e270e4068fd42e7a37036), [`3bdfa75`](https://github.com/mastra-ai/mastra/commit/3bdfa7507a91db66f176ba8221aa28dd546e464a), [`119e5c6`](https://github.com/mastra-ai/mastra/commit/119e5c65008f3e5cfca954eefc2eb85e3bf40da4), [`c6fd6fe`](https://github.com/mastra-ai/mastra/commit/c6fd6fedd09e9cf8004b03a80925f5e94826ad7e), [`8f02d80`](https://github.com/mastra-ai/mastra/commit/8f02d800777397e4b45d7f1ad041988a8b0c6630), [`fdac646`](https://github.com/mastra-ai/mastra/commit/fdac646033a0930a1a4e00d13aa64c40bb7f1e02), [`6179a9b`](https://github.com/mastra-ai/mastra/commit/6179a9ba36ffac326de3cc3c43cdc8028d37c251), [`8f3fa3a`](https://github.com/mastra-ai/mastra/commit/8f3fa3a652bb77da092f913ec51ae46e3a7e27dc), [`d07b568`](https://github.com/mastra-ai/mastra/commit/d07b5687819ea8cb1dffa776d0c1765faf4aa1ae), [`e770de9`](https://github.com/mastra-ai/mastra/commit/e770de941a287a49b1964d44db5a5763d19890a6), [`e26dc9c`](https://github.com/mastra-ai/mastra/commit/e26dc9c3ccfec54ae3dc3e2b2589f741f9ae60a6), [`55edf73`](https://github.com/mastra-ai/mastra/commit/55edf7302149d6c964fbb7908b43babfc2b52145), [`c30400a`](https://github.com/mastra-ai/mastra/commit/c30400a49b994b1b97256fe785eb6c906fc2b232), [`486352b`](https://github.com/mastra-ai/mastra/commit/486352b66c746602b68a95839f830de14c7fb8c0), [`00f4921`](https://github.com/mastra-ai/mastra/commit/00f4921dd2c91a1e5446799599ef7116a8214a1a), [`1a46a56`](https://github.com/mastra-ai/mastra/commit/1a46a566f45a3fcbadc1cf36bf86d351f264bfa3), [`ca8041c`](https://github.com/mastra-ai/mastra/commit/ca8041cce0379fda22ed293a565bcb5b6ddca68a), [`b5dc973`](https://github.com/mastra-ai/mastra/commit/b5dc9733a5158850298dfb103acb3babdba8a318), [`7051bf3`](https://github.com/mastra-ai/mastra/commit/7051bf38b3b122a069008f861f7bfc004a6d9f6e), [`a8f1494`](https://github.com/mastra-ai/mastra/commit/a8f1494f4bbdc2770bcf327d4c7d869e332183f1), [`52e2716`](https://github.com/mastra-ai/mastra/commit/52e2716b42df6eff443de72360ae83e86ec23993), [`d7aad50`](https://github.com/mastra-ai/mastra/commit/d7aad501ce61646b76b4b511e558ac4eea9884d0), [`4f0b3c6`](https://github.com/mastra-ai/mastra/commit/4f0b3c66f196c06448487f680ccbb614d281e2f7), [`27b4040`](https://github.com/mastra-ai/mastra/commit/27b4040bfa1a95d92546f420a02a626b1419a1d6), [`c61fac3`](https://github.com/mastra-ai/mastra/commit/c61fac3add96f0dcce0208c07415279e2537eb62), [`6f14f70`](https://github.com/mastra-ai/mastra/commit/6f14f706ccaaf81b69544b6c1b75ab66a41e5317), [`69e0a87`](https://github.com/mastra-ai/mastra/commit/69e0a878896a2da9494945d86e056a5f8f05b851), [`cd29ad2`](https://github.com/mastra-ai/mastra/commit/cd29ad23a255534e8191f249593849ed29160886), [`bdf4d8c`](https://github.com/mastra-ai/mastra/commit/bdf4d8cdc656d8a2c21d81834bfa3bfa70f56c16), [`854e3da`](https://github.com/mastra-ai/mastra/commit/854e3dad5daac17a91a20986399d3a51f54bf68b), [`ce18d38`](https://github.com/mastra-ai/mastra/commit/ce18d38678c65870350d123955014a8432075fd9), [`3cf540b`](https://github.com/mastra-ai/mastra/commit/3cf540b9fbfea8f4fc8d3a2319a4e6c0b0cbfd52), [`352a5d6`](https://github.com/mastra-ai/mastra/commit/352a5d625cfe09849b21e8f52a24c9f0366759d5), [`1c6ce51`](https://github.com/mastra-ai/mastra/commit/1c6ce51f875915ab57fd36873623013699a2a65d), [`74c4f22`](https://github.com/mastra-ai/mastra/commit/74c4f22ed4c71e72598eacc346ba95cdbc00294f), [`3a76a80`](https://github.com/mastra-ai/mastra/commit/3a76a80284cb71a0faa975abb3d4b2a9631e60cd), [`898a972`](https://github.com/mastra-ai/mastra/commit/898a9727d286c2510d6b702dfd367e6aaf5c6b0f), [`0793497`](https://github.com/mastra-ai/mastra/commit/079349753620c40246ffd673e3f9d7d9820beff3), [`09e4bae`](https://github.com/mastra-ai/mastra/commit/09e4bae18dd5357d2ae078a4a95a2af32168ab08), [`026b848`](https://github.com/mastra-ai/mastra/commit/026b8483fbf5b6d977be8f7e6aac8d15c75558ac), [`2c212e7`](https://github.com/mastra-ai/mastra/commit/2c212e704c90e2db83d4109e62c03f0f6ebd2667), [`a97003a`](https://github.com/mastra-ai/mastra/commit/a97003aa1cf2f4022a41912324a1e77263b326b8), [`f9a2509`](https://github.com/mastra-ai/mastra/commit/f9a25093ea72d210a5e52cfcb3bcc8b5e02dc25c), [`66741d1`](https://github.com/mastra-ai/mastra/commit/66741d1a99c4f42cf23a16109939e8348ac6852e), [`ccc141e`](https://github.com/mastra-ai/mastra/commit/ccc141ed27da0abc3a3fc28e9e5128152e8e37f4), [`27c0009`](https://github.com/mastra-ai/mastra/commit/27c0009777a6073d7631b0eb7b481d94e165b5ca), [`01f8878`](https://github.com/mastra-ai/mastra/commit/01f88783de25e4de048c1c8aace43e26373c6ea5), [`dee388d`](https://github.com/mastra-ai/mastra/commit/dee388dde02f2e63c53385ae69252a47ab6825cc), [`610a70b`](https://github.com/mastra-ai/mastra/commit/610a70bdad282079f0c630e0d7bb284578f20151), [`5df9cce`](https://github.com/mastra-ai/mastra/commit/5df9cce1a753438413f64c11eeef8f845745c2a8), [`b7e17d3`](https://github.com/mastra-ai/mastra/commit/b7e17d3f5390bb5a71efc112204413656fcdc18d), [`4c77209`](https://github.com/mastra-ai/mastra/commit/4c77209e6c11678808b365d545845918c40045c8), [`a854ede`](https://github.com/mastra-ai/mastra/commit/a854ede62bf5ac0945a624ac48913dd69c73aabf), [`fe3b897`](https://github.com/mastra-ai/mastra/commit/fe3b897c2ccbcd2b10e81b099438c7337feddf89), [`c576fc0`](https://github.com/mastra-ai/mastra/commit/c576fc0b100b2085afded91a37c97a0ea0ec09c7), [`3defc80`](https://github.com/mastra-ai/mastra/commit/3defc80cf2b88a1b7fc1cc4ddcb91e982a614609), [`00123ba`](https://github.com/mastra-ai/mastra/commit/00123ba96dc9e5cd0b110420ebdba56d8f237b25), [`16153fe`](https://github.com/mastra-ai/mastra/commit/16153fe7eb13c99401f48e6ca32707c965ee28b9), [`9f4a683`](https://github.com/mastra-ai/mastra/commit/9f4a6833e88b52574665c028fd5508ad5c2f6004), [`bc94344`](https://github.com/mastra-ai/mastra/commit/bc943444a1342d8a662151b7bce1df7dae32f59c), [`4ca4306`](https://github.com/mastra-ai/mastra/commit/4ca430614daa5fa04730205a302a43bf4accfe9f), [`cccf9c8`](https://github.com/mastra-ai/mastra/commit/cccf9c8b2d2dfc1a5e63919395b83d78c89682a0), [`74e504a`](https://github.com/mastra-ai/mastra/commit/74e504a3b584eafd2f198001c6a113bbec589fd3), [`29c4309`](https://github.com/mastra-ai/mastra/commit/29c4309f818b24304c041bcb4a8f19b5f13f6b62), [`16785ce`](https://github.com/mastra-ai/mastra/commit/16785ced928f6f22638f4488cf8a125d99211799), [`57d157f`](https://github.com/mastra-ai/mastra/commit/57d157f0b163a95c3e6c9eae31bdb11d1bfc64f9), [`61a5705`](https://github.com/mastra-ai/mastra/commit/61a570551278b6743e64243b3ce7d73de915ca8a), [`903f67d`](https://github.com/mastra-ai/mastra/commit/903f67d184504a273893818c02b961f5423a79ad), [`3f3fc30`](https://github.com/mastra-ai/mastra/commit/3f3fc3096f24c4a26cffeecfe73085928f72aa63), [`d827d08`](https://github.com/mastra-ai/mastra/commit/d827d0808ffe1f3553a84e975806cc989b9735dd), [`e33fdbd`](https://github.com/mastra-ai/mastra/commit/e33fdbd07b33920d81e823122331b0c0bee0bb59), [`4524734`](https://github.com/mastra-ai/mastra/commit/45247343e384717a7c8404296275c56201d6470f), [`7a010c5`](https://github.com/mastra-ai/mastra/commit/7a010c56b846a313a49ae42fccd3d8de2b9f292d), [`2a90c55`](https://github.com/mastra-ai/mastra/commit/2a90c55a86a9210697d5adaab5ee94584b079adc), [`2a53598`](https://github.com/mastra-ai/mastra/commit/2a53598c6d8cfeb904a7fc74e57e526d751c8fa6), [`81b6a8f`](https://github.com/mastra-ai/mastra/commit/81b6a8ff79f49a7549d15d66624ac1a0b8f5f971), [`8538a0d`](https://github.com/mastra-ai/mastra/commit/8538a0d232619bf55dad7ddc2a8b0ca77c679a87), [`d90ea65`](https://github.com/mastra-ai/mastra/commit/d90ea6536f7aa51c6545a4e9215b55858e98e16d), [`db70a48`](https://github.com/mastra-ai/mastra/commit/db70a48aeeeeb8e5f92007e8ede52c364ce15287), [`261473a`](https://github.com/mastra-ai/mastra/commit/261473ac637e633064a22076671e2e02b002214d), [`eb09742`](https://github.com/mastra-ai/mastra/commit/eb09742197f66c4c38154c3beec78313e69760b2), [`de8239b`](https://github.com/mastra-ai/mastra/commit/de8239bdcb1d8c0cfa06da21f1569912a66bbc8a), [`e4d366a`](https://github.com/mastra-ai/mastra/commit/e4d366aeb500371dd4210d6aa8361a4c21d87034), [`23c10a1`](https://github.com/mastra-ai/mastra/commit/23c10a1efdd9a693c405511ab2dc8a1236603162), [`b5e6cd7`](https://github.com/mastra-ai/mastra/commit/b5e6cd77fc8c8e64e0494c1d06cee3d84e795d1e), [`d171e55`](https://github.com/mastra-ai/mastra/commit/d171e559ead9f52ec728d424844c8f7b164c4510), [`f0fdc14`](https://github.com/mastra-ai/mastra/commit/f0fdc14ee233d619266b3d2bbdeea7d25cfc6d13), [`a4f010b`](https://github.com/mastra-ai/mastra/commit/a4f010b22e4355a5fdee70a1fe0f6e4a692cc29e), [`c7cd3c7`](https://github.com/mastra-ai/mastra/commit/c7cd3c7a187d7aaf79e2ca139de328bf609a14b4), [`db18bc9`](https://github.com/mastra-ai/mastra/commit/db18bc9c3825e2c1a0ad9a183cc9935f6691bfa1), [`96d35f6`](https://github.com/mastra-ai/mastra/commit/96d35f61376bc2b1bf148648a2c1985bd51bef55), [`68ec97d`](https://github.com/mastra-ai/mastra/commit/68ec97d4c07c6393fcf95c2481fc5d73da99f8c8), [`8dc7f55`](https://github.com/mastra-ai/mastra/commit/8dc7f55900395771da851dc7d78d53ae84fe34ec), [`cfabdd4`](https://github.com/mastra-ai/mastra/commit/cfabdd4aae7a726b706942d6836eeca110fb6267), [`9b37b56`](https://github.com/mastra-ai/mastra/commit/9b37b565e1f2a76c24f728945cc740c2b09be9da), [`01b20fe`](https://github.com/mastra-ai/mastra/commit/01b20fefb7c67c2b7d79417598ef4e60256d1225), [`dd4f34c`](https://github.com/mastra-ai/mastra/commit/dd4f34c78cbae24063463475b0619575c415f9b8), [`8379099`](https://github.com/mastra-ai/mastra/commit/8379099fc467af6bef54dd7f80c9bd75bf8bbddf), [`0dbf199`](https://github.com/mastra-ai/mastra/commit/0dbf199110f22192ce5c95b1c8148d4872b4d119), [`5cbe88a`](https://github.com/mastra-ai/mastra/commit/5cbe88aefbd9f933bca669fd371ea36bf939ac6d), [`41a23c3`](https://github.com/mastra-ai/mastra/commit/41a23c32f9877d71810f37e24930515df2ff7a0f), [`a1bd7b8`](https://github.com/mastra-ai/mastra/commit/a1bd7b8571db16b94eb01588f451a74758c96d65), [`d78b38d`](https://github.com/mastra-ai/mastra/commit/d78b38d898fce285260d3bbb4befade54331617f), [`a0a5b4b`](https://github.com/mastra-ai/mastra/commit/a0a5b4bbebe6c701ebbadf744873aa0d5ca01371), [`ce0a73a`](https://github.com/mastra-ai/mastra/commit/ce0a73abeaa75b10ca38f9e40a255a645d50ebfb), [`5d171ad`](https://github.com/mastra-ai/mastra/commit/5d171ad9ef340387276b77c2bb3e83e83332d729), [`0633100`](https://github.com/mastra-ai/mastra/commit/0633100a911ad22f5256471bdf753da21c104742), [`3759cb0`](https://github.com/mastra-ai/mastra/commit/3759cb064935b5f74c65ac2f52a1145f7352899d), [`929f69c`](https://github.com/mastra-ai/mastra/commit/929f69c3436fa20dd0f0e2f7ebe8270bd82a1529), [`c710c16`](https://github.com/mastra-ai/mastra/commit/c710c1652dccfdc4111c8412bca7a6bb1d48b441), [`10c2735`](https://github.com/mastra-ai/mastra/commit/10c27355edfdad1ee2b826b897df74125eb81fb8), [`354ad0b`](https://github.com/mastra-ai/mastra/commit/354ad0b7b1b8183ac567f236a884fc7ede6d7138), [`cfae733`](https://github.com/mastra-ai/mastra/commit/cfae73394f4920635e6c919c8e95ff9a0788e2e5), [`8c0ec25`](https://github.com/mastra-ai/mastra/commit/8c0ec25646c8a7df253ed1e5ff4863a0d3f1316c), [`e3dfda7`](https://github.com/mastra-ai/mastra/commit/e3dfda7b11bf3b8c4bb55637028befb5f387fc74), [`69ea758`](https://github.com/mastra-ai/mastra/commit/69ea758358edd7117f191c2e69c8bb5fc79e7a1a), [`73b0bb3`](https://github.com/mastra-ai/mastra/commit/73b0bb394dba7c9482eb467a97ab283dbc0ef4db), [`651e772`](https://github.com/mastra-ai/mastra/commit/651e772eb1475fb13e126d3fcc01751297a88214), [`a02e542`](https://github.com/mastra-ai/mastra/commit/a02e542d23179bad250b044b17ff023caa61739f), [`f03ae60`](https://github.com/mastra-ai/mastra/commit/f03ae60500fe350c9d828621006cdafe1975fdd8), [`6b3ba91`](https://github.com/mastra-ai/mastra/commit/6b3ba91494cc10394df96782f349a4f7b1e152cc), [`a372c64`](https://github.com/mastra-ai/mastra/commit/a372c640ad1fd12e8f0613cebdc682fc156b4d95), [`993ad98`](https://github.com/mastra-ai/mastra/commit/993ad98d7ad3bebda9ecef5fec5c94349a0d04bc), [`676ccc7`](https://github.com/mastra-ai/mastra/commit/676ccc7fe92468d2d45d39c31a87825c89fd1ea0), [`3ff2c17`](https://github.com/mastra-ai/mastra/commit/3ff2c17a58e312fad5ea37377262c12d92ca0908), [`a0e437f`](https://github.com/mastra-ai/mastra/commit/a0e437fac561b28ee719e0302d72b2f9b4c138f0), [`d1e74a0`](https://github.com/mastra-ai/mastra/commit/d1e74a0a293866dece31022047f5dbab65a304d0), [`844ea5d`](https://github.com/mastra-ai/mastra/commit/844ea5dc0c248961e7bf73629ae7dcff503e853c), [`5627a8c`](https://github.com/mastra-ai/mastra/commit/5627a8c6dc11fe3711b3fa7a6ffd6eb34100a306), [`398fde3`](https://github.com/mastra-ai/mastra/commit/398fde3f39e707cda79372cdae8f9870e3b57c8d), [`c10398d`](https://github.com/mastra-ai/mastra/commit/c10398d5b88f1d4af556f4267ff06f1d11e89179), [`3ff45d1`](https://github.com/mastra-ai/mastra/commit/3ff45d10e0c80c5335a957ab563da72feb623520), [`f0f8f12`](https://github.com/mastra-ai/mastra/commit/f0f8f125c308f2d0fd36942ef652fd852df7522f), [`b61b93f`](https://github.com/mastra-ai/mastra/commit/b61b93f9e058b11dd2eec169853175d31dbdd567), [`bae33d9`](https://github.com/mastra-ai/mastra/commit/bae33d91a63fbb64d1e80519e1fc1acaed1e9013), [`39e7869`](https://github.com/mastra-ai/mastra/commit/39e7869bc7d0ee391077ce291474d8a84eedccff), [`0d7618b`](https://github.com/mastra-ai/mastra/commit/0d7618bc650bf2800934b243eca5648f4aeed9c2), [`7b763e5`](https://github.com/mastra-ai/mastra/commit/7b763e52fc3eaf699c2a99f2adf418dd46e4e9a5), [`251df45`](https://github.com/mastra-ai/mastra/commit/251df4531407dfa46d805feb40ff3fb49769f455), [`d36cfbb`](https://github.com/mastra-ai/mastra/commit/d36cfbbb6565ba5f827883cc9bb648eb14befdc1), [`f894d14`](https://github.com/mastra-ai/mastra/commit/f894d148946629af7b1f452d65a9cf864cec3765), [`8846867`](https://github.com/mastra-ai/mastra/commit/8846867ffa9a3746767618e314bebac08eb77d87), [`1924cf0`](https://github.com/mastra-ai/mastra/commit/1924cf06816e5e4d4d5333065ec0f4bb02a97799), [`c0b731f`](https://github.com/mastra-ai/mastra/commit/c0b731fb27d712dc8582e846df5c0332a6a0c5ba), [`5761926`](https://github.com/mastra-ai/mastra/commit/57619260c4a2cdd598763abbacd90de594c6bc76), [`c2b9547`](https://github.com/mastra-ai/mastra/commit/c2b9547bf435f56339f23625a743b2147ab1c7a6), [`3697853`](https://github.com/mastra-ai/mastra/commit/3697853deeb72017d90e0f38a93c1e29221aeca0), [`c900fdd`](https://github.com/mastra-ai/mastra/commit/c900fdd504c41348efdffb205cfe80d48c38fa33), [`9312dcd`](https://github.com/mastra-ai/mastra/commit/9312dcd1c6f5b321929e7d382e763d95fdc030f5), [`b2e45ec`](https://github.com/mastra-ai/mastra/commit/b2e45eca727a8db01a81ba93f1a5219c7183c839), [`5d7000f`](https://github.com/mastra-ai/mastra/commit/5d7000f757cd65ea9dc5b05e662fd83dfd44e932), [`43ca8f2`](https://github.com/mastra-ai/mastra/commit/43ca8f2c7334851cc7b4d3d2f037d8784bfbdd5f), [`d6d49f7`](https://github.com/mastra-ai/mastra/commit/d6d49f7b8714fa19a52ff9c7cf7fb7e73751901e), [`00c2387`](https://github.com/mastra-ai/mastra/commit/00c2387f5f04a365316f851e58666ac43f8c4edf), [`a534e95`](https://github.com/mastra-ai/mastra/commit/a534e9591f83b3cc1ebff99c67edf4cda7bf81d3), [`9d0e7fe`](https://github.com/mastra-ai/mastra/commit/9d0e7feca8ed98de959f53476ee1456073673348), [`53d927c`](https://github.com/mastra-ai/mastra/commit/53d927cc6f03bff33655b7e2b788da445a08731d), [`ad6250d`](https://github.com/mastra-ai/mastra/commit/ad6250dbdaad927e29f74a27b83f6c468b50a705), [`580b592`](https://github.com/mastra-ai/mastra/commit/580b5927afc82fe460dfdf9a38a902511b6b7e7f), [`604a79f`](https://github.com/mastra-ai/mastra/commit/604a79fecf276e26a54a3fe01bb94e65315d2e0e), [`42a42cf`](https://github.com/mastra-ai/mastra/commit/42a42cf3132b9786feecbb8c13c583dce5b0e198), [`3f2faf2`](https://github.com/mastra-ai/mastra/commit/3f2faf2e2d685d6c053cc5af1bf9fedf267b2ce5), [`22f64bc`](https://github.com/mastra-ai/mastra/commit/22f64bc1d37149480b58bf2fefe35b79a1e3e7d5), [`ff4d9a6`](https://github.com/mastra-ai/mastra/commit/ff4d9a6704fc87b31a380a76ed22736fdedbba5a), [`50fd320`](https://github.com/mastra-ai/mastra/commit/50fd320003d0d93831c230ef531bef41f5ba7b3a), [`847c212`](https://github.com/mastra-ai/mastra/commit/847c212caba7df0d6f2fc756b494ac3c75c3720d), [`69821ef`](https://github.com/mastra-ai/mastra/commit/69821ef806482e2c44e2197ac0b050c3fe3a5285), [`3a73998`](https://github.com/mastra-ai/mastra/commit/3a73998fa4ebeb7f3dc9301afe78095fc63e7999), [`ffa553a`](https://github.com/mastra-ai/mastra/commit/ffa553a3edc1bd17d73669fba66d6b6f4ac10897), [`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc), [`58e3931`](https://github.com/mastra-ai/mastra/commit/58e3931af9baa5921688566210f00fb0c10479fa), [`ae08bf0`](https://github.com/mastra-ai/mastra/commit/ae08bf0ebc6a4e4da992b711c4a389c32ba84cf4), [`0bed332`](https://github.com/mastra-ai/mastra/commit/0bed332843f627202c6520eaf671771313cd20f3), [`887f0b4`](https://github.com/mastra-ai/mastra/commit/887f0b4746cdbd7cb7d6b17ac9f82aeb58037ea5), [`2562143`](https://github.com/mastra-ai/mastra/commit/256214336b4faa78646c9c1776612393790d8784), [`b7959e6`](https://github.com/mastra-ai/mastra/commit/b7959e6e25a46b480f9ea2217c4c6c588c423791), [`a7ce182`](https://github.com/mastra-ai/mastra/commit/a7ce1822a8785ce45d62dd5c911af465e144f7d7), [`bda6370`](https://github.com/mastra-ai/mastra/commit/bda637009360649aaf579919e7873e33553c273e), [`d7acd8e`](https://github.com/mastra-ai/mastra/commit/d7acd8e987b5d7eff4fd98b0906c17c06a2e83d5), [`c7f1f7d`](https://github.com/mastra-ai/mastra/commit/c7f1f7d24f61f247f018cc2d1f33bf63212959a7), [`0bddc6d`](https://github.com/mastra-ai/mastra/commit/0bddc6d8dbd6f6008c0cba2e4960a2da75a55af1), [`bec5efd`](https://github.com/mastra-ai/mastra/commit/bec5efde96653ccae6604e68c696d1bc6c1a0bf5), [`5947fcd`](https://github.com/mastra-ai/mastra/commit/5947fcdd425531f29f9422026d466c2ee3113c93), [`4aa55b3`](https://github.com/mastra-ai/mastra/commit/4aa55b383cf06043943359ea316572fd969861a7), [`21735a7`](https://github.com/mastra-ai/mastra/commit/21735a7ef306963554a69a89b44f06c3bcd85141), [`735d8c1`](https://github.com/mastra-ai/mastra/commit/735d8c1c0d19fbc09e6f8b66cf41bc7655993838), [`7907fd1`](https://github.com/mastra-ai/mastra/commit/7907fd1c5059813b7b870b81ca71041dc807331b), [`1ed5716`](https://github.com/mastra-ai/mastra/commit/1ed5716830867b3774c4a1b43cc0d82935f32b96), [`acf322e`](https://github.com/mastra-ai/mastra/commit/acf322e0f1fd0189684cf529d91c694bea918a45), [`2ca67cc`](https://github.com/mastra-ai/mastra/commit/2ca67cc3bb1f6a617353fdcab197d9efebe60d6f), [`9eedf7d`](https://github.com/mastra-ai/mastra/commit/9eedf7de1d6e0022a2f4e5e9e6fe1ec468f9b43c), [`b339816`](https://github.com/mastra-ai/mastra/commit/b339816df0984d0243d944ac2655d6ba5f809cde), [`e16d553`](https://github.com/mastra-ai/mastra/commit/e16d55338403c7553531cc568125c63d53653dff), [`6f941c4`](https://github.com/mastra-ai/mastra/commit/6f941c438ca5f578619788acc7608fc2e23bd176), [`4186bdd`](https://github.com/mastra-ai/mastra/commit/4186bdd00731305726fa06adba0b076a1d50b49f), [`08bb631`](https://github.com/mastra-ai/mastra/commit/08bb631ae2b14684b2678e3549d0b399a6f0561e), [`c942802`](https://github.com/mastra-ai/mastra/commit/c942802a477a925b01859a7b8688d4355715caaa), [`4f0331a`](https://github.com/mastra-ai/mastra/commit/4f0331a79bf6eb5ee598a5086e55de4b5a0ada03), [`a0c8c1b`](https://github.com/mastra-ai/mastra/commit/a0c8c1b87d4fee252aebda73e8637fbe01d761c9), [`1d877b8`](https://github.com/mastra-ai/mastra/commit/1d877b8d7b536a251c1a7a18db7ddcf4f68d6f8b), [`cc34739`](https://github.com/mastra-ai/mastra/commit/cc34739c34b6266a91bea561119240a7acf47887), [`c218bd3`](https://github.com/mastra-ai/mastra/commit/c218bd3759e32423735b04843a09404572631014), [`9e67002`](https://github.com/mastra-ai/mastra/commit/9e67002b52c9be19936c420a489dbee9c5fd6a78), [`7aaf973`](https://github.com/mastra-ai/mastra/commit/7aaf973f83fbbe9521f1f9e7a4fd99b8de464617), [`2c4438b`](https://github.com/mastra-ai/mastra/commit/2c4438b87817ab7eed818c7990fef010475af1a3), [`35edc49`](https://github.com/mastra-ai/mastra/commit/35edc49ac0556db609189641d6341e76771b81fc), [`4d59f58`](https://github.com/mastra-ai/mastra/commit/4d59f58de2d90d6e2810a19d4518e38ddddb9038), [`ef11a61`](https://github.com/mastra-ai/mastra/commit/ef11a61920fa0ed08a5b7ceedd192875af119749), [`2b8893c`](https://github.com/mastra-ai/mastra/commit/2b8893cb108ef9acb72ee7835cd625610d2c1a4a), [`8e5c75b`](https://github.com/mastra-ai/mastra/commit/8e5c75bdb1d08a42d45309a4c72def4b6890230f), [`e1bb9c9`](https://github.com/mastra-ai/mastra/commit/e1bb9c94b4eb68b019ae275981be3feb769b5365), [`351a11f`](https://github.com/mastra-ai/mastra/commit/351a11fcaf2ed1008977fa9b9a489fc422e51cd4), [`8a73529`](https://github.com/mastra-ai/mastra/commit/8a73529ca01187f604b1f3019d0a725ac63ae55f), [`e59e0d3`](https://github.com/mastra-ai/mastra/commit/e59e0d32afb5fcf2c9f3c00c8f81f6c21d3a63fa), [`4fba91b`](https://github.com/mastra-ai/mastra/commit/4fba91bec7c95911dc28e369437596b152b04cd0), [`465ac05`](https://github.com/mastra-ai/mastra/commit/465ac0526a91d175542091c675181f1a96c98c46), [`fa8409b`](https://github.com/mastra-ai/mastra/commit/fa8409bc39cfd8ba6643b9db5269b90b22e2a2f7), [`8a000da`](https://github.com/mastra-ai/mastra/commit/8a000da0c09c679a2312f6b3aa05b2ca78ca7393), [`e7266a2`](https://github.com/mastra-ai/mastra/commit/e7266a278db02035c97a5e9cd9d1669a6b7a535d), [`173c535`](https://github.com/mastra-ai/mastra/commit/173c535c0645b0da404fe09f003778f0b0d4e019), [`12b0cc4`](https://github.com/mastra-ai/mastra/commit/12b0cc4077d886b1a552637dedb70a7ade93528c), [`3bf6c5f`](https://github.com/mastra-ai/mastra/commit/3bf6c5f104c25226cd84e0c77f9dec15f2cac2db)]:
1284
+ - @mastra/core@1.0.0
1285
+
1286
+ ## 1.0.0-beta.27
1287
+
1288
+ ### Patch Changes
1289
+
1290
+ - Updated dependencies [[`50fd320`](https://github.com/mastra-ai/mastra/commit/50fd320003d0d93831c230ef531bef41f5ba7b3a)]:
1291
+ - @mastra/core@1.0.0-beta.27
1292
+
1293
+ ## 1.0.0-beta.26
1294
+
1295
+ ### Patch Changes
1296
+
1297
+ - Improve type handling with Zod ([#12091](https://github.com/mastra-ai/mastra/pull/12091))
1298
+
1299
+ - Updated dependencies [[`026b848`](https://github.com/mastra-ai/mastra/commit/026b8483fbf5b6d977be8f7e6aac8d15c75558ac), [`ffa553a`](https://github.com/mastra-ai/mastra/commit/ffa553a3edc1bd17d73669fba66d6b6f4ac10897)]:
1300
+ - @mastra/core@1.0.0-beta.26
1301
+
1302
+ ## 1.0.0-beta.25
1303
+
1304
+ ### Minor Changes
1305
+
1306
+ - Added human-in-the-loop (HITL) tool approval support for `generate()` method. ([#12056](https://github.com/mastra-ai/mastra/pull/12056))
1307
+
1308
+ **Why:** This provides parity between `stream()` and `generate()` for tool approval flows, allowing non-streaming use cases to leverage `requireToolApproval` without needing to switch to streaming.
1309
+
1310
+ Previously, tool approval with `requireToolApproval` only worked with `stream()`. Now you can use the same approval flow with `generate()` for non-streaming use cases.
1311
+
1312
+ **Using tool approval with generate()**
1313
+
1314
+ ```typescript
1315
+ const output = await agent.generate('Find user John', {
1316
+ requireToolApproval: true,
1317
+ });
1318
+
1319
+ // Check if a tool is waiting for approval
1320
+ if (output.finishReason === 'suspended') {
1321
+ console.log('Tool requires approval:', output.suspendPayload.toolName);
1322
+
1323
+ // Approve the tool call
1324
+ const result = await agent.approveToolCallGenerate({
1325
+ runId: output.runId,
1326
+ toolCallId: output.suspendPayload.toolCallId,
1327
+ });
1328
+
1329
+ console.log(result.text);
1330
+ }
1331
+ ```
1332
+
1333
+ **Declining a tool call**
1334
+
1335
+ ```typescript
1336
+ if (output.finishReason === 'suspended') {
1337
+ const result = await agent.declineToolCallGenerate({
1338
+ runId: output.runId,
1339
+ toolCallId: output.suspendPayload.toolCallId,
1340
+ });
1341
+ }
1342
+ ```
1343
+
1344
+ **New methods added:**
1345
+ - `agent.approveToolCallGenerate({ runId, toolCallId })` - Approves a pending tool call and returns the complete result
1346
+ - `agent.declineToolCallGenerate({ runId, toolCallId })` - Declines a pending tool call and returns the complete result
1347
+
1348
+ **Server routes added:**
1349
+ - `POST /api/agents/:agentId/approve-tool-call-generate`
1350
+ - `POST /api/agents/:agentId/decline-tool-call-generate`
1351
+
1352
+ The playground UI now also supports tool approval when using generate mode.
1353
+
1354
+ - Added new `listThreads` method for flexible thread filtering across all storage adapters. ([#11832](https://github.com/mastra-ai/mastra/pull/11832))
1355
+
1356
+ **New Features**
1357
+ - Filter threads by `resourceId`, `metadata`, or both (with AND logic for metadata key-value pairs)
1358
+ - All filter parameters are optional, allowing you to list all threads or filter as needed
1359
+ - Full pagination and sorting support
1360
+
1361
+ **Example Usage**
1362
+
1363
+ ```typescript
1364
+ // List all threads
1365
+ const allThreads = await memory.listThreads({});
1366
+
1367
+ // Filter by resourceId only
1368
+ const userThreads = await memory.listThreads({
1369
+ filter: { resourceId: 'user-123' },
1370
+ });
1371
+
1372
+ // Filter by metadata only
1373
+ const supportThreads = await memory.listThreads({
1374
+ filter: { metadata: { category: 'support' } },
1375
+ });
1376
+
1377
+ // Filter by both with pagination
1378
+ const filteredThreads = await memory.listThreads({
1379
+ filter: {
1380
+ resourceId: 'user-123',
1381
+ metadata: { priority: 'high', status: 'open' },
1382
+ },
1383
+ orderBy: { field: 'updatedAt', direction: 'DESC' },
1384
+ page: 0,
1385
+ perPage: 20,
1386
+ });
1387
+ ```
1388
+
1389
+ **Security Improvements**
1390
+ - Added validation to prevent SQL injection via malicious metadata keys
1391
+ - Added pagination parameter validation to prevent integer overflow attacks
1392
+
1393
+ ### Patch Changes
1394
+
1395
+ - Fix navigation for processors Studio tab ([#12062](https://github.com/mastra-ai/mastra/pull/12062))
1396
+
1397
+ - Added new /api/processors endpoints to list, get details, and execute processors. Processor workflows are now auto-detected based on their schema. ([#12059](https://github.com/mastra-ai/mastra/pull/12059))
1398
+
1399
+ - Updated dependencies [[`ed3e3dd`](https://github.com/mastra-ai/mastra/commit/ed3e3ddec69d564fe2b125e083437f76331f1283), [`6833c69`](https://github.com/mastra-ai/mastra/commit/6833c69607418d257750bbcdd84638993d343539), [`47b1c16`](https://github.com/mastra-ai/mastra/commit/47b1c16a01c7ffb6765fe1e499b49092f8b7eba3), [`3a76a80`](https://github.com/mastra-ai/mastra/commit/3a76a80284cb71a0faa975abb3d4b2a9631e60cd), [`8538a0d`](https://github.com/mastra-ai/mastra/commit/8538a0d232619bf55dad7ddc2a8b0ca77c679a87), [`9312dcd`](https://github.com/mastra-ai/mastra/commit/9312dcd1c6f5b321929e7d382e763d95fdc030f5)]:
1400
+ - @mastra/core@1.0.0-beta.25
1401
+
1402
+ ## 1.0.0-beta.24
1403
+
1404
+ ### Patch Changes
1405
+
1406
+ - Updated dependencies [[`1dbd8c7`](https://github.com/mastra-ai/mastra/commit/1dbd8c729fb6536ec52f00064d76b80253d346e9), [`c59e13c`](https://github.com/mastra-ai/mastra/commit/c59e13c7688284bd96b2baee3e314335003548de), [`f9a2509`](https://github.com/mastra-ai/mastra/commit/f9a25093ea72d210a5e52cfcb3bcc8b5e02dc25c), [`7a010c5`](https://github.com/mastra-ai/mastra/commit/7a010c56b846a313a49ae42fccd3d8de2b9f292d)]:
1407
+ - @mastra/core@1.0.0-beta.24
1408
+
1409
+ ## 1.0.0-beta.23
1410
+
1411
+ ### Patch Changes
1412
+
1413
+ - Updated dependencies [[`c8417b4`](https://github.com/mastra-ai/mastra/commit/c8417b41d9f3486854dc7842d977fbe5e2166264), [`dd4f34c`](https://github.com/mastra-ai/mastra/commit/dd4f34c78cbae24063463475b0619575c415f9b8)]:
1414
+ - @mastra/core@1.0.0-beta.23
1415
+
1416
+ ## 1.0.0-beta.22
1417
+
1418
+ ### Major Changes
1419
+
1420
+ - **Breaking Change**: Convert OUTPUT generic from `OutputSchema` constraint to plain generic ([#11741](https://github.com/mastra-ai/mastra/pull/11741))
1421
+
1422
+ This change removes the direct dependency on Zod typings in the public API by converting all `OUTPUT extends OutputSchema` generic constraints to plain `OUTPUT` generics throughout the codebase. This is preparation for moving to a standard schema approach.
1423
+ - All generic type parameters previously constrained to `OutputSchema` (e.g., `<OUTPUT extends OutputSchema = undefined>`) are now plain generics with defaults (e.g., `<OUTPUT = undefined>`)
1424
+ - Affects all public APIs including `Agent`, `MastraModelOutput`, `AgentExecutionOptions`, and stream/generate methods
1425
+ - `InferSchemaOutput<OUTPUT>` replaced with `OUTPUT` throughout
1426
+ - `PartialSchemaOutput<OUTPUT>` replaced with `Partial<OUTPUT>`
1427
+ - Schema fields now use `NonNullable<OutputSchema<OUTPUT>>` instead of `OUTPUT` directly
1428
+ - Added `FullOutput<OUTPUT>` type representing complete output with all fields
1429
+ - Added `AgentExecutionOptionsBase<OUTPUT>` type
1430
+ - `getFullOutput()` method now returns `Promise<FullOutput<OUTPUT>>`
1431
+ - `Agent` class now generic: `Agent<TAgentId, TTools, TOutput>`
1432
+ - `agent.generate()` and `agent.stream()` methods have updated signatures
1433
+ - `MastraModelOutput<OUTPUT>` no longer requires `OutputSchema` constraint
1434
+ - Network route and streaming APIs updated to use plain OUTPUT generic
1435
+
1436
+ **Before:**
1437
+
1438
+ ```typescript
1439
+ const output = await agent.generate<z.ZodType>({
1440
+ messages: [...],
1441
+ structuredOutput: { schema: mySchema }
1442
+ });
1443
+
1444
+ **After:**
1445
+ const output = await agent.generate<z.infer<typeof mySchema>>({
1446
+ messages: [...],
1447
+ structuredOutput: { schema: mySchema }
1448
+ });
1449
+ // Or rely on type inference:
1450
+ const output = await agent.generate({
1451
+ messages: [...],
1452
+ structuredOutput: { schema: mySchema }
1453
+ });
1454
+
1455
+ ```
1456
+
1457
+ ### Patch Changes
1458
+
1459
+ - Removes the deprecated `threadId` and `resourceId` options from `AgentExecutionOptions`. These have been deprecated for months in favour of the `memory` option. ([#11897](https://github.com/mastra-ai/mastra/pull/11897))
1460
+
1461
+ ### Breaking Changes
1462
+
1463
+ #### `@mastra/core`
1464
+
1465
+ The `threadId` and `resourceId` options have been removed from `agent.generate()` and `agent.stream()`. Use the `memory` option instead:
1466
+
1467
+ ```ts
1468
+ // Before
1469
+ await agent.stream('Hello', {
1470
+ threadId: 'thread-123',
1471
+ resourceId: 'user-456',
1472
+ });
1473
+
1474
+ // After
1475
+ await agent.stream('Hello', {
1476
+ memory: {
1477
+ thread: 'thread-123',
1478
+ resource: 'user-456',
1479
+ },
1480
+ });
1481
+ ```
1482
+
1483
+ #### `@mastra/server`
1484
+
1485
+ The `threadId`, `resourceId`, and `resourceid` fields have been removed from the main agent execution body schema. The server now expects the `memory` option format in request bodies. Legacy routes (`/api/agents/:agentId/generate-legacy` and `/api/agents/:agentId/stream-legacy`) continue to support the deprecated fields.
1486
+
1487
+ #### `@mastra/react`
1488
+
1489
+ The `useChat` hook now internally converts `threadId` to the `memory` option format when making API calls. No changes needed in component code - the hook handles the conversion automatically.
1490
+
1491
+ #### `@mastra/client-js`
1492
+
1493
+ When using the client SDK agent methods, use the `memory` option instead of `threadId`/`resourceId`:
1494
+
1495
+ ```ts
1496
+ const agent = client.getAgent('my-agent');
1497
+
1498
+ // Before
1499
+ await agent.generate({
1500
+ messages: [...],
1501
+ threadId: 'thread-123',
1502
+ resourceId: 'user-456',
1503
+ });
1504
+
1505
+ // After
1506
+ await agent.generate({
1507
+ messages: [...],
1508
+ memory: {
1509
+ thread: 'thread-123',
1510
+ resource: 'user-456',
1511
+ },
1512
+ });
1513
+ ```
1514
+
1515
+ - Fixed orderBy query parameter parsing for memory endpoints. The listMessages and listThreads endpoints now correctly parse orderBy when passed as a JSON string in URL query parameters, matching the existing behavior for include and filter parameters. ([#11767](https://github.com/mastra-ai/mastra/pull/11767))
1516
+
1517
+ - Add human-in-the-loop (HITL) support to agent networks ([#11678](https://github.com/mastra-ai/mastra/pull/11678))
1518
+ - Add suspend/resume capabilities to agent network
1519
+ - Enable auto-resume for suspended network execution via `autoResumeSuspendedTools`
1520
+
1521
+ `agent.resumeNetwork`, `agent.approveNetworkToolCall`, `agent.declineNetworkToolCall`
1522
+
1523
+ - Fix 'Memory is not initialized' error in playground for agents with sub-agents but no memory ([#11780](https://github.com/mastra-ai/mastra/pull/11780))
1524
+
1525
+ When using agents with sub-agents (e.g., agent networks) but no memory configured, the playground UI would log HTTPException errors when fetching messages for sub-agents without memory.
1526
+
1527
+ Changed GET /api/memory/threads/:threadId/messages to return empty messages `{ messages: [], uiMessages: [] }` instead of throwing 400 error when memory is not configured for the requested agent.
1528
+
1529
+ - Updated dependencies [[`ebae12a`](https://github.com/mastra-ai/mastra/commit/ebae12a2dd0212e75478981053b148a2c246962d), [`c61a0a5`](https://github.com/mastra-ai/mastra/commit/c61a0a5de4904c88fd8b3718bc26d1be1c2ec6e7), [`69136e7`](https://github.com/mastra-ai/mastra/commit/69136e748e32f57297728a4e0f9a75988462f1a7), [`449aed2`](https://github.com/mastra-ai/mastra/commit/449aed2ba9d507b75bf93d427646ea94f734dfd1), [`eb648a2`](https://github.com/mastra-ai/mastra/commit/eb648a2cc1728f7678768dd70cd77619b448dab9), [`0131105`](https://github.com/mastra-ai/mastra/commit/0131105532e83bdcbb73352fc7d0879eebf140dc), [`9d5059e`](https://github.com/mastra-ai/mastra/commit/9d5059eae810829935fb08e81a9bb7ecd5b144a7), [`ef756c6`](https://github.com/mastra-ai/mastra/commit/ef756c65f82d16531c43f49a27290a416611e526), [`b00ccd3`](https://github.com/mastra-ai/mastra/commit/b00ccd325ebd5d9e37e34dd0a105caae67eb568f), [`3bdfa75`](https://github.com/mastra-ai/mastra/commit/3bdfa7507a91db66f176ba8221aa28dd546e464a), [`e770de9`](https://github.com/mastra-ai/mastra/commit/e770de941a287a49b1964d44db5a5763d19890a6), [`52e2716`](https://github.com/mastra-ai/mastra/commit/52e2716b42df6eff443de72360ae83e86ec23993), [`27b4040`](https://github.com/mastra-ai/mastra/commit/27b4040bfa1a95d92546f420a02a626b1419a1d6), [`610a70b`](https://github.com/mastra-ai/mastra/commit/610a70bdad282079f0c630e0d7bb284578f20151), [`8dc7f55`](https://github.com/mastra-ai/mastra/commit/8dc7f55900395771da851dc7d78d53ae84fe34ec), [`8379099`](https://github.com/mastra-ai/mastra/commit/8379099fc467af6bef54dd7f80c9bd75bf8bbddf), [`8c0ec25`](https://github.com/mastra-ai/mastra/commit/8c0ec25646c8a7df253ed1e5ff4863a0d3f1316c), [`ff4d9a6`](https://github.com/mastra-ai/mastra/commit/ff4d9a6704fc87b31a380a76ed22736fdedbba5a), [`69821ef`](https://github.com/mastra-ai/mastra/commit/69821ef806482e2c44e2197ac0b050c3fe3a5285), [`1ed5716`](https://github.com/mastra-ai/mastra/commit/1ed5716830867b3774c4a1b43cc0d82935f32b96), [`4186bdd`](https://github.com/mastra-ai/mastra/commit/4186bdd00731305726fa06adba0b076a1d50b49f), [`7aaf973`](https://github.com/mastra-ai/mastra/commit/7aaf973f83fbbe9521f1f9e7a4fd99b8de464617)]:
1530
+ - @mastra/core@1.0.0-beta.22
1531
+
1532
+ ## 1.0.0-beta.21
1533
+
1534
+ ### Patch Changes
1535
+
1536
+ - Replace deprecated client.getTraces with a client.listTraces ([#11711](https://github.com/mastra-ai/mastra/pull/11711))
1537
+
1538
+ - Fix query parameter parsing for complex nested optional types ([#11711](https://github.com/mastra-ai/mastra/pull/11711))
1539
+
1540
+ Fixes an issue where complex query parameters (like `startedAt` and `endedAt` date range filters) would fail with "Expected object, received string" errors when using the `listTraces` API.
1541
+
1542
+ The fix addresses two issues:
1543
+ - Properly unwraps all layers of nested optional/nullable types (e.g., from `.partial()` on already-optional fields)
1544
+ - Ensures compatibility with both zod v3 and v4
1545
+
1546
+ - Updated dependencies [[`08766f1`](https://github.com/mastra-ai/mastra/commit/08766f15e13ac0692fde2a8bd366c2e16e4321df), [`ae8baf7`](https://github.com/mastra-ai/mastra/commit/ae8baf7d8adcb0ff9dac11880400452bc49b33ff), [`cfabdd4`](https://github.com/mastra-ai/mastra/commit/cfabdd4aae7a726b706942d6836eeca110fb6267), [`a0e437f`](https://github.com/mastra-ai/mastra/commit/a0e437fac561b28ee719e0302d72b2f9b4c138f0), [`bec5efd`](https://github.com/mastra-ai/mastra/commit/bec5efde96653ccae6604e68c696d1bc6c1a0bf5), [`9eedf7d`](https://github.com/mastra-ai/mastra/commit/9eedf7de1d6e0022a2f4e5e9e6fe1ec468f9b43c)]:
1547
+ - @mastra/core@1.0.0-beta.21
1548
+
1549
+ ## 1.0.0-beta.20
1550
+
1551
+ ### Minor Changes
1552
+
1553
+ - Unified `getWorkflowRunById` and `getWorkflowRunExecutionResult` into a single API that returns `WorkflowState` with both metadata and execution state. ([#11429](https://github.com/mastra-ai/mastra/pull/11429))
1554
+
1555
+ **What changed:**
1556
+ - `getWorkflowRunById` now returns a unified `WorkflowState` object containing metadata (runId, workflowName, resourceId, createdAt, updatedAt) along with processed execution state (status, result, error, payload, steps)
1557
+ - Added optional `fields` parameter to request only specific fields for better performance
1558
+ - Added optional `withNestedWorkflows` parameter to control nested workflow step inclusion
1559
+ - Removed `getWorkflowRunExecutionResult` - use `getWorkflowRunById` instead (breaking change)
1560
+ - Removed `/execution-result` API endpoints from server (breaking change)
1561
+ - Removed `runExecutionResult()` method from client SDK (breaking change)
1562
+ - Removed `GetWorkflowRunExecutionResultResponse` type from client SDK (breaking change)
1563
+
1564
+ **Before:**
1565
+
1566
+ ```typescript
1567
+ // Had to call two different methods for different data
1568
+ const run = await workflow.getWorkflowRunById(runId); // Returns raw WorkflowRun with snapshot
1569
+ const result = await workflow.getWorkflowRunExecutionResult(runId); // Returns processed execution state
1570
+ ```
1571
+
1572
+ **After:**
1573
+
1574
+ ```typescript
1575
+ // Single method returns everything
1576
+ const run = await workflow.getWorkflowRunById(runId);
1577
+ // Returns: { runId, workflowName, resourceId, createdAt, updatedAt, status, result, error, payload, steps }
1578
+
1579
+ // Request only specific fields for better performance (avoids expensive step fetching)
1580
+ const status = await workflow.getWorkflowRunById(runId, { fields: ['status'] });
1581
+
1582
+ // Skip nested workflow steps for faster response
1583
+ const run = await workflow.getWorkflowRunById(runId, { withNestedWorkflows: false });
1584
+ ```
1585
+
1586
+ **Why:** The previous API required calling two separate methods to get complete workflow run information. This unification simplifies the API surface and gives users control over performance - fetching all steps (especially nested workflows) can be expensive, so the `fields` and `withNestedWorkflows` options let users request only what they need.
1587
+
1588
+ ### Patch Changes
1589
+
1590
+ - Add embedded documentation support for Mastra packages ([#11472](https://github.com/mastra-ai/mastra/pull/11472))
1591
+
1592
+ Mastra packages now include embedded documentation in the published npm package under `dist/docs/`. This enables coding agents and AI assistants to understand and use the framework by reading documentation directly from `node_modules`.
1593
+
1594
+ Each package includes:
1595
+ - **SKILL.md** - Entry point explaining the package's purpose and capabilities
1596
+ - **SOURCE_MAP.json** - Machine-readable index mapping exports to types and implementation files
1597
+ - **Topic folders** - Conceptual documentation organized by feature area
1598
+
1599
+ Documentation is driven by the `packages` frontmatter field in MDX files, which maps docs to their corresponding packages. CI validation ensures all docs include this field.
1600
+
1601
+ - Remove `streamVNext`, `resumeStreamVNext`, and `observeStreamVNext` methods, call `stream`, `resumeStream` and `observeStream` directly ([#11499](https://github.com/mastra-ai/mastra/pull/11499))
1602
+
1603
+ ```diff
1604
+ + const run = await workflow.createRun({ runId: '123' });
1605
+ - const stream = await run.streamVNext({ inputData: { ... } });
1606
+ + const stream = await run.stream({ inputData: { ... } });
1607
+ ```
1608
+
1609
+ - Fixed inconsistent query parameter handling across server adapters. ([#11429](https://github.com/mastra-ai/mastra/pull/11429))
1610
+
1611
+ **What changed:** Query parameters are now processed consistently across all server adapters (Express, Hono, Fastify, Koa). Added internal helper `normalizeQueryParams` and `ParsedRequestParams` type to `@mastra/server` for adapter implementations.
1612
+
1613
+ **Why:** Different HTTP frameworks handle query parameters differently - some return single strings while others return arrays for repeated params like `?tag=a&tag=b`. This caused type inconsistencies that could lead to validation failures in certain adapters.
1614
+
1615
+ **User impact:** None for typical usage - HTTP endpoints and client SDK behavior are unchanged. If you extend server adapter classes and override `getParams` or `parseQueryParams`, update your implementation to use `Record<string, string | string[]>` for query parameters.
1616
+
1617
+ - Add initial state input to workflow form in studio ([#11560](https://github.com/mastra-ai/mastra/pull/11560))
1618
+
1619
+ - Adds thread cloning to create independent copies of conversations that can diverge. ([#11517](https://github.com/mastra-ai/mastra/pull/11517))
1620
+
1621
+ ```typescript
1622
+ // Clone a thread
1623
+ const { thread, clonedMessages } = await memory.cloneThread({
1624
+ sourceThreadId: 'thread-123',
1625
+ title: 'My Clone',
1626
+ options: {
1627
+ messageLimit: 10, // optional: only copy last N messages
1628
+ },
1629
+ });
1630
+
1631
+ // Check if a thread is a clone
1632
+ if (memory.isClone(thread)) {
1633
+ const source = await memory.getSourceThread(thread.id);
1634
+ }
1635
+
1636
+ // List all clones of a thread
1637
+ const clones = await memory.listClones('thread-123');
1638
+ ```
1639
+
1640
+ Includes:
1641
+ - Storage implementations for InMemory, PostgreSQL, LibSQL, Upstash
1642
+ - API endpoint: `POST /api/memory/threads/:threadId/clone`
1643
+ - Embeddings created for cloned messages (semantic recall)
1644
+ - Clone button in playground UI Memory tab
1645
+
1646
+ - Make agentId optional for memory read operations (getThread, listThreads, listMessages) ([#11540](https://github.com/mastra-ai/mastra/pull/11540))
1647
+
1648
+ When workflows use multiple agents sharing the same threadId/resourceId, users can now retrieve threads and messages without specifying an agentId. The server falls back to using storage directly when agentId is not provided.
1649
+
1650
+ - Updated dependencies [[`d2d3e22`](https://github.com/mastra-ai/mastra/commit/d2d3e22a419ee243f8812a84e3453dd44365ecb0), [`bc72b52`](https://github.com/mastra-ai/mastra/commit/bc72b529ee4478fe89ecd85a8be47ce0127b82a0), [`05b8bee`](https://github.com/mastra-ai/mastra/commit/05b8bee9e50e6c2a4a2bf210eca25ee212ca24fa), [`c042bd0`](https://github.com/mastra-ai/mastra/commit/c042bd0b743e0e86199d0cb83344ca7690e34a9c), [`940a2b2`](https://github.com/mastra-ai/mastra/commit/940a2b27480626ed7e74f55806dcd2181c1dd0c2), [`e0941c3`](https://github.com/mastra-ai/mastra/commit/e0941c3d7fc75695d5d258e7008fd5d6e650800c), [`0c0580a`](https://github.com/mastra-ai/mastra/commit/0c0580a42f697cd2a7d5973f25bfe7da9055038a), [`28f5f89`](https://github.com/mastra-ai/mastra/commit/28f5f89705f2409921e3c45178796c0e0d0bbb64), [`e601b27`](https://github.com/mastra-ai/mastra/commit/e601b272c70f3a5ecca610373aa6223012704892), [`3d3366f`](https://github.com/mastra-ai/mastra/commit/3d3366f31683e7137d126a3a57174a222c5801fb), [`5a4953f`](https://github.com/mastra-ai/mastra/commit/5a4953f7d25bb15ca31ed16038092a39cb3f98b3), [`eb9e522`](https://github.com/mastra-ai/mastra/commit/eb9e522ce3070a405e5b949b7bf5609ca51d7fe2), [`20e6f19`](https://github.com/mastra-ai/mastra/commit/20e6f1971d51d3ff6dd7accad8aaaae826d540ed), [`4f0b3c6`](https://github.com/mastra-ai/mastra/commit/4f0b3c66f196c06448487f680ccbb614d281e2f7), [`74c4f22`](https://github.com/mastra-ai/mastra/commit/74c4f22ed4c71e72598eacc346ba95cdbc00294f), [`81b6a8f`](https://github.com/mastra-ai/mastra/commit/81b6a8ff79f49a7549d15d66624ac1a0b8f5f971), [`e4d366a`](https://github.com/mastra-ai/mastra/commit/e4d366aeb500371dd4210d6aa8361a4c21d87034), [`a4f010b`](https://github.com/mastra-ai/mastra/commit/a4f010b22e4355a5fdee70a1fe0f6e4a692cc29e), [`73b0bb3`](https://github.com/mastra-ai/mastra/commit/73b0bb394dba7c9482eb467a97ab283dbc0ef4db), [`5627a8c`](https://github.com/mastra-ai/mastra/commit/5627a8c6dc11fe3711b3fa7a6ffd6eb34100a306), [`3ff45d1`](https://github.com/mastra-ai/mastra/commit/3ff45d10e0c80c5335a957ab563da72feb623520), [`251df45`](https://github.com/mastra-ai/mastra/commit/251df4531407dfa46d805feb40ff3fb49769f455), [`f894d14`](https://github.com/mastra-ai/mastra/commit/f894d148946629af7b1f452d65a9cf864cec3765), [`c2b9547`](https://github.com/mastra-ai/mastra/commit/c2b9547bf435f56339f23625a743b2147ab1c7a6), [`580b592`](https://github.com/mastra-ai/mastra/commit/580b5927afc82fe460dfdf9a38a902511b6b7e7f), [`58e3931`](https://github.com/mastra-ai/mastra/commit/58e3931af9baa5921688566210f00fb0c10479fa), [`08bb631`](https://github.com/mastra-ai/mastra/commit/08bb631ae2b14684b2678e3549d0b399a6f0561e), [`4fba91b`](https://github.com/mastra-ai/mastra/commit/4fba91bec7c95911dc28e369437596b152b04cd0), [`12b0cc4`](https://github.com/mastra-ai/mastra/commit/12b0cc4077d886b1a552637dedb70a7ade93528c)]:
1651
+ - @mastra/core@1.0.0-beta.20
1652
+
1653
+ ## 1.0.0-beta.19
1654
+
1655
+ ### Patch Changes
1656
+
1657
+ - Updated dependencies [[`e54953e`](https://github.com/mastra-ai/mastra/commit/e54953ed8ce1b28c0d62a19950163039af7834b4), [`7d56d92`](https://github.com/mastra-ai/mastra/commit/7d56d9213886e8353956d7d40df10045fd12b299), [`fdac646`](https://github.com/mastra-ai/mastra/commit/fdac646033a0930a1a4e00d13aa64c40bb7f1e02), [`d07b568`](https://github.com/mastra-ai/mastra/commit/d07b5687819ea8cb1dffa776d0c1765faf4aa1ae), [`68ec97d`](https://github.com/mastra-ai/mastra/commit/68ec97d4c07c6393fcf95c2481fc5d73da99f8c8), [`4aa55b3`](https://github.com/mastra-ai/mastra/commit/4aa55b383cf06043943359ea316572fd969861a7)]:
1658
+ - @mastra/core@1.0.0-beta.19
1659
+
1660
+ ## 1.0.0-beta.18
1661
+
1662
+ ### Patch Changes
1663
+
1664
+ - Updated dependencies [[`5947fcd`](https://github.com/mastra-ai/mastra/commit/5947fcdd425531f29f9422026d466c2ee3113c93)]:
1665
+ - @mastra/core@1.0.0-beta.18
1666
+
1667
+ ## 1.0.0-beta.17
1668
+
1669
+ ### Patch Changes
1670
+
1671
+ - Updated dependencies [[`b5dc973`](https://github.com/mastra-ai/mastra/commit/b5dc9733a5158850298dfb103acb3babdba8a318)]:
1672
+ - @mastra/core@1.0.0-beta.17
1673
+
1674
+ ## 1.0.0-beta.16
1675
+
1676
+ ### Patch Changes
1677
+
1678
+ - Fix workflow observability view broken by invalid entityType parameter ([#11427](https://github.com/mastra-ai/mastra/pull/11427))
1679
+
1680
+ The UI workflow observability view was failing with a Zod validation error when trying to filter traces by workflow. The UI was sending `entityType=workflow`, but the backend's `EntityType` enum only accepts `workflow_run`.
1681
+
1682
+ **Root Cause**: The legacy value transformation was happening in the handler (after validation), but Zod validation occurred earlier in the request pipeline, rejecting the request before it could be transformed.
1683
+
1684
+ **Solution**:
1685
+ - Added `z.preprocess()` to the query schema to transform `workflow` → `workflow_run` before validation
1686
+ - Kept handler transformation for defense in depth
1687
+ - Updated UI to use `EntityType.WORKFLOW_RUN` enum value for type safety
1688
+
1689
+ This maintains backward compatibility with legacy clients while fixing the validation error.
1690
+
1691
+ Fixes #11412
1692
+
1693
+ - Add storage composition to MastraStorage ([#11401](https://github.com/mastra-ai/mastra/pull/11401))
1694
+
1695
+ `MastraStorage` can now compose storage domains from different adapters. Use it when you need different databases for different purposes - for example, PostgreSQL for memory and workflows, but a different database for observability.
1696
+
1697
+ ```typescript
1698
+ import { MastraStorage } from '@mastra/core/storage';
1699
+ import { MemoryPG, WorkflowsPG, ScoresPG } from '@mastra/pg';
1700
+ import { MemoryLibSQL } from '@mastra/libsql';
1701
+
1702
+ // Compose domains from different stores
1703
+ const storage = new MastraStorage({
1704
+ id: 'composite',
1705
+ domains: {
1706
+ memory: new MemoryLibSQL({ url: 'file:./local.db' }),
1707
+ workflows: new WorkflowsPG({ connectionString: process.env.DATABASE_URL }),
1708
+ scores: new ScoresPG({ connectionString: process.env.DATABASE_URL }),
1709
+ },
1710
+ });
1711
+ ```
1712
+
1713
+ **Breaking changes:**
1714
+ - `storage.supports` property no longer exists
1715
+ - `StorageSupports` type is no longer exported from `@mastra/core/storage`
1716
+
1717
+ All stores now support the same features. For domain availability, use `getStore()`:
1718
+
1719
+ ```typescript
1720
+ const store = await storage.getStore('memory');
1721
+ if (store) {
1722
+ // domain is available
1723
+ }
1724
+ ```
1725
+
1726
+ - Updated dependencies [[`3d93a15`](https://github.com/mastra-ai/mastra/commit/3d93a15796b158c617461c8b98bede476ebb43e2), [`efe406a`](https://github.com/mastra-ai/mastra/commit/efe406a1353c24993280ebc2ed61dd9f65b84b26), [`119e5c6`](https://github.com/mastra-ai/mastra/commit/119e5c65008f3e5cfca954eefc2eb85e3bf40da4), [`74e504a`](https://github.com/mastra-ai/mastra/commit/74e504a3b584eafd2f198001c6a113bbec589fd3), [`e33fdbd`](https://github.com/mastra-ai/mastra/commit/e33fdbd07b33920d81e823122331b0c0bee0bb59), [`929f69c`](https://github.com/mastra-ai/mastra/commit/929f69c3436fa20dd0f0e2f7ebe8270bd82a1529), [`8a73529`](https://github.com/mastra-ai/mastra/commit/8a73529ca01187f604b1f3019d0a725ac63ae55f)]:
1727
+ - @mastra/core@1.0.0-beta.16
1728
+
1729
+ ## 1.0.0-beta.15
1730
+
1731
+ ### Minor Changes
1732
+
1733
+ - Unified observability schema with entity-based span identification ([#11132](https://github.com/mastra-ai/mastra/pull/11132))
1734
+
1735
+ ## What changed
1736
+
1737
+ Spans now use a unified identification model with `entityId`, `entityType`, and `entityName` instead of separate `agentId`, `toolId`, `workflowId` fields.
1738
+
1739
+ **Before:**
1740
+
1741
+ ```typescript
1742
+ // Old span structure
1743
+ span.agentId; // 'my-agent'
1744
+ span.toolId; // undefined
1745
+ span.workflowId; // undefined
1746
+ ```
1747
+
1748
+ **After:**
1749
+
1750
+ ```typescript
1751
+ // New span structure
1752
+ span.entityType; // EntityType.AGENT
1753
+ span.entityId; // 'my-agent'
1754
+ span.entityName; // 'My Agent'
1755
+ ```
1756
+
1757
+ ## New `listTraces()` API
1758
+
1759
+ Query traces with filtering, pagination, and sorting:
1760
+
1761
+ ```typescript
1762
+ const { spans, pagination } = await storage.listTraces({
1763
+ filters: {
1764
+ entityType: EntityType.AGENT,
1765
+ entityId: 'my-agent',
1766
+ userId: 'user-123',
1767
+ environment: 'production',
1768
+ status: TraceStatus.SUCCESS,
1769
+ startedAt: { start: new Date('2024-01-01'), end: new Date('2024-01-31') },
1770
+ },
1771
+ pagination: { page: 0, perPage: 50 },
1772
+ orderBy: { field: 'startedAt', direction: 'DESC' },
1773
+ });
1774
+ ```
1775
+
1776
+ **Available filters:** date ranges (`startedAt`, `endedAt`), entity (`entityType`, `entityId`, `entityName`), identity (`userId`, `organizationId`), correlation IDs (`runId`, `sessionId`, `threadId`), deployment (`environment`, `source`, `serviceName`), `tags`, `metadata`, and `status`.
1777
+
1778
+ ## New retrieval methods
1779
+ - `getSpan({ traceId, spanId })` - Get a single span
1780
+ - `getRootSpan({ traceId })` - Get the root span of a trace
1781
+ - `getTrace({ traceId })` - Get all spans for a trace
1782
+
1783
+ ## Backward compatibility
1784
+
1785
+ The legacy `getTraces()` method continues to work. When you pass `name: "agent run: my-agent"`, it automatically transforms to `entityId: "my-agent", entityType: AGENT`.
1786
+
1787
+ ## Migration
1788
+
1789
+ **Automatic:** SQL-based stores (PostgreSQL, LibSQL, MSSQL) automatically add new columns to existing `spans` tables on initialization. Existing data is preserved with new columns set to `NULL`.
1790
+
1791
+ **No action required:** Your existing code continues to work. Adopt the new fields and `listTraces()` API at your convenience.
1792
+
1793
+ ### Patch Changes
1794
+
1795
+ - Refactor storage architecture to use domain-specific stores via `getStore()` pattern ([#11361](https://github.com/mastra-ai/mastra/pull/11361))
1796
+
1797
+ ### Summary
1798
+
1799
+ This release introduces a new storage architecture that replaces passthrough methods on `MastraStorage` with domain-specific storage interfaces accessed via `getStore()`. This change reduces code duplication across storage adapters and provides a cleaner, more modular API.
1800
+
1801
+ ### Migration Guide
1802
+
1803
+ All direct method calls on storage instances should be updated to use `getStore()`:
1804
+
1805
+ ```typescript
1806
+ // Before
1807
+ const thread = await storage.getThreadById({ threadId });
1808
+ await storage.persistWorkflowSnapshot({ workflowName, runId, snapshot });
1809
+ await storage.createSpan(span);
1810
+
1811
+ // After
1812
+ const memory = await storage.getStore('memory');
1813
+ const thread = await memory?.getThreadById({ threadId });
1814
+
1815
+ const workflows = await storage.getStore('workflows');
1816
+ await workflows?.persistWorkflowSnapshot({ workflowName, runId, snapshot });
1817
+
1818
+ const observability = await storage.getStore('observability');
1819
+ await observability?.createSpan(span);
1820
+ ```
1821
+
1822
+ ### Available Domains
1823
+ - **`memory`**: Thread and message operations (`getThreadById`, `saveThread`, `saveMessages`, etc.)
1824
+ - **`workflows`**: Workflow state persistence (`persistWorkflowSnapshot`, `loadWorkflowSnapshot`, `getWorkflowRunById`, etc.)
1825
+ - **`scores`**: Evaluation scores (`saveScore`, `listScoresByScorerId`, etc.)
1826
+ - **`observability`**: Tracing and spans (`createSpan`, `updateSpan`, `getTrace`, etc.)
1827
+ - **`agents`**: Stored agent configurations (`createAgent`, `getAgentById`, `listAgents`, etc.)
1828
+
1829
+ ### Breaking Changes
1830
+ - Passthrough methods have been removed from `MastraStorage` base class
1831
+ - All storage adapters now require accessing domains via `getStore()`
1832
+ - The `stores` property on storage instances is now the canonical way to access domain storage
1833
+
1834
+ ### Internal Changes
1835
+ - Each storage adapter now initializes domain-specific stores in its constructor
1836
+ - Domain stores share database connections and handle their own table initialization
1837
+
1838
+ - Add `/api/system/packages` endpoint that returns installed Mastra packages and versions from the dev environment ([#11211](https://github.com/mastra-ai/mastra/pull/11211))
1839
+
1840
+ - Add `perStep` option to workflow run methods, allowing a workflow to run just a step instead of all the workflow steps ([#11276](https://github.com/mastra-ai/mastra/pull/11276))
1841
+
1842
+ - Fixed voice transcription endpoint ([#11348](https://github.com/mastra-ai/mastra/pull/11348))
1843
+
1844
+ The voice transcription endpoint (`/api/agents/:agentId/voice/listen`) now correctly handles multipart/form-data requests for audio uploads rather than only parsing JSON request bodies.
1845
+
1846
+ Both Express and Hono adapters now parse multipart/form-data bodies and handle JSON-encoded form fields.
1847
+
1848
+ **Breaking change:** The server schema field for the transcription endpoint was renamed from `audioData` to `audio` to match the client SDK. If you are making direct API calls to the transcription endpoint (not using the SDK), you will need to update your request body to use `audio` instead of `audioData`.
1849
+
1850
+ - Updated dependencies [[`33a4d2e`](https://github.com/mastra-ai/mastra/commit/33a4d2e4ed8af51f69256232f00c34d6b6b51d48), [`4aaa844`](https://github.com/mastra-ai/mastra/commit/4aaa844a4f19d054490f43638a990cc57bda8d2f), [`4a1a6cb`](https://github.com/mastra-ai/mastra/commit/4a1a6cb3facad54b2bb6780b00ce91d6de1edc08), [`31d13d5`](https://github.com/mastra-ai/mastra/commit/31d13d5fdc2e2380e2e3ee3ec9fb29d2a00f265d), [`4c62166`](https://github.com/mastra-ai/mastra/commit/4c621669f4a29b1f443eca3ba70b814afa286266), [`7bcbf10`](https://github.com/mastra-ai/mastra/commit/7bcbf10133516e03df964b941f9a34e9e4ab4177), [`4353600`](https://github.com/mastra-ai/mastra/commit/43536005a65988a8eede236f69122e7f5a284ba2), [`6986fb0`](https://github.com/mastra-ai/mastra/commit/6986fb064f5db6ecc24aa655e1d26529087b43b3), [`053e979`](https://github.com/mastra-ai/mastra/commit/053e9793b28e970086b0507f7f3b76ea32c1e838), [`e26dc9c`](https://github.com/mastra-ai/mastra/commit/e26dc9c3ccfec54ae3dc3e2b2589f741f9ae60a6), [`55edf73`](https://github.com/mastra-ai/mastra/commit/55edf7302149d6c964fbb7908b43babfc2b52145), [`27c0009`](https://github.com/mastra-ai/mastra/commit/27c0009777a6073d7631b0eb7b481d94e165b5ca), [`dee388d`](https://github.com/mastra-ai/mastra/commit/dee388dde02f2e63c53385ae69252a47ab6825cc), [`3f3fc30`](https://github.com/mastra-ai/mastra/commit/3f3fc3096f24c4a26cffeecfe73085928f72aa63), [`d90ea65`](https://github.com/mastra-ai/mastra/commit/d90ea6536f7aa51c6545a4e9215b55858e98e16d), [`d171e55`](https://github.com/mastra-ai/mastra/commit/d171e559ead9f52ec728d424844c8f7b164c4510), [`10c2735`](https://github.com/mastra-ai/mastra/commit/10c27355edfdad1ee2b826b897df74125eb81fb8), [`1924cf0`](https://github.com/mastra-ai/mastra/commit/1924cf06816e5e4d4d5333065ec0f4bb02a97799), [`b339816`](https://github.com/mastra-ai/mastra/commit/b339816df0984d0243d944ac2655d6ba5f809cde)]:
1851
+ - @mastra/core@1.0.0-beta.15
1852
+
1853
+ ## 1.0.0-beta.14
1854
+
1855
+ ### Patch Changes
1856
+
1857
+ - Add execution metadata to A2A message/send responses. The A2A protocol now returns detailed execution information including tool calls, tool results, token usage, and finish reason in the task metadata. This allows clients to inspect which tools were invoked during agent execution and access execution statistics without additional queries. ([#11241](https://github.com/mastra-ai/mastra/pull/11241))
1858
+
1859
+ - feat: Add field filtering and nested workflow control to workflow execution result endpoint ([#11246](https://github.com/mastra-ai/mastra/pull/11246))
1860
+
1861
+ Adds two optional query parameters to `/api/workflows/:workflowId/runs/:runId/execution-result` endpoint:
1862
+ - `fields`: Request only specific fields (e.g., `status`, `result`, `error`)
1863
+ - `withNestedWorkflows`: Control whether to fetch nested workflow data
1864
+
1865
+ This significantly reduces response payload size and improves response times for large workflows.
1866
+
1867
+ ## Server Endpoint Usage
1868
+
1869
+ ```http
1870
+ # Get only status (minimal payload - fastest)
1871
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status
1872
+
1873
+ # Get status and result
1874
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status,result
1875
+
1876
+ # Get all fields but without nested workflow data (faster)
1877
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?withNestedWorkflows=false
1878
+
1879
+ # Get only specific fields without nested workflow data
1880
+ GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status,steps&withNestedWorkflows=false
1881
+
1882
+ # Get full data (default behavior)
1883
+ GET /api/workflows/:workflowId/runs/:runId/execution-result
1884
+ ```
1885
+
1886
+ ## Client SDK Usage
1887
+
1888
+ ```typescript
1889
+ import { MastraClient } from '@mastra/client-js';
1890
+
1891
+ const client = new MastraClient({ baseUrl: 'http://localhost:4111' });
1892
+ const workflow = client.getWorkflow('myWorkflow');
1893
+
1894
+ // Get only status (minimal payload - fastest)
1895
+ const statusOnly = await workflow.runExecutionResult(runId, {
1896
+ fields: ['status'],
1897
+ });
1898
+ console.log(statusOnly.status); // 'success' | 'failed' | 'running' | etc.
1899
+
1900
+ // Get status and result
1901
+ const statusAndResult = await workflow.runExecutionResult(runId, {
1902
+ fields: ['status', 'result'],
1903
+ });
1904
+
1905
+ // Get all fields but without nested workflow data (faster)
1906
+ const resultWithoutNested = await workflow.runExecutionResult(runId, {
1907
+ withNestedWorkflows: false,
1908
+ });
1909
+
1910
+ // Get specific fields without nested workflow data
1911
+ const optimized = await workflow.runExecutionResult(runId, {
1912
+ fields: ['status', 'steps'],
1913
+ withNestedWorkflows: false,
1914
+ });
1915
+
1916
+ // Get full execution result (default behavior)
1917
+ const fullResult = await workflow.runExecutionResult(runId);
1918
+ ```
1919
+
1920
+ ## Core API Changes
1921
+
1922
+ The `Workflow.getWorkflowRunExecutionResult` method now accepts an options object:
1923
+
1924
+ ```typescript
1925
+ await workflow.getWorkflowRunExecutionResult(runId, {
1926
+ withNestedWorkflows: false, // default: true, set to false to skip nested workflow data
1927
+ fields: ['status', 'result'], // optional field filtering
1928
+ });
1929
+ ```
1930
+
1931
+ ## Inngest Compatibility
1932
+
1933
+ The `@mastra/inngest` package has been updated to use the new options object API. This is a non-breaking internal change - no action required from inngest workflow users.
1934
+
1935
+ ## Performance Impact
1936
+
1937
+ For workflows with large step outputs:
1938
+ - Requesting only `status`: ~99% reduction in payload size
1939
+ - Requesting `status,result,error`: ~95% reduction in payload size
1940
+ - Using `withNestedWorkflows=false`: Avoids expensive nested workflow data fetching
1941
+ - Combining both: Maximum performance optimization
1942
+
1943
+ - Updated dependencies [[`4f94ed8`](https://github.com/mastra-ai/mastra/commit/4f94ed8177abfde3ec536e3574883e075423350c), [`ac3cc23`](https://github.com/mastra-ai/mastra/commit/ac3cc2397d1966bc0fc2736a223abc449d3c7719), [`a86f4df`](https://github.com/mastra-ai/mastra/commit/a86f4df0407311e0d2ea49b9a541f0938810d6a9), [`029540c`](https://github.com/mastra-ai/mastra/commit/029540ca1e582fc2dd8d288ecd4a9b0f31a954ef), [`66741d1`](https://github.com/mastra-ai/mastra/commit/66741d1a99c4f42cf23a16109939e8348ac6852e), [`01b20fe`](https://github.com/mastra-ai/mastra/commit/01b20fefb7c67c2b7d79417598ef4e60256d1225), [`0dbf199`](https://github.com/mastra-ai/mastra/commit/0dbf199110f22192ce5c95b1c8148d4872b4d119), [`a7ce182`](https://github.com/mastra-ai/mastra/commit/a7ce1822a8785ce45d62dd5c911af465e144f7d7)]:
1944
+ - @mastra/core@1.0.0-beta.14
1945
+
1946
+ ## 1.0.0-beta.13
1947
+
1948
+ ### Patch Changes
1949
+
1950
+ - Updated dependencies [[`919a22b`](https://github.com/mastra-ai/mastra/commit/919a22b25876f9ed5891efe5facbe682c30ff497)]:
1951
+ - @mastra/core@1.0.0-beta.13
1952
+
1953
+ ## 1.0.0-beta.12
1954
+
1955
+ ### Patch Changes
1956
+
1957
+ - Add resourceId to workflow routes ([#11166](https://github.com/mastra-ai/mastra/pull/11166))
1958
+
1959
+ - Fix MastraServer.tools typing to accept tools with input schemas ([`5118f38`](https://github.com/mastra-ai/mastra/commit/5118f384a70b1166012fde3b901f3227870b1009))
1960
+
1961
+ Fixes issue #11185 where `MastraServer.tools` was rejecting tools created with `createTool({ inputSchema })`. Changed the tools property type from `Record<string, Tool>` to `ToolsInput` to accept tools with any schema types (input, output, or none), as well as Vercel AI SDK tools and provider-defined tools.
1962
+
1963
+ Tools created with `createTool({ inputSchema: z.object(...) })` now work without TypeScript errors.
1964
+
1965
+ - Remove deprecated playground-only prompt generation handler (functionality moved to @mastra/server) ([#11074](https://github.com/mastra-ai/mastra/pull/11074))
1966
+
1967
+ Improve prompt enhancement UX: show toast errors when enhancement fails, disable button when no model has a configured API key, and prevent users from disabling all models in the model list
1968
+
1969
+ Add missing `/api/agents/:agentId/instructions/enhance` endpoint that was referenced by `@mastra/client-js` and `@mastra/playground-ui`
1970
+
1971
+ - Updated dependencies [[`d5ed981`](https://github.com/mastra-ai/mastra/commit/d5ed981c8701c1b8a27a5f35a9a2f7d9244e695f), [`9650cce`](https://github.com/mastra-ai/mastra/commit/9650cce52a1d917ff9114653398e2a0f5c3ba808), [`932d63d`](https://github.com/mastra-ai/mastra/commit/932d63dd51be9c8bf1e00e3671fe65606c6fb9cd), [`b760b73`](https://github.com/mastra-ai/mastra/commit/b760b731aca7c8a3f041f61d57a7f125ae9cb215), [`695a621`](https://github.com/mastra-ai/mastra/commit/695a621528bdabeb87f83c2277cf2bb084c7f2b4), [`2b459f4`](https://github.com/mastra-ai/mastra/commit/2b459f466fd91688eeb2a44801dc23f7f8a887ab), [`486352b`](https://github.com/mastra-ai/mastra/commit/486352b66c746602b68a95839f830de14c7fb8c0), [`09e4bae`](https://github.com/mastra-ai/mastra/commit/09e4bae18dd5357d2ae078a4a95a2af32168ab08), [`24b76d8`](https://github.com/mastra-ai/mastra/commit/24b76d8e17656269c8ed09a0c038adb9cc2ae95a), [`243a823`](https://github.com/mastra-ai/mastra/commit/243a8239c5906f5c94e4f78b54676793f7510ae3), [`486352b`](https://github.com/mastra-ai/mastra/commit/486352b66c746602b68a95839f830de14c7fb8c0), [`c61fac3`](https://github.com/mastra-ai/mastra/commit/c61fac3add96f0dcce0208c07415279e2537eb62), [`6f14f70`](https://github.com/mastra-ai/mastra/commit/6f14f706ccaaf81b69544b6c1b75ab66a41e5317), [`09e4bae`](https://github.com/mastra-ai/mastra/commit/09e4bae18dd5357d2ae078a4a95a2af32168ab08), [`4524734`](https://github.com/mastra-ai/mastra/commit/45247343e384717a7c8404296275c56201d6470f), [`2a53598`](https://github.com/mastra-ai/mastra/commit/2a53598c6d8cfeb904a7fc74e57e526d751c8fa6), [`c7cd3c7`](https://github.com/mastra-ai/mastra/commit/c7cd3c7a187d7aaf79e2ca139de328bf609a14b4), [`847c212`](https://github.com/mastra-ai/mastra/commit/847c212caba7df0d6f2fc756b494ac3c75c3720d), [`6f941c4`](https://github.com/mastra-ai/mastra/commit/6f941c438ca5f578619788acc7608fc2e23bd176)]:
1972
+ - @mastra/core@1.0.0-beta.12
1973
+
1974
+ ## 1.0.0-beta.11
1975
+
1976
+ ### Patch Changes
1977
+
1978
+ - Fix type safety for message ordering - restrict `orderBy` to only accept `'createdAt'` field ([#11069](https://github.com/mastra-ai/mastra/pull/11069))
1979
+
1980
+ Messages don't have an `updatedAt` field, but the previous type allowed ordering by it, which would return empty results. This change adds compile-time type safety by making `StorageOrderBy` generic and restricting `StorageListMessagesInput.orderBy` to only accept `'createdAt'`. The API validation schemas have also been updated to reject invalid orderBy values at runtime.
1981
+
1982
+ - Support new Workflow tripwire run status. Tripwires that are thrown from within a workflow will now bubble up and return a graceful state with information about tripwires. ([#10947](https://github.com/mastra-ai/mastra/pull/10947))
1983
+
1984
+ When a workflow contains an agent step that triggers a tripwire, the workflow returns with `status: 'tripwire'` and includes tripwire details:
1985
+
1986
+ ```typescript showLineNumbers copy
1987
+ const run = await workflow.createRun();
1988
+ const result = await run.start({ inputData: { message: 'Hello' } });
1989
+
1990
+ if (result.status === 'tripwire') {
1991
+ console.log('Workflow terminated by tripwire:', result.tripwire?.reason);
1992
+ console.log('Processor ID:', result.tripwire?.processorId);
1993
+ console.log('Retry requested:', result.tripwire?.retry);
1994
+ }
1995
+ ```
1996
+
1997
+ Adds new UI state for tripwire in agent chat and workflow UI.
1998
+
1999
+ This is distinct from `status: 'failed'` which indicates an unexpected error. A tripwire status means a processor intentionally stopped execution (e.g., for content moderation).
2000
+
2001
+ - Updated dependencies [[`38380b6`](https://github.com/mastra-ai/mastra/commit/38380b60fca905824bdf6b43df307a58efb1aa15), [`798d0c7`](https://github.com/mastra-ai/mastra/commit/798d0c740232653b1d754870e6b43a55c364ffe2), [`ffe84d5`](https://github.com/mastra-ai/mastra/commit/ffe84d54f3b0f85167fe977efd027dba027eb998), [`2c212e7`](https://github.com/mastra-ai/mastra/commit/2c212e704c90e2db83d4109e62c03f0f6ebd2667), [`4ca4306`](https://github.com/mastra-ai/mastra/commit/4ca430614daa5fa04730205a302a43bf4accfe9f), [`3bf6c5f`](https://github.com/mastra-ai/mastra/commit/3bf6c5f104c25226cd84e0c77f9dec15f2cac2db)]:
2002
+ - @mastra/core@1.0.0-beta.11
2003
+
2004
+ ## 1.0.0-beta.10
2005
+
2006
+ ### Patch Changes
2007
+
2008
+ - ### Breaking Changes ([#11028](https://github.com/mastra-ai/mastra/pull/11028))
2009
+ - Renamed `RuntimeContext` type to `ServerContext` to avoid confusion with the user-facing `RequestContext` (previously called `RuntimeContext`)
2010
+ - Removed `playground` and `isDev` options from server adapter constructors - these only set context variables without any actual functionality
2011
+
2012
+ ### Changes
2013
+
2014
+ **@mastra/server**
2015
+ - Renamed `RuntimeContext` type to `ServerContext` in route handler types
2016
+ - Renamed `createTestRuntimeContext` to `createTestServerContext` in test utilities
2017
+ - Renamed `isPlayground` parameter to `isStudio` in `formatAgent` function
2018
+
2019
+ **@mastra/hono**
2020
+ - Removed `playground` and `isDev` from `HonoVariables` type
2021
+ - Removed setting of `playground` and `isDev` context variables in middleware
2022
+
2023
+ **@mastra/express**
2024
+ - Removed `playground` and `isDev` from `Express.Locals` interface
2025
+ - Removed setting of `playground` and `isDev` in response locals
2026
+
2027
+ - Add delete workflow run API ([#10991](https://github.com/mastra-ai/mastra/pull/10991))
2028
+
2029
+ ```typescript
2030
+ await workflow.deleteWorkflowRunById(runId);
2031
+ ```
2032
+
2033
+ - Updated dependencies [[`edb07e4`](https://github.com/mastra-ai/mastra/commit/edb07e49283e0c28bd094a60e03439bf6ecf0221), [`b7e17d3`](https://github.com/mastra-ai/mastra/commit/b7e17d3f5390bb5a71efc112204413656fcdc18d), [`261473a`](https://github.com/mastra-ai/mastra/commit/261473ac637e633064a22076671e2e02b002214d), [`5d7000f`](https://github.com/mastra-ai/mastra/commit/5d7000f757cd65ea9dc5b05e662fd83dfd44e932), [`4f0331a`](https://github.com/mastra-ai/mastra/commit/4f0331a79bf6eb5ee598a5086e55de4b5a0ada03), [`8a000da`](https://github.com/mastra-ai/mastra/commit/8a000da0c09c679a2312f6b3aa05b2ca78ca7393)]:
2034
+ - @mastra/core@1.0.0-beta.10
2035
+
2036
+ ## 1.0.0-beta.9
2037
+
2038
+ ### Minor Changes
2039
+
2040
+ - Add stored agents support ([#10953](https://github.com/mastra-ai/mastra/pull/10953))
2041
+
2042
+ Agents can now be stored in the database and loaded at runtime. This lets you persist agent configurations and dynamically create executable Agent instances from storage.
2043
+
2044
+ ```typescript
2045
+ import { Mastra } from '@mastra/core';
2046
+ import { LibSQLStore } from '@mastra/libsql';
2047
+
2048
+ const mastra = new Mastra({
2049
+ storage: new LibSQLStore({ url: ':memory:' }),
2050
+ tools: { myTool },
2051
+ scorers: { myScorer },
2052
+ });
2053
+
2054
+ // Create agent in storage via API or directly
2055
+ await mastra.getStorage().createAgent({
2056
+ agent: {
2057
+ id: 'my-agent',
2058
+ name: 'My Agent',
2059
+ instructions: 'You are helpful',
2060
+ model: { provider: 'openai', name: 'gpt-4' },
2061
+ tools: { myTool: {} },
2062
+ scorers: { myScorer: { sampling: { type: 'ratio', rate: 0.5 } } },
2063
+ },
2064
+ });
2065
+
2066
+ // Load and use the agent
2067
+ const agent = await mastra.getStoredAgentById('my-agent');
2068
+ const response = await agent.generate({ messages: 'Hello!' });
2069
+
2070
+ // List all stored agents with pagination
2071
+ const { agents, total, hasMore } = await mastra.listStoredAgents({
2072
+ page: 0,
2073
+ perPage: 10,
2074
+ });
2075
+ ```
2076
+
2077
+ Also adds a memory registry to Mastra so stored agents can reference memory instances by key.
2078
+
2079
+ ### Patch Changes
2080
+
2081
+ - Updated dependencies [[`72df8ae`](https://github.com/mastra-ai/mastra/commit/72df8ae595584cdd7747d5c39ffaca45e4507227), [`9198899`](https://github.com/mastra-ai/mastra/commit/91988995c427b185c33714b7f3be955367911324), [`653e65a`](https://github.com/mastra-ai/mastra/commit/653e65ae1f9502c2958a32f47a5a2df11e612a92), [`c6fd6fe`](https://github.com/mastra-ai/mastra/commit/c6fd6fedd09e9cf8004b03a80925f5e94826ad7e), [`0bed332`](https://github.com/mastra-ai/mastra/commit/0bed332843f627202c6520eaf671771313cd20f3)]:
2082
+ - @mastra/core@1.0.0-beta.9
2083
+
2084
+ ## 1.0.0-beta.8
2085
+
2086
+ ### Patch Changes
2087
+
2088
+ - Updated dependencies [[`0d41fe2`](https://github.com/mastra-ai/mastra/commit/0d41fe245355dfc66d61a0d9c85d9400aac351ff), [`6b3ba91`](https://github.com/mastra-ai/mastra/commit/6b3ba91494cc10394df96782f349a4f7b1e152cc), [`7907fd1`](https://github.com/mastra-ai/mastra/commit/7907fd1c5059813b7b870b81ca71041dc807331b)]:
2089
+ - @mastra/core@1.0.0-beta.8
2090
+
2091
+ ## 1.0.0-beta.7
2092
+
2093
+ ### Patch Changes
2094
+
2095
+ - fix: standardize pagination params to page/perPage with backwards compatibility for limit/offset ([#10790](https://github.com/mastra-ai/mastra/pull/10790))
2096
+ - Server now accepts both `page`/`perPage` and legacy `limit`/`offset` params for workflow runs and MCP server listing endpoints
2097
+ - Client SDK sends both param formats to support older server versions
2098
+ - Added `createCombinedPaginationSchema` helper for endpoints needing backwards compatibility
2099
+ - Marked `limit` and `offset` as deprecated in client types
2100
+
2101
+ - feat: Add partial response support for agent and workflow list endpoints ([#10886](https://github.com/mastra-ai/mastra/pull/10886))
2102
+
2103
+ Add optional `partial` query parameter to `/api/agents` and `/api/workflows` endpoints to return minimal data without schemas, reducing payload size for list views:
2104
+ - When `partial=true`: tool schemas (inputSchema, outputSchema) are omitted
2105
+ - When `partial=true`: workflow steps are replaced with stepCount integer
2106
+ - When `partial=true`: workflow root schemas (inputSchema, outputSchema) are omitted
2107
+ - Maintains backward compatibility when partial parameter is not provided
2108
+
2109
+ ## Server Endpoint Usage
2110
+
2111
+ ```http
2112
+ # Get partial agent data (no tool schemas)
2113
+ GET /api/agents?partial=true
2114
+
2115
+ # Get full agent data (default behavior)
2116
+ GET /api/agents
2117
+
2118
+ # Get partial workflow data (stepCount instead of steps, no schemas)
2119
+ GET /api/workflows?partial=true
2120
+
2121
+ # Get full workflow data (default behavior)
2122
+ GET /api/workflows
2123
+ ```
2124
+
2125
+ ## Client SDK Usage
2126
+
2127
+ ```typescript
2128
+ import { MastraClient } from '@mastra/client-js';
2129
+
2130
+ const client = new MastraClient({ baseUrl: 'http://localhost:4111' });
2131
+
2132
+ // Get partial agent list (smaller payload)
2133
+ const partialAgents = await client.listAgents({ partial: true });
2134
+
2135
+ // Get full agent list with tool schemas
2136
+ const fullAgents = await client.listAgents();
2137
+
2138
+ // Get partial workflow list (smaller payload)
2139
+ const partialWorkflows = await client.listWorkflows({ partial: true });
2140
+
2141
+ // Get full workflow list with steps and schemas
2142
+ const fullWorkflows = await client.listWorkflows();
2143
+ ```
2144
+
2145
+ - Updated dependencies [[`3076c67`](https://github.com/mastra-ai/mastra/commit/3076c6778b18988ae7d5c4c5c466366974b2d63f), [`85d7ee1`](https://github.com/mastra-ai/mastra/commit/85d7ee18ff4e14d625a8a30ec6656bb49804989b), [`c6c1092`](https://github.com/mastra-ai/mastra/commit/c6c1092f8fbf76109303f69e000e96fd1960c4ce), [`81dc110`](https://github.com/mastra-ai/mastra/commit/81dc11008d147cf5bdc8996ead1aa61dbdebb6fc), [`7aedb74`](https://github.com/mastra-ai/mastra/commit/7aedb74883adf66af38e270e4068fd42e7a37036), [`8f02d80`](https://github.com/mastra-ai/mastra/commit/8f02d800777397e4b45d7f1ad041988a8b0c6630), [`d7aad50`](https://github.com/mastra-ai/mastra/commit/d7aad501ce61646b76b4b511e558ac4eea9884d0), [`ce0a73a`](https://github.com/mastra-ai/mastra/commit/ce0a73abeaa75b10ca38f9e40a255a645d50ebfb), [`a02e542`](https://github.com/mastra-ai/mastra/commit/a02e542d23179bad250b044b17ff023caa61739f), [`a372c64`](https://github.com/mastra-ai/mastra/commit/a372c640ad1fd12e8f0613cebdc682fc156b4d95), [`8846867`](https://github.com/mastra-ai/mastra/commit/8846867ffa9a3746767618e314bebac08eb77d87), [`42a42cf`](https://github.com/mastra-ai/mastra/commit/42a42cf3132b9786feecbb8c13c583dce5b0e198), [`ae08bf0`](https://github.com/mastra-ai/mastra/commit/ae08bf0ebc6a4e4da992b711c4a389c32ba84cf4), [`21735a7`](https://github.com/mastra-ai/mastra/commit/21735a7ef306963554a69a89b44f06c3bcd85141), [`1d877b8`](https://github.com/mastra-ai/mastra/commit/1d877b8d7b536a251c1a7a18db7ddcf4f68d6f8b)]:
2146
+ - @mastra/core@1.0.0-beta.7
2147
+
2148
+ ## 1.0.0-beta.6
2149
+
2150
+ ### Patch Changes
2151
+
2152
+ - Unified MastraServer API with MCP transport routes ([#10644](https://github.com/mastra-ai/mastra/pull/10644))
2153
+
2154
+ **Breaking Changes:**
2155
+ - Renamed `HonoServerAdapter` to `MastraServer` in `@mastra/hono`
2156
+ - Renamed `ExpressServerAdapter` to `MastraServer` in `@mastra/express`
2157
+ - Configuration now passed to constructor instead of separate method calls
2158
+ - Renamed base class from `ServerAdapter` to `MastraServerBase` in `@mastra/server`
2159
+
2160
+ **New Features:**
2161
+ - Added MCP transport routes (HTTP and SSE) to server adapters
2162
+ - MCP endpoints available at `/api/mcp/:serverId/mcp` (HTTP) and `/api/mcp/:serverId/sse` (SSE)
2163
+ - Added `express.json()` middleware compatibility for MCP routes
2164
+ - Moved authentication helpers from deployer to `@mastra/server/auth`
2165
+
2166
+ **Testing:**
2167
+ - Added shared MCP route and transport test suites in `@internal/server-adapter-test-utils`
2168
+ - Added comprehensive MCP endpoint tests for both Hono and Express adapters
2169
+ - Added GitHub Actions workflow for server adapter CI testing
2170
+
2171
+ - Allow direct access to server app handle directly from Mastra instance. ([#10598](https://github.com/mastra-ai/mastra/pull/10598))
2172
+
2173
+ ```ts
2174
+ // Before: HTTP request to localhost
2175
+ const response = await fetch(`http://localhost:5000/api/tools`);
2176
+
2177
+ // After: Direct call via app.fetch()
2178
+ const app = mastra.getServerApp<Hono>();
2179
+ const response = await app.fetch(new Request('http://internal/api/tools'));
2180
+ ```
2181
+
2182
+ - Added `mastra.getServerApp<T>()` to access the underlying Hono/Express app
2183
+ - Added `mastra.getMastraServer()` and `mastra.setMastraServer()` for adapter access
2184
+ - Added `MastraServerBase` class in `@mastra/core/server` for adapter implementations
2185
+ - Server adapters now auto-register with Mastra in their constructor
2186
+
2187
+ - fix(a2a): fix streaming and memory support for A2A protocol ([#10653](https://github.com/mastra-ai/mastra/pull/10653))
2188
+
2189
+ **Client (`@mastra/client-js`):**
2190
+ - Fixed `sendStreamingMessage` to properly return a streaming response instead of attempting to parse it as JSON
2191
+
2192
+ **Server (`@mastra/server`):**
2193
+ - Fixed A2A message handler to pass `contextId` as `threadId` for memory persistence across conversations
2194
+ - Added support for user-provided `resourceId` via `params.metadata.resourceId` or `message.metadata.resourceId`, falling back to `agentId`
2195
+
2196
+ - Add stream data redaction to prevent sensitive information leaks in agent stream API responses. ([#10705](https://github.com/mastra-ai/mastra/pull/10705))
2197
+
2198
+ The `stream` API endpoint now automatically redacts `request` data from stream chunks (`step-start`, `step-finish`, `finish`) which could contain system prompts, tool definitions, and API keys. Redaction is enabled by default and can be disabled for debugging/internal services via `streamOptions.redact`.
2199
+
2200
+ - Updated dependencies [[`ac0d2f4`](https://github.com/mastra-ai/mastra/commit/ac0d2f4ff8831f72c1c66c2be809706d17f65789), [`1a0d3fc`](https://github.com/mastra-ai/mastra/commit/1a0d3fc811482c9c376cdf79ee615c23bae9b2d6), [`85a628b`](https://github.com/mastra-ai/mastra/commit/85a628b1224a8f64cd82ea7f033774bf22df7a7e), [`c237233`](https://github.com/mastra-ai/mastra/commit/c23723399ccedf7f5744b3f40997b79246bfbe64), [`15f9e21`](https://github.com/mastra-ai/mastra/commit/15f9e216177201ea6e3f6d0bfb063fcc0953444f), [`ff94dea`](https://github.com/mastra-ai/mastra/commit/ff94dea935f4e34545c63bcb6c29804732698809), [`5b2ff46`](https://github.com/mastra-ai/mastra/commit/5b2ff4651df70c146523a7fca773f8eb0a2272f8), [`db41688`](https://github.com/mastra-ai/mastra/commit/db4168806d007417e2e60b4f68656dca4e5f40c9), [`5ca599d`](https://github.com/mastra-ai/mastra/commit/5ca599d0bb59a1595f19f58473fcd67cc71cef58), [`bff1145`](https://github.com/mastra-ai/mastra/commit/bff114556b3cbadad9b2768488708f8ad0e91475), [`5c8ca24`](https://github.com/mastra-ai/mastra/commit/5c8ca247094e0cc2cdbd7137822fb47241f86e77), [`e191844`](https://github.com/mastra-ai/mastra/commit/e1918444ca3f80e82feef1dad506cd4ec6e2875f), [`22553f1`](https://github.com/mastra-ai/mastra/commit/22553f11c63ee5e966a9c034a349822249584691), [`7237163`](https://github.com/mastra-ai/mastra/commit/72371635dbf96a87df4b073cc48fc655afbdce3d), [`2500740`](https://github.com/mastra-ai/mastra/commit/2500740ea23da067d6e50ec71c625ab3ce275e64), [`873ecbb`](https://github.com/mastra-ai/mastra/commit/873ecbb517586aa17d2f1e99283755b3ebb2863f), [`4f9bbe5`](https://github.com/mastra-ai/mastra/commit/4f9bbe5968f42c86f4930b8193de3c3c17e5bd36), [`02e51fe`](https://github.com/mastra-ai/mastra/commit/02e51feddb3d4155cfbcc42624fd0d0970d032c0), [`8f3fa3a`](https://github.com/mastra-ai/mastra/commit/8f3fa3a652bb77da092f913ec51ae46e3a7e27dc), [`cd29ad2`](https://github.com/mastra-ai/mastra/commit/cd29ad23a255534e8191f249593849ed29160886), [`bdf4d8c`](https://github.com/mastra-ai/mastra/commit/bdf4d8cdc656d8a2c21d81834bfa3bfa70f56c16), [`854e3da`](https://github.com/mastra-ai/mastra/commit/854e3dad5daac17a91a20986399d3a51f54bf68b), [`ce18d38`](https://github.com/mastra-ai/mastra/commit/ce18d38678c65870350d123955014a8432075fd9), [`cccf9c8`](https://github.com/mastra-ai/mastra/commit/cccf9c8b2d2dfc1a5e63919395b83d78c89682a0), [`61a5705`](https://github.com/mastra-ai/mastra/commit/61a570551278b6743e64243b3ce7d73de915ca8a), [`db70a48`](https://github.com/mastra-ai/mastra/commit/db70a48aeeeeb8e5f92007e8ede52c364ce15287), [`f0fdc14`](https://github.com/mastra-ai/mastra/commit/f0fdc14ee233d619266b3d2bbdeea7d25cfc6d13), [`db18bc9`](https://github.com/mastra-ai/mastra/commit/db18bc9c3825e2c1a0ad9a183cc9935f6691bfa1), [`9b37b56`](https://github.com/mastra-ai/mastra/commit/9b37b565e1f2a76c24f728945cc740c2b09be9da), [`41a23c3`](https://github.com/mastra-ai/mastra/commit/41a23c32f9877d71810f37e24930515df2ff7a0f), [`5d171ad`](https://github.com/mastra-ai/mastra/commit/5d171ad9ef340387276b77c2bb3e83e83332d729), [`f03ae60`](https://github.com/mastra-ai/mastra/commit/f03ae60500fe350c9d828621006cdafe1975fdd8), [`d1e74a0`](https://github.com/mastra-ai/mastra/commit/d1e74a0a293866dece31022047f5dbab65a304d0), [`39e7869`](https://github.com/mastra-ai/mastra/commit/39e7869bc7d0ee391077ce291474d8a84eedccff), [`5761926`](https://github.com/mastra-ai/mastra/commit/57619260c4a2cdd598763abbacd90de594c6bc76), [`c900fdd`](https://github.com/mastra-ai/mastra/commit/c900fdd504c41348efdffb205cfe80d48c38fa33), [`604a79f`](https://github.com/mastra-ai/mastra/commit/604a79fecf276e26a54a3fe01bb94e65315d2e0e), [`887f0b4`](https://github.com/mastra-ai/mastra/commit/887f0b4746cdbd7cb7d6b17ac9f82aeb58037ea5), [`2562143`](https://github.com/mastra-ai/mastra/commit/256214336b4faa78646c9c1776612393790d8784), [`ef11a61`](https://github.com/mastra-ai/mastra/commit/ef11a61920fa0ed08a5b7ceedd192875af119749)]:
2201
+ - @mastra/core@1.0.0-beta.6
2202
+
2203
+ ## 1.0.0-beta.5
2204
+
2205
+ ### Patch Changes
2206
+
2207
+ - Extract routing from @deployer/server into server adapter packages. ([#10263](https://github.com/mastra-ai/mastra/pull/10263))
2208
+ New packages:
2209
+ - @mastra/express
2210
+ - @mastra/hono
2211
+
2212
+ These packages support mastra server routes on express and hono respectively.
2213
+ Better abstractions will be built on top of these packages in the near future, enabling users to easily attach mastra routes to any existing server framework.
2214
+
2215
+ - Add timeTravel APIs and add timeTravel feature to studio ([#10361](https://github.com/mastra-ai/mastra/pull/10361))
2216
+
2217
+ - Fixed server handler bugs: filter parsing now handles colons in values (timestamps, URLs), dateRange validation now converts JSON strings to Date objects, deleteMessages schema accepts object forms, and added missing responseSchema for legacy stream route ([#10362](https://github.com/mastra-ai/mastra/pull/10362))
2218
+
2219
+ - Updated dependencies [[`21a15de`](https://github.com/mastra-ai/mastra/commit/21a15de369fe82aac26bb642ed7be73505475e8b), [`feb7ee4`](https://github.com/mastra-ai/mastra/commit/feb7ee4d09a75edb46c6669a3beaceec78811747), [`b0e2ea5`](https://github.com/mastra-ai/mastra/commit/b0e2ea5b52c40fae438b9e2f7baee6f0f89c5442), [`c456e01`](https://github.com/mastra-ai/mastra/commit/c456e0149e3c176afcefdbd9bb1d2c5917723725), [`ab035c2`](https://github.com/mastra-ai/mastra/commit/ab035c2ef6d8cc7bb25f06f1a38508bd9e6f126b), [`1a46a56`](https://github.com/mastra-ai/mastra/commit/1a46a566f45a3fcbadc1cf36bf86d351f264bfa3), [`3cf540b`](https://github.com/mastra-ai/mastra/commit/3cf540b9fbfea8f4fc8d3a2319a4e6c0b0cbfd52), [`1c6ce51`](https://github.com/mastra-ai/mastra/commit/1c6ce51f875915ab57fd36873623013699a2a65d), [`898a972`](https://github.com/mastra-ai/mastra/commit/898a9727d286c2510d6b702dfd367e6aaf5c6b0f), [`a97003a`](https://github.com/mastra-ai/mastra/commit/a97003aa1cf2f4022a41912324a1e77263b326b8), [`ccc141e`](https://github.com/mastra-ai/mastra/commit/ccc141ed27da0abc3a3fc28e9e5128152e8e37f4), [`fe3b897`](https://github.com/mastra-ai/mastra/commit/fe3b897c2ccbcd2b10e81b099438c7337feddf89), [`00123ba`](https://github.com/mastra-ai/mastra/commit/00123ba96dc9e5cd0b110420ebdba56d8f237b25), [`29c4309`](https://github.com/mastra-ai/mastra/commit/29c4309f818b24304c041bcb4a8f19b5f13f6b62), [`16785ce`](https://github.com/mastra-ai/mastra/commit/16785ced928f6f22638f4488cf8a125d99211799), [`de8239b`](https://github.com/mastra-ai/mastra/commit/de8239bdcb1d8c0cfa06da21f1569912a66bbc8a), [`b5e6cd7`](https://github.com/mastra-ai/mastra/commit/b5e6cd77fc8c8e64e0494c1d06cee3d84e795d1e), [`3759cb0`](https://github.com/mastra-ai/mastra/commit/3759cb064935b5f74c65ac2f52a1145f7352899d), [`651e772`](https://github.com/mastra-ai/mastra/commit/651e772eb1475fb13e126d3fcc01751297a88214), [`b61b93f`](https://github.com/mastra-ai/mastra/commit/b61b93f9e058b11dd2eec169853175d31dbdd567), [`bae33d9`](https://github.com/mastra-ai/mastra/commit/bae33d91a63fbb64d1e80519e1fc1acaed1e9013), [`c0b731f`](https://github.com/mastra-ai/mastra/commit/c0b731fb27d712dc8582e846df5c0332a6a0c5ba), [`43ca8f2`](https://github.com/mastra-ai/mastra/commit/43ca8f2c7334851cc7b4d3d2f037d8784bfbdd5f), [`2ca67cc`](https://github.com/mastra-ai/mastra/commit/2ca67cc3bb1f6a617353fdcab197d9efebe60d6f), [`9e67002`](https://github.com/mastra-ai/mastra/commit/9e67002b52c9be19936c420a489dbee9c5fd6a78), [`35edc49`](https://github.com/mastra-ai/mastra/commit/35edc49ac0556db609189641d6341e76771b81fc)]:
2220
+ - @mastra/core@1.0.0-beta.5
2221
+
2222
+ ## 1.0.0-beta.4
2223
+
2224
+ ### Patch Changes
2225
+
2226
+ - Network handler now accesses thread and resource parameters from the nested memory object instead of directly from request body. ([#10294](https://github.com/mastra-ai/mastra/pull/10294))
2227
+
2228
+ - Updated dependencies [[`352a5d6`](https://github.com/mastra-ai/mastra/commit/352a5d625cfe09849b21e8f52a24c9f0366759d5), [`a0a5b4b`](https://github.com/mastra-ai/mastra/commit/a0a5b4bbebe6c701ebbadf744873aa0d5ca01371), [`69ea758`](https://github.com/mastra-ai/mastra/commit/69ea758358edd7117f191c2e69c8bb5fc79e7a1a), [`993ad98`](https://github.com/mastra-ai/mastra/commit/993ad98d7ad3bebda9ecef5fec5c94349a0d04bc), [`3ff2c17`](https://github.com/mastra-ai/mastra/commit/3ff2c17a58e312fad5ea37377262c12d92ca0908)]:
2229
+ - @mastra/core@1.0.0-beta.4
2230
+
2231
+ ## 1.0.0-beta.3
2232
+
2233
+ ### Patch Changes
2234
+
2235
+ - Fix semantic search endpoint to return results in the correct format. Also fix the delete messages endpoint to properly normalize ids in the expected format. ([#10032](https://github.com/mastra-ai/mastra/pull/10032))
2236
+
2237
+ - Updated dependencies [[`2319326`](https://github.com/mastra-ai/mastra/commit/2319326f8c64e503a09bbcf14be2dd65405445e0), [`d629361`](https://github.com/mastra-ai/mastra/commit/d629361a60f6565b5bfb11976fdaf7308af858e2), [`08c31c1`](https://github.com/mastra-ai/mastra/commit/08c31c188ebccd598acaf55e888b6397d01f7eae), [`fd3d338`](https://github.com/mastra-ai/mastra/commit/fd3d338a2c362174ed5b383f1f011ad9fb0302aa), [`c30400a`](https://github.com/mastra-ai/mastra/commit/c30400a49b994b1b97256fe785eb6c906fc2b232), [`69e0a87`](https://github.com/mastra-ai/mastra/commit/69e0a878896a2da9494945d86e056a5f8f05b851), [`01f8878`](https://github.com/mastra-ai/mastra/commit/01f88783de25e4de048c1c8aace43e26373c6ea5), [`4c77209`](https://github.com/mastra-ai/mastra/commit/4c77209e6c11678808b365d545845918c40045c8), [`d827d08`](https://github.com/mastra-ai/mastra/commit/d827d0808ffe1f3553a84e975806cc989b9735dd), [`23c10a1`](https://github.com/mastra-ai/mastra/commit/23c10a1efdd9a693c405511ab2dc8a1236603162), [`676ccc7`](https://github.com/mastra-ai/mastra/commit/676ccc7fe92468d2d45d39c31a87825c89fd1ea0), [`c10398d`](https://github.com/mastra-ai/mastra/commit/c10398d5b88f1d4af556f4267ff06f1d11e89179), [`00c2387`](https://github.com/mastra-ai/mastra/commit/00c2387f5f04a365316f851e58666ac43f8c4edf), [`ad6250d`](https://github.com/mastra-ai/mastra/commit/ad6250dbdaad927e29f74a27b83f6c468b50a705), [`3a73998`](https://github.com/mastra-ai/mastra/commit/3a73998fa4ebeb7f3dc9301afe78095fc63e7999), [`e16d553`](https://github.com/mastra-ai/mastra/commit/e16d55338403c7553531cc568125c63d53653dff), [`4d59f58`](https://github.com/mastra-ai/mastra/commit/4d59f58de2d90d6e2810a19d4518e38ddddb9038), [`e1bb9c9`](https://github.com/mastra-ai/mastra/commit/e1bb9c94b4eb68b019ae275981be3feb769b5365), [`351a11f`](https://github.com/mastra-ai/mastra/commit/351a11fcaf2ed1008977fa9b9a489fc422e51cd4)]:
2238
+ - @mastra/core@1.0.0-beta.3
2239
+
2240
+ ## 1.0.0-beta.2
2241
+
2242
+ ### Patch Changes
2243
+
2244
+ - Updated dependencies [[`465ac05`](https://github.com/mastra-ai/mastra/commit/465ac0526a91d175542091c675181f1a96c98c46)]:
2245
+ - @mastra/core@1.0.0-beta.2
2246
+
2247
+ ## 1.0.0-beta.1
2248
+
2249
+ ### Patch Changes
2250
+
2251
+ - Updated dependencies [[`910db9e`](https://github.com/mastra-ai/mastra/commit/910db9e0312888495eb5617b567f247d03303814), [`e7266a2`](https://github.com/mastra-ai/mastra/commit/e7266a278db02035c97a5e9cd9d1669a6b7a535d)]:
2252
+ - @mastra/core@1.0.0-beta.1
2253
+
2254
+ ## 1.0.0-beta.0
2255
+
2256
+ ### Major Changes
2257
+
2258
+ - Moving scorers under the eval domain, api method consistency, prebuilt evals, scorers require ids. ([#9589](https://github.com/mastra-ai/mastra/pull/9589))
2259
+
2260
+ - Every Mastra primitive (agent, MCPServer, workflow, tool, processor, scorer, and vector) now has a get, list, and add method associated with it. Each primitive also now requires an id to be set. ([#9675](https://github.com/mastra-ai/mastra/pull/9675))
2261
+
2262
+ Primitives that are added to other primitives are also automatically added to the Mastra instance
2263
+
2264
+ - Update handlers to use `listWorkflowRuns` instead of `getWorkflowRuns`. Fix type names from `StoragelistThreadsByResourceIdInput/Output` to `StorageListThreadsByResourceIdInput/Output`. ([#9507](https://github.com/mastra-ai/mastra/pull/9507))
2265
+
2266
+ - **BREAKING:** Remove `getMessagesPaginated()` and add `perPage: false` support ([#9670](https://github.com/mastra-ai/mastra/pull/9670))
2267
+
2268
+ Removes deprecated `getMessagesPaginated()` method. The `listMessages()` API and score handlers now support `perPage: false` to fetch all records without pagination limits.
2269
+
2270
+ **Storage changes:**
2271
+ - `StoragePagination.perPage` type changed from `number` to `number | false`
2272
+ - All storage implementations support `perPage: false`:
2273
+ - Memory: `listMessages()`
2274
+ - Scores: `listScoresBySpan()`, `listScoresByRunId()`, `listScoresByExecutionId()`
2275
+ - HTTP query parser accepts `"false"` string (e.g., `?perPage=false`)
2276
+
2277
+ **Memory changes:**
2278
+ - `memory.query()` parameter type changed from `StorageGetMessagesArg` to `StorageListMessagesInput`
2279
+ - Uses flat parameters (`page`, `perPage`, `include`, `filter`, `vectorSearchString`) instead of `selectBy` object
2280
+
2281
+ **Stricter validation:**
2282
+ - `listMessages()` requires non-empty, non-whitespace `threadId` (throws error instead of returning empty results)
2283
+
2284
+ **Migration:**
2285
+
2286
+ ```typescript
2287
+ // Storage/Memory: Replace getMessagesPaginated with listMessages
2288
+ - storage.getMessagesPaginated({ threadId, selectBy: { pagination: { page: 0, perPage: 20 } } })
2289
+ + storage.listMessages({ threadId, page: 0, perPage: 20 })
2290
+ + storage.listMessages({ threadId, page: 0, perPage: false }) // Fetch all
2291
+
2292
+ // Memory: Replace selectBy with flat parameters
2293
+ - memory.query({ threadId, selectBy: { last: 20, include: [...] } })
2294
+ + memory.query({ threadId, perPage: 20, include: [...] })
2295
+
2296
+ // Client SDK
2297
+ - thread.getMessagesPaginated({ selectBy: { pagination: { page: 0 } } })
2298
+ + thread.listMessages({ page: 0, perPage: 20 })
2299
+ ```
2300
+
2301
+ - # Major Changes ([#9695](https://github.com/mastra-ai/mastra/pull/9695))
2302
+
2303
+ ## Storage Layer
2304
+
2305
+ ### BREAKING: Removed `storage.getMessages()`
2306
+
2307
+ The `getMessages()` method has been removed from all storage implementations. Use `listMessages()` instead, which provides pagination support.
2308
+
2309
+ **Migration:**
2310
+
2311
+ ```typescript
2312
+ // Before
2313
+ const messages = await storage.getMessages({ threadId: 'thread-1' });
2314
+
2315
+ // After
2316
+ const result = await storage.listMessages({
2317
+ threadId: 'thread-1',
2318
+ page: 0,
2319
+ perPage: 50,
2320
+ });
2321
+ const messages = result.messages; // Access messages array
2322
+ console.log(result.total); // Total count
2323
+ console.log(result.hasMore); // Whether more pages exist
2324
+ ```
2325
+
2326
+ ### Message ordering default
2327
+
2328
+ `listMessages()` defaults to ASC (oldest first) ordering by `createdAt`, matching the previous `getMessages()` behavior.
2329
+
2330
+ **To use DESC ordering (newest first):**
2331
+
2332
+ ```typescript
2333
+ const result = await storage.listMessages({
2334
+ threadId: 'thread-1',
2335
+ orderBy: { field: 'createdAt', direction: 'DESC' },
2336
+ });
2337
+ ```
2338
+
2339
+ ## Client SDK
2340
+
2341
+ ### BREAKING: Renamed `client.getThreadMessages()` → `client.listThreadMessages()`
2342
+
2343
+ **Migration:**
2344
+
2345
+ ```typescript
2346
+ // Before
2347
+ const response = await client.getThreadMessages(threadId, { agentId });
2348
+
2349
+ // After
2350
+ const response = await client.listThreadMessages(threadId, { agentId });
2351
+ ```
2352
+
2353
+ The response format remains the same.
2354
+
2355
+ ## Type Changes
2356
+
2357
+ ### BREAKING: Removed `StorageGetMessagesArg` type
2358
+
2359
+ Use `StorageListMessagesInput` instead:
2360
+
2361
+ ```typescript
2362
+ // Before
2363
+ import type { StorageGetMessagesArg } from '@mastra/core';
2364
+
2365
+ // After
2366
+ import type { StorageListMessagesInput } from '@mastra/core';
2367
+ ```
2368
+
2369
+ - Bump minimum required Node.js version to 22.13.0 ([#9706](https://github.com/mastra-ai/mastra/pull/9706))
2370
+
2371
+ - Replace `getThreadsByResourceIdPaginated` with `listThreadsByResourceId` across memory handlers. Update client SDK to use `listThreads()` with `offset`/`limit` parameters instead of deprecated `getMemoryThreads()`. Consolidate `/api/memory/threads` routes to single paginated endpoint. ([#9508](https://github.com/mastra-ai/mastra/pull/9508))
2372
+
2373
+ - This simplifies the Memory API by removing the confusing rememberMessages method and renaming query to recall for better clarity. ([#9701](https://github.com/mastra-ai/mastra/pull/9701))
2374
+
2375
+ The rememberMessages method name implied it might persist data when it was actually just retrieving messages, same as query. Having two methods that did essentially the same thing was unnecessary.
2376
+
2377
+ Before:
2378
+
2379
+ ```typescript
2380
+ // Two methods that did the same thing
2381
+ memory.rememberMessages({ threadId, resourceId, config, vectorMessageSearch });
2382
+ memory.query({ threadId, resourceId, perPage, vectorSearchString });
2383
+ ```
2384
+
2385
+ After:
2386
+
2387
+ ```typescript
2388
+ // Single unified method with clear purpose
2389
+ memory.recall({ threadId, resourceId, perPage, vectorMessageSearch, threadConfig });
2390
+ ```
2391
+
2392
+ All usages have been updated across the codebase including tests. The agent now calls recall directly with the appropriate parameters.
2393
+
2394
+ - Rename RuntimeContext to RequestContext ([#9511](https://github.com/mastra-ai/mastra/pull/9511))
2395
+
2396
+ - Rename `defaultVNextStreamOptions` to `defaultOptions`. Add "Legacy" suffix to v1 option properties and methods (`defaultGenerateOptions` → `defaultGenerateOptionsLegacy`, `defaultStreamOptions` → `defaultStreamOptionsLegacy`). ([#9535](https://github.com/mastra-ai/mastra/pull/9535))
2397
+
2398
+ - Remove `getThreadsByResourceId` and `getThreadsByResourceIdPaginated` methods from storage interfaces in favor of `listThreadsByResourceId`. The new method uses `offset`/`limit` pagination and a nested `orderBy` object structure (`{ field, direction }`). ([#9536](https://github.com/mastra-ai/mastra/pull/9536))
2399
+
2400
+ - Renamed a bunch of observability/tracing-related things to drop the AI prefix. ([#9744](https://github.com/mastra-ai/mastra/pull/9744))
2401
+
2402
+ - **Breaking Change**: Remove legacy v1 watch events and consolidate on v2 implementation. ([#9252](https://github.com/mastra-ai/mastra/pull/9252))
2403
+
2404
+ This change simplifies the workflow watching API by removing the legacy v1 event system and promoting v2 as the standard (renamed to just `watch`).
2405
+
2406
+ ### What's Changed
2407
+ - Removed legacy v1 watch event handlers and types
2408
+ - Renamed `watch-v2` to `watch` throughout the codebase
2409
+ - Removed `.watch()` method from client-js SDK (`Workflow` and `AgentBuilder` classes)
2410
+ - Removed `/watch` HTTP endpoints from server and deployer
2411
+ - Removed `WorkflowWatchResult` and v1 `WatchEvent` types
2412
+
2413
+ - **BREAKING CHANGE**: Pagination APIs now use `page`/`perPage` instead of `offset`/`limit` ([#9592](https://github.com/mastra-ai/mastra/pull/9592))
2414
+
2415
+ All storage and memory pagination APIs have been updated to use `page` (0-indexed) and `perPage` instead of `offset` and `limit`, aligning with standard REST API patterns.
2416
+
2417
+ **Affected APIs:**
2418
+ - `Memory.listThreadsByResourceId()`
2419
+ - `Memory.listMessages()`
2420
+ - `Storage.listWorkflowRuns()`
2421
+
2422
+ **Migration:**
2423
+
2424
+ ```typescript
2425
+ // Before
2426
+ await memory.listThreadsByResourceId({
2427
+ resourceId: 'user-123',
2428
+ offset: 20,
2429
+ limit: 10,
2430
+ });
2431
+
2432
+ // After
2433
+ await memory.listThreadsByResourceId({
2434
+ resourceId: 'user-123',
2435
+ page: 2, // page = Math.floor(offset / limit)
2436
+ perPage: 10,
2437
+ });
2438
+
2439
+ // Before
2440
+ await memory.listMessages({
2441
+ threadId: 'thread-456',
2442
+ offset: 20,
2443
+ limit: 10,
2444
+ });
2445
+
2446
+ // After
2447
+ await memory.listMessages({
2448
+ threadId: 'thread-456',
2449
+ page: 2,
2450
+ perPage: 10,
2451
+ });
2452
+
2453
+ // Before
2454
+ await storage.listWorkflowRuns({
2455
+ workflowName: 'my-workflow',
2456
+ offset: 20,
2457
+ limit: 10,
2458
+ });
2459
+
2460
+ // After
2461
+ await storage.listWorkflowRuns({
2462
+ workflowName: 'my-workflow',
2463
+ page: 2,
2464
+ perPage: 10,
2465
+ });
2466
+ ```
2467
+
2468
+ **Additional improvements:**
2469
+ - Added validation for negative `page` values in all storage implementations
2470
+ - Improved `perPage` validation to handle edge cases (negative values, `0`, `false`)
2471
+ - Added reusable query parser utilities for consistent validation in handlers
2472
+
2473
+ - Changing getAgents -> listAgents, getTools -> listTools, getWorkflows -> listWorkflows ([#9495](https://github.com/mastra-ai/mastra/pull/9495))
2474
+
2475
+ - Removed old tracing code based on OpenTelemetry ([#9237](https://github.com/mastra-ai/mastra/pull/9237))
2476
+
2477
+ - Remove deprecated vector prompts and cohere provider from code ([#9596](https://github.com/mastra-ai/mastra/pull/9596))
2478
+
2479
+ - Mark as stable ([`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc))
2480
+
2481
+ - Enforcing id required on Processor primitive ([#9591](https://github.com/mastra-ai/mastra/pull/9591))
2482
+
2483
+ - Renamed `MastraMessageV2` to `MastraDBMessage` ([#9255](https://github.com/mastra-ai/mastra/pull/9255))
2484
+ Made the return format of all methods that return db messages consistent. It's always `{ messages: MastraDBMessage[] }` now, and messages can be converted after that using `@mastra/ai-sdk/ui`'s `toAISdkV4/5Messages()` function
2485
+
2486
+ - moved ai-tracing code into @mastra/observability ([#9661](https://github.com/mastra-ai/mastra/pull/9661))
2487
+
2488
+ - Remove legacy evals from Mastra ([#9491](https://github.com/mastra-ai/mastra/pull/9491))
2489
+
2490
+ ### Minor Changes
2491
+
2492
+ - Update peer dependencies to match core package version bump (1.0.0) ([#9237](https://github.com/mastra-ai/mastra/pull/9237))
2493
+
2494
+ - **BREAKING CHANGE**: Memory scope defaults changed from 'thread' to 'resource' ([#8983](https://github.com/mastra-ai/mastra/pull/8983))
2495
+
2496
+ Both `workingMemory.scope` and `semanticRecall.scope` now default to `'resource'` instead of `'thread'`. This means:
2497
+ - Working memory persists across all conversations for the same user/resource
2498
+ - Semantic recall searches across all threads for the same user/resource
2499
+
2500
+ **Migration**: To maintain the previous thread-scoped behavior, explicitly set `scope: 'thread'`:
2501
+
2502
+ ```typescript
2503
+ memory: new Memory({
2504
+ storage,
2505
+ workingMemory: {
2506
+ enabled: true,
2507
+ scope: 'thread', // Explicitly set for thread-scoped behavior
2508
+ },
2509
+ semanticRecall: {
2510
+ scope: 'thread', // Explicitly set for thread-scoped behavior
2511
+ },
2512
+ }),
2513
+ ```
2514
+
2515
+ See the [migration guide](https://mastra.ai/docs/guides/migrations/memory-scope-defaults) for more details.
2516
+
2517
+ Also fixed issues where playground semantic recall search could show missing or incorrect results in certain cases.
2518
+
2519
+ - Update peer dependencies to match core package version bump (1.0.0) ([#9495](https://github.com/mastra-ai/mastra/pull/9495))
2520
+
2521
+ - Update peer dependencies to match core package version bump (0.22.1) ([#8649](https://github.com/mastra-ai/mastra/pull/8649))
2522
+
2523
+ - Add observeStream support for agent-builder template installation ([#9372](https://github.com/mastra-ai/mastra/pull/9372))
2524
+ - Add observeStream, observeStreamVNext, observeStreamLegacy, and resumeStream methods to agent-builder client SDK
2525
+ - Add corresponding server handlers and deployer routes for observe streaming
2526
+ - Add tracingOptions parameter to existing agent-builder handlers for parity with workflows
2527
+ - Update template installation processor to support both legacy and VNext streaming event formats
2528
+
2529
+ - Update peer dependencies to match core package version bump (0.22.0) ([#8983](https://github.com/mastra-ai/mastra/pull/8983))
2530
+
2531
+ - Update peer dependencies to match core package version bump (1.0.0) ([#9491](https://github.com/mastra-ai/mastra/pull/9491))
2532
+
2533
+ ### Patch Changes
2534
+
2535
+ - Make step optional in all resume APIs ([#9454](https://github.com/mastra-ai/mastra/pull/9454))
2536
+
2537
+ - Add agent id to the list agent ([#9770](https://github.com/mastra-ai/mastra/pull/9770))
2538
+
2539
+ - Update tool execution signature ([#9587](https://github.com/mastra-ai/mastra/pull/9587))
2540
+
2541
+ Consolidated the 3 different execution contexts to one
2542
+
2543
+ ```typescript
2544
+ // before depending on the context the tool was executed in
2545
+ tool.execute({ context: data });
2546
+ tool.execute({ context: { inputData: data } });
2547
+ tool.execute(data);
2548
+
2549
+ // now, for all contexts
2550
+ tool.execute(data, context);
2551
+ ```
2552
+
2553
+ **Before:**
2554
+
2555
+ ```typescript
2556
+ inputSchema: z.object({ something: z.string() }),
2557
+ execute: async ({ context, tracingContext, runId, ... }) => {
2558
+ return doSomething(context.string);
2559
+ }
2560
+ ```
2561
+
2562
+ **After:**
2563
+
2564
+ ```typescript
2565
+ inputSchema: z.object({ something: z.string() }),
2566
+ execute: async (inputData, context) => {
2567
+ const { agent, mcp, workflow, ...sharedContext } = context
2568
+
2569
+ // context that only an agent would get like toolCallId, messages, suspend, resume, etc
2570
+ if (agent) {
2571
+ doSomething(inputData.something, agent)
2572
+ // context that only a workflow would get like runId, state, suspend, resume, etc
2573
+ } else if (workflow) {
2574
+ doSomething(inputData.something, workflow)
2575
+ // context that only a workflow would get like "extra", "elicitation"
2576
+ } else if (mcp) {
2577
+ doSomething(inputData.something, mcp)
2578
+ } else {
2579
+ // Running a tool in no execution context
2580
+ return doSomething(inputData.something);
2581
+ }
2582
+ }
2583
+ ```
2584
+
2585
+ - Add the description field to listAgents ([#9672](https://github.com/mastra-ai/mastra/pull/9672))
2586
+
2587
+ - Fix the link issue in observability ([#9764](https://github.com/mastra-ai/mastra/pull/9764))
2588
+
2589
+ - Add tool call approval ([#8649](https://github.com/mastra-ai/mastra/pull/8649))
2590
+
2591
+ - Fix scorers listing filtring ([#9801](https://github.com/mastra-ai/mastra/pull/9801))
2592
+
2593
+ - Fixes issue where clicking the reset button in the model picker would fail to restore the original LanguageModelV2 (or any other types) object that was passed during agent construction. ([#9481](https://github.com/mastra-ai/mastra/pull/9481))
2594
+
2595
+ - Update peer dependencies to match core package version bump (1.0.0) ([#9489](https://github.com/mastra-ai/mastra/pull/9489))
2596
+
2597
+ - Fix undefined runtimeContext using memory from playground ([#9328](https://github.com/mastra-ai/mastra/pull/9328))
2598
+
2599
+ - Make step optional in resumeStreamVNext API ([#9453](https://github.com/mastra-ai/mastra/pull/9453))
2600
+
2601
+ - Remove `waitForEvent` from workflows. `waitForEvent` is now removed, please use suspend & resume flow instead. See https://mastra.ai/en/docs/workflows/suspend-and-resume for more details on suspend & resume flow. ([#9214](https://github.com/mastra-ai/mastra/pull/9214))
2602
+
2603
+ - Use memory mock in server tests ([#9486](https://github.com/mastra-ai/mastra/pull/9486))
2604
+
2605
+ - Remove format from stream/generate ([#9577](https://github.com/mastra-ai/mastra/pull/9577))
2606
+
2607
+ - Updated dependencies [[`39c9743`](https://github.com/mastra-ai/mastra/commit/39c97432d084294f8ba85fbf3ef28098ff21459e), [`f743dbb`](https://github.com/mastra-ai/mastra/commit/f743dbb8b40d1627b5c10c0e6fc154f4ebb6e394), [`fec5129`](https://github.com/mastra-ai/mastra/commit/fec5129de7fc64423ea03661a56cef31dc747a0d), [`0491e7c`](https://github.com/mastra-ai/mastra/commit/0491e7c9b714cb0ba22187ee062147ec2dd7c712), [`f6f4903`](https://github.com/mastra-ai/mastra/commit/f6f4903397314f73362061dc5a3e8e7c61ea34aa), [`0e8ed46`](https://github.com/mastra-ai/mastra/commit/0e8ed467c54d6901a6a365f270ec15d6faadb36c), [`6c049d9`](https://github.com/mastra-ai/mastra/commit/6c049d94063fdcbd5b81c4912a2bf82a92c9cc0b), [`2f897df`](https://github.com/mastra-ai/mastra/commit/2f897df208508f46f51b7625e5dd20c37f93e0e3), [`3443770`](https://github.com/mastra-ai/mastra/commit/3443770662df8eb24c9df3589b2792d78cfcb811), [`f0a07e0`](https://github.com/mastra-ai/mastra/commit/f0a07e0111b3307c5fabfa4094c5c2cfb734fbe6), [`aaa40e7`](https://github.com/mastra-ai/mastra/commit/aaa40e788628b319baa8e889407d11ad626547fa), [`1521d71`](https://github.com/mastra-ai/mastra/commit/1521d716e5daedc74690c983fbd961123c56756b), [`9e1911d`](https://github.com/mastra-ai/mastra/commit/9e1911db2b4db85e0e768c3f15e0d61e319869f6), [`ebac155`](https://github.com/mastra-ai/mastra/commit/ebac15564a590117db7078233f927a7e28a85106), [`dd1c38d`](https://github.com/mastra-ai/mastra/commit/dd1c38d1b75f1b695c27b40d8d9d6ed00d5e0f6f), [`5948e6a`](https://github.com/mastra-ai/mastra/commit/5948e6a5146c83666ba3f294b2be576c82a513fb), [`8940859`](https://github.com/mastra-ai/mastra/commit/89408593658199b4ad67f7b65e888f344e64a442), [`e629310`](https://github.com/mastra-ai/mastra/commit/e629310f1a73fa236d49ec7a1d1cceb6229dc7cc), [`4c6b492`](https://github.com/mastra-ai/mastra/commit/4c6b492c4dd591c6a592520c1f6855d6e936d71f), [`dff01d8`](https://github.com/mastra-ai/mastra/commit/dff01d81ce1f4e4087cfac20fa868e6db138dd14), [`9d819d5`](https://github.com/mastra-ai/mastra/commit/9d819d54b61481639f4008e4694791bddf187edd), [`71c8d6c`](https://github.com/mastra-ai/mastra/commit/71c8d6c161253207b2b9588bdadb7eed604f7253), [`6179a9b`](https://github.com/mastra-ai/mastra/commit/6179a9ba36ffac326de3cc3c43cdc8028d37c251), [`00f4921`](https://github.com/mastra-ai/mastra/commit/00f4921dd2c91a1e5446799599ef7116a8214a1a), [`ca8041c`](https://github.com/mastra-ai/mastra/commit/ca8041cce0379fda22ed293a565bcb5b6ddca68a), [`7051bf3`](https://github.com/mastra-ai/mastra/commit/7051bf38b3b122a069008f861f7bfc004a6d9f6e), [`a8f1494`](https://github.com/mastra-ai/mastra/commit/a8f1494f4bbdc2770bcf327d4c7d869e332183f1), [`0793497`](https://github.com/mastra-ai/mastra/commit/079349753620c40246ffd673e3f9d7d9820beff3), [`5df9cce`](https://github.com/mastra-ai/mastra/commit/5df9cce1a753438413f64c11eeef8f845745c2a8), [`a854ede`](https://github.com/mastra-ai/mastra/commit/a854ede62bf5ac0945a624ac48913dd69c73aabf), [`c576fc0`](https://github.com/mastra-ai/mastra/commit/c576fc0b100b2085afded91a37c97a0ea0ec09c7), [`3defc80`](https://github.com/mastra-ai/mastra/commit/3defc80cf2b88a1b7fc1cc4ddcb91e982a614609), [`16153fe`](https://github.com/mastra-ai/mastra/commit/16153fe7eb13c99401f48e6ca32707c965ee28b9), [`9f4a683`](https://github.com/mastra-ai/mastra/commit/9f4a6833e88b52574665c028fd5508ad5c2f6004), [`bc94344`](https://github.com/mastra-ai/mastra/commit/bc943444a1342d8a662151b7bce1df7dae32f59c), [`57d157f`](https://github.com/mastra-ai/mastra/commit/57d157f0b163a95c3e6c9eae31bdb11d1bfc64f9), [`903f67d`](https://github.com/mastra-ai/mastra/commit/903f67d184504a273893818c02b961f5423a79ad), [`2a90c55`](https://github.com/mastra-ai/mastra/commit/2a90c55a86a9210697d5adaab5ee94584b079adc), [`eb09742`](https://github.com/mastra-ai/mastra/commit/eb09742197f66c4c38154c3beec78313e69760b2), [`96d35f6`](https://github.com/mastra-ai/mastra/commit/96d35f61376bc2b1bf148648a2c1985bd51bef55), [`5cbe88a`](https://github.com/mastra-ai/mastra/commit/5cbe88aefbd9f933bca669fd371ea36bf939ac6d), [`a1bd7b8`](https://github.com/mastra-ai/mastra/commit/a1bd7b8571db16b94eb01588f451a74758c96d65), [`d78b38d`](https://github.com/mastra-ai/mastra/commit/d78b38d898fce285260d3bbb4befade54331617f), [`0633100`](https://github.com/mastra-ai/mastra/commit/0633100a911ad22f5256471bdf753da21c104742), [`c710c16`](https://github.com/mastra-ai/mastra/commit/c710c1652dccfdc4111c8412bca7a6bb1d48b441), [`354ad0b`](https://github.com/mastra-ai/mastra/commit/354ad0b7b1b8183ac567f236a884fc7ede6d7138), [`cfae733`](https://github.com/mastra-ai/mastra/commit/cfae73394f4920635e6c919c8e95ff9a0788e2e5), [`e3dfda7`](https://github.com/mastra-ai/mastra/commit/e3dfda7b11bf3b8c4bb55637028befb5f387fc74), [`844ea5d`](https://github.com/mastra-ai/mastra/commit/844ea5dc0c248961e7bf73629ae7dcff503e853c), [`398fde3`](https://github.com/mastra-ai/mastra/commit/398fde3f39e707cda79372cdae8f9870e3b57c8d), [`f0f8f12`](https://github.com/mastra-ai/mastra/commit/f0f8f125c308f2d0fd36942ef652fd852df7522f), [`0d7618b`](https://github.com/mastra-ai/mastra/commit/0d7618bc650bf2800934b243eca5648f4aeed9c2), [`7b763e5`](https://github.com/mastra-ai/mastra/commit/7b763e52fc3eaf699c2a99f2adf418dd46e4e9a5), [`d36cfbb`](https://github.com/mastra-ai/mastra/commit/d36cfbbb6565ba5f827883cc9bb648eb14befdc1), [`3697853`](https://github.com/mastra-ai/mastra/commit/3697853deeb72017d90e0f38a93c1e29221aeca0), [`b2e45ec`](https://github.com/mastra-ai/mastra/commit/b2e45eca727a8db01a81ba93f1a5219c7183c839), [`d6d49f7`](https://github.com/mastra-ai/mastra/commit/d6d49f7b8714fa19a52ff9c7cf7fb7e73751901e), [`a534e95`](https://github.com/mastra-ai/mastra/commit/a534e9591f83b3cc1ebff99c67edf4cda7bf81d3), [`9d0e7fe`](https://github.com/mastra-ai/mastra/commit/9d0e7feca8ed98de959f53476ee1456073673348), [`53d927c`](https://github.com/mastra-ai/mastra/commit/53d927cc6f03bff33655b7e2b788da445a08731d), [`3f2faf2`](https://github.com/mastra-ai/mastra/commit/3f2faf2e2d685d6c053cc5af1bf9fedf267b2ce5), [`22f64bc`](https://github.com/mastra-ai/mastra/commit/22f64bc1d37149480b58bf2fefe35b79a1e3e7d5), [`83d5942`](https://github.com/mastra-ai/mastra/commit/83d5942669ce7bba4a6ca4fd4da697a10eb5ebdc), [`b7959e6`](https://github.com/mastra-ai/mastra/commit/b7959e6e25a46b480f9ea2217c4c6c588c423791), [`bda6370`](https://github.com/mastra-ai/mastra/commit/bda637009360649aaf579919e7873e33553c273e), [`d7acd8e`](https://github.com/mastra-ai/mastra/commit/d7acd8e987b5d7eff4fd98b0906c17c06a2e83d5), [`c7f1f7d`](https://github.com/mastra-ai/mastra/commit/c7f1f7d24f61f247f018cc2d1f33bf63212959a7), [`0bddc6d`](https://github.com/mastra-ai/mastra/commit/0bddc6d8dbd6f6008c0cba2e4960a2da75a55af1), [`735d8c1`](https://github.com/mastra-ai/mastra/commit/735d8c1c0d19fbc09e6f8b66cf41bc7655993838), [`acf322e`](https://github.com/mastra-ai/mastra/commit/acf322e0f1fd0189684cf529d91c694bea918a45), [`c942802`](https://github.com/mastra-ai/mastra/commit/c942802a477a925b01859a7b8688d4355715caaa), [`a0c8c1b`](https://github.com/mastra-ai/mastra/commit/a0c8c1b87d4fee252aebda73e8637fbe01d761c9), [`cc34739`](https://github.com/mastra-ai/mastra/commit/cc34739c34b6266a91bea561119240a7acf47887), [`c218bd3`](https://github.com/mastra-ai/mastra/commit/c218bd3759e32423735b04843a09404572631014), [`2c4438b`](https://github.com/mastra-ai/mastra/commit/2c4438b87817ab7eed818c7990fef010475af1a3), [`2b8893c`](https://github.com/mastra-ai/mastra/commit/2b8893cb108ef9acb72ee7835cd625610d2c1a4a), [`8e5c75b`](https://github.com/mastra-ai/mastra/commit/8e5c75bdb1d08a42d45309a4c72def4b6890230f), [`e59e0d3`](https://github.com/mastra-ai/mastra/commit/e59e0d32afb5fcf2c9f3c00c8f81f6c21d3a63fa), [`fa8409b`](https://github.com/mastra-ai/mastra/commit/fa8409bc39cfd8ba6643b9db5269b90b22e2a2f7), [`173c535`](https://github.com/mastra-ai/mastra/commit/173c535c0645b0da404fe09f003778f0b0d4e019)]:
2608
+ - @mastra/core@1.0.0-beta.0
2609
+
2610
+ ## 0.22.2
2611
+
2612
+ ### Patch Changes
2613
+
2614
+ - Updated dependencies [[`2b031e2`](https://github.com/mastra-ai/mastra/commit/2b031e25ca10cd3e4d63e6a27f909cba26d91405)]:
2615
+ - @mastra/core@0.22.2
2616
+
2617
+ ## 0.22.2-alpha.0
2618
+
2619
+ ### Patch Changes
2620
+
2621
+ - Updated dependencies [[`2b031e2`](https://github.com/mastra-ai/mastra/commit/2b031e25ca10cd3e4d63e6a27f909cba26d91405)]:
2622
+ - @mastra/core@0.22.2-alpha.0
2623
+
2624
+ ## 0.22.1
2625
+
2626
+ ### Patch Changes
2627
+
2628
+ - Get agent registered on a parent agent via API ([#9106](https://github.com/mastra-ai/mastra/pull/9106))
2629
+
2630
+ - Updated dependencies []:
2631
+ - @mastra/core@0.22.1
2632
+
2633
+ ## 0.22.1-alpha.0
2634
+
2635
+ ### Patch Changes
2636
+
2637
+ - Get agent registered on a parent agent via API ([#9106](https://github.com/mastra-ai/mastra/pull/9106))
2638
+
2639
+ - Updated dependencies []:
2640
+ - @mastra/core@0.22.1-alpha.0
2641
+
2642
+ ## 0.22.0
2643
+
2644
+ ### Minor Changes
2645
+
2646
+ - Consolidate streamVNext logic into stream, move old stream function into streamLegacy ([#9092](https://github.com/mastra-ai/mastra/pull/9092))
2647
+
2648
+ - Update peer dependencies to match core package version bump (0.21.2) ([#9038](https://github.com/mastra-ai/mastra/pull/9038))
2649
+
2650
+ - Update peer dependencies to match core package version bump (0.22.0) ([#9092](https://github.com/mastra-ai/mastra/pull/9092))
2651
+
2652
+ - Update peer dependencies to match core package version bump (0.21.2) ([#9021](https://github.com/mastra-ai/mastra/pull/9021))
2653
+
2654
+ ### Patch Changes
2655
+
2656
+ - Updated `watch` and `watchAsync` methods to use proper function overloads instead of generic conditional types, ensuring compatibility with the base Run class signatures. ([#9048](https://github.com/mastra-ai/mastra/pull/9048))
2657
+
2658
+ - Generate a title for Agent.network() threads ([#8853](https://github.com/mastra-ai/mastra/pull/8853))
2659
+
2660
+ - Fix custom metadata preservation in UIMessages when loading threads. The `getMessagesHandler` now converts `messagesV2` (V2 format with metadata) instead of `messages` (V1 format without metadata) to AIV5.UI format. Also updates the abstract `MastraMemory.query()` return type to include `messagesV2` for proper type safety. ([#9029](https://github.com/mastra-ai/mastra/pull/9029))
2661
+
2662
+ - Fix provider tools for popular providers and add support for anthropic/claude skills. ([#9038](https://github.com/mastra-ai/mastra/pull/9038))
2663
+
2664
+ - Show agent tool output better in playground ([#9021](https://github.com/mastra-ai/mastra/pull/9021))
2665
+
2666
+ - Update peerdeps to 0.23.0-0 ([#9043](https://github.com/mastra-ai/mastra/pull/9043))
2667
+
2668
+ - Updated dependencies [[`c67ca32`](https://github.com/mastra-ai/mastra/commit/c67ca32e3c2cf69bfc146580770c720220ca44ac), [`efb5ed9`](https://github.com/mastra-ai/mastra/commit/efb5ed946ae7f410bc68c9430beb4b010afd25ec), [`dbc9e12`](https://github.com/mastra-ai/mastra/commit/dbc9e1216ba575ba59ead4afb727a01215f7de4f), [`99e41b9`](https://github.com/mastra-ai/mastra/commit/99e41b94957cdd25137d3ac12e94e8b21aa01b68), [`c28833c`](https://github.com/mastra-ai/mastra/commit/c28833c5b6d8e10eeffd7f7d39129d53b8bca240), [`8ea07b4`](https://github.com/mastra-ai/mastra/commit/8ea07b4bdc73e4218437dbb6dcb0f4b23e745a44), [`ba201b8`](https://github.com/mastra-ai/mastra/commit/ba201b8f8feac4c72350f2dbd52c13c7297ba7b0), [`f053e89`](https://github.com/mastra-ai/mastra/commit/f053e89160dbd0bd3333fc3492f68231b5c7c349), [`4fc4136`](https://github.com/mastra-ai/mastra/commit/4fc413652866a8d2240694fddb2562e9edbb70df), [`b78e04d`](https://github.com/mastra-ai/mastra/commit/b78e04d935a16ecb1e59c5c96e564903527edddd), [`d10baf5`](https://github.com/mastra-ai/mastra/commit/d10baf5a3c924f2a6654e23a3e318ed03f189b76), [`038c55a`](https://github.com/mastra-ai/mastra/commit/038c55a7090fc1b1513a966386d3072617f836ac), [`182f045`](https://github.com/mastra-ai/mastra/commit/182f0458f25bd70aa774e64fd923c8a483eddbf1), [`9a1a485`](https://github.com/mastra-ai/mastra/commit/9a1a4859b855e37239f652bf14b1ecd1029b8c4e), [`9257233`](https://github.com/mastra-ai/mastra/commit/9257233c4ffce09b2bedc2a9adbd70d7a83fa8e2), [`7620d2b`](https://github.com/mastra-ai/mastra/commit/7620d2bddeb4fae4c3c0a0b4e672969795fca11a), [`b2365f0`](https://github.com/mastra-ai/mastra/commit/b2365f038dd4c5f06400428b224af963f399ad50), [`0f1a4c9`](https://github.com/mastra-ai/mastra/commit/0f1a4c984fb4b104b2f0b63ba18c9fa77f567700), [`9029ba3`](https://github.com/mastra-ai/mastra/commit/9029ba34459c8859fed4c6b73efd8e2d0021e7ba), [`426cc56`](https://github.com/mastra-ai/mastra/commit/426cc561c85ae76a112ded2385532a91f9f9f074), [`00931fb`](https://github.com/mastra-ai/mastra/commit/00931fb1a21aa42c4fbc20c2c40dd62466b8fc8f), [`e473bfe`](https://github.com/mastra-ai/mastra/commit/e473bfe416c0b8e876973c2b6a6f13c394b7a93f), [`b78e04d`](https://github.com/mastra-ai/mastra/commit/b78e04d935a16ecb1e59c5c96e564903527edddd), [`2db6160`](https://github.com/mastra-ai/mastra/commit/2db6160e2022ff8827c15d30157e684683b934b5), [`8aeea37`](https://github.com/mastra-ai/mastra/commit/8aeea37efdde347c635a67fed56794943b7f74ec), [`02fe153`](https://github.com/mastra-ai/mastra/commit/02fe15351d6021d214da48ec982a0e9e4150bcee), [`648e2ca`](https://github.com/mastra-ai/mastra/commit/648e2ca42da54838c6ccbdaadc6fadd808fa6b86), [`74567b3`](https://github.com/mastra-ai/mastra/commit/74567b3d237ae3915cd0bca3cf55fa0a64e4e4a4), [`b65c5e0`](https://github.com/mastra-ai/mastra/commit/b65c5e0fe6f3c390a9a8bbcf69304d972c3a4afb), [`15a1733`](https://github.com/mastra-ai/mastra/commit/15a1733074cee8bd37370e1af34cd818e89fa7ac), [`fc2a774`](https://github.com/mastra-ai/mastra/commit/fc2a77468981aaddc3e77f83f0c4ad4a4af140da), [`4e08933`](https://github.com/mastra-ai/mastra/commit/4e08933625464dfde178347af5b6278fcf34188e)]:
2669
+ - @mastra/core@0.22.0
2670
+
2671
+ ## 0.22.0-alpha.1
2672
+
2673
+ ### Minor Changes
2674
+
2675
+ - Consolidate streamVNext logic into stream, move old stream function into streamLegacy ([#9092](https://github.com/mastra-ai/mastra/pull/9092))
2676
+
2677
+ - Update peer dependencies to match core package version bump (0.21.2) ([#9038](https://github.com/mastra-ai/mastra/pull/9038))
2678
+
2679
+ - Update peer dependencies to match core package version bump (0.22.0) ([#9092](https://github.com/mastra-ai/mastra/pull/9092))
2680
+
2681
+ - Update peer dependencies to match core package version bump (0.21.2) ([#9021](https://github.com/mastra-ai/mastra/pull/9021))
2682
+
2683
+ ### Patch Changes
2684
+
2685
+ - Updated `watch` and `watchAsync` methods to use proper function overloads instead of generic conditional types, ensuring compatibility with the base Run class signatures. ([#9048](https://github.com/mastra-ai/mastra/pull/9048))
2686
+
2687
+ - Fix custom metadata preservation in UIMessages when loading threads. The `getMessagesHandler` now converts `messagesV2` (V2 format with metadata) instead of `messages` (V1 format without metadata) to AIV5.UI format. Also updates the abstract `MastraMemory.query()` return type to include `messagesV2` for proper type safety. ([#9029](https://github.com/mastra-ai/mastra/pull/9029))
2688
+
2689
+ - Fix provider tools for popular providers and add support for anthropic/claude skills. ([#9038](https://github.com/mastra-ai/mastra/pull/9038))
2690
+
2691
+ - Show agent tool output better in playground ([#9021](https://github.com/mastra-ai/mastra/pull/9021))
2692
+
2693
+ - Update peerdeps to 0.23.0-0 ([#9043](https://github.com/mastra-ai/mastra/pull/9043))
2694
+
2695
+ - Updated dependencies [[`efb5ed9`](https://github.com/mastra-ai/mastra/commit/efb5ed946ae7f410bc68c9430beb4b010afd25ec), [`8ea07b4`](https://github.com/mastra-ai/mastra/commit/8ea07b4bdc73e4218437dbb6dcb0f4b23e745a44), [`ba201b8`](https://github.com/mastra-ai/mastra/commit/ba201b8f8feac4c72350f2dbd52c13c7297ba7b0), [`4fc4136`](https://github.com/mastra-ai/mastra/commit/4fc413652866a8d2240694fddb2562e9edbb70df), [`b78e04d`](https://github.com/mastra-ai/mastra/commit/b78e04d935a16ecb1e59c5c96e564903527edddd), [`d10baf5`](https://github.com/mastra-ai/mastra/commit/d10baf5a3c924f2a6654e23a3e318ed03f189b76), [`038c55a`](https://github.com/mastra-ai/mastra/commit/038c55a7090fc1b1513a966386d3072617f836ac), [`182f045`](https://github.com/mastra-ai/mastra/commit/182f0458f25bd70aa774e64fd923c8a483eddbf1), [`7620d2b`](https://github.com/mastra-ai/mastra/commit/7620d2bddeb4fae4c3c0a0b4e672969795fca11a), [`b2365f0`](https://github.com/mastra-ai/mastra/commit/b2365f038dd4c5f06400428b224af963f399ad50), [`9029ba3`](https://github.com/mastra-ai/mastra/commit/9029ba34459c8859fed4c6b73efd8e2d0021e7ba), [`426cc56`](https://github.com/mastra-ai/mastra/commit/426cc561c85ae76a112ded2385532a91f9f9f074), [`00931fb`](https://github.com/mastra-ai/mastra/commit/00931fb1a21aa42c4fbc20c2c40dd62466b8fc8f), [`e473bfe`](https://github.com/mastra-ai/mastra/commit/e473bfe416c0b8e876973c2b6a6f13c394b7a93f), [`b78e04d`](https://github.com/mastra-ai/mastra/commit/b78e04d935a16ecb1e59c5c96e564903527edddd), [`648e2ca`](https://github.com/mastra-ai/mastra/commit/648e2ca42da54838c6ccbdaadc6fadd808fa6b86), [`b65c5e0`](https://github.com/mastra-ai/mastra/commit/b65c5e0fe6f3c390a9a8bbcf69304d972c3a4afb)]:
2696
+ - @mastra/core@0.22.0-alpha.1
2697
+
2698
+ ## 0.21.2-alpha.0
2699
+
2700
+ ### Patch Changes
2701
+
2702
+ - Generate a title for Agent.network() threads ([#8853](https://github.com/mastra-ai/mastra/pull/8853))
2703
+
2704
+ - Updated dependencies [[`c67ca32`](https://github.com/mastra-ai/mastra/commit/c67ca32e3c2cf69bfc146580770c720220ca44ac), [`dbc9e12`](https://github.com/mastra-ai/mastra/commit/dbc9e1216ba575ba59ead4afb727a01215f7de4f), [`99e41b9`](https://github.com/mastra-ai/mastra/commit/99e41b94957cdd25137d3ac12e94e8b21aa01b68), [`c28833c`](https://github.com/mastra-ai/mastra/commit/c28833c5b6d8e10eeffd7f7d39129d53b8bca240), [`f053e89`](https://github.com/mastra-ai/mastra/commit/f053e89160dbd0bd3333fc3492f68231b5c7c349), [`9a1a485`](https://github.com/mastra-ai/mastra/commit/9a1a4859b855e37239f652bf14b1ecd1029b8c4e), [`9257233`](https://github.com/mastra-ai/mastra/commit/9257233c4ffce09b2bedc2a9adbd70d7a83fa8e2), [`0f1a4c9`](https://github.com/mastra-ai/mastra/commit/0f1a4c984fb4b104b2f0b63ba18c9fa77f567700), [`2db6160`](https://github.com/mastra-ai/mastra/commit/2db6160e2022ff8827c15d30157e684683b934b5), [`8aeea37`](https://github.com/mastra-ai/mastra/commit/8aeea37efdde347c635a67fed56794943b7f74ec), [`02fe153`](https://github.com/mastra-ai/mastra/commit/02fe15351d6021d214da48ec982a0e9e4150bcee), [`74567b3`](https://github.com/mastra-ai/mastra/commit/74567b3d237ae3915cd0bca3cf55fa0a64e4e4a4), [`15a1733`](https://github.com/mastra-ai/mastra/commit/15a1733074cee8bd37370e1af34cd818e89fa7ac), [`fc2a774`](https://github.com/mastra-ai/mastra/commit/fc2a77468981aaddc3e77f83f0c4ad4a4af140da), [`4e08933`](https://github.com/mastra-ai/mastra/commit/4e08933625464dfde178347af5b6278fcf34188e)]:
2705
+ - @mastra/core@0.21.2-alpha.0
2706
+
2707
+ ## 0.21.1
2708
+
2709
+ ### Patch Changes
2710
+
2711
+ - Updated dependencies [[`ca85c93`](https://github.com/mastra-ai/mastra/commit/ca85c932b232e6ad820c811ec176d98e68c59b0a), [`a1d40f8`](https://github.com/mastra-ai/mastra/commit/a1d40f88d4ce42c4508774ad22e38ac582157af2), [`01c4a25`](https://github.com/mastra-ai/mastra/commit/01c4a2506c514d5e861c004d3d2fb3791c6391f3), [`cce8aad`](https://github.com/mastra-ai/mastra/commit/cce8aad878a0dd98e5647680f3765caba0b1701c)]:
2712
+ - @mastra/core@0.21.1
2713
+
2714
+ ## 0.21.1-alpha.0
2715
+
2716
+ ### Patch Changes
2717
+
2718
+ - Updated dependencies [[`ca85c93`](https://github.com/mastra-ai/mastra/commit/ca85c932b232e6ad820c811ec176d98e68c59b0a), [`a1d40f8`](https://github.com/mastra-ai/mastra/commit/a1d40f88d4ce42c4508774ad22e38ac582157af2), [`01c4a25`](https://github.com/mastra-ai/mastra/commit/01c4a2506c514d5e861c004d3d2fb3791c6391f3), [`cce8aad`](https://github.com/mastra-ai/mastra/commit/cce8aad878a0dd98e5647680f3765caba0b1701c)]:
2719
+ - @mastra/core@0.21.1-alpha.0
2720
+
2721
+ ## 0.21.0
2722
+
2723
+ ### Minor Changes
2724
+
2725
+ - Update structuredOutput to use response format by default with an opt in to json prompt injection. ([#8557](https://github.com/mastra-ai/mastra/pull/8557))
2726
+ Replaced internal usage of output with structuredOutput.
2727
+
2728
+ - Update peer dependencies to match core package version bump (0.21.0) ([#8557](https://github.com/mastra-ai/mastra/pull/8557))
2729
+
2730
+ ### Patch Changes
2731
+
2732
+ - Update peer dependencies to match core package version bump (0.21.0) ([#8619](https://github.com/mastra-ai/mastra/pull/8619))
2733
+
2734
+ - Include span id and trace id when running live scorers ([#8842](https://github.com/mastra-ai/mastra/pull/8842))
2735
+
2736
+ - Update peer dependencies to match core package version bump (0.21.0) ([#8626](https://github.com/mastra-ai/mastra/pull/8626))
2737
+
2738
+ - Update peer dependencies to match core package version bump (0.21.0) ([#8686](https://github.com/mastra-ai/mastra/pull/8686))
2739
+
2740
+ - Updated dependencies [[`1ed9670`](https://github.com/mastra-ai/mastra/commit/1ed9670d3ca50cb60dc2e517738c5eef3968ed27), [`b5a66b7`](https://github.com/mastra-ai/mastra/commit/b5a66b748a14fc8b3f63b04642ddb9621fbcc9e0), [`f59fc1e`](https://github.com/mastra-ai/mastra/commit/f59fc1e406b8912e692f6bff6cfd4754cc8d165c), [`158381d`](https://github.com/mastra-ai/mastra/commit/158381d39335be934b81ef8a1947bccace492c25), [`a1799bc`](https://github.com/mastra-ai/mastra/commit/a1799bcc1b5a1cdc188f2ac0165f17a1c4ac6f7b), [`6ff6094`](https://github.com/mastra-ai/mastra/commit/6ff60946f4ecfebdeef6e21d2b230c2204f2c9b8), [`fb703b9`](https://github.com/mastra-ai/mastra/commit/fb703b9634eeaff1a6eb2b5531ce0f9e8fb04727), [`37a2314`](https://github.com/mastra-ai/mastra/commit/37a23148e0e5a3b40d4f9f098b194671a8a49faf), [`7b1ef57`](https://github.com/mastra-ai/mastra/commit/7b1ef57fc071c2aa2a2e32905b18cd88719c5a39), [`05a9dee`](https://github.com/mastra-ai/mastra/commit/05a9dee3d355694d28847bfffb6289657fcf7dfa), [`e3c1077`](https://github.com/mastra-ai/mastra/commit/e3c107763aedd1643d3def5df450c235da9ff76c), [`1908ca0`](https://github.com/mastra-ai/mastra/commit/1908ca0521f90e43779cc29ab590173ca560443c), [`1bccdb3`](https://github.com/mastra-ai/mastra/commit/1bccdb33eb90cbeba2dc5ece1c2561fb774b26b6), [`5ef944a`](https://github.com/mastra-ai/mastra/commit/5ef944a3721d93105675cac2b2311432ff8cc393), [`d6b186f`](https://github.com/mastra-ai/mastra/commit/d6b186fb08f1caf1b86f73d3a5ee88fb999ca3be), [`ee68e82`](https://github.com/mastra-ai/mastra/commit/ee68e8289ea4408d29849e899bc6e78b3bd4e843), [`228228b`](https://github.com/mastra-ai/mastra/commit/228228b0b1de9291cb8887587f5cea1a8757ebad), [`ea33930`](https://github.com/mastra-ai/mastra/commit/ea339301e82d6318257720d811b043014ee44064), [`65493b3`](https://github.com/mastra-ai/mastra/commit/65493b31c36f6fdb78f9679f7e1ecf0c250aa5ee), [`a998b8f`](https://github.com/mastra-ai/mastra/commit/a998b8f858091c2ec47683e60766cf12d03001e4), [`b5a66b7`](https://github.com/mastra-ai/mastra/commit/b5a66b748a14fc8b3f63b04642ddb9621fbcc9e0), [`8a37bdd`](https://github.com/mastra-ai/mastra/commit/8a37bddb6d8614a32c5b70303d583d80c620ea61), [`135d6f2`](https://github.com/mastra-ai/mastra/commit/135d6f22a326ed1dffff858700669dff09d2c9eb)]:
2741
+ - @mastra/core@0.21.0
2742
+
2743
+ ## 0.21.0-alpha.4
2744
+
2745
+ ### Patch Changes
2746
+
2747
+ - Include span id and trace id when running live scorers ([#8842](https://github.com/mastra-ai/mastra/pull/8842))
2748
+
2749
+ - Updated dependencies [[`1908ca0`](https://github.com/mastra-ai/mastra/commit/1908ca0521f90e43779cc29ab590173ca560443c)]:
2750
+ - @mastra/core@0.21.0-alpha.4
2751
+
2752
+ ## 0.21.0-alpha.3
2753
+
2754
+ ### Patch Changes
2755
+
2756
+ - Updated dependencies [[`a1799bc`](https://github.com/mastra-ai/mastra/commit/a1799bcc1b5a1cdc188f2ac0165f17a1c4ac6f7b), [`6ff6094`](https://github.com/mastra-ai/mastra/commit/6ff60946f4ecfebdeef6e21d2b230c2204f2c9b8)]:
2757
+ - @mastra/core@0.21.0-alpha.3
2758
+
2759
+ ## 0.21.0-alpha.2
2760
+
2761
+ ### Patch Changes
2762
+
2763
+ - Updated dependencies [[`f59fc1e`](https://github.com/mastra-ai/mastra/commit/f59fc1e406b8912e692f6bff6cfd4754cc8d165c)]:
2764
+ - @mastra/core@0.21.0-alpha.2
2765
+
2766
+ ## 0.21.0-alpha.1
2767
+
2768
+ ### Patch Changes
2769
+
2770
+ - Updated dependencies [[`1ed9670`](https://github.com/mastra-ai/mastra/commit/1ed9670d3ca50cb60dc2e517738c5eef3968ed27), [`158381d`](https://github.com/mastra-ai/mastra/commit/158381d39335be934b81ef8a1947bccace492c25), [`fb703b9`](https://github.com/mastra-ai/mastra/commit/fb703b9634eeaff1a6eb2b5531ce0f9e8fb04727), [`37a2314`](https://github.com/mastra-ai/mastra/commit/37a23148e0e5a3b40d4f9f098b194671a8a49faf), [`05a9dee`](https://github.com/mastra-ai/mastra/commit/05a9dee3d355694d28847bfffb6289657fcf7dfa), [`e3c1077`](https://github.com/mastra-ai/mastra/commit/e3c107763aedd1643d3def5df450c235da9ff76c), [`1bccdb3`](https://github.com/mastra-ai/mastra/commit/1bccdb33eb90cbeba2dc5ece1c2561fb774b26b6), [`5ef944a`](https://github.com/mastra-ai/mastra/commit/5ef944a3721d93105675cac2b2311432ff8cc393), [`d6b186f`](https://github.com/mastra-ai/mastra/commit/d6b186fb08f1caf1b86f73d3a5ee88fb999ca3be), [`65493b3`](https://github.com/mastra-ai/mastra/commit/65493b31c36f6fdb78f9679f7e1ecf0c250aa5ee), [`a998b8f`](https://github.com/mastra-ai/mastra/commit/a998b8f858091c2ec47683e60766cf12d03001e4), [`8a37bdd`](https://github.com/mastra-ai/mastra/commit/8a37bddb6d8614a32c5b70303d583d80c620ea61)]:
2771
+ - @mastra/core@0.21.0-alpha.1
2772
+
2773
+ ## 0.21.0-alpha.0
4
2774
 
5
2775
  ### Minor Changes
6
2776
 
@@ -11,12 +2781,14 @@
11
2781
 
12
2782
  ### Patch Changes
13
2783
 
2784
+ - Update peer dependencies to match core package version bump (0.21.0) ([#8619](https://github.com/mastra-ai/mastra/pull/8619))
2785
+
14
2786
  - Update peer dependencies to match core package version bump (0.21.0) ([#8626](https://github.com/mastra-ai/mastra/pull/8626))
15
2787
 
16
2788
  - Update peer dependencies to match core package version bump (0.21.0) ([#8686](https://github.com/mastra-ai/mastra/pull/8686))
17
2789
 
18
- - Updated dependencies [[`b5a66b7`](https://github.com/mastra-ai/mastra/commit/b5a66b748a14fc8b3f63b04642ddb9621fbcc9e0), [`7b1ef57`](https://github.com/mastra-ai/mastra/commit/7b1ef57fc071c2aa2a2e32905b18cd88719c5a39), [`ee68e82`](https://github.com/mastra-ai/mastra/commit/ee68e8289ea4408d29849e899bc6e78b3bd4e843), [`228228b`](https://github.com/mastra-ai/mastra/commit/228228b0b1de9291cb8887587f5cea1a8757ebad), [`ea33930`](https://github.com/mastra-ai/mastra/commit/ea339301e82d6318257720d811b043014ee44064), [`b5a66b7`](https://github.com/mastra-ai/mastra/commit/b5a66b748a14fc8b3f63b04642ddb9621fbcc9e0), [`135d6f2`](https://github.com/mastra-ai/mastra/commit/135d6f22a326ed1dffff858700669dff09d2c9eb)]:
19
- - @mastra/core@0.0.0-unified-sidebar-20251010130811
2790
+ - Updated dependencies [[`b5a66b7`](https://github.com/mastra-ai/mastra/commit/b5a66b748a14fc8b3f63b04642ddb9621fbcc9e0), [`7b1ef57`](https://github.com/mastra-ai/mastra/commit/7b1ef57fc071c2aa2a2e32905b18cd88719c5a39), [`ee68e82`](https://github.com/mastra-ai/mastra/commit/ee68e8289ea4408d29849e899bc6e78b3bd4e843), [`228228b`](https://github.com/mastra-ai/mastra/commit/228228b0b1de9291cb8887587f5cea1a8757ebad), [`ea33930`](https://github.com/mastra-ai/mastra/commit/ea339301e82d6318257720d811b043014ee44064), [`b5a66b7`](https://github.com/mastra-ai/mastra/commit/b5a66b748a14fc8b3f63b04642ddb9621fbcc9e0), [`135d6f2`](https://github.com/mastra-ai/mastra/commit/135d6f22a326ed1dffff858700669dff09d2c9eb), [`59d036d`](https://github.com/mastra-ai/mastra/commit/59d036d4c2706b430b0e3f1f1e0ee853ce16ca04)]:
2791
+ - @mastra/core@0.21.0-alpha.0
20
2792
 
21
2793
  ## 0.20.2
22
2794