@mastra/server 1.82.0-alpha.1 → 1.82.0-alpha.3
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/dist/_types/{@internal_voice/dist/_types/@internal_core → @internal_voice@0.0.43/dist/_types/@internal_core@0.1.4}/dist/routes/index.d.ts +1 -1
- package/dist/_types/{@internal_voice → @internal_voice@0.0.43}/dist/routes/index.d.ts +15 -15
- package/dist/_types/{@mastra_schema-compat/dist/_types/@internal_ai-sdk-v4 → @mastra_schema-compat@1.3.17/dist/_types/@internal_ai-sdk-v4@0.0.94}/dist/index.d.ts +1 -1
- package/dist/_types/{@mastra_schema-compat/dist/_types/@internal_ai-sdk-v5 → @mastra_schema-compat@1.3.17/dist/_types/@internal_ai-sdk-v5@0.0.94}/dist/index.d.ts +2 -2
- package/dist/_types/{@mastra_schema-compat/dist/_types/@internal_ai-v6 → @mastra_schema-compat@1.3.17/dist/_types/@internal_ai-v6@0.0.94}/dist/index.d.ts +4 -4
- package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/provider-compats/anthropic.d.ts +2 -2
- package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/provider-compats/deepseek.d.ts +2 -2
- package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/provider-compats/google.d.ts +1 -1
- package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/provider-compats/meta.d.ts +2 -2
- package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/provider-compats/openai.d.ts +1 -1
- package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/schema.types.d.ts +4 -4
- package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/standard-schema/standard-schema.d.ts +2 -2
- package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/standard-schema/standard-schema.types.d.ts +1 -1
- package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/zod-to-json.d.ts +1 -1
- package/dist/{a2a-DULF2hBd.js → a2a-CoiG3TAj.js} +3 -3
- package/dist/{a2a-DULF2hBd.js.map → a2a-CoiG3TAj.js.map} +1 -1
- package/dist/{a2a-CIq9dtbC.cjs → a2a-DvqRdny6.cjs} +3 -3
- package/dist/{a2a-CIq9dtbC.cjs.map → a2a-DvqRdny6.cjs.map} +1 -1
- package/dist/{agent-builder-Cq-jo2FP.js → agent-builder-C_L1i2eE.js} +44 -41
- package/dist/agent-builder-C_L1i2eE.js.map +1 -0
- package/dist/{agent-builder-C1SGph1p.cjs → agent-builder-D0Up9Fw1.cjs} +44 -41
- package/dist/agent-builder-D0Up9Fw1.cjs.map +1 -0
- package/dist/{agent-versions-DX2rd6j_.cjs → agent-versions-BccL4mEW.cjs} +2 -2
- package/dist/{agent-versions-DX2rd6j_.cjs.map → agent-versions-BccL4mEW.cjs.map} +1 -1
- package/dist/{agent-versions-TUl6ky5W.js → agent-versions-DFJyxWY1.js} +2 -2
- package/dist/{agent-versions-TUl6ky5W.js.map → agent-versions-DFJyxWY1.js.map} +1 -1
- package/dist/{agents-B5kq2QEV.js → agents-BXqMKoOz.js} +3 -2
- package/dist/agents-BXqMKoOz.js.map +1 -0
- package/dist/{agents-NRBk4JAs.js → agents-CgcW6lHt.js} +112 -19
- package/dist/agents-CgcW6lHt.js.map +1 -0
- package/dist/{agents-SvkxJW48.cjs → agents-DOHGWXDa.cjs} +111 -18
- package/dist/agents-DOHGWXDa.cjs.map +1 -0
- package/dist/{agents-Cel1sffU.cjs → agents-DbnPZXIN.cjs} +3 -2
- package/dist/agents-DbnPZXIN.cjs.map +1 -0
- package/dist/{api-schema-manifest-C8E9EB-q.js → api-schema-manifest-Ci2qUYHc.js} +2 -2
- package/dist/{api-schema-manifest-C8E9EB-q.js.map → api-schema-manifest-Ci2qUYHc.js.map} +1 -1
- package/dist/{api-schema-manifest-CNjDZrQ8.cjs → api-schema-manifest-DCHOlOuJ.cjs} +2 -2
- package/dist/{api-schema-manifest-CNjDZrQ8.cjs.map → api-schema-manifest-DCHOlOuJ.cjs.map} +1 -1
- package/dist/{background-tasks-DhQ6upHK.js → background-tasks-BHhn4YZA.js} +42 -3
- package/dist/background-tasks-BHhn4YZA.js.map +1 -0
- package/dist/{background-tasks-Kcx2YtW0.cjs → background-tasks-Ci2tlxJC.cjs} +47 -2
- package/dist/background-tasks-Ci2tlxJC.cjs.map +1 -0
- package/dist/{builder-registry-CkPRx_vx.cjs → builder-registry-D1_hGKCJ.cjs} +2 -2
- package/dist/{builder-registry-CkPRx_vx.cjs.map → builder-registry-D1_hGKCJ.cjs.map} +1 -1
- package/dist/{builder-registry-6TFaV4oT.js → builder-registry-m_gHCe12.js} +2 -2
- package/dist/{builder-registry-6TFaV4oT.js.map → builder-registry-m_gHCe12.js.map} +1 -1
- package/dist/{conversations-Ds6aiCMU.cjs → conversations-Ch_VuVwY.cjs} +2 -2
- package/dist/{conversations-Ds6aiCMU.cjs.map → conversations-Ch_VuVwY.cjs.map} +1 -1
- package/dist/{conversations-CVvZOu1K.js → conversations-xS7yHuG1.js} +2 -2
- package/dist/{conversations-CVvZOu1K.js.map → conversations-xS7yHuG1.js.map} +1 -1
- package/dist/{dist-CPj7ZQaO.cjs → dist-BKNKucT9.cjs} +427 -290
- package/dist/dist-BKNKucT9.cjs.map +1 -0
- package/dist/{dist-DC2mND12.js → dist-CIYZuix4.js} +427 -290
- package/dist/dist-CIYZuix4.js.map +1 -0
- package/dist/{dist-Ch5YGldj.cjs → dist-DgKeISkr.cjs} +1 -1
- package/dist/dist-mNQb9_wX.js +1 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/reference-observability-tracing-advanced-queries.md +31 -11
- package/dist/{editor-builder-B8Mf4kJo.cjs → editor-builder-BaI8pttR.cjs} +2 -2
- package/dist/{editor-builder-B8Mf4kJo.cjs.map → editor-builder-BaI8pttR.cjs.map} +1 -1
- package/dist/{editor-builder-PKGDfYNc.js → editor-builder-Bln4Pg1U.js} +2 -2
- package/dist/{editor-builder-PKGDfYNc.js.map → editor-builder-Bln4Pg1U.js.map} +1 -1
- package/dist/{editor-builder-CcSeAW18.cjs → editor-builder-CKfy5eZY.cjs} +3 -3
- package/dist/{editor-builder-CcSeAW18.cjs.map → editor-builder-CKfy5eZY.cjs.map} +1 -1
- package/dist/{editor-builder-BG38irXi.js → editor-builder-Ceen28s8.js} +3 -3
- package/dist/{editor-builder-BG38irXi.js.map → editor-builder-Ceen28s8.js.map} +1 -1
- package/dist/{knowledge-DykIi0wH.js → knowledge-Ba74qr0v.js} +89 -2
- package/dist/knowledge-Ba74qr0v.js.map +1 -0
- package/dist/{knowledge-qu0om3W7.cjs → knowledge-urR7FFG8.cjs} +100 -1
- package/dist/knowledge-urR7FFG8.cjs.map +1 -0
- package/dist/{observability-dUv60Mzz.cjs → observability-BtdW6mjq.cjs} +2 -2
- package/dist/{observability-dUv60Mzz.cjs.map → observability-BtdW6mjq.cjs.map} +1 -1
- package/dist/{observability-BS5rmyEH.js → observability-DBtyAJnb.js} +2 -2
- package/dist/{observability-BS5rmyEH.js.map → observability-DBtyAJnb.js.map} +1 -1
- package/dist/{observability-new-endpoints-BORkWc9f.js → observability-new-endpoints-Di7m_-xc.js} +9 -9
- package/dist/observability-new-endpoints-Di7m_-xc.js.map +1 -0
- package/dist/{observability-new-endpoints-KJCQZLZr.cjs → observability-new-endpoints-jjCgXuTF.cjs} +8 -8
- package/dist/observability-new-endpoints-jjCgXuTF.cjs.map +1 -0
- package/dist/{plans-Cq23qQ48.cjs → plans-Djcp3C0d.cjs} +3 -3
- package/dist/{plans-Cq23qQ48.cjs.map → plans-Djcp3C0d.cjs.map} +1 -1
- package/dist/{plans-BRf1-Sch.js → plans-nHOnlGzr.js} +3 -3
- package/dist/{plans-BRf1-Sch.js.map → plans-nHOnlGzr.js.map} +1 -1
- package/dist/{probe-image-size-CSrQj2gm.cjs → probe-image-size-BAwk1h6w.cjs} +2 -2
- package/dist/{probe-image-size-CSrQj2gm.cjs.map → probe-image-size-BAwk1h6w.cjs.map} +1 -1
- package/dist/{probe-image-size-ssYltjkF.js → probe-image-size-DGTRKrgq.js} +2 -2
- package/dist/{probe-image-size-ssYltjkF.js.map → probe-image-size-DGTRKrgq.js.map} +1 -1
- package/dist/{responses-CPTdr5VE.cjs → responses-BdOStKtX.cjs} +2 -2
- package/dist/{responses-CPTdr5VE.cjs.map → responses-BdOStKtX.cjs.map} +1 -1
- package/dist/{responses-CGy87E_N.js → responses-CEet9y8G.js} +2 -2
- package/dist/{responses-CGy87E_N.js.map → responses-CEet9y8G.js.map} +1 -1
- package/dist/{routes-X0Gh3f3T.js → routes-5FpkkzND.js} +21 -18
- package/dist/routes-5FpkkzND.js.map +1 -0
- package/dist/{routes-DSBYmGyo.cjs → routes-DU_FlwJP.cjs} +21 -18
- package/dist/routes-DU_FlwJP.cjs.map +1 -0
- package/dist/{scorer-versions-DIcWTIgC.js → scorer-versions-BZ58s09W.js} +2 -2
- package/dist/{scorer-versions-DIcWTIgC.js.map → scorer-versions-BZ58s09W.js.map} +1 -1
- package/dist/{scorer-versions-BOjrlIcM.cjs → scorer-versions-vQVWyYWA.cjs} +2 -2
- package/dist/{scorer-versions-BOjrlIcM.cjs.map → scorer-versions-vQVWyYWA.cjs.map} +1 -1
- package/dist/{scores-DqSDYRs0.js → scores-BaDFGpmr.js} +2 -2
- package/dist/{scores-DqSDYRs0.js.map → scores-BaDFGpmr.js.map} +1 -1
- package/dist/{scores-BZ0Iz_0O.cjs → scores-Bw6Tuga5.cjs} +2 -2
- package/dist/{scores-BZ0Iz_0O.cjs.map → scores-Bw6Tuga5.cjs.map} +1 -1
- package/dist/server/handlers/a2a.cjs +1 -1
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +1 -1
- package/dist/server/handlers/agent-builder.d.ts.map +1 -1
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/agent-versions.cjs +2 -2
- package/dist/server/handlers/agent-versions.js +2 -2
- package/dist/server/handlers/agents.cjs +1 -1
- package/dist/server/handlers/agents.d.ts +18 -0
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +1 -1
- package/dist/server/handlers/background-tasks.cjs +2 -1
- package/dist/server/handlers/background-tasks.d.ts +89 -0
- 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.js +1 -1
- package/dist/server/handlers/conversations.cjs +1 -1
- package/dist/server/handlers/conversations.js +1 -1
- package/dist/server/handlers/editor-builder.cjs +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/knowledge.cjs +3 -1
- package/dist/server/handlers/knowledge.d.ts +95 -0
- package/dist/server/handlers/knowledge.d.ts.map +1 -1
- package/dist/server/handlers/knowledge.js +1 -1
- package/dist/server/handlers/mcp-client-versions.cjs +1 -1
- package/dist/server/handlers/mcp-client-versions.js +1 -1
- package/dist/server/handlers/observability-new-endpoints.cjs +1 -1
- package/dist/server/handlers/observability-new-endpoints.d.ts +248 -244
- 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 +19 -16
- package/dist/server/handlers/observability-shared.cjs.map +1 -1
- package/dist/server/handlers/observability-shared.d.ts +3 -3
- package/dist/server/handlers/observability-shared.d.ts.map +1 -1
- package/dist/server/handlers/observability-shared.js +18 -14
- package/dist/server/handlers/observability-shared.js.map +1 -1
- package/dist/server/handlers/observability.cjs +2 -2
- package/dist/server/handlers/observability.js +2 -2
- package/dist/server/handlers/plans.cjs +1 -1
- package/dist/server/handlers/plans.js +1 -1
- package/dist/server/handlers/prompt-block-versions.cjs +1 -1
- package/dist/server/handlers/prompt-block-versions.js +1 -1
- package/dist/server/handlers/responses.cjs +1 -1
- package/dist/server/handlers/responses.js +1 -1
- package/dist/server/handlers/scorer-versions.cjs +2 -2
- package/dist/server/handlers/scorer-versions.js +2 -2
- package/dist/server/handlers/scores.cjs +1 -1
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers/stored-agent-favorites.cjs +3 -3
- package/dist/server/handlers/stored-agent-favorites.js +3 -3
- package/dist/server/handlers/stored-agents.cjs +30 -11
- package/dist/server/handlers/stored-agents.cjs.map +1 -1
- package/dist/server/handlers/stored-agents.d.ts +56 -0
- package/dist/server/handlers/stored-agents.d.ts.map +1 -1
- package/dist/server/handlers/stored-agents.js +30 -11
- package/dist/server/handlers/stored-agents.js.map +1 -1
- package/dist/server/handlers/stored-mcp-clients.cjs +1 -1
- package/dist/server/handlers/stored-mcp-clients.js +1 -1
- package/dist/server/handlers/stored-prompt-blocks.cjs +1 -1
- package/dist/server/handlers/stored-prompt-blocks.js +1 -1
- package/dist/server/handlers/stored-scorers.cjs +2 -2
- package/dist/server/handlers/stored-scorers.js +2 -2
- package/dist/server/handlers/stored-skill-favorites.cjs +2 -2
- package/dist/server/handlers/stored-skill-favorites.js +2 -2
- package/dist/server/handlers/stored-skills.cjs +2 -2
- package/dist/server/handlers/stored-skills.js +2 -2
- package/dist/server/handlers/stored-workspaces.cjs +1 -1
- package/dist/server/handlers/stored-workspaces.js +1 -1
- package/dist/server/handlers/system.cjs +2 -2
- package/dist/server/handlers/system.d.ts +2 -0
- package/dist/server/handlers/system.d.ts.map +1 -1
- package/dist/server/handlers/system.js +2 -2
- package/dist/server/handlers/tools.cjs +1 -1
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/validate-agent-instructions.cjs +1 -1
- package/dist/server/handlers/validate-agent-instructions.js +1 -1
- package/dist/server/handlers/workflow-builder.cjs +1 -1
- package/dist/server/handlers/workflow-builder.js +1 -1
- package/dist/server/handlers/workflows.cjs +1 -1
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/handlers.cjs +10 -10
- package/dist/server/handlers.js +10 -10
- package/dist/server/schemas/agents.d.ts +4 -1
- package/dist/server/schemas/agents.d.ts.map +1 -1
- package/dist/server/schemas/background-tasks.d.ts +6 -0
- package/dist/server/schemas/background-tasks.d.ts.map +1 -1
- package/dist/server/schemas/feedback.d.ts +3 -3
- package/dist/server/schemas/index.cjs +7 -7
- package/dist/server/schemas/index.js +7 -7
- package/dist/server/schemas/knowledge.d.ts +29 -0
- package/dist/server/schemas/knowledge.d.ts.map +1 -1
- package/dist/server/schemas/stored-agents.d.ts +70 -0
- package/dist/server/schemas/stored-agents.d.ts.map +1 -1
- package/dist/server/schemas/system.d.ts +2 -0
- package/dist/server/schemas/system.d.ts.map +1 -1
- package/dist/server/server-adapter/api-schema-manifest.d.ts +1 -1
- package/dist/server/server-adapter/index.cjs +51 -3
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.js +51 -3
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/server/server-adapter/openapi-utils.d.ts +1 -1
- package/dist/server/server-adapter/routes/background-tasks.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/knowledge.d.ts +93 -0
- package/dist/server/server-adapter/routes/knowledge.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/observability.d.ts +124 -122
- package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/system.d.ts +2 -0
- package/dist/server/server-adapter/routes/system.d.ts.map +1 -1
- package/dist/server/utils.d.ts +13 -7
- package/dist/server/utils.d.ts.map +1 -1
- package/dist/{stored-agents-C9zCintA.js → stored-agents-DA8Zx6o9.js} +10 -1
- package/dist/stored-agents-DA8Zx6o9.js.map +1 -0
- package/dist/{stored-agents-LCHZldYH.cjs → stored-agents-TQ2lIFbx.cjs} +10 -1
- package/dist/stored-agents-TQ2lIFbx.cjs.map +1 -0
- package/dist/{stored-scorers-Dz9vAQcr.js → stored-scorers-DhOq8ZQC.js} +2 -2
- package/dist/{stored-scorers-Dz9vAQcr.js.map → stored-scorers-DhOq8ZQC.js.map} +1 -1
- package/dist/{stored-scorers-DxQds4_y.cjs → stored-scorers-FJOs5774.cjs} +2 -2
- package/dist/{stored-scorers-DxQds4_y.cjs.map → stored-scorers-FJOs5774.cjs.map} +1 -1
- package/dist/{system-B0_hRqFE.js → system-DT0pqJSk.js} +2 -1
- package/dist/system-DT0pqJSk.js.map +1 -0
- package/dist/{system-iruN6xnj.cjs → system-eeBLPCu1.cjs} +2 -1
- package/dist/system-eeBLPCu1.cjs.map +1 -0
- package/dist/{tools-CtELrYsA.js → tools-BAmCNGM5.js} +4 -4
- package/dist/{tools-CtELrYsA.js.map → tools-BAmCNGM5.js.map} +1 -1
- package/dist/{tools-DtRHH9Hr.cjs → tools-CI5oeJWT.cjs} +4 -4
- package/dist/{tools-DtRHH9Hr.cjs.map → tools-CI5oeJWT.cjs.map} +1 -1
- package/dist/{utils-bQ6Jhog6.cjs → utils-BhBJHsqX.cjs} +45 -24
- package/dist/{utils-bQ6Jhog6.cjs.map → utils-BhBJHsqX.cjs.map} +1 -1
- package/dist/{utils-qaBKOShQ.js → utils-Dy_dQTlK.js} +45 -24
- package/dist/{utils-qaBKOShQ.js.map → utils-Dy_dQTlK.js.map} +1 -1
- package/dist/{workflow-builder-6I2HiKcF.js → workflow-builder-CaSfD6oL.js} +3 -3
- package/dist/{workflow-builder-6I2HiKcF.js.map → workflow-builder-CaSfD6oL.js.map} +1 -1
- package/dist/{workflow-builder-CQzvZvwC.cjs → workflow-builder-tr_D_ZDN.cjs} +3 -3
- package/dist/{workflow-builder-CQzvZvwC.cjs.map → workflow-builder-tr_D_ZDN.cjs.map} +1 -1
- package/dist/{workflows-ClfVyB1p.js → workflows-BxXS5AfE.js} +4 -4
- package/dist/workflows-BxXS5AfE.js.map +1 -0
- package/dist/{workflows-DgSo-eBG.cjs → workflows-Cdi6w8JW.cjs} +4 -4
- package/dist/workflows-Cdi6w8JW.cjs.map +1 -0
- package/package.json +9 -9
- package/dist/agent-builder-C1SGph1p.cjs.map +0 -1
- package/dist/agent-builder-Cq-jo2FP.js.map +0 -1
- package/dist/agents-B5kq2QEV.js.map +0 -1
- package/dist/agents-Cel1sffU.cjs.map +0 -1
- package/dist/agents-NRBk4JAs.js.map +0 -1
- package/dist/agents-SvkxJW48.cjs.map +0 -1
- package/dist/background-tasks-DhQ6upHK.js.map +0 -1
- package/dist/background-tasks-Kcx2YtW0.cjs.map +0 -1
- package/dist/dist-CPj7ZQaO.cjs.map +0 -1
- package/dist/dist-DC2mND12.js.map +0 -1
- package/dist/dist-DDpKEjMk.js +0 -1
- package/dist/knowledge-DykIi0wH.js.map +0 -1
- package/dist/knowledge-qu0om3W7.cjs.map +0 -1
- package/dist/observability-new-endpoints-BORkWc9f.js.map +0 -1
- package/dist/observability-new-endpoints-KJCQZLZr.cjs.map +0 -1
- package/dist/routes-DSBYmGyo.cjs.map +0 -1
- package/dist/routes-X0Gh3f3T.js.map +0 -1
- package/dist/stored-agents-C9zCintA.js.map +0 -1
- package/dist/stored-agents-LCHZldYH.cjs.map +0 -1
- package/dist/system-B0_hRqFE.js.map +0 -1
- package/dist/system-iruN6xnj.cjs.map +0 -1
- package/dist/workflows-ClfVyB1p.js.map +0 -1
- package/dist/workflows-DgSo-eBG.cjs.map +0 -1
- /package/dist/_types/{@internal_core → @internal_core@0.1.4}/dist/storage/index.d.ts +0 -0
- /package/dist/_types/{@internal_core → @internal_core@0.1.4}/package.json +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/@internal_core → @internal_voice@0.0.43/dist/_types/@internal_core@0.1.4}/dist/request-context/index.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/@internal_core → @internal_voice@0.0.43/dist/_types/@internal_core@0.1.4}/dist/types/index.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/classic/checks.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/classic/coerce.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/classic/compat.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/classic/deep-partial.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/classic/errors.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/classic/external.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/classic/from-json-schema.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/classic/in-out.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/classic/index.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/classic/iso.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/classic/parse.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/classic/schemas.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/api.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/checks.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/compile.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/core.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/doc.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/errors.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/index.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/json-schema-generator.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/json-schema-processors.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/json-schema.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/memoizer.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/parse.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/regexes.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/registries.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/schemas.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/standard-schema.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/to-json-schema.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/util.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/core/versions.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/index.d.cts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/ar.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/az.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/be.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/bg.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/bn.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/ca.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/ckb.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/cs.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/da.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/de.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/el.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/en.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/eo.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/es.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/fa.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/fi.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/fr-CA.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/fr.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/gu.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/he.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/hi.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/hr.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/hu.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/hy.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/id.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/index.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/is.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/it.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/ja.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/ka.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/kh.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/km.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/kn.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/ko.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/lt.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/mk.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/ms.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/ne.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/nl.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/nn.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/no.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/ota.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/pl.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/ps.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/pt-BR.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/pt.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/ro.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/ru.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/sk.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/sl.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/sv.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/ta.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/tg.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/th.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/tk.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/tr.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/ua.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/uk.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/ur.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/uz.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/vi.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/yo.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/zh-CN.d.ts +0 -0
- /package/dist/_types/{@internal_voice/dist/_types/zod → @internal_voice@0.0.43/dist/_types/zod@4.6.7}/v4/locales/zh-TW.d.ts +0 -0
- /package/dist/_types/{@internal_voice → @internal_voice@0.0.43}/package.json +0 -0
- /package/dist/_types/{@mastra_schema-compat/dist/_types/@standard-schema_spec → @mastra_schema-compat@1.3.17/dist/_types/@standard-schema_spec@1.1.0}/dist/index.d.ts +0 -0
- /package/dist/_types/{@mastra_schema-compat/dist/_types/@types_json-schema → @mastra_schema-compat@1.3.17/dist/_types/@types_json-schema@7.0.15}/index.d.ts +0 -0
- /package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/index.d.ts +0 -0
- /package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/null-to-undefined.d.ts +0 -0
- /package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/provider-compats/openai-reasoning.d.ts +0 -0
- /package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/schema-compatibility-v3.d.ts +0 -0
- /package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/schema-compatibility-v4.d.ts +0 -0
- /package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/schema-compatibility.d.ts +0 -0
- /package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/schema.d.ts +0 -0
- /package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/standard-schema-compat.d.ts +0 -0
- /package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/types.d.ts +0 -0
- /package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/dist/utils.d.ts +0 -0
- /package/dist/_types/{@mastra_schema-compat → @mastra_schema-compat@1.3.17}/package.json +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents-DbnPZXIN.cjs","names":["z","typedPermissive","defaultOptionsSchema","coreMessageSchema","tracingOptionsSchema","messageResponseSchema"],"sources":["../src/server/schemas/agents.ts"],"sourcesContent":["import type {\n AgentExecutionOptions,\n PublicStructuredOutputOptions,\n ToolsetsInput,\n ToolsInput,\n} from '@mastra/core/agent';\nimport type { CoreMessageV4 } from '@mastra/core/agent/message-list';\nimport type { ScoringSamplingConfig } from '@mastra/core/evals';\nimport type { OutputType, SystemMessage } from '@mastra/core/llm';\nimport type { ReasoningLevel } from '@mastra/core/loop';\nimport { z } from 'zod/v4';\n\n/**\n * Structural mirror of LoopOptions['modelSettings'] (ai-sdk CallSettings minus\n * abortSignal, plus reasoning). CallSettings is not publicly exported from\n * @mastra/core, so its fields are restated here to keep declaration emit portable.\n */\n/**\n * Structural mirror of LoopOptions['stopWhen'] entries. The ai-sdk StopCondition\n * type is not publicly exported from @mastra/core, so an assignable function\n * shape is used to keep declaration emit portable.\n */\ntype StopConditionArg = (event: unknown) => boolean | PromiseLike<boolean>;\n\ntype ModelSettings = {\n maxOutputTokens?: number;\n temperature?: number;\n topP?: number;\n topK?: number;\n presencePenalty?: number;\n frequencyPenalty?: number;\n stopSequences?: string[];\n seed?: number;\n maxRetries?: number;\n headers?: Record<string, string | undefined>;\n reasoning?: ReasoningLevel;\n};\nimport { tracingOptionsSchema, coreMessageSchema, messageResponseSchema, typedPermissive } from './common';\nimport { defaultOptionsSchema } from './default-options';\n\nexport {\n generateSpeechBodySchema,\n getListenerResponseSchema,\n speakResponseSchema,\n transcribeSpeechBodySchema,\n transcribeSpeechResponseSchema,\n voiceSpeakersResponseSchema,\n} from '@internal/voice/routes';\n\ntype JsonValue = string | number | boolean | null | JsonValue[] | { [key: string]: JsonValue };\n\nconst jsonValueSchema: z.ZodType<JsonValue> = z.lazy(() =>\n z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.array(jsonValueSchema),\n z.record(z.string(), jsonValueSchema),\n ]),\n);\nconst jsonRecordSchema = z.record(z.string(), jsonValueSchema);\n\nconst signalAttributesSchema = z.record(\n z.string(),\n z.union([z.string(), z.number(), z.boolean(), z.null(), z.undefined()]),\n);\n\nconst baseSignalSchema = z.object({\n id: z.string().optional(),\n createdAt: z.union([z.string(), z.date()]).optional(),\n metadata: jsonRecordSchema.optional(),\n attributes: signalAttributesSchema.optional(),\n});\n\nconst partProviderOptionsSchema = z.record(z.string(), z.record(z.string(), jsonValueSchema)).optional();\n\nconst signalTextPartSchema = z.object({\n type: z.literal('text'),\n text: z.string(),\n providerOptions: partProviderOptionsSchema,\n});\n\nconst signalFilePartSchema = z.object({\n type: z.literal('file'),\n data: z.string(),\n mediaType: z.string(),\n filename: z.string().optional(),\n providerOptions: partProviderOptionsSchema,\n});\n\nconst userMessageSignalContentsSchema = z.union([\n z.string(),\n z.array(z.union([signalTextPartSchema, signalFilePartSchema])),\n]);\n\nconst agentMessageInputObjectSchema = z.object({\n contents: userMessageSignalContentsSchema,\n attributes: signalAttributesSchema.optional(),\n metadata: jsonRecordSchema.optional(),\n providerOptions: z.record(z.string(), z.record(z.string(), jsonValueSchema)).optional(),\n});\n\nconst agentMessageInputSchema = z.union([userMessageSignalContentsSchema, agentMessageInputObjectSchema]);\n\nconst agentSignalBaseSchema = baseSignalSchema.extend({\n tagName: z.string().optional(),\n contents: userMessageSignalContentsSchema,\n providerOptions: z.record(z.string(), z.record(z.string(), jsonValueSchema)).optional(),\n});\n\nconst agentSignalSchema = z.discriminatedUnion('type', [\n agentSignalBaseSchema.extend({\n type: z.literal('state'),\n transient: z.never().optional(),\n }),\n agentSignalBaseSchema.extend({\n type: z.enum(['user', 'reactive', 'notification', 'user-message', 'system-reminder']),\n transient: z.boolean().optional(),\n }),\n]);\n\n// Path parameter schemas\nexport const agentIdPathParams = z.object({\n agentId: z.string().describe('Unique identifier for the agent'),\n});\n\n/**\n * Query params for GET /agents/:agentId — controls which stored config version is used for overrides.\n * When `status` and `versionId` are both provided, `versionId` takes precedence.\n * - `status` — 'draft' (latest version) or 'published' (active published version, default).\n * - `versionId` — Resolve with a specific version ID.\n */\nexport const agentVersionQuerySchema = z.object({\n status: z\n .enum(['draft', 'published'])\n .optional()\n .describe(\n 'Which stored config version to resolve: draft (latest version) or published (active version, default). When both status and versionId are provided, versionId takes precedence.',\n ),\n versionId: z\n .string()\n .optional()\n .describe('Specific version ID to resolve. Takes precedence over status when both are provided.'),\n});\n\nexport const agentPlanQuerySchema = agentVersionQuerySchema.extend({\n path: z.string().describe('Relative path to a markdown plan under .mastracode/plans/'),\n});\n\nexport const agentPlanResponseSchema = z.object({\n path: z.string(),\n content: z.string(),\n});\n\nexport const toolIdPathParams = z.object({\n toolId: z.string().describe('Unique identifier for the tool'),\n});\n\nexport const agentRunPathParams = agentIdPathParams.extend({\n runId: z.string().min(1).describe('Unique identifier for the agent run'),\n});\n\nexport const agentToolPathParams = agentIdPathParams.extend({\n toolId: z.string().describe('Unique identifier for the tool'),\n});\n\nexport const agentSkillPathParams = agentIdPathParams.extend({\n skillName: z.string().describe('Name of the skill'),\n});\n\nexport const modelConfigIdPathParams = agentIdPathParams.extend({\n modelConfigId: z.string().describe('Unique identifier for the model configuration'),\n});\n\n/**\n * Schema for serialized processor metadata\n */\nexport const serializedProcessorSchema = z.object({\n id: z.string(),\n name: z.string().optional(),\n});\n\n/**\n * Schema for serialized tool with JSON schemas\n */\nexport const serializedToolSchema = z.object({\n id: z.string(),\n title: z.string().optional(),\n description: z.string().optional(),\n inputSchema: z.string().optional(),\n outputSchema: z.string().optional(),\n requestContextSchema: z.string().optional(),\n requireApproval: z.boolean().optional(),\n});\n\n/**\n * Schema for serialized workflow with steps\n */\nexport const serializedWorkflowSchema = z.object({\n name: z.string(),\n steps: z\n .record(\n z.string(),\n z.object({\n id: z.string(),\n description: z.string().optional(),\n }),\n )\n .optional(),\n});\n\n/**\n * Schema for serialized agent definition (referenced by other agents)\n */\nexport const serializedAgentDefinitionSchema = z.object({\n id: z.string(),\n name: z.string(),\n});\n\n/**\n * Schema for SystemMessage type\n * Can be string, string[], or various message objects\n */\nconst systemMessageSchema = typedPermissive<SystemMessage>(\n z.union([\n z.string(),\n z.array(z.string()),\n z.unknown(), // CoreSystemMessage or SystemModelMessage\n z.array(z.unknown()),\n ]),\n);\n\n/**\n * Schema for model configuration in model list\n */\nconst modelConfigSchema = z.object({\n id: z.string(),\n enabled: z.boolean(),\n maxRetries: z.number(),\n model: z.object({\n modelId: z.string(),\n provider: z.string(),\n modelVersion: z.string(),\n }),\n});\n\nconst serializedSkillSchema = z.object({\n name: z.string(),\n description: z.string(),\n license: z.string().optional(),\n path: z.string(),\n});\n\nconst agentEditorConfigSchema = z.union([\n z.literal(false),\n z.object({\n instructions: z.boolean().optional(),\n tools: z.union([z.boolean(), z.object({ description: z.boolean().optional() })]).optional(),\n model: z.boolean().optional(),\n }),\n]);\n\n/**\n * Main schema for serialized agent representation\n */\nexport const serializedAgentSchema = z.object({\n name: z.string(),\n description: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n instructions: systemMessageSchema.optional(),\n tools: z.record(z.string(), serializedToolSchema),\n agents: z.record(z.string(), serializedAgentDefinitionSchema),\n workflows: z.record(z.string(), serializedWorkflowSchema),\n skills: z.array(serializedSkillSchema),\n workspaceTools: z.array(z.string()),\n browserTools: z.array(z.string()),\n hasBrowser: z.boolean(),\n workspaceId: z.string().optional(),\n inputProcessors: z.array(serializedProcessorSchema),\n outputProcessors: z.array(serializedProcessorSchema),\n provider: z.string().optional(),\n modelId: z.string().optional(),\n modelVersion: z.string().optional(),\n supportsMemory: z.boolean().optional(),\n modelList: z.array(modelConfigSchema).optional(),\n modelListEditable: z\n .boolean()\n .optional()\n .describe('False when the model list comes from a function and cannot be reordered or edited'),\n defaultOptions: defaultOptionsSchema.optional(),\n defaultGenerateOptionsLegacy: z.record(z.string(), z.unknown()).optional(),\n defaultStreamOptionsLegacy: z.record(z.string(), z.unknown()).optional(),\n requestContextSchema: z.string().optional(),\n source: z.enum(['code', 'stored', 'fs']).optional(),\n status: z.enum(['draft', 'published', 'archived']).optional(),\n activeVersionId: z.string().optional(),\n hasDraft: z.boolean().optional(),\n editor: agentEditorConfigSchema.optional(),\n});\n\n/**\n * Schema for agent with ID\n */\nexport const serializedAgentWithIdSchema = serializedAgentSchema.extend({\n id: z.string(),\n});\n\n/**\n * Schema for individual provider information\n */\nexport const providerSchema = z.object({\n id: z.string(),\n name: z.string(),\n label: z.string().optional(),\n description: z.string().optional(),\n envVar: z.union([z.string(), z.array(z.string())]),\n connected: z.boolean(),\n docUrl: z.string().optional(),\n models: z.array(z.string()),\n modelReleaseDates: z.record(z.string(), z.string()).optional(),\n});\n\n/**\n * Schema for providers endpoint response\n */\nexport const providersResponseSchema = z.object({\n providers: z.array(providerSchema),\n});\n\nexport type ProviderListItem = z.infer<typeof providerSchema>;\n\n/**\n * Schema for list agents endpoint response\n * Returns a record of agent ID to serialized agent\n */\nexport const listAgentsResponseSchema = z.record(z.string(), serializedAgentSchema);\n\n/**\n * Schema for list tools endpoint response\n * Returns a record of tool ID to serialized tool\n */\nexport const listToolsResponseSchema = z.record(z.string(), serializedToolSchema);\n\n// ============================================================================\n// Agent Execution Body Schemas\n// ============================================================================\n\n/**\n * Schema for agent memory option\n */\nconst agentMemoryOptionSchema = z.object({\n thread: z.union([z.string(), z.object({ id: z.string() }).passthrough()]),\n /**\n * Optional so authenticated setups can rely on the server-derived resource ID\n * (`mapUserToResourceId` sets MASTRA_RESOURCE_ID_KEY in the request context, which\n * takes precedence over this value). Handlers return a 400 when neither the body\n * nor the request context provides a resource ID.\n */\n resource: z.string().optional(),\n options: z.record(z.string(), z.unknown()).optional(),\n readOnly: z.boolean().optional(),\n});\n\n/**\n * Schema for tool choice configuration\n */\nconst toolChoiceSchema = z.union([\n z.enum(['auto', 'none', 'required']),\n z.object({ type: z.literal('tool'), toolName: z.string() }),\n]);\n\n/**\n * Comprehensive body schema for agent generate and stream endpoints\n * Validates common fields while using passthrough for complex nested objects\n *\n * EXCLUDED FIELDS (not serializable):\n * - Callbacks: onStepFinish, onFinish, onChunk, onError, onAbort, prepareStep\n * - Class instances: inputProcessors, outputProcessors\n * - Non-serializable: abortSignal, tracingContext\n */\nexport const agentExecutionBodySchema = z\n .object({\n // REQUIRED\n messages: z.union([\n z.array(coreMessageSchema), // Array of messages\n z.string(), // Single user message shorthand\n ]),\n\n // Message Configuration\n instructions: systemMessageSchema.optional(),\n system: systemMessageSchema.optional(),\n // ModelMessage[] at runtime; handlers cast since the AI SDK ModelMessage\n // type is not portable for declaration emit.\n context: z.array(coreMessageSchema).optional(),\n\n // Memory & Persistence\n memory: agentMemoryOptionSchema.optional(),\n runId: z.string().optional(),\n savePerStep: z.boolean().optional(),\n\n // Request Context (handler-specific field - merged with server's requestContext)\n requestContext: z.record(z.string(), z.unknown()).optional(),\n\n // Version overrides for sub-agents (and future primitives)\n versions: z\n .object({\n agents: z\n .record(\n z.string(),\n z.union([z.object({ versionId: z.string() }), z.object({ status: z.enum(['draft', 'published']) })]),\n )\n .optional(),\n defaultStatus: z.enum(['draft', 'published']).optional(),\n })\n .optional(),\n\n // Execution Control\n maxSteps: z.number().optional(),\n // Stop conditions are functions and cannot be validated by zod.\n stopWhen: typedPermissive<StopConditionArg | StopConditionArg[]>(z.unknown()).optional(),\n\n // Model Configuration\n model: z.string().optional(),\n providerOptions: z.record(z.string(), z.record(z.string(), jsonValueSchema)).optional(),\n modelSettings: typedPermissive<ModelSettings>(z.unknown()).optional(),\n\n // Tool Configuration\n activeTools: z.array(z.string()).optional(),\n // Tool entries contain execute functions and cannot be validated by zod.\n toolsets: typedPermissive<ToolsetsInput>(z.record(z.string(), z.unknown())).optional(),\n clientTools: typedPermissive<ToolsInput>(z.record(z.string(), z.unknown())).optional(),\n toolChoice: toolChoiceSchema.optional(),\n requireToolApproval: z.boolean().optional(),\n\n // Evaluation\n scorers: typedPermissive<Record<string, { scorer: string; sampling?: ScoringSamplingConfig }>>(\n z.union([\n z.record(z.string(), z.unknown()),\n z.record(\n z.string(),\n z.object({\n scorer: z.string(),\n sampling: z.unknown().optional(),\n }),\n ),\n ]),\n ).optional(),\n returnScorerData: z.boolean().optional(),\n\n // Observability\n tracingOptions: tracingOptionsSchema.optional(),\n\n // Structured Output\n // Zod schema, JSON schema, or structured output object — cannot be validated by zod.\n output: typedPermissive<OutputType>(z.unknown()).optional(),\n // The concrete options type cannot be expressed field-by-field because of\n // the fallback discriminated union.\n structuredOutput: typedPermissive<PublicStructuredOutputOptions<Record<string, unknown>>>(\n z.object({\n schema: z.object({}).passthrough(),\n model: z.union([z.string(), z.unknown()]).optional(),\n instructions: z.string().optional(),\n jsonPromptInjection: z.boolean().optional(),\n errorStrategy: z.enum(['strict', 'warn', 'fallback']).optional(),\n fallbackValue: z.unknown().optional(),\n }),\n ).optional(),\n\n // Idle-loop streaming (collapses streamUntilIdle into stream)\n untilIdle: z.union([z.boolean(), z.object({ maxIdleMs: z.number().int().positive().optional() })]).optional(),\n })\n .passthrough(); // Allow additional fields for forward compatibility\n\n/**\n * Legacy body schema for deprecated endpoints that still use threadId/resourceId\n * Used by /agents/:agentId/generate-legacy and /agents/:agentId/stream-legacy\n */\nexport const agentExecutionLegacyBodySchema = agentExecutionBodySchema.extend({\n resourceId: z.string().optional(),\n resourceid: z.string().optional(), // lowercase variant\n threadId: z.string().optional(),\n // Legacy generate/stream expect AI SDK v4 CoreMessage context and a string system message.\n context: typedPermissive<CoreMessageV4[]>(z.array(coreMessageSchema)).optional(),\n system: typedPermissive<string>(systemMessageSchema).optional(),\n});\n\nexport const streamUntilIdleBodySchema = agentExecutionBodySchema.extend({\n maxIdleMs: z.number().int().positive().optional(),\n untilIdle: z.union([z.boolean(), z.object({ maxIdleMs: z.number().int().positive().optional() })]).optional(),\n});\n\nexport const resumeStreamUntilIdleBodySchema = agentExecutionBodySchema.omit({ messages: true }).extend({\n runId: z.string(),\n resumeData: z.unknown().refine(x => x !== undefined, { message: 'resumeData is required' }),\n toolCallId: z.string().optional(),\n maxIdleMs: z.number().int().positive().optional(),\n});\n/**\n * Body schema for tool execute endpoint\n * Simple schema - tool validates its own input data\n * Note: The .refine() ensures data is required\n * (bare z.unknown() is treated as optional by Zod)\n */\nconst executeToolDataBodySchema = z.object({\n data: z.unknown().refine(x => x !== undefined, { message: 'data is required' }),\n});\n\nexport const executeToolBodySchema = executeToolDataBodySchema.extend({\n requestContext: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const executeToolContextBodySchema = executeToolDataBodySchema.extend({\n requestContext: z.record(z.string(), z.unknown()).optional(),\n});\n\n// ============================================================================\n// Tool Approval Schemas\n// ============================================================================\n\n/**\n * Base schema for tool approval/decline operations\n * Both approve and decline use the same parameters\n */\nconst toolCallActionBodySchema = z.object({\n runId: z.string(),\n model: z.string().optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n toolCallId: z.string(),\n format: z.string().optional(),\n providerOptions: z.record(z.string(), z.record(z.string(), jsonValueSchema)).optional(),\n modelSettings: typedPermissive<ModelSettings>(z.unknown()).optional(),\n // Client tools must be re-sent on resume so the model can call them after the approval decision.\n clientTools: typedPermissive<ToolsInput>(z.record(z.string(), z.unknown())).optional(),\n});\nconst networkToolCallActionBodySchema = z.object({\n runId: z.string(),\n model: z.string().optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n format: z.string().optional(),\n});\n\n/**\n * Body schema for approving tool call\n */\nexport const approveToolCallBodySchema = toolCallActionBodySchema;\n\n/**\n * Body schema for declining tool call\n */\nexport const declineToolCallBodySchema = toolCallActionBodySchema.extend({\n /** Optional explanation surfaced to the model in place of the default decline message. */\n reason: z.string().optional(),\n});\n\n/**\n * Body schema for approving network tool call\n */\nexport const approveNetworkToolCallBodySchema = networkToolCallActionBodySchema;\n\n/**\n * Body schema for declining network tool call\n */\nexport const declineNetworkToolCallBodySchema = networkToolCallActionBodySchema.extend({\n /** Optional explanation surfaced in place of the default decline message. */\n reason: z.string().optional(),\n});\n\n/**\n * Response schema for tool approval/decline\n */\nexport const toolCallResponseSchema = z.object({\n fullStream: z.unknown(), // ReadableStream\n});\n\nexport const sendToolApprovalResponseSchema = z.object({\n accepted: z.literal(true),\n runId: z.string(),\n toolCallId: z.string().optional(),\n});\n\n/**\n * Query schema for listing suspended agent runs\n */\nexport const listSuspendedRunsQuerySchema = z\n .object({\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n fromDate: z.coerce.date().optional(),\n toDate: z.coerce.date().optional(),\n perPage: z.coerce.number().int().positive().optional(),\n // page is zero-indexed, so 0 is valid\n page: z.coerce.number().int().nonnegative().optional(),\n })\n .refine(data => !data.fromDate || !data.toDate || data.fromDate <= data.toDate, {\n message: 'fromDate must be less than or equal to toDate',\n path: ['fromDate'],\n });\n\n/**\n * Response schema for listing suspended agent runs\n */\nexport const listSuspendedRunsResponseSchema = z.object({\n runs: z.array(\n z.object({\n runId: z.string(),\n status: z.literal('suspended'),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n suspendedAt: z.date(),\n toolCalls: z.array(\n z.object({\n toolCallId: z.string().optional(),\n toolName: z.string().optional(),\n args: z.unknown().optional(),\n requiresApproval: z.boolean(),\n suspendPayload: z.unknown().optional(),\n }),\n ),\n }),\n ),\n total: z.number().int().nonnegative(),\n});\n\n// ============================================================================\n// Resume Stream Schema\n// ============================================================================\n\n/**\n * Body schema for resuming a suspended agent stream with custom data.\n * Extends the agent execution body without messages, since resume\n * continues from a prior suspension point rather than starting fresh.\n */\nexport const resumeStreamBodySchema = agentExecutionBodySchema.omit({ messages: true }).extend({\n runId: z.string(),\n resumeData: z.unknown().refine(x => x !== undefined, { message: 'resumeData is required' }),\n toolCallId: z.string().optional(),\n});\n\n// ============================================================================\n// Recover Schema\n// ============================================================================\n\n/**\n * Body schema for recovering an orphaned RUNNING durable-agent run.\n * Thread and resource are read from the persisted snapshot, so we only accept\n * the runId plus request-context / version overrides needed for auth and\n * routing.\n */\nexport const recoverBodySchema = z.object({\n runId: z.string(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n versions: z\n .object({\n agents: z\n .record(\n z.string(),\n z.union([z.object({ versionId: z.string() }), z.object({ status: z.enum(['draft', 'published']) })]),\n )\n .optional(),\n defaultStatus: z.enum(['draft', 'published']).optional(),\n })\n .optional(),\n});\n\n// ============================================================================\n// Model Management Schemas\n// ============================================================================\n\n/**\n * Body schema for updating agent model\n */\nexport const updateAgentModelBodySchema = z.object({\n modelId: z.string(),\n provider: z.string(),\n});\n\n/**\n * Body schema for reordering agent model list\n */\nexport const reorderAgentModelListBodySchema = z.object({\n reorderedModelIds: z.array(z.string()),\n});\n\n/**\n * Body schema for updating model in model list\n */\nexport const updateAgentModelInModelListBodySchema = z.object({\n model: z\n .object({\n modelId: z.string(),\n provider: z.string(),\n })\n .optional(),\n maxRetries: z.number().optional(),\n enabled: z.boolean().optional(),\n});\n\n/**\n * Response schema for model management operations\n */\nexport const modelManagementResponseSchema = messageResponseSchema;\n\n// ============================================================================\n// Response schemas for agent generation endpoints\n// These return AI SDK types which have complex structures\n// ============================================================================\n\nexport const generateResponseSchema = z.unknown(); // AI SDK GenerateResult type\nexport const streamResponseSchema = z.unknown(); // AI SDK StreamResult type\nexport const executeToolResponseSchema = z.unknown(); // Tool execution result varies by tool\n\n// ============================================================================\n// Instruction Enhancement Schemas\n// ============================================================================\n\n/**\n * Body schema for enhancing agent instructions\n */\nexport const enhanceInstructionsBodySchema = z.object({\n instructions: z.string().describe('The current agent instructions to enhance'),\n comment: z.string().describe('User comment describing how to enhance the instructions'),\n});\n\n/**\n * Response schema for enhanced instructions\n */\nexport const enhanceInstructionsResponseSchema = z.object({\n explanation: z.string().describe('Explanation of the changes made'),\n new_prompt: z.string().describe('The enhanced instructions'),\n});\n\n// ============================================================================\n// Observe (Resumable Streams) Schemas\n// ============================================================================\n\n/**\n * Body schema for observing an agent stream\n * Used to reconnect to an existing stream and receive missed events\n */\nexport const observeAgentBodySchema = z.object({\n runId: z.string().describe('The run ID to observe/reconnect to'),\n offset: z.number().optional().describe('Resume from this event index (0-based). If omitted, replays all events.'),\n});\n\nconst signalActiveBehaviorSchema = z.enum(['deliver', 'persist', 'discard']);\nconst signalIdleBehaviorSchema = z.enum(['wake', 'persist', 'discard']);\n\nconst signalTargetBaseBodySchema = z.object({\n ifActive: z\n .object({\n behavior: signalActiveBehaviorSchema.optional(),\n attributes: signalAttributesSchema.optional(),\n })\n .optional(),\n});\n\nconst signalTargetBodySchema = z.union([\n signalTargetBaseBodySchema.extend({\n runId: z.string(),\n resourceId: z.string().optional(),\n threadId: z.string().optional(),\n ifIdle: z.undefined().optional(),\n }),\n signalTargetBaseBodySchema.extend({\n runId: z.undefined().optional(),\n resourceId: z.string(),\n threadId: z.string(),\n ifIdle: z\n .object({\n behavior: signalIdleBehaviorSchema.optional(),\n streamOptions: agentExecutionBodySchema.omit({ messages: true }).optional(),\n attributes: signalAttributesSchema.optional(),\n })\n .optional(),\n }),\n]);\n\nexport const sendAgentSignalBodySchema = z.union([\n signalTargetBodySchema.options[0].extend({ signal: agentSignalSchema }),\n signalTargetBodySchema.options[1].extend({ signal: agentSignalSchema }),\n]);\n\nexport const sendAgentMessageBodySchema = z.union([\n signalTargetBodySchema.options[0].extend({ message: agentMessageInputSchema }),\n signalTargetBodySchema.options[1].extend({ message: agentMessageInputSchema }),\n]);\n\nexport const queueAgentMessageBodySchema = sendAgentMessageBodySchema;\nexport const queueAgentSignalBodySchema = sendAgentSignalBodySchema;\n\nconst agentThreadBodySchema = z.object({\n resourceId: z.string().optional(),\n threadId: z.string(),\n});\n\nexport const subscribeAgentThreadBodySchema = agentThreadBodySchema.extend({\n withRunStatus: z.boolean().optional().describe('Emit thread-run-status chunks, including retained outcomes'),\n withInitialHistory: z\n .union([z.boolean(), z.object({ perPage: z.number().int().positive().optional() })])\n .optional()\n .describe('Emit one thread-history chunk with stored messages before live parts'),\n});\n\nexport const abortAgentThreadBodySchema = agentThreadBodySchema.extend({\n threadId: z.string().min(1),\n clearPendingSignals: z.boolean().optional(),\n expectedRunId: z.string().optional(),\n});\n\nexport const cancelPendingAgentSignalsBodySchema = agentThreadBodySchema.extend({\n threadId: z.string().min(1),\n signalIds: z.array(z.string().min(1)).min(1).max(1000),\n});\n\nexport const cancelPendingAgentSignalsResponseSchema = z.object({\n cancelledSignalIds: z.array(z.string()),\n});\n\nexport const sendToolApprovalBodySchema = z.object({\n resourceId: z.string(),\n threadId: z.string(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n toolCallId: z.string(),\n approved: z.boolean(),\n resumeData: z.unknown().optional(),\n format: z.string().optional(),\n messages: z.array(coreMessageSchema).optional(),\n streamOptions: typedPermissive<AgentExecutionOptions<undefined>>(z.unknown()).optional(),\n});\n\nexport const abortAgentThreadResponseSchema = z.object({\n aborted: z.boolean(),\n});\n\n/**\n * Response schema for observe endpoint (streaming response)\n */\nexport const observeAgentResponseSchema = z.unknown(); // Streaming response\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { c as schemaToJsonSchema } from "./route-builder-BxPrwNog.js";
|
|
2
|
-
import { r as SERVER_ROUTES } from "./routes-
|
|
2
|
+
import { r as SERVER_ROUTES } from "./routes-5FpkkzND.js";
|
|
3
3
|
// src/server/server-adapter/api-schema-manifest.ts
|
|
4
4
|
function convertSchema(schema) {
|
|
5
5
|
return schema ? schemaToJsonSchema(schema) : void 0;
|
|
@@ -57,4 +57,4 @@ function buildApiSchemaManifest(routes = SERVER_ROUTES) {
|
|
|
57
57
|
}
|
|
58
58
|
export { buildApiSchemaManifest };
|
|
59
59
|
|
|
60
|
-
//# sourceMappingURL=api-schema-manifest-
|
|
60
|
+
//# sourceMappingURL=api-schema-manifest-Ci2qUYHc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-schema-manifest-
|
|
1
|
+
{"version":3,"file":"api-schema-manifest-Ci2qUYHc.js","names":[],"sources":["../src/server/server-adapter/api-schema-manifest.ts"],"sourcesContent":["import type { JSONSchema7 } from '@mastra/schema-compat';\nimport { schemaToJsonSchema } from './openapi-utils';\nimport { SERVER_ROUTES } from './routes/index';\nimport type { ServerRoute } from './routes/index';\n\nexport interface ApiSchemaResponseShape {\n kind: 'array' | 'record' | 'object-property' | 'single' | 'unknown';\n listProperty?: string;\n paginationProperty?: string;\n}\n\nexport interface ApiSchemaManifestRoute {\n method: string;\n path: string;\n responseType: string;\n pathParamSchema?: JSONSchema7;\n queryParamSchema?: JSONSchema7;\n bodySchema?: JSONSchema7;\n responseSchema?: JSONSchema7;\n responseShape: ApiSchemaResponseShape;\n}\n\nexport interface ApiSchemaManifest {\n version: 1;\n routes: ApiSchemaManifestRoute[];\n}\n\nfunction convertSchema(schema: ServerRoute['bodySchema']): JSONSchema7 | undefined {\n return schema ? schemaToJsonSchema(schema) : undefined;\n}\n\nfunction asJsonSchema(value: unknown): JSONSchema7 | undefined {\n return value && typeof value === 'object' && !Array.isArray(value) ? (value as JSONSchema7) : undefined;\n}\n\nfunction schemaType(schema: JSONSchema7 | undefined): JSONSchema7['type'] | undefined {\n const type = schema?.type;\n return Array.isArray(type) ? type.find(Boolean) : type;\n}\n\nfunction inferResponseShape(responseSchema: JSONSchema7 | undefined): ApiSchemaResponseShape {\n if (!responseSchema) return { kind: 'unknown' };\n\n const alternatives: unknown[] | undefined = responseSchema.anyOf ?? responseSchema.oneOf;\n if (alternatives?.length) {\n const shapes = alternatives.map(schema => inferResponseShape(asJsonSchema(schema)));\n const first = shapes[0]!;\n return shapes.every(\n shape =>\n shape.kind === first.kind &&\n shape.listProperty === first.listProperty &&\n shape.paginationProperty === first.paginationProperty,\n )\n ? first\n : { kind: 'single' };\n }\n\n const type = schemaType(responseSchema);\n if (type === 'array') return { kind: 'array' };\n if (type !== 'object') return { kind: 'single' };\n\n const properties =\n responseSchema.properties && !Array.isArray(responseSchema.properties) ? responseSchema.properties : {};\n const propertyNames = Object.keys(properties);\n const paginationProperty = 'page' in properties ? 'page' : 'pagination' in properties ? 'pagination' : undefined;\n const listProperty = Object.entries(properties).find(\n ([, property]) => schemaType(asJsonSchema(property)) === 'array',\n )?.[0];\n\n if (listProperty && (paginationProperty || propertyNames.length <= 2)) {\n return { kind: 'object-property', listProperty, paginationProperty };\n }\n if (responseSchema.additionalProperties && propertyNames.length === 0) return { kind: 'record' };\n return { kind: 'single' };\n}\n\n/** CLI flags cover all request variants; the endpoint still validates the selected variant. */\nexport function getApiSchemaPropertyNames(schema: JSONSchema7 | undefined): string[] {\n if (!schema) return [];\n const names = Object.keys(schema.properties ?? {});\n for (const branch of schema.anyOf ?? schema.oneOf ?? [])\n names.push(...getApiSchemaPropertyNames(asJsonSchema(branch)));\n return [...new Set(names)].sort();\n}\n\nfunction isManifestRoute(route: ServerRoute): boolean {\n return route.responseType === 'json' && !route.deprecated;\n}\n\nexport function buildApiSchemaManifest(routes: readonly ServerRoute[] = SERVER_ROUTES): ApiSchemaManifest {\n return {\n version: 1,\n routes: routes.filter(isManifestRoute).map(route => {\n const responseSchema = convertSchema(route.responseSchema);\n return {\n method: route.method,\n path: route.path,\n responseType: route.responseType,\n pathParamSchema: convertSchema(route.pathParamSchema),\n queryParamSchema: convertSchema(route.queryParamSchema),\n bodySchema: convertSchema(route.bodySchema),\n responseSchema,\n responseShape: inferResponseShape(responseSchema),\n };\n }),\n };\n}\n"],"mappings":";;;AA2BA,SAAS,cAAc,QAA4D;CACjF,OAAO,SAAS,mBAAmB,MAAM,IAAI,KAAA;AAC/C;AAEA,SAAS,aAAa,OAAyC;CAC7D,OAAO,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IAAK,QAAwB,KAAA;AAChG;AAEA,SAAS,WAAW,QAAkE;CACpF,MAAM,OAAO,QAAQ;CACrB,OAAO,MAAM,QAAQ,IAAI,IAAI,KAAK,KAAK,OAAO,IAAI;AACpD;AAEA,SAAS,mBAAmB,gBAAiE;CAC3F,IAAI,CAAC,gBAAgB,OAAO,EAAE,MAAM,UAAU;CAE9C,MAAM,eAAsC,eAAe,SAAS,eAAe;CACnF,IAAI,cAAc,QAAQ;EACxB,MAAM,SAAS,aAAa,KAAI,WAAU,mBAAmB,aAAa,MAAM,CAAC,CAAC;EAClF,MAAM,QAAQ,OAAO;EACrB,OAAO,OAAO,OACZ,UACE,MAAM,SAAS,MAAM,QACrB,MAAM,iBAAiB,MAAM,gBAC7B,MAAM,uBAAuB,MAAM,kBACvC,IACI,QACA,EAAE,MAAM,SAAS;CACvB;CAEA,MAAM,OAAO,WAAW,cAAc;CACtC,IAAI,SAAS,SAAS,OAAO,EAAE,MAAM,QAAQ;CAC7C,IAAI,SAAS,UAAU,OAAO,EAAE,MAAM,SAAS;CAE/C,MAAM,aACJ,eAAe,cAAc,CAAC,MAAM,QAAQ,eAAe,UAAU,IAAI,eAAe,aAAa,CAAC;CACxG,MAAM,gBAAgB,OAAO,KAAK,UAAU;CAC5C,MAAM,qBAAqB,UAAU,aAAa,SAAS,gBAAgB,aAAa,eAAe,KAAA;CACvG,MAAM,eAAe,OAAO,QAAQ,UAAU,CAAC,CAAC,MAC7C,GAAG,cAAc,WAAW,aAAa,QAAQ,CAAC,MAAM,OAC3D,CAAC,GAAG;CAEJ,IAAI,iBAAiB,sBAAsB,cAAc,UAAU,IACjE,OAAO;EAAE,MAAM;EAAmB;EAAc;CAAmB;CAErE,IAAI,eAAe,wBAAwB,cAAc,WAAW,GAAG,OAAO,EAAE,MAAM,SAAS;CAC/F,OAAO,EAAE,MAAM,SAAS;AAC1B;AAWA,SAAS,gBAAgB,OAA6B;CACpD,OAAO,MAAM,iBAAiB,UAAU,CAAC,MAAM;AACjD;AAEA,SAAgB,uBAAuB,SAAiC,eAAkC;CACxG,OAAO;EACL,SAAS;EACT,QAAQ,OAAO,OAAO,eAAe,CAAC,CAAC,KAAI,UAAS;GAClD,MAAM,iBAAiB,cAAc,MAAM,cAAc;GACzD,OAAO;IACL,QAAQ,MAAM;IACd,MAAM,MAAM;IACZ,cAAc,MAAM;IACpB,iBAAiB,cAAc,MAAM,eAAe;IACpD,kBAAkB,cAAc,MAAM,gBAAgB;IACtD,YAAY,cAAc,MAAM,UAAU;IAC1C;IACA,eAAe,mBAAmB,cAAc;GAClD;EACF,CAAC;CACH;AACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require("./rolldown-runtime-10nMEhjP.cjs");
|
|
2
2
|
const require_route_builder = require("./route-builder-CvARmqnA.cjs");
|
|
3
|
-
const require_routes = require("./routes-
|
|
3
|
+
const require_routes = require("./routes-DU_FlwJP.cjs");
|
|
4
4
|
// src/server/server-adapter/api-schema-manifest.ts
|
|
5
5
|
function convertSchema(schema) {
|
|
6
6
|
return schema ? require_route_builder.schemaToJsonSchema(schema) : void 0;
|
|
@@ -58,4 +58,4 @@ function buildApiSchemaManifest(routes = require_routes.SERVER_ROUTES) {
|
|
|
58
58
|
}
|
|
59
59
|
exports.buildApiSchemaManifest = buildApiSchemaManifest;
|
|
60
60
|
|
|
61
|
-
//# sourceMappingURL=api-schema-manifest-
|
|
61
|
+
//# sourceMappingURL=api-schema-manifest-DCHOlOuJ.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-schema-manifest-
|
|
1
|
+
{"version":3,"file":"api-schema-manifest-DCHOlOuJ.cjs","names":["schemaToJsonSchema","SERVER_ROUTES"],"sources":["../src/server/server-adapter/api-schema-manifest.ts"],"sourcesContent":["import type { JSONSchema7 } from '@mastra/schema-compat';\nimport { schemaToJsonSchema } from './openapi-utils';\nimport { SERVER_ROUTES } from './routes/index';\nimport type { ServerRoute } from './routes/index';\n\nexport interface ApiSchemaResponseShape {\n kind: 'array' | 'record' | 'object-property' | 'single' | 'unknown';\n listProperty?: string;\n paginationProperty?: string;\n}\n\nexport interface ApiSchemaManifestRoute {\n method: string;\n path: string;\n responseType: string;\n pathParamSchema?: JSONSchema7;\n queryParamSchema?: JSONSchema7;\n bodySchema?: JSONSchema7;\n responseSchema?: JSONSchema7;\n responseShape: ApiSchemaResponseShape;\n}\n\nexport interface ApiSchemaManifest {\n version: 1;\n routes: ApiSchemaManifestRoute[];\n}\n\nfunction convertSchema(schema: ServerRoute['bodySchema']): JSONSchema7 | undefined {\n return schema ? schemaToJsonSchema(schema) : undefined;\n}\n\nfunction asJsonSchema(value: unknown): JSONSchema7 | undefined {\n return value && typeof value === 'object' && !Array.isArray(value) ? (value as JSONSchema7) : undefined;\n}\n\nfunction schemaType(schema: JSONSchema7 | undefined): JSONSchema7['type'] | undefined {\n const type = schema?.type;\n return Array.isArray(type) ? type.find(Boolean) : type;\n}\n\nfunction inferResponseShape(responseSchema: JSONSchema7 | undefined): ApiSchemaResponseShape {\n if (!responseSchema) return { kind: 'unknown' };\n\n const alternatives: unknown[] | undefined = responseSchema.anyOf ?? responseSchema.oneOf;\n if (alternatives?.length) {\n const shapes = alternatives.map(schema => inferResponseShape(asJsonSchema(schema)));\n const first = shapes[0]!;\n return shapes.every(\n shape =>\n shape.kind === first.kind &&\n shape.listProperty === first.listProperty &&\n shape.paginationProperty === first.paginationProperty,\n )\n ? first\n : { kind: 'single' };\n }\n\n const type = schemaType(responseSchema);\n if (type === 'array') return { kind: 'array' };\n if (type !== 'object') return { kind: 'single' };\n\n const properties =\n responseSchema.properties && !Array.isArray(responseSchema.properties) ? responseSchema.properties : {};\n const propertyNames = Object.keys(properties);\n const paginationProperty = 'page' in properties ? 'page' : 'pagination' in properties ? 'pagination' : undefined;\n const listProperty = Object.entries(properties).find(\n ([, property]) => schemaType(asJsonSchema(property)) === 'array',\n )?.[0];\n\n if (listProperty && (paginationProperty || propertyNames.length <= 2)) {\n return { kind: 'object-property', listProperty, paginationProperty };\n }\n if (responseSchema.additionalProperties && propertyNames.length === 0) return { kind: 'record' };\n return { kind: 'single' };\n}\n\n/** CLI flags cover all request variants; the endpoint still validates the selected variant. */\nexport function getApiSchemaPropertyNames(schema: JSONSchema7 | undefined): string[] {\n if (!schema) return [];\n const names = Object.keys(schema.properties ?? {});\n for (const branch of schema.anyOf ?? schema.oneOf ?? [])\n names.push(...getApiSchemaPropertyNames(asJsonSchema(branch)));\n return [...new Set(names)].sort();\n}\n\nfunction isManifestRoute(route: ServerRoute): boolean {\n return route.responseType === 'json' && !route.deprecated;\n}\n\nexport function buildApiSchemaManifest(routes: readonly ServerRoute[] = SERVER_ROUTES): ApiSchemaManifest {\n return {\n version: 1,\n routes: routes.filter(isManifestRoute).map(route => {\n const responseSchema = convertSchema(route.responseSchema);\n return {\n method: route.method,\n path: route.path,\n responseType: route.responseType,\n pathParamSchema: convertSchema(route.pathParamSchema),\n queryParamSchema: convertSchema(route.queryParamSchema),\n bodySchema: convertSchema(route.bodySchema),\n responseSchema,\n responseShape: inferResponseShape(responseSchema),\n };\n }),\n };\n}\n"],"mappings":";;;;AA2BA,SAAS,cAAc,QAA4D;CACjF,OAAO,SAASA,sBAAAA,mBAAmB,MAAM,IAAI,KAAA;AAC/C;AAEA,SAAS,aAAa,OAAyC;CAC7D,OAAO,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IAAK,QAAwB,KAAA;AAChG;AAEA,SAAS,WAAW,QAAkE;CACpF,MAAM,OAAO,QAAQ;CACrB,OAAO,MAAM,QAAQ,IAAI,IAAI,KAAK,KAAK,OAAO,IAAI;AACpD;AAEA,SAAS,mBAAmB,gBAAiE;CAC3F,IAAI,CAAC,gBAAgB,OAAO,EAAE,MAAM,UAAU;CAE9C,MAAM,eAAsC,eAAe,SAAS,eAAe;CACnF,IAAI,cAAc,QAAQ;EACxB,MAAM,SAAS,aAAa,KAAI,WAAU,mBAAmB,aAAa,MAAM,CAAC,CAAC;EAClF,MAAM,QAAQ,OAAO;EACrB,OAAO,OAAO,OACZ,UACE,MAAM,SAAS,MAAM,QACrB,MAAM,iBAAiB,MAAM,gBAC7B,MAAM,uBAAuB,MAAM,kBACvC,IACI,QACA,EAAE,MAAM,SAAS;CACvB;CAEA,MAAM,OAAO,WAAW,cAAc;CACtC,IAAI,SAAS,SAAS,OAAO,EAAE,MAAM,QAAQ;CAC7C,IAAI,SAAS,UAAU,OAAO,EAAE,MAAM,SAAS;CAE/C,MAAM,aACJ,eAAe,cAAc,CAAC,MAAM,QAAQ,eAAe,UAAU,IAAI,eAAe,aAAa,CAAC;CACxG,MAAM,gBAAgB,OAAO,KAAK,UAAU;CAC5C,MAAM,qBAAqB,UAAU,aAAa,SAAS,gBAAgB,aAAa,eAAe,KAAA;CACvG,MAAM,eAAe,OAAO,QAAQ,UAAU,CAAC,CAAC,MAC7C,GAAG,cAAc,WAAW,aAAa,QAAQ,CAAC,MAAM,OAC3D,CAAC,GAAG;CAEJ,IAAI,iBAAiB,sBAAsB,cAAc,UAAU,IACjE,OAAO;EAAE,MAAM;EAAmB;EAAc;CAAmB;CAErE,IAAI,eAAe,wBAAwB,cAAc,WAAW,GAAG,OAAO,EAAE,MAAM,SAAS;CAC/F,OAAO,EAAE,MAAM,SAAS;AAC1B;AAWA,SAAS,gBAAgB,OAA6B;CACpD,OAAO,MAAM,iBAAiB,UAAU,CAAC,MAAM;AACjD;AAEA,SAAgB,uBAAuB,SAAiCC,eAAAA,eAAkC;CACxG,OAAO;EACL,SAAS;EACT,QAAQ,OAAO,OAAO,eAAe,CAAC,CAAC,KAAI,UAAS;GAClD,MAAM,iBAAiB,cAAc,MAAM,cAAc;GACzD,OAAO;IACL,QAAQ,MAAM;IACd,MAAM,MAAM;IACZ,cAAc,MAAM;IACpB,iBAAiB,cAAc,MAAM,eAAe;IACpD,kBAAkB,cAAc,MAAM,gBAAgB;IACtD,YAAY,cAAc,MAAM,UAAU;IAC1C;IACA,eAAe,mBAAmB,cAAc;GAClD;EACF,CAAC;CACH;AACF"}
|
|
@@ -64,7 +64,15 @@ const backgroundTaskResponseSchema = z$1.object({
|
|
|
64
64
|
retryCount: z$1.number(),
|
|
65
65
|
maxRetries: z$1.number(),
|
|
66
66
|
timeoutMs: z$1.number(),
|
|
67
|
-
suspendPayload: z$1.unknown().optional()
|
|
67
|
+
suspendPayload: z$1.unknown().optional(),
|
|
68
|
+
suspendedAt: z$1.date().optional()
|
|
69
|
+
});
|
|
70
|
+
const resumeBackgroundTaskBodySchema = z$1.object({
|
|
71
|
+
resumeData: z$1.unknown(),
|
|
72
|
+
suspendedAt: z$1.union([z$1.string().datetime({ offset: true }), z$1.number().int().nonnegative()]).optional()
|
|
73
|
+
}).refine((body) => body.resumeData !== void 0, {
|
|
74
|
+
message: "resumeData is required",
|
|
75
|
+
path: ["resumeData"]
|
|
68
76
|
});
|
|
69
77
|
const listBackgroundTaskResponseSchema = z$1.object({
|
|
70
78
|
tasks: z$1.array(backgroundTaskResponseSchema),
|
|
@@ -164,6 +172,37 @@ const GET_BACKGROUND_TASK_ROUTE = createRoute({
|
|
|
164
172
|
return task;
|
|
165
173
|
}
|
|
166
174
|
});
|
|
167
|
-
|
|
175
|
+
const RESUME_BACKGROUND_TASK_ROUTE = createRoute({
|
|
176
|
+
method: "POST",
|
|
177
|
+
path: "/background-tasks/:backgroundTaskId/resume",
|
|
178
|
+
responseType: "json",
|
|
179
|
+
pathParamSchema: backgroundTaskIdPathParams,
|
|
180
|
+
bodySchema: resumeBackgroundTaskBodySchema,
|
|
181
|
+
responseSchema: backgroundTaskResponseSchema,
|
|
182
|
+
summary: "Resume a suspended background task",
|
|
183
|
+
description: "Answers a suspended background task with resumeData. Pass the suspendedAt you read from the task to reject the answer with 409 if the task has resumed or suspended again since.",
|
|
184
|
+
tags: ["Background Tasks"],
|
|
185
|
+
requiresAuth: true,
|
|
186
|
+
handler: async ({ mastra, backgroundTaskId, resumeData, suspendedAt, requestContext }) => {
|
|
187
|
+
const { resourceId, scoped } = resolveResourceScope(requestContext, void 0);
|
|
188
|
+
const bgManager = mastra.backgroundTaskManager;
|
|
189
|
+
if (!bgManager) throw new HTTPException(404, { message: "Background task not found" });
|
|
190
|
+
const task = await bgManager.getTask(backgroundTaskId);
|
|
191
|
+
if (!task || scoped && task.resourceId !== resourceId) throw new HTTPException(404, { message: "Background task not found" });
|
|
192
|
+
if (task.status !== "suspended") throw new HTTPException(409, { message: `Background task is ${task.status}, not suspended` });
|
|
193
|
+
if (suspendedAt !== void 0 && new Date(suspendedAt).getTime() !== task.suspendedAt?.getTime()) throw new HTTPException(409, { message: "Background task suspension has changed since it was read" });
|
|
194
|
+
try {
|
|
195
|
+
await bgManager.resume(backgroundTaskId, resumeData, suspendedAt !== void 0 ? { suspendedAt: new Date(suspendedAt) } : void 0);
|
|
196
|
+
} catch (error) {
|
|
197
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
198
|
+
if (message.startsWith("Cannot resume task") || message.startsWith("Concurrency limit reached")) throw new HTTPException(409, { message });
|
|
199
|
+
throw error;
|
|
200
|
+
}
|
|
201
|
+
const resumed = await bgManager.getTask(backgroundTaskId);
|
|
202
|
+
if (!resumed) throw new HTTPException(404, { message: "Background task not found" });
|
|
203
|
+
return resumed;
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
export { RESUME_BACKGROUND_TASK_ROUTE as i, GET_BACKGROUND_TASK_ROUTE as n, LIST_BACKGROUND_TASKS_ROUTE as r, BACKGROUND_TASK_STREAM_ROUTE as t };
|
|
168
207
|
|
|
169
|
-
//# sourceMappingURL=background-tasks-
|
|
208
|
+
//# sourceMappingURL=background-tasks-BHhn4YZA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-tasks-BHhn4YZA.js","names":["z"],"sources":["../src/server/schemas/background-tasks.ts","../src/server/handlers/background-tasks.ts"],"sourcesContent":["import { z } from 'zod';\nimport { paginationNumber } from './common';\n\nexport const backgroundTaskStatusSchema = z.enum([\n 'pending',\n 'running',\n 'suspended',\n 'completed',\n 'failed',\n 'cancelled',\n 'timed_out',\n]);\n\nexport const backgroundTaskStreamQuerySchema = z.object({\n agentId: z.string().optional(),\n runId: z.string().optional(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n taskId: z.string().optional(),\n});\n\nexport const backgroundTaskDateColumnSchema = z.enum(['createdAt', 'startedAt', 'suspendedAt', 'completedAt']);\n\nexport const listBackgroundTasksQuerySchema = z.object({\n agentId: z.string().optional(),\n status: backgroundTaskStatusSchema.optional(),\n runId: z.string().optional(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n toolName: z.string().optional(),\n toolCallId: z.string().optional(),\n fromDate: z.coerce.date().optional(),\n toDate: z.coerce.date().optional(),\n dateFilterBy: backgroundTaskDateColumnSchema.optional(),\n orderBy: backgroundTaskDateColumnSchema.optional(),\n orderDirection: z.enum(['asc', 'desc']).optional(),\n page: paginationNumber().optional(),\n perPage: paginationNumber().optional(),\n});\n\nexport const backgroundTaskIdPathParams = z.object({\n backgroundTaskId: z.string(),\n});\n\nexport const backgroundTaskResponseSchema = z.object({\n id: z.string(),\n status: backgroundTaskStatusSchema,\n toolName: z.string(),\n toolCallId: z.string(),\n args: z.record(z.string(), z.unknown()),\n agentId: z.string(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n runId: z.string(),\n result: z.unknown().optional(),\n error: z.object({ message: z.string(), stack: z.string().optional() }).optional(),\n createdAt: z.date(),\n startedAt: z.date().optional(),\n completedAt: z.date().optional(),\n retryCount: z.number(),\n maxRetries: z.number(),\n timeoutMs: z.number(),\n suspendPayload: z.unknown().optional(),\n suspendedAt: z.date().optional(),\n});\n\nexport const resumeBackgroundTaskBodySchema = z\n .object({\n // A background tool treats a missing `resumeData` as a fresh run, so an\n // answer must carry one (any value, `null` included).\n resumeData: z.unknown(),\n // The `suspendedAt` of the suspension being answered (ISO string or epoch\n // milliseconds, as read from the task). A task that has since resumed or\n // suspended again is rejected with 409 instead of receiving a stale answer.\n suspendedAt: z.union([z.string().datetime({ offset: true }), z.number().int().nonnegative()]).optional(),\n })\n // `z.unknown()` alone lets a missing key through on Zod 3 and Zod 4 before 4.4.\n .refine(body => body.resumeData !== undefined, { message: 'resumeData is required', path: ['resumeData'] });\n\nexport const listBackgroundTaskResponseSchema = z.object({\n tasks: z.array(backgroundTaskResponseSchema),\n total: z.number(),\n});\n\nexport const backgroundTaskStreamResponseSchema = z.unknown();\n","import { HTTPException } from '../http-exception';\nimport {\n backgroundTaskResponseSchema,\n backgroundTaskStreamQuerySchema,\n backgroundTaskStreamResponseSchema,\n listBackgroundTaskResponseSchema,\n listBackgroundTasksQuerySchema,\n backgroundTaskIdPathParams,\n resumeBackgroundTaskBodySchema,\n} from '../schemas/background-tasks';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getContextResourceId } from './utils';\n\n/**\n * Resolves the resource filter for a background-task request. A resource-scoped caller\n * is pinned to its own resource and may not request another one; a privileged caller\n * (no resource in the request context) keeps the client-provided filter.\n */\nfunction resolveResourceScope(\n requestContext: Parameters<typeof getContextResourceId>[0],\n clientResourceId: string | undefined,\n): { resourceId: string | undefined; scoped: boolean } {\n const contextResourceId = getContextResourceId(requestContext);\n if (contextResourceId === undefined) return { resourceId: clientResourceId, scoped: false };\n // An empty resource id must not be mistaken for a privileged (unscoped) caller, and\n // storage filters ignore empty strings, so it cannot be scoped safely either.\n if (contextResourceId === '') {\n throw new HTTPException(403, { message: 'Access denied: authenticated resourceId is empty' });\n }\n if (clientResourceId !== undefined && clientResourceId !== contextResourceId) {\n throw new HTTPException(403, { message: 'Access denied: resourceId does not match the authenticated resource' });\n }\n return { resourceId: contextResourceId, scoped: true };\n}\n\nexport const BACKGROUND_TASK_STREAM_ROUTE = createRoute({\n method: 'GET',\n path: '/background-tasks/stream',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n queryParamSchema: backgroundTaskStreamQuerySchema,\n responseSchema: backgroundTaskStreamResponseSchema,\n summary: 'Stream background task events via SSE',\n description: 'Real-time Server-Sent Events stream of background task completion/failure events.',\n tags: ['Background Tasks'],\n requiresAuth: true,\n handler: async ({\n mastra,\n agentId,\n runId,\n threadId,\n resourceId: clientResourceId,\n taskId,\n abortSignal,\n requestContext,\n }) => {\n const { resourceId, scoped } = resolveResourceScope(requestContext, clientResourceId);\n const bgManager = mastra.backgroundTaskManager;\n if (!bgManager) {\n // Background tasks are not enabled — return an empty stream that stays\n // open until the client disconnects. This avoids spamming the logs with\n // false-positive errors when clients (e.g. the studio UI) optimistically\n // subscribe to the stream.\n return new ReadableStream({\n start(controller) {\n abortSignal?.addEventListener('abort', () => {\n try {\n controller.close();\n } catch {\n // Already closed\n }\n });\n },\n });\n }\n\n return bgManager.stream({ agentId, runId, threadId, resourceId, taskId, abortSignal, allResources: !scoped });\n },\n});\n\nexport const LIST_BACKGROUND_TASKS_ROUTE = createRoute({\n method: 'GET',\n path: '/background-tasks',\n responseType: 'json' as const,\n queryParamSchema: listBackgroundTasksQuerySchema,\n responseSchema: listBackgroundTaskResponseSchema,\n summary: 'List background tasks',\n description: 'Returns background tasks filtered by status, agent, run, etc.',\n tags: ['Background Tasks'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, ...params }) => {\n const { resourceId } = resolveResourceScope(requestContext, params.resourceId);\n const bgManager = mastra.backgroundTaskManager;\n if (!bgManager) {\n // Background tasks not enabled — there are no tasks to return.\n return { tasks: [], total: 0 };\n }\n\n return bgManager.listTasks({ ...params, resourceId });\n },\n});\n\nexport const GET_BACKGROUND_TASK_ROUTE = createRoute({\n method: 'GET',\n path: '/background-tasks/:backgroundTaskId',\n responseType: 'json' as const,\n pathParamSchema: backgroundTaskIdPathParams,\n responseSchema: backgroundTaskResponseSchema,\n summary: 'Get a background task by ID',\n description: 'Returns a background task by ID.',\n tags: ['Background Tasks'],\n requiresAuth: true,\n handler: async ({ mastra, backgroundTaskId, requestContext }) => {\n const { resourceId, scoped } = resolveResourceScope(requestContext, undefined);\n const bgManager = mastra.backgroundTaskManager;\n if (!bgManager) {\n // Background tasks not enabled — the task can't exist.\n throw new HTTPException(404, { message: 'Background task not found' });\n }\n\n const task = await bgManager.getTask(backgroundTaskId);\n // Report another resource's task as missing so its existence is not disclosed.\n if (!task || (scoped && task.resourceId !== resourceId)) {\n throw new HTTPException(404, { message: 'Background task not found' });\n }\n return task;\n },\n});\n\nexport const RESUME_BACKGROUND_TASK_ROUTE = createRoute({\n method: 'POST',\n path: '/background-tasks/:backgroundTaskId/resume',\n responseType: 'json' as const,\n pathParamSchema: backgroundTaskIdPathParams,\n bodySchema: resumeBackgroundTaskBodySchema,\n responseSchema: backgroundTaskResponseSchema,\n summary: 'Resume a suspended background task',\n description:\n 'Answers a suspended background task with resumeData. Pass the suspendedAt you read from the task to reject the answer with 409 if the task has resumed or suspended again since.',\n tags: ['Background Tasks'],\n requiresAuth: true,\n handler: async ({ mastra, backgroundTaskId, resumeData, suspendedAt, requestContext }) => {\n const { resourceId, scoped } = resolveResourceScope(requestContext, undefined);\n const bgManager = mastra.backgroundTaskManager;\n if (!bgManager) {\n throw new HTTPException(404, { message: 'Background task not found' });\n }\n\n const task = await bgManager.getTask(backgroundTaskId);\n // Report another resource's task as missing so its existence is not disclosed.\n if (!task || (scoped && task.resourceId !== resourceId)) {\n throw new HTTPException(404, { message: 'Background task not found' });\n }\n if (task.status !== 'suspended') {\n throw new HTTPException(409, { message: `Background task is ${task.status}, not suspended` });\n }\n if (suspendedAt !== undefined && new Date(suspendedAt).getTime() !== task.suspendedAt?.getTime()) {\n throw new HTTPException(409, { message: 'Background task suspension has changed since it was read' });\n }\n\n try {\n await bgManager.resume(\n backgroundTaskId,\n resumeData,\n suspendedAt !== undefined ? { suspendedAt: new Date(suspendedAt) } : undefined,\n );\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n // Lost a race with another resume, a new suspension or a cancel, or no slot is free right now.\n if (message.startsWith('Cannot resume task') || message.startsWith('Concurrency limit reached')) {\n throw new HTTPException(409, { message });\n }\n throw error;\n }\n\n const resumed = await bgManager.getTask(backgroundTaskId);\n if (!resumed) throw new HTTPException(404, { message: 'Background task not found' });\n return resumed;\n },\n});\n"],"mappings":"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"}
|
|
@@ -64,7 +64,15 @@ const backgroundTaskResponseSchema = zod.z.object({
|
|
|
64
64
|
retryCount: zod.z.number(),
|
|
65
65
|
maxRetries: zod.z.number(),
|
|
66
66
|
timeoutMs: zod.z.number(),
|
|
67
|
-
suspendPayload: zod.z.unknown().optional()
|
|
67
|
+
suspendPayload: zod.z.unknown().optional(),
|
|
68
|
+
suspendedAt: zod.z.date().optional()
|
|
69
|
+
});
|
|
70
|
+
const resumeBackgroundTaskBodySchema = zod.z.object({
|
|
71
|
+
resumeData: zod.z.unknown(),
|
|
72
|
+
suspendedAt: zod.z.union([zod.z.string().datetime({ offset: true }), zod.z.number().int().nonnegative()]).optional()
|
|
73
|
+
}).refine((body) => body.resumeData !== void 0, {
|
|
74
|
+
message: "resumeData is required",
|
|
75
|
+
path: ["resumeData"]
|
|
68
76
|
});
|
|
69
77
|
const listBackgroundTaskResponseSchema = zod.z.object({
|
|
70
78
|
tasks: zod.z.array(backgroundTaskResponseSchema),
|
|
@@ -164,6 +172,37 @@ const GET_BACKGROUND_TASK_ROUTE = require_route_builder.createRoute({
|
|
|
164
172
|
return task;
|
|
165
173
|
}
|
|
166
174
|
});
|
|
175
|
+
const RESUME_BACKGROUND_TASK_ROUTE = require_route_builder.createRoute({
|
|
176
|
+
method: "POST",
|
|
177
|
+
path: "/background-tasks/:backgroundTaskId/resume",
|
|
178
|
+
responseType: "json",
|
|
179
|
+
pathParamSchema: backgroundTaskIdPathParams,
|
|
180
|
+
bodySchema: resumeBackgroundTaskBodySchema,
|
|
181
|
+
responseSchema: backgroundTaskResponseSchema,
|
|
182
|
+
summary: "Resume a suspended background task",
|
|
183
|
+
description: "Answers a suspended background task with resumeData. Pass the suspendedAt you read from the task to reject the answer with 409 if the task has resumed or suspended again since.",
|
|
184
|
+
tags: ["Background Tasks"],
|
|
185
|
+
requiresAuth: true,
|
|
186
|
+
handler: async ({ mastra, backgroundTaskId, resumeData, suspendedAt, requestContext }) => {
|
|
187
|
+
const { resourceId, scoped } = resolveResourceScope(requestContext, void 0);
|
|
188
|
+
const bgManager = mastra.backgroundTaskManager;
|
|
189
|
+
if (!bgManager) throw new require_http_exception.HTTPException(404, { message: "Background task not found" });
|
|
190
|
+
const task = await bgManager.getTask(backgroundTaskId);
|
|
191
|
+
if (!task || scoped && task.resourceId !== resourceId) throw new require_http_exception.HTTPException(404, { message: "Background task not found" });
|
|
192
|
+
if (task.status !== "suspended") throw new require_http_exception.HTTPException(409, { message: `Background task is ${task.status}, not suspended` });
|
|
193
|
+
if (suspendedAt !== void 0 && new Date(suspendedAt).getTime() !== task.suspendedAt?.getTime()) throw new require_http_exception.HTTPException(409, { message: "Background task suspension has changed since it was read" });
|
|
194
|
+
try {
|
|
195
|
+
await bgManager.resume(backgroundTaskId, resumeData, suspendedAt !== void 0 ? { suspendedAt: new Date(suspendedAt) } : void 0);
|
|
196
|
+
} catch (error) {
|
|
197
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
198
|
+
if (message.startsWith("Cannot resume task") || message.startsWith("Concurrency limit reached")) throw new require_http_exception.HTTPException(409, { message });
|
|
199
|
+
throw error;
|
|
200
|
+
}
|
|
201
|
+
const resumed = await bgManager.getTask(backgroundTaskId);
|
|
202
|
+
if (!resumed) throw new require_http_exception.HTTPException(404, { message: "Background task not found" });
|
|
203
|
+
return resumed;
|
|
204
|
+
}
|
|
205
|
+
});
|
|
167
206
|
Object.defineProperty(exports, "BACKGROUND_TASK_STREAM_ROUTE", {
|
|
168
207
|
enumerable: true,
|
|
169
208
|
get: function() {
|
|
@@ -182,5 +221,11 @@ Object.defineProperty(exports, "LIST_BACKGROUND_TASKS_ROUTE", {
|
|
|
182
221
|
return LIST_BACKGROUND_TASKS_ROUTE;
|
|
183
222
|
}
|
|
184
223
|
});
|
|
224
|
+
Object.defineProperty(exports, "RESUME_BACKGROUND_TASK_ROUTE", {
|
|
225
|
+
enumerable: true,
|
|
226
|
+
get: function() {
|
|
227
|
+
return RESUME_BACKGROUND_TASK_ROUTE;
|
|
228
|
+
}
|
|
229
|
+
});
|
|
185
230
|
|
|
186
|
-
//# sourceMappingURL=background-tasks-
|
|
231
|
+
//# sourceMappingURL=background-tasks-Ci2tlxJC.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-tasks-Ci2tlxJC.cjs","names":["z","paginationNumber","getContextResourceId","HTTPException","createRoute"],"sources":["../src/server/schemas/background-tasks.ts","../src/server/handlers/background-tasks.ts"],"sourcesContent":["import { z } from 'zod';\nimport { paginationNumber } from './common';\n\nexport const backgroundTaskStatusSchema = z.enum([\n 'pending',\n 'running',\n 'suspended',\n 'completed',\n 'failed',\n 'cancelled',\n 'timed_out',\n]);\n\nexport const backgroundTaskStreamQuerySchema = z.object({\n agentId: z.string().optional(),\n runId: z.string().optional(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n taskId: z.string().optional(),\n});\n\nexport const backgroundTaskDateColumnSchema = z.enum(['createdAt', 'startedAt', 'suspendedAt', 'completedAt']);\n\nexport const listBackgroundTasksQuerySchema = z.object({\n agentId: z.string().optional(),\n status: backgroundTaskStatusSchema.optional(),\n runId: z.string().optional(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n toolName: z.string().optional(),\n toolCallId: z.string().optional(),\n fromDate: z.coerce.date().optional(),\n toDate: z.coerce.date().optional(),\n dateFilterBy: backgroundTaskDateColumnSchema.optional(),\n orderBy: backgroundTaskDateColumnSchema.optional(),\n orderDirection: z.enum(['asc', 'desc']).optional(),\n page: paginationNumber().optional(),\n perPage: paginationNumber().optional(),\n});\n\nexport const backgroundTaskIdPathParams = z.object({\n backgroundTaskId: z.string(),\n});\n\nexport const backgroundTaskResponseSchema = z.object({\n id: z.string(),\n status: backgroundTaskStatusSchema,\n toolName: z.string(),\n toolCallId: z.string(),\n args: z.record(z.string(), z.unknown()),\n agentId: z.string(),\n threadId: z.string().optional(),\n resourceId: z.string().optional(),\n runId: z.string(),\n result: z.unknown().optional(),\n error: z.object({ message: z.string(), stack: z.string().optional() }).optional(),\n createdAt: z.date(),\n startedAt: z.date().optional(),\n completedAt: z.date().optional(),\n retryCount: z.number(),\n maxRetries: z.number(),\n timeoutMs: z.number(),\n suspendPayload: z.unknown().optional(),\n suspendedAt: z.date().optional(),\n});\n\nexport const resumeBackgroundTaskBodySchema = z\n .object({\n // A background tool treats a missing `resumeData` as a fresh run, so an\n // answer must carry one (any value, `null` included).\n resumeData: z.unknown(),\n // The `suspendedAt` of the suspension being answered (ISO string or epoch\n // milliseconds, as read from the task). A task that has since resumed or\n // suspended again is rejected with 409 instead of receiving a stale answer.\n suspendedAt: z.union([z.string().datetime({ offset: true }), z.number().int().nonnegative()]).optional(),\n })\n // `z.unknown()` alone lets a missing key through on Zod 3 and Zod 4 before 4.4.\n .refine(body => body.resumeData !== undefined, { message: 'resumeData is required', path: ['resumeData'] });\n\nexport const listBackgroundTaskResponseSchema = z.object({\n tasks: z.array(backgroundTaskResponseSchema),\n total: z.number(),\n});\n\nexport const backgroundTaskStreamResponseSchema = z.unknown();\n","import { HTTPException } from '../http-exception';\nimport {\n backgroundTaskResponseSchema,\n backgroundTaskStreamQuerySchema,\n backgroundTaskStreamResponseSchema,\n listBackgroundTaskResponseSchema,\n listBackgroundTasksQuerySchema,\n backgroundTaskIdPathParams,\n resumeBackgroundTaskBodySchema,\n} from '../schemas/background-tasks';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getContextResourceId } from './utils';\n\n/**\n * Resolves the resource filter for a background-task request. A resource-scoped caller\n * is pinned to its own resource and may not request another one; a privileged caller\n * (no resource in the request context) keeps the client-provided filter.\n */\nfunction resolveResourceScope(\n requestContext: Parameters<typeof getContextResourceId>[0],\n clientResourceId: string | undefined,\n): { resourceId: string | undefined; scoped: boolean } {\n const contextResourceId = getContextResourceId(requestContext);\n if (contextResourceId === undefined) return { resourceId: clientResourceId, scoped: false };\n // An empty resource id must not be mistaken for a privileged (unscoped) caller, and\n // storage filters ignore empty strings, so it cannot be scoped safely either.\n if (contextResourceId === '') {\n throw new HTTPException(403, { message: 'Access denied: authenticated resourceId is empty' });\n }\n if (clientResourceId !== undefined && clientResourceId !== contextResourceId) {\n throw new HTTPException(403, { message: 'Access denied: resourceId does not match the authenticated resource' });\n }\n return { resourceId: contextResourceId, scoped: true };\n}\n\nexport const BACKGROUND_TASK_STREAM_ROUTE = createRoute({\n method: 'GET',\n path: '/background-tasks/stream',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n queryParamSchema: backgroundTaskStreamQuerySchema,\n responseSchema: backgroundTaskStreamResponseSchema,\n summary: 'Stream background task events via SSE',\n description: 'Real-time Server-Sent Events stream of background task completion/failure events.',\n tags: ['Background Tasks'],\n requiresAuth: true,\n handler: async ({\n mastra,\n agentId,\n runId,\n threadId,\n resourceId: clientResourceId,\n taskId,\n abortSignal,\n requestContext,\n }) => {\n const { resourceId, scoped } = resolveResourceScope(requestContext, clientResourceId);\n const bgManager = mastra.backgroundTaskManager;\n if (!bgManager) {\n // Background tasks are not enabled — return an empty stream that stays\n // open until the client disconnects. This avoids spamming the logs with\n // false-positive errors when clients (e.g. the studio UI) optimistically\n // subscribe to the stream.\n return new ReadableStream({\n start(controller) {\n abortSignal?.addEventListener('abort', () => {\n try {\n controller.close();\n } catch {\n // Already closed\n }\n });\n },\n });\n }\n\n return bgManager.stream({ agentId, runId, threadId, resourceId, taskId, abortSignal, allResources: !scoped });\n },\n});\n\nexport const LIST_BACKGROUND_TASKS_ROUTE = createRoute({\n method: 'GET',\n path: '/background-tasks',\n responseType: 'json' as const,\n queryParamSchema: listBackgroundTasksQuerySchema,\n responseSchema: listBackgroundTaskResponseSchema,\n summary: 'List background tasks',\n description: 'Returns background tasks filtered by status, agent, run, etc.',\n tags: ['Background Tasks'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, ...params }) => {\n const { resourceId } = resolveResourceScope(requestContext, params.resourceId);\n const bgManager = mastra.backgroundTaskManager;\n if (!bgManager) {\n // Background tasks not enabled — there are no tasks to return.\n return { tasks: [], total: 0 };\n }\n\n return bgManager.listTasks({ ...params, resourceId });\n },\n});\n\nexport const GET_BACKGROUND_TASK_ROUTE = createRoute({\n method: 'GET',\n path: '/background-tasks/:backgroundTaskId',\n responseType: 'json' as const,\n pathParamSchema: backgroundTaskIdPathParams,\n responseSchema: backgroundTaskResponseSchema,\n summary: 'Get a background task by ID',\n description: 'Returns a background task by ID.',\n tags: ['Background Tasks'],\n requiresAuth: true,\n handler: async ({ mastra, backgroundTaskId, requestContext }) => {\n const { resourceId, scoped } = resolveResourceScope(requestContext, undefined);\n const bgManager = mastra.backgroundTaskManager;\n if (!bgManager) {\n // Background tasks not enabled — the task can't exist.\n throw new HTTPException(404, { message: 'Background task not found' });\n }\n\n const task = await bgManager.getTask(backgroundTaskId);\n // Report another resource's task as missing so its existence is not disclosed.\n if (!task || (scoped && task.resourceId !== resourceId)) {\n throw new HTTPException(404, { message: 'Background task not found' });\n }\n return task;\n },\n});\n\nexport const RESUME_BACKGROUND_TASK_ROUTE = createRoute({\n method: 'POST',\n path: '/background-tasks/:backgroundTaskId/resume',\n responseType: 'json' as const,\n pathParamSchema: backgroundTaskIdPathParams,\n bodySchema: resumeBackgroundTaskBodySchema,\n responseSchema: backgroundTaskResponseSchema,\n summary: 'Resume a suspended background task',\n description:\n 'Answers a suspended background task with resumeData. Pass the suspendedAt you read from the task to reject the answer with 409 if the task has resumed or suspended again since.',\n tags: ['Background Tasks'],\n requiresAuth: true,\n handler: async ({ mastra, backgroundTaskId, resumeData, suspendedAt, requestContext }) => {\n const { resourceId, scoped } = resolveResourceScope(requestContext, undefined);\n const bgManager = mastra.backgroundTaskManager;\n if (!bgManager) {\n throw new HTTPException(404, { message: 'Background task not found' });\n }\n\n const task = await bgManager.getTask(backgroundTaskId);\n // Report another resource's task as missing so its existence is not disclosed.\n if (!task || (scoped && task.resourceId !== resourceId)) {\n throw new HTTPException(404, { message: 'Background task not found' });\n }\n if (task.status !== 'suspended') {\n throw new HTTPException(409, { message: `Background task is ${task.status}, not suspended` });\n }\n if (suspendedAt !== undefined && new Date(suspendedAt).getTime() !== task.suspendedAt?.getTime()) {\n throw new HTTPException(409, { message: 'Background task suspension has changed since it was read' });\n }\n\n try {\n await bgManager.resume(\n backgroundTaskId,\n resumeData,\n suspendedAt !== undefined ? { suspendedAt: new Date(suspendedAt) } : undefined,\n );\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n // Lost a race with another resume, a new suspension or a cancel, or no slot is free right now.\n if (message.startsWith('Cannot resume task') || message.startsWith('Concurrency limit reached')) {\n throw new HTTPException(409, { message });\n }\n throw error;\n }\n\n const resumed = await bgManager.getTask(backgroundTaskId);\n if (!resumed) throw new HTTPException(404, { message: 'Background task not found' });\n return resumed;\n },\n});\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_http_exception = require("./http-exception-Co3MbFUf.cjs");
|
|
2
2
|
const require_route_builder = require("./route-builder-CvARmqnA.cjs");
|
|
3
|
-
const require_utils = require("./utils-
|
|
3
|
+
const require_utils = require("./utils-BhBJHsqX.cjs");
|
|
4
4
|
const require_server_handlers_error = require("./server/handlers/error.cjs");
|
|
5
5
|
const require_workspace = require("./workspace-C5BBUatQ.cjs");
|
|
6
6
|
const require_server_handlers_authorship = require("./server/handlers/authorship.cjs");
|
|
@@ -378,4 +378,4 @@ Object.defineProperty(exports, "LIST_BUILDER_REGISTRIES_ROUTE", {
|
|
|
378
378
|
}
|
|
379
379
|
});
|
|
380
380
|
|
|
381
|
-
//# sourceMappingURL=builder-registry-
|
|
381
|
+
//# sourceMappingURL=builder-registry-D1_hGKCJ.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder-registry-CkPRx_vx.cjs","names":["z","HTTPException","assertSafeFilePath","createRoute","handleError","skillsShSearchResponseSchema","searchSkillsSh","skillsShListResponseSchema","getPopularSkillsSh","skillsShPreviewResponseSchema","previewSkillsSh","fetchSkillFiles","assertSafeSkillName","toSlug","getCallerAuthorId"],"sources":["../src/server/schemas/builder-registry.ts","../src/server/handlers/builder-registry.ts"],"sourcesContent":["/**\n * Builder Registry Schemas\n *\n * Schemas for the Agent Builder skill registry routes. These are distinct from\n * the workspace skills.sh proxy schemas because:\n * - Builder routes are not scoped to a workspace.\n * - Builder install does not accept a `mount` field.\n * - Builder install body carries visibility + the resolved registry id.\n * - Builder install response returns the created stored skill id.\n *\n * The upstream skills.sh proxy response shapes are reused via the shared\n * `skillsShSearchResponseSchema`, `skillsShListResponseSchema`, and\n * `skillsShPreviewResponseSchema` since the wire shape from skills.sh is\n * registry-independent.\n */\n\nimport { z } from 'zod/v4';\n\n// =============================================================================\n// Registry list\n// =============================================================================\n\n/** Single entry in the registries list. */\nexport const builderRegistryEntrySchema = z.object({\n id: z.literal('skills-sh').describe('Stable registry identifier'),\n enabled: z.boolean().describe('Whether this registry is enabled in the running deployment'),\n label: z.string().describe('Human-readable registry name'),\n});\n\n/** Response for `GET /editor/builder/registries`. */\nexport const builderRegistriesResponseSchema = z.object({\n registries: z.array(builderRegistryEntrySchema),\n});\n\n// =============================================================================\n// Search / popular / preview\n// =============================================================================\n\n/** Path params used by every per-registry route. */\nexport const builderRegistryPathParams = z.object({\n registryId: z.string().describe('Registry identifier (e.g. \"skills-sh\")'),\n});\n\nexport const builderRegistrySearchQuerySchema = z.object({\n q: z.string().describe('Search query'),\n limit: z.coerce.number().int().min(1).max(100).optional().default(10).describe('Maximum number of results (1-100)'),\n});\n\nexport const builderRegistryPopularQuerySchema = z\n .object({\n limit: z.coerce.number().int().min(1).max(100).optional().default(10).describe('Maximum number of results (1-100)'),\n offset: z.coerce\n .number()\n .int()\n .min(0)\n .optional()\n .default(0)\n .describe('Offset for pagination (must be a multiple of `limit`)'),\n })\n .refine(args => args.offset % args.limit === 0, {\n message: 'offset must be a multiple of limit (the upstream registry pages by `limit`)',\n path: ['offset'],\n });\n\nexport const builderRegistryPreviewQuerySchema = z.object({\n owner: z.string().describe('GitHub repository owner'),\n repo: z.string().describe('GitHub repository name'),\n path: z.string().describe('Skill name within repo'),\n});\n\n// =============================================================================\n// Install\n// =============================================================================\n\n/**\n * Body for `POST /editor/builder/registries/:registryId/install`.\n *\n * Visibility behaves like the standard stored-skill create flow: optional,\n * defaults to private when the caller is authenticated.\n */\nexport const builderRegistryInstallBodySchema = z.object({\n owner: z.string().describe('GitHub repository owner'),\n repo: z.string().describe('GitHub repository name'),\n skillName: z.string().describe('Skill name from the registry'),\n visibility: z.enum(['private', 'public']).optional().describe('Visibility for the new stored skill'),\n});\n\n/** Response for the install route. Mirrors stored-skill identity fields. */\nexport const builderRegistryInstallResponseSchema = z.object({\n storedSkillId: z.string().describe('Id of the newly created stored skill'),\n name: z.string().describe('Resolved skill name'),\n filesWritten: z.number().describe('Number of files materialized into the skill version snapshot'),\n});\n\nexport type BuilderRegistryEntry = z.infer<typeof builderRegistryEntrySchema>;\nexport type BuilderRegistriesResponse = z.infer<typeof builderRegistriesResponseSchema>;\nexport type BuilderRegistryInstallBody = z.infer<typeof builderRegistryInstallBodySchema>;\nexport type BuilderRegistryInstallResponse = z.infer<typeof builderRegistryInstallResponseSchema>;\n","/**\n * Builder Registry Handlers\n *\n * Routes that let admins browse and install skills from configured external\n * registries (currently just skills.sh) directly into the Builder's stored\n * skills DB. Distinct from the workspace skills.sh routes, which write to a\n * workspace filesystem and never touch storage.\n *\n * Registry availability is driven by `AgentBuilderOptions.registries`. When\n * the requested registry is disabled (or the builder is missing entirely),\n * the routes 404 instead of leaking the surface.\n */\n\nimport type { Mastra } from '@mastra/core';\nimport type { StorageSkillFileNode } from '@mastra/core/storage';\n\nimport { HTTPException } from '../http-exception';\nimport {\n builderRegistriesResponseSchema,\n builderRegistryInstallBodySchema,\n builderRegistryInstallResponseSchema,\n builderRegistryPathParams,\n builderRegistryPopularQuerySchema,\n builderRegistryPreviewQuerySchema,\n builderRegistrySearchQuerySchema,\n} from '../schemas/builder-registry';\nimport {\n skillsShListResponseSchema,\n skillsShPreviewResponseSchema,\n skillsShSearchResponseSchema,\n} from '../schemas/workspace';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { toSlug } from '../utils';\nimport { getCallerAuthorId } from './authorship';\nimport { handleError } from './error';\nimport {\n assertSafeFilePath,\n assertSafeSkillName,\n fetchSkillFiles,\n getPopularSkillsSh,\n previewSkillsSh,\n searchSkillsSh,\n} from './skills-sh-shared';\n\n// =============================================================================\n// Registry resolution\n// =============================================================================\n\n/** Stable identifiers + display labels for every supported registry. */\nconst REGISTRY_LABELS: Record<string, string> = {\n 'skills-sh': 'skills.sh',\n};\n\ninterface RegistryStatus {\n id: 'skills-sh';\n enabled: boolean;\n label: string;\n}\n\n/**\n * Resolve which registries are enabled for the running deployment by reading\n * the builder's `registries` config. Returns a list with all known registries\n * (so the frontend can render an empty/disabled state) plus their enabled\n * flag.\n */\nasync function resolveRegistries(mastra: Mastra): Promise<RegistryStatus[]> {\n const editor = mastra.getEditor();\n if (!editor || typeof editor.resolveBuilder !== 'function') {\n return [{ id: 'skills-sh', enabled: false, label: REGISTRY_LABELS['skills-sh']! }];\n }\n const builder = await editor.resolveBuilder();\n const registries = builder?.getRegistries?.();\n return [\n {\n id: 'skills-sh',\n enabled: registries?.skillsSh?.enabled === true,\n label: REGISTRY_LABELS['skills-sh']!,\n },\n ];\n}\n\n/**\n * Hard-gate: throws 404 when the requested registry is unknown or disabled.\n * Mirrors `requireBuilderFeature` semantics — no surface leak for OFF registries.\n */\nasync function requireEnabledRegistry(mastra: Mastra, registryId: string): Promise<void> {\n const list = await resolveRegistries(mastra);\n const match = list.find(r => r.id === registryId);\n if (!match || !match.enabled) {\n throw new HTTPException(404, { message: 'Registry not found' });\n }\n}\n\n// =============================================================================\n// File-tree helpers\n// =============================================================================\n\n/**\n * Convert a flat list of `{ path, content, encoding }` entries into the\n * `StorageSkillFileNode` tree shape expected by the stored-skills create path.\n *\n * Each path is validated via `assertSafeFilePath` to prevent traversal from\n * upstream-controlled responses. Folder nodes are created on demand.\n */\nfunction buildFileTree(\n files: Array<{ path: string; content: string; encoding: 'utf-8' | 'base64' }>,\n): StorageSkillFileNode[] {\n const root: StorageSkillFileNode[] = [];\n\n for (const file of files) {\n const safePath = assertSafeFilePath(file.path);\n const segments = safePath.split('/').filter(Boolean);\n if (segments.length === 0) continue;\n\n let cursor = root;\n for (let i = 0; i < segments.length - 1; i++) {\n const segment = segments[i]!;\n let folder = cursor.find(node => node.type === 'folder' && node.name === segment);\n if (!folder) {\n folder = { name: segment, type: 'folder', children: [] };\n cursor.push(folder);\n }\n if (!folder.children) folder.children = [];\n cursor = folder.children;\n }\n\n const fileName = segments[segments.length - 1]!;\n const content = file.encoding === 'base64' ? Buffer.from(file.content, 'base64').toString('utf-8') : file.content;\n cursor.push({ name: fileName, type: 'file', content });\n }\n\n return root;\n}\n\n/**\n * Locally-bound SKILL.md frontmatter parser.\n *\n * Mirrors `parseSkillSnapshotFromFiles` from `@mastra/core/workspace`, but\n * inlined here because the server package's `@mastra/core` peer floor\n * (>=1.32.0) predates that helper. Once the floor is bumped to a release\n * containing the helper, this can be replaced by the shared core import.\n *\n * Only SKILL.md is consulted — frontmatter is split from the body using a\n * minimal YAML key:value reader sufficient for the fields registries\n * actually use (name, description). The body is everything after the\n * second `---` line, trimmed.\n */\ntype ParsedSkillSnapshot = {\n name?: string;\n description?: string;\n instructions: string;\n};\n\nfunction parseSkillSnapshot(\n files: Array<{ path: string; content: string; encoding: 'utf-8' | 'base64' }>,\n): ParsedSkillSnapshot | null {\n const skillMd = files.find(f => f.path === 'SKILL.md');\n if (!skillMd) return null;\n\n const raw =\n skillMd.encoding === 'base64' ? Buffer.from(skillMd.content, 'base64').toString('utf-8') : skillMd.content;\n\n const fmMatch = raw.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---\\r?\\n?([\\s\\S]*)$/);\n if (!fmMatch) {\n return { instructions: raw.trim() };\n }\n\n const fmBlock = fmMatch[1] ?? '';\n const body = fmMatch[2] ?? '';\n const frontmatter: Record<string, string> = {};\n for (const line of fmBlock.split(/\\r?\\n/)) {\n const m = line.match(/^([A-Za-z0-9_-]+)\\s*:\\s*(.*)$/);\n if (!m) continue;\n const key = m[1];\n const value = m[2] ?? '';\n if (!key) continue;\n // Strip surrounding quotes, leave the rest as-is. Registry SKILL.md\n // frontmatter is consistently flat string fields in practice.\n frontmatter[key] = value.trim().replace(/^[\"'](.*)[\"']$/, '$1');\n }\n\n return {\n name: frontmatter.name,\n description: frontmatter.description,\n instructions: body.trim(),\n };\n}\n\n// =============================================================================\n// Routes\n// =============================================================================\n\n/**\n * GET /editor/builder/registries\n *\n * Lists every known registry and whether it's enabled in this deployment.\n * Used by the Builder UI to decide whether to show the \"Browse registry\"\n * entry point at all.\n */\nexport const LIST_BUILDER_REGISTRIES_ROUTE = createRoute({\n method: 'GET',\n path: '/editor/builder/registries',\n responseType: 'json',\n responseSchema: builderRegistriesResponseSchema,\n summary: 'List available skill registries',\n description: 'Returns the configured external skill registries and their enabled state.',\n tags: ['Editor'],\n requiresAuth: true,\n requiresPermission: 'stored-skills:read',\n handler: async ({ mastra }) => {\n try {\n const registries = await resolveRegistries(mastra);\n return { registries };\n } catch (error) {\n return handleError(error, 'Error listing builder registries');\n }\n },\n});\n\n/**\n * GET /editor/builder/registries/:registryId/search\n *\n * Proxies a search query to the underlying registry. Currently only\n * registryId=\"skills-sh\" is supported.\n */\nexport const BUILDER_REGISTRY_SEARCH_ROUTE = createRoute({\n method: 'GET',\n path: '/editor/builder/registries/:registryId/search',\n responseType: 'json',\n pathParamSchema: builderRegistryPathParams,\n queryParamSchema: builderRegistrySearchQuerySchema,\n responseSchema: skillsShSearchResponseSchema,\n summary: 'Search skills in a registry',\n description: 'Proxies a search request to the configured registry to avoid CORS issues.',\n tags: ['Editor', 'Skills'],\n requiresAuth: true,\n requiresPermission: 'stored-skills:read',\n handler: async ({ mastra, registryId, q, limit }) => {\n try {\n await requireEnabledRegistry(mastra, registryId);\n return await searchSkillsSh({ q, limit });\n } catch (error) {\n if (error instanceof HTTPException) throw error;\n return handleError(error, 'Error searching registry');\n }\n },\n});\n\n/**\n * GET /editor/builder/registries/:registryId/popular\n *\n * Returns the most popular skills in a registry.\n */\nexport const BUILDER_REGISTRY_POPULAR_ROUTE = createRoute({\n method: 'GET',\n path: '/editor/builder/registries/:registryId/popular',\n responseType: 'json',\n pathParamSchema: builderRegistryPathParams,\n queryParamSchema: builderRegistryPopularQuerySchema,\n responseSchema: skillsShListResponseSchema,\n summary: 'Get popular skills from a registry',\n description: 'Proxies a popular-skills request to the configured registry to avoid CORS issues.',\n tags: ['Editor', 'Skills'],\n requiresAuth: true,\n requiresPermission: 'stored-skills:read',\n handler: async ({ mastra, registryId, limit, offset }) => {\n try {\n await requireEnabledRegistry(mastra, registryId);\n return await getPopularSkillsSh({ limit, offset });\n } catch (error) {\n if (error instanceof HTTPException) throw error;\n return handleError(error, 'Error fetching popular skills');\n }\n },\n});\n\n/**\n * GET /editor/builder/registries/:registryId/preview\n *\n * Returns the rendered SKILL.md content for a single skill in the registry.\n */\nexport const BUILDER_REGISTRY_PREVIEW_ROUTE = createRoute({\n method: 'GET',\n path: '/editor/builder/registries/:registryId/preview',\n responseType: 'json',\n pathParamSchema: builderRegistryPathParams,\n queryParamSchema: builderRegistryPreviewQuerySchema,\n responseSchema: skillsShPreviewResponseSchema,\n summary: 'Preview a skill from a registry',\n description: 'Fetches the SKILL.md content for a single skill in the configured registry.',\n tags: ['Editor', 'Skills'],\n requiresAuth: true,\n requiresPermission: 'stored-skills:read',\n handler: async ({ mastra, registryId, owner, repo, path: skillName }) => {\n try {\n await requireEnabledRegistry(mastra, registryId);\n return await previewSkillsSh({ owner, repo, skillName });\n } catch (error) {\n if (error instanceof HTTPException) throw error;\n return handleError(error, 'Error fetching skill preview');\n }\n },\n});\n\n/**\n * POST /editor/builder/registries/:registryId/install\n *\n * Fetches the full file tree for a skill from the registry, parses the\n * SKILL.md frontmatter for name/description, and persists everything as a\n * new stored skill. The registry origin is recorded under `metadata.origin`\n * so the UI can surface \"imported from skills.sh\" badges and re-resolve the\n * source later.\n *\n * Collisions (a stored skill with the derived id already exists) return 409\n * so the UI can offer an \"Open existing\" link instead of silently\n * overwriting.\n */\nexport const BUILDER_REGISTRY_INSTALL_ROUTE = createRoute({\n method: 'POST',\n path: '/editor/builder/registries/:registryId/install',\n responseType: 'json',\n pathParamSchema: builderRegistryPathParams,\n bodySchema: builderRegistryInstallBodySchema,\n responseSchema: builderRegistryInstallResponseSchema,\n summary: 'Install a registry skill into stored skills',\n description: 'Fetches a skill from the configured registry and persists it as a new stored skill.',\n tags: ['Editor', 'Skills'],\n requiresAuth: true,\n requiresPermission: 'stored-skills:write',\n handler: async ({ mastra, requestContext, registryId, owner, repo, skillName, visibility: bodyVisibility }) => {\n try {\n await requireEnabledRegistry(mastra, registryId);\n\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n const skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills storage domain is not available' });\n }\n\n // Pull files from the registry\n const result = await fetchSkillFiles(owner, repo, skillName);\n if (!result || result.files.length === 0) {\n throw new HTTPException(404, {\n message: `Could not find skill \"${skillName}\" in ${owner}/${repo}.`,\n });\n }\n\n const safeSkillId = assertSafeSkillName(result.skillId);\n const files = buildFileTree(result.files);\n\n // Parse SKILL.md frontmatter into structured fields. Splitting\n // frontmatter (name/description) from the markdown body keeps the\n // body as the agent-facing `instructions` instead of polluting it\n // with raw YAML metadata. SKILL.md missing or unparseable simply\n // yields a null snapshot — registry-provided values then fill in.\n const snapshot = parseSkillSnapshot(result.files);\n\n const resolvedName = snapshot?.name ?? safeSkillId;\n const description = snapshot?.description ?? `Imported from ${owner}/${repo}`;\n const id = toSlug(resolvedName) || safeSkillId;\n\n if (!id) {\n throw new HTTPException(400, {\n message: 'Could not derive skill ID from registry skill metadata.',\n });\n }\n\n // Reject collisions instead of silently overwriting; UI offers \"Open existing\".\n const existing = await skillStore.getById(id);\n if (existing) {\n throw new HTTPException(409, {\n message: `Skill with id \"${id}\" already exists.`,\n // Surface the existing id so the client can deep-link.\n cause: { storedSkillId: id },\n });\n }\n\n // Match the standard create flow: no caller = always public, otherwise default private.\n const authorId = getCallerAuthorId(requestContext) ?? undefined;\n const visibility: 'private' | 'public' = authorId ? (bodyVisibility ?? 'private') : 'public';\n\n // Use the SKILL.md body (post-frontmatter) as instructions. Frontmatter\n // values are already lifted into structured columns above, so re-storing\n // them in `instructions` would both duplicate metadata and feed YAML\n // into the agent's prompt. Fall back to description when no usable body\n // exists so `resolved.snapshot.instructions` stays non-empty.\n const instructions = snapshot?.instructions?.trim() ? snapshot.instructions : description;\n\n await skillStore.create({\n skill: {\n id,\n authorId,\n visibility,\n name: resolvedName,\n description,\n instructions,\n files,\n metadata: {\n origin: {\n type: 'skills-sh',\n owner,\n repo,\n skillName,\n },\n },\n },\n });\n\n return {\n storedSkillId: id,\n name: resolvedName,\n filesWritten: result.files.length,\n };\n } catch (error) {\n if (error instanceof HTTPException) throw error;\n return handleError(error, 'Error installing registry skill');\n }\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"builder-registry-D1_hGKCJ.cjs","names":["z","HTTPException","assertSafeFilePath","createRoute","handleError","skillsShSearchResponseSchema","searchSkillsSh","skillsShListResponseSchema","getPopularSkillsSh","skillsShPreviewResponseSchema","previewSkillsSh","fetchSkillFiles","assertSafeSkillName","toSlug","getCallerAuthorId"],"sources":["../src/server/schemas/builder-registry.ts","../src/server/handlers/builder-registry.ts"],"sourcesContent":["/**\n * Builder Registry Schemas\n *\n * Schemas for the Agent Builder skill registry routes. These are distinct from\n * the workspace skills.sh proxy schemas because:\n * - Builder routes are not scoped to a workspace.\n * - Builder install does not accept a `mount` field.\n * - Builder install body carries visibility + the resolved registry id.\n * - Builder install response returns the created stored skill id.\n *\n * The upstream skills.sh proxy response shapes are reused via the shared\n * `skillsShSearchResponseSchema`, `skillsShListResponseSchema`, and\n * `skillsShPreviewResponseSchema` since the wire shape from skills.sh is\n * registry-independent.\n */\n\nimport { z } from 'zod/v4';\n\n// =============================================================================\n// Registry list\n// =============================================================================\n\n/** Single entry in the registries list. */\nexport const builderRegistryEntrySchema = z.object({\n id: z.literal('skills-sh').describe('Stable registry identifier'),\n enabled: z.boolean().describe('Whether this registry is enabled in the running deployment'),\n label: z.string().describe('Human-readable registry name'),\n});\n\n/** Response for `GET /editor/builder/registries`. */\nexport const builderRegistriesResponseSchema = z.object({\n registries: z.array(builderRegistryEntrySchema),\n});\n\n// =============================================================================\n// Search / popular / preview\n// =============================================================================\n\n/** Path params used by every per-registry route. */\nexport const builderRegistryPathParams = z.object({\n registryId: z.string().describe('Registry identifier (e.g. \"skills-sh\")'),\n});\n\nexport const builderRegistrySearchQuerySchema = z.object({\n q: z.string().describe('Search query'),\n limit: z.coerce.number().int().min(1).max(100).optional().default(10).describe('Maximum number of results (1-100)'),\n});\n\nexport const builderRegistryPopularQuerySchema = z\n .object({\n limit: z.coerce.number().int().min(1).max(100).optional().default(10).describe('Maximum number of results (1-100)'),\n offset: z.coerce\n .number()\n .int()\n .min(0)\n .optional()\n .default(0)\n .describe('Offset for pagination (must be a multiple of `limit`)'),\n })\n .refine(args => args.offset % args.limit === 0, {\n message: 'offset must be a multiple of limit (the upstream registry pages by `limit`)',\n path: ['offset'],\n });\n\nexport const builderRegistryPreviewQuerySchema = z.object({\n owner: z.string().describe('GitHub repository owner'),\n repo: z.string().describe('GitHub repository name'),\n path: z.string().describe('Skill name within repo'),\n});\n\n// =============================================================================\n// Install\n// =============================================================================\n\n/**\n * Body for `POST /editor/builder/registries/:registryId/install`.\n *\n * Visibility behaves like the standard stored-skill create flow: optional,\n * defaults to private when the caller is authenticated.\n */\nexport const builderRegistryInstallBodySchema = z.object({\n owner: z.string().describe('GitHub repository owner'),\n repo: z.string().describe('GitHub repository name'),\n skillName: z.string().describe('Skill name from the registry'),\n visibility: z.enum(['private', 'public']).optional().describe('Visibility for the new stored skill'),\n});\n\n/** Response for the install route. Mirrors stored-skill identity fields. */\nexport const builderRegistryInstallResponseSchema = z.object({\n storedSkillId: z.string().describe('Id of the newly created stored skill'),\n name: z.string().describe('Resolved skill name'),\n filesWritten: z.number().describe('Number of files materialized into the skill version snapshot'),\n});\n\nexport type BuilderRegistryEntry = z.infer<typeof builderRegistryEntrySchema>;\nexport type BuilderRegistriesResponse = z.infer<typeof builderRegistriesResponseSchema>;\nexport type BuilderRegistryInstallBody = z.infer<typeof builderRegistryInstallBodySchema>;\nexport type BuilderRegistryInstallResponse = z.infer<typeof builderRegistryInstallResponseSchema>;\n","/**\n * Builder Registry Handlers\n *\n * Routes that let admins browse and install skills from configured external\n * registries (currently just skills.sh) directly into the Builder's stored\n * skills DB. Distinct from the workspace skills.sh routes, which write to a\n * workspace filesystem and never touch storage.\n *\n * Registry availability is driven by `AgentBuilderOptions.registries`. When\n * the requested registry is disabled (or the builder is missing entirely),\n * the routes 404 instead of leaking the surface.\n */\n\nimport type { Mastra } from '@mastra/core';\nimport type { StorageSkillFileNode } from '@mastra/core/storage';\n\nimport { HTTPException } from '../http-exception';\nimport {\n builderRegistriesResponseSchema,\n builderRegistryInstallBodySchema,\n builderRegistryInstallResponseSchema,\n builderRegistryPathParams,\n builderRegistryPopularQuerySchema,\n builderRegistryPreviewQuerySchema,\n builderRegistrySearchQuerySchema,\n} from '../schemas/builder-registry';\nimport {\n skillsShListResponseSchema,\n skillsShPreviewResponseSchema,\n skillsShSearchResponseSchema,\n} from '../schemas/workspace';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { toSlug } from '../utils';\nimport { getCallerAuthorId } from './authorship';\nimport { handleError } from './error';\nimport {\n assertSafeFilePath,\n assertSafeSkillName,\n fetchSkillFiles,\n getPopularSkillsSh,\n previewSkillsSh,\n searchSkillsSh,\n} from './skills-sh-shared';\n\n// =============================================================================\n// Registry resolution\n// =============================================================================\n\n/** Stable identifiers + display labels for every supported registry. */\nconst REGISTRY_LABELS: Record<string, string> = {\n 'skills-sh': 'skills.sh',\n};\n\ninterface RegistryStatus {\n id: 'skills-sh';\n enabled: boolean;\n label: string;\n}\n\n/**\n * Resolve which registries are enabled for the running deployment by reading\n * the builder's `registries` config. Returns a list with all known registries\n * (so the frontend can render an empty/disabled state) plus their enabled\n * flag.\n */\nasync function resolveRegistries(mastra: Mastra): Promise<RegistryStatus[]> {\n const editor = mastra.getEditor();\n if (!editor || typeof editor.resolveBuilder !== 'function') {\n return [{ id: 'skills-sh', enabled: false, label: REGISTRY_LABELS['skills-sh']! }];\n }\n const builder = await editor.resolveBuilder();\n const registries = builder?.getRegistries?.();\n return [\n {\n id: 'skills-sh',\n enabled: registries?.skillsSh?.enabled === true,\n label: REGISTRY_LABELS['skills-sh']!,\n },\n ];\n}\n\n/**\n * Hard-gate: throws 404 when the requested registry is unknown or disabled.\n * Mirrors `requireBuilderFeature` semantics — no surface leak for OFF registries.\n */\nasync function requireEnabledRegistry(mastra: Mastra, registryId: string): Promise<void> {\n const list = await resolveRegistries(mastra);\n const match = list.find(r => r.id === registryId);\n if (!match || !match.enabled) {\n throw new HTTPException(404, { message: 'Registry not found' });\n }\n}\n\n// =============================================================================\n// File-tree helpers\n// =============================================================================\n\n/**\n * Convert a flat list of `{ path, content, encoding }` entries into the\n * `StorageSkillFileNode` tree shape expected by the stored-skills create path.\n *\n * Each path is validated via `assertSafeFilePath` to prevent traversal from\n * upstream-controlled responses. Folder nodes are created on demand.\n */\nfunction buildFileTree(\n files: Array<{ path: string; content: string; encoding: 'utf-8' | 'base64' }>,\n): StorageSkillFileNode[] {\n const root: StorageSkillFileNode[] = [];\n\n for (const file of files) {\n const safePath = assertSafeFilePath(file.path);\n const segments = safePath.split('/').filter(Boolean);\n if (segments.length === 0) continue;\n\n let cursor = root;\n for (let i = 0; i < segments.length - 1; i++) {\n const segment = segments[i]!;\n let folder = cursor.find(node => node.type === 'folder' && node.name === segment);\n if (!folder) {\n folder = { name: segment, type: 'folder', children: [] };\n cursor.push(folder);\n }\n if (!folder.children) folder.children = [];\n cursor = folder.children;\n }\n\n const fileName = segments[segments.length - 1]!;\n const content = file.encoding === 'base64' ? Buffer.from(file.content, 'base64').toString('utf-8') : file.content;\n cursor.push({ name: fileName, type: 'file', content });\n }\n\n return root;\n}\n\n/**\n * Locally-bound SKILL.md frontmatter parser.\n *\n * Mirrors `parseSkillSnapshotFromFiles` from `@mastra/core/workspace`, but\n * inlined here because the server package's `@mastra/core` peer floor\n * (>=1.32.0) predates that helper. Once the floor is bumped to a release\n * containing the helper, this can be replaced by the shared core import.\n *\n * Only SKILL.md is consulted — frontmatter is split from the body using a\n * minimal YAML key:value reader sufficient for the fields registries\n * actually use (name, description). The body is everything after the\n * second `---` line, trimmed.\n */\ntype ParsedSkillSnapshot = {\n name?: string;\n description?: string;\n instructions: string;\n};\n\nfunction parseSkillSnapshot(\n files: Array<{ path: string; content: string; encoding: 'utf-8' | 'base64' }>,\n): ParsedSkillSnapshot | null {\n const skillMd = files.find(f => f.path === 'SKILL.md');\n if (!skillMd) return null;\n\n const raw =\n skillMd.encoding === 'base64' ? Buffer.from(skillMd.content, 'base64').toString('utf-8') : skillMd.content;\n\n const fmMatch = raw.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---\\r?\\n?([\\s\\S]*)$/);\n if (!fmMatch) {\n return { instructions: raw.trim() };\n }\n\n const fmBlock = fmMatch[1] ?? '';\n const body = fmMatch[2] ?? '';\n const frontmatter: Record<string, string> = {};\n for (const line of fmBlock.split(/\\r?\\n/)) {\n const m = line.match(/^([A-Za-z0-9_-]+)\\s*:\\s*(.*)$/);\n if (!m) continue;\n const key = m[1];\n const value = m[2] ?? '';\n if (!key) continue;\n // Strip surrounding quotes, leave the rest as-is. Registry SKILL.md\n // frontmatter is consistently flat string fields in practice.\n frontmatter[key] = value.trim().replace(/^[\"'](.*)[\"']$/, '$1');\n }\n\n return {\n name: frontmatter.name,\n description: frontmatter.description,\n instructions: body.trim(),\n };\n}\n\n// =============================================================================\n// Routes\n// =============================================================================\n\n/**\n * GET /editor/builder/registries\n *\n * Lists every known registry and whether it's enabled in this deployment.\n * Used by the Builder UI to decide whether to show the \"Browse registry\"\n * entry point at all.\n */\nexport const LIST_BUILDER_REGISTRIES_ROUTE = createRoute({\n method: 'GET',\n path: '/editor/builder/registries',\n responseType: 'json',\n responseSchema: builderRegistriesResponseSchema,\n summary: 'List available skill registries',\n description: 'Returns the configured external skill registries and their enabled state.',\n tags: ['Editor'],\n requiresAuth: true,\n requiresPermission: 'stored-skills:read',\n handler: async ({ mastra }) => {\n try {\n const registries = await resolveRegistries(mastra);\n return { registries };\n } catch (error) {\n return handleError(error, 'Error listing builder registries');\n }\n },\n});\n\n/**\n * GET /editor/builder/registries/:registryId/search\n *\n * Proxies a search query to the underlying registry. Currently only\n * registryId=\"skills-sh\" is supported.\n */\nexport const BUILDER_REGISTRY_SEARCH_ROUTE = createRoute({\n method: 'GET',\n path: '/editor/builder/registries/:registryId/search',\n responseType: 'json',\n pathParamSchema: builderRegistryPathParams,\n queryParamSchema: builderRegistrySearchQuerySchema,\n responseSchema: skillsShSearchResponseSchema,\n summary: 'Search skills in a registry',\n description: 'Proxies a search request to the configured registry to avoid CORS issues.',\n tags: ['Editor', 'Skills'],\n requiresAuth: true,\n requiresPermission: 'stored-skills:read',\n handler: async ({ mastra, registryId, q, limit }) => {\n try {\n await requireEnabledRegistry(mastra, registryId);\n return await searchSkillsSh({ q, limit });\n } catch (error) {\n if (error instanceof HTTPException) throw error;\n return handleError(error, 'Error searching registry');\n }\n },\n});\n\n/**\n * GET /editor/builder/registries/:registryId/popular\n *\n * Returns the most popular skills in a registry.\n */\nexport const BUILDER_REGISTRY_POPULAR_ROUTE = createRoute({\n method: 'GET',\n path: '/editor/builder/registries/:registryId/popular',\n responseType: 'json',\n pathParamSchema: builderRegistryPathParams,\n queryParamSchema: builderRegistryPopularQuerySchema,\n responseSchema: skillsShListResponseSchema,\n summary: 'Get popular skills from a registry',\n description: 'Proxies a popular-skills request to the configured registry to avoid CORS issues.',\n tags: ['Editor', 'Skills'],\n requiresAuth: true,\n requiresPermission: 'stored-skills:read',\n handler: async ({ mastra, registryId, limit, offset }) => {\n try {\n await requireEnabledRegistry(mastra, registryId);\n return await getPopularSkillsSh({ limit, offset });\n } catch (error) {\n if (error instanceof HTTPException) throw error;\n return handleError(error, 'Error fetching popular skills');\n }\n },\n});\n\n/**\n * GET /editor/builder/registries/:registryId/preview\n *\n * Returns the rendered SKILL.md content for a single skill in the registry.\n */\nexport const BUILDER_REGISTRY_PREVIEW_ROUTE = createRoute({\n method: 'GET',\n path: '/editor/builder/registries/:registryId/preview',\n responseType: 'json',\n pathParamSchema: builderRegistryPathParams,\n queryParamSchema: builderRegistryPreviewQuerySchema,\n responseSchema: skillsShPreviewResponseSchema,\n summary: 'Preview a skill from a registry',\n description: 'Fetches the SKILL.md content for a single skill in the configured registry.',\n tags: ['Editor', 'Skills'],\n requiresAuth: true,\n requiresPermission: 'stored-skills:read',\n handler: async ({ mastra, registryId, owner, repo, path: skillName }) => {\n try {\n await requireEnabledRegistry(mastra, registryId);\n return await previewSkillsSh({ owner, repo, skillName });\n } catch (error) {\n if (error instanceof HTTPException) throw error;\n return handleError(error, 'Error fetching skill preview');\n }\n },\n});\n\n/**\n * POST /editor/builder/registries/:registryId/install\n *\n * Fetches the full file tree for a skill from the registry, parses the\n * SKILL.md frontmatter for name/description, and persists everything as a\n * new stored skill. The registry origin is recorded under `metadata.origin`\n * so the UI can surface \"imported from skills.sh\" badges and re-resolve the\n * source later.\n *\n * Collisions (a stored skill with the derived id already exists) return 409\n * so the UI can offer an \"Open existing\" link instead of silently\n * overwriting.\n */\nexport const BUILDER_REGISTRY_INSTALL_ROUTE = createRoute({\n method: 'POST',\n path: '/editor/builder/registries/:registryId/install',\n responseType: 'json',\n pathParamSchema: builderRegistryPathParams,\n bodySchema: builderRegistryInstallBodySchema,\n responseSchema: builderRegistryInstallResponseSchema,\n summary: 'Install a registry skill into stored skills',\n description: 'Fetches a skill from the configured registry and persists it as a new stored skill.',\n tags: ['Editor', 'Skills'],\n requiresAuth: true,\n requiresPermission: 'stored-skills:write',\n handler: async ({ mastra, requestContext, registryId, owner, repo, skillName, visibility: bodyVisibility }) => {\n try {\n await requireEnabledRegistry(mastra, registryId);\n\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n const skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills storage domain is not available' });\n }\n\n // Pull files from the registry\n const result = await fetchSkillFiles(owner, repo, skillName);\n if (!result || result.files.length === 0) {\n throw new HTTPException(404, {\n message: `Could not find skill \"${skillName}\" in ${owner}/${repo}.`,\n });\n }\n\n const safeSkillId = assertSafeSkillName(result.skillId);\n const files = buildFileTree(result.files);\n\n // Parse SKILL.md frontmatter into structured fields. Splitting\n // frontmatter (name/description) from the markdown body keeps the\n // body as the agent-facing `instructions` instead of polluting it\n // with raw YAML metadata. SKILL.md missing or unparseable simply\n // yields a null snapshot — registry-provided values then fill in.\n const snapshot = parseSkillSnapshot(result.files);\n\n const resolvedName = snapshot?.name ?? safeSkillId;\n const description = snapshot?.description ?? `Imported from ${owner}/${repo}`;\n const id = toSlug(resolvedName) || safeSkillId;\n\n if (!id) {\n throw new HTTPException(400, {\n message: 'Could not derive skill ID from registry skill metadata.',\n });\n }\n\n // Reject collisions instead of silently overwriting; UI offers \"Open existing\".\n const existing = await skillStore.getById(id);\n if (existing) {\n throw new HTTPException(409, {\n message: `Skill with id \"${id}\" already exists.`,\n // Surface the existing id so the client can deep-link.\n cause: { storedSkillId: id },\n });\n }\n\n // Match the standard create flow: no caller = always public, otherwise default private.\n const authorId = getCallerAuthorId(requestContext) ?? undefined;\n const visibility: 'private' | 'public' = authorId ? (bodyVisibility ?? 'private') : 'public';\n\n // Use the SKILL.md body (post-frontmatter) as instructions. Frontmatter\n // values are already lifted into structured columns above, so re-storing\n // them in `instructions` would both duplicate metadata and feed YAML\n // into the agent's prompt. Fall back to description when no usable body\n // exists so `resolved.snapshot.instructions` stays non-empty.\n const instructions = snapshot?.instructions?.trim() ? snapshot.instructions : description;\n\n await skillStore.create({\n skill: {\n id,\n authorId,\n visibility,\n name: resolvedName,\n description,\n instructions,\n files,\n metadata: {\n origin: {\n type: 'skills-sh',\n owner,\n repo,\n skillName,\n },\n },\n },\n });\n\n return {\n storedSkillId: id,\n name: resolvedName,\n filesWritten: result.files.length,\n };\n } catch (error) {\n if (error instanceof HTTPException) throw error;\n return handleError(error, 'Error installing registry skill');\n }\n },\n});\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as HTTPException } from "./http-exception-CzaWkxMl.js";
|
|
2
2
|
import { n as createRoute } from "./route-builder-BxPrwNog.js";
|
|
3
|
-
import { c as toSlug } from "./utils-
|
|
3
|
+
import { c as toSlug } from "./utils-Dy_dQTlK.js";
|
|
4
4
|
import { handleError } from "./server/handlers/error.js";
|
|
5
5
|
import { H as skillsShPreviewResponseSchema, K as skillsShSearchResponseSchema, z as skillsShListResponseSchema } from "./workspace-DBDA3UQl.js";
|
|
6
6
|
import { getCallerAuthorId } from "./server/handlers/authorship.js";
|
|
@@ -349,4 +349,4 @@ const BUILDER_REGISTRY_INSTALL_ROUTE = createRoute({
|
|
|
349
349
|
});
|
|
350
350
|
export { LIST_BUILDER_REGISTRIES_ROUTE as a, BUILDER_REGISTRY_SEARCH_ROUTE as i, BUILDER_REGISTRY_POPULAR_ROUTE as n, BUILDER_REGISTRY_PREVIEW_ROUTE as r, BUILDER_REGISTRY_INSTALL_ROUTE as t };
|
|
351
351
|
|
|
352
|
-
//# sourceMappingURL=builder-registry-
|
|
352
|
+
//# sourceMappingURL=builder-registry-m_gHCe12.js.map
|