@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.
- package/CHANGELOG.md +215 -0
- package/dist/_types/@mastra_schema-compat/dist/provider-compats/anthropic.d.ts +1 -1
- package/dist/{a2a-CnU9zaGR.js → a2a-8C4O2dVJ.js} +41 -5
- package/dist/a2a-8C4O2dVJ.js.map +1 -0
- package/dist/{a2a-CHi9AJ0n.js → a2a-CUkzkdTZ.js} +268 -55
- package/dist/a2a-CUkzkdTZ.js.map +1 -0
- package/dist/{a2a-D3ZYeXIx.cjs → a2a-DzZHH3OH.cjs} +279 -54
- package/dist/a2a-DzZHH3OH.cjs.map +1 -0
- package/dist/{a2a-oM7aqLz4.cjs → a2a-MPoM5lzS.cjs} +41 -5
- package/dist/a2a-MPoM5lzS.cjs.map +1 -0
- package/dist/{agent-builder-BDYN3r89.cjs → agent-builder-D8JyDQ5J.cjs} +2 -2
- package/dist/{agent-builder-BDYN3r89.cjs.map → agent-builder-D8JyDQ5J.cjs.map} +1 -1
- package/dist/{agent-builder-Dqy_qumV.js → agent-builder-DNTFty1u.js} +2 -2
- package/dist/{agent-builder-Dqy_qumV.js.map → agent-builder-DNTFty1u.js.map} +1 -1
- package/dist/{agent-versions-Bsrpa_zb.js → agent-versions-CWEnD62A.js} +4 -4
- package/dist/{agent-versions-Bsrpa_zb.js.map → agent-versions-CWEnD62A.js.map} +1 -1
- package/dist/{agent-versions-CdQGF-3e.cjs → agent-versions-xeysPGel.cjs} +4 -4
- package/dist/{agent-versions-CdQGF-3e.cjs.map → agent-versions-xeysPGel.cjs.map} +1 -1
- package/dist/{agents-Dk2qoJi_.cjs → agents-0Tw3kkD_.cjs} +9 -5
- package/dist/agents-0Tw3kkD_.cjs.map +1 -0
- package/dist/{agents-CYvun9iI.js → agents-uT8ZDE4k.js} +9 -5
- package/dist/agents-uT8ZDE4k.js.map +1 -0
- package/dist/{api-schema-manifest-J5hfk5ZZ.cjs → api-schema-manifest-BPk3u4B-.cjs} +3 -3
- package/dist/{api-schema-manifest-J5hfk5ZZ.cjs.map → api-schema-manifest-BPk3u4B-.cjs.map} +1 -1
- package/dist/{api-schema-manifest-R8CsF6RX.js → api-schema-manifest-DSelT9XK.js} +3 -3
- package/dist/{api-schema-manifest-R8CsF6RX.js.map → api-schema-manifest-DSelT9XK.js.map} +1 -1
- package/dist/{background-tasks-DnmhLalp.js → background-tasks-BtWM0sZs.js} +2 -2
- package/dist/{background-tasks-DnmhLalp.js.map → background-tasks-BtWM0sZs.js.map} +1 -1
- package/dist/{background-tasks-CYgzzUnb.cjs → background-tasks-C5G2jJax.cjs} +2 -2
- package/dist/{background-tasks-CYgzzUnb.cjs.map → background-tasks-C5G2jJax.cjs.map} +1 -1
- package/dist/{builder-registry-DE5w7bNk.js → builder-registry-B8KyPAOP.js} +3 -3
- package/dist/{builder-registry-DE5w7bNk.js.map → builder-registry-B8KyPAOP.js.map} +1 -1
- package/dist/{builder-registry-BoaXBdm_.cjs → builder-registry-Dcou-kzd.cjs} +3 -3
- package/dist/{builder-registry-BoaXBdm_.cjs.map → builder-registry-Dcou-kzd.cjs.map} +1 -1
- package/dist/{channels-BqkOxxEk.js → channels-B9yt3a2P.js} +2 -2
- package/dist/{channels-BqkOxxEk.js.map → channels-B9yt3a2P.js.map} +1 -1
- package/dist/{channels-BonQBJT0.cjs → channels-BRoq3VKR.cjs} +2 -2
- package/dist/{channels-BonQBJT0.cjs.map → channels-BRoq3VKR.cjs.map} +1 -1
- package/dist/{common-CPNOpqxA.js → common-5ZZuR6wj.js} +19 -8
- package/dist/common-5ZZuR6wj.js.map +1 -0
- package/dist/{common-spbwhiWS.cjs → common-DQn8jX5T.cjs} +19 -8
- package/dist/common-DQn8jX5T.cjs.map +1 -0
- package/dist/{conversations-CebKjBfB.cjs → conversations-CcFLCCeF.cjs} +2 -2
- package/dist/{conversations-CebKjBfB.cjs.map → conversations-CcFLCCeF.cjs.map} +1 -1
- package/dist/{conversations-BDD46VBM.js → conversations-DtnawNGm.js} +2 -2
- package/dist/{conversations-BDD46VBM.js.map → conversations-DtnawNGm.js.map} +1 -1
- package/dist/{datasets-BMeFvFwT.cjs → datasets-D2JdQI44.cjs} +2 -2
- package/dist/{datasets-BMeFvFwT.cjs.map → datasets-D2JdQI44.cjs.map} +1 -1
- package/dist/{datasets-BeBH9Seg.js → datasets-Dr1pCC6P.js} +2 -2
- package/dist/{datasets-BeBH9Seg.js.map → datasets-Dr1pCC6P.js.map} +1 -1
- package/dist/{default-options-BcPyp2Gx.cjs → default-options-C9HZGjYi.cjs} +6 -3
- package/dist/{default-options-BcPyp2Gx.cjs.map → default-options-C9HZGjYi.cjs.map} +1 -1
- package/dist/{default-options-DGCDKR3I.js → default-options-C9JVjlto.js} +6 -3
- package/dist/{default-options-DGCDKR3I.js.map → default-options-C9JVjlto.js.map} +1 -1
- package/dist/{dist-IUXZtNBY.js → dist-CzzxT_L5.js} +237 -1384
- package/dist/dist-CzzxT_L5.js.map +1 -0
- package/dist/{dist-DgY0llRv.cjs → dist-TkFPtpuy.cjs} +246 -1396
- package/dist/dist-TkFPtpuy.cjs.map +1 -0
- package/dist/docs/SKILL.md +2 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/docs-agents-a2a.md +39 -0
- package/dist/docs/references/docs-server-custom-adapters.md +1 -1
- package/dist/docs/references/docs-server-custom-api-routes.md +375 -0
- package/dist/docs/references/reference-server-create-route.md +27 -1
- package/dist/docs/references/reference-server-routes.md +38 -24
- package/dist/{stored-workflows-OanG0TmB.js → dynamic-workflows-B0TE8mjA.js} +62 -62
- package/dist/dynamic-workflows-B0TE8mjA.js.map +1 -0
- package/dist/{stored-workflows-pCiWK305.cjs → dynamic-workflows-C-6vmau5.cjs} +71 -71
- package/dist/dynamic-workflows-C-6vmau5.cjs.map +1 -0
- package/dist/{editor-builder-Ct2nIbum.js → editor-builder-Byg6wbi6.js} +3 -3
- package/dist/{editor-builder-Ct2nIbum.js.map → editor-builder-Byg6wbi6.js.map} +1 -1
- package/dist/{editor-builder-CWTGCtNu.cjs → editor-builder-C3ZvffGu.cjs} +2 -2
- package/dist/{editor-builder-CWTGCtNu.cjs.map → editor-builder-C3ZvffGu.cjs.map} +1 -1
- package/dist/{editor-builder-fKbRRlK_.js → editor-builder-DJUxdzC8.js} +2 -2
- package/dist/{editor-builder-fKbRRlK_.js.map → editor-builder-DJUxdzC8.js.map} +1 -1
- package/dist/{editor-builder-BW4nlDcX.cjs → editor-builder-DT7ypWfa.cjs} +3 -3
- package/dist/{editor-builder-BW4nlDcX.cjs.map → editor-builder-DT7ypWfa.cjs.map} +1 -1
- package/dist/{logs-wBYi7UWL.cjs → logs-BDuGFqxu.cjs} +2 -2
- package/dist/{logs-wBYi7UWL.cjs.map → logs-BDuGFqxu.cjs.map} +1 -1
- package/dist/{logs-BzwWWl57.js → logs-Cz5NiwGP.js} +2 -2
- package/dist/{logs-BzwWWl57.js.map → logs-Cz5NiwGP.js.map} +1 -1
- package/dist/{mcp-DusNUBdz.cjs → mcp-Buvksst5.cjs} +2 -2
- package/dist/{mcp-DusNUBdz.cjs.map → mcp-Buvksst5.cjs.map} +1 -1
- package/dist/{mcp-client-versions-Db71zP8j.cjs → mcp-client-versions-CG7po4hq.cjs} +2 -2
- package/dist/{mcp-client-versions-Db71zP8j.cjs.map → mcp-client-versions-CG7po4hq.cjs.map} +1 -1
- package/dist/{mcp-client-versions-Dwbiav9P.js → mcp-client-versions-Co8d39A6.js} +2 -2
- package/dist/{mcp-client-versions-Dwbiav9P.js.map → mcp-client-versions-Co8d39A6.js.map} +1 -1
- package/dist/{mcp-BpC_5RhI.js → mcp-oOFVSK8L.js} +2 -2
- package/dist/{mcp-BpC_5RhI.js.map → mcp-oOFVSK8L.js.map} +1 -1
- package/dist/{memory-BjemiyZJ.js → memory-CBLqn9xl.js} +2 -2
- package/dist/{memory-BjemiyZJ.js.map → memory-CBLqn9xl.js.map} +1 -1
- package/dist/{memory-CxM2p78x.cjs → memory-D0prxytx.cjs} +2 -2
- package/dist/{memory-CxM2p78x.cjs.map → memory-D0prxytx.cjs.map} +1 -1
- package/dist/{observability-new-endpoints-Dk3oatL8.cjs → observability-new-endpoints-BC-dasRY.cjs} +2 -2
- package/dist/{observability-new-endpoints-Dk3oatL8.cjs.map → observability-new-endpoints-BC-dasRY.cjs.map} +1 -1
- package/dist/{observability-new-endpoints-YK2DjZto.js → observability-new-endpoints-Drx0C8uc.js} +2 -2
- package/dist/{observability-new-endpoints-YK2DjZto.js.map → observability-new-endpoints-Drx0C8uc.js.map} +1 -1
- package/dist/{probe-image-size-DYJVSL0b.cjs → probe-image-size-C2F59z8Z.cjs} +56 -1707
- package/dist/probe-image-size-C2F59z8Z.cjs.map +1 -0
- package/dist/{probe-image-size-BQgIJeY_.js → probe-image-size-mXCWYNrz.js} +22 -1673
- package/dist/probe-image-size-mXCWYNrz.js.map +1 -0
- package/dist/{prompt-block-versions-CIDwXWiC.js → prompt-block-versions-CBjHhMVK.js} +2 -2
- package/dist/{prompt-block-versions-CIDwXWiC.js.map → prompt-block-versions-CBjHhMVK.js.map} +1 -1
- package/dist/{prompt-block-versions-Bl3RmkTE.cjs → prompt-block-versions-Cgt_Grk2.cjs} +2 -2
- package/dist/{prompt-block-versions-Bl3RmkTE.cjs.map → prompt-block-versions-Cgt_Grk2.cjs.map} +1 -1
- package/dist/{route-builder-CgLVYL1c.cjs → route-builder-BAAedfru.cjs} +11 -2
- package/dist/route-builder-BAAedfru.cjs.map +1 -0
- package/dist/{route-builder-CIk5k35M.js → route-builder-YQ_gLIvW.js} +11 -2
- package/dist/route-builder-YQ_gLIvW.js.map +1 -0
- package/dist/{routes-BzR8iVj4.cjs → routes-0BEh3stO.cjs} +26 -25
- package/dist/routes-0BEh3stO.cjs.map +1 -0
- package/dist/{routes-C7iRCN_l.js → routes-BsMPy5bu.js} +27 -26
- package/dist/routes-BsMPy5bu.js.map +1 -0
- package/dist/{schedules-CK3-IE0h.cjs → schedules-DOK225ZZ.cjs} +2 -2
- package/dist/{schedules-CK3-IE0h.cjs.map → schedules-DOK225ZZ.cjs.map} +1 -1
- package/dist/{schedules-qxFoU-Tb.js → schedules-RjPcNOmY.js} +2 -2
- package/dist/{schedules-qxFoU-Tb.js.map → schedules-RjPcNOmY.js.map} +1 -1
- package/dist/{schema-Bv9OdW1f-BY6u3u8K.cjs → schema-Bv9OdW1f-CHHI-NTr.cjs} +2 -76
- package/dist/schema-Bv9OdW1f-CHHI-NTr.cjs.map +1 -0
- package/dist/{schema-Bv9OdW1f-CIOfv-3w.js → schema-Bv9OdW1f-DLSJSqQv.js} +2 -76
- package/dist/schema-Bv9OdW1f-DLSJSqQv.js.map +1 -0
- package/dist/schema-CGeYTFwm.js +2 -0
- package/dist/schema-DkBbires.cjs +1 -0
- package/dist/{scorer-versions-DpmAJKsY.cjs → scorer-versions-CYXtxMTU.cjs} +3 -3
- package/dist/{scorer-versions-DpmAJKsY.cjs.map → scorer-versions-CYXtxMTU.cjs.map} +1 -1
- package/dist/{scorer-versions-BA8N488c.js → scorer-versions-CdVjOtQO.js} +3 -3
- package/dist/{scorer-versions-BA8N488c.js.map → scorer-versions-CdVjOtQO.js.map} +1 -1
- package/dist/{scores-DU0o86rP.js → scores-B1IdMcDj.js} +2 -2
- package/dist/{scores-DU0o86rP.js.map → scores-B1IdMcDj.js.map} +1 -1
- package/dist/{scores-Bm_sUKY1.cjs → scores-C_Au9jSw.cjs} +2 -2
- package/dist/{scores-Bm_sUKY1.cjs.map → scores-C_Au9jSw.cjs.map} +1 -1
- package/dist/server/a2a/store.cjs +4 -0
- package/dist/server/a2a/store.cjs.map +1 -1
- package/dist/server/a2a/store.d.ts +3 -0
- package/dist/server/a2a/store.d.ts.map +1 -1
- package/dist/server/a2a/store.js +4 -0
- package/dist/server/a2a/store.js.map +1 -1
- package/dist/server/handlers/a2a.cjs +3 -1
- package/dist/server/handlers/a2a.d.ts +583 -401
- package/dist/server/handlers/a2a.d.ts.map +1 -1
- package/dist/server/handlers/a2a.js +2 -2
- package/dist/server/handlers/agent-builder.cjs +7 -7
- package/dist/server/handlers/agent-builder.d.ts +1069 -764
- package/dist/server/handlers/agent-builder.d.ts.map +1 -1
- package/dist/server/handlers/agent-builder.js +7 -7
- package/dist/server/handlers/agent-controller.cjs +86 -17
- package/dist/server/handlers/agent-controller.cjs.map +1 -1
- package/dist/server/handlers/agent-controller.d.ts +1548 -893
- package/dist/server/handlers/agent-controller.d.ts.map +1 -1
- package/dist/server/handlers/agent-controller.js +86 -17
- package/dist/server/handlers/agent-controller.js.map +1 -1
- package/dist/server/handlers/agent-versions.cjs +4 -4
- package/dist/server/handlers/agent-versions.d.ts +8504 -8312
- package/dist/server/handlers/agent-versions.d.ts.map +1 -1
- package/dist/server/handlers/agent-versions.js +4 -4
- package/dist/server/handlers/agents.cjs +6 -6
- package/dist/server/handlers/agents.d.ts +9984 -9826
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +6 -6
- package/dist/server/handlers/auth.cjs +1 -1
- package/dist/server/handlers/auth.d.ts +693 -297
- package/dist/server/handlers/auth.d.ts.map +1 -1
- package/dist/server/handlers/auth.js +1 -1
- package/dist/server/handlers/background-tasks.cjs +1 -1
- package/dist/server/handlers/background-tasks.d.ts +190 -130
- package/dist/server/handlers/background-tasks.d.ts.map +1 -1
- package/dist/server/handlers/background-tasks.js +1 -1
- package/dist/server/handlers/builder-registry.cjs +1 -1
- package/dist/server/handlers/builder-registry.d.ts +218 -121
- package/dist/server/handlers/builder-registry.d.ts.map +1 -1
- package/dist/server/handlers/builder-registry.js +1 -1
- package/dist/server/handlers/channels.cjs +1 -1
- package/dist/server/handlers/channels.d.ts +157 -77
- package/dist/server/handlers/channels.d.ts.map +1 -1
- package/dist/server/handlers/channels.js +1 -1
- package/dist/server/handlers/conversations.cjs +2 -2
- package/dist/server/handlers/conversations.d.ts +221 -141
- package/dist/server/handlers/conversations.d.ts.map +1 -1
- package/dist/server/handlers/conversations.js +2 -2
- package/dist/server/handlers/datasets.cjs +3 -3
- package/dist/server/handlers/datasets.d.ts +2669 -2234
- package/dist/server/handlers/datasets.d.ts.map +1 -1
- package/dist/server/handlers/datasets.js +3 -3
- package/dist/server/handlers/dynamic-workflows.cjs +6 -0
- package/dist/server/handlers/dynamic-workflows.d.ts +900 -0
- package/dist/server/handlers/{stored-workflows.d.ts.map → dynamic-workflows.d.ts.map} +1 -1
- package/dist/server/handlers/dynamic-workflows.js +2 -0
- package/dist/server/handlers/editor-builder.cjs +1 -1
- package/dist/server/handlers/editor-builder.d.ts +305 -245
- package/dist/server/handlers/editor-builder.d.ts.map +1 -1
- package/dist/server/handlers/editor-builder.js +1 -1
- package/dist/server/handlers/favorites-enrichment.cjs +1 -1
- package/dist/server/handlers/favorites-enrichment.js +1 -1
- package/dist/server/handlers/logs.cjs +3 -3
- package/dist/server/handlers/logs.d.ts +245 -185
- package/dist/server/handlers/logs.d.ts.map +1 -1
- package/dist/server/handlers/logs.js +3 -3
- package/dist/server/handlers/mcp-client-versions.cjs +3 -3
- package/dist/server/handlers/mcp-client-versions.d.ts +447 -307
- package/dist/server/handlers/mcp-client-versions.d.ts.map +1 -1
- package/dist/server/handlers/mcp-client-versions.js +3 -3
- package/dist/server/handlers/mcp.cjs +2 -2
- package/dist/server/handlers/mcp.d.ts +357 -156
- package/dist/server/handlers/mcp.d.ts.map +1 -1
- package/dist/server/handlers/mcp.js +2 -2
- package/dist/server/handlers/memory.cjs +2 -2
- package/dist/server/handlers/memory.d.ts +1723 -1223
- package/dist/server/handlers/memory.d.ts.map +1 -1
- package/dist/server/handlers/memory.js +2 -2
- package/dist/server/handlers/observability-new-endpoints.cjs +1 -1
- package/dist/server/handlers/observability-new-endpoints.d.ts +3239 -2158
- package/dist/server/handlers/observability-new-endpoints.d.ts.map +1 -1
- package/dist/server/handlers/observability-new-endpoints.js +1 -1
- package/dist/server/handlers/observability-shared.cjs +1 -1
- package/dist/server/handlers/observability-shared.js +1 -1
- package/dist/server/handlers/observability.cjs +2 -2
- package/dist/server/handlers/observability.d.ts +267 -149
- package/dist/server/handlers/observability.d.ts.map +1 -1
- package/dist/server/handlers/observability.js +2 -2
- package/dist/server/handlers/processor-providers.cjs +1 -1
- package/dist/server/handlers/processor-providers.d.ts +74 -34
- package/dist/server/handlers/processor-providers.d.ts.map +1 -1
- package/dist/server/handlers/processor-providers.js +1 -1
- package/dist/server/handlers/processors.cjs +1 -1
- package/dist/server/handlers/processors.d.ts +222 -173
- package/dist/server/handlers/processors.d.ts.map +1 -1
- package/dist/server/handlers/processors.js +1 -1
- package/dist/server/handlers/prompt-block-versions.cjs +3 -3
- package/dist/server/handlers/prompt-block-versions.d.ts +646 -506
- package/dist/server/handlers/prompt-block-versions.d.ts.map +1 -1
- package/dist/server/handlers/prompt-block-versions.js +3 -3
- package/dist/server/handlers/responses.cjs +1 -1
- package/dist/server/handlers/responses.d.ts +352 -362
- package/dist/server/handlers/responses.d.ts.map +1 -1
- package/dist/server/handlers/responses.js +1 -1
- package/dist/server/handlers/schedules.cjs +1 -1
- package/dist/server/handlers/schedules.d.ts +1190 -1028
- package/dist/server/handlers/schedules.d.ts.map +1 -1
- package/dist/server/handlers/schedules.js +1 -1
- package/dist/server/handlers/scorer-versions.cjs +3 -3
- package/dist/server/handlers/scorer-versions.d.ts +551 -411
- package/dist/server/handlers/scorer-versions.d.ts.map +1 -1
- package/dist/server/handlers/scorer-versions.js +3 -3
- package/dist/server/handlers/scores.cjs +3 -3
- package/dist/server/handlers/scores.d.ts +287 -167
- package/dist/server/handlers/scores.d.ts.map +1 -1
- package/dist/server/handlers/scores.js +3 -3
- package/dist/server/handlers/stored-agent-favorites.cjs +4 -4
- package/dist/server/handlers/stored-agent-favorites.d.ts +62 -22
- package/dist/server/handlers/stored-agent-favorites.d.ts.map +1 -1
- package/dist/server/handlers/stored-agent-favorites.js +4 -4
- package/dist/server/handlers/stored-agents.cjs +5 -5
- package/dist/server/handlers/stored-agents.d.ts +12056 -16152
- package/dist/server/handlers/stored-agents.d.ts.map +1 -1
- package/dist/server/handlers/stored-agents.js +5 -5
- package/dist/server/handlers/stored-mcp-clients.cjs +4 -4
- package/dist/server/handlers/stored-mcp-clients.d.ts +417 -324
- package/dist/server/handlers/stored-mcp-clients.d.ts.map +1 -1
- package/dist/server/handlers/stored-mcp-clients.js +4 -4
- package/dist/server/handlers/stored-prompt-blocks.cjs +4 -4
- package/dist/server/handlers/stored-prompt-blocks.d.ts +603 -555
- package/dist/server/handlers/stored-prompt-blocks.d.ts.map +1 -1
- package/dist/server/handlers/stored-prompt-blocks.js +4 -4
- package/dist/server/handlers/stored-scorers.cjs +4 -4
- package/dist/server/handlers/stored-scorers.d.ts +556 -472
- package/dist/server/handlers/stored-scorers.d.ts.map +1 -1
- package/dist/server/handlers/stored-scorers.js +4 -4
- package/dist/server/handlers/stored-skill-favorites.cjs +4 -4
- package/dist/server/handlers/stored-skill-favorites.d.ts +62 -22
- package/dist/server/handlers/stored-skill-favorites.d.ts.map +1 -1
- package/dist/server/handlers/stored-skill-favorites.js +4 -4
- package/dist/server/handlers/stored-skills.cjs +4 -4
- package/dist/server/handlers/stored-skills.d.ts +632 -515
- package/dist/server/handlers/stored-skills.d.ts.map +1 -1
- package/dist/server/handlers/stored-skills.js +4 -4
- package/dist/server/handlers/stored-workspaces.cjs +3 -3
- package/dist/server/handlers/stored-workspaces.d.ts +646 -546
- package/dist/server/handlers/stored-workspaces.d.ts.map +1 -1
- package/dist/server/handlers/stored-workspaces.js +3 -3
- package/dist/server/handlers/system.cjs +2 -2
- package/dist/server/handlers/system.d.ts +146 -106
- package/dist/server/handlers/system.d.ts.map +1 -1
- package/dist/server/handlers/system.js +2 -2
- package/dist/server/handlers/tool-providers.cjs +1 -1
- package/dist/server/handlers/tool-providers.d.ts +580 -331
- package/dist/server/handlers/tool-providers.d.ts.map +1 -1
- package/dist/server/handlers/tool-providers.js +1 -1
- package/dist/server/handlers/tools.cjs +6 -6
- package/dist/server/handlers/tools.d.ts +177 -77
- package/dist/server/handlers/tools.d.ts.map +1 -1
- package/dist/server/handlers/tools.js +6 -6
- package/dist/server/handlers/validate-agent-instructions.cjs +1 -1
- package/dist/server/handlers/validate-agent-instructions.js +1 -1
- package/dist/server/handlers/vector.cjs +2 -2
- package/dist/server/handlers/vector.d.ts +282 -126
- package/dist/server/handlers/vector.d.ts.map +1 -1
- package/dist/server/handlers/vector.js +2 -2
- package/dist/server/handlers/workflows.cjs +149 -27
- package/dist/server/handlers/workflows.cjs.map +1 -1
- package/dist/server/handlers/workflows.d.ts +1704 -1173
- package/dist/server/handlers/workflows.d.ts.map +1 -1
- package/dist/server/handlers/workflows.js +149 -29
- package/dist/server/handlers/workflows.js.map +1 -1
- package/dist/server/handlers/workspace.cjs +1 -1
- package/dist/server/handlers/workspace.d.ts +1936 -1150
- package/dist/server/handlers/workspace.d.ts.map +1 -1
- package/dist/server/handlers/workspace.js +1 -1
- package/dist/server/handlers.cjs +8 -8
- package/dist/server/handlers.d.ts +1 -1
- package/dist/server/handlers.d.ts.map +1 -1
- package/dist/server/handlers.js +3 -3
- package/dist/server/schemas/a2a.d.ts +70 -6
- package/dist/server/schemas/a2a.d.ts.map +1 -1
- package/dist/server/schemas/agent-versions.d.ts +70 -10
- package/dist/server/schemas/agent-versions.d.ts.map +1 -1
- package/dist/server/schemas/agents.d.ts +23 -3
- package/dist/server/schemas/agents.d.ts.map +1 -1
- package/dist/server/schemas/common.d.ts.map +1 -1
- package/dist/server/schemas/default-options.d.ts +7 -1
- package/dist/server/schemas/default-options.d.ts.map +1 -1
- package/dist/server/schemas/{stored-workflows.d.ts → dynamic-workflows.d.ts} +13 -13
- package/dist/server/schemas/dynamic-workflows.d.ts.map +1 -0
- package/dist/server/schemas/index.cjs +26 -26
- package/dist/server/schemas/index.js +26 -26
- package/dist/server/schemas/stored-agents.d.ts +140 -20
- package/dist/server/schemas/stored-agents.d.ts.map +1 -1
- package/dist/server/schemas/workflows.d.ts +10 -2
- package/dist/server/schemas/workflows.d.ts.map +1 -1
- package/dist/server/server-adapter/index.cjs +69 -7
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.d.ts +51 -1
- package/dist/server/server-adapter/index.d.ts.map +1 -1
- package/dist/server/server-adapter/index.js +70 -9
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/server/server-adapter/openapi-utils.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/a2a.d.ts +546 -398
- package/dist/server/server-adapter/routes/a2a.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/agent-builder.d.ts +1054 -749
- package/dist/server/server-adapter/routes/agent-builder.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/channels.d.ts +153 -73
- package/dist/server/server-adapter/routes/channels.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/conversations.d.ts +218 -138
- package/dist/server/server-adapter/routes/conversations.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/datasets.d.ts +2312 -1877
- package/dist/server/server-adapter/routes/datasets.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/dynamic-workflows.d.ts +16 -0
- package/dist/server/server-adapter/routes/dynamic-workflows.d.ts.map +1 -0
- package/dist/server/server-adapter/routes/editor-builder.d.ts +506 -349
- package/dist/server/server-adapter/routes/editor-builder.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/legacy.d.ts +615 -629
- package/dist/server/server-adapter/routes/legacy.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/logs.d.ts +243 -183
- package/dist/server/server-adapter/routes/logs.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/mcp.d.ts +347 -147
- package/dist/server/server-adapter/routes/mcp.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/memory.d.ts +1699 -1199
- package/dist/server/server-adapter/routes/memory.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/observability.d.ts +2761 -2103
- package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/processor-providers.d.ts +70 -30
- package/dist/server/server-adapter/routes/processor-providers.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/processors.d.ts +220 -171
- package/dist/server/server-adapter/routes/processors.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/responses.d.ts +350 -360
- package/dist/server/server-adapter/routes/responses.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/route-builder.d.ts +6 -2
- package/dist/server/server-adapter/routes/route-builder.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/scorers.d.ts +282 -162
- package/dist/server/server-adapter/routes/scorers.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/stored-mcp-clients.d.ts +821 -588
- package/dist/server/server-adapter/routes/stored-mcp-clients.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/stored-prompt-blocks.d.ts +1252 -1064
- package/dist/server/server-adapter/routes/stored-prompt-blocks.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/stored-scorers.d.ts +1046 -822
- package/dist/server/server-adapter/routes/stored-scorers.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/stored-skills.d.ts +683 -526
- package/dist/server/server-adapter/routes/stored-skills.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/stored-workspaces.d.ts +637 -537
- package/dist/server/server-adapter/routes/stored-workspaces.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/system.d.ts +145 -105
- package/dist/server/server-adapter/routes/system.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/tool-providers.d.ts +566 -317
- package/dist/server/server-adapter/routes/tool-providers.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/tools.d.ts +103 -43
- package/dist/server/server-adapter/routes/tools.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/vectors.d.ts +275 -119
- package/dist/server/server-adapter/routes/vectors.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/workflows.d.ts +1586 -1098
- package/dist/server/server-adapter/routes/workflows.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/workspace.d.ts +1026 -613
- package/dist/server/server-adapter/routes/workspace.d.ts.map +1 -1
- package/dist/{stored-agents-D8ar1Pn7.js → stored-agents-BRBZM-Xl.js} +4 -4
- package/dist/{stored-agents-D8ar1Pn7.js.map → stored-agents-BRBZM-Xl.js.map} +1 -1
- package/dist/{stored-agents-DKd89v5z.cjs → stored-agents-CPxfYRH9.cjs} +4 -4
- package/dist/{stored-agents-DKd89v5z.cjs.map → stored-agents-CPxfYRH9.cjs.map} +1 -1
- package/dist/{stored-mcp-clients-CwA5_nZ9.cjs → stored-mcp-clients-CJJPe_09.cjs} +2 -2
- package/dist/{stored-mcp-clients-CwA5_nZ9.cjs.map → stored-mcp-clients-CJJPe_09.cjs.map} +1 -1
- package/dist/{stored-mcp-clients-DJ3E4g8-.js → stored-mcp-clients-CoCfZRhw.js} +2 -2
- package/dist/{stored-mcp-clients-DJ3E4g8-.js.map → stored-mcp-clients-CoCfZRhw.js.map} +1 -1
- package/dist/{stored-prompt-blocks-BlqcqnEX.js → stored-prompt-blocks-DcmkZaCm.js} +2 -2
- package/dist/{stored-prompt-blocks-BlqcqnEX.js.map → stored-prompt-blocks-DcmkZaCm.js.map} +1 -1
- package/dist/{stored-prompt-blocks-DR_Wts8r.cjs → stored-prompt-blocks-XI4frgZv.cjs} +2 -2
- package/dist/{stored-prompt-blocks-DR_Wts8r.cjs.map → stored-prompt-blocks-XI4frgZv.cjs.map} +1 -1
- package/dist/{stored-scorers-BIKumDRO.js → stored-scorers-B__LF0Cy.js} +3 -3
- package/dist/{stored-scorers-BIKumDRO.js.map → stored-scorers-B__LF0Cy.js.map} +1 -1
- package/dist/{stored-scorers-_dqFdh-G.cjs → stored-scorers-Cml7jPJv.cjs} +3 -3
- package/dist/{stored-scorers-_dqFdh-G.cjs.map → stored-scorers-Cml7jPJv.cjs.map} +1 -1
- package/dist/{stored-skills-CgwoCNNV.cjs → stored-skills-BqNK0ssS.cjs} +2 -2
- package/dist/{stored-skills-CgwoCNNV.cjs.map → stored-skills-BqNK0ssS.cjs.map} +1 -1
- package/dist/{stored-skills-B_aAMn5W.js → stored-skills-JTWbMybs.js} +2 -2
- package/dist/{stored-skills-B_aAMn5W.js.map → stored-skills-JTWbMybs.js.map} +1 -1
- package/dist/{stored-workspaces-Dib-ClOP.js → stored-workspaces-6PYE4Y3m.js} +2 -2
- package/dist/{stored-workspaces-Dib-ClOP.js.map → stored-workspaces-6PYE4Y3m.js.map} +1 -1
- package/dist/{stored-workspaces-CbJQaFuP.cjs → stored-workspaces-Dl8B20LD.cjs} +2 -2
- package/dist/{stored-workspaces-CbJQaFuP.cjs.map → stored-workspaces-Dl8B20LD.cjs.map} +1 -1
- package/dist/sync-BHatXKfg.cjs +1679 -0
- package/dist/sync-BHatXKfg.cjs.map +1 -0
- package/dist/sync-djJ8Lmds.js +1656 -0
- package/dist/sync-djJ8Lmds.js.map +1 -0
- package/dist/{utils-wESuBh27.cjs → utils-Bna_JCkb.cjs} +3 -3
- package/dist/{utils-wESuBh27.cjs.map → utils-Bna_JCkb.cjs.map} +1 -1
- package/dist/{utils-BUK03Frl.js → utils-QXKhjIm6.js} +3 -3
- package/dist/{utils-BUK03Frl.js.map → utils-QXKhjIm6.js.map} +1 -1
- package/dist/{vectors-CZY34X8R.js → vectors-Ck7Qu6yz.js} +2 -2
- package/dist/{vectors-CZY34X8R.js.map → vectors-Ck7Qu6yz.js.map} +1 -1
- package/dist/{vectors-Cj-SPxOy.cjs → vectors-D6uZn2f1.cjs} +2 -2
- package/dist/{vectors-Cj-SPxOy.cjs.map → vectors-D6uZn2f1.cjs.map} +1 -1
- package/dist/{version-common-CEBQY7M8.cjs → version-common-AtNRQ5xH.cjs} +2 -2
- package/dist/{version-common-CEBQY7M8.cjs.map → version-common-AtNRQ5xH.cjs.map} +1 -1
- package/dist/{version-common-Cmd1f9JX.js → version-common-CudZ_WuW.js} +2 -2
- package/dist/{version-common-Cmd1f9JX.js.map → version-common-CudZ_WuW.js.map} +1 -1
- package/dist/{workflows-XfiENvkF.cjs → workflows--79xhOOb.cjs} +14 -3
- package/dist/workflows--79xhOOb.cjs.map +1 -0
- package/dist/{workflows-DPW6FrY0.js → workflows-B2ooCiwN.js} +9 -4
- package/dist/workflows-B2ooCiwN.js.map +1 -0
- package/package.json +6 -6
- package/dist/a2a-CHi9AJ0n.js.map +0 -1
- package/dist/a2a-CnU9zaGR.js.map +0 -1
- package/dist/a2a-D3ZYeXIx.cjs.map +0 -1
- package/dist/a2a-oM7aqLz4.cjs.map +0 -1
- package/dist/agents-CYvun9iI.js.map +0 -1
- package/dist/agents-Dk2qoJi_.cjs.map +0 -1
- package/dist/common-CPNOpqxA.js.map +0 -1
- package/dist/common-spbwhiWS.cjs.map +0 -1
- package/dist/dist-DgY0llRv.cjs.map +0 -1
- package/dist/dist-IUXZtNBY.js.map +0 -1
- package/dist/probe-image-size-BQgIJeY_.js.map +0 -1
- package/dist/probe-image-size-DYJVSL0b.cjs.map +0 -1
- package/dist/route-builder-CIk5k35M.js.map +0 -1
- package/dist/route-builder-CgLVYL1c.cjs.map +0 -1
- package/dist/routes-BzR8iVj4.cjs.map +0 -1
- package/dist/routes-C7iRCN_l.js.map +0 -1
- package/dist/schema-B8-5YCsA.js +0 -2
- package/dist/schema-BieM1qrc.cjs +0 -1
- package/dist/schema-Bv9OdW1f-BY6u3u8K.cjs.map +0 -1
- package/dist/schema-Bv9OdW1f-CIOfv-3w.js.map +0 -1
- package/dist/server/handlers/stored-workflows.cjs +0 -6
- package/dist/server/handlers/stored-workflows.d.ts +0 -820
- package/dist/server/handlers/stored-workflows.js +0 -2
- package/dist/server/schemas/stored-workflows.d.ts.map +0 -1
- package/dist/server/server-adapter/routes/stored-workflows.d.ts +0 -16
- package/dist/server/server-adapter/routes/stored-workflows.d.ts.map +0 -1
- package/dist/stored-workflows-OanG0TmB.js.map +0 -1
- package/dist/stored-workflows-pCiWK305.cjs.map +0 -1
- package/dist/workflows-DPW6FrY0.js.map +0 -1
- package/dist/workflows-XfiENvkF.cjs.map +0 -1
package/dist/docs/SKILL.md
CHANGED
|
@@ -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.
|
|
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
|
|
@@ -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
|
-
> **
|
|
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
|
|
178
|
-
| `
|
|
179
|
-
| `POST` | `/api/workflows/:workflowId/
|
|
180
|
-
| `POST` | `/api/workflows/:workflowId/
|
|
181
|
-
| `POST` | `/api/workflows/:workflowId/
|
|
182
|
-
| `POST` | `/api/workflows/:workflowId/resume
|
|
183
|
-
| `
|
|
184
|
-
| `GET` | `/api/workflows/:workflowId/runs
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
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
|
|