@mastra/server 1.58.0-alpha.0 → 1.58.0-alpha.12

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 (374) hide show
  1. package/CHANGELOG.md +246 -0
  2. package/dist/_types/@mastra_schema-compat/dist/provider-compats/anthropic.d.ts +1 -1
  3. package/dist/{a2a-CnU9zaGR.js → a2a-8C4O2dVJ.js} +41 -5
  4. package/dist/a2a-8C4O2dVJ.js.map +1 -0
  5. package/dist/{a2a-uPi5sPwb.js → a2a-B9X-RdWt.js} +863 -230
  6. package/dist/a2a-B9X-RdWt.js.map +1 -0
  7. package/dist/{a2a-DKnwIgiw.cjs → a2a-D1t2fS2L.cjs} +874 -229
  8. package/dist/a2a-D1t2fS2L.cjs.map +1 -0
  9. package/dist/{a2a-oM7aqLz4.cjs → a2a-MPoM5lzS.cjs} +41 -5
  10. package/dist/a2a-MPoM5lzS.cjs.map +1 -0
  11. package/dist/{agent-builder-BDYN3r89.cjs → agent-builder-D8JyDQ5J.cjs} +2 -2
  12. package/dist/{agent-builder-BDYN3r89.cjs.map → agent-builder-D8JyDQ5J.cjs.map} +1 -1
  13. package/dist/{agent-builder-Dqy_qumV.js → agent-builder-DNTFty1u.js} +2 -2
  14. package/dist/{agent-builder-Dqy_qumV.js.map → agent-builder-DNTFty1u.js.map} +1 -1
  15. package/dist/{agent-versions-Bsrpa_zb.js → agent-versions-CWEnD62A.js} +4 -4
  16. package/dist/{agent-versions-Bsrpa_zb.js.map → agent-versions-CWEnD62A.js.map} +1 -1
  17. package/dist/{agent-versions-CdQGF-3e.cjs → agent-versions-xeysPGel.cjs} +4 -4
  18. package/dist/{agent-versions-CdQGF-3e.cjs.map → agent-versions-xeysPGel.cjs.map} +1 -1
  19. package/dist/{agents-Dk2qoJi_.cjs → agents-0Tw3kkD_.cjs} +9 -5
  20. package/dist/agents-0Tw3kkD_.cjs.map +1 -0
  21. package/dist/{agents-CYvun9iI.js → agents-uT8ZDE4k.js} +9 -5
  22. package/dist/agents-uT8ZDE4k.js.map +1 -0
  23. package/dist/{api-schema-manifest-C5hpdIE_.js → api-schema-manifest-BLv_Z-sd.js} +3 -3
  24. package/dist/{api-schema-manifest-C5hpdIE_.js.map → api-schema-manifest-BLv_Z-sd.js.map} +1 -1
  25. package/dist/{api-schema-manifest-7-NC9Dyc.cjs → api-schema-manifest-CFLB0MBA.cjs} +3 -3
  26. package/dist/{api-schema-manifest-7-NC9Dyc.cjs.map → api-schema-manifest-CFLB0MBA.cjs.map} +1 -1
  27. package/dist/{background-tasks-DnmhLalp.js → background-tasks-Bzl2tNJq.js} +2 -2
  28. package/dist/{background-tasks-DnmhLalp.js.map → background-tasks-Bzl2tNJq.js.map} +1 -1
  29. package/dist/{background-tasks-CYgzzUnb.cjs → background-tasks-DXns62Go.cjs} +2 -2
  30. package/dist/{background-tasks-CYgzzUnb.cjs.map → background-tasks-DXns62Go.cjs.map} +1 -1
  31. package/dist/{builder-registry-BoaXBdm_.cjs → builder-registry-CTQyg5l5.cjs} +3 -3
  32. package/dist/{builder-registry-BoaXBdm_.cjs.map → builder-registry-CTQyg5l5.cjs.map} +1 -1
  33. package/dist/{builder-registry-DE5w7bNk.js → builder-registry-QAeqpQKB.js} +3 -3
  34. package/dist/{builder-registry-DE5w7bNk.js.map → builder-registry-QAeqpQKB.js.map} +1 -1
  35. package/dist/{channels-BqkOxxEk.js → channels-CPTIswT2.js} +2 -2
  36. package/dist/{channels-BqkOxxEk.js.map → channels-CPTIswT2.js.map} +1 -1
  37. package/dist/{channels-BonQBJT0.cjs → channels-FoIf30Hv.cjs} +2 -2
  38. package/dist/{channels-BonQBJT0.cjs.map → channels-FoIf30Hv.cjs.map} +1 -1
  39. package/dist/{common-CPNOpqxA.js → common-5ZZuR6wj.js} +19 -8
  40. package/dist/common-5ZZuR6wj.js.map +1 -0
  41. package/dist/{common-spbwhiWS.cjs → common-DQn8jX5T.cjs} +19 -8
  42. package/dist/common-DQn8jX5T.cjs.map +1 -0
  43. package/dist/{conversations-CebKjBfB.cjs → conversations-CcFLCCeF.cjs} +2 -2
  44. package/dist/{conversations-CebKjBfB.cjs.map → conversations-CcFLCCeF.cjs.map} +1 -1
  45. package/dist/{conversations-BDD46VBM.js → conversations-DtnawNGm.js} +2 -2
  46. package/dist/{conversations-BDD46VBM.js.map → conversations-DtnawNGm.js.map} +1 -1
  47. package/dist/{datasets-Cvix7Rms.cjs → datasets-D2JdQI44.cjs} +44 -2
  48. package/dist/datasets-D2JdQI44.cjs.map +1 -0
  49. package/dist/{datasets-dhXnHLAL.js → datasets-Dr1pCC6P.js} +39 -3
  50. package/dist/datasets-Dr1pCC6P.js.map +1 -0
  51. package/dist/{default-options-BcPyp2Gx.cjs → default-options-C9HZGjYi.cjs} +6 -3
  52. package/dist/{default-options-BcPyp2Gx.cjs.map → default-options-C9HZGjYi.cjs.map} +1 -1
  53. package/dist/{default-options-DGCDKR3I.js → default-options-C9JVjlto.js} +6 -3
  54. package/dist/{default-options-DGCDKR3I.js.map → default-options-C9JVjlto.js.map} +1 -1
  55. package/dist/{dist-DGqlUp0b.js → dist-CzzxT_L5.js} +345 -1404
  56. package/dist/dist-CzzxT_L5.js.map +1 -0
  57. package/dist/{dist-COHIL6fR.cjs → dist-TkFPtpuy.cjs} +354 -1416
  58. package/dist/dist-TkFPtpuy.cjs.map +1 -0
  59. package/dist/docs/SKILL.md +1 -1
  60. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  61. package/dist/docs/references/docs-agents-a2a.md +75 -2
  62. package/dist/docs/references/docs-server-custom-adapters.md +1 -1
  63. package/dist/docs/references/reference-server-routes.md +38 -24
  64. package/dist/{stored-workflows-OanG0TmB.js → dynamic-workflows-CQs6_anZ.js} +62 -62
  65. package/dist/dynamic-workflows-CQs6_anZ.js.map +1 -0
  66. package/dist/{stored-workflows-pCiWK305.cjs → dynamic-workflows-CrvwGZj8.cjs} +71 -71
  67. package/dist/dynamic-workflows-CrvwGZj8.cjs.map +1 -0
  68. package/dist/{editor-builder-CWTGCtNu.cjs → editor-builder-C3ZvffGu.cjs} +2 -2
  69. package/dist/{editor-builder-CWTGCtNu.cjs.map → editor-builder-C3ZvffGu.cjs.map} +1 -1
  70. package/dist/{editor-builder-Ct2nIbum.js → editor-builder-D5lhXbvj.js} +3 -3
  71. package/dist/{editor-builder-Ct2nIbum.js.map → editor-builder-D5lhXbvj.js.map} +1 -1
  72. package/dist/{editor-builder-BW4nlDcX.cjs → editor-builder-DG5-7x6V.cjs} +3 -3
  73. package/dist/{editor-builder-BW4nlDcX.cjs.map → editor-builder-DG5-7x6V.cjs.map} +1 -1
  74. package/dist/{editor-builder-fKbRRlK_.js → editor-builder-DJUxdzC8.js} +2 -2
  75. package/dist/{editor-builder-fKbRRlK_.js.map → editor-builder-DJUxdzC8.js.map} +1 -1
  76. package/dist/{logs-wBYi7UWL.cjs → logs-BDuGFqxu.cjs} +2 -2
  77. package/dist/{logs-wBYi7UWL.cjs.map → logs-BDuGFqxu.cjs.map} +1 -1
  78. package/dist/{logs-BzwWWl57.js → logs-Cz5NiwGP.js} +2 -2
  79. package/dist/{logs-BzwWWl57.js.map → logs-Cz5NiwGP.js.map} +1 -1
  80. package/dist/{mcp-DusNUBdz.cjs → mcp-Buvksst5.cjs} +2 -2
  81. package/dist/{mcp-DusNUBdz.cjs.map → mcp-Buvksst5.cjs.map} +1 -1
  82. package/dist/{mcp-client-versions-Db71zP8j.cjs → mcp-client-versions-CG7po4hq.cjs} +2 -2
  83. package/dist/{mcp-client-versions-Db71zP8j.cjs.map → mcp-client-versions-CG7po4hq.cjs.map} +1 -1
  84. package/dist/{mcp-client-versions-Dwbiav9P.js → mcp-client-versions-Co8d39A6.js} +2 -2
  85. package/dist/{mcp-client-versions-Dwbiav9P.js.map → mcp-client-versions-Co8d39A6.js.map} +1 -1
  86. package/dist/{mcp-BpC_5RhI.js → mcp-oOFVSK8L.js} +2 -2
  87. package/dist/{mcp-BpC_5RhI.js.map → mcp-oOFVSK8L.js.map} +1 -1
  88. package/dist/{memory-BjemiyZJ.js → memory-CBLqn9xl.js} +2 -2
  89. package/dist/{memory-BjemiyZJ.js.map → memory-CBLqn9xl.js.map} +1 -1
  90. package/dist/{memory-CxM2p78x.cjs → memory-D0prxytx.cjs} +2 -2
  91. package/dist/{memory-CxM2p78x.cjs.map → memory-D0prxytx.cjs.map} +1 -1
  92. package/dist/{observability-new-endpoints-YK2DjZto.js → observability-new-endpoints-6HLxLS-H.js} +2 -2
  93. package/dist/{observability-new-endpoints-YK2DjZto.js.map → observability-new-endpoints-6HLxLS-H.js.map} +1 -1
  94. package/dist/{observability-new-endpoints-Dk3oatL8.cjs → observability-new-endpoints-D4AWoyDe.cjs} +2 -2
  95. package/dist/{observability-new-endpoints-Dk3oatL8.cjs.map → observability-new-endpoints-D4AWoyDe.cjs.map} +1 -1
  96. package/dist/{probe-image-size-DYJVSL0b.cjs → probe-image-size-C2F59z8Z.cjs} +56 -1707
  97. package/dist/probe-image-size-C2F59z8Z.cjs.map +1 -0
  98. package/dist/{probe-image-size-BQgIJeY_.js → probe-image-size-mXCWYNrz.js} +22 -1673
  99. package/dist/probe-image-size-mXCWYNrz.js.map +1 -0
  100. package/dist/{prompt-block-versions-CIDwXWiC.js → prompt-block-versions-CBjHhMVK.js} +2 -2
  101. package/dist/{prompt-block-versions-CIDwXWiC.js.map → prompt-block-versions-CBjHhMVK.js.map} +1 -1
  102. package/dist/{prompt-block-versions-Bl3RmkTE.cjs → prompt-block-versions-Cgt_Grk2.cjs} +2 -2
  103. package/dist/{prompt-block-versions-Bl3RmkTE.cjs.map → prompt-block-versions-Cgt_Grk2.cjs.map} +1 -1
  104. package/dist/{route-builder-CgLVYL1c.cjs → route-builder-BBovb2TE.cjs} +2 -2
  105. package/dist/route-builder-BBovb2TE.cjs.map +1 -0
  106. package/dist/{route-builder-CIk5k35M.js → route-builder-CQkb7tQY.js} +2 -2
  107. package/dist/route-builder-CQkb7tQY.js.map +1 -0
  108. package/dist/{routes-hSY4wTeS.cjs → routes-CzvDlbRt.cjs} +26 -25
  109. package/dist/routes-CzvDlbRt.cjs.map +1 -0
  110. package/dist/{routes-CRoTKPvQ.js → routes-D_-O6SS5.js} +27 -26
  111. package/dist/routes-D_-O6SS5.js.map +1 -0
  112. package/dist/{schedules-CK3-IE0h.cjs → schedules-CfNABln2.cjs} +2 -2
  113. package/dist/{schedules-CK3-IE0h.cjs.map → schedules-CfNABln2.cjs.map} +1 -1
  114. package/dist/{schedules-qxFoU-Tb.js → schedules-DSkYO_Nl.js} +2 -2
  115. package/dist/{schedules-qxFoU-Tb.js.map → schedules-DSkYO_Nl.js.map} +1 -1
  116. package/dist/{schema-Bv9OdW1f-BY6u3u8K.cjs → schema-Bv9OdW1f-CHHI-NTr.cjs} +2 -76
  117. package/dist/schema-Bv9OdW1f-CHHI-NTr.cjs.map +1 -0
  118. package/dist/{schema-Bv9OdW1f-CIOfv-3w.js → schema-Bv9OdW1f-DLSJSqQv.js} +2 -76
  119. package/dist/schema-Bv9OdW1f-DLSJSqQv.js.map +1 -0
  120. package/dist/schema-CGeYTFwm.js +2 -0
  121. package/dist/schema-DkBbires.cjs +1 -0
  122. package/dist/{scorer-versions-DpmAJKsY.cjs → scorer-versions-CYXtxMTU.cjs} +3 -3
  123. package/dist/{scorer-versions-DpmAJKsY.cjs.map → scorer-versions-CYXtxMTU.cjs.map} +1 -1
  124. package/dist/{scorer-versions-BA8N488c.js → scorer-versions-CdVjOtQO.js} +3 -3
  125. package/dist/{scorer-versions-BA8N488c.js.map → scorer-versions-CdVjOtQO.js.map} +1 -1
  126. package/dist/{scores-DU0o86rP.js → scores-B1IdMcDj.js} +2 -2
  127. package/dist/{scores-DU0o86rP.js.map → scores-B1IdMcDj.js.map} +1 -1
  128. package/dist/{scores-Bm_sUKY1.cjs → scores-C_Au9jSw.cjs} +2 -2
  129. package/dist/{scores-Bm_sUKY1.cjs.map → scores-C_Au9jSw.cjs.map} +1 -1
  130. package/dist/server/a2a/store.cjs +30 -2
  131. package/dist/server/a2a/store.cjs.map +1 -1
  132. package/dist/server/a2a/store.d.ts +21 -2
  133. package/dist/server/a2a/store.d.ts.map +1 -1
  134. package/dist/server/a2a/store.js +30 -3
  135. package/dist/server/a2a/store.js.map +1 -1
  136. package/dist/server/a2a/task-state.d.ts +4 -0
  137. package/dist/server/a2a/task-state.d.ts.map +1 -0
  138. package/dist/server/a2a/tasks.d.ts +1 -1
  139. package/dist/server/a2a/tasks.d.ts.map +1 -1
  140. package/dist/server/handlers/a2a.cjs +3 -1
  141. package/dist/server/handlers/a2a.d.ts +155 -12
  142. package/dist/server/handlers/a2a.d.ts.map +1 -1
  143. package/dist/server/handlers/a2a.js +2 -2
  144. package/dist/server/handlers/agent-builder.cjs +7 -7
  145. package/dist/server/handlers/agent-builder.d.ts +4 -4
  146. package/dist/server/handlers/agent-builder.js +7 -7
  147. package/dist/server/handlers/agent-controller.cjs +86 -17
  148. package/dist/server/handlers/agent-controller.cjs.map +1 -1
  149. package/dist/server/handlers/agent-controller.d.ts +4 -3
  150. package/dist/server/handlers/agent-controller.d.ts.map +1 -1
  151. package/dist/server/handlers/agent-controller.js +86 -17
  152. package/dist/server/handlers/agent-controller.js.map +1 -1
  153. package/dist/server/handlers/agent-versions.cjs +10 -4
  154. package/dist/server/handlers/agent-versions.cjs.map +1 -1
  155. package/dist/server/handlers/agent-versions.d.ts +88 -16
  156. package/dist/server/handlers/agent-versions.d.ts.map +1 -1
  157. package/dist/server/handlers/agent-versions.js +10 -4
  158. package/dist/server/handlers/agent-versions.js.map +1 -1
  159. package/dist/server/handlers/agents.cjs +6 -6
  160. package/dist/server/handlers/agents.d.ts +50 -8
  161. package/dist/server/handlers/agents.d.ts.map +1 -1
  162. package/dist/server/handlers/agents.js +6 -6
  163. package/dist/server/handlers/auth.cjs +1 -1
  164. package/dist/server/handlers/auth.js +1 -1
  165. package/dist/server/handlers/background-tasks.cjs +1 -1
  166. package/dist/server/handlers/background-tasks.js +1 -1
  167. package/dist/server/handlers/builder-registry.cjs +1 -1
  168. package/dist/server/handlers/builder-registry.js +1 -1
  169. package/dist/server/handlers/channels.cjs +1 -1
  170. package/dist/server/handlers/channels.js +1 -1
  171. package/dist/server/handlers/conversations.cjs +2 -2
  172. package/dist/server/handlers/conversations.js +2 -2
  173. package/dist/server/handlers/datasets.cjs +28 -13
  174. package/dist/server/handlers/datasets.cjs.map +1 -1
  175. package/dist/server/handlers/datasets.d.ts +136 -0
  176. package/dist/server/handlers/datasets.d.ts.map +1 -1
  177. package/dist/server/handlers/datasets.js +28 -13
  178. package/dist/server/handlers/datasets.js.map +1 -1
  179. package/dist/server/handlers/dynamic-workflows.cjs +6 -0
  180. package/dist/server/handlers/{stored-workflows.d.ts → dynamic-workflows.d.ts} +14 -14
  181. package/dist/server/handlers/{stored-workflows.d.ts.map → dynamic-workflows.d.ts.map} +1 -1
  182. package/dist/server/handlers/dynamic-workflows.js +2 -0
  183. package/dist/server/handlers/editor-builder.cjs +1 -1
  184. package/dist/server/handlers/editor-builder.js +1 -1
  185. package/dist/server/handlers/favorites-enrichment.cjs +1 -1
  186. package/dist/server/handlers/favorites-enrichment.js +1 -1
  187. package/dist/server/handlers/logs.cjs +3 -3
  188. package/dist/server/handlers/logs.js +3 -3
  189. package/dist/server/handlers/mcp-client-versions.cjs +3 -3
  190. package/dist/server/handlers/mcp-client-versions.js +3 -3
  191. package/dist/server/handlers/mcp.cjs +2 -2
  192. package/dist/server/handlers/mcp.js +2 -2
  193. package/dist/server/handlers/memory.cjs +2 -2
  194. package/dist/server/handlers/memory.js +2 -2
  195. package/dist/server/handlers/observability-new-endpoints.cjs +1 -1
  196. package/dist/server/handlers/observability-new-endpoints.js +1 -1
  197. package/dist/server/handlers/observability-shared.cjs +1 -1
  198. package/dist/server/handlers/observability-shared.js +1 -1
  199. package/dist/server/handlers/observability.cjs +22 -11
  200. package/dist/server/handlers/observability.cjs.map +1 -1
  201. package/dist/server/handlers/observability.d.ts.map +1 -1
  202. package/dist/server/handlers/observability.js +22 -11
  203. package/dist/server/handlers/observability.js.map +1 -1
  204. package/dist/server/handlers/processor-providers.cjs +1 -1
  205. package/dist/server/handlers/processor-providers.js +1 -1
  206. package/dist/server/handlers/processors.cjs +1 -1
  207. package/dist/server/handlers/processors.js +1 -1
  208. package/dist/server/handlers/prompt-block-versions.cjs +3 -3
  209. package/dist/server/handlers/prompt-block-versions.js +3 -3
  210. package/dist/server/handlers/responses.cjs +1 -1
  211. package/dist/server/handlers/responses.js +1 -1
  212. package/dist/server/handlers/schedules.cjs +1 -1
  213. package/dist/server/handlers/schedules.js +1 -1
  214. package/dist/server/handlers/scorer-versions.cjs +3 -3
  215. package/dist/server/handlers/scorer-versions.js +3 -3
  216. package/dist/server/handlers/scores.cjs +3 -3
  217. package/dist/server/handlers/scores.js +3 -3
  218. package/dist/server/handlers/stored-agent-favorites.cjs +4 -4
  219. package/dist/server/handlers/stored-agent-favorites.js +4 -4
  220. package/dist/server/handlers/stored-agents.cjs +21 -6
  221. package/dist/server/handlers/stored-agents.cjs.map +1 -1
  222. package/dist/server/handlers/stored-agents.d.ts +100 -16
  223. package/dist/server/handlers/stored-agents.d.ts.map +1 -1
  224. package/dist/server/handlers/stored-agents.js +21 -6
  225. package/dist/server/handlers/stored-agents.js.map +1 -1
  226. package/dist/server/handlers/stored-mcp-clients.cjs +4 -4
  227. package/dist/server/handlers/stored-mcp-clients.js +4 -4
  228. package/dist/server/handlers/stored-prompt-blocks.cjs +4 -4
  229. package/dist/server/handlers/stored-prompt-blocks.js +4 -4
  230. package/dist/server/handlers/stored-scorers.cjs +4 -4
  231. package/dist/server/handlers/stored-scorers.js +4 -4
  232. package/dist/server/handlers/stored-skill-favorites.cjs +4 -4
  233. package/dist/server/handlers/stored-skill-favorites.js +4 -4
  234. package/dist/server/handlers/stored-skills.cjs +4 -4
  235. package/dist/server/handlers/stored-skills.js +4 -4
  236. package/dist/server/handlers/stored-workspaces.cjs +3 -3
  237. package/dist/server/handlers/stored-workspaces.js +3 -3
  238. package/dist/server/handlers/system.cjs +2 -2
  239. package/dist/server/handlers/system.js +2 -2
  240. package/dist/server/handlers/tool-providers.cjs +1 -1
  241. package/dist/server/handlers/tool-providers.js +1 -1
  242. package/dist/server/handlers/tools.cjs +6 -6
  243. package/dist/server/handlers/tools.js +6 -6
  244. package/dist/server/handlers/validate-agent-instructions.cjs +52 -0
  245. package/dist/server/handlers/validate-agent-instructions.cjs.map +1 -0
  246. package/dist/server/handlers/validate-agent-instructions.d.ts +13 -0
  247. package/dist/server/handlers/validate-agent-instructions.d.ts.map +1 -0
  248. package/dist/server/handlers/validate-agent-instructions.js +51 -0
  249. package/dist/server/handlers/validate-agent-instructions.js.map +1 -0
  250. package/dist/server/handlers/vector.cjs +2 -2
  251. package/dist/server/handlers/vector.js +2 -2
  252. package/dist/server/handlers/workflows.cjs +161 -27
  253. package/dist/server/handlers/workflows.cjs.map +1 -1
  254. package/dist/server/handlers/workflows.d.ts +13 -4
  255. package/dist/server/handlers/workflows.d.ts.map +1 -1
  256. package/dist/server/handlers/workflows.js +161 -29
  257. package/dist/server/handlers/workflows.js.map +1 -1
  258. package/dist/server/handlers/workspace.cjs +1 -1
  259. package/dist/server/handlers/workspace.js +1 -1
  260. package/dist/server/handlers.cjs +8 -8
  261. package/dist/server/handlers.d.ts +1 -1
  262. package/dist/server/handlers.d.ts.map +1 -1
  263. package/dist/server/handlers.js +3 -3
  264. package/dist/server/schemas/a2a.d.ts +70 -6
  265. package/dist/server/schemas/a2a.d.ts.map +1 -1
  266. package/dist/server/schemas/agent-versions.d.ts +70 -10
  267. package/dist/server/schemas/agent-versions.d.ts.map +1 -1
  268. package/dist/server/schemas/agents.d.ts +23 -3
  269. package/dist/server/schemas/agents.d.ts.map +1 -1
  270. package/dist/server/schemas/common.d.ts.map +1 -1
  271. package/dist/server/schemas/datasets.d.ts +53 -0
  272. package/dist/server/schemas/datasets.d.ts.map +1 -1
  273. package/dist/server/schemas/default-options.d.ts +7 -1
  274. package/dist/server/schemas/default-options.d.ts.map +1 -1
  275. package/dist/server/schemas/{stored-workflows.d.ts → dynamic-workflows.d.ts} +13 -13
  276. package/dist/server/schemas/dynamic-workflows.d.ts.map +1 -0
  277. package/dist/server/schemas/index.cjs +26 -25
  278. package/dist/server/schemas/index.js +26 -26
  279. package/dist/server/schemas/stored-agents.d.ts +140 -20
  280. package/dist/server/schemas/stored-agents.d.ts.map +1 -1
  281. package/dist/server/schemas/workflows.d.ts +10 -2
  282. package/dist/server/schemas/workflows.d.ts.map +1 -1
  283. package/dist/server/server-adapter/index.cjs +44 -3
  284. package/dist/server/server-adapter/index.cjs.map +1 -1
  285. package/dist/server/server-adapter/index.d.ts +37 -0
  286. package/dist/server/server-adapter/index.d.ts.map +1 -1
  287. package/dist/server/server-adapter/index.js +45 -5
  288. package/dist/server/server-adapter/index.js.map +1 -1
  289. package/dist/server/server-adapter/routes/a2a.d.ts +116 -8
  290. package/dist/server/server-adapter/routes/a2a.d.ts.map +1 -1
  291. package/dist/server/server-adapter/routes/agent-builder.d.ts +4 -4
  292. package/dist/server/server-adapter/routes/datasets.d.ts +136 -0
  293. package/dist/server/server-adapter/routes/datasets.d.ts.map +1 -1
  294. package/dist/server/server-adapter/routes/dynamic-workflows.d.ts +16 -0
  295. package/dist/server/server-adapter/routes/dynamic-workflows.d.ts.map +1 -0
  296. package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
  297. package/dist/server/server-adapter/routes/workflows.d.ts +11 -5
  298. package/dist/server/server-adapter/routes/workflows.d.ts.map +1 -1
  299. package/dist/{stored-agents-D8ar1Pn7.js → stored-agents-BRBZM-Xl.js} +4 -4
  300. package/dist/{stored-agents-D8ar1Pn7.js.map → stored-agents-BRBZM-Xl.js.map} +1 -1
  301. package/dist/{stored-agents-DKd89v5z.cjs → stored-agents-CPxfYRH9.cjs} +4 -4
  302. package/dist/{stored-agents-DKd89v5z.cjs.map → stored-agents-CPxfYRH9.cjs.map} +1 -1
  303. package/dist/{stored-mcp-clients-CwA5_nZ9.cjs → stored-mcp-clients-CJJPe_09.cjs} +2 -2
  304. package/dist/{stored-mcp-clients-CwA5_nZ9.cjs.map → stored-mcp-clients-CJJPe_09.cjs.map} +1 -1
  305. package/dist/{stored-mcp-clients-DJ3E4g8-.js → stored-mcp-clients-CoCfZRhw.js} +2 -2
  306. package/dist/{stored-mcp-clients-DJ3E4g8-.js.map → stored-mcp-clients-CoCfZRhw.js.map} +1 -1
  307. package/dist/{stored-prompt-blocks-BlqcqnEX.js → stored-prompt-blocks-DcmkZaCm.js} +2 -2
  308. package/dist/{stored-prompt-blocks-BlqcqnEX.js.map → stored-prompt-blocks-DcmkZaCm.js.map} +1 -1
  309. package/dist/{stored-prompt-blocks-DR_Wts8r.cjs → stored-prompt-blocks-XI4frgZv.cjs} +2 -2
  310. package/dist/{stored-prompt-blocks-DR_Wts8r.cjs.map → stored-prompt-blocks-XI4frgZv.cjs.map} +1 -1
  311. package/dist/{stored-scorers-BIKumDRO.js → stored-scorers-B__LF0Cy.js} +3 -3
  312. package/dist/{stored-scorers-BIKumDRO.js.map → stored-scorers-B__LF0Cy.js.map} +1 -1
  313. package/dist/{stored-scorers-_dqFdh-G.cjs → stored-scorers-Cml7jPJv.cjs} +3 -3
  314. package/dist/{stored-scorers-_dqFdh-G.cjs.map → stored-scorers-Cml7jPJv.cjs.map} +1 -1
  315. package/dist/{stored-skills-CgwoCNNV.cjs → stored-skills-BqNK0ssS.cjs} +2 -2
  316. package/dist/{stored-skills-CgwoCNNV.cjs.map → stored-skills-BqNK0ssS.cjs.map} +1 -1
  317. package/dist/{stored-skills-B_aAMn5W.js → stored-skills-JTWbMybs.js} +2 -2
  318. package/dist/{stored-skills-B_aAMn5W.js.map → stored-skills-JTWbMybs.js.map} +1 -1
  319. package/dist/{stored-workspaces-Dib-ClOP.js → stored-workspaces-6PYE4Y3m.js} +2 -2
  320. package/dist/{stored-workspaces-Dib-ClOP.js.map → stored-workspaces-6PYE4Y3m.js.map} +1 -1
  321. package/dist/{stored-workspaces-CbJQaFuP.cjs → stored-workspaces-Dl8B20LD.cjs} +2 -2
  322. package/dist/{stored-workspaces-CbJQaFuP.cjs.map → stored-workspaces-Dl8B20LD.cjs.map} +1 -1
  323. package/dist/sync-BHatXKfg.cjs +1679 -0
  324. package/dist/sync-BHatXKfg.cjs.map +1 -0
  325. package/dist/sync-djJ8Lmds.js +1656 -0
  326. package/dist/sync-djJ8Lmds.js.map +1 -0
  327. package/dist/{utils-wESuBh27.cjs → utils-Bna_JCkb.cjs} +3 -3
  328. package/dist/{utils-wESuBh27.cjs.map → utils-Bna_JCkb.cjs.map} +1 -1
  329. package/dist/{utils-BUK03Frl.js → utils-QXKhjIm6.js} +3 -3
  330. package/dist/{utils-BUK03Frl.js.map → utils-QXKhjIm6.js.map} +1 -1
  331. package/dist/{vectors-CZY34X8R.js → vectors-Ck7Qu6yz.js} +2 -2
  332. package/dist/{vectors-CZY34X8R.js.map → vectors-Ck7Qu6yz.js.map} +1 -1
  333. package/dist/{vectors-Cj-SPxOy.cjs → vectors-D6uZn2f1.cjs} +2 -2
  334. package/dist/{vectors-Cj-SPxOy.cjs.map → vectors-D6uZn2f1.cjs.map} +1 -1
  335. package/dist/{version-common-CEBQY7M8.cjs → version-common-AtNRQ5xH.cjs} +2 -2
  336. package/dist/{version-common-CEBQY7M8.cjs.map → version-common-AtNRQ5xH.cjs.map} +1 -1
  337. package/dist/{version-common-Cmd1f9JX.js → version-common-CudZ_WuW.js} +2 -2
  338. package/dist/{version-common-Cmd1f9JX.js.map → version-common-CudZ_WuW.js.map} +1 -1
  339. package/dist/{workflows-XfiENvkF.cjs → workflows--79xhOOb.cjs} +14 -3
  340. package/dist/workflows--79xhOOb.cjs.map +1 -0
  341. package/dist/{workflows-DPW6FrY0.js → workflows-B2ooCiwN.js} +9 -4
  342. package/dist/workflows-B2ooCiwN.js.map +1 -0
  343. package/package.json +8 -8
  344. package/dist/a2a-CnU9zaGR.js.map +0 -1
  345. package/dist/a2a-DKnwIgiw.cjs.map +0 -1
  346. package/dist/a2a-oM7aqLz4.cjs.map +0 -1
  347. package/dist/a2a-uPi5sPwb.js.map +0 -1
  348. package/dist/agents-CYvun9iI.js.map +0 -1
  349. package/dist/agents-Dk2qoJi_.cjs.map +0 -1
  350. package/dist/common-CPNOpqxA.js.map +0 -1
  351. package/dist/common-spbwhiWS.cjs.map +0 -1
  352. package/dist/datasets-Cvix7Rms.cjs.map +0 -1
  353. package/dist/datasets-dhXnHLAL.js.map +0 -1
  354. package/dist/dist-COHIL6fR.cjs.map +0 -1
  355. package/dist/dist-DGqlUp0b.js.map +0 -1
  356. package/dist/probe-image-size-BQgIJeY_.js.map +0 -1
  357. package/dist/probe-image-size-DYJVSL0b.cjs.map +0 -1
  358. package/dist/route-builder-CIk5k35M.js.map +0 -1
  359. package/dist/route-builder-CgLVYL1c.cjs.map +0 -1
  360. package/dist/routes-CRoTKPvQ.js.map +0 -1
  361. package/dist/routes-hSY4wTeS.cjs.map +0 -1
  362. package/dist/schema-B8-5YCsA.js +0 -2
  363. package/dist/schema-BieM1qrc.cjs +0 -1
  364. package/dist/schema-Bv9OdW1f-BY6u3u8K.cjs.map +0 -1
  365. package/dist/schema-Bv9OdW1f-CIOfv-3w.js.map +0 -1
  366. package/dist/server/handlers/stored-workflows.cjs +0 -6
  367. package/dist/server/handlers/stored-workflows.js +0 -2
  368. package/dist/server/schemas/stored-workflows.d.ts.map +0 -1
  369. package/dist/server/server-adapter/routes/stored-workflows.d.ts +0 -16
  370. package/dist/server/server-adapter/routes/stored-workflows.d.ts.map +0 -1
  371. package/dist/stored-workflows-OanG0TmB.js.map +0 -1
  372. package/dist/stored-workflows-pCiWK305.cjs.map +0 -1
  373. package/dist/workflows-DPW6FrY0.js.map +0 -1
  374. package/dist/workflows-XfiENvkF.cjs.map +0 -1
