@mastra/server 1.22.0-alpha.1 → 1.22.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/browser-stream.d.ts +1 -0
- package/dist/{chunk-OCU2OAMS.cjs → chunk-3DRF53JI.cjs} +24 -3
- package/dist/chunk-3DRF53JI.cjs.map +1 -0
- package/dist/{chunk-V3CH6G5F.cjs → chunk-3I73HGCQ.cjs} +58 -63
- package/dist/chunk-3I73HGCQ.cjs.map +1 -0
- package/dist/{chunk-ZPVDK5G4.js → chunk-3JK4VWZ5.js} +3 -3
- package/dist/{chunk-ZPVDK5G4.js.map → chunk-3JK4VWZ5.js.map} +1 -1
- package/dist/{chunk-M7MFCJT4.js → chunk-6Q6OH2XV.js} +3 -3
- package/dist/{chunk-M7MFCJT4.js.map → chunk-6Q6OH2XV.js.map} +1 -1
- package/dist/{chunk-SEMV475G.cjs → chunk-6RCE5RPS.cjs} +3 -3
- package/dist/{chunk-SEMV475G.cjs.map → chunk-6RCE5RPS.cjs.map} +1 -1
- package/dist/{chunk-LPD67DCH.js → chunk-7AGT7BWH.js} +4 -4
- package/dist/{chunk-LPD67DCH.js.map → chunk-7AGT7BWH.js.map} +1 -1
- package/dist/{chunk-FCCXLAOT.js → chunk-7TKB6WYH.js} +4 -14
- package/dist/chunk-7TKB6WYH.js.map +1 -0
- package/dist/{chunk-6FD7UBEK.js → chunk-A2CGLVTQ.js} +21 -36
- package/dist/chunk-A2CGLVTQ.js.map +1 -0
- package/dist/{chunk-7HOYCW7S.cjs → chunk-A4UUHYOD.cjs} +4 -4
- package/dist/{chunk-7HOYCW7S.cjs.map → chunk-A4UUHYOD.cjs.map} +1 -1
- package/dist/{chunk-7ZHBGYZB.js → chunk-ACHCR6LO.js} +3 -3
- package/dist/{chunk-7ZHBGYZB.js.map → chunk-ACHCR6LO.js.map} +1 -1
- package/dist/{chunk-QJZOWORS.js → chunk-AFIQT26M.js} +3 -3
- package/dist/{chunk-QJZOWORS.js.map → chunk-AFIQT26M.js.map} +1 -1
- package/dist/{chunk-MBZT5YVO.js → chunk-AKIFSAXQ.js} +47 -30
- package/dist/chunk-AKIFSAXQ.js.map +1 -0
- package/dist/{chunk-CZUJUB46.js → chunk-BLTEJYV2.js} +3 -3
- package/dist/{chunk-CZUJUB46.js.map → chunk-BLTEJYV2.js.map} +1 -1
- package/dist/{chunk-BQXQZPYZ.js → chunk-BNI76TPM.js} +60 -23
- package/dist/chunk-BNI76TPM.js.map +1 -0
- package/dist/{chunk-7KJ4NUEH.js → chunk-C4UOZ4CO.js} +4 -4
- package/dist/{chunk-7KJ4NUEH.js.map → chunk-C4UOZ4CO.js.map} +1 -1
- package/dist/{chunk-GYD5JBBZ.js → chunk-C63OPXW5.js} +3 -3
- package/dist/{chunk-GYD5JBBZ.js.map → chunk-C63OPXW5.js.map} +1 -1
- package/dist/{chunk-ZMBEDBRB.js → chunk-CN7BQNC5.js} +8 -8
- package/dist/{chunk-ZMBEDBRB.js.map → chunk-CN7BQNC5.js.map} +1 -1
- package/dist/{chunk-FB5NRM2M.js → chunk-CQMVBP24.js} +3 -3
- package/dist/{chunk-FB5NRM2M.js.map → chunk-CQMVBP24.js.map} +1 -1
- package/dist/{chunk-PKONZNTB.js → chunk-DALTY2FC.js} +36 -6
- package/dist/chunk-DALTY2FC.js.map +1 -0
- package/dist/{chunk-22YG2467.cjs → chunk-DF6RRE5O.cjs} +4 -4
- package/dist/{chunk-22YG2467.cjs.map → chunk-DF6RRE5O.cjs.map} +1 -1
- package/dist/{chunk-37LAVKFO.cjs → chunk-E5JCKPP3.cjs} +3 -3
- package/dist/{chunk-37LAVKFO.cjs.map → chunk-E5JCKPP3.cjs.map} +1 -1
- package/dist/{chunk-B6HNPO67.cjs → chunk-EPKGVW45.cjs} +62 -23
- package/dist/chunk-EPKGVW45.cjs.map +1 -0
- package/dist/{chunk-B5KNWY2P.js → chunk-FF3WZJPG.js} +3 -3
- package/dist/{chunk-B5KNWY2P.js.map → chunk-FF3WZJPG.js.map} +1 -1
- package/dist/{chunk-MNEANLCY.cjs → chunk-FWFMQ3KF.cjs} +3 -3
- package/dist/{chunk-MNEANLCY.cjs.map → chunk-FWFMQ3KF.cjs.map} +1 -1
- package/dist/{chunk-VVWHCAF2.cjs → chunk-G3DUGNRW.cjs} +68 -68
- package/dist/chunk-G3DUGNRW.cjs.map +1 -0
- package/dist/{chunk-M6AQTASN.js → chunk-G4H7C5TN.js} +3 -3
- package/dist/{chunk-M6AQTASN.js.map → chunk-G4H7C5TN.js.map} +1 -1
- package/dist/{chunk-6MFKRF4K.cjs → chunk-GNVZDFY5.cjs} +4 -14
- package/dist/chunk-GNVZDFY5.cjs.map +1 -0
- package/dist/{chunk-6CSJOAJM.js → chunk-H7GX3URP.js} +4 -4
- package/dist/{chunk-6CSJOAJM.js.map → chunk-H7GX3URP.js.map} +1 -1
- package/dist/{chunk-CHQVMEZ3.cjs → chunk-HGA5GPMW.cjs} +126 -2
- package/dist/chunk-HGA5GPMW.cjs.map +1 -0
- package/dist/{chunk-M3CYE3JU.cjs → chunk-HGJODPSP.cjs} +55 -38
- package/dist/chunk-HGJODPSP.cjs.map +1 -0
- package/dist/{chunk-VUW7PJZC.cjs → chunk-IFEMVRLI.cjs} +3 -3
- package/dist/{chunk-VUW7PJZC.cjs.map → chunk-IFEMVRLI.cjs.map} +1 -1
- package/dist/{chunk-HI5EDX3F.js → chunk-IGUQV25I.js} +3 -3
- package/dist/{chunk-HI5EDX3F.js.map → chunk-IGUQV25I.js.map} +1 -1
- package/dist/{chunk-E56FRMZY.js → chunk-IKRRLVK6.js} +3 -3
- package/dist/{chunk-E56FRMZY.js.map → chunk-IKRRLVK6.js.map} +1 -1
- package/dist/{chunk-SKGWZXFE.js → chunk-IO7N6SAM.js} +4 -4
- package/dist/{chunk-SKGWZXFE.js.map → chunk-IO7N6SAM.js.map} +1 -1
- package/dist/{chunk-7TESOQZ3.js → chunk-JL6DSIOD.js} +3 -3
- package/dist/{chunk-7TESOQZ3.js.map → chunk-JL6DSIOD.js.map} +1 -1
- package/dist/{chunk-63O6VEOH.cjs → chunk-JLAFCQZI.cjs} +37 -37
- package/dist/{chunk-63O6VEOH.cjs.map → chunk-JLAFCQZI.cjs.map} +1 -1
- package/dist/{chunk-H6ZLN6EU.cjs → chunk-JN4QR7QO.cjs} +3 -3
- package/dist/{chunk-H6ZLN6EU.cjs.map → chunk-JN4QR7QO.cjs.map} +1 -1
- package/dist/{chunk-BPRE3HGQ.js → chunk-JUCTOLIU.js} +24 -4
- package/dist/chunk-JUCTOLIU.js.map +1 -0
- package/dist/{chunk-ZZQRRB35.js → chunk-JXC2NQ5E.js} +58 -63
- package/dist/chunk-JXC2NQ5E.js.map +1 -0
- package/dist/{chunk-JH576GTI.cjs → chunk-KU4DBPKJ.cjs} +3 -3
- package/dist/{chunk-JH576GTI.cjs.map → chunk-KU4DBPKJ.cjs.map} +1 -1
- package/dist/{chunk-WUCJRGTK.cjs → chunk-L3S2ZIOY.cjs} +3 -3
- package/dist/{chunk-WUCJRGTK.cjs.map → chunk-L3S2ZIOY.cjs.map} +1 -1
- package/dist/{chunk-M4BZ2B7D.js → chunk-LADXKYBC.js} +4 -4
- package/dist/{chunk-M4BZ2B7D.js.map → chunk-LADXKYBC.js.map} +1 -1
- package/dist/{chunk-SNGR4M5I.js → chunk-LPRBYE25.js} +3 -3
- package/dist/{chunk-SNGR4M5I.js.map → chunk-LPRBYE25.js.map} +1 -1
- package/dist/{chunk-5ZQYFQ5P.js → chunk-MFBT6P7Q.js} +3 -3
- package/dist/{chunk-5ZQYFQ5P.js.map → chunk-MFBT6P7Q.js.map} +1 -1
- package/dist/{chunk-QSA443WV.js → chunk-MSQCNOSC.js} +8 -8
- package/dist/chunk-MSQCNOSC.js.map +1 -0
- package/dist/{chunk-WYAFNFFM.js → chunk-MW3K5222.js} +3 -3
- package/dist/{chunk-WYAFNFFM.js.map → chunk-MW3K5222.js.map} +1 -1
- package/dist/{chunk-CMTOQQZD.js → chunk-MXTM7NJY.js} +126 -2
- package/dist/chunk-MXTM7NJY.js.map +1 -0
- package/dist/{chunk-NL7Y763D.js → chunk-N6ERUAFR.js} +4 -4
- package/dist/{chunk-NL7Y763D.js.map → chunk-N6ERUAFR.js.map} +1 -1
- package/dist/{chunk-GANMD6GP.cjs → chunk-NHQZOCOS.cjs} +4 -4
- package/dist/{chunk-GANMD6GP.cjs.map → chunk-NHQZOCOS.cjs.map} +1 -1
- package/dist/{chunk-XKKTZVZX.cjs → chunk-NLPQD74A.cjs} +3 -3
- package/dist/{chunk-XKKTZVZX.cjs.map → chunk-NLPQD74A.cjs.map} +1 -1
- package/dist/{chunk-YWPRH3D3.cjs → chunk-O5GBRVCT.cjs} +3 -3
- package/dist/{chunk-YWPRH3D3.cjs.map → chunk-O5GBRVCT.cjs.map} +1 -1
- package/dist/{chunk-FCLPA23B.js → chunk-PQGBLNCU.js} +103 -6
- package/dist/chunk-PQGBLNCU.js.map +1 -0
- package/dist/{chunk-GVZ7VB33.cjs → chunk-PSEUD4LV.cjs} +3 -3
- package/dist/{chunk-GVZ7VB33.cjs.map → chunk-PSEUD4LV.cjs.map} +1 -1
- package/dist/{chunk-G5KXPZUB.cjs → chunk-QBAI2EOX.cjs} +3 -3
- package/dist/{chunk-G5KXPZUB.cjs.map → chunk-QBAI2EOX.cjs.map} +1 -1
- package/dist/{chunk-NAQDQGBB.cjs → chunk-QG3XGBW4.cjs} +6 -6
- package/dist/{chunk-NAQDQGBB.cjs.map → chunk-QG3XGBW4.cjs.map} +1 -1
- package/dist/{chunk-5IKQNFW5.cjs → chunk-QKYHAQLX.cjs} +3 -3
- package/dist/{chunk-5IKQNFW5.cjs.map → chunk-QKYHAQLX.cjs.map} +1 -1
- package/dist/{chunk-MWRVCCZE.js → chunk-QVD4QX7M.js} +4 -4
- package/dist/{chunk-MWRVCCZE.js.map → chunk-QVD4QX7M.js.map} +1 -1
- package/dist/{chunk-UUQ6I673.cjs → chunk-RJYAO24Y.cjs} +3 -3
- package/dist/{chunk-UUQ6I673.cjs.map → chunk-RJYAO24Y.cjs.map} +1 -1
- package/dist/{chunk-AYD7DM5U.cjs → chunk-SDTOJ37Y.cjs} +4 -4
- package/dist/{chunk-AYD7DM5U.cjs.map → chunk-SDTOJ37Y.cjs.map} +1 -1
- package/dist/{chunk-YV7FX2SA.cjs → chunk-TEOEOSGZ.cjs} +3 -3
- package/dist/{chunk-YV7FX2SA.cjs.map → chunk-TEOEOSGZ.cjs.map} +1 -1
- package/dist/{chunk-C4M6VJGY.cjs → chunk-TMMM63JV.cjs} +7 -7
- package/dist/{chunk-C4M6VJGY.cjs.map → chunk-TMMM63JV.cjs.map} +1 -1
- package/dist/{chunk-L7PDVJZD.js → chunk-TTIBLMTX.js} +3 -3
- package/dist/{chunk-L7PDVJZD.js.map → chunk-TTIBLMTX.js.map} +1 -1
- package/dist/{chunk-JMOCVI6W.cjs → chunk-U6CWJTHH.cjs} +61 -30
- package/dist/chunk-U6CWJTHH.cjs.map +1 -0
- package/dist/{chunk-FU5Z5NSF.js → chunk-VNI37F64.js} +3 -3
- package/dist/{chunk-FU5Z5NSF.js.map → chunk-VNI37F64.js.map} +1 -1
- package/dist/{chunk-NOBDUHIG.cjs → chunk-VPC53D7Z.cjs} +3 -3
- package/dist/{chunk-NOBDUHIG.cjs.map → chunk-VPC53D7Z.cjs.map} +1 -1
- package/dist/{chunk-HBMIUVV4.cjs → chunk-W3BHIYBR.cjs} +3 -3
- package/dist/{chunk-HBMIUVV4.cjs.map → chunk-W3BHIYBR.cjs.map} +1 -1
- package/dist/{chunk-DNYJSPA5.cjs → chunk-WTS6S64Y.cjs} +103 -6
- package/dist/chunk-WTS6S64Y.cjs.map +1 -0
- package/dist/{chunk-XWCIHYAP.cjs → chunk-WULISD3M.cjs} +6 -6
- package/dist/{chunk-XWCIHYAP.cjs.map → chunk-WULISD3M.cjs.map} +1 -1
- package/dist/{chunk-3TZN3YIC.cjs → chunk-XUF34N4W.cjs} +5 -5
- package/dist/{chunk-3TZN3YIC.cjs.map → chunk-XUF34N4W.cjs.map} +1 -1
- package/dist/{chunk-5GXB4IME.js → chunk-YFDJJN24.js} +3 -3
- package/dist/{chunk-5GXB4IME.js.map → chunk-YFDJJN24.js.map} +1 -1
- package/dist/{chunk-2MQOYDF5.cjs → chunk-Z54TJ6UM.cjs} +30 -45
- package/dist/chunk-Z54TJ6UM.cjs.map +1 -0
- package/dist/{chunk-42ZYNYQI.cjs → chunk-Z5ETZUOK.cjs} +4 -4
- package/dist/{chunk-42ZYNYQI.cjs.map → chunk-Z5ETZUOK.cjs.map} +1 -1
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/{observational-memory-WOEVNCG4-DT36JHO2.js → observational-memory-74TRS2R6-LEBM75UY.js} +3 -3
- package/dist/{observational-memory-WOEVNCG4-DT36JHO2.js.map → observational-memory-74TRS2R6-LEBM75UY.js.map} +1 -1
- package/dist/{observational-memory-WOEVNCG4-5THJIIQE.cjs → observational-memory-74TRS2R6-NL3AWYN4.cjs} +26 -26
- package/dist/{observational-memory-WOEVNCG4-5THJIIQE.cjs.map → observational-memory-74TRS2R6-NL3AWYN4.cjs.map} +1 -1
- package/dist/server/browser-stream/index.cjs +534 -0
- package/dist/server/browser-stream/index.cjs.map +1 -0
- package/dist/server/browser-stream/index.d.ts +23 -0
- package/dist/server/browser-stream/index.d.ts.map +1 -0
- package/dist/server/browser-stream/index.js +531 -0
- package/dist/server/browser-stream/index.js.map +1 -0
- package/dist/server/browser-stream/input-handler.d.ts +15 -0
- package/dist/server/browser-stream/input-handler.d.ts.map +1 -0
- package/dist/server/browser-stream/types.d.ts +110 -0
- package/dist/server/browser-stream/types.d.ts.map +1 -0
- package/dist/server/browser-stream/viewer-registry.d.ts +132 -0
- package/dist/server/browser-stream/viewer-registry.d.ts.map +1 -0
- package/dist/server/handlers/a2a.cjs +9 -9
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +16 -16
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/agent-versions.cjs +8 -8
- package/dist/server/handlers/agent-versions.js +1 -1
- package/dist/server/handlers/agents.cjs +38 -34
- package/dist/server/handlers/agents.d.ts +7 -0
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +1 -1
- package/dist/server/handlers/auth.cjs +10 -10
- package/dist/server/handlers/auth.js +1 -1
- package/dist/server/handlers/conversations.cjs +5 -5
- package/dist/server/handlers/conversations.d.ts.map +1 -1
- package/dist/server/handlers/conversations.js +1 -1
- package/dist/server/handlers/datasets.cjs +26 -26
- package/dist/server/handlers/datasets.d.ts +748 -0
- package/dist/server/handlers/datasets.d.ts.map +1 -1
- package/dist/server/handlers/datasets.js +1 -1
- package/dist/server/handlers/logs.cjs +4 -4
- package/dist/server/handlers/logs.js +1 -1
- package/dist/server/handlers/mcp-client-versions.cjs +8 -8
- package/dist/server/handlers/mcp-client-versions.js +1 -1
- package/dist/server/handlers/memory.cjs +27 -27
- package/dist/server/handlers/memory.d.ts.map +1 -1
- package/dist/server/handlers/memory.js +1 -1
- package/dist/server/handlers/observability-new-endpoints.cjs +27 -27
- package/dist/server/handlers/observability-new-endpoints.js +1 -1
- package/dist/server/handlers/observability.cjs +36 -32
- package/dist/server/handlers/observability.d.ts +16 -0
- package/dist/server/handlers/observability.d.ts.map +1 -1
- package/dist/server/handlers/observability.js +2 -2
- package/dist/server/handlers/processor-providers.cjs +3 -3
- package/dist/server/handlers/processor-providers.js +1 -1
- package/dist/server/handlers/processors.cjs +4 -4
- package/dist/server/handlers/processors.js +1 -1
- package/dist/server/handlers/prompt-block-versions.cjs +8 -8
- package/dist/server/handlers/prompt-block-versions.js +1 -1
- package/dist/server/handlers/responses.cjs +4 -4
- package/dist/server/handlers/responses.d.ts +2 -2
- package/dist/server/handlers/responses.d.ts.map +1 -1
- package/dist/server/handlers/responses.js +1 -1
- package/dist/server/handlers/responses.storage.cjs +15 -7
- package/dist/server/handlers/responses.storage.d.ts +30 -11
- package/dist/server/handlers/responses.storage.d.ts.map +1 -1
- package/dist/server/handlers/responses.storage.js +1 -1
- package/dist/server/handlers/scorer-versions.cjs +8 -8
- package/dist/server/handlers/scorer-versions.js +1 -1
- package/dist/server/handlers/scores.cjs +7 -7
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers/stored-agents.cjs +7 -7
- package/dist/server/handlers/stored-agents.js +1 -1
- package/dist/server/handlers/stored-mcp-clients.cjs +6 -6
- package/dist/server/handlers/stored-mcp-clients.js +1 -1
- package/dist/server/handlers/stored-prompt-blocks.cjs +6 -6
- package/dist/server/handlers/stored-prompt-blocks.js +1 -1
- package/dist/server/handlers/stored-scorers.cjs +6 -6
- package/dist/server/handlers/stored-scorers.js +1 -1
- package/dist/server/handlers/stored-skills.cjs +7 -7
- package/dist/server/handlers/stored-skills.js +1 -1
- package/dist/server/handlers/stored-workspaces.cjs +6 -6
- package/dist/server/handlers/stored-workspaces.js +1 -1
- package/dist/server/handlers/system.cjs +2 -2
- package/dist/server/handlers/system.js +1 -1
- package/dist/server/handlers/tool-providers.cjs +5 -5
- package/dist/server/handlers/tool-providers.js +1 -1
- package/dist/server/handlers/tools.cjs +6 -6
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/vector.cjs +16 -16
- package/dist/server/handlers/vector.js +1 -1
- package/dist/server/handlers/voice.cjs +8 -8
- package/dist/server/handlers/voice.js +1 -1
- package/dist/server/handlers/workflows.cjs +24 -24
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/handlers/workspace.cjs +26 -26
- package/dist/server/handlers/workspace.js +1 -1
- package/dist/server/handlers.cjs +37 -37
- package/dist/server/handlers.js +14 -14
- package/dist/server/schemas/datasets.d.ts +371 -0
- package/dist/server/schemas/datasets.d.ts.map +1 -1
- package/dist/server/schemas/index.cjs +299 -299
- package/dist/server/schemas/index.js +7 -7
- package/dist/server/schemas/responses.d.ts +1 -1
- package/dist/server/schemas/responses.d.ts.map +1 -1
- package/dist/server/server-adapter/index.cjs +281 -280
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.js +33 -32
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/server/server-adapter/routes/datasets.d.ts +748 -0
- package/dist/server/server-adapter/routes/datasets.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/observability.d.ts +14 -0
- package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/responses.d.ts +2 -2
- package/package.json +15 -5
- package/dist/chunk-2MQOYDF5.cjs.map +0 -1
- package/dist/chunk-6FD7UBEK.js.map +0 -1
- package/dist/chunk-6MFKRF4K.cjs.map +0 -1
- package/dist/chunk-B6HNPO67.cjs.map +0 -1
- package/dist/chunk-BPRE3HGQ.js.map +0 -1
- package/dist/chunk-BQXQZPYZ.js.map +0 -1
- package/dist/chunk-CHQVMEZ3.cjs.map +0 -1
- package/dist/chunk-CMTOQQZD.js.map +0 -1
- package/dist/chunk-DNYJSPA5.cjs.map +0 -1
- package/dist/chunk-FCCXLAOT.js.map +0 -1
- package/dist/chunk-FCLPA23B.js.map +0 -1
- package/dist/chunk-JMOCVI6W.cjs.map +0 -1
- package/dist/chunk-M3CYE3JU.cjs.map +0 -1
- package/dist/chunk-MBZT5YVO.js.map +0 -1
- package/dist/chunk-OCU2OAMS.cjs.map +0 -1
- package/dist/chunk-PKONZNTB.js.map +0 -1
- package/dist/chunk-QSA443WV.js.map +0 -1
- package/dist/chunk-V3CH6G5F.cjs.map +0 -1
- package/dist/chunk-VVWHCAF2.cjs.map +0 -1
- package/dist/chunk-ZZQRRB35.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkQKOLB27L_cjs = require('./chunk-QKOLB27L.cjs');
|
|
4
|
-
var chunkB34S64RC_cjs = require('./chunk-B34S64RC.cjs');
|
|
5
4
|
var chunkEGSCXVMR_cjs = require('./chunk-EGSCXVMR.cjs');
|
|
5
|
+
var chunkB34S64RC_cjs = require('./chunk-B34S64RC.cjs');
|
|
6
6
|
var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
|
|
7
7
|
var chunkO7I5CWRX_cjs = require('./chunk-O7I5CWRX.cjs');
|
|
8
8
|
var llm = require('@mastra/core/llm');
|
|
@@ -381,5 +381,5 @@ exports.listVectorStores = listVectorStores;
|
|
|
381
381
|
exports.queryVectors = queryVectors;
|
|
382
382
|
exports.upsertVectors = upsertVectors;
|
|
383
383
|
exports.vector_exports = vector_exports;
|
|
384
|
-
//# sourceMappingURL=chunk-
|
|
385
|
-
//# sourceMappingURL=chunk-
|
|
384
|
+
//# sourceMappingURL=chunk-JN4QR7QO.cjs.map
|
|
385
|
+
//# sourceMappingURL=chunk-JN4QR7QO.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/handlers/vector.ts"],"names":["__export","HTTPException","handleError","createRoute","vectorNamePathParams","upsertVectorsBodySchema","upsertVectorsResponseSchema","createIndexBodySchema","createIndexResponseSchema","queryVectorsBodySchema","queryVectorsResponseSchema","listIndexesResponseSchema","vectorIndexPathParams","describeIndexResponseSchema","deleteIndexResponseSchema","listVectorsResponseSchema","listEmbeddersResponseSchema","EMBEDDING_MODELS"],"mappings":"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","file":"chunk-H6ZLN6EU.cjs","sourcesContent":["import { EMBEDDING_MODELS } from '@mastra/core/llm';\nimport type { MastraVector, QueryResult, IndexStats } 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,\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({ indexName, queryVector, topK, filter, includeVector });\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"]}
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/vector.ts"],"names":["__export","HTTPException","handleError","createRoute","vectorNamePathParams","upsertVectorsBodySchema","upsertVectorsResponseSchema","createIndexBodySchema","createIndexResponseSchema","queryVectorsBodySchema","queryVectorsResponseSchema","listIndexesResponseSchema","vectorIndexPathParams","describeIndexResponseSchema","deleteIndexResponseSchema","listVectorsResponseSchema","listEmbeddersResponseSchema","EMBEDDING_MODELS"],"mappings":"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","file":"chunk-JN4QR7QO.cjs","sourcesContent":["import { EMBEDDING_MODELS } from '@mastra/core/llm';\nimport type { MastraVector, QueryResult, IndexStats } 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,\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({ indexName, queryVector, topK, filter, includeVector });\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"]}
|
|
@@ -3,8 +3,8 @@ import { listAgentsResponseSchema, serializedAgentSchema, agentVersionQuerySchem
|
|
|
3
3
|
import { stringify, toSlug } from './chunk-RGI5IQDO.js';
|
|
4
4
|
import { sanitizeBody, validateBody, getEffectiveResourceId, getEffectiveThreadId, validateThreadOwnership } from './chunk-USR6JK77.js';
|
|
5
5
|
import { createStoredAgentResponseSchema } from './chunk-TKEJJLHK.js';
|
|
6
|
-
import { handleError } from './chunk-P23KBWKB.js';
|
|
7
6
|
import { createRoute, standardSchemaToJSONSchema, toStandardSchema5 } from './chunk-NMS2SC2B.js';
|
|
7
|
+
import { handleError } from './chunk-P23KBWKB.js';
|
|
8
8
|
import { HTTPException } from './chunk-6QWQZI4Q.js';
|
|
9
9
|
import { __export } from './chunk-PR4QN5HX.js';
|
|
10
10
|
import { Agent } from '@mastra/core/agent';
|
|
@@ -44,6 +44,7 @@ __export(agents_exports, {
|
|
|
44
44
|
UPDATE_AGENT_MODEL_ROUTE: () => UPDATE_AGENT_MODEL_ROUTE,
|
|
45
45
|
extractVersionOptions: () => extractVersionOptions,
|
|
46
46
|
getAgentFromSystem: () => getAgentFromSystem,
|
|
47
|
+
getBrowserToolsFromAgent: () => getBrowserToolsFromAgent,
|
|
47
48
|
getSerializedAgentTools: () => getSerializedAgentTools,
|
|
48
49
|
getSerializedProcessors: () => getSerializedProcessors,
|
|
49
50
|
getSerializedSkillsFromAgent: () => getSerializedSkillsFromAgent,
|
|
@@ -274,6 +275,21 @@ async function getWorkspaceToolsFromAgent(agent, requestContext) {
|
|
|
274
275
|
return [];
|
|
275
276
|
}
|
|
276
277
|
}
|
|
278
|
+
function getBrowserToolsFromAgent(agent, onError) {
|
|
279
|
+
try {
|
|
280
|
+
const browser = agent.browser;
|
|
281
|
+
if (!browser) {
|
|
282
|
+
return [];
|
|
283
|
+
}
|
|
284
|
+
return Object.keys(browser.getTools());
|
|
285
|
+
} catch (error) {
|
|
286
|
+
onError?.(error);
|
|
287
|
+
return [];
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
function createBrowserToolsErrorLogger(logger, agentId) {
|
|
291
|
+
return (error) => logger.warn("Failed to get browser tools for agent", { agentId, error });
|
|
292
|
+
}
|
|
277
293
|
async function getSerializedAgentDefinition({
|
|
278
294
|
agent,
|
|
279
295
|
requestContext
|
|
@@ -339,6 +355,7 @@ async function formatAgentList({
|
|
|
339
355
|
}
|
|
340
356
|
const serializedSkills = await getSerializedSkillsFromAgent(agent, requestContext);
|
|
341
357
|
const workspaceTools = await getWorkspaceToolsFromAgent(agent, requestContext);
|
|
358
|
+
const browserTools = getBrowserToolsFromAgent(agent, createBrowserToolsErrorLogger(logger, agent.id));
|
|
342
359
|
let workspaceId;
|
|
343
360
|
try {
|
|
344
361
|
const workspace = await agent.getWorkspace({ requestContext });
|
|
@@ -373,6 +390,7 @@ async function formatAgentList({
|
|
|
373
390
|
workflows: serializedAgentWorkflows,
|
|
374
391
|
skills: serializedSkills,
|
|
375
392
|
workspaceTools,
|
|
393
|
+
browserTools,
|
|
376
394
|
workspaceId,
|
|
377
395
|
inputProcessors: serializedInputProcessors,
|
|
378
396
|
outputProcessors: serializedOutputProcessors,
|
|
@@ -522,6 +540,7 @@ async function formatAgent({
|
|
|
522
540
|
}
|
|
523
541
|
const serializedSkills = await getSerializedSkillsFromAgent(agent, proxyRequestContext);
|
|
524
542
|
const workspaceTools = await getWorkspaceToolsFromAgent(agent, proxyRequestContext);
|
|
543
|
+
const browserTools = getBrowserToolsFromAgent(agent, createBrowserToolsErrorLogger(mastra.getLogger(), agent.id));
|
|
525
544
|
let workspaceId;
|
|
526
545
|
try {
|
|
527
546
|
const workspace = await agent.getWorkspace({ requestContext: proxyRequestContext });
|
|
@@ -545,6 +564,7 @@ async function formatAgent({
|
|
|
545
564
|
workflows: serializedAgentWorkflows,
|
|
546
565
|
skills: serializedSkills,
|
|
547
566
|
workspaceTools,
|
|
567
|
+
browserTools,
|
|
548
568
|
workspaceId,
|
|
549
569
|
inputProcessors: serializedInputProcessors,
|
|
550
570
|
outputProcessors: serializedOutputProcessors,
|
|
@@ -1552,6 +1572,6 @@ var GET_AGENT_SKILL_ROUTE = createRoute({
|
|
|
1552
1572
|
}
|
|
1553
1573
|
});
|
|
1554
1574
|
|
|
1555
|
-
export { APPROVE_NETWORK_TOOL_CALL_ROUTE, APPROVE_TOOL_CALL_GENERATE_ROUTE, APPROVE_TOOL_CALL_ROUTE, CLONE_AGENT_ROUTE, DECLINE_NETWORK_TOOL_CALL_ROUTE, DECLINE_TOOL_CALL_GENERATE_ROUTE, DECLINE_TOOL_CALL_ROUTE, ENHANCE_INSTRUCTIONS_ROUTE, GENERATE_AGENT_ROUTE, GENERATE_AGENT_VNEXT_ROUTE, GENERATE_LEGACY_ROUTE, GET_AGENT_BY_ID_ROUTE, GET_AGENT_SKILL_ROUTE, GET_PROVIDERS_ROUTE, LIST_AGENTS_ROUTE, REORDER_AGENT_MODEL_LIST_ROUTE, RESET_AGENT_MODEL_ROUTE, STREAM_GENERATE_LEGACY_ROUTE, STREAM_GENERATE_ROUTE, STREAM_GENERATE_VNEXT_DEPRECATED_ROUTE, STREAM_NETWORK_ROUTE, STREAM_UI_MESSAGE_DEPRECATED_ROUTE, STREAM_UI_MESSAGE_VNEXT_DEPRECATED_ROUTE, STREAM_VNEXT_DEPRECATED_ROUTE, UPDATE_AGENT_MODEL_IN_MODEL_LIST_ROUTE, UPDATE_AGENT_MODEL_ROUTE, agents_exports, extractVersionOptions, getAgentFromSystem, getSerializedAgentTools, getSerializedProcessors, getSerializedSkillsFromAgent, getWorkspaceToolsFromAgent, isProviderConnected };
|
|
1556
|
-
//# sourceMappingURL=chunk-
|
|
1557
|
-
//# sourceMappingURL=chunk-
|
|
1575
|
+
export { APPROVE_NETWORK_TOOL_CALL_ROUTE, APPROVE_TOOL_CALL_GENERATE_ROUTE, APPROVE_TOOL_CALL_ROUTE, CLONE_AGENT_ROUTE, DECLINE_NETWORK_TOOL_CALL_ROUTE, DECLINE_TOOL_CALL_GENERATE_ROUTE, DECLINE_TOOL_CALL_ROUTE, ENHANCE_INSTRUCTIONS_ROUTE, GENERATE_AGENT_ROUTE, GENERATE_AGENT_VNEXT_ROUTE, GENERATE_LEGACY_ROUTE, GET_AGENT_BY_ID_ROUTE, GET_AGENT_SKILL_ROUTE, GET_PROVIDERS_ROUTE, LIST_AGENTS_ROUTE, REORDER_AGENT_MODEL_LIST_ROUTE, RESET_AGENT_MODEL_ROUTE, STREAM_GENERATE_LEGACY_ROUTE, STREAM_GENERATE_ROUTE, STREAM_GENERATE_VNEXT_DEPRECATED_ROUTE, STREAM_NETWORK_ROUTE, STREAM_UI_MESSAGE_DEPRECATED_ROUTE, STREAM_UI_MESSAGE_VNEXT_DEPRECATED_ROUTE, STREAM_VNEXT_DEPRECATED_ROUTE, UPDATE_AGENT_MODEL_IN_MODEL_LIST_ROUTE, UPDATE_AGENT_MODEL_ROUTE, agents_exports, extractVersionOptions, getAgentFromSystem, getBrowserToolsFromAgent, getSerializedAgentTools, getSerializedProcessors, getSerializedSkillsFromAgent, getWorkspaceToolsFromAgent, isProviderConnected };
|
|
1576
|
+
//# sourceMappingURL=chunk-JUCTOLIU.js.map
|
|
1577
|
+
//# sourceMappingURL=chunk-JUCTOLIU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/agents.ts","../src/server/constants.ts"],"names":["agent","acc","key","editor"],"mappings":"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","file":"chunk-JUCTOLIU.js","sourcesContent":["import { Agent } from '@mastra/core/agent';\nimport type { AgentModelManagerConfig } from '@mastra/core/agent';\nimport { ErrorCategory, ErrorDomain, MastraError } from '@mastra/core/error';\nimport { PROVIDER_REGISTRY, parseModelString } from '@mastra/core/llm';\nimport type { ProviderConfig, SystemMessage } from '@mastra/core/llm';\nimport type {\n InputProcessor,\n OutputProcessor,\n InputProcessorOrWorkflow,\n OutputProcessorOrWorkflow,\n} from '@mastra/core/processors';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport { zodToJsonSchema } from '@mastra/core/utils/zod-to-json';\nimport { toStandardSchema, standardSchemaToJSONSchema } from '@mastra/schema-compat/schema';\nimport type { PublicSchema } from '@mastra/schema-compat/schema';\nimport { stringify } from 'superjson';\n\nimport { z } from 'zod/v4';\nimport { WORKSPACE_TOOLS, resolveToolConfig } from '../constants';\nimport type { WorkspaceToolName } from '../constants';\n\nimport { HTTPException } from '../http-exception';\nimport {\n agentIdPathParams,\n agentSkillPathParams,\n agentVersionQuerySchema,\n listAgentsResponseSchema,\n serializedAgentSchema,\n agentExecutionBodySchema,\n agentExecutionLegacyBodySchema,\n generateResponseSchema,\n streamResponseSchema,\n providersResponseSchema,\n approveToolCallBodySchema,\n declineToolCallBodySchema,\n toolCallResponseSchema,\n updateAgentModelBodySchema,\n reorderAgentModelListBodySchema,\n updateAgentModelInModelListBodySchema,\n modelManagementResponseSchema,\n modelConfigIdPathParams,\n enhanceInstructionsBodySchema,\n enhanceInstructionsResponseSchema,\n approveNetworkToolCallBodySchema,\n declineNetworkToolCallBodySchema,\n} from '../schemas/agents';\nimport { createStoredAgentResponseSchema } from '../schemas/stored-agents';\nimport { getAgentSkillResponseSchema, skillDisambiguationQuerySchema } from '../schemas/workspace';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\n\nimport { toSlug } from '../utils';\n\nimport { handleError } from './error';\nimport {\n sanitizeBody,\n validateBody,\n getEffectiveResourceId,\n getEffectiveThreadId,\n validateThreadOwnership,\n} from './utils';\n\n/**\n * Checks if a provider has its required API key environment variable(s) configured.\n * Handles provider IDs with suffixes (e.g., \"openai.chat\" -> \"openai\").\n * Also handles custom gateway providers that are stored with gateway prefix (e.g., \"acme/acme-openai\").\n * @param providerId - The provider identifier (may include a suffix like \".chat\" or be from a custom gateway)\n * @param customProviders - Optional record of custom gateway providers to check\n * @returns true if all required environment variables are set, false otherwise\n */\nexport function isProviderConnected(providerId: string, customProviders?: Record<string, ProviderConfig>): boolean {\n // Clean provider ID (e.g., \"openai.chat\" -> \"openai\")\n const cleanId = providerId.includes('.') ? providerId.split('.')[0]! : providerId;\n\n // First, try direct lookup in static registry\n let provider: ProviderConfig | undefined = PROVIDER_REGISTRY[cleanId as keyof typeof PROVIDER_REGISTRY];\n\n // If not found, check custom providers\n if (!provider && customProviders) {\n provider = customProviders[cleanId];\n }\n\n // If not found and doesn't contain a slash, check if it exists with a gateway prefix\n // This handles custom gateway providers stored as \"gateway/provider\" in the registry\n if (!provider && !cleanId.includes('/')) {\n // Search for a provider ID that matches the pattern \"*/cleanId\"\n const registryKeys = Object.keys(PROVIDER_REGISTRY);\n const matchingKey = registryKeys.find(key => {\n // Check if the key matches the pattern \"gateway/providerId\"\n const parts = key.split('/');\n return parts.length === 2 && parts[1] === cleanId;\n });\n\n if (matchingKey) {\n provider = PROVIDER_REGISTRY[matchingKey as keyof typeof PROVIDER_REGISTRY];\n }\n\n if (!provider && customProviders) {\n const customMatchingKey = Object.keys(customProviders).find(key => {\n const parts = key.split('/');\n return parts.length === 2 && parts[1] === cleanId;\n });\n if (customMatchingKey) {\n provider = customProviders[customMatchingKey];\n }\n }\n }\n\n if (!provider) return false;\n\n const envVars = Array.isArray(provider.apiKeyEnvVar) ? provider.apiKeyEnvVar : [provider.apiKeyEnvVar];\n return envVars.every(envVar => !!process.env[envVar]);\n}\n\nexport interface SerializedProcessor {\n id: string;\n name?: string;\n}\n\nexport interface SerializedSkill {\n name: string;\n description: string;\n license?: string;\n path: string;\n}\n\nexport interface SerializedTool {\n id: string;\n description?: string;\n inputSchema?: string;\n outputSchema?: string;\n requestContextSchema?: string;\n requireApproval?: boolean;\n}\n\ninterface SerializedToolInput {\n id?: string;\n description?: string;\n inputSchema?: { jsonSchema?: unknown } | unknown;\n outputSchema?: { jsonSchema?: unknown } | unknown;\n requestContextSchema?: { jsonSchema?: unknown } | unknown;\n}\n\nfunction resolveLazySchema(schema: unknown): unknown {\n if (typeof schema === 'function') {\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\nexport interface SerializedWorkflow {\n name: string;\n steps?: Record<string, { id: string; description?: string }>;\n}\n\nexport interface SerializedAgent {\n name: string;\n description?: string;\n instructions?: SystemMessage;\n tools: Record<string, SerializedTool>;\n agents: Record<string, SerializedAgentDefinition>;\n workflows: Record<string, SerializedWorkflow>;\n skills: SerializedSkill[];\n workspaceTools: string[];\n /** Browser tool names available to this agent (if browser is configured) */\n browserTools: string[];\n /** ID of the agent's workspace (if configured) */\n workspaceId?: string;\n inputProcessors: SerializedProcessor[];\n outputProcessors: SerializedProcessor[];\n provider?: string;\n modelId?: string;\n modelVersion?: string;\n modelList?: Array<\n Omit<AgentModelManagerConfig, 'model'> & {\n model: {\n modelId: string;\n provider: string;\n modelVersion: string;\n };\n }\n >;\n // We can't use the true types here because they are not serializable\n defaultOptions?: Record<string, unknown>;\n defaultGenerateOptionsLegacy?: Record<string, unknown>;\n defaultStreamOptionsLegacy?: Record<string, unknown>;\n /** Serialized JSON schema for request context validation */\n requestContextSchema?: string;\n source?: 'code' | 'stored';\n status?: 'draft' | 'published' | 'archived';\n activeVersionId?: string;\n hasDraft?: boolean;\n}\n\nexport interface SerializedAgentWithId extends SerializedAgent {\n id: string;\n}\n\nexport async function getSerializedAgentTools(\n tools: Record<string, SerializedToolInput>,\n partial: boolean = false,\n): Promise<Record<string, SerializedTool>> {\n return Object.entries(tools || {}).reduce<Record<string, SerializedTool>>((acc, [key, tool]) => {\n const toolId = tool.id ?? `tool-${key}`;\n\n let inputSchemaForReturn: string | undefined = undefined;\n let outputSchemaForReturn: string | undefined = undefined;\n let requestContextSchemaForReturn: string | undefined = undefined;\n\n // Only process schemas if not in partial mode\n if (!partial) {\n try {\n const inputSchema = schemaToJsonSchema(\n resolveLazySchema(tool.inputSchema) as PublicSchema<unknown> | undefined,\n );\n if (inputSchema !== undefined) {\n inputSchemaForReturn = stringify(inputSchema);\n }\n\n const outputSchema = schemaToJsonSchema(\n resolveLazySchema(tool.outputSchema) as PublicSchema<unknown> | undefined,\n );\n if (outputSchema !== undefined) {\n outputSchemaForReturn = stringify(outputSchema);\n }\n\n const requestContextSchema = schemaToJsonSchema(\n resolveLazySchema(tool.requestContextSchema) as PublicSchema<unknown> | undefined,\n );\n if (requestContextSchema !== undefined) {\n requestContextSchemaForReturn = stringify(requestContextSchema);\n }\n } catch (error) {\n console.error(`Error getting serialized tool`, {\n toolId: tool.id,\n error,\n });\n }\n }\n\n acc[key] = {\n ...tool,\n id: toolId,\n inputSchema: inputSchemaForReturn,\n outputSchema: outputSchemaForReturn,\n requestContextSchema: requestContextSchemaForReturn,\n };\n return acc;\n }, {});\n}\n\nexport function getSerializedProcessors(\n processors: (InputProcessor | OutputProcessor | InputProcessorOrWorkflow | OutputProcessorOrWorkflow)[],\n): SerializedProcessor[] {\n return processors.map(processor => {\n // Processors are class instances or objects with a name property\n // Use the name property if available, otherwise fall back to constructor name\n return {\n id: processor.id,\n name: processor.name || processor.constructor.name,\n };\n });\n}\n\n/**\n * Extract skills from agent's workspace.\n * Uses agent.getWorkspace() to get the workspace and then workspace.skills.list().\n */\nexport async function getSerializedSkillsFromAgent(\n agent: Agent,\n requestContext?: RequestContext,\n): Promise<SerializedSkill[]> {\n try {\n const workspace = await agent.getWorkspace({ requestContext });\n if (!workspace?.skills) {\n return [];\n }\n\n const skillsList = await workspace.skills.list();\n return skillsList.map(skill => ({\n name: skill.name,\n description: skill.description,\n license: skill.license,\n path: skill.path,\n }));\n } catch {\n return [];\n }\n}\n\n/**\n * Get the list of available workspace tools for an agent.\n *\n * Tries to use core's `createWorkspaceTools` for an accurate tool list that\n * respects runtime availability (e.g. `@ast-grep/napi` for ast_edit).\n * Falls back to inlined config-based logic for older core versions that don't\n * export `createWorkspaceTools`.\n */\nexport async function getWorkspaceToolsFromAgent(agent: Agent, requestContext?: RequestContext): Promise<string[]> {\n try {\n const workspace = await agent.getWorkspace({ requestContext });\n if (!workspace) {\n return [];\n }\n\n // Try core's createWorkspaceTools — it checks runtime dep availability\n try {\n const mod = await import('@mastra/core/workspace');\n if (typeof mod.createWorkspaceTools === 'function') {\n return Object.keys(mod.createWorkspaceTools(workspace));\n }\n } catch {\n // Older core version without workspace module — fall through\n }\n\n // Fallback: inlined logic for older core versions.\n // Does not include AST_EDIT — only available via createWorkspaceTools above.\n const tools: string[] = [];\n const isReadOnly = workspace.filesystem?.readOnly ?? false;\n const toolsConfig = workspace.getToolsConfig();\n\n // Helper to check if a tool is enabled\n const isEnabled = (toolName: WorkspaceToolName) => {\n return resolveToolConfig(toolsConfig, toolName).enabled;\n };\n\n // Filesystem tools\n if (workspace.filesystem) {\n // Read tools\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.READ_FILE)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.READ_FILE);\n }\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.LIST_FILES)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.LIST_FILES);\n }\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.FILE_STAT)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.FILE_STAT);\n }\n\n // Write tools only if not readonly\n if (!isReadOnly) {\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.WRITE_FILE)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.WRITE_FILE);\n }\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.EDIT_FILE)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.EDIT_FILE);\n }\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.DELETE)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.DELETE);\n }\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.MKDIR)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.MKDIR);\n }\n }\n\n // Grep tool (filesystem-based, not BM25/vector)\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.GREP)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.GREP);\n }\n }\n\n // Search tools (available if BM25 or vector search is enabled)\n if (workspace.canBM25 || workspace.canVector) {\n if (isEnabled(WORKSPACE_TOOLS.SEARCH.SEARCH)) {\n tools.push(WORKSPACE_TOOLS.SEARCH.SEARCH);\n }\n if (!isReadOnly && isEnabled(WORKSPACE_TOOLS.SEARCH.INDEX)) {\n tools.push(WORKSPACE_TOOLS.SEARCH.INDEX);\n }\n }\n\n // Sandbox tools\n if (workspace.sandbox) {\n if (workspace.sandbox.executeCommand && isEnabled(WORKSPACE_TOOLS.SANDBOX.EXECUTE_COMMAND)) {\n tools.push(WORKSPACE_TOOLS.SANDBOX.EXECUTE_COMMAND);\n }\n }\n\n return tools;\n } catch {\n return [];\n }\n}\n\n/**\n * Get the list of browser tool names for an agent.\n * Returns the tool names from the agent's browser provider if configured.\n */\nexport function getBrowserToolsFromAgent(agent: Agent, onError?: (error: unknown) => void): string[] {\n try {\n const browser = agent.browser;\n if (!browser) {\n return [];\n }\n return Object.keys(browser.getTools());\n } catch (error) {\n onError?.(error);\n return [];\n }\n}\n\nfunction createBrowserToolsErrorLogger(\n logger: ReturnType<Context['mastra']['getLogger']>,\n agentId: string,\n): (error: unknown) => void {\n return error => logger.warn('Failed to get browser tools for agent', { agentId, error });\n}\n\ninterface SerializedAgentDefinition {\n id: string;\n name: string;\n}\n\nasync function getSerializedAgentDefinition({\n agent,\n requestContext,\n}: {\n agent: Agent;\n requestContext: RequestContext;\n}): Promise<Record<string, SerializedAgentDefinition>> {\n let serializedAgentAgents: Record<string, SerializedAgentDefinition> = {};\n\n if ('listAgents' in agent) {\n const agents = await agent.listAgents({ requestContext });\n serializedAgentAgents = Object.entries(agents || {}).reduce<Record<string, SerializedAgentDefinition>>(\n (acc, [key, agent]) => {\n return {\n ...acc,\n [key]: { id: agent.id, name: agent.name },\n };\n },\n {},\n );\n }\n return serializedAgentAgents;\n}\n\nasync function formatAgentList({\n id,\n mastra,\n agent,\n requestContext,\n partial = false,\n}: {\n id: string;\n mastra: Context['mastra'];\n agent: Agent;\n requestContext: RequestContext;\n partial?: boolean;\n}): Promise<SerializedAgentWithId> {\n const description = agent.getDescription();\n const instructions = await agent.getInstructions({ requestContext });\n const tools = await agent.listTools({ requestContext });\n const llm = await agent.getLLM({ requestContext });\n const defaultGenerateOptionsLegacy = await agent.getDefaultGenerateOptionsLegacy({ requestContext });\n const defaultStreamOptionsLegacy = await agent.getDefaultStreamOptionsLegacy({ requestContext });\n const defaultOptions = await agent.getDefaultOptions({ requestContext });\n const serializedAgentTools = await getSerializedAgentTools(tools, partial);\n\n let serializedAgentWorkflows: Record<\n string,\n { name: string; steps?: Record<string, { id: string; description?: string }> }\n > = {};\n\n const logger = mastra.getLogger();\n\n if ('listWorkflows' in agent) {\n try {\n const workflows = await agent.listWorkflows({ requestContext });\n serializedAgentWorkflows = Object.entries(workflows || {}).reduce<\n Record<string, { name: string; steps?: Record<string, { id: string; description?: string }> }>\n >((acc, [key, workflow]) => {\n return {\n ...acc,\n [key]: {\n name: workflow.name || 'Unnamed workflow',\n },\n };\n }, {});\n } catch (error) {\n logger.error('Error getting workflows for agent', { agentName: agent.name, error });\n }\n }\n\n const serializedAgentAgents = await getSerializedAgentDefinition({ agent, requestContext });\n\n // Get and serialize only user-configured processors (excludes memory-derived processors)\n // This ensures the UI only shows processors explicitly configured by the user\n let serializedInputProcessors: ReturnType<typeof getSerializedProcessors> = [];\n let serializedOutputProcessors: ReturnType<typeof getSerializedProcessors> = [];\n try {\n const configuredProcessorWorkflows = await agent.getConfiguredProcessorWorkflows();\n const inputProcessorWorkflows = configuredProcessorWorkflows.filter(w => w.id.endsWith('-input-processor'));\n const outputProcessorWorkflows = configuredProcessorWorkflows.filter(w => w.id.endsWith('-output-processor'));\n serializedInputProcessors = getSerializedProcessors(inputProcessorWorkflows);\n serializedOutputProcessors = getSerializedProcessors(outputProcessorWorkflows);\n } catch (error) {\n logger.error('Error getting configured processors for agent', { agentName: agent.name, error });\n }\n\n // Extract skills, workspace tools, and workspaceId from agent's workspace\n const serializedSkills = await getSerializedSkillsFromAgent(agent, requestContext);\n const workspaceTools = await getWorkspaceToolsFromAgent(agent, requestContext);\n const browserTools = getBrowserToolsFromAgent(agent, createBrowserToolsErrorLogger(logger, agent.id));\n\n // Get workspaceId if agent has a workspace\n let workspaceId: string | undefined;\n try {\n const workspace = await agent.getWorkspace({ requestContext });\n workspaceId = workspace?.id;\n } catch {\n // Agent doesn't have a workspace or can't access it\n }\n\n const model = llm?.getModel();\n const models = await agent.getModelList(requestContext);\n const modelList = models?.map(md => ({\n ...md,\n model: {\n modelId: md.model.modelId,\n provider: md.model.provider,\n modelVersion: md.model.specificationVersion,\n },\n }));\n\n // Serialize requestContextSchema if present\n let serializedRequestContextSchema: string | undefined;\n if (agent.requestContextSchema) {\n try {\n serializedRequestContextSchema = stringify(zodToJsonSchema(agent.requestContextSchema));\n } catch (error) {\n logger.error('Error serializing requestContextSchema for agent', { agentName: agent.name, error });\n }\n }\n\n return {\n id: agent.id || id,\n name: agent.name,\n description,\n instructions,\n agents: serializedAgentAgents,\n tools: serializedAgentTools,\n workflows: serializedAgentWorkflows,\n skills: serializedSkills,\n workspaceTools,\n browserTools,\n workspaceId,\n inputProcessors: serializedInputProcessors,\n outputProcessors: serializedOutputProcessors,\n provider:\n typeof agent.model === 'string'\n ? (parseModelString(agent.model).provider ?? llm?.getProvider())\n : llm?.getProvider(),\n modelId: typeof agent.model === 'string' ? parseModelString(agent.model).modelId : llm?.getModelId(),\n modelVersion: model?.specificationVersion,\n defaultOptions,\n modelList,\n defaultGenerateOptionsLegacy,\n defaultStreamOptionsLegacy,\n requestContextSchema: serializedRequestContextSchema,\n source: (agent as any).source ?? 'code',\n ...(agent.toRawConfig()?.status\n ? { status: agent.toRawConfig()!.status as 'draft' | 'published' | 'archived' }\n : {}),\n ...(agent.toRawConfig()?.activeVersionId\n ? { activeVersionId: agent.toRawConfig()!.activeVersionId as string }\n : {}),\n hasDraft: !!(\n agent.toRawConfig()?.resolvedVersionId &&\n agent.toRawConfig()?.activeVersionId &&\n agent.toRawConfig()!.resolvedVersionId !== agent.toRawConfig()!.activeVersionId\n ),\n };\n}\n\nexport function extractVersionOptions(requestContext?: RequestContext): { versionId: string } | undefined {\n const agentVersionId = requestContext?.get('agentVersionId');\n if (typeof agentVersionId === 'string' && agentVersionId) {\n return { versionId: agentVersionId };\n }\n return undefined;\n}\n\nexport async function getAgentFromSystem({\n mastra,\n agentId,\n versionOptions,\n}: {\n mastra: Context['mastra'];\n agentId: string;\n versionOptions?: { status?: 'draft' | 'published' } | { versionId: string };\n}) {\n const logger = mastra.getLogger();\n\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n let agent;\n\n try {\n agent = mastra.getAgentById(agentId);\n } catch (error) {\n logger.debug('Error getting agent from mastra, searching agents for agent', error);\n }\n\n if (!agent) {\n logger.debug('Agent not found, looking through sub-agents', { agentId });\n const agents = mastra.listAgents();\n if (Object.keys(agents || {}).length) {\n for (const [_, ag] of Object.entries(agents)) {\n try {\n const subAgents = await ag.listAgents();\n\n if (subAgents[agentId]) {\n agent = subAgents[agentId];\n break;\n }\n } catch (error) {\n logger.debug('Error getting agent from agent', error);\n }\n }\n }\n }\n\n // If a code-defined agent was found, apply stored config overrides (if any)\n if (agent && mastra.getEditor) {\n try {\n const editorAgent = mastra.getEditor()?.agent;\n if (editorAgent) {\n agent = await editorAgent.applyStoredOverrides(agent, versionOptions ?? { status: 'published' });\n }\n } catch (error) {\n logger.debug('Error applying stored overrides to code agent', error);\n }\n }\n\n // If still not found, try to get stored agent\n if (!agent) {\n logger.debug('Agent not found in code-defined agents, looking in stored agents', { agentId });\n try {\n agent = (await mastra.getEditor()?.agent.getById(agentId, versionOptions)) ?? null;\n } catch (error) {\n logger.debug('Error getting stored agent', error);\n }\n }\n\n if (!agent) {\n throw new HTTPException(404, { message: `Agent with id ${agentId} not found` });\n }\n\n return agent;\n}\n\nasync function formatAgent({\n mastra,\n agent,\n requestContext,\n isStudio,\n}: {\n mastra: Context['mastra'];\n agent: Agent;\n requestContext: RequestContext;\n isStudio: boolean;\n}): Promise<SerializedAgent> {\n const description = agent.getDescription();\n\n const tools = await agent.listTools({ requestContext });\n const serializedAgentTools = await getSerializedAgentTools(tools);\n\n let serializedAgentWorkflows: Record<\n string,\n { name: string; steps: Record<string, { id: string; description?: string }> }\n > = {};\n\n if ('listWorkflows' in agent) {\n const logger = mastra.getLogger();\n try {\n const workflows = await agent.listWorkflows({ requestContext });\n\n serializedAgentWorkflows = Object.entries(workflows || {}).reduce<\n Record<string, { name: string; steps: Record<string, { id: string; description?: string }> }>\n >((acc, [key, workflow]) => {\n return {\n ...acc,\n [key]: {\n name: workflow.name || 'Unnamed workflow',\n steps: Object.entries(workflow.steps).reduce<Record<string, { id: string; description?: string }>>(\n (acc, [key, step]) => {\n return {\n ...acc,\n [key]: {\n id: step.id,\n description: step.description,\n },\n };\n },\n {},\n ),\n },\n };\n }, {});\n } catch (error) {\n logger.error('Error getting workflows for agent', { agentName: agent.name, error });\n }\n }\n\n let proxyRequestContext = requestContext;\n if (isStudio) {\n proxyRequestContext = new Proxy(requestContext, {\n get(target, prop) {\n if (prop === 'get') {\n return function (key: string) {\n const value = target.get(key);\n return value ?? `<${key}>`;\n };\n }\n return Reflect.get(target, prop);\n },\n });\n }\n\n const instructions = await agent.getInstructions({ requestContext: proxyRequestContext });\n const llm = await agent.getLLM({ requestContext });\n const defaultGenerateOptionsLegacy = await agent.getDefaultGenerateOptionsLegacy({\n requestContext: proxyRequestContext,\n });\n const defaultStreamOptionsLegacy = await agent.getDefaultStreamOptionsLegacy({ requestContext: proxyRequestContext });\n const defaultOptions = await agent.getDefaultOptions({ requestContext: proxyRequestContext });\n\n const model = llm?.getModel();\n const models = await agent.getModelList(requestContext);\n const modelList = models?.map(md => ({\n ...md,\n model: {\n modelId: md.model.modelId,\n provider: md.model.provider,\n modelVersion: md.model.specificationVersion,\n },\n }));\n\n const serializedAgentAgents = await getSerializedAgentDefinition({ agent, requestContext: proxyRequestContext });\n\n // Get and serialize only user-configured processors (excludes memory-derived processors)\n // This ensures the UI only shows processors explicitly configured by the user\n let serializedInputProcessors: ReturnType<typeof getSerializedProcessors> = [];\n let serializedOutputProcessors: ReturnType<typeof getSerializedProcessors> = [];\n try {\n const configuredProcessorWorkflows = await agent.getConfiguredProcessorWorkflows();\n const inputProcessorWorkflows = configuredProcessorWorkflows.filter(w => w.id.endsWith('-input-processor'));\n const outputProcessorWorkflows = configuredProcessorWorkflows.filter(w => w.id.endsWith('-output-processor'));\n serializedInputProcessors = getSerializedProcessors(inputProcessorWorkflows);\n serializedOutputProcessors = getSerializedProcessors(outputProcessorWorkflows);\n } catch (error) {\n mastra.getLogger().error('Error getting configured processors for agent', { agentName: agent.name, error });\n }\n\n // Extract skills, workspace tools, and workspaceId from agent's workspace\n const serializedSkills = await getSerializedSkillsFromAgent(agent, proxyRequestContext);\n const workspaceTools = await getWorkspaceToolsFromAgent(agent, proxyRequestContext);\n const browserTools = getBrowserToolsFromAgent(agent, createBrowserToolsErrorLogger(mastra.getLogger(), agent.id));\n\n // Get workspaceId if agent has a workspace\n let workspaceId: string | undefined;\n try {\n const workspace = await agent.getWorkspace({ requestContext: proxyRequestContext });\n workspaceId = workspace?.id;\n } catch {\n // Agent doesn't have a workspace or can't access it\n }\n\n // Serialize requestContextSchema if present\n let serializedRequestContextSchema: string | undefined;\n if (agent.requestContextSchema) {\n try {\n serializedRequestContextSchema = stringify(zodToJsonSchema(agent.requestContextSchema));\n } catch (error) {\n mastra.getLogger().error('Error serializing requestContextSchema for agent', { agentName: agent.name, error });\n }\n }\n\n return {\n name: agent.name,\n description,\n instructions,\n tools: serializedAgentTools,\n agents: serializedAgentAgents,\n workflows: serializedAgentWorkflows,\n skills: serializedSkills,\n workspaceTools,\n browserTools,\n workspaceId,\n inputProcessors: serializedInputProcessors,\n outputProcessors: serializedOutputProcessors,\n provider:\n typeof agent.model === 'string'\n ? (parseModelString(agent.model).provider ?? llm?.getProvider())\n : llm?.getProvider(),\n modelId: typeof agent.model === 'string' ? parseModelString(agent.model).modelId : llm?.getModelId(),\n modelVersion: model?.specificationVersion,\n modelList,\n defaultOptions,\n defaultGenerateOptionsLegacy,\n defaultStreamOptionsLegacy,\n requestContextSchema: serializedRequestContextSchema,\n source: (agent as any).source ?? 'code',\n ...(agent.toRawConfig()?.status\n ? { status: agent.toRawConfig()!.status as 'draft' | 'published' | 'archived' }\n : {}),\n };\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_AGENTS_ROUTE = createRoute({\n method: 'GET',\n path: '/agents',\n responseType: 'json',\n queryParamSchema: z.object({\n partial: z.string().optional(),\n }),\n responseSchema: listAgentsResponseSchema,\n summary: 'List all agents',\n description: 'Returns a list of all available agents in the system (both code-defined and stored)',\n tags: ['Agents'],\n requiresAuth: true,\n requiresPermission: 'agents:read',\n handler: async ({ mastra, requestContext, partial }) => {\n try {\n const codeAgents = mastra.listAgents();\n\n const isPartial = partial === 'true';\n\n // Apply stored config overrides to code-defined agents before serializing\n const editor = mastra.getEditor?.();\n const serializedCodeAgentsMap = await Promise.all(\n Object.entries(codeAgents).map(async ([id, agent]) => {\n let mergedAgent = agent;\n if (editor) {\n try {\n mergedAgent = await editor.agent.applyStoredOverrides(agent);\n } catch {\n // If overrides fail, use the original code agent\n }\n }\n return formatAgentList({ id, mastra, agent: mergedAgent, requestContext, partial: isPartial });\n }),\n );\n\n const serializedAgents = serializedCodeAgentsMap.reduce<Record<string, (typeof serializedCodeAgentsMap)[number]>>(\n (acc, { id, ...rest }) => {\n acc[id] = { id, ...rest };\n return acc;\n },\n {},\n );\n\n // Also fetch and include stored agents\n try {\n const editor = mastra.getEditor();\n\n let storedAgentsResult;\n try {\n storedAgentsResult = await editor?.agent.list();\n } catch (error) {\n console.error('Error listing stored agents:', error);\n storedAgentsResult = null;\n }\n\n if (storedAgentsResult?.agents) {\n // Process each agent individually to avoid one bad agent breaking the whole list\n for (const storedAgentConfig of storedAgentsResult.agents) {\n try {\n const agent = await editor?.agent.getById(storedAgentConfig.id, { status: 'draft' });\n if (!agent) continue;\n\n const serialized = await formatAgentList({\n id: agent.id,\n mastra,\n agent,\n requestContext,\n partial: isPartial,\n });\n\n // Don't overwrite code-defined agents with same ID\n if (!serializedAgents[serialized.id]) {\n serializedAgents[serialized.id] = serialized;\n }\n } catch (agentError) {\n // Log but continue with other agents\n const logger = mastra.getLogger();\n logger.warn('Failed to serialize stored agent', { agentId: storedAgentConfig.id, error: agentError });\n }\n }\n }\n } catch (storageError) {\n // Storage not configured or doesn't support agents - log and ignore\n const logger = mastra.getLogger();\n logger.debug('Could not fetch stored agents', { error: storageError });\n }\n\n return serializedAgents;\n } catch (error) {\n return handleError(error, 'Error getting agents');\n }\n },\n});\n\nexport const GET_AGENT_BY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n queryParamSchema: agentVersionQuerySchema,\n responseSchema: serializedAgentSchema,\n summary: 'Get agent by ID',\n description:\n 'Returns details for a specific agent including configuration, tools, and memory settings. Use query params to control which stored config version is used for overrides: ?status=published (active version, default), ?status=draft (latest draft), or ?versionId=<id> (specific version). Use either status or versionId, not both.',\n tags: ['Agents'],\n requiresAuth: true,\n requiresPermission: 'agents:read',\n handler: async ({ agentId, mastra, requestContext, status, versionId }) => {\n try {\n const versionOptions = versionId ? { versionId } : status ? { status } : undefined;\n const agent = await getAgentFromSystem({ mastra, agentId, versionOptions });\n const isStudio = false; // TODO: Get from context if needed\n const result = await formatAgent({\n mastra,\n agent,\n requestContext,\n isStudio,\n });\n return result;\n } catch (error) {\n return handleError(error, 'Error getting agent');\n }\n },\n});\n\n/**\n * POST /agents/:agentId/clone - Clone an agent to a stored agent\n */\nexport const CLONE_AGENT_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/clone',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: z.object({\n newId: z.string().optional().describe('ID for the cloned agent. If not provided, derived from agent ID.'),\n newName: z.string().optional().describe('Name for the cloned agent. Defaults to \"{name} (Clone)\".'),\n metadata: z.record(z.string(), z.unknown()).optional(),\n authorId: z.string().optional(),\n }),\n responseSchema: createStoredAgentResponseSchema,\n summary: 'Clone agent',\n description: 'Clones a code-defined or stored agent to a new stored agent in the database',\n tags: ['Agents'],\n requiresAuth: true,\n handler: async ({ agentId, mastra, newId, newName, metadata, authorId, requestContext }) => {\n try {\n const editor = mastra.getEditor();\n if (!editor) {\n return handleError(new Error('Editor is not configured on the Mastra instance'), 'Error cloning agent');\n }\n\n const agent = await getAgentFromSystem({\n mastra,\n agentId,\n versionOptions: extractVersionOptions(requestContext),\n });\n\n const cloneId = toSlug(newId || `${agentId}-clone`);\n\n const result = await editor.agent.clone(agent, {\n newId: cloneId,\n newName,\n metadata,\n authorId,\n requestContext,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error cloning agent');\n }\n },\n});\n\nexport const GENERATE_AGENT_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/generate',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: generateResponseSchema,\n summary: 'Generate agent response',\n description: 'Executes an agent with the provided messages and returns the complete response',\n tags: ['Agents'],\n requiresAuth: true,\n requiresPermission: 'agents:execute',\n handler: async ({ agentId, mastra, abortSignal, requestContext: serverRequestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({\n mastra,\n agentId,\n versionOptions: extractVersionOptions(serverRequestContext),\n });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const { messages, memory: memoryOption, requestContext: bodyRequestContext, ...rest } = params;\n\n validateBody({ messages });\n\n // Merge body's requestContext values into the server's RequestContext instance\n // Only set values that don't already exist on the server context to prevent\n // clients from overwriting server-populated auth/tenant values\n if (bodyRequestContext && typeof bodyRequestContext === 'object') {\n for (const [key, value] of Object.entries(bodyRequestContext)) {\n if (serverRequestContext.get(key) === undefined) {\n serverRequestContext.set(key, value);\n }\n }\n }\n\n // Authorization: apply context overrides to memory option if present\n let authorizedMemoryOption = memoryOption;\n if (memoryOption) {\n const clientThreadId = typeof memoryOption.thread === 'string' ? memoryOption.thread : memoryOption.thread?.id;\n\n const effectiveResourceId = getEffectiveResourceId(serverRequestContext, memoryOption.resource);\n const effectiveThreadId = getEffectiveThreadId(serverRequestContext, clientThreadId);\n\n // Validate thread ownership if accessing an existing thread\n if (effectiveThreadId && effectiveResourceId) {\n const memoryInstance = await agent.getMemory({ requestContext: serverRequestContext });\n if (memoryInstance) {\n const thread = await memoryInstance.getThreadById({ threadId: effectiveThreadId });\n await validateThreadOwnership(thread, effectiveResourceId);\n }\n }\n\n // Build authorized memory option with effective values\n authorizedMemoryOption = {\n ...memoryOption,\n resource: effectiveResourceId ?? memoryOption.resource,\n thread: effectiveThreadId ?? memoryOption.thread,\n };\n }\n\n const { structuredOutput, ...restOptions } = rest;\n\n const options = {\n ...restOptions,\n requestContext: serverRequestContext,\n memory: authorizedMemoryOption,\n abortSignal,\n };\n\n const result = structuredOutput\n ? await agent.generate(messages, { ...options, structuredOutput })\n : await agent.generate(messages, options);\n\n return result;\n } catch (error) {\n return handleError(error, 'Error generating from agent');\n }\n },\n});\n\n// Legacy routes (deprecated)\nexport const GENERATE_LEGACY_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/generate-legacy',\n responseType: 'json' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionLegacyBodySchema,\n responseSchema: generateResponseSchema,\n summary: '[DEPRECATED] Generate with legacy format',\n description: 'Legacy endpoint for generating agent responses. Use /agents/:agentId/generate instead.',\n tags: ['Agents', 'Legacy'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, abortSignal, requestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({\n mastra,\n agentId,\n versionOptions: extractVersionOptions(requestContext),\n });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const { messages, resourceId, resourceid, threadId, ...rest } = params;\n // Use resourceId if provided, fall back to resourceid (deprecated)\n const clientResourceId = resourceId ?? resourceid;\n\n // Authorization: context values take precedence over client-provided values\n const effectiveResourceId = getEffectiveResourceId(requestContext, clientResourceId);\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n\n validateBody({ messages });\n\n if ((effectiveThreadId && !effectiveResourceId) || (!effectiveThreadId && effectiveResourceId)) {\n throw new HTTPException(400, { message: 'Both threadId or resourceId must be provided' });\n }\n\n // Validate thread ownership if accessing an existing thread\n if (effectiveThreadId && effectiveResourceId) {\n const memory = await agent.getMemory({ requestContext });\n if (memory) {\n const thread = await memory.getThreadById({ threadId: effectiveThreadId });\n await validateThreadOwnership(thread, effectiveResourceId);\n }\n }\n\n const result = await agent.generateLegacy(messages, {\n ...rest,\n abortSignal,\n resourceId: effectiveResourceId ?? '',\n threadId: effectiveThreadId ?? '',\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error generating from agent');\n }\n },\n});\n\nexport const STREAM_GENERATE_LEGACY_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/stream-legacy',\n responseType: 'datastream-response' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionLegacyBodySchema,\n responseSchema: streamResponseSchema,\n summary: '[DEPRECATED] Stream with legacy format',\n description: 'Legacy endpoint for streaming agent responses. Use /agents/:agentId/stream instead.',\n tags: ['Agents', 'Legacy'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, abortSignal, requestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({\n mastra,\n agentId,\n versionOptions: extractVersionOptions(requestContext),\n });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const { messages, resourceId, resourceid, threadId, ...rest } = params;\n // Use resourceId if provided, fall back to resourceid (deprecated)\n const clientResourceId = resourceId ?? resourceid;\n\n // Authorization: context values take precedence over client-provided values\n const effectiveResourceId = getEffectiveResourceId(requestContext, clientResourceId);\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n\n validateBody({ messages });\n\n if ((effectiveThreadId && !effectiveResourceId) || (!effectiveThreadId && effectiveResourceId)) {\n throw new HTTPException(400, { message: 'Both threadId or resourceId must be provided' });\n }\n\n // Validate thread ownership if accessing an existing thread\n if (effectiveThreadId && effectiveResourceId) {\n const memory = await agent.getMemory({ requestContext });\n if (memory) {\n const thread = await memory.getThreadById({ threadId: effectiveThreadId });\n await validateThreadOwnership(thread, effectiveResourceId);\n }\n }\n\n const streamResult = await agent.streamLegacy(messages, {\n ...rest,\n abortSignal,\n resourceId: effectiveResourceId ?? '',\n threadId: effectiveThreadId ?? '',\n });\n\n // Note: Do NOT set Transfer-Encoding header explicitly in the headers option.\n // Runtimes automatically add this header for streaming responses,\n // and setting it explicitly causes duplicate headers which break HTTP protocol.\n const streamResponse = rest.output\n ? streamResult.toTextStreamResponse()\n : streamResult.toDataStreamResponse({\n sendUsage: true,\n sendReasoning: true,\n getErrorMessage: (error: any) => {\n return `An error occurred while processing your request. ${error instanceof Error ? error.message : JSON.stringify(error)}`;\n },\n });\n\n return streamResponse;\n } catch (error) {\n return handleError(error, 'error streaming agent response');\n }\n },\n});\n\nexport const GET_PROVIDERS_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/providers',\n responseType: 'json',\n responseSchema: providersResponseSchema,\n summary: 'List AI providers',\n description: 'Returns a list of all configured AI model providers',\n tags: ['Agents'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const allProviders: Record<string, ProviderConfig> = {};\n\n for (const [id, provider] of Object.entries(PROVIDER_REGISTRY)) {\n allProviders[id] = provider as ProviderConfig;\n }\n\n // Include gateway providers (defaults + user-registered)\n if (mastra) {\n const allGateways = mastra.listGateways();\n if (allGateways) {\n for (const gateway of Object.values(allGateways)) {\n // Skip models.dev gateway (already covered by PROVIDER_REGISTRY)\n if (gateway.id === 'models.dev') continue;\n try {\n const gatewayProviders = await gateway.fetchProviders();\n for (const [providerId, config] of Object.entries(gatewayProviders)) {\n allProviders[providerId] = config;\n }\n } catch (error) {\n console.warn(`Failed to fetch providers from gateway \"${gateway.id}\":`, error);\n }\n }\n }\n }\n\n const providers = Object.entries(allProviders).map(([id, provider]) => {\n return {\n id,\n name: provider.name,\n label: (provider as any).label || provider.name,\n description: (provider as any).description || '',\n envVar: provider.apiKeyEnvVar,\n connected: isProviderConnected(id, allProviders),\n docUrl: provider.docUrl,\n models: [...provider.models],\n };\n });\n return { providers };\n } catch (error) {\n return handleError(error, 'Error fetching providers');\n }\n },\n});\n\nexport const GENERATE_AGENT_VNEXT_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/generate/vnext',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: generateResponseSchema,\n summary: 'Generate a response from an agent',\n description: 'Generate a response from an agent',\n tags: ['Agents'],\n requiresAuth: true,\n handler: GENERATE_AGENT_ROUTE.handler,\n});\n\nexport const STREAM_GENERATE_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/stream',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream agent response',\n description: 'Executes an agent with the provided messages and streams the response in real-time',\n tags: ['Agents'],\n requiresAuth: true,\n requiresPermission: 'agents:execute',\n handler: async ({ mastra, agentId, abortSignal, requestContext: serverRequestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({\n mastra,\n agentId,\n versionOptions: extractVersionOptions(serverRequestContext),\n });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const { messages, memory: memoryOption, requestContext: bodyRequestContext, ...rest } = params;\n validateBody({ messages });\n\n // Merge body's requestContext values into the server's RequestContext instance\n // Only set values that don't already exist on the server context to prevent\n // clients from overwriting server-populated auth/tenant values\n if (bodyRequestContext && typeof bodyRequestContext === 'object') {\n for (const [key, value] of Object.entries(bodyRequestContext)) {\n if (serverRequestContext.get(key) === undefined) {\n serverRequestContext.set(key, value);\n }\n }\n }\n\n // Authorization: apply context overrides to memory option if present\n let authorizedMemoryOption = memoryOption;\n if (memoryOption) {\n const clientThreadId = typeof memoryOption.thread === 'string' ? memoryOption.thread : memoryOption.thread?.id;\n\n const effectiveResourceId = getEffectiveResourceId(serverRequestContext, memoryOption.resource);\n const effectiveThreadId = getEffectiveThreadId(serverRequestContext, clientThreadId);\n\n // Validate thread ownership if accessing an existing thread\n if (effectiveThreadId && effectiveResourceId) {\n const memoryInstance = await agent.getMemory({ requestContext: serverRequestContext });\n if (memoryInstance) {\n const thread = await memoryInstance.getThreadById({ threadId: effectiveThreadId });\n await validateThreadOwnership(thread, effectiveResourceId);\n }\n }\n\n // Build authorized memory option with effective values\n authorizedMemoryOption = {\n ...memoryOption,\n resource: effectiveResourceId ?? memoryOption.resource,\n thread: effectiveThreadId ?? memoryOption.thread,\n };\n }\n\n const { structuredOutput, ...restOptions } = rest;\n\n const options = {\n ...restOptions,\n requestContext: serverRequestContext,\n memory: authorizedMemoryOption,\n abortSignal,\n };\n\n const streamResult = structuredOutput\n ? await agent.stream(messages, { ...options, structuredOutput })\n : await agent.stream(messages, options);\n\n return streamResult.fullStream;\n } catch (error) {\n return handleError(error, 'error streaming agent response');\n }\n },\n});\n\nexport const STREAM_GENERATE_VNEXT_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/stream/vnext',\n responseType: 'stream',\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream a response from an agent',\n description: '[DEPRECATED] This endpoint is deprecated. Please use /stream instead.',\n tags: ['Agents'],\n requiresAuth: true,\n deprecated: true,\n handler: STREAM_GENERATE_ROUTE.handler,\n});\n\nexport const APPROVE_TOOL_CALL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/approve-tool-call',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: approveToolCallBodySchema,\n responseSchema: toolCallResponseSchema,\n summary: 'Approve tool call',\n description: 'Approves a pending tool call and continues agent execution',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, abortSignal, requestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({\n mastra,\n agentId,\n versionOptions: extractVersionOptions(requestContext),\n });\n\n if (!params.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n if (!params.toolCallId) {\n throw new HTTPException(400, { message: 'Tool call id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const streamResult = await agent.approveToolCall({\n ...params,\n abortSignal,\n });\n\n return streamResult.fullStream;\n } catch (error) {\n return handleError(error, 'error approving tool call');\n }\n },\n});\n\nexport const DECLINE_TOOL_CALL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/decline-tool-call',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: declineToolCallBodySchema,\n responseSchema: toolCallResponseSchema,\n summary: 'Decline tool call',\n description: 'Declines a pending tool call and continues agent execution without executing the tool',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, abortSignal, requestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({\n mastra,\n agentId,\n versionOptions: extractVersionOptions(requestContext),\n });\n\n if (!params.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n if (!params.toolCallId) {\n throw new HTTPException(400, { message: 'Tool call id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const streamResult = await agent.declineToolCall({\n ...params,\n abortSignal,\n });\n\n return streamResult.fullStream;\n } catch (error) {\n return handleError(error, 'error declining tool call');\n }\n },\n});\n\nexport const APPROVE_TOOL_CALL_GENERATE_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/approve-tool-call-generate',\n responseType: 'json' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: approveToolCallBodySchema,\n responseSchema: generateResponseSchema,\n summary: 'Approve tool call (non-streaming)',\n description: 'Approves a pending tool call and returns the complete response',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, abortSignal, requestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({\n mastra,\n agentId,\n versionOptions: extractVersionOptions(requestContext),\n });\n\n if (!params.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n if (!params.toolCallId) {\n throw new HTTPException(400, { message: 'Tool call id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const result = await agent.approveToolCallGenerate({\n ...params,\n abortSignal,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'error approving tool call');\n }\n },\n});\n\nexport const DECLINE_TOOL_CALL_GENERATE_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/decline-tool-call-generate',\n responseType: 'json' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: declineToolCallBodySchema,\n responseSchema: generateResponseSchema,\n summary: 'Decline tool call (non-streaming)',\n description: 'Declines a pending tool call and returns the complete response',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, abortSignal, requestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({\n mastra,\n agentId,\n versionOptions: extractVersionOptions(requestContext),\n });\n\n if (!params.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n if (!params.toolCallId) {\n throw new HTTPException(400, { message: 'Tool call id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const result = await agent.declineToolCallGenerate({\n ...params,\n abortSignal,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'error declining tool call');\n }\n },\n});\n\nexport const STREAM_NETWORK_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/network',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream agent network',\n description: 'Executes an agent network with multiple agents and streams the response',\n tags: ['Agents'],\n requiresAuth: true,\n handler: async ({ mastra, messages, agentId, requestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({\n mastra,\n agentId,\n versionOptions: extractVersionOptions(requestContext),\n });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n validateBody({ messages });\n\n const streamResult = await agent.network(messages, {\n ...params,\n });\n\n return streamResult;\n } catch (error) {\n return handleError(error, 'error streaming agent loop response');\n }\n },\n});\n\nexport const APPROVE_NETWORK_TOOL_CALL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/approve-network-tool-call',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: approveNetworkToolCallBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Approve network tool call',\n description: 'Approves a pending network tool call and continues network agent execution',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, requestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({\n mastra,\n agentId,\n versionOptions: extractVersionOptions(requestContext),\n });\n\n if (!params.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const streamResult = await agent.approveNetworkToolCall({\n ...params,\n });\n\n return streamResult;\n } catch (error) {\n return handleError(error, 'error approving network tool call');\n }\n },\n});\n\nexport const DECLINE_NETWORK_TOOL_CALL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/decline-network-tool-call',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: declineNetworkToolCallBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Decline network tool call',\n description: 'Declines a pending network tool call and continues network agent execution without executing the tool',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, requestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({\n mastra,\n agentId,\n versionOptions: extractVersionOptions(requestContext),\n });\n\n if (!params.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const streamResult = await agent.declineNetworkToolCall({\n ...params,\n });\n\n return streamResult;\n } catch (error) {\n return handleError(error, 'error declining network tool call');\n }\n },\n});\n\nexport const UPDATE_AGENT_MODEL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/model',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: updateAgentModelBodySchema,\n responseSchema: modelManagementResponseSchema,\n summary: 'Update agent model',\n description: 'Updates the AI model used by the agent',\n tags: ['Agents', 'Models'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, modelId, provider }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // Use the universal Mastra router format: provider/model\n const newModel = `${provider}/${modelId}`;\n\n // Update the model in-memory only (for temporary testing)\n // This allows users to test different models without persisting\n // To save permanently, users should use the Edit agent dialog\n agent.__updateModel({ model: newModel });\n\n return { message: 'Agent model updated' };\n } catch (error) {\n return handleError(error, 'error updating agent model');\n }\n },\n});\n\nexport const RESET_AGENT_MODEL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/model/reset',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n responseSchema: modelManagementResponseSchema,\n summary: 'Reset agent model',\n description: 'Resets the agent model to its original configuration',\n tags: ['Agents', 'Models'],\n requiresAuth: true,\n handler: async ({ mastra, agentId }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n agent.__resetToOriginalModel();\n\n return { message: 'Agent model reset to original' };\n } catch (error) {\n return handleError(error, 'error resetting agent model');\n }\n },\n});\n\nexport const REORDER_AGENT_MODEL_LIST_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/models/reorder',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: reorderAgentModelListBodySchema,\n responseSchema: modelManagementResponseSchema,\n summary: 'Reorder agent model list',\n description: 'Reorders the model list for agents with multiple model configurations',\n tags: ['Agents', 'Models'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, reorderedModelIds }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const modelList = await agent.getModelList();\n if (!modelList || modelList.length === 0) {\n throw new HTTPException(400, { message: 'Agent model list is not found or empty' });\n }\n\n agent.reorderModels(reorderedModelIds);\n\n return { message: 'Model list reordered' };\n } catch (error) {\n return handleError(error, 'error reordering model list');\n }\n },\n});\n\nexport const UPDATE_AGENT_MODEL_IN_MODEL_LIST_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/models/:modelConfigId',\n responseType: 'json',\n pathParamSchema: modelConfigIdPathParams,\n bodySchema: updateAgentModelInModelListBodySchema,\n responseSchema: modelManagementResponseSchema,\n summary: 'Update model in model list',\n description: 'Updates a specific model configuration in the agent model list',\n tags: ['Agents', 'Models'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, modelConfigId, model: bodyModel, maxRetries, enabled }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const modelList = await agent.getModelList();\n if (!modelList || modelList.length === 0) {\n throw new HTTPException(400, { message: 'Agent model list is not found or empty' });\n }\n\n const modelConfig = modelList.find(config => config.id === modelConfigId);\n if (!modelConfig) {\n throw new HTTPException(404, { message: `Model config with id ${modelConfigId} not found` });\n }\n\n const newModel =\n bodyModel?.modelId && bodyModel?.provider ? `${bodyModel.provider}/${bodyModel.modelId}` : modelConfig.model;\n\n const updated = {\n ...modelConfig,\n model: newModel,\n ...(maxRetries !== undefined ? { maxRetries } : {}),\n ...(enabled !== undefined ? { enabled } : {}),\n };\n\n agent.updateModelInModelList(updated);\n\n return { message: 'Model updated in model list' };\n } catch (error) {\n return handleError(error, 'error updating model in model list');\n }\n },\n});\n\nconst ENHANCE_SYSTEM_PROMPT_INSTRUCTIONS = `You are an expert system prompt engineer, specialized in analyzing and enhancing instructions to create clear, effective, and comprehensive system prompts. Your goal is to help users transform their basic instructions into well-structured system prompts that will guide AI behavior effectively.\n\nFollow these steps to analyze and enhance the instructions:\n\n1. ANALYSIS PHASE\n- Identify the core purpose and goals\n- Extract key constraints and requirements\n- Recognize domain-specific terminology and concepts\n- Note any implicit assumptions that should be made explicit\n\n2. PROMPT STRUCTURE\nCreate a system prompt with these components:\na) ROLE DEFINITION\n - Clear statement of the AI's role and purpose\n - Key responsibilities and scope\n - Primary stakeholders and users\nb) CORE CAPABILITIES\n - Main functions and abilities\n - Specific domain knowledge required\n - Tools and resources available\nc) BEHAVIORAL GUIDELINES\n - Communication style and tone\n - Decision-making framework\n - Error handling approach\n - Ethical considerations\nd) CONSTRAINTS & BOUNDARIES\n - Explicit limitations\n - Out-of-scope activities\n - Security and privacy considerations\ne) SUCCESS CRITERIA\n - Quality standards\n - Expected outcomes\n - Performance metrics\n\n3. QUALITY CHECKS\nEnsure the prompt is:\n- Clear and unambiguous\n- Comprehensive yet concise\n- Properly scoped\n- Technically accurate\n- Ethically sound\n\n4. OUTPUT FORMAT\nReturn your response as JSON with exactly these two fields:\n- explanation: A brief explanation of the changes you made and why\n- new_prompt: The complete enhanced system prompt as a single string\n\nRemember: A good system prompt should be specific enough to guide behavior but flexible enough to handle edge cases. Focus on creating prompts that are clear, actionable, and aligned with the intended use case.`;\n\n// Helper to find the first model with a connected provider\nasync function findConnectedModel(agent: Agent): Promise<Awaited<ReturnType<Agent['getModel']>> | null> {\n const modelList = await agent.getModelList();\n\n if (modelList && modelList.length > 0) {\n // Find the first enabled model with a connected provider\n for (const modelConfig of modelList) {\n if (modelConfig.enabled !== false) {\n const model = modelConfig.model;\n if (isProviderConnected(model.provider)) {\n return model;\n }\n }\n }\n return null;\n }\n\n // No model list, check the default model\n const defaultModel = await agent.getModel();\n if (isProviderConnected(defaultModel.provider)) {\n return defaultModel;\n }\n return null;\n}\n\ntype EnhanceInstructionsResponse = z.infer<typeof enhanceInstructionsResponseSchema>;\n\nexport const ENHANCE_INSTRUCTIONS_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/instructions/enhance',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: enhanceInstructionsBodySchema,\n responseSchema: enhanceInstructionsResponseSchema,\n summary: 'Enhance agent instructions',\n description: 'Uses AI to enhance or modify agent instructions based on user feedback',\n tags: ['Agents'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, instructions, comment }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // Find the first model with a connected provider (similar to how chat works)\n const model = await findConnectedModel(agent);\n if (!model) {\n throw new HTTPException(400, {\n message:\n 'No model with a configured API key found. Please set the required environment variable for your model provider.',\n });\n }\n\n const systemPromptAgent = new Agent({\n id: 'system-prompt-enhancer',\n name: 'system-prompt-enhancer',\n instructions: ENHANCE_SYSTEM_PROMPT_INSTRUCTIONS,\n model,\n });\n\n const result = await systemPromptAgent.generate(\n `We need to improve the system prompt.\nCurrent: ${instructions}\n${comment ? `User feedback: ${comment}` : ''}`,\n {\n structuredOutput: {\n schema: enhanceInstructionsResponseSchema,\n },\n },\n );\n\n return (await result.object) as unknown as EnhanceInstructionsResponse;\n } catch (error) {\n return handleError(error, 'Error enhancing instructions');\n }\n },\n});\n\nexport const STREAM_VNEXT_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/streamVNext',\n responseType: 'stream',\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream a response from an agent',\n description: '[DEPRECATED] This endpoint is deprecated. Please use /stream instead.',\n tags: ['Agents'],\n requiresAuth: true,\n deprecated: true,\n handler: async () => {\n throw new HTTPException(410, { message: 'This endpoint is deprecated. Please use /stream instead.' });\n },\n});\n\nexport const STREAM_UI_MESSAGE_VNEXT_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/stream/vnext/ui',\n responseType: 'stream',\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream UI messages from an agent',\n description:\n '[DEPRECATED] This endpoint is deprecated. Please use the @mastra/ai-sdk package for uiMessage transformations',\n tags: ['Agents'],\n requiresAuth: true,\n deprecated: true,\n handler: async () => {\n try {\n throw new MastraError({\n category: ErrorCategory.USER,\n domain: ErrorDomain.MASTRA_SERVER,\n id: 'DEPRECATED_ENDPOINT',\n text: 'This endpoint is deprecated. Please use the @mastra/ai-sdk package to for uiMessage transformations',\n });\n } catch (error) {\n return handleError(error, 'error streaming agent response');\n }\n },\n});\n\nexport const STREAM_UI_MESSAGE_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/stream/ui',\n responseType: 'stream',\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream UI messages from an agent',\n description:\n '[DEPRECATED] This endpoint is deprecated. Please use the @mastra/ai-sdk package for uiMessage transformations',\n tags: ['Agents'],\n requiresAuth: true,\n deprecated: true,\n handler: STREAM_UI_MESSAGE_VNEXT_DEPRECATED_ROUTE.handler,\n});\n\n// ============================================================================\n// Agent Skill Routes\n// ============================================================================\n\nexport const GET_AGENT_SKILL_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId/skills/:skillName',\n responseType: 'json',\n pathParamSchema: agentSkillPathParams,\n queryParamSchema: skillDisambiguationQuerySchema,\n responseSchema: getAgentSkillResponseSchema,\n summary: 'Get agent skill',\n description: 'Returns details for a specific skill available to the agent via its workspace',\n tags: ['Agents', 'Skills'],\n handler: async ({ mastra, agentId, skillName, path, requestContext }) => {\n try {\n const agent = agentId ? mastra.getAgentById(agentId) : null;\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n // Get the agent's workspace\n const workspace = await agent.getWorkspace({ requestContext });\n if (!workspace?.skills) {\n throw new HTTPException(404, { message: 'Agent does not have skills configured' });\n }\n\n // Use the optional ?path= query param for disambiguation, otherwise fall back to name\n const identifier = path ? decodeURIComponent(path) : skillName;\n\n // Get the skill from the workspace\n const skill = await workspace.skills.get(identifier);\n if (!skill) {\n throw new HTTPException(404, { message: `Skill \"${identifier}\" not found` });\n }\n\n return {\n name: skill.name,\n description: skill.description,\n license: skill.license,\n compatibility: skill.compatibility,\n metadata: skill.metadata,\n path: skill.path,\n instructions: skill.instructions,\n source: skill.source,\n references: skill.references,\n scripts: skill.scripts,\n assets: skill.assets,\n };\n } catch (error) {\n return handleError(error, 'Error getting agent skill');\n }\n },\n});\n","/**\n * Workspace tool constants and utilities.\n *\n * Inlined from @mastra/core/workspace to avoid import compatibility\n * issues with older core versions that don't have the workspace module.\n */\n\nexport const WORKSPACE_TOOLS_PREFIX = 'mastra_workspace' as const;\n\nexport const WORKSPACE_TOOLS = {\n FILESYSTEM: {\n READ_FILE: `${WORKSPACE_TOOLS_PREFIX}_read_file` as const,\n WRITE_FILE: `${WORKSPACE_TOOLS_PREFIX}_write_file` as const,\n EDIT_FILE: `${WORKSPACE_TOOLS_PREFIX}_edit_file` as const,\n LIST_FILES: `${WORKSPACE_TOOLS_PREFIX}_list_files` as const,\n DELETE: `${WORKSPACE_TOOLS_PREFIX}_delete` as const,\n FILE_STAT: `${WORKSPACE_TOOLS_PREFIX}_file_stat` as const,\n MKDIR: `${WORKSPACE_TOOLS_PREFIX}_mkdir` as const,\n GREP: `${WORKSPACE_TOOLS_PREFIX}_grep` as const,\n },\n SANDBOX: {\n EXECUTE_COMMAND: `${WORKSPACE_TOOLS_PREFIX}_execute_command` as const,\n },\n SEARCH: {\n SEARCH: `${WORKSPACE_TOOLS_PREFIX}_search` as const,\n INDEX: `${WORKSPACE_TOOLS_PREFIX}_index` as const,\n },\n} as const;\n\nexport type WorkspaceToolName =\n | (typeof WORKSPACE_TOOLS.FILESYSTEM)[keyof typeof WORKSPACE_TOOLS.FILESYSTEM]\n | (typeof WORKSPACE_TOOLS.SEARCH)[keyof typeof WORKSPACE_TOOLS.SEARCH]\n | (typeof WORKSPACE_TOOLS.SANDBOX)[keyof typeof WORKSPACE_TOOLS.SANDBOX];\n\n/**\n * Configuration for a single workspace tool.\n */\nexport interface WorkspaceToolConfig {\n enabled?: boolean;\n requireApproval?: boolean;\n requireReadBeforeWrite?: boolean;\n}\n\n/**\n * Configuration for workspace tools.\n */\nexport type WorkspaceToolsConfig = {\n enabled?: boolean;\n requireApproval?: boolean;\n} & Partial<Record<WorkspaceToolName, WorkspaceToolConfig>>;\n\n/**\n * Resolve the effective configuration for a workspace tool.\n * Inlined from @mastra/core/workspace for compatibility.\n */\nexport function resolveToolConfig(\n toolsConfig: WorkspaceToolsConfig | undefined,\n toolName: WorkspaceToolName,\n): { enabled: boolean; requireApproval: boolean; requireReadBeforeWrite?: boolean } {\n let enabled = true;\n let requireApproval = false;\n let requireReadBeforeWrite: boolean | undefined;\n\n if (toolsConfig) {\n if (toolsConfig.enabled !== undefined) {\n enabled = toolsConfig.enabled;\n }\n if (toolsConfig.requireApproval !== undefined) {\n requireApproval = toolsConfig.requireApproval;\n }\n\n const perToolConfig = toolsConfig[toolName];\n if (perToolConfig) {\n if (perToolConfig.enabled !== undefined) {\n enabled = perToolConfig.enabled;\n }\n if (perToolConfig.requireApproval !== undefined) {\n requireApproval = perToolConfig.requireApproval;\n }\n if (perToolConfig.requireReadBeforeWrite !== undefined) {\n requireReadBeforeWrite = perToolConfig.requireReadBeforeWrite;\n }\n }\n }\n\n return { enabled, requireApproval, requireReadBeforeWrite };\n}\n"]}
|