@mastra/server 1.31.1-alpha.0 → 1.32.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/dist/_types/@internal_core/dist/index.d.ts +82 -1
- package/dist/{chunk-7VXUWPHS.cjs → chunk-2REMDR2Q.cjs} +12 -12
- package/dist/{chunk-7VXUWPHS.cjs.map → chunk-2REMDR2Q.cjs.map} +1 -1
- package/dist/chunk-33USMBWV.js +250 -0
- package/dist/chunk-33USMBWV.js.map +1 -0
- package/dist/{chunk-KW2MZGRE.js → chunk-4JWF4VAL.js} +3 -3
- package/dist/{chunk-KW2MZGRE.js.map → chunk-4JWF4VAL.js.map} +1 -1
- package/dist/{chunk-53YFG5AY.js → chunk-4L2UVFJO.js} +8 -2
- package/dist/chunk-4L2UVFJO.js.map +1 -0
- package/dist/{chunk-CXBX2UAP.cjs → chunk-4UMO2IGR.cjs} +7 -7
- package/dist/{chunk-CXBX2UAP.cjs.map → chunk-4UMO2IGR.cjs.map} +1 -1
- package/dist/{chunk-5KM5P23Q.cjs → chunk-5VMRQT5S.cjs} +29 -29
- package/dist/{chunk-5KM5P23Q.cjs.map → chunk-5VMRQT5S.cjs.map} +1 -1
- package/dist/{chunk-FIP7YYSO.js → chunk-64M357LE.js} +6 -6
- package/dist/{chunk-FIP7YYSO.js.map → chunk-64M357LE.js.map} +1 -1
- package/dist/{chunk-CUIH4FYN.js → chunk-67TYG7WH.js} +3 -3
- package/dist/{chunk-CUIH4FYN.js.map → chunk-67TYG7WH.js.map} +1 -1
- package/dist/{chunk-65MQD7JR.js → chunk-6M7OOHNA.js} +6 -6
- package/dist/{chunk-65MQD7JR.js.map → chunk-6M7OOHNA.js.map} +1 -1
- package/dist/{chunk-HSU5D2KT.js → chunk-72RVQAAZ.js} +4 -4
- package/dist/{chunk-HSU5D2KT.js.map → chunk-72RVQAAZ.js.map} +1 -1
- package/dist/{chunk-5UKYK7YK.cjs → chunk-7LAFXMXB.cjs} +2 -2
- package/dist/{chunk-5UKYK7YK.cjs.map → chunk-7LAFXMXB.cjs.map} +1 -1
- package/dist/{chunk-2HIGXJMR.cjs → chunk-AF6AYXRW.cjs} +103 -103
- package/dist/{chunk-2HIGXJMR.cjs.map → chunk-AF6AYXRW.cjs.map} +1 -1
- package/dist/{chunk-Y2SA2JZT.cjs → chunk-ANEBYNP6.cjs} +89 -67
- package/dist/chunk-ANEBYNP6.cjs.map +1 -0
- package/dist/{chunk-YI2LXCWB.js → chunk-AOKUS5NX.js} +3 -3
- package/dist/{chunk-YI2LXCWB.js.map → chunk-AOKUS5NX.js.map} +1 -1
- package/dist/{chunk-MROI3O6S.cjs → chunk-ASVWXKET.cjs} +12 -12
- package/dist/{chunk-MROI3O6S.cjs.map → chunk-ASVWXKET.cjs.map} +1 -1
- package/dist/{chunk-XG2VRXG5.cjs → chunk-BK2PRWVJ.cjs} +22 -2
- package/dist/chunk-BK2PRWVJ.cjs.map +1 -0
- package/dist/{chunk-4GOK3PCO.js → chunk-CBSIIPHQ.js} +6 -6
- package/dist/{chunk-4GOK3PCO.js.map → chunk-CBSIIPHQ.js.map} +1 -1
- package/dist/{chunk-VGR4DSXQ.cjs → chunk-CEZZQMPM.cjs} +11 -11
- package/dist/{chunk-VGR4DSXQ.cjs.map → chunk-CEZZQMPM.cjs.map} +1 -1
- package/dist/{chunk-RPMBPQNO.cjs → chunk-CPZEA2XG.cjs} +10 -3
- package/dist/chunk-CPZEA2XG.cjs.map +1 -0
- package/dist/{chunk-OES3CANB.js → chunk-CR7RGILH.js} +3 -3
- package/dist/{chunk-OES3CANB.js.map → chunk-CR7RGILH.js.map} +1 -1
- package/dist/{chunk-ARZ6W3O3.cjs → chunk-CTYPGLJG.cjs} +46 -21
- package/dist/chunk-CTYPGLJG.cjs.map +1 -0
- package/dist/{chunk-H6NJWTER.cjs → chunk-CZU262RD.cjs} +20 -15
- package/dist/chunk-CZU262RD.cjs.map +1 -0
- package/dist/{chunk-4IYALPXO.js → chunk-DCMRHRHR.js} +4 -4
- package/dist/{chunk-4IYALPXO.js.map → chunk-DCMRHRHR.js.map} +1 -1
- package/dist/{chunk-B346SGRP.cjs → chunk-DIBOFJUK.cjs} +11 -11
- package/dist/{chunk-B346SGRP.cjs.map → chunk-DIBOFJUK.cjs.map} +1 -1
- package/dist/{chunk-DY6OYCMG.js → chunk-DOTOVTE2.js} +4 -4
- package/dist/{chunk-DY6OYCMG.js.map → chunk-DOTOVTE2.js.map} +1 -1
- package/dist/{chunk-VOAVPKTH.js → chunk-EAJSW5GK.js} +3 -3
- package/dist/{chunk-VOAVPKTH.js.map → chunk-EAJSW5GK.js.map} +1 -1
- package/dist/{chunk-S7REEERK.cjs → chunk-EWNTXTFB.cjs} +11 -11
- package/dist/{chunk-S7REEERK.cjs.map → chunk-EWNTXTFB.cjs.map} +1 -1
- package/dist/{chunk-DBPJYWAH.js → chunk-F23SQINQ.js} +30 -8
- package/dist/chunk-F23SQINQ.js.map +1 -0
- package/dist/{chunk-TKHLXCSZ.cjs → chunk-F5RU45N6.cjs} +7 -7
- package/dist/{chunk-TKHLXCSZ.cjs.map → chunk-F5RU45N6.cjs.map} +1 -1
- package/dist/{chunk-TNNU7IZK.cjs → chunk-FFDMYX2V.cjs} +25 -25
- package/dist/{chunk-TNNU7IZK.cjs.map → chunk-FFDMYX2V.cjs.map} +1 -1
- package/dist/{chunk-ANP3ESTF.js → chunk-FICILXAQ.js} +3 -3
- package/dist/{chunk-ANP3ESTF.js.map → chunk-FICILXAQ.js.map} +1 -1
- package/dist/{chunk-2QNJHTKM.cjs → chunk-GME2ZNSG.cjs} +11 -11
- package/dist/{chunk-2QNJHTKM.cjs.map → chunk-GME2ZNSG.cjs.map} +1 -1
- package/dist/{chunk-6SBH6SYP.js → chunk-GOFGQSF7.js} +20 -7
- package/dist/chunk-GOFGQSF7.js.map +1 -0
- package/dist/{chunk-PQETTP2F.js → chunk-GQOWV33T.js} +3 -3
- package/dist/{chunk-PQETTP2F.js.map → chunk-GQOWV33T.js.map} +1 -1
- package/dist/{chunk-OV64VJ5L.js → chunk-HBWNPGIL.js} +5 -5
- package/dist/{chunk-OV64VJ5L.js.map → chunk-HBWNPGIL.js.map} +1 -1
- package/dist/{chunk-H23VTK56.js → chunk-HKXIZNJC.js} +4 -4
- package/dist/{chunk-H23VTK56.js.map → chunk-HKXIZNJC.js.map} +1 -1
- package/dist/{chunk-EQR4MMSL.cjs → chunk-HN3V6UA4.cjs} +12 -12
- package/dist/{chunk-EQR4MMSL.cjs.map → chunk-HN3V6UA4.cjs.map} +1 -1
- package/dist/{chunk-OGV23F3H.cjs → chunk-IMPWOZUQ.cjs} +28 -15
- package/dist/chunk-IMPWOZUQ.cjs.map +1 -0
- package/dist/{chunk-AMC32S2M.js → chunk-IRKGFNRR.js} +34 -9
- package/dist/chunk-IRKGFNRR.js.map +1 -0
- package/dist/{chunk-EPM6ILRW.js → chunk-IYEGDP3G.js} +22 -3
- package/dist/chunk-IYEGDP3G.js.map +1 -0
- package/dist/{chunk-JZNOIGOQ.js → chunk-K2KWDOYR.js} +32 -5
- package/dist/chunk-K2KWDOYR.js.map +1 -0
- package/dist/{chunk-Q2N5GR7X.cjs → chunk-K745HNW2.cjs} +11 -11
- package/dist/{chunk-Q2N5GR7X.cjs.map → chunk-K745HNW2.cjs.map} +1 -1
- package/dist/{chunk-YJQYJ5WD.cjs → chunk-K7IVZQKI.cjs} +6 -6
- package/dist/{chunk-YJQYJ5WD.cjs.map → chunk-K7IVZQKI.cjs.map} +1 -1
- package/dist/{chunk-PA2BYLKF.js → chunk-KDUX3YN3.js} +2 -2
- package/dist/{chunk-PA2BYLKF.js.map → chunk-KDUX3YN3.js.map} +1 -1
- package/dist/{chunk-LVGLLXRY.cjs → chunk-KQU6VKAO.cjs} +7 -7
- package/dist/{chunk-LVGLLXRY.cjs.map → chunk-KQU6VKAO.cjs.map} +1 -1
- package/dist/{chunk-UZRD3SEA.js → chunk-KTTHNIBJ.js} +89 -26
- package/dist/chunk-KTTHNIBJ.js.map +1 -0
- package/dist/{chunk-LY6Q36YN.cjs → chunk-LGR7SFQ5.cjs} +38 -25
- package/dist/chunk-LGR7SFQ5.cjs.map +1 -0
- package/dist/{chunk-7GNVIWZY.js → chunk-LO7CBY5Q.js} +6 -6
- package/dist/{chunk-7GNVIWZY.js.map → chunk-LO7CBY5Q.js.map} +1 -1
- package/dist/{chunk-UQLJDNXU.cjs → chunk-M7L5EVQE.cjs} +12 -12
- package/dist/{chunk-UQLJDNXU.cjs.map → chunk-M7L5EVQE.cjs.map} +1 -1
- package/dist/{chunk-BMWSQ6HM.cjs → chunk-NIRJGDC6.cjs} +4 -4
- package/dist/{chunk-BMWSQ6HM.cjs.map → chunk-NIRJGDC6.cjs.map} +1 -1
- package/dist/{chunk-VZNOKYP5.js → chunk-NKD5XK43.js} +5 -5
- package/dist/{chunk-VZNOKYP5.js.map → chunk-NKD5XK43.js.map} +1 -1
- package/dist/{chunk-LTLTS3RN.js → chunk-NRKGN3C5.js} +4 -4
- package/dist/{chunk-LTLTS3RN.js.map → chunk-NRKGN3C5.js.map} +1 -1
- package/dist/{chunk-EETF75CE.cjs → chunk-OBRYBTX6.cjs} +12 -12
- package/dist/{chunk-EETF75CE.cjs.map → chunk-OBRYBTX6.cjs.map} +1 -1
- package/dist/{chunk-7E2JRYIE.js → chunk-OCBL7S62.js} +6 -6
- package/dist/{chunk-7E2JRYIE.js.map → chunk-OCBL7S62.js.map} +1 -1
- package/dist/chunk-ODCWNXTX.cjs +256 -0
- package/dist/chunk-ODCWNXTX.cjs.map +1 -0
- package/dist/{chunk-JQUNK754.js → chunk-OJ7SK6PH.js} +374 -53
- package/dist/chunk-OJ7SK6PH.js.map +1 -0
- package/dist/{chunk-4J4K36CU.js → chunk-OPBMOOBR.js} +5 -5
- package/dist/{chunk-4J4K36CU.js.map → chunk-OPBMOOBR.js.map} +1 -1
- package/dist/{chunk-2MWLNHBG.cjs → chunk-OQHTG2JK.cjs} +11 -11
- package/dist/{chunk-2MWLNHBG.cjs.map → chunk-OQHTG2JK.cjs.map} +1 -1
- package/dist/{chunk-4BSJHDYP.js → chunk-OUS6FNA7.js} +11 -6
- package/dist/chunk-OUS6FNA7.js.map +1 -0
- package/dist/{chunk-OGEXISZT.cjs → chunk-OZC7GEO5.cjs} +11 -11
- package/dist/{chunk-OGEXISZT.cjs.map → chunk-OZC7GEO5.cjs.map} +1 -1
- package/dist/{chunk-WFVK6ZXR.cjs → chunk-Q2T2Q4S5.cjs} +6 -6
- package/dist/{chunk-WFVK6ZXR.cjs.map → chunk-Q2T2Q4S5.cjs.map} +1 -1
- package/dist/{chunk-CKZMJIUO.cjs → chunk-R3DQGOTC.cjs} +6 -6
- package/dist/{chunk-CKZMJIUO.cjs.map → chunk-R3DQGOTC.cjs.map} +1 -1
- package/dist/{chunk-IQA7HL2V.js → chunk-R7X4YOSH.js} +51 -10
- package/dist/chunk-R7X4YOSH.js.map +1 -0
- package/dist/{chunk-NRFMMYTG.js → chunk-RF5ZDERV.js} +4 -4
- package/dist/{chunk-NRFMMYTG.js.map → chunk-RF5ZDERV.js.map} +1 -1
- package/dist/{chunk-KI7TGMMV.cjs → chunk-RL34ZMLF.cjs} +159 -96
- package/dist/chunk-RL34ZMLF.cjs.map +1 -0
- package/dist/{chunk-2HVAN7FF.js → chunk-RP7OLAVZ.js} +10 -3
- package/dist/chunk-RP7OLAVZ.js.map +1 -0
- package/dist/{chunk-K6VEDPBD.js → chunk-RPEPKUZQ.js} +12 -11
- package/dist/chunk-RPEPKUZQ.js.map +1 -0
- package/dist/{chunk-TU7U5XUE.cjs → chunk-SUT6SU4I.cjs} +8 -2
- package/dist/chunk-SUT6SU4I.cjs.map +1 -0
- package/dist/{chunk-DG5RFCGJ.cjs → chunk-T6MMZWHW.cjs} +427 -106
- package/dist/chunk-T6MMZWHW.cjs.map +1 -0
- package/dist/{chunk-RTD3NZ4G.js → chunk-TLOT3CIB.js} +6 -6
- package/dist/{chunk-RTD3NZ4G.js.map → chunk-TLOT3CIB.js.map} +1 -1
- package/dist/{chunk-3NNQG5XP.js → chunk-VG6A54JE.js} +3 -3
- package/dist/{chunk-3NNQG5XP.js.map → chunk-VG6A54JE.js.map} +1 -1
- package/dist/{chunk-QL62CV5V.js → chunk-VRPAOMXW.js} +25 -12
- package/dist/chunk-VRPAOMXW.js.map +1 -0
- package/dist/{chunk-EFP5PJBY.cjs → chunk-WMFH3SH2.cjs} +136 -94
- package/dist/chunk-WMFH3SH2.cjs.map +1 -0
- package/dist/{chunk-S4EHZQFI.js → chunk-WYSQECWW.js} +10 -10
- package/dist/{chunk-S4EHZQFI.js.map → chunk-WYSQECWW.js.map} +1 -1
- package/dist/{chunk-ERKUFMCT.js → chunk-X2LYM3QK.js} +3 -3
- package/dist/{chunk-ERKUFMCT.js.map → chunk-X2LYM3QK.js.map} +1 -1
- package/dist/{chunk-OGZ6ROYD.js → chunk-X3RINDH6.js} +6 -5
- package/dist/chunk-X3RINDH6.js.map +1 -0
- package/dist/{chunk-NGYGE7QW.cjs → chunk-X47OINMY.cjs} +17 -17
- package/dist/{chunk-NGYGE7QW.cjs.map → chunk-X47OINMY.cjs.map} +1 -1
- package/dist/{chunk-245BXYGJ.cjs → chunk-XCXPPGJ3.cjs} +13 -13
- package/dist/{chunk-245BXYGJ.cjs.map → chunk-XCXPPGJ3.cjs.map} +1 -1
- package/dist/{chunk-2CFH32YO.cjs → chunk-XEERRXWL.cjs} +32 -4
- package/dist/chunk-XEERRXWL.cjs.map +1 -0
- package/dist/{chunk-NUGBBASK.js → chunk-XOHBH6NQ.js} +4 -4
- package/dist/{chunk-NUGBBASK.js.map → chunk-XOHBH6NQ.js.map} +1 -1
- package/dist/{chunk-OLPARCPM.cjs → chunk-XUFQVLBC.cjs} +5 -5
- package/dist/{chunk-OLPARCPM.cjs.map → chunk-XUFQVLBC.cjs.map} +1 -1
- package/dist/{chunk-5XQIAEWJ.cjs → chunk-YMBKVVDF.cjs} +22 -21
- package/dist/chunk-YMBKVVDF.cjs.map +1 -0
- package/dist/{chunk-DZZBC6UV.cjs → chunk-ZCCXXT7V.cjs} +12 -12
- package/dist/{chunk-DZZBC6UV.cjs.map → chunk-ZCCXXT7V.cjs.map} +1 -1
- package/dist/{chunk-EBKNX5RM.cjs → chunk-ZHEQYOTL.cjs} +53 -52
- package/dist/chunk-ZHEQYOTL.cjs.map +1 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/{observational-memory-ZS2HJPUO-472SI4TK.cjs → observational-memory-UMDC4VC2-3I52URYY.cjs} +26 -26
- package/dist/{observational-memory-ZS2HJPUO-472SI4TK.cjs.map → observational-memory-UMDC4VC2-3I52URYY.cjs.map} +1 -1
- package/dist/{observational-memory-ZS2HJPUO-2ZBP2HCP.js → observational-memory-UMDC4VC2-X5QMTUND.js} +3 -3
- package/dist/{observational-memory-ZS2HJPUO-2ZBP2HCP.js.map → observational-memory-UMDC4VC2-X5QMTUND.js.map} +1 -1
- package/dist/server/auth/helpers.d.ts +9 -1
- package/dist/server/auth/helpers.d.ts.map +1 -1
- package/dist/server/auth/index.cjs +18 -14
- package/dist/server/auth/index.js +1 -1
- package/dist/server/handlers/a2a.cjs +10 -10
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +16 -16
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/agent-versions.cjs +8 -8
- package/dist/server/handlers/agent-versions.js +1 -1
- package/dist/server/handlers/agents.cjs +38 -38
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +1 -1
- package/dist/server/handlers/auth.cjs +11 -11
- package/dist/server/handlers/auth.d.ts.map +1 -1
- package/dist/server/handlers/auth.js +1 -1
- package/dist/server/handlers/background-tasks.cjs +4 -4
- package/dist/server/handlers/background-tasks.js +1 -1
- package/dist/server/handlers/channels.cjs +5 -5
- package/dist/server/handlers/channels.js +1 -1
- package/dist/server/handlers/conversations.cjs +5 -5
- package/dist/server/handlers/conversations.d.ts.map +1 -1
- package/dist/server/handlers/conversations.js +1 -1
- package/dist/server/handlers/datasets.cjs +26 -26
- package/dist/server/handlers/datasets.js +1 -1
- package/dist/server/handlers/logs.cjs +4 -4
- package/dist/server/handlers/logs.js +1 -1
- package/dist/server/handlers/mcp-client-versions.cjs +8 -8
- package/dist/server/handlers/mcp-client-versions.js +1 -1
- package/dist/server/handlers/mcp.cjs +9 -9
- package/dist/server/handlers/mcp.d.ts.map +1 -1
- package/dist/server/handlers/mcp.js +1 -1
- package/dist/server/handlers/memory.cjs +27 -27
- package/dist/server/handlers/memory.d.ts.map +1 -1
- package/dist/server/handlers/memory.js +1 -1
- package/dist/server/handlers/observability-new-endpoints.cjs +31 -27
- package/dist/server/handlers/observability-new-endpoints.d.ts +315 -19
- 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 +5 -5
- package/dist/server/handlers/observability-shared.d.ts +6 -0
- package/dist/server/handlers/observability-shared.d.ts.map +1 -1
- package/dist/server/handlers/observability-shared.js +1 -1
- package/dist/server/handlers/observability.cjs +39 -35
- package/dist/server/handlers/observability.js +2 -2
- package/dist/server/handlers/processor-providers.cjs +3 -3
- package/dist/server/handlers/processor-providers.js +1 -1
- package/dist/server/handlers/processors.cjs +4 -4
- package/dist/server/handlers/processors.js +1 -1
- package/dist/server/handlers/prompt-block-versions.cjs +8 -8
- package/dist/server/handlers/prompt-block-versions.js +1 -1
- package/dist/server/handlers/responses.cjs +4 -4
- package/dist/server/handlers/responses.d.ts.map +1 -1
- package/dist/server/handlers/responses.js +1 -1
- package/dist/server/handlers/responses.storage.cjs +8 -8
- package/dist/server/handlers/responses.storage.js +1 -1
- package/dist/server/handlers/schedules.cjs +28 -0
- package/dist/server/handlers/schedules.cjs.map +1 -0
- package/dist/server/handlers/schedules.d.ts +345 -0
- package/dist/server/handlers/schedules.d.ts.map +1 -0
- package/dist/server/handlers/schedules.js +3 -0
- package/dist/server/handlers/schedules.js.map +1 -0
- package/dist/server/handlers/scorer-versions.cjs +8 -8
- package/dist/server/handlers/scorer-versions.js +1 -1
- package/dist/server/handlers/scores.cjs +7 -7
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers/stored-agents.cjs +7 -7
- package/dist/server/handlers/stored-agents.js +1 -1
- package/dist/server/handlers/stored-mcp-clients.cjs +6 -6
- package/dist/server/handlers/stored-mcp-clients.js +1 -1
- package/dist/server/handlers/stored-prompt-blocks.cjs +6 -6
- package/dist/server/handlers/stored-prompt-blocks.js +1 -1
- package/dist/server/handlers/stored-scorers.cjs +6 -6
- package/dist/server/handlers/stored-scorers.js +1 -1
- package/dist/server/handlers/stored-skills.cjs +7 -7
- package/dist/server/handlers/stored-skills.js +1 -1
- package/dist/server/handlers/stored-workspaces.cjs +6 -6
- package/dist/server/handlers/stored-workspaces.js +1 -1
- package/dist/server/handlers/system.cjs +2 -2
- package/dist/server/handlers/system.js +1 -1
- package/dist/server/handlers/tool-providers.cjs +5 -5
- package/dist/server/handlers/tool-providers.js +1 -1
- package/dist/server/handlers/tools.cjs +6 -6
- package/dist/server/handlers/tools.d.ts.map +1 -1
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/utils.cjs +13 -9
- package/dist/server/handlers/utils.d.ts +15 -0
- package/dist/server/handlers/utils.d.ts.map +1 -1
- package/dist/server/handlers/utils.js +1 -1
- package/dist/server/handlers/vector.cjs +16 -16
- package/dist/server/handlers/vector.js +1 -1
- package/dist/server/handlers/voice.cjs +8 -8
- package/dist/server/handlers/voice.js +1 -1
- package/dist/server/handlers/workflows.cjs +24 -24
- package/dist/server/handlers/workflows.d.ts.map +1 -1
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/handlers/workspace.cjs +26 -26
- package/dist/server/handlers/workspace.js +1 -1
- package/dist/server/handlers.cjs +40 -40
- package/dist/server/handlers.js +15 -15
- package/dist/server/schemas/index.cjs +232 -232
- package/dist/server/schemas/index.js +8 -8
- package/dist/server/schemas/schedules.d.ts +204 -0
- package/dist/server/schemas/schedules.d.ts.map +1 -0
- package/dist/server/server-adapter/index.cjs +391 -319
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.d.ts +9 -0
- package/dist/server/server-adapter/index.d.ts.map +1 -1
- package/dist/server/server-adapter/index.js +112 -41
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/server/server-adapter/routes/index.d.ts +19 -3
- package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/observability.d.ts +156 -9
- package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/route-builder.d.ts +15 -1
- package/dist/server/server-adapter/routes/route-builder.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/schedules.d.ts +3 -0
- package/dist/server/server-adapter/routes/schedules.d.ts.map +1 -0
- package/package.json +6 -4
- package/dist/chunk-2CFH32YO.cjs.map +0 -1
- package/dist/chunk-2HVAN7FF.js.map +0 -1
- package/dist/chunk-4BSJHDYP.js.map +0 -1
- package/dist/chunk-53YFG5AY.js.map +0 -1
- package/dist/chunk-5XQIAEWJ.cjs.map +0 -1
- package/dist/chunk-6SBH6SYP.js.map +0 -1
- package/dist/chunk-AMC32S2M.js.map +0 -1
- package/dist/chunk-ARZ6W3O3.cjs.map +0 -1
- package/dist/chunk-DBPJYWAH.js.map +0 -1
- package/dist/chunk-DG5RFCGJ.cjs.map +0 -1
- package/dist/chunk-EBKNX5RM.cjs.map +0 -1
- package/dist/chunk-EFP5PJBY.cjs.map +0 -1
- package/dist/chunk-EPM6ILRW.js.map +0 -1
- package/dist/chunk-H6NJWTER.cjs.map +0 -1
- package/dist/chunk-IQA7HL2V.js.map +0 -1
- package/dist/chunk-JQUNK754.js.map +0 -1
- package/dist/chunk-JZNOIGOQ.js.map +0 -1
- package/dist/chunk-K6VEDPBD.js.map +0 -1
- package/dist/chunk-KI7TGMMV.cjs.map +0 -1
- package/dist/chunk-LY6Q36YN.cjs.map +0 -1
- package/dist/chunk-OGV23F3H.cjs.map +0 -1
- package/dist/chunk-OGZ6ROYD.js.map +0 -1
- package/dist/chunk-QL62CV5V.js.map +0 -1
- package/dist/chunk-RPMBPQNO.cjs.map +0 -1
- package/dist/chunk-TU7U5XUE.cjs.map +0 -1
- package/dist/chunk-UZRD3SEA.js.map +0 -1
- package/dist/chunk-XG2VRXG5.cjs.map +0 -1
- package/dist/chunk-Y2SA2JZT.cjs.map +0 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { memoryStatusResponseSchema, getMemoryStatusQuerySchema, memoryConfigResponseSchema, getMemoryConfigQuerySchema, getObservationalMemoryResponseSchema, getObservationalMemoryQuerySchema, awaitBufferStatusResponseSchema, awaitBufferStatusBodySchema, listThreadsResponseSchema, listThreadsQuerySchema, getThreadByIdResponseSchema, getThreadByIdQuerySchema, threadIdPathParams, listMessagesResponseSchema, listMessagesQuerySchema, getWorkingMemoryResponseSchema, getWorkingMemoryQuerySchema, saveMessagesResponseSchema, saveMessagesBodySchema, agentIdQuerySchema, createThreadBodySchema, updateThreadBodySchema, deleteThreadResponseSchema, deleteThreadQuerySchema, cloneThreadResponseSchema, cloneThreadBodySchema, updateWorkingMemoryResponseSchema, updateWorkingMemoryBodySchema, deleteMessagesResponseSchema, deleteMessagesBodySchema, deleteMessagesQuerySchema, searchMemoryResponseSchema, searchMemoryQuerySchema, getMemoryStatusNetworkQuerySchema, listThreadsNetworkQuerySchema, getThreadByIdNetworkQuerySchema, listMessagesNetworkQuerySchema, saveMessagesNetworkQuerySchema, createThreadNetworkQuerySchema, updateThreadNetworkQuerySchema, deleteThreadNetworkQuerySchema, deleteMessagesNetworkQuerySchema } from './chunk-CJFSLVFA.js';
|
|
2
1
|
import { isGatewayAgentAsync, getGatewayClient, toLocalOMRecord, toLocalThread, toLocalMessage } from './chunk-UTRP4B2Q.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { memoryStatusResponseSchema, getMemoryStatusQuerySchema, memoryConfigResponseSchema, getMemoryConfigQuerySchema, getObservationalMemoryResponseSchema, getObservationalMemoryQuerySchema, awaitBufferStatusResponseSchema, awaitBufferStatusBodySchema, listThreadsResponseSchema, listThreadsQuerySchema, getThreadByIdResponseSchema, getThreadByIdQuerySchema, threadIdPathParams, listMessagesResponseSchema, listMessagesQuerySchema, getWorkingMemoryResponseSchema, getWorkingMemoryQuerySchema, saveMessagesResponseSchema, saveMessagesBodySchema, agentIdQuerySchema, createThreadBodySchema, updateThreadBodySchema, deleteThreadResponseSchema, deleteThreadQuerySchema, cloneThreadResponseSchema, cloneThreadBodySchema, updateWorkingMemoryResponseSchema, updateWorkingMemoryBodySchema, deleteMessagesResponseSchema, deleteMessagesBodySchema, deleteMessagesQuerySchema, searchMemoryResponseSchema, searchMemoryQuerySchema, getMemoryStatusNetworkQuerySchema, listThreadsNetworkQuerySchema, getThreadByIdNetworkQuerySchema, listMessagesNetworkQuerySchema, saveMessagesNetworkQuerySchema, createThreadNetworkQuerySchema, updateThreadNetworkQuerySchema, deleteThreadNetworkQuerySchema, deleteMessagesNetworkQuerySchema } from './chunk-CJFSLVFA.js';
|
|
3
|
+
import { getEffectiveResourceId, getEffectiveThreadId, validateBody, enforceThreadAccess } from './chunk-K2KWDOYR.js';
|
|
5
4
|
import { handleError } from './chunk-P23KBWKB.js';
|
|
5
|
+
import { createRoute } from './chunk-KDUX3YN3.js';
|
|
6
6
|
import { HTTPException } from './chunk-6QWQZI4Q.js';
|
|
7
7
|
import { __export } from './chunk-PR4QN5HX.js';
|
|
8
|
+
import { MastraFGAPermissions } from '@mastra/core/auth/ee';
|
|
8
9
|
import { generateEmptyFromSchema } from '@mastra/core/utils';
|
|
9
10
|
|
|
10
11
|
// src/server/handlers/memory.ts
|
|
@@ -37,6 +38,82 @@ __export(memory_exports, {
|
|
|
37
38
|
UPDATE_WORKING_MEMORY_ROUTE: () => UPDATE_WORKING_MEMORY_ROUTE,
|
|
38
39
|
getTextContent: () => getTextContent
|
|
39
40
|
});
|
|
41
|
+
function hasFGAUser(requestContext) {
|
|
42
|
+
const user = requestContext?.get("user");
|
|
43
|
+
return !!user && typeof user === "object";
|
|
44
|
+
}
|
|
45
|
+
function shouldFilterThreadsWithFGA(mastra, requestContext) {
|
|
46
|
+
return !!mastra.getServer?.()?.fga && hasFGAUser(requestContext);
|
|
47
|
+
}
|
|
48
|
+
async function filterAccessibleThreads({
|
|
49
|
+
mastra,
|
|
50
|
+
requestContext,
|
|
51
|
+
threads
|
|
52
|
+
}) {
|
|
53
|
+
const fgaProvider = mastra.getServer?.()?.fga;
|
|
54
|
+
if (!fgaProvider || !hasFGAUser(requestContext) || threads.length === 0) {
|
|
55
|
+
return threads;
|
|
56
|
+
}
|
|
57
|
+
return fgaProvider.filterAccessible(
|
|
58
|
+
requestContext.get("user"),
|
|
59
|
+
threads,
|
|
60
|
+
"thread",
|
|
61
|
+
MastraFGAPermissions.MEMORY_READ
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
function paginateThreads({
|
|
65
|
+
threads,
|
|
66
|
+
page,
|
|
67
|
+
perPage
|
|
68
|
+
}) {
|
|
69
|
+
const effectivePage = page ?? 0;
|
|
70
|
+
const effectivePerPage = perPage ?? 100;
|
|
71
|
+
if (effectivePerPage === false) {
|
|
72
|
+
return {
|
|
73
|
+
threads,
|
|
74
|
+
page: effectivePage,
|
|
75
|
+
perPage: false,
|
|
76
|
+
total: threads.length,
|
|
77
|
+
hasMore: false
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const start = effectivePage * effectivePerPage;
|
|
81
|
+
const pagedThreads = threads.slice(start, start + effectivePerPage);
|
|
82
|
+
return {
|
|
83
|
+
threads: pagedThreads,
|
|
84
|
+
page: effectivePage,
|
|
85
|
+
perPage: effectivePerPage,
|
|
86
|
+
total: threads.length,
|
|
87
|
+
hasMore: start + pagedThreads.length < threads.length
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
async function enforceDeleteMessagesThreadAccess({
|
|
91
|
+
mastra,
|
|
92
|
+
requestContext,
|
|
93
|
+
memoryStore,
|
|
94
|
+
messageIds,
|
|
95
|
+
effectiveResourceId
|
|
96
|
+
}) {
|
|
97
|
+
const { messages } = await memoryStore.listMessagesById({ messageIds });
|
|
98
|
+
const threadIds = [...new Set(messages.map((m) => m.threadId).filter(Boolean))];
|
|
99
|
+
if (messages.some((message) => !message.threadId)) {
|
|
100
|
+
throw new HTTPException(403, { message: "Access denied: unable to verify message thread access" });
|
|
101
|
+
}
|
|
102
|
+
for (const threadId of threadIds) {
|
|
103
|
+
const thread = await memoryStore.getThreadById({ threadId });
|
|
104
|
+
if (!thread) {
|
|
105
|
+
throw new HTTPException(403, { message: "Access denied: unable to verify message thread access" });
|
|
106
|
+
}
|
|
107
|
+
await enforceThreadAccess({
|
|
108
|
+
mastra,
|
|
109
|
+
requestContext,
|
|
110
|
+
threadId,
|
|
111
|
+
thread,
|
|
112
|
+
effectiveResourceId,
|
|
113
|
+
permission: MastraFGAPermissions.MEMORY_DELETE
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
40
117
|
function getTextContent(message) {
|
|
41
118
|
if (typeof message.content === "string") {
|
|
42
119
|
return message.content;
|
|
@@ -497,6 +574,28 @@ var LIST_THREADS_ROUTE = createRoute({
|
|
|
497
574
|
if (agent && isGateway) {
|
|
498
575
|
const gwClient = getGatewayClient();
|
|
499
576
|
if (gwClient) {
|
|
577
|
+
if (shouldFilterThreadsWithFGA(mastra, requestContext)) {
|
|
578
|
+
const initialResult = await gwClient.listThreads({
|
|
579
|
+
resourceId: effectiveResourceId,
|
|
580
|
+
limit: 1,
|
|
581
|
+
offset: 0
|
|
582
|
+
});
|
|
583
|
+
const allThreads = initialResult.total > 0 ? (await gwClient.listThreads({
|
|
584
|
+
resourceId: effectiveResourceId,
|
|
585
|
+
limit: initialResult.total,
|
|
586
|
+
offset: 0
|
|
587
|
+
})).threads.map(toLocalThread) : [];
|
|
588
|
+
const accessibleThreads = await filterAccessibleThreads({
|
|
589
|
+
mastra,
|
|
590
|
+
requestContext,
|
|
591
|
+
threads: allThreads
|
|
592
|
+
});
|
|
593
|
+
return paginateThreads({
|
|
594
|
+
threads: accessibleThreads,
|
|
595
|
+
page,
|
|
596
|
+
perPage
|
|
597
|
+
});
|
|
598
|
+
}
|
|
500
599
|
const effectivePage = page ?? 0;
|
|
501
600
|
const effectivePerPage = perPage ?? 100;
|
|
502
601
|
const offset = effectivePage * effectivePerPage;
|
|
@@ -523,25 +622,61 @@ var LIST_THREADS_ROUTE = createRoute({
|
|
|
523
622
|
}
|
|
524
623
|
const memory = await getMemoryFromContext({ mastra, agentId, requestContext, allowMissingAgent: true });
|
|
525
624
|
if (memory) {
|
|
526
|
-
const result = await memory.listThreads(
|
|
527
|
-
|
|
625
|
+
const result = await memory.listThreads(
|
|
626
|
+
shouldFilterThreadsWithFGA(mastra, requestContext) ? {
|
|
627
|
+
filter,
|
|
628
|
+
perPage: false,
|
|
629
|
+
orderBy
|
|
630
|
+
} : {
|
|
631
|
+
filter,
|
|
632
|
+
page,
|
|
633
|
+
perPage,
|
|
634
|
+
orderBy
|
|
635
|
+
}
|
|
636
|
+
);
|
|
637
|
+
if (!shouldFilterThreadsWithFGA(mastra, requestContext)) {
|
|
638
|
+
return result;
|
|
639
|
+
}
|
|
640
|
+
const accessibleThreads = await filterAccessibleThreads({
|
|
641
|
+
mastra,
|
|
642
|
+
requestContext,
|
|
643
|
+
threads: result.threads
|
|
644
|
+
});
|
|
645
|
+
return paginateThreads({
|
|
646
|
+
threads: accessibleThreads,
|
|
528
647
|
page,
|
|
529
|
-
perPage
|
|
530
|
-
orderBy
|
|
648
|
+
perPage
|
|
531
649
|
});
|
|
532
|
-
return result;
|
|
533
650
|
}
|
|
534
651
|
const storage = getStorageFromContext({ mastra });
|
|
535
652
|
if (storage) {
|
|
536
653
|
const memoryStore = await storage.getStore("memory");
|
|
537
654
|
if (memoryStore) {
|
|
538
|
-
const result = await memoryStore.listThreads(
|
|
539
|
-
|
|
655
|
+
const result = await memoryStore.listThreads(
|
|
656
|
+
shouldFilterThreadsWithFGA(mastra, requestContext) ? {
|
|
657
|
+
filter,
|
|
658
|
+
perPage: false,
|
|
659
|
+
orderBy
|
|
660
|
+
} : {
|
|
661
|
+
filter,
|
|
662
|
+
page,
|
|
663
|
+
perPage,
|
|
664
|
+
orderBy
|
|
665
|
+
}
|
|
666
|
+
);
|
|
667
|
+
if (!shouldFilterThreadsWithFGA(mastra, requestContext)) {
|
|
668
|
+
return result;
|
|
669
|
+
}
|
|
670
|
+
const accessibleThreads = await filterAccessibleThreads({
|
|
671
|
+
mastra,
|
|
672
|
+
requestContext,
|
|
673
|
+
threads: result.threads
|
|
674
|
+
});
|
|
675
|
+
return paginateThreads({
|
|
676
|
+
threads: accessibleThreads,
|
|
540
677
|
page,
|
|
541
|
-
perPage
|
|
542
|
-
orderBy
|
|
678
|
+
perPage
|
|
543
679
|
});
|
|
544
|
-
return result;
|
|
545
680
|
}
|
|
546
681
|
}
|
|
547
682
|
throw new HTTPException(400, { message: "Memory is not initialized" });
|
|
@@ -583,7 +718,13 @@ var GET_THREAD_BY_ID_ROUTE = createRoute({
|
|
|
583
718
|
};
|
|
584
719
|
}
|
|
585
720
|
const thread = toLocalThread(result.thread);
|
|
586
|
-
await
|
|
721
|
+
await enforceThreadAccess({
|
|
722
|
+
mastra,
|
|
723
|
+
requestContext,
|
|
724
|
+
threadId: effectiveThreadId,
|
|
725
|
+
thread,
|
|
726
|
+
effectiveResourceId
|
|
727
|
+
});
|
|
587
728
|
return thread;
|
|
588
729
|
}
|
|
589
730
|
}
|
|
@@ -593,7 +734,13 @@ var GET_THREAD_BY_ID_ROUTE = createRoute({
|
|
|
593
734
|
if (!thread) {
|
|
594
735
|
throw new HTTPException(404, { message: "Thread not found" });
|
|
595
736
|
}
|
|
596
|
-
await
|
|
737
|
+
await enforceThreadAccess({
|
|
738
|
+
mastra,
|
|
739
|
+
requestContext,
|
|
740
|
+
threadId: effectiveThreadId,
|
|
741
|
+
thread,
|
|
742
|
+
effectiveResourceId
|
|
743
|
+
});
|
|
597
744
|
return thread;
|
|
598
745
|
}
|
|
599
746
|
const storage = getStorageFromContext({ mastra });
|
|
@@ -604,7 +751,13 @@ var GET_THREAD_BY_ID_ROUTE = createRoute({
|
|
|
604
751
|
if (!thread) {
|
|
605
752
|
throw new HTTPException(404, { message: "Thread not found" });
|
|
606
753
|
}
|
|
607
|
-
await
|
|
754
|
+
await enforceThreadAccess({
|
|
755
|
+
mastra,
|
|
756
|
+
requestContext,
|
|
757
|
+
threadId: effectiveThreadId,
|
|
758
|
+
thread,
|
|
759
|
+
effectiveResourceId
|
|
760
|
+
});
|
|
608
761
|
return thread;
|
|
609
762
|
}
|
|
610
763
|
}
|
|
@@ -651,7 +804,13 @@ var LIST_MESSAGES_ROUTE = createRoute({
|
|
|
651
804
|
if (gwClient) {
|
|
652
805
|
const threadResult = await gwClient.getThread(effectiveThreadId);
|
|
653
806
|
if (threadResult) {
|
|
654
|
-
await
|
|
807
|
+
await enforceThreadAccess({
|
|
808
|
+
mastra,
|
|
809
|
+
requestContext,
|
|
810
|
+
threadId: effectiveThreadId,
|
|
811
|
+
thread: toLocalThread(threadResult.thread),
|
|
812
|
+
effectiveResourceId
|
|
813
|
+
});
|
|
655
814
|
}
|
|
656
815
|
const effectivePage = page ?? 0;
|
|
657
816
|
const effectivePerPage = perPage ?? 100;
|
|
@@ -676,7 +835,13 @@ var LIST_MESSAGES_ROUTE = createRoute({
|
|
|
676
835
|
if (!thread) {
|
|
677
836
|
throw new HTTPException(404, { message: "Thread not found" });
|
|
678
837
|
}
|
|
679
|
-
await
|
|
838
|
+
await enforceThreadAccess({
|
|
839
|
+
mastra,
|
|
840
|
+
requestContext,
|
|
841
|
+
threadId: effectiveThreadId,
|
|
842
|
+
thread,
|
|
843
|
+
effectiveResourceId
|
|
844
|
+
});
|
|
680
845
|
const result = await memory.recall({
|
|
681
846
|
threadId: effectiveThreadId,
|
|
682
847
|
resourceId: effectiveResourceId,
|
|
@@ -697,7 +862,13 @@ var LIST_MESSAGES_ROUTE = createRoute({
|
|
|
697
862
|
if (!thread) {
|
|
698
863
|
throw new HTTPException(404, { message: "Thread not found" });
|
|
699
864
|
}
|
|
700
|
-
await
|
|
865
|
+
await enforceThreadAccess({
|
|
866
|
+
mastra,
|
|
867
|
+
requestContext,
|
|
868
|
+
threadId: effectiveThreadId,
|
|
869
|
+
thread,
|
|
870
|
+
effectiveResourceId
|
|
871
|
+
});
|
|
701
872
|
const result = await memoryStore.listMessages({
|
|
702
873
|
threadId: effectiveThreadId,
|
|
703
874
|
resourceId: effectiveResourceId,
|
|
@@ -741,8 +912,16 @@ var GET_WORKING_MEMORY_ROUTE = createRoute({
|
|
|
741
912
|
return { workingMemory: null, source: "thread", workingMemoryTemplate: null, threadExists: false };
|
|
742
913
|
}
|
|
743
914
|
const thread = await memory.getThreadById({ threadId: effectiveThreadId });
|
|
744
|
-
|
|
745
|
-
|
|
915
|
+
const config = memory.getMergedThreadConfig(memoryConfig || {});
|
|
916
|
+
const source = config.workingMemory?.scope !== "thread" && effectiveResourceId ? "resource" : "thread";
|
|
917
|
+
if (thread || source === "resource") {
|
|
918
|
+
await enforceThreadAccess({
|
|
919
|
+
mastra,
|
|
920
|
+
requestContext,
|
|
921
|
+
threadId: effectiveThreadId,
|
|
922
|
+
thread,
|
|
923
|
+
effectiveResourceId
|
|
924
|
+
});
|
|
746
925
|
}
|
|
747
926
|
const threadExists = !!thread;
|
|
748
927
|
const template = await memory.getWorkingMemoryTemplate({ memoryConfig });
|
|
@@ -752,8 +931,6 @@ var GET_WORKING_MEMORY_ROUTE = createRoute({
|
|
|
752
931
|
resourceId: effectiveResourceId,
|
|
753
932
|
memoryConfig
|
|
754
933
|
});
|
|
755
|
-
const config = memory.getMergedThreadConfig(memoryConfig || {});
|
|
756
|
-
const source = config.workingMemory?.scope !== "thread" && effectiveResourceId ? "resource" : "thread";
|
|
757
934
|
return { workingMemory, source, workingMemoryTemplate, threadExists };
|
|
758
935
|
} catch (error) {
|
|
759
936
|
return handleError(error, "Error getting working memory");
|
|
@@ -784,6 +961,20 @@ var SAVE_MESSAGES_ROUTE = createRoute({
|
|
|
784
961
|
if (!Array.isArray(messages)) {
|
|
785
962
|
throw new HTTPException(400, { message: "Messages should be an array" });
|
|
786
963
|
}
|
|
964
|
+
const resourceIdByThread = /* @__PURE__ */ new Map();
|
|
965
|
+
for (const message of messages) {
|
|
966
|
+
if (!message.threadId || !message.resourceId) {
|
|
967
|
+
continue;
|
|
968
|
+
}
|
|
969
|
+
const existingResourceId = resourceIdByThread.get(message.threadId);
|
|
970
|
+
if (!existingResourceId) {
|
|
971
|
+
resourceIdByThread.set(message.threadId, message.resourceId);
|
|
972
|
+
} else if (existingResourceId !== message.resourceId) {
|
|
973
|
+
throw new HTTPException(400, {
|
|
974
|
+
message: "All messages for the same threadId must use the same resourceId."
|
|
975
|
+
});
|
|
976
|
+
}
|
|
977
|
+
}
|
|
787
978
|
const invalidMessages = messages.filter((message) => !message.threadId || !message.resourceId);
|
|
788
979
|
if (invalidMessages.length > 0) {
|
|
789
980
|
throw new HTTPException(400, {
|
|
@@ -800,7 +991,27 @@ var SAVE_MESSAGES_ROUTE = createRoute({
|
|
|
800
991
|
const threadIds = [...new Set(messages.map((m) => m.threadId).filter(Boolean))];
|
|
801
992
|
for (const threadId of threadIds) {
|
|
802
993
|
const thread = await memory.getThreadById({ threadId });
|
|
803
|
-
await
|
|
994
|
+
await enforceThreadAccess({
|
|
995
|
+
mastra,
|
|
996
|
+
requestContext,
|
|
997
|
+
threadId,
|
|
998
|
+
thread,
|
|
999
|
+
effectiveResourceId,
|
|
1000
|
+
permission: MastraFGAPermissions.MEMORY_WRITE
|
|
1001
|
+
});
|
|
1002
|
+
}
|
|
1003
|
+
} else {
|
|
1004
|
+
const threadIds = [...new Set(messages.map((m) => m.threadId).filter(Boolean))];
|
|
1005
|
+
for (const threadId of threadIds) {
|
|
1006
|
+
const thread = await memory.getThreadById({ threadId });
|
|
1007
|
+
await enforceThreadAccess({
|
|
1008
|
+
mastra,
|
|
1009
|
+
requestContext,
|
|
1010
|
+
threadId,
|
|
1011
|
+
thread,
|
|
1012
|
+
effectiveResourceId: resourceIdByThread.get(threadId),
|
|
1013
|
+
permission: MastraFGAPermissions.MEMORY_WRITE
|
|
1014
|
+
});
|
|
804
1015
|
}
|
|
805
1016
|
}
|
|
806
1017
|
const processedMessages = messages.map((message) => ({
|
|
@@ -829,13 +1040,21 @@ var CREATE_THREAD_ROUTE = createRoute({
|
|
|
829
1040
|
handler: async ({ mastra, agentId, resourceId, title, metadata, threadId, requestContext }) => {
|
|
830
1041
|
try {
|
|
831
1042
|
const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);
|
|
1043
|
+
const effectiveThreadId = threadId ?? mastra.generateId();
|
|
1044
|
+
validateBody({ resourceId: effectiveResourceId });
|
|
1045
|
+
await enforceThreadAccess({
|
|
1046
|
+
mastra,
|
|
1047
|
+
requestContext,
|
|
1048
|
+
threadId: effectiveThreadId,
|
|
1049
|
+
effectiveResourceId,
|
|
1050
|
+
permission: MastraFGAPermissions.MEMORY_WRITE
|
|
1051
|
+
});
|
|
832
1052
|
const agent = await getAgentFromContext({ mastra, agentId, requestContext });
|
|
833
1053
|
if (agent && await isGatewayAgentAsync(agent)) {
|
|
834
1054
|
const gwClient = getGatewayClient();
|
|
835
1055
|
if (gwClient) {
|
|
836
|
-
validateBody({ resourceId: effectiveResourceId });
|
|
837
1056
|
const result2 = await gwClient.createThread({
|
|
838
|
-
id:
|
|
1057
|
+
id: effectiveThreadId,
|
|
839
1058
|
resourceId: effectiveResourceId,
|
|
840
1059
|
title,
|
|
841
1060
|
metadata
|
|
@@ -847,12 +1066,11 @@ var CREATE_THREAD_ROUTE = createRoute({
|
|
|
847
1066
|
if (!memory) {
|
|
848
1067
|
throw new HTTPException(400, { message: "Memory is not initialized" });
|
|
849
1068
|
}
|
|
850
|
-
validateBody({ resourceId: effectiveResourceId });
|
|
851
1069
|
const result = await memory.createThread({
|
|
852
1070
|
resourceId: effectiveResourceId,
|
|
853
1071
|
title,
|
|
854
1072
|
metadata,
|
|
855
|
-
threadId
|
|
1073
|
+
threadId: effectiveThreadId
|
|
856
1074
|
});
|
|
857
1075
|
return result;
|
|
858
1076
|
} catch (error) {
|
|
@@ -883,7 +1101,14 @@ var UPDATE_THREAD_ROUTE = createRoute({
|
|
|
883
1101
|
if (gwClient) {
|
|
884
1102
|
const existing = await gwClient.getThread(effectiveThreadId);
|
|
885
1103
|
if (existing) {
|
|
886
|
-
await
|
|
1104
|
+
await enforceThreadAccess({
|
|
1105
|
+
mastra,
|
|
1106
|
+
requestContext,
|
|
1107
|
+
threadId: effectiveThreadId,
|
|
1108
|
+
thread: toLocalThread(existing.thread),
|
|
1109
|
+
effectiveResourceId,
|
|
1110
|
+
permission: MastraFGAPermissions.MEMORY_WRITE
|
|
1111
|
+
});
|
|
887
1112
|
}
|
|
888
1113
|
const result2 = await gwClient.updateThread(effectiveThreadId, { title, metadata });
|
|
889
1114
|
if (!result2) {
|
|
@@ -901,7 +1126,14 @@ var UPDATE_THREAD_ROUTE = createRoute({
|
|
|
901
1126
|
if (!thread) {
|
|
902
1127
|
throw new HTTPException(404, { message: "Thread not found" });
|
|
903
1128
|
}
|
|
904
|
-
await
|
|
1129
|
+
await enforceThreadAccess({
|
|
1130
|
+
mastra,
|
|
1131
|
+
requestContext,
|
|
1132
|
+
threadId: effectiveThreadId,
|
|
1133
|
+
thread,
|
|
1134
|
+
effectiveResourceId,
|
|
1135
|
+
permission: MastraFGAPermissions.MEMORY_WRITE
|
|
1136
|
+
});
|
|
905
1137
|
const updatedThread = {
|
|
906
1138
|
...thread,
|
|
907
1139
|
title: title || thread.title,
|
|
@@ -943,7 +1175,14 @@ var DELETE_THREAD_ROUTE = createRoute({
|
|
|
943
1175
|
if (gwClient) {
|
|
944
1176
|
const existing = await gwClient.getThread(effectiveThreadId);
|
|
945
1177
|
if (existing) {
|
|
946
|
-
await
|
|
1178
|
+
await enforceThreadAccess({
|
|
1179
|
+
mastra,
|
|
1180
|
+
requestContext,
|
|
1181
|
+
threadId: effectiveThreadId,
|
|
1182
|
+
thread: toLocalThread(existing.thread),
|
|
1183
|
+
effectiveResourceId,
|
|
1184
|
+
permission: MastraFGAPermissions.MEMORY_DELETE
|
|
1185
|
+
});
|
|
947
1186
|
}
|
|
948
1187
|
const deleteResult = await gwClient.deleteThread(effectiveThreadId);
|
|
949
1188
|
if (!deleteResult.ok) {
|
|
@@ -960,7 +1199,14 @@ var DELETE_THREAD_ROUTE = createRoute({
|
|
|
960
1199
|
if (!thread) {
|
|
961
1200
|
throw new HTTPException(404, { message: "Thread not found" });
|
|
962
1201
|
}
|
|
963
|
-
await
|
|
1202
|
+
await enforceThreadAccess({
|
|
1203
|
+
mastra,
|
|
1204
|
+
requestContext,
|
|
1205
|
+
threadId: effectiveThreadId,
|
|
1206
|
+
thread,
|
|
1207
|
+
effectiveResourceId,
|
|
1208
|
+
permission: MastraFGAPermissions.MEMORY_DELETE
|
|
1209
|
+
});
|
|
964
1210
|
await memory.deleteThread(effectiveThreadId);
|
|
965
1211
|
return { result: "Thread deleted" };
|
|
966
1212
|
} catch (error) {
|
|
@@ -984,6 +1230,7 @@ var CLONE_THREAD_ROUTE = createRoute({
|
|
|
984
1230
|
try {
|
|
985
1231
|
const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);
|
|
986
1232
|
const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);
|
|
1233
|
+
const effectiveNewThreadId = newThreadId ?? mastra.generateId();
|
|
987
1234
|
validateBody({ threadId: effectiveThreadId });
|
|
988
1235
|
const memory = await getMemoryFromContext({ mastra, agentId, requestContext });
|
|
989
1236
|
if (!memory) {
|
|
@@ -993,12 +1240,25 @@ var CLONE_THREAD_ROUTE = createRoute({
|
|
|
993
1240
|
if (!sourceThread) {
|
|
994
1241
|
throw new HTTPException(404, { message: "Source thread not found" });
|
|
995
1242
|
}
|
|
996
|
-
|
|
1243
|
+
const cloneResourceId = effectiveResourceId ?? sourceThread.resourceId ?? void 0;
|
|
1244
|
+
await enforceThreadAccess({
|
|
1245
|
+
mastra,
|
|
1246
|
+
requestContext,
|
|
1247
|
+
threadId: effectiveThreadId,
|
|
1248
|
+
thread: sourceThread,
|
|
1249
|
+
effectiveResourceId
|
|
1250
|
+
});
|
|
1251
|
+
await enforceThreadAccess({
|
|
1252
|
+
mastra,
|
|
1253
|
+
requestContext,
|
|
1254
|
+
threadId: effectiveNewThreadId,
|
|
1255
|
+
effectiveResourceId: cloneResourceId,
|
|
1256
|
+
permission: MastraFGAPermissions.MEMORY_WRITE
|
|
1257
|
+
});
|
|
997
1258
|
const result = await memory.cloneThread({
|
|
998
1259
|
sourceThreadId: effectiveThreadId,
|
|
999
|
-
newThreadId,
|
|
1000
|
-
|
|
1001
|
-
resourceId: effectiveResourceId,
|
|
1260
|
+
newThreadId: effectiveNewThreadId,
|
|
1261
|
+
resourceId: cloneResourceId,
|
|
1002
1262
|
title,
|
|
1003
1263
|
metadata,
|
|
1004
1264
|
options
|
|
@@ -1038,7 +1298,14 @@ var UPDATE_WORKING_MEMORY_ROUTE = createRoute({
|
|
|
1038
1298
|
if (!thread) {
|
|
1039
1299
|
throw new HTTPException(404, { message: "Thread not found" });
|
|
1040
1300
|
}
|
|
1041
|
-
await
|
|
1301
|
+
await enforceThreadAccess({
|
|
1302
|
+
mastra,
|
|
1303
|
+
requestContext,
|
|
1304
|
+
threadId: effectiveThreadId,
|
|
1305
|
+
thread,
|
|
1306
|
+
effectiveResourceId,
|
|
1307
|
+
permission: MastraFGAPermissions.MEMORY_WRITE
|
|
1308
|
+
});
|
|
1042
1309
|
await memory.updateWorkingMemory({
|
|
1043
1310
|
threadId: effectiveThreadId,
|
|
1044
1311
|
resourceId: effectiveResourceId,
|
|
@@ -1087,16 +1354,28 @@ var DELETE_MESSAGES_ROUTE = createRoute({
|
|
|
1087
1354
|
if (!memoryStore) {
|
|
1088
1355
|
throw new HTTPException(400, { message: "Memory is not initialized" });
|
|
1089
1356
|
}
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1357
|
+
await enforceDeleteMessagesThreadAccess({
|
|
1358
|
+
mastra,
|
|
1359
|
+
requestContext,
|
|
1360
|
+
memoryStore,
|
|
1361
|
+
messageIds: stringIds,
|
|
1362
|
+
effectiveResourceId
|
|
1363
|
+
});
|
|
1364
|
+
} else if (stringIds.length > 0) {
|
|
1365
|
+
const storage = memory?.storage || getStorageFromContext({ mastra });
|
|
1366
|
+
if (!storage) {
|
|
1367
|
+
throw new HTTPException(400, { message: "Memory is not initialized" });
|
|
1368
|
+
}
|
|
1369
|
+
const memoryStore = await storage.getStore("memory");
|
|
1370
|
+
if (!memoryStore) {
|
|
1371
|
+
throw new HTTPException(400, { message: "Memory is not initialized" });
|
|
1099
1372
|
}
|
|
1373
|
+
await enforceDeleteMessagesThreadAccess({
|
|
1374
|
+
mastra,
|
|
1375
|
+
requestContext,
|
|
1376
|
+
memoryStore,
|
|
1377
|
+
messageIds: stringIds
|
|
1378
|
+
});
|
|
1100
1379
|
}
|
|
1101
1380
|
if (memory) {
|
|
1102
1381
|
await memory.deleteMessages(normalizedIds);
|
|
@@ -1153,6 +1432,30 @@ var SEARCH_MEMORY_ROUTE = createRoute({
|
|
|
1153
1432
|
const hasSemanticRecall = !!config?.semanticRecall;
|
|
1154
1433
|
const resourceScope = typeof config?.semanticRecall === "object" ? config?.semanticRecall?.scope !== "thread" : true;
|
|
1155
1434
|
const searchResults = [];
|
|
1435
|
+
let accessibleThreadsForResource;
|
|
1436
|
+
let accessibleThreadIds;
|
|
1437
|
+
if (resourceScope && effectiveResourceId && shouldFilterThreadsWithFGA(mastra, requestContext)) {
|
|
1438
|
+
const { threads } = await memory.listThreads({
|
|
1439
|
+
filter: { resourceId: effectiveResourceId },
|
|
1440
|
+
perPage: false,
|
|
1441
|
+
orderBy: { field: "updatedAt", direction: "DESC" }
|
|
1442
|
+
});
|
|
1443
|
+
accessibleThreadsForResource = await filterAccessibleThreads({
|
|
1444
|
+
mastra,
|
|
1445
|
+
requestContext,
|
|
1446
|
+
threads
|
|
1447
|
+
});
|
|
1448
|
+
accessibleThreadIds = new Set(accessibleThreadsForResource.map((thread) => thread.id));
|
|
1449
|
+
if (accessibleThreadsForResource.length === 0) {
|
|
1450
|
+
return {
|
|
1451
|
+
results: [],
|
|
1452
|
+
count: 0,
|
|
1453
|
+
query: searchQuery,
|
|
1454
|
+
searchScope: resourceScope ? "resource" : "thread",
|
|
1455
|
+
searchType: hasSemanticRecall ? "semantic" : "text"
|
|
1456
|
+
};
|
|
1457
|
+
}
|
|
1458
|
+
}
|
|
1156
1459
|
if (effectiveThreadId && !resourceScope) {
|
|
1157
1460
|
const thread = await memory.getThreadById({ threadId: effectiveThreadId });
|
|
1158
1461
|
if (!thread) {
|
|
@@ -1164,16 +1467,22 @@ var SEARCH_MEMORY_ROUTE = createRoute({
|
|
|
1164
1467
|
searchType: hasSemanticRecall ? "semantic" : "text"
|
|
1165
1468
|
};
|
|
1166
1469
|
}
|
|
1167
|
-
await
|
|
1470
|
+
await enforceThreadAccess({
|
|
1471
|
+
mastra,
|
|
1472
|
+
requestContext,
|
|
1473
|
+
threadId: effectiveThreadId,
|
|
1474
|
+
thread,
|
|
1475
|
+
effectiveResourceId
|
|
1476
|
+
});
|
|
1168
1477
|
}
|
|
1169
1478
|
let searchThreadId = effectiveThreadId;
|
|
1170
1479
|
if (!searchThreadId) {
|
|
1171
|
-
const
|
|
1480
|
+
const threads = accessibleThreadsForResource ?? (await memory.listThreads({
|
|
1172
1481
|
filter: { resourceId: effectiveResourceId },
|
|
1173
1482
|
page: 0,
|
|
1174
1483
|
perPage: 1,
|
|
1175
1484
|
orderBy: { field: "updatedAt", direction: "DESC" }
|
|
1176
|
-
});
|
|
1485
|
+
})).threads;
|
|
1177
1486
|
if (threads.length === 0) {
|
|
1178
1487
|
return {
|
|
1179
1488
|
results: [],
|
|
@@ -1205,12 +1514,24 @@ var SEARCH_MEMORY_ROUTE = createRoute({
|
|
|
1205
1514
|
threadConfig: config,
|
|
1206
1515
|
vectorSearchString: threadConfig.semanticRecall && searchQuery ? searchQuery : void 0
|
|
1207
1516
|
});
|
|
1517
|
+
const accessibleMessages = accessibleThreadIds ? result.messages.filter(
|
|
1518
|
+
(message) => accessibleThreadIds.has(message.threadId || searchThreadId)
|
|
1519
|
+
) : result.messages;
|
|
1520
|
+
if (accessibleMessages.length === 0) {
|
|
1521
|
+
return {
|
|
1522
|
+
results: [],
|
|
1523
|
+
count: 0,
|
|
1524
|
+
query: searchQuery,
|
|
1525
|
+
searchScope: resourceScope ? "resource" : "thread",
|
|
1526
|
+
searchType: hasSemanticRecall ? "semantic" : "text"
|
|
1527
|
+
};
|
|
1528
|
+
}
|
|
1208
1529
|
const threadIds = Array.from(
|
|
1209
|
-
new Set(
|
|
1530
|
+
new Set(accessibleMessages.map((m) => m.threadId || searchThreadId).filter(Boolean))
|
|
1210
1531
|
);
|
|
1211
1532
|
const fetched = await Promise.all(threadIds.map((id) => memory.getThreadById({ threadId: id })));
|
|
1212
1533
|
const threadMap = new Map(fetched.filter(Boolean).map((t) => [t.id, t]));
|
|
1213
|
-
for (const msg of
|
|
1534
|
+
for (const msg of accessibleMessages) {
|
|
1214
1535
|
const content = getTextContent(msg);
|
|
1215
1536
|
const msgThreadId = msg.threadId || searchThreadId;
|
|
1216
1537
|
const thread = threadMap.get(msgThreadId);
|
|
@@ -1373,5 +1694,5 @@ var DELETE_MESSAGES_NETWORK_ROUTE = createRoute({
|
|
|
1373
1694
|
});
|
|
1374
1695
|
|
|
1375
1696
|
export { AWAIT_BUFFER_STATUS_ROUTE, CLONE_THREAD_ROUTE, CREATE_THREAD_NETWORK_ROUTE, CREATE_THREAD_ROUTE, DELETE_MESSAGES_NETWORK_ROUTE, DELETE_MESSAGES_ROUTE, DELETE_THREAD_NETWORK_ROUTE, DELETE_THREAD_ROUTE, GET_MEMORY_CONFIG_ROUTE, GET_MEMORY_STATUS_NETWORK_ROUTE, GET_MEMORY_STATUS_ROUTE, GET_OBSERVATIONAL_MEMORY_ROUTE, GET_THREAD_BY_ID_NETWORK_ROUTE, GET_THREAD_BY_ID_ROUTE, GET_WORKING_MEMORY_ROUTE, LIST_MESSAGES_NETWORK_ROUTE, LIST_MESSAGES_ROUTE, LIST_THREADS_NETWORK_ROUTE, LIST_THREADS_ROUTE, SAVE_MESSAGES_NETWORK_ROUTE, SAVE_MESSAGES_ROUTE, SEARCH_MEMORY_ROUTE, UPDATE_THREAD_NETWORK_ROUTE, UPDATE_THREAD_ROUTE, UPDATE_WORKING_MEMORY_ROUTE, getTextContent, memory_exports };
|
|
1376
|
-
//# sourceMappingURL=chunk-
|
|
1377
|
-
//# sourceMappingURL=chunk-
|
|
1697
|
+
//# sourceMappingURL=chunk-OJ7SK6PH.js.map
|
|
1698
|
+
//# sourceMappingURL=chunk-OJ7SK6PH.js.map
|