@mastra/server 1.80.0-alpha.3 → 1.80.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_types/@internal_core/dist/storage/index.d.ts +0 -12
- package/dist/_types/@internal_voice/dist/_types/@internal_core/dist/request-context/index.d.ts +0 -2
- package/dist/_types/@internal_voice/dist/_types/@internal_core/dist/routes/index.d.ts +0 -2
- package/dist/_types/@internal_voice/dist/_types/@internal_core/dist/types/index.d.ts +0 -2
- package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-sdk-v5/dist/index.d.ts +65 -13
- package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-v6/dist/index.d.ts +110 -35
- package/dist/{a2a-BKtK_s5o.cjs → a2a-BaRqCOUl.cjs} +14 -22
- package/dist/{a2a-BKtK_s5o.cjs.map → a2a-BaRqCOUl.cjs.map} +1 -1
- package/dist/{a2a-CBl-c-lm.cjs → a2a-BsBYrosr.cjs} +2 -3
- package/dist/{a2a-CBl-c-lm.cjs.map → a2a-BsBYrosr.cjs.map} +1 -1
- package/dist/{a2a-BS0gTQk3.js → a2a-C3ClP3C2.js} +2 -3
- package/dist/{a2a-BS0gTQk3.js.map → a2a-C3ClP3C2.js.map} +1 -1
- package/dist/{a2a-DKGBctKT.js → a2a-CApzjeDH.js} +13 -21
- package/dist/{a2a-DKGBctKT.js.map → a2a-CApzjeDH.js.map} +1 -1
- package/dist/{agent-builder-DDYdQvlQ.cjs → agent-builder-9-GSvpgR.cjs} +3 -4
- package/dist/{agent-builder-DDYdQvlQ.cjs.map → agent-builder-9-GSvpgR.cjs.map} +1 -1
- package/dist/{agent-builder-B8kc4OBs.js → agent-builder-Cr-52Ulb.js} +3 -4
- package/dist/{agent-builder-B8kc4OBs.js.map → agent-builder-Cr-52Ulb.js.map} +1 -1
- package/dist/{agent-builder-C-U5USc5.js → agent-builder-Cv6X2dKZ.js} +12 -13
- package/dist/{agent-builder-C-U5USc5.js.map → agent-builder-Cv6X2dKZ.js.map} +1 -1
- package/dist/{agent-builder-us2nwcWc.cjs → agent-builder-DExL1jAO.cjs} +12 -13
- package/dist/{agent-builder-us2nwcWc.cjs.map → agent-builder-DExL1jAO.cjs.map} +1 -1
- package/dist/{agent-versions-CzXJWn1T.cjs → agent-versions-De5bRBaa.cjs} +5 -6
- package/dist/{agent-versions-CzXJWn1T.cjs.map → agent-versions-De5bRBaa.cjs.map} +1 -1
- package/dist/{agent-versions-W600H1ME.js → agent-versions-Pa-ABszp.js} +5 -6
- package/dist/{agent-versions-W600H1ME.js.map → agent-versions-Pa-ABszp.js.map} +1 -1
- package/dist/{agents-D1-fgNeb.js → agents-A-ahR0eQ.js} +5 -6
- package/dist/{agents-D1-fgNeb.js.map → agents-A-ahR0eQ.js.map} +1 -1
- package/dist/{agents-AyHEkc2F.cjs → agents-BBaFtyAt.cjs} +20 -21
- package/dist/agents-BBaFtyAt.cjs.map +1 -0
- package/dist/{agents-BYE5Dmfk.js → agents-CGS0tE4p.js} +19 -20
- package/dist/agents-CGS0tE4p.js.map +1 -0
- package/dist/{agents-B1EiIdRs.cjs → agents-vFpMvK3w.cjs} +5 -6
- package/dist/{agents-B1EiIdRs.cjs.map → agents-vFpMvK3w.cjs.map} +1 -1
- package/dist/{api-schema-manifest-A066IsPX.js → api-schema-manifest-BCIpcado.js} +4 -5
- package/dist/{api-schema-manifest-A066IsPX.js.map → api-schema-manifest-BCIpcado.js.map} +1 -1
- package/dist/{api-schema-manifest-BaF6TE9d.cjs → api-schema-manifest-BRItYYlN.cjs} +5 -6
- package/dist/{api-schema-manifest-BaF6TE9d.cjs.map → api-schema-manifest-BRItYYlN.cjs.map} +1 -1
- package/dist/{auth-B8fQdEg-.cjs → auth-CM5AgF9l.cjs} +2 -3
- package/dist/{auth-B8fQdEg-.cjs.map → auth-CM5AgF9l.cjs.map} +1 -1
- package/dist/{auth-CZFXpwba.js → auth-CjT_a76k.js} +2 -3
- package/dist/{auth-CZFXpwba.js.map → auth-CjT_a76k.js.map} +1 -1
- package/dist/{background-tasks-B3VAKTJh.cjs → background-tasks-BMp9Q6SB.cjs} +7 -9
- package/dist/{background-tasks-B3VAKTJh.cjs.map → background-tasks-BMp9Q6SB.cjs.map} +1 -1
- package/dist/{background-tasks-Du2zYOPl.js → background-tasks-DIpPsqVy.js} +7 -9
- package/dist/{background-tasks-Du2zYOPl.js.map → background-tasks-DIpPsqVy.js.map} +1 -1
- package/dist/{builder-registry-DLdu9bWH.js → builder-registry-CtGv0Gj6.js} +7 -9
- package/dist/{builder-registry-DLdu9bWH.js.map → builder-registry-CtGv0Gj6.js.map} +1 -1
- package/dist/{builder-registry-DaFAaMTf.cjs → builder-registry-DWusXgse.cjs} +7 -9
- package/dist/{builder-registry-DaFAaMTf.cjs.map → builder-registry-DWusXgse.cjs.map} +1 -1
- package/dist/{channels-BnVRmnzK.cjs → channels-EqvuQQbv.cjs} +6 -8
- package/dist/{channels-BnVRmnzK.cjs.map → channels-EqvuQQbv.cjs.map} +1 -1
- package/dist/{channels-Db-4pXVZ.js → channels-LNR2QIkc.js} +6 -8
- package/dist/{channels-Db-4pXVZ.js.map → channels-LNR2QIkc.js.map} +1 -1
- package/dist/{common-DhKNoXGp.cjs → common-DVZqSEhZ.cjs} +2 -3
- package/dist/{common-DhKNoXGp.cjs.map → common-DVZqSEhZ.cjs.map} +1 -1
- package/dist/{common-Y30XtCyr.js → common-xUmaFUop.js} +2 -3
- package/dist/{common-Y30XtCyr.js.map → common-xUmaFUop.js.map} +1 -1
- package/dist/{constants-e7aaPCLj.cjs → constants-Co1XjPjd.cjs} +2 -3
- package/dist/{constants-e7aaPCLj.cjs.map → constants-Co1XjPjd.cjs.map} +1 -1
- package/dist/{constants-DazK_RZj.js → constants-ohUUT3Vg.js} +2 -3
- package/dist/{constants-DazK_RZj.js.map → constants-ohUUT3Vg.js.map} +1 -1
- package/dist/{conversations-D-ew5IXn.js → conversations-B-s9MWRb.js} +8 -9
- package/dist/{conversations-D-ew5IXn.js.map → conversations-B-s9MWRb.js.map} +1 -1
- package/dist/{conversations-DasqEDCF.cjs → conversations-BPQNrv5g.cjs} +5 -6
- package/dist/{conversations-DasqEDCF.cjs.map → conversations-BPQNrv5g.cjs.map} +1 -1
- package/dist/{conversations-DzuWI3w-.cjs → conversations-DLuMXWot.cjs} +8 -9
- package/dist/{conversations-DzuWI3w-.cjs.map → conversations-DLuMXWot.cjs.map} +1 -1
- package/dist/{conversations-BzBHVFYe.js → conversations-nNko6-H4.js} +4 -5
- package/dist/{conversations-BzBHVFYe.js.map → conversations-nNko6-H4.js.map} +1 -1
- package/dist/{datasets-Cgtczd13.cjs → datasets-BP2O5CSR.cjs} +3 -4
- package/dist/{datasets-Cgtczd13.cjs.map → datasets-BP2O5CSR.cjs.map} +1 -1
- package/dist/{datasets-FRp69Mwv.js → datasets-hLmYapTk.js} +3 -4
- package/dist/{datasets-FRp69Mwv.js.map → datasets-hLmYapTk.js.map} +1 -1
- package/dist/{default-options-C7tykjLq.cjs → default-options-DRN81WEQ.cjs} +2 -3
- package/dist/{default-options-C7tykjLq.cjs.map → default-options-DRN81WEQ.cjs.map} +1 -1
- package/dist/{default-options-oSlrqpuP.js → default-options-Dir6CKnE.js} +2 -3
- package/dist/{default-options-oSlrqpuP.js.map → default-options-Dir6CKnE.js.map} +1 -1
- package/dist/{dist-lT2rqyY9.cjs → dist-36GZrEvk.cjs} +4 -5
- package/dist/{dist-lT2rqyY9.cjs.map → dist-36GZrEvk.cjs.map} +1 -1
- package/dist/{dist-CeTLA-e5.cjs → dist-BZGewCGq.cjs} +6 -10
- package/dist/{dist-CeTLA-e5.cjs.map → dist-BZGewCGq.cjs.map} +1 -1
- package/dist/{dist-Bo3GdQwf.cjs → dist-Bal15xNO.cjs} +5 -7
- package/dist/{dist-Bo3GdQwf.cjs.map → dist-Bal15xNO.cjs.map} +1 -1
- package/dist/dist-C-L2kyKZ.js +1 -0
- package/dist/{dist-DjkPkAzV.js → dist-CNjm6d2Q.js} +5 -8
- package/dist/{dist-DjkPkAzV.js.map → dist-CNjm6d2Q.js.map} +1 -1
- package/dist/{dist-DLld1qjf.js → dist-CVoi_Dov.js} +3 -4
- package/dist/{dist-DLld1qjf.js.map → dist-CVoi_Dov.js.map} +1 -1
- package/dist/{dist-CukR8zi9.cjs → dist-Clj7hRKz.cjs} +1554 -725
- package/dist/dist-Clj7hRKz.cjs.map +1 -0
- package/dist/{dist-DsrJXwic.cjs → dist-D02J6PZG.cjs} +4 -5
- package/dist/{dist-DsrJXwic.cjs.map → dist-D02J6PZG.cjs.map} +1 -1
- package/dist/dist-D6oS7RF1.cjs +3 -0
- package/dist/{dist-CREG82cy.js → dist-DC9qnRcv.js} +3 -4
- package/dist/{dist-CREG82cy.js.map → dist-DC9qnRcv.js.map} +1 -1
- package/dist/{dist-BIrQLUV9.js → dist-Dc0g0QSi.js} +4 -6
- package/dist/{dist-BIrQLUV9.js.map → dist-Dc0g0QSi.js.map} +1 -1
- package/dist/{dist-BBOnrL_A.js → dist-Dwfkbwzg.js} +3 -4
- package/dist/{dist-BBOnrL_A.js.map → dist-Dwfkbwzg.js.map} +1 -1
- package/dist/{dist-5TAg2f91.js → dist-PlsLrwz8.js} +1549 -719
- package/dist/dist-PlsLrwz8.js.map +1 -0
- package/dist/{dist-B9ery9Zw.cjs → dist-lG-fYW7-.cjs} +4 -5
- package/dist/{dist-B9ery9Zw.cjs.map → dist-lG-fYW7-.cjs.map} +1 -1
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/docs-server-custom-adapters.md +53 -1
- package/dist/docs/references/docs-server-custom-api-routes.md +2 -0
- package/dist/{dynamic-workflows-HwPX3mcf.cjs → dynamic-workflows-CpCkqM1g.cjs} +6 -8
- package/dist/{dynamic-workflows-HwPX3mcf.cjs.map → dynamic-workflows-CpCkqM1g.cjs.map} +1 -1
- package/dist/{dynamic-workflows-CTUO0SFu.js → dynamic-workflows-DDauBnDt.js} +6 -8
- package/dist/{dynamic-workflows-CTUO0SFu.js.map → dynamic-workflows-DDauBnDt.js.map} +1 -1
- package/dist/{editor-builder-BSBHrTzY.cjs → editor-builder-8li-nXor.cjs} +3 -4
- package/dist/{editor-builder-BSBHrTzY.cjs.map → editor-builder-8li-nXor.cjs.map} +1 -1
- package/dist/{editor-builder-DCrTMwA4.js → editor-builder-BCZy1ZH1.js} +3 -4
- package/dist/{editor-builder-DCrTMwA4.js.map → editor-builder-BCZy1ZH1.js.map} +1 -1
- package/dist/{editor-builder-Bibw1X4q.cjs → editor-builder-DFqbiatl.cjs} +7 -9
- package/dist/{editor-builder-Bibw1X4q.cjs.map → editor-builder-DFqbiatl.cjs.map} +1 -1
- package/dist/{editor-builder-Dq03QZzH.js → editor-builder-qPFmAnZz.js} +7 -9
- package/dist/{editor-builder-Dq03QZzH.js.map → editor-builder-qPFmAnZz.js.map} +1 -1
- package/dist/{favorites-DWDyKxts.js → favorites-8aieznq3.js} +2 -3
- package/dist/{favorites-DWDyKxts.js.map → favorites-8aieznq3.js.map} +1 -1
- package/dist/{favorites-D1-AzGsK.cjs → favorites-D0CoxxQn.cjs} +2 -3
- package/dist/{favorites-D1-AzGsK.cjs.map → favorites-D0CoxxQn.cjs.map} +1 -1
- package/dist/{helpers-CewFtCva.cjs → helpers-CE1fJdLM.cjs} +6 -9
- package/dist/{helpers-CewFtCva.cjs.map → helpers-CE1fJdLM.cjs.map} +1 -1
- package/dist/{helpers-CxSa9O3X.js → helpers-CMCXsowL.js} +6 -9
- package/dist/{helpers-CxSa9O3X.js.map → helpers-CMCXsowL.js.map} +1 -1
- package/dist/{http-exception-CKDHupKw.cjs → http-exception-Co3MbFUf.cjs} +2 -3
- package/dist/{http-exception-CKDHupKw.cjs.map → http-exception-Co3MbFUf.cjs.map} +1 -1
- package/dist/{http-exception-CyfxZB6W.js → http-exception-CzaWkxMl.js} +2 -3
- package/dist/{http-exception-CyfxZB6W.js.map → http-exception-CzaWkxMl.js.map} +1 -1
- package/dist/index.cjs +2 -3
- package/dist/index.js +1 -2
- package/dist/{logs-CY8AGOCO.cjs → logs-CC6IycDY.cjs} +3 -4
- package/dist/{logs-CY8AGOCO.cjs.map → logs-CC6IycDY.cjs.map} +1 -1
- package/dist/{logs-CxfPk-iL.js → logs-DIBh_xCk.js} +7 -8
- package/dist/{logs-CxfPk-iL.js.map → logs-DIBh_xCk.js.map} +1 -1
- package/dist/{logs-Bd_xpsYw.js → logs-DpyTCDyt.js} +3 -4
- package/dist/{logs-Bd_xpsYw.js.map → logs-DpyTCDyt.js.map} +1 -1
- package/dist/{logs-CiSw7r0s.cjs → logs-NNur5jkf.cjs} +7 -8
- package/dist/{logs-CiSw7r0s.cjs.map → logs-NNur5jkf.cjs.map} +1 -1
- package/dist/{mcp-ziWVk7Ol.cjs → mcp-4iUBgZ7s.cjs} +3 -4
- package/dist/{mcp-ziWVk7Ol.cjs.map → mcp-4iUBgZ7s.cjs.map} +1 -1
- package/dist/{mcp-CWDfSu7w.js → mcp-CnV25lv0.js} +6 -7
- package/dist/{mcp-CWDfSu7w.js.map → mcp-CnV25lv0.js.map} +1 -1
- package/dist/{mcp-CWGJRqkC.cjs → mcp-DegWUDeB.cjs} +6 -7
- package/dist/{mcp-CWGJRqkC.cjs.map → mcp-DegWUDeB.cjs.map} +1 -1
- package/dist/{mcp-Drqt0GqD.js → mcp-DgdKiptb.js} +3 -4
- package/dist/{mcp-Drqt0GqD.js.map → mcp-DgdKiptb.js.map} +1 -1
- package/dist/{mcp-client-versions-DxBkzcYH.js → mcp-client-versions-B471u-DI.js} +3 -4
- package/dist/{mcp-client-versions-DxBkzcYH.js.map → mcp-client-versions-B471u-DI.js.map} +1 -1
- package/dist/{mcp-client-versions-Cq97zXiK.cjs → mcp-client-versions-HRTe5cRT.cjs} +3 -4
- package/dist/{mcp-client-versions-Cq97zXiK.cjs.map → mcp-client-versions-HRTe5cRT.cjs.map} +1 -1
- package/dist/{memory-CizEIbl1.cjs → memory-BnPGDrdg.cjs} +4 -5
- package/dist/{memory-CizEIbl1.cjs.map → memory-BnPGDrdg.cjs.map} +1 -1
- package/dist/{memory-B58Q2LgU.js → memory-CZ2ELVP0.js} +4 -5
- package/dist/{memory-B58Q2LgU.js.map → memory-CZ2ELVP0.js.map} +1 -1
- package/dist/{memory-BHtTSzvJ.js → memory-DeZ1je-b.js} +10 -12
- package/dist/memory-DeZ1je-b.js.map +1 -0
- package/dist/{memory-CwwkVDh1.cjs → memory-Pj9P9vsl.cjs} +10 -12
- package/dist/memory-Pj9P9vsl.cjs.map +1 -0
- package/dist/{message-history-_kbQlA4r.js → message-history-BBVH-ORZ.js} +2 -3
- package/dist/{message-history-_kbQlA4r.js.map → message-history-BBVH-ORZ.js.map} +1 -1
- package/dist/{message-history-CkUYxSaS.cjs → message-history-CtELj716.cjs} +2 -3
- package/dist/{message-history-CkUYxSaS.cjs.map → message-history-CtELj716.cjs.map} +1 -1
- package/dist/{observability-Dz9jvMJ3.js → observability-65rZOqJk.js} +6 -7
- package/dist/{observability-Dz9jvMJ3.js.map → observability-65rZOqJk.js.map} +1 -1
- package/dist/{observability-C2BZQ2jU.cjs → observability-CFKSxaff.cjs} +6 -7
- package/dist/{observability-C2BZQ2jU.cjs.map → observability-CFKSxaff.cjs.map} +1 -1
- package/dist/{observability-new-endpoints-3DlTYf34.js → observability-new-endpoints-B6MRJ5Rb.js} +8 -11
- package/dist/observability-new-endpoints-B6MRJ5Rb.js.map +1 -0
- package/dist/{observability-new-endpoints-Drr7q2Dj.cjs → observability-new-endpoints-CDeHfFNP.cjs} +9 -12
- package/dist/observability-new-endpoints-CDeHfFNP.cjs.map +1 -0
- package/dist/{plans-DZAJG1Et.cjs → plans-Dtt4D4-Y.cjs} +8 -9
- package/dist/{plans-DZAJG1Et.cjs.map → plans-Dtt4D4-Y.cjs.map} +1 -1
- package/dist/{plans-CKbStbWl.js → plans-YK-iaKqj.js} +8 -9
- package/dist/{plans-CKbStbWl.js.map → plans-YK-iaKqj.js.map} +1 -1
- package/dist/{probe-image-size-l1uuhbob.cjs → probe-image-size-C0psF6WM.cjs} +69 -120
- package/dist/probe-image-size-C0psF6WM.cjs.map +1 -0
- package/dist/{probe-image-size-DBmo2MAe.js → probe-image-size-CpV7slsd.js} +69 -120
- package/dist/probe-image-size-CpV7slsd.js.map +1 -0
- package/dist/{processor-providers-DHvTA9AL.cjs → processor-providers-CRrcV9ra.cjs} +2 -3
- package/dist/{processor-providers-DHvTA9AL.cjs.map → processor-providers-CRrcV9ra.cjs.map} +1 -1
- package/dist/{processor-providers-DBhZC6-4.js → processor-providers-WHdDe4aA.js} +2 -3
- package/dist/{processor-providers-DBhZC6-4.js.map → processor-providers-WHdDe4aA.js.map} +1 -1
- package/dist/{processors-80HWq8nr.cjs → processors-BEut-2a-.cjs} +2 -3
- package/dist/{processors-80HWq8nr.cjs.map → processors-BEut-2a-.cjs.map} +1 -1
- package/dist/{processors-33IULT8X.js → processors-IhyRC0xH.js} +2 -3
- package/dist/{processors-33IULT8X.js.map → processors-IhyRC0xH.js.map} +1 -1
- package/dist/{prompt-block-versions-Cl3Lh4H-.cjs → prompt-block-versions-BUPyaY8g.cjs} +4 -5
- package/dist/{prompt-block-versions-Cl3Lh4H-.cjs.map → prompt-block-versions-BUPyaY8g.cjs.map} +1 -1
- package/dist/{prompt-block-versions-cfq_e1Zi.js → prompt-block-versions-D1gjBkQx.js} +4 -5
- package/dist/{prompt-block-versions-cfq_e1Zi.js.map → prompt-block-versions-D1gjBkQx.js.map} +1 -1
- package/dist/{responses-CfcIc53b.cjs → responses-CTiwnWeF.cjs} +3 -4
- package/dist/{responses-CfcIc53b.cjs.map → responses-CTiwnWeF.cjs.map} +1 -1
- package/dist/{responses-jiVC-1lx.js → responses-CaixIxi0.js} +8 -9
- package/dist/{responses-jiVC-1lx.js.map → responses-CaixIxi0.js.map} +1 -1
- package/dist/{responses-DJNJgCTg.js → responses-D-fsDRLd.js} +2 -3
- package/dist/{responses-DJNJgCTg.js.map → responses-D-fsDRLd.js.map} +1 -1
- package/dist/{responses-BubMB79l.cjs → responses-Did1x3VK.cjs} +8 -9
- package/dist/{responses-BubMB79l.cjs.map → responses-Did1x3VK.cjs.map} +1 -1
- package/dist/{rolldown-runtime-BwC_XMyb.cjs → rolldown-runtime-10nMEhjP.cjs} +1 -2
- package/dist/{rolldown-runtime-D3Hj5m0v.js → rolldown-runtime-CQI-hT2b.js} +1 -2
- package/dist/{route-builder-CjkWxv4E.js → route-builder-BxPrwNog.js} +6 -10
- package/dist/route-builder-BxPrwNog.js.map +1 -0
- package/dist/{route-builder-B2Qhhd7C.cjs → route-builder-CvARmqnA.cjs} +8 -12
- package/dist/route-builder-CvARmqnA.cjs.map +1 -0
- package/dist/{routes-DKV9oxFW.js → routes-C434Lhz9.js} +59 -92
- package/dist/{routes-DKV9oxFW.js.map → routes-C434Lhz9.js.map} +1 -1
- package/dist/{routes-jXksmX9G.cjs → routes-CtGp_lBn.cjs} +4 -7
- package/dist/routes-CtGp_lBn.cjs.map +1 -0
- package/dist/{routes-CKfXiwRc.js → routes-MRZFTKei.js} +4 -7
- package/dist/routes-MRZFTKei.js.map +1 -0
- package/dist/{routes-D6bDACPd.cjs → routes-rU9Sku0f.cjs} +59 -92
- package/dist/{routes-D6bDACPd.cjs.map → routes-rU9Sku0f.cjs.map} +1 -1
- package/dist/{rule-group-C5eydl98.js → rule-group-4pWeG61q.js} +2 -3
- package/dist/{rule-group-C5eydl98.js.map → rule-group-4pWeG61q.js.map} +1 -1
- package/dist/{rule-group-Hyn4rN52.cjs → rule-group-CIacr-Zz.cjs} +2 -3
- package/dist/{rule-group-Hyn4rN52.cjs.map → rule-group-CIacr-Zz.cjs.map} +1 -1
- package/dist/{schedules-GokZKBYg.cjs → schedules-CL4IU7kS.cjs} +6 -8
- package/dist/{schedules-GokZKBYg.cjs.map → schedules-CL4IU7kS.cjs.map} +1 -1
- package/dist/{schedules-_3zPKyqm.js → schedules-CQPodXrR.js} +6 -8
- package/dist/{schedules-_3zPKyqm.js.map → schedules-CQPodXrR.js.map} +1 -1
- package/dist/{schema-CzbEIyhE-BsMcj9Ws.js → schema-Bf12g7KC-DBc4NSds.js} +104 -35
- package/dist/schema-Bf12g7KC-DBc4NSds.js.map +1 -0
- package/dist/{schema-CzbEIyhE-20gGIWkz.cjs → schema-Bf12g7KC-plP4Ir6h.cjs} +105 -36
- package/dist/schema-Bf12g7KC-plP4Ir6h.cjs.map +1 -0
- package/dist/{scorer-versions-CX8RM9a6.js → scorer-versions-DIqKt2kn.js} +4 -5
- package/dist/{scorer-versions-CX8RM9a6.js.map → scorer-versions-DIqKt2kn.js.map} +1 -1
- package/dist/{scorer-versions-DeCS12ym.cjs → scorer-versions-r7C61gWf.cjs} +4 -5
- package/dist/{scorer-versions-DeCS12ym.cjs.map → scorer-versions-r7C61gWf.cjs.map} +1 -1
- package/dist/{scores-CetVKM4g.cjs → scores-Bu70OP1U.cjs} +3 -4
- package/dist/{scores-CetVKM4g.cjs.map → scores-Bu70OP1U.cjs.map} +1 -1
- package/dist/{scores-BWTo-_L5.js → scores-DHnw31S7.js} +8 -9
- package/dist/{scores-BWTo-_L5.js.map → scores-DHnw31S7.js.map} +1 -1
- package/dist/{scores-BbqFfKcy.js → scores-DZ1hftoG.js} +3 -4
- package/dist/{scores-BbqFfKcy.js.map → scores-DZ1hftoG.js.map} +1 -1
- package/dist/{scores-C8XPZcwt.cjs → scores-K78lAAwd.cjs} +8 -9
- package/dist/{scores-C8XPZcwt.cjs.map → scores-K78lAAwd.cjs.map} +1 -1
- package/dist/server/a2a/store.cjs +2 -3
- package/dist/server/a2a/store.js +1 -2
- package/dist/server/auth/index.cjs +3 -3
- package/dist/server/auth/index.js +2 -2
- package/dist/server/browser-stream/index.cjs +3 -5
- package/dist/server/browser-stream/index.cjs.map +1 -1
- package/dist/server/browser-stream/index.js +2 -4
- package/dist/server/browser-stream/index.js.map +1 -1
- package/dist/server/handlers/a2a.cjs +2 -2
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +2 -2
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/agent-controller.cjs +20 -18
- package/dist/server/handlers/agent-controller.cjs.map +1 -1
- package/dist/server/handlers/agent-controller.d.ts +2 -0
- package/dist/server/handlers/agent-controller.d.ts.map +1 -1
- package/dist/server/handlers/agent-controller.js +19 -17
- package/dist/server/handlers/agent-controller.js.map +1 -1
- package/dist/server/handlers/agent-versions.cjs +7 -8
- package/dist/server/handlers/agent-versions.js +6 -7
- package/dist/server/handlers/agents.cjs +2 -2
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +1 -1
- package/dist/server/handlers/auth.cjs +7 -8
- package/dist/server/handlers/auth.js +6 -7
- package/dist/server/handlers/author-enrichment.cjs +2 -3
- package/dist/server/handlers/author-enrichment.js +1 -2
- package/dist/server/handlers/authorship.cjs +4 -5
- package/dist/server/handlers/authorship.js +3 -4
- package/dist/server/handlers/background-tasks.cjs +2 -2
- package/dist/server/handlers/background-tasks.js +1 -1
- package/dist/server/handlers/builder-registry.cjs +2 -2
- package/dist/server/handlers/builder-registry.js +1 -1
- package/dist/server/handlers/channels.cjs +2 -2
- package/dist/server/handlers/channels.js +1 -1
- package/dist/server/handlers/conversations.cjs +2 -2
- package/dist/server/handlers/conversations.js +1 -1
- package/dist/server/handlers/datasets.cjs +7 -8
- package/dist/server/handlers/datasets.js +6 -7
- package/dist/server/handlers/dynamic-workflows.cjs +2 -2
- package/dist/server/handlers/dynamic-workflows.js +1 -1
- package/dist/server/handlers/editor-builder.cjs +2 -2
- package/dist/server/handlers/editor-builder.js +1 -1
- package/dist/server/handlers/error.cjs +3 -4
- package/dist/server/handlers/error.js +2 -3
- package/dist/server/handlers/favorites-enrichment.cjs +3 -4
- package/dist/server/handlers/favorites-enrichment.js +2 -3
- package/dist/server/handlers/gateway-memory-client.cjs +2 -3
- package/dist/server/handlers/gateway-memory-client.js +1 -2
- package/dist/server/handlers/logs.cjs +2 -2
- package/dist/server/handlers/logs.js +1 -1
- package/dist/server/handlers/mcp-client-versions.cjs +6 -7
- package/dist/server/handlers/mcp-client-versions.js +5 -6
- package/dist/server/handlers/mcp.cjs +2 -2
- package/dist/server/handlers/mcp.js +1 -1
- package/dist/server/handlers/memory.cjs +2 -2
- package/dist/server/handlers/memory.d.ts.map +1 -1
- package/dist/server/handlers/memory.js +1 -1
- package/dist/server/handlers/observability-list-query-schemas.cjs +2 -3
- package/dist/server/handlers/observability-list-query-schemas.js +1 -2
- package/dist/server/handlers/observability-new-endpoints.cjs +2 -2
- package/dist/server/handlers/observability-new-endpoints.d.ts +2 -10
- package/dist/server/handlers/observability-new-endpoints.d.ts.map +1 -1
- package/dist/server/handlers/observability-new-endpoints.js +1 -1
- package/dist/server/handlers/observability-shared.cjs +4 -5
- package/dist/server/handlers/observability-shared.js +3 -4
- package/dist/server/handlers/observability-storage-schemas.cjs +2 -3
- package/dist/server/handlers/observability-storage-schemas.js +1 -2
- package/dist/server/handlers/observability.cjs +3 -3
- package/dist/server/handlers/observability.js +2 -2
- package/dist/server/handlers/plans.cjs +2 -2
- package/dist/server/handlers/plans.js +1 -1
- package/dist/server/handlers/processor-providers.cjs +5 -6
- package/dist/server/handlers/processor-providers.js +4 -5
- package/dist/server/handlers/processors.cjs +5 -6
- package/dist/server/handlers/processors.js +4 -5
- package/dist/server/handlers/prompt-block-versions.cjs +6 -7
- package/dist/server/handlers/prompt-block-versions.js +5 -6
- package/dist/server/handlers/responses.adapter.cjs +2 -3
- package/dist/server/handlers/responses.adapter.js +1 -2
- package/dist/server/handlers/responses.cjs +2 -2
- package/dist/server/handlers/responses.js +1 -1
- package/dist/server/handlers/responses.storage.cjs +4 -5
- package/dist/server/handlers/responses.storage.js +3 -4
- package/dist/server/handlers/schedules-workflows-shim.cjs +2 -3
- package/dist/server/handlers/schedules-workflows-shim.js +1 -2
- package/dist/server/handlers/schedules.cjs +2 -2
- package/dist/server/handlers/schedules.js +1 -1
- package/dist/server/handlers/scorer-versions.cjs +6 -7
- package/dist/server/handlers/scorer-versions.js +5 -6
- package/dist/server/handlers/scores.cjs +2 -2
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers/skills-sh-shared.cjs +3 -4
- package/dist/server/handlers/skills-sh-shared.js +2 -3
- package/dist/server/handlers/stored-agent-favorites.cjs +8 -9
- package/dist/server/handlers/stored-agent-favorites.js +7 -8
- package/dist/server/handlers/stored-agents.cjs +8 -9
- package/dist/server/handlers/stored-agents.js +7 -8
- package/dist/server/handlers/stored-mcp-clients.cjs +7 -8
- package/dist/server/handlers/stored-mcp-clients.js +6 -7
- package/dist/server/handlers/stored-prompt-blocks.cjs +7 -8
- package/dist/server/handlers/stored-prompt-blocks.js +6 -7
- package/dist/server/handlers/stored-scorers.cjs +7 -8
- package/dist/server/handlers/stored-scorers.js +6 -7
- package/dist/server/handlers/stored-skill-favorites.cjs +8 -9
- package/dist/server/handlers/stored-skill-favorites.js +7 -8
- package/dist/server/handlers/stored-skills.cjs +7 -8
- package/dist/server/handlers/stored-skills.js +6 -7
- package/dist/server/handlers/stored-workspaces.cjs +6 -7
- package/dist/server/handlers/stored-workspaces.js +5 -6
- package/dist/server/handlers/system.cjs +5 -6
- package/dist/server/handlers/system.js +4 -5
- package/dist/server/handlers/test-utils.cjs +2 -3
- package/dist/server/handlers/test-utils.js +1 -2
- package/dist/server/handlers/tool-providers.cjs +6 -7
- package/dist/server/handlers/tool-providers.js +5 -6
- package/dist/server/handlers/tool-schema-overrides.cjs +2 -3
- package/dist/server/handlers/tool-schema-overrides.js +1 -2
- package/dist/server/handlers/tools.cjs +2 -2
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/utils.cjs +3 -2
- package/dist/server/handlers/utils.d.ts +17 -2
- package/dist/server/handlers/utils.d.ts.map +1 -1
- package/dist/server/handlers/utils.js +1 -1
- package/dist/server/handlers/validate-agent-instructions.cjs +4 -5
- package/dist/server/handlers/validate-agent-instructions.js +3 -4
- package/dist/server/handlers/validate-avatar.cjs +3 -4
- package/dist/server/handlers/validate-avatar.js +2 -3
- package/dist/server/handlers/vector.cjs +2 -2
- package/dist/server/handlers/vector.js +1 -1
- package/dist/server/handlers/version-helpers.cjs +2 -3
- package/dist/server/handlers/version-helpers.js +1 -2
- package/dist/server/handlers/voice.cjs +2 -2
- package/dist/server/handlers/voice.js +1 -1
- package/dist/server/handlers/workflow-builder.cjs +2 -2
- package/dist/server/handlers/workflow-builder.js +1 -1
- package/dist/server/handlers/workflows.cjs +2 -2
- package/dist/server/handlers/workflows.d.ts.map +1 -1
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/handlers/workspace.cjs +2 -2
- package/dist/server/handlers/workspace.js +1 -1
- package/dist/server/handlers.cjs +18 -18
- package/dist/server/handlers.js +17 -17
- package/dist/server/schemas/index.cjs +35 -35
- package/dist/server/schemas/index.js +34 -34
- package/dist/server/server-adapter/index.cjs +14 -21
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.js +13 -20
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/server/server-adapter/routes/observability.d.ts +1 -5
- package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
- package/dist/{stored-agents-BtaEzKfr.js → stored-agents-BpxMmhtz.js} +9 -11
- package/dist/{stored-agents-BtaEzKfr.js.map → stored-agents-BpxMmhtz.js.map} +1 -1
- package/dist/{stored-agents-BTL-o6aM.cjs → stored-agents-CDlh3CQQ.cjs} +9 -11
- package/dist/{stored-agents-BTL-o6aM.cjs.map → stored-agents-CDlh3CQQ.cjs.map} +1 -1
- package/dist/{stored-mcp-clients-D7bNkmTM.cjs → stored-mcp-clients-BA7OSGZ_.cjs} +3 -4
- package/dist/{stored-mcp-clients-D7bNkmTM.cjs.map → stored-mcp-clients-BA7OSGZ_.cjs.map} +1 -1
- package/dist/{stored-mcp-clients-DMR6NvCp.js → stored-mcp-clients-DtLv0Tly.js} +3 -4
- package/dist/{stored-mcp-clients-DMR6NvCp.js.map → stored-mcp-clients-DtLv0Tly.js.map} +1 -1
- package/dist/{stored-prompt-blocks-BjHxMCuC.cjs → stored-prompt-blocks-Cqi0vnTE.cjs} +4 -5
- package/dist/{stored-prompt-blocks-BjHxMCuC.cjs.map → stored-prompt-blocks-Cqi0vnTE.cjs.map} +1 -1
- package/dist/{stored-prompt-blocks-C7qmiWSB.js → stored-prompt-blocks-Z_BuhsUq.js} +4 -5
- package/dist/{stored-prompt-blocks-C7qmiWSB.js.map → stored-prompt-blocks-Z_BuhsUq.js.map} +1 -1
- package/dist/{stored-scorers-BSxh7JZX.js → stored-scorers-BdJadnUS.js} +4 -5
- package/dist/{stored-scorers-BSxh7JZX.js.map → stored-scorers-BdJadnUS.js.map} +1 -1
- package/dist/{stored-scorers-I8L1-bAI.cjs → stored-scorers-D1zYUEXg.cjs} +4 -5
- package/dist/{stored-scorers-I8L1-bAI.cjs.map → stored-scorers-D1zYUEXg.cjs.map} +1 -1
- package/dist/{stored-skills-DzW8hLnI.js → stored-skills-D8Q1NmsH.js} +3 -4
- package/dist/{stored-skills-DzW8hLnI.js.map → stored-skills-D8Q1NmsH.js.map} +1 -1
- package/dist/{stored-skills-C1e8kf2k.cjs → stored-skills-DppdzQY0.cjs} +3 -4
- package/dist/{stored-skills-C1e8kf2k.cjs.map → stored-skills-DppdzQY0.cjs.map} +1 -1
- package/dist/{stored-workspaces-DSfChCJ0.cjs → stored-workspaces-BOwJwkec.cjs} +3 -4
- package/dist/{stored-workspaces-DSfChCJ0.cjs.map → stored-workspaces-BOwJwkec.cjs.map} +1 -1
- package/dist/{stored-workspaces-AkC68rSw.js → stored-workspaces-CYXLBJy5.js} +3 -4
- package/dist/{stored-workspaces-AkC68rSw.js.map → stored-workspaces-CYXLBJy5.js.map} +1 -1
- package/dist/{system-sSSmmt7I.js → system-B8L_G4oo.js} +2 -3
- package/dist/{system-sSSmmt7I.js.map → system-B8L_G4oo.js.map} +1 -1
- package/dist/{system-B_Sod-Le.cjs → system-DGfJlOxK.cjs} +2 -3
- package/dist/{system-B_Sod-Le.cjs.map → system-DGfJlOxK.cjs.map} +1 -1
- package/dist/{tool-providers-DFQkhO4R.cjs → tool-providers-BVwRJTtB.cjs} +2 -3
- package/dist/{tool-providers-DFQkhO4R.cjs.map → tool-providers-BVwRJTtB.cjs.map} +1 -1
- package/dist/{tool-providers-CIESXi7M.js → tool-providers-Cq3vFqgE.js} +2 -3
- package/dist/{tool-providers-CIESXi7M.js.map → tool-providers-Cq3vFqgE.js.map} +1 -1
- package/dist/{tools-Ci71xxGP.cjs → tools-CeVJwkPP.cjs} +13 -14
- package/dist/tools-CeVJwkPP.cjs.map +1 -0
- package/dist/{tools--oMljfqq.js → tools-hd_ZCJkE.js} +12 -13
- package/dist/tools-hd_ZCJkE.js.map +1 -0
- package/dist/{utils-dDLIDg8O.cjs → utils-BbYUI6Yn.cjs} +37 -14
- package/dist/utils-BbYUI6Yn.cjs.map +1 -0
- package/dist/{utils-CF76qzZR.cjs → utils-BnH77wPf.cjs} +107 -81
- package/dist/utils-BnH77wPf.cjs.map +1 -0
- package/dist/{utils-BBJlS81s.js → utils-DHxjw4Tn.js} +31 -14
- package/dist/utils-DHxjw4Tn.js.map +1 -0
- package/dist/{utils-aoLN3Wfi.js → utils-YEuwVEc2.js} +104 -78
- package/dist/utils-YEuwVEc2.js.map +1 -0
- package/dist/{vector-TWv4t-4g.js → vector-Deod39jt.js} +6 -7
- package/dist/{vector-TWv4t-4g.js.map → vector-Deod39jt.js.map} +1 -1
- package/dist/{vector-BKDD1kwc.cjs → vector-IxK1t4Cb.cjs} +6 -7
- package/dist/{vector-BKDD1kwc.cjs.map → vector-IxK1t4Cb.cjs.map} +1 -1
- package/dist/{vectors-LFI1jch0.cjs → vectors-CqV387sY.cjs} +3 -4
- package/dist/{vectors-LFI1jch0.cjs.map → vectors-CqV387sY.cjs.map} +1 -1
- package/dist/{vectors-CJtupgIF.js → vectors-CvHLWqjC.js} +3 -4
- package/dist/{vectors-CJtupgIF.js.map → vectors-CvHLWqjC.js.map} +1 -1
- package/dist/{version-common-DrzXq7Ct.cjs → version-common-B2n_ML_w.cjs} +3 -4
- package/dist/{version-common-DrzXq7Ct.cjs.map → version-common-B2n_ML_w.cjs.map} +1 -1
- package/dist/{version-common-4xFzvCS5.js → version-common-Di2U8VWH.js} +3 -4
- package/dist/{version-common-4xFzvCS5.js.map → version-common-Di2U8VWH.js.map} +1 -1
- package/dist/{voice-BnGwlZ75.cjs → voice-CBbxcsCM.cjs} +4 -5
- package/dist/{voice-BnGwlZ75.cjs.map → voice-CBbxcsCM.cjs.map} +1 -1
- package/dist/{voice-DjG8tBAD.js → voice-CzFWhWPJ.js} +4 -5
- package/dist/{voice-DjG8tBAD.js.map → voice-CzFWhWPJ.js.map} +1 -1
- package/dist/{workflow-builder-Dguv4rc0.cjs → workflow-builder-B33pXjdu.cjs} +8 -10
- package/dist/{workflow-builder-Dguv4rc0.cjs.map → workflow-builder-B33pXjdu.cjs.map} +1 -1
- package/dist/{workflow-builder-BoI-XXsT.js → workflow-builder-D4Po74yJ.js} +8 -10
- package/dist/{workflow-builder-BoI-XXsT.js.map → workflow-builder-D4Po74yJ.js.map} +1 -1
- package/dist/{workflows-Dcx4Ib0t.js → workflows-C9BMJV_C.js} +3 -4
- package/dist/{workflows-Dcx4Ib0t.js.map → workflows-C9BMJV_C.js.map} +1 -1
- package/dist/{workflows-5AytZqK_.cjs → workflows-CiP6r_nw.cjs} +35 -36
- package/dist/workflows-CiP6r_nw.cjs.map +1 -0
- package/dist/{workflows-C8rDpHyY.cjs → workflows-SYBpQupF.cjs} +3 -4
- package/dist/{workflows-C8rDpHyY.cjs.map → workflows-SYBpQupF.cjs.map} +1 -1
- package/dist/{workflows-D7Oq5On9.js → workflows-tk1Ixg8M.js} +35 -36
- package/dist/workflows-tk1Ixg8M.js.map +1 -0
- package/dist/{workspace-BVHXoKmP.js → workspace-C9dE6D1U.js} +6 -7
- package/dist/{workspace-BVHXoKmP.js.map → workspace-C9dE6D1U.js.map} +1 -1
- package/dist/{workspace-d25MZ9dj.cjs → workspace-CyH_iu8w.cjs} +6 -7
- package/dist/{workspace-d25MZ9dj.cjs.map → workspace-CyH_iu8w.cjs.map} +1 -1
- package/dist/{workspace-BJYV2lkt.cjs → workspace-KeHGZvNV.cjs} +2 -3
- package/dist/{workspace-BJYV2lkt.cjs.map → workspace-KeHGZvNV.cjs.map} +1 -1
- package/dist/{workspace-4dBGFdV2.js → workspace-muaSMxVS.js} +2 -3
- package/dist/{workspace-4dBGFdV2.js.map → workspace-muaSMxVS.js.map} +1 -1
- package/package.json +10 -10
- package/dist/agents-AyHEkc2F.cjs.map +0 -1
- package/dist/agents-BYE5Dmfk.js.map +0 -1
- package/dist/dist-5TAg2f91.js.map +0 -1
- package/dist/dist-C9Jwt1f0.cjs +0 -3
- package/dist/dist-CukR8zi9.cjs.map +0 -1
- package/dist/dist-Dgae8Imb.js +0 -1
- package/dist/memory-BHtTSzvJ.js.map +0 -1
- package/dist/memory-CwwkVDh1.cjs.map +0 -1
- package/dist/observability-new-endpoints-3DlTYf34.js.map +0 -1
- package/dist/observability-new-endpoints-Drr7q2Dj.cjs.map +0 -1
- package/dist/probe-image-size-DBmo2MAe.js.map +0 -1
- package/dist/probe-image-size-l1uuhbob.cjs.map +0 -1
- package/dist/route-builder-B2Qhhd7C.cjs.map +0 -1
- package/dist/route-builder-CjkWxv4E.js.map +0 -1
- package/dist/routes-CKfXiwRc.js.map +0 -1
- package/dist/routes-jXksmX9G.cjs.map +0 -1
- package/dist/schema-CzbEIyhE-20gGIWkz.cjs.map +0 -1
- package/dist/schema-CzbEIyhE-BsMcj9Ws.js.map +0 -1
- package/dist/tools--oMljfqq.js.map +0 -1
- package/dist/tools-Ci71xxGP.cjs.map +0 -1
- package/dist/utils-BBJlS81s.js.map +0 -1
- package/dist/utils-CF76qzZR.cjs.map +0 -1
- package/dist/utils-aoLN3Wfi.js.map +0 -1
- package/dist/utils-dDLIDg8O.cjs.map +0 -1
- package/dist/workflows-5AytZqK_.cjs.map +0 -1
- package/dist/workflows-D7Oq5On9.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channels-Db-4pXVZ.js","names":[],"sources":["../src/server/schemas/channels.ts","../src/server/handlers/channels.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\n// ============================================================================\n// Path Parameter Schemas\n// ============================================================================\n\nexport const channelPlatformPathParams = z.object({\n platform: z.string().describe('Channel platform identifier (e.g., \"slack\")'),\n});\n\nexport const channelAgentPathParams = z.object({\n platform: z.string().describe('Channel platform identifier (e.g., \"slack\")'),\n agentId: z.string().describe('Agent identifier'),\n});\n\n// ============================================================================\n// Body Parameter Schemas\n// ============================================================================\n\nexport const connectChannelBodySchema = z.object({\n agentId: z.string().describe('Agent identifier to connect'),\n options: z.record(z.string(), z.unknown()).optional().describe('Platform-specific connection options'),\n});\n\n// ============================================================================\n// Response Schemas\n// ============================================================================\n\nconst channelPlatformInfoSchema = z.object({\n id: z.string().describe('Platform identifier'),\n name: z.string().describe('Human-readable platform name'),\n isConfigured: z.boolean().describe('Whether the platform is ready to connect agents'),\n connectOptionsSchema: z.record(z.string(), z.unknown()).optional().describe('JSON Schema for connect options'),\n});\n\nconst channelInstallationInfoSchema = z.object({\n id: z.string().describe('Installation identifier'),\n platform: z.string().describe('Platform identifier'),\n agentId: z.string().describe('Connected agent identifier'),\n status: z.enum(['active', 'pending']).describe('Installation status'),\n displayName: z.string().optional().describe('Platform-specific display name'),\n installedAt: z.coerce.date().optional().describe('Installation timestamp'),\n});\n\nconst channelConnectOAuthSchema = z.object({\n type: z.literal('oauth').describe('OAuth-based connection requiring browser redirect'),\n authorizationUrl: z.string().describe('OAuth authorization URL for user redirect'),\n installationId: z.string().describe('Installation identifier'),\n});\n\nconst channelConnectDeepLinkSchema = z.object({\n type: z.literal('deep_link').describe('Deep-link connection requiring native app interaction'),\n url: z.string().describe('Deep link URL to open in platform app'),\n installationId: z.string().describe('Installation identifier'),\n});\n\nconst channelConnectImmediateSchema = z.object({\n type: z.literal('immediate').describe('Immediate connection with no user interaction needed'),\n installationId: z.string().describe('Installation identifier'),\n});\n\nconst channelConnectResultSchema = z.discriminatedUnion('type', [\n channelConnectOAuthSchema,\n channelConnectDeepLinkSchema,\n channelConnectImmediateSchema,\n]);\n\nexport const listChannelPlatformsResponseSchema = z.array(channelPlatformInfoSchema);\n\nexport const listChannelInstallationsResponseSchema = z.array(channelInstallationInfoSchema);\n\nexport const connectChannelResponseSchema = channelConnectResultSchema;\n\nexport const disconnectChannelResponseSchema = z.object({\n success: z.boolean(),\n});\n\nexport const reconcileChannelResponseSchema = channelInstallationInfoSchema\n .nullable()\n .describe('The reconciled installation, or null when the agent has none (or the platform does not reconcile)');\n","import type { Mastra } from '@mastra/core';\nimport type { ChannelProvider } from '@mastra/core/channels';\nimport type { RequestContext } from '@mastra/core/di';\nimport { coreFeatures } from '@mastra/core/features';\n\nimport { MASTRA_USER_KEY } from '../constants';\nimport { HTTPException } from '../http-exception';\nimport {\n channelPlatformPathParams,\n channelAgentPathParams,\n connectChannelBodySchema,\n listChannelPlatformsResponseSchema,\n listChannelInstallationsResponseSchema,\n connectChannelResponseSchema,\n disconnectChannelResponseSchema,\n reconcileChannelResponseSchema,\n} from '../schemas/channels';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { assertWriteAccess, getCallerAuthorId, hasAdminBypass, hasScopedPermission } from './authorship';\nimport { handleError } from './error';\n\n// ============================================================================\n// Feature gate + helpers\n// ============================================================================\n\nfunction assertChannelsAvailable(): void {\n if (!coreFeatures.has('channels')) {\n throw new HTTPException(501, { message: 'Channels require a newer version of @mastra/core' });\n }\n}\n\n/**\n * Resolves the current channel providers. Prefers `resolveChannels()` so a\n * live resolver (e.g. `channels()` from @mastra/connect) is consulted —\n * connections added after boot are picked up without a restart. Falls back to\n * the static snapshot on older @mastra/core versions without the method.\n */\nasync function resolveChannelProviders(mastra: Mastra): Promise<ChannelProvider[]> {\n const resolveChannels = (mastra as Mastra & { resolveChannels?: () => Promise<Record<string, ChannelProvider>> })\n .resolveChannels;\n const record = typeof resolveChannels === 'function' ? await resolveChannels.call(mastra) : (mastra.channels ?? {});\n return Object.values(record);\n}\n\nasync function getChannelOrThrow(mastra: Mastra, platform: string): Promise<ChannelProvider> {\n const channels = await resolveChannelProviders(mastra);\n const channel = channels.find(c => c.id === platform);\n if (!channel) {\n const available = channels.map(c => c.id).join(', ');\n throw new HTTPException(404, {\n message: `Channel \"${platform}\" is not registered. Available: ${available || 'none'}`,\n });\n }\n return channel;\n}\n\n/**\n * Unified connect/disconnect authorization.\n *\n * - Stored agent exists → same write access as editing the agent record.\n * - Code-defined agent (no stored record) → route's `requiresAuth` is the gate.\n * - Agent doesn't exist anywhere:\n * - connect → 404 (can't connect a channel to a non-existent agent)\n * - disconnect → orphan cleanup, gated on `channels:write`\n */\nasync function assertChannelAgentWriteAccess(\n mastra: Mastra,\n requestContext: RequestContext,\n agentId: string,\n action: 'connect' | 'disconnect',\n): Promise<void> {\n const storage = mastra.getStorage();\n const agentsStore = storage ? await storage.getStore('agents') : null;\n const stored = agentsStore ? await agentsStore.getById(agentId) : null;\n\n if (stored) {\n assertWriteAccess({\n requestContext,\n resource: 'agents',\n resourceId: agentId,\n action: 'edit',\n record: stored,\n });\n return;\n }\n\n // Not in stored-agents (or storage doesn't support it). Check the runtime\n // registry for a code-defined agent.\n const codeDefined = mastra.getAgentById(agentId);\n if (codeDefined) {\n // Code-defined agents have no owner/ACL — route's requiresAuth /\n // requiresPermission is the gate. Pass-through.\n return;\n }\n\n if (action === 'connect') {\n throw new HTTPException(404, { message: `Agent \"${agentId}\" not found` });\n }\n\n // Disconnect against an unknown agentId = orphan cleanup (stored agent was\n // deleted but the channel installation row is still around). Allow it, but\n // gate on channels:write so this isn't an \"any authenticated user\" backdoor.\n // Follow the same no-auth-configured pass-through as assertWriteAccess.\n const callerAuthorId = getCallerAuthorId(requestContext);\n if (!callerAuthorId && !requestContext.get(MASTRA_USER_KEY)) return;\n if (hasAdminBypass(requestContext, 'channels')) return;\n if (hasScopedPermission({ requestContext, resource: 'channels', action: 'write' })) return;\n\n throw new HTTPException(404, { message: 'Not found' });\n}\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /channels/platforms - List available channel platforms\n */\nexport const LIST_CHANNEL_PLATFORMS_ROUTE = createRoute({\n method: 'GET',\n path: '/channels/platforms',\n responseType: 'json',\n responseSchema: listChannelPlatformsResponseSchema,\n summary: 'List channel platforms',\n description: 'Returns available channel platforms and their configuration status',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n assertChannelsAvailable();\n try {\n const channels = await resolveChannelProviders(mastra);\n return channels.map(channel => {\n if (channel.getInfo) {\n return channel.getInfo();\n }\n return {\n id: channel.id,\n name: channel.id.charAt(0).toUpperCase() + channel.id.slice(1),\n isConfigured: true,\n };\n });\n } catch (error) {\n return handleError(error, 'Error listing channel platforms');\n }\n },\n});\n\n/**\n * GET /channels/:platform/installations - List installations for a platform\n */\nexport const LIST_CHANNEL_INSTALLATIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/channels/:platform/installations',\n responseType: 'json',\n pathParamSchema: channelPlatformPathParams,\n responseSchema: listChannelInstallationsResponseSchema,\n summary: 'List channel installations',\n description: 'Returns all active and pending installations for a channel platform',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, platform }) => {\n assertChannelsAvailable();\n try {\n const channel = await getChannelOrThrow(mastra, platform);\n\n if (!channel.listInstallations) {\n return [];\n }\n\n return await channel.listInstallations();\n } catch (error) {\n return handleError(error, 'Error listing channel installations');\n }\n },\n});\n\n/**\n * POST /channels/:platform/connect - Connect an agent to a platform\n */\nexport const CONNECT_CHANNEL_ROUTE = createRoute({\n method: 'POST',\n path: '/channels/:platform/connect',\n responseType: 'json',\n pathParamSchema: channelPlatformPathParams,\n bodySchema: connectChannelBodySchema,\n responseSchema: connectChannelResponseSchema,\n summary: 'Connect agent to channel',\n description: 'Creates a platform app for the agent and returns an OAuth authorization URL',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, platform, agentId, options }) => {\n assertChannelsAvailable();\n try {\n const channel = await getChannelOrThrow(mastra, platform);\n\n if (!channel.connect) {\n throw new HTTPException(400, {\n message: `Channel \"${platform}\" does not support programmatic connection`,\n });\n }\n\n await assertChannelAgentWriteAccess(mastra, requestContext, agentId, 'connect');\n\n return await channel.connect(agentId, options);\n } catch (error) {\n return handleError(error, 'Error connecting agent to channel');\n }\n },\n});\n\n/**\n * POST /channels/:platform/:agentId/reconcile - Reconcile an agent's installation\n *\n * The explicit write path for connect flows that complete out-of-band (e.g.\n * Discord's bot invite has no redirect back to the server). Listing stays a\n * pure read; Studio calls this on window focus while a connect is in flight.\n * Gated on the same write access as connect — reconciliation can activate the\n * agent's installation.\n */\nexport const RECONCILE_CHANNEL_ROUTE = createRoute({\n method: 'POST',\n path: '/channels/:platform/:agentId/reconcile',\n responseType: 'json',\n pathParamSchema: channelAgentPathParams,\n responseSchema: reconcileChannelResponseSchema,\n summary: 'Reconcile channel installation',\n description:\n 'Checks a pending installation against platform state and activates it if its connect flow has completed. Returns the installation, or null when the agent has none or the platform does not support reconciliation.',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, platform, agentId }) => {\n assertChannelsAvailable();\n try {\n const channel = await getChannelOrThrow(mastra, platform);\n\n // Resolve the agent (404 on unknown) and authorize the write before the\n // capability check so unknown agents never read as a successful no-op.\n await assertChannelAgentWriteAccess(mastra, requestContext, agentId, 'connect');\n\n if (!channel.reconcileInstallation) {\n return null;\n }\n\n return await channel.reconcileInstallation(agentId);\n } catch (error) {\n return handleError(error, 'Error reconciling channel installation');\n }\n },\n});\n\n/**\n * POST /channels/:platform/:agentId/disconnect - Disconnect an agent from a platform\n */\nexport const DISCONNECT_CHANNEL_ROUTE = createRoute({\n method: 'POST',\n path: '/channels/:platform/:agentId/disconnect',\n responseType: 'json',\n pathParamSchema: channelAgentPathParams,\n responseSchema: disconnectChannelResponseSchema,\n summary: 'Disconnect agent from channel',\n description: 'Deletes the platform app and cleans up the installation',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, platform, agentId }) => {\n assertChannelsAvailable();\n try {\n const channel = await getChannelOrThrow(mastra, platform);\n\n if (!channel.disconnect) {\n throw new HTTPException(400, {\n message: `Channel \"${platform}\" does not support programmatic disconnection`,\n });\n }\n\n await assertChannelAgentWriteAccess(mastra, requestContext, agentId, 'disconnect');\n\n await channel.disconnect(agentId);\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error disconnecting agent from channel');\n }\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"channels-LNR2QIkc.js","names":[],"sources":["../src/server/schemas/channels.ts","../src/server/handlers/channels.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\n// ============================================================================\n// Path Parameter Schemas\n// ============================================================================\n\nexport const channelPlatformPathParams = z.object({\n platform: z.string().describe('Channel platform identifier (e.g., \"slack\")'),\n});\n\nexport const channelAgentPathParams = z.object({\n platform: z.string().describe('Channel platform identifier (e.g., \"slack\")'),\n agentId: z.string().describe('Agent identifier'),\n});\n\n// ============================================================================\n// Body Parameter Schemas\n// ============================================================================\n\nexport const connectChannelBodySchema = z.object({\n agentId: z.string().describe('Agent identifier to connect'),\n options: z.record(z.string(), z.unknown()).optional().describe('Platform-specific connection options'),\n});\n\n// ============================================================================\n// Response Schemas\n// ============================================================================\n\nconst channelPlatformInfoSchema = z.object({\n id: z.string().describe('Platform identifier'),\n name: z.string().describe('Human-readable platform name'),\n isConfigured: z.boolean().describe('Whether the platform is ready to connect agents'),\n connectOptionsSchema: z.record(z.string(), z.unknown()).optional().describe('JSON Schema for connect options'),\n});\n\nconst channelInstallationInfoSchema = z.object({\n id: z.string().describe('Installation identifier'),\n platform: z.string().describe('Platform identifier'),\n agentId: z.string().describe('Connected agent identifier'),\n status: z.enum(['active', 'pending']).describe('Installation status'),\n displayName: z.string().optional().describe('Platform-specific display name'),\n installedAt: z.coerce.date().optional().describe('Installation timestamp'),\n});\n\nconst channelConnectOAuthSchema = z.object({\n type: z.literal('oauth').describe('OAuth-based connection requiring browser redirect'),\n authorizationUrl: z.string().describe('OAuth authorization URL for user redirect'),\n installationId: z.string().describe('Installation identifier'),\n});\n\nconst channelConnectDeepLinkSchema = z.object({\n type: z.literal('deep_link').describe('Deep-link connection requiring native app interaction'),\n url: z.string().describe('Deep link URL to open in platform app'),\n installationId: z.string().describe('Installation identifier'),\n});\n\nconst channelConnectImmediateSchema = z.object({\n type: z.literal('immediate').describe('Immediate connection with no user interaction needed'),\n installationId: z.string().describe('Installation identifier'),\n});\n\nconst channelConnectResultSchema = z.discriminatedUnion('type', [\n channelConnectOAuthSchema,\n channelConnectDeepLinkSchema,\n channelConnectImmediateSchema,\n]);\n\nexport const listChannelPlatformsResponseSchema = z.array(channelPlatformInfoSchema);\n\nexport const listChannelInstallationsResponseSchema = z.array(channelInstallationInfoSchema);\n\nexport const connectChannelResponseSchema = channelConnectResultSchema;\n\nexport const disconnectChannelResponseSchema = z.object({\n success: z.boolean(),\n});\n\nexport const reconcileChannelResponseSchema = channelInstallationInfoSchema\n .nullable()\n .describe('The reconciled installation, or null when the agent has none (or the platform does not reconcile)');\n","import type { Mastra } from '@mastra/core';\nimport type { ChannelProvider } from '@mastra/core/channels';\nimport type { RequestContext } from '@mastra/core/di';\nimport { coreFeatures } from '@mastra/core/features';\n\nimport { MASTRA_USER_KEY } from '../constants';\nimport { HTTPException } from '../http-exception';\nimport {\n channelPlatformPathParams,\n channelAgentPathParams,\n connectChannelBodySchema,\n listChannelPlatformsResponseSchema,\n listChannelInstallationsResponseSchema,\n connectChannelResponseSchema,\n disconnectChannelResponseSchema,\n reconcileChannelResponseSchema,\n} from '../schemas/channels';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { assertWriteAccess, getCallerAuthorId, hasAdminBypass, hasScopedPermission } from './authorship';\nimport { handleError } from './error';\n\n// ============================================================================\n// Feature gate + helpers\n// ============================================================================\n\nfunction assertChannelsAvailable(): void {\n if (!coreFeatures.has('channels')) {\n throw new HTTPException(501, { message: 'Channels require a newer version of @mastra/core' });\n }\n}\n\n/**\n * Resolves the current channel providers. Prefers `resolveChannels()` so a\n * live resolver (e.g. `channels()` from @mastra/connect) is consulted —\n * connections added after boot are picked up without a restart. Falls back to\n * the static snapshot on older @mastra/core versions without the method.\n */\nasync function resolveChannelProviders(mastra: Mastra): Promise<ChannelProvider[]> {\n const resolveChannels = (mastra as Mastra & { resolveChannels?: () => Promise<Record<string, ChannelProvider>> })\n .resolveChannels;\n const record = typeof resolveChannels === 'function' ? await resolveChannels.call(mastra) : (mastra.channels ?? {});\n return Object.values(record);\n}\n\nasync function getChannelOrThrow(mastra: Mastra, platform: string): Promise<ChannelProvider> {\n const channels = await resolveChannelProviders(mastra);\n const channel = channels.find(c => c.id === platform);\n if (!channel) {\n const available = channels.map(c => c.id).join(', ');\n throw new HTTPException(404, {\n message: `Channel \"${platform}\" is not registered. Available: ${available || 'none'}`,\n });\n }\n return channel;\n}\n\n/**\n * Unified connect/disconnect authorization.\n *\n * - Stored agent exists → same write access as editing the agent record.\n * - Code-defined agent (no stored record) → route's `requiresAuth` is the gate.\n * - Agent doesn't exist anywhere:\n * - connect → 404 (can't connect a channel to a non-existent agent)\n * - disconnect → orphan cleanup, gated on `channels:write`\n */\nasync function assertChannelAgentWriteAccess(\n mastra: Mastra,\n requestContext: RequestContext,\n agentId: string,\n action: 'connect' | 'disconnect',\n): Promise<void> {\n const storage = mastra.getStorage();\n const agentsStore = storage ? await storage.getStore('agents') : null;\n const stored = agentsStore ? await agentsStore.getById(agentId) : null;\n\n if (stored) {\n assertWriteAccess({\n requestContext,\n resource: 'agents',\n resourceId: agentId,\n action: 'edit',\n record: stored,\n });\n return;\n }\n\n // Not in stored-agents (or storage doesn't support it). Check the runtime\n // registry for a code-defined agent.\n const codeDefined = mastra.getAgentById(agentId);\n if (codeDefined) {\n // Code-defined agents have no owner/ACL — route's requiresAuth /\n // requiresPermission is the gate. Pass-through.\n return;\n }\n\n if (action === 'connect') {\n throw new HTTPException(404, { message: `Agent \"${agentId}\" not found` });\n }\n\n // Disconnect against an unknown agentId = orphan cleanup (stored agent was\n // deleted but the channel installation row is still around). Allow it, but\n // gate on channels:write so this isn't an \"any authenticated user\" backdoor.\n // Follow the same no-auth-configured pass-through as assertWriteAccess.\n const callerAuthorId = getCallerAuthorId(requestContext);\n if (!callerAuthorId && !requestContext.get(MASTRA_USER_KEY)) return;\n if (hasAdminBypass(requestContext, 'channels')) return;\n if (hasScopedPermission({ requestContext, resource: 'channels', action: 'write' })) return;\n\n throw new HTTPException(404, { message: 'Not found' });\n}\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /channels/platforms - List available channel platforms\n */\nexport const LIST_CHANNEL_PLATFORMS_ROUTE = createRoute({\n method: 'GET',\n path: '/channels/platforms',\n responseType: 'json',\n responseSchema: listChannelPlatformsResponseSchema,\n summary: 'List channel platforms',\n description: 'Returns available channel platforms and their configuration status',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n assertChannelsAvailable();\n try {\n const channels = await resolveChannelProviders(mastra);\n return channels.map(channel => {\n if (channel.getInfo) {\n return channel.getInfo();\n }\n return {\n id: channel.id,\n name: channel.id.charAt(0).toUpperCase() + channel.id.slice(1),\n isConfigured: true,\n };\n });\n } catch (error) {\n return handleError(error, 'Error listing channel platforms');\n }\n },\n});\n\n/**\n * GET /channels/:platform/installations - List installations for a platform\n */\nexport const LIST_CHANNEL_INSTALLATIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/channels/:platform/installations',\n responseType: 'json',\n pathParamSchema: channelPlatformPathParams,\n responseSchema: listChannelInstallationsResponseSchema,\n summary: 'List channel installations',\n description: 'Returns all active and pending installations for a channel platform',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, platform }) => {\n assertChannelsAvailable();\n try {\n const channel = await getChannelOrThrow(mastra, platform);\n\n if (!channel.listInstallations) {\n return [];\n }\n\n return await channel.listInstallations();\n } catch (error) {\n return handleError(error, 'Error listing channel installations');\n }\n },\n});\n\n/**\n * POST /channels/:platform/connect - Connect an agent to a platform\n */\nexport const CONNECT_CHANNEL_ROUTE = createRoute({\n method: 'POST',\n path: '/channels/:platform/connect',\n responseType: 'json',\n pathParamSchema: channelPlatformPathParams,\n bodySchema: connectChannelBodySchema,\n responseSchema: connectChannelResponseSchema,\n summary: 'Connect agent to channel',\n description: 'Creates a platform app for the agent and returns an OAuth authorization URL',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, platform, agentId, options }) => {\n assertChannelsAvailable();\n try {\n const channel = await getChannelOrThrow(mastra, platform);\n\n if (!channel.connect) {\n throw new HTTPException(400, {\n message: `Channel \"${platform}\" does not support programmatic connection`,\n });\n }\n\n await assertChannelAgentWriteAccess(mastra, requestContext, agentId, 'connect');\n\n return await channel.connect(agentId, options);\n } catch (error) {\n return handleError(error, 'Error connecting agent to channel');\n }\n },\n});\n\n/**\n * POST /channels/:platform/:agentId/reconcile - Reconcile an agent's installation\n *\n * The explicit write path for connect flows that complete out-of-band (e.g.\n * Discord's bot invite has no redirect back to the server). Listing stays a\n * pure read; Studio calls this on window focus while a connect is in flight.\n * Gated on the same write access as connect — reconciliation can activate the\n * agent's installation.\n */\nexport const RECONCILE_CHANNEL_ROUTE = createRoute({\n method: 'POST',\n path: '/channels/:platform/:agentId/reconcile',\n responseType: 'json',\n pathParamSchema: channelAgentPathParams,\n responseSchema: reconcileChannelResponseSchema,\n summary: 'Reconcile channel installation',\n description:\n 'Checks a pending installation against platform state and activates it if its connect flow has completed. Returns the installation, or null when the agent has none or the platform does not support reconciliation.',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, platform, agentId }) => {\n assertChannelsAvailable();\n try {\n const channel = await getChannelOrThrow(mastra, platform);\n\n // Resolve the agent (404 on unknown) and authorize the write before the\n // capability check so unknown agents never read as a successful no-op.\n await assertChannelAgentWriteAccess(mastra, requestContext, agentId, 'connect');\n\n if (!channel.reconcileInstallation) {\n return null;\n }\n\n return await channel.reconcileInstallation(agentId);\n } catch (error) {\n return handleError(error, 'Error reconciling channel installation');\n }\n },\n});\n\n/**\n * POST /channels/:platform/:agentId/disconnect - Disconnect an agent from a platform\n */\nexport const DISCONNECT_CHANNEL_ROUTE = createRoute({\n method: 'POST',\n path: '/channels/:platform/:agentId/disconnect',\n responseType: 'json',\n pathParamSchema: channelAgentPathParams,\n responseSchema: disconnectChannelResponseSchema,\n summary: 'Disconnect agent from channel',\n description: 'Deletes the platform app and cleans up the installation',\n tags: ['Channels'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, platform, agentId }) => {\n assertChannelsAvailable();\n try {\n const channel = await getChannelOrThrow(mastra, platform);\n\n if (!channel.disconnect) {\n throw new HTTPException(400, {\n message: `Channel \"${platform}\" does not support programmatic disconnection`,\n });\n }\n\n await assertChannelAgentWriteAccess(mastra, requestContext, agentId, 'disconnect');\n\n await channel.disconnect(agentId);\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error disconnecting agent from channel');\n }\n },\n});\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
let zod_v4 = require("zod/v4");
|
|
2
|
-
|
|
2
|
+
// src/server/schemas/common.ts
|
|
3
3
|
/**
|
|
4
4
|
* Brands a permissive runtime schema with a concrete compile-time type.
|
|
5
5
|
*
|
|
@@ -143,7 +143,6 @@ const baseLogMessageSchema = zod_v4.z.object({
|
|
|
143
143
|
hostname: zod_v4.z.string(),
|
|
144
144
|
name: zod_v4.z.string()
|
|
145
145
|
});
|
|
146
|
-
//#endregion
|
|
147
146
|
Object.defineProperty(exports, "baseLogMessageSchema", {
|
|
148
147
|
enumerable: true,
|
|
149
148
|
get: function() {
|
|
@@ -229,4 +228,4 @@ Object.defineProperty(exports, "typedPermissive", {
|
|
|
229
228
|
}
|
|
230
229
|
});
|
|
231
230
|
|
|
232
|
-
//# sourceMappingURL=common-
|
|
231
|
+
//# sourceMappingURL=common-DVZqSEhZ.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-
|
|
1
|
+
{"version":3,"file":"common-DVZqSEhZ.cjs","names":["z"],"sources":["../src/server/schemas/common.ts"],"sourcesContent":["import type { MessageInput } from '@mastra/core/agent/message-list';\nimport { z } from 'zod/v4';\n\n/**\n * Brands a permissive runtime schema with a concrete compile-time type.\n *\n * Some request-body fields carry values the server cannot fully validate with\n * zod: functions (stop conditions, client tools), Zod schemas (structured\n * output), or complex core types that would drift if re-declared here. For\n * those fields runtime validation stays permissive and the receiving\n * agent/workflow API performs the real validation, while handlers and\n * generated route types still get the concrete type.\n *\n * Every call site is an intentional, documented gap between runtime\n * validation and the declared type. Prefer a real zod schema whenever the\n * shape can reasonably be expressed — only reach for this when it cannot.\n */\nexport function typedPermissive<T>(schema: z.ZodType): z.ZodType<T> {\n return schema as unknown as z.ZodType<T>;\n}\n\n// Path parameter schemas\nexport const runIdSchema = z.object({\n runId: z.string().describe('Unique identifier for the run'),\n});\n\n/**\n * Query parameter schema for runId (optional)\n * Used by create-run route where runId is optional\n */\nexport const optionalRunIdSchema = z.object({\n runId: z.string().optional(),\n});\n\n// ============================================================================\n// Pagination Schemas\n// ============================================================================\n\n/**\n * Pagination response info\n * Used across all paginated endpoints\n */\nexport const paginationInfoSchema = z.object({\n total: z.number(),\n page: z.number(),\n perPage: z.union([z.number(), z.literal(false)]),\n hasMore: z.boolean(),\n});\n\n/**\n * Pagination values are non-negative integers. Constraining them here keeps\n * malformed input a 400 at the request boundary: without `.int().min(0)`,\n * `z.coerce.number()` only rejects values that coerce to `NaN`, so `page=-1`\n * and `perPage=2.5` reach the storage layer, which rejects them with a plain\n * `Error` that `handleError` can only report as a 500.\n *\n * The lower bound is 0 rather than 1 because `perPage: 0` is a supported\n * storage contract (the include-only fast path).\n */\nexport const paginationNumber = () => z.coerce.number().int().min(0);\n\n/**\n * Factory function for page/perPage pagination query params\n * @param defaultPerPage - Default value for perPage (omit for no default)\n */\nexport const createPagePaginationSchema = (defaultPerPage?: number) => {\n const baseSchema = {\n page: paginationNumber().optional().default(0),\n };\n\n if (defaultPerPage !== undefined) {\n return z.object({\n ...baseSchema,\n perPage: paginationNumber().optional().default(defaultPerPage),\n });\n } else {\n return z.object({\n ...baseSchema,\n perPage: paginationNumber().optional(),\n });\n }\n};\n\n/**\n * Factory function for pagination that supports both page/perPage and limit/offset\n * Use this when you need backwards compatibility with older clients using limit/offset\n */\nexport const createCombinedPaginationSchema = () => {\n return z.object({\n page: paginationNumber().optional(),\n perPage: paginationNumber().optional(),\n /**\n * @deprecated Use page and perPage instead\n */\n offset: paginationNumber().optional(),\n /**\n * @deprecated Use page and perPage instead\n */\n limit: paginationNumber().optional(),\n });\n};\n\n// ============================================================================\n// Observability Schemas\n// ============================================================================\n\n/**\n * Tracing options for observability\n * Used by agents and workflows\n */\nexport const tracingOptionsSchema = z.object({\n rootSpanName: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n requestContextKeys: z.array(z.string()).optional(),\n traceId: z.string().optional(),\n parentSpanId: z.string().optional(),\n nestUnderParent: z.boolean().optional(),\n tags: z.array(z.string()).optional(),\n hideInput: z.boolean().optional(),\n hideOutput: z.boolean().optional(),\n});\n\n// ============================================================================\n// Message Schemas\n// ============================================================================\n\n/**\n * Core message schema from AI SDK\n * Represents messages exchanged with AI models\n * Content can be string, array of content parts, or object (for complex message types)\n */\n// Runtime validation stays permissive (z.unknown()) so generated route types\n// don't leak `any`; typedPermissive gives handlers the concrete message type\n// expected by agent APIs (agent.generate/stream/network).\nexport const coreMessageSchema = typedPermissive<MessageInput>(z.unknown());\n// .object({\n// role: z.enum(['system', 'user', 'assistant', 'tool']),\n// content: z.union([\n// z.string(),\n// z.array(\n// z\n// .object({\n// type: z.enum(['text', 'image', 'file', 'tool-call', 'tool-result']),\n// })\n// .passthrough(), // Preserve additional fields like text, image, toolCall, etc.\n// ),\n// z.unknown(), // For complex message content objects\n// ]),\n// })\n// .passthrough();\n\n// ============================================================================\n// Common Response Schemas\n// ============================================================================\n\n/**\n * Standard success response schema\n * Used by operations that return only a success boolean\n */\nexport const successResponseSchema = z.object({\n success: z.boolean(),\n});\n\n/**\n * Standard message response schema\n * Used by operations that return only a message string\n */\nexport const messageResponseSchema = z.object({\n message: z.string(),\n});\n\n/**\n * Partial data query parameter schema\n * Used by list endpoints to return minimal data without schemas\n */\nexport const partialQuerySchema = z.object({\n partial: z.string().optional(),\n});\n\n// ============================================================================\n// Status Schemas\n// ============================================================================\n\n/**\n * Status filter for get-by-id endpoints.\n * Controls which version is resolved:\n * - 'published' (default) — resolve with the active (published) version.\n * - 'draft' — resolve with the latest version (which may be ahead of the published one).\n */\nexport const statusQuerySchema = z.object({\n status: z\n .enum(['draft', 'published', 'archived'])\n .optional()\n .default('published')\n .describe('Which version to resolve: published (active version) or draft (latest version)'),\n});\n\n// ============================================================================\n// Logging Schemas\n// ============================================================================\n\n/**\n * Base log message schema\n */\nexport const baseLogMessageSchema = z.object({\n level: z.enum(['debug', 'info', 'warn', 'error', 'silent']),\n msg: z.string(),\n time: z.date(),\n context: z.record(z.string(), z.unknown()).optional(),\n runId: z.string().optional(),\n pid: z.number(),\n hostname: z.string(),\n name: z.string(),\n});\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod/v4";
|
|
2
|
-
|
|
2
|
+
// src/server/schemas/common.ts
|
|
3
3
|
/**
|
|
4
4
|
* Brands a permissive runtime schema with a concrete compile-time type.
|
|
5
5
|
*
|
|
@@ -143,7 +143,6 @@ const baseLogMessageSchema = z.object({
|
|
|
143
143
|
hostname: z.string(),
|
|
144
144
|
name: z.string()
|
|
145
145
|
});
|
|
146
|
-
//#endregion
|
|
147
146
|
export { messageResponseSchema as a, paginationNumber as c, statusQuerySchema as d, successResponseSchema as f, createPagePaginationSchema as i, partialQuerySchema as l, typedPermissive as m, coreMessageSchema as n, optionalRunIdSchema as o, tracingOptionsSchema as p, createCombinedPaginationSchema as r, paginationInfoSchema as s, baseLogMessageSchema as t, runIdSchema as u };
|
|
148
147
|
|
|
149
|
-
//# sourceMappingURL=common-
|
|
148
|
+
//# sourceMappingURL=common-xUmaFUop.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-
|
|
1
|
+
{"version":3,"file":"common-xUmaFUop.js","names":[],"sources":["../src/server/schemas/common.ts"],"sourcesContent":["import type { MessageInput } from '@mastra/core/agent/message-list';\nimport { z } from 'zod/v4';\n\n/**\n * Brands a permissive runtime schema with a concrete compile-time type.\n *\n * Some request-body fields carry values the server cannot fully validate with\n * zod: functions (stop conditions, client tools), Zod schemas (structured\n * output), or complex core types that would drift if re-declared here. For\n * those fields runtime validation stays permissive and the receiving\n * agent/workflow API performs the real validation, while handlers and\n * generated route types still get the concrete type.\n *\n * Every call site is an intentional, documented gap between runtime\n * validation and the declared type. Prefer a real zod schema whenever the\n * shape can reasonably be expressed — only reach for this when it cannot.\n */\nexport function typedPermissive<T>(schema: z.ZodType): z.ZodType<T> {\n return schema as unknown as z.ZodType<T>;\n}\n\n// Path parameter schemas\nexport const runIdSchema = z.object({\n runId: z.string().describe('Unique identifier for the run'),\n});\n\n/**\n * Query parameter schema for runId (optional)\n * Used by create-run route where runId is optional\n */\nexport const optionalRunIdSchema = z.object({\n runId: z.string().optional(),\n});\n\n// ============================================================================\n// Pagination Schemas\n// ============================================================================\n\n/**\n * Pagination response info\n * Used across all paginated endpoints\n */\nexport const paginationInfoSchema = z.object({\n total: z.number(),\n page: z.number(),\n perPage: z.union([z.number(), z.literal(false)]),\n hasMore: z.boolean(),\n});\n\n/**\n * Pagination values are non-negative integers. Constraining them here keeps\n * malformed input a 400 at the request boundary: without `.int().min(0)`,\n * `z.coerce.number()` only rejects values that coerce to `NaN`, so `page=-1`\n * and `perPage=2.5` reach the storage layer, which rejects them with a plain\n * `Error` that `handleError` can only report as a 500.\n *\n * The lower bound is 0 rather than 1 because `perPage: 0` is a supported\n * storage contract (the include-only fast path).\n */\nexport const paginationNumber = () => z.coerce.number().int().min(0);\n\n/**\n * Factory function for page/perPage pagination query params\n * @param defaultPerPage - Default value for perPage (omit for no default)\n */\nexport const createPagePaginationSchema = (defaultPerPage?: number) => {\n const baseSchema = {\n page: paginationNumber().optional().default(0),\n };\n\n if (defaultPerPage !== undefined) {\n return z.object({\n ...baseSchema,\n perPage: paginationNumber().optional().default(defaultPerPage),\n });\n } else {\n return z.object({\n ...baseSchema,\n perPage: paginationNumber().optional(),\n });\n }\n};\n\n/**\n * Factory function for pagination that supports both page/perPage and limit/offset\n * Use this when you need backwards compatibility with older clients using limit/offset\n */\nexport const createCombinedPaginationSchema = () => {\n return z.object({\n page: paginationNumber().optional(),\n perPage: paginationNumber().optional(),\n /**\n * @deprecated Use page and perPage instead\n */\n offset: paginationNumber().optional(),\n /**\n * @deprecated Use page and perPage instead\n */\n limit: paginationNumber().optional(),\n });\n};\n\n// ============================================================================\n// Observability Schemas\n// ============================================================================\n\n/**\n * Tracing options for observability\n * Used by agents and workflows\n */\nexport const tracingOptionsSchema = z.object({\n rootSpanName: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n requestContextKeys: z.array(z.string()).optional(),\n traceId: z.string().optional(),\n parentSpanId: z.string().optional(),\n nestUnderParent: z.boolean().optional(),\n tags: z.array(z.string()).optional(),\n hideInput: z.boolean().optional(),\n hideOutput: z.boolean().optional(),\n});\n\n// ============================================================================\n// Message Schemas\n// ============================================================================\n\n/**\n * Core message schema from AI SDK\n * Represents messages exchanged with AI models\n * Content can be string, array of content parts, or object (for complex message types)\n */\n// Runtime validation stays permissive (z.unknown()) so generated route types\n// don't leak `any`; typedPermissive gives handlers the concrete message type\n// expected by agent APIs (agent.generate/stream/network).\nexport const coreMessageSchema = typedPermissive<MessageInput>(z.unknown());\n// .object({\n// role: z.enum(['system', 'user', 'assistant', 'tool']),\n// content: z.union([\n// z.string(),\n// z.array(\n// z\n// .object({\n// type: z.enum(['text', 'image', 'file', 'tool-call', 'tool-result']),\n// })\n// .passthrough(), // Preserve additional fields like text, image, toolCall, etc.\n// ),\n// z.unknown(), // For complex message content objects\n// ]),\n// })\n// .passthrough();\n\n// ============================================================================\n// Common Response Schemas\n// ============================================================================\n\n/**\n * Standard success response schema\n * Used by operations that return only a success boolean\n */\nexport const successResponseSchema = z.object({\n success: z.boolean(),\n});\n\n/**\n * Standard message response schema\n * Used by operations that return only a message string\n */\nexport const messageResponseSchema = z.object({\n message: z.string(),\n});\n\n/**\n * Partial data query parameter schema\n * Used by list endpoints to return minimal data without schemas\n */\nexport const partialQuerySchema = z.object({\n partial: z.string().optional(),\n});\n\n// ============================================================================\n// Status Schemas\n// ============================================================================\n\n/**\n * Status filter for get-by-id endpoints.\n * Controls which version is resolved:\n * - 'published' (default) — resolve with the active (published) version.\n * - 'draft' — resolve with the latest version (which may be ahead of the published one).\n */\nexport const statusQuerySchema = z.object({\n status: z\n .enum(['draft', 'published', 'archived'])\n .optional()\n .default('published')\n .describe('Which version to resolve: published (active version) or draft (latest version)'),\n});\n\n// ============================================================================\n// Logging Schemas\n// ============================================================================\n\n/**\n * Base log message schema\n */\nexport const baseLogMessageSchema = z.object({\n level: z.enum(['debug', 'info', 'warn', 'error', 'silent']),\n msg: z.string(),\n time: z.date(),\n context: z.record(z.string(), z.unknown()).optional(),\n runId: z.string().optional(),\n pid: z.number(),\n hostname: z.string(),\n name: z.string(),\n});\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/server/constants.ts
|
|
2
2
|
/**
|
|
3
3
|
* Constants inlined from @mastra/core to avoid import compatibility
|
|
4
4
|
* issues with older core versions that don't export them yet.
|
|
@@ -127,7 +127,6 @@ async function resolveToolConfig(toolsConfig, toolName, context) {
|
|
|
127
127
|
requireReadBeforeWrite: requireReadBeforeWrite !== void 0 ? await resolveDynamicValue(requireReadBeforeWrite, context, true) : void 0
|
|
128
128
|
};
|
|
129
129
|
}
|
|
130
|
-
//#endregion
|
|
131
130
|
Object.defineProperty(exports, "MASTRA_AUTH_MODE_KEY", {
|
|
132
131
|
enumerable: true,
|
|
133
132
|
get: function() {
|
|
@@ -225,4 +224,4 @@ Object.defineProperty(exports, "resolveToolConfig", {
|
|
|
225
224
|
}
|
|
226
225
|
});
|
|
227
226
|
|
|
228
|
-
//# sourceMappingURL=constants-
|
|
227
|
+
//# sourceMappingURL=constants-Co1XjPjd.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants-e7aaPCLj.cjs","names":[],"sources":["../src/server/constants.ts"],"sourcesContent":["/**\n * Constants inlined from @mastra/core to avoid import compatibility\n * issues with older core versions that don't export them yet.\n *\n * - Reserved RequestContext keys are inlined from @mastra/core/request-context.\n * - Workspace tool constants are inlined from @mastra/core/workspace.\n */\n\nexport const MASTRA_RESOURCE_ID_KEY = 'mastra__resourceId';\n\nexport const MASTRA_THREAD_ID_KEY = 'mastra__threadId';\n\n/**\n * Agent scopes set by trusted middleware. Never accepted from a request body.\n */\nexport const MASTRA_SCOPES_KEY = 'mastra__scopes';\n\nexport const MASTRA_USER_KEY = 'mastra__user';\n\nexport const MASTRA_USER_PERMISSIONS_KEY = 'mastra__userPermissions';\n\nexport const MASTRA_USER_ROLES_KEY = 'mastra__userRoles';\n\nexport const MASTRA_AUTH_TOKEN_KEY = 'mastra__authToken';\n\nexport const MASTRA_IS_STUDIO_KEY = 'mastra__isStudio';\n\n/**\n * Carries a delegating agent's memory into a delegated sub-agent run. Set only\n * by the delegation path inside a single process.\n */\nexport const MASTRA_INHERITED_MEMORY_KEY = 'mastra__inheritedMemory';\n\n/**\n * Tracks which auth mode was used for the current request.\n * Set to 'studio' when studio auth was used, 'server' when server auth was used.\n * Used to determine which RBAC/FGA provider to use for permission checks.\n */\nexport const MASTRA_AUTH_MODE_KEY = 'mastra__authMode';\n\nexport type MastraAuthMode = 'studio' | 'server';\n\nexport const MASTRA_CLIENT_TYPE_HEADER = 'x-mastra-client-type';\n\n/**\n * Browser-facing host, set by a trusted proxy whose own `X-Forwarded-Host` does\n * not survive the hop to the app. Railway's gateway, for example, overwrites\n * `X-Forwarded-Host` with its internal domain, so an edge in front of it has no\n * other way to tell the app which hostname the user actually typed.\n *\n * Read by `getPublicOrigin()` ahead of `X-Forwarded-Host`. Carries the same\n * trust assumption as the other forwarded headers: meaningful only behind a\n * proxy that sets it, and it must be stripped from untrusted client requests.\n */\nexport const MASTRA_PUBLIC_HOST_HEADER = 'x-mastra-public-host';\n\nexport const MASTRA_STUDIO_CLIENT_TYPE = 'studio';\n\n/**\n * RequestContext keys only trusted server code may set. Request bodies and query\n * params can never supply them.\n */\nexport const RESERVED_REQUEST_CONTEXT_KEYS = [\n MASTRA_RESOURCE_ID_KEY,\n MASTRA_THREAD_ID_KEY,\n // Agent scopes decide memory identity and what the agent acts as; only\n // server middleware may set them.\n MASTRA_SCOPES_KEY,\n MASTRA_USER_KEY,\n MASTRA_USER_PERMISSIONS_KEY,\n MASTRA_USER_ROLES_KEY,\n MASTRA_AUTH_TOKEN_KEY,\n MASTRA_IS_STUDIO_KEY,\n MASTRA_AUTH_MODE_KEY,\n // Delegation stores a live memory instance here. A body-supplied value would\n // be handed to the agent as its memory and throw on the first memory call.\n MASTRA_INHERITED_MEMORY_KEY,\n // Factory stores the authoritative per-caller OM settings result here before\n // model-driven memory processors run. Client input must not spoof that result.\n 'mastra__factoryMemorySettings',\n // Tenant scope must be established server-side, never self-asserted by a\n // client. The trusted-actor FGA gate keys off `organizationId`, so a\n // body-supplied value must not be merged into the request context.\n 'organizationId',\n] as const;\n\nconst RESERVED_CONTEXT_KEYS: ReadonlySet<string> = new Set(RESERVED_REQUEST_CONTEXT_KEYS);\n\nexport function isReservedRequestContextKey(key: string): boolean {\n return RESERVED_CONTEXT_KEYS.has(key);\n}\n\nexport function isStudioClientTypeHeader(value: string | undefined): boolean {\n return value?.toLowerCase() === MASTRA_STUDIO_CLIENT_TYPE;\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 * A tool config value that may be a static boolean or a dynamic function.\n * Inlined from @mastra/core/workspace for compatibility.\n *\n * Uses `(...args: any[]) => any` for the function branch so it stays\n * assignable from all core context variants (ToolConfigContext,\n * ToolConfigWithArgsContext) without importing them.\n */\n\ntype DynamicToolConfigValue = boolean | ((...args: any[]) => any);\n\n/**\n * Configuration for a single workspace tool.\n */\nexport interface WorkspaceToolConfig {\n enabled?: DynamicToolConfigValue;\n requireApproval?: DynamicToolConfigValue;\n requireReadBeforeWrite?: DynamicToolConfigValue;\n}\n\n/**\n * Configuration for workspace tools.\n */\nexport type WorkspaceToolsConfig = {\n enabled?: DynamicToolConfigValue;\n requireApproval?: DynamicToolConfigValue;\n} & Partial<Record<WorkspaceToolName, WorkspaceToolConfig>>;\n\n/**\n * Safely resolve a dynamic config value (boolean or async function) to a boolean.\n * Falls back to `safeDefault` when no context is available or the function throws.\n */\nasync function resolveDynamicValue(\n value: DynamicToolConfigValue | undefined,\n context: { workspace: object; requestContext: Record<string, unknown> } | undefined,\n safeDefault: boolean,\n): Promise<boolean> {\n if (value === undefined) return safeDefault;\n if (typeof value === 'boolean') return value;\n if (!context) return safeDefault;\n try {\n return await value(context);\n } catch (error) {\n console.warn('[Workspace Tools] Dynamic config function threw, using safe default:', error);\n return safeDefault;\n }\n}\n\n/**\n * Resolve the effective configuration for a workspace tool.\n * Inlined from @mastra/core/workspace for compatibility.\n *\n * Dynamic function values are resolved by calling them with the provided\n * workspace and requestContext. If a function throws, safe defaults are used\n * (enabled → false, requireApproval → true, requireReadBeforeWrite → true).\n */\nexport async function resolveToolConfig(\n toolsConfig: WorkspaceToolsConfig | undefined,\n toolName: WorkspaceToolName,\n context?: { workspace: object; requestContext: Record<string, unknown> },\n): Promise<{ enabled: boolean; requireApproval: boolean; requireReadBeforeWrite?: boolean }> {\n let enabled: DynamicToolConfigValue = true;\n let requireApproval: DynamicToolConfigValue = false;\n let requireReadBeforeWrite: DynamicToolConfigValue | 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 {\n enabled: await resolveDynamicValue(enabled, context, false),\n requireApproval: await resolveDynamicValue(requireApproval, context, true),\n requireReadBeforeWrite:\n requireReadBeforeWrite !== undefined\n ? await resolveDynamicValue(requireReadBeforeWrite, context, true)\n : undefined,\n };\n}\n"],"mappings":";;;;;;;;AAQA,MAAa,yBAAyB;AAEtC,MAAa,uBAAuB;;;;AAKpC,MAAa,oBAAoB;AAEjC,MAAa,kBAAkB;AAE/B,MAAa,8BAA8B;AAE3C,MAAa,wBAAwB;AAErC,MAAa,wBAAwB;AAErC,MAAa,uBAAuB;;;;;AAMpC,MAAa,8BAA8B;;;;;;AAO3C,MAAa,uBAAuB;AAIpC,MAAa,4BAA4B;;;;;;;;;;;AAYzC,MAAa,4BAA4B;AAEzC,MAAa,4BAA4B;;;;;AAMzC,MAAa,gCAAgC;CAC3C;CACA;CAGA;CACA;CACA;CACA;CACA;CACA;CACA;CAGA;CAGA;CAIA;AACF;AAEA,MAAM,wBAA6C,IAAI,IAAI,6BAA6B;AAExF,SAAgB,4BAA4B,KAAsB;CAChE,OAAO,sBAAsB,IAAI,GAAG;AACtC;AAEA,SAAgB,yBAAyB,OAAoC;CAC3E,OAAO,OAAO,YAAY,MAAM;AAClC;AAEA,MAAa,yBAAyB;AAEtC,MAAa,kBAAkB;CAC7B,YAAY;EACV,WAAW,GAAG,uBAAuB;EACrC,YAAY,GAAG,uBAAuB;EACtC,WAAW,GAAG,uBAAuB;EACrC,YAAY,GAAG,uBAAuB;EACtC,QAAQ,GAAG,uBAAuB;EAClC,WAAW,GAAG,uBAAuB;EACrC,OAAO,GAAG,uBAAuB;EACjC,MAAM,GAAG,uBAAuB;CAClC;CACA,SAAS,EACP,iBAAiB,GAAG,uBAAuB,kBAC7C;CACA,QAAQ;EACN,QAAQ,GAAG,uBAAuB;EAClC,OAAO,GAAG,uBAAuB;CACnC;AACF;;;;;AAuCA,eAAe,oBACb,OACA,SACA,aACkB;CAClB,IAAI,UAAU,KAAA,GAAW,OAAO;CAChC,IAAI,OAAO,UAAU,WAAW,OAAO;CACvC,IAAI,CAAC,SAAS,OAAO;CACrB,IAAI;EACF,OAAO,MAAM,MAAM,OAAO;CAC5B,SAAS,OAAO;EACd,QAAQ,KAAK,wEAAwE,KAAK;EAC1F,OAAO;CACT;AACF;;;;;;;;;AAUA,eAAsB,kBACpB,aACA,UACA,SAC2F;CAC3F,IAAI,UAAkC;CACtC,IAAI,kBAA0C;CAC9C,IAAI;CAEJ,IAAI,aAAa;EACf,IAAI,YAAY,YAAY,KAAA,GAC1B,UAAU,YAAY;EAExB,IAAI,YAAY,oBAAoB,KAAA,GAClC,kBAAkB,YAAY;EAGhC,MAAM,gBAAgB,YAAY;EAClC,IAAI,eAAe;GACjB,IAAI,cAAc,YAAY,KAAA,GAC5B,UAAU,cAAc;GAE1B,IAAI,cAAc,oBAAoB,KAAA,GACpC,kBAAkB,cAAc;GAElC,IAAI,cAAc,2BAA2B,KAAA,GAC3C,yBAAyB,cAAc;EAE3C;CACF;CAEA,OAAO;EACL,SAAS,MAAM,oBAAoB,SAAS,SAAS,KAAK;EAC1D,iBAAiB,MAAM,oBAAoB,iBAAiB,SAAS,IAAI;EACzE,wBACE,2BAA2B,KAAA,IACvB,MAAM,oBAAoB,wBAAwB,SAAS,IAAI,IAC/D,KAAA;CACR;AACF"}
|
|
1
|
+
{"version":3,"file":"constants-Co1XjPjd.cjs","names":[],"sources":["../src/server/constants.ts"],"sourcesContent":["/**\n * Constants inlined from @mastra/core to avoid import compatibility\n * issues with older core versions that don't export them yet.\n *\n * - Reserved RequestContext keys are inlined from @mastra/core/request-context.\n * - Workspace tool constants are inlined from @mastra/core/workspace.\n */\n\nexport const MASTRA_RESOURCE_ID_KEY = 'mastra__resourceId';\n\nexport const MASTRA_THREAD_ID_KEY = 'mastra__threadId';\n\n/**\n * Agent scopes set by trusted middleware. Never accepted from a request body.\n */\nexport const MASTRA_SCOPES_KEY = 'mastra__scopes';\n\nexport const MASTRA_USER_KEY = 'mastra__user';\n\nexport const MASTRA_USER_PERMISSIONS_KEY = 'mastra__userPermissions';\n\nexport const MASTRA_USER_ROLES_KEY = 'mastra__userRoles';\n\nexport const MASTRA_AUTH_TOKEN_KEY = 'mastra__authToken';\n\nexport const MASTRA_IS_STUDIO_KEY = 'mastra__isStudio';\n\n/**\n * Carries a delegating agent's memory into a delegated sub-agent run. Set only\n * by the delegation path inside a single process.\n */\nexport const MASTRA_INHERITED_MEMORY_KEY = 'mastra__inheritedMemory';\n\n/**\n * Tracks which auth mode was used for the current request.\n * Set to 'studio' when studio auth was used, 'server' when server auth was used.\n * Used to determine which RBAC/FGA provider to use for permission checks.\n */\nexport const MASTRA_AUTH_MODE_KEY = 'mastra__authMode';\n\nexport type MastraAuthMode = 'studio' | 'server';\n\nexport const MASTRA_CLIENT_TYPE_HEADER = 'x-mastra-client-type';\n\n/**\n * Browser-facing host, set by a trusted proxy whose own `X-Forwarded-Host` does\n * not survive the hop to the app. Railway's gateway, for example, overwrites\n * `X-Forwarded-Host` with its internal domain, so an edge in front of it has no\n * other way to tell the app which hostname the user actually typed.\n *\n * Read by `getPublicOrigin()` ahead of `X-Forwarded-Host`. Carries the same\n * trust assumption as the other forwarded headers: meaningful only behind a\n * proxy that sets it, and it must be stripped from untrusted client requests.\n */\nexport const MASTRA_PUBLIC_HOST_HEADER = 'x-mastra-public-host';\n\nexport const MASTRA_STUDIO_CLIENT_TYPE = 'studio';\n\n/**\n * RequestContext keys only trusted server code may set. Request bodies and query\n * params can never supply them.\n */\nexport const RESERVED_REQUEST_CONTEXT_KEYS = [\n MASTRA_RESOURCE_ID_KEY,\n MASTRA_THREAD_ID_KEY,\n // Agent scopes decide memory identity and what the agent acts as; only\n // server middleware may set them.\n MASTRA_SCOPES_KEY,\n MASTRA_USER_KEY,\n MASTRA_USER_PERMISSIONS_KEY,\n MASTRA_USER_ROLES_KEY,\n MASTRA_AUTH_TOKEN_KEY,\n MASTRA_IS_STUDIO_KEY,\n MASTRA_AUTH_MODE_KEY,\n // Delegation stores a live memory instance here. A body-supplied value would\n // be handed to the agent as its memory and throw on the first memory call.\n MASTRA_INHERITED_MEMORY_KEY,\n // Factory stores the authoritative per-caller OM settings result here before\n // model-driven memory processors run. Client input must not spoof that result.\n 'mastra__factoryMemorySettings',\n // Tenant scope must be established server-side, never self-asserted by a\n // client. The trusted-actor FGA gate keys off `organizationId`, so a\n // body-supplied value must not be merged into the request context.\n 'organizationId',\n] as const;\n\nconst RESERVED_CONTEXT_KEYS: ReadonlySet<string> = new Set(RESERVED_REQUEST_CONTEXT_KEYS);\n\nexport function isReservedRequestContextKey(key: string): boolean {\n return RESERVED_CONTEXT_KEYS.has(key);\n}\n\nexport function isStudioClientTypeHeader(value: string | undefined): boolean {\n return value?.toLowerCase() === MASTRA_STUDIO_CLIENT_TYPE;\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 * A tool config value that may be a static boolean or a dynamic function.\n * Inlined from @mastra/core/workspace for compatibility.\n *\n * Uses `(...args: any[]) => any` for the function branch so it stays\n * assignable from all core context variants (ToolConfigContext,\n * ToolConfigWithArgsContext) without importing them.\n */\n\ntype DynamicToolConfigValue = boolean | ((...args: any[]) => any);\n\n/**\n * Configuration for a single workspace tool.\n */\nexport interface WorkspaceToolConfig {\n enabled?: DynamicToolConfigValue;\n requireApproval?: DynamicToolConfigValue;\n requireReadBeforeWrite?: DynamicToolConfigValue;\n}\n\n/**\n * Configuration for workspace tools.\n */\nexport type WorkspaceToolsConfig = {\n enabled?: DynamicToolConfigValue;\n requireApproval?: DynamicToolConfigValue;\n} & Partial<Record<WorkspaceToolName, WorkspaceToolConfig>>;\n\n/**\n * Safely resolve a dynamic config value (boolean or async function) to a boolean.\n * Falls back to `safeDefault` when no context is available or the function throws.\n */\nasync function resolveDynamicValue(\n value: DynamicToolConfigValue | undefined,\n context: { workspace: object; requestContext: Record<string, unknown> } | undefined,\n safeDefault: boolean,\n): Promise<boolean> {\n if (value === undefined) return safeDefault;\n if (typeof value === 'boolean') return value;\n if (!context) return safeDefault;\n try {\n return await value(context);\n } catch (error) {\n console.warn('[Workspace Tools] Dynamic config function threw, using safe default:', error);\n return safeDefault;\n }\n}\n\n/**\n * Resolve the effective configuration for a workspace tool.\n * Inlined from @mastra/core/workspace for compatibility.\n *\n * Dynamic function values are resolved by calling them with the provided\n * workspace and requestContext. If a function throws, safe defaults are used\n * (enabled → false, requireApproval → true, requireReadBeforeWrite → true).\n */\nexport async function resolveToolConfig(\n toolsConfig: WorkspaceToolsConfig | undefined,\n toolName: WorkspaceToolName,\n context?: { workspace: object; requestContext: Record<string, unknown> },\n): Promise<{ enabled: boolean; requireApproval: boolean; requireReadBeforeWrite?: boolean }> {\n let enabled: DynamicToolConfigValue = true;\n let requireApproval: DynamicToolConfigValue = false;\n let requireReadBeforeWrite: DynamicToolConfigValue | 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 {\n enabled: await resolveDynamicValue(enabled, context, false),\n requireApproval: await resolveDynamicValue(requireApproval, context, true),\n requireReadBeforeWrite:\n requireReadBeforeWrite !== undefined\n ? await resolveDynamicValue(requireReadBeforeWrite, context, true)\n : undefined,\n };\n}\n"],"mappings":";;;;;;;;AAQA,MAAa,yBAAyB;AAEtC,MAAa,uBAAuB;;;;AAKpC,MAAa,oBAAoB;AAEjC,MAAa,kBAAkB;AAE/B,MAAa,8BAA8B;AAE3C,MAAa,wBAAwB;AAErC,MAAa,wBAAwB;AAErC,MAAa,uBAAuB;;;;;AAMpC,MAAa,8BAA8B;;;;;;AAO3C,MAAa,uBAAuB;AAIpC,MAAa,4BAA4B;;;;;;;;;;;AAYzC,MAAa,4BAA4B;AAEzC,MAAa,4BAA4B;;;;;AAMzC,MAAa,gCAAgC;CAC3C;CACA;CAGA;CACA;CACA;CACA;CACA;CACA;CACA;CAGA;CAGA;CAIA;AACF;AAEA,MAAM,wBAA6C,IAAI,IAAI,6BAA6B;AAExF,SAAgB,4BAA4B,KAAsB;CAChE,OAAO,sBAAsB,IAAI,GAAG;AACtC;AAEA,SAAgB,yBAAyB,OAAoC;CAC3E,OAAO,OAAO,YAAY,MAAM;AAClC;AAEA,MAAa,yBAAyB;AAEtC,MAAa,kBAAkB;CAC7B,YAAY;EACV,WAAW,GAAG,uBAAuB;EACrC,YAAY,GAAG,uBAAuB;EACtC,WAAW,GAAG,uBAAuB;EACrC,YAAY,GAAG,uBAAuB;EACtC,QAAQ,GAAG,uBAAuB;EAClC,WAAW,GAAG,uBAAuB;EACrC,OAAO,GAAG,uBAAuB;EACjC,MAAM,GAAG,uBAAuB;CAClC;CACA,SAAS,EACP,iBAAiB,GAAG,uBAAuB,kBAC7C;CACA,QAAQ;EACN,QAAQ,GAAG,uBAAuB;EAClC,OAAO,GAAG,uBAAuB;CACnC;AACF;;;;;AAuCA,eAAe,oBACb,OACA,SACA,aACkB;CAClB,IAAI,UAAU,KAAA,GAAW,OAAO;CAChC,IAAI,OAAO,UAAU,WAAW,OAAO;CACvC,IAAI,CAAC,SAAS,OAAO;CACrB,IAAI;EACF,OAAO,MAAM,MAAM,OAAO;CAC5B,SAAS,OAAO;EACd,QAAQ,KAAK,wEAAwE,KAAK;EAC1F,OAAO;CACT;AACF;;;;;;;;;AAUA,eAAsB,kBACpB,aACA,UACA,SAC2F;CAC3F,IAAI,UAAkC;CACtC,IAAI,kBAA0C;CAC9C,IAAI;CAEJ,IAAI,aAAa;EACf,IAAI,YAAY,YAAY,KAAA,GAC1B,UAAU,YAAY;EAExB,IAAI,YAAY,oBAAoB,KAAA,GAClC,kBAAkB,YAAY;EAGhC,MAAM,gBAAgB,YAAY;EAClC,IAAI,eAAe;GACjB,IAAI,cAAc,YAAY,KAAA,GAC5B,UAAU,cAAc;GAE1B,IAAI,cAAc,oBAAoB,KAAA,GACpC,kBAAkB,cAAc;GAElC,IAAI,cAAc,2BAA2B,KAAA,GAC3C,yBAAyB,cAAc;EAE3C;CACF;CAEA,OAAO;EACL,SAAS,MAAM,oBAAoB,SAAS,SAAS,KAAK;EAC1D,iBAAiB,MAAM,oBAAoB,iBAAiB,SAAS,IAAI;EACzE,wBACE,2BAA2B,KAAA,IACvB,MAAM,oBAAoB,wBAAwB,SAAS,IAAI,IAC/D,KAAA;CACR;AACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
// src/server/constants.ts
|
|
2
2
|
/**
|
|
3
3
|
* Constants inlined from @mastra/core to avoid import compatibility
|
|
4
4
|
* issues with older core versions that don't export them yet.
|
|
@@ -127,7 +127,6 @@ async function resolveToolConfig(toolsConfig, toolName, context) {
|
|
|
127
127
|
requireReadBeforeWrite: requireReadBeforeWrite !== void 0 ? await resolveDynamicValue(requireReadBeforeWrite, context, true) : void 0
|
|
128
128
|
};
|
|
129
129
|
}
|
|
130
|
-
//#endregion
|
|
131
130
|
export { MASTRA_PUBLIC_HOST_HEADER as a, MASTRA_THREAD_ID_KEY as c, MASTRA_USER_ROLES_KEY as d, RESERVED_REQUEST_CONTEXT_KEYS as f, resolveToolConfig as g, isStudioClientTypeHeader as h, MASTRA_IS_STUDIO_KEY as i, MASTRA_USER_KEY as l, isReservedRequestContextKey as m, MASTRA_AUTH_TOKEN_KEY as n, MASTRA_RESOURCE_ID_KEY as o, WORKSPACE_TOOLS as p, MASTRA_CLIENT_TYPE_HEADER as r, MASTRA_STUDIO_CLIENT_TYPE as s, MASTRA_AUTH_MODE_KEY as t, MASTRA_USER_PERMISSIONS_KEY as u };
|
|
132
131
|
|
|
133
|
-
//# sourceMappingURL=constants-
|
|
132
|
+
//# sourceMappingURL=constants-ohUUT3Vg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants-DazK_RZj.js","names":[],"sources":["../src/server/constants.ts"],"sourcesContent":["/**\n * Constants inlined from @mastra/core to avoid import compatibility\n * issues with older core versions that don't export them yet.\n *\n * - Reserved RequestContext keys are inlined from @mastra/core/request-context.\n * - Workspace tool constants are inlined from @mastra/core/workspace.\n */\n\nexport const MASTRA_RESOURCE_ID_KEY = 'mastra__resourceId';\n\nexport const MASTRA_THREAD_ID_KEY = 'mastra__threadId';\n\n/**\n * Agent scopes set by trusted middleware. Never accepted from a request body.\n */\nexport const MASTRA_SCOPES_KEY = 'mastra__scopes';\n\nexport const MASTRA_USER_KEY = 'mastra__user';\n\nexport const MASTRA_USER_PERMISSIONS_KEY = 'mastra__userPermissions';\n\nexport const MASTRA_USER_ROLES_KEY = 'mastra__userRoles';\n\nexport const MASTRA_AUTH_TOKEN_KEY = 'mastra__authToken';\n\nexport const MASTRA_IS_STUDIO_KEY = 'mastra__isStudio';\n\n/**\n * Carries a delegating agent's memory into a delegated sub-agent run. Set only\n * by the delegation path inside a single process.\n */\nexport const MASTRA_INHERITED_MEMORY_KEY = 'mastra__inheritedMemory';\n\n/**\n * Tracks which auth mode was used for the current request.\n * Set to 'studio' when studio auth was used, 'server' when server auth was used.\n * Used to determine which RBAC/FGA provider to use for permission checks.\n */\nexport const MASTRA_AUTH_MODE_KEY = 'mastra__authMode';\n\nexport type MastraAuthMode = 'studio' | 'server';\n\nexport const MASTRA_CLIENT_TYPE_HEADER = 'x-mastra-client-type';\n\n/**\n * Browser-facing host, set by a trusted proxy whose own `X-Forwarded-Host` does\n * not survive the hop to the app. Railway's gateway, for example, overwrites\n * `X-Forwarded-Host` with its internal domain, so an edge in front of it has no\n * other way to tell the app which hostname the user actually typed.\n *\n * Read by `getPublicOrigin()` ahead of `X-Forwarded-Host`. Carries the same\n * trust assumption as the other forwarded headers: meaningful only behind a\n * proxy that sets it, and it must be stripped from untrusted client requests.\n */\nexport const MASTRA_PUBLIC_HOST_HEADER = 'x-mastra-public-host';\n\nexport const MASTRA_STUDIO_CLIENT_TYPE = 'studio';\n\n/**\n * RequestContext keys only trusted server code may set. Request bodies and query\n * params can never supply them.\n */\nexport const RESERVED_REQUEST_CONTEXT_KEYS = [\n MASTRA_RESOURCE_ID_KEY,\n MASTRA_THREAD_ID_KEY,\n // Agent scopes decide memory identity and what the agent acts as; only\n // server middleware may set them.\n MASTRA_SCOPES_KEY,\n MASTRA_USER_KEY,\n MASTRA_USER_PERMISSIONS_KEY,\n MASTRA_USER_ROLES_KEY,\n MASTRA_AUTH_TOKEN_KEY,\n MASTRA_IS_STUDIO_KEY,\n MASTRA_AUTH_MODE_KEY,\n // Delegation stores a live memory instance here. A body-supplied value would\n // be handed to the agent as its memory and throw on the first memory call.\n MASTRA_INHERITED_MEMORY_KEY,\n // Factory stores the authoritative per-caller OM settings result here before\n // model-driven memory processors run. Client input must not spoof that result.\n 'mastra__factoryMemorySettings',\n // Tenant scope must be established server-side, never self-asserted by a\n // client. The trusted-actor FGA gate keys off `organizationId`, so a\n // body-supplied value must not be merged into the request context.\n 'organizationId',\n] as const;\n\nconst RESERVED_CONTEXT_KEYS: ReadonlySet<string> = new Set(RESERVED_REQUEST_CONTEXT_KEYS);\n\nexport function isReservedRequestContextKey(key: string): boolean {\n return RESERVED_CONTEXT_KEYS.has(key);\n}\n\nexport function isStudioClientTypeHeader(value: string | undefined): boolean {\n return value?.toLowerCase() === MASTRA_STUDIO_CLIENT_TYPE;\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 * A tool config value that may be a static boolean or a dynamic function.\n * Inlined from @mastra/core/workspace for compatibility.\n *\n * Uses `(...args: any[]) => any` for the function branch so it stays\n * assignable from all core context variants (ToolConfigContext,\n * ToolConfigWithArgsContext) without importing them.\n */\n\ntype DynamicToolConfigValue = boolean | ((...args: any[]) => any);\n\n/**\n * Configuration for a single workspace tool.\n */\nexport interface WorkspaceToolConfig {\n enabled?: DynamicToolConfigValue;\n requireApproval?: DynamicToolConfigValue;\n requireReadBeforeWrite?: DynamicToolConfigValue;\n}\n\n/**\n * Configuration for workspace tools.\n */\nexport type WorkspaceToolsConfig = {\n enabled?: DynamicToolConfigValue;\n requireApproval?: DynamicToolConfigValue;\n} & Partial<Record<WorkspaceToolName, WorkspaceToolConfig>>;\n\n/**\n * Safely resolve a dynamic config value (boolean or async function) to a boolean.\n * Falls back to `safeDefault` when no context is available or the function throws.\n */\nasync function resolveDynamicValue(\n value: DynamicToolConfigValue | undefined,\n context: { workspace: object; requestContext: Record<string, unknown> } | undefined,\n safeDefault: boolean,\n): Promise<boolean> {\n if (value === undefined) return safeDefault;\n if (typeof value === 'boolean') return value;\n if (!context) return safeDefault;\n try {\n return await value(context);\n } catch (error) {\n console.warn('[Workspace Tools] Dynamic config function threw, using safe default:', error);\n return safeDefault;\n }\n}\n\n/**\n * Resolve the effective configuration for a workspace tool.\n * Inlined from @mastra/core/workspace for compatibility.\n *\n * Dynamic function values are resolved by calling them with the provided\n * workspace and requestContext. If a function throws, safe defaults are used\n * (enabled → false, requireApproval → true, requireReadBeforeWrite → true).\n */\nexport async function resolveToolConfig(\n toolsConfig: WorkspaceToolsConfig | undefined,\n toolName: WorkspaceToolName,\n context?: { workspace: object; requestContext: Record<string, unknown> },\n): Promise<{ enabled: boolean; requireApproval: boolean; requireReadBeforeWrite?: boolean }> {\n let enabled: DynamicToolConfigValue = true;\n let requireApproval: DynamicToolConfigValue = false;\n let requireReadBeforeWrite: DynamicToolConfigValue | 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 {\n enabled: await resolveDynamicValue(enabled, context, false),\n requireApproval: await resolveDynamicValue(requireApproval, context, true),\n requireReadBeforeWrite:\n requireReadBeforeWrite !== undefined\n ? await resolveDynamicValue(requireReadBeforeWrite, context, true)\n : undefined,\n };\n}\n"],"mappings":";;;;;;;;AAQA,MAAa,yBAAyB;AAEtC,MAAa,uBAAuB;;;;AAKpC,MAAa,oBAAoB;AAEjC,MAAa,kBAAkB;AAE/B,MAAa,8BAA8B;AAE3C,MAAa,wBAAwB;AAErC,MAAa,wBAAwB;AAErC,MAAa,uBAAuB;;;;;AAMpC,MAAa,8BAA8B;;;;;;AAO3C,MAAa,uBAAuB;AAIpC,MAAa,4BAA4B;;;;;;;;;;;AAYzC,MAAa,4BAA4B;AAEzC,MAAa,4BAA4B;;;;;AAMzC,MAAa,gCAAgC;CAC3C;CACA;CAGA;CACA;CACA;CACA;CACA;CACA;CACA;CAGA;CAGA;CAIA;AACF;AAEA,MAAM,wBAA6C,IAAI,IAAI,6BAA6B;AAExF,SAAgB,4BAA4B,KAAsB;CAChE,OAAO,sBAAsB,IAAI,GAAG;AACtC;AAEA,SAAgB,yBAAyB,OAAoC;CAC3E,OAAO,OAAO,YAAY,MAAM;AAClC;AAEA,MAAa,yBAAyB;AAEtC,MAAa,kBAAkB;CAC7B,YAAY;EACV,WAAW,GAAG,uBAAuB;EACrC,YAAY,GAAG,uBAAuB;EACtC,WAAW,GAAG,uBAAuB;EACrC,YAAY,GAAG,uBAAuB;EACtC,QAAQ,GAAG,uBAAuB;EAClC,WAAW,GAAG,uBAAuB;EACrC,OAAO,GAAG,uBAAuB;EACjC,MAAM,GAAG,uBAAuB;CAClC;CACA,SAAS,EACP,iBAAiB,GAAG,uBAAuB,kBAC7C;CACA,QAAQ;EACN,QAAQ,GAAG,uBAAuB;EAClC,OAAO,GAAG,uBAAuB;CACnC;AACF;;;;;AAuCA,eAAe,oBACb,OACA,SACA,aACkB;CAClB,IAAI,UAAU,KAAA,GAAW,OAAO;CAChC,IAAI,OAAO,UAAU,WAAW,OAAO;CACvC,IAAI,CAAC,SAAS,OAAO;CACrB,IAAI;EACF,OAAO,MAAM,MAAM,OAAO;CAC5B,SAAS,OAAO;EACd,QAAQ,KAAK,wEAAwE,KAAK;EAC1F,OAAO;CACT;AACF;;;;;;;;;AAUA,eAAsB,kBACpB,aACA,UACA,SAC2F;CAC3F,IAAI,UAAkC;CACtC,IAAI,kBAA0C;CAC9C,IAAI;CAEJ,IAAI,aAAa;EACf,IAAI,YAAY,YAAY,KAAA,GAC1B,UAAU,YAAY;EAExB,IAAI,YAAY,oBAAoB,KAAA,GAClC,kBAAkB,YAAY;EAGhC,MAAM,gBAAgB,YAAY;EAClC,IAAI,eAAe;GACjB,IAAI,cAAc,YAAY,KAAA,GAC5B,UAAU,cAAc;GAE1B,IAAI,cAAc,oBAAoB,KAAA,GACpC,kBAAkB,cAAc;GAElC,IAAI,cAAc,2BAA2B,KAAA,GAC3C,yBAAyB,cAAc;EAE3C;CACF;CAEA,OAAO;EACL,SAAS,MAAM,oBAAoB,SAAS,SAAS,KAAK;EAC1D,iBAAiB,MAAM,oBAAoB,iBAAiB,SAAS,IAAI;EACzE,wBACE,2BAA2B,KAAA,IACvB,MAAM,oBAAoB,wBAAwB,SAAS,IAAI,IAC/D,KAAA;CACR;AACF"}
|
|
1
|
+
{"version":3,"file":"constants-ohUUT3Vg.js","names":[],"sources":["../src/server/constants.ts"],"sourcesContent":["/**\n * Constants inlined from @mastra/core to avoid import compatibility\n * issues with older core versions that don't export them yet.\n *\n * - Reserved RequestContext keys are inlined from @mastra/core/request-context.\n * - Workspace tool constants are inlined from @mastra/core/workspace.\n */\n\nexport const MASTRA_RESOURCE_ID_KEY = 'mastra__resourceId';\n\nexport const MASTRA_THREAD_ID_KEY = 'mastra__threadId';\n\n/**\n * Agent scopes set by trusted middleware. Never accepted from a request body.\n */\nexport const MASTRA_SCOPES_KEY = 'mastra__scopes';\n\nexport const MASTRA_USER_KEY = 'mastra__user';\n\nexport const MASTRA_USER_PERMISSIONS_KEY = 'mastra__userPermissions';\n\nexport const MASTRA_USER_ROLES_KEY = 'mastra__userRoles';\n\nexport const MASTRA_AUTH_TOKEN_KEY = 'mastra__authToken';\n\nexport const MASTRA_IS_STUDIO_KEY = 'mastra__isStudio';\n\n/**\n * Carries a delegating agent's memory into a delegated sub-agent run. Set only\n * by the delegation path inside a single process.\n */\nexport const MASTRA_INHERITED_MEMORY_KEY = 'mastra__inheritedMemory';\n\n/**\n * Tracks which auth mode was used for the current request.\n * Set to 'studio' when studio auth was used, 'server' when server auth was used.\n * Used to determine which RBAC/FGA provider to use for permission checks.\n */\nexport const MASTRA_AUTH_MODE_KEY = 'mastra__authMode';\n\nexport type MastraAuthMode = 'studio' | 'server';\n\nexport const MASTRA_CLIENT_TYPE_HEADER = 'x-mastra-client-type';\n\n/**\n * Browser-facing host, set by a trusted proxy whose own `X-Forwarded-Host` does\n * not survive the hop to the app. Railway's gateway, for example, overwrites\n * `X-Forwarded-Host` with its internal domain, so an edge in front of it has no\n * other way to tell the app which hostname the user actually typed.\n *\n * Read by `getPublicOrigin()` ahead of `X-Forwarded-Host`. Carries the same\n * trust assumption as the other forwarded headers: meaningful only behind a\n * proxy that sets it, and it must be stripped from untrusted client requests.\n */\nexport const MASTRA_PUBLIC_HOST_HEADER = 'x-mastra-public-host';\n\nexport const MASTRA_STUDIO_CLIENT_TYPE = 'studio';\n\n/**\n * RequestContext keys only trusted server code may set. Request bodies and query\n * params can never supply them.\n */\nexport const RESERVED_REQUEST_CONTEXT_KEYS = [\n MASTRA_RESOURCE_ID_KEY,\n MASTRA_THREAD_ID_KEY,\n // Agent scopes decide memory identity and what the agent acts as; only\n // server middleware may set them.\n MASTRA_SCOPES_KEY,\n MASTRA_USER_KEY,\n MASTRA_USER_PERMISSIONS_KEY,\n MASTRA_USER_ROLES_KEY,\n MASTRA_AUTH_TOKEN_KEY,\n MASTRA_IS_STUDIO_KEY,\n MASTRA_AUTH_MODE_KEY,\n // Delegation stores a live memory instance here. A body-supplied value would\n // be handed to the agent as its memory and throw on the first memory call.\n MASTRA_INHERITED_MEMORY_KEY,\n // Factory stores the authoritative per-caller OM settings result here before\n // model-driven memory processors run. Client input must not spoof that result.\n 'mastra__factoryMemorySettings',\n // Tenant scope must be established server-side, never self-asserted by a\n // client. The trusted-actor FGA gate keys off `organizationId`, so a\n // body-supplied value must not be merged into the request context.\n 'organizationId',\n] as const;\n\nconst RESERVED_CONTEXT_KEYS: ReadonlySet<string> = new Set(RESERVED_REQUEST_CONTEXT_KEYS);\n\nexport function isReservedRequestContextKey(key: string): boolean {\n return RESERVED_CONTEXT_KEYS.has(key);\n}\n\nexport function isStudioClientTypeHeader(value: string | undefined): boolean {\n return value?.toLowerCase() === MASTRA_STUDIO_CLIENT_TYPE;\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 * A tool config value that may be a static boolean or a dynamic function.\n * Inlined from @mastra/core/workspace for compatibility.\n *\n * Uses `(...args: any[]) => any` for the function branch so it stays\n * assignable from all core context variants (ToolConfigContext,\n * ToolConfigWithArgsContext) without importing them.\n */\n\ntype DynamicToolConfigValue = boolean | ((...args: any[]) => any);\n\n/**\n * Configuration for a single workspace tool.\n */\nexport interface WorkspaceToolConfig {\n enabled?: DynamicToolConfigValue;\n requireApproval?: DynamicToolConfigValue;\n requireReadBeforeWrite?: DynamicToolConfigValue;\n}\n\n/**\n * Configuration for workspace tools.\n */\nexport type WorkspaceToolsConfig = {\n enabled?: DynamicToolConfigValue;\n requireApproval?: DynamicToolConfigValue;\n} & Partial<Record<WorkspaceToolName, WorkspaceToolConfig>>;\n\n/**\n * Safely resolve a dynamic config value (boolean or async function) to a boolean.\n * Falls back to `safeDefault` when no context is available or the function throws.\n */\nasync function resolveDynamicValue(\n value: DynamicToolConfigValue | undefined,\n context: { workspace: object; requestContext: Record<string, unknown> } | undefined,\n safeDefault: boolean,\n): Promise<boolean> {\n if (value === undefined) return safeDefault;\n if (typeof value === 'boolean') return value;\n if (!context) return safeDefault;\n try {\n return await value(context);\n } catch (error) {\n console.warn('[Workspace Tools] Dynamic config function threw, using safe default:', error);\n return safeDefault;\n }\n}\n\n/**\n * Resolve the effective configuration for a workspace tool.\n * Inlined from @mastra/core/workspace for compatibility.\n *\n * Dynamic function values are resolved by calling them with the provided\n * workspace and requestContext. If a function throws, safe defaults are used\n * (enabled → false, requireApproval → true, requireReadBeforeWrite → true).\n */\nexport async function resolveToolConfig(\n toolsConfig: WorkspaceToolsConfig | undefined,\n toolName: WorkspaceToolName,\n context?: { workspace: object; requestContext: Record<string, unknown> },\n): Promise<{ enabled: boolean; requireApproval: boolean; requireReadBeforeWrite?: boolean }> {\n let enabled: DynamicToolConfigValue = true;\n let requireApproval: DynamicToolConfigValue = false;\n let requireReadBeforeWrite: DynamicToolConfigValue | 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 {\n enabled: await resolveDynamicValue(enabled, context, false),\n requireApproval: await resolveDynamicValue(requireApproval, context, true),\n requireReadBeforeWrite:\n requireReadBeforeWrite !== undefined\n ? await resolveDynamicValue(requireReadBeforeWrite, context, true)\n : undefined,\n };\n}\n"],"mappings":";;;;;;;;AAQA,MAAa,yBAAyB;AAEtC,MAAa,uBAAuB;;;;AAKpC,MAAa,oBAAoB;AAEjC,MAAa,kBAAkB;AAE/B,MAAa,8BAA8B;AAE3C,MAAa,wBAAwB;AAErC,MAAa,wBAAwB;AAErC,MAAa,uBAAuB;;;;;AAMpC,MAAa,8BAA8B;;;;;;AAO3C,MAAa,uBAAuB;AAIpC,MAAa,4BAA4B;;;;;;;;;;;AAYzC,MAAa,4BAA4B;AAEzC,MAAa,4BAA4B;;;;;AAMzC,MAAa,gCAAgC;CAC3C;CACA;CAGA;CACA;CACA;CACA;CACA;CACA;CACA;CAGA;CAGA;CAIA;AACF;AAEA,MAAM,wBAA6C,IAAI,IAAI,6BAA6B;AAExF,SAAgB,4BAA4B,KAAsB;CAChE,OAAO,sBAAsB,IAAI,GAAG;AACtC;AAEA,SAAgB,yBAAyB,OAAoC;CAC3E,OAAO,OAAO,YAAY,MAAM;AAClC;AAEA,MAAa,yBAAyB;AAEtC,MAAa,kBAAkB;CAC7B,YAAY;EACV,WAAW,GAAG,uBAAuB;EACrC,YAAY,GAAG,uBAAuB;EACtC,WAAW,GAAG,uBAAuB;EACrC,YAAY,GAAG,uBAAuB;EACtC,QAAQ,GAAG,uBAAuB;EAClC,WAAW,GAAG,uBAAuB;EACrC,OAAO,GAAG,uBAAuB;EACjC,MAAM,GAAG,uBAAuB;CAClC;CACA,SAAS,EACP,iBAAiB,GAAG,uBAAuB,kBAC7C;CACA,QAAQ;EACN,QAAQ,GAAG,uBAAuB;EAClC,OAAO,GAAG,uBAAuB;CACnC;AACF;;;;;AAuCA,eAAe,oBACb,OACA,SACA,aACkB;CAClB,IAAI,UAAU,KAAA,GAAW,OAAO;CAChC,IAAI,OAAO,UAAU,WAAW,OAAO;CACvC,IAAI,CAAC,SAAS,OAAO;CACrB,IAAI;EACF,OAAO,MAAM,MAAM,OAAO;CAC5B,SAAS,OAAO;EACd,QAAQ,KAAK,wEAAwE,KAAK;EAC1F,OAAO;CACT;AACF;;;;;;;;;AAUA,eAAsB,kBACpB,aACA,UACA,SAC2F;CAC3F,IAAI,UAAkC;CACtC,IAAI,kBAA0C;CAC9C,IAAI;CAEJ,IAAI,aAAa;EACf,IAAI,YAAY,YAAY,KAAA,GAC1B,UAAU,YAAY;EAExB,IAAI,YAAY,oBAAoB,KAAA,GAClC,kBAAkB,YAAY;EAGhC,MAAM,gBAAgB,YAAY;EAClC,IAAI,eAAe;GACjB,IAAI,cAAc,YAAY,KAAA,GAC5B,UAAU,cAAc;GAE1B,IAAI,cAAc,oBAAoB,KAAA,GACpC,kBAAkB,cAAc;GAElC,IAAI,cAAc,2BAA2B,KAAA,GAC3C,yBAAyB,cAAc;EAE3C;CACF;CAEA,OAAO;EACL,SAAS,MAAM,oBAAoB,SAAS,SAAS,KAAK;EAC1D,iBAAiB,MAAM,oBAAoB,iBAAiB,SAAS,IAAI;EACzE,wBACE,2BAA2B,KAAA,IACvB,MAAM,oBAAoB,wBAAwB,SAAS,IAAI,IAC/D,KAAA;CACR;AACF"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { r as __exportAll } from "./rolldown-runtime-
|
|
2
|
-
import { t as HTTPException } from "./http-exception-
|
|
3
|
-
import { n as createRoute } from "./route-builder-
|
|
1
|
+
import { r as __exportAll } from "./rolldown-runtime-CQI-hT2b.js";
|
|
2
|
+
import { t as HTTPException } from "./http-exception-CzaWkxMl.js";
|
|
3
|
+
import { n as createRoute } from "./route-builder-BxPrwNog.js";
|
|
4
4
|
import { handleError } from "./server/handlers/error.js";
|
|
5
|
-
import {
|
|
6
|
-
import { G as getAgentFromSystem } from "./agents-
|
|
7
|
-
import { a as createConversationBodySchema, i as conversationObjectSchema, n as conversationIdPathParams, r as conversationItemsListSchema, t as conversationDeletedSchema } from "./conversations-
|
|
5
|
+
import { _ as MastraFGAPermissions, g as validateThreadOwnership, i as getEffectiveResourceId } from "./utils-DHxjw4Tn.js";
|
|
6
|
+
import { G as getAgentFromSystem } from "./agents-CGS0tE4p.js";
|
|
7
|
+
import { a as createConversationBodySchema, i as conversationObjectSchema, n as conversationIdPathParams, r as conversationItemsListSchema, t as conversationDeletedSchema } from "./conversations-nNko6-H4.js";
|
|
8
8
|
import { mapMastraMessagesToConversationItems } from "./server/handlers/responses.adapter.js";
|
|
9
9
|
import { findConversationThreadAcrossAgents, getAgentMemoryStore } from "./server/handlers/responses.storage.js";
|
|
10
|
-
|
|
10
|
+
// src/server/handlers/conversations.ts
|
|
11
11
|
var conversations_exports = /* @__PURE__ */ __exportAll({
|
|
12
12
|
CREATE_CONVERSATION_ROUTE: () => CREATE_CONVERSATION_ROUTE,
|
|
13
13
|
DELETE_CONVERSATION_ROUTE: () => DELETE_CONVERSATION_ROUTE,
|
|
@@ -159,7 +159,6 @@ const DELETE_CONVERSATION_ROUTE = createRoute({
|
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
});
|
|
162
|
-
//#endregion
|
|
163
162
|
export { conversations_exports as a, GET_CONVERSATION_ROUTE as i, DELETE_CONVERSATION_ROUTE as n, GET_CONVERSATION_ITEMS_ROUTE as r, CREATE_CONVERSATION_ROUTE as t };
|
|
164
163
|
|
|
165
|
-
//# sourceMappingURL=conversations-
|
|
164
|
+
//# sourceMappingURL=conversations-B-s9MWRb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversations-
|
|
1
|
+
{"version":3,"file":"conversations-B-s9MWRb.js","names":[],"sources":["../src/server/handlers/conversations.ts"],"sourcesContent":["import { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n conversationDeletedSchema,\n conversationIdPathParams,\n conversationItemsListSchema,\n conversationObjectSchema,\n createConversationBodySchema,\n} from '../schemas/conversations';\nimport type { ConversationDeleted, ConversationItemsList, ConversationObject } from '../schemas/conversations';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { mapMastraMessagesToConversationItems } from './responses.adapter';\nimport { findConversationThreadAcrossAgents, getAgentMemoryStore } from './responses.storage';\nimport { getEffectiveResourceId, validateThreadOwnership } from './utils';\n\nfunction buildConversationObject({ thread }: { thread: ConversationObject['thread'] }): ConversationObject {\n return {\n id: thread.id,\n object: 'conversation',\n thread,\n };\n}\n\nfunction buildConversationItemsList(items: ConversationItemsList['data']): ConversationItemsList {\n return {\n object: 'list',\n data: items,\n first_id: items[0]?.id ?? null,\n last_id: items.at(-1)?.id ?? null,\n has_more: false,\n };\n}\n\nfunction buildConversationDeleted(conversationId: string): ConversationDeleted {\n return {\n id: conversationId,\n object: 'conversation.deleted',\n deleted: true,\n };\n}\n\nexport const CREATE_CONVERSATION_ROUTE = createRoute({\n method: 'POST',\n path: '/v1/conversations',\n responseType: 'json',\n bodySchema: createConversationBodySchema,\n responseSchema: conversationObjectSchema,\n summary: 'Create a conversation',\n description: 'Creates a new thread-backed conversation for agent-backed Responses API requests',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_CREATE,\n handler: async ({ mastra, requestContext, agent_id, conversation_id, resource_id, title, metadata }) => {\n try {\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for conversations' });\n }\n\n const agent = await getAgentFromSystem({ mastra, agentId: agent_id });\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: `Agent \"${agent.id}\" does not have memory configured` });\n }\n if (!(await getAgentMemoryStore({ agent, requestContext }))) {\n throw new HTTPException(400, { message: `Memory storage is not configured for agent \"${agent.id}\"` });\n }\n\n const threadId = conversation_id ?? globalThis.crypto.randomUUID();\n const resourceId = getEffectiveResourceId(requestContext, resource_id) ?? threadId;\n\n // Creating with an existing id upserts the thread, so validate ownership of any existing thread first\n if (conversation_id) {\n const existing = await memory.getThreadById({ threadId });\n await validateThreadOwnership(existing, getEffectiveResourceId(requestContext, undefined));\n }\n\n const thread = await memory.createThread({\n threadId,\n resourceId,\n title,\n metadata,\n });\n\n return buildConversationObject({ thread });\n } catch (error) {\n return handleError(error, 'Error creating conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationObjectSchema,\n summary: 'Retrieve a conversation',\n description: 'Returns a conversation object backed by a Mastra memory thread',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n return buildConversationObject({ thread: match.thread });\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ITEMS_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId/items',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationItemsListSchema,\n summary: 'List conversation items',\n description: 'Returns OpenAI-style conversation items derived from the stored thread messages',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n const { messages } = await match.memoryStore.listMessages({\n threadId: conversationId,\n page: 0,\n perPage: 1000,\n });\n\n return buildConversationItemsList(mapMastraMessagesToConversationItems(messages));\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const DELETE_CONVERSATION_ROUTE = createRoute({\n method: 'DELETE',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationDeletedSchema,\n summary: 'Delete a conversation',\n description: 'Deletes a thread-backed conversation and its stored items',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_DELETE,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n await match.memoryStore.deleteThread({ threadId: conversationId });\n\n return buildConversationDeleted(conversationId);\n } catch (error) {\n return handleError(error, 'Error deleting conversation');\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;AAiBA,SAAS,wBAAwB,EAAE,UAAwE;CACzG,OAAO;EACL,IAAI,OAAO;EACX,QAAQ;EACR;CACF;AACF;AAEA,SAAS,2BAA2B,OAA6D;CAC/F,OAAO;EACL,QAAQ;EACR,MAAM;EACN,UAAU,MAAM,EAAE,EAAE,MAAM;EAC1B,SAAS,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM;EAC7B,UAAU;CACZ;AACF;AAEA,SAAS,yBAAyB,gBAA6C;CAC7E,OAAO;EACL,IAAI;EACJ,QAAQ;EACR,SAAS;CACX;AACF;AAEA,MAAa,4BAA4B,YAAY;CACnD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,YAAY;CACZ,gBAAgB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,WAAW;CAClB,cAAc;CACd,oBAAoB,qBAAqB;CACzC,SAAS,OAAO,EAAE,QAAQ,gBAAgB,UAAU,iBAAiB,aAAa,OAAO,eAAe;EACtG,IAAI;GACF,IAAI,CAAC,QACH,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,gDAAgD,CAAC;GAG3F,MAAM,QAAQ,MAAM,mBAAmB;IAAE;IAAQ,SAAS;GAAS,CAAC;GACpE,MAAM,SAAS,MAAM,MAAM,UAAU,EAAE,eAAe,CAAC;GACvD,IAAI,CAAC,QACH,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,UAAU,MAAM,GAAG,mCAAmC,CAAC;GAEjG,IAAI,CAAE,MAAM,oBAAoB;IAAE;IAAO;GAAe,CAAC,GACvD,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,+CAA+C,MAAM,GAAG,GAAG,CAAC;GAGtG,MAAM,WAAW,mBAAmB,WAAW,OAAO,WAAW;GACjE,MAAM,aAAa,uBAAuB,gBAAgB,WAAW,KAAK;GAG1E,IAAI,iBAAiB;IACnB,MAAM,WAAW,MAAM,OAAO,cAAc,EAAE,SAAS,CAAC;IACxD,MAAM,wBAAwB,UAAU,uBAAuB,gBAAgB,KAAA,CAAS,CAAC;GAC3F;GASA,OAAO,wBAAwB,EAAE,QAAA,MAPZ,OAAO,aAAa;IACvC;IACA;IACA;IACA;GACF,CAAC,EAEuC,CAAC;EAC3C,SAAS,OAAO;GACd,OAAO,YAAY,OAAO,6BAA6B;EACzD;CACF;AACF,CAAC;AAED,MAAa,yBAAyB,YAAY;CAChD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiB;CACjB,gBAAgB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,WAAW;CAClB,cAAc;CACd,oBAAoB,qBAAqB;CACzC,SAAS,OAAO,EAAE,QAAQ,gBAAgB,qBAAqB;EAC7D,IAAI;GACF,MAAM,QAAQ,MAAM,mCAAmC;IAAE;IAAQ;IAAgB;GAAe,CAAC;GACjG,IAAI,CAAC,OACH,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,gBAAgB,eAAe,gBAAgB,CAAC;GAG1F,OAAO,wBAAwB,EAAE,QAAQ,MAAM,OAAO,CAAC;EACzD,SAAS,OAAO;GACd,OAAO,YAAY,OAAO,+BAA+B;EAC3D;CACF;AACF,CAAC;AAED,MAAa,+BAA+B,YAAY;CACtD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiB;CACjB,gBAAgB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,WAAW;CAClB,cAAc;CACd,oBAAoB,qBAAqB;CACzC,SAAS,OAAO,EAAE,QAAQ,gBAAgB,qBAAqB;EAC7D,IAAI;GACF,MAAM,QAAQ,MAAM,mCAAmC;IAAE;IAAQ;IAAgB;GAAe,CAAC;GACjG,IAAI,CAAC,OACH,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,gBAAgB,eAAe,gBAAgB,CAAC;GAG1F,MAAM,EAAE,aAAa,MAAM,MAAM,YAAY,aAAa;IACxD,UAAU;IACV,MAAM;IACN,SAAS;GACX,CAAC;GAED,OAAO,2BAA2B,qCAAqC,QAAQ,CAAC;EAClF,SAAS,OAAO;GACd,OAAO,YAAY,OAAO,+BAA+B;EAC3D;CACF;AACF,CAAC;AAED,MAAa,4BAA4B,YAAY;CACnD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiB;CACjB,gBAAgB;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,WAAW;CAClB,cAAc;CACd,oBAAoB,qBAAqB;CACzC,SAAS,OAAO,EAAE,QAAQ,gBAAgB,qBAAqB;EAC7D,IAAI;GACF,MAAM,QAAQ,MAAM,mCAAmC;IAAE;IAAQ;IAAgB;GAAe,CAAC;GACjG,IAAI,CAAC,OACH,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,gBAAgB,eAAe,gBAAgB,CAAC;GAG1F,MAAM,MAAM,YAAY,aAAa,EAAE,UAAU,eAAe,CAAC;GAEjE,OAAO,yBAAyB,cAAc;EAChD,SAAS,OAAO;GACd,OAAO,YAAY,OAAO,6BAA6B;EACzD;CACF;AACF,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
const require_rolldown_runtime = require("./rolldown-runtime-
|
|
2
|
-
const require_memory = require("./memory-
|
|
3
|
-
const require_responses = require("./responses-
|
|
1
|
+
const require_rolldown_runtime = require("./rolldown-runtime-10nMEhjP.cjs");
|
|
2
|
+
const require_memory = require("./memory-BnPGDrdg.cjs");
|
|
3
|
+
const require_responses = require("./responses-CTiwnWeF.cjs");
|
|
4
4
|
let zod = require("zod");
|
|
5
5
|
zod = require_rolldown_runtime.__toESM(zod, 1);
|
|
6
|
-
|
|
6
|
+
// src/server/schemas/conversations.ts
|
|
7
7
|
const conversationIdPathParams = zod.default.object({ conversationId: zod.default.string().describe("Unique identifier for the conversation thread") });
|
|
8
8
|
const createConversationBodySchema = zod.default.object({
|
|
9
9
|
agent_id: zod.default.string().describe("Mastra agent ID used to create the conversation thread"),
|
|
@@ -29,7 +29,6 @@ const conversationItemsListSchema = zod.default.object({
|
|
|
29
29
|
last_id: zod.default.string().nullable(),
|
|
30
30
|
has_more: zod.default.boolean()
|
|
31
31
|
});
|
|
32
|
-
//#endregion
|
|
33
32
|
Object.defineProperty(exports, "conversationDeletedSchema", {
|
|
34
33
|
enumerable: true,
|
|
35
34
|
get: function() {
|
|
@@ -61,4 +60,4 @@ Object.defineProperty(exports, "createConversationBodySchema", {
|
|
|
61
60
|
}
|
|
62
61
|
});
|
|
63
62
|
|
|
64
|
-
//# sourceMappingURL=conversations-
|
|
63
|
+
//# sourceMappingURL=conversations-BPQNrv5g.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversations-
|
|
1
|
+
{"version":3,"file":"conversations-BPQNrv5g.cjs","names":["z","getThreadByIdResponseSchema","conversationItemSchema"],"sources":["../src/server/schemas/conversations.ts"],"sourcesContent":["import z from 'zod';\nimport { getThreadByIdResponseSchema } from './memory';\nimport { conversationItemSchema } from './responses';\n\nexport const conversationIdPathParams = z.object({\n conversationId: z.string().describe('Unique identifier for the conversation thread'),\n});\n\nexport const createConversationBodySchema = z.object({\n agent_id: z.string().describe('Mastra agent ID used to create the conversation thread'),\n conversation_id: z.string().optional().describe('Optional conversation ID to use as the raw threadId'),\n resource_id: z.string().optional().describe('Optional resource ID to associate with the conversation'),\n title: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport type CreateConversationBody = z.infer<typeof createConversationBodySchema>;\n\nexport const conversationObjectSchema = z.object({\n id: z.string(),\n object: z.literal('conversation'),\n thread: getThreadByIdResponseSchema,\n});\n\nexport const conversationDeletedSchema = z.object({\n id: z.string(),\n object: z.literal('conversation.deleted'),\n deleted: z.literal(true),\n});\n\nexport const conversationItemsListSchema = z.object({\n object: z.literal('list'),\n data: z.array(conversationItemSchema),\n first_id: z.string().nullable(),\n last_id: z.string().nullable(),\n has_more: z.boolean(),\n});\n\nexport type ConversationObject = z.infer<typeof conversationObjectSchema>;\nexport type ConversationItemsList = z.infer<typeof conversationItemsListSchema>;\nexport type ConversationDeleted = z.infer<typeof conversationDeletedSchema>;\n"],"mappings":";;;;;;AAIA,MAAa,2BAA2BA,IAAAA,QAAE,OAAO,EAC/C,gBAAgBA,IAAAA,QAAE,OAAO,CAAC,CAAC,SAAS,+CAA+C,EACrF,CAAC;AAED,MAAa,+BAA+BA,IAAAA,QAAE,OAAO;CACnD,UAAUA,IAAAA,QAAE,OAAO,CAAC,CAAC,SAAS,wDAAwD;CACtF,iBAAiBA,IAAAA,QAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,qDAAqD;CACrG,aAAaA,IAAAA,QAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,yDAAyD;CACrG,OAAOA,IAAAA,QAAE,OAAO,CAAC,CAAC,SAAS;CAC3B,UAAUA,IAAAA,QAAE,OAAOA,IAAAA,QAAE,OAAO,GAAGA,IAAAA,QAAE,QAAQ,CAAC,CAAC,CAAC,SAAS;AACvD,CAAC;AAID,MAAa,2BAA2BA,IAAAA,QAAE,OAAO;CAC/C,IAAIA,IAAAA,QAAE,OAAO;CACb,QAAQA,IAAAA,QAAE,QAAQ,cAAc;CAChC,QAAQC,eAAAA;AACV,CAAC;AAED,MAAa,4BAA4BD,IAAAA,QAAE,OAAO;CAChD,IAAIA,IAAAA,QAAE,OAAO;CACb,QAAQA,IAAAA,QAAE,QAAQ,sBAAsB;CACxC,SAASA,IAAAA,QAAE,QAAQ,IAAI;AACzB,CAAC;AAED,MAAa,8BAA8BA,IAAAA,QAAE,OAAO;CAClD,QAAQA,IAAAA,QAAE,QAAQ,MAAM;CACxB,MAAMA,IAAAA,QAAE,MAAME,kBAAAA,sBAAsB;CACpC,UAAUF,IAAAA,QAAE,OAAO,CAAC,CAAC,SAAS;CAC9B,SAASA,IAAAA,QAAE,OAAO,CAAC,CAAC,SAAS;CAC7B,UAAUA,IAAAA,QAAE,QAAQ;AACtB,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
const require_rolldown_runtime = require("./rolldown-runtime-
|
|
2
|
-
const require_http_exception = require("./http-exception-
|
|
3
|
-
const require_route_builder = require("./route-builder-
|
|
1
|
+
const require_rolldown_runtime = require("./rolldown-runtime-10nMEhjP.cjs");
|
|
2
|
+
const require_http_exception = require("./http-exception-Co3MbFUf.cjs");
|
|
3
|
+
const require_route_builder = require("./route-builder-CvARmqnA.cjs");
|
|
4
4
|
const require_server_handlers_error = require("./server/handlers/error.cjs");
|
|
5
|
-
const require_utils = require("./utils-
|
|
6
|
-
const require_agents = require("./agents-
|
|
7
|
-
const require_conversations = require("./conversations-
|
|
5
|
+
const require_utils = require("./utils-BbYUI6Yn.cjs");
|
|
6
|
+
const require_agents = require("./agents-BBaFtyAt.cjs");
|
|
7
|
+
const require_conversations = require("./conversations-BPQNrv5g.cjs");
|
|
8
8
|
const require_server_handlers_responses_adapter = require("./server/handlers/responses.adapter.cjs");
|
|
9
9
|
const require_server_handlers_responses_storage = require("./server/handlers/responses.storage.cjs");
|
|
10
|
-
|
|
10
|
+
// src/server/handlers/conversations.ts
|
|
11
11
|
var conversations_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
|
|
12
12
|
CREATE_CONVERSATION_ROUTE: () => CREATE_CONVERSATION_ROUTE,
|
|
13
13
|
DELETE_CONVERSATION_ROUTE: () => DELETE_CONVERSATION_ROUTE,
|
|
@@ -159,7 +159,6 @@ const DELETE_CONVERSATION_ROUTE = require_route_builder.createRoute({
|
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
});
|
|
162
|
-
//#endregion
|
|
163
162
|
Object.defineProperty(exports, "CREATE_CONVERSATION_ROUTE", {
|
|
164
163
|
enumerable: true,
|
|
165
164
|
get: function() {
|
|
@@ -191,4 +190,4 @@ Object.defineProperty(exports, "conversations_exports", {
|
|
|
191
190
|
}
|
|
192
191
|
});
|
|
193
192
|
|
|
194
|
-
//# sourceMappingURL=conversations-
|
|
193
|
+
//# sourceMappingURL=conversations-DLuMXWot.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversations-DzuWI3w-.cjs","names":["createRoute","createConversationBodySchema","conversationObjectSchema","MastraFGAPermissions","HTTPException","getAgentFromSystem","getAgentMemoryStore","getEffectiveResourceId","validateThreadOwnership","handleError","conversationIdPathParams","findConversationThreadAcrossAgents","conversationItemsListSchema","mapMastraMessagesToConversationItems","conversationDeletedSchema"],"sources":["../src/server/handlers/conversations.ts"],"sourcesContent":["import { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n conversationDeletedSchema,\n conversationIdPathParams,\n conversationItemsListSchema,\n conversationObjectSchema,\n createConversationBodySchema,\n} from '../schemas/conversations';\nimport type { ConversationDeleted, ConversationItemsList, ConversationObject } from '../schemas/conversations';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { mapMastraMessagesToConversationItems } from './responses.adapter';\nimport { findConversationThreadAcrossAgents, getAgentMemoryStore } from './responses.storage';\nimport { getEffectiveResourceId, validateThreadOwnership } from './utils';\n\nfunction buildConversationObject({ thread }: { thread: ConversationObject['thread'] }): ConversationObject {\n return {\n id: thread.id,\n object: 'conversation',\n thread,\n };\n}\n\nfunction buildConversationItemsList(items: ConversationItemsList['data']): ConversationItemsList {\n return {\n object: 'list',\n data: items,\n first_id: items[0]?.id ?? null,\n last_id: items.at(-1)?.id ?? null,\n has_more: false,\n };\n}\n\nfunction buildConversationDeleted(conversationId: string): ConversationDeleted {\n return {\n id: conversationId,\n object: 'conversation.deleted',\n deleted: true,\n };\n}\n\nexport const CREATE_CONVERSATION_ROUTE = createRoute({\n method: 'POST',\n path: '/v1/conversations',\n responseType: 'json',\n bodySchema: createConversationBodySchema,\n responseSchema: conversationObjectSchema,\n summary: 'Create a conversation',\n description: 'Creates a new thread-backed conversation for agent-backed Responses API requests',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_CREATE,\n handler: async ({ mastra, requestContext, agent_id, conversation_id, resource_id, title, metadata }) => {\n try {\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for conversations' });\n }\n\n const agent = await getAgentFromSystem({ mastra, agentId: agent_id });\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: `Agent \"${agent.id}\" does not have memory configured` });\n }\n if (!(await getAgentMemoryStore({ agent, requestContext }))) {\n throw new HTTPException(400, { message: `Memory storage is not configured for agent \"${agent.id}\"` });\n }\n\n const threadId = conversation_id ?? globalThis.crypto.randomUUID();\n const resourceId = getEffectiveResourceId(requestContext, resource_id) ?? threadId;\n\n // Creating with an existing id upserts the thread, so validate ownership of any existing thread first\n if (conversation_id) {\n const existing = await memory.getThreadById({ threadId });\n await validateThreadOwnership(existing, getEffectiveResourceId(requestContext, undefined));\n }\n\n const thread = await memory.createThread({\n threadId,\n resourceId,\n title,\n metadata,\n });\n\n return buildConversationObject({ thread });\n } catch (error) {\n return handleError(error, 'Error creating conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationObjectSchema,\n summary: 'Retrieve a conversation',\n description: 'Returns a conversation object backed by a Mastra memory thread',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n return buildConversationObject({ thread: match.thread });\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ITEMS_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId/items',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationItemsListSchema,\n summary: 'List conversation items',\n description: 'Returns OpenAI-style conversation items derived from the stored thread messages',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n const { messages } = await match.memoryStore.listMessages({\n threadId: conversationId,\n page: 0,\n perPage: 1000,\n });\n\n return buildConversationItemsList(mapMastraMessagesToConversationItems(messages));\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const DELETE_CONVERSATION_ROUTE = createRoute({\n method: 'DELETE',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationDeletedSchema,\n summary: 'Delete a conversation',\n description: 'Deletes a thread-backed conversation and its stored items',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_DELETE,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n await match.memoryStore.deleteThread({ threadId: conversationId });\n\n return buildConversationDeleted(conversationId);\n } catch (error) {\n return handleError(error, 'Error deleting conversation');\n }\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conversations-DLuMXWot.cjs","names":["createRoute","createConversationBodySchema","conversationObjectSchema","MastraFGAPermissions","HTTPException","getAgentFromSystem","getAgentMemoryStore","getEffectiveResourceId","validateThreadOwnership","handleError","conversationIdPathParams","findConversationThreadAcrossAgents","conversationItemsListSchema","mapMastraMessagesToConversationItems","conversationDeletedSchema"],"sources":["../src/server/handlers/conversations.ts"],"sourcesContent":["import { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n conversationDeletedSchema,\n conversationIdPathParams,\n conversationItemsListSchema,\n conversationObjectSchema,\n createConversationBodySchema,\n} from '../schemas/conversations';\nimport type { ConversationDeleted, ConversationItemsList, ConversationObject } from '../schemas/conversations';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { mapMastraMessagesToConversationItems } from './responses.adapter';\nimport { findConversationThreadAcrossAgents, getAgentMemoryStore } from './responses.storage';\nimport { getEffectiveResourceId, validateThreadOwnership } from './utils';\n\nfunction buildConversationObject({ thread }: { thread: ConversationObject['thread'] }): ConversationObject {\n return {\n id: thread.id,\n object: 'conversation',\n thread,\n };\n}\n\nfunction buildConversationItemsList(items: ConversationItemsList['data']): ConversationItemsList {\n return {\n object: 'list',\n data: items,\n first_id: items[0]?.id ?? null,\n last_id: items.at(-1)?.id ?? null,\n has_more: false,\n };\n}\n\nfunction buildConversationDeleted(conversationId: string): ConversationDeleted {\n return {\n id: conversationId,\n object: 'conversation.deleted',\n deleted: true,\n };\n}\n\nexport const CREATE_CONVERSATION_ROUTE = createRoute({\n method: 'POST',\n path: '/v1/conversations',\n responseType: 'json',\n bodySchema: createConversationBodySchema,\n responseSchema: conversationObjectSchema,\n summary: 'Create a conversation',\n description: 'Creates a new thread-backed conversation for agent-backed Responses API requests',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_CREATE,\n handler: async ({ mastra, requestContext, agent_id, conversation_id, resource_id, title, metadata }) => {\n try {\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for conversations' });\n }\n\n const agent = await getAgentFromSystem({ mastra, agentId: agent_id });\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: `Agent \"${agent.id}\" does not have memory configured` });\n }\n if (!(await getAgentMemoryStore({ agent, requestContext }))) {\n throw new HTTPException(400, { message: `Memory storage is not configured for agent \"${agent.id}\"` });\n }\n\n const threadId = conversation_id ?? globalThis.crypto.randomUUID();\n const resourceId = getEffectiveResourceId(requestContext, resource_id) ?? threadId;\n\n // Creating with an existing id upserts the thread, so validate ownership of any existing thread first\n if (conversation_id) {\n const existing = await memory.getThreadById({ threadId });\n await validateThreadOwnership(existing, getEffectiveResourceId(requestContext, undefined));\n }\n\n const thread = await memory.createThread({\n threadId,\n resourceId,\n title,\n metadata,\n });\n\n return buildConversationObject({ thread });\n } catch (error) {\n return handleError(error, 'Error creating conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationObjectSchema,\n summary: 'Retrieve a conversation',\n description: 'Returns a conversation object backed by a Mastra memory thread',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n return buildConversationObject({ thread: match.thread });\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ITEMS_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId/items',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationItemsListSchema,\n summary: 'List conversation items',\n description: 'Returns OpenAI-style conversation items derived from the stored thread messages',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n const { messages } = await match.memoryStore.listMessages({\n threadId: conversationId,\n page: 0,\n perPage: 1000,\n });\n\n return buildConversationItemsList(mapMastraMessagesToConversationItems(messages));\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const DELETE_CONVERSATION_ROUTE = createRoute({\n method: 'DELETE',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationDeletedSchema,\n summary: 'Delete a conversation',\n description: 'Deletes a thread-backed conversation and its stored items',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_DELETE,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n await match.memoryStore.deleteThread({ threadId: conversationId });\n\n return buildConversationDeleted(conversationId);\n } catch (error) {\n return handleError(error, 'Error deleting conversation');\n }\n },\n});\n"],"mappings":"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"}
|