@mastra/server 1.58.0-alpha.1 → 1.58.0-alpha.13

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 (467) hide show
  1. package/CHANGELOG.md +215 -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-CHi9AJ0n.js → a2a-CUkzkdTZ.js} +268 -55
  6. package/dist/a2a-CUkzkdTZ.js.map +1 -0
  7. package/dist/{a2a-D3ZYeXIx.cjs → a2a-DzZHH3OH.cjs} +279 -54
  8. package/dist/a2a-DzZHH3OH.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-J5hfk5ZZ.cjs → api-schema-manifest-BPk3u4B-.cjs} +3 -3
  24. package/dist/{api-schema-manifest-J5hfk5ZZ.cjs.map → api-schema-manifest-BPk3u4B-.cjs.map} +1 -1
  25. package/dist/{api-schema-manifest-R8CsF6RX.js → api-schema-manifest-DSelT9XK.js} +3 -3
  26. package/dist/{api-schema-manifest-R8CsF6RX.js.map → api-schema-manifest-DSelT9XK.js.map} +1 -1
  27. package/dist/{background-tasks-DnmhLalp.js → background-tasks-BtWM0sZs.js} +2 -2
  28. package/dist/{background-tasks-DnmhLalp.js.map → background-tasks-BtWM0sZs.js.map} +1 -1
  29. package/dist/{background-tasks-CYgzzUnb.cjs → background-tasks-C5G2jJax.cjs} +2 -2
  30. package/dist/{background-tasks-CYgzzUnb.cjs.map → background-tasks-C5G2jJax.cjs.map} +1 -1
  31. package/dist/{builder-registry-DE5w7bNk.js → builder-registry-B8KyPAOP.js} +3 -3
  32. package/dist/{builder-registry-DE5w7bNk.js.map → builder-registry-B8KyPAOP.js.map} +1 -1
  33. package/dist/{builder-registry-BoaXBdm_.cjs → builder-registry-Dcou-kzd.cjs} +3 -3
  34. package/dist/{builder-registry-BoaXBdm_.cjs.map → builder-registry-Dcou-kzd.cjs.map} +1 -1
  35. package/dist/{channels-BqkOxxEk.js → channels-B9yt3a2P.js} +2 -2
  36. package/dist/{channels-BqkOxxEk.js.map → channels-B9yt3a2P.js.map} +1 -1
  37. package/dist/{channels-BonQBJT0.cjs → channels-BRoq3VKR.cjs} +2 -2
  38. package/dist/{channels-BonQBJT0.cjs.map → channels-BRoq3VKR.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-BMeFvFwT.cjs → datasets-D2JdQI44.cjs} +2 -2
  48. package/dist/{datasets-BMeFvFwT.cjs.map → datasets-D2JdQI44.cjs.map} +1 -1
  49. package/dist/{datasets-BeBH9Seg.js → datasets-Dr1pCC6P.js} +2 -2
  50. package/dist/{datasets-BeBH9Seg.js.map → datasets-Dr1pCC6P.js.map} +1 -1
  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-IUXZtNBY.js → dist-CzzxT_L5.js} +237 -1384
  56. package/dist/dist-CzzxT_L5.js.map +1 -0
  57. package/dist/{dist-DgY0llRv.cjs → dist-TkFPtpuy.cjs} +246 -1396
  58. package/dist/dist-TkFPtpuy.cjs.map +1 -0
  59. package/dist/docs/SKILL.md +2 -1
  60. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  61. package/dist/docs/references/docs-agents-a2a.md +39 -0
  62. package/dist/docs/references/docs-server-custom-adapters.md +1 -1
  63. package/dist/docs/references/docs-server-custom-api-routes.md +375 -0
  64. package/dist/docs/references/reference-server-create-route.md +27 -1
  65. package/dist/docs/references/reference-server-routes.md +38 -24
  66. package/dist/{stored-workflows-OanG0TmB.js → dynamic-workflows-B0TE8mjA.js} +62 -62
  67. package/dist/dynamic-workflows-B0TE8mjA.js.map +1 -0
  68. package/dist/{stored-workflows-pCiWK305.cjs → dynamic-workflows-C-6vmau5.cjs} +71 -71
  69. package/dist/dynamic-workflows-C-6vmau5.cjs.map +1 -0
  70. package/dist/{editor-builder-Ct2nIbum.js → editor-builder-Byg6wbi6.js} +3 -3
  71. package/dist/{editor-builder-Ct2nIbum.js.map → editor-builder-Byg6wbi6.js.map} +1 -1
  72. package/dist/{editor-builder-CWTGCtNu.cjs → editor-builder-C3ZvffGu.cjs} +2 -2
  73. package/dist/{editor-builder-CWTGCtNu.cjs.map → editor-builder-C3ZvffGu.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/{editor-builder-BW4nlDcX.cjs → editor-builder-DT7ypWfa.cjs} +3 -3
  77. package/dist/{editor-builder-BW4nlDcX.cjs.map → editor-builder-DT7ypWfa.cjs.map} +1 -1
  78. package/dist/{logs-wBYi7UWL.cjs → logs-BDuGFqxu.cjs} +2 -2
  79. package/dist/{logs-wBYi7UWL.cjs.map → logs-BDuGFqxu.cjs.map} +1 -1
  80. package/dist/{logs-BzwWWl57.js → logs-Cz5NiwGP.js} +2 -2
  81. package/dist/{logs-BzwWWl57.js.map → logs-Cz5NiwGP.js.map} +1 -1
  82. package/dist/{mcp-DusNUBdz.cjs → mcp-Buvksst5.cjs} +2 -2
  83. package/dist/{mcp-DusNUBdz.cjs.map → mcp-Buvksst5.cjs.map} +1 -1
  84. package/dist/{mcp-client-versions-Db71zP8j.cjs → mcp-client-versions-CG7po4hq.cjs} +2 -2
  85. package/dist/{mcp-client-versions-Db71zP8j.cjs.map → mcp-client-versions-CG7po4hq.cjs.map} +1 -1
  86. package/dist/{mcp-client-versions-Dwbiav9P.js → mcp-client-versions-Co8d39A6.js} +2 -2
  87. package/dist/{mcp-client-versions-Dwbiav9P.js.map → mcp-client-versions-Co8d39A6.js.map} +1 -1
  88. package/dist/{mcp-BpC_5RhI.js → mcp-oOFVSK8L.js} +2 -2
  89. package/dist/{mcp-BpC_5RhI.js.map → mcp-oOFVSK8L.js.map} +1 -1
  90. package/dist/{memory-BjemiyZJ.js → memory-CBLqn9xl.js} +2 -2
  91. package/dist/{memory-BjemiyZJ.js.map → memory-CBLqn9xl.js.map} +1 -1
  92. package/dist/{memory-CxM2p78x.cjs → memory-D0prxytx.cjs} +2 -2
  93. package/dist/{memory-CxM2p78x.cjs.map → memory-D0prxytx.cjs.map} +1 -1
  94. package/dist/{observability-new-endpoints-Dk3oatL8.cjs → observability-new-endpoints-BC-dasRY.cjs} +2 -2
  95. package/dist/{observability-new-endpoints-Dk3oatL8.cjs.map → observability-new-endpoints-BC-dasRY.cjs.map} +1 -1
  96. package/dist/{observability-new-endpoints-YK2DjZto.js → observability-new-endpoints-Drx0C8uc.js} +2 -2
  97. package/dist/{observability-new-endpoints-YK2DjZto.js.map → observability-new-endpoints-Drx0C8uc.js.map} +1 -1
  98. package/dist/{probe-image-size-DYJVSL0b.cjs → probe-image-size-C2F59z8Z.cjs} +56 -1707
  99. package/dist/probe-image-size-C2F59z8Z.cjs.map +1 -0
  100. package/dist/{probe-image-size-BQgIJeY_.js → probe-image-size-mXCWYNrz.js} +22 -1673
  101. package/dist/probe-image-size-mXCWYNrz.js.map +1 -0
  102. package/dist/{prompt-block-versions-CIDwXWiC.js → prompt-block-versions-CBjHhMVK.js} +2 -2
  103. package/dist/{prompt-block-versions-CIDwXWiC.js.map → prompt-block-versions-CBjHhMVK.js.map} +1 -1
  104. package/dist/{prompt-block-versions-Bl3RmkTE.cjs → prompt-block-versions-Cgt_Grk2.cjs} +2 -2
  105. package/dist/{prompt-block-versions-Bl3RmkTE.cjs.map → prompt-block-versions-Cgt_Grk2.cjs.map} +1 -1
  106. package/dist/{route-builder-CgLVYL1c.cjs → route-builder-BAAedfru.cjs} +11 -2
  107. package/dist/route-builder-BAAedfru.cjs.map +1 -0
  108. package/dist/{route-builder-CIk5k35M.js → route-builder-YQ_gLIvW.js} +11 -2
  109. package/dist/route-builder-YQ_gLIvW.js.map +1 -0
  110. package/dist/{routes-BzR8iVj4.cjs → routes-0BEh3stO.cjs} +26 -25
  111. package/dist/routes-0BEh3stO.cjs.map +1 -0
  112. package/dist/{routes-C7iRCN_l.js → routes-BsMPy5bu.js} +27 -26
  113. package/dist/routes-BsMPy5bu.js.map +1 -0
  114. package/dist/{schedules-CK3-IE0h.cjs → schedules-DOK225ZZ.cjs} +2 -2
  115. package/dist/{schedules-CK3-IE0h.cjs.map → schedules-DOK225ZZ.cjs.map} +1 -1
  116. package/dist/{schedules-qxFoU-Tb.js → schedules-RjPcNOmY.js} +2 -2
  117. package/dist/{schedules-qxFoU-Tb.js.map → schedules-RjPcNOmY.js.map} +1 -1
  118. package/dist/{schema-Bv9OdW1f-BY6u3u8K.cjs → schema-Bv9OdW1f-CHHI-NTr.cjs} +2 -76
  119. package/dist/schema-Bv9OdW1f-CHHI-NTr.cjs.map +1 -0
  120. package/dist/{schema-Bv9OdW1f-CIOfv-3w.js → schema-Bv9OdW1f-DLSJSqQv.js} +2 -76
  121. package/dist/schema-Bv9OdW1f-DLSJSqQv.js.map +1 -0
  122. package/dist/schema-CGeYTFwm.js +2 -0
  123. package/dist/schema-DkBbires.cjs +1 -0
  124. package/dist/{scorer-versions-DpmAJKsY.cjs → scorer-versions-CYXtxMTU.cjs} +3 -3
  125. package/dist/{scorer-versions-DpmAJKsY.cjs.map → scorer-versions-CYXtxMTU.cjs.map} +1 -1
  126. package/dist/{scorer-versions-BA8N488c.js → scorer-versions-CdVjOtQO.js} +3 -3
  127. package/dist/{scorer-versions-BA8N488c.js.map → scorer-versions-CdVjOtQO.js.map} +1 -1
  128. package/dist/{scores-DU0o86rP.js → scores-B1IdMcDj.js} +2 -2
  129. package/dist/{scores-DU0o86rP.js.map → scores-B1IdMcDj.js.map} +1 -1
  130. package/dist/{scores-Bm_sUKY1.cjs → scores-C_Au9jSw.cjs} +2 -2
  131. package/dist/{scores-Bm_sUKY1.cjs.map → scores-C_Au9jSw.cjs.map} +1 -1
  132. package/dist/server/a2a/store.cjs +4 -0
  133. package/dist/server/a2a/store.cjs.map +1 -1
  134. package/dist/server/a2a/store.d.ts +3 -0
  135. package/dist/server/a2a/store.d.ts.map +1 -1
  136. package/dist/server/a2a/store.js +4 -0
  137. package/dist/server/a2a/store.js.map +1 -1
  138. package/dist/server/handlers/a2a.cjs +3 -1
  139. package/dist/server/handlers/a2a.d.ts +583 -401
  140. package/dist/server/handlers/a2a.d.ts.map +1 -1
  141. package/dist/server/handlers/a2a.js +2 -2
  142. package/dist/server/handlers/agent-builder.cjs +7 -7
  143. package/dist/server/handlers/agent-builder.d.ts +1069 -764
  144. package/dist/server/handlers/agent-builder.d.ts.map +1 -1
  145. package/dist/server/handlers/agent-builder.js +7 -7
  146. package/dist/server/handlers/agent-controller.cjs +86 -17
  147. package/dist/server/handlers/agent-controller.cjs.map +1 -1
  148. package/dist/server/handlers/agent-controller.d.ts +1548 -893
  149. package/dist/server/handlers/agent-controller.d.ts.map +1 -1
  150. package/dist/server/handlers/agent-controller.js +86 -17
  151. package/dist/server/handlers/agent-controller.js.map +1 -1
  152. package/dist/server/handlers/agent-versions.cjs +4 -4
  153. package/dist/server/handlers/agent-versions.d.ts +8504 -8312
  154. package/dist/server/handlers/agent-versions.d.ts.map +1 -1
  155. package/dist/server/handlers/agent-versions.js +4 -4
  156. package/dist/server/handlers/agents.cjs +6 -6
  157. package/dist/server/handlers/agents.d.ts +9984 -9826
  158. package/dist/server/handlers/agents.d.ts.map +1 -1
  159. package/dist/server/handlers/agents.js +6 -6
  160. package/dist/server/handlers/auth.cjs +1 -1
  161. package/dist/server/handlers/auth.d.ts +693 -297
  162. package/dist/server/handlers/auth.d.ts.map +1 -1
  163. package/dist/server/handlers/auth.js +1 -1
  164. package/dist/server/handlers/background-tasks.cjs +1 -1
  165. package/dist/server/handlers/background-tasks.d.ts +190 -130
  166. package/dist/server/handlers/background-tasks.d.ts.map +1 -1
  167. package/dist/server/handlers/background-tasks.js +1 -1
  168. package/dist/server/handlers/builder-registry.cjs +1 -1
  169. package/dist/server/handlers/builder-registry.d.ts +218 -121
  170. package/dist/server/handlers/builder-registry.d.ts.map +1 -1
  171. package/dist/server/handlers/builder-registry.js +1 -1
  172. package/dist/server/handlers/channels.cjs +1 -1
  173. package/dist/server/handlers/channels.d.ts +157 -77
  174. package/dist/server/handlers/channels.d.ts.map +1 -1
  175. package/dist/server/handlers/channels.js +1 -1
  176. package/dist/server/handlers/conversations.cjs +2 -2
  177. package/dist/server/handlers/conversations.d.ts +221 -141
  178. package/dist/server/handlers/conversations.d.ts.map +1 -1
  179. package/dist/server/handlers/conversations.js +2 -2
  180. package/dist/server/handlers/datasets.cjs +3 -3
  181. package/dist/server/handlers/datasets.d.ts +2669 -2234
  182. package/dist/server/handlers/datasets.d.ts.map +1 -1
  183. package/dist/server/handlers/datasets.js +3 -3
  184. package/dist/server/handlers/dynamic-workflows.cjs +6 -0
  185. package/dist/server/handlers/dynamic-workflows.d.ts +900 -0
  186. package/dist/server/handlers/{stored-workflows.d.ts.map → dynamic-workflows.d.ts.map} +1 -1
  187. package/dist/server/handlers/dynamic-workflows.js +2 -0
  188. package/dist/server/handlers/editor-builder.cjs +1 -1
  189. package/dist/server/handlers/editor-builder.d.ts +305 -245
  190. package/dist/server/handlers/editor-builder.d.ts.map +1 -1
  191. package/dist/server/handlers/editor-builder.js +1 -1
  192. package/dist/server/handlers/favorites-enrichment.cjs +1 -1
  193. package/dist/server/handlers/favorites-enrichment.js +1 -1
  194. package/dist/server/handlers/logs.cjs +3 -3
  195. package/dist/server/handlers/logs.d.ts +245 -185
  196. package/dist/server/handlers/logs.d.ts.map +1 -1
  197. package/dist/server/handlers/logs.js +3 -3
  198. package/dist/server/handlers/mcp-client-versions.cjs +3 -3
  199. package/dist/server/handlers/mcp-client-versions.d.ts +447 -307
  200. package/dist/server/handlers/mcp-client-versions.d.ts.map +1 -1
  201. package/dist/server/handlers/mcp-client-versions.js +3 -3
  202. package/dist/server/handlers/mcp.cjs +2 -2
  203. package/dist/server/handlers/mcp.d.ts +357 -156
  204. package/dist/server/handlers/mcp.d.ts.map +1 -1
  205. package/dist/server/handlers/mcp.js +2 -2
  206. package/dist/server/handlers/memory.cjs +2 -2
  207. package/dist/server/handlers/memory.d.ts +1723 -1223
  208. package/dist/server/handlers/memory.d.ts.map +1 -1
  209. package/dist/server/handlers/memory.js +2 -2
  210. package/dist/server/handlers/observability-new-endpoints.cjs +1 -1
  211. package/dist/server/handlers/observability-new-endpoints.d.ts +3239 -2158
  212. package/dist/server/handlers/observability-new-endpoints.d.ts.map +1 -1
  213. package/dist/server/handlers/observability-new-endpoints.js +1 -1
  214. package/dist/server/handlers/observability-shared.cjs +1 -1
  215. package/dist/server/handlers/observability-shared.js +1 -1
  216. package/dist/server/handlers/observability.cjs +2 -2
  217. package/dist/server/handlers/observability.d.ts +267 -149
  218. package/dist/server/handlers/observability.d.ts.map +1 -1
  219. package/dist/server/handlers/observability.js +2 -2
  220. package/dist/server/handlers/processor-providers.cjs +1 -1
  221. package/dist/server/handlers/processor-providers.d.ts +74 -34
  222. package/dist/server/handlers/processor-providers.d.ts.map +1 -1
  223. package/dist/server/handlers/processor-providers.js +1 -1
  224. package/dist/server/handlers/processors.cjs +1 -1
  225. package/dist/server/handlers/processors.d.ts +222 -173
  226. package/dist/server/handlers/processors.d.ts.map +1 -1
  227. package/dist/server/handlers/processors.js +1 -1
  228. package/dist/server/handlers/prompt-block-versions.cjs +3 -3
  229. package/dist/server/handlers/prompt-block-versions.d.ts +646 -506
  230. package/dist/server/handlers/prompt-block-versions.d.ts.map +1 -1
  231. package/dist/server/handlers/prompt-block-versions.js +3 -3
  232. package/dist/server/handlers/responses.cjs +1 -1
  233. package/dist/server/handlers/responses.d.ts +352 -362
  234. package/dist/server/handlers/responses.d.ts.map +1 -1
  235. package/dist/server/handlers/responses.js +1 -1
  236. package/dist/server/handlers/schedules.cjs +1 -1
  237. package/dist/server/handlers/schedules.d.ts +1190 -1028
  238. package/dist/server/handlers/schedules.d.ts.map +1 -1
  239. package/dist/server/handlers/schedules.js +1 -1
  240. package/dist/server/handlers/scorer-versions.cjs +3 -3
  241. package/dist/server/handlers/scorer-versions.d.ts +551 -411
  242. package/dist/server/handlers/scorer-versions.d.ts.map +1 -1
  243. package/dist/server/handlers/scorer-versions.js +3 -3
  244. package/dist/server/handlers/scores.cjs +3 -3
  245. package/dist/server/handlers/scores.d.ts +287 -167
  246. package/dist/server/handlers/scores.d.ts.map +1 -1
  247. package/dist/server/handlers/scores.js +3 -3
  248. package/dist/server/handlers/stored-agent-favorites.cjs +4 -4
  249. package/dist/server/handlers/stored-agent-favorites.d.ts +62 -22
  250. package/dist/server/handlers/stored-agent-favorites.d.ts.map +1 -1
  251. package/dist/server/handlers/stored-agent-favorites.js +4 -4
  252. package/dist/server/handlers/stored-agents.cjs +5 -5
  253. package/dist/server/handlers/stored-agents.d.ts +12056 -16152
  254. package/dist/server/handlers/stored-agents.d.ts.map +1 -1
  255. package/dist/server/handlers/stored-agents.js +5 -5
  256. package/dist/server/handlers/stored-mcp-clients.cjs +4 -4
  257. package/dist/server/handlers/stored-mcp-clients.d.ts +417 -324
  258. package/dist/server/handlers/stored-mcp-clients.d.ts.map +1 -1
  259. package/dist/server/handlers/stored-mcp-clients.js +4 -4
  260. package/dist/server/handlers/stored-prompt-blocks.cjs +4 -4
  261. package/dist/server/handlers/stored-prompt-blocks.d.ts +603 -555
  262. package/dist/server/handlers/stored-prompt-blocks.d.ts.map +1 -1
  263. package/dist/server/handlers/stored-prompt-blocks.js +4 -4
  264. package/dist/server/handlers/stored-scorers.cjs +4 -4
  265. package/dist/server/handlers/stored-scorers.d.ts +556 -472
  266. package/dist/server/handlers/stored-scorers.d.ts.map +1 -1
  267. package/dist/server/handlers/stored-scorers.js +4 -4
  268. package/dist/server/handlers/stored-skill-favorites.cjs +4 -4
  269. package/dist/server/handlers/stored-skill-favorites.d.ts +62 -22
  270. package/dist/server/handlers/stored-skill-favorites.d.ts.map +1 -1
  271. package/dist/server/handlers/stored-skill-favorites.js +4 -4
  272. package/dist/server/handlers/stored-skills.cjs +4 -4
  273. package/dist/server/handlers/stored-skills.d.ts +632 -515
  274. package/dist/server/handlers/stored-skills.d.ts.map +1 -1
  275. package/dist/server/handlers/stored-skills.js +4 -4
  276. package/dist/server/handlers/stored-workspaces.cjs +3 -3
  277. package/dist/server/handlers/stored-workspaces.d.ts +646 -546
  278. package/dist/server/handlers/stored-workspaces.d.ts.map +1 -1
  279. package/dist/server/handlers/stored-workspaces.js +3 -3
  280. package/dist/server/handlers/system.cjs +2 -2
  281. package/dist/server/handlers/system.d.ts +146 -106
  282. package/dist/server/handlers/system.d.ts.map +1 -1
  283. package/dist/server/handlers/system.js +2 -2
  284. package/dist/server/handlers/tool-providers.cjs +1 -1
  285. package/dist/server/handlers/tool-providers.d.ts +580 -331
  286. package/dist/server/handlers/tool-providers.d.ts.map +1 -1
  287. package/dist/server/handlers/tool-providers.js +1 -1
  288. package/dist/server/handlers/tools.cjs +6 -6
  289. package/dist/server/handlers/tools.d.ts +177 -77
  290. package/dist/server/handlers/tools.d.ts.map +1 -1
  291. package/dist/server/handlers/tools.js +6 -6
  292. package/dist/server/handlers/validate-agent-instructions.cjs +1 -1
  293. package/dist/server/handlers/validate-agent-instructions.js +1 -1
  294. package/dist/server/handlers/vector.cjs +2 -2
  295. package/dist/server/handlers/vector.d.ts +282 -126
  296. package/dist/server/handlers/vector.d.ts.map +1 -1
  297. package/dist/server/handlers/vector.js +2 -2
  298. package/dist/server/handlers/workflows.cjs +149 -27
  299. package/dist/server/handlers/workflows.cjs.map +1 -1
  300. package/dist/server/handlers/workflows.d.ts +1704 -1173
  301. package/dist/server/handlers/workflows.d.ts.map +1 -1
  302. package/dist/server/handlers/workflows.js +149 -29
  303. package/dist/server/handlers/workflows.js.map +1 -1
  304. package/dist/server/handlers/workspace.cjs +1 -1
  305. package/dist/server/handlers/workspace.d.ts +1936 -1150
  306. package/dist/server/handlers/workspace.d.ts.map +1 -1
  307. package/dist/server/handlers/workspace.js +1 -1
  308. package/dist/server/handlers.cjs +8 -8
  309. package/dist/server/handlers.d.ts +1 -1
  310. package/dist/server/handlers.d.ts.map +1 -1
  311. package/dist/server/handlers.js +3 -3
  312. package/dist/server/schemas/a2a.d.ts +70 -6
  313. package/dist/server/schemas/a2a.d.ts.map +1 -1
  314. package/dist/server/schemas/agent-versions.d.ts +70 -10
  315. package/dist/server/schemas/agent-versions.d.ts.map +1 -1
  316. package/dist/server/schemas/agents.d.ts +23 -3
  317. package/dist/server/schemas/agents.d.ts.map +1 -1
  318. package/dist/server/schemas/common.d.ts.map +1 -1
  319. package/dist/server/schemas/default-options.d.ts +7 -1
  320. package/dist/server/schemas/default-options.d.ts.map +1 -1
  321. package/dist/server/schemas/{stored-workflows.d.ts → dynamic-workflows.d.ts} +13 -13
  322. package/dist/server/schemas/dynamic-workflows.d.ts.map +1 -0
  323. package/dist/server/schemas/index.cjs +26 -26
  324. package/dist/server/schemas/index.js +26 -26
  325. package/dist/server/schemas/stored-agents.d.ts +140 -20
  326. package/dist/server/schemas/stored-agents.d.ts.map +1 -1
  327. package/dist/server/schemas/workflows.d.ts +10 -2
  328. package/dist/server/schemas/workflows.d.ts.map +1 -1
  329. package/dist/server/server-adapter/index.cjs +69 -7
  330. package/dist/server/server-adapter/index.cjs.map +1 -1
  331. package/dist/server/server-adapter/index.d.ts +51 -1
  332. package/dist/server/server-adapter/index.d.ts.map +1 -1
  333. package/dist/server/server-adapter/index.js +70 -9
  334. package/dist/server/server-adapter/index.js.map +1 -1
  335. package/dist/server/server-adapter/openapi-utils.d.ts.map +1 -1
  336. package/dist/server/server-adapter/routes/a2a.d.ts +546 -398
  337. package/dist/server/server-adapter/routes/a2a.d.ts.map +1 -1
  338. package/dist/server/server-adapter/routes/agent-builder.d.ts +1054 -749
  339. package/dist/server/server-adapter/routes/agent-builder.d.ts.map +1 -1
  340. package/dist/server/server-adapter/routes/channels.d.ts +153 -73
  341. package/dist/server/server-adapter/routes/channels.d.ts.map +1 -1
  342. package/dist/server/server-adapter/routes/conversations.d.ts +218 -138
  343. package/dist/server/server-adapter/routes/conversations.d.ts.map +1 -1
  344. package/dist/server/server-adapter/routes/datasets.d.ts +2312 -1877
  345. package/dist/server/server-adapter/routes/datasets.d.ts.map +1 -1
  346. package/dist/server/server-adapter/routes/dynamic-workflows.d.ts +16 -0
  347. package/dist/server/server-adapter/routes/dynamic-workflows.d.ts.map +1 -0
  348. package/dist/server/server-adapter/routes/editor-builder.d.ts +506 -349
  349. package/dist/server/server-adapter/routes/editor-builder.d.ts.map +1 -1
  350. package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
  351. package/dist/server/server-adapter/routes/legacy.d.ts +615 -629
  352. package/dist/server/server-adapter/routes/legacy.d.ts.map +1 -1
  353. package/dist/server/server-adapter/routes/logs.d.ts +243 -183
  354. package/dist/server/server-adapter/routes/logs.d.ts.map +1 -1
  355. package/dist/server/server-adapter/routes/mcp.d.ts +347 -147
  356. package/dist/server/server-adapter/routes/mcp.d.ts.map +1 -1
  357. package/dist/server/server-adapter/routes/memory.d.ts +1699 -1199
  358. package/dist/server/server-adapter/routes/memory.d.ts.map +1 -1
  359. package/dist/server/server-adapter/routes/observability.d.ts +2761 -2103
  360. package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
  361. package/dist/server/server-adapter/routes/processor-providers.d.ts +70 -30
  362. package/dist/server/server-adapter/routes/processor-providers.d.ts.map +1 -1
  363. package/dist/server/server-adapter/routes/processors.d.ts +220 -171
  364. package/dist/server/server-adapter/routes/processors.d.ts.map +1 -1
  365. package/dist/server/server-adapter/routes/responses.d.ts +350 -360
  366. package/dist/server/server-adapter/routes/responses.d.ts.map +1 -1
  367. package/dist/server/server-adapter/routes/route-builder.d.ts +6 -2
  368. package/dist/server/server-adapter/routes/route-builder.d.ts.map +1 -1
  369. package/dist/server/server-adapter/routes/scorers.d.ts +282 -162
  370. package/dist/server/server-adapter/routes/scorers.d.ts.map +1 -1
  371. package/dist/server/server-adapter/routes/stored-mcp-clients.d.ts +821 -588
  372. package/dist/server/server-adapter/routes/stored-mcp-clients.d.ts.map +1 -1
  373. package/dist/server/server-adapter/routes/stored-prompt-blocks.d.ts +1252 -1064
  374. package/dist/server/server-adapter/routes/stored-prompt-blocks.d.ts.map +1 -1
  375. package/dist/server/server-adapter/routes/stored-scorers.d.ts +1046 -822
  376. package/dist/server/server-adapter/routes/stored-scorers.d.ts.map +1 -1
  377. package/dist/server/server-adapter/routes/stored-skills.d.ts +683 -526
  378. package/dist/server/server-adapter/routes/stored-skills.d.ts.map +1 -1
  379. package/dist/server/server-adapter/routes/stored-workspaces.d.ts +637 -537
  380. package/dist/server/server-adapter/routes/stored-workspaces.d.ts.map +1 -1
  381. package/dist/server/server-adapter/routes/system.d.ts +145 -105
  382. package/dist/server/server-adapter/routes/system.d.ts.map +1 -1
  383. package/dist/server/server-adapter/routes/tool-providers.d.ts +566 -317
  384. package/dist/server/server-adapter/routes/tool-providers.d.ts.map +1 -1
  385. package/dist/server/server-adapter/routes/tools.d.ts +103 -43
  386. package/dist/server/server-adapter/routes/tools.d.ts.map +1 -1
  387. package/dist/server/server-adapter/routes/vectors.d.ts +275 -119
  388. package/dist/server/server-adapter/routes/vectors.d.ts.map +1 -1
  389. package/dist/server/server-adapter/routes/workflows.d.ts +1586 -1098
  390. package/dist/server/server-adapter/routes/workflows.d.ts.map +1 -1
  391. package/dist/server/server-adapter/routes/workspace.d.ts +1026 -613
  392. package/dist/server/server-adapter/routes/workspace.d.ts.map +1 -1
  393. package/dist/{stored-agents-D8ar1Pn7.js → stored-agents-BRBZM-Xl.js} +4 -4
  394. package/dist/{stored-agents-D8ar1Pn7.js.map → stored-agents-BRBZM-Xl.js.map} +1 -1
  395. package/dist/{stored-agents-DKd89v5z.cjs → stored-agents-CPxfYRH9.cjs} +4 -4
  396. package/dist/{stored-agents-DKd89v5z.cjs.map → stored-agents-CPxfYRH9.cjs.map} +1 -1
  397. package/dist/{stored-mcp-clients-CwA5_nZ9.cjs → stored-mcp-clients-CJJPe_09.cjs} +2 -2
  398. package/dist/{stored-mcp-clients-CwA5_nZ9.cjs.map → stored-mcp-clients-CJJPe_09.cjs.map} +1 -1
  399. package/dist/{stored-mcp-clients-DJ3E4g8-.js → stored-mcp-clients-CoCfZRhw.js} +2 -2
  400. package/dist/{stored-mcp-clients-DJ3E4g8-.js.map → stored-mcp-clients-CoCfZRhw.js.map} +1 -1
  401. package/dist/{stored-prompt-blocks-BlqcqnEX.js → stored-prompt-blocks-DcmkZaCm.js} +2 -2
  402. package/dist/{stored-prompt-blocks-BlqcqnEX.js.map → stored-prompt-blocks-DcmkZaCm.js.map} +1 -1
  403. package/dist/{stored-prompt-blocks-DR_Wts8r.cjs → stored-prompt-blocks-XI4frgZv.cjs} +2 -2
  404. package/dist/{stored-prompt-blocks-DR_Wts8r.cjs.map → stored-prompt-blocks-XI4frgZv.cjs.map} +1 -1
  405. package/dist/{stored-scorers-BIKumDRO.js → stored-scorers-B__LF0Cy.js} +3 -3
  406. package/dist/{stored-scorers-BIKumDRO.js.map → stored-scorers-B__LF0Cy.js.map} +1 -1
  407. package/dist/{stored-scorers-_dqFdh-G.cjs → stored-scorers-Cml7jPJv.cjs} +3 -3
  408. package/dist/{stored-scorers-_dqFdh-G.cjs.map → stored-scorers-Cml7jPJv.cjs.map} +1 -1
  409. package/dist/{stored-skills-CgwoCNNV.cjs → stored-skills-BqNK0ssS.cjs} +2 -2
  410. package/dist/{stored-skills-CgwoCNNV.cjs.map → stored-skills-BqNK0ssS.cjs.map} +1 -1
  411. package/dist/{stored-skills-B_aAMn5W.js → stored-skills-JTWbMybs.js} +2 -2
  412. package/dist/{stored-skills-B_aAMn5W.js.map → stored-skills-JTWbMybs.js.map} +1 -1
  413. package/dist/{stored-workspaces-Dib-ClOP.js → stored-workspaces-6PYE4Y3m.js} +2 -2
  414. package/dist/{stored-workspaces-Dib-ClOP.js.map → stored-workspaces-6PYE4Y3m.js.map} +1 -1
  415. package/dist/{stored-workspaces-CbJQaFuP.cjs → stored-workspaces-Dl8B20LD.cjs} +2 -2
  416. package/dist/{stored-workspaces-CbJQaFuP.cjs.map → stored-workspaces-Dl8B20LD.cjs.map} +1 -1
  417. package/dist/sync-BHatXKfg.cjs +1679 -0
  418. package/dist/sync-BHatXKfg.cjs.map +1 -0
  419. package/dist/sync-djJ8Lmds.js +1656 -0
  420. package/dist/sync-djJ8Lmds.js.map +1 -0
  421. package/dist/{utils-wESuBh27.cjs → utils-Bna_JCkb.cjs} +3 -3
  422. package/dist/{utils-wESuBh27.cjs.map → utils-Bna_JCkb.cjs.map} +1 -1
  423. package/dist/{utils-BUK03Frl.js → utils-QXKhjIm6.js} +3 -3
  424. package/dist/{utils-BUK03Frl.js.map → utils-QXKhjIm6.js.map} +1 -1
  425. package/dist/{vectors-CZY34X8R.js → vectors-Ck7Qu6yz.js} +2 -2
  426. package/dist/{vectors-CZY34X8R.js.map → vectors-Ck7Qu6yz.js.map} +1 -1
  427. package/dist/{vectors-Cj-SPxOy.cjs → vectors-D6uZn2f1.cjs} +2 -2
  428. package/dist/{vectors-Cj-SPxOy.cjs.map → vectors-D6uZn2f1.cjs.map} +1 -1
  429. package/dist/{version-common-CEBQY7M8.cjs → version-common-AtNRQ5xH.cjs} +2 -2
  430. package/dist/{version-common-CEBQY7M8.cjs.map → version-common-AtNRQ5xH.cjs.map} +1 -1
  431. package/dist/{version-common-Cmd1f9JX.js → version-common-CudZ_WuW.js} +2 -2
  432. package/dist/{version-common-Cmd1f9JX.js.map → version-common-CudZ_WuW.js.map} +1 -1
  433. package/dist/{workflows-XfiENvkF.cjs → workflows--79xhOOb.cjs} +14 -3
  434. package/dist/workflows--79xhOOb.cjs.map +1 -0
  435. package/dist/{workflows-DPW6FrY0.js → workflows-B2ooCiwN.js} +9 -4
  436. package/dist/workflows-B2ooCiwN.js.map +1 -0
  437. package/package.json +6 -6
  438. package/dist/a2a-CHi9AJ0n.js.map +0 -1
  439. package/dist/a2a-CnU9zaGR.js.map +0 -1
  440. package/dist/a2a-D3ZYeXIx.cjs.map +0 -1
  441. package/dist/a2a-oM7aqLz4.cjs.map +0 -1
  442. package/dist/agents-CYvun9iI.js.map +0 -1
  443. package/dist/agents-Dk2qoJi_.cjs.map +0 -1
  444. package/dist/common-CPNOpqxA.js.map +0 -1
  445. package/dist/common-spbwhiWS.cjs.map +0 -1
  446. package/dist/dist-DgY0llRv.cjs.map +0 -1
  447. package/dist/dist-IUXZtNBY.js.map +0 -1
  448. package/dist/probe-image-size-BQgIJeY_.js.map +0 -1
  449. package/dist/probe-image-size-DYJVSL0b.cjs.map +0 -1
  450. package/dist/route-builder-CIk5k35M.js.map +0 -1
  451. package/dist/route-builder-CgLVYL1c.cjs.map +0 -1
  452. package/dist/routes-BzR8iVj4.cjs.map +0 -1
  453. package/dist/routes-C7iRCN_l.js.map +0 -1
  454. package/dist/schema-B8-5YCsA.js +0 -2
  455. package/dist/schema-BieM1qrc.cjs +0 -1
  456. package/dist/schema-Bv9OdW1f-BY6u3u8K.cjs.map +0 -1
  457. package/dist/schema-Bv9OdW1f-CIOfv-3w.js.map +0 -1
  458. package/dist/server/handlers/stored-workflows.cjs +0 -6
  459. package/dist/server/handlers/stored-workflows.d.ts +0 -820
  460. package/dist/server/handlers/stored-workflows.js +0 -2
  461. package/dist/server/schemas/stored-workflows.d.ts.map +0 -1
  462. package/dist/server/server-adapter/routes/stored-workflows.d.ts +0 -16
  463. package/dist/server/server-adapter/routes/stored-workflows.d.ts.map +0 -1
  464. package/dist/stored-workflows-OanG0TmB.js.map +0 -1
  465. package/dist/stored-workflows-pCiWK305.cjs.map +0 -1
  466. package/dist/workflows-DPW6FrY0.js.map +0 -1
  467. 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.1"
6
+ version: "1.58.0-alpha.13"
7
7
  ---
8
8
 
9
9
  ## When to use
@@ -18,6 +18,7 @@ Read the individual reference documents for detailed explanations and code examp
18
18
 
19
19
  - [A2A](references/docs-agents-a2a.md) - Expose and call remote Mastra agents over the Agent-to-Agent protocol.
20
20
  - [Custom adapters](references/docs-server-custom-adapters.md) - Create a custom server adapter for frameworks other than Hono or Express.
21
+ - [Custom API routes](references/docs-server-custom-api-routes.md) - Expose additional HTTP endpoints from your Mastra server.
21
22
  - [Middleware](references/docs-server-middleware.md) - Apply custom middleware functions to intercept requests.
22
23
 
23
24
  ### Reference
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.58.0-alpha.1",
2
+ "version": "1.58.0-alpha.13",
3
3
  "package": "@mastra/server",
4
4
  "exports": {},
5
5
  "modules": {}
@@ -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:
@@ -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)
@@ -0,0 +1,375 @@
1
+ > Discover all available pages from the documentation index: https://mastra.ai/llms.txt
2
+
3
+ # Custom API routes
4
+
5
+ By default, Mastra automatically exposes registered agents and workflows via its server. For additional behavior you can define your own HTTP routes.
6
+
7
+ Routes are provided with a helper `registerApiRoute()` from `@mastra/core/server`. Routes can live in the same file as the `Mastra` instance but separating them helps keep configuration concise.
8
+
9
+ ```typescript
10
+ import { Mastra } from '@mastra/core'
11
+ import { registerApiRoute } from '@mastra/core/server'
12
+
13
+ export const mastra = new Mastra({
14
+ server: {
15
+ apiRoutes: [
16
+ registerApiRoute('/my-custom-route', {
17
+ method: 'GET',
18
+ handler: async c => {
19
+ const mastra = c.get('mastra')
20
+ const agent = await mastra.getAgent('my-agent')
21
+
22
+ return c.json({ message: 'Custom route' })
23
+ },
24
+ }),
25
+ ],
26
+ },
27
+ })
28
+ ```
29
+
30
+ Once registered, a custom route will be accessible from the root of the server. For example:
31
+
32
+ ```bash
33
+ curl http://localhost:4111/my-custom-route
34
+ ```
35
+
36
+ Each route's handler receives the Hono `Context`. Within the handler you can access the `Mastra` instance to fetch or call agents and workflows.
37
+
38
+ ## Schema validation
39
+
40
+ Use [`createRoute()`](https://mastra.ai/reference/server/create-route) in `apiRoutes` to parse and validate path parameters, query parameters, and request bodies with Zod. The schemas also infer the handler parameters and generate OpenAPI metadata.
41
+
42
+ ```typescript
43
+ import { Mastra } from '@mastra/core'
44
+ import { createRoute } from '@mastra/server/server-adapter'
45
+ import { z } from 'zod'
46
+
47
+ const createItemRoute = createRoute({
48
+ method: 'POST',
49
+ path: '/items',
50
+ responseType: 'json',
51
+ bodySchema: z.object({
52
+ name: z.string().min(1),
53
+ }),
54
+ responseSchema: z.object({
55
+ id: z.string(),
56
+ name: z.string(),
57
+ }),
58
+ handler: async ({ name }) => ({
59
+ id: crypto.randomUUID(),
60
+ name,
61
+ }),
62
+ })
63
+
64
+ export const mastra = new Mastra({
65
+ server: {
66
+ apiRoutes: [createItemRoute],
67
+ },
68
+ })
69
+ ```
70
+
71
+ By default, Mastra returns a `400` response when validation fails. The `onValidationError` callback can override the status and response body. Validated values and the `Mastra` server context are passed directly to the handler.
72
+
73
+ ## Middleware
74
+
75
+ To add route-specific middleware pass a `middleware` array when calling `registerApiRoute()`.
76
+
77
+ ```typescript
78
+ import { Mastra } from '@mastra/core'
79
+ import { registerApiRoute } from '@mastra/core/server'
80
+
81
+ export const mastra = new Mastra({
82
+ server: {
83
+ apiRoutes: [
84
+ registerApiRoute('/my-custom-route', {
85
+ method: 'GET',
86
+ middleware: [
87
+ async (c, next) => {
88
+ console.log(`${c.req.method} ${c.req.url}`)
89
+ await next()
90
+ },
91
+ ],
92
+ handler: async c => {
93
+ return c.json({ message: 'Custom route with middleware' })
94
+ },
95
+ }),
96
+ ],
97
+ },
98
+ })
99
+ ```
100
+
101
+ ## OpenAPI documentation
102
+
103
+ Custom routes can include OpenAPI metadata to appear in the Swagger UI alongside Mastra server routes. You can access the OpenAPI spec at `/api/openapi.json`, where both custom routes and built-in routes are listed. Pass an `openapi` option with standard OpenAPI operation fields.
104
+
105
+ ```typescript
106
+ import { Mastra } from '@mastra/core'
107
+ import { registerApiRoute } from '@mastra/core/server'
108
+ import { z } from 'zod'
109
+
110
+ export const mastra = new Mastra({
111
+ server: {
112
+ apiRoutes: [
113
+ registerApiRoute('/items/:itemId', {
114
+ method: 'GET',
115
+ openapi: {
116
+ summary: 'Get item by ID',
117
+ description: 'Retrieves a single item by its unique identifier',
118
+ tags: ['Items'],
119
+ parameters: [
120
+ {
121
+ name: 'itemId',
122
+ in: 'path',
123
+ required: true,
124
+ description: 'The item ID',
125
+ schema: { type: 'string' },
126
+ },
127
+ ],
128
+ responses: {
129
+ 200: {
130
+ description: 'Item found',
131
+ content: {
132
+ 'application/json': {
133
+ schema: {
134
+ type: 'object',
135
+ properties: {
136
+ id: { type: 'string' },
137
+ name: { type: 'string' },
138
+ },
139
+ },
140
+ },
141
+ },
142
+ },
143
+ 404: {
144
+ description: 'Item not found',
145
+ },
146
+ },
147
+ },
148
+ handler: async c => {
149
+ const itemId = c.req.param('itemId')
150
+ return c.json({ id: itemId, name: 'Example Item' })
151
+ },
152
+ }),
153
+ ],
154
+ },
155
+ })
156
+ ```
157
+
158
+ ### Using Zod Schemas
159
+
160
+ Zod schemas in the `openapi` configuration are converted to JSON Schema when the OpenAPI document is generated:
161
+
162
+ ```typescript
163
+ import { Mastra } from '@mastra/core'
164
+ import { registerApiRoute } from '@mastra/core/server'
165
+ import { z } from 'zod'
166
+
167
+ const ItemSchema = z.object({
168
+ id: z.string(),
169
+ name: z.string(),
170
+ price: z.number(),
171
+ })
172
+
173
+ const CreateItemSchema = z.object({
174
+ name: z.string().min(1),
175
+ price: z.number().positive(),
176
+ })
177
+
178
+ export const mastra = new Mastra({
179
+ server: {
180
+ apiRoutes: [
181
+ registerApiRoute('/items', {
182
+ method: 'POST',
183
+ openapi: {
184
+ summary: 'Create a new item',
185
+ tags: ['Items'],
186
+ requestBody: {
187
+ required: true,
188
+ content: {
189
+ 'application/json': {
190
+ schema: CreateItemSchema,
191
+ },
192
+ },
193
+ },
194
+ responses: {
195
+ 201: {
196
+ description: 'Item created',
197
+ content: {
198
+ 'application/json': {
199
+ schema: ItemSchema,
200
+ },
201
+ },
202
+ },
203
+ },
204
+ },
205
+ handler: async c => {
206
+ const body = await c.req.json()
207
+ return c.json({ id: 'new-id', ...body }, 201)
208
+ },
209
+ }),
210
+ ],
211
+ },
212
+ })
213
+ ```
214
+
215
+ ### Viewing in Swagger UI
216
+
217
+ When running in development mode (`mastra dev`) or with `swaggerUI: true` in build options, your custom routes appear in the Swagger UI at `/swagger-ui`.
218
+
219
+ ```typescript
220
+ export const mastra = new Mastra({
221
+ server: {
222
+ build: {
223
+ swaggerUI: true, // Enable in production builds
224
+ },
225
+ apiRoutes: [
226
+ // Your routes...
227
+ ],
228
+ },
229
+ })
230
+ ```
231
+
232
+ ## Authentication
233
+
234
+ When authentication is configured on your Mastra server, custom API routes require authentication by default. To make a route publicly accessible, set `requiresAuth: false`:
235
+
236
+ ```typescript
237
+ import { Mastra } from '@mastra/core'
238
+ import { registerApiRoute } from '@mastra/core/server'
239
+ import { MastraJwtAuth } from '@mastra/auth'
240
+
241
+ export const mastra = new Mastra({
242
+ server: {
243
+ auth: new MastraJwtAuth({
244
+ secret: process.env.MASTRA_JWT_SECRET,
245
+ }),
246
+ apiRoutes: [
247
+ // Protected route (default behavior)
248
+ registerApiRoute('/protected-data', {
249
+ method: 'GET',
250
+ handler: async c => {
251
+ // Access authenticated user from request context
252
+ const user = c.get('requestContext').get('user')
253
+ return c.json({ message: 'Authenticated user', user })
254
+ },
255
+ }),
256
+
257
+ // Public route (no authentication required)
258
+ registerApiRoute('/webhooks/github', {
259
+ method: 'POST',
260
+ requiresAuth: false, // Explicitly opt out of authentication
261
+ handler: async c => {
262
+ const payload = await c.req.json()
263
+ // Process webhook without authentication
264
+ return c.json({ received: true })
265
+ },
266
+ }),
267
+ ],
268
+ },
269
+ })
270
+ ```
271
+
272
+ ### Authentication behavior
273
+
274
+ - **No auth configured**: All routes (built-in and custom) are public
275
+
276
+ - **Auth configured**:
277
+
278
+ - Mastra-provided routes (`/api/agents/*`, `/api/workflows/*`, etc.) require authentication
279
+ - Custom routes require authentication by default
280
+ - Custom routes can opt out with `requiresAuth: false`
281
+
282
+ ### Accessing user information
283
+
284
+ When a request is authenticated, the user object is available in the request context:
285
+
286
+ ```typescript
287
+ registerApiRoute('/user-profile', {
288
+ method: 'GET',
289
+ handler: async c => {
290
+ const requestContext = c.get('requestContext')
291
+ const user = requestContext.get('user')
292
+
293
+ return c.json({ user })
294
+ },
295
+ })
296
+ ```
297
+
298
+ For more information about authentication providers, see the [Auth documentation](https://mastra.ai/docs/server/auth).
299
+
300
+ ## Continue generation after client disconnect
301
+
302
+ Built-in streaming helpers such as [`chatRoute()`](https://mastra.ai/reference/ai-sdk/chat-route) forward the incoming request's `AbortSignal` to `agent.stream()`. That's the right default when a browser disconnect should cancel the model call.
303
+
304
+ For custom streaming routes that should stop when the client disconnects, pass `c.req.raw.signal` to long-running work such as `agent.stream()`. Mastra's Node-based adapters also stop reading streamed `Response` bodies from custom routes when the client connection closes. Streamed response body errors that aren't caused by client disconnects still propagate through the adapter's normal error handling. In Hono, disconnect behavior depends on the host runtime forwarding connection closes to `request.signal`.
305
+
306
+ ```typescript
307
+ registerApiRoute('/stream', {
308
+ method: 'GET',
309
+ handler: async c => {
310
+ const stream = await agent.stream(prompt, {
311
+ abortSignal: c.req.raw.signal,
312
+ })
313
+
314
+ return stream.toTextStreamResponse()
315
+ },
316
+ })
317
+ ```
318
+
319
+ If you want the server to keep generating and persist the final response even after the client disconnects, build a custom route around the underlying `MastraModelOutput`. Start the agent stream without forwarding `c.req.raw.signal`, then call `consumeStream()` in the background so generation continues server-side.
320
+
321
+ ```typescript
322
+ import {
323
+ createUIMessageStream,
324
+ createUIMessageStreamResponse,
325
+ InferUIMessageChunk,
326
+ UIMessage,
327
+ } from 'ai'
328
+ import { toAISdkStream } from '@mastra/ai-sdk'
329
+ import { Mastra } from '@mastra/core'
330
+ import { registerApiRoute } from '@mastra/core/server'
331
+
332
+ export const mastra = new Mastra({
333
+ server: {
334
+ apiRoutes: [
335
+ registerApiRoute('/chat/persist/:agentId', {
336
+ method: 'POST',
337
+ handler: async c => {
338
+ const { messages, memory } = await c.req.json()
339
+ const mastra = c.get('mastra')
340
+ const agent = mastra.getAgent(c.req.param('agentId'))
341
+
342
+ const stream = await agent.stream(messages, {
343
+ memory,
344
+ // Do not pass c.req.raw.signal if this route should keep running
345
+ // after the client disconnects.
346
+ })
347
+
348
+ void stream.consumeStream().catch(error => {
349
+ mastra.getLogger()?.error('Background stream consumption failed', { error })
350
+ })
351
+
352
+ const uiStream = createUIMessageStream({
353
+ originalMessages: messages,
354
+ execute: async ({ writer }) => {
355
+ for await (const part of toAISdkStream(stream, { from: 'agent' })) {
356
+ writer.write(part as InferUIMessageChunk<UIMessage>)
357
+ }
358
+ },
359
+ })
360
+
361
+ return createUIMessageStreamResponse({ stream: uiStream })
362
+ },
363
+ }),
364
+ ],
365
+ },
366
+ })
367
+ ```
368
+
369
+ > **Note:** Use this pattern only when you intentionally want work to continue after the HTTP client is gone. If you want disconnects to cancel generation, keep using `chatRoute()` or forward the request `AbortSignal` yourself.
370
+
371
+ ## Related
372
+
373
+ - [registerApiRoute() Reference](https://mastra.ai/reference/server/register-api-route): Full API reference
374
+ - [Server Middleware](https://mastra.ai/docs/server/middleware): Global middleware configuration
375
+ - [Mastra Server](https://mastra.ai/docs/server/mastra-server): Server configuration options
@@ -72,10 +72,36 @@ handler: async params => {
72
72
 
73
73
  ## Return value
74
74
 
75
- Returns a `ServerRoute` object that can be registered with an adapter.
75
+ Returns a `ServerRoute` object that can be registered with an adapter or passed to `server.apiRoutes` on the `Mastra` instance.
76
76
 
77
77
  ## Examples
78
78
 
79
+ ### Register through `server.apiRoutes`
80
+
81
+ Routes created with `createRoute()` can be passed to `server.apiRoutes`. The adapter registers them with runtime validation, typed handler parameters, and generated OpenAPI metadata. See [Custom API routes](https://mastra.ai/docs/server/custom-api-routes) for details.
82
+
83
+ ```typescript
84
+ import { Mastra } from '@mastra/core'
85
+ import { createRoute } from '@mastra/server/server-adapter'
86
+ import { z } from 'zod'
87
+
88
+ const createItemRoute = createRoute({
89
+ method: 'POST',
90
+ path: '/items',
91
+ responseType: 'json',
92
+ bodySchema: z.object({
93
+ name: z.string(),
94
+ }),
95
+ handler: async ({ name }) => ({ id: 'new-id', name }),
96
+ })
97
+
98
+ export const mastra = new Mastra({
99
+ server: {
100
+ apiRoutes: [createItemRoute],
101
+ },
102
+ })
103
+ ```
104
+
79
105
  ### GET route with path params
80
106
 
81
107
  ```typescript
@@ -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