@mastra/server 1.80.0-alpha.7 → 1.81.0-alpha.0
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/_types/@internal_ai-sdk-v4/dist/index.d.ts +51 -12
- package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-sdk-v5/dist/index.d.ts +144 -42
- package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-v6/dist/index.d.ts +53 -14
- package/dist/{a2a-D6ajBqAA.js → a2a-CSz0rw8E.js} +2 -2
- package/dist/{a2a-D6ajBqAA.js.map → a2a-CSz0rw8E.js.map} +1 -1
- package/dist/{a2a-3ykajvdu.cjs → a2a-CmMIWPuz.cjs} +2 -2
- package/dist/{a2a-3ykajvdu.cjs.map → a2a-CmMIWPuz.cjs.map} +1 -1
- package/dist/{agent-builder-Cr-52Ulb.js → agent-builder-CSnA_l6K.js} +2 -2
- package/dist/{agent-builder-Cr-52Ulb.js.map → agent-builder-CSnA_l6K.js.map} +1 -1
- package/dist/{agent-builder-D3WRvBAH.cjs → agent-builder-DIEX-as5.cjs} +7 -7
- package/dist/{agent-builder-D3WRvBAH.cjs.map → agent-builder-DIEX-as5.cjs.map} +1 -1
- package/dist/{agent-builder-9-GSvpgR.cjs → agent-builder-DSKjD22s.cjs} +2 -2
- package/dist/{agent-builder-9-GSvpgR.cjs.map → agent-builder-DSKjD22s.cjs.map} +1 -1
- package/dist/{agent-builder-BDHi4NOZ.js → agent-builder-XhBB0Svr.js} +7 -7
- package/dist/{agent-builder-BDHi4NOZ.js.map → agent-builder-XhBB0Svr.js.map} +1 -1
- package/dist/{agent-versions-De5bRBaa.cjs → agent-versions-DX2rd6j_.cjs} +3 -3
- package/dist/{agent-versions-De5bRBaa.cjs.map → agent-versions-DX2rd6j_.cjs.map} +1 -1
- package/dist/{agent-versions-Pa-ABszp.js → agent-versions-TUl6ky5W.js} +3 -3
- package/dist/{agent-versions-Pa-ABszp.js.map → agent-versions-TUl6ky5W.js.map} +1 -1
- package/dist/{agents-Cl3KTHU4.js → agents-B5kq2QEV.js} +2 -2
- package/dist/{agents-Cl3KTHU4.js.map → agents-B5kq2QEV.js.map} +1 -1
- package/dist/{agents-CiUW6yvl.js → agents-BVjnYswL.js} +3 -3
- package/dist/{agents-CiUW6yvl.js.map → agents-BVjnYswL.js.map} +1 -1
- package/dist/{agents-Bs1GFnXz.cjs → agents-Cel1sffU.cjs} +2 -2
- package/dist/{agents-Bs1GFnXz.cjs.map → agents-Cel1sffU.cjs.map} +1 -1
- package/dist/{agents-DBsmIR4c.cjs → agents-D36tukip.cjs} +3 -3
- package/dist/{agents-DBsmIR4c.cjs.map → agents-D36tukip.cjs.map} +1 -1
- package/dist/{api-schema-manifest-C6MbIQch.js → api-schema-manifest-BVPhF1ZS.js} +2 -2
- package/dist/{api-schema-manifest-C6MbIQch.js.map → api-schema-manifest-BVPhF1ZS.js.map} +1 -1
- package/dist/{api-schema-manifest-COH6PAvQ.cjs → api-schema-manifest-BWId44SV.cjs} +2 -2
- package/dist/{api-schema-manifest-COH6PAvQ.cjs.map → api-schema-manifest-BWId44SV.cjs.map} +1 -1
- package/dist/{background-tasks-DIpPsqVy.js → background-tasks-BkYNmUcf.js} +2 -2
- package/dist/{background-tasks-DIpPsqVy.js.map → background-tasks-BkYNmUcf.js.map} +1 -1
- package/dist/{background-tasks-BMp9Q6SB.cjs → background-tasks-Civclnuq.cjs} +2 -2
- package/dist/{background-tasks-BMp9Q6SB.cjs.map → background-tasks-Civclnuq.cjs.map} +1 -1
- package/dist/{common-DVZqSEhZ.cjs → common-D5XxSuvu.cjs} +2 -2
- package/dist/common-D5XxSuvu.cjs.map +1 -0
- package/dist/{common-xUmaFUop.js → common-J-yUnHk9.js} +2 -2
- package/dist/common-J-yUnHk9.js.map +1 -0
- package/dist/{conversations-BPQNrv5g.cjs → conversations-BVj0Dk2Q.cjs} +2 -2
- package/dist/{conversations-BPQNrv5g.cjs.map → conversations-BVj0Dk2Q.cjs.map} +1 -1
- package/dist/{conversations-Ce0dCZ23.js → conversations-CABVTBQY.js} +3 -3
- package/dist/{conversations-Ce0dCZ23.js.map → conversations-CABVTBQY.js.map} +1 -1
- package/dist/{conversations-RVdtAQEv.cjs → conversations-CJn0ioOZ.cjs} +3 -3
- package/dist/{conversations-RVdtAQEv.cjs.map → conversations-CJn0ioOZ.cjs.map} +1 -1
- package/dist/{conversations-nNko6-H4.js → conversations-DHrKTI6x.js} +2 -2
- package/dist/{conversations-nNko6-H4.js.map → conversations-DHrKTI6x.js.map} +1 -1
- package/dist/{datasets-hLmYapTk.js → datasets--F0QkdGX.js} +2 -2
- package/dist/{datasets-hLmYapTk.js.map → datasets--F0QkdGX.js.map} +1 -1
- package/dist/{datasets-BP2O5CSR.cjs → datasets-BiEAIm0s.cjs} +2 -2
- package/dist/{datasets-BP2O5CSR.cjs.map → datasets-BiEAIm0s.cjs.map} +1 -1
- package/dist/{dist-D6oS7RF1.cjs → dist-BK1fCE4z.cjs} +1 -1
- package/dist/{dist-PlsLrwz8.js → dist-BLjE21MA.js} +2157 -2041
- package/dist/dist-BLjE21MA.js.map +1 -0
- package/dist/{dist-Clj7hRKz.cjs → dist-OpNBTIST.cjs} +2205 -2047
- package/dist/dist-OpNBTIST.cjs.map +1 -0
- package/dist/dist-_M1jEPcL.js +1 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/reference-observability-tracing-advanced-queries.md +33 -16
- package/dist/docs/references/reference-server-create-route.md +20 -4
- package/dist/{editor-builder-9T1aGM2f.cjs → editor-builder-B8Mf4kJo.cjs} +2 -2
- package/dist/{editor-builder-9T1aGM2f.cjs.map → editor-builder-B8Mf4kJo.cjs.map} +1 -1
- package/dist/{editor-builder-Bj_or9-c.cjs → editor-builder-CeiISBIO.cjs} +3 -3
- package/dist/{editor-builder-Bj_or9-c.cjs.map → editor-builder-CeiISBIO.cjs.map} +1 -1
- package/dist/{editor-builder-Cc0zrTC1.js → editor-builder-DeD6EVm8.js} +3 -3
- package/dist/{editor-builder-Cc0zrTC1.js.map → editor-builder-DeD6EVm8.js.map} +1 -1
- package/dist/{editor-builder-lzO2zecA.js → editor-builder-PKGDfYNc.js} +2 -2
- package/dist/{editor-builder-lzO2zecA.js.map → editor-builder-PKGDfYNc.js.map} +1 -1
- package/dist/{logs-DIBh_xCk.js → logs-BbaBP2LD.js} +3 -3
- package/dist/{logs-DIBh_xCk.js.map → logs-BbaBP2LD.js.map} +1 -1
- package/dist/{logs-DpyTCDyt.js → logs-Ca_q8krO.js} +2 -2
- package/dist/{logs-DpyTCDyt.js.map → logs-Ca_q8krO.js.map} +1 -1
- package/dist/{logs-NNur5jkf.cjs → logs-DI-h9uHR.cjs} +3 -3
- package/dist/{logs-NNur5jkf.cjs.map → logs-DI-h9uHR.cjs.map} +1 -1
- package/dist/{logs-CC6IycDY.cjs → logs-YisOj8HR.cjs} +2 -2
- package/dist/{logs-CC6IycDY.cjs.map → logs-YisOj8HR.cjs.map} +1 -1
- package/dist/{mcp-4iUBgZ7s.cjs → mcp-Bt3h1lO7.cjs} +2 -2
- package/dist/{mcp-4iUBgZ7s.cjs.map → mcp-Bt3h1lO7.cjs.map} +1 -1
- package/dist/{mcp-CnV25lv0.js → mcp-D3F3iYew.js} +2 -2
- package/dist/{mcp-CnV25lv0.js.map → mcp-D3F3iYew.js.map} +1 -1
- package/dist/{mcp-DgdKiptb.js → mcp-D4Cprr8R.js} +2 -2
- package/dist/{mcp-DgdKiptb.js.map → mcp-D4Cprr8R.js.map} +1 -1
- package/dist/{mcp-client-versions-HRTe5cRT.cjs → mcp-client-versions-BS99SD4O.cjs} +2 -2
- package/dist/{mcp-client-versions-HRTe5cRT.cjs.map → mcp-client-versions-BS99SD4O.cjs.map} +1 -1
- package/dist/{mcp-client-versions-B471u-DI.js → mcp-client-versions-Rd-ry9Qa.js} +2 -2
- package/dist/{mcp-client-versions-B471u-DI.js.map → mcp-client-versions-Rd-ry9Qa.js.map} +1 -1
- package/dist/{mcp-DegWUDeB.cjs → mcp-mpYrlkUA.cjs} +2 -2
- package/dist/{mcp-DegWUDeB.cjs.map → mcp-mpYrlkUA.cjs.map} +1 -1
- package/dist/{memory-BnPGDrdg.cjs → memory--xJDrSwF.cjs} +2 -2
- package/dist/{memory-BnPGDrdg.cjs.map → memory--xJDrSwF.cjs.map} +1 -1
- package/dist/{memory-DeZ1je-b.js → memory-BTR95ujT.js} +4 -4
- package/dist/{memory-DeZ1je-b.js.map → memory-BTR95ujT.js.map} +1 -1
- package/dist/{memory-Pj9P9vsl.cjs → memory-Buhi6kZ-.cjs} +4 -4
- package/dist/{memory-Pj9P9vsl.cjs.map → memory-Buhi6kZ-.cjs.map} +1 -1
- package/dist/{memory-CZ2ELVP0.js → memory-CCEjoCF6.js} +2 -2
- package/dist/{memory-CZ2ELVP0.js.map → memory-CCEjoCF6.js.map} +1 -1
- package/dist/{observability-65rZOqJk.js → observability-BgIU0otL.js} +2 -2
- package/dist/{observability-65rZOqJk.js.map → observability-BgIU0otL.js.map} +1 -1
- package/dist/{observability-CFKSxaff.cjs → observability-DHuljMXO.cjs} +2 -2
- package/dist/{observability-CFKSxaff.cjs.map → observability-DHuljMXO.cjs.map} +1 -1
- package/dist/{observability-new-endpoints-CDeHfFNP.cjs → observability-new-endpoints-CaTskbSh.cjs} +12 -3
- package/dist/observability-new-endpoints-CaTskbSh.cjs.map +1 -0
- package/dist/{observability-new-endpoints-B6MRJ5Rb.js → observability-new-endpoints-CsUP8y2j.js} +13 -4
- package/dist/observability-new-endpoints-CsUP8y2j.js.map +1 -0
- package/dist/{plans-DVErlJoO.js → plans-B5GgYqx-.js} +3 -3
- package/dist/{plans-DVErlJoO.js.map → plans-B5GgYqx-.js.map} +1 -1
- package/dist/{plans-Cu3zbWP_.cjs → plans-Dydti0sT.cjs} +3 -3
- package/dist/{plans-Cu3zbWP_.cjs.map → plans-Dydti0sT.cjs.map} +1 -1
- package/dist/{probe-image-size-C0psF6WM.cjs → probe-image-size-BIZUe8Bp.cjs} +50 -678
- package/dist/probe-image-size-BIZUe8Bp.cjs.map +1 -0
- package/dist/{probe-image-size-CpV7slsd.js → probe-image-size-BqH96zcz.js} +50 -678
- package/dist/probe-image-size-BqH96zcz.js.map +1 -0
- package/dist/{prompt-block-versions-D1gjBkQx.js → prompt-block-versions-3T-L2loy.js} +2 -2
- package/dist/{prompt-block-versions-D1gjBkQx.js.map → prompt-block-versions-3T-L2loy.js.map} +1 -1
- package/dist/{prompt-block-versions-BUPyaY8g.cjs → prompt-block-versions-BTdrcaLe.cjs} +2 -2
- package/dist/{prompt-block-versions-BUPyaY8g.cjs.map → prompt-block-versions-BTdrcaLe.cjs.map} +1 -1
- package/dist/{responses-DniqbL1B.cjs → responses-CxvSoOLt.cjs} +2 -2
- package/dist/{responses-DniqbL1B.cjs.map → responses-CxvSoOLt.cjs.map} +1 -1
- package/dist/{responses-DOqM_drh.js → responses-DbiqhxP3.js} +2 -2
- package/dist/{responses-DOqM_drh.js.map → responses-DbiqhxP3.js.map} +1 -1
- package/dist/route-builder-BxPrwNog.js.map +1 -1
- package/dist/route-builder-CvARmqnA.cjs.map +1 -1
- package/dist/{routes-B_-KRQOi.cjs → routes-By3cLbPV.cjs} +19 -19
- package/dist/{routes-B_-KRQOi.cjs.map → routes-By3cLbPV.cjs.map} +1 -1
- package/dist/{routes-BfQBQbwB.js → routes-CBrxFxzL.js} +19 -19
- package/dist/{routes-BfQBQbwB.js.map → routes-CBrxFxzL.js.map} +1 -1
- package/dist/schema-Bf12g7KC-DBc4NSds.js.map +1 -1
- package/dist/schema-Bf12g7KC-plP4Ir6h.cjs.map +1 -1
- package/dist/{scorer-versions-r7C61gWf.cjs → scorer-versions-BOjrlIcM.cjs} +3 -3
- package/dist/{scorer-versions-r7C61gWf.cjs.map → scorer-versions-BOjrlIcM.cjs.map} +1 -1
- package/dist/{scorer-versions-DIqKt2kn.js → scorer-versions-DIcWTIgC.js} +3 -3
- package/dist/{scorer-versions-DIqKt2kn.js.map → scorer-versions-DIcWTIgC.js.map} +1 -1
- package/dist/{scores-DZ1hftoG.js → scores-BULd4ZBI.js} +2 -2
- package/dist/{scores-DZ1hftoG.js.map → scores-BULd4ZBI.js.map} +1 -1
- package/dist/{scores-BXrRHFvI.js → scores-BjclMqFa.js} +4 -4
- package/dist/{scores-BXrRHFvI.js.map → scores-BjclMqFa.js.map} +1 -1
- package/dist/{scores-Bu70OP1U.cjs → scores-CWCaN4jf.cjs} +2 -2
- package/dist/{scores-Bu70OP1U.cjs.map → scores-CWCaN4jf.cjs.map} +1 -1
- package/dist/{scores-BAZL_l3k.cjs → scores-CnozEyM4.cjs} +4 -4
- package/dist/{scores-BAZL_l3k.cjs.map → scores-CnozEyM4.cjs.map} +1 -1
- package/dist/server/handlers/a2a.cjs +1 -1
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +1 -1
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/agent-controller.cjs +1 -1
- package/dist/server/handlers/agent-controller.js +1 -1
- package/dist/server/handlers/agent-versions.cjs +2 -2
- package/dist/server/handlers/agent-versions.js +2 -2
- package/dist/server/handlers/agents.cjs +1 -1
- package/dist/server/handlers/agents.js +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 +1 -1
- package/dist/server/handlers/conversations.js +1 -1
- package/dist/server/handlers/datasets.cjs +2 -2
- package/dist/server/handlers/datasets.js +2 -2
- 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 +1 -1
- package/dist/server/handlers/logs.js +1 -1
- package/dist/server/handlers/mcp-client-versions.cjs +1 -1
- package/dist/server/handlers/mcp-client-versions.js +1 -1
- package/dist/server/handlers/mcp.cjs +1 -1
- package/dist/server/handlers/mcp.js +1 -1
- package/dist/server/handlers/memory.cjs +1 -1
- package/dist/server/handlers/memory.js +1 -1
- package/dist/server/handlers/observability-new-endpoints.cjs +1 -1
- package/dist/server/handlers/observability-new-endpoints.d.ts +36 -4
- package/dist/server/handlers/observability-new-endpoints.d.ts.map +1 -1
- package/dist/server/handlers/observability-new-endpoints.js +1 -1
- package/dist/server/handlers/observability-shared.cjs +27 -0
- package/dist/server/handlers/observability-shared.cjs.map +1 -1
- package/dist/server/handlers/observability-shared.d.ts +10 -0
- package/dist/server/handlers/observability-shared.d.ts.map +1 -1
- package/dist/server/handlers/observability-shared.js +24 -1
- package/dist/server/handlers/observability-shared.js.map +1 -1
- package/dist/server/handlers/observability.cjs +2 -2
- package/dist/server/handlers/observability.js +2 -2
- package/dist/server/handlers/plans.cjs +1 -1
- package/dist/server/handlers/plans.js +1 -1
- package/dist/server/handlers/prompt-block-versions.cjs +1 -1
- package/dist/server/handlers/prompt-block-versions.js +1 -1
- package/dist/server/handlers/responses.cjs +1 -1
- package/dist/server/handlers/responses.js +1 -1
- package/dist/server/handlers/scorer-versions.cjs +1 -1
- package/dist/server/handlers/scorer-versions.js +1 -1
- package/dist/server/handlers/scores.cjs +1 -1
- package/dist/server/handlers/scores.js +1 -1
- 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 +2 -2
- package/dist/server/handlers/system.d.ts +4 -0
- package/dist/server/handlers/system.d.ts.map +1 -1
- package/dist/server/handlers/system.js +2 -2
- package/dist/server/handlers/tools.cjs +1 -1
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/vector.cjs +1 -1
- package/dist/server/handlers/vector.js +1 -1
- package/dist/server/handlers/workflow-builder.cjs +1 -1
- package/dist/server/handlers/workflow-builder.js +1 -1
- package/dist/server/handlers/workflows.cjs +1 -1
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/handlers.cjs +14 -14
- package/dist/server/handlers.js +14 -14
- package/dist/server/schemas/common.d.ts.map +1 -1
- package/dist/server/schemas/index.cjs +24 -24
- package/dist/server/schemas/index.js +24 -24
- package/dist/server/schemas/system.d.ts +4 -0
- package/dist/server/schemas/system.d.ts.map +1 -1
- package/dist/server/server-adapter/index.cjs +1 -1
- package/dist/server/server-adapter/index.js +1 -1
- package/dist/server/server-adapter/routes/observability.d.ts +18 -2
- package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/system.d.ts +4 -0
- package/dist/server/server-adapter/routes/system.d.ts.map +1 -1
- package/dist/{stored-agents-BpxMmhtz.js → stored-agents-C9zCintA.js} +3 -3
- package/dist/{stored-agents-BpxMmhtz.js.map → stored-agents-C9zCintA.js.map} +1 -1
- package/dist/{stored-agents-CDlh3CQQ.cjs → stored-agents-LCHZldYH.cjs} +3 -3
- package/dist/{stored-agents-CDlh3CQQ.cjs.map → stored-agents-LCHZldYH.cjs.map} +1 -1
- package/dist/{stored-mcp-clients-BA7OSGZ_.cjs → stored-mcp-clients-D14ULUvS.cjs} +2 -2
- package/dist/{stored-mcp-clients-BA7OSGZ_.cjs.map → stored-mcp-clients-D14ULUvS.cjs.map} +1 -1
- package/dist/{stored-mcp-clients-DtLv0Tly.js → stored-mcp-clients-d_PaPgGc.js} +2 -2
- package/dist/{stored-mcp-clients-DtLv0Tly.js.map → stored-mcp-clients-d_PaPgGc.js.map} +1 -1
- package/dist/{stored-prompt-blocks-Z_BuhsUq.js → stored-prompt-blocks-B5yfQnPC.js} +2 -2
- package/dist/{stored-prompt-blocks-Z_BuhsUq.js.map → stored-prompt-blocks-B5yfQnPC.js.map} +1 -1
- package/dist/{stored-prompt-blocks-Cqi0vnTE.cjs → stored-prompt-blocks-CqaOxMZ-.cjs} +2 -2
- package/dist/{stored-prompt-blocks-Cqi0vnTE.cjs.map → stored-prompt-blocks-CqaOxMZ-.cjs.map} +1 -1
- package/dist/{stored-scorers-D1zYUEXg.cjs → stored-scorers-DxQds4_y.cjs} +3 -3
- package/dist/{stored-scorers-D1zYUEXg.cjs.map → stored-scorers-DxQds4_y.cjs.map} +1 -1
- package/dist/{stored-scorers-BdJadnUS.js → stored-scorers-Dz9vAQcr.js} +3 -3
- package/dist/{stored-scorers-BdJadnUS.js.map → stored-scorers-Dz9vAQcr.js.map} +1 -1
- package/dist/{stored-skills-D8Q1NmsH.js → stored-skills-GNJMp022.js} +2 -2
- package/dist/{stored-skills-D8Q1NmsH.js.map → stored-skills-GNJMp022.js.map} +1 -1
- package/dist/{stored-skills-DppdzQY0.cjs → stored-skills-xuecapXy.cjs} +2 -2
- package/dist/{stored-skills-DppdzQY0.cjs.map → stored-skills-xuecapXy.cjs.map} +1 -1
- package/dist/{stored-workspaces-CYXLBJy5.js → stored-workspaces-Bswuz00o.js} +2 -2
- package/dist/{stored-workspaces-CYXLBJy5.js.map → stored-workspaces-Bswuz00o.js.map} +1 -1
- package/dist/{stored-workspaces-BOwJwkec.cjs → stored-workspaces-g5-GKY38.cjs} +2 -2
- package/dist/{stored-workspaces-BOwJwkec.cjs.map → stored-workspaces-g5-GKY38.cjs.map} +1 -1
- package/dist/{system-DGfJlOxK.cjs → system-BxHpBJiq.cjs} +3 -1
- package/dist/system-BxHpBJiq.cjs.map +1 -0
- package/dist/{system-B8L_G4oo.js → system-CxwzIMsy.js} +3 -1
- package/dist/system-CxwzIMsy.js.map +1 -0
- package/dist/{tools-HYYytfMx.cjs → tools-CeJrnYDf.cjs} +4 -4
- package/dist/{tools-HYYytfMx.cjs.map → tools-CeJrnYDf.cjs.map} +1 -1
- package/dist/{tools-Do1uV_07.js → tools-Ck35EVD7.js} +4 -4
- package/dist/{tools-Do1uV_07.js.map → tools-Ck35EVD7.js.map} +1 -1
- package/dist/{vector-Deod39jt.js → vector-BAs5o6mH.js} +2 -2
- package/dist/{vector-Deod39jt.js.map → vector-BAs5o6mH.js.map} +1 -1
- package/dist/{vector-IxK1t4Cb.cjs → vector-BZ1bKtwM.cjs} +2 -2
- package/dist/{vector-IxK1t4Cb.cjs.map → vector-BZ1bKtwM.cjs.map} +1 -1
- package/dist/{vectors-CqV387sY.cjs → vectors-CPSofSCf.cjs} +2 -2
- package/dist/{vectors-CqV387sY.cjs.map → vectors-CPSofSCf.cjs.map} +1 -1
- package/dist/{vectors-CvHLWqjC.js → vectors-CadLydEJ.js} +2 -2
- package/dist/{vectors-CvHLWqjC.js.map → vectors-CadLydEJ.js.map} +1 -1
- package/dist/{version-common-Di2U8VWH.js → version-common-BLTDO88f.js} +2 -2
- package/dist/{version-common-Di2U8VWH.js.map → version-common-BLTDO88f.js.map} +1 -1
- package/dist/{version-common-B2n_ML_w.cjs → version-common-Cc0STXl9.cjs} +2 -2
- package/dist/{version-common-B2n_ML_w.cjs.map → version-common-Cc0STXl9.cjs.map} +1 -1
- package/dist/{workflow-builder-ezo8ZG1K.js → workflow-builder--W9PMW13.js} +3 -3
- package/dist/{workflow-builder-ezo8ZG1K.js.map → workflow-builder--W9PMW13.js.map} +1 -1
- package/dist/{workflow-builder-DJKziSOo.cjs → workflow-builder-CT7JOoW6.cjs} +3 -3
- package/dist/{workflow-builder-DJKziSOo.cjs.map → workflow-builder-CT7JOoW6.cjs.map} +1 -1
- package/dist/{workflows-BWLDlaL9.cjs → workflows-BAOfWBkr.cjs} +4 -4
- package/dist/{workflows-BWLDlaL9.cjs.map → workflows-BAOfWBkr.cjs.map} +1 -1
- package/dist/{workflows-SYBpQupF.cjs → workflows-CKcjXfXk.cjs} +2 -2
- package/dist/{workflows-SYBpQupF.cjs.map → workflows-CKcjXfXk.cjs.map} +1 -1
- package/dist/{workflows-Dm2iK1nq.js → workflows-DPIRVRN9.js} +4 -4
- package/dist/{workflows-Dm2iK1nq.js.map → workflows-DPIRVRN9.js.map} +1 -1
- package/dist/{workflows-C9BMJV_C.js → workflows-DTxiWG6x.js} +2 -2
- package/dist/{workflows-C9BMJV_C.js.map → workflows-DTxiWG6x.js.map} +1 -1
- package/package.json +11 -11
- package/dist/common-DVZqSEhZ.cjs.map +0 -1
- package/dist/common-xUmaFUop.js.map +0 -1
- package/dist/dist-C-L2kyKZ.js +0 -1
- package/dist/dist-Clj7hRKz.cjs.map +0 -1
- package/dist/dist-PlsLrwz8.js.map +0 -1
- package/dist/observability-new-endpoints-B6MRJ5Rb.js.map +0 -1
- package/dist/observability-new-endpoints-CDeHfFNP.cjs.map +0 -1
- package/dist/probe-image-size-C0psF6WM.cjs.map +0 -1
- package/dist/probe-image-size-CpV7slsd.js.map +0 -1
- package/dist/system-B8L_G4oo.js.map +0 -1
- package/dist/system-DGfJlOxK.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools-HYYytfMx.cjs","names":["standardSchemaToJSONSchema","toStandardSchema","stringify","stripInjectedToolOverrideFields","isProviderDefinedTool","createRoute","listToolsResponseSchema","getHandlerFGAProvider","MastraFGAPermissions","handleError","toolIdPathParams","serializedToolSchema","HTTPException","optionalRunIdSchema","executeToolContextBodySchema","executeToolResponseSchema","isVercelTool","agentToolPathParams","getAgentFromSystem","executeToolBodySchema"],"sources":["../src/server/handlers/tools.ts"],"sourcesContent":["import { isVercelTool, isProviderDefinedTool } from '@mastra/core/tools';\nimport { toStandardSchema, standardSchemaToJSONSchema } from '@mastra/schema-compat/schema';\nimport type { PublicSchema } from '@mastra/schema-compat/schema';\nimport { stringify } from 'superjson';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n executeToolContextBodySchema,\n executeToolResponseSchema,\n listToolsResponseSchema,\n serializedToolSchema,\n toolIdPathParams,\n agentToolPathParams,\n executeToolBodySchema,\n} from '../schemas/agents';\nimport { optionalRunIdSchema } from '../schemas/common';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { stripInjectedToolOverrideFields } from './tool-schema-overrides';\nimport { getHandlerFGAProvider, validateBody } from './utils';\n\n/**\n * Resolves a schema that may be a lazy function (e.g. AI SDK provider tools).\n * Recursively resolves until a non-function value is returned.\n * Skips functions that are themselves valid schemas (e.g. ArkType types are\n * callable but also implement StandardSchema via ~standard).\n */\nfunction resolveLazySchema(schema: unknown): unknown {\n if (typeof schema === 'function' && !('~standard' in schema)) {\n return resolveLazySchema(schema());\n }\n return schema;\n}\n\nfunction schemaToJsonSchema(schema: PublicSchema<unknown> | undefined) {\n if (!schema) {\n return undefined;\n }\n\n return standardSchemaToJSONSchema(toStandardSchema(schema), { target: 'draft-2020-12' });\n}\n\nfunction serializeSchema(schema: unknown, options?: { stripInjectedOverrides?: boolean }): string | undefined {\n const jsonSchema = schemaToJsonSchema(resolveLazySchema(schema) as PublicSchema<unknown> | undefined);\n if (jsonSchema === undefined) return undefined;\n return stringify(options?.stripInjectedOverrides ? stripInjectedToolOverrideFields(jsonSchema) : jsonSchema);\n}\n\n/**\n * Searches dynamically-resolved agent tools (provided via `toolsResolver` /\n * function-based `tools`) for a tool with the given id. Used as a fallback\n * after the static tool registry (`registeredTools` + `mastra.getToolById`)\n * misses, so global tool routes can resolve tools that only exist on agents.\n *\n * Errors thrown by an individual agent's `listTools()` are logged and\n * skipped so a single broken resolver doesn't take down the whole lookup.\n */\nasync function findToolInAgents(mastra: any, toolId: string, requestContext: any): Promise<any | undefined> {\n const agents = mastra.listAgents() || {};\n for (const agent of Object.values(agents) as any[]) {\n try {\n const agentTools = await agent.listTools({ requestContext });\n const found = Object.values(agentTools || {}).find((t: any) => t.id === toolId);\n if (found) return found;\n } catch (error) {\n mastra.getLogger?.()?.warn?.('Failed to list tools for agent while resolving tool by id', {\n agentId: agent?.id,\n toolId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n return undefined;\n}\n\n/**\n * Serializes a tool for API responses, handling both regular tools (with Zod schemas)\n * and provider-defined tools (with AI SDK lazy schemas).\n */\nfunction serializeTool(tool: any): any {\n // Provider-defined tools (e.g. google.tools.googleSearch(), openai.tools.webSearch())\n // have lazy inputSchema functions that return AI SDK Schema objects, not Zod schemas.\n // We resolve them and use the jsonSchema property directly.\n if (isProviderDefinedTool(tool)) {\n const resolvedInput = resolveLazySchema(tool.inputSchema);\n const resolvedOutput = resolveLazySchema(tool.outputSchema);\n return {\n ...tool,\n inputSchema:\n resolvedInput && typeof resolvedInput === 'object' && 'jsonSchema' in resolvedInput\n ? stringify(resolvedInput.jsonSchema)\n : undefined,\n outputSchema:\n resolvedOutput && typeof resolvedOutput === 'object' && 'jsonSchema' in resolvedOutput\n ? stringify(resolvedOutput.jsonSchema)\n : undefined,\n };\n }\n\n return {\n ...tool,\n inputSchema: serializeSchema(tool.inputSchema, { stripInjectedOverrides: true }),\n outputSchema: serializeSchema(tool.outputSchema),\n requestContextSchema: serializeSchema(tool.requestContextSchema),\n };\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_TOOLS_ROUTE = createRoute({\n method: 'GET',\n path: '/tools',\n responseType: 'json',\n responseSchema: listToolsResponseSchema,\n summary: 'List all tools',\n description: 'Returns a list of all available tools in the system',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, registeredTools, requestContext }) => {\n try {\n // Merge tools from two sources: mastra.listTools() includes dynamically created tools\n // (e.g. MCP tools, or agent tools registered by their intrinsic id), while registeredTools\n // includes tools discovered by the CLI bundler (keyed by export name).\n //\n // The same tool instance can appear in both maps under different keys (e.g. an agent\n // registers it by `tool.id` while the bundler registers it by export name). Dedupe by\n // `tool.id`, preferring the registeredTools (bundler) key, so each tool appears once.\n const registered = registeredTools && Object.keys(registeredTools).length > 0 ? registeredTools : {};\n\n const allTools: Record<string, any> = {};\n const seenToolIds = new Map<string, string>();\n\n // registeredTools first so their key wins for a given tool.id.\n for (const [key, tool] of Object.entries(registered)) {\n const toolId = typeof (tool as any)?.id === 'string' ? (tool as any).id : undefined;\n if (toolId !== undefined) seenToolIds.set(toolId, key);\n allTools[key] = tool;\n }\n\n for (const [key, tool] of Object.entries(mastra.listTools() ?? {})) {\n const toolId = typeof (tool as any)?.id === 'string' ? (tool as any).id : undefined;\n // Skip if this exact tool.id was already registered (under any key) by registeredTools.\n if (toolId !== undefined && seenToolIds.has(toolId)) continue;\n if (toolId !== undefined) seenToolIds.set(toolId, key);\n allTools[key] = tool;\n }\n\n const serializedTools = Object.entries(allTools).reduce<Record<string, any>>((acc, [id, _tool]) => {\n acc[id] = serializeTool(_tool);\n return acc;\n }, {});\n\n // Filter tools by FGA if configured\n const fgaProvider = getHandlerFGAProvider(mastra, requestContext);\n const user = requestContext?.get('user');\n if (fgaProvider && user) {\n const toolList = Object.entries(serializedTools).map(([id, t]) => ({ id, ...t }));\n const accessible = await fgaProvider.filterAccessible(user, toolList, 'tool', MastraFGAPermissions.TOOLS_READ);\n const accessibleSet = new Set(accessible.map((t: any) => t.id));\n for (const id of Object.keys(serializedTools)) {\n if (!accessibleSet.has(id)) {\n delete serializedTools[id];\n }\n }\n }\n\n return serializedTools;\n } catch (error) {\n return handleError(error, 'Error getting tools');\n }\n },\n});\n\nexport const GET_TOOL_BY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/tools/:toolId',\n responseType: 'json',\n pathParamSchema: toolIdPathParams,\n responseSchema: serializedToolSchema,\n summary: 'Get tool by ID',\n description: 'Returns details for a specific tool including its schema and configuration',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, registeredTools, toolId, requestContext }) => {\n try {\n let tool: any;\n\n // Try explicit registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n }\n if (!tool) {\n try {\n tool = mastra.getToolById(toolId);\n } catch {\n // tool not found in global registry, continue to agent fallback\n }\n }\n\n // Fallback: search dynamically-resolved agent tools (toolsResolver)\n if (!tool) {\n tool = await findToolInAgents(mastra, toolId, requestContext);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n return serializeTool(tool);\n } catch (error) {\n return handleError(error, 'Error getting tool');\n }\n },\n});\n\nexport const EXECUTE_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: toolIdPathParams,\n queryParamSchema: optionalRunIdSchema,\n bodySchema: executeToolContextBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute tool',\n description: 'Executes a specific tool with the provided input data',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, runId, toolId, registeredTools, requestContext, ...bodyParams }) => {\n try {\n if (!toolId) {\n throw new HTTPException(400, { message: 'Tool ID is required' });\n }\n\n let tool: any;\n\n // Try explicit registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n }\n if (!tool) {\n try {\n tool = mastra.getToolById(toolId);\n } catch {\n // tool not found in global registry, continue to agent fallback\n }\n }\n\n // Fallback: search dynamically-resolved agent tools (toolsResolver)\n if (!tool) {\n tool = await findToolInAgents(mastra, toolId, requestContext);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n const { data } = bodyParams;\n\n validateBody({ data });\n\n let result;\n if (isVercelTool(tool)) {\n result = await (tool as any).execute(data);\n } else {\n result = await tool.execute(data!, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n ...(runId\n ? {\n workflow: {\n runId,\n suspend: async () => {},\n },\n }\n : {}),\n });\n }\n\n return result;\n } catch (error) {\n return handleError(error, 'Error executing tool');\n }\n },\n});\n\n// ============================================================================\n// Agent Tool Routes\n// ============================================================================\n\nexport const GET_AGENT_TOOL_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId/tools/:toolId',\n responseType: 'json',\n pathParamSchema: agentToolPathParams,\n responseSchema: serializedToolSchema,\n summary: 'Get agent tool',\n description: 'Returns details for a specific tool assigned to the agent',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n return serializeTool(tool);\n } catch (error) {\n return handleError(error, 'Error getting agent tool');\n }\n },\n});\n\nexport const EXECUTE_AGENT_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: agentToolPathParams,\n bodySchema: executeToolBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute agent tool',\n description: 'Executes a specific tool assigned to the agent with the provided input data',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, data, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n const result = await tool.execute(data, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error executing agent tool');\n }\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools-CeJrnYDf.cjs","names":["standardSchemaToJSONSchema","toStandardSchema","stringify","stripInjectedToolOverrideFields","isProviderDefinedTool","createRoute","listToolsResponseSchema","getHandlerFGAProvider","MastraFGAPermissions","handleError","toolIdPathParams","serializedToolSchema","HTTPException","optionalRunIdSchema","executeToolContextBodySchema","executeToolResponseSchema","isVercelTool","agentToolPathParams","getAgentFromSystem","executeToolBodySchema"],"sources":["../src/server/handlers/tools.ts"],"sourcesContent":["import { isVercelTool, isProviderDefinedTool } from '@mastra/core/tools';\nimport { toStandardSchema, standardSchemaToJSONSchema } from '@mastra/schema-compat/schema';\nimport type { PublicSchema } from '@mastra/schema-compat/schema';\nimport { stringify } from 'superjson';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n executeToolContextBodySchema,\n executeToolResponseSchema,\n listToolsResponseSchema,\n serializedToolSchema,\n toolIdPathParams,\n agentToolPathParams,\n executeToolBodySchema,\n} from '../schemas/agents';\nimport { optionalRunIdSchema } from '../schemas/common';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { stripInjectedToolOverrideFields } from './tool-schema-overrides';\nimport { getHandlerFGAProvider, validateBody } from './utils';\n\n/**\n * Resolves a schema that may be a lazy function (e.g. AI SDK provider tools).\n * Recursively resolves until a non-function value is returned.\n * Skips functions that are themselves valid schemas (e.g. ArkType types are\n * callable but also implement StandardSchema via ~standard).\n */\nfunction resolveLazySchema(schema: unknown): unknown {\n if (typeof schema === 'function' && !('~standard' in schema)) {\n return resolveLazySchema(schema());\n }\n return schema;\n}\n\nfunction schemaToJsonSchema(schema: PublicSchema<unknown> | undefined) {\n if (!schema) {\n return undefined;\n }\n\n return standardSchemaToJSONSchema(toStandardSchema(schema), { target: 'draft-2020-12' });\n}\n\nfunction serializeSchema(schema: unknown, options?: { stripInjectedOverrides?: boolean }): string | undefined {\n const jsonSchema = schemaToJsonSchema(resolveLazySchema(schema) as PublicSchema<unknown> | undefined);\n if (jsonSchema === undefined) return undefined;\n return stringify(options?.stripInjectedOverrides ? stripInjectedToolOverrideFields(jsonSchema) : jsonSchema);\n}\n\n/**\n * Searches dynamically-resolved agent tools (provided via `toolsResolver` /\n * function-based `tools`) for a tool with the given id. Used as a fallback\n * after the static tool registry (`registeredTools` + `mastra.getToolById`)\n * misses, so global tool routes can resolve tools that only exist on agents.\n *\n * Errors thrown by an individual agent's `listTools()` are logged and\n * skipped so a single broken resolver doesn't take down the whole lookup.\n */\nasync function findToolInAgents(mastra: any, toolId: string, requestContext: any): Promise<any | undefined> {\n const agents = mastra.listAgents() || {};\n for (const agent of Object.values(agents) as any[]) {\n try {\n const agentTools = await agent.listTools({ requestContext });\n const found = Object.values(agentTools || {}).find((t: any) => t.id === toolId);\n if (found) return found;\n } catch (error) {\n mastra.getLogger?.()?.warn?.('Failed to list tools for agent while resolving tool by id', {\n agentId: agent?.id,\n toolId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n return undefined;\n}\n\n/**\n * Serializes a tool for API responses, handling both regular tools (with Zod schemas)\n * and provider-defined tools (with AI SDK lazy schemas).\n */\nfunction serializeTool(tool: any): any {\n // Provider-defined tools (e.g. google.tools.googleSearch(), openai.tools.webSearch())\n // have lazy inputSchema functions that return AI SDK Schema objects, not Zod schemas.\n // We resolve them and use the jsonSchema property directly.\n if (isProviderDefinedTool(tool)) {\n const resolvedInput = resolveLazySchema(tool.inputSchema);\n const resolvedOutput = resolveLazySchema(tool.outputSchema);\n return {\n ...tool,\n inputSchema:\n resolvedInput && typeof resolvedInput === 'object' && 'jsonSchema' in resolvedInput\n ? stringify(resolvedInput.jsonSchema)\n : undefined,\n outputSchema:\n resolvedOutput && typeof resolvedOutput === 'object' && 'jsonSchema' in resolvedOutput\n ? stringify(resolvedOutput.jsonSchema)\n : undefined,\n };\n }\n\n return {\n ...tool,\n inputSchema: serializeSchema(tool.inputSchema, { stripInjectedOverrides: true }),\n outputSchema: serializeSchema(tool.outputSchema),\n requestContextSchema: serializeSchema(tool.requestContextSchema),\n };\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_TOOLS_ROUTE = createRoute({\n method: 'GET',\n path: '/tools',\n responseType: 'json',\n responseSchema: listToolsResponseSchema,\n summary: 'List all tools',\n description: 'Returns a list of all available tools in the system',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, registeredTools, requestContext }) => {\n try {\n // Merge tools from two sources: mastra.listTools() includes dynamically created tools\n // (e.g. MCP tools, or agent tools registered by their intrinsic id), while registeredTools\n // includes tools discovered by the CLI bundler (keyed by export name).\n //\n // The same tool instance can appear in both maps under different keys (e.g. an agent\n // registers it by `tool.id` while the bundler registers it by export name). Dedupe by\n // `tool.id`, preferring the registeredTools (bundler) key, so each tool appears once.\n const registered = registeredTools && Object.keys(registeredTools).length > 0 ? registeredTools : {};\n\n const allTools: Record<string, any> = {};\n const seenToolIds = new Map<string, string>();\n\n // registeredTools first so their key wins for a given tool.id.\n for (const [key, tool] of Object.entries(registered)) {\n const toolId = typeof (tool as any)?.id === 'string' ? (tool as any).id : undefined;\n if (toolId !== undefined) seenToolIds.set(toolId, key);\n allTools[key] = tool;\n }\n\n for (const [key, tool] of Object.entries(mastra.listTools() ?? {})) {\n const toolId = typeof (tool as any)?.id === 'string' ? (tool as any).id : undefined;\n // Skip if this exact tool.id was already registered (under any key) by registeredTools.\n if (toolId !== undefined && seenToolIds.has(toolId)) continue;\n if (toolId !== undefined) seenToolIds.set(toolId, key);\n allTools[key] = tool;\n }\n\n const serializedTools = Object.entries(allTools).reduce<Record<string, any>>((acc, [id, _tool]) => {\n acc[id] = serializeTool(_tool);\n return acc;\n }, {});\n\n // Filter tools by FGA if configured\n const fgaProvider = getHandlerFGAProvider(mastra, requestContext);\n const user = requestContext?.get('user');\n if (fgaProvider && user) {\n const toolList = Object.entries(serializedTools).map(([id, t]) => ({ id, ...t }));\n const accessible = await fgaProvider.filterAccessible(user, toolList, 'tool', MastraFGAPermissions.TOOLS_READ);\n const accessibleSet = new Set(accessible.map((t: any) => t.id));\n for (const id of Object.keys(serializedTools)) {\n if (!accessibleSet.has(id)) {\n delete serializedTools[id];\n }\n }\n }\n\n return serializedTools;\n } catch (error) {\n return handleError(error, 'Error getting tools');\n }\n },\n});\n\nexport const GET_TOOL_BY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/tools/:toolId',\n responseType: 'json',\n pathParamSchema: toolIdPathParams,\n responseSchema: serializedToolSchema,\n summary: 'Get tool by ID',\n description: 'Returns details for a specific tool including its schema and configuration',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, registeredTools, toolId, requestContext }) => {\n try {\n let tool: any;\n\n // Try explicit registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n }\n if (!tool) {\n try {\n tool = mastra.getToolById(toolId);\n } catch {\n // tool not found in global registry, continue to agent fallback\n }\n }\n\n // Fallback: search dynamically-resolved agent tools (toolsResolver)\n if (!tool) {\n tool = await findToolInAgents(mastra, toolId, requestContext);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n return serializeTool(tool);\n } catch (error) {\n return handleError(error, 'Error getting tool');\n }\n },\n});\n\nexport const EXECUTE_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: toolIdPathParams,\n queryParamSchema: optionalRunIdSchema,\n bodySchema: executeToolContextBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute tool',\n description: 'Executes a specific tool with the provided input data',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, runId, toolId, registeredTools, requestContext, ...bodyParams }) => {\n try {\n if (!toolId) {\n throw new HTTPException(400, { message: 'Tool ID is required' });\n }\n\n let tool: any;\n\n // Try explicit registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n }\n if (!tool) {\n try {\n tool = mastra.getToolById(toolId);\n } catch {\n // tool not found in global registry, continue to agent fallback\n }\n }\n\n // Fallback: search dynamically-resolved agent tools (toolsResolver)\n if (!tool) {\n tool = await findToolInAgents(mastra, toolId, requestContext);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n const { data } = bodyParams;\n\n validateBody({ data });\n\n let result;\n if (isVercelTool(tool)) {\n result = await (tool as any).execute(data);\n } else {\n result = await tool.execute(data!, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n ...(runId\n ? {\n workflow: {\n runId,\n suspend: async () => {},\n },\n }\n : {}),\n });\n }\n\n return result;\n } catch (error) {\n return handleError(error, 'Error executing tool');\n }\n },\n});\n\n// ============================================================================\n// Agent Tool Routes\n// ============================================================================\n\nexport const GET_AGENT_TOOL_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId/tools/:toolId',\n responseType: 'json',\n pathParamSchema: agentToolPathParams,\n responseSchema: serializedToolSchema,\n summary: 'Get agent tool',\n description: 'Returns details for a specific tool assigned to the agent',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n return serializeTool(tool);\n } catch (error) {\n return handleError(error, 'Error getting agent tool');\n }\n },\n});\n\nexport const EXECUTE_AGENT_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: agentToolPathParams,\n bodySchema: executeToolBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute agent tool',\n description: 'Executes a specific tool assigned to the agent with the provided input data',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, data, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n const result = await tool.execute(data, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error executing agent tool');\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,SAAS,kBAAkB,QAA0B;CACnD,IAAI,OAAO,WAAW,cAAc,EAAE,eAAe,SACnD,OAAO,kBAAkB,OAAO,CAAC;CAEnC,OAAO;AACT;AAEA,SAAS,mBAAmB,QAA2C;CACrE,IAAI,CAAC,QACH;CAGF,OAAOA,wBAAAA,2BAA2BC,wBAAAA,iBAAiB,MAAM,GAAG,EAAE,QAAQ,gBAAgB,CAAC;AACzF;AAEA,SAAS,gBAAgB,QAAiB,SAAoE;CAC5G,MAAM,aAAa,mBAAmB,kBAAkB,MAAM,CAAsC;CACpG,IAAI,eAAe,KAAA,GAAW,OAAO,KAAA;CACrC,OAAOC,cAAAA,UAAU,SAAS,yBAAyBC,8CAAAA,gCAAgC,UAAU,IAAI,UAAU;AAC7G;;;;;;;;;;AAWA,eAAe,iBAAiB,QAAa,QAAgB,gBAA+C;CAC1G,MAAM,SAAS,OAAO,WAAW,KAAK,CAAC;CACvC,KAAK,MAAM,SAAS,OAAO,OAAO,MAAM,GACtC,IAAI;EACF,MAAM,aAAa,MAAM,MAAM,UAAU,EAAE,eAAe,CAAC;EAC3D,MAAM,QAAQ,OAAO,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,MAAW,EAAE,OAAO,MAAM;EAC9E,IAAI,OAAO,OAAO;CACpB,SAAS,OAAO;EACd,OAAO,YAAY,CAAC,EAAE,OAAO,6DAA6D;GACxF,SAAS,OAAO;GAChB;GACA,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;EAC9D,CAAC;CACH;AAGJ;;;;;AAMA,SAAS,cAAc,MAAgB;CAIrC,KAAA,GAAIC,mBAAAA,sBAAAA,CAAsB,IAAI,GAAG;EAC/B,MAAM,gBAAgB,kBAAkB,KAAK,WAAW;EACxD,MAAM,iBAAiB,kBAAkB,KAAK,YAAY;EAC1D,OAAO;GACL,GAAG;GACH,aACE,iBAAiB,OAAO,kBAAkB,YAAY,gBAAgB,gBAClEF,cAAAA,UAAU,cAAc,UAAU,IAClC,KAAA;GACN,cACE,kBAAkB,OAAO,mBAAmB,YAAY,gBAAgB,iBACpEA,cAAAA,UAAU,eAAe,UAAU,IACnC,KAAA;EACR;CACF;CAEA,OAAO;EACL,GAAG;EACH,aAAa,gBAAgB,KAAK,aAAa,EAAE,wBAAwB,KAAK,CAAC;EAC/E,cAAc,gBAAgB,KAAK,YAAY;EAC/C,sBAAsB,gBAAgB,KAAK,oBAAoB;CACjE;AACF;AAMA,MAAa,mBAAmBG,sBAAAA,YAAY;CAC1C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,gBAAgBC,eAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,OAAO;CACd,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,iBAAiB,qBAAqB;EAC9D,IAAI;GAQF,MAAM,aAAa,mBAAmB,OAAO,KAAK,eAAe,CAAC,CAAC,SAAS,IAAI,kBAAkB,CAAC;GAEnG,MAAM,WAAgC,CAAC;GACvC,MAAM,8BAAc,IAAI,IAAoB;GAG5C,KAAK,MAAM,CAAC,KAAK,SAAS,OAAO,QAAQ,UAAU,GAAG;IACpD,MAAM,SAAS,OAAQ,MAAc,OAAO,WAAY,KAAa,KAAK,KAAA;IAC1E,IAAI,WAAW,KAAA,GAAW,YAAY,IAAI,QAAQ,GAAG;IACrD,SAAS,OAAO;GAClB;GAEA,KAAK,MAAM,CAAC,KAAK,SAAS,OAAO,QAAQ,OAAO,UAAU,KAAK,CAAC,CAAC,GAAG;IAClE,MAAM,SAAS,OAAQ,MAAc,OAAO,WAAY,KAAa,KAAK,KAAA;IAE1E,IAAI,WAAW,KAAA,KAAa,YAAY,IAAI,MAAM,GAAG;IACrD,IAAI,WAAW,KAAA,GAAW,YAAY,IAAI,QAAQ,GAAG;IACrD,SAAS,OAAO;GAClB;GAEA,MAAM,kBAAkB,OAAO,QAAQ,QAAQ,CAAC,CAAC,QAA6B,KAAK,CAAC,IAAI,WAAW;IACjG,IAAI,MAAM,cAAc,KAAK;IAC7B,OAAO;GACT,GAAG,CAAC,CAAC;GAGL,MAAM,cAAcC,gBAAAA,sBAAsB,QAAQ,cAAc;GAChE,MAAM,OAAO,gBAAgB,IAAI,MAAM;GACvC,IAAI,eAAe,MAAM;IACvB,MAAM,WAAW,OAAO,QAAQ,eAAe,CAAC,CAAC,KAAK,CAAC,IAAI,QAAQ;KAAE;KAAI,GAAG;IAAE,EAAE;IAChF,MAAM,aAAa,MAAM,YAAY,iBAAiB,MAAM,UAAU,QAAQC,gBAAAA,qBAAqB,UAAU;IAC7G,MAAM,gBAAgB,IAAI,IAAI,WAAW,KAAK,MAAW,EAAE,EAAE,CAAC;IAC9D,KAAK,MAAM,MAAM,OAAO,KAAK,eAAe,GAC1C,IAAI,CAAC,cAAc,IAAI,EAAE,GACvB,OAAO,gBAAgB;GAG7B;GAEA,OAAO;EACT,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,qBAAqB;EACjD;CACF;AACF,CAAC;AAED,MAAa,uBAAuBJ,sBAAAA,YAAY;CAC9C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBK,eAAAA;CACjB,gBAAgBC,eAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,OAAO;CACd,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,iBAAiB,QAAQ,qBAAqB;EACtE,IAAI;GACF,IAAI;GAGJ,IAAI,mBAAmB,OAAO,KAAK,eAAe,CAAC,CAAC,SAAS,GAC3D,OAAO,OAAO,OAAO,eAAe,CAAC,CAAC,MAAM,MAAW,EAAE,OAAO,MAAM;GAExE,IAAI,CAAC,MACH,IAAI;IACF,OAAO,OAAO,YAAY,MAAM;GAClC,QAAQ,CAER;GAIF,IAAI,CAAC,MACH,OAAO,MAAM,iBAAiB,QAAQ,QAAQ,cAAc;GAG9D,IAAI,CAAC,MACH,MAAM,IAAIC,uBAAAA,cAAc,KAAK,EAAE,SAAS,iBAAiB,CAAC;GAG5D,OAAO,cAAc,IAAI;EAC3B,SAAS,OAAO;GACd,OAAOH,8BAAAA,YAAY,OAAO,oBAAoB;EAChD;CACF;AACF,CAAC;AAED,MAAa,qBAAqBJ,sBAAAA,YAAY;CAC5C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBK,eAAAA;CACjB,kBAAkBG,eAAAA;CAClB,YAAYC,eAAAA;CACZ,gBAAgBC,eAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,OAAO;CACd,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,OAAO,QAAQ,iBAAiB,gBAAgB,GAAG,iBAAiB;EAC5F,IAAI;GACF,IAAI,CAAC,QACH,MAAM,IAAIH,uBAAAA,cAAc,KAAK,EAAE,SAAS,sBAAsB,CAAC;GAGjE,IAAI;GAGJ,IAAI,mBAAmB,OAAO,KAAK,eAAe,CAAC,CAAC,SAAS,GAC3D,OAAO,OAAO,OAAO,eAAe,CAAC,CAAC,MAAM,MAAW,EAAE,OAAO,MAAM;GAExE,IAAI,CAAC,MACH,IAAI;IACF,OAAO,OAAO,YAAY,MAAM;GAClC,QAAQ,CAER;GAIF,IAAI,CAAC,MACH,OAAO,MAAM,iBAAiB,QAAQ,QAAQ,cAAc;GAG9D,IAAI,CAAC,MACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,iBAAiB,CAAC;GAG5D,IAAI,CAAC,MAAM,SACT,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,yBAAyB,CAAC;GAGpE,MAAM,EAAE,SAAS;GAEjB,gBAAA,aAAa,EAAE,KAAK,CAAC;GAErB,IAAI;GACJ,KAAA,GAAII,mBAAAA,aAAAA,CAAa,IAAI,GACnB,SAAS,MAAO,KAAa,QAAQ,IAAI;QAEzC,SAAS,MAAM,KAAK,QAAQ,MAAO;IACjC;IACA;IAEA,gBAAgB,EAAE,aAAa,KAAA,EAAU;IACzC,GAAI,QACA,EACE,UAAU;KACR;KACA,SAAS,YAAY,CAAC;IACxB,EACF,IACA,CAAC;GACP,CAAC;GAGH,OAAO;EACT,SAAS,OAAO;GACd,OAAOP,8BAAAA,YAAY,OAAO,sBAAsB;EAClD;CACF;AACF,CAAC;AAMD,MAAa,uBAAuBJ,sBAAAA,YAAY;CAC9C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBY,eAAAA;CACjB,gBAAgBN,eAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,UAAU,OAAO;CACxB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,SAAS,QAAQ,qBAAqB;EAC9D,IAAI;GACF,IAAI,CAAC,SACH,MAAM,IAAIC,uBAAAA,cAAc,KAAK,EAAE,SAAS,uBAAuB,CAAC;GAIlE,MAAM,aAAa,OAAM,MAFLM,iBAAAA,mBAAmB;IAAE;IAAQ;GAAQ,CAAC,EAAA,CAE3B,UAAU,EAAE,eAAe,CAAC;GAE3D,MAAM,OAAO,OAAO,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,SAAc,KAAK,OAAO,MAAM;GAEnF,IAAI,CAAC,MACH,MAAM,IAAIN,uBAAAA,cAAc,KAAK,EAAE,SAAS,iBAAiB,CAAC;GAG5D,OAAO,cAAc,IAAI;EAC3B,SAAS,OAAO;GACd,OAAOH,8BAAAA,YAAY,OAAO,0BAA0B;EACtD;CACF;AACF,CAAC;AAED,MAAa,2BAA2BJ,sBAAAA,YAAY;CAClD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBY,eAAAA;CACjB,YAAYE,eAAAA;CACZ,gBAAgBJ,eAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,UAAU,OAAO;CACxB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,SAAS,QAAQ,MAAM,qBAAqB;EACpE,IAAI;GACF,IAAI,CAAC,SACH,MAAM,IAAIH,uBAAAA,cAAc,KAAK,EAAE,SAAS,uBAAuB,CAAC;GAIlE,MAAM,aAAa,OAAM,MAFLM,iBAAAA,mBAAmB;IAAE;IAAQ;GAAQ,CAAC,EAAA,CAE3B,UAAU,EAAE,eAAe,CAAC;GAE3D,MAAM,OAAO,OAAO,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,SAAc,KAAK,OAAO,MAAM;GAEnF,IAAI,CAAC,MACH,MAAM,IAAIN,uBAAAA,cAAc,KAAK,EAAE,SAAS,iBAAiB,CAAC;GAG5D,IAAI,CAAC,MAAM,SACT,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,yBAAyB,CAAC;GAUpE,OAAO,MAPc,KAAK,QAAQ,MAAM;IACtC;IACA;IAEA,gBAAgB,EAAE,aAAa,KAAA,EAAU;GAC3C,CAAC;EAGH,SAAS,OAAO;GACd,OAAOH,8BAAAA,YAAY,OAAO,4BAA4B;EACxD;CACF;AACF,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { r as __exportAll } from "./rolldown-runtime-CQI-hT2b.js";
|
|
2
2
|
import { t as HTTPException } from "./http-exception-CzaWkxMl.js";
|
|
3
|
-
import { o as optionalRunIdSchema } from "./common-
|
|
4
|
-
import { D as listToolsResponseSchema, J as serializedToolSchema, S as executeToolResponseSchema, b as executeToolBodySchema, et as toolIdPathParams, u as agentToolPathParams, x as executeToolContextBodySchema } from "./agents-
|
|
3
|
+
import { o as optionalRunIdSchema } from "./common-J-yUnHk9.js";
|
|
4
|
+
import { D as listToolsResponseSchema, J as serializedToolSchema, S as executeToolResponseSchema, b as executeToolBodySchema, et as toolIdPathParams, u as agentToolPathParams, x as executeToolContextBodySchema } from "./agents-B5kq2QEV.js";
|
|
5
5
|
import { n as standardSchemaToJSONSchema, r as toStandardSchema } from "./schema-Bf12g7KC-DBc4NSds.js";
|
|
6
6
|
import { n as createRoute } from "./route-builder-BxPrwNog.js";
|
|
7
7
|
import { l as stringify } from "./utils-YEuwVEc2.js";
|
|
8
8
|
import { handleError } from "./server/handlers/error.js";
|
|
9
9
|
import { _ as MastraFGAPermissions, m as validateBody, o as getHandlerFGAProvider } from "./utils-DHxjw4Tn.js";
|
|
10
|
-
import { G as getAgentFromSystem } from "./agents-
|
|
10
|
+
import { G as getAgentFromSystem } from "./agents-BVjnYswL.js";
|
|
11
11
|
import { stripInjectedToolOverrideFields } from "./server/handlers/tool-schema-overrides.js";
|
|
12
12
|
import { isProviderDefinedTool, isVercelTool } from "@mastra/core/tools";
|
|
13
13
|
// src/server/handlers/tools.ts
|
|
@@ -252,4 +252,4 @@ const EXECUTE_AGENT_TOOL_ROUTE = createRoute({
|
|
|
252
252
|
});
|
|
253
253
|
export { LIST_TOOLS_ROUTE as a, GET_TOOL_BY_ID_ROUTE as i, EXECUTE_TOOL_ROUTE as n, tools_exports as o, GET_AGENT_TOOL_ROUTE as r, EXECUTE_AGENT_TOOL_ROUTE as t };
|
|
254
254
|
|
|
255
|
-
//# sourceMappingURL=tools-
|
|
255
|
+
//# sourceMappingURL=tools-Ck35EVD7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools-Do1uV_07.js","names":[],"sources":["../src/server/handlers/tools.ts"],"sourcesContent":["import { isVercelTool, isProviderDefinedTool } from '@mastra/core/tools';\nimport { toStandardSchema, standardSchemaToJSONSchema } from '@mastra/schema-compat/schema';\nimport type { PublicSchema } from '@mastra/schema-compat/schema';\nimport { stringify } from 'superjson';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n executeToolContextBodySchema,\n executeToolResponseSchema,\n listToolsResponseSchema,\n serializedToolSchema,\n toolIdPathParams,\n agentToolPathParams,\n executeToolBodySchema,\n} from '../schemas/agents';\nimport { optionalRunIdSchema } from '../schemas/common';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { stripInjectedToolOverrideFields } from './tool-schema-overrides';\nimport { getHandlerFGAProvider, validateBody } from './utils';\n\n/**\n * Resolves a schema that may be a lazy function (e.g. AI SDK provider tools).\n * Recursively resolves until a non-function value is returned.\n * Skips functions that are themselves valid schemas (e.g. ArkType types are\n * callable but also implement StandardSchema via ~standard).\n */\nfunction resolveLazySchema(schema: unknown): unknown {\n if (typeof schema === 'function' && !('~standard' in schema)) {\n return resolveLazySchema(schema());\n }\n return schema;\n}\n\nfunction schemaToJsonSchema(schema: PublicSchema<unknown> | undefined) {\n if (!schema) {\n return undefined;\n }\n\n return standardSchemaToJSONSchema(toStandardSchema(schema), { target: 'draft-2020-12' });\n}\n\nfunction serializeSchema(schema: unknown, options?: { stripInjectedOverrides?: boolean }): string | undefined {\n const jsonSchema = schemaToJsonSchema(resolveLazySchema(schema) as PublicSchema<unknown> | undefined);\n if (jsonSchema === undefined) return undefined;\n return stringify(options?.stripInjectedOverrides ? stripInjectedToolOverrideFields(jsonSchema) : jsonSchema);\n}\n\n/**\n * Searches dynamically-resolved agent tools (provided via `toolsResolver` /\n * function-based `tools`) for a tool with the given id. Used as a fallback\n * after the static tool registry (`registeredTools` + `mastra.getToolById`)\n * misses, so global tool routes can resolve tools that only exist on agents.\n *\n * Errors thrown by an individual agent's `listTools()` are logged and\n * skipped so a single broken resolver doesn't take down the whole lookup.\n */\nasync function findToolInAgents(mastra: any, toolId: string, requestContext: any): Promise<any | undefined> {\n const agents = mastra.listAgents() || {};\n for (const agent of Object.values(agents) as any[]) {\n try {\n const agentTools = await agent.listTools({ requestContext });\n const found = Object.values(agentTools || {}).find((t: any) => t.id === toolId);\n if (found) return found;\n } catch (error) {\n mastra.getLogger?.()?.warn?.('Failed to list tools for agent while resolving tool by id', {\n agentId: agent?.id,\n toolId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n return undefined;\n}\n\n/**\n * Serializes a tool for API responses, handling both regular tools (with Zod schemas)\n * and provider-defined tools (with AI SDK lazy schemas).\n */\nfunction serializeTool(tool: any): any {\n // Provider-defined tools (e.g. google.tools.googleSearch(), openai.tools.webSearch())\n // have lazy inputSchema functions that return AI SDK Schema objects, not Zod schemas.\n // We resolve them and use the jsonSchema property directly.\n if (isProviderDefinedTool(tool)) {\n const resolvedInput = resolveLazySchema(tool.inputSchema);\n const resolvedOutput = resolveLazySchema(tool.outputSchema);\n return {\n ...tool,\n inputSchema:\n resolvedInput && typeof resolvedInput === 'object' && 'jsonSchema' in resolvedInput\n ? stringify(resolvedInput.jsonSchema)\n : undefined,\n outputSchema:\n resolvedOutput && typeof resolvedOutput === 'object' && 'jsonSchema' in resolvedOutput\n ? stringify(resolvedOutput.jsonSchema)\n : undefined,\n };\n }\n\n return {\n ...tool,\n inputSchema: serializeSchema(tool.inputSchema, { stripInjectedOverrides: true }),\n outputSchema: serializeSchema(tool.outputSchema),\n requestContextSchema: serializeSchema(tool.requestContextSchema),\n };\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_TOOLS_ROUTE = createRoute({\n method: 'GET',\n path: '/tools',\n responseType: 'json',\n responseSchema: listToolsResponseSchema,\n summary: 'List all tools',\n description: 'Returns a list of all available tools in the system',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, registeredTools, requestContext }) => {\n try {\n // Merge tools from two sources: mastra.listTools() includes dynamically created tools\n // (e.g. MCP tools, or agent tools registered by their intrinsic id), while registeredTools\n // includes tools discovered by the CLI bundler (keyed by export name).\n //\n // The same tool instance can appear in both maps under different keys (e.g. an agent\n // registers it by `tool.id` while the bundler registers it by export name). Dedupe by\n // `tool.id`, preferring the registeredTools (bundler) key, so each tool appears once.\n const registered = registeredTools && Object.keys(registeredTools).length > 0 ? registeredTools : {};\n\n const allTools: Record<string, any> = {};\n const seenToolIds = new Map<string, string>();\n\n // registeredTools first so their key wins for a given tool.id.\n for (const [key, tool] of Object.entries(registered)) {\n const toolId = typeof (tool as any)?.id === 'string' ? (tool as any).id : undefined;\n if (toolId !== undefined) seenToolIds.set(toolId, key);\n allTools[key] = tool;\n }\n\n for (const [key, tool] of Object.entries(mastra.listTools() ?? {})) {\n const toolId = typeof (tool as any)?.id === 'string' ? (tool as any).id : undefined;\n // Skip if this exact tool.id was already registered (under any key) by registeredTools.\n if (toolId !== undefined && seenToolIds.has(toolId)) continue;\n if (toolId !== undefined) seenToolIds.set(toolId, key);\n allTools[key] = tool;\n }\n\n const serializedTools = Object.entries(allTools).reduce<Record<string, any>>((acc, [id, _tool]) => {\n acc[id] = serializeTool(_tool);\n return acc;\n }, {});\n\n // Filter tools by FGA if configured\n const fgaProvider = getHandlerFGAProvider(mastra, requestContext);\n const user = requestContext?.get('user');\n if (fgaProvider && user) {\n const toolList = Object.entries(serializedTools).map(([id, t]) => ({ id, ...t }));\n const accessible = await fgaProvider.filterAccessible(user, toolList, 'tool', MastraFGAPermissions.TOOLS_READ);\n const accessibleSet = new Set(accessible.map((t: any) => t.id));\n for (const id of Object.keys(serializedTools)) {\n if (!accessibleSet.has(id)) {\n delete serializedTools[id];\n }\n }\n }\n\n return serializedTools;\n } catch (error) {\n return handleError(error, 'Error getting tools');\n }\n },\n});\n\nexport const GET_TOOL_BY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/tools/:toolId',\n responseType: 'json',\n pathParamSchema: toolIdPathParams,\n responseSchema: serializedToolSchema,\n summary: 'Get tool by ID',\n description: 'Returns details for a specific tool including its schema and configuration',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, registeredTools, toolId, requestContext }) => {\n try {\n let tool: any;\n\n // Try explicit registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n }\n if (!tool) {\n try {\n tool = mastra.getToolById(toolId);\n } catch {\n // tool not found in global registry, continue to agent fallback\n }\n }\n\n // Fallback: search dynamically-resolved agent tools (toolsResolver)\n if (!tool) {\n tool = await findToolInAgents(mastra, toolId, requestContext);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n return serializeTool(tool);\n } catch (error) {\n return handleError(error, 'Error getting tool');\n }\n },\n});\n\nexport const EXECUTE_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: toolIdPathParams,\n queryParamSchema: optionalRunIdSchema,\n bodySchema: executeToolContextBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute tool',\n description: 'Executes a specific tool with the provided input data',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, runId, toolId, registeredTools, requestContext, ...bodyParams }) => {\n try {\n if (!toolId) {\n throw new HTTPException(400, { message: 'Tool ID is required' });\n }\n\n let tool: any;\n\n // Try explicit registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n }\n if (!tool) {\n try {\n tool = mastra.getToolById(toolId);\n } catch {\n // tool not found in global registry, continue to agent fallback\n }\n }\n\n // Fallback: search dynamically-resolved agent tools (toolsResolver)\n if (!tool) {\n tool = await findToolInAgents(mastra, toolId, requestContext);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n const { data } = bodyParams;\n\n validateBody({ data });\n\n let result;\n if (isVercelTool(tool)) {\n result = await (tool as any).execute(data);\n } else {\n result = await tool.execute(data!, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n ...(runId\n ? {\n workflow: {\n runId,\n suspend: async () => {},\n },\n }\n : {}),\n });\n }\n\n return result;\n } catch (error) {\n return handleError(error, 'Error executing tool');\n }\n },\n});\n\n// ============================================================================\n// Agent Tool Routes\n// ============================================================================\n\nexport const GET_AGENT_TOOL_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId/tools/:toolId',\n responseType: 'json',\n pathParamSchema: agentToolPathParams,\n responseSchema: serializedToolSchema,\n summary: 'Get agent tool',\n description: 'Returns details for a specific tool assigned to the agent',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n return serializeTool(tool);\n } catch (error) {\n return handleError(error, 'Error getting agent tool');\n }\n },\n});\n\nexport const EXECUTE_AGENT_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: agentToolPathParams,\n bodySchema: executeToolBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute agent tool',\n description: 'Executes a specific tool assigned to the agent with the provided input data',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, data, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n const result = await tool.execute(data, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error executing agent tool');\n }\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools-Ck35EVD7.js","names":[],"sources":["../src/server/handlers/tools.ts"],"sourcesContent":["import { isVercelTool, isProviderDefinedTool } from '@mastra/core/tools';\nimport { toStandardSchema, standardSchemaToJSONSchema } from '@mastra/schema-compat/schema';\nimport type { PublicSchema } from '@mastra/schema-compat/schema';\nimport { stringify } from 'superjson';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n executeToolContextBodySchema,\n executeToolResponseSchema,\n listToolsResponseSchema,\n serializedToolSchema,\n toolIdPathParams,\n agentToolPathParams,\n executeToolBodySchema,\n} from '../schemas/agents';\nimport { optionalRunIdSchema } from '../schemas/common';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { stripInjectedToolOverrideFields } from './tool-schema-overrides';\nimport { getHandlerFGAProvider, validateBody } from './utils';\n\n/**\n * Resolves a schema that may be a lazy function (e.g. AI SDK provider tools).\n * Recursively resolves until a non-function value is returned.\n * Skips functions that are themselves valid schemas (e.g. ArkType types are\n * callable but also implement StandardSchema via ~standard).\n */\nfunction resolveLazySchema(schema: unknown): unknown {\n if (typeof schema === 'function' && !('~standard' in schema)) {\n return resolveLazySchema(schema());\n }\n return schema;\n}\n\nfunction schemaToJsonSchema(schema: PublicSchema<unknown> | undefined) {\n if (!schema) {\n return undefined;\n }\n\n return standardSchemaToJSONSchema(toStandardSchema(schema), { target: 'draft-2020-12' });\n}\n\nfunction serializeSchema(schema: unknown, options?: { stripInjectedOverrides?: boolean }): string | undefined {\n const jsonSchema = schemaToJsonSchema(resolveLazySchema(schema) as PublicSchema<unknown> | undefined);\n if (jsonSchema === undefined) return undefined;\n return stringify(options?.stripInjectedOverrides ? stripInjectedToolOverrideFields(jsonSchema) : jsonSchema);\n}\n\n/**\n * Searches dynamically-resolved agent tools (provided via `toolsResolver` /\n * function-based `tools`) for a tool with the given id. Used as a fallback\n * after the static tool registry (`registeredTools` + `mastra.getToolById`)\n * misses, so global tool routes can resolve tools that only exist on agents.\n *\n * Errors thrown by an individual agent's `listTools()` are logged and\n * skipped so a single broken resolver doesn't take down the whole lookup.\n */\nasync function findToolInAgents(mastra: any, toolId: string, requestContext: any): Promise<any | undefined> {\n const agents = mastra.listAgents() || {};\n for (const agent of Object.values(agents) as any[]) {\n try {\n const agentTools = await agent.listTools({ requestContext });\n const found = Object.values(agentTools || {}).find((t: any) => t.id === toolId);\n if (found) return found;\n } catch (error) {\n mastra.getLogger?.()?.warn?.('Failed to list tools for agent while resolving tool by id', {\n agentId: agent?.id,\n toolId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n return undefined;\n}\n\n/**\n * Serializes a tool for API responses, handling both regular tools (with Zod schemas)\n * and provider-defined tools (with AI SDK lazy schemas).\n */\nfunction serializeTool(tool: any): any {\n // Provider-defined tools (e.g. google.tools.googleSearch(), openai.tools.webSearch())\n // have lazy inputSchema functions that return AI SDK Schema objects, not Zod schemas.\n // We resolve them and use the jsonSchema property directly.\n if (isProviderDefinedTool(tool)) {\n const resolvedInput = resolveLazySchema(tool.inputSchema);\n const resolvedOutput = resolveLazySchema(tool.outputSchema);\n return {\n ...tool,\n inputSchema:\n resolvedInput && typeof resolvedInput === 'object' && 'jsonSchema' in resolvedInput\n ? stringify(resolvedInput.jsonSchema)\n : undefined,\n outputSchema:\n resolvedOutput && typeof resolvedOutput === 'object' && 'jsonSchema' in resolvedOutput\n ? stringify(resolvedOutput.jsonSchema)\n : undefined,\n };\n }\n\n return {\n ...tool,\n inputSchema: serializeSchema(tool.inputSchema, { stripInjectedOverrides: true }),\n outputSchema: serializeSchema(tool.outputSchema),\n requestContextSchema: serializeSchema(tool.requestContextSchema),\n };\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_TOOLS_ROUTE = createRoute({\n method: 'GET',\n path: '/tools',\n responseType: 'json',\n responseSchema: listToolsResponseSchema,\n summary: 'List all tools',\n description: 'Returns a list of all available tools in the system',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, registeredTools, requestContext }) => {\n try {\n // Merge tools from two sources: mastra.listTools() includes dynamically created tools\n // (e.g. MCP tools, or agent tools registered by their intrinsic id), while registeredTools\n // includes tools discovered by the CLI bundler (keyed by export name).\n //\n // The same tool instance can appear in both maps under different keys (e.g. an agent\n // registers it by `tool.id` while the bundler registers it by export name). Dedupe by\n // `tool.id`, preferring the registeredTools (bundler) key, so each tool appears once.\n const registered = registeredTools && Object.keys(registeredTools).length > 0 ? registeredTools : {};\n\n const allTools: Record<string, any> = {};\n const seenToolIds = new Map<string, string>();\n\n // registeredTools first so their key wins for a given tool.id.\n for (const [key, tool] of Object.entries(registered)) {\n const toolId = typeof (tool as any)?.id === 'string' ? (tool as any).id : undefined;\n if (toolId !== undefined) seenToolIds.set(toolId, key);\n allTools[key] = tool;\n }\n\n for (const [key, tool] of Object.entries(mastra.listTools() ?? {})) {\n const toolId = typeof (tool as any)?.id === 'string' ? (tool as any).id : undefined;\n // Skip if this exact tool.id was already registered (under any key) by registeredTools.\n if (toolId !== undefined && seenToolIds.has(toolId)) continue;\n if (toolId !== undefined) seenToolIds.set(toolId, key);\n allTools[key] = tool;\n }\n\n const serializedTools = Object.entries(allTools).reduce<Record<string, any>>((acc, [id, _tool]) => {\n acc[id] = serializeTool(_tool);\n return acc;\n }, {});\n\n // Filter tools by FGA if configured\n const fgaProvider = getHandlerFGAProvider(mastra, requestContext);\n const user = requestContext?.get('user');\n if (fgaProvider && user) {\n const toolList = Object.entries(serializedTools).map(([id, t]) => ({ id, ...t }));\n const accessible = await fgaProvider.filterAccessible(user, toolList, 'tool', MastraFGAPermissions.TOOLS_READ);\n const accessibleSet = new Set(accessible.map((t: any) => t.id));\n for (const id of Object.keys(serializedTools)) {\n if (!accessibleSet.has(id)) {\n delete serializedTools[id];\n }\n }\n }\n\n return serializedTools;\n } catch (error) {\n return handleError(error, 'Error getting tools');\n }\n },\n});\n\nexport const GET_TOOL_BY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/tools/:toolId',\n responseType: 'json',\n pathParamSchema: toolIdPathParams,\n responseSchema: serializedToolSchema,\n summary: 'Get tool by ID',\n description: 'Returns details for a specific tool including its schema and configuration',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, registeredTools, toolId, requestContext }) => {\n try {\n let tool: any;\n\n // Try explicit registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n }\n if (!tool) {\n try {\n tool = mastra.getToolById(toolId);\n } catch {\n // tool not found in global registry, continue to agent fallback\n }\n }\n\n // Fallback: search dynamically-resolved agent tools (toolsResolver)\n if (!tool) {\n tool = await findToolInAgents(mastra, toolId, requestContext);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n return serializeTool(tool);\n } catch (error) {\n return handleError(error, 'Error getting tool');\n }\n },\n});\n\nexport const EXECUTE_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: toolIdPathParams,\n queryParamSchema: optionalRunIdSchema,\n bodySchema: executeToolContextBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute tool',\n description: 'Executes a specific tool with the provided input data',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, runId, toolId, registeredTools, requestContext, ...bodyParams }) => {\n try {\n if (!toolId) {\n throw new HTTPException(400, { message: 'Tool ID is required' });\n }\n\n let tool: any;\n\n // Try explicit registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n }\n if (!tool) {\n try {\n tool = mastra.getToolById(toolId);\n } catch {\n // tool not found in global registry, continue to agent fallback\n }\n }\n\n // Fallback: search dynamically-resolved agent tools (toolsResolver)\n if (!tool) {\n tool = await findToolInAgents(mastra, toolId, requestContext);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n const { data } = bodyParams;\n\n validateBody({ data });\n\n let result;\n if (isVercelTool(tool)) {\n result = await (tool as any).execute(data);\n } else {\n result = await tool.execute(data!, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n ...(runId\n ? {\n workflow: {\n runId,\n suspend: async () => {},\n },\n }\n : {}),\n });\n }\n\n return result;\n } catch (error) {\n return handleError(error, 'Error executing tool');\n }\n },\n});\n\n// ============================================================================\n// Agent Tool Routes\n// ============================================================================\n\nexport const GET_AGENT_TOOL_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId/tools/:toolId',\n responseType: 'json',\n pathParamSchema: agentToolPathParams,\n responseSchema: serializedToolSchema,\n summary: 'Get agent tool',\n description: 'Returns details for a specific tool assigned to the agent',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n return serializeTool(tool);\n } catch (error) {\n return handleError(error, 'Error getting agent tool');\n }\n },\n});\n\nexport const EXECUTE_AGENT_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: agentToolPathParams,\n bodySchema: executeToolBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute agent tool',\n description: 'Executes a specific tool assigned to the agent with the provided input data',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, data, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n const result = await tool.execute(data, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error executing agent tool');\n }\n },\n});\n"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { r as __exportAll } from "./rolldown-runtime-CQI-hT2b.js";
|
|
|
2
2
|
import { t as HTTPException } from "./http-exception-CzaWkxMl.js";
|
|
3
3
|
import { n as createRoute } from "./route-builder-BxPrwNog.js";
|
|
4
4
|
import { handleError } from "./server/handlers/error.js";
|
|
5
|
-
import { a as listEmbeddersResponseSchema, c as queryVectorsBodySchema, d as upsertVectorsResponseSchema, f as vectorIndexPathParams, i as describeIndexResponseSchema, l as queryVectorsResponseSchema, n as createIndexResponseSchema, o as listIndexesResponseSchema, p as vectorNamePathParams, r as deleteIndexResponseSchema, s as listVectorsResponseSchema, t as createIndexBodySchema, u as upsertVectorsBodySchema } from "./vectors-
|
|
5
|
+
import { a as listEmbeddersResponseSchema, c as queryVectorsBodySchema, d as upsertVectorsResponseSchema, f as vectorIndexPathParams, i as describeIndexResponseSchema, l as queryVectorsResponseSchema, n as createIndexResponseSchema, o as listIndexesResponseSchema, p as vectorNamePathParams, r as deleteIndexResponseSchema, s as listVectorsResponseSchema, t as createIndexBodySchema, u as upsertVectorsBodySchema } from "./vectors-CadLydEJ.js";
|
|
6
6
|
import { EMBEDDING_MODELS } from "@mastra/core/llm";
|
|
7
7
|
// src/server/handlers/vector.ts
|
|
8
8
|
var vector_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -310,4 +310,4 @@ const LIST_EMBEDDERS_ROUTE = createRoute({
|
|
|
310
310
|
});
|
|
311
311
|
export { LIST_INDEXES_ROUTE as a, UPSERT_VECTORS_ROUTE as c, describeIndex as d, listIndexes as f, vector_exports as g, upsertVectors as h, LIST_EMBEDDERS_ROUTE as i, createIndex as l, queryVectors as m, DELETE_INDEX_ROUTE as n, LIST_VECTORS_ROUTE as o, listVectorStores as p, DESCRIBE_INDEX_ROUTE as r, QUERY_VECTORS_ROUTE as s, CREATE_INDEX_ROUTE as t, deleteIndex as u };
|
|
312
312
|
|
|
313
|
-
//# sourceMappingURL=vector-
|
|
313
|
+
//# sourceMappingURL=vector-BAs5o6mH.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-Deod39jt.js","names":[],"sources":["../src/server/handlers/vector.ts"],"sourcesContent":["import { EMBEDDING_MODELS } from '@mastra/core/llm';\nimport type { MastraVector, QueryResult, IndexStats, VectorFilter } from '@mastra/core/vector';\nimport { HTTPException } from '../http-exception';\nimport {\n vectorNamePathParams,\n vectorIndexPathParams,\n upsertVectorsBodySchema,\n upsertVectorsResponseSchema,\n createIndexBodySchema,\n createIndexResponseSchema,\n queryVectorsBodySchema,\n queryVectorsResponseSchema,\n listIndexesResponseSchema,\n describeIndexResponseSchema,\n deleteIndexResponseSchema,\n listVectorsResponseSchema,\n listEmbeddersResponseSchema,\n} from '../schemas/vectors';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\n\nimport { handleError } from './error';\n\ninterface VectorContext extends Context {\n vectorName?: string;\n}\n\ninterface UpsertRequest {\n indexName: string;\n vectors: number[][];\n metadata?: Record<string, any>[];\n ids?: string[];\n}\n\ninterface CreateIndexRequest {\n indexName: string;\n dimension: number;\n metric?: 'cosine' | 'euclidean' | 'dotproduct';\n}\n\ninterface QueryRequest {\n indexName: string;\n queryVector: number[];\n topK?: number;\n filter?: Record<string, any>;\n includeVector?: boolean;\n}\n\nfunction getVector(mastra: Context['mastra'], vectorName?: string): MastraVector {\n if (!vectorName) {\n throw new HTTPException(400, { message: 'Vector name is required' });\n }\n\n const vector = mastra.getVector(vectorName);\n if (!vector) {\n throw new HTTPException(404, { message: `Vector store ${vectorName} not found` });\n }\n\n return vector;\n}\n\n// Upsert vectors\nexport async function upsertVectors({\n mastra,\n vectorName,\n indexName,\n vectors,\n metadata,\n ids,\n}: VectorContext & UpsertRequest) {\n try {\n if (!indexName || !vectors || !Array.isArray(vectors)) {\n throw new HTTPException(400, { message: 'Invalid request index. indexName and vectors array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const result = await vector.upsert({ indexName, vectors, metadata, ids });\n return { ids: result };\n } catch (error) {\n return handleError(error, 'Error upserting vectors');\n }\n}\n\n// Create index\nexport async function createIndex({\n mastra,\n vectorName,\n indexName,\n dimension,\n metric,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & CreateIndexRequest) {\n try {\n if (!indexName || typeof dimension !== 'number' || dimension <= 0) {\n throw new HTTPException(400, {\n message: 'Invalid request index, indexName and positive dimension number are required.',\n });\n }\n\n if (metric && !['cosine', 'euclidean', 'dotproduct'].includes(metric)) {\n throw new HTTPException(400, { message: 'Invalid metric. Must be one of: cosine, euclidean, dotproduct' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.createIndex({ indexName, dimension, metric });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error creating index');\n }\n}\n\n// Query vectors\nexport async function queryVectors({\n mastra,\n vectorName,\n indexName,\n queryVector,\n topK,\n filter,\n includeVector,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & QueryRequest) {\n try {\n if (!indexName || !queryVector || !Array.isArray(queryVector)) {\n throw new HTTPException(400, { message: 'Invalid request query. indexName and queryVector array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const results: QueryResult[] = await vector.query({ indexName, queryVector, topK, filter, includeVector });\n return results;\n } catch (error) {\n return handleError(error, 'Error querying vectors');\n }\n}\n\n// List indexes\nexport async function listIndexes({ mastra, vectorName }: Pick<VectorContext, 'mastra' | 'vectorName'>) {\n try {\n const vector = getVector(mastra, vectorName);\n\n const indexes = await vector.listIndexes();\n return indexes.filter(Boolean);\n } catch (error) {\n return handleError(error, 'Error listing indexes');\n }\n}\n\n// Describe index\nexport async function describeIndex({\n mastra,\n vectorName,\n indexName,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & { indexName?: string }) {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n const stats: IndexStats = await vector.describeIndex({ indexName });\n\n return {\n dimension: stats.dimension,\n count: stats.count,\n metric: stats.metric?.toLowerCase(),\n };\n } catch (error) {\n return handleError(error, 'Error describing index');\n }\n}\n\n// Delete index\nexport async function deleteIndex({\n mastra,\n vectorName,\n indexName,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & { indexName?: string }) {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.deleteIndex({ indexName });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error deleting index');\n }\n}\n\n// List available vector stores\nexport async function listVectorStores({ mastra }: Pick<VectorContext, 'mastra'>) {\n try {\n const vectors = mastra.listVectors();\n if (!vectors) {\n return { vectors: [] };\n }\n\n // Convert to array and extract metadata\n const vectorList = Object.entries(vectors).map(([name, vector]) => ({\n name,\n id: vector.id || name, // Use the key as fallback when vector has no id property\n type: vector.constructor.name,\n // Add any other metadata that might be useful\n }));\n\n return { vectors: vectorList };\n } catch (error) {\n return handleError(error, 'Error listing vector stores');\n }\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const UPSERT_VECTORS_ROUTE = createRoute({\n method: 'POST',\n path: '/vector/:vectorName/upsert',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n bodySchema: upsertVectorsBodySchema,\n responseSchema: upsertVectorsResponseSchema,\n summary: 'Upsert vectors',\n description: 'Inserts or updates vectors in the specified index',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, ...params }) => {\n try {\n const { indexName, vectors, metadata, ids } = params;\n\n if (!indexName || !vectors || !Array.isArray(vectors)) {\n throw new HTTPException(400, { message: 'Invalid request index. indexName and vectors array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const result = await vector.upsert({ indexName, vectors, metadata, ids });\n return { ids: result };\n } catch (error) {\n return handleError(error, 'Error upserting vectors');\n }\n },\n});\n\nexport const CREATE_INDEX_ROUTE = createRoute({\n method: 'POST',\n path: '/vector/:vectorName/create-index',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n bodySchema: createIndexBodySchema,\n responseSchema: createIndexResponseSchema,\n summary: 'Create index',\n description: 'Creates a new vector index with the specified dimension and metric',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, ...params }) => {\n try {\n const { indexName, dimension, metric } = params;\n\n if (!indexName || typeof dimension !== 'number' || dimension <= 0) {\n throw new HTTPException(400, {\n message: 'Invalid request index, indexName and positive dimension number are required.',\n });\n }\n\n if (metric && !['cosine', 'euclidean', 'dotproduct'].includes(metric)) {\n throw new HTTPException(400, { message: 'Invalid metric. Must be one of: cosine, euclidean, dotproduct' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.createIndex({ indexName, dimension, metric });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error creating index');\n }\n },\n});\n\nexport const QUERY_VECTORS_ROUTE = createRoute({\n method: 'POST',\n path: '/vector/:vectorName/query',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n bodySchema: queryVectorsBodySchema,\n responseSchema: queryVectorsResponseSchema,\n summary: 'Query vectors',\n description: 'Performs a similarity search on the vector index',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, ...params }) => {\n try {\n const { indexName, queryVector, topK, filter, includeVector } = params;\n\n if (!indexName || !queryVector || !Array.isArray(queryVector)) {\n throw new HTTPException(400, {\n message: 'Invalid request query. indexName and queryVector array are required.',\n });\n }\n\n const vector = getVector(mastra, vectorName);\n const results: QueryResult[] = await vector.query({\n indexName,\n queryVector,\n topK,\n // Body schema is intentionally permissive; the store validates the filter shape.\n filter: filter as VectorFilter,\n includeVector,\n });\n return results;\n } catch (error) {\n return handleError(error, 'Error querying vectors');\n }\n },\n});\n\nexport const LIST_INDEXES_ROUTE = createRoute({\n method: 'GET',\n path: '/vector/:vectorName/indexes',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n responseSchema: listIndexesResponseSchema,\n summary: 'List indexes',\n description: 'Returns a list of all indexes in the vector store',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName }) => {\n try {\n const vector = getVector(mastra, vectorName);\n const indexes = await vector.listIndexes();\n return indexes.filter(Boolean);\n } catch (error) {\n return handleError(error, 'Error listing indexes');\n }\n },\n});\n\nexport const DESCRIBE_INDEX_ROUTE = createRoute({\n method: 'GET',\n path: '/vector/:vectorName/indexes/:indexName',\n responseType: 'json',\n pathParamSchema: vectorIndexPathParams,\n responseSchema: describeIndexResponseSchema,\n summary: 'Describe index',\n description: 'Returns statistics and metadata for a specific index',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, indexName }) => {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n const stats: IndexStats = await vector.describeIndex({ indexName: indexName });\n\n return {\n dimension: stats.dimension,\n count: stats.count,\n metric: stats.metric?.toLowerCase(),\n };\n } catch (error) {\n return handleError(error, 'Error describing index');\n }\n },\n});\n\nexport const DELETE_INDEX_ROUTE = createRoute({\n method: 'DELETE',\n path: '/vector/:vectorName/indexes/:indexName',\n responseType: 'json',\n pathParamSchema: vectorIndexPathParams,\n responseSchema: deleteIndexResponseSchema,\n summary: 'Delete index',\n description: 'Deletes a vector index and all its data',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, indexName }) => {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.deleteIndex({ indexName: indexName });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error deleting index');\n }\n },\n});\n\nexport const LIST_VECTORS_ROUTE = createRoute({\n method: 'GET',\n path: '/vectors',\n responseType: 'json',\n responseSchema: listVectorsResponseSchema,\n summary: 'List vector stores',\n description: 'Returns a list of all configured vector stores',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const vectors = mastra.listVectors();\n if (!vectors) {\n return { vectors: [] };\n }\n\n // Convert to array and extract metadata\n const vectorList = Object.entries(vectors).map(([name, vector]) => ({\n id: vector.id || name, // Use the key as the ID since vectors might not have their own id property\n name,\n type: vector.constructor.name,\n }));\n\n return { vectors: vectorList };\n } catch (error) {\n return handleError(error, 'Error listing vector stores');\n }\n },\n});\n\nexport const LIST_EMBEDDERS_ROUTE = createRoute({\n method: 'GET',\n path: '/embedders',\n responseType: 'json',\n responseSchema: listEmbeddersResponseSchema,\n summary: 'List available embedder models',\n description: 'Returns a list of all available embedding models',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async () => {\n try {\n const embeddersList = EMBEDDING_MODELS.map(model => ({\n id: `${model.provider}/${model.id}`,\n provider: model.provider,\n name: model.id,\n description: model.description || '',\n dimensions: model.dimensions,\n maxInputTokens: model.maxInputTokens,\n }));\n\n return { embedders: embeddersList };\n } catch (error) {\n return handleError(error, 'Error listing embedders');\n }\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vector-BAs5o6mH.js","names":[],"sources":["../src/server/handlers/vector.ts"],"sourcesContent":["import { EMBEDDING_MODELS } from '@mastra/core/llm';\nimport type { MastraVector, QueryResult, IndexStats, VectorFilter } from '@mastra/core/vector';\nimport { HTTPException } from '../http-exception';\nimport {\n vectorNamePathParams,\n vectorIndexPathParams,\n upsertVectorsBodySchema,\n upsertVectorsResponseSchema,\n createIndexBodySchema,\n createIndexResponseSchema,\n queryVectorsBodySchema,\n queryVectorsResponseSchema,\n listIndexesResponseSchema,\n describeIndexResponseSchema,\n deleteIndexResponseSchema,\n listVectorsResponseSchema,\n listEmbeddersResponseSchema,\n} from '../schemas/vectors';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\n\nimport { handleError } from './error';\n\ninterface VectorContext extends Context {\n vectorName?: string;\n}\n\ninterface UpsertRequest {\n indexName: string;\n vectors: number[][];\n metadata?: Record<string, any>[];\n ids?: string[];\n}\n\ninterface CreateIndexRequest {\n indexName: string;\n dimension: number;\n metric?: 'cosine' | 'euclidean' | 'dotproduct';\n}\n\ninterface QueryRequest {\n indexName: string;\n queryVector: number[];\n topK?: number;\n filter?: Record<string, any>;\n includeVector?: boolean;\n}\n\nfunction getVector(mastra: Context['mastra'], vectorName?: string): MastraVector {\n if (!vectorName) {\n throw new HTTPException(400, { message: 'Vector name is required' });\n }\n\n const vector = mastra.getVector(vectorName);\n if (!vector) {\n throw new HTTPException(404, { message: `Vector store ${vectorName} not found` });\n }\n\n return vector;\n}\n\n// Upsert vectors\nexport async function upsertVectors({\n mastra,\n vectorName,\n indexName,\n vectors,\n metadata,\n ids,\n}: VectorContext & UpsertRequest) {\n try {\n if (!indexName || !vectors || !Array.isArray(vectors)) {\n throw new HTTPException(400, { message: 'Invalid request index. indexName and vectors array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const result = await vector.upsert({ indexName, vectors, metadata, ids });\n return { ids: result };\n } catch (error) {\n return handleError(error, 'Error upserting vectors');\n }\n}\n\n// Create index\nexport async function createIndex({\n mastra,\n vectorName,\n indexName,\n dimension,\n metric,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & CreateIndexRequest) {\n try {\n if (!indexName || typeof dimension !== 'number' || dimension <= 0) {\n throw new HTTPException(400, {\n message: 'Invalid request index, indexName and positive dimension number are required.',\n });\n }\n\n if (metric && !['cosine', 'euclidean', 'dotproduct'].includes(metric)) {\n throw new HTTPException(400, { message: 'Invalid metric. Must be one of: cosine, euclidean, dotproduct' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.createIndex({ indexName, dimension, metric });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error creating index');\n }\n}\n\n// Query vectors\nexport async function queryVectors({\n mastra,\n vectorName,\n indexName,\n queryVector,\n topK,\n filter,\n includeVector,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & QueryRequest) {\n try {\n if (!indexName || !queryVector || !Array.isArray(queryVector)) {\n throw new HTTPException(400, { message: 'Invalid request query. indexName and queryVector array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const results: QueryResult[] = await vector.query({ indexName, queryVector, topK, filter, includeVector });\n return results;\n } catch (error) {\n return handleError(error, 'Error querying vectors');\n }\n}\n\n// List indexes\nexport async function listIndexes({ mastra, vectorName }: Pick<VectorContext, 'mastra' | 'vectorName'>) {\n try {\n const vector = getVector(mastra, vectorName);\n\n const indexes = await vector.listIndexes();\n return indexes.filter(Boolean);\n } catch (error) {\n return handleError(error, 'Error listing indexes');\n }\n}\n\n// Describe index\nexport async function describeIndex({\n mastra,\n vectorName,\n indexName,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & { indexName?: string }) {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n const stats: IndexStats = await vector.describeIndex({ indexName });\n\n return {\n dimension: stats.dimension,\n count: stats.count,\n metric: stats.metric?.toLowerCase(),\n };\n } catch (error) {\n return handleError(error, 'Error describing index');\n }\n}\n\n// Delete index\nexport async function deleteIndex({\n mastra,\n vectorName,\n indexName,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & { indexName?: string }) {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.deleteIndex({ indexName });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error deleting index');\n }\n}\n\n// List available vector stores\nexport async function listVectorStores({ mastra }: Pick<VectorContext, 'mastra'>) {\n try {\n const vectors = mastra.listVectors();\n if (!vectors) {\n return { vectors: [] };\n }\n\n // Convert to array and extract metadata\n const vectorList = Object.entries(vectors).map(([name, vector]) => ({\n name,\n id: vector.id || name, // Use the key as fallback when vector has no id property\n type: vector.constructor.name,\n // Add any other metadata that might be useful\n }));\n\n return { vectors: vectorList };\n } catch (error) {\n return handleError(error, 'Error listing vector stores');\n }\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const UPSERT_VECTORS_ROUTE = createRoute({\n method: 'POST',\n path: '/vector/:vectorName/upsert',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n bodySchema: upsertVectorsBodySchema,\n responseSchema: upsertVectorsResponseSchema,\n summary: 'Upsert vectors',\n description: 'Inserts or updates vectors in the specified index',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, ...params }) => {\n try {\n const { indexName, vectors, metadata, ids } = params;\n\n if (!indexName || !vectors || !Array.isArray(vectors)) {\n throw new HTTPException(400, { message: 'Invalid request index. indexName and vectors array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const result = await vector.upsert({ indexName, vectors, metadata, ids });\n return { ids: result };\n } catch (error) {\n return handleError(error, 'Error upserting vectors');\n }\n },\n});\n\nexport const CREATE_INDEX_ROUTE = createRoute({\n method: 'POST',\n path: '/vector/:vectorName/create-index',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n bodySchema: createIndexBodySchema,\n responseSchema: createIndexResponseSchema,\n summary: 'Create index',\n description: 'Creates a new vector index with the specified dimension and metric',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, ...params }) => {\n try {\n const { indexName, dimension, metric } = params;\n\n if (!indexName || typeof dimension !== 'number' || dimension <= 0) {\n throw new HTTPException(400, {\n message: 'Invalid request index, indexName and positive dimension number are required.',\n });\n }\n\n if (metric && !['cosine', 'euclidean', 'dotproduct'].includes(metric)) {\n throw new HTTPException(400, { message: 'Invalid metric. Must be one of: cosine, euclidean, dotproduct' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.createIndex({ indexName, dimension, metric });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error creating index');\n }\n },\n});\n\nexport const QUERY_VECTORS_ROUTE = createRoute({\n method: 'POST',\n path: '/vector/:vectorName/query',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n bodySchema: queryVectorsBodySchema,\n responseSchema: queryVectorsResponseSchema,\n summary: 'Query vectors',\n description: 'Performs a similarity search on the vector index',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, ...params }) => {\n try {\n const { indexName, queryVector, topK, filter, includeVector } = params;\n\n if (!indexName || !queryVector || !Array.isArray(queryVector)) {\n throw new HTTPException(400, {\n message: 'Invalid request query. indexName and queryVector array are required.',\n });\n }\n\n const vector = getVector(mastra, vectorName);\n const results: QueryResult[] = await vector.query({\n indexName,\n queryVector,\n topK,\n // Body schema is intentionally permissive; the store validates the filter shape.\n filter: filter as VectorFilter,\n includeVector,\n });\n return results;\n } catch (error) {\n return handleError(error, 'Error querying vectors');\n }\n },\n});\n\nexport const LIST_INDEXES_ROUTE = createRoute({\n method: 'GET',\n path: '/vector/:vectorName/indexes',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n responseSchema: listIndexesResponseSchema,\n summary: 'List indexes',\n description: 'Returns a list of all indexes in the vector store',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName }) => {\n try {\n const vector = getVector(mastra, vectorName);\n const indexes = await vector.listIndexes();\n return indexes.filter(Boolean);\n } catch (error) {\n return handleError(error, 'Error listing indexes');\n }\n },\n});\n\nexport const DESCRIBE_INDEX_ROUTE = createRoute({\n method: 'GET',\n path: '/vector/:vectorName/indexes/:indexName',\n responseType: 'json',\n pathParamSchema: vectorIndexPathParams,\n responseSchema: describeIndexResponseSchema,\n summary: 'Describe index',\n description: 'Returns statistics and metadata for a specific index',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, indexName }) => {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n const stats: IndexStats = await vector.describeIndex({ indexName: indexName });\n\n return {\n dimension: stats.dimension,\n count: stats.count,\n metric: stats.metric?.toLowerCase(),\n };\n } catch (error) {\n return handleError(error, 'Error describing index');\n }\n },\n});\n\nexport const DELETE_INDEX_ROUTE = createRoute({\n method: 'DELETE',\n path: '/vector/:vectorName/indexes/:indexName',\n responseType: 'json',\n pathParamSchema: vectorIndexPathParams,\n responseSchema: deleteIndexResponseSchema,\n summary: 'Delete index',\n description: 'Deletes a vector index and all its data',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, indexName }) => {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.deleteIndex({ indexName: indexName });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error deleting index');\n }\n },\n});\n\nexport const LIST_VECTORS_ROUTE = createRoute({\n method: 'GET',\n path: '/vectors',\n responseType: 'json',\n responseSchema: listVectorsResponseSchema,\n summary: 'List vector stores',\n description: 'Returns a list of all configured vector stores',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const vectors = mastra.listVectors();\n if (!vectors) {\n return { vectors: [] };\n }\n\n // Convert to array and extract metadata\n const vectorList = Object.entries(vectors).map(([name, vector]) => ({\n id: vector.id || name, // Use the key as the ID since vectors might not have their own id property\n name,\n type: vector.constructor.name,\n }));\n\n return { vectors: vectorList };\n } catch (error) {\n return handleError(error, 'Error listing vector stores');\n }\n },\n});\n\nexport const LIST_EMBEDDERS_ROUTE = createRoute({\n method: 'GET',\n path: '/embedders',\n responseType: 'json',\n responseSchema: listEmbeddersResponseSchema,\n summary: 'List available embedder models',\n description: 'Returns a list of all available embedding models',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async () => {\n try {\n const embeddersList = EMBEDDING_MODELS.map(model => ({\n id: `${model.provider}/${model.id}`,\n provider: model.provider,\n name: model.id,\n description: model.description || '',\n dimensions: model.dimensions,\n maxInputTokens: model.maxInputTokens,\n }));\n\n return { embedders: embeddersList };\n } catch (error) {\n return handleError(error, 'Error listing embedders');\n }\n },\n});\n"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ const require_rolldown_runtime = require("./rolldown-runtime-10nMEhjP.cjs");
|
|
|
2
2
|
const require_http_exception = require("./http-exception-Co3MbFUf.cjs");
|
|
3
3
|
const require_route_builder = require("./route-builder-CvARmqnA.cjs");
|
|
4
4
|
const require_server_handlers_error = require("./server/handlers/error.cjs");
|
|
5
|
-
const require_vectors = require("./vectors-
|
|
5
|
+
const require_vectors = require("./vectors-CPSofSCf.cjs");
|
|
6
6
|
let _mastra_core_llm = require("@mastra/core/llm");
|
|
7
7
|
// src/server/handlers/vector.ts
|
|
8
8
|
var vector_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
|
|
@@ -405,4 +405,4 @@ Object.defineProperty(exports, "vector_exports", {
|
|
|
405
405
|
}
|
|
406
406
|
});
|
|
407
407
|
|
|
408
|
-
//# sourceMappingURL=vector-
|
|
408
|
+
//# sourceMappingURL=vector-BZ1bKtwM.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-IxK1t4Cb.cjs","names":["HTTPException","handleError","createRoute","vectorNamePathParams","upsertVectorsBodySchema","upsertVectorsResponseSchema","createIndexBodySchema","createIndexResponseSchema","queryVectorsBodySchema","queryVectorsResponseSchema","listIndexesResponseSchema","vectorIndexPathParams","describeIndexResponseSchema","deleteIndexResponseSchema","listVectorsResponseSchema","listEmbeddersResponseSchema","EMBEDDING_MODELS"],"sources":["../src/server/handlers/vector.ts"],"sourcesContent":["import { EMBEDDING_MODELS } from '@mastra/core/llm';\nimport type { MastraVector, QueryResult, IndexStats, VectorFilter } from '@mastra/core/vector';\nimport { HTTPException } from '../http-exception';\nimport {\n vectorNamePathParams,\n vectorIndexPathParams,\n upsertVectorsBodySchema,\n upsertVectorsResponseSchema,\n createIndexBodySchema,\n createIndexResponseSchema,\n queryVectorsBodySchema,\n queryVectorsResponseSchema,\n listIndexesResponseSchema,\n describeIndexResponseSchema,\n deleteIndexResponseSchema,\n listVectorsResponseSchema,\n listEmbeddersResponseSchema,\n} from '../schemas/vectors';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\n\nimport { handleError } from './error';\n\ninterface VectorContext extends Context {\n vectorName?: string;\n}\n\ninterface UpsertRequest {\n indexName: string;\n vectors: number[][];\n metadata?: Record<string, any>[];\n ids?: string[];\n}\n\ninterface CreateIndexRequest {\n indexName: string;\n dimension: number;\n metric?: 'cosine' | 'euclidean' | 'dotproduct';\n}\n\ninterface QueryRequest {\n indexName: string;\n queryVector: number[];\n topK?: number;\n filter?: Record<string, any>;\n includeVector?: boolean;\n}\n\nfunction getVector(mastra: Context['mastra'], vectorName?: string): MastraVector {\n if (!vectorName) {\n throw new HTTPException(400, { message: 'Vector name is required' });\n }\n\n const vector = mastra.getVector(vectorName);\n if (!vector) {\n throw new HTTPException(404, { message: `Vector store ${vectorName} not found` });\n }\n\n return vector;\n}\n\n// Upsert vectors\nexport async function upsertVectors({\n mastra,\n vectorName,\n indexName,\n vectors,\n metadata,\n ids,\n}: VectorContext & UpsertRequest) {\n try {\n if (!indexName || !vectors || !Array.isArray(vectors)) {\n throw new HTTPException(400, { message: 'Invalid request index. indexName and vectors array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const result = await vector.upsert({ indexName, vectors, metadata, ids });\n return { ids: result };\n } catch (error) {\n return handleError(error, 'Error upserting vectors');\n }\n}\n\n// Create index\nexport async function createIndex({\n mastra,\n vectorName,\n indexName,\n dimension,\n metric,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & CreateIndexRequest) {\n try {\n if (!indexName || typeof dimension !== 'number' || dimension <= 0) {\n throw new HTTPException(400, {\n message: 'Invalid request index, indexName and positive dimension number are required.',\n });\n }\n\n if (metric && !['cosine', 'euclidean', 'dotproduct'].includes(metric)) {\n throw new HTTPException(400, { message: 'Invalid metric. Must be one of: cosine, euclidean, dotproduct' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.createIndex({ indexName, dimension, metric });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error creating index');\n }\n}\n\n// Query vectors\nexport async function queryVectors({\n mastra,\n vectorName,\n indexName,\n queryVector,\n topK,\n filter,\n includeVector,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & QueryRequest) {\n try {\n if (!indexName || !queryVector || !Array.isArray(queryVector)) {\n throw new HTTPException(400, { message: 'Invalid request query. indexName and queryVector array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const results: QueryResult[] = await vector.query({ indexName, queryVector, topK, filter, includeVector });\n return results;\n } catch (error) {\n return handleError(error, 'Error querying vectors');\n }\n}\n\n// List indexes\nexport async function listIndexes({ mastra, vectorName }: Pick<VectorContext, 'mastra' | 'vectorName'>) {\n try {\n const vector = getVector(mastra, vectorName);\n\n const indexes = await vector.listIndexes();\n return indexes.filter(Boolean);\n } catch (error) {\n return handleError(error, 'Error listing indexes');\n }\n}\n\n// Describe index\nexport async function describeIndex({\n mastra,\n vectorName,\n indexName,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & { indexName?: string }) {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n const stats: IndexStats = await vector.describeIndex({ indexName });\n\n return {\n dimension: stats.dimension,\n count: stats.count,\n metric: stats.metric?.toLowerCase(),\n };\n } catch (error) {\n return handleError(error, 'Error describing index');\n }\n}\n\n// Delete index\nexport async function deleteIndex({\n mastra,\n vectorName,\n indexName,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & { indexName?: string }) {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.deleteIndex({ indexName });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error deleting index');\n }\n}\n\n// List available vector stores\nexport async function listVectorStores({ mastra }: Pick<VectorContext, 'mastra'>) {\n try {\n const vectors = mastra.listVectors();\n if (!vectors) {\n return { vectors: [] };\n }\n\n // Convert to array and extract metadata\n const vectorList = Object.entries(vectors).map(([name, vector]) => ({\n name,\n id: vector.id || name, // Use the key as fallback when vector has no id property\n type: vector.constructor.name,\n // Add any other metadata that might be useful\n }));\n\n return { vectors: vectorList };\n } catch (error) {\n return handleError(error, 'Error listing vector stores');\n }\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const UPSERT_VECTORS_ROUTE = createRoute({\n method: 'POST',\n path: '/vector/:vectorName/upsert',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n bodySchema: upsertVectorsBodySchema,\n responseSchema: upsertVectorsResponseSchema,\n summary: 'Upsert vectors',\n description: 'Inserts or updates vectors in the specified index',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, ...params }) => {\n try {\n const { indexName, vectors, metadata, ids } = params;\n\n if (!indexName || !vectors || !Array.isArray(vectors)) {\n throw new HTTPException(400, { message: 'Invalid request index. indexName and vectors array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const result = await vector.upsert({ indexName, vectors, metadata, ids });\n return { ids: result };\n } catch (error) {\n return handleError(error, 'Error upserting vectors');\n }\n },\n});\n\nexport const CREATE_INDEX_ROUTE = createRoute({\n method: 'POST',\n path: '/vector/:vectorName/create-index',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n bodySchema: createIndexBodySchema,\n responseSchema: createIndexResponseSchema,\n summary: 'Create index',\n description: 'Creates a new vector index with the specified dimension and metric',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, ...params }) => {\n try {\n const { indexName, dimension, metric } = params;\n\n if (!indexName || typeof dimension !== 'number' || dimension <= 0) {\n throw new HTTPException(400, {\n message: 'Invalid request index, indexName and positive dimension number are required.',\n });\n }\n\n if (metric && !['cosine', 'euclidean', 'dotproduct'].includes(metric)) {\n throw new HTTPException(400, { message: 'Invalid metric. Must be one of: cosine, euclidean, dotproduct' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.createIndex({ indexName, dimension, metric });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error creating index');\n }\n },\n});\n\nexport const QUERY_VECTORS_ROUTE = createRoute({\n method: 'POST',\n path: '/vector/:vectorName/query',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n bodySchema: queryVectorsBodySchema,\n responseSchema: queryVectorsResponseSchema,\n summary: 'Query vectors',\n description: 'Performs a similarity search on the vector index',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, ...params }) => {\n try {\n const { indexName, queryVector, topK, filter, includeVector } = params;\n\n if (!indexName || !queryVector || !Array.isArray(queryVector)) {\n throw new HTTPException(400, {\n message: 'Invalid request query. indexName and queryVector array are required.',\n });\n }\n\n const vector = getVector(mastra, vectorName);\n const results: QueryResult[] = await vector.query({\n indexName,\n queryVector,\n topK,\n // Body schema is intentionally permissive; the store validates the filter shape.\n filter: filter as VectorFilter,\n includeVector,\n });\n return results;\n } catch (error) {\n return handleError(error, 'Error querying vectors');\n }\n },\n});\n\nexport const LIST_INDEXES_ROUTE = createRoute({\n method: 'GET',\n path: '/vector/:vectorName/indexes',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n responseSchema: listIndexesResponseSchema,\n summary: 'List indexes',\n description: 'Returns a list of all indexes in the vector store',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName }) => {\n try {\n const vector = getVector(mastra, vectorName);\n const indexes = await vector.listIndexes();\n return indexes.filter(Boolean);\n } catch (error) {\n return handleError(error, 'Error listing indexes');\n }\n },\n});\n\nexport const DESCRIBE_INDEX_ROUTE = createRoute({\n method: 'GET',\n path: '/vector/:vectorName/indexes/:indexName',\n responseType: 'json',\n pathParamSchema: vectorIndexPathParams,\n responseSchema: describeIndexResponseSchema,\n summary: 'Describe index',\n description: 'Returns statistics and metadata for a specific index',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, indexName }) => {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n const stats: IndexStats = await vector.describeIndex({ indexName: indexName });\n\n return {\n dimension: stats.dimension,\n count: stats.count,\n metric: stats.metric?.toLowerCase(),\n };\n } catch (error) {\n return handleError(error, 'Error describing index');\n }\n },\n});\n\nexport const DELETE_INDEX_ROUTE = createRoute({\n method: 'DELETE',\n path: '/vector/:vectorName/indexes/:indexName',\n responseType: 'json',\n pathParamSchema: vectorIndexPathParams,\n responseSchema: deleteIndexResponseSchema,\n summary: 'Delete index',\n description: 'Deletes a vector index and all its data',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, indexName }) => {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.deleteIndex({ indexName: indexName });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error deleting index');\n }\n },\n});\n\nexport const LIST_VECTORS_ROUTE = createRoute({\n method: 'GET',\n path: '/vectors',\n responseType: 'json',\n responseSchema: listVectorsResponseSchema,\n summary: 'List vector stores',\n description: 'Returns a list of all configured vector stores',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const vectors = mastra.listVectors();\n if (!vectors) {\n return { vectors: [] };\n }\n\n // Convert to array and extract metadata\n const vectorList = Object.entries(vectors).map(([name, vector]) => ({\n id: vector.id || name, // Use the key as the ID since vectors might not have their own id property\n name,\n type: vector.constructor.name,\n }));\n\n return { vectors: vectorList };\n } catch (error) {\n return handleError(error, 'Error listing vector stores');\n }\n },\n});\n\nexport const LIST_EMBEDDERS_ROUTE = createRoute({\n method: 'GET',\n path: '/embedders',\n responseType: 'json',\n responseSchema: listEmbeddersResponseSchema,\n summary: 'List available embedder models',\n description: 'Returns a list of all available embedding models',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async () => {\n try {\n const embeddersList = EMBEDDING_MODELS.map(model => ({\n id: `${model.provider}/${model.id}`,\n provider: model.provider,\n name: model.id,\n description: model.description || '',\n dimensions: model.dimensions,\n maxInputTokens: model.maxInputTokens,\n }));\n\n return { embedders: embeddersList };\n } catch (error) {\n return handleError(error, 'Error listing embedders');\n }\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vector-BZ1bKtwM.cjs","names":["HTTPException","handleError","createRoute","vectorNamePathParams","upsertVectorsBodySchema","upsertVectorsResponseSchema","createIndexBodySchema","createIndexResponseSchema","queryVectorsBodySchema","queryVectorsResponseSchema","listIndexesResponseSchema","vectorIndexPathParams","describeIndexResponseSchema","deleteIndexResponseSchema","listVectorsResponseSchema","listEmbeddersResponseSchema","EMBEDDING_MODELS"],"sources":["../src/server/handlers/vector.ts"],"sourcesContent":["import { EMBEDDING_MODELS } from '@mastra/core/llm';\nimport type { MastraVector, QueryResult, IndexStats, VectorFilter } from '@mastra/core/vector';\nimport { HTTPException } from '../http-exception';\nimport {\n vectorNamePathParams,\n vectorIndexPathParams,\n upsertVectorsBodySchema,\n upsertVectorsResponseSchema,\n createIndexBodySchema,\n createIndexResponseSchema,\n queryVectorsBodySchema,\n queryVectorsResponseSchema,\n listIndexesResponseSchema,\n describeIndexResponseSchema,\n deleteIndexResponseSchema,\n listVectorsResponseSchema,\n listEmbeddersResponseSchema,\n} from '../schemas/vectors';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\n\nimport { handleError } from './error';\n\ninterface VectorContext extends Context {\n vectorName?: string;\n}\n\ninterface UpsertRequest {\n indexName: string;\n vectors: number[][];\n metadata?: Record<string, any>[];\n ids?: string[];\n}\n\ninterface CreateIndexRequest {\n indexName: string;\n dimension: number;\n metric?: 'cosine' | 'euclidean' | 'dotproduct';\n}\n\ninterface QueryRequest {\n indexName: string;\n queryVector: number[];\n topK?: number;\n filter?: Record<string, any>;\n includeVector?: boolean;\n}\n\nfunction getVector(mastra: Context['mastra'], vectorName?: string): MastraVector {\n if (!vectorName) {\n throw new HTTPException(400, { message: 'Vector name is required' });\n }\n\n const vector = mastra.getVector(vectorName);\n if (!vector) {\n throw new HTTPException(404, { message: `Vector store ${vectorName} not found` });\n }\n\n return vector;\n}\n\n// Upsert vectors\nexport async function upsertVectors({\n mastra,\n vectorName,\n indexName,\n vectors,\n metadata,\n ids,\n}: VectorContext & UpsertRequest) {\n try {\n if (!indexName || !vectors || !Array.isArray(vectors)) {\n throw new HTTPException(400, { message: 'Invalid request index. indexName and vectors array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const result = await vector.upsert({ indexName, vectors, metadata, ids });\n return { ids: result };\n } catch (error) {\n return handleError(error, 'Error upserting vectors');\n }\n}\n\n// Create index\nexport async function createIndex({\n mastra,\n vectorName,\n indexName,\n dimension,\n metric,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & CreateIndexRequest) {\n try {\n if (!indexName || typeof dimension !== 'number' || dimension <= 0) {\n throw new HTTPException(400, {\n message: 'Invalid request index, indexName and positive dimension number are required.',\n });\n }\n\n if (metric && !['cosine', 'euclidean', 'dotproduct'].includes(metric)) {\n throw new HTTPException(400, { message: 'Invalid metric. Must be one of: cosine, euclidean, dotproduct' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.createIndex({ indexName, dimension, metric });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error creating index');\n }\n}\n\n// Query vectors\nexport async function queryVectors({\n mastra,\n vectorName,\n indexName,\n queryVector,\n topK,\n filter,\n includeVector,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & QueryRequest) {\n try {\n if (!indexName || !queryVector || !Array.isArray(queryVector)) {\n throw new HTTPException(400, { message: 'Invalid request query. indexName and queryVector array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const results: QueryResult[] = await vector.query({ indexName, queryVector, topK, filter, includeVector });\n return results;\n } catch (error) {\n return handleError(error, 'Error querying vectors');\n }\n}\n\n// List indexes\nexport async function listIndexes({ mastra, vectorName }: Pick<VectorContext, 'mastra' | 'vectorName'>) {\n try {\n const vector = getVector(mastra, vectorName);\n\n const indexes = await vector.listIndexes();\n return indexes.filter(Boolean);\n } catch (error) {\n return handleError(error, 'Error listing indexes');\n }\n}\n\n// Describe index\nexport async function describeIndex({\n mastra,\n vectorName,\n indexName,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & { indexName?: string }) {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n const stats: IndexStats = await vector.describeIndex({ indexName });\n\n return {\n dimension: stats.dimension,\n count: stats.count,\n metric: stats.metric?.toLowerCase(),\n };\n } catch (error) {\n return handleError(error, 'Error describing index');\n }\n}\n\n// Delete index\nexport async function deleteIndex({\n mastra,\n vectorName,\n indexName,\n}: Pick<VectorContext, 'mastra' | 'vectorName'> & { indexName?: string }) {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.deleteIndex({ indexName });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error deleting index');\n }\n}\n\n// List available vector stores\nexport async function listVectorStores({ mastra }: Pick<VectorContext, 'mastra'>) {\n try {\n const vectors = mastra.listVectors();\n if (!vectors) {\n return { vectors: [] };\n }\n\n // Convert to array and extract metadata\n const vectorList = Object.entries(vectors).map(([name, vector]) => ({\n name,\n id: vector.id || name, // Use the key as fallback when vector has no id property\n type: vector.constructor.name,\n // Add any other metadata that might be useful\n }));\n\n return { vectors: vectorList };\n } catch (error) {\n return handleError(error, 'Error listing vector stores');\n }\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const UPSERT_VECTORS_ROUTE = createRoute({\n method: 'POST',\n path: '/vector/:vectorName/upsert',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n bodySchema: upsertVectorsBodySchema,\n responseSchema: upsertVectorsResponseSchema,\n summary: 'Upsert vectors',\n description: 'Inserts or updates vectors in the specified index',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, ...params }) => {\n try {\n const { indexName, vectors, metadata, ids } = params;\n\n if (!indexName || !vectors || !Array.isArray(vectors)) {\n throw new HTTPException(400, { message: 'Invalid request index. indexName and vectors array are required.' });\n }\n\n const vector = getVector(mastra, vectorName);\n const result = await vector.upsert({ indexName, vectors, metadata, ids });\n return { ids: result };\n } catch (error) {\n return handleError(error, 'Error upserting vectors');\n }\n },\n});\n\nexport const CREATE_INDEX_ROUTE = createRoute({\n method: 'POST',\n path: '/vector/:vectorName/create-index',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n bodySchema: createIndexBodySchema,\n responseSchema: createIndexResponseSchema,\n summary: 'Create index',\n description: 'Creates a new vector index with the specified dimension and metric',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, ...params }) => {\n try {\n const { indexName, dimension, metric } = params;\n\n if (!indexName || typeof dimension !== 'number' || dimension <= 0) {\n throw new HTTPException(400, {\n message: 'Invalid request index, indexName and positive dimension number are required.',\n });\n }\n\n if (metric && !['cosine', 'euclidean', 'dotproduct'].includes(metric)) {\n throw new HTTPException(400, { message: 'Invalid metric. Must be one of: cosine, euclidean, dotproduct' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.createIndex({ indexName, dimension, metric });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error creating index');\n }\n },\n});\n\nexport const QUERY_VECTORS_ROUTE = createRoute({\n method: 'POST',\n path: '/vector/:vectorName/query',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n bodySchema: queryVectorsBodySchema,\n responseSchema: queryVectorsResponseSchema,\n summary: 'Query vectors',\n description: 'Performs a similarity search on the vector index',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, ...params }) => {\n try {\n const { indexName, queryVector, topK, filter, includeVector } = params;\n\n if (!indexName || !queryVector || !Array.isArray(queryVector)) {\n throw new HTTPException(400, {\n message: 'Invalid request query. indexName and queryVector array are required.',\n });\n }\n\n const vector = getVector(mastra, vectorName);\n const results: QueryResult[] = await vector.query({\n indexName,\n queryVector,\n topK,\n // Body schema is intentionally permissive; the store validates the filter shape.\n filter: filter as VectorFilter,\n includeVector,\n });\n return results;\n } catch (error) {\n return handleError(error, 'Error querying vectors');\n }\n },\n});\n\nexport const LIST_INDEXES_ROUTE = createRoute({\n method: 'GET',\n path: '/vector/:vectorName/indexes',\n responseType: 'json',\n pathParamSchema: vectorNamePathParams,\n responseSchema: listIndexesResponseSchema,\n summary: 'List indexes',\n description: 'Returns a list of all indexes in the vector store',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName }) => {\n try {\n const vector = getVector(mastra, vectorName);\n const indexes = await vector.listIndexes();\n return indexes.filter(Boolean);\n } catch (error) {\n return handleError(error, 'Error listing indexes');\n }\n },\n});\n\nexport const DESCRIBE_INDEX_ROUTE = createRoute({\n method: 'GET',\n path: '/vector/:vectorName/indexes/:indexName',\n responseType: 'json',\n pathParamSchema: vectorIndexPathParams,\n responseSchema: describeIndexResponseSchema,\n summary: 'Describe index',\n description: 'Returns statistics and metadata for a specific index',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, indexName }) => {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n const stats: IndexStats = await vector.describeIndex({ indexName: indexName });\n\n return {\n dimension: stats.dimension,\n count: stats.count,\n metric: stats.metric?.toLowerCase(),\n };\n } catch (error) {\n return handleError(error, 'Error describing index');\n }\n },\n});\n\nexport const DELETE_INDEX_ROUTE = createRoute({\n method: 'DELETE',\n path: '/vector/:vectorName/indexes/:indexName',\n responseType: 'json',\n pathParamSchema: vectorIndexPathParams,\n responseSchema: deleteIndexResponseSchema,\n summary: 'Delete index',\n description: 'Deletes a vector index and all its data',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra, vectorName, indexName }) => {\n try {\n if (!indexName) {\n throw new HTTPException(400, { message: 'Index name is required' });\n }\n\n const vector = getVector(mastra, vectorName);\n await vector.deleteIndex({ indexName: indexName });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error deleting index');\n }\n },\n});\n\nexport const LIST_VECTORS_ROUTE = createRoute({\n method: 'GET',\n path: '/vectors',\n responseType: 'json',\n responseSchema: listVectorsResponseSchema,\n summary: 'List vector stores',\n description: 'Returns a list of all configured vector stores',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const vectors = mastra.listVectors();\n if (!vectors) {\n return { vectors: [] };\n }\n\n // Convert to array and extract metadata\n const vectorList = Object.entries(vectors).map(([name, vector]) => ({\n id: vector.id || name, // Use the key as the ID since vectors might not have their own id property\n name,\n type: vector.constructor.name,\n }));\n\n return { vectors: vectorList };\n } catch (error) {\n return handleError(error, 'Error listing vector stores');\n }\n },\n});\n\nexport const LIST_EMBEDDERS_ROUTE = createRoute({\n method: 'GET',\n path: '/embedders',\n responseType: 'json',\n responseSchema: listEmbeddersResponseSchema,\n summary: 'List available embedder models',\n description: 'Returns a list of all available embedding models',\n tags: ['Vectors'],\n requiresAuth: true,\n handler: async () => {\n try {\n const embeddersList = EMBEDDING_MODELS.map(model => ({\n id: `${model.provider}/${model.id}`,\n provider: model.provider,\n name: model.id,\n description: model.description || '',\n dimensions: model.dimensions,\n maxInputTokens: model.maxInputTokens,\n }));\n\n return { embedders: embeddersList };\n } catch (error) {\n return handleError(error, 'Error listing embedders');\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAgDA,SAAS,UAAU,QAA2B,YAAmC;CAC/E,IAAI,CAAC,YACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,0BAA0B,CAAC;CAGrE,MAAM,SAAS,OAAO,UAAU,UAAU;CAC1C,IAAI,CAAC,QACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,gBAAgB,WAAW,YAAY,CAAC;CAGlF,OAAO;AACT;AAGA,eAAsB,cAAc,EAClC,QACA,YACA,WACA,SACA,UACA,OACgC;CAChC,IAAI;EACF,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,QAAQ,OAAO,GAClD,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,mEAAmE,CAAC;EAK9G,OAAO,EAAE,KAAK,MAFC,UAAU,QAAQ,UACP,CAAC,CAAC,OAAO;GAAE;GAAW;GAAS;GAAU;EAAI,CAAC,EACnD;CACvB,SAAS,OAAO;EACd,OAAOC,8BAAAA,YAAY,OAAO,yBAAyB;CACrD;AACF;AAGA,eAAsB,YAAY,EAChC,QACA,YACA,WACA,WACA,UACoE;CACpE,IAAI;EACF,IAAI,CAAC,aAAa,OAAO,cAAc,YAAY,aAAa,GAC9D,MAAM,IAAID,uBAAAA,cAAc,KAAK,EAC3B,SAAS,+EACX,CAAC;EAGH,IAAI,UAAU,CAAC;GAAC;GAAU;GAAa;EAAY,CAAC,CAAC,SAAS,MAAM,GAClE,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,gEAAgE,CAAC;EAI3G,MADe,UAAU,QAAQ,UACtB,CAAC,CAAC,YAAY;GAAE;GAAW;GAAW;EAAO,CAAC;EACzD,OAAO,EAAE,SAAS,KAAK;CACzB,SAAS,OAAO;EACd,OAAOC,8BAAAA,YAAY,OAAO,sBAAsB;CAClD;AACF;AAGA,eAAsB,aAAa,EACjC,QACA,YACA,WACA,aACA,MACA,QACA,iBAC8D;CAC9D,IAAI;EACF,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,QAAQ,WAAW,GAC1D,MAAM,IAAID,uBAAAA,cAAc,KAAK,EAAE,SAAS,uEAAuE,CAAC;EAKlH,OAAO,MAFQ,UAAU,QAAQ,UACS,CAAC,CAAC,MAAM;GAAE;GAAW;GAAa;GAAM;GAAQ;EAAc,CAAC;CAE3G,SAAS,OAAO;EACd,OAAOC,8BAAAA,YAAY,OAAO,wBAAwB;CACpD;AACF;AAGA,eAAsB,YAAY,EAAE,QAAQ,cAA4D;CACtG,IAAI;EAIF,QAAO,MAHQ,UAAU,QAAQ,UAEN,CAAC,CAAC,YAAY,EAAA,CAC1B,OAAO,OAAO;CAC/B,SAAS,OAAO;EACd,OAAOA,8BAAAA,YAAY,OAAO,uBAAuB;CACnD;AACF;AAGA,eAAsB,cAAc,EAClC,QACA,YACA,aACwE;CACxE,IAAI;EACF,IAAI,CAAC,WACH,MAAM,IAAID,uBAAAA,cAAc,KAAK,EAAE,SAAS,yBAAyB,CAAC;EAIpE,MAAM,QAAoB,MADX,UAAU,QAAQ,UACI,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC;EAElE,OAAO;GACL,WAAW,MAAM;GACjB,OAAO,MAAM;GACb,QAAQ,MAAM,QAAQ,YAAY;EACpC;CACF,SAAS,OAAO;EACd,OAAOC,8BAAAA,YAAY,OAAO,wBAAwB;CACpD;AACF;AAGA,eAAsB,YAAY,EAChC,QACA,YACA,aACwE;CACxE,IAAI;EACF,IAAI,CAAC,WACH,MAAM,IAAID,uBAAAA,cAAc,KAAK,EAAE,SAAS,yBAAyB,CAAC;EAIpE,MADe,UAAU,QAAQ,UACtB,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC;EACtC,OAAO,EAAE,SAAS,KAAK;CACzB,SAAS,OAAO;EACd,OAAOC,8BAAAA,YAAY,OAAO,sBAAsB;CAClD;AACF;AAGA,eAAsB,iBAAiB,EAAE,UAAyC;CAChF,IAAI;EACF,MAAM,UAAU,OAAO,YAAY;EACnC,IAAI,CAAC,SACH,OAAO,EAAE,SAAS,CAAC,EAAE;EAWvB,OAAO,EAAE,SAPU,OAAO,QAAQ,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,aAAa;GAClE;GACA,IAAI,OAAO,MAAM;GACjB,MAAM,OAAO,YAAY;EAE3B,EAE2B,EAAE;CAC/B,SAAS,OAAO;EACd,OAAOA,8BAAAA,YAAY,OAAO,6BAA6B;CACzD;AACF;AAMA,MAAa,uBAAuBC,sBAAAA,YAAY;CAC9C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBC,gBAAAA;CACjB,YAAYC,gBAAAA;CACZ,gBAAgBC,gBAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,SAAS;CAChB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,YAAY,GAAG,aAAa;EACpD,IAAI;GACF,MAAM,EAAE,WAAW,SAAS,UAAU,QAAQ;GAE9C,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,QAAQ,OAAO,GAClD,MAAM,IAAIL,uBAAAA,cAAc,KAAK,EAAE,SAAS,mEAAmE,CAAC;GAK9G,OAAO,EAAE,KAAK,MAFC,UAAU,QAAQ,UACP,CAAC,CAAC,OAAO;IAAE;IAAW;IAAS;IAAU;GAAI,CAAC,EACnD;EACvB,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,yBAAyB;EACrD;CACF;AACF,CAAC;AAED,MAAa,qBAAqBC,sBAAAA,YAAY;CAC5C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBC,gBAAAA;CACjB,YAAYG,gBAAAA;CACZ,gBAAgBC,gBAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,SAAS;CAChB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,YAAY,GAAG,aAAa;EACpD,IAAI;GACF,MAAM,EAAE,WAAW,WAAW,WAAW;GAEzC,IAAI,CAAC,aAAa,OAAO,cAAc,YAAY,aAAa,GAC9D,MAAM,IAAIP,uBAAAA,cAAc,KAAK,EAC3B,SAAS,+EACX,CAAC;GAGH,IAAI,UAAU,CAAC;IAAC;IAAU;IAAa;GAAY,CAAC,CAAC,SAAS,MAAM,GAClE,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,gEAAgE,CAAC;GAI3G,MADe,UAAU,QAAQ,UACtB,CAAC,CAAC,YAAY;IAAE;IAAW;IAAW;GAAO,CAAC;GACzD,OAAO,EAAE,SAAS,KAAK;EACzB,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,sBAAsB;EAClD;CACF;AACF,CAAC;AAED,MAAa,sBAAsBC,sBAAAA,YAAY;CAC7C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBC,gBAAAA;CACjB,YAAYK,gBAAAA;CACZ,gBAAgBC,gBAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,SAAS;CAChB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,YAAY,GAAG,aAAa;EACpD,IAAI;GACF,MAAM,EAAE,WAAW,aAAa,MAAM,QAAQ,kBAAkB;GAEhE,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,QAAQ,WAAW,GAC1D,MAAM,IAAIT,uBAAAA,cAAc,KAAK,EAC3B,SAAS,uEACX,CAAC;GAYH,OAAO,MATQ,UAAU,QAAQ,UACS,CAAC,CAAC,MAAM;IAChD;IACA;IACA;IAEQ;IACR;GACF,CAAC;EAEH,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,wBAAwB;EACpD;CACF;AACF,CAAC;AAED,MAAa,qBAAqBC,sBAAAA,YAAY;CAC5C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBC,gBAAAA;CACjB,gBAAgBO,gBAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,SAAS;CAChB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,iBAAiB;EACzC,IAAI;GAGF,QAAO,MAFQ,UAAU,QAAQ,UACN,CAAC,CAAC,YAAY,EAAA,CAC1B,OAAO,OAAO;EAC/B,SAAS,OAAO;GACd,OAAOT,8BAAAA,YAAY,OAAO,uBAAuB;EACnD;CACF;AACF,CAAC;AAED,MAAa,uBAAuBC,sBAAAA,YAAY;CAC9C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBS,gBAAAA;CACjB,gBAAgBC,gBAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,SAAS;CAChB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,YAAY,gBAAgB;EACpD,IAAI;GACF,IAAI,CAAC,WACH,MAAM,IAAIZ,uBAAAA,cAAc,KAAK,EAAE,SAAS,yBAAyB,CAAC;GAIpE,MAAM,QAAoB,MADX,UAAU,QAAQ,UACI,CAAC,CAAC,cAAc,EAAa,UAAU,CAAC;GAE7E,OAAO;IACL,WAAW,MAAM;IACjB,OAAO,MAAM;IACb,QAAQ,MAAM,QAAQ,YAAY;GACpC;EACF,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,wBAAwB;EACpD;CACF;AACF,CAAC;AAED,MAAa,qBAAqBC,sBAAAA,YAAY;CAC5C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBS,gBAAAA;CACjB,gBAAgBE,gBAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,SAAS;CAChB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,YAAY,gBAAgB;EACpD,IAAI;GACF,IAAI,CAAC,WACH,MAAM,IAAIb,uBAAAA,cAAc,KAAK,EAAE,SAAS,yBAAyB,CAAC;GAIpE,MADe,UAAU,QAAQ,UACtB,CAAC,CAAC,YAAY,EAAa,UAAU,CAAC;GACjD,OAAO,EAAE,SAAS,KAAK;EACzB,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,sBAAsB;EAClD;CACF;AACF,CAAC;AAED,MAAa,qBAAqBC,sBAAAA,YAAY;CAC5C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,gBAAgBY,gBAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,SAAS;CAChB,cAAc;CACd,SAAS,OAAO,EAAE,aAAa;EAC7B,IAAI;GACF,MAAM,UAAU,OAAO,YAAY;GACnC,IAAI,CAAC,SACH,OAAO,EAAE,SAAS,CAAC,EAAE;GAUvB,OAAO,EAAE,SANU,OAAO,QAAQ,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,aAAa;IAClE,IAAI,OAAO,MAAM;IACjB;IACA,MAAM,OAAO,YAAY;GAC3B,EAE2B,EAAE;EAC/B,SAAS,OAAO;GACd,OAAOb,8BAAAA,YAAY,OAAO,6BAA6B;EACzD;CACF;AACF,CAAC;AAED,MAAa,uBAAuBC,sBAAAA,YAAY;CAC9C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,gBAAgBa,gBAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,SAAS;CAChB,cAAc;CACd,SAAS,YAAY;EACnB,IAAI;GAUF,OAAO,EAAE,WATaC,iBAAAA,iBAAiB,KAAI,WAAU;IACnD,IAAI,GAAG,MAAM,SAAS,GAAG,MAAM;IAC/B,UAAU,MAAM;IAChB,MAAM,MAAM;IACZ,aAAa,MAAM,eAAe;IAClC,YAAY,MAAM;IAClB,gBAAgB,MAAM;GACxB,EAEgC,EAAE;EACpC,SAAS,OAAO;GACd,OAAOf,8BAAAA,YAAY,OAAO,yBAAyB;EACrD;CACF;AACF,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_common = require("./common-
|
|
1
|
+
const require_common = require("./common-D5XxSuvu.cjs");
|
|
2
2
|
let zod_v4 = require("zod/v4");
|
|
3
3
|
// src/server/schemas/vectors.ts
|
|
4
4
|
const vectorNamePathParams = zod_v4.z.object({ vectorName: zod_v4.z.string().describe("Name of the vector store") });
|
|
@@ -126,4 +126,4 @@ Object.defineProperty(exports, "vectorNamePathParams", {
|
|
|
126
126
|
}
|
|
127
127
|
});
|
|
128
128
|
|
|
129
|
-
//# sourceMappingURL=vectors-
|
|
129
|
+
//# sourceMappingURL=vectors-CPSofSCf.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vectors-
|
|
1
|
+
{"version":3,"file":"vectors-CPSofSCf.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 { f as successResponseSchema } from "./common-
|
|
1
|
+
import { f as successResponseSchema } from "./common-J-yUnHk9.js";
|
|
2
2
|
import { z } from "zod/v4";
|
|
3
3
|
// src/server/schemas/vectors.ts
|
|
4
4
|
const vectorNamePathParams = z.object({ vectorName: z.string().describe("Name of the vector store") });
|
|
@@ -49,4 +49,4 @@ const listEmbeddersResponseSchema = z.object({ embedders: z.array(z.object({
|
|
|
49
49
|
})) });
|
|
50
50
|
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 };
|
|
51
51
|
|
|
52
|
-
//# sourceMappingURL=vectors-
|
|
52
|
+
//# sourceMappingURL=vectors-CadLydEJ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vectors-
|
|
1
|
+
{"version":3,"file":"vectors-CadLydEJ.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
|
-
import { i as createPagePaginationSchema, s as paginationInfoSchema } from "./common-
|
|
1
|
+
import { i as createPagePaginationSchema, s as paginationInfoSchema } from "./common-J-yUnHk9.js";
|
|
2
2
|
import { z } from "zod/v4";
|
|
3
3
|
// src/server/schemas/version-common.ts
|
|
4
4
|
/**
|
|
@@ -64,4 +64,4 @@ function createCompareVersionsResponseSchema(versionSchema) {
|
|
|
64
64
|
}
|
|
65
65
|
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 };
|
|
66
66
|
|
|
67
|
-
//# sourceMappingURL=version-common-
|
|
67
|
+
//# sourceMappingURL=version-common-BLTDO88f.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-common-
|
|
1
|
+
{"version":3,"file":"version-common-BLTDO88f.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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_common = require("./common-
|
|
1
|
+
const require_common = require("./common-D5XxSuvu.cjs");
|
|
2
2
|
let zod_v4 = require("zod/v4");
|
|
3
3
|
// src/server/schemas/version-common.ts
|
|
4
4
|
/**
|
|
@@ -117,4 +117,4 @@ Object.defineProperty(exports, "versionOrderBySchema", {
|
|
|
117
117
|
}
|
|
118
118
|
});
|
|
119
119
|
|
|
120
|
-
//# sourceMappingURL=version-common-
|
|
120
|
+
//# sourceMappingURL=version-common-Cc0STXl9.cjs.map
|