@mastra/server 1.67.0-alpha.3 → 1.67.0-alpha.6
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/@mastra_schema-compat/dist/schema.types.d.ts +20 -1
- package/dist/a2a-DQ8GeDz4.cjs.map +1 -1
- package/dist/a2a-DUBjstWk.js.map +1 -1
- package/dist/{agent-builder-DUM8fGTt.js → agent-builder-k5ALpndR.js} +2 -2
- package/dist/{agent-builder-DUM8fGTt.js.map → agent-builder-k5ALpndR.js.map} +1 -1
- package/dist/{agent-builder-B2GCn_tS.cjs → agent-builder-k72O4OB9.cjs} +2 -2
- package/dist/{agent-builder-B2GCn_tS.cjs.map → agent-builder-k72O4OB9.cjs.map} +1 -1
- package/dist/{agent-versions-MYjO6Wl1.cjs → agent-versions-D99q4Gos.cjs} +3 -3
- package/dist/{agent-versions-MYjO6Wl1.cjs.map → agent-versions-D99q4Gos.cjs.map} +1 -1
- package/dist/{agent-versions-mFXaw5ma.js → agent-versions-NGajm4l5.js} +3 -3
- package/dist/{agent-versions-mFXaw5ma.js.map → agent-versions-NGajm4l5.js.map} +1 -1
- package/dist/{agents-C3k-sZBO.cjs → agents-CZE_MSQE.cjs} +2 -2
- package/dist/{agents-C3k-sZBO.cjs.map → agents-CZE_MSQE.cjs.map} +1 -1
- package/dist/{agents-AMeMJBI1.js → agents-ssoMemNs.js} +2 -2
- package/dist/{agents-AMeMJBI1.js.map → agents-ssoMemNs.js.map} +1 -1
- package/dist/{api-schema-manifest-DNk8B4kw.js → api-schema-manifest-CeREx1dB.js} +2 -2
- package/dist/{api-schema-manifest-DNk8B4kw.js.map → api-schema-manifest-CeREx1dB.js.map} +1 -1
- package/dist/{api-schema-manifest-1LriOYQM.cjs → api-schema-manifest-DzWP4nLu.cjs} +2 -2
- package/dist/{api-schema-manifest-1LriOYQM.cjs.map → api-schema-manifest-DzWP4nLu.cjs.map} +1 -1
- package/dist/{background-tasks-BarPeyNJ.cjs → background-tasks-CFJ0vNgp.cjs} +4 -3
- package/dist/background-tasks-CFJ0vNgp.cjs.map +1 -0
- package/dist/{background-tasks-B4yoNDY_.js → background-tasks-kXPoCvgG.js} +4 -3
- package/dist/background-tasks-kXPoCvgG.js.map +1 -0
- package/dist/{common-DQn8jX5T.cjs → common-BPjna_b6.cjs} +7 -1
- package/dist/common-BPjna_b6.cjs.map +1 -0
- package/dist/{common-5ZZuR6wj.js → common-C7NBaaQu.js} +2 -2
- package/dist/common-C7NBaaQu.js.map +1 -0
- package/dist/{conversations-o3AEJjRo.cjs → conversations-DstENx2x.cjs} +2 -2
- package/dist/{conversations-o3AEJjRo.cjs.map → conversations-DstENx2x.cjs.map} +1 -1
- package/dist/{conversations-Bs-k9f9N.js → conversations-b3vJRHF3.js} +2 -2
- package/dist/{conversations-Bs-k9f9N.js.map → conversations-b3vJRHF3.js.map} +1 -1
- package/dist/{datasets-B4qPHzEy.js → datasets-CCC2huR0.js} +23 -11
- package/dist/datasets-CCC2huR0.js.map +1 -0
- package/dist/{datasets-C-_ZWnxR.cjs → datasets-zlaJQ9D0.cjs} +28 -10
- package/dist/datasets-zlaJQ9D0.cjs.map +1 -0
- package/dist/{dist-Du9y2ur5.cjs → dist-BKxbtiJd.cjs} +112 -37
- package/dist/dist-BKxbtiJd.cjs.map +1 -0
- package/dist/{dist-Bw-Zrv4_.js → dist-DOpm-tIl.js} +112 -37
- package/dist/{dist-Bw-Zrv4_.js.map → dist-DOpm-tIl.js.map} +1 -1
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/{editor-builder-WLxTW05v.cjs → editor-builder-BHf-g7q9.cjs} +2 -2
- package/dist/{editor-builder-WLxTW05v.cjs.map → editor-builder-BHf-g7q9.cjs.map} +1 -1
- package/dist/{editor-builder-QRcP8-SQ.js → editor-builder-BI5yHrbT.js} +2 -2
- package/dist/{editor-builder-QRcP8-SQ.js.map → editor-builder-BI5yHrbT.js.map} +1 -1
- package/dist/{editor-builder-DFh_-7Id.cjs → editor-builder-CKAeON9r.cjs} +2 -2
- package/dist/{editor-builder-DFh_-7Id.cjs.map → editor-builder-CKAeON9r.cjs.map} +1 -1
- package/dist/{editor-builder-BmEpZsqX.js → editor-builder-D6P_hq7c.js} +2 -2
- package/dist/{editor-builder-BmEpZsqX.js.map → editor-builder-D6P_hq7c.js.map} +1 -1
- package/dist/{logs-Cz5NiwGP.js → logs-Cbz2Nxm2.js} +2 -2
- package/dist/{logs-Cz5NiwGP.js.map → logs-Cbz2Nxm2.js.map} +1 -1
- package/dist/{logs-BDuGFqxu.cjs → logs-LBot9fsG.cjs} +2 -2
- package/dist/{logs-BDuGFqxu.cjs.map → logs-LBot9fsG.cjs.map} +1 -1
- package/dist/{mcp-Buvksst5.cjs → mcp-BPmrXX9r.cjs} +2 -2
- package/dist/{mcp-Buvksst5.cjs.map → mcp-BPmrXX9r.cjs.map} +1 -1
- package/dist/{mcp-oOFVSK8L.js → mcp-B_OMG3Ol.js} +2 -2
- package/dist/{mcp-oOFVSK8L.js.map → mcp-B_OMG3Ol.js.map} +1 -1
- package/dist/{mcp-client-versions-CG7po4hq.cjs → mcp-client-versions-DoGlpOEW.cjs} +2 -2
- package/dist/{mcp-client-versions-CG7po4hq.cjs.map → mcp-client-versions-DoGlpOEW.cjs.map} +1 -1
- package/dist/{mcp-client-versions-Co8d39A6.js → mcp-client-versions-Dpk4z-zx.js} +2 -2
- package/dist/{mcp-client-versions-Co8d39A6.js.map → mcp-client-versions-Dpk4z-zx.js.map} +1 -1
- package/dist/{memory-Cp3Yo-OX.js → memory-BvKPIpyH.js} +2 -2
- package/dist/{memory-Cp3Yo-OX.js.map → memory-BvKPIpyH.js.map} +1 -1
- package/dist/{memory-CE6rUGmo.cjs → memory-CDYtqQnE.cjs} +2 -2
- package/dist/{memory-CE6rUGmo.cjs.map → memory-CDYtqQnE.cjs.map} +1 -1
- package/dist/{prompt-block-versions-Cgt_Grk2.cjs → prompt-block-versions-ChvK-DMW.cjs} +2 -2
- package/dist/{prompt-block-versions-Cgt_Grk2.cjs.map → prompt-block-versions-ChvK-DMW.cjs.map} +1 -1
- package/dist/{prompt-block-versions-CBjHhMVK.js → prompt-block-versions-DU0xf_a5.js} +2 -2
- package/dist/{prompt-block-versions-CBjHhMVK.js.map → prompt-block-versions-DU0xf_a5.js.map} +1 -1
- package/dist/{routes-DXUcYEc6.js → routes-BJZtqLVx.js} +6 -3
- package/dist/routes-BJZtqLVx.js.map +1 -0
- package/dist/{routes-9i4gAixo.cjs → routes-PJ3eKHbs.cjs} +6 -3
- package/dist/routes-PJ3eKHbs.cjs.map +1 -0
- package/dist/{scorer-versions-mL--H4LL.cjs → scorer-versions-B6U7batJ.cjs} +3 -3
- package/dist/{scorer-versions-mL--H4LL.cjs.map → scorer-versions-B6U7batJ.cjs.map} +1 -1
- package/dist/{scorer-versions-D0_KP67E.js → scorer-versions-Dh2iaz4Y.js} +3 -3
- package/dist/{scorer-versions-D0_KP67E.js.map → scorer-versions-Dh2iaz4Y.js.map} +1 -1
- package/dist/{scores-C_Au9jSw.cjs → scores-5aHyxHos.cjs} +5 -13
- package/dist/scores-5aHyxHos.cjs.map +1 -0
- package/dist/{scores-B1IdMcDj.js → scores-BjcbsulG.js} +5 -13
- package/dist/scores-BjcbsulG.js.map +1 -0
- package/dist/server/handlers/agent-builder.cjs +5 -5
- package/dist/server/handlers/agent-builder.js +5 -5
- package/dist/server/handlers/agent-controller.cjs +2 -2
- package/dist/server/handlers/agent-controller.js +2 -2
- package/dist/server/handlers/agent-versions.cjs +2 -2
- package/dist/server/handlers/agent-versions.js +2 -2
- package/dist/server/handlers/agents.cjs +11 -18
- package/dist/server/handlers/agents.cjs.map +1 -1
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +4 -11
- package/dist/server/handlers/agents.js.map +1 -1
- package/dist/server/handlers/background-tasks.cjs +1 -1
- package/dist/server/handlers/background-tasks.js +1 -1
- package/dist/server/handlers/conversations.cjs +2 -2
- package/dist/server/handlers/conversations.js +2 -2
- package/dist/server/handlers/datasets.cjs +18 -9
- package/dist/server/handlers/datasets.cjs.map +1 -1
- package/dist/server/handlers/datasets.d.ts +186 -44
- package/dist/server/handlers/datasets.d.ts.map +1 -1
- package/dist/server/handlers/datasets.js +18 -9
- package/dist/server/handlers/datasets.js.map +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/logs.cjs +3 -3
- package/dist/server/handlers/logs.js +3 -3
- package/dist/server/handlers/mcp-client-versions.cjs +1 -1
- package/dist/server/handlers/mcp-client-versions.js +1 -1
- package/dist/server/handlers/mcp.cjs +1 -1
- package/dist/server/handlers/mcp.js +1 -1
- package/dist/server/handlers/memory.cjs +2 -2
- package/dist/server/handlers/memory.js +2 -2
- package/dist/server/handlers/plans.cjs +2 -2
- package/dist/server/handlers/plans.js +2 -2
- 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.d.ts +11 -11
- package/dist/server/handlers/responses.js +1 -1
- package/dist/server/handlers/responses.storage.cjs +1 -1
- package/dist/server/handlers/responses.storage.js +1 -1
- package/dist/server/handlers/scorer-versions.cjs +1 -1
- package/dist/server/handlers/scorer-versions.js +1 -1
- package/dist/server/handlers/scores.cjs +2 -2
- package/dist/server/handlers/scores.d.ts +43 -21
- package/dist/server/handlers/scores.d.ts.map +1 -1
- package/dist/server/handlers/scores.js +2 -2
- package/dist/server/handlers/stored-agent-favorites.cjs +2 -2
- package/dist/server/handlers/stored-agent-favorites.js +2 -2
- package/dist/server/handlers/stored-agents.cjs +3 -3
- package/dist/server/handlers/stored-agents.js +3 -3
- package/dist/server/handlers/stored-mcp-clients.cjs +2 -2
- package/dist/server/handlers/stored-mcp-clients.js +2 -2
- package/dist/server/handlers/stored-prompt-blocks.cjs +2 -2
- package/dist/server/handlers/stored-prompt-blocks.js +2 -2
- 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 +1 -1
- package/dist/server/handlers/system.js +1 -1
- package/dist/server/handlers/tools.cjs +3 -3
- package/dist/server/handlers/tools.js +3 -3
- package/dist/server/handlers/utils.cjs +2 -1
- package/dist/server/handlers/utils.d.ts +6 -0
- package/dist/server/handlers/utils.d.ts.map +1 -1
- package/dist/server/handlers/utils.js +2 -2
- package/dist/server/handlers/vector.cjs +1 -1
- package/dist/server/handlers/vector.js +1 -1
- package/dist/server/handlers/workflow-builder.cjs +5 -0
- package/dist/server/handlers/workflow-builder.d.ts +322 -0
- package/dist/server/handlers/workflow-builder.d.ts.map +1 -0
- package/dist/server/handlers/workflow-builder.js +2 -0
- package/dist/server/handlers/workflows.cjs +4 -4
- package/dist/server/handlers/workflows.js +4 -4
- package/dist/server/schemas/background-tasks.d.ts.map +1 -1
- package/dist/server/schemas/common.d.ts +11 -0
- package/dist/server/schemas/common.d.ts.map +1 -1
- package/dist/server/schemas/datasets.d.ts +54 -0
- package/dist/server/schemas/datasets.d.ts.map +1 -1
- package/dist/server/schemas/index.cjs +25 -23
- package/dist/server/schemas/index.js +24 -24
- package/dist/server/schemas/scores.d.ts +11 -0
- package/dist/server/schemas/scores.d.ts.map +1 -1
- package/dist/server/schemas/workflow-builder.d.ts +26 -0
- package/dist/server/schemas/workflow-builder.d.ts.map +1 -0
- package/dist/server/server-adapter/index.cjs +11 -1
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.d.ts.map +1 -1
- package/dist/server/server-adapter/index.js +11 -1
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/server/server-adapter/routes/conversations.d.ts +3 -3
- package/dist/server/server-adapter/routes/datasets.d.ts +186 -44
- package/dist/server/server-adapter/routes/datasets.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/editor-builder.d.ts +319 -0
- package/dist/server/server-adapter/routes/editor-builder.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/scorers.d.ts +43 -21
- package/dist/server/server-adapter/routes/scorers.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/workspace.d.ts +23 -23
- package/dist/{stored-agents-DMW5wrF7.js → stored-agents-AC0najKd.js} +3 -3
- package/dist/{stored-agents-DMW5wrF7.js.map → stored-agents-AC0najKd.js.map} +1 -1
- package/dist/{stored-agents-D6JEb3zN.cjs → stored-agents-BJMM5f9A.cjs} +3 -3
- package/dist/{stored-agents-D6JEb3zN.cjs.map → stored-agents-BJMM5f9A.cjs.map} +1 -1
- package/dist/{stored-mcp-clients-CoCfZRhw.js → stored-mcp-clients-BEcB720j.js} +2 -2
- package/dist/{stored-mcp-clients-CoCfZRhw.js.map → stored-mcp-clients-BEcB720j.js.map} +1 -1
- package/dist/{stored-mcp-clients-CJJPe_09.cjs → stored-mcp-clients-Bh7nQkqD.cjs} +2 -2
- package/dist/{stored-mcp-clients-CJJPe_09.cjs.map → stored-mcp-clients-Bh7nQkqD.cjs.map} +1 -1
- package/dist/{stored-prompt-blocks-DcmkZaCm.js → stored-prompt-blocks-CRGk4tz5.js} +2 -2
- package/dist/{stored-prompt-blocks-DcmkZaCm.js.map → stored-prompt-blocks-CRGk4tz5.js.map} +1 -1
- package/dist/{stored-prompt-blocks-XI4frgZv.cjs → stored-prompt-blocks-CyL4SKVR.cjs} +2 -2
- package/dist/{stored-prompt-blocks-XI4frgZv.cjs.map → stored-prompt-blocks-CyL4SKVR.cjs.map} +1 -1
- package/dist/{stored-scorers-BA4suzgn.js → stored-scorers-B8QVQCCs.js} +3 -3
- package/dist/{stored-scorers-BA4suzgn.js.map → stored-scorers-B8QVQCCs.js.map} +1 -1
- package/dist/{stored-scorers-D8IwVM0S.cjs → stored-scorers-CWxW1_mY.cjs} +3 -3
- package/dist/{stored-scorers-D8IwVM0S.cjs.map → stored-scorers-CWxW1_mY.cjs.map} +1 -1
- package/dist/{stored-skills-BqNK0ssS.cjs → stored-skills-CkA2oWJJ.cjs} +2 -2
- package/dist/{stored-skills-BqNK0ssS.cjs.map → stored-skills-CkA2oWJJ.cjs.map} +1 -1
- package/dist/{stored-skills-JTWbMybs.js → stored-skills-DlNmwsTl.js} +2 -2
- package/dist/{stored-skills-JTWbMybs.js.map → stored-skills-DlNmwsTl.js.map} +1 -1
- package/dist/{stored-workspaces-6PYE4Y3m.js → stored-workspaces-B0p0wPGV.js} +2 -2
- package/dist/{stored-workspaces-6PYE4Y3m.js.map → stored-workspaces-B0p0wPGV.js.map} +1 -1
- package/dist/{stored-workspaces-Dl8B20LD.cjs → stored-workspaces-epewrppK.cjs} +2 -2
- package/dist/{stored-workspaces-Dl8B20LD.cjs.map → stored-workspaces-epewrppK.cjs.map} +1 -1
- package/dist/{utils-CMWGBd0O.js → utils-KsERfbhc.js} +15 -3
- package/dist/utils-KsERfbhc.js.map +1 -0
- package/dist/{utils-BtkczLrA.cjs → utils-aIu3gkhJ.cjs} +19 -1
- package/dist/utils-aIu3gkhJ.cjs.map +1 -0
- package/dist/{vectors-D6uZn2f1.cjs → vectors-DlW_SU5m.cjs} +2 -2
- package/dist/{vectors-D6uZn2f1.cjs.map → vectors-DlW_SU5m.cjs.map} +1 -1
- package/dist/{vectors-Ck7Qu6yz.js → vectors-DqRRlfF0.js} +2 -2
- package/dist/{vectors-Ck7Qu6yz.js.map → vectors-DqRRlfF0.js.map} +1 -1
- package/dist/{version-common-AtNRQ5xH.cjs → version-common-CxQdBbPm.cjs} +2 -2
- package/dist/{version-common-AtNRQ5xH.cjs.map → version-common-CxQdBbPm.cjs.map} +1 -1
- package/dist/{version-common-CudZ_WuW.js → version-common-cEBltPQN.js} +2 -2
- package/dist/{version-common-CudZ_WuW.js.map → version-common-cEBltPQN.js.map} +1 -1
- package/dist/workflow-builder-D5dPsrog.cjs +115 -0
- package/dist/workflow-builder-D5dPsrog.cjs.map +1 -0
- package/dist/workflow-builder-Eape8SyU.js +102 -0
- package/dist/workflow-builder-Eape8SyU.js.map +1 -0
- package/dist/{workflows-BNnfyZhn.cjs → workflows-CvYeyvIc.cjs} +2 -2
- package/dist/{workflows-BNnfyZhn.cjs.map → workflows-CvYeyvIc.cjs.map} +1 -1
- package/dist/{workflows-CUgR3bTL.js → workflows-Z8FHqT4y.js} +2 -2
- package/dist/{workflows-CUgR3bTL.js.map → workflows-Z8FHqT4y.js.map} +1 -1
- package/package.json +7 -7
- package/dist/background-tasks-B4yoNDY_.js.map +0 -1
- package/dist/background-tasks-BarPeyNJ.cjs.map +0 -1
- package/dist/common-5ZZuR6wj.js.map +0 -1
- package/dist/common-DQn8jX5T.cjs.map +0 -1
- package/dist/datasets-B4qPHzEy.js.map +0 -1
- package/dist/datasets-C-_ZWnxR.cjs.map +0 -1
- package/dist/dist-Du9y2ur5.cjs.map +0 -1
- package/dist/routes-9i4gAixo.cjs.map +0 -1
- package/dist/routes-DXUcYEc6.js.map +0 -1
- package/dist/scores-B1IdMcDj.js.map +0 -1
- package/dist/scores-C_Au9jSw.cjs.map +0 -1
- package/dist/utils-BtkczLrA.cjs.map +0 -1
- package/dist/utils-CMWGBd0O.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stored-workspaces-Dl8B20LD.cjs","names":["z","createPagePaginationSchema","paginationInfoSchema"],"sources":["../src/server/schemas/stored-workspaces.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nimport { paginationInfoSchema, createPagePaginationSchema } from './common';\n\n// ============================================================================\n// Path Parameter Schemas\n// ============================================================================\n\nexport const storedWorkspaceIdPathParams = z.object({\n storedWorkspaceId: z.string().describe('Unique identifier for the stored workspace'),\n});\n\n// ============================================================================\n// Query Parameter Schemas\n// ============================================================================\n\nconst storageOrderBySchema = z.object({\n field: z.enum(['createdAt', 'updatedAt']).optional(),\n direction: z.enum(['ASC', 'DESC']).optional(),\n});\n\nexport const listStoredWorkspacesQuerySchema = createPagePaginationSchema(100).extend({\n orderBy: storageOrderBySchema.optional(),\n authorId: z.string().optional().describe('Filter workspaces by author identifier'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Filter workspaces by metadata key-value pairs'),\n});\n\n// ============================================================================\n// Body Parameter Schemas\n// ============================================================================\n\nconst filesystemConfigSchema = z.object({\n provider: z.string().describe('Filesystem provider name'),\n config: z.record(z.string(), z.unknown()).describe('Filesystem provider configuration'),\n});\n\nconst sandboxConfigSchema = z.object({\n provider: z.string().describe('Sandbox provider name'),\n config: z.record(z.string(), z.unknown()).describe('Sandbox provider configuration'),\n});\n\nconst searchConfigSchema = z.object({\n vectorProvider: z.string().optional().describe('Vector store provider identifier'),\n vectorConfig: z.record(z.string(), z.unknown()).optional().describe('Vector store provider-specific configuration'),\n embedderProvider: z.string().optional().describe('Embedder provider identifier'),\n embedderModel: z.string().optional().describe('Embedder model name'),\n embedderConfig: z.record(z.string(), z.unknown()).optional().describe('Embedder provider-specific configuration'),\n bm25: z\n .union([z.boolean(), z.object({ k1: z.number().optional(), b: z.number().optional() })])\n .optional()\n .describe('BM25 keyword search config'),\n searchIndexName: z.string().optional().describe('Custom index name for the vector store'),\n autoIndexPaths: z.array(z.string()).optional().describe('Paths to auto-index on init'),\n});\n\nconst workspaceToolConfigSchema = z.object({\n enabled: z.boolean().optional().describe('Whether the tool is enabled'),\n requireApproval: z.boolean().optional().describe('Whether the tool requires user approval before execution'),\n requireReadBeforeWrite: z\n .boolean()\n .optional()\n .describe('For write tools: require reading a file before writing to it'),\n});\n\nconst workspaceToolsConfigSchema = z.object({\n enabled: z.boolean().optional().describe('Default: whether all tools are enabled'),\n requireApproval: z.boolean().optional().describe('Default: whether all tools require user approval'),\n tools: z\n .record(z.string(), workspaceToolConfigSchema)\n .optional()\n .describe('Per-tool overrides keyed by workspace tool name'),\n});\n\nconst snapshotConfigSchema = z.object({\n name: z.string().describe('Name of the workspace'),\n description: z.string().optional().describe('Description of the workspace'),\n filesystem: filesystemConfigSchema.optional().describe('Filesystem configuration'),\n sandbox: sandboxConfigSchema.optional().describe('Sandbox configuration'),\n mounts: z.record(z.string(), filesystemConfigSchema).optional().describe('Mounted filesystems keyed by mount path'),\n search: searchConfigSchema.optional().describe('Search configuration'),\n skills: z.array(z.string()).optional().describe('Array of skill IDs'),\n tools: workspaceToolsConfigSchema.optional().describe('Workspace tool configuration'),\n autoSync: z.boolean().optional().describe('Whether to automatically sync the workspace'),\n operationTimeout: z.number().optional().describe('Operation timeout in milliseconds'),\n});\n\nexport const createStoredWorkspaceBodySchema = z\n .object({\n id: z.string().optional().describe('Unique identifier. If not provided, derived from name.'),\n authorId: z.string().optional().describe('Author identifier for multi-tenant filtering'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata for the workspace'),\n })\n .merge(snapshotConfigSchema);\n\nexport const updateStoredWorkspaceBodySchema = z\n .object({\n // Note: authorId is intentionally not accepted. Ownership cannot be\n // transferred via PATCH.\n metadata: z.record(z.string(), z.unknown()).optional(),\n })\n .partial()\n .merge(snapshotConfigSchema.partial());\n\n// ============================================================================\n// Response Schemas\n// ============================================================================\n\nexport const storedWorkspaceSchema = z.object({\n id: z.string(),\n status: z.string().describe('Workspace status: draft, published, or archived'),\n activeVersionId: z.string().optional(),\n authorId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n name: z.string().describe('Name of the workspace'),\n description: z.string().optional().describe('Description of the workspace'),\n filesystem: filesystemConfigSchema.optional().describe('Filesystem configuration'),\n sandbox: sandboxConfigSchema.optional().describe('Sandbox configuration'),\n mounts: z.record(z.string(), filesystemConfigSchema).optional().describe('Mounted filesystems keyed by mount path'),\n search: searchConfigSchema.optional().describe('Search configuration'),\n skills: z.array(z.string()).optional().describe('Array of skill IDs'),\n tools: workspaceToolsConfigSchema.optional().describe('Workspace tool configuration'),\n autoSync: z.boolean().optional().describe('Whether to automatically sync the workspace'),\n operationTimeout: z.number().optional().describe('Operation timeout in milliseconds'),\n});\n\nconst listedWorkspaceSchema = storedWorkspaceSchema.extend({\n runtimeRegistered: z.boolean().optional().describe('Whether this workspace is registered at runtime'),\n});\n\nexport const listStoredWorkspacesResponseSchema = paginationInfoSchema.extend({\n workspaces: z.array(listedWorkspaceSchema),\n});\n\nexport const getStoredWorkspaceResponseSchema = storedWorkspaceSchema;\nexport const createStoredWorkspaceResponseSchema = storedWorkspaceSchema;\n\nexport const updateStoredWorkspaceResponseSchema = z.union([\n z.object({\n id: z.string(),\n status: z.string(),\n activeVersionId: z.string().optional(),\n authorId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n }),\n storedWorkspaceSchema,\n]);\n\nexport const deleteStoredWorkspaceResponseSchema = z.object({\n success: z.boolean(),\n message: z.string(),\n});\n\nexport { snapshotConfigSchema as workspaceSnapshotConfigSchema };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stored-workspaces-epewrppK.cjs","names":["z","createPagePaginationSchema","paginationInfoSchema"],"sources":["../src/server/schemas/stored-workspaces.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nimport { paginationInfoSchema, createPagePaginationSchema } from './common';\n\n// ============================================================================\n// Path Parameter Schemas\n// ============================================================================\n\nexport const storedWorkspaceIdPathParams = z.object({\n storedWorkspaceId: z.string().describe('Unique identifier for the stored workspace'),\n});\n\n// ============================================================================\n// Query Parameter Schemas\n// ============================================================================\n\nconst storageOrderBySchema = z.object({\n field: z.enum(['createdAt', 'updatedAt']).optional(),\n direction: z.enum(['ASC', 'DESC']).optional(),\n});\n\nexport const listStoredWorkspacesQuerySchema = createPagePaginationSchema(100).extend({\n orderBy: storageOrderBySchema.optional(),\n authorId: z.string().optional().describe('Filter workspaces by author identifier'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Filter workspaces by metadata key-value pairs'),\n});\n\n// ============================================================================\n// Body Parameter Schemas\n// ============================================================================\n\nconst filesystemConfigSchema = z.object({\n provider: z.string().describe('Filesystem provider name'),\n config: z.record(z.string(), z.unknown()).describe('Filesystem provider configuration'),\n});\n\nconst sandboxConfigSchema = z.object({\n provider: z.string().describe('Sandbox provider name'),\n config: z.record(z.string(), z.unknown()).describe('Sandbox provider configuration'),\n});\n\nconst searchConfigSchema = z.object({\n vectorProvider: z.string().optional().describe('Vector store provider identifier'),\n vectorConfig: z.record(z.string(), z.unknown()).optional().describe('Vector store provider-specific configuration'),\n embedderProvider: z.string().optional().describe('Embedder provider identifier'),\n embedderModel: z.string().optional().describe('Embedder model name'),\n embedderConfig: z.record(z.string(), z.unknown()).optional().describe('Embedder provider-specific configuration'),\n bm25: z\n .union([z.boolean(), z.object({ k1: z.number().optional(), b: z.number().optional() })])\n .optional()\n .describe('BM25 keyword search config'),\n searchIndexName: z.string().optional().describe('Custom index name for the vector store'),\n autoIndexPaths: z.array(z.string()).optional().describe('Paths to auto-index on init'),\n});\n\nconst workspaceToolConfigSchema = z.object({\n enabled: z.boolean().optional().describe('Whether the tool is enabled'),\n requireApproval: z.boolean().optional().describe('Whether the tool requires user approval before execution'),\n requireReadBeforeWrite: z\n .boolean()\n .optional()\n .describe('For write tools: require reading a file before writing to it'),\n});\n\nconst workspaceToolsConfigSchema = z.object({\n enabled: z.boolean().optional().describe('Default: whether all tools are enabled'),\n requireApproval: z.boolean().optional().describe('Default: whether all tools require user approval'),\n tools: z\n .record(z.string(), workspaceToolConfigSchema)\n .optional()\n .describe('Per-tool overrides keyed by workspace tool name'),\n});\n\nconst snapshotConfigSchema = z.object({\n name: z.string().describe('Name of the workspace'),\n description: z.string().optional().describe('Description of the workspace'),\n filesystem: filesystemConfigSchema.optional().describe('Filesystem configuration'),\n sandbox: sandboxConfigSchema.optional().describe('Sandbox configuration'),\n mounts: z.record(z.string(), filesystemConfigSchema).optional().describe('Mounted filesystems keyed by mount path'),\n search: searchConfigSchema.optional().describe('Search configuration'),\n skills: z.array(z.string()).optional().describe('Array of skill IDs'),\n tools: workspaceToolsConfigSchema.optional().describe('Workspace tool configuration'),\n autoSync: z.boolean().optional().describe('Whether to automatically sync the workspace'),\n operationTimeout: z.number().optional().describe('Operation timeout in milliseconds'),\n});\n\nexport const createStoredWorkspaceBodySchema = z\n .object({\n id: z.string().optional().describe('Unique identifier. If not provided, derived from name.'),\n authorId: z.string().optional().describe('Author identifier for multi-tenant filtering'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata for the workspace'),\n })\n .merge(snapshotConfigSchema);\n\nexport const updateStoredWorkspaceBodySchema = z\n .object({\n // Note: authorId is intentionally not accepted. Ownership cannot be\n // transferred via PATCH.\n metadata: z.record(z.string(), z.unknown()).optional(),\n })\n .partial()\n .merge(snapshotConfigSchema.partial());\n\n// ============================================================================\n// Response Schemas\n// ============================================================================\n\nexport const storedWorkspaceSchema = z.object({\n id: z.string(),\n status: z.string().describe('Workspace status: draft, published, or archived'),\n activeVersionId: z.string().optional(),\n authorId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n name: z.string().describe('Name of the workspace'),\n description: z.string().optional().describe('Description of the workspace'),\n filesystem: filesystemConfigSchema.optional().describe('Filesystem configuration'),\n sandbox: sandboxConfigSchema.optional().describe('Sandbox configuration'),\n mounts: z.record(z.string(), filesystemConfigSchema).optional().describe('Mounted filesystems keyed by mount path'),\n search: searchConfigSchema.optional().describe('Search configuration'),\n skills: z.array(z.string()).optional().describe('Array of skill IDs'),\n tools: workspaceToolsConfigSchema.optional().describe('Workspace tool configuration'),\n autoSync: z.boolean().optional().describe('Whether to automatically sync the workspace'),\n operationTimeout: z.number().optional().describe('Operation timeout in milliseconds'),\n});\n\nconst listedWorkspaceSchema = storedWorkspaceSchema.extend({\n runtimeRegistered: z.boolean().optional().describe('Whether this workspace is registered at runtime'),\n});\n\nexport const listStoredWorkspacesResponseSchema = paginationInfoSchema.extend({\n workspaces: z.array(listedWorkspaceSchema),\n});\n\nexport const getStoredWorkspaceResponseSchema = storedWorkspaceSchema;\nexport const createStoredWorkspaceResponseSchema = storedWorkspaceSchema;\n\nexport const updateStoredWorkspaceResponseSchema = z.union([\n z.object({\n id: z.string(),\n status: z.string(),\n activeVersionId: z.string().optional(),\n authorId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n }),\n storedWorkspaceSchema,\n]);\n\nexport const deleteStoredWorkspaceResponseSchema = z.object({\n success: z.boolean(),\n message: z.string(),\n});\n\nexport { snapshotConfigSchema as workspaceSnapshotConfigSchema };\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as HTTPException } from "./http-exception-CyfxZB6W.js";
|
|
2
|
-
import { o as MASTRA_RESOURCE_ID_KEY } from "./constants-0jFCWoex.js";
|
|
2
|
+
import { o as MASTRA_RESOURCE_ID_KEY, p as isReservedRequestContextKey } from "./constants-0jFCWoex.js";
|
|
3
3
|
import * as authEE from "@mastra/core/auth/ee";
|
|
4
4
|
import { MastraMemory } from "@mastra/core/memory";
|
|
5
5
|
//#region src/server/fga-permissions.ts
|
|
@@ -83,6 +83,18 @@ function parseFilters(filters) {
|
|
|
83
83
|
}));
|
|
84
84
|
}
|
|
85
85
|
/**
|
|
86
|
+
* Merges a body-supplied requestContext into the trusted server RequestContext.
|
|
87
|
+
* The server context is authoritative: reserved keys are skipped and body values
|
|
88
|
+
* only fill keys the server context has not already set.
|
|
89
|
+
*/
|
|
90
|
+
function mergeBodyRequestContext(serverRequestContext, bodyRequestContext) {
|
|
91
|
+
if (!bodyRequestContext || typeof bodyRequestContext !== "object") return;
|
|
92
|
+
for (const [key, value] of Object.entries(bodyRequestContext)) {
|
|
93
|
+
if (isReservedRequestContextKey(key)) continue;
|
|
94
|
+
if (serverRequestContext.get(key) === void 0) serverRequestContext.set(key, value);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
86
98
|
* Gets the effective resourceId, preferring the reserved key from requestContext
|
|
87
99
|
* over client-provided values for security.
|
|
88
100
|
*/
|
|
@@ -149,6 +161,6 @@ async function validateRunOwnership(run, effectiveResourceId) {
|
|
|
149
161
|
if (run && effectiveResourceId && run.resourceId && run.resourceId !== effectiveResourceId) throw new HTTPException(403, { message: "Access denied: workflow run belongs to a different resource" });
|
|
150
162
|
}
|
|
151
163
|
//#endregion
|
|
152
|
-
export {
|
|
164
|
+
export { mergeBodyRequestContext as a, requireEffectiveResourceId as c, validateRunOwnership as d, validateThreadOwnership as f, getEffectiveThreadId as i, sanitizeBody as l, getContextResourceId as n, parseFilters as o, MastraFGAPermissions as p, getEffectiveResourceId as r, parsePerPage as s, enforceThreadAccess as t, validateBody as u };
|
|
153
165
|
|
|
154
|
-
//# sourceMappingURL=utils-
|
|
166
|
+
//# sourceMappingURL=utils-KsERfbhc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-KsERfbhc.js","names":[],"sources":["../src/server/fga-permissions.ts","../src/server/handlers/utils.ts"],"sourcesContent":["/**\n * Safe re-export of `MastraFGAPermissions` from `@mastra/core/auth/ee`.\n *\n * Why this shim exists:\n * `MastraFGAPermissions` was introduced in `@mastra/core@1.32.0`. Earlier\n * versions of `@mastra/core` ship `@mastra/core/auth/ee` but do not export\n * this constant. A direct named import (`import { MastraFGAPermissions }\n * from '@mastra/core/auth/ee'`) fails at ESM link time when this version\n * of `@mastra/server` is paired with `@mastra/core < 1.32.0`, taking the\n * entire user bundle down before any code runs.\n *\n * A namespace import tolerates missing names — `ns.MissingExport` is just\n * `undefined`, no link-time error. We then expose the permission map.\n *\n * Fallback values:\n * If the consuming `@mastra/core` does not export `MastraFGAPermissions`,\n * we substitute a hardcoded map of the canonical permission strings used\n * by routes in `@mastra/server`. This preserves the explicit RBAC\n * permission overrides those routes already had as string literals in\n * `@mastra/server@1.31.0` (e.g. `requiresPermission: \"agents:execute\"`\n * on `/v1/responses`). Without this fallback, `requiresPermission` would\n * be `undefined` on old core and the auth layer would derive the wrong\n * permission from the route path (e.g. `v1:write` instead of\n * `agents:execute`), breaking RBAC users who upgrade `@mastra/server`\n * but stay on `@mastra/core@1.31.0`.\n *\n * Once the consuming `@mastra/core` is on `1.32.0+` the values are real\n * and behaviour is identical to a direct named import.\n */\n\nimport * as authEE from '@mastra/core/auth/ee';\n\n// Canonical strings for the FGA permission keys actually referenced by\n// `@mastra/server` source. Mirrors `MastraFGAPermissions` in\n// `@mastra/core@1.32.0+` for these specific keys, and matches the string\n// literals previously hardcoded on the same routes in `@mastra/server@1.31.0`.\nconst FALLBACK_PERMISSIONS = {\n AGENTS_CREATE: 'agents:create',\n AGENTS_DELETE: 'agents:delete',\n AGENTS_EXECUTE: 'agents:execute',\n AGENTS_READ: 'agents:read',\n MEMORY_DELETE: 'memory:delete',\n MEMORY_READ: 'memory:read',\n MEMORY_WRITE: 'memory:write',\n TOOLS_EXECUTE: 'tools:execute',\n TOOLS_READ: 'tools:read',\n STORED_WORKFLOWS_READ: 'stored-workflows:read',\n STORED_WORKFLOWS_WRITE: 'stored-workflows:write',\n WORKFLOWS_EXECUTE: 'workflows:execute',\n WORKFLOWS_READ: 'workflows:read',\n} as const;\n\nconst realPermissions = (authEE as any).MastraFGAPermissions;\n\n// Typed as `any` on purpose: consumers of `@mastra/server` may run their\n// typecheck against a `@mastra/core` that doesn't export `MastraFGAPermissions`\n// (anything < 1.32.0). Pinning to the real type would push that name into the\n// emitted `.d.ts` and break downstream typecheck. `any` lets the property\n// accesses (`MastraFGAPermissions.AGENTS_READ`) flow through cleanly on every\n// supported core.\nexport const MastraFGAPermissions: any =\n realPermissions && Object.keys(realPermissions).length > 0 ? realPermissions : FALLBACK_PERMISSIONS;\n","import type { MastraFGAPermissionInput } from '@mastra/core/auth/ee';\nimport type { RequestContext } from '@mastra/core/di';\nimport { MastraMemory } from '@mastra/core/memory';\nimport { MASTRA_RESOURCE_ID_KEY, MASTRA_THREAD_ID_KEY, isReservedRequestContextKey } from '../constants';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\n\n// Validation helper\nexport function validateBody(body: Record<string, unknown>) {\n const errorResponse = Object.entries(body).reduce<Record<string, string>>((acc, [key, value]) => {\n if (!value) {\n acc[key] = `Argument \"${key}\" is required`;\n }\n return acc;\n }, {});\n\n if (Object.keys(errorResponse).length > 0) {\n throw new HTTPException(400, { message: Object.values(errorResponse)[0] });\n }\n}\n\n/**\n * sanitizes the body by removing disallowed keys.\n * @param body body to sanitize\n * @param disallowedKeys keys to remove from the body\n */\nexport function sanitizeBody(body: Record<string, unknown>, disallowedKeys: string[]) {\n for (const key of disallowedKeys) {\n if (key in body) {\n delete body[key];\n }\n }\n}\n\nexport function parsePerPage(\n value: string | undefined,\n defaultValue: number = 100,\n max: number = 1000,\n): number | false {\n const normalized = (value || '').trim().toLowerCase();\n // Handle explicit false to bypass pagination\n if (normalized === 'false') {\n return false;\n }\n const parsed = parseInt(value || String(defaultValue), 10);\n if (isNaN(parsed)) return defaultValue;\n return Math.min(max, Math.max(1, parsed));\n}\n\n/**\n * Parses filter query parameters into a key-value object.\n */\nexport function parseFilters(filters: string | string[] | undefined): Record<string, string> | undefined {\n if (!filters) return undefined;\n\n return Object.fromEntries(\n (Array.isArray(filters) ? filters : [filters]).map((attr: string) => {\n const [key, ...valueParts] = attr.split(':');\n const value = valueParts.join(':'); // ✅ Handles colons in values\n return [key, value];\n }),\n );\n}\n\n/**\n * Merges a body-supplied requestContext into the trusted server RequestContext.\n * The server context is authoritative: reserved keys are skipped and body values\n * only fill keys the server context has not already set.\n */\nexport function mergeBodyRequestContext(serverRequestContext: RequestContext, bodyRequestContext: unknown): void {\n if (!bodyRequestContext || typeof bodyRequestContext !== 'object') {\n return;\n }\n\n for (const [key, value] of Object.entries(bodyRequestContext)) {\n if (isReservedRequestContextKey(key)) continue;\n if (serverRequestContext.get(key) === undefined) {\n serverRequestContext.set(key, value);\n }\n }\n}\n\n// ============================================================================\n// Authorization Utilities\n// ============================================================================\n\n/**\n * Gets the effective resourceId, preferring the reserved key from requestContext\n * over client-provided values for security.\n */\nexport function getEffectiveResourceId(\n requestContext: RequestContext | undefined,\n clientResourceId: string | undefined,\n): string | undefined {\n const contextResourceId = requestContext?.get(MASTRA_RESOURCE_ID_KEY) as string | undefined;\n return contextResourceId || clientResourceId;\n}\n\n/**\n * Returns the resource id resolved from the request context alone (set via\n * `mapUserToResourceId` or the `x-resource-id` header), ignoring any\n * client-provided value. Its presence indicates a resource-scoped caller;\n * its absence indicates a privileged/service context.\n */\nexport function getContextResourceId(requestContext: RequestContext | undefined): string | undefined {\n return requestContext?.get(MASTRA_RESOURCE_ID_KEY) as string | undefined;\n}\n\n/**\n * Ensures a memory request has a resolvable resource ID. The body's\n * `memory.resource` is optional so authenticated setups can rely on the\n * server-derived resource ID (MASTRA_RESOURCE_ID_KEY set via mapUserToResourceId).\n * When neither the body nor the request context provides one, reject with a\n * clear 400 instead of failing deep inside agent execution.\n */\nexport function requireEffectiveResourceId(\n effectiveResourceId: string | undefined,\n): asserts effectiveResourceId is string {\n if (!effectiveResourceId) {\n throw new HTTPException(400, {\n message:\n 'A resource ID is required when using memory. Provide memory.resource in the request body, or configure server auth with mapUserToResourceId to derive it from the authenticated user.',\n });\n }\n}\n\n/**\n * Gets the effective threadId, preferring the reserved key from requestContext\n * over client-provided values for security.\n */\nexport function getEffectiveThreadId(\n requestContext: RequestContext | undefined,\n clientThreadId: string | undefined,\n): string | undefined {\n const contextThreadId = requestContext?.get(MASTRA_THREAD_ID_KEY) as string | undefined;\n return contextThreadId || clientThreadId;\n}\n\n/**\n * Validates that a thread belongs to the specified resourceId.\n * Throws 403 if the thread exists but belongs to a different resource.\n * Threads with no resourceId are accessible to all (shared threads).\n */\nexport async function validateThreadOwnership(\n thread: { resourceId?: string | null } | null | undefined,\n effectiveResourceId: string | undefined,\n): Promise<void> {\n if (thread && effectiveResourceId && thread.resourceId && thread.resourceId !== effectiveResourceId) {\n throw new HTTPException(403, { message: 'Access denied: thread belongs to a different resource' });\n }\n}\n\n/**\n * Validates both coarse resource ownership and fine-grained thread access.\n * FGA enforcement is a no-op when no FGA provider is configured.\n */\nexport async function enforceThreadAccess({\n mastra,\n requestContext,\n threadId,\n thread,\n effectiveResourceId,\n permission = MastraFGAPermissions.MEMORY_READ,\n}: {\n mastra: any;\n requestContext?: RequestContext;\n threadId: string;\n thread?: { resourceId?: string | null } | null;\n effectiveResourceId?: string;\n permission?: MastraFGAPermissionInput;\n}): Promise<void> {\n await validateThreadOwnership(thread, effectiveResourceId);\n\n const fgaProvider = mastra?.getServer?.()?.fga;\n if (!fgaProvider) {\n return;\n }\n\n const user = requestContext?.get('user');\n if (!user || typeof user !== 'object') {\n throw new HTTPException(403, { message: 'FGA authorization denied: authenticated user is required' });\n }\n\n await MastraMemory.checkThreadFGA({\n mastra,\n user: user as { id: string; [key: string]: unknown },\n threadId,\n resourceId: thread?.resourceId ?? effectiveResourceId,\n requestContext,\n permission,\n });\n}\n\n/**\n * Validates that a workflow run belongs to the specified resourceId.\n * Throws 403 if the run exists but belongs to a different resource.\n */\nexport async function validateRunOwnership(\n run: { resourceId?: string | null } | null | undefined,\n effectiveResourceId: string | undefined,\n): Promise<void> {\n if (run && effectiveResourceId && run.resourceId && run.resourceId !== effectiveResourceId) {\n throw new HTTPException(403, { message: 'Access denied: workflow run belongs to a different resource' });\n }\n}\n"],"mappings":"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"}
|
|
@@ -85,6 +85,18 @@ function parseFilters(filters) {
|
|
|
85
85
|
}));
|
|
86
86
|
}
|
|
87
87
|
/**
|
|
88
|
+
* Merges a body-supplied requestContext into the trusted server RequestContext.
|
|
89
|
+
* The server context is authoritative: reserved keys are skipped and body values
|
|
90
|
+
* only fill keys the server context has not already set.
|
|
91
|
+
*/
|
|
92
|
+
function mergeBodyRequestContext(serverRequestContext, bodyRequestContext) {
|
|
93
|
+
if (!bodyRequestContext || typeof bodyRequestContext !== "object") return;
|
|
94
|
+
for (const [key, value] of Object.entries(bodyRequestContext)) {
|
|
95
|
+
if (require_constants.isReservedRequestContextKey(key)) continue;
|
|
96
|
+
if (serverRequestContext.get(key) === void 0) serverRequestContext.set(key, value);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
88
100
|
* Gets the effective resourceId, preferring the reserved key from requestContext
|
|
89
101
|
* over client-provided values for security.
|
|
90
102
|
*/
|
|
@@ -181,6 +193,12 @@ Object.defineProperty(exports, "getEffectiveThreadId", {
|
|
|
181
193
|
return getEffectiveThreadId;
|
|
182
194
|
}
|
|
183
195
|
});
|
|
196
|
+
Object.defineProperty(exports, "mergeBodyRequestContext", {
|
|
197
|
+
enumerable: true,
|
|
198
|
+
get: function() {
|
|
199
|
+
return mergeBodyRequestContext;
|
|
200
|
+
}
|
|
201
|
+
});
|
|
184
202
|
Object.defineProperty(exports, "parseFilters", {
|
|
185
203
|
enumerable: true,
|
|
186
204
|
get: function() {
|
|
@@ -224,4 +242,4 @@ Object.defineProperty(exports, "validateThreadOwnership", {
|
|
|
224
242
|
}
|
|
225
243
|
});
|
|
226
244
|
|
|
227
|
-
//# sourceMappingURL=utils-
|
|
245
|
+
//# sourceMappingURL=utils-aIu3gkhJ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-aIu3gkhJ.cjs","names":["authEE","HTTPException","isReservedRequestContextKey","MASTRA_RESOURCE_ID_KEY","MastraMemory"],"sources":["../src/server/fga-permissions.ts","../src/server/handlers/utils.ts"],"sourcesContent":["/**\n * Safe re-export of `MastraFGAPermissions` from `@mastra/core/auth/ee`.\n *\n * Why this shim exists:\n * `MastraFGAPermissions` was introduced in `@mastra/core@1.32.0`. Earlier\n * versions of `@mastra/core` ship `@mastra/core/auth/ee` but do not export\n * this constant. A direct named import (`import { MastraFGAPermissions }\n * from '@mastra/core/auth/ee'`) fails at ESM link time when this version\n * of `@mastra/server` is paired with `@mastra/core < 1.32.0`, taking the\n * entire user bundle down before any code runs.\n *\n * A namespace import tolerates missing names — `ns.MissingExport` is just\n * `undefined`, no link-time error. We then expose the permission map.\n *\n * Fallback values:\n * If the consuming `@mastra/core` does not export `MastraFGAPermissions`,\n * we substitute a hardcoded map of the canonical permission strings used\n * by routes in `@mastra/server`. This preserves the explicit RBAC\n * permission overrides those routes already had as string literals in\n * `@mastra/server@1.31.0` (e.g. `requiresPermission: \"agents:execute\"`\n * on `/v1/responses`). Without this fallback, `requiresPermission` would\n * be `undefined` on old core and the auth layer would derive the wrong\n * permission from the route path (e.g. `v1:write` instead of\n * `agents:execute`), breaking RBAC users who upgrade `@mastra/server`\n * but stay on `@mastra/core@1.31.0`.\n *\n * Once the consuming `@mastra/core` is on `1.32.0+` the values are real\n * and behaviour is identical to a direct named import.\n */\n\nimport * as authEE from '@mastra/core/auth/ee';\n\n// Canonical strings for the FGA permission keys actually referenced by\n// `@mastra/server` source. Mirrors `MastraFGAPermissions` in\n// `@mastra/core@1.32.0+` for these specific keys, and matches the string\n// literals previously hardcoded on the same routes in `@mastra/server@1.31.0`.\nconst FALLBACK_PERMISSIONS = {\n AGENTS_CREATE: 'agents:create',\n AGENTS_DELETE: 'agents:delete',\n AGENTS_EXECUTE: 'agents:execute',\n AGENTS_READ: 'agents:read',\n MEMORY_DELETE: 'memory:delete',\n MEMORY_READ: 'memory:read',\n MEMORY_WRITE: 'memory:write',\n TOOLS_EXECUTE: 'tools:execute',\n TOOLS_READ: 'tools:read',\n STORED_WORKFLOWS_READ: 'stored-workflows:read',\n STORED_WORKFLOWS_WRITE: 'stored-workflows:write',\n WORKFLOWS_EXECUTE: 'workflows:execute',\n WORKFLOWS_READ: 'workflows:read',\n} as const;\n\nconst realPermissions = (authEE as any).MastraFGAPermissions;\n\n// Typed as `any` on purpose: consumers of `@mastra/server` may run their\n// typecheck against a `@mastra/core` that doesn't export `MastraFGAPermissions`\n// (anything < 1.32.0). Pinning to the real type would push that name into the\n// emitted `.d.ts` and break downstream typecheck. `any` lets the property\n// accesses (`MastraFGAPermissions.AGENTS_READ`) flow through cleanly on every\n// supported core.\nexport const MastraFGAPermissions: any =\n realPermissions && Object.keys(realPermissions).length > 0 ? realPermissions : FALLBACK_PERMISSIONS;\n","import type { MastraFGAPermissionInput } from '@mastra/core/auth/ee';\nimport type { RequestContext } from '@mastra/core/di';\nimport { MastraMemory } from '@mastra/core/memory';\nimport { MASTRA_RESOURCE_ID_KEY, MASTRA_THREAD_ID_KEY, isReservedRequestContextKey } from '../constants';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\n\n// Validation helper\nexport function validateBody(body: Record<string, unknown>) {\n const errorResponse = Object.entries(body).reduce<Record<string, string>>((acc, [key, value]) => {\n if (!value) {\n acc[key] = `Argument \"${key}\" is required`;\n }\n return acc;\n }, {});\n\n if (Object.keys(errorResponse).length > 0) {\n throw new HTTPException(400, { message: Object.values(errorResponse)[0] });\n }\n}\n\n/**\n * sanitizes the body by removing disallowed keys.\n * @param body body to sanitize\n * @param disallowedKeys keys to remove from the body\n */\nexport function sanitizeBody(body: Record<string, unknown>, disallowedKeys: string[]) {\n for (const key of disallowedKeys) {\n if (key in body) {\n delete body[key];\n }\n }\n}\n\nexport function parsePerPage(\n value: string | undefined,\n defaultValue: number = 100,\n max: number = 1000,\n): number | false {\n const normalized = (value || '').trim().toLowerCase();\n // Handle explicit false to bypass pagination\n if (normalized === 'false') {\n return false;\n }\n const parsed = parseInt(value || String(defaultValue), 10);\n if (isNaN(parsed)) return defaultValue;\n return Math.min(max, Math.max(1, parsed));\n}\n\n/**\n * Parses filter query parameters into a key-value object.\n */\nexport function parseFilters(filters: string | string[] | undefined): Record<string, string> | undefined {\n if (!filters) return undefined;\n\n return Object.fromEntries(\n (Array.isArray(filters) ? filters : [filters]).map((attr: string) => {\n const [key, ...valueParts] = attr.split(':');\n const value = valueParts.join(':'); // ✅ Handles colons in values\n return [key, value];\n }),\n );\n}\n\n/**\n * Merges a body-supplied requestContext into the trusted server RequestContext.\n * The server context is authoritative: reserved keys are skipped and body values\n * only fill keys the server context has not already set.\n */\nexport function mergeBodyRequestContext(serverRequestContext: RequestContext, bodyRequestContext: unknown): void {\n if (!bodyRequestContext || typeof bodyRequestContext !== 'object') {\n return;\n }\n\n for (const [key, value] of Object.entries(bodyRequestContext)) {\n if (isReservedRequestContextKey(key)) continue;\n if (serverRequestContext.get(key) === undefined) {\n serverRequestContext.set(key, value);\n }\n }\n}\n\n// ============================================================================\n// Authorization Utilities\n// ============================================================================\n\n/**\n * Gets the effective resourceId, preferring the reserved key from requestContext\n * over client-provided values for security.\n */\nexport function getEffectiveResourceId(\n requestContext: RequestContext | undefined,\n clientResourceId: string | undefined,\n): string | undefined {\n const contextResourceId = requestContext?.get(MASTRA_RESOURCE_ID_KEY) as string | undefined;\n return contextResourceId || clientResourceId;\n}\n\n/**\n * Returns the resource id resolved from the request context alone (set via\n * `mapUserToResourceId` or the `x-resource-id` header), ignoring any\n * client-provided value. Its presence indicates a resource-scoped caller;\n * its absence indicates a privileged/service context.\n */\nexport function getContextResourceId(requestContext: RequestContext | undefined): string | undefined {\n return requestContext?.get(MASTRA_RESOURCE_ID_KEY) as string | undefined;\n}\n\n/**\n * Ensures a memory request has a resolvable resource ID. The body's\n * `memory.resource` is optional so authenticated setups can rely on the\n * server-derived resource ID (MASTRA_RESOURCE_ID_KEY set via mapUserToResourceId).\n * When neither the body nor the request context provides one, reject with a\n * clear 400 instead of failing deep inside agent execution.\n */\nexport function requireEffectiveResourceId(\n effectiveResourceId: string | undefined,\n): asserts effectiveResourceId is string {\n if (!effectiveResourceId) {\n throw new HTTPException(400, {\n message:\n 'A resource ID is required when using memory. Provide memory.resource in the request body, or configure server auth with mapUserToResourceId to derive it from the authenticated user.',\n });\n }\n}\n\n/**\n * Gets the effective threadId, preferring the reserved key from requestContext\n * over client-provided values for security.\n */\nexport function getEffectiveThreadId(\n requestContext: RequestContext | undefined,\n clientThreadId: string | undefined,\n): string | undefined {\n const contextThreadId = requestContext?.get(MASTRA_THREAD_ID_KEY) as string | undefined;\n return contextThreadId || clientThreadId;\n}\n\n/**\n * Validates that a thread belongs to the specified resourceId.\n * Throws 403 if the thread exists but belongs to a different resource.\n * Threads with no resourceId are accessible to all (shared threads).\n */\nexport async function validateThreadOwnership(\n thread: { resourceId?: string | null } | null | undefined,\n effectiveResourceId: string | undefined,\n): Promise<void> {\n if (thread && effectiveResourceId && thread.resourceId && thread.resourceId !== effectiveResourceId) {\n throw new HTTPException(403, { message: 'Access denied: thread belongs to a different resource' });\n }\n}\n\n/**\n * Validates both coarse resource ownership and fine-grained thread access.\n * FGA enforcement is a no-op when no FGA provider is configured.\n */\nexport async function enforceThreadAccess({\n mastra,\n requestContext,\n threadId,\n thread,\n effectiveResourceId,\n permission = MastraFGAPermissions.MEMORY_READ,\n}: {\n mastra: any;\n requestContext?: RequestContext;\n threadId: string;\n thread?: { resourceId?: string | null } | null;\n effectiveResourceId?: string;\n permission?: MastraFGAPermissionInput;\n}): Promise<void> {\n await validateThreadOwnership(thread, effectiveResourceId);\n\n const fgaProvider = mastra?.getServer?.()?.fga;\n if (!fgaProvider) {\n return;\n }\n\n const user = requestContext?.get('user');\n if (!user || typeof user !== 'object') {\n throw new HTTPException(403, { message: 'FGA authorization denied: authenticated user is required' });\n }\n\n await MastraMemory.checkThreadFGA({\n mastra,\n user: user as { id: string; [key: string]: unknown },\n threadId,\n resourceId: thread?.resourceId ?? effectiveResourceId,\n requestContext,\n permission,\n });\n}\n\n/**\n * Validates that a workflow run belongs to the specified resourceId.\n * Throws 403 if the run exists but belongs to a different resource.\n */\nexport async function validateRunOwnership(\n run: { resourceId?: string | null } | null | undefined,\n effectiveResourceId: string | undefined,\n): Promise<void> {\n if (run && effectiveResourceId && run.resourceId && run.resourceId !== effectiveResourceId) {\n throw new HTTPException(403, { message: 'Access denied: workflow run belongs to a different resource' });\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_common = require("./common-
|
|
1
|
+
const require_common = require("./common-BPjna_b6.cjs");
|
|
2
2
|
let zod_v4 = require("zod/v4");
|
|
3
3
|
//#region src/server/schemas/vectors.ts
|
|
4
4
|
const vectorNamePathParams = zod_v4.z.object({ vectorName: zod_v4.z.string().describe("Name of the vector store") });
|
|
@@ -127,4 +127,4 @@ Object.defineProperty(exports, "vectorNamePathParams", {
|
|
|
127
127
|
}
|
|
128
128
|
});
|
|
129
129
|
|
|
130
|
-
//# sourceMappingURL=vectors-
|
|
130
|
+
//# sourceMappingURL=vectors-DlW_SU5m.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vectors-
|
|
1
|
+
{"version":3,"file":"vectors-DlW_SU5m.cjs","names":["z","successResponseSchema"],"sources":["../src/server/schemas/vectors.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { successResponseSchema } from './common';\n\n// Path parameter schemas\nexport const vectorNamePathParams = z.object({\n vectorName: z.string().describe('Name of the vector store'),\n});\n\nexport const vectorIndexPathParams = vectorNamePathParams.extend({\n indexName: z.string().describe('Name of the index'),\n});\n\n// Body schemas\n// Base schema for operations that require an index name\nconst indexBodyBaseSchema = z.object({\n indexName: z.string(),\n});\n\nexport const upsertVectorsBodySchema = indexBodyBaseSchema.extend({\n vectors: z.array(z.array(z.number())),\n metadata: z.array(z.record(z.string(), z.unknown())).optional(),\n ids: z.array(z.string()).optional(),\n});\n\nexport const createIndexBodySchema = indexBodyBaseSchema.extend({\n dimension: z.number(),\n metric: z.enum(['cosine', 'euclidean', 'dotproduct']).optional(),\n});\n\nexport const queryVectorsBodySchema = indexBodyBaseSchema.extend({\n queryVector: z.array(z.number()),\n topK: z.number().optional(),\n filter: z.record(z.string(), z.unknown()).optional(),\n includeVector: z.boolean().optional(),\n});\n\n// Response schemas\nexport const upsertVectorsResponseSchema = z.object({\n ids: z.array(z.string()),\n});\n\nexport const createIndexResponseSchema = successResponseSchema;\n\nexport const queryVectorsResponseSchema = z.array(z.unknown()); // QueryResult[]\n\nexport const listIndexesResponseSchema = z.array(z.string());\n\nexport const describeIndexResponseSchema = z.object({\n dimension: z.number(),\n count: z.number(),\n metric: z.string().optional(),\n});\n\nexport const deleteIndexResponseSchema = successResponseSchema;\n\nexport const listVectorsResponseSchema = z.object({\n vectors: z.array(\n z.object({\n id: z.string(),\n name: z.string(),\n type: z.string(),\n description: z.string().optional(),\n }),\n ),\n});\n\nexport const listEmbeddersResponseSchema = z.object({\n embedders: z.array(\n z.object({\n id: z.string(),\n provider: z.string(),\n name: z.string(),\n description: z.string(),\n dimensions: z.number(),\n maxInputTokens: z.number(),\n }),\n ),\n});\n"],"mappings":";;;AAIA,MAAa,uBAAuBA,OAAAA,EAAE,OAAO,EAC3C,YAAYA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,0BAA0B,EAC5D,CAAC;AAED,MAAa,wBAAwB,qBAAqB,OAAO,EAC/D,WAAWA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,mBAAmB,EACpD,CAAC;AAID,MAAM,sBAAsBA,OAAAA,EAAE,OAAO,EACnC,WAAWA,OAAAA,EAAE,OAAO,EACtB,CAAC;AAED,MAAa,0BAA0B,oBAAoB,OAAO;CAChE,SAASA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,OAAO,CAAC,CAAC;CACpC,UAAUA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,OAAOA,OAAAA,EAAE,OAAO,GAAGA,OAAAA,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;CAC9D,KAAKA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS;AACpC,CAAC;AAED,MAAa,wBAAwB,oBAAoB,OAAO;CAC9D,WAAWA,OAAAA,EAAE,OAAO;CACpB,QAAQA,OAAAA,EAAE,KAAK;EAAC;EAAU;EAAa;CAAY,CAAC,CAAC,CAAC,SAAS;AACjE,CAAC;AAED,MAAa,yBAAyB,oBAAoB,OAAO;CAC/D,aAAaA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,OAAO,CAAC;CAC/B,MAAMA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;CAC1B,QAAQA,OAAAA,EAAE,OAAOA,OAAAA,EAAE,OAAO,GAAGA,OAAAA,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS;CACnD,eAAeA,OAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS;AACtC,CAAC;AAGD,MAAa,8BAA8BA,OAAAA,EAAE,OAAO,EAClD,KAAKA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,OAAO,CAAC,EACzB,CAAC;AAED,MAAa,4BAA4BC,eAAAA;AAEzC,MAAa,6BAA6BD,OAAAA,EAAE,MAAMA,OAAAA,EAAE,QAAQ,CAAC;AAE7D,MAAa,4BAA4BA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,OAAO,CAAC;AAE3D,MAAa,8BAA8BA,OAAAA,EAAE,OAAO;CAClD,WAAWA,OAAAA,EAAE,OAAO;CACpB,OAAOA,OAAAA,EAAE,OAAO;CAChB,QAAQA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;AAC9B,CAAC;AAED,MAAa,4BAA4BC,eAAAA;AAEzC,MAAa,4BAA4BD,OAAAA,EAAE,OAAO,EAChD,SAASA,OAAAA,EAAE,MACTA,OAAAA,EAAE,OAAO;CACP,IAAIA,OAAAA,EAAE,OAAO;CACb,MAAMA,OAAAA,EAAE,OAAO;CACf,MAAMA,OAAAA,EAAE,OAAO;CACf,aAAaA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;AACnC,CAAC,CACH,EACF,CAAC;AAED,MAAa,8BAA8BA,OAAAA,EAAE,OAAO,EAClD,WAAWA,OAAAA,EAAE,MACXA,OAAAA,EAAE,OAAO;CACP,IAAIA,OAAAA,EAAE,OAAO;CACb,UAAUA,OAAAA,EAAE,OAAO;CACnB,MAAMA,OAAAA,EAAE,OAAO;CACf,aAAaA,OAAAA,EAAE,OAAO;CACtB,YAAYA,OAAAA,EAAE,OAAO;CACrB,gBAAgBA,OAAAA,EAAE,OAAO;AAC3B,CAAC,CACH,EACF,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { f as successResponseSchema } from "./common-C7NBaaQu.js";
|
|
2
2
|
import { z } from "zod/v4";
|
|
3
3
|
//#region src/server/schemas/vectors.ts
|
|
4
4
|
const vectorNamePathParams = z.object({ vectorName: z.string().describe("Name of the vector store") });
|
|
@@ -50,4 +50,4 @@ const listEmbeddersResponseSchema = z.object({ embedders: z.array(z.object({
|
|
|
50
50
|
//#endregion
|
|
51
51
|
export { listEmbeddersResponseSchema as a, queryVectorsBodySchema as c, upsertVectorsResponseSchema as d, vectorIndexPathParams as f, describeIndexResponseSchema as i, queryVectorsResponseSchema as l, createIndexResponseSchema as n, listIndexesResponseSchema as o, vectorNamePathParams as p, deleteIndexResponseSchema as r, listVectorsResponseSchema as s, createIndexBodySchema as t, upsertVectorsBodySchema as u };
|
|
52
52
|
|
|
53
|
-
//# sourceMappingURL=vectors-
|
|
53
|
+
//# sourceMappingURL=vectors-DqRRlfF0.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vectors-
|
|
1
|
+
{"version":3,"file":"vectors-DqRRlfF0.js","names":[],"sources":["../src/server/schemas/vectors.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { successResponseSchema } from './common';\n\n// Path parameter schemas\nexport const vectorNamePathParams = z.object({\n vectorName: z.string().describe('Name of the vector store'),\n});\n\nexport const vectorIndexPathParams = vectorNamePathParams.extend({\n indexName: z.string().describe('Name of the index'),\n});\n\n// Body schemas\n// Base schema for operations that require an index name\nconst indexBodyBaseSchema = z.object({\n indexName: z.string(),\n});\n\nexport const upsertVectorsBodySchema = indexBodyBaseSchema.extend({\n vectors: z.array(z.array(z.number())),\n metadata: z.array(z.record(z.string(), z.unknown())).optional(),\n ids: z.array(z.string()).optional(),\n});\n\nexport const createIndexBodySchema = indexBodyBaseSchema.extend({\n dimension: z.number(),\n metric: z.enum(['cosine', 'euclidean', 'dotproduct']).optional(),\n});\n\nexport const queryVectorsBodySchema = indexBodyBaseSchema.extend({\n queryVector: z.array(z.number()),\n topK: z.number().optional(),\n filter: z.record(z.string(), z.unknown()).optional(),\n includeVector: z.boolean().optional(),\n});\n\n// Response schemas\nexport const upsertVectorsResponseSchema = z.object({\n ids: z.array(z.string()),\n});\n\nexport const createIndexResponseSchema = successResponseSchema;\n\nexport const queryVectorsResponseSchema = z.array(z.unknown()); // QueryResult[]\n\nexport const listIndexesResponseSchema = z.array(z.string());\n\nexport const describeIndexResponseSchema = z.object({\n dimension: z.number(),\n count: z.number(),\n metric: z.string().optional(),\n});\n\nexport const deleteIndexResponseSchema = successResponseSchema;\n\nexport const listVectorsResponseSchema = z.object({\n vectors: z.array(\n z.object({\n id: z.string(),\n name: z.string(),\n type: z.string(),\n description: z.string().optional(),\n }),\n ),\n});\n\nexport const listEmbeddersResponseSchema = z.object({\n embedders: z.array(\n z.object({\n id: z.string(),\n provider: z.string(),\n name: z.string(),\n description: z.string(),\n dimensions: z.number(),\n maxInputTokens: z.number(),\n }),\n ),\n});\n"],"mappings":";;;AAIA,MAAa,uBAAuB,EAAE,OAAO,EAC3C,YAAY,EAAE,OAAO,CAAC,CAAC,SAAS,0BAA0B,EAC5D,CAAC;AAED,MAAa,wBAAwB,qBAAqB,OAAO,EAC/D,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS,mBAAmB,EACpD,CAAC;AAID,MAAM,sBAAsB,EAAE,OAAO,EACnC,WAAW,EAAE,OAAO,EACtB,CAAC;AAED,MAAa,0BAA0B,oBAAoB,OAAO;CAChE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;CAC9D,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS;AACpC,CAAC;AAED,MAAa,wBAAwB,oBAAoB,OAAO;CAC9D,WAAW,EAAE,OAAO;CACpB,QAAQ,EAAE,KAAK;EAAC;EAAU;EAAa;CAAY,CAAC,CAAC,CAAC,SAAS;AACjE,CAAC;AAED,MAAa,yBAAyB,oBAAoB,OAAO;CAC/D,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC;CAC/B,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS;CAC1B,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS;CACnD,eAAe,EAAE,QAAQ,CAAC,CAAC,SAAS;AACtC,CAAC;AAGD,MAAa,8BAA8B,EAAE,OAAO,EAClD,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EACzB,CAAC;AAED,MAAa,4BAA4B;AAEzC,MAAa,6BAA6B,EAAE,MAAM,EAAE,QAAQ,CAAC;AAE7D,MAAa,4BAA4B,EAAE,MAAM,EAAE,OAAO,CAAC;AAE3D,MAAa,8BAA8B,EAAE,OAAO;CAClD,WAAW,EAAE,OAAO;CACpB,OAAO,EAAE,OAAO;CAChB,QAAQ,EAAE,OAAO,CAAC,CAAC,SAAS;AAC9B,CAAC;AAED,MAAa,4BAA4B;AAEzC,MAAa,4BAA4B,EAAE,OAAO,EAChD,SAAS,EAAE,MACT,EAAE,OAAO;CACP,IAAI,EAAE,OAAO;CACb,MAAM,EAAE,OAAO;CACf,MAAM,EAAE,OAAO;CACf,aAAa,EAAE,OAAO,CAAC,CAAC,SAAS;AACnC,CAAC,CACH,EACF,CAAC;AAED,MAAa,8BAA8B,EAAE,OAAO,EAClD,WAAW,EAAE,MACX,EAAE,OAAO;CACP,IAAI,EAAE,OAAO;CACb,UAAU,EAAE,OAAO;CACnB,MAAM,EAAE,OAAO;CACf,aAAa,EAAE,OAAO;CACtB,YAAY,EAAE,OAAO;CACrB,gBAAgB,EAAE,OAAO;AAC3B,CAAC,CACH,EACF,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_common = require("./common-
|
|
1
|
+
const require_common = require("./common-BPjna_b6.cjs");
|
|
2
2
|
let zod_v4 = require("zod/v4");
|
|
3
3
|
//#region src/server/schemas/version-common.ts
|
|
4
4
|
/**
|
|
@@ -118,4 +118,4 @@ Object.defineProperty(exports, "versionOrderBySchema", {
|
|
|
118
118
|
}
|
|
119
119
|
});
|
|
120
120
|
|
|
121
|
-
//# sourceMappingURL=version-common-
|
|
121
|
+
//# sourceMappingURL=version-common-CxQdBbPm.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-common-
|
|
1
|
+
{"version":3,"file":"version-common-CxQdBbPm.cjs","names":["z","createPagePaginationSchema","paginationInfoSchema"],"sources":["../src/server/schemas/version-common.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { paginationInfoSchema, createPagePaginationSchema } from './common';\n\n// ============================================================================\n// Query Parameter Schemas (shared across all version endpoints)\n// ============================================================================\n\n/**\n * Version order by configuration (shared)\n */\nexport const versionOrderBySchema = z.object({\n field: z.enum(['versionNumber', 'createdAt']).optional(),\n direction: z.enum(['ASC', 'DESC']).optional(),\n});\n\n/**\n * List versions query params (shared)\n */\nexport const listVersionsQuerySchema = createPagePaginationSchema(20).extend({\n orderBy: versionOrderBySchema.optional(),\n});\n\n/**\n * Compare versions query params (shared)\n */\nexport const compareVersionsQuerySchema = z.object({\n from: z.string().describe('Version ID (UUID) to compare from'),\n to: z.string().describe('Version ID (UUID) to compare to'),\n});\n\n// ============================================================================\n// Body Parameter Schemas (shared)\n// ============================================================================\n\n/**\n * Create version body (shared)\n */\nexport const createVersionBodySchema = z.object({\n changeMessage: z.string().max(500).optional().describe('Optional message describing the changes'),\n});\n\n// ============================================================================\n// Response Schemas (shared)\n// ============================================================================\n\n/**\n * Activate version response (shared)\n */\nexport const activateVersionResponseSchema = z.object({\n success: z.boolean(),\n message: z.string(),\n activeVersionId: z.string(),\n});\n\n/**\n * Delete version response (shared)\n */\nexport const deleteVersionResponseSchema = z.object({\n success: z.boolean(),\n message: z.string(),\n});\n\n/**\n * Single diff entry for version comparison (shared)\n */\nexport const versionDiffEntrySchema = z.object({\n field: z.string().describe('The field path that changed'),\n previousValue: z.unknown().describe('The value in the \"from\" version'),\n currentValue: z.unknown().describe('The value in the \"to\" version'),\n});\n\n/**\n * Helper to create a list versions response schema for a domain-specific version schema.\n */\nexport function createListVersionsResponseSchema<T extends z.ZodTypeAny>(versionSchema: T) {\n return paginationInfoSchema.extend({\n versions: z.array(versionSchema),\n });\n}\n\n/**\n * Helper to create a compare versions response schema for a domain-specific version schema.\n */\nexport function createCompareVersionsResponseSchema<T extends z.ZodTypeAny>(versionSchema: T) {\n return z.object({\n diffs: z.array(versionDiffEntrySchema).describe('List of differences between versions'),\n fromVersion: versionSchema.describe('The source version'),\n toVersion: versionSchema.describe('The target version'),\n });\n}\n"],"mappings":";;;;;;AAUA,MAAa,uBAAuBA,OAAAA,EAAE,OAAO;CAC3C,OAAOA,OAAAA,EAAE,KAAK,CAAC,iBAAiB,WAAW,CAAC,CAAC,CAAC,SAAS;CACvD,WAAWA,OAAAA,EAAE,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS;AAC9C,CAAC;;;;AAKD,MAAa,0BAA0BC,eAAAA,2BAA2B,EAAE,CAAC,CAAC,OAAO,EAC3E,SAAS,qBAAqB,SAAS,EACzC,CAAC;;;;AAKD,MAAa,6BAA6BD,OAAAA,EAAE,OAAO;CACjD,MAAMA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,mCAAmC;CAC7D,IAAIA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,iCAAiC;AAC3D,CAAC;;;;AASD,MAAa,0BAA0BA,OAAAA,EAAE,OAAO,EAC9C,eAAeA,OAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,yCAAyC,EAClG,CAAC;;;;AASD,MAAa,gCAAgCA,OAAAA,EAAE,OAAO;CACpD,SAASA,OAAAA,EAAE,QAAQ;CACnB,SAASA,OAAAA,EAAE,OAAO;CAClB,iBAAiBA,OAAAA,EAAE,OAAO;AAC5B,CAAC;;;;AAKD,MAAa,8BAA8BA,OAAAA,EAAE,OAAO;CAClD,SAASA,OAAAA,EAAE,QAAQ;CACnB,SAASA,OAAAA,EAAE,OAAO;AACpB,CAAC;;;;AAKD,MAAa,yBAAyBA,OAAAA,EAAE,OAAO;CAC7C,OAAOA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,6BAA6B;CACxD,eAAeA,OAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,mCAAiC;CACrE,cAAcA,OAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS,iCAA+B;AACpE,CAAC;;;;AAKD,SAAgB,iCAAyD,eAAkB;CACzF,OAAOE,eAAAA,qBAAqB,OAAO,EACjC,UAAUF,OAAAA,EAAE,MAAM,aAAa,EACjC,CAAC;AACH;;;;AAKA,SAAgB,oCAA4D,eAAkB;CAC5F,OAAOA,OAAAA,EAAE,OAAO;EACd,OAAOA,OAAAA,EAAE,MAAM,sBAAsB,CAAC,CAAC,SAAS,sCAAsC;EACtF,aAAa,cAAc,SAAS,oBAAoB;EACxD,WAAW,cAAc,SAAS,oBAAoB;CACxD,CAAC;AACH"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as createPagePaginationSchema, s as paginationInfoSchema } from "./common-
|
|
1
|
+
import { i as createPagePaginationSchema, s as paginationInfoSchema } from "./common-C7NBaaQu.js";
|
|
2
2
|
import { z } from "zod/v4";
|
|
3
3
|
//#region src/server/schemas/version-common.ts
|
|
4
4
|
/**
|
|
@@ -65,4 +65,4 @@ function createCompareVersionsResponseSchema(versionSchema) {
|
|
|
65
65
|
//#endregion
|
|
66
66
|
export { createVersionBodySchema as a, versionDiffEntrySchema as c, createListVersionsResponseSchema as i, versionOrderBySchema as l, compareVersionsQuerySchema as n, deleteVersionResponseSchema as o, createCompareVersionsResponseSchema as r, listVersionsQuerySchema as s, activateVersionResponseSchema as t };
|
|
67
67
|
|
|
68
|
-
//# sourceMappingURL=version-common-
|
|
68
|
+
//# sourceMappingURL=version-common-cEBltPQN.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-common-
|
|
1
|
+
{"version":3,"file":"version-common-cEBltPQN.js","names":[],"sources":["../src/server/schemas/version-common.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { paginationInfoSchema, createPagePaginationSchema } from './common';\n\n// ============================================================================\n// Query Parameter Schemas (shared across all version endpoints)\n// ============================================================================\n\n/**\n * Version order by configuration (shared)\n */\nexport const versionOrderBySchema = z.object({\n field: z.enum(['versionNumber', 'createdAt']).optional(),\n direction: z.enum(['ASC', 'DESC']).optional(),\n});\n\n/**\n * List versions query params (shared)\n */\nexport const listVersionsQuerySchema = createPagePaginationSchema(20).extend({\n orderBy: versionOrderBySchema.optional(),\n});\n\n/**\n * Compare versions query params (shared)\n */\nexport const compareVersionsQuerySchema = z.object({\n from: z.string().describe('Version ID (UUID) to compare from'),\n to: z.string().describe('Version ID (UUID) to compare to'),\n});\n\n// ============================================================================\n// Body Parameter Schemas (shared)\n// ============================================================================\n\n/**\n * Create version body (shared)\n */\nexport const createVersionBodySchema = z.object({\n changeMessage: z.string().max(500).optional().describe('Optional message describing the changes'),\n});\n\n// ============================================================================\n// Response Schemas (shared)\n// ============================================================================\n\n/**\n * Activate version response (shared)\n */\nexport const activateVersionResponseSchema = z.object({\n success: z.boolean(),\n message: z.string(),\n activeVersionId: z.string(),\n});\n\n/**\n * Delete version response (shared)\n */\nexport const deleteVersionResponseSchema = z.object({\n success: z.boolean(),\n message: z.string(),\n});\n\n/**\n * Single diff entry for version comparison (shared)\n */\nexport const versionDiffEntrySchema = z.object({\n field: z.string().describe('The field path that changed'),\n previousValue: z.unknown().describe('The value in the \"from\" version'),\n currentValue: z.unknown().describe('The value in the \"to\" version'),\n});\n\n/**\n * Helper to create a list versions response schema for a domain-specific version schema.\n */\nexport function createListVersionsResponseSchema<T extends z.ZodTypeAny>(versionSchema: T) {\n return paginationInfoSchema.extend({\n versions: z.array(versionSchema),\n });\n}\n\n/**\n * Helper to create a compare versions response schema for a domain-specific version schema.\n */\nexport function createCompareVersionsResponseSchema<T extends z.ZodTypeAny>(versionSchema: T) {\n return z.object({\n diffs: z.array(versionDiffEntrySchema).describe('List of differences between versions'),\n fromVersion: versionSchema.describe('The source version'),\n toVersion: versionSchema.describe('The target version'),\n });\n}\n"],"mappings":";;;;;;AAUA,MAAa,uBAAuB,EAAE,OAAO;CAC3C,OAAO,EAAE,KAAK,CAAC,iBAAiB,WAAW,CAAC,CAAC,CAAC,SAAS;CACvD,WAAW,EAAE,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS;AAC9C,CAAC;;;;AAKD,MAAa,0BAA0B,2BAA2B,EAAE,CAAC,CAAC,OAAO,EAC3E,SAAS,qBAAqB,SAAS,EACzC,CAAC;;;;AAKD,MAAa,6BAA6B,EAAE,OAAO;CACjD,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,mCAAmC;CAC7D,IAAI,EAAE,OAAO,CAAC,CAAC,SAAS,iCAAiC;AAC3D,CAAC;;;;AASD,MAAa,0BAA0B,EAAE,OAAO,EAC9C,eAAe,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,yCAAyC,EAClG,CAAC;;;;AASD,MAAa,gCAAgC,EAAE,OAAO;CACpD,SAAS,EAAE,QAAQ;CACnB,SAAS,EAAE,OAAO;CAClB,iBAAiB,EAAE,OAAO;AAC5B,CAAC;;;;AAKD,MAAa,8BAA8B,EAAE,OAAO;CAClD,SAAS,EAAE,QAAQ;CACnB,SAAS,EAAE,OAAO;AACpB,CAAC;;;;AAKD,MAAa,yBAAyB,EAAE,OAAO;CAC7C,OAAO,EAAE,OAAO,CAAC,CAAC,SAAS,6BAA6B;CACxD,eAAe,EAAE,QAAQ,CAAC,CAAC,SAAS,mCAAiC;CACrE,cAAc,EAAE,QAAQ,CAAC,CAAC,SAAS,iCAA+B;AACpE,CAAC;;;;AAKD,SAAgB,iCAAyD,eAAkB;CACzF,OAAO,qBAAqB,OAAO,EACjC,UAAU,EAAE,MAAM,aAAa,EACjC,CAAC;AACH;;;;AAKA,SAAgB,oCAA4D,eAAkB;CAC5F,OAAO,EAAE,OAAO;EACd,OAAO,EAAE,MAAM,sBAAsB,CAAC,CAAC,SAAS,sCAAsC;EACtF,aAAa,cAAc,SAAS,oBAAoB;EACxD,WAAW,cAAc,SAAS,oBAAoB;CACxD,CAAC;AACH"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
const require_http_exception = require("./http-exception-CKDHupKw.cjs");
|
|
2
|
+
const require_agents = require("./agents-CZE_MSQE.cjs");
|
|
3
|
+
const require_route_builder = require("./route-builder-DupY8fkI.cjs");
|
|
4
|
+
const require_server_handlers_error = require("./server/handlers/error.cjs");
|
|
5
|
+
const require_utils = require("./utils-aIu3gkhJ.cjs");
|
|
6
|
+
const require_editor_builder = require("./editor-builder-BHf-g7q9.cjs");
|
|
7
|
+
let zod_v4 = require("zod/v4");
|
|
8
|
+
//#region src/server/schemas/workflow-builder.ts
|
|
9
|
+
const workflowBuilderSettingsResponseSchema = zod_v4.z.object({
|
|
10
|
+
enabled: zod_v4.z.boolean(),
|
|
11
|
+
modelPolicy: require_editor_builder.builderModelPolicySchema.optional()
|
|
12
|
+
});
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region src/server/handlers/workflow-builder.ts
|
|
15
|
+
const GET_WORKFLOW_BUILDER_SETTINGS_ROUTE = require_route_builder.createRoute({
|
|
16
|
+
method: "GET",
|
|
17
|
+
path: "/editor/workflow-builder/settings",
|
|
18
|
+
responseType: "json",
|
|
19
|
+
responseSchema: workflowBuilderSettingsResponseSchema,
|
|
20
|
+
summary: "Get persisted workflow builder settings",
|
|
21
|
+
description: "Returns whether the editor-owned persisted workflow builder is available",
|
|
22
|
+
tags: ["Editor"],
|
|
23
|
+
requiresAuth: true,
|
|
24
|
+
requiresPermission: "stored-workflows:read",
|
|
25
|
+
handler: async ({ mastra }) => {
|
|
26
|
+
try {
|
|
27
|
+
const editor = mastra.getEditor();
|
|
28
|
+
if (!editor || typeof editor.resolveWorkflowBuilder !== "function") return { enabled: false };
|
|
29
|
+
if (!editor.hasEnabledWorkflowBuilderConfig?.()) return { enabled: false };
|
|
30
|
+
const builder = await editor.resolveWorkflowBuilder();
|
|
31
|
+
return {
|
|
32
|
+
enabled: builder?.enabled === true,
|
|
33
|
+
modelPolicy: builder?.getModelPolicy()
|
|
34
|
+
};
|
|
35
|
+
} catch (error) {
|
|
36
|
+
return require_server_handlers_error.handleError(error, "Error getting workflow builder settings");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
const STREAM_WORKFLOW_BUILDER_ROUTE = require_route_builder.createRoute({
|
|
41
|
+
method: "POST",
|
|
42
|
+
path: "/editor/workflow-builder/stream",
|
|
43
|
+
responseType: "stream",
|
|
44
|
+
streamFormat: "sse",
|
|
45
|
+
bodySchema: require_agents.agentExecutionBodySchema,
|
|
46
|
+
responseSchema: require_agents.streamResponseSchema,
|
|
47
|
+
summary: "Stream persisted workflow builder response",
|
|
48
|
+
description: "Streams from the hidden editor-owned workflow builder agent",
|
|
49
|
+
tags: ["Editor"],
|
|
50
|
+
requiresAuth: true,
|
|
51
|
+
requiresPermission: "stored-workflows:write",
|
|
52
|
+
handler: async ({ mastra, abortSignal, requestContext: serverRequestContext, ...params }) => {
|
|
53
|
+
try {
|
|
54
|
+
const editor = mastra.getEditor();
|
|
55
|
+
if (!editor?.hasEnabledWorkflowBuilderConfig?.() || typeof editor.resolveWorkflowBuilder !== "function") throw new require_http_exception.HTTPException(404, { message: "Workflow builder is not enabled" });
|
|
56
|
+
const builder = await editor.resolveWorkflowBuilder();
|
|
57
|
+
if (!builder?.enabled) throw new require_http_exception.HTTPException(404, { message: "Workflow builder is not enabled" });
|
|
58
|
+
const agent = builder.getAgent();
|
|
59
|
+
const { messages, memory: memoryOption, requestContext: bodyRequestContext, ...rest } = params;
|
|
60
|
+
require_utils.validateBody({ messages });
|
|
61
|
+
require_utils.mergeBodyRequestContext(serverRequestContext, bodyRequestContext);
|
|
62
|
+
let authorizedMemoryOption = memoryOption;
|
|
63
|
+
if (memoryOption) {
|
|
64
|
+
const clientThreadId = typeof memoryOption.thread === "string" ? memoryOption.thread : memoryOption.thread?.id;
|
|
65
|
+
const effectiveResourceId = require_utils.getEffectiveResourceId(serverRequestContext, memoryOption.resource);
|
|
66
|
+
require_utils.requireEffectiveResourceId(effectiveResourceId);
|
|
67
|
+
const effectiveThreadId = require_utils.getEffectiveThreadId(serverRequestContext, clientThreadId);
|
|
68
|
+
if (effectiveThreadId) {
|
|
69
|
+
const thread = await (await agent.getMemory({ requestContext: serverRequestContext }))?.getThreadById({ threadId: effectiveThreadId });
|
|
70
|
+
if (thread) await require_utils.enforceThreadAccess({
|
|
71
|
+
mastra,
|
|
72
|
+
requestContext: serverRequestContext,
|
|
73
|
+
threadId: effectiveThreadId,
|
|
74
|
+
thread,
|
|
75
|
+
effectiveResourceId,
|
|
76
|
+
permission: "memory:write"
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
authorizedMemoryOption = {
|
|
80
|
+
...memoryOption,
|
|
81
|
+
resource: effectiveResourceId ?? memoryOption.resource,
|
|
82
|
+
thread: effectiveThreadId ?? memoryOption.thread
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
const { structuredOutput, ...streamOptions } = rest;
|
|
86
|
+
const options = {
|
|
87
|
+
...streamOptions,
|
|
88
|
+
requestContext: serverRequestContext,
|
|
89
|
+
memory: authorizedMemoryOption,
|
|
90
|
+
abortSignal
|
|
91
|
+
};
|
|
92
|
+
return (structuredOutput ? await agent.stream(messages, {
|
|
93
|
+
...options,
|
|
94
|
+
structuredOutput
|
|
95
|
+
}) : await agent.stream(messages, options)).fullStream;
|
|
96
|
+
} catch (error) {
|
|
97
|
+
return require_server_handlers_error.handleError(error, "Error streaming workflow builder response");
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
//#endregion
|
|
102
|
+
Object.defineProperty(exports, "GET_WORKFLOW_BUILDER_SETTINGS_ROUTE", {
|
|
103
|
+
enumerable: true,
|
|
104
|
+
get: function() {
|
|
105
|
+
return GET_WORKFLOW_BUILDER_SETTINGS_ROUTE;
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
Object.defineProperty(exports, "STREAM_WORKFLOW_BUILDER_ROUTE", {
|
|
109
|
+
enumerable: true,
|
|
110
|
+
get: function() {
|
|
111
|
+
return STREAM_WORKFLOW_BUILDER_ROUTE;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
//# sourceMappingURL=workflow-builder-D5dPsrog.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-builder-D5dPsrog.cjs","names":["z","builderModelPolicySchema","createRoute","handleError","agentExecutionBodySchema","streamResponseSchema","HTTPException","getEffectiveResourceId","getEffectiveThreadId","enforceThreadAccess"],"sources":["../src/server/schemas/workflow-builder.ts","../src/server/handlers/workflow-builder.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { builderModelPolicySchema } from './editor-builder';\n\nexport const workflowBuilderSettingsResponseSchema = z.object({\n enabled: z.boolean(),\n modelPolicy: builderModelPolicySchema.optional(),\n});\n\nexport type WorkflowBuilderSettingsResponse = z.infer<typeof workflowBuilderSettingsResponseSchema>;\n","import { HTTPException } from '../http-exception';\nimport { agentExecutionBodySchema, streamResponseSchema } from '../schemas/agents';\nimport { workflowBuilderSettingsResponseSchema } from '../schemas/workflow-builder';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\nimport {\n enforceThreadAccess,\n getEffectiveResourceId,\n getEffectiveThreadId,\n mergeBodyRequestContext,\n requireEffectiveResourceId,\n validateBody,\n} from './utils';\n\nexport const GET_WORKFLOW_BUILDER_SETTINGS_ROUTE = createRoute({\n method: 'GET',\n path: '/editor/workflow-builder/settings',\n responseType: 'json',\n responseSchema: workflowBuilderSettingsResponseSchema,\n summary: 'Get persisted workflow builder settings',\n description: 'Returns whether the editor-owned persisted workflow builder is available',\n tags: ['Editor'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:read',\n handler: async ({ mastra }) => {\n try {\n const editor = mastra.getEditor();\n if (!editor || typeof editor.resolveWorkflowBuilder !== 'function') return { enabled: false };\n if (!editor.hasEnabledWorkflowBuilderConfig?.()) return { enabled: false };\n\n const builder = await editor.resolveWorkflowBuilder();\n return {\n enabled: builder?.enabled === true,\n modelPolicy: builder?.getModelPolicy(),\n };\n } catch (error) {\n return handleError(error, 'Error getting workflow builder settings');\n }\n },\n});\n\nexport const STREAM_WORKFLOW_BUILDER_ROUTE = createRoute({\n method: 'POST',\n path: '/editor/workflow-builder/stream',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream persisted workflow builder response',\n description: 'Streams from the hidden editor-owned workflow builder agent',\n tags: ['Editor'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:write',\n handler: async ({ mastra, abortSignal, requestContext: serverRequestContext, ...params }) => {\n try {\n const editor = mastra.getEditor();\n if (!editor?.hasEnabledWorkflowBuilderConfig?.() || typeof editor.resolveWorkflowBuilder !== 'function') {\n throw new HTTPException(404, { message: 'Workflow builder is not enabled' });\n }\n\n const builder = await editor.resolveWorkflowBuilder();\n if (!builder?.enabled) throw new HTTPException(404, { message: 'Workflow builder is not enabled' });\n const agent = builder.getAgent();\n\n const { messages, memory: memoryOption, requestContext: bodyRequestContext, ...rest } = params;\n validateBody({ messages });\n\n mergeBodyRequestContext(serverRequestContext, bodyRequestContext);\n\n let authorizedMemoryOption = memoryOption;\n if (memoryOption) {\n const clientThreadId = typeof memoryOption.thread === 'string' ? memoryOption.thread : memoryOption.thread?.id;\n const effectiveResourceId = getEffectiveResourceId(serverRequestContext, memoryOption.resource);\n requireEffectiveResourceId(effectiveResourceId);\n const effectiveThreadId = getEffectiveThreadId(serverRequestContext, clientThreadId);\n\n if (effectiveThreadId) {\n const memory = await agent.getMemory({ requestContext: serverRequestContext });\n const thread = await memory?.getThreadById({ threadId: effectiveThreadId });\n if (thread) {\n await enforceThreadAccess({\n mastra,\n requestContext: serverRequestContext,\n threadId: effectiveThreadId,\n thread,\n effectiveResourceId,\n permission: 'memory:write',\n });\n }\n }\n\n authorizedMemoryOption = {\n ...memoryOption,\n resource: effectiveResourceId ?? memoryOption.resource,\n thread: effectiveThreadId ?? memoryOption.thread,\n };\n }\n\n const { structuredOutput, ...streamOptions } = rest;\n const options: Record<string, any> = {\n ...streamOptions,\n requestContext: serverRequestContext,\n memory: authorizedMemoryOption,\n abortSignal,\n };\n const result = structuredOutput\n ? await agent.stream(messages, { ...options, structuredOutput })\n : await agent.stream(messages, options);\n return result.fullStream;\n } catch (error) {\n return handleError(error, 'Error streaming workflow builder response');\n }\n },\n});\n"],"mappings":";;;;;;;;AAGA,MAAa,wCAAwCA,OAAAA,EAAE,OAAO;CAC5D,SAASA,OAAAA,EAAE,QAAQ;CACnB,aAAaC,uBAAAA,yBAAyB,SAAS;AACjD,CAAC;;;ACQD,MAAa,sCAAsCC,sBAAAA,YAAY;CAC7D,QAAQ;CACR,MAAM;CACN,cAAc;CACd,gBAAgB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,QAAQ;CACf,cAAc;CACd,oBAAoB;CACpB,SAAS,OAAO,EAAE,aAAa;EAC7B,IAAI;GACF,MAAM,SAAS,OAAO,UAAU;GAChC,IAAI,CAAC,UAAU,OAAO,OAAO,2BAA2B,YAAY,OAAO,EAAE,SAAS,MAAM;GAC5F,IAAI,CAAC,OAAO,kCAAkC,GAAG,OAAO,EAAE,SAAS,MAAM;GAEzE,MAAM,UAAU,MAAM,OAAO,uBAAuB;GACpD,OAAO;IACL,SAAS,SAAS,YAAY;IAC9B,aAAa,SAAS,eAAe;GACvC;EACF,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,yCAAyC;EACrE;CACF;AACF,CAAC;AAED,MAAa,gCAAgCD,sBAAAA,YAAY;CACvD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,cAAc;CACd,YAAYE,eAAAA;CACZ,gBAAgBC,eAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,QAAQ;CACf,cAAc;CACd,oBAAoB;CACpB,SAAS,OAAO,EAAE,QAAQ,aAAa,gBAAgB,sBAAsB,GAAG,aAAa;EAC3F,IAAI;GACF,MAAM,SAAS,OAAO,UAAU;GAChC,IAAI,CAAC,QAAQ,kCAAkC,KAAK,OAAO,OAAO,2BAA2B,YAC3F,MAAM,IAAIC,uBAAAA,cAAc,KAAK,EAAE,SAAS,kCAAkC,CAAC;GAG7E,MAAM,UAAU,MAAM,OAAO,uBAAuB;GACpD,IAAI,CAAC,SAAS,SAAS,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,kCAAkC,CAAC;GAClG,MAAM,QAAQ,QAAQ,SAAS;GAE/B,MAAM,EAAE,UAAU,QAAQ,cAAc,gBAAgB,oBAAoB,GAAG,SAAS;GACxF,cAAA,aAAa,EAAE,SAAS,CAAC;GAEzB,cAAA,wBAAwB,sBAAsB,kBAAkB;GAEhE,IAAI,yBAAyB;GAC7B,IAAI,cAAc;IAChB,MAAM,iBAAiB,OAAO,aAAa,WAAW,WAAW,aAAa,SAAS,aAAa,QAAQ;IAC5G,MAAM,sBAAsBC,cAAAA,uBAAuB,sBAAsB,aAAa,QAAQ;IAC9F,cAAA,2BAA2B,mBAAmB;IAC9C,MAAM,oBAAoBC,cAAAA,qBAAqB,sBAAsB,cAAc;IAEnF,IAAI,mBAAmB;KAErB,MAAM,SAAS,OAAM,MADA,MAAM,UAAU,EAAE,gBAAgB,qBAAqB,CAAC,EAAA,EAChD,cAAc,EAAE,UAAU,kBAAkB,CAAC;KAC1E,IAAI,QACF,MAAMC,cAAAA,oBAAoB;MACxB;MACA,gBAAgB;MAChB,UAAU;MACV;MACA;MACA,YAAY;KACd,CAAC;IAEL;IAEA,yBAAyB;KACvB,GAAG;KACH,UAAU,uBAAuB,aAAa;KAC9C,QAAQ,qBAAqB,aAAa;IAC5C;GACF;GAEA,MAAM,EAAE,kBAAkB,GAAG,kBAAkB;GAC/C,MAAM,UAA+B;IACnC,GAAG;IACH,gBAAgB;IAChB,QAAQ;IACR;GACF;GAIA,QAHe,mBACX,MAAM,MAAM,OAAO,UAAU;IAAE,GAAG;IAAS;GAAiB,CAAC,IAC7D,MAAM,MAAM,OAAO,UAAU,OAAO,EAAA,CAC1B;EAChB,SAAS,OAAO;GACd,OAAON,8BAAAA,YAAY,OAAO,2CAA2C;EACvE;CACF;AACF,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { t as HTTPException } from "./http-exception-CyfxZB6W.js";
|
|
2
|
+
import { K as streamResponseSchema, r as agentExecutionBodySchema } from "./agents-ssoMemNs.js";
|
|
3
|
+
import { n as createRoute } from "./route-builder-BukcT_Kp.js";
|
|
4
|
+
import { handleError } from "./server/handlers/error.js";
|
|
5
|
+
import { a as mergeBodyRequestContext, c as requireEffectiveResourceId, i as getEffectiveThreadId, r as getEffectiveResourceId, t as enforceThreadAccess, u as validateBody } from "./utils-KsERfbhc.js";
|
|
6
|
+
import { a as builderModelPolicySchema } from "./editor-builder-D6P_hq7c.js";
|
|
7
|
+
import { z } from "zod/v4";
|
|
8
|
+
//#endregion
|
|
9
|
+
//#region src/server/handlers/workflow-builder.ts
|
|
10
|
+
const GET_WORKFLOW_BUILDER_SETTINGS_ROUTE = createRoute({
|
|
11
|
+
method: "GET",
|
|
12
|
+
path: "/editor/workflow-builder/settings",
|
|
13
|
+
responseType: "json",
|
|
14
|
+
responseSchema: z.object({
|
|
15
|
+
enabled: z.boolean(),
|
|
16
|
+
modelPolicy: builderModelPolicySchema.optional()
|
|
17
|
+
}),
|
|
18
|
+
summary: "Get persisted workflow builder settings",
|
|
19
|
+
description: "Returns whether the editor-owned persisted workflow builder is available",
|
|
20
|
+
tags: ["Editor"],
|
|
21
|
+
requiresAuth: true,
|
|
22
|
+
requiresPermission: "stored-workflows:read",
|
|
23
|
+
handler: async ({ mastra }) => {
|
|
24
|
+
try {
|
|
25
|
+
const editor = mastra.getEditor();
|
|
26
|
+
if (!editor || typeof editor.resolveWorkflowBuilder !== "function") return { enabled: false };
|
|
27
|
+
if (!editor.hasEnabledWorkflowBuilderConfig?.()) return { enabled: false };
|
|
28
|
+
const builder = await editor.resolveWorkflowBuilder();
|
|
29
|
+
return {
|
|
30
|
+
enabled: builder?.enabled === true,
|
|
31
|
+
modelPolicy: builder?.getModelPolicy()
|
|
32
|
+
};
|
|
33
|
+
} catch (error) {
|
|
34
|
+
return handleError(error, "Error getting workflow builder settings");
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
const STREAM_WORKFLOW_BUILDER_ROUTE = createRoute({
|
|
39
|
+
method: "POST",
|
|
40
|
+
path: "/editor/workflow-builder/stream",
|
|
41
|
+
responseType: "stream",
|
|
42
|
+
streamFormat: "sse",
|
|
43
|
+
bodySchema: agentExecutionBodySchema,
|
|
44
|
+
responseSchema: streamResponseSchema,
|
|
45
|
+
summary: "Stream persisted workflow builder response",
|
|
46
|
+
description: "Streams from the hidden editor-owned workflow builder agent",
|
|
47
|
+
tags: ["Editor"],
|
|
48
|
+
requiresAuth: true,
|
|
49
|
+
requiresPermission: "stored-workflows:write",
|
|
50
|
+
handler: async ({ mastra, abortSignal, requestContext: serverRequestContext, ...params }) => {
|
|
51
|
+
try {
|
|
52
|
+
const editor = mastra.getEditor();
|
|
53
|
+
if (!editor?.hasEnabledWorkflowBuilderConfig?.() || typeof editor.resolveWorkflowBuilder !== "function") throw new HTTPException(404, { message: "Workflow builder is not enabled" });
|
|
54
|
+
const builder = await editor.resolveWorkflowBuilder();
|
|
55
|
+
if (!builder?.enabled) throw new HTTPException(404, { message: "Workflow builder is not enabled" });
|
|
56
|
+
const agent = builder.getAgent();
|
|
57
|
+
const { messages, memory: memoryOption, requestContext: bodyRequestContext, ...rest } = params;
|
|
58
|
+
validateBody({ messages });
|
|
59
|
+
mergeBodyRequestContext(serverRequestContext, bodyRequestContext);
|
|
60
|
+
let authorizedMemoryOption = memoryOption;
|
|
61
|
+
if (memoryOption) {
|
|
62
|
+
const clientThreadId = typeof memoryOption.thread === "string" ? memoryOption.thread : memoryOption.thread?.id;
|
|
63
|
+
const effectiveResourceId = getEffectiveResourceId(serverRequestContext, memoryOption.resource);
|
|
64
|
+
requireEffectiveResourceId(effectiveResourceId);
|
|
65
|
+
const effectiveThreadId = getEffectiveThreadId(serverRequestContext, clientThreadId);
|
|
66
|
+
if (effectiveThreadId) {
|
|
67
|
+
const thread = await (await agent.getMemory({ requestContext: serverRequestContext }))?.getThreadById({ threadId: effectiveThreadId });
|
|
68
|
+
if (thread) await enforceThreadAccess({
|
|
69
|
+
mastra,
|
|
70
|
+
requestContext: serverRequestContext,
|
|
71
|
+
threadId: effectiveThreadId,
|
|
72
|
+
thread,
|
|
73
|
+
effectiveResourceId,
|
|
74
|
+
permission: "memory:write"
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
authorizedMemoryOption = {
|
|
78
|
+
...memoryOption,
|
|
79
|
+
resource: effectiveResourceId ?? memoryOption.resource,
|
|
80
|
+
thread: effectiveThreadId ?? memoryOption.thread
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
const { structuredOutput, ...streamOptions } = rest;
|
|
84
|
+
const options = {
|
|
85
|
+
...streamOptions,
|
|
86
|
+
requestContext: serverRequestContext,
|
|
87
|
+
memory: authorizedMemoryOption,
|
|
88
|
+
abortSignal
|
|
89
|
+
};
|
|
90
|
+
return (structuredOutput ? await agent.stream(messages, {
|
|
91
|
+
...options,
|
|
92
|
+
structuredOutput
|
|
93
|
+
}) : await agent.stream(messages, options)).fullStream;
|
|
94
|
+
} catch (error) {
|
|
95
|
+
return handleError(error, "Error streaming workflow builder response");
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
//#endregion
|
|
100
|
+
export { STREAM_WORKFLOW_BUILDER_ROUTE as n, GET_WORKFLOW_BUILDER_SETTINGS_ROUTE as t };
|
|
101
|
+
|
|
102
|
+
//# sourceMappingURL=workflow-builder-Eape8SyU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-builder-Eape8SyU.js","names":[],"sources":["../src/server/schemas/workflow-builder.ts","../src/server/handlers/workflow-builder.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { builderModelPolicySchema } from './editor-builder';\n\nexport const workflowBuilderSettingsResponseSchema = z.object({\n enabled: z.boolean(),\n modelPolicy: builderModelPolicySchema.optional(),\n});\n\nexport type WorkflowBuilderSettingsResponse = z.infer<typeof workflowBuilderSettingsResponseSchema>;\n","import { HTTPException } from '../http-exception';\nimport { agentExecutionBodySchema, streamResponseSchema } from '../schemas/agents';\nimport { workflowBuilderSettingsResponseSchema } from '../schemas/workflow-builder';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\nimport {\n enforceThreadAccess,\n getEffectiveResourceId,\n getEffectiveThreadId,\n mergeBodyRequestContext,\n requireEffectiveResourceId,\n validateBody,\n} from './utils';\n\nexport const GET_WORKFLOW_BUILDER_SETTINGS_ROUTE = createRoute({\n method: 'GET',\n path: '/editor/workflow-builder/settings',\n responseType: 'json',\n responseSchema: workflowBuilderSettingsResponseSchema,\n summary: 'Get persisted workflow builder settings',\n description: 'Returns whether the editor-owned persisted workflow builder is available',\n tags: ['Editor'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:read',\n handler: async ({ mastra }) => {\n try {\n const editor = mastra.getEditor();\n if (!editor || typeof editor.resolveWorkflowBuilder !== 'function') return { enabled: false };\n if (!editor.hasEnabledWorkflowBuilderConfig?.()) return { enabled: false };\n\n const builder = await editor.resolveWorkflowBuilder();\n return {\n enabled: builder?.enabled === true,\n modelPolicy: builder?.getModelPolicy(),\n };\n } catch (error) {\n return handleError(error, 'Error getting workflow builder settings');\n }\n },\n});\n\nexport const STREAM_WORKFLOW_BUILDER_ROUTE = createRoute({\n method: 'POST',\n path: '/editor/workflow-builder/stream',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream persisted workflow builder response',\n description: 'Streams from the hidden editor-owned workflow builder agent',\n tags: ['Editor'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:write',\n handler: async ({ mastra, abortSignal, requestContext: serverRequestContext, ...params }) => {\n try {\n const editor = mastra.getEditor();\n if (!editor?.hasEnabledWorkflowBuilderConfig?.() || typeof editor.resolveWorkflowBuilder !== 'function') {\n throw new HTTPException(404, { message: 'Workflow builder is not enabled' });\n }\n\n const builder = await editor.resolveWorkflowBuilder();\n if (!builder?.enabled) throw new HTTPException(404, { message: 'Workflow builder is not enabled' });\n const agent = builder.getAgent();\n\n const { messages, memory: memoryOption, requestContext: bodyRequestContext, ...rest } = params;\n validateBody({ messages });\n\n mergeBodyRequestContext(serverRequestContext, bodyRequestContext);\n\n let authorizedMemoryOption = memoryOption;\n if (memoryOption) {\n const clientThreadId = typeof memoryOption.thread === 'string' ? memoryOption.thread : memoryOption.thread?.id;\n const effectiveResourceId = getEffectiveResourceId(serverRequestContext, memoryOption.resource);\n requireEffectiveResourceId(effectiveResourceId);\n const effectiveThreadId = getEffectiveThreadId(serverRequestContext, clientThreadId);\n\n if (effectiveThreadId) {\n const memory = await agent.getMemory({ requestContext: serverRequestContext });\n const thread = await memory?.getThreadById({ threadId: effectiveThreadId });\n if (thread) {\n await enforceThreadAccess({\n mastra,\n requestContext: serverRequestContext,\n threadId: effectiveThreadId,\n thread,\n effectiveResourceId,\n permission: 'memory:write',\n });\n }\n }\n\n authorizedMemoryOption = {\n ...memoryOption,\n resource: effectiveResourceId ?? memoryOption.resource,\n thread: effectiveThreadId ?? memoryOption.thread,\n };\n }\n\n const { structuredOutput, ...streamOptions } = rest;\n const options: Record<string, any> = {\n ...streamOptions,\n requestContext: serverRequestContext,\n memory: authorizedMemoryOption,\n abortSignal,\n };\n const result = structuredOutput\n ? await agent.stream(messages, { ...options, structuredOutput })\n : await agent.stream(messages, options);\n return result.fullStream;\n } catch (error) {\n return handleError(error, 'Error streaming workflow builder response');\n }\n },\n});\n"],"mappings":";;;;;;;;;ACcA,MAAa,sCAAsC,YAAY;CAC7D,QAAQ;CACR,MAAM;CACN,cAAc;CACd,gBDfmD,EAAE,OAAO;EAC5D,SAAS,EAAE,QAAQ;EACnB,aAAa,yBAAyB,SAAS;CACjD,CCYkB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,QAAQ;CACf,cAAc;CACd,oBAAoB;CACpB,SAAS,OAAO,EAAE,aAAa;EAC7B,IAAI;GACF,MAAM,SAAS,OAAO,UAAU;GAChC,IAAI,CAAC,UAAU,OAAO,OAAO,2BAA2B,YAAY,OAAO,EAAE,SAAS,MAAM;GAC5F,IAAI,CAAC,OAAO,kCAAkC,GAAG,OAAO,EAAE,SAAS,MAAM;GAEzE,MAAM,UAAU,MAAM,OAAO,uBAAuB;GACpD,OAAO;IACL,SAAS,SAAS,YAAY;IAC9B,aAAa,SAAS,eAAe;GACvC;EACF,SAAS,OAAO;GACd,OAAO,YAAY,OAAO,yCAAyC;EACrE;CACF;AACF,CAAC;AAED,MAAa,gCAAgC,YAAY;CACvD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,cAAc;CACd,YAAY;CACZ,gBAAgB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,QAAQ;CACf,cAAc;CACd,oBAAoB;CACpB,SAAS,OAAO,EAAE,QAAQ,aAAa,gBAAgB,sBAAsB,GAAG,aAAa;EAC3F,IAAI;GACF,MAAM,SAAS,OAAO,UAAU;GAChC,IAAI,CAAC,QAAQ,kCAAkC,KAAK,OAAO,OAAO,2BAA2B,YAC3F,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,kCAAkC,CAAC;GAG7E,MAAM,UAAU,MAAM,OAAO,uBAAuB;GACpD,IAAI,CAAC,SAAS,SAAS,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,kCAAkC,CAAC;GAClG,MAAM,QAAQ,QAAQ,SAAS;GAE/B,MAAM,EAAE,UAAU,QAAQ,cAAc,gBAAgB,oBAAoB,GAAG,SAAS;GACxF,aAAa,EAAE,SAAS,CAAC;GAEzB,wBAAwB,sBAAsB,kBAAkB;GAEhE,IAAI,yBAAyB;GAC7B,IAAI,cAAc;IAChB,MAAM,iBAAiB,OAAO,aAAa,WAAW,WAAW,aAAa,SAAS,aAAa,QAAQ;IAC5G,MAAM,sBAAsB,uBAAuB,sBAAsB,aAAa,QAAQ;IAC9F,2BAA2B,mBAAmB;IAC9C,MAAM,oBAAoB,qBAAqB,sBAAsB,cAAc;IAEnF,IAAI,mBAAmB;KAErB,MAAM,SAAS,OAAM,MADA,MAAM,UAAU,EAAE,gBAAgB,qBAAqB,CAAC,EAAA,EAChD,cAAc,EAAE,UAAU,kBAAkB,CAAC;KAC1E,IAAI,QACF,MAAM,oBAAoB;MACxB;MACA,gBAAgB;MAChB,UAAU;MACV;MACA;MACA,YAAY;KACd,CAAC;IAEL;IAEA,yBAAyB;KACvB,GAAG;KACH,UAAU,uBAAuB,aAAa;KAC9C,QAAQ,qBAAqB,aAAa;IAC5C;GACF;GAEA,MAAM,EAAE,kBAAkB,GAAG,kBAAkB;GAC/C,MAAM,UAA+B;IACnC,GAAG;IACH,gBAAgB;IAChB,QAAQ;IACR;GACF;GAIA,QAHe,mBACX,MAAM,MAAM,OAAO,UAAU;IAAE,GAAG;IAAS;GAAiB,CAAC,IAC7D,MAAM,MAAM,OAAO,UAAU,OAAO,EAAA,CAC1B;EAChB,SAAS,OAAO;GACd,OAAO,YAAY,OAAO,2CAA2C;EACvE;CACF;AACF,CAAC"}
|