@@ -3,7 +3,7 @@ name: mastra-server
3
3
  description: Documentation for @mastra/server. Use when working with @mastra/server APIs, configuration, or implementation.
4
4
  metadata:
5
5
  package: "@mastra/server"
6
- version: "1.58.0-alpha.0"
6
+ version: "1.58.0-alpha.12"
7
7
  ---
8
8
 
9
9
  ## When to use
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.58.0-alpha.0",
2
+ "version": "1.58.0-alpha.12",
3
3
  "package": "@mastra/server",
4
4
  "exports": {},
5
5
  "modules": {}
@@ -2,7 +2,7 @@
2
2
 
3
3
  # A2A (Agent-to-Agent)
4
4
 
5
- Mastra supports the [Agent-to-Agent (A2A) protocol](https://a2a-protocol.org/latest/) for cross-platform multi-agent systems. Use A2A to expose Mastra agents as remote agents, consume remote A2A agents as Mastra subagents, or call A2A endpoints with the JavaScript client SDK.
5
+ Mastra supports version 0.3.0 of the [Agent-to-Agent (A2A) protocol](https://a2a-protocol.org/latest/) for cross-platform multi-agent systems. Use A2A to expose Mastra agents as remote agents, consume remote A2A agents as Mastra subagents, or call A2A endpoints with the JavaScript client SDK.
6
6
 
7
7
  A2A is an open protocol for delegating work to agents across network, framework, vendor, and language boundaries. A remote agent keeps its own tools, prompts, memory, workflows, and infrastructure private while exposing a protocol endpoint that other systems can discover and call.
8
8
 
@@ -57,6 +57,18 @@ A2A represents work as messages and tasks. Messages carry text, file, or structu
57
57
 
58
58
  Tasks are stateful units of work with IDs and lifecycle states. Clients can follow long-running work and send follow-up turns. They can also cancel work or resubscribe after a disconnect.
59
59
 
60
+ ## Protocol versions
61
+
62
+ Mastra supports A2A Protocol v0.3 and v1.0 on the same agent card and execution URLs. The `A2A-Version` request header selects the wire protocol:
63
+
64
+ - Missing, empty, or `0.3`: Uses the existing v0.3 API.
65
+ - `1.0`: Uses the v1.0 API.
66
+ - Any other value: Returns a `VersionNotSupported` protocol error.
67
+
68
+ Existing `A2AAgent` and `MastraClient.getA2A()` integrations continue to use v0.3. Use `MastraClient.getA2AV1()` for v1.0 requests. The v1 client sends `A2A-Version: 1.0` automatically and adds the `tasks/list` operation.
69
+
70
+ Import v1.0 protocol types and codecs from `@mastra/core/a2a/v1`. The existing `@mastra/core/a2a/client` export remains on v0.3.
71
+
60
72
  ## Get started
61
73
 
62
74
  A2A has two common paths in Mastra:
@@ -155,6 +167,33 @@ for await (const event of updates) {
155
167
  }
156
168
  ```
157
169
 
170
+ ### Use the v1.0 client
171
+
172
+ Use `getA2AV1()` to opt into the A2A v1.0 wire protocol. The protocol package provides codecs for creating v1 request values from JSON-shaped input:
173
+
174
+ ```typescript
175
+ import { ListTasksRequest } from '@mastra/core/a2a/v1'
176
+ import { MastraClient } from '@mastra/client-js'
177
+
178
+ const client = new MastraClient({
179
+ baseUrl: 'https://agent.example.com',
180
+ })
181
+
182
+ const a2a = client.getA2AV1('weather-agent')
183
+ const response = await a2a.listTasks(
184
+ ListTasksRequest.fromJSON({
185
+ contextId: 'customer-support',
186
+ pageSize: 20,
187
+ }),
188
+ )
189
+
190
+ for (const task of response.tasks) {
191
+ console.log(task.id, task.status)
192
+ }
193
+ ```
194
+
195
+ The v1.0 client supports `getAgentCard()`, `sendMessage()`, `sendMessageStream()`, `getTask()`, `listTasks()`, `cancelTask()`, and `resubscribeTask()`.
196
+
158
197
  ## Configure subagent calls
159
198
 
160
199
  `A2AAgent` accepts request options for authenticated or constrained environments:
@@ -176,6 +215,38 @@ const remoteWeatherAgent = new A2AAgent({
176
215
 
177
216
  You can also pass `credentials`, `fetch`, and `abortSignal` when the runtime needs custom fetch behavior or request cancellation.
178
217
 
218
+ ## Human-in-the-loop
219
+
220
+ A2A models human-in-the-loop (HITL) work with the `input-required` task state. When a task pauses for input, the client provides the missing input by sending a follow-up message with the same `taskId`, and the server continues the task.
221
+
222
+ Mastra maps its agent suspension model to this state in both directions:
223
+
224
+ - **As a server**: when an exposed agent suspends, the task transitions to `input-required`. This includes suspensions caused by [tool approval](https://mastra.ai/docs/agents/agent-approval) or a tool that calls `suspend()`. The task status message includes a text prompt and a data part with the structured `suspendPayload` and `resumeSchema`. A follow-up `message/send` or `message/stream` request with the same `taskId` resumes the suspended run with the provided input.
225
+ - **As a client**: when a remote task reaches `input-required` or `auth-required`, `A2AAgent` returns a suspended result with `finishReason: 'suspended'` and a `suspendPayload`. Calling `resumeGenerate()` or `resumeStream()` sends the input or credentials back to the remote task with the original `taskId`.
226
+
227
+ ```typescript
228
+ import { A2AAgent } from '@mastra/core/a2a'
229
+
230
+ const agent = new A2AAgent({
231
+ url: 'https://agent.example.com/api/.well-known/booking-agent/agent-card.json',
232
+ })
233
+
234
+ const result = await agent.generate('Book a flight to Paris', { runId: 'run-1' })
235
+
236
+ if (result.finishReason === 'suspended') {
237
+ // Inspect result.suspendPayload, collect input from a human,
238
+ // then resume the remote task.
239
+ const resumed = await agent.resumeGenerate({ approved: true }, { runId: 'run-1' })
240
+ console.log(resumed.text)
241
+ }
242
+ ```
243
+
244
+ Follow-up messages for an `input-required` task can carry the resume data as a structured data part, or as JSON or plain text in a text part.
245
+
246
+ When a resumed run requires additional input, the task returns to `input-required` and the flow repeats. Resuming a suspended run requires storage configured on the Mastra server so the suspended run state can be restored across requests.
247
+
248
+ > **Note:** A2A task records live in an in-memory store, so a paused task can only be resumed by the same server process that suspended it. A server restart or a horizontally scaled deployment without sticky routing loses the task record, and a follow-up message fails with a task-not-found error.
249
+
179
250
  ## Push notifications
180
251
 
181
252
  Mastra supports A2A push notifications for remote agents that advertise `capabilities.pushNotifications`. Use push notifications when a client can't keep a stream open, or when a long-running task should update a callback URL after the original request ends.
@@ -192,7 +263,9 @@ await a2a.setTaskPushNotificationConfig({
192
263
  })
193
264
  ```
194
265
 
195
- Mastra Server sends the current task snapshot to registered callbacks when the task reaches `completed`, `failed`, `canceled`, or `input-required`. Push notification delivery is best-effort. Protect callback URLs, validate notification tokens, and avoid exposing internal network targets as push notification destinations.
266
+ Mastra Server sends the current task snapshot to registered callbacks when the task reaches `completed`, `failed`, `canceled`, `rejected`, `input-required`, or `auth-required`. Push notification delivery is best-effort. Protect callback URLs, validate notification tokens, and avoid exposing internal network targets as push notification destinations.
267
+
268
+ Push notification configurations are stored in memory and must be registered again after a server restart.
196
269
 
197
270
  ## Sign and verify agent cards
198
271
 
@@ -6,7 +6,7 @@ Create a custom adapter when the prebuilt server adapters (Hono, Express, Fastif
6
6
 
7
7
  A custom adapter translates between Mastra's route definitions and your framework's routing system. You'll implement methods that register middleware, handle requests, and send responses using your framework's APIs.
8
8
 
9
- > **Info:** Use any of these prebuilt server adapters:
9
+ > **Note:** Use any of these prebuilt server adapters:
10
10
  >
11
11
  > - [@mastra/hono](https://mastra.ai/reference/server/hono-adapter)
12
12
  > - [@mastra/express](https://mastra.ai/reference/server/express-adapter)
@@ -171,30 +171,44 @@ The route returns:
171
171
 
172
172
  ## Workflows
173
173
 
174
- | Method | Path | Description |
175
- | ------ | ----------------------------------------- | ------------------------------- |
176
- | `GET` | `/api/workflows` | List all workflows |
177
- | `GET` | `/api/workflows/:workflowId` | Get workflow by ID |
178
- | `POST` | `/api/workflows/:workflowId/create-run` | Create a new workflow run |
179
- | `POST` | `/api/workflows/:workflowId/start-async` | Start workflow and await result |
180
- | `POST` | `/api/workflows/:workflowId/stream` | Stream workflow execution |
181
- | `POST` | `/api/workflows/:workflowId/resume` | Resume suspended workflow |
182
- | `POST` | `/api/workflows/:workflowId/resume-async` | Resume asynchronously |
183
- | `GET` | `/api/workflows/:workflowId/runs` | List workflow runs |
184
- | `GET` | `/api/workflows/:workflowId/runs/:runId` | Get specific run |
185
-
186
- ### Stored workflows
187
-
188
- Stored workflow definitions (beta) are workflows expressed as JSON, persisted through the `workflowDefinitions` storage domain, and live-registered on the running instance. See [Stored workflows](https://mastra.ai/docs/workflows/stored-workflows).
189
-
190
- | Method | Path | Description |
191
- | -------- | ----------------------------------------- | ------------------------------------------------------------------------------ |
192
- | `GET` | `/api/stored/workflows` | List stored workflow definitions, filterable by `status` and `authorId` |
193
- | `GET` | `/api/stored/workflows/:storedWorkflowId` | Get a stored workflow definition by ID |
194
- | `POST` | `/api/stored/workflows` | Upsert a definition (plus optional helper `dependencies`) and live-register it |
195
- | `DELETE` | `/api/stored/workflows/:storedWorkflowId` | Delete a stored definition and unregister the live workflow |
196
-
197
- On authenticated servers, the read routes require the `stored-workflows:read` permission and the write routes require `stored-workflows:write`. Registered stored workflows are executed through the ordinary `/api/workflows/:workflowId` routes above.
174
+ | Method | Path | Description |
175
+ | ------ | ----------------------------------------- | ----------------------------------------------------- |
176
+ | `GET` | `/api/workflows` | List all workflows |
177
+ | `GET` | `/api/workflows/run-counts` | Get per-workflow counts of running and suspended runs |
178
+ | `GET` | `/api/workflows/:workflowId` | Get workflow by ID |
179
+ | `POST` | `/api/workflows/:workflowId/create-run` | Create a new workflow run |
180
+ | `POST` | `/api/workflows/:workflowId/start-async` | Start workflow and await result |
181
+ | `POST` | `/api/workflows/:workflowId/stream` | Stream workflow execution |
182
+ | `POST` | `/api/workflows/:workflowId/resume` | Resume suspended workflow |
183
+ | `POST` | `/api/workflows/:workflowId/resume-async` | Resume asynchronously |
184
+ | `GET` | `/api/workflows/:workflowId/runs` | List workflow runs |
185
+ | `GET` | `/api/workflows/:workflowId/runs/:runId` | Get specific run |
186
+
187
+ ### Run counts response
188
+
189
+ The `/api/workflows/run-counts` endpoint returns counts of `running` and [`suspended`](https://mastra.ai/docs/workflows/suspend-and-resume) runs for every registered workflow. The record is keyed by the workflow's registry key from the Mastra config, and the server may cache the response for a few seconds:
190
+
191
+ ```typescript
192
+ {
193
+ [workflowRegistryKey: string]: {
194
+ running: number;
195
+ suspended: number;
196
+ };
197
+ }
198
+ ```
199
+
200
+ ### Dynamic workflows
201
+
202
+ Dynamic workflow definitions (beta) are workflows expressed as JSON, persisted through the `workflowDefinitions` storage domain, and live-registered on the running instance. See [Dynamic workflows](https://mastra.ai/docs/workflows/dynamic-workflows).
203
+
204
+ | Method | Path | Description |
205
+ | -------- | ------------------------------------------ | ------------------------------------------------------------------------------ |
206
+ | `GET` | `/api/stored/workflows` | List dynamic workflow definitions, filterable by `status` and `authorId` |
207
+ | `GET` | `/api/stored/workflows/:dynamicWorkflowId` | Get a dynamic workflow definition by ID |
208
+ | `POST` | `/api/stored/workflows` | Upsert a definition (plus optional helper `dependencies`) and live-register it |
209
+ | `DELETE` | `/api/stored/workflows/:dynamicWorkflowId` | Delete a dynamic workflow definition and unregister the live workflow |
210
+
211
+ On authenticated servers, the read routes require the `stored-workflows:read` permission and the write routes require `stored-workflows:write`. Registered dynamic workflows are executed through the ordinary `/api/workflows/:workflowId` routes above.
198
212
 
199
213
  ### Create run request body
200
214
 
@@ -1,9 +1,9 @@
1
1
  import { n as __exportAll } from "./rolldown-runtime-DuvcJU0W.js";
2
2
  import { t as HTTPException } from "./http-exception-CyfxZB6W.js";
3
- import { n as createRoute } from "./route-builder-CIk5k35M.js";
3
+ import { n as createRoute } from "./route-builder-CQkb7tQY.js";
4
4
  import { handleError } from "./server/handlers/error.js";
5
5
  import { z } from "zod/v4";
6
- //#region src/server/schemas/stored-workflows.ts
6
+ //#region src/server/schemas/dynamic-workflows.ts
7
7
  const stepOptionsSchema = z.object({
8
8
  retries: z.number().int().nonnegative().optional(),
9
9
  metadata: z.record(z.string(), z.unknown()).optional()
@@ -126,16 +126,16 @@ const graphEntrySchema = z.discriminatedUnion("type", [
126
126
  predicate: predicateSchema
127
127
  })
128
128
  ]);
129
- const storedWorkflowIdPathParams = z.object({ storedWorkflowId: z.string().describe("Unique identifier for the stored workflow definition") });
130
- const listStoredWorkflowsQuerySchema = z.object({
131
- status: z.enum(["active", "archived"]).optional().describe("Filter stored workflows by status (defaults to active when omitted by the handler)"),
132
- authorId: z.string().optional().describe("Filter stored workflows by author identifier")
129
+ const dynamicWorkflowIdPathParams = z.object({ dynamicWorkflowId: z.string().describe("Unique identifier for the dynamic workflow definition") });
130
+ const listDynamicWorkflowsQuerySchema = z.object({
131
+ status: z.enum(["active", "archived"]).optional().describe("Filter dynamic workflows by status (defaults to active when omitted by the handler)"),
132
+ authorId: z.string().optional().describe("Filter dynamic workflows by author identifier")
133
133
  });
134
134
  /**
135
135
  * One static workflow definition on the wire. Matches the input shape of
136
- * `mastra.addStoredWorkflow()`.
136
+ * `mastra.addDynamicWorkflow()`.
137
137
  */
138
- const storedWorkflowDefinitionBodySchema = z.object({
138
+ const dynamicWorkflowDefinitionBodySchema = z.object({
139
139
  id: z.string().describe("Workflow id — kebab-case, descriptive"),
140
140
  description: z.string().optional(),
141
141
  metadata: z.record(z.string(), z.unknown()).optional(),
@@ -149,11 +149,11 @@ const storedWorkflowDefinitionBodySchema = z.object({
149
149
  * Body for `POST /stored/workflows` — upsert a static workflow definition,
150
150
  * optionally together with the helper workflows it nests.
151
151
  */
152
- const upsertStoredWorkflowBodySchema = storedWorkflowDefinitionBodySchema.extend({ dependencies: z.array(storedWorkflowDefinitionBodySchema).optional().describe("Helper workflow definitions this workflow nests. Saved with it as one unit — the whole set is validated together, hydrated in derived dependency order, and rejected together, so a failed save never leaves orphaned helpers behind. Each helper becomes an ordinary stored workflow in its own right.") });
152
+ const upsertDynamicWorkflowBodySchema = dynamicWorkflowDefinitionBodySchema.extend({ dependencies: z.array(dynamicWorkflowDefinitionBodySchema).optional().describe("Helper workflow definitions this workflow nests. Saved with it as one unit — the whole set is validated together, hydrated in derived dependency order, and rejected together, so a failed save never leaves orphaned helpers behind. Each helper becomes an ordinary dynamic workflow in its own right.") });
153
153
  /**
154
- * Shape returned for any single stored workflow row.
154
+ * Shape returned for any single dynamic workflow row.
155
155
  */
156
- const storedWorkflowResponseSchema = z.object({
156
+ const dynamicWorkflowResponseSchema = z.object({
157
157
  id: z.string(),
158
158
  description: z.string().optional(),
159
159
  metadata: z.record(z.string(), z.unknown()).optional(),
@@ -168,27 +168,27 @@ const storedWorkflowResponseSchema = z.object({
168
168
  createdAt: z.union([z.date(), z.string()]),
169
169
  updatedAt: z.union([z.date(), z.string()])
170
170
  });
171
- const listStoredWorkflowsResponseSchema = z.object({
172
- workflows: z.array(storedWorkflowResponseSchema),
171
+ const listDynamicWorkflowsResponseSchema = z.object({
172
+ workflows: z.array(dynamicWorkflowResponseSchema),
173
173
  total: z.number()
174
174
  });
175
- const getStoredWorkflowResponseSchema = storedWorkflowResponseSchema;
176
- const upsertStoredWorkflowResponseSchema = z.object({
175
+ const getDynamicWorkflowResponseSchema = dynamicWorkflowResponseSchema;
176
+ const upsertDynamicWorkflowResponseSchema = z.object({
177
177
  ok: z.literal(true),
178
178
  id: z.string(),
179
179
  dependencyIds: z.array(z.string()).optional().describe("Ids of the helper workflows saved alongside this one. Present only when dependencies were supplied.")
180
180
  });
181
- const deleteStoredWorkflowResponseSchema = z.object({
181
+ const deleteDynamicWorkflowResponseSchema = z.object({
182
182
  success: z.literal(true),
183
183
  message: z.string()
184
184
  });
185
185
  //#endregion
186
- //#region src/server/handlers/stored-workflows.ts
187
- var stored_workflows_exports = /* @__PURE__ */ __exportAll({
188
- DELETE_STORED_WORKFLOW_ROUTE: () => DELETE_STORED_WORKFLOW_ROUTE,
189
- GET_STORED_WORKFLOW_ROUTE: () => GET_STORED_WORKFLOW_ROUTE,
190
- LIST_STORED_WORKFLOWS_ROUTE: () => LIST_STORED_WORKFLOWS_ROUTE,
191
- UPSERT_STORED_WORKFLOW_ROUTE: () => UPSERT_STORED_WORKFLOW_ROUTE
186
+ //#region src/server/handlers/dynamic-workflows.ts
187
+ var dynamic_workflows_exports = /* @__PURE__ */ __exportAll({
188
+ DELETE_DYNAMIC_WORKFLOW_ROUTE: () => DELETE_DYNAMIC_WORKFLOW_ROUTE,
189
+ GET_DYNAMIC_WORKFLOW_ROUTE: () => GET_DYNAMIC_WORKFLOW_ROUTE,
190
+ LIST_DYNAMIC_WORKFLOWS_ROUTE: () => LIST_DYNAMIC_WORKFLOWS_ROUTE,
191
+ UPSERT_DYNAMIC_WORKFLOW_ROUTE: () => UPSERT_DYNAMIC_WORKFLOW_ROUTE
192
192
  });
193
193
  /**
194
194
  * GET /stored/workflows — list stored static workflow definitions.
@@ -196,15 +196,15 @@ var stored_workflows_exports = /* @__PURE__ */ __exportAll({
196
196
  * Mirrors `LIST_STORED_AGENTS_ROUTE` but without favorites/visibility/authorship
197
197
  * scoping (which the workflow-definitions domain doesn't carry in v1).
198
198
  */
199
- const LIST_STORED_WORKFLOWS_ROUTE = createRoute({
199
+ const LIST_DYNAMIC_WORKFLOWS_ROUTE = createRoute({
200
200
  method: "GET",
201
201
  path: "/stored/workflows",
202
202
  responseType: "json",
203
- queryParamSchema: listStoredWorkflowsQuerySchema,
204
- responseSchema: listStoredWorkflowsResponseSchema,
205
- summary: "List stored workflow definitions",
203
+ queryParamSchema: listDynamicWorkflowsQuerySchema,
204
+ responseSchema: listDynamicWorkflowsResponseSchema,
205
+ summary: "List dynamic workflow definitions",
206
206
  description: "Returns workflow definitions persisted to storage. Filterable by status and authorId.",
207
- tags: ["Stored Workflows"],
207
+ tags: ["Dynamic Workflows"],
208
208
  requiresAuth: true,
209
209
  requiresPermission: "stored-workflows:read",
210
210
  handler: async ({ mastra, status, authorId }) => {
@@ -222,35 +222,35 @@ const LIST_STORED_WORKFLOWS_ROUTE = createRoute({
222
222
  total: result.total
223
223
  };
224
224
  } catch (error) {
225
- return handleError(error, "Error listing stored workflows");
225
+ return handleError(error, "Error listing dynamic workflows");
226
226
  }
227
227
  }
228
228
  });
229
229
  /**
230
- * GET /stored/workflows/:storedWorkflowId — get one stored workflow.
230
+ * GET /stored/workflows/:dynamicWorkflowId — get one dynamic workflow.
231
231
  */
232
- const GET_STORED_WORKFLOW_ROUTE = createRoute({
232
+ const GET_DYNAMIC_WORKFLOW_ROUTE = createRoute({
233
233
  method: "GET",
234
- path: "/stored/workflows/:storedWorkflowId",
234
+ path: "/stored/workflows/:dynamicWorkflowId",
235
235
  responseType: "json",
236
- pathParamSchema: storedWorkflowIdPathParams,
237
- responseSchema: getStoredWorkflowResponseSchema,
238
- summary: "Get a stored workflow definition by id",
236
+ pathParamSchema: dynamicWorkflowIdPathParams,
237
+ responseSchema: getDynamicWorkflowResponseSchema,
238
+ summary: "Get a dynamic workflow definition by id",
239
239
  description: "Returns a single workflow definition persisted to storage.",
240
- tags: ["Stored Workflows"],
240
+ tags: ["Dynamic Workflows"],
241
241
  requiresAuth: true,
242
242
  requiresPermission: "stored-workflows:read",
243
- handler: async ({ mastra, storedWorkflowId }) => {
243
+ handler: async ({ mastra, dynamicWorkflowId }) => {
244
244
  try {
245
245
  const storage = mastra.getStorage();
246
246
  if (!storage) throw new HTTPException(500, { message: "Storage is not configured" });
247
247
  const store = await storage.getStore("workflowDefinitions");
248
248
  if (!store) throw new HTTPException(500, { message: "workflowDefinitions storage domain is not available" });
249
- const def = await store.get(storedWorkflowId);
250
- if (!def) throw new HTTPException(404, { message: `Stored workflow "${storedWorkflowId}" not found` });
249
+ const def = await store.get(dynamicWorkflowId);
250
+ if (!def) throw new HTTPException(404, { message: `Dynamic workflow "${dynamicWorkflowId}" not found` });
251
251
  return def;
252
252
  } catch (error) {
253
- return handleError(error, "Error getting stored workflow");
253
+ return handleError(error, "Error getting dynamic workflow");
254
254
  }
255
255
  }
256
256
  });
@@ -258,20 +258,20 @@ const GET_STORED_WORKFLOW_ROUTE = createRoute({
258
258
  * POST /stored/workflows — upsert a static workflow definition and live-register
259
259
  * it on the Mastra instance.
260
260
  *
261
- * Calls `mastra.addStoredWorkflow(def)` which persists the row + rehydrates a
261
+ * Calls `mastra.addDynamicWorkflow(def)` which persists the row + rehydrates a
262
262
  * runnable workflow + registers it via `mastra.addWorkflow(workflow, id)`.
263
263
  * After this returns, `GET /workflows/:id` and `POST /workflows/:id/run` work
264
264
  * immediately — no server restart needed.
265
265
  */
266
- const UPSERT_STORED_WORKFLOW_ROUTE = createRoute({
266
+ const UPSERT_DYNAMIC_WORKFLOW_ROUTE = createRoute({
267
267
  method: "POST",
268
268
  path: "/stored/workflows",
269
269
  responseType: "json",
270
- bodySchema: upsertStoredWorkflowBodySchema,
271
- responseSchema: upsertStoredWorkflowResponseSchema,
272
- summary: "Upsert a stored workflow definition and live-register it",
270
+ bodySchema: upsertDynamicWorkflowBodySchema,
271
+ responseSchema: upsertDynamicWorkflowResponseSchema,
272
+ summary: "Upsert a dynamic workflow definition and live-register it",
273
273
  description: "Persists a static workflow definition and live-registers it on the running Mastra instance. Idempotent — same id updates in place.",
274
- tags: ["Stored Workflows"],
274
+ tags: ["Dynamic Workflows"],
275
275
  requiresAuth: true,
276
276
  requiresPermission: "stored-workflows:write",
277
277
  handler: async ({ mastra, id, description, metadata, inputSchema, outputSchema, stateSchema, requestContextSchema, graph, dependencies }) => {
@@ -287,52 +287,52 @@ const UPSERT_STORED_WORKFLOW_ROUTE = createRoute({
287
287
  graph
288
288
  };
289
289
  const bundle = [...dependencies ?? [], def];
290
- await mastra.addStoredWorkflows(bundle);
290
+ await mastra.addDynamicWorkflows(bundle);
291
291
  return {
292
292
  ok: true,
293
293
  id: def.id,
294
294
  ...dependencies?.length ? { dependencyIds: dependencies.map((dependency) => dependency.id) } : {}
295
295
  };
296
296
  } catch (error) {
297
- return handleError(error, "Error upserting stored workflow");
297
+ return handleError(error, "Error upserting dynamic workflow");
298
298
  }
299
299
  }
300
300
  });
301
301
  /**
302
- * DELETE /stored/workflows/:storedWorkflowId — delete a stored workflow.
302
+ * DELETE /stored/workflows/:dynamicWorkflowId — delete a dynamic workflow.
303
303
  *
304
304
  * Removes the row from storage AND un-registers the live Workflow instance so
305
305
  * a subsequent POST with the same id starts from a clean slate. Idempotent.
306
306
  */
307
- const DELETE_STORED_WORKFLOW_ROUTE = createRoute({
307
+ const DELETE_DYNAMIC_WORKFLOW_ROUTE = createRoute({
308
308
  method: "DELETE",
309
- path: "/stored/workflows/:storedWorkflowId",
309
+ path: "/stored/workflows/:dynamicWorkflowId",
310
310
  responseType: "json",
311
- pathParamSchema: storedWorkflowIdPathParams,
312
- responseSchema: deleteStoredWorkflowResponseSchema,
313
- summary: "Delete a stored workflow definition",
314
- description: "Removes a stored workflow definition and unregisters the live workflow instance. Idempotent.",
315
- tags: ["Stored Workflows"],
311
+ pathParamSchema: dynamicWorkflowIdPathParams,
312
+ responseSchema: deleteDynamicWorkflowResponseSchema,
313
+ summary: "Delete a dynamic workflow definition",
314
+ description: "Removes a dynamic workflow definition and unregisters the live workflow instance. Idempotent.",
315
+ tags: ["Dynamic Workflows"],
316
316
  requiresAuth: true,
317
317
  requiresPermission: "stored-workflows:write",
318
- handler: async ({ mastra, storedWorkflowId }) => {
318
+ handler: async ({ mastra, dynamicWorkflowId }) => {
319
319
  try {
320
320
  const storage = mastra.getStorage();
321
321
  if (!storage) throw new HTTPException(500, { message: "Storage is not configured" });
322
322
  const store = await storage.getStore("workflowDefinitions");
323
323
  if (!store) throw new HTTPException(500, { message: "workflowDefinitions storage domain is not available" });
324
- await store.delete(storedWorkflowId);
325
- mastra.removeWorkflow(storedWorkflowId);
324
+ await store.delete(dynamicWorkflowId);
325
+ mastra.removeWorkflow(dynamicWorkflowId);
326
326
  return {
327
327
  success: true,
328
- message: `Workflow ${storedWorkflowId} deleted`
328
+ message: `Workflow ${dynamicWorkflowId} deleted`
329
329
  };
330
330
  } catch (error) {
331
- return handleError(error, "Error deleting stored workflow");
331
+ return handleError(error, "Error deleting dynamic workflow");
332
332
  }
333
333
  }
334
334
  });
335
335
  //#endregion
336
- export { stored_workflows_exports as a, UPSERT_STORED_WORKFLOW_ROUTE as i, GET_STORED_WORKFLOW_ROUTE as n, LIST_STORED_WORKFLOWS_ROUTE as r, DELETE_STORED_WORKFLOW_ROUTE as t };
336
+ export { dynamic_workflows_exports as a, UPSERT_DYNAMIC_WORKFLOW_ROUTE as i, GET_DYNAMIC_WORKFLOW_ROUTE as n, LIST_DYNAMIC_WORKFLOWS_ROUTE as r, DELETE_DYNAMIC_WORKFLOW_ROUTE as t };
337
337
 
338
- //# sourceMappingURL=stored-workflows-OanG0TmB.js.map
338
+ //# sourceMappingURL=dynamic-workflows-CQs6_anZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic-workflows-CQs6_anZ.js","names":[],"sources":["../src/server/schemas/dynamic-workflows.ts","../src/server/handlers/dynamic-workflows.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\n// ============================================================================\n// Serialized graph — discriminated union mirroring core's SerializedStepFlowEntry.\n// Duplicated locally rather than imported from @mastra/core/workflows because\n// this file's peer-dependency floor predates that export. Structurally\n// compatible with `Mastra.addDynamicWorkflow`'s input; the handler casts once\n// to bridge the remaining wire-vs-runtime divergences (sleepUntil.date as\n// ISO string, fluent-builder-only debug labels) that the core rehydrator\n// handles at runtime.\n// ============================================================================\n\nconst stepOptionsSchema = z\n .object({\n retries: z.number().int().nonnegative().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n })\n .optional();\n\n// ----------------------------------------------------------------------------\n// Predicate DSL — declarative condition for `conditional` / `loop` entries.\n// Mirrors `Predicate` in `@mastra/core/workflows/predicate`; duplicated\n// locally for the same peer-floor reason as the graph schema above.\n// ----------------------------------------------------------------------------\nconst literalScalar = z.union([z.string(), z.number(), z.boolean(), z.null()]);\nconst pathOrLiteral: z.ZodType = z.union([\n z.object({ path: z.string().min(1) }).strict(),\n z.object({ literal: literalScalar }).strict(),\n]);\nconst predicateSchema: z.ZodType = z.lazy(() =>\n z.union([\n z\n .object({\n op: z.enum(['eq', 'ne', 'lt', 'lte', 'gt', 'gte']),\n left: pathOrLiteral,\n right: pathOrLiteral,\n })\n .strict(),\n z\n .object({\n op: z.enum(['in', 'notIn']),\n value: pathOrLiteral,\n set: z.array(literalScalar).min(1),\n })\n .strict(),\n z.object({ op: z.enum(['exists', 'notExists']), path: z.string().min(1) }).strict(),\n z.object({ op: z.enum(['truthy', 'falsy']), value: pathOrLiteral }).strict(),\n z.object({ op: z.enum(['and', 'or']), args: z.array(predicateSchema).min(1) }).strict(),\n z.object({ op: z.literal('not'), arg: predicateSchema }).strict(),\n ]),\n);\n\nconst agentEntrySchema = z.object({\n type: z.literal('agent'),\n id: z.string(),\n agentId: z.string(),\n description: z.string().optional(),\n outputSchema: z.record(z.string(), z.unknown()).optional(),\n options: stepOptionsSchema,\n});\n\nconst toolEntrySchema = z.object({\n type: z.literal('tool'),\n id: z.string(),\n toolId: z.string(),\n description: z.string().optional(),\n options: stepOptionsSchema,\n});\n\nconst mappingEntrySchema = z.object({\n type: z.literal('mapping'),\n id: z.string(),\n mapConfig: z.string(),\n});\n\nconst workflowEntrySchema = z.object({\n type: z.literal('workflow'),\n id: z.string(),\n workflowId: z.string(),\n description: z.string().optional(),\n});\n\nconst singleStepEntrySchema = z.discriminatedUnion('type', [\n agentEntrySchema,\n toolEntrySchema,\n mappingEntrySchema,\n workflowEntrySchema,\n]);\n\nconst foreachInnerStepSchema = z.discriminatedUnion('type', [agentEntrySchema, toolEntrySchema, workflowEntrySchema]);\n\nconst graphEntrySchema = z.discriminatedUnion('type', [\n agentEntrySchema,\n toolEntrySchema,\n mappingEntrySchema,\n workflowEntrySchema,\n z.object({\n type: z.literal('parallel'),\n steps: z.array(singleStepEntrySchema),\n }),\n z.object({\n type: z.literal('foreach'),\n step: foreachInnerStepSchema,\n opts: z.object({ concurrency: z.number().int().positive() }).optional(),\n }),\n z.object({\n type: z.literal('sleep'),\n id: z.string(),\n duration: z.number(),\n }),\n z.object({\n type: z.literal('sleepUntil'),\n id: z.string(),\n date: z.string(),\n }),\n z\n .object({\n // Declarative-only conditional. Inbound dynamic workflows must ship a\n // `predicates` array aligned with `steps`; closure-based branches are not\n // accepted over the wire (they'd be arbitrary JS strings we can't\n // safely rehydrate).\n type: z.literal('conditional'),\n steps: z.array(singleStepEntrySchema),\n predicates: z.array(predicateSchema),\n })\n .refine(entry => entry.predicates.length === entry.steps.length, {\n message:\n 'conditional entries must have exactly one predicate per branch (`predicates` and `steps` must be the same length)',\n path: ['predicates'],\n }),\n z.object({\n // Declarative-only loop. Same rationale as `conditional`.\n type: z.literal('loop'),\n step: singleStepEntrySchema,\n loopType: z.enum(['dowhile', 'dountil']),\n predicate: predicateSchema,\n }),\n]);\n\n// ============================================================================\n// Path params\n// ============================================================================\n\nexport const dynamicWorkflowIdPathParams = z.object({\n dynamicWorkflowId: z.string().describe('Unique identifier for the dynamic workflow definition'),\n});\n\n// ============================================================================\n// Query params\n// ============================================================================\n\nexport const listDynamicWorkflowsQuerySchema = z.object({\n status: z\n .enum(['active', 'archived'])\n .optional()\n .describe('Filter dynamic workflows by status (defaults to active when omitted by the handler)'),\n authorId: z.string().optional().describe('Filter dynamic workflows by author identifier'),\n});\n\n// ============================================================================\n// Body schemas\n// ============================================================================\n\n/**\n * One static workflow definition on the wire. Matches the input shape of\n * `mastra.addDynamicWorkflow()`.\n */\nexport const dynamicWorkflowDefinitionBodySchema = z.object({\n id: z.string().describe('Workflow id — kebab-case, descriptive'),\n description: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n // Schemas are loose object bags by design: different JSON Schema producers\n // emit slightly different shapes and core's `JsonSchema` type is\n // `Record<string, any>`. Using `z.record` here aligns with that shape so\n // no cast is needed at the handler boundary.\n inputSchema: z.record(z.string(), z.unknown()).describe('JSON Schema (Draft 2020-12) for the workflow input'),\n outputSchema: z.record(z.string(), z.unknown()).describe('JSON Schema (Draft 2020-12) for the workflow output'),\n stateSchema: z.record(z.string(), z.unknown()).optional(),\n requestContextSchema: z.record(z.string(), z.unknown()).optional(),\n graph: z\n .array(graphEntrySchema)\n .describe('Static workflow graph — ordered array of serialized step entries with all refs as ids.'),\n});\n\n/**\n * Body for `POST /stored/workflows` — upsert a static workflow definition,\n * optionally together with the helper workflows it nests.\n */\nexport const upsertDynamicWorkflowBodySchema = dynamicWorkflowDefinitionBodySchema.extend({\n // Deliberately a FLAT list rather than a recursive tree: helpers are peers\n // of each other, hydration order is derived from the graphs, and a\n // self-referential Zod schema would not survive OpenAPI generation.\n dependencies: z\n .array(dynamicWorkflowDefinitionBodySchema)\n .optional()\n .describe(\n 'Helper workflow definitions this workflow nests. Saved with it as one unit — the whole set is validated together, ' +\n 'hydrated in derived dependency order, and rejected together, so a failed save never leaves orphaned helpers behind. ' +\n 'Each helper becomes an ordinary dynamic workflow in its own right.',\n ),\n});\n\n// ============================================================================\n// Response schemas\n// ============================================================================\n\n/**\n * Shape returned for any single dynamic workflow row.\n */\nexport const dynamicWorkflowResponseSchema = z.object({\n id: z.string(),\n description: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n inputSchema: z.unknown(),\n outputSchema: z.unknown(),\n stateSchema: z.unknown().optional(),\n requestContextSchema: z.unknown().optional(),\n graph: z.array(z.unknown()),\n status: z.enum(['active', 'archived']),\n source: z.literal('storage'),\n authorId: z.string().optional(),\n createdAt: z.union([z.date(), z.string()]),\n updatedAt: z.union([z.date(), z.string()]),\n});\n\nexport const listDynamicWorkflowsResponseSchema = z.object({\n workflows: z.array(dynamicWorkflowResponseSchema),\n total: z.number(),\n});\n\nexport const getDynamicWorkflowResponseSchema = dynamicWorkflowResponseSchema;\n\nexport const upsertDynamicWorkflowResponseSchema = z.object({\n ok: z.literal(true),\n id: z.string(),\n dependencyIds: z\n .array(z.string())\n .optional()\n .describe('Ids of the helper workflows saved alongside this one. Present only when dependencies were supplied.'),\n});\n\nexport const deleteDynamicWorkflowResponseSchema = z.object({\n success: z.literal(true),\n message: z.string(),\n});\n","import type { Mastra } from '@mastra/core/mastra';\n\nimport { HTTPException } from '../http-exception';\nimport {\n dynamicWorkflowIdPathParams,\n listDynamicWorkflowsQuerySchema,\n upsertDynamicWorkflowBodySchema,\n listDynamicWorkflowsResponseSchema,\n getDynamicWorkflowResponseSchema,\n upsertDynamicWorkflowResponseSchema,\n deleteDynamicWorkflowResponseSchema,\n} from '../schemas/dynamic-workflows';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { handleError } from './error';\n\n/**\n * GET /stored/workflows — list stored static workflow definitions.\n *\n * Mirrors `LIST_STORED_AGENTS_ROUTE` but without favorites/visibility/authorship\n * scoping (which the workflow-definitions domain doesn't carry in v1).\n */\nexport const LIST_DYNAMIC_WORKFLOWS_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/workflows',\n responseType: 'json',\n queryParamSchema: listDynamicWorkflowsQuerySchema,\n responseSchema: listDynamicWorkflowsResponseSchema,\n summary: 'List dynamic workflow definitions',\n description: 'Returns workflow definitions persisted to storage. Filterable by status and authorId.',\n tags: ['Dynamic Workflows'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:read',\n handler: async ({ mastra, status, authorId }) => {\n try {\n const storage = mastra.getStorage();\n if (!storage) throw new HTTPException(500, { message: 'Storage is not configured' });\n\n const store = await storage.getStore('workflowDefinitions');\n if (!store) throw new HTTPException(500, { message: 'workflowDefinitions storage domain is not available' });\n\n const result = await store.list({ status: status ?? 'active', authorId });\n return { workflows: result.definitions, total: result.total };\n } catch (error) {\n return handleError(error, 'Error listing dynamic workflows');\n }\n },\n});\n\n/**\n * GET /stored/workflows/:dynamicWorkflowId — get one dynamic workflow.\n */\nexport const GET_DYNAMIC_WORKFLOW_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/workflows/:dynamicWorkflowId',\n responseType: 'json',\n pathParamSchema: dynamicWorkflowIdPathParams,\n responseSchema: getDynamicWorkflowResponseSchema,\n summary: 'Get a dynamic workflow definition by id',\n description: 'Returns a single workflow definition persisted to storage.',\n tags: ['Dynamic Workflows'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:read',\n handler: async ({ mastra, dynamicWorkflowId }) => {\n try {\n const storage = mastra.getStorage();\n if (!storage) throw new HTTPException(500, { message: 'Storage is not configured' });\n\n const store = await storage.getStore('workflowDefinitions');\n if (!store) throw new HTTPException(500, { message: 'workflowDefinitions storage domain is not available' });\n\n const def = await store.get(dynamicWorkflowId);\n if (!def) throw new HTTPException(404, { message: `Dynamic workflow \"${dynamicWorkflowId}\" not found` });\n return def;\n } catch (error) {\n return handleError(error, 'Error getting dynamic workflow');\n }\n },\n});\n\n/**\n * POST /stored/workflows — upsert a static workflow definition and live-register\n * it on the Mastra instance.\n *\n * Calls `mastra.addDynamicWorkflow(def)` which persists the row + rehydrates a\n * runnable workflow + registers it via `mastra.addWorkflow(workflow, id)`.\n * After this returns, `GET /workflows/:id` and `POST /workflows/:id/run` work\n * immediately — no server restart needed.\n */\nexport const UPSERT_DYNAMIC_WORKFLOW_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/workflows',\n responseType: 'json',\n bodySchema: upsertDynamicWorkflowBodySchema,\n responseSchema: upsertDynamicWorkflowResponseSchema,\n summary: 'Upsert a dynamic workflow definition and live-register it',\n description:\n 'Persists a static workflow definition and live-registers it on the running Mastra instance. Idempotent — same id updates in place.',\n tags: ['Dynamic Workflows'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:write',\n handler: async ({\n mastra,\n id,\n description,\n metadata,\n inputSchema,\n outputSchema,\n stateSchema,\n requestContextSchema,\n graph,\n dependencies,\n }) => {\n try {\n // Pick the body fields explicitly — handler args also carry server\n // context (requestContext, abortSignal, ...) which must not leak into\n // the stored definition.\n const def = { id, description, metadata, inputSchema, outputSchema, stateSchema, requestContextSchema, graph };\n // Helpers are saved with the root as one unit so a nested workflow that\n // does not exist yet resolves, and so a rejected root can never leave\n // its helpers behind as orphans. Order within the bundle is derived\n // from the graphs, not from the order the client sent them in.\n const bundle = [...(dependencies ?? []), def];\n // The Zod schema output is structurally compatible with\n // DynamicWorkflowGraph but TS can't prove every arm:\n // - sleepUntil.date is an ISO string on the wire, Date on the\n // runtime type; the rehydrator parses it via `new Date(...)`.\n // - conditional/loop's `serializedConditions`/`serializedCondition`\n // debug labels are emitted by the fluent builder at rehydration\n // time; clients don't send them.\n // `addDynamicWorkflows` runs a full registry pre-flight before\n // rehydration; the cast documents this boundary.\n await mastra.addDynamicWorkflows(bundle as Parameters<Mastra['addDynamicWorkflows']>[0]);\n return {\n ok: true as const,\n id: def.id,\n ...(dependencies?.length ? { dependencyIds: dependencies.map(dependency => dependency.id) } : {}),\n };\n } catch (error) {\n return handleError(error, 'Error upserting dynamic workflow');\n }\n },\n});\n\n/**\n * DELETE /stored/workflows/:dynamicWorkflowId — delete a dynamic workflow.\n *\n * Removes the row from storage AND un-registers the live Workflow instance so\n * a subsequent POST with the same id starts from a clean slate. Idempotent.\n */\nexport const DELETE_DYNAMIC_WORKFLOW_ROUTE = createRoute({\n method: 'DELETE',\n path: '/stored/workflows/:dynamicWorkflowId',\n responseType: 'json',\n pathParamSchema: dynamicWorkflowIdPathParams,\n responseSchema: deleteDynamicWorkflowResponseSchema,\n summary: 'Delete a dynamic workflow definition',\n description: 'Removes a dynamic workflow definition and unregisters the live workflow instance. Idempotent.',\n tags: ['Dynamic Workflows'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:write',\n handler: async ({ mastra, dynamicWorkflowId }) => {\n try {\n const storage = mastra.getStorage();\n if (!storage) throw new HTTPException(500, { message: 'Storage is not configured' });\n\n const store = await storage.getStore('workflowDefinitions');\n if (!store) throw new HTTPException(500, { message: 'workflowDefinitions storage domain is not available' });\n\n await store.delete(dynamicWorkflowId);\n (mastra as Mastra).removeWorkflow(dynamicWorkflowId);\n return { success: true as const, message: `Workflow ${dynamicWorkflowId} deleted` };\n } catch (error) {\n return handleError(error, 'Error deleting dynamic workflow');\n }\n },\n});\n"],"mappings":"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"}