@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 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../_internal-core/src/storage/domains/shared.ts","../../_internal-core/src/storage/domains/observability/logs.ts","../../_internal-core/src/storage/domains/observability/scores.ts","../../_internal-core/src/storage/domains/observability/feedback.ts","../../_internal-core/src/storage/domains/observability/metrics.ts","../../_internal-core/src/storage/domains/observability/discovery.ts","../src/server/handlers/observability-new-endpoints.ts"],"names":["EntityType","z"],"mappings":"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","file":"chunk-IQA7HL2V.js","sourcesContent":["import { z } from 'zod/v4';\n\n/** Types of entities that can produce observability spans. */\nexport enum EntityType {\n /** Agent/Model execution */\n AGENT = 'agent',\n /** Scorer definition/execution */\n SCORER = 'scorer',\n /** RAG ingestion pipeline execution */\n RAG_INGESTION = 'rag_ingestion',\n /** Trajectory evaluation target */\n TRAJECTORY = 'trajectory',\n /** Input Processor */\n INPUT_PROCESSOR = 'input_processor',\n /** Input Step Processor */\n INPUT_STEP_PROCESSOR = 'input_step_processor',\n /** Output Processor */\n OUTPUT_PROCESSOR = 'output_processor',\n /** Output Step Processor */\n OUTPUT_STEP_PROCESSOR = 'output_step_processor',\n /** Workflow Step */\n WORKFLOW_STEP = 'workflow_step',\n /** Tool */\n TOOL = 'tool',\n /** Workflow */\n WORKFLOW_RUN = 'workflow_run',\n /** Memory */\n MEMORY = 'memory',\n}\n\n/**\n * Common DB fields\n */\nexport const createdAtField = z.date().describe('Database record creation time');\n\nexport const updatedAtField = z.date().describe('Database record last update time');\n\nexport const dbTimestamps = {\n createdAt: createdAtField,\n updatedAt: updatedAtField.nullable(),\n} as const satisfies z.ZodRawShape;\n\n/**\n * Pagination arguments for list queries (page and perPage only)\n * Uses z.coerce to handle string → number conversion from query params\n */\nexport const paginationArgsSchema = z\n .object({\n page: z.coerce.number().int().min(0).optional().default(0).describe('Zero-indexed page number'),\n perPage: z.coerce.number().int().min(1).max(100).optional().default(10).describe('Number of items per page'),\n })\n .describe('Pagination options for list queries');\n\n/** Input type for pagination arguments (page and perPage). */\nexport type PaginationArgs = z.input<typeof paginationArgsSchema>;\n\n/**\n * Pagination response info\n * Used across all paginated endpoints\n */\nexport const paginationInfoSchema = z.object({\n total: z.number().describe('Total number of items available'),\n page: z.number().describe('Current page'),\n perPage: z\n .union([z.number(), z.literal(false)])\n .describe('Number of items per page, or false if pagination is disabled'),\n hasMore: z.boolean().describe('True if more pages are available'),\n});\n\n/**\n * Date range for filtering by time\n * Uses z.coerce to handle ISO string → Date conversion from query params\n */\nexport const dateRangeSchema = z\n .object({\n start: z.coerce.date().optional().describe('Start of date range (inclusive by default)'),\n end: z.coerce.date().optional().describe('End of date range (inclusive by default)'),\n startExclusive: z\n .boolean()\n .optional()\n .describe('When true, excludes the start date from results (uses > instead of >=)'),\n endExclusive: z\n .boolean()\n .optional()\n .describe('When true, excludes the end date from results (uses < instead of <=)'),\n })\n .describe('Date range filter for timestamps');\n\n/** Date range with optional inclusive/exclusive boundaries. */\nexport type DateRange = z.input<typeof dateRangeSchema>;\n\nexport const sortDirectionSchema = z.enum(['ASC', 'DESC']).describe(\"Sort direction: 'ASC' | 'DESC'\");\n\n/** Aggregation type schema shared across OLAP-style observability queries. */\nexport const aggregationTypeSchema = z\n .enum(['sum', 'avg', 'min', 'max', 'count', 'last'])\n .describe('Aggregation function');\nexport type AggregationType = z.infer<typeof aggregationTypeSchema>;\n\n/** Aggregation interval schema shared across OLAP-style observability queries. */\nexport const aggregationIntervalSchema = z.enum(['1m', '5m', '15m', '1h', '1d']).describe('Time bucket interval');\nexport type AggregationInterval = z.infer<typeof aggregationIntervalSchema>;\n\n/** Compare period for aggregate queries with period-over-period comparison. */\nexport const comparePeriodSchema = z\n .enum(['previous_period', 'previous_day', 'previous_week'])\n .describe('Comparison period for aggregate queries');\nexport type ComparePeriod = z.infer<typeof comparePeriodSchema>;\n\n/** Shared groupBy schema for OLAP-style breakdown and time-series queries. */\nexport const groupBySchema = z.array(z.string()).min(1).describe('Fields to group by');\nexport type GroupBy = z.infer<typeof groupBySchema>;\n\n/** Shared percentiles schema for percentile queries. */\nexport const percentilesSchema = z.array(z.number().min(0).max(1)).min(1).describe('Percentile values (0-1)');\nexport type Percentiles = z.infer<typeof percentilesSchema>;\n\n/** Shared fields for aggregate OLAP responses across observability signals. */\nexport const aggregateResponseFields = {\n value: z.number().nullable().describe('Aggregated value'),\n previousValue: z.number().nullable().optional().describe('Value from comparison period'),\n changePercent: z.number().nullable().optional().describe('Percentage change from comparison period'),\n} as const;\n\n/** Shared field for OLAP breakdown dimension values. */\nexport const dimensionsField = z.record(z.string(), z.string().nullable()).describe('Dimension values for this group');\n\n/** Shared field for non-null OLAP aggregated values. */\nexport const aggregatedValueField = z.number().describe('Aggregated value');\n\n/** Shared field for OLAP bucket timestamps. */\nexport const bucketTimestampField = z.date().describe('Bucket timestamp');\n\n/** Shared field for percentile identifiers in OLAP responses. */\nexport const percentileField = z.number().describe('Percentile value');\n\n/** Shared field for percentile values within a time bucket. */\nexport const percentileBucketValueField = z.number().describe('Percentile value at this bucket');\n\nexport const entityTypeField = z\n .nativeEnum(EntityType)\n .describe(`Entity type (e.g., 'agent' | 'processor' | 'tool' | 'workflow')`);\n\nexport const entityIdField = z.string().describe('ID of the entity (e.g., \"weatherAgent\", \"orderWorkflow\")');\n\nexport const entityNameField = z.string().describe('Name of the entity');\n\nexport const userIdField = z.string().describe('Human end-user who triggered execution');\n\nexport const organizationIdField = z.string().describe('Multi-tenant organization/account');\n\nexport const resourceIdField = z.string().describe('Broader resource context (Mastra memory compatibility)');\n\nexport const runIdField = z.string().describe('Unique execution run identifier');\n\nexport const sessionIdField = z.string().describe('Session identifier for grouping traces');\n\nexport const threadIdField = z.string().describe('Conversation thread identifier');\n\nexport const requestIdField = z.string().describe('HTTP request ID for log correlation');\n\nexport const environmentField = z.string().describe(`Environment (e.g., \"production\" | \"staging\" | \"development\")`);\n\nexport const sourceField = z.string().describe(`Source of execution (e.g., \"local\" | \"cloud\" | \"ci\")`);\nexport const executionSourceField = z.string().describe(`Source of execution (e.g., \"local\" | \"cloud\" | \"ci\")`);\n\nexport const serviceNameField = z.string().describe('Name of the service');\n\n// Parent entity hierarchy fields\nexport const parentEntityTypeField = z.nativeEnum(EntityType).describe('Entity type of the parent entity');\nexport const parentEntityIdField = z.string().describe('ID of the parent entity');\nexport const parentEntityNameField = z.string().describe('Name of the parent entity');\n\n// Root entity hierarchy fields\nexport const rootEntityTypeField = z.nativeEnum(EntityType).describe('Entity type of the root entity');\nexport const rootEntityIdField = z.string().describe('ID of the root entity');\nexport const rootEntityNameField = z.string().describe('Name of the root entity');\n\n// Entity versioning\nexport const entityVersionIdField = z\n .string()\n .describe('Version ID of the entity that produced this signal (e.g., agent version, workflow version)');\nexport const parentEntityVersionIdField = z\n .string()\n .describe('Version ID of the parent entity that produced this signal');\nexport const rootEntityVersionIdField = z.string().describe('Version ID of the root entity that produced this signal');\n\n// Experimentation\nexport const experimentIdField = z.string().describe('Experiment or eval run identifier');\n\n// ============================================================================\n// Common observability fields (shared across tracing, metrics, logs)\n// ============================================================================\n\nexport const scopeField = z\n .record(z.string(), z.unknown())\n .describe('Arbitrary package/app version info (e.g., {\"core\": \"1.0.0\", \"memory\": \"1.0.0\", \"gitSha\": \"abcd1234\"})');\n\nexport const metadataField = z.record(z.string(), z.unknown()).describe('User-defined metadata for custom filtering');\n\nexport const tagsField = z.array(z.string()).describe('Labels for filtering');\n\n/**\n * Base context fields shared across tracing and non-tracing observability records.\n * Source/provenance is intentionally excluded because tracing uses `source`\n * while signals use `executionSource`.\n */\nconst contextFieldsBase = {\n // Entity identification\n entityType: entityTypeField.nullish(),\n entityId: entityIdField.nullish(),\n entityName: entityNameField.nullish(),\n\n // Parent entity hierarchy\n parentEntityType: parentEntityTypeField.nullish(),\n parentEntityId: parentEntityIdField.nullish(),\n parentEntityName: parentEntityNameField.nullish(),\n\n // Root entity hierarchy\n rootEntityType: rootEntityTypeField.nullish(),\n rootEntityId: rootEntityIdField.nullish(),\n rootEntityName: rootEntityNameField.nullish(),\n\n // Identity & tenancy\n userId: userIdField.nullish(),\n organizationId: organizationIdField.nullish(),\n resourceId: resourceIdField.nullish(),\n\n // Correlation IDs\n runId: runIdField.nullish(),\n sessionId: sessionIdField.nullish(),\n threadId: threadIdField.nullish(),\n requestId: requestIdField.nullish(),\n\n // Deployment context\n environment: environmentField.nullish(),\n serviceName: serviceNameField.nullish(),\n scope: scopeField.nullish(),\n\n // Entity versioning\n entityVersionId: entityVersionIdField.nullish(),\n parentEntityVersionId: parentEntityVersionIdField.nullish(),\n rootEntityVersionId: rootEntityVersionIdField.nullish(),\n\n // Experimentation\n experimentId: experimentIdField.nullish(),\n} as const;\n\n/**\n * Context fields shared across observability signals other than spans (metrics, logs, scores, feedback).\n * These use `executionSource` to avoid colliding with signal-specific provenance fields.\n */\nexport const contextFields = {\n ...contextFieldsBase,\n executionSource: executionSourceField.nullish(),\n tags: tagsField.nullish(),\n} as const;\n\n/**\n * Context fields used by tracing/span records.\n * Tracing continues to expose execution provenance as `source`.\n */\nexport const spanContextFields = {\n ...contextFieldsBase,\n source: sourceField.nullish(),\n} as const;\n\n/**\n * Common filter fields shared across observability signal filters (metrics, logs, scores, feedback).\n * All fields are optional — each signal extends this with signal-specific filters.\n */\nexport const commonFilterFields = {\n timestamp: dateRangeSchema.optional().describe('Filter by timestamp range'),\n traceId: z.string().optional().describe('Filter by trace ID'),\n spanId: z.string().optional().describe('Filter by span ID'),\n entityType: entityTypeField.optional(),\n entityName: entityNameField.optional(),\n entityVersionId: entityVersionIdField.optional(),\n parentEntityVersionId: parentEntityVersionIdField.optional(),\n rootEntityVersionId: rootEntityVersionIdField.optional(),\n userId: userIdField.optional(),\n organizationId: organizationIdField.optional(),\n experimentId: experimentIdField.optional(),\n serviceName: serviceNameField.optional(),\n environment: environmentField.optional(),\n parentEntityType: parentEntityTypeField.optional(),\n parentEntityName: parentEntityNameField.optional(),\n rootEntityType: rootEntityTypeField.optional(),\n rootEntityName: rootEntityNameField.optional(),\n resourceId: resourceIdField.optional(),\n runId: runIdField.optional(),\n sessionId: sessionIdField.optional(),\n threadId: threadIdField.optional(),\n requestId: requestIdField.optional(),\n executionSource: executionSourceField.optional(),\n tags: z.array(z.string()).optional().describe('Filter by tags (must have all specified tags)'),\n} as const;\n\n// ============================================================================\n// Tracing identifier fields (shared across scores, feedback, metrics)\n// ============================================================================\n\n/** Zod schema for trace ID field */\nexport const traceIdField = z.string().describe('Unique trace identifier');\n\n/** Zod schema for span ID field */\nexport const spanIdField = z.string().describe('Unique span identifier within a trace');\n","import { z } from 'zod/v4';\nimport {\n commonFilterFields,\n contextFields,\n metadataField,\n paginationArgsSchema,\n paginationInfoSchema,\n sortDirectionSchema,\n spanIdField,\n tagsField,\n traceIdField,\n} from '../shared';\n\n// ============================================================================\n// Field Schemas\n// ============================================================================\n\n/** Log level schema for validation */\nexport const logLevelSchema = z.enum(['debug', 'info', 'warn', 'error', 'fatal']);\n\nconst messageField = z.string().describe('Log message');\nconst logDataField = z.record(z.string(), z.unknown()).describe('Structured data attached to the log');\n\n// ============================================================================\n// LogRecord Schema (Storage Format)\n// ============================================================================\n\n/**\n * Schema for logs as stored in the database.\n * Includes all fields from ExportedLog plus storage-specific fields.\n */\nexport const logRecordSchema = z\n .object({\n logId: z.string().nullish().describe('Unique id for this log event'),\n timestamp: z.date().describe('When the log was created'),\n level: logLevelSchema.describe('Log severity level'),\n message: messageField,\n data: logDataField.nullish(),\n\n // Correlation\n traceId: traceIdField.nullish(),\n spanId: spanIdField.nullish(),\n\n // Context fields\n ...contextFields,\n /**\n * @deprecated Use `executionSource` instead.\n */\n source: z.string().nullish().describe('Execution source'),\n\n metadata: metadataField.nullish(),\n })\n .describe('Log record as stored in the database');\n\n/** Log record type for storage */\nexport type LogRecord = z.infer<typeof logRecordSchema>;\n\n// ============================================================================\n// LogRecordInput Schema (User-Facing API)\n// ============================================================================\n\n/**\n * Schema for user-provided log input (minimal required fields).\n * The logger enriches this with context before emitting ExportedLog.\n */\nexport const logRecordInputSchema = z\n .object({\n level: logLevelSchema,\n message: messageField,\n data: logDataField.optional(),\n tags: tagsField.optional(),\n })\n .describe('User-provided log input');\n\n/** User-facing log input type */\nexport type LogRecordInput = z.infer<typeof logRecordInputSchema>;\n\n// ============================================================================\n// Create Log Schemas\n// ============================================================================\n\n/** Schema for creating a log record */\nexport const createLogRecordSchema = logRecordSchema;\n\n/** Log record for creation (excludes db timestamps) */\nexport type CreateLogRecord = z.infer<typeof createLogRecordSchema>;\n\n/** Schema for batchCreateLogs operation arguments */\nexport const batchCreateLogsArgsSchema = z\n .object({\n logs: z.array(createLogRecordSchema),\n })\n .describe('Arguments for batch creating logs');\n\n/** Arguments for batch creating logs */\nexport type BatchCreateLogsArgs = z.infer<typeof batchCreateLogsArgsSchema>;\n\n// ============================================================================\n// Log Filter Schema\n// ============================================================================\n\n/** Schema for filtering logs in list queries */\nexport const logsFilterSchema = z\n .object({\n ...commonFilterFields,\n\n // Log-specific filters\n /**\n * @deprecated Use `executionSource` instead.\n */\n source: z.string().optional().describe('Filter by execution source'),\n level: z\n .union([logLevelSchema, z.array(logLevelSchema)])\n .optional()\n .describe('Filter by log level(s)'),\n })\n .describe('Filters for querying logs');\n\n/** Filters for querying logs */\nexport type LogsFilter = z.infer<typeof logsFilterSchema>;\n\n// ============================================================================\n// List Logs Schemas\n// ============================================================================\n\n/** Fields available for ordering log results */\nexport const logsOrderByFieldSchema = z.enum(['timestamp']).describe(\"Field to order by: 'timestamp'\");\n\n/** Order by configuration for log queries */\nexport const logsOrderBySchema = z\n .object({\n field: logsOrderByFieldSchema.default('timestamp').describe('Field to order by'),\n direction: sortDirectionSchema.default('DESC').describe('Sort direction'),\n })\n .describe('Order by configuration');\n\n/** Schema for listLogs operation arguments */\nexport const listLogsArgsSchema = z\n .object({\n filters: logsFilterSchema.optional().describe('Optional filters to apply'),\n pagination: paginationArgsSchema.default({ page: 0, perPage: 10 }).describe('Pagination settings'),\n orderBy: logsOrderBySchema\n .default({ field: 'timestamp', direction: 'DESC' })\n .describe('Ordering configuration (defaults to timestamp desc)'),\n })\n .describe('Arguments for listing logs');\n\n/** Arguments for listing logs */\nexport type ListLogsArgs = z.input<typeof listLogsArgsSchema>;\n\n/** Schema for listLogs operation response */\nexport const listLogsResponseSchema = z.object({\n pagination: paginationInfoSchema,\n logs: z.array(logRecordSchema),\n});\n\n/** Response containing paginated logs */\nexport type ListLogsResponse = z.infer<typeof listLogsResponseSchema>;\n","import { z } from 'zod/v4';\nimport {\n aggregateResponseFields,\n aggregationIntervalSchema,\n aggregationTypeSchema,\n aggregatedValueField,\n bucketTimestampField,\n comparePeriodSchema,\n commonFilterFields,\n experimentIdField,\n contextFields,\n dimensionsField,\n entityTypeField,\n groupBySchema,\n paginationArgsSchema,\n paginationInfoSchema,\n percentileField,\n percentileBucketValueField,\n percentilesSchema,\n sortDirectionSchema,\n spanIdField,\n traceIdField,\n} from '../shared';\n\n// ============================================================================\n// Field Schemas\n// ============================================================================\n\nconst scorerIdField = z.string().describe('Identifier of the scorer (e.g., relevance, accuracy)');\nconst scorerNameField = z.string().describe('Display name of the scorer');\nconst scorerVersionField = z.string().describe('Version of the scorer');\nconst scoreSourceField = z.string().describe('How the score was produced (e.g., manual, automated, experiment)');\nconst scoreValueField = z.number().describe('Score value (range defined by scorer)');\nconst scoreReasonField = z.string().describe('Explanation for the score');\n\n// ============================================================================\n// ScoreRecord Schema (Storage Format)\n// ============================================================================\n\n/**\n * Schema for scores as stored in the database.\n * Includes all fields from ExportedScore plus storage-specific fields.\n */\nexport const scoreRecordSchema = z\n .object({\n scoreId: z.string().nullish().describe('Unique id for this score event'),\n timestamp: z.date().describe('When the score was recorded'),\n\n // Target\n traceId: traceIdField.nullish().describe('Trace that anchors the scored target when available'),\n spanId: spanIdField.nullish().describe('Span ID this score applies to'),\n\n // Score data\n scorerId: scorerIdField,\n scorerName: scorerNameField.nullish(),\n scorerVersion: scorerVersionField.nullish(),\n scoreSource: scoreSourceField.nullish(),\n /**\n * @deprecated Use `scoreSource` instead.\n */\n source: scoreSourceField.nullish(),\n score: scoreValueField,\n reason: scoreReasonField.nullish(),\n\n // Context (entity hierarchy, identity, correlation, deployment, experimentation)\n ...contextFields,\n\n /** Trace ID of the scoring run (links to trace that generated this score) */\n scoreTraceId: z.string().nullish().describe('Trace ID of the scoring run for debugging score generation'),\n\n // User-defined metadata (context fields stored here)\n metadata: z.record(z.string(), z.unknown()).nullish().describe('User-defined metadata'),\n })\n .describe('Score record as stored in the database');\n\n/** Score record type for storage */\nexport type ScoreRecord = z.infer<typeof scoreRecordSchema>;\n\n// ============================================================================\n// ScoreInput Schema (User-Facing API)\n// ============================================================================\n\n/**\n * Schema for user-provided score input (minimal required fields).\n * The span/trace context adds traceId/spanId before emitting ExportedScore.\n */\nexport const scoreInputSchema = z\n .object({\n scorerId: scorerIdField,\n scorerName: scorerNameField.optional(),\n scorerVersion: scorerVersionField.optional(),\n scoreSource: scoreSourceField.optional(),\n /**\n * @deprecated Use `scoreSource` instead.\n */\n source: scoreSourceField.optional(),\n score: scoreValueField,\n reason: scoreReasonField.optional(),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional scorer-specific metadata'),\n experimentId: experimentIdField.optional(),\n scoreTraceId: z.string().optional().describe('Trace ID of the scoring run for debugging score generation'),\n targetEntityType: entityTypeField.optional().describe('Entity type the scorer evaluated when known'),\n })\n .describe('User-provided score input');\n\n/** User-facing score input type */\nexport type ScoreInput = z.infer<typeof scoreInputSchema>;\n\n// ============================================================================\n// Create Score Schemas\n// ============================================================================\n\n/** Schema for creating a score record */\nexport const createScoreRecordSchema = scoreRecordSchema;\n\n/** Score record for creation */\nexport type CreateScoreRecord = z.infer<typeof createScoreRecordSchema>;\n\n/** Schema for createScore operation arguments */\nexport const createScoreArgsSchema = z\n .object({\n score: createScoreRecordSchema,\n })\n .describe('Arguments for creating a score');\n\n/** Arguments for creating a score */\nexport type CreateScoreArgs = z.infer<typeof createScoreArgsSchema>;\n\n/** Schema for createScore operation body in client/server */\nexport const createScoreBodySchema = z\n .object({\n score: createScoreRecordSchema.omit({ timestamp: true }),\n })\n .describe('Arguments for creating a score');\n\n/** Body for creating a score in client/server */\nexport type CreateScoreBody = z.infer<typeof createScoreBodySchema>;\n\n/** Schema for createScore operation response */\nexport const createScoreResponseSchema = z.object({ success: z.boolean() }).describe('Response from creating a score');\n\n/** Response from creating a score */\nexport type CreateScoreResponse = z.infer<typeof createScoreResponseSchema>;\n\n/** Schema for batchCreateScores operation arguments */\nexport const batchCreateScoresArgsSchema = z\n .object({\n scores: z.array(createScoreRecordSchema),\n })\n .describe('Arguments for batch recording scores');\n\n/** Arguments for batch creating scores */\nexport type BatchCreateScoresArgs = z.infer<typeof batchCreateScoresArgsSchema>;\n\n// ============================================================================\n// Score Filter Schema\n// ============================================================================\n\n/** Schema for filtering scores in list queries */\nexport const scoresFilterSchema = z\n .object({\n ...commonFilterFields,\n\n // Score-specific filters\n scorerId: z\n .union([z.string(), z.array(z.string())])\n .optional()\n .describe('Filter by scorer ID(s)'),\n scoreSource: scoreSourceField.optional().describe('Filter by how the score was produced'),\n /**\n * @deprecated Use `scoreSource` instead.\n */\n source: scoreSourceField.optional().describe('Filter by how the score was produced'),\n })\n .describe('Filters for querying scores');\n\n/** Filters for querying scores */\nexport type ScoresFilter = z.infer<typeof scoresFilterSchema>;\n\n// ============================================================================\n// List Scores Schemas\n// ============================================================================\n\n/** Fields available for ordering score results */\nexport const scoresOrderByFieldSchema = z\n .enum(['timestamp', 'score'])\n .describe(\"Field to order by: 'timestamp' | 'score'\");\n\n/** Order by configuration for score queries */\nexport const scoresOrderBySchema = z\n .object({\n field: scoresOrderByFieldSchema.default('timestamp').describe('Field to order by'),\n direction: sortDirectionSchema.default('DESC').describe('Sort direction'),\n })\n .describe('Order by configuration');\n\n/** Schema for listScores operation arguments */\nexport const listScoresArgsSchema = z\n .object({\n filters: scoresFilterSchema.optional(),\n pagination: paginationArgsSchema.default({ page: 0, perPage: 10 }).describe('Pagination settings'),\n orderBy: scoresOrderBySchema\n .default({ field: 'timestamp', direction: 'DESC' })\n .describe('Ordering configuration (defaults to timestamp desc)'),\n })\n .describe('Arguments for listing scores');\n\n/** Arguments for listing scores */\nexport type ListScoresArgs = z.input<typeof listScoresArgsSchema>;\n\n/** Schema for listScores operation response */\nexport const listScoresResponseSchema = z.object({\n pagination: paginationInfoSchema,\n scores: z.array(scoreRecordSchema),\n});\n\n/** Response containing paginated scores */\nexport type ListScoresResponse = z.infer<typeof listScoresResponseSchema>;\n\n// ============================================================================\n// OLAP Query Schemas\n// ============================================================================\n\nexport const getScoreAggregateArgsSchema = z\n .object({\n scorerId: scorerIdField,\n scoreSource: scoreSourceField.optional(),\n aggregation: aggregationTypeSchema,\n filters: scoresFilterSchema.optional(),\n comparePeriod: comparePeriodSchema.optional(),\n })\n .describe('Arguments for getting a score aggregate');\n\nexport type GetScoreAggregateArgs = z.infer<typeof getScoreAggregateArgsSchema>;\n\nexport const getScoreAggregateResponseSchema = z.object(aggregateResponseFields);\n\nexport type GetScoreAggregateResponse = z.infer<typeof getScoreAggregateResponseSchema>;\n\nexport const getScoreBreakdownArgsSchema = z\n .object({\n scorerId: scorerIdField,\n scoreSource: scoreSourceField.optional(),\n groupBy: groupBySchema,\n aggregation: aggregationTypeSchema,\n filters: scoresFilterSchema.optional(),\n })\n .describe('Arguments for getting a score breakdown');\n\nexport type GetScoreBreakdownArgs = z.infer<typeof getScoreBreakdownArgsSchema>;\n\nexport const getScoreBreakdownResponseSchema = z.object({\n groups: z.array(\n z.object({\n dimensions: dimensionsField,\n value: aggregatedValueField,\n }),\n ),\n});\n\nexport type GetScoreBreakdownResponse = z.infer<typeof getScoreBreakdownResponseSchema>;\n\nexport const getScoreTimeSeriesArgsSchema = z\n .object({\n scorerId: scorerIdField,\n scoreSource: scoreSourceField.optional(),\n interval: aggregationIntervalSchema,\n aggregation: aggregationTypeSchema,\n filters: scoresFilterSchema.optional(),\n groupBy: groupBySchema.optional(),\n })\n .describe('Arguments for getting score time series');\n\nexport type GetScoreTimeSeriesArgs = z.infer<typeof getScoreTimeSeriesArgsSchema>;\n\nexport const getScoreTimeSeriesResponseSchema = z.object({\n series: z.array(\n z.object({\n name: z.string().describe('Series name (scorer ID or group key)'),\n points: z.array(\n z.object({\n timestamp: bucketTimestampField,\n value: aggregatedValueField,\n }),\n ),\n }),\n ),\n});\n\nexport type GetScoreTimeSeriesResponse = z.infer<typeof getScoreTimeSeriesResponseSchema>;\n\nexport const getScorePercentilesArgsSchema = z\n .object({\n scorerId: scorerIdField,\n scoreSource: scoreSourceField.optional(),\n percentiles: percentilesSchema,\n interval: aggregationIntervalSchema,\n filters: scoresFilterSchema.optional(),\n })\n .describe('Arguments for getting score percentiles');\n\nexport type GetScorePercentilesArgs = z.infer<typeof getScorePercentilesArgsSchema>;\n\nexport const getScorePercentilesResponseSchema = z.object({\n series: z.array(\n z.object({\n percentile: percentileField,\n points: z.array(\n z.object({\n timestamp: bucketTimestampField,\n value: percentileBucketValueField,\n }),\n ),\n }),\n ),\n});\n\nexport type GetScorePercentilesResponse = z.infer<typeof getScorePercentilesResponseSchema>;\n","import { z } from 'zod/v4';\nimport {\n aggregateResponseFields,\n aggregationIntervalSchema,\n aggregationTypeSchema,\n aggregatedValueField,\n bucketTimestampField,\n comparePeriodSchema,\n commonFilterFields,\n experimentIdField,\n contextFields,\n dimensionsField,\n groupBySchema,\n paginationArgsSchema,\n paginationInfoSchema,\n percentileField,\n percentileBucketValueField,\n percentilesSchema,\n sortDirectionSchema,\n spanIdField,\n traceIdField,\n} from '../shared';\n\n// ============================================================================\n// Field Schemas\n// ============================================================================\n\nconst feedbackSourceField = z.string().describe(\"Source of feedback (e.g., 'user', 'system', 'manual')\");\nconst feedbackTypeField = z.string().describe(\"Type of feedback (e.g., 'thumbs', 'rating', 'correction')\");\nconst feedbackValueField = z\n .union([z.number(), z.string()])\n .describe('Feedback value (rating number or correction text)');\nconst feedbackCommentField = z.string().describe('Additional comment or context');\nconst feedbackUserIdField = z.string().describe('User who provided the feedback');\n\nfunction normalizeLegacyFeedbackActor<T>(input: T): T {\n if (!input || typeof input !== 'object' || Array.isArray(input)) {\n return input;\n }\n\n const record = { ...(input as Record<string, unknown>) };\n if (typeof record.userId === 'string' && record.feedbackUserId == null) {\n record.feedbackUserId = record.userId;\n delete record.userId;\n }\n\n return record as T;\n}\n\n// ============================================================================\n// FeedbackRecord Schema (Storage Format)\n// ============================================================================\n\n/**\n * Schema for feedback as stored in the database.\n * Includes all fields from ExportedFeedback plus storage-specific fields.\n */\nconst feedbackRecordObjectSchema = z.object({\n feedbackId: z.string().nullish().describe('Unique id for this feedback event'),\n timestamp: z.date().describe('When the feedback was recorded'),\n\n // Target\n traceId: traceIdField.nullish().describe('Trace that anchors the feedback target when available'),\n spanId: spanIdField.nullish().describe('Span ID this feedback applies to'),\n\n // Feedback data\n feedbackSource: feedbackSourceField.nullish(),\n /**\n * @deprecated Use `feedbackSource` instead.\n */\n source: feedbackSourceField.nullish(),\n feedbackType: feedbackTypeField,\n value: feedbackValueField,\n comment: feedbackCommentField.nullish(),\n\n // Feedback actor identity\n feedbackUserId: feedbackUserIdField.nullish(),\n\n // Context (entity hierarchy, identity, correlation, deployment, experimentation)\n ...contextFields,\n\n // Source linkage (e.g. dataset item result ID)\n sourceId: z\n .string()\n .nullish()\n .describe('ID of the source record this feedback is linked to (e.g. experiment result ID)'),\n\n // User-defined metadata (context fields stored here)\n metadata: z.record(z.string(), z.unknown()).nullish().describe('User-defined metadata'),\n});\n\nexport const feedbackRecordSchema = z\n .object(feedbackRecordObjectSchema.shape)\n .describe('Feedback record as stored in the database');\n\n/** Feedback record type for storage */\nexport type FeedbackRecord = z.infer<typeof feedbackRecordSchema>;\n\n// ============================================================================\n// FeedbackInput Schema (User-Facing API)\n// ============================================================================\n\n/**\n * Schema for user-provided feedback input (minimal required fields).\n * The span/trace context adds traceId/spanId before emitting ExportedFeedback.\n */\nconst feedbackInputObjectSchema = z.object({\n feedbackSource: feedbackSourceField.optional(),\n /**\n * @deprecated Use `feedbackSource` instead.\n */\n source: feedbackSourceField.optional(),\n feedbackType: feedbackTypeField,\n value: feedbackValueField,\n comment: feedbackCommentField.optional(),\n feedbackUserId: feedbackUserIdField.optional(),\n /**\n * @deprecated Use `feedbackUserId` instead.\n */\n userId: feedbackUserIdField.optional(),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional feedback-specific metadata'),\n experimentId: experimentIdField.optional(),\n sourceId: z.string().optional().describe('ID of the source record this feedback is linked to'),\n});\n\nexport const feedbackInputSchema = z.object(feedbackInputObjectSchema.shape).describe('User-provided feedback input');\n\n/** User-facing feedback input type */\nexport type FeedbackInput = z.infer<typeof feedbackInputSchema>;\n\n// ============================================================================\n// Create Feedback Schemas\n// ============================================================================\n\n/** Schema for creating a feedback record */\nexport const createFeedbackRecordSchema = feedbackRecordSchema;\n\n/** Feedback record for creation */\nexport type CreateFeedbackRecord = z.infer<typeof createFeedbackRecordSchema>;\n\n/** Schema for createFeedback operation arguments */\nexport const createFeedbackArgsSchema = z\n .object({\n feedback: z.preprocess(normalizeLegacyFeedbackActor, feedbackRecordObjectSchema),\n })\n .describe('Arguments for creating feedback');\n\n/** Arguments for creating feedback */\nexport type CreateFeedbackArgs = z.infer<typeof createFeedbackArgsSchema>;\n\n/** Schema for createFeedback operation body in client/server */\nexport const createFeedbackBodySchema = z\n .object({\n feedback: feedbackRecordObjectSchema.omit({ timestamp: true }),\n })\n .describe('Arguments for creating feedback');\n\n/** Body for creating feedback in client/server */\nexport type CreateFeedbackBody = z.infer<typeof createFeedbackBodySchema>;\n\n/** Schema for createFeedback operation response */\nexport const createFeedbackResponseSchema = z\n .object({ success: z.boolean() })\n .describe('Response from creating feedback');\n\n/** Response from creating feedback */\nexport type CreateFeedbackResponse = z.infer<typeof createFeedbackResponseSchema>;\n\n/** Schema for batchCreateFeedback operation arguments */\nexport const batchCreateFeedbackArgsSchema = z\n .object({\n feedbacks: z.array(z.preprocess(normalizeLegacyFeedbackActor, feedbackRecordObjectSchema)),\n })\n .describe('Arguments for batch recording feedback');\n\n/** Arguments for batch creating feedback */\nexport type BatchCreateFeedbackArgs = z.infer<typeof batchCreateFeedbackArgsSchema>;\n\n// ============================================================================\n// Feedback Filter Schema\n// ============================================================================\n\n/** Schema for filtering feedback in list queries */\nconst feedbackFilterObjectSchema = z.object({\n ...commonFilterFields,\n\n // Feedback-specific filters\n feedbackType: z\n .union([z.string(), z.array(z.string())])\n .optional()\n .describe('Filter by feedback type(s)'),\n feedbackSource: feedbackSourceField.optional(),\n /**\n * @deprecated Use `feedbackSource` instead.\n */\n source: feedbackSourceField.optional(),\n feedbackUserId: feedbackUserIdField.optional(),\n});\n\nexport const feedbackFilterSchema = z\n .object(feedbackFilterObjectSchema.shape)\n .describe('Filters for querying feedback');\n\n/** Filters for querying feedback */\nexport type FeedbackFilter = z.infer<typeof feedbackFilterSchema>;\n\n// ============================================================================\n// List Feedback Schemas\n// ============================================================================\n\n/** Fields available for ordering feedback results */\nexport const feedbackOrderByFieldSchema = z.enum(['timestamp']).describe(\"Field to order by: 'timestamp'\");\n\n/** Order by configuration for feedback queries */\nexport const feedbackOrderBySchema = z\n .object({\n field: feedbackOrderByFieldSchema.default('timestamp').describe('Field to order by'),\n direction: sortDirectionSchema.default('DESC').describe('Sort direction'),\n })\n .describe('Order by configuration');\n\n/** Schema for listFeedback operation arguments */\nexport const listFeedbackArgsSchema = z\n .object({\n filters: z\n .preprocess(normalizeLegacyFeedbackActor, feedbackFilterObjectSchema)\n .optional()\n .describe('Optional filters to apply'),\n pagination: paginationArgsSchema.default({ page: 0, perPage: 10 }).describe('Pagination settings'),\n orderBy: feedbackOrderBySchema\n .default({ field: 'timestamp', direction: 'DESC' })\n .describe('Ordering configuration (defaults to timestamp desc)'),\n })\n .describe('Arguments for listing feedback');\n\n/** Arguments for listing feedback */\nexport type ListFeedbackArgs = z.input<typeof listFeedbackArgsSchema>;\n\n/** Schema for listFeedback operation response */\nexport const listFeedbackResponseSchema = z.object({\n pagination: paginationInfoSchema,\n feedback: z.array(feedbackRecordSchema),\n});\n\n/** Response containing paginated feedback */\nexport type ListFeedbackResponse = z.infer<typeof listFeedbackResponseSchema>;\n\n// ============================================================================\n// OLAP Query Schemas\n// ============================================================================\n\nexport const getFeedbackAggregateArgsSchema = z\n .object({\n feedbackType: feedbackTypeField,\n feedbackSource: feedbackSourceField.optional(),\n aggregation: aggregationTypeSchema,\n filters: feedbackFilterSchema.optional(),\n comparePeriod: comparePeriodSchema.optional(),\n })\n .describe('Arguments for getting a feedback aggregate over numeric values');\n\nexport type GetFeedbackAggregateArgs = z.infer<typeof getFeedbackAggregateArgsSchema>;\n\nexport const getFeedbackAggregateResponseSchema = z.object(aggregateResponseFields);\n\nexport type GetFeedbackAggregateResponse = z.infer<typeof getFeedbackAggregateResponseSchema>;\n\nexport const getFeedbackBreakdownArgsSchema = z\n .object({\n feedbackType: feedbackTypeField,\n feedbackSource: feedbackSourceField.optional(),\n groupBy: groupBySchema,\n aggregation: aggregationTypeSchema,\n filters: feedbackFilterSchema.optional(),\n })\n .describe('Arguments for getting a feedback breakdown over numeric values');\n\nexport type GetFeedbackBreakdownArgs = z.infer<typeof getFeedbackBreakdownArgsSchema>;\n\nexport const getFeedbackBreakdownResponseSchema = z.object({\n groups: z.array(\n z.object({\n dimensions: dimensionsField,\n value: aggregatedValueField,\n }),\n ),\n});\n\nexport type GetFeedbackBreakdownResponse = z.infer<typeof getFeedbackBreakdownResponseSchema>;\n\nexport const getFeedbackTimeSeriesArgsSchema = z\n .object({\n feedbackType: feedbackTypeField,\n feedbackSource: feedbackSourceField.optional(),\n interval: aggregationIntervalSchema,\n aggregation: aggregationTypeSchema,\n filters: feedbackFilterSchema.optional(),\n groupBy: groupBySchema.optional(),\n })\n .describe('Arguments for getting feedback time series over numeric values');\n\nexport type GetFeedbackTimeSeriesArgs = z.infer<typeof getFeedbackTimeSeriesArgsSchema>;\n\nexport const getFeedbackTimeSeriesResponseSchema = z.object({\n series: z.array(\n z.object({\n name: z.string().describe('Series name (feedback type or group key)'),\n points: z.array(\n z.object({\n timestamp: bucketTimestampField,\n value: aggregatedValueField,\n }),\n ),\n }),\n ),\n});\n\nexport type GetFeedbackTimeSeriesResponse = z.infer<typeof getFeedbackTimeSeriesResponseSchema>;\n\nexport const getFeedbackPercentilesArgsSchema = z\n .object({\n feedbackType: feedbackTypeField,\n feedbackSource: feedbackSourceField.optional(),\n percentiles: percentilesSchema,\n interval: aggregationIntervalSchema,\n filters: feedbackFilterSchema.optional(),\n })\n .describe('Arguments for getting feedback percentiles over numeric values');\n\nexport type GetFeedbackPercentilesArgs = z.infer<typeof getFeedbackPercentilesArgsSchema>;\n\nexport const getFeedbackPercentilesResponseSchema = z.object({\n series: z.array(\n z.object({\n percentile: percentileField,\n points: z.array(\n z.object({\n timestamp: bucketTimestampField,\n value: percentileBucketValueField,\n }),\n ),\n }),\n ),\n});\n\nexport type GetFeedbackPercentilesResponse = z.infer<typeof getFeedbackPercentilesResponseSchema>;\n","import { z } from 'zod/v4';\nimport {\n aggregateResponseFields,\n aggregationIntervalSchema,\n aggregationTypeSchema,\n aggregatedValueField,\n bucketTimestampField,\n comparePeriodSchema,\n commonFilterFields,\n contextFields,\n dimensionsField,\n groupBySchema,\n paginationArgsSchema,\n paginationInfoSchema,\n percentileField,\n percentileBucketValueField,\n percentilesSchema,\n sortDirectionSchema,\n spanIdField,\n traceIdField,\n metadataField,\n} from '../shared';\n\n// ============================================================================\n// Field Schemas\n// ============================================================================\n\n/**\n * @deprecated MetricType is no longer stored. All metrics are raw events\n * with aggregation determined at query time.\n */\nexport const metricTypeSchema = z.enum(['counter', 'gauge', 'histogram']);\n\nconst metricNameField = z.string().describe('Metric name (e.g., mastra_agent_duration_ms)');\nconst metricValueField = z.number().describe('Metric value');\nconst labelsField = z.record(z.string(), z.string()).describe('Metric labels for dimensional filtering');\nconst providerField = z.string().describe('Model provider');\nconst modelField = z.string().describe('Model');\nconst estimatedCostField = z.number().describe('Estimated cost');\nconst costUnitField = z.string().describe('Unit for the estimated cost (e.g., usd)');\nconst costMetadField = z.record(z.string(), z.unknown()).nullish().describe('Structured costing metadata');\n\n// ============================================================================\n// MetricRecord Schema (Storage Format)\n// ============================================================================\n\n/**\n * Schema for metrics as stored in the database.\n * Each record is a single metric observation.\n */\nexport const metricRecordSchema = z\n .object({\n metricId: z.string().nullish().describe('Unique id for this metric event'),\n timestamp: z.date().describe('When the metric was recorded'),\n name: metricNameField,\n value: metricValueField,\n\n // Correlation\n traceId: traceIdField.nullish(),\n spanId: spanIdField.nullish(),\n\n // Context (entity hierarchy, identity, correlation, deployment, experimentation)\n ...contextFields,\n /**\n * @deprecated Use `executionSource` instead.\n */\n source: z.string().nullish().describe('Execution source'),\n\n // Canonical costing fields\n provider: providerField.nullish(),\n model: modelField.nullish(),\n\n // Estimated cost related fields\n estimatedCost: estimatedCostField.nullish(),\n costUnit: costUnitField.nullish(),\n costMetadata: costMetadField.nullish(),\n\n // User-defined labels used for filtering\n labels: labelsField.default({}),\n\n // User-defined metadata\n metadata: metadataField.nullish(),\n })\n .describe('Metric record as stored in the database');\n\n/** Metric record type for storage */\nexport type MetricRecord = z.infer<typeof metricRecordSchema>;\n\n// ============================================================================\n// MetricInput Schema (User-Facing API)\n// ============================================================================\n\n/**\n * Schema for user-provided metric input (minimal required fields).\n * The metrics context enriches this with environment before emitting ExportedMetric.\n */\nexport const metricInputSchema = z\n .object({\n name: metricNameField,\n value: metricValueField,\n labels: labelsField.optional(),\n })\n .describe('User-provided metric input');\n\n/** User-facing metric input type */\nexport type MetricInput = z.infer<typeof metricInputSchema>;\n\n// ============================================================================\n// Create Metric Schemas\n// ============================================================================\n\n/** Schema for creating a metric record (without db timestamps) */\nexport const createMetricRecordSchema = metricRecordSchema;\n\n/** Metric record for creation (excludes db timestamps) */\nexport type CreateMetricRecord = z.infer<typeof createMetricRecordSchema>;\n\n/** Schema for batchCreateMetrics operation arguments */\nexport const batchCreateMetricsArgsSchema = z\n .object({\n metrics: z.array(createMetricRecordSchema),\n })\n .describe('Arguments for batch recording metrics');\n\n/** Arguments for batch recording metrics */\nexport type BatchCreateMetricsArgs = z.infer<typeof batchCreateMetricsArgsSchema>;\n\n// ============================================================================\n// Metric Aggregation Schemas\n// ============================================================================\n\n/** Schema for metric aggregation configuration */\nexport const metricsAggregationSchema = z\n .object({\n type: aggregationTypeSchema,\n interval: aggregationIntervalSchema.optional(),\n groupBy: groupBySchema.optional(),\n })\n .describe('Metrics aggregation configuration');\n\n/** Metrics aggregation configuration type */\nexport type MetricsAggregation = z.infer<typeof metricsAggregationSchema>;\n\n// ============================================================================\n// Metric Filter Schema\n// ============================================================================\n\n/** Schema for filtering metrics in queries */\nexport const metricsFilterSchema = z\n .object({\n ...commonFilterFields,\n\n // Metric identification\n name: z.array(z.string()).nonempty().optional().describe('Filter by metric name(s)'),\n\n /**\n * @deprecated Use `executionSource` instead.\n */\n source: z.string().optional().describe('Filter by execution source'),\n\n // Canonical costing filters\n provider: providerField.optional(),\n model: modelField.optional(),\n costUnit: costUnitField.optional(),\n\n // Label filters (exact match on label values)\n labels: z.record(z.string(), z.string()).optional().describe('Exact match on label key-value pairs'),\n })\n .describe('Filters for querying metrics');\n\n/** Filters for querying metrics */\nexport type MetricsFilter = z.infer<typeof metricsFilterSchema>;\n\n/** Fields available for ordering metric list results */\nexport const metricsOrderByFieldSchema = z.enum(['timestamp']).describe(\"Field to order by: 'timestamp'\");\n\n/** Order by configuration for metric list queries */\nexport const metricsOrderBySchema = z\n .object({\n field: metricsOrderByFieldSchema.default('timestamp').describe('Field to order by'),\n direction: sortDirectionSchema.default('DESC').describe('Sort direction'),\n })\n .describe('Order by configuration');\n\n/** Schema for listMetrics operation arguments */\nexport const listMetricsArgsSchema = z\n .object({\n filters: metricsFilterSchema.optional(),\n pagination: paginationArgsSchema.default({ page: 0, perPage: 10 }).describe('Pagination settings'),\n orderBy: metricsOrderBySchema\n .default({ field: 'timestamp', direction: 'DESC' })\n .describe('Ordering configuration (defaults to timestamp desc)'),\n })\n .describe('Arguments for listing metrics');\n\n/** Arguments for listing metrics */\nexport type ListMetricsArgs = z.input<typeof listMetricsArgsSchema>;\n\n/** Schema for listMetrics operation response */\nexport const listMetricsResponseSchema = z.object({\n pagination: paginationInfoSchema,\n metrics: z.array(metricRecordSchema),\n});\n\n/** Response containing paginated metrics */\nexport type ListMetricsResponse = z.infer<typeof listMetricsResponseSchema>;\n\n// ============================================================================\n// OLAP Query Schemas\n// ============================================================================\n\n// --- getMetricAggregate ---\n\nexport const getMetricAggregateArgsSchema = z\n .object({\n name: z.array(z.string()).nonempty().describe('Metric name(s) to aggregate'),\n aggregation: aggregationTypeSchema,\n filters: metricsFilterSchema.optional(),\n comparePeriod: comparePeriodSchema.optional(),\n })\n .describe('Arguments for getting a metric aggregate');\n\nexport type GetMetricAggregateArgs = z.infer<typeof getMetricAggregateArgsSchema>;\n\nexport const getMetricAggregateResponseSchema = z.object({\n ...aggregateResponseFields,\n estimatedCost: z.number().nullable().optional().describe('Aggregated estimated cost from the same filtered row set'),\n costUnit: z\n .string()\n .nullable()\n .optional()\n .describe('Shared cost unit for the aggregated rows, or null when mixed/unknown'),\n previousEstimatedCost: z\n .number()\n .nullable()\n .optional()\n .describe('Aggregated estimated cost from the comparison period'),\n costChangePercent: z\n .number()\n .nullable()\n .optional()\n .describe('Percentage change in estimated cost from comparison period'),\n});\n\nexport type GetMetricAggregateResponse = z.infer<typeof getMetricAggregateResponseSchema>;\n\n// --- getMetricBreakdown ---\n\nexport const getMetricBreakdownArgsSchema = z\n .object({\n name: z.array(z.string()).nonempty().describe('Metric name(s) to break down'),\n groupBy: groupBySchema,\n aggregation: aggregationTypeSchema,\n filters: metricsFilterSchema.optional(),\n })\n .describe('Arguments for getting a metric breakdown');\n\nexport type GetMetricBreakdownArgs = z.infer<typeof getMetricBreakdownArgsSchema>;\n\nexport const getMetricBreakdownResponseSchema = z.object({\n groups: z.array(\n z.object({\n dimensions: dimensionsField,\n value: aggregatedValueField,\n estimatedCost: z.number().nullable().optional().describe('Summed estimated cost for this group'),\n costUnit: z\n .string()\n .nullable()\n .optional()\n .describe('Shared cost unit for this group, or null when mixed/unknown'),\n }),\n ),\n});\n\nexport type GetMetricBreakdownResponse = z.infer<typeof getMetricBreakdownResponseSchema>;\n\n// --- getMetricTimeSeries ---\n\nexport const getMetricTimeSeriesArgsSchema = z\n .object({\n name: z.array(z.string()).nonempty().describe('Metric name(s)'),\n interval: aggregationIntervalSchema,\n aggregation: aggregationTypeSchema,\n filters: metricsFilterSchema.optional(),\n groupBy: groupBySchema.optional(),\n })\n .describe('Arguments for getting metric time series');\n\nexport type GetMetricTimeSeriesArgs = z.infer<typeof getMetricTimeSeriesArgsSchema>;\n\nexport const getMetricTimeSeriesResponseSchema = z.object({\n series: z.array(\n z.object({\n name: z.string().describe('Series name (metric name or group key)'),\n costUnit: z\n .string()\n .nullable()\n .optional()\n .describe('Shared cost unit for this series, or null when mixed/unknown'),\n points: z.array(\n z.object({\n timestamp: bucketTimestampField,\n value: aggregatedValueField,\n estimatedCost: z.number().nullable().optional().describe('Summed estimated cost in this bucket'),\n }),\n ),\n }),\n ),\n});\n\nexport type GetMetricTimeSeriesResponse = z.infer<typeof getMetricTimeSeriesResponseSchema>;\n\n// --- getMetricPercentiles ---\n\nexport const getMetricPercentilesArgsSchema = z\n .object({\n name: z.string().describe('Metric name'),\n percentiles: percentilesSchema,\n interval: aggregationIntervalSchema,\n filters: metricsFilterSchema.optional(),\n })\n .describe('Arguments for getting metric percentiles');\n\nexport type GetMetricPercentilesArgs = z.infer<typeof getMetricPercentilesArgsSchema>;\n\nexport const getMetricPercentilesResponseSchema = z.object({\n series: z.array(\n z.object({\n percentile: percentileField,\n points: z.array(\n z.object({\n timestamp: bucketTimestampField,\n value: percentileBucketValueField,\n }),\n ),\n }),\n ),\n});\n\nexport type GetMetricPercentilesResponse = z.infer<typeof getMetricPercentilesResponseSchema>;\n","import { z } from 'zod/v4';\nimport { entityTypeField } from '../shared';\n\n// ============================================================================\n// Metric Discovery\n// ============================================================================\n\n// --- getMetricNames ---\n\nexport const getMetricNamesArgsSchema = z\n .object({\n prefix: z.string().optional().describe('Filter metric names by prefix'),\n limit: z.number().int().min(1).optional().describe('Maximum number of names to return'),\n })\n .describe('Arguments for getting metric names');\n\nexport type GetMetricNamesArgs = z.infer<typeof getMetricNamesArgsSchema>;\n\nexport const getMetricNamesResponseSchema = z.object({\n names: z.array(z.string()).describe('Distinct metric names'),\n});\n\nexport type GetMetricNamesResponse = z.infer<typeof getMetricNamesResponseSchema>;\n\n// --- getMetricLabelKeys ---\n\nexport const getMetricLabelKeysArgsSchema = z\n .object({\n metricName: z.string().describe('Metric name to get label keys for'),\n })\n .describe('Arguments for getting metric label keys');\n\nexport type GetMetricLabelKeysArgs = z.infer<typeof getMetricLabelKeysArgsSchema>;\n\nexport const getMetricLabelKeysResponseSchema = z.object({\n keys: z.array(z.string()).describe('Distinct label keys for the metric'),\n});\n\nexport type GetMetricLabelKeysResponse = z.infer<typeof getMetricLabelKeysResponseSchema>;\n\n// --- getMetricLabelValues ---\n\nexport const getMetricLabelValuesArgsSchema = z\n .object({\n metricName: z.string().describe('Metric name'),\n labelKey: z.string().describe('Label key to get values for'),\n prefix: z.string().optional().describe('Filter values by prefix'),\n limit: z.number().int().min(1).optional().describe('Maximum number of values to return'),\n })\n .describe('Arguments for getting label values');\n\nexport type GetMetricLabelValuesArgs = z.infer<typeof getMetricLabelValuesArgsSchema>;\n\nexport const getMetricLabelValuesResponseSchema = z.object({\n values: z.array(z.string()).describe('Distinct label values'),\n});\n\nexport type GetMetricLabelValuesResponse = z.infer<typeof getMetricLabelValuesResponseSchema>;\n\n// ============================================================================\n// Entity & Environment Discovery\n// ============================================================================\n\n// --- getEntityTypes ---\n\nexport const getEntityTypesArgsSchema = z.object({}).describe('Arguments for getting entity types');\n\nexport type GetEntityTypesArgs = z.infer<typeof getEntityTypesArgsSchema>;\n\nexport const getEntityTypesResponseSchema = z.object({\n entityTypes: z.array(entityTypeField).describe('Distinct entity types'),\n});\n\nexport type GetEntityTypesResponse = z.infer<typeof getEntityTypesResponseSchema>;\n\n// --- getEntityNames ---\n\n// TODO(observability): Extend entity-name discovery with query/prefix and limit support.\n// The current UI autocomplete can only refine against a capped result set, which is\n// enough for \"take the top hit\" but not enough for globally-correct shell-style\n// completion. A richer discovery contract should support prefix filtering and bounded\n// result windows, and may also want a root-only mode for root-entity name UX.\nexport const getEntityNamesArgsSchema = z\n .object({\n entityType: entityTypeField.optional().describe('Optional entity type filter'),\n })\n .describe('Arguments for getting entity names');\n\nexport type GetEntityNamesArgs = z.infer<typeof getEntityNamesArgsSchema>;\n\nexport const getEntityNamesResponseSchema = z.object({\n names: z.array(z.string()).describe('Distinct entity names'),\n});\n\nexport type GetEntityNamesResponse = z.infer<typeof getEntityNamesResponseSchema>;\n\n// --- getServiceNames ---\n\nexport const getServiceNamesArgsSchema = z.object({}).describe('Arguments for getting service names');\n\nexport type GetServiceNamesArgs = z.infer<typeof getServiceNamesArgsSchema>;\n\nexport const getServiceNamesResponseSchema = z.object({\n serviceNames: z.array(z.string()).describe('Distinct service names'),\n});\n\nexport type GetServiceNamesResponse = z.infer<typeof getServiceNamesResponseSchema>;\n\n// --- getEnvironments ---\n\nexport const getEnvironmentsArgsSchema = z.object({}).describe('Arguments for getting environments');\n\nexport type GetEnvironmentsArgs = z.infer<typeof getEnvironmentsArgsSchema>;\n\nexport const getEnvironmentsResponseSchema = z.object({\n environments: z.array(z.string()).describe('Distinct environments'),\n});\n\nexport type GetEnvironmentsResponse = z.infer<typeof getEnvironmentsResponseSchema>;\n\n// --- getTags ---\n\nexport const getTagsArgsSchema = z\n .object({\n entityType: entityTypeField.optional().describe('Optional entity type filter'),\n })\n .describe('Arguments for getting tags');\n\nexport type GetTagsArgs = z.infer<typeof getTagsArgsSchema>;\n\nexport const getTagsResponseSchema = z.object({\n tags: z.array(z.string()).describe('Distinct tags'),\n});\n\nexport type GetTagsResponse = z.infer<typeof getTagsResponseSchema>;\n","import {\n // Logs\n logsFilterSchema,\n logsOrderBySchema,\n listLogsResponseSchema,\n // Scores (observability)\n scoresFilterSchema,\n scoresOrderBySchema,\n listScoresResponseSchema as obsListScoresResponseSchema,\n createScoreBodySchema,\n createScoreResponseSchema,\n getScoreAggregateArgsSchema,\n getScoreAggregateResponseSchema,\n getScoreBreakdownArgsSchema,\n getScoreBreakdownResponseSchema,\n getScoreTimeSeriesArgsSchema,\n getScoreTimeSeriesResponseSchema,\n getScorePercentilesArgsSchema,\n getScorePercentilesResponseSchema,\n // Feedback\n feedbackFilterSchema,\n feedbackOrderBySchema,\n listFeedbackResponseSchema,\n createFeedbackBodySchema,\n createFeedbackResponseSchema,\n getFeedbackAggregateArgsSchema,\n getFeedbackAggregateResponseSchema,\n getFeedbackBreakdownArgsSchema,\n getFeedbackBreakdownResponseSchema,\n getFeedbackTimeSeriesArgsSchema,\n getFeedbackTimeSeriesResponseSchema,\n getFeedbackPercentilesArgsSchema,\n getFeedbackPercentilesResponseSchema,\n // Metrics OLAP\n getMetricAggregateArgsSchema,\n getMetricAggregateResponseSchema,\n getMetricBreakdownArgsSchema,\n getMetricBreakdownResponseSchema,\n getMetricTimeSeriesArgsSchema,\n getMetricTimeSeriesResponseSchema,\n getMetricPercentilesArgsSchema,\n getMetricPercentilesResponseSchema,\n // Discovery\n getMetricNamesArgsSchema,\n getMetricNamesResponseSchema,\n getMetricLabelKeysArgsSchema,\n getMetricLabelKeysResponseSchema,\n getMetricLabelValuesArgsSchema,\n getMetricLabelValuesResponseSchema,\n getEntityTypesResponseSchema,\n getEntityNamesArgsSchema,\n getEntityNamesResponseSchema,\n getServiceNamesResponseSchema,\n getEnvironmentsResponseSchema,\n getTagsArgsSchema,\n getTagsResponseSchema,\n paginationArgsSchema,\n} from '@internal/core/storage';\nimport { coreFeatures } from '@mastra/core/features';\nimport { generateSignalId } from '@mastra/core/observability';\nimport type { z } from 'zod/v4';\nimport { HTTPException } from '../http-exception';\nimport type { InferParams, ServerContext, ServerRouteHandler } from '../server-adapter/routes';\nimport { createRoute, pickParams, wrapSchemaForQueryParams } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\nimport { getObservabilityStore, NEW_ROUTE_DEFS } from './observability-shared';\nimport type { RouteDetails } from './observability-shared';\n\nfunction createNewRoute<\n TPathSchema extends z.ZodTypeAny | undefined = undefined,\n TQuerySchema extends z.ZodTypeAny | undefined = undefined,\n TBodySchema extends z.ZodTypeAny | undefined = undefined,\n TResponseSchema extends z.ZodTypeAny | undefined = undefined,\n>(\n def: RouteDetails,\n config: {\n pathParamSchema?: TPathSchema;\n queryParamSchema?: TQuerySchema;\n bodySchema?: TBodySchema;\n responseSchema?: TResponseSchema;\n handler: ServerRouteHandler<InferParams<TPathSchema, TQuerySchema, TBodySchema>>;\n },\n) {\n const { handler, ...schemas } = config;\n return createRoute({\n ...def,\n ...schemas,\n responseType: 'json' as const,\n tags: ['Observability'],\n requiresAuth: true,\n handler: (async (params: InferParams<TPathSchema, TQuerySchema, TBodySchema> & ServerContext) => {\n if (!coreFeatures.has('observability:v1.13.2')) {\n throw new HTTPException(501, {\n message: 'New observability endpoints require @mastra/core >= 1.13.2, please upgrade.',\n });\n }\n\n try {\n return await handler(params);\n } catch (error) {\n return handleError(error, `Error calling: '${def.summary.toLocaleLowerCase()}'`);\n }\n }) as ServerRouteHandler<\n InferParams<TPathSchema, TQuerySchema, TBodySchema>,\n TResponseSchema extends z.ZodTypeAny ? z.infer<TResponseSchema> : unknown,\n 'json'\n >,\n });\n}\n\n// ============================================================================\n// Log Routes\n// ============================================================================\n\nexport const LIST_LOGS = createNewRoute(NEW_ROUTE_DEFS.LIST_LOGS, {\n queryParamSchema: wrapSchemaForQueryParams(\n logsFilterSchema.extend(paginationArgsSchema.shape).extend(logsOrderBySchema.shape).partial(),\n ),\n responseSchema: listLogsResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const filters = pickParams(logsFilterSchema, params);\n const pagination = pickParams(paginationArgsSchema, params);\n const orderBy = pickParams(logsOrderBySchema, params);\n\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.listLogs({ filters, pagination, orderBy });\n },\n});\n\n// ============================================================================\n// Score Routes\n// ============================================================================\n\nexport const LIST_SCORES = createNewRoute(NEW_ROUTE_DEFS.LIST_SCORES, {\n queryParamSchema: wrapSchemaForQueryParams(\n scoresFilterSchema.extend(paginationArgsSchema.shape).extend(scoresOrderBySchema.shape).partial(),\n ),\n responseSchema: obsListScoresResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const filters = pickParams(scoresFilterSchema, params);\n const pagination = pickParams(paginationArgsSchema, params);\n const orderBy = pickParams(scoresOrderBySchema, params);\n\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.listScores({ filters, pagination, orderBy });\n },\n});\n\nexport const CREATE_SCORE = createNewRoute(NEW_ROUTE_DEFS.CREATE_SCORE, {\n bodySchema: createScoreBodySchema,\n responseSchema: createScoreResponseSchema,\n handler: async ({ mastra, score }) => {\n const observabilityStore = await getObservabilityStore(mastra);\n await observabilityStore.createScore({\n score: { ...score, scoreId: score.scoreId ?? generateSignalId(), timestamp: new Date() },\n });\n return { success: true };\n },\n});\n\nexport const GET_SCORE_AGGREGATE = createNewRoute(NEW_ROUTE_DEFS.GET_SCORE_AGGREGATE, {\n bodySchema: getScoreAggregateArgsSchema,\n responseSchema: getScoreAggregateResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const args = pickParams(getScoreAggregateArgsSchema, params);\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getScoreAggregate(args);\n },\n});\n\nexport const GET_SCORE_BREAKDOWN = createNewRoute(NEW_ROUTE_DEFS.GET_SCORE_BREAKDOWN, {\n bodySchema: getScoreBreakdownArgsSchema,\n responseSchema: getScoreBreakdownResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const args = pickParams(getScoreBreakdownArgsSchema, params);\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getScoreBreakdown(args);\n },\n});\n\nexport const GET_SCORE_TIME_SERIES = createNewRoute(NEW_ROUTE_DEFS.GET_SCORE_TIME_SERIES, {\n bodySchema: getScoreTimeSeriesArgsSchema,\n responseSchema: getScoreTimeSeriesResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const args = pickParams(getScoreTimeSeriesArgsSchema, params);\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getScoreTimeSeries(args);\n },\n});\n\nexport const GET_SCORE_PERCENTILES = createNewRoute(NEW_ROUTE_DEFS.GET_SCORE_PERCENTILES, {\n bodySchema: getScorePercentilesArgsSchema,\n responseSchema: getScorePercentilesResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const args = pickParams(getScorePercentilesArgsSchema, params);\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getScorePercentiles(args);\n },\n});\n\n// ============================================================================\n// Feedback Routes\n// ============================================================================\n\nexport const LIST_FEEDBACK = createNewRoute(NEW_ROUTE_DEFS.LIST_FEEDBACK, {\n queryParamSchema: wrapSchemaForQueryParams(\n feedbackFilterSchema.extend(paginationArgsSchema.shape).extend(feedbackOrderBySchema.shape).partial(),\n ),\n responseSchema: listFeedbackResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const filters = pickParams(feedbackFilterSchema, params);\n const pagination = pickParams(paginationArgsSchema, params);\n const orderBy = pickParams(feedbackOrderBySchema, params);\n\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.listFeedback({ filters, pagination, orderBy });\n },\n});\n\nexport const CREATE_FEEDBACK = createNewRoute(NEW_ROUTE_DEFS.CREATE_FEEDBACK, {\n bodySchema: createFeedbackBodySchema,\n responseSchema: createFeedbackResponseSchema,\n handler: async ({ mastra, feedback }) => {\n const observabilityStore = await getObservabilityStore(mastra);\n await observabilityStore.createFeedback({\n feedback: { ...feedback, feedbackId: feedback.feedbackId ?? generateSignalId(), timestamp: new Date() },\n });\n return { success: true };\n },\n});\n\nexport const GET_FEEDBACK_AGGREGATE = createNewRoute(NEW_ROUTE_DEFS.GET_FEEDBACK_AGGREGATE, {\n bodySchema: getFeedbackAggregateArgsSchema,\n responseSchema: getFeedbackAggregateResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const args = pickParams(getFeedbackAggregateArgsSchema, params);\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getFeedbackAggregate(args);\n },\n});\n\nexport const GET_FEEDBACK_BREAKDOWN = createNewRoute(NEW_ROUTE_DEFS.GET_FEEDBACK_BREAKDOWN, {\n bodySchema: getFeedbackBreakdownArgsSchema,\n responseSchema: getFeedbackBreakdownResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const args = pickParams(getFeedbackBreakdownArgsSchema, params);\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getFeedbackBreakdown(args);\n },\n});\n\nexport const GET_FEEDBACK_TIME_SERIES = createNewRoute(NEW_ROUTE_DEFS.GET_FEEDBACK_TIME_SERIES, {\n bodySchema: getFeedbackTimeSeriesArgsSchema,\n responseSchema: getFeedbackTimeSeriesResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const args = pickParams(getFeedbackTimeSeriesArgsSchema, params);\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getFeedbackTimeSeries(args);\n },\n});\n\nexport const GET_FEEDBACK_PERCENTILES = createNewRoute(NEW_ROUTE_DEFS.GET_FEEDBACK_PERCENTILES, {\n bodySchema: getFeedbackPercentilesArgsSchema,\n responseSchema: getFeedbackPercentilesResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const args = pickParams(getFeedbackPercentilesArgsSchema, params);\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getFeedbackPercentiles(args);\n },\n});\n\n// ============================================================================\n// Metrics Routes\n// ============================================================================\n\nexport const GET_METRIC_AGGREGATE = createNewRoute(NEW_ROUTE_DEFS.GET_METRIC_AGGREGATE, {\n bodySchema: getMetricAggregateArgsSchema,\n responseSchema: getMetricAggregateResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const args = pickParams(getMetricAggregateArgsSchema, params);\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getMetricAggregate(args);\n },\n});\n\nexport const GET_METRIC_BREAKDOWN = createNewRoute(NEW_ROUTE_DEFS.GET_METRIC_BREAKDOWN, {\n bodySchema: getMetricBreakdownArgsSchema,\n responseSchema: getMetricBreakdownResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const args = pickParams(getMetricBreakdownArgsSchema, params);\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getMetricBreakdown(args);\n },\n});\n\nexport const GET_METRIC_TIME_SERIES = createNewRoute(NEW_ROUTE_DEFS.GET_METRIC_TIME_SERIES, {\n bodySchema: getMetricTimeSeriesArgsSchema,\n responseSchema: getMetricTimeSeriesResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const args = pickParams(getMetricTimeSeriesArgsSchema, params);\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getMetricTimeSeries(args);\n },\n});\n\nexport const GET_METRIC_PERCENTILES = createNewRoute(NEW_ROUTE_DEFS.GET_METRIC_PERCENTILES, {\n bodySchema: getMetricPercentilesArgsSchema,\n responseSchema: getMetricPercentilesResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const args = pickParams(getMetricPercentilesArgsSchema, params);\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getMetricPercentiles(args);\n },\n});\n\n// ============================================================================\n// Discovery Routes\n// ============================================================================\n\nexport const GET_METRIC_NAMES = createNewRoute(NEW_ROUTE_DEFS.GET_METRIC_NAMES, {\n queryParamSchema: wrapSchemaForQueryParams(getMetricNamesArgsSchema.partial()),\n responseSchema: getMetricNamesResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const args = getMetricNamesArgsSchema.parse(pickParams(getMetricNamesArgsSchema, params));\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getMetricNames(args);\n },\n});\n\nexport const GET_METRIC_LABEL_KEYS = createNewRoute(NEW_ROUTE_DEFS.GET_METRIC_LABEL_KEYS, {\n queryParamSchema: wrapSchemaForQueryParams(getMetricLabelKeysArgsSchema),\n responseSchema: getMetricLabelKeysResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const args = getMetricLabelKeysArgsSchema.parse(pickParams(getMetricLabelKeysArgsSchema, params));\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getMetricLabelKeys(args);\n },\n});\n\nexport const GET_METRIC_LABEL_VALUES = createNewRoute(NEW_ROUTE_DEFS.GET_METRIC_LABEL_VALUES, {\n queryParamSchema: wrapSchemaForQueryParams(getMetricLabelValuesArgsSchema),\n responseSchema: getMetricLabelValuesResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const args = getMetricLabelValuesArgsSchema.parse(pickParams(getMetricLabelValuesArgsSchema, params));\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getMetricLabelValues(args);\n },\n});\n\nexport const GET_ENTITY_TYPES = createNewRoute(NEW_ROUTE_DEFS.GET_ENTITY_TYPES, {\n responseSchema: getEntityTypesResponseSchema,\n handler: async ({ mastra }) => {\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getEntityTypes({});\n },\n});\n\nexport const GET_ENTITY_NAMES = createNewRoute(NEW_ROUTE_DEFS.GET_ENTITY_NAMES, {\n queryParamSchema: wrapSchemaForQueryParams(getEntityNamesArgsSchema.partial()),\n responseSchema: getEntityNamesResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const args = getEntityNamesArgsSchema.parse(pickParams(getEntityNamesArgsSchema, params));\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getEntityNames(args);\n },\n});\n\nexport const GET_SERVICE_NAMES = createNewRoute(NEW_ROUTE_DEFS.GET_SERVICE_NAMES, {\n responseSchema: getServiceNamesResponseSchema,\n handler: async ({ mastra }) => {\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getServiceNames({});\n },\n});\n\nexport const GET_ENVIRONMENTS = createNewRoute(NEW_ROUTE_DEFS.GET_ENVIRONMENTS, {\n responseSchema: getEnvironmentsResponseSchema,\n handler: async ({ mastra }) => {\n const observabilityStore = await getObservabilityStore(mastra);\n return await observabilityStore.getEnvironments({});\n },\n});\n\nexport const GET_TAGS = createNewRoute(NEW_ROUTE_DEFS.GET_TAGS, {\n queryParamSchema: wrapSchemaForQueryParams(getTagsArgsSchema.partial()),\n responseSchema: getTagsResponseSchema,\n handler: async ({ mastra, ...params }) => {\n const args = getTagsArgsSchema.parse(pickParams(getTagsArgsSchema, params));\n const observabilityStore = await getObservabilityStore(mastra);\n try {\n return await observabilityStore.getTags(args);\n } catch (error) {\n // Some storage providers (e.g. LibSQL) don't support tag discovery\n if (error instanceof Error && error.message.includes('does not support tag discovery')) {\n return { tags: [] };\n }\n throw error;\n }\n },\n});\n\nexport const NEW_ROUTES = {\n LIST_LOGS,\n LIST_SCORES,\n CREATE_SCORE,\n GET_SCORE_AGGREGATE,\n GET_SCORE_BREAKDOWN,\n GET_SCORE_TIME_SERIES,\n GET_SCORE_PERCENTILES,\n LIST_FEEDBACK,\n CREATE_FEEDBACK,\n GET_FEEDBACK_AGGREGATE,\n GET_FEEDBACK_BREAKDOWN,\n GET_FEEDBACK_TIME_SERIES,\n GET_FEEDBACK_PERCENTILES,\n GET_METRIC_AGGREGATE,\n GET_METRIC_BREAKDOWN,\n GET_METRIC_TIME_SERIES,\n GET_METRIC_PERCENTILES,\n GET_METRIC_NAMES,\n GET_METRIC_LABEL_KEYS,\n GET_METRIC_LABEL_VALUES,\n GET_ENTITY_TYPES,\n GET_ENTITY_NAMES,\n GET_SERVICE_NAMES,\n GET_ENVIRONMENTS,\n GET_TAGS,\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/handlers/memory.ts"],"names":["record","result"],"mappings":"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","file":"chunk-JQUNK754.js","sourcesContent":["import type { Agent, MastraDBMessage } from '@mastra/core/agent';\nimport type { RequestContext } from '@mastra/core/di';\nimport type { MastraMemory } from '@mastra/core/memory';\nimport type { MastraStorage, MemoryStorage } from '@mastra/core/storage';\nimport { generateEmptyFromSchema } from '@mastra/core/utils';\nimport { HTTPException } from '../http-exception';\nimport {\n threadIdPathParams,\n agentIdQuerySchema,\n getMemoryStatusQuerySchema,\n getMemoryConfigQuerySchema,\n listThreadsQuerySchema,\n getThreadByIdQuerySchema,\n listMessagesQuerySchema,\n getWorkingMemoryQuerySchema,\n deleteThreadQuerySchema,\n deleteMessagesQuerySchema,\n getMemoryStatusNetworkQuerySchema,\n listThreadsNetworkQuerySchema,\n getThreadByIdNetworkQuerySchema,\n listMessagesNetworkQuerySchema,\n saveMessagesNetworkQuerySchema,\n createThreadNetworkQuerySchema,\n updateThreadNetworkQuerySchema,\n deleteThreadNetworkQuerySchema,\n deleteMessagesNetworkQuerySchema,\n memoryStatusResponseSchema,\n memoryConfigResponseSchema,\n listThreadsResponseSchema,\n getThreadByIdResponseSchema,\n listMessagesResponseSchema,\n getWorkingMemoryResponseSchema,\n saveMessagesBodySchema,\n createThreadBodySchema,\n updateThreadBodySchema,\n updateWorkingMemoryBodySchema,\n deleteMessagesBodySchema,\n searchMemoryQuerySchema,\n saveMessagesResponseSchema,\n updateWorkingMemoryResponseSchema,\n searchMemoryResponseSchema,\n deleteThreadResponseSchema,\n deleteMessagesResponseSchema,\n cloneThreadBodySchema,\n cloneThreadResponseSchema,\n getObservationalMemoryQuerySchema,\n getObservationalMemoryResponseSchema,\n awaitBufferStatusBodySchema,\n awaitBufferStatusResponseSchema,\n} from '../schemas/memory';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\n\nimport { handleError } from './error';\nimport {\n getGatewayClient,\n isGatewayAgentAsync,\n toLocalThread,\n toLocalMessage,\n toLocalOMRecord,\n} from './gateway-memory-client';\nimport { validateBody, getEffectiveResourceId, getEffectiveThreadId, validateThreadOwnership } from './utils';\n\ninterface MemoryContext extends Context {\n agentId?: string;\n resourceId?: string;\n threadId?: string;\n requestContext?: RequestContext;\n}\n\ninterface SearchResult {\n id: string;\n role: string;\n content: string;\n createdAt: Date;\n threadId?: string;\n threadTitle?: string;\n score?: number;\n context?: {\n before?: SearchResult[];\n after?: SearchResult[];\n };\n}\n\nexport function getTextContent(message: MastraDBMessage): string {\n if (typeof message.content === 'string') {\n return message.content;\n }\n if (message.content && typeof message.content === 'object' && 'parts' in message.content) {\n const textPart = message.content.parts.find(p => p.type === 'text');\n return textPart?.text || '';\n }\n return '';\n}\n\nasync function getMemoryFromContext({\n mastra,\n agentId,\n requestContext,\n allowMissingAgent = false,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'requestContext'> & {\n allowMissingAgent?: boolean;\n}): Promise<MastraMemory | null | undefined> {\n const logger = mastra.getLogger();\n let agent;\n if (agentId) {\n try {\n agent = mastra.getAgentById(agentId);\n } catch (error) {\n logger.debug('Error getting agent from mastra, searching agents for agent', error);\n }\n }\n if (agentId && !agent) {\n logger.debug('Agent not found in registered agents, trying stored agents', { agentId });\n try {\n const storedAgent = (await mastra.getEditor()?.agent.getById(agentId)) ?? null;\n if (storedAgent) {\n agent = storedAgent;\n }\n } catch (error) {\n logger.debug('Error getting stored agent', error);\n }\n }\n\n if (agentId && !agent) {\n logger.debug('Stored agent not found, searching sub-agents', { agentId });\n const agents = mastra.listAgents();\n if (Object.keys(agents || {}).length) {\n for (const [_, ag] of Object.entries(agents)) {\n try {\n const subAgents = await ag.listAgents({ requestContext });\n\n if (subAgents[agentId]) {\n agent = subAgents[agentId];\n break;\n }\n } catch (error) {\n logger.debug('Error getting agent from agent', error);\n }\n }\n }\n\n if (!agent) {\n if (allowMissingAgent) {\n logger.debug('Agent not found in any resolution tier, returning null for storage fallback', { agentId });\n return null;\n }\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n }\n\n if (agent) {\n return await agent?.getMemory({\n requestContext,\n });\n }\n}\n\n/**\n * Gets the storage from context, used as a fallback when agent memory can't be resolved.\n * This covers both cases where no agentId is provided and where the agentId refers to\n * a stored agent whose memory instance can't be hydrated (e.g. no editor configured).\n */\nfunction getStorageFromContext({ mastra }: Pick<MemoryContext, 'mastra'>): MastraStorage | undefined {\n return mastra.getStorage();\n}\n\n/**\n * Gets the agent from context for OM processor detection.\n */\nasync function getAgentFromContext({\n mastra,\n agentId,\n requestContext,\n}: Pick<MemoryContext, 'mastra' | 'agentId' | 'requestContext'>): Promise<Agent | null> {\n if (!agentId) return null;\n\n const logger = mastra.getLogger();\n let agent: Agent | null = null;\n\n // First try registered agents\n try {\n agent = mastra.getAgentById(agentId);\n } catch (error) {\n logger.debug('Error getting agent from mastra', error);\n }\n\n // Then try stored agents\n if (!agent) {\n logger.debug('Agent not found in registered agents, trying stored agents', { agentId });\n try {\n const storedAgent = (await mastra.getEditor()?.agent.getById(agentId)) ?? null;\n if (storedAgent) {\n agent = storedAgent;\n }\n } catch (error) {\n logger.debug('Error getting stored agent', error);\n }\n }\n\n // Finally search sub-agents with requestContext\n if (!agent) {\n logger.debug('Stored agent not found, searching sub-agents', { agentId });\n const agents = mastra.listAgents();\n if (Object.keys(agents || {}).length) {\n for (const [_, ag] of Object.entries(agents)) {\n try {\n const nestedAgents = await ag.listAgents({ requestContext });\n if (nestedAgents[agentId]) {\n agent = nestedAgents[agentId];\n break;\n }\n } catch (error) {\n logger.debug('Error getting agent from agent', error);\n }\n }\n }\n }\n\n return agent;\n}\n\n/**\n * Gets Observational Memory configuration from an agent's processors.\n * Returns null if OM is not enabled.\n */\nasync function getOMConfigFromAgent(\n agent: Agent,\n requestContext?: RequestContext,\n): Promise<{\n enabled: boolean;\n scope?: 'thread' | 'resource';\n shareTokenBudget?: boolean;\n messageTokens?: number | { min: number; max: number };\n observationTokens?: number | { min: number; max: number };\n observationModel?: string;\n reflectionModel?: string;\n observationModelRouting?: Array<{ upTo: number; model: string }>;\n reflectionModelRouting?: Array<{ upTo: number; model: string }>;\n} | null> {\n try {\n // Guard against older @mastra/core versions that don't have resolveProcessorById\n if (typeof agent.resolveProcessorById !== 'function') {\n return null;\n }\n const omProcessor = await agent.resolveProcessorById('observational-memory', requestContext);\n if (!omProcessor) {\n return null;\n }\n\n // Use getResolvedConfig if available (properly resolves model names)\n // Fall back to .config for backwards compatibility\n const hasResolvedConfig = typeof (omProcessor as any).getResolvedConfig === 'function';\n\n if (hasResolvedConfig) {\n const resolvedConfig = await (omProcessor as any).getResolvedConfig(requestContext);\n return {\n enabled: true,\n scope: resolvedConfig.scope || 'resource',\n shareTokenBudget: resolvedConfig.shareTokenBudget,\n messageTokens: resolvedConfig.observation?.messageTokens,\n observationTokens: resolvedConfig.reflection?.observationTokens,\n observationModel: resolvedConfig.observation?.model,\n reflectionModel: resolvedConfig.reflection?.model,\n observationModelRouting: resolvedConfig.observation?.routing,\n reflectionModelRouting: resolvedConfig.reflection?.routing,\n };\n }\n\n // Fallback for older processor versions\n const processorConfig = (omProcessor as any).config || {};\n return {\n enabled: true,\n scope: processorConfig.scope || 'resource',\n shareTokenBudget: processorConfig.shareTokenBudget,\n messageTokens: processorConfig.observation?.messageTokens,\n observationTokens: processorConfig.reflection?.observationTokens,\n observationModel: undefined,\n reflectionModel: undefined,\n observationModelRouting: undefined,\n reflectionModelRouting: undefined,\n };\n } catch {\n return null;\n }\n}\n\n/**\n * Gets Observational Memory status for a specific resource/thread.\n */\nasync function getOMStatus(\n memoryStorage: MemoryStorage,\n resourceId: string,\n threadId?: string,\n): Promise<{\n hasRecord: boolean;\n originType?: string;\n lastObservedAt?: Date | null;\n tokenCount?: number;\n observationTokenCount?: number;\n isObserving?: boolean;\n isReflecting?: boolean;\n} | null> {\n try {\n const record = await memoryStorage.getObservationalMemory(threadId ?? null, resourceId);\n if (!record) {\n return { hasRecord: false };\n }\n\n return {\n hasRecord: true,\n originType: record.originType,\n lastObservedAt: record.lastObservedAt ?? null,\n tokenCount: record.totalTokensObserved,\n observationTokenCount: record.observationTokenCount,\n isObserving: record.isObserving,\n isReflecting: record.isReflecting,\n };\n } catch {\n return null;\n }\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const GET_MEMORY_STATUS_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/status',\n responseType: 'json',\n queryParamSchema: getMemoryStatusQuerySchema,\n responseSchema: memoryStatusResponseSchema,\n summary: 'Get memory status',\n description: 'Returns the current status of the memory system including configuration and health information',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, resourceId, threadId, requestContext }) => {\n try {\n // Check if this is a gateway agent first\n const agent = await getAgentFromContext({ mastra, agentId, requestContext });\n const isGateway = agent ? await isGatewayAgentAsync(agent) : false;\n if (agent && isGateway) {\n const gwClient = getGatewayClient();\n if (gwClient) {\n // Gateway memory is available — check for OM status via gateway\n let omStatus:\n | {\n enabled: boolean;\n hasRecord?: boolean;\n originType?: string;\n lastObservedAt?: Date;\n tokenCount?: number;\n observationTokenCount?: number;\n isObserving?: boolean;\n isReflecting?: boolean;\n }\n | undefined;\n\n if (resourceId && threadId) {\n try {\n const { record } = await gwClient.getObservationRecord(threadId, resourceId);\n if (record) {\n omStatus = {\n enabled: true,\n hasRecord: true,\n originType: record.originType,\n lastObservedAt: record.lastObservedAt ? new Date(record.lastObservedAt) : undefined,\n tokenCount: record.totalTokensObserved,\n observationTokenCount: record.observationTokenCount,\n isObserving: record.isObserving,\n isReflecting: record.isReflecting,\n };\n } else {\n omStatus = { enabled: true, hasRecord: false };\n }\n } catch {\n omStatus = { enabled: true };\n }\n } else {\n omStatus = { enabled: true };\n }\n\n return { result: true, memoryType: 'gateway' as const, observationalMemory: omStatus };\n }\n }\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext, allowMissingAgent: true });\n\n if (memory) {\n // Check for Observational Memory\n let omStatus:\n | {\n enabled: boolean;\n hasRecord?: boolean;\n originType?: string;\n lastObservedAt?: Date;\n tokenCount?: number;\n observationTokenCount?: number;\n isObserving?: boolean;\n isReflecting?: boolean;\n }\n | undefined;\n\n if (agent) {\n const omConfig = await getOMConfigFromAgent(agent, requestContext);\n if (omConfig?.enabled && resourceId) {\n // For resource-scoped OM, lookup by resourceId only (threadId=null)\n const omThreadId = omConfig.scope === 'resource' ? undefined : threadId;\n // Get OM status from the agent's memory storage (not mastra.getStorage())\n try {\n const memoryStore = await memory.storage.getStore('memory');\n if (memoryStore) {\n const status = await getOMStatus(memoryStore, resourceId, omThreadId);\n if (status) {\n omStatus = {\n enabled: true,\n ...status,\n // Convert null to undefined for schema compatibility\n lastObservedAt: status.lastObservedAt ?? undefined,\n };\n } else {\n omStatus = { enabled: true, hasRecord: false };\n }\n }\n } catch {\n // Storage not configured, just mark as enabled\n omStatus = { enabled: true };\n }\n } else if (omConfig?.enabled) {\n omStatus = { enabled: true };\n }\n }\n\n return { result: true, memoryType: 'local' as const, observationalMemory: omStatus };\n }\n\n // Fallback to storage (covers stored agents whose memory can't be resolved)\n const storage = getStorageFromContext({ mastra });\n if (storage) {\n return { result: true };\n }\n\n return { result: false };\n } catch (error) {\n return handleError(error, 'Error getting memory status');\n }\n },\n});\n\nexport const GET_MEMORY_CONFIG_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/config',\n responseType: 'json',\n queryParamSchema: getMemoryConfigQuerySchema,\n responseSchema: memoryConfigResponseSchema,\n summary: 'Get memory configuration',\n description: 'Returns the memory configuration for a specific agent or the system default',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, requestContext }) => {\n try {\n // For gateway agents, return config with default OM thresholds\n // These match @mastra/memory's OBSERVATIONAL_MEMORY_DEFAULTS\n const agent = await getAgentFromContext({ mastra, agentId, requestContext });\n if (agent && (await isGatewayAgentAsync(agent)) && getGatewayClient()) {\n return {\n memoryType: 'gateway' as const,\n config: {\n observationalMemory: {\n enabled: true,\n scope: 'thread' as const,\n messageTokens: 30_000,\n observationTokens: 40_000,\n },\n },\n };\n }\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext, allowMissingAgent: true });\n\n if (!memory) {\n // Return null config when memory is not configured (Issue #11765)\n // This allows the playground UI to gracefully handle agents without memory\n return { config: null };\n }\n\n // Get the merged configuration (defaults + custom)\n const config = memory.getMergedThreadConfig({});\n\n // Check for Observational Memory config\n let omConfig:\n | {\n enabled: boolean;\n scope?: 'thread' | 'resource';\n messageTokens?: number | { min: number; max: number };\n observationTokens?: number | { min: number; max: number };\n observationModel?: string;\n reflectionModel?: string;\n }\n | undefined;\n\n if (agent) {\n omConfig = (await getOMConfigFromAgent(agent, requestContext)) ?? { enabled: false };\n }\n\n return {\n config: {\n ...config,\n observationalMemory: omConfig,\n },\n };\n } catch (error) {\n return handleError(error, 'Error getting memory configuration');\n }\n },\n});\n\nexport const GET_OBSERVATIONAL_MEMORY_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/observational-memory',\n responseType: 'json',\n queryParamSchema: getObservationalMemoryQuerySchema,\n responseSchema: getObservationalMemoryResponseSchema,\n summary: 'Get observational memory data',\n description: 'Returns the current observational memory record and optional history for a resource/thread',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, resourceId, threadId, from, to, offset, limit, requestContext }) => {\n try {\n // Verify agent has OM enabled\n const agent = await getAgentFromContext({ mastra, agentId, requestContext });\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const historyLimit = limit ?? 5;\n const historyOptions = { from, to, offset };\n\n // Gateway OM: proxy to gateway API\n if (await isGatewayAgentAsync(agent)) {\n const gwClient = getGatewayClient();\n if (gwClient && resourceId && threadId) {\n const [recordResult, historyResult] = await Promise.all([\n gwClient.getObservationRecord(threadId, resourceId),\n gwClient.getObservationHistory(threadId, { resourceId, limit: historyLimit, from, to, offset }),\n ]);\n return {\n record: recordResult.record ? toLocalOMRecord(recordResult.record) : null,\n history: historyResult.records?.length > 0 ? historyResult.records.map(toLocalOMRecord) : undefined,\n };\n }\n // No threadId or resourceId yet (e.g. /chat/new) — return empty\n return { record: null, history: undefined };\n }\n\n const omConfig = await getOMConfigFromAgent(agent, requestContext);\n if (!omConfig?.enabled) {\n throw new HTTPException(400, { message: 'Observational Memory is not enabled for this agent' });\n }\n\n // Get storage from the agent's memory (not mastra.getStorage())\n // This ensures we use the same storage the agent uses for OM\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not configured for this agent' });\n }\n\n let memoryStore: MemoryStorage | undefined;\n try {\n memoryStore = await memory.storage.getStore('memory');\n } catch {\n throw new HTTPException(400, { message: 'Memory storage is not initialized' });\n }\n if (!memoryStore) {\n throw new HTTPException(400, { message: 'Memory storage is not initialized' });\n }\n\n // Determine the resourceId to use\n const effectiveResourceId = resourceId;\n if (!effectiveResourceId) {\n throw new HTTPException(400, { message: 'resourceId is required for observational memory lookup' });\n }\n\n // For resource-scoped OM, lookup by resourceId only (threadId=null)\n const omThreadId = omConfig.scope === 'resource' ? null : (threadId ?? null);\n\n // Get current record\n const record = await memoryStore.getObservationalMemory(omThreadId, effectiveResourceId);\n\n // Get history\n const history = await memoryStore.getObservationalMemoryHistory(\n omThreadId,\n effectiveResourceId,\n historyLimit,\n historyOptions,\n );\n\n return {\n record: record ?? null,\n history: history.length > 0 ? history : undefined,\n };\n } catch (error) {\n return handleError(error, 'Error getting observational memory');\n }\n },\n});\n\nexport const AWAIT_BUFFER_STATUS_ROUTE = createRoute({\n method: 'POST',\n path: '/memory/observational-memory/buffer-status',\n responseType: 'json',\n bodySchema: awaitBufferStatusBodySchema,\n responseSchema: awaitBufferStatusResponseSchema,\n summary: 'Await observational memory buffering completion',\n description:\n 'Blocks until any in-flight buffering operations complete for the given thread/resource, then returns the updated record',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, resourceId, threadId, requestContext }: MemoryContext) => {\n try {\n const agent = await getAgentFromContext({ mastra, agentId, requestContext });\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n // Gateway proxy: poll the gateway OM record until buffering flags clear\n if (await isGatewayAgentAsync(agent)) {\n const gwClient = getGatewayClient();\n if (gwClient && resourceId && threadId) {\n const maxWaitMs = 30_000;\n const pollIntervalMs = 1_000;\n const deadline = Date.now() + maxWaitMs;\n\n let record: ReturnType<typeof toLocalOMRecord> | null = null;\n while (Date.now() < deadline) {\n const result = await gwClient.getObservationRecord(threadId, resourceId);\n record = result.record ? toLocalOMRecord(result.record) : null;\n if (!record || (!record.isBufferingObservation && !record.isBufferingReflection)) {\n break;\n }\n await new Promise(resolve => setTimeout(resolve, pollIntervalMs));\n }\n return { record };\n }\n return { record: null };\n }\n\n const omConfig = await getOMConfigFromAgent(agent, requestContext);\n if (!omConfig?.enabled) {\n throw new HTTPException(400, { message: 'Observational Memory is not enabled for this agent' });\n }\n\n // Resolve the OM processor to call waitForBuffering\n const omProcessor = await agent.resolveProcessorById('observational-memory', requestContext);\n if (!omProcessor || typeof (omProcessor as any).waitForBuffering !== 'function') {\n throw new HTTPException(400, { message: 'Observational Memory processor not available' });\n }\n\n // Block until buffering completes (30s timeout)\n await (omProcessor as any).waitForBuffering(threadId, resourceId);\n\n // After buffering, fetch the updated record\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not configured for this agent' });\n }\n\n let memoryStore: MemoryStorage | undefined;\n try {\n memoryStore = await memory.storage.getStore('memory');\n } catch {\n throw new HTTPException(400, { message: 'Memory storage is not initialized' });\n }\n if (!memoryStore) {\n throw new HTTPException(400, { message: 'Memory storage is not initialized' });\n }\n\n const effectiveResourceId = resourceId;\n if (!effectiveResourceId) {\n throw new HTTPException(400, { message: 'resourceId is required' });\n }\n\n const omThreadId = omConfig.scope === 'resource' ? null : (threadId ?? null);\n const record = await memoryStore.getObservationalMemory(omThreadId, effectiveResourceId);\n\n return { record: record ?? null };\n } catch (error) {\n console.error('Error awaiting buffer status', error);\n return handleError(error, 'Error awaiting buffer status');\n }\n },\n});\n\nexport const LIST_THREADS_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/threads',\n responseType: 'json',\n queryParamSchema: listThreadsQuerySchema,\n responseSchema: listThreadsResponseSchema,\n summary: 'List memory threads',\n description:\n 'Returns a paginated list of conversation threads with optional filtering by resource ID and/or metadata',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, resourceId, metadata, requestContext, page, perPage, orderBy }) => {\n try {\n // Use effective resourceId (context key takes precedence over client-provided value)\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n\n // Gateway proxy: list threads from gateway API\n const agent = await getAgentFromContext({ mastra, agentId, requestContext });\n const isGateway = agent ? await isGatewayAgentAsync(agent) : false;\n if (agent && isGateway) {\n const gwClient = getGatewayClient();\n if (gwClient) {\n const effectivePage = page ?? 0;\n const effectivePerPage = perPage ?? 100;\n const offset = effectivePage * effectivePerPage;\n const result = await gwClient.listThreads({\n resourceId: effectiveResourceId,\n limit: effectivePerPage,\n offset,\n });\n return {\n threads: result.threads.map(toLocalThread),\n page: effectivePage,\n perPage: effectivePerPage,\n total: result.total,\n hasMore: offset + result.threads.length < result.total,\n };\n }\n }\n\n // Build filter object dynamically based on provided parameters\n const filter: { resourceId?: string; metadata?: Record<string, unknown> } | undefined =\n effectiveResourceId || metadata ? {} : undefined;\n\n if (effectiveResourceId) {\n filter!.resourceId = effectiveResourceId;\n }\n if (metadata) {\n filter!.metadata = metadata;\n }\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext, allowMissingAgent: true });\n\n if (memory) {\n const result = await memory.listThreads({\n filter,\n page,\n perPage,\n orderBy,\n });\n return result;\n }\n\n // Fallback to storage (covers stored agents whose memory can't be resolved)\n const storage = getStorageFromContext({ mastra });\n if (storage) {\n const memoryStore = await storage.getStore('memory');\n if (memoryStore) {\n const result = await memoryStore.listThreads({\n filter,\n page,\n perPage,\n orderBy,\n });\n return result;\n }\n }\n\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n } catch (error) {\n return handleError(error, 'Error listing threads');\n }\n },\n});\n\nexport const GET_THREAD_BY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/threads/:threadId',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: getThreadByIdQuerySchema,\n responseSchema: getThreadByIdResponseSchema,\n summary: 'Get thread by ID',\n description: 'Returns details for a specific conversation thread',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, threadId, resourceId, requestContext }) => {\n try {\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n validateBody({ threadId: effectiveThreadId });\n\n // Gateway proxy: get thread from gateway API\n const agent = await getAgentFromContext({ mastra, agentId, requestContext });\n const isGateway = agent ? await isGatewayAgentAsync(agent) : false;\n if (agent && isGateway) {\n const gwClient = getGatewayClient();\n if (gwClient) {\n const result = await gwClient.getThread(effectiveThreadId!);\n if (!result) {\n // Thread hasn't been created on gateway yet (created on first message).\n // Return a placeholder so the UI doesn't error.\n return {\n id: effectiveThreadId!,\n resourceId: effectiveResourceId ?? '',\n title: '',\n metadata: {},\n createdAt: new Date(),\n updatedAt: new Date(),\n };\n }\n const thread = toLocalThread(result.thread);\n await validateThreadOwnership(thread, effectiveResourceId);\n return thread;\n }\n }\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext, allowMissingAgent: true });\n if (memory) {\n const thread = await memory.getThreadById({ threadId: effectiveThreadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n await validateThreadOwnership(thread, effectiveResourceId);\n return thread;\n }\n\n // Fallback to storage (covers stored agents whose memory can't be resolved)\n const storage = getStorageFromContext({ mastra });\n if (storage) {\n const memoryStore = await storage.getStore('memory');\n if (memoryStore) {\n const thread = await memoryStore.getThreadById({ threadId: effectiveThreadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n await validateThreadOwnership(thread, effectiveResourceId);\n return thread;\n }\n }\n\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n } catch (error) {\n return handleError(error, 'Error getting thread');\n }\n },\n});\n\nexport const LIST_MESSAGES_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/threads/:threadId/messages',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: listMessagesQuerySchema,\n responseSchema: listMessagesResponseSchema,\n summary: 'List thread messages',\n description: 'Returns a paginated list of messages in a conversation thread',\n tags: ['Memory'],\n requiresAuth: true,\n handler: (async ({\n mastra,\n agentId,\n threadId,\n resourceId,\n perPage,\n page,\n orderBy,\n include,\n filter,\n includeSystemReminders,\n requestContext,\n }: any) => {\n try {\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n validateBody({ threadId: effectiveThreadId });\n\n if (!effectiveThreadId) {\n throw new HTTPException(400, { message: 'No threadId found' });\n }\n\n // Gateway proxy: list messages from gateway API\n const agent = await getAgentFromContext({ mastra, agentId, requestContext });\n if (agent && (await isGatewayAgentAsync(agent))) {\n const gwClient = getGatewayClient();\n if (gwClient) {\n // Validate thread ownership before returning messages\n const threadResult = await gwClient.getThread(effectiveThreadId);\n if (threadResult) {\n await validateThreadOwnership(toLocalThread(threadResult.thread), effectiveResourceId);\n }\n\n const effectivePage = page ?? 0;\n const effectivePerPage = perPage ?? 100;\n const offset = effectivePage * effectivePerPage;\n const result = await gwClient.listMessages(effectiveThreadId, {\n limit: effectivePerPage,\n offset,\n order: orderBy?.direction?.toLowerCase(),\n });\n if (!result) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n return {\n messages: result.messages.map(toLocalMessage),\n uiMessages: result.messages.map(toLocalMessage),\n };\n }\n }\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext, allowMissingAgent: true });\n\n if (memory) {\n const thread = await memory.getThreadById({ threadId: effectiveThreadId });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n await validateThreadOwnership(thread, effectiveResourceId);\n\n const result = await memory.recall({\n threadId: effectiveThreadId,\n resourceId: effectiveResourceId,\n perPage,\n page,\n orderBy,\n include,\n filter,\n includeSystemReminders,\n });\n return result;\n }\n\n // Fallback to storage (covers stored agents whose memory can't be resolved)\n const storage = getStorageFromContext({ mastra });\n if (storage) {\n const memoryStore = await storage.getStore('memory');\n if (memoryStore) {\n const thread = await memoryStore.getThreadById({ threadId: effectiveThreadId });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n await validateThreadOwnership(thread, effectiveResourceId);\n\n const result = await memoryStore.listMessages({\n threadId: effectiveThreadId,\n resourceId: effectiveResourceId,\n perPage,\n page,\n orderBy,\n include,\n filter,\n });\n return result;\n }\n }\n\n // Return empty messages when memory is not configured (Issue #11765)\n // This allows the playground UI to gracefully handle agents without memory\n return { messages: [], uiMessages: [] };\n } catch (error) {\n return handleError(error, 'Error getting messages');\n }\n }) as any,\n});\n\nexport const GET_WORKING_MEMORY_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/threads/:threadId/working-memory',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: getWorkingMemoryQuerySchema,\n responseSchema: getWorkingMemoryResponseSchema,\n summary: 'Get working memory',\n description: 'Returns the working memory state for a thread',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, threadId, resourceId, requestContext, memoryConfig }) => {\n try {\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n validateBody({ threadId: effectiveThreadId });\n\n // Gateway agents: working memory is not a local concept\n const gwAgent = await getAgentFromContext({ mastra, agentId, requestContext });\n if (gwAgent && (await isGatewayAgentAsync(gwAgent)) && getGatewayClient()) {\n return { workingMemory: null, source: 'thread' as const, workingMemoryTemplate: null, threadExists: true };\n }\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext, allowMissingAgent: true });\n if (!memory) {\n // Return null working memory when memory is not configured (Issue #11765)\n // This allows the playground UI to gracefully handle agents without memory\n return { workingMemory: null, source: 'thread' as const, workingMemoryTemplate: null, threadExists: false };\n }\n const thread = await memory.getThreadById({ threadId: effectiveThreadId! });\n if (thread) {\n await validateThreadOwnership(thread, effectiveResourceId);\n }\n const threadExists = !!thread;\n const template = await memory.getWorkingMemoryTemplate({ memoryConfig });\n const workingMemoryTemplate =\n template?.format === 'json'\n ? { ...template, content: JSON.stringify(generateEmptyFromSchema(template.content)) }\n : template;\n const workingMemory = await memory.getWorkingMemory({\n threadId: effectiveThreadId!,\n resourceId: effectiveResourceId,\n memoryConfig,\n });\n const config = memory.getMergedThreadConfig(memoryConfig || {});\n const source: 'thread' | 'resource' =\n config.workingMemory?.scope !== 'thread' && effectiveResourceId ? 'resource' : 'thread';\n return { workingMemory, source, workingMemoryTemplate, threadExists };\n } catch (error) {\n return handleError(error, 'Error getting working memory');\n }\n },\n});\n\nexport const SAVE_MESSAGES_ROUTE = createRoute({\n method: 'POST',\n path: '/memory/save-messages',\n responseType: 'json',\n queryParamSchema: agentIdQuerySchema,\n bodySchema: saveMessagesBodySchema,\n responseSchema: saveMessagesResponseSchema,\n summary: 'Save messages',\n description: 'Saves new messages to memory',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, messages, requestContext }) => {\n try {\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n if (!messages) {\n throw new HTTPException(400, { message: 'Messages are required' });\n }\n\n if (!Array.isArray(messages)) {\n throw new HTTPException(400, { message: 'Messages should be an array' });\n }\n\n // Validate that all messages have threadId and resourceId\n const invalidMessages = messages.filter(message => !message.threadId || !message.resourceId);\n if (invalidMessages.length > 0) {\n throw new HTTPException(400, {\n message: `All messages must have threadId and resourceId fields. Found ${invalidMessages.length} invalid message(s).`,\n });\n }\n\n // If effectiveResourceId is set, validate all messages belong to this resource\n if (effectiveResourceId) {\n const unauthorizedMessages = messages.filter(message => message.resourceId !== effectiveResourceId);\n if (unauthorizedMessages.length > 0) {\n throw new HTTPException(403, {\n message: 'Access denied: cannot save messages for a different resource',\n });\n }\n\n // Validate that all threads belong to this resource (prevents cross-resource data pollution)\n const threadIds = [...new Set(messages.map(m => m.threadId).filter(Boolean))] as string[];\n for (const threadId of threadIds) {\n const thread = await memory.getThreadById({ threadId });\n // Thread may not exist yet (will be created on first message save), which is allowed\n // But if it exists, it must belong to the same resource\n await validateThreadOwnership(thread, effectiveResourceId);\n }\n }\n\n const processedMessages = messages.map(message => ({\n ...message,\n id: message.id || memory.generateId(),\n createdAt: message.createdAt ? new Date(message.createdAt) : new Date(),\n }));\n\n const result = await memory.saveMessages({ messages: processedMessages as any, memoryConfig: {} });\n return result;\n } catch (error) {\n return handleError(error, 'Error saving messages');\n }\n },\n});\n\nexport const CREATE_THREAD_ROUTE = createRoute({\n method: 'POST',\n path: '/memory/threads',\n responseType: 'json',\n queryParamSchema: agentIdQuerySchema,\n bodySchema: createThreadBodySchema,\n responseSchema: getThreadByIdResponseSchema,\n summary: 'Create thread',\n description: 'Creates a new conversation thread',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, resourceId, title, metadata, threadId, requestContext }) => {\n try {\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n\n // Gateway proxy: create thread via gateway API\n const agent = await getAgentFromContext({ mastra, agentId, requestContext });\n if (agent && (await isGatewayAgentAsync(agent))) {\n const gwClient = getGatewayClient();\n if (gwClient) {\n validateBody({ resourceId: effectiveResourceId });\n const result = await gwClient.createThread({\n id: threadId,\n resourceId: effectiveResourceId!,\n title,\n metadata,\n });\n return toLocalThread(result.thread);\n }\n }\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n validateBody({ resourceId: effectiveResourceId });\n\n const result = await memory.createThread({\n resourceId: effectiveResourceId!,\n title,\n metadata,\n threadId,\n });\n return result;\n } catch (error) {\n return handleError(error, 'Error saving thread to memory');\n }\n },\n});\n\nexport const UPDATE_THREAD_ROUTE = createRoute({\n method: 'PATCH',\n path: '/memory/threads/:threadId',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: agentIdQuerySchema,\n bodySchema: updateThreadBodySchema,\n responseSchema: getThreadByIdResponseSchema,\n summary: 'Update thread',\n description: 'Updates a conversation thread',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, threadId, title, metadata, resourceId, requestContext }) => {\n try {\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n validateBody({ threadId: effectiveThreadId });\n\n // Gateway proxy: update thread via gateway API\n const agent = await getAgentFromContext({ mastra, agentId, requestContext });\n if (agent && (await isGatewayAgentAsync(agent))) {\n const gwClient = getGatewayClient();\n if (gwClient) {\n // Validate ownership before mutating\n const existing = await gwClient.getThread(effectiveThreadId!);\n if (existing) {\n await validateThreadOwnership(toLocalThread(existing.thread), effectiveResourceId);\n }\n const result = await gwClient.updateThread(effectiveThreadId!, { title, metadata });\n if (!result) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n return toLocalThread(result.thread);\n }\n }\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n\n const updatedAt = new Date();\n\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n const thread = await memory.getThreadById({ threadId: effectiveThreadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n await validateThreadOwnership(thread, effectiveResourceId);\n\n const updatedThread = {\n ...thread,\n title: title || thread.title,\n metadata: metadata || thread.metadata,\n // Don't allow changing resourceId if effectiveResourceId is set (prevents reassigning threads)\n resourceId: effectiveResourceId || resourceId || thread.resourceId,\n createdAt: thread.createdAt,\n updatedAt,\n };\n\n const result = await memory.saveThread({ thread: updatedThread });\n return {\n ...result,\n resourceId: result.resourceId ?? null,\n };\n } catch (error) {\n return handleError(error, 'Error updating thread');\n }\n },\n});\n\nexport const DELETE_THREAD_ROUTE = createRoute({\n method: 'DELETE',\n path: '/memory/threads/:threadId',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: deleteThreadQuerySchema,\n responseSchema: deleteThreadResponseSchema,\n summary: 'Delete thread',\n description: 'Deletes a conversation thread',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, threadId, resourceId, requestContext }) => {\n try {\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n validateBody({ threadId: effectiveThreadId });\n\n // Gateway proxy: delete thread via gateway API\n const agent = await getAgentFromContext({ mastra, agentId, requestContext });\n if (agent && (await isGatewayAgentAsync(agent))) {\n const gwClient = getGatewayClient();\n if (gwClient) {\n // Validate ownership before deleting\n const existing = await gwClient.getThread(effectiveThreadId!);\n if (existing) {\n await validateThreadOwnership(toLocalThread(existing.thread), effectiveResourceId);\n }\n const deleteResult = await gwClient.deleteThread(effectiveThreadId!);\n if (!deleteResult.ok) {\n throw new HTTPException(404, { message: 'Thread not found on gateway' });\n }\n return { result: 'Thread deleted' };\n }\n }\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n const thread = await memory.getThreadById({ threadId: effectiveThreadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n await validateThreadOwnership(thread, effectiveResourceId);\n\n await memory.deleteThread(effectiveThreadId!);\n return { result: 'Thread deleted' };\n } catch (error) {\n return handleError(error, 'Error deleting thread');\n }\n },\n});\n\nexport const CLONE_THREAD_ROUTE = createRoute({\n method: 'POST',\n path: '/memory/threads/:threadId/clone',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: agentIdQuerySchema,\n bodySchema: cloneThreadBodySchema,\n responseSchema: cloneThreadResponseSchema,\n summary: 'Clone thread',\n description: 'Creates a copy of a conversation thread with all its messages',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, threadId, newThreadId, resourceId, title, metadata, options, requestContext }) => {\n try {\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n validateBody({ threadId: effectiveThreadId });\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n // Validate source thread ownership\n const sourceThread = await memory.getThreadById({ threadId: effectiveThreadId! });\n if (!sourceThread) {\n throw new HTTPException(404, { message: 'Source thread not found' });\n }\n await validateThreadOwnership(sourceThread, effectiveResourceId);\n\n const result = await memory.cloneThread({\n sourceThreadId: effectiveThreadId!,\n newThreadId,\n // Use effective resourceId for the cloned thread\n resourceId: effectiveResourceId,\n title,\n metadata,\n options,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error cloning thread');\n }\n },\n});\n\nexport const UPDATE_WORKING_MEMORY_ROUTE = createRoute({\n method: 'POST',\n path: '/memory/threads/:threadId/working-memory',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: agentIdQuerySchema,\n bodySchema: updateWorkingMemoryBodySchema,\n responseSchema: updateWorkingMemoryResponseSchema,\n summary: 'Update working memory',\n description: 'Updates the working memory state for a thread',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, threadId, resourceId, memoryConfig, workingMemory, requestContext }) => {\n try {\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n validateBody({ threadId: effectiveThreadId, workingMemory });\n\n // Gateway agents: working memory not applicable, no-op\n const gwAgent = await getAgentFromContext({ mastra, agentId, requestContext });\n if (gwAgent && (await isGatewayAgentAsync(gwAgent)) && getGatewayClient()) {\n return { success: true };\n }\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n const thread = await memory.getThreadById({ threadId: effectiveThreadId! });\n if (!thread) {\n throw new HTTPException(404, { message: 'Thread not found' });\n }\n await validateThreadOwnership(thread, effectiveResourceId);\n\n await memory.updateWorkingMemory({\n threadId: effectiveThreadId!,\n resourceId: effectiveResourceId,\n workingMemory,\n memoryConfig,\n });\n return { success: true };\n } catch (error) {\n return handleError(error, 'Error updating working memory');\n }\n },\n});\n\nexport const DELETE_MESSAGES_ROUTE = createRoute({\n method: 'POST',\n path: '/memory/messages/delete',\n responseType: 'json',\n queryParamSchema: deleteMessagesQuerySchema,\n bodySchema: deleteMessagesBodySchema,\n responseSchema: deleteMessagesResponseSchema,\n summary: 'Delete messages',\n description: 'Deletes specific messages from memory',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, resourceId, messageIds, requestContext }) => {\n try {\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n\n if (messageIds === undefined || messageIds === null) {\n throw new HTTPException(400, { message: 'messageIds is required' });\n }\n\n // Normalize messageIds to the format expected by deleteMessages\n // Convert single values to arrays and extract IDs from objects\n let normalizedIds: string[] | { id: string }[];\n\n if (Array.isArray(messageIds)) {\n // Already an array - keep as is (could be string[] or { id: string }[])\n normalizedIds = messageIds;\n } else if (typeof messageIds === 'string') {\n // Single string ID - wrap in array\n normalizedIds = [messageIds];\n } else {\n // Single object with id property - wrap in array\n normalizedIds = [messageIds];\n }\n\n // Extract string IDs for validation and deletion\n const stringIds = normalizedIds.map(id => (typeof id === 'string' ? id : id.id));\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext, allowMissingAgent: true });\n\n // If effectiveResourceId is set, validate ownership of all messages before deletion\n // Fail closed: if we can't verify ownership, deny deletion\n if (effectiveResourceId && stringIds.length > 0) {\n const storage = memory?.storage || getStorageFromContext({ mastra });\n if (!storage) {\n throw new HTTPException(403, { message: 'Access denied: unable to verify message ownership' });\n }\n const memoryStore = await storage.getStore('memory');\n if (!memoryStore) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n // Get messages to find their threads\n const { messages } = await memoryStore.listMessagesById({ messageIds: stringIds });\n\n // Collect unique thread IDs\n const threadIds = [...new Set(messages.map(m => m.threadId).filter(Boolean))] as string[];\n\n // Validate ownership of all threads\n for (const threadId of threadIds) {\n const thread = await memoryStore.getThreadById({ threadId });\n if (thread && thread.resourceId && thread.resourceId !== effectiveResourceId) {\n throw new HTTPException(403, {\n message: 'Access denied: message belongs to a thread owned by a different resource',\n });\n }\n }\n }\n\n if (memory) {\n await memory.deleteMessages(normalizedIds);\n } else {\n // Fallback to storage (covers stored agents whose memory can't be resolved)\n const storage = getStorageFromContext({ mastra });\n if (storage) {\n const memoryStore = await storage.getStore('memory');\n if (memoryStore) {\n await memoryStore.deleteMessages(stringIds);\n } else {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n } else {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n }\n\n // Count messages for response\n const count = Array.isArray(messageIds) ? messageIds.length : 1;\n\n return { success: true, message: `${count} message${count === 1 ? '' : 's'} deleted successfully` };\n } catch (error) {\n return handleError(error, 'Error deleting messages');\n }\n },\n});\n\nexport const SEARCH_MEMORY_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/search',\n responseType: 'json',\n queryParamSchema: searchMemoryQuerySchema,\n responseSchema: searchMemoryResponseSchema,\n summary: 'Search memory',\n description: 'Searches across memory using semantic or text search',\n tags: ['Memory'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, searchQuery, resourceId, threadId, limit = 20, requestContext, memoryConfig }) => {\n try {\n const effectiveResourceId = getEffectiveResourceId(requestContext, resourceId);\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n validateBody({ searchQuery, resourceId: effectiveResourceId });\n\n // Gateway agents: semantic search not supported via gateway\n const agent = await getAgentFromContext({ mastra, agentId, requestContext });\n if (agent && (await isGatewayAgentAsync(agent)) && getGatewayClient()) {\n return {\n results: [],\n count: 0,\n query: searchQuery,\n searchScope: 'resource' as const,\n searchType: 'semantic' as const,\n };\n }\n\n const memory = await getMemoryFromContext({ mastra, agentId, requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: 'Memory is not initialized' });\n }\n\n // Get memory configuration first to check scope\n const config = memory.getMergedThreadConfig(memoryConfig || {});\n const hasSemanticRecall = !!config?.semanticRecall;\n const resourceScope =\n typeof config?.semanticRecall === 'object' ? config?.semanticRecall?.scope !== 'thread' : true;\n\n const searchResults: SearchResult[] = [];\n\n // If threadId is provided and scope is thread-based, check if the thread exists\n if (effectiveThreadId && !resourceScope) {\n const thread = await memory.getThreadById({ threadId: effectiveThreadId });\n if (!thread) {\n // Thread doesn't exist yet (new unsaved thread) - return empty results\n return {\n results: [],\n count: 0,\n query: searchQuery,\n searchScope: resourceScope ? 'resource' : 'thread',\n searchType: hasSemanticRecall ? 'semantic' : 'text',\n };\n }\n await validateThreadOwnership(thread, effectiveResourceId);\n }\n\n // Use effectiveThreadId or find one from the resource\n let searchThreadId = effectiveThreadId;\n\n // If no threadId provided, get one from the resource\n if (!searchThreadId) {\n const { threads } = await memory.listThreads({\n filter: { resourceId: effectiveResourceId },\n page: 0,\n perPage: 1,\n orderBy: { field: 'updatedAt', direction: 'DESC' },\n });\n\n if (threads.length === 0) {\n return {\n results: [],\n count: 0,\n query: searchQuery,\n searchScope: resourceScope ? 'resource' : 'thread',\n searchType: hasSemanticRecall ? 'semantic' : 'text',\n };\n }\n\n // Use first thread - Memory class will handle scope internally\n searchThreadId = threads[0]!.id;\n }\n\n const beforeRange =\n typeof config.semanticRecall === `boolean`\n ? 2\n : typeof config.semanticRecall?.messageRange === `number`\n ? config.semanticRecall.messageRange\n : config.semanticRecall?.messageRange.before || 2;\n const afterRange =\n typeof config.semanticRecall === `boolean`\n ? 2\n : typeof config.semanticRecall?.messageRange === `number`\n ? config.semanticRecall.messageRange\n : config.semanticRecall?.messageRange.after || 2;\n\n if (resourceScope && config.semanticRecall) {\n config.semanticRecall =\n typeof config.semanticRecall === `boolean`\n ? // make message range 0 so we can highlight the matches in search, message range will include other messages, not the matching ones\n // and we add prev/next messages in a special section on each message anyway\n { messageRange: 0, topK: 2, scope: 'resource' }\n : { ...config.semanticRecall, messageRange: 0 };\n }\n\n // Single call to recall - just like the agent does\n // The Memory class handles scope (thread vs resource) internally\n const threadConfig = memory.getMergedThreadConfig(config || {});\n if (!threadConfig.lastMessages && !threadConfig.semanticRecall) {\n return { results: [], count: 0, query: searchQuery };\n }\n\n const result = await memory.recall({\n threadId: searchThreadId,\n resourceId: effectiveResourceId,\n perPage: threadConfig.lastMessages,\n threadConfig: config,\n vectorSearchString: threadConfig.semanticRecall && searchQuery ? searchQuery : undefined,\n });\n\n // Get all threads to build context and show which thread each message is from\n // Fetch threads by IDs from the actual messages to avoid truncation\n const threadIds = Array.from(\n new Set(result.messages.map((m: MastraDBMessage) => m.threadId || searchThreadId!).filter(Boolean)),\n );\n const fetched = await Promise.all(threadIds.map((id: string) => memory.getThreadById({ threadId: id })));\n const threadMap = new Map(fetched.filter(Boolean).map(t => [t!.id, t!]));\n\n // Process each message in the results\n for (const msg of result.messages) {\n const content = getTextContent(msg);\n\n const msgThreadId = msg.threadId || searchThreadId;\n const thread = threadMap.get(msgThreadId);\n\n // Get thread messages for context\n const threadMessages = (await memory.recall({ threadId: msgThreadId })).messages;\n const messageIndex = threadMessages.findIndex(m => m.id === msg.id);\n\n const searchResult: SearchResult = {\n id: msg.id,\n role: msg.role,\n content,\n createdAt: msg.createdAt,\n threadId: msgThreadId,\n threadTitle: thread?.title || msgThreadId,\n };\n\n if (messageIndex !== -1) {\n searchResult.context = {\n before: threadMessages.slice(Math.max(0, messageIndex - beforeRange), messageIndex).map(m => ({\n id: m.id,\n role: m.role,\n content: getTextContent(m),\n createdAt: m.createdAt || new Date(),\n })),\n after: threadMessages.slice(messageIndex + 1, messageIndex + afterRange + 1).map(m => ({\n id: m.id,\n role: m.role,\n content: getTextContent(m),\n createdAt: m.createdAt || new Date(),\n })),\n };\n }\n\n searchResults.push(searchResult);\n }\n\n // Sort by date (newest first) and limit\n const sortedResults = searchResults\n .sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())\n .slice(0, limit);\n\n return {\n results: sortedResults,\n count: sortedResults.length,\n query: searchQuery,\n searchScope: resourceScope ? 'resource' : 'thread',\n searchType: hasSemanticRecall ? 'semantic' : 'text',\n };\n } catch (error) {\n return handleError(error, 'Error searching memory');\n }\n },\n});\n\n// Network routes (same handlers with /network/ prefix)\nexport const GET_MEMORY_STATUS_NETWORK_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/network/status',\n responseType: 'json',\n queryParamSchema: getMemoryStatusNetworkQuerySchema,\n responseSchema: memoryStatusResponseSchema,\n summary: 'Get memory status (network)',\n description: 'Returns the current status of the memory system (network route)',\n tags: ['Memory - Network'],\n requiresAuth: true,\n handler: GET_MEMORY_STATUS_ROUTE.handler,\n});\n\nexport const LIST_THREADS_NETWORK_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/network/threads',\n responseType: 'json',\n queryParamSchema: listThreadsNetworkQuerySchema,\n responseSchema: listThreadsResponseSchema,\n summary: 'List memory threads (network)',\n description: 'Returns a paginated list of conversation threads (network route)',\n tags: ['Memory - Network'],\n requiresAuth: true,\n handler: LIST_THREADS_ROUTE.handler,\n});\n\nexport const GET_THREAD_BY_ID_NETWORK_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/network/threads/:threadId',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: getThreadByIdNetworkQuerySchema,\n responseSchema: getThreadByIdResponseSchema,\n summary: 'Get thread by ID (network)',\n description: 'Returns details for a specific conversation thread (network route)',\n tags: ['Memory - Network'],\n requiresAuth: true,\n handler: GET_THREAD_BY_ID_ROUTE.handler,\n});\n\nexport const LIST_MESSAGES_NETWORK_ROUTE = createRoute({\n method: 'GET',\n path: '/memory/network/threads/:threadId/messages',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: listMessagesNetworkQuerySchema,\n responseSchema: listMessagesResponseSchema,\n summary: 'List thread messages (network)',\n description: 'Returns a paginated list of messages in a conversation thread (network route)',\n tags: ['Memory - Network'],\n requiresAuth: true,\n handler: LIST_MESSAGES_ROUTE.handler,\n});\n\nexport const SAVE_MESSAGES_NETWORK_ROUTE = createRoute({\n method: 'POST',\n path: '/memory/network/save-messages',\n responseType: 'json',\n queryParamSchema: saveMessagesNetworkQuerySchema,\n bodySchema: saveMessagesBodySchema,\n responseSchema: saveMessagesResponseSchema,\n summary: 'Save messages (network)',\n description: 'Saves new messages to memory (network route)',\n tags: ['Memory - Network'],\n requiresAuth: true,\n handler: SAVE_MESSAGES_ROUTE.handler,\n});\n\nexport const CREATE_THREAD_NETWORK_ROUTE = createRoute({\n method: 'POST',\n path: '/memory/network/threads',\n responseType: 'json',\n queryParamSchema: createThreadNetworkQuerySchema,\n bodySchema: createThreadBodySchema,\n responseSchema: getThreadByIdResponseSchema,\n summary: 'Create thread (network)',\n description: 'Creates a new conversation thread (network route)',\n tags: ['Memory - Network'],\n requiresAuth: true,\n handler: CREATE_THREAD_ROUTE.handler,\n});\n\nexport const UPDATE_THREAD_NETWORK_ROUTE = createRoute({\n method: 'PATCH',\n path: '/memory/network/threads/:threadId',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: updateThreadNetworkQuerySchema,\n bodySchema: updateThreadBodySchema,\n responseSchema: getThreadByIdResponseSchema,\n summary: 'Update thread (network)',\n description: 'Updates a conversation thread (network route)',\n tags: ['Memory - Network'],\n requiresAuth: true,\n handler: UPDATE_THREAD_ROUTE.handler,\n});\n\nexport const DELETE_THREAD_NETWORK_ROUTE = createRoute({\n method: 'DELETE',\n path: '/memory/network/threads/:threadId',\n responseType: 'json',\n pathParamSchema: threadIdPathParams,\n queryParamSchema: deleteThreadNetworkQuerySchema,\n responseSchema: deleteThreadResponseSchema,\n summary: 'Delete thread (network)',\n description: 'Deletes a conversation thread (network route)',\n tags: ['Memory - Network'],\n requiresAuth: true,\n handler: DELETE_THREAD_ROUTE.handler,\n});\n\nexport const DELETE_MESSAGES_NETWORK_ROUTE = createRoute({\n method: 'POST',\n path: '/memory/network/messages/delete',\n responseType: 'json',\n queryParamSchema: deleteMessagesNetworkQuerySchema,\n bodySchema: deleteMessagesBodySchema,\n responseSchema: deleteMessagesResponseSchema,\n summary: 'Delete messages (network)',\n description: 'Deletes specific messages from memory (network route)',\n tags: ['Memory - Network'],\n requiresAuth: true,\n handler: DELETE_MESSAGES_ROUTE.handler,\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/handlers/utils.ts"],"names":[],"mappings":";;;;AAKO,SAAS,aAAa,IAAA,EAA+B;AAC1D,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,CAAE,MAAA,CAA+B,CAAC,GAAA,EAAK,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAC/F,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,GAAA,CAAI,GAAG,CAAA,GAAI,CAAA,UAAA,EAAa,GAAG,CAAA,aAAA,CAAA;AAAA,IAC7B;AACA,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,MAAA,CAAO,IAAA,CAAK,aAAa,CAAA,CAAE,SAAS,CAAA,EAAG;AACzC,IAAA,MAAM,IAAI,aAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,MAAA,CAAO,MAAA,CAAO,aAAa,CAAA,CAAE,CAAC,CAAA,EAAG,CAAA;AAAA,EAC3E;AACF;AAOO,SAAS,YAAA,CAAa,MAA+B,cAAA,EAA0B;AACpF,EAAA,KAAA,MAAW,OAAO,cAAA,EAAgB;AAChC,IAAA,IAAI,OAAO,IAAA,EAAM;AACf,MAAA,OAAO,KAAK,GAAG,CAAA;AAAA,IACjB;AAAA,EACF;AACF;AAEO,SAAS,YAAA,CACd,KAAA,EACA,YAAA,GAAuB,GAAA,EACvB,MAAc,GAAA,EACE;AAChB,EAAA,MAAM,UAAA,GAAA,CAAc,KAAA,IAAS,EAAA,EAAI,IAAA,GAAO,WAAA,EAAY;AAEpD,EAAA,IAAI,eAAe,OAAA,EAAS;AAC1B,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,SAAS,QAAA,CAAS,KAAA,IAAS,MAAA,CAAO,YAAY,GAAG,EAAE,CAAA;AACzD,EAAA,IAAI,KAAA,CAAM,MAAM,CAAA,EAAG,OAAO,YAAA;AAC1B,EAAA,OAAO,KAAK,GAAA,CAAI,GAAA,EAAK,KAAK,GAAA,CAAI,CAAA,EAAG,MAAM,CAAC,CAAA;AAC1C;AAKO,SAAS,aAAa,OAAA,EAA4E;AACvG,EAAA,IAAI,CAAC,SAAS,OAAO,MAAA;AAErB,EAAA,OAAO,MAAA,CAAO,WAAA;AAAA,IAAA,CACX,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,GAAI,OAAA,GAAU,CAAC,OAAO,CAAA,EAAG,GAAA,CAAI,CAAC,IAAA,KAAiB;AACnE,MAAA,MAAM,CAAC,GAAA,EAAK,GAAG,UAAU,CAAA,GAAI,IAAA,CAAK,MAAM,GAAG,CAAA;AAC3C,MAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,IAAA,CAAK,GAAG,CAAA;AACjC,MAAA,OAAO,CAAC,KAAK,KAAK,CAAA;AAAA,IACpB,CAAC;AAAA,GACH;AACF;AAUO,SAAS,sBAAA,CACd,gBACA,gBAAA,EACoB;AACpB,EAAA,MAAM,iBAAA,GAAoB,cAAA,EAAgB,GAAA,CAAI,sBAAsB,CAAA;AACpE,EAAA,OAAO,iBAAA,IAAqB,gBAAA;AAC9B;AAMO,SAAS,oBAAA,CACd,gBACA,cAAA,EACoB;AACpB,EAAA,MAAM,eAAA,GAAkB,cAAA,EAAgB,GAAA,CAAI,oBAAoB,CAAA;AAChE,EAAA,OAAO,eAAA,IAAmB,cAAA;AAC5B;AAOA,eAAsB,uBAAA,CACpB,QACA,mBAAA,EACe;AACf,EAAA,IAAI,UAAU,mBAAA,IAAuB,MAAA,CAAO,UAAA,IAAc,MAAA,CAAO,eAAe,mBAAA,EAAqB;AACnG,IAAA,MAAM,IAAI,aAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,yDAAyD,CAAA;AAAA,EACnG;AACF;AAMA,eAAsB,oBAAA,CACpB,KACA,mBAAA,EACe;AACf,EAAA,IAAI,OAAO,mBAAA,IAAuB,GAAA,CAAI,UAAA,IAAc,GAAA,CAAI,eAAe,mBAAA,EAAqB;AAC1F,IAAA,MAAM,IAAI,aAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,+DAA+D,CAAA;AAAA,EACzG;AACF","file":"chunk-JZNOIGOQ.js","sourcesContent":["import type { RequestContext } from '@mastra/core/di';\nimport { MASTRA_RESOURCE_ID_KEY, MASTRA_THREAD_ID_KEY } from '../constants';\nimport { HTTPException } from '../http-exception';\n\n// Validation helper\nexport function validateBody(body: Record<string, unknown>) {\n const errorResponse = Object.entries(body).reduce<Record<string, string>>((acc, [key, value]) => {\n if (!value) {\n acc[key] = `Argument \"${key}\" is required`;\n }\n return acc;\n }, {});\n\n if (Object.keys(errorResponse).length > 0) {\n throw new HTTPException(400, { message: Object.values(errorResponse)[0] });\n }\n}\n\n/**\n * sanitizes the body by removing disallowed keys.\n * @param body body to sanitize\n * @param disallowedKeys keys to remove from the body\n */\nexport function sanitizeBody(body: Record<string, unknown>, disallowedKeys: string[]) {\n for (const key of disallowedKeys) {\n if (key in body) {\n delete body[key];\n }\n }\n}\n\nexport function parsePerPage(\n value: string | undefined,\n defaultValue: number = 100,\n max: number = 1000,\n): number | false {\n const normalized = (value || '').trim().toLowerCase();\n // Handle explicit false to bypass pagination\n if (normalized === 'false') {\n return false;\n }\n const parsed = parseInt(value || String(defaultValue), 10);\n if (isNaN(parsed)) return defaultValue;\n return Math.min(max, Math.max(1, parsed));\n}\n\n/**\n * Parses filter query parameters into a key-value object.\n */\nexport function parseFilters(filters: string | string[] | undefined): Record<string, string> | undefined {\n if (!filters) return undefined;\n\n return Object.fromEntries(\n (Array.isArray(filters) ? filters : [filters]).map((attr: string) => {\n const [key, ...valueParts] = attr.split(':');\n const value = valueParts.join(':'); // ✅ Handles colons in values\n return [key, value];\n }),\n );\n}\n\n// ============================================================================\n// Authorization Utilities\n// ============================================================================\n\n/**\n * Gets the effective resourceId, preferring the reserved key from requestContext\n * over client-provided values for security.\n */\nexport function getEffectiveResourceId(\n requestContext: RequestContext | undefined,\n clientResourceId: string | undefined,\n): string | undefined {\n const contextResourceId = requestContext?.get(MASTRA_RESOURCE_ID_KEY) as string | undefined;\n return contextResourceId || clientResourceId;\n}\n\n/**\n * Gets the effective threadId, preferring the reserved key from requestContext\n * over client-provided values for security.\n */\nexport function getEffectiveThreadId(\n requestContext: RequestContext | undefined,\n clientThreadId: string | undefined,\n): string | undefined {\n const contextThreadId = requestContext?.get(MASTRA_THREAD_ID_KEY) as string | undefined;\n return contextThreadId || clientThreadId;\n}\n\n/**\n * Validates that a thread belongs to the specified resourceId.\n * Throws 403 if the thread exists but belongs to a different resource.\n * Threads with no resourceId are accessible to all (shared threads).\n */\nexport async function validateThreadOwnership(\n thread: { resourceId?: string | null } | null | undefined,\n effectiveResourceId: string | undefined,\n): Promise<void> {\n if (thread && effectiveResourceId && thread.resourceId && thread.resourceId !== effectiveResourceId) {\n throw new HTTPException(403, { message: 'Access denied: thread belongs to a different resource' });\n }\n}\n\n/**\n * Validates that a workflow run belongs to the specified resourceId.\n * Throws 403 if the run exists but belongs to a different resource.\n */\nexport async function validateRunOwnership(\n run: { resourceId?: string | null } | null | undefined,\n effectiveResourceId: string | undefined,\n): Promise<void> {\n if (run && effectiveResourceId && run.resourceId && run.resourceId !== effectiveResourceId) {\n throw new HTTPException(403, { message: 'Access denied: workflow run belongs to a different resource' });\n }\n}\n"]}
|