@mastra/server 1.36.0-alpha.1 → 1.36.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +158 -0
- package/dist/_types/@internal_core/dist/index.d.ts +506 -28
- package/dist/{api-schema-manifest-EMKHNXSD.cjs → api-schema-manifest-HYLH35UU.cjs} +6 -6
- package/dist/{api-schema-manifest-EMKHNXSD.cjs.map → api-schema-manifest-HYLH35UU.cjs.map} +1 -1
- package/dist/{api-schema-manifest-EJXNYOFH.js → api-schema-manifest-WY623UST.js} +4 -4
- package/dist/{api-schema-manifest-EJXNYOFH.js.map → api-schema-manifest-WY623UST.js.map} +1 -1
- package/dist/{chunk-YARY4I5U.js → chunk-23S37FLK.js} +9 -3
- package/dist/chunk-23S37FLK.js.map +1 -0
- package/dist/{chunk-NG62OLVA.js → chunk-2JXX4IPC.js} +3 -3
- package/dist/{chunk-NG62OLVA.js.map → chunk-2JXX4IPC.js.map} +1 -1
- package/dist/{chunk-BYX5LHPW.cjs → chunk-2R76OYDZ.cjs} +22 -5
- package/dist/chunk-2R76OYDZ.cjs.map +1 -0
- package/dist/{chunk-6IUJAAQ2.js → chunk-2SMGXJZJ.js} +42 -8
- package/dist/chunk-2SMGXJZJ.js.map +1 -0
- package/dist/chunk-2YUSBWAC.js +101 -0
- package/dist/chunk-2YUSBWAC.js.map +1 -0
- package/dist/{chunk-PQDYNK4J.cjs → chunk-3AKG5KEE.cjs} +45 -37
- package/dist/chunk-3AKG5KEE.cjs.map +1 -0
- package/dist/{chunk-NPMJ6FRL.cjs → chunk-3AWUH2DT.cjs} +113 -86
- package/dist/chunk-3AWUH2DT.cjs.map +1 -0
- package/dist/{chunk-Y6CAJLYX.js → chunk-3FLL7GNJ.js} +6 -6
- package/dist/{chunk-Y6CAJLYX.js.map → chunk-3FLL7GNJ.js.map} +1 -1
- package/dist/{chunk-Y5LNMKEY.cjs → chunk-43KD3CRE.cjs} +21 -7
- package/dist/chunk-43KD3CRE.cjs.map +1 -0
- package/dist/{chunk-3NA22RQ5.cjs → chunk-4BLUIUHS.cjs} +5 -5
- package/dist/{chunk-3NA22RQ5.cjs.map → chunk-4BLUIUHS.cjs.map} +1 -1
- package/dist/{chunk-FRFWWBSS.js → chunk-4DUHTOLC.js} +4 -4
- package/dist/{chunk-FRFWWBSS.js.map → chunk-4DUHTOLC.js.map} +1 -1
- package/dist/chunk-4G7S52U3.cjs +356 -0
- package/dist/chunk-4G7S52U3.cjs.map +1 -0
- package/dist/{chunk-DYN7KSCZ.js → chunk-4KSV4WWQ.js} +6 -6
- package/dist/{chunk-DYN7KSCZ.js.map → chunk-4KSV4WWQ.js.map} +1 -1
- package/dist/{chunk-CJFSLVFA.js → chunk-4RLRTJ5M.js} +22 -5
- package/dist/chunk-4RLRTJ5M.js.map +1 -0
- package/dist/{chunk-XHA6OBT3.cjs → chunk-4UFLVROK.cjs} +13 -13
- package/dist/{chunk-XHA6OBT3.cjs.map → chunk-4UFLVROK.cjs.map} +1 -1
- package/dist/{chunk-YHRGDSTK.js → chunk-4XSWMZTL.js} +40 -3
- package/dist/chunk-4XSWMZTL.js.map +1 -0
- package/dist/{chunk-MHQFFRA2.cjs → chunk-4Z24UGLY.cjs} +26 -26
- package/dist/{chunk-MHQFFRA2.cjs.map → chunk-4Z24UGLY.cjs.map} +1 -1
- package/dist/{chunk-GPLCXP3B.cjs → chunk-5GI232FP.cjs} +8 -8
- package/dist/{chunk-GPLCXP3B.cjs.map → chunk-5GI232FP.cjs.map} +1 -1
- package/dist/{chunk-IIGNRK55.cjs → chunk-5OGVOPLG.cjs} +4 -4
- package/dist/{chunk-IIGNRK55.cjs.map → chunk-5OGVOPLG.cjs.map} +1 -1
- package/dist/{chunk-5XW4MKE6.cjs → chunk-65T6KVYX.cjs} +11 -2
- package/dist/chunk-65T6KVYX.cjs.map +1 -0
- package/dist/{chunk-W32BPAIP.js → chunk-664F5XOW.js} +7 -7
- package/dist/{chunk-W32BPAIP.js.map → chunk-664F5XOW.js.map} +1 -1
- package/dist/{chunk-N44OOOAL.js → chunk-6GMGCV74.js} +5 -5
- package/dist/{chunk-N44OOOAL.js.map → chunk-6GMGCV74.js.map} +1 -1
- package/dist/chunk-6HR2SJBP.js +101 -0
- package/dist/chunk-6HR2SJBP.js.map +1 -0
- package/dist/chunk-6JCLSYOU.js +351 -0
- package/dist/chunk-6JCLSYOU.js.map +1 -0
- package/dist/{chunk-HT4KV7V5.js → chunk-6NIQROP2.js} +23 -13
- package/dist/chunk-6NIQROP2.js.map +1 -0
- package/dist/chunk-753JFAF2.js +134 -0
- package/dist/chunk-753JFAF2.js.map +1 -0
- package/dist/{chunk-LQRPDQCE.js → chunk-7EDTSUCY.js} +4 -4
- package/dist/{chunk-LQRPDQCE.js.map → chunk-7EDTSUCY.js.map} +1 -1
- package/dist/chunk-7U7OWTR2.js +149 -0
- package/dist/chunk-7U7OWTR2.js.map +1 -0
- package/dist/{chunk-SR6QNILC.cjs → chunk-A4FTF4A7.cjs} +55 -55
- package/dist/{chunk-SR6QNILC.cjs.map → chunk-A4FTF4A7.cjs.map} +1 -1
- package/dist/{chunk-7YV7MYOP.js → chunk-AAZDGIDJ.js} +22 -12
- package/dist/chunk-AAZDGIDJ.js.map +1 -0
- package/dist/chunk-APCBVLVG.js +497 -0
- package/dist/chunk-APCBVLVG.js.map +1 -0
- package/dist/chunk-AR7VSXHH.cjs +143 -0
- package/dist/chunk-AR7VSXHH.cjs.map +1 -0
- package/dist/{chunk-JRFHBWKQ.cjs → chunk-AY3ZP465.cjs} +36 -26
- package/dist/chunk-AY3ZP465.cjs.map +1 -0
- package/dist/{chunk-YLJ5EVO3.js → chunk-BWNJBSXL.js} +3 -3
- package/dist/{chunk-YLJ5EVO3.js.map → chunk-BWNJBSXL.js.map} +1 -1
- package/dist/{chunk-JBAQMT4Y.cjs → chunk-CBHBMWZ2.cjs} +12 -12
- package/dist/{chunk-JBAQMT4Y.cjs.map → chunk-CBHBMWZ2.cjs.map} +1 -1
- package/dist/{chunk-JW4P6OFG.js → chunk-CCL4C2ZO.js} +4 -4
- package/dist/{chunk-JW4P6OFG.js.map → chunk-CCL4C2ZO.js.map} +1 -1
- package/dist/{chunk-7LBBDT4S.js → chunk-CGB327L6.js} +3 -3
- package/dist/{chunk-7LBBDT4S.js.map → chunk-CGB327L6.js.map} +1 -1
- package/dist/{chunk-WP67ASKV.js → chunk-CIBEUC5W.js} +8 -8
- package/dist/{chunk-WP67ASKV.js.map → chunk-CIBEUC5W.js.map} +1 -1
- package/dist/{chunk-RGUKCKGB.cjs → chunk-CODPCBGN.cjs} +22 -22
- package/dist/{chunk-RGUKCKGB.cjs.map → chunk-CODPCBGN.cjs.map} +1 -1
- package/dist/{chunk-PM6YRFZW.cjs → chunk-CY2WDWFQ.cjs} +8 -8
- package/dist/{chunk-PM6YRFZW.cjs.map → chunk-CY2WDWFQ.cjs.map} +1 -1
- package/dist/{chunk-OS2636MU.js → chunk-D4HVKF56.js} +5 -5
- package/dist/{chunk-OS2636MU.js.map → chunk-D4HVKF56.js.map} +1 -1
- package/dist/{chunk-73MISLDN.cjs → chunk-D774EZRN.cjs} +16 -16
- package/dist/{chunk-73MISLDN.cjs.map → chunk-D774EZRN.cjs.map} +1 -1
- package/dist/{chunk-L3WM4IWR.cjs → chunk-DYXX34YU.cjs} +56 -21
- package/dist/chunk-DYXX34YU.cjs.map +1 -0
- package/dist/{chunk-XZT7USLH.js → chunk-E3UHRQZ7.js} +81 -41
- package/dist/chunk-E3UHRQZ7.js.map +1 -0
- package/dist/{chunk-DZWFQD53.cjs → chunk-EAPGRYRG.cjs} +6 -6
- package/dist/{chunk-DZWFQD53.cjs.map → chunk-EAPGRYRG.cjs.map} +1 -1
- package/dist/{chunk-R4IYXUNR.cjs → chunk-ESZN7NKS.cjs} +34 -26
- package/dist/chunk-ESZN7NKS.cjs.map +1 -0
- package/dist/{chunk-E53AJNZB.js → chunk-F2FAL5CZ.js} +2 -2
- package/dist/{chunk-E53AJNZB.js.map → chunk-F2FAL5CZ.js.map} +1 -1
- package/dist/{chunk-7BM2AIKU.js → chunk-FKQCQSXF.js} +44 -17
- package/dist/chunk-FKQCQSXF.js.map +1 -0
- package/dist/{chunk-DGJSHUP4.cjs → chunk-FP3SA3LK.cjs} +177 -177
- package/dist/{chunk-DGJSHUP4.cjs.map → chunk-FP3SA3LK.cjs.map} +1 -1
- package/dist/chunk-G5LQCOFZ.js +292 -0
- package/dist/chunk-G5LQCOFZ.js.map +1 -0
- package/dist/{chunk-B3UPXBHD.js → chunk-G6W3FFTU.js} +227 -41
- package/dist/chunk-G6W3FFTU.js.map +1 -0
- package/dist/chunk-GA4BG5JK.js +46 -0
- package/dist/chunk-GA4BG5JK.js.map +1 -0
- package/dist/{chunk-YPXOTWND.js → chunk-GAGC4WDU.js} +3 -3
- package/dist/{chunk-YPXOTWND.js.map → chunk-GAGC4WDU.js.map} +1 -1
- package/dist/{chunk-T6QQYYPA.cjs → chunk-GAL7C4Y5.cjs} +36 -26
- package/dist/chunk-GAL7C4Y5.cjs.map +1 -0
- package/dist/{chunk-GTYVB2TS.js → chunk-GFZR6THV.js} +3 -3
- package/dist/{chunk-GTYVB2TS.js.map → chunk-GFZR6THV.js.map} +1 -1
- package/dist/{chunk-Q7LA2XMK.js → chunk-GW6T4HLN.js} +9 -9
- package/dist/{chunk-Q7LA2XMK.js.map → chunk-GW6T4HLN.js.map} +1 -1
- package/dist/{chunk-NDMG7SUN.js → chunk-HFESVWJ6.js} +8 -8
- package/dist/{chunk-NDMG7SUN.js.map → chunk-HFESVWJ6.js.map} +1 -1
- package/dist/{chunk-BBB4NKZZ.cjs → chunk-HGAPGNWM.cjs} +83 -83
- package/dist/{chunk-BBB4NKZZ.cjs.map → chunk-HGAPGNWM.cjs.map} +1 -1
- package/dist/{chunk-OOEYTKTC.js → chunk-HGRG2WVX.js} +35 -18
- package/dist/chunk-HGRG2WVX.js.map +1 -0
- package/dist/{chunk-4YSEVAAS.cjs → chunk-HKM5KOOK.cjs} +31 -31
- package/dist/{chunk-4YSEVAAS.cjs.map → chunk-HKM5KOOK.cjs.map} +1 -1
- package/dist/chunk-HMJL3C3H.js +36 -0
- package/dist/chunk-HMJL3C3H.js.map +1 -0
- package/dist/{chunk-X7ZNZFHV.js → chunk-HNGYUI5N.js} +23 -15
- package/dist/chunk-HNGYUI5N.js.map +1 -0
- package/dist/{chunk-7R7WT24X.cjs → chunk-HWT5YD7H.cjs} +17 -17
- package/dist/{chunk-7R7WT24X.cjs.map → chunk-HWT5YD7H.cjs.map} +1 -1
- package/dist/{chunk-R3R6VJRM.cjs → chunk-HZNJ4B7D.cjs} +32 -32
- package/dist/{chunk-R3R6VJRM.cjs.map → chunk-HZNJ4B7D.cjs.map} +1 -1
- package/dist/{chunk-XGNMFTYF.js → chunk-I3RWQGD7.js} +9 -9
- package/dist/{chunk-XGNMFTYF.js.map → chunk-I3RWQGD7.js.map} +1 -1
- package/dist/{chunk-UQ2H32RT.cjs → chunk-I6WBJDRP.cjs} +10 -10
- package/dist/{chunk-UQ2H32RT.cjs.map → chunk-I6WBJDRP.cjs.map} +1 -1
- package/dist/{chunk-T3PECMPO.js → chunk-IRJQQYII.js} +7 -7
- package/dist/{chunk-T3PECMPO.js.map → chunk-IRJQQYII.js.map} +1 -1
- package/dist/chunk-JUYUBEMU.js +28 -0
- package/dist/chunk-JUYUBEMU.js.map +1 -0
- package/dist/{chunk-IVFIYTLD.cjs → chunk-JZ2K5LY4.cjs} +34 -34
- package/dist/{chunk-IVFIYTLD.cjs.map → chunk-JZ2K5LY4.cjs.map} +1 -1
- package/dist/{chunk-MEYWNCUV.cjs → chunk-KE4V4LJE.cjs} +7 -7
- package/dist/{chunk-MEYWNCUV.cjs.map → chunk-KE4V4LJE.cjs.map} +1 -1
- package/dist/{chunk-ES23WZRF.cjs → chunk-LEIV627E.cjs} +15 -15
- package/dist/{chunk-ES23WZRF.cjs.map → chunk-LEIV627E.cjs.map} +1 -1
- package/dist/{chunk-AIRSK4QU.js → chunk-LH5Y7AJF.js} +46 -7
- package/dist/chunk-LH5Y7AJF.js.map +1 -0
- package/dist/{chunk-5TTCUSSA.js → chunk-LPFE6YTG.js} +3 -3
- package/dist/{chunk-5TTCUSSA.js.map → chunk-LPFE6YTG.js.map} +1 -1
- package/dist/{chunk-WYLVJSGR.cjs → chunk-LTRLD33R.cjs} +47 -8
- package/dist/chunk-LTRLD33R.cjs.map +1 -0
- package/dist/{chunk-UH3MHVDF.cjs → chunk-M4B42JGO.cjs} +6 -3
- package/dist/chunk-M4B42JGO.cjs.map +1 -0
- package/dist/{chunk-QWPEAC7I.cjs → chunk-MERLF4UP.cjs} +94 -94
- package/dist/{chunk-QWPEAC7I.cjs.map → chunk-MERLF4UP.cjs.map} +1 -1
- package/dist/{chunk-CIPZ4VOZ.cjs → chunk-N6RQC4Z3.cjs} +4 -4
- package/dist/{chunk-CIPZ4VOZ.cjs.map → chunk-N6RQC4Z3.cjs.map} +1 -1
- package/dist/chunk-NHJWT4KF.cjs +104 -0
- package/dist/chunk-NHJWT4KF.cjs.map +1 -0
- package/dist/chunk-O4O2EJF7.cjs +13 -0
- package/dist/chunk-O4O2EJF7.cjs.map +1 -0
- package/dist/{chunk-H3RUJBEL.cjs → chunk-O7B3P2AT.cjs} +57 -40
- package/dist/chunk-O7B3P2AT.cjs.map +1 -0
- package/dist/{chunk-L2RZNUOW.js → chunk-OGYYXNGI.js} +4 -4
- package/dist/{chunk-L2RZNUOW.js.map → chunk-OGYYXNGI.js.map} +1 -1
- package/dist/{chunk-M7DF3D2M.js → chunk-OJNVSXOF.js} +19 -5
- package/dist/chunk-OJNVSXOF.js.map +1 -0
- package/dist/{chunk-KGK2LCZ4.js → chunk-OKKJPM5N.js} +21 -14
- package/dist/chunk-OKKJPM5N.js.map +1 -0
- package/dist/{chunk-Z6C7SDXA.js → chunk-ONCDLJUQ.js} +6 -3
- package/dist/chunk-ONCDLJUQ.js.map +1 -0
- package/dist/{chunk-HX5WL5ZF.js → chunk-OORAVFI4.js} +3 -3
- package/dist/{chunk-HX5WL5ZF.js.map → chunk-OORAVFI4.js.map} +1 -1
- package/dist/{chunk-M7CTMLXS.js → chunk-OSN3DL34.js} +4 -4
- package/dist/{chunk-M7CTMLXS.js.map → chunk-OSN3DL34.js.map} +1 -1
- package/dist/{chunk-ZIR2AE52.js → chunk-P5ZWPVC2.js} +4 -4
- package/dist/{chunk-ZIR2AE52.js.map → chunk-P5ZWPVC2.js.map} +1 -1
- package/dist/{chunk-BBD7VAAR.js → chunk-PQ37PNAE.js} +22 -12
- package/dist/chunk-PQ37PNAE.js.map +1 -0
- package/dist/{chunk-DRNCUSSM.cjs → chunk-PWGPLCL4.cjs} +5 -5
- package/dist/{chunk-DRNCUSSM.cjs.map → chunk-PWGPLCL4.cjs.map} +1 -1
- package/dist/chunk-QJU62KP2.cjs +298 -0
- package/dist/chunk-QJU62KP2.cjs.map +1 -0
- package/dist/{chunk-AY5TY4EN.js → chunk-QUVYOHFH.js} +178 -52
- package/dist/chunk-QUVYOHFH.js.map +1 -0
- package/dist/{chunk-LTYRUL3Q.cjs → chunk-QZ6UFQ7V.cjs} +42 -2
- package/dist/chunk-QZ6UFQ7V.cjs.map +1 -0
- package/dist/chunk-REJUB2HI.cjs +104 -0
- package/dist/chunk-REJUB2HI.cjs.map +1 -0
- package/dist/chunk-RJUQQE46.cjs +551 -0
- package/dist/chunk-RJUQQE46.cjs.map +1 -0
- package/dist/{chunk-M4MNMBQF.cjs → chunk-RYPLQO4Z.cjs} +32 -25
- package/dist/chunk-RYPLQO4Z.cjs.map +1 -0
- package/dist/chunk-S77FIEDZ.cjs +504 -0
- package/dist/chunk-S77FIEDZ.cjs.map +1 -0
- package/dist/chunk-SFPN7SHZ.js +11 -0
- package/dist/chunk-SFPN7SHZ.js.map +1 -0
- package/dist/{chunk-LBEQ4EE4.js → chunk-SPGVPADY.js} +3 -3
- package/dist/{chunk-LBEQ4EE4.js.map → chunk-SPGVPADY.js.map} +1 -1
- package/dist/{chunk-Q2B7W7GA.cjs → chunk-T3C54LPX.cjs} +57 -5
- package/dist/chunk-T3C54LPX.cjs.map +1 -0
- package/dist/chunk-TNXHSUIL.cjs +655 -0
- package/dist/chunk-TNXHSUIL.cjs.map +1 -0
- package/dist/{chunk-3BL73LS3.cjs → chunk-U72BY62E.cjs} +260 -133
- package/dist/chunk-U72BY62E.cjs.map +1 -0
- package/dist/{chunk-DZXHO72E.cjs → chunk-UBYGPC2S.cjs} +12 -12
- package/dist/{chunk-DZXHO72E.cjs.map → chunk-UBYGPC2S.cjs.map} +1 -1
- package/dist/{chunk-IDUFQ5HG.js → chunk-UCKK7LPQ.js} +3 -3
- package/dist/{chunk-IDUFQ5HG.js.map → chunk-UCKK7LPQ.js.map} +1 -1
- package/dist/{chunk-JX4UGU4A.cjs → chunk-UGJBURIS.cjs} +12 -12
- package/dist/{chunk-JX4UGU4A.cjs.map → chunk-UGJBURIS.cjs.map} +1 -1
- package/dist/{chunk-PDHGJ7GP.js → chunk-UIRQU4GW.js} +54 -6
- package/dist/chunk-UIRQU4GW.js.map +1 -0
- package/dist/chunk-V4ATNZXG.cjs +31 -0
- package/dist/chunk-V4ATNZXG.cjs.map +1 -0
- package/dist/chunk-VX3MJR4P.cjs +161 -0
- package/dist/chunk-VX3MJR4P.cjs.map +1 -0
- package/dist/{chunk-QTPAVOG2.cjs → chunk-WLGC3IWY.cjs} +49 -39
- package/dist/chunk-WLGC3IWY.cjs.map +1 -0
- package/dist/{chunk-DM6UW5RD.js → chunk-WM2RUEBO.js} +8 -8
- package/dist/{chunk-DM6UW5RD.js.map → chunk-WM2RUEBO.js.map} +1 -1
- package/dist/{chunk-4L2UVFJO.js → chunk-WYP25ZMM.js} +120 -5
- package/dist/chunk-WYP25ZMM.js.map +1 -0
- package/dist/{chunk-MXGCIYNM.js → chunk-XI3XH4G7.js} +22 -12
- package/dist/chunk-XI3XH4G7.js.map +1 -0
- package/dist/{chunk-YE3LMHL3.js → chunk-XM54QZ3G.js} +5 -5
- package/dist/{chunk-YE3LMHL3.js.map → chunk-XM54QZ3G.js.map} +1 -1
- package/dist/{chunk-PYZAUXQX.cjs → chunk-XNR667MS.cjs} +27 -27
- package/dist/{chunk-PYZAUXQX.cjs.map → chunk-XNR667MS.cjs.map} +1 -1
- package/dist/{chunk-Y6MWNLAA.cjs → chunk-XR3CGVKU.cjs} +8 -8
- package/dist/{chunk-Y6MWNLAA.cjs.map → chunk-XR3CGVKU.cjs.map} +1 -1
- package/dist/{chunk-AZORAK4H.cjs → chunk-XTFWFQZ7.cjs} +2 -2
- package/dist/{chunk-AZORAK4H.cjs.map → chunk-XTFWFQZ7.cjs.map} +1 -1
- package/dist/{chunk-ELWN7ZXR.js → chunk-Y3KIKJW6.js} +6 -6
- package/dist/{chunk-ELWN7ZXR.js.map → chunk-Y3KIKJW6.js.map} +1 -1
- package/dist/{chunk-B34S64RC.cjs → chunk-YNSUYESL.cjs} +23 -3
- package/dist/chunk-YNSUYESL.cjs.map +1 -0
- package/dist/{chunk-3PQSHLG7.cjs → chunk-YQYYIRDS.cjs} +164 -164
- package/dist/{chunk-3PQSHLG7.cjs.map → chunk-YQYYIRDS.cjs.map} +1 -1
- package/dist/chunk-YRLCLLKR.js +14 -0
- package/dist/chunk-YRLCLLKR.js.map +1 -0
- package/dist/{chunk-SUT6SU4I.cjs → chunk-Z4PDJRZT.cjs} +124 -5
- package/dist/chunk-Z4PDJRZT.cjs.map +1 -0
- package/dist/{chunk-JRZZN55Y.cjs → chunk-Z772ZUYH.cjs} +53 -43
- package/dist/chunk-Z772ZUYH.cjs.map +1 -0
- package/dist/chunk-ZCX2J552.cjs +38 -0
- package/dist/chunk-ZCX2J552.cjs.map +1 -0
- package/dist/{chunk-OULCMO5R.js → chunk-ZHS2QDGO.js} +23 -15
- package/dist/chunk-ZHS2QDGO.js.map +1 -0
- package/dist/chunk-ZNP74O27.cjs +19 -0
- package/dist/chunk-ZNP74O27.cjs.map +1 -0
- package/dist/{dist-5OGIQLEZ.js → dist-TXPFV4FE.js} +3 -3
- package/dist/{dist-5OGIQLEZ.js.map → dist-TXPFV4FE.js.map} +1 -1
- package/dist/{dist-ON3E5YMU.cjs → dist-VWAYVM5T.cjs} +3 -3
- package/dist/{dist-ON3E5YMU.cjs.map → dist-VWAYVM5T.cjs.map} +1 -1
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/server/auth/helpers.d.ts +3 -0
- package/dist/server/auth/helpers.d.ts.map +1 -1
- package/dist/server/auth/index.cjs +28 -15
- package/dist/server/auth/index.js +2 -1
- package/dist/server/browser-stream/types.d.ts +9 -0
- package/dist/server/browser-stream/types.d.ts.map +1 -1
- package/dist/server/constants.d.ts +3 -0
- package/dist/server/constants.d.ts.map +1 -1
- package/dist/server/handlers/a2a.cjs +14 -14
- 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.d.ts.map +1 -1
- package/dist/server/handlers/agent-versions.js +1 -1
- package/dist/server/handlers/agents.cjs +41 -41
- package/dist/server/handlers/agents.d.ts +185 -0
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +1 -1
- package/dist/server/handlers/auth.cjs +15 -11
- package/dist/server/handlers/auth.d.ts +168 -146
- package/dist/server/handlers/auth.d.ts.map +1 -1
- package/dist/server/handlers/auth.js +1 -1
- package/dist/server/handlers/authorship.cjs +52 -0
- package/dist/server/handlers/authorship.cjs.map +1 -0
- package/dist/server/handlers/authorship.d.ts +176 -0
- package/dist/server/handlers/authorship.d.ts.map +1 -0
- package/dist/server/handlers/authorship.js +3 -0
- package/dist/server/handlers/authorship.js.map +1 -0
- package/dist/server/handlers/background-tasks.cjs +4 -4
- package/dist/server/handlers/background-tasks.js +1 -1
- package/dist/server/handlers/builder-registry.cjs +28 -0
- package/dist/server/handlers/builder-registry.cjs.map +1 -0
- package/dist/server/handlers/builder-registry.d.ts +170 -0
- package/dist/server/handlers/builder-registry.d.ts.map +1 -0
- package/dist/server/handlers/builder-registry.js +3 -0
- package/dist/server/handlers/builder-registry.js.map +1 -0
- 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.js +1 -1
- package/dist/server/handlers/datasets.cjs +26 -26
- package/dist/server/handlers/datasets.js +1 -1
- package/dist/server/handlers/editor-builder.cjs +24 -0
- package/dist/server/handlers/editor-builder.cjs.map +1 -0
- package/dist/server/handlers/editor-builder.d.ts +259 -0
- package/dist/server/handlers/editor-builder.d.ts.map +1 -0
- package/dist/server/handlers/editor-builder.js +3 -0
- package/dist/server/handlers/editor-builder.js.map +1 -0
- package/dist/server/handlers/error.cjs +3 -3
- package/dist/server/handlers/error.d.ts.map +1 -1
- package/dist/server/handlers/error.js +1 -1
- package/dist/server/handlers/favorites-enrichment.cjs +16 -0
- package/dist/server/handlers/favorites-enrichment.cjs.map +1 -0
- package/dist/server/handlers/favorites-enrichment.d.ts +27 -0
- package/dist/server/handlers/favorites-enrichment.d.ts.map +1 -0
- package/dist/server/handlers/favorites-enrichment.js +3 -0
- package/dist/server/handlers/favorites-enrichment.js.map +1 -0
- 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.d.ts.map +1 -1
- package/dist/server/handlers/mcp-client-versions.js +1 -1
- package/dist/server/handlers/mcp.cjs +11 -11
- package/dist/server/handlers/mcp.js +1 -1
- package/dist/server/handlers/memory.cjs +27 -27
- package/dist/server/handlers/memory.d.ts +36 -36
- package/dist/server/handlers/memory.js +1 -1
- package/dist/server/handlers/observability-list-query-schemas.cjs +24 -0
- package/dist/server/handlers/observability-list-query-schemas.cjs.map +1 -0
- package/dist/server/handlers/observability-list-query-schemas.d.ts +29 -0
- package/dist/server/handlers/observability-list-query-schemas.d.ts.map +1 -0
- package/dist/server/handlers/observability-list-query-schemas.js +3 -0
- package/dist/server/handlers/observability-list-query-schemas.js.map +1 -0
- package/dist/server/handlers/observability-new-endpoints.cjs +32 -28
- package/dist/server/handlers/observability-new-endpoints.d.ts +326 -48
- 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 +23 -7
- package/dist/server/handlers/observability-shared.d.ts +22 -1
- 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 +43 -39
- package/dist/server/handlers/observability.d.ts +18 -8
- package/dist/server/handlers/observability.d.ts.map +1 -1
- package/dist/server/handlers/observability.js +2 -2
- package/dist/server/handlers/processor-providers.cjs +3 -3
- package/dist/server/handlers/processor-providers.js +1 -1
- package/dist/server/handlers/processors.cjs +4 -4
- package/dist/server/handlers/processors.js +1 -1
- package/dist/server/handlers/prompt-block-versions.cjs +8 -8
- package/dist/server/handlers/prompt-block-versions.d.ts.map +1 -1
- package/dist/server/handlers/prompt-block-versions.js +1 -1
- package/dist/server/handlers/responses.cjs +4 -4
- 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 +6 -6
- package/dist/server/handlers/schedules.js +1 -1
- package/dist/server/handlers/scorer-versions.cjs +8 -8
- package/dist/server/handlers/scorer-versions.d.ts.map +1 -1
- 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/skills-sh-shared.cjs +40 -0
- package/dist/server/handlers/skills-sh-shared.cjs.map +1 -0
- package/dist/server/handlers/skills-sh-shared.d.ts +89 -0
- package/dist/server/handlers/skills-sh-shared.d.ts.map +1 -0
- package/dist/server/handlers/skills-sh-shared.js +3 -0
- package/dist/server/handlers/skills-sh-shared.js.map +1 -0
- package/dist/server/handlers/stored-agent-favorites.cjs +16 -0
- package/dist/server/handlers/stored-agent-favorites.cjs.map +1 -0
- package/dist/server/handlers/stored-agent-favorites.d.ts +29 -0
- package/dist/server/handlers/stored-agent-favorites.d.ts.map +1 -0
- package/dist/server/handlers/stored-agent-favorites.js +3 -0
- package/dist/server/handlers/stored-agent-favorites.js.map +1 -0
- package/dist/server/handlers/stored-agents.cjs +7 -7
- package/dist/server/handlers/stored-agents.d.ts +390 -0
- package/dist/server/handlers/stored-agents.d.ts.map +1 -1
- 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.d.ts.map +1 -1
- 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.d.ts.map +1 -1
- 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.d.ts.map +1 -1
- package/dist/server/handlers/stored-scorers.js +1 -1
- package/dist/server/handlers/stored-skill-favorites.cjs +16 -0
- package/dist/server/handlers/stored-skill-favorites.cjs.map +1 -0
- package/dist/server/handlers/stored-skill-favorites.d.ts +29 -0
- package/dist/server/handlers/stored-skill-favorites.d.ts.map +1 -0
- package/dist/server/handlers/stored-skill-favorites.js +3 -0
- package/dist/server/handlers/stored-skill-favorites.js.map +1 -0
- package/dist/server/handlers/stored-skills.cjs +7 -7
- package/dist/server/handlers/stored-skills.d.ts +117 -0
- package/dist/server/handlers/stored-skills.d.ts.map +1 -1
- package/dist/server/handlers/stored-skills.js +1 -1
- package/dist/server/handlers/stored-workspaces.cjs +6 -6
- package/dist/server/handlers/stored-workspaces.d.ts +2 -0
- package/dist/server/handlers/stored-workspaces.d.ts.map +1 -1
- package/dist/server/handlers/stored-workspaces.js +1 -1
- package/dist/server/handlers/system.cjs +3 -3
- package/dist/server/handlers/system.js +1 -1
- package/dist/server/handlers/tool-providers.cjs +5 -5
- package/dist/server/handlers/tool-providers.js +1 -1
- package/dist/server/handlers/tools.cjs +6 -6
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/utils.cjs +10 -10
- package/dist/server/handlers/utils.d.ts +1 -1
- package/dist/server/handlers/utils.js +1 -1
- package/dist/server/handlers/validate-avatar.cjs +12 -0
- package/dist/server/handlers/validate-avatar.cjs.map +1 -0
- package/dist/server/handlers/validate-avatar.d.ts +7 -0
- package/dist/server/handlers/validate-avatar.d.ts.map +1 -0
- package/dist/server/handlers/validate-avatar.js +3 -0
- package/dist/server/handlers/validate-avatar.js.map +1 -0
- 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 +26 -26
- 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 +35 -35
- package/dist/server/handlers.js +16 -16
- package/dist/server/schemas/builder-registry.d.ts +73 -0
- package/dist/server/schemas/builder-registry.d.ts.map +1 -0
- package/dist/server/schemas/editor-builder.d.ts +288 -0
- package/dist/server/schemas/editor-builder.d.ts.map +1 -0
- package/dist/server/schemas/favorites.d.ts +9 -0
- package/dist/server/schemas/favorites.d.ts.map +1 -0
- package/dist/server/schemas/index.cjs +388 -372
- package/dist/server/schemas/index.js +10 -10
- package/dist/server/schemas/memory.d.ts +25 -19
- package/dist/server/schemas/memory.d.ts.map +1 -1
- package/dist/server/schemas/stored-agents.d.ts +1066 -94
- package/dist/server/schemas/stored-agents.d.ts.map +1 -1
- package/dist/server/schemas/stored-skills.d.ts +111 -0
- package/dist/server/schemas/stored-skills.d.ts.map +1 -1
- package/dist/server/schemas/stored-workspaces.d.ts +1 -0
- package/dist/server/schemas/stored-workspaces.d.ts.map +1 -1
- package/dist/server/server-adapter/index.cjs +200 -124
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.d.ts +9 -1
- package/dist/server/server-adapter/index.d.ts.map +1 -1
- package/dist/server/server-adapter/index.js +174 -98
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/server/server-adapter/routes/editor-builder.d.ts +353 -0
- package/dist/server/server-adapter/routes/editor-builder.d.ts.map +1 -0
- package/dist/server/server-adapter/routes/fga-manifest.d.ts +4 -0
- package/dist/server/server-adapter/routes/fga-manifest.d.ts.map +1 -0
- package/dist/server/server-adapter/routes/index.d.ts +7 -1
- package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/memory.d.ts +36 -36
- package/dist/server/server-adapter/routes/observability.d.ts +176 -28
- package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/permissions.d.ts +8 -3
- package/dist/server/server-adapter/routes/permissions.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/route-builder.d.ts +3 -1
- package/dist/server/server-adapter/routes/route-builder.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/stored-agents.d.ts +4 -1
- package/dist/server/server-adapter/routes/stored-agents.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/stored-skills.d.ts +138 -1
- package/dist/server/server-adapter/routes/stored-skills.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/stored-workspaces.d.ts +2 -0
- package/dist/server/server-adapter/routes/stored-workspaces.d.ts.map +1 -1
- package/dist/server/utils/resolve-builder-model-policy.d.ts +17 -0
- package/dist/server/utils/resolve-builder-model-policy.d.ts.map +1 -0
- package/dist/server/utils.d.ts +11 -0
- package/dist/server/utils.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/chunk-3BL73LS3.cjs.map +0 -1
- package/dist/chunk-4L2UVFJO.js.map +0 -1
- package/dist/chunk-5XW4MKE6.cjs.map +0 -1
- package/dist/chunk-6IUJAAQ2.js.map +0 -1
- package/dist/chunk-7BM2AIKU.js.map +0 -1
- package/dist/chunk-7YV7MYOP.js.map +0 -1
- package/dist/chunk-AIRSK4QU.js.map +0 -1
- package/dist/chunk-AY5TY4EN.js.map +0 -1
- package/dist/chunk-B34S64RC.cjs.map +0 -1
- package/dist/chunk-B3UPXBHD.js.map +0 -1
- package/dist/chunk-BBD7VAAR.js.map +0 -1
- package/dist/chunk-BYX5LHPW.cjs.map +0 -1
- package/dist/chunk-CJFSLVFA.js.map +0 -1
- package/dist/chunk-DRTUU5WC.cjs +0 -365
- package/dist/chunk-DRTUU5WC.cjs.map +0 -1
- package/dist/chunk-H3RUJBEL.cjs.map +0 -1
- package/dist/chunk-HT4KV7V5.js.map +0 -1
- package/dist/chunk-JRFHBWKQ.cjs.map +0 -1
- package/dist/chunk-JRZZN55Y.cjs.map +0 -1
- package/dist/chunk-KGK2LCZ4.js.map +0 -1
- package/dist/chunk-L3WM4IWR.cjs.map +0 -1
- package/dist/chunk-LTYRUL3Q.cjs.map +0 -1
- package/dist/chunk-M4MNMBQF.cjs.map +0 -1
- package/dist/chunk-M7DF3D2M.js.map +0 -1
- package/dist/chunk-MXGCIYNM.js.map +0 -1
- package/dist/chunk-NPMJ6FRL.cjs.map +0 -1
- package/dist/chunk-OMLB6EMJ.cjs +0 -313
- package/dist/chunk-OMLB6EMJ.cjs.map +0 -1
- package/dist/chunk-OOEYTKTC.js.map +0 -1
- package/dist/chunk-OULCMO5R.js.map +0 -1
- package/dist/chunk-P23KBWKB.js +0 -26
- package/dist/chunk-P23KBWKB.js.map +0 -1
- package/dist/chunk-PDHGJ7GP.js.map +0 -1
- package/dist/chunk-PQDYNK4J.cjs.map +0 -1
- package/dist/chunk-Q2B7W7GA.cjs.map +0 -1
- package/dist/chunk-QTPAVOG2.cjs.map +0 -1
- package/dist/chunk-R4IYXUNR.cjs.map +0 -1
- package/dist/chunk-SUT6SU4I.cjs.map +0 -1
- package/dist/chunk-T6QQYYPA.cjs.map +0 -1
- package/dist/chunk-UH3MHVDF.cjs.map +0 -1
- package/dist/chunk-WNIL6DVE.cjs +0 -615
- package/dist/chunk-WNIL6DVE.cjs.map +0 -1
- package/dist/chunk-WYLVJSGR.cjs.map +0 -1
- package/dist/chunk-X7ZNZFHV.js.map +0 -1
- package/dist/chunk-XT5ZVU5J.js +0 -306
- package/dist/chunk-XT5ZVU5J.js.map +0 -1
- package/dist/chunk-XZT7USLH.js.map +0 -1
- package/dist/chunk-Y5LNMKEY.cjs.map +0 -1
- package/dist/chunk-YARY4I5U.js.map +0 -1
- package/dist/chunk-YHRGDSTK.js.map +0 -1
- package/dist/chunk-Z6C7SDXA.js.map +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var chunk5OGVOPLG_cjs = require('./chunk-5OGVOPLG.cjs');
|
|
3
4
|
var chunkF3HP5HM6_cjs = require('./chunk-F3HP5HM6.cjs');
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var chunkB34S64RC_cjs = require('./chunk-B34S64RC.cjs');
|
|
5
|
+
var chunkKE4V4LJE_cjs = require('./chunk-KE4V4LJE.cjs');
|
|
6
|
+
var chunkYQYYIRDS_cjs = require('./chunk-YQYYIRDS.cjs');
|
|
7
|
+
var chunk4BLUIUHS_cjs = require('./chunk-4BLUIUHS.cjs');
|
|
8
|
+
var chunkYNSUYESL_cjs = require('./chunk-YNSUYESL.cjs');
|
|
9
|
+
var chunkXTFWFQZ7_cjs = require('./chunk-XTFWFQZ7.cjs');
|
|
10
10
|
var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
|
|
11
11
|
var chunkO7I5CWRX_cjs = require('./chunk-O7I5CWRX.cjs');
|
|
12
12
|
var crypto = require('crypto');
|
|
@@ -42,32 +42,32 @@ function buildConversationDeleted(conversationId) {
|
|
|
42
42
|
deleted: true
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
|
-
var CREATE_CONVERSATION_ROUTE =
|
|
45
|
+
var CREATE_CONVERSATION_ROUTE = chunkXTFWFQZ7_cjs.createRoute({
|
|
46
46
|
method: "POST",
|
|
47
47
|
path: "/v1/conversations",
|
|
48
48
|
responseType: "json",
|
|
49
|
-
bodySchema:
|
|
50
|
-
responseSchema:
|
|
49
|
+
bodySchema: chunk5OGVOPLG_cjs.createConversationBodySchema,
|
|
50
|
+
responseSchema: chunk5OGVOPLG_cjs.conversationObjectSchema,
|
|
51
51
|
summary: "Create a conversation",
|
|
52
52
|
description: "Creates a new thread-backed conversation for agent-backed Responses API requests",
|
|
53
53
|
tags: ["Responses"],
|
|
54
54
|
requiresAuth: true,
|
|
55
|
-
requiresPermission:
|
|
55
|
+
requiresPermission: chunk4BLUIUHS_cjs.MastraFGAPermissions.AGENTS_CREATE,
|
|
56
56
|
handler: async ({ mastra, requestContext, agent_id, conversation_id, resource_id, title, metadata }) => {
|
|
57
57
|
try {
|
|
58
58
|
if (!mastra) {
|
|
59
59
|
throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Mastra instance is required for conversations" });
|
|
60
60
|
}
|
|
61
|
-
const agent = await
|
|
61
|
+
const agent = await chunkYQYYIRDS_cjs.getAgentFromSystem({ mastra, agentId: agent_id });
|
|
62
62
|
const memory = await agent.getMemory({ requestContext });
|
|
63
63
|
if (!memory) {
|
|
64
64
|
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Agent "${agent.id}" does not have memory configured` });
|
|
65
65
|
}
|
|
66
|
-
if (!await
|
|
66
|
+
if (!await chunkKE4V4LJE_cjs.getAgentMemoryStore({ agent, requestContext })) {
|
|
67
67
|
throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Memory storage is not configured for agent "${agent.id}"` });
|
|
68
68
|
}
|
|
69
69
|
const threadId = conversation_id ?? crypto.randomUUID();
|
|
70
|
-
const resourceId =
|
|
70
|
+
const resourceId = chunk4BLUIUHS_cjs.getEffectiveResourceId(requestContext, resource_id) ?? threadId;
|
|
71
71
|
const thread = await memory.createThread({
|
|
72
72
|
threadId,
|
|
73
73
|
resourceId,
|
|
@@ -76,47 +76,47 @@ var CREATE_CONVERSATION_ROUTE = chunkAZORAK4H_cjs.createRoute({
|
|
|
76
76
|
});
|
|
77
77
|
return buildConversationObject({ thread });
|
|
78
78
|
} catch (error) {
|
|
79
|
-
return
|
|
79
|
+
return chunkYNSUYESL_cjs.handleError(error, "Error creating conversation");
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
});
|
|
83
|
-
var GET_CONVERSATION_ROUTE =
|
|
83
|
+
var GET_CONVERSATION_ROUTE = chunkXTFWFQZ7_cjs.createRoute({
|
|
84
84
|
method: "GET",
|
|
85
85
|
path: "/v1/conversations/:conversationId",
|
|
86
86
|
responseType: "json",
|
|
87
|
-
pathParamSchema:
|
|
88
|
-
responseSchema:
|
|
87
|
+
pathParamSchema: chunk5OGVOPLG_cjs.conversationIdPathParams,
|
|
88
|
+
responseSchema: chunk5OGVOPLG_cjs.conversationObjectSchema,
|
|
89
89
|
summary: "Retrieve a conversation",
|
|
90
90
|
description: "Returns a conversation object backed by a Mastra memory thread",
|
|
91
91
|
tags: ["Responses"],
|
|
92
92
|
requiresAuth: true,
|
|
93
|
-
requiresPermission:
|
|
93
|
+
requiresPermission: chunk4BLUIUHS_cjs.MastraFGAPermissions.AGENTS_READ,
|
|
94
94
|
handler: async ({ mastra, requestContext, conversationId }) => {
|
|
95
95
|
try {
|
|
96
|
-
const match = await
|
|
96
|
+
const match = await chunkKE4V4LJE_cjs.findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });
|
|
97
97
|
if (!match) {
|
|
98
98
|
throw new chunk64ITUOXI_cjs.HTTPException(404, { message: `Conversation ${conversationId} was not found` });
|
|
99
99
|
}
|
|
100
100
|
return buildConversationObject({ thread: match.thread });
|
|
101
101
|
} catch (error) {
|
|
102
|
-
return
|
|
102
|
+
return chunkYNSUYESL_cjs.handleError(error, "Error retrieving conversation");
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
});
|
|
106
|
-
var GET_CONVERSATION_ITEMS_ROUTE =
|
|
106
|
+
var GET_CONVERSATION_ITEMS_ROUTE = chunkXTFWFQZ7_cjs.createRoute({
|
|
107
107
|
method: "GET",
|
|
108
108
|
path: "/v1/conversations/:conversationId/items",
|
|
109
109
|
responseType: "json",
|
|
110
|
-
pathParamSchema:
|
|
111
|
-
responseSchema:
|
|
110
|
+
pathParamSchema: chunk5OGVOPLG_cjs.conversationIdPathParams,
|
|
111
|
+
responseSchema: chunk5OGVOPLG_cjs.conversationItemsListSchema,
|
|
112
112
|
summary: "List conversation items",
|
|
113
113
|
description: "Returns OpenAI-style conversation items derived from the stored thread messages",
|
|
114
114
|
tags: ["Responses"],
|
|
115
115
|
requiresAuth: true,
|
|
116
|
-
requiresPermission:
|
|
116
|
+
requiresPermission: chunk4BLUIUHS_cjs.MastraFGAPermissions.AGENTS_READ,
|
|
117
117
|
handler: async ({ mastra, requestContext, conversationId }) => {
|
|
118
118
|
try {
|
|
119
|
-
const match = await
|
|
119
|
+
const match = await chunkKE4V4LJE_cjs.findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });
|
|
120
120
|
if (!match) {
|
|
121
121
|
throw new chunk64ITUOXI_cjs.HTTPException(404, { message: `Conversation ${conversationId} was not found` });
|
|
122
122
|
}
|
|
@@ -127,31 +127,31 @@ var GET_CONVERSATION_ITEMS_ROUTE = chunkAZORAK4H_cjs.createRoute({
|
|
|
127
127
|
});
|
|
128
128
|
return buildConversationItemsList(chunkF3HP5HM6_cjs.mapMastraMessagesToConversationItems(messages));
|
|
129
129
|
} catch (error) {
|
|
130
|
-
return
|
|
130
|
+
return chunkYNSUYESL_cjs.handleError(error, "Error retrieving conversation");
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
133
|
});
|
|
134
|
-
var DELETE_CONVERSATION_ROUTE =
|
|
134
|
+
var DELETE_CONVERSATION_ROUTE = chunkXTFWFQZ7_cjs.createRoute({
|
|
135
135
|
method: "DELETE",
|
|
136
136
|
path: "/v1/conversations/:conversationId",
|
|
137
137
|
responseType: "json",
|
|
138
|
-
pathParamSchema:
|
|
139
|
-
responseSchema:
|
|
138
|
+
pathParamSchema: chunk5OGVOPLG_cjs.conversationIdPathParams,
|
|
139
|
+
responseSchema: chunk5OGVOPLG_cjs.conversationDeletedSchema,
|
|
140
140
|
summary: "Delete a conversation",
|
|
141
141
|
description: "Deletes a thread-backed conversation and its stored items",
|
|
142
142
|
tags: ["Responses"],
|
|
143
143
|
requiresAuth: true,
|
|
144
|
-
requiresPermission:
|
|
144
|
+
requiresPermission: chunk4BLUIUHS_cjs.MastraFGAPermissions.AGENTS_DELETE,
|
|
145
145
|
handler: async ({ mastra, requestContext, conversationId }) => {
|
|
146
146
|
try {
|
|
147
|
-
const match = await
|
|
147
|
+
const match = await chunkKE4V4LJE_cjs.findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });
|
|
148
148
|
if (!match) {
|
|
149
149
|
throw new chunk64ITUOXI_cjs.HTTPException(404, { message: `Conversation ${conversationId} was not found` });
|
|
150
150
|
}
|
|
151
151
|
await match.memoryStore.deleteThread({ threadId: conversationId });
|
|
152
152
|
return buildConversationDeleted(conversationId);
|
|
153
153
|
} catch (error) {
|
|
154
|
-
return
|
|
154
|
+
return chunkYNSUYESL_cjs.handleError(error, "Error deleting conversation");
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
157
|
});
|
|
@@ -161,5 +161,5 @@ exports.DELETE_CONVERSATION_ROUTE = DELETE_CONVERSATION_ROUTE;
|
|
|
161
161
|
exports.GET_CONVERSATION_ITEMS_ROUTE = GET_CONVERSATION_ITEMS_ROUTE;
|
|
162
162
|
exports.GET_CONVERSATION_ROUTE = GET_CONVERSATION_ROUTE;
|
|
163
163
|
exports.conversations_exports = conversations_exports;
|
|
164
|
-
//# sourceMappingURL=chunk-
|
|
165
|
-
//# sourceMappingURL=chunk-
|
|
164
|
+
//# sourceMappingURL=chunk-JZ2K5LY4.cjs.map
|
|
165
|
+
//# sourceMappingURL=chunk-JZ2K5LY4.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/handlers/conversations.ts"],"names":["__export","createRoute","createConversationBodySchema","conversationObjectSchema","MastraFGAPermissions","HTTPException","getAgentFromSystem","getAgentMemoryStore","randomUUID","getEffectiveResourceId","handleError","conversationIdPathParams","findConversationThreadAcrossAgents","conversationItemsListSchema","mapMastraMessagesToConversationItems","conversationDeletedSchema"],"mappings":"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","file":"chunk-IVFIYTLD.cjs","sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n conversationDeletedSchema,\n conversationIdPathParams,\n conversationItemsListSchema,\n conversationObjectSchema,\n createConversationBodySchema,\n} from '../schemas/conversations';\nimport type { ConversationDeleted, ConversationItemsList, ConversationObject } from '../schemas/conversations';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { mapMastraMessagesToConversationItems } from './responses.adapter';\nimport { findConversationThreadAcrossAgents, getAgentMemoryStore } from './responses.storage';\nimport { getEffectiveResourceId } from './utils';\n\nfunction buildConversationObject({ thread }: { thread: ConversationObject['thread'] }): ConversationObject {\n return {\n id: thread.id,\n object: 'conversation',\n thread,\n };\n}\n\nfunction buildConversationItemsList(items: ConversationItemsList['data']): ConversationItemsList {\n return {\n object: 'list',\n data: items,\n first_id: items[0]?.id ?? null,\n last_id: items.at(-1)?.id ?? null,\n has_more: false,\n };\n}\n\nfunction buildConversationDeleted(conversationId: string): ConversationDeleted {\n return {\n id: conversationId,\n object: 'conversation.deleted',\n deleted: true,\n };\n}\n\nexport const CREATE_CONVERSATION_ROUTE = createRoute({\n method: 'POST',\n path: '/v1/conversations',\n responseType: 'json',\n bodySchema: createConversationBodySchema,\n responseSchema: conversationObjectSchema,\n summary: 'Create a conversation',\n description: 'Creates a new thread-backed conversation for agent-backed Responses API requests',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_CREATE,\n handler: async ({ mastra, requestContext, agent_id, conversation_id, resource_id, title, metadata }) => {\n try {\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for conversations' });\n }\n\n const agent = await getAgentFromSystem({ mastra, agentId: agent_id });\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: `Agent \"${agent.id}\" does not have memory configured` });\n }\n if (!(await getAgentMemoryStore({ agent, requestContext }))) {\n throw new HTTPException(400, { message: `Memory storage is not configured for agent \"${agent.id}\"` });\n }\n\n const threadId = conversation_id ?? randomUUID();\n const resourceId = getEffectiveResourceId(requestContext, resource_id) ?? threadId;\n const thread = await memory.createThread({\n threadId,\n resourceId,\n title,\n metadata,\n });\n\n return buildConversationObject({ thread });\n } catch (error) {\n return handleError(error, 'Error creating conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationObjectSchema,\n summary: 'Retrieve a conversation',\n description: 'Returns a conversation object backed by a Mastra memory thread',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n return buildConversationObject({ thread: match.thread });\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ITEMS_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId/items',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationItemsListSchema,\n summary: 'List conversation items',\n description: 'Returns OpenAI-style conversation items derived from the stored thread messages',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n const { messages } = await match.memoryStore.listMessages({\n threadId: conversationId,\n page: 0,\n perPage: 1000,\n });\n\n return buildConversationItemsList(mapMastraMessagesToConversationItems(messages));\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const DELETE_CONVERSATION_ROUTE = createRoute({\n method: 'DELETE',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationDeletedSchema,\n summary: 'Delete a conversation',\n description: 'Deletes a thread-backed conversation and its stored items',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_DELETE,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n await match.memoryStore.deleteThread({ threadId: conversationId });\n\n return buildConversationDeleted(conversationId);\n } catch (error) {\n return handleError(error, 'Error deleting conversation');\n }\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/conversations.ts"],"names":["__export","createRoute","createConversationBodySchema","conversationObjectSchema","MastraFGAPermissions","HTTPException","getAgentFromSystem","getAgentMemoryStore","randomUUID","getEffectiveResourceId","handleError","conversationIdPathParams","findConversationThreadAcrossAgents","conversationItemsListSchema","mapMastraMessagesToConversationItems","conversationDeletedSchema"],"mappings":"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","file":"chunk-JZ2K5LY4.cjs","sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n conversationDeletedSchema,\n conversationIdPathParams,\n conversationItemsListSchema,\n conversationObjectSchema,\n createConversationBodySchema,\n} from '../schemas/conversations';\nimport type { ConversationDeleted, ConversationItemsList, ConversationObject } from '../schemas/conversations';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { mapMastraMessagesToConversationItems } from './responses.adapter';\nimport { findConversationThreadAcrossAgents, getAgentMemoryStore } from './responses.storage';\nimport { getEffectiveResourceId } from './utils';\n\nfunction buildConversationObject({ thread }: { thread: ConversationObject['thread'] }): ConversationObject {\n return {\n id: thread.id,\n object: 'conversation',\n thread,\n };\n}\n\nfunction buildConversationItemsList(items: ConversationItemsList['data']): ConversationItemsList {\n return {\n object: 'list',\n data: items,\n first_id: items[0]?.id ?? null,\n last_id: items.at(-1)?.id ?? null,\n has_more: false,\n };\n}\n\nfunction buildConversationDeleted(conversationId: string): ConversationDeleted {\n return {\n id: conversationId,\n object: 'conversation.deleted',\n deleted: true,\n };\n}\n\nexport const CREATE_CONVERSATION_ROUTE = createRoute({\n method: 'POST',\n path: '/v1/conversations',\n responseType: 'json',\n bodySchema: createConversationBodySchema,\n responseSchema: conversationObjectSchema,\n summary: 'Create a conversation',\n description: 'Creates a new thread-backed conversation for agent-backed Responses API requests',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_CREATE,\n handler: async ({ mastra, requestContext, agent_id, conversation_id, resource_id, title, metadata }) => {\n try {\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for conversations' });\n }\n\n const agent = await getAgentFromSystem({ mastra, agentId: agent_id });\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: `Agent \"${agent.id}\" does not have memory configured` });\n }\n if (!(await getAgentMemoryStore({ agent, requestContext }))) {\n throw new HTTPException(400, { message: `Memory storage is not configured for agent \"${agent.id}\"` });\n }\n\n const threadId = conversation_id ?? randomUUID();\n const resourceId = getEffectiveResourceId(requestContext, resource_id) ?? threadId;\n const thread = await memory.createThread({\n threadId,\n resourceId,\n title,\n metadata,\n });\n\n return buildConversationObject({ thread });\n } catch (error) {\n return handleError(error, 'Error creating conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationObjectSchema,\n summary: 'Retrieve a conversation',\n description: 'Returns a conversation object backed by a Mastra memory thread',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n return buildConversationObject({ thread: match.thread });\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ITEMS_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId/items',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationItemsListSchema,\n summary: 'List conversation items',\n description: 'Returns OpenAI-style conversation items derived from the stored thread messages',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n const { messages } = await match.memoryStore.listMessages({\n threadId: conversationId,\n page: 0,\n perPage: 1000,\n });\n\n return buildConversationItemsList(mapMastraMessagesToConversationItems(messages));\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const DELETE_CONVERSATION_ROUTE = createRoute({\n method: 'DELETE',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationDeletedSchema,\n summary: 'Delete a conversation',\n description: 'Deletes a thread-backed conversation and its stored items',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_DELETE,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n await match.memoryStore.deleteThread({ threadId: conversationId });\n\n return buildConversationDeleted(conversationId);\n } catch (error) {\n return handleError(error, 'Error deleting conversation');\n }\n },\n});\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk4BLUIUHS_cjs = require('./chunk-4BLUIUHS.cjs');
|
|
4
4
|
var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
|
|
5
5
|
|
|
6
6
|
// src/server/handlers/responses.storage.ts
|
|
@@ -70,7 +70,7 @@ async function findResponseTurnRecord({
|
|
|
70
70
|
if (!memoryStore) {
|
|
71
71
|
return null;
|
|
72
72
|
}
|
|
73
|
-
const effectiveResourceId =
|
|
73
|
+
const effectiveResourceId = chunk4BLUIUHS_cjs.getEffectiveResourceId(requestContext, void 0);
|
|
74
74
|
const { messages: matchedMessages } = await memoryStore.listMessagesById({ messageIds: [responseId] });
|
|
75
75
|
const message = matchedMessages[0];
|
|
76
76
|
if (!message || message.role !== "assistant") {
|
|
@@ -84,7 +84,7 @@ async function findResponseTurnRecord({
|
|
|
84
84
|
if (!thread) {
|
|
85
85
|
return null;
|
|
86
86
|
}
|
|
87
|
-
await
|
|
87
|
+
await chunk4BLUIUHS_cjs.validateThreadOwnership(thread, effectiveResourceId);
|
|
88
88
|
const messageIds = metadata.messageIds.length > 0 ? metadata.messageIds : [message.id];
|
|
89
89
|
const { messages: responseMessages } = await memoryStore.listMessagesById({ messageIds });
|
|
90
90
|
const messagesById = new Map(responseMessages.map((storedMessage) => [storedMessage.id, storedMessage]));
|
|
@@ -116,7 +116,7 @@ async function findConversationThreadAcrossAgents({
|
|
|
116
116
|
if (!mastra) {
|
|
117
117
|
return null;
|
|
118
118
|
}
|
|
119
|
-
const effectiveResourceId =
|
|
119
|
+
const effectiveResourceId = chunk4BLUIUHS_cjs.getEffectiveResourceId(requestContext, void 0);
|
|
120
120
|
const agents = Object.values(mastra.listAgents());
|
|
121
121
|
for (const agent of agents) {
|
|
122
122
|
const memoryStore = await getAgentMemoryStore({ agent, requestContext });
|
|
@@ -127,7 +127,7 @@ async function findConversationThreadAcrossAgents({
|
|
|
127
127
|
if (!thread) {
|
|
128
128
|
continue;
|
|
129
129
|
}
|
|
130
|
-
await
|
|
130
|
+
await chunk4BLUIUHS_cjs.validateThreadOwnership(thread, effectiveResourceId);
|
|
131
131
|
return { thread, memoryStore };
|
|
132
132
|
}
|
|
133
133
|
return null;
|
|
@@ -553,5 +553,5 @@ exports.findResponseTurnRecordAcrossAgents = findResponseTurnRecordAcrossAgents;
|
|
|
553
553
|
exports.getAgentMemoryStore = getAgentMemoryStore;
|
|
554
554
|
exports.persistResponseTurnRecord = persistResponseTurnRecord;
|
|
555
555
|
exports.resolveResponseTurnMessagesForStorage = resolveResponseTurnMessagesForStorage;
|
|
556
|
-
//# sourceMappingURL=chunk-
|
|
557
|
-
//# sourceMappingURL=chunk-
|
|
556
|
+
//# sourceMappingURL=chunk-KE4V4LJE.cjs.map
|
|
557
|
+
//# sourceMappingURL=chunk-KE4V4LJE.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/handlers/responses.storage.ts"],"names":["getEffectiveResourceId","validateThreadOwnership","HTTPException"],"mappings":"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","file":"chunk-MEYWNCUV.cjs","sourcesContent":["import type { Agent, MastraDBMessage } from '@mastra/core/agent';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { StorageThreadType } from '@mastra/core/memory';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { MemoryStorage } from '@mastra/core/storage';\nimport { HTTPException } from '../http-exception';\nimport type {\n ResponseObject,\n ResponseOutputItem,\n ResponseTextConfig,\n ResponseTool,\n ResponseUsage,\n} from '../schemas/responses';\nimport { getEffectiveResourceId, validateThreadOwnership } from './utils';\n\nexport type ThreadExecutionContext = {\n threadId: string;\n resourceId: string;\n};\n\nexport type UsageLike = {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n promptTokens?: number;\n completionTokens?: number;\n} | null;\n\nexport type ProviderMetadataLike = Record<string, Record<string, unknown> | undefined> | undefined;\n\nexport type ResponseTurnRecordMetadata = {\n agentId: string;\n model: string;\n createdAt: number;\n completedAt: number | null;\n status: ResponseObject['status'];\n usage: ResponseUsage | null;\n instructions?: string;\n text?: ResponseTextConfig;\n previousResponseId?: string;\n providerOptions?: ProviderMetadataLike;\n tools: ResponseTool[];\n store: boolean;\n messageIds: string[];\n outputItems?: ResponseOutputItem[];\n};\n\nexport type ResponseTurnRecord = {\n metadata: ResponseTurnRecordMetadata;\n message: MastraDBMessage;\n messages: MastraDBMessage[];\n thread: StorageThreadType;\n memoryStore: MemoryStorage;\n};\n\ntype ResponseResultLike = {\n response?:\n | Promise<{\n dbMessages?: MastraDBMessage[];\n }>\n | {\n dbMessages?: MastraDBMessage[];\n };\n};\n\ntype SyntheticToolResultMessage = Omit<MastraDBMessage, 'role'> & { role: 'tool' };\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * Resolves the backing memory store for a specific agent.\n *\n * This follows the normal agent-memory path. `agent.getMemory()` injects Mastra\n * root storage when the memory has no own storage, so this naturally prefers\n * agent storage first and falls back to Mastra storage through the same codepath.\n */\nexport async function getAgentMemoryStore({\n agent,\n requestContext,\n}: {\n agent: Agent<any, any, any, any>;\n requestContext: RequestContext;\n}): Promise<MemoryStorage | null> {\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n return null;\n }\n\n try {\n return (await memory.storage.getStore('memory')) ?? null;\n } catch {\n return null;\n }\n}\n\n/**\n * Reads the response-turn record metadata attached to a stored assistant message.\n */\nfunction readResponseTurnRecordMetadata(message: MastraDBMessage): ResponseTurnRecordMetadata | null {\n const mastraMetadata = isPlainObject(message.content?.metadata?.mastra) ? message.content.metadata.mastra : null;\n const responseMetadata = mastraMetadata && isPlainObject(mastraMetadata.response) ? mastraMetadata.response : null;\n\n if (\n !responseMetadata ||\n typeof responseMetadata.agentId !== 'string' ||\n typeof responseMetadata.model !== 'string' ||\n typeof responseMetadata.createdAt !== 'number' ||\n (responseMetadata.completedAt !== null && typeof responseMetadata.completedAt !== 'number') ||\n (responseMetadata.instructions !== undefined && typeof responseMetadata.instructions !== 'string') ||\n (responseMetadata.text !== undefined &&\n (!isPlainObject(responseMetadata.text) || !isPlainObject(responseMetadata.text.format))) ||\n (responseMetadata.previousResponseId !== undefined && typeof responseMetadata.previousResponseId !== 'string') ||\n !Array.isArray(responseMetadata.tools) ||\n typeof responseMetadata.store !== 'boolean' ||\n !Array.isArray(responseMetadata.messageIds) ||\n (responseMetadata.outputItems !== undefined && !Array.isArray(responseMetadata.outputItems))\n ) {\n return null;\n }\n\n return {\n agentId: responseMetadata.agentId,\n model: responseMetadata.model,\n createdAt: responseMetadata.createdAt,\n completedAt: responseMetadata.completedAt,\n status: responseMetadata.status === 'completed' ? 'completed' : 'incomplete',\n usage: responseMetadata.usage as ResponseUsage | null,\n instructions: responseMetadata.instructions,\n text: responseMetadata.text as ResponseTextConfig | undefined,\n previousResponseId: responseMetadata.previousResponseId,\n providerOptions: responseMetadata.providerOptions as ProviderMetadataLike,\n tools: responseMetadata.tools as ResponseTool[],\n store: responseMetadata.store,\n messageIds: responseMetadata.messageIds.filter((value): value is string => typeof value === 'string'),\n outputItems: responseMetadata.outputItems as ResponseOutputItem[] | undefined,\n };\n}\n\n/**\n * Writes response-turn record metadata onto a persisted assistant message.\n */\nfunction writeResponseTurnRecordMetadata(\n message: MastraDBMessage,\n metadata: ResponseTurnRecordMetadata,\n): MastraDBMessage {\n const contentMetadata = isPlainObject(message.content?.metadata) ? message.content.metadata : {};\n const mastraMetadata = isPlainObject(contentMetadata.mastra) ? contentMetadata.mastra : {};\n\n return {\n ...message,\n content: {\n ...message.content,\n metadata: {\n ...contentMetadata,\n mastra: {\n ...mastraMetadata,\n response: metadata,\n },\n },\n },\n };\n}\n\n/**\n * Looks up a stored response-turn record by response id.\n *\n * Response ids are assistant message ids, so this reconstructs the record by\n * loading that persisted assistant message, reading its response metadata, then\n * reloading the full set of stored turn messages referenced by the metadata.\n */\nexport async function findResponseTurnRecord({\n agent,\n responseId,\n requestContext,\n}: {\n agent: Agent<any, any, any, any>;\n responseId: string;\n requestContext: RequestContext;\n}): Promise<ResponseTurnRecord | null> {\n const memoryStore = await getAgentMemoryStore({ agent, requestContext });\n if (!memoryStore) {\n return null;\n }\n\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n const { messages: matchedMessages } = await memoryStore.listMessagesById({ messageIds: [responseId] });\n const message = matchedMessages[0];\n if (!message || message.role !== 'assistant') {\n return null;\n }\n\n const metadata = readResponseTurnRecordMetadata(message);\n if (!metadata || metadata.agentId !== agent.id) {\n return null;\n }\n\n const thread = message.threadId ? await memoryStore.getThreadById({ threadId: message.threadId }) : null;\n if (!thread) {\n return null;\n }\n\n await validateThreadOwnership(thread, effectiveResourceId);\n const messageIds = metadata.messageIds.length > 0 ? metadata.messageIds : [message.id];\n const { messages: responseMessages } = await memoryStore.listMessagesById({ messageIds });\n const messagesById = new Map(responseMessages.map(storedMessage => [storedMessage.id, storedMessage] as const));\n const orderedMessages = messageIds\n .map(messageId => messagesById.get(messageId))\n .filter((storedMessage): storedMessage is MastraDBMessage => Boolean(storedMessage));\n\n return { metadata, message, messages: orderedMessages, thread, memoryStore };\n}\n\nexport async function findResponseTurnRecordAcrossAgents({\n mastra,\n responseId,\n requestContext,\n}: {\n mastra: Mastra | undefined;\n responseId: string;\n requestContext: RequestContext;\n}): Promise<ResponseTurnRecord | null> {\n if (!mastra) {\n return null;\n }\n\n const agents = Object.values(mastra.listAgents()) as Agent<any, any, any, any>[];\n for (const agent of agents) {\n const match = await findResponseTurnRecord({ agent, responseId, requestContext });\n if (match) {\n return match;\n }\n }\n\n return null;\n}\n\nexport type ConversationThreadRecord = {\n thread: StorageThreadType;\n memoryStore: MemoryStorage;\n};\n\nexport async function findConversationThreadAcrossAgents({\n mastra,\n conversationId,\n requestContext,\n}: {\n mastra: Mastra | undefined;\n conversationId: string;\n requestContext: RequestContext;\n}): Promise<ConversationThreadRecord | null> {\n if (!mastra) {\n return null;\n }\n\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n const agents = Object.values(mastra.listAgents()) as Agent<any, any, any, any>[];\n\n for (const agent of agents) {\n const memoryStore = await getAgentMemoryStore({ agent, requestContext });\n if (!memoryStore) {\n continue;\n }\n\n const thread = await memoryStore.getThreadById({ threadId: conversationId });\n if (!thread) {\n continue;\n }\n\n await validateThreadOwnership(thread, effectiveResourceId);\n return { thread, memoryStore };\n }\n\n return null;\n}\n\n/**\n * Creates a synthetic assistant message for responses that did not emit any\n * persisted DB messages but still need a durable response-turn record.\n */\nfunction createSyntheticResponseMessage({\n createdAt,\n responseId,\n text,\n threadContext,\n}: {\n createdAt?: Date;\n responseId: string;\n text: string;\n threadContext: ThreadExecutionContext;\n}): MastraDBMessage {\n return {\n id: responseId,\n role: 'assistant',\n type: 'text',\n createdAt: createdAt ?? new Date(),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n content: {\n format: 2 as const,\n parts: text ? [{ type: 'text', text }] : [],\n },\n };\n}\n\nfunction hasTextPart(message: MastraDBMessage): boolean {\n return Boolean(\n message.content?.parts?.some(\n part => isPlainObject(part) && part.type === 'text' && typeof part.text === 'string' && part.text.length > 0,\n ),\n );\n}\n\nfunction isEmptyAssistantMessage(message: MastraDBMessage): boolean {\n return message.role === 'assistant' && Array.isArray(message.content?.parts) && message.content.parts.length === 0;\n}\n\nfunction hasToolInvocationPart(message: MastraDBMessage): boolean {\n return Boolean(\n message.content?.parts?.some(\n part => isPlainObject(part) && part.type === 'tool-invocation' && isPlainObject(part.toolInvocation),\n ),\n );\n}\n\nfunction getMessageText(message: MastraDBMessage): string {\n return (\n message.content?.parts\n ?.flatMap(part =>\n isPlainObject(part) && part.type === 'text' && typeof part.text === 'string' ? [part.text] : [],\n )\n .join('') ?? ''\n );\n}\n\nfunction getOutputMessageText(item: Extract<ResponseOutputItem, { type: 'message' }>): string {\n return item.content.map(part => part.text).join('');\n}\n\nfunction normalizeFallbackComparisonText(text: string): string {\n return text.trim();\n}\n\nfunction matchesFallbackText(messageText: string, fallbackText: string): boolean {\n return (\n messageText === fallbackText ||\n normalizeFallbackComparisonText(messageText) === normalizeFallbackComparisonText(fallbackText)\n );\n}\n\nfunction hasMatchingAssistantText(\n messages: MastraDBMessage[],\n item: Extract<ResponseOutputItem, { type: 'message' }>,\n): boolean {\n const fallbackText = getOutputMessageText(item);\n\n return messages.some(\n message =>\n message.role === 'assistant' &&\n hasTextPart(message) &&\n matchesFallbackText(getMessageText(message), fallbackText),\n );\n}\n\nfunction shouldReplaceAssistantText(messageText: string, fallbackText: string): boolean {\n const normalizedMessageText = normalizeFallbackComparisonText(messageText);\n const normalizedFallbackText = normalizeFallbackComparisonText(fallbackText);\n\n return (\n normalizedFallbackText !== normalizedMessageText &&\n (fallbackText.startsWith(messageText) || normalizedFallbackText.startsWith(normalizedMessageText))\n );\n}\n\nfunction getAssistantMessageTexts(messages: MastraDBMessage[]): string[] {\n return messages.flatMap(message =>\n message.role === 'assistant' && hasTextPart(message) ? [getMessageText(message)] : [],\n );\n}\n\nfunction shouldAddFallbackMessageText(\n messages: MastraDBMessage[],\n item: Extract<ResponseOutputItem, { type: 'message' }>,\n): boolean {\n const assistantTexts = getAssistantMessageTexts(messages);\n if (assistantTexts.length === 0) {\n return true;\n }\n\n const fallbackText = getOutputMessageText(item);\n return assistantTexts.every(messageText => shouldReplaceAssistantText(messageText, fallbackText));\n}\n\nfunction shouldReplaceAssistantTextWithFallback({\n fallbackMessageTexts,\n message,\n textOnlyFallbackMessageTexts,\n}: {\n fallbackMessageTexts: Set<string>;\n message: MastraDBMessage;\n textOnlyFallbackMessageTexts: Set<string>;\n}): boolean {\n if (message.role !== 'assistant' || !hasTextPart(message)) {\n return false;\n }\n\n const messageText = getMessageText(message);\n if (!messageText) {\n return false;\n }\n\n const comparisonTexts = hasToolInvocationPart(message) ? fallbackMessageTexts : textOnlyFallbackMessageTexts;\n\n return [...comparisonTexts].some(fallbackText => shouldReplaceAssistantText(messageText, fallbackText));\n}\n\nfunction replaceAssistantTextWithFallback({\n fallbackMessageTexts,\n message,\n textOnlyFallbackMessageTexts,\n}: {\n fallbackMessageTexts: Set<string>;\n message: MastraDBMessage;\n textOnlyFallbackMessageTexts: Set<string>;\n}): MastraDBMessage {\n if (!shouldReplaceAssistantTextWithFallback({ fallbackMessageTexts, message, textOnlyFallbackMessageTexts })) {\n return message;\n }\n\n const parts = message.content?.parts ?? [];\n const remainingParts = parts.filter(part => !(isPlainObject(part) && part.type === 'text'));\n\n return {\n ...message,\n content: {\n ...message.content,\n parts: remainingParts,\n },\n };\n}\n\nfunction parseFunctionCallArguments(value: string): unknown {\n try {\n return JSON.parse(value);\n } catch {\n return { __raw: value };\n }\n}\n\nfunction createSyntheticToolResultMessage({\n baseMessage,\n item,\n responseId,\n toolCall,\n}: {\n baseMessage: Pick<MastraDBMessage, 'createdAt' | 'threadId' | 'resourceId'>;\n item: Extract<ResponseOutputItem, { type: 'function_call_output' }>;\n responseId: string;\n toolCall?: { args: unknown; toolName: string };\n}): SyntheticToolResultMessage {\n return {\n ...baseMessage,\n id: `${responseId}:tool-result:${item.call_id}`,\n role: 'tool',\n type: 'tool-result',\n content: {\n format: 2 as const,\n parts: [\n {\n type: 'tool-invocation',\n toolInvocation: {\n state: 'result',\n toolCallId: item.call_id,\n toolName: toolCall?.toolName ?? 'unknown',\n args: toolCall?.args ?? {},\n result: item.output,\n },\n },\n ],\n },\n };\n}\n\nfunction toMastraDBMessage(message: SyntheticToolResultMessage): MastraDBMessage {\n // MastraDBMessage does not yet type persisted v2 tool-role messages, but\n // storage and response mapping already handle them at runtime.\n return message as unknown as MastraDBMessage;\n}\n\nfunction createSyntheticMessagesFromOutputItems({\n contextOutputItems,\n outputItems,\n responseId,\n threadContext,\n}: {\n contextOutputItems?: ResponseOutputItem[];\n outputItems: ResponseOutputItem[];\n responseId: string;\n threadContext: ThreadExecutionContext;\n}): MastraDBMessage[] {\n const toolContextItems = contextOutputItems ?? outputItems;\n const toolCallsById = new Map(\n toolContextItems.flatMap(item =>\n item.type === 'function_call'\n ? [[item.call_id, { args: parseFunctionCallArguments(item.arguments), toolName: item.name }] as const]\n : [],\n ),\n );\n\n const baseCreatedAt = Date.now();\n\n return outputItems.map((item, index): MastraDBMessage => {\n const baseMessage = {\n createdAt: new Date(baseCreatedAt + index),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n };\n\n if (item.type === 'function_call') {\n return {\n ...baseMessage,\n id: `${responseId}:tool-call:${item.call_id}`,\n role: 'assistant',\n type: 'tool-call',\n content: {\n format: 2 as const,\n parts: [\n {\n type: 'tool-invocation',\n toolInvocation: {\n state: 'call',\n toolCallId: item.call_id,\n toolName: item.name,\n args: parseFunctionCallArguments(item.arguments),\n },\n },\n ],\n },\n };\n }\n\n if (item.type === 'function_call_output') {\n const toolCall = toolCallsById.get(item.call_id);\n\n return toMastraDBMessage(createSyntheticToolResultMessage({ baseMessage, item, responseId, toolCall }));\n }\n\n return {\n ...baseMessage,\n id: item.id,\n role: 'assistant',\n type: 'text',\n content: {\n format: 2 as const,\n parts: item.content.map(part => ({ type: 'text' as const, text: part.text })),\n },\n };\n });\n}\n\nfunction getToolInvocationParts(message: MastraDBMessage): Array<Record<string, unknown>> {\n const parts = Array.isArray(message.content?.parts) ? message.content.parts : [];\n\n return parts.flatMap(part =>\n isPlainObject(part) && part.type === 'tool-invocation' && isPlainObject(part.toolInvocation)\n ? [part.toolInvocation]\n : [],\n );\n}\n\nfunction getMissingFallbackOutputItems({\n fallbackOutputItems = [],\n messages,\n}: {\n fallbackOutputItems?: ResponseObject['output'];\n messages: MastraDBMessage[];\n}): ResponseOutputItem[] {\n if (!fallbackOutputItems.length) {\n return [];\n }\n\n const existingCallIds = new Set<string>();\n const existingResultCallIds = new Set<string>();\n\n for (const message of messages) {\n for (const toolInvocation of getToolInvocationParts(message)) {\n const toolCallId = typeof toolInvocation.toolCallId === 'string' ? toolInvocation.toolCallId : null;\n if (!toolCallId) {\n continue;\n }\n\n if (message.role === 'assistant' && (toolInvocation.args !== undefined || toolInvocation.result === undefined)) {\n existingCallIds.add(toolCallId);\n }\n if (toolInvocation.result !== undefined) {\n existingResultCallIds.add(toolCallId);\n }\n }\n }\n\n return fallbackOutputItems.filter(item => {\n if (item.type === 'function_call') {\n return !existingCallIds.has(item.call_id);\n }\n\n if (item.type === 'function_call_output') {\n return !existingResultCallIds.has(item.call_id);\n }\n\n if (item.type === 'message') {\n if (!item.content.some(part => part.text.length > 0) || hasMatchingAssistantText(messages, item)) {\n return false;\n }\n\n return shouldAddFallbackMessageText(messages, item);\n }\n\n return false;\n });\n}\n\nfunction getFallbackOutputIdForMessage(\n message: MastraDBMessage,\n responseId: string,\n fallbackOutputIds: Set<string>,\n): string | null {\n for (const toolInvocation of getToolInvocationParts(message)) {\n const toolCallId = typeof toolInvocation.toolCallId === 'string' ? toolInvocation.toolCallId : null;\n if (!toolCallId) {\n continue;\n }\n\n if (message.role === 'assistant' && toolInvocation.args !== undefined) {\n return toolCallId;\n }\n\n if (toolInvocation.result !== undefined) {\n return `${toolCallId}:output`;\n }\n }\n\n if (message.role === 'assistant' && hasTextPart(message)) {\n return fallbackOutputIds.has(message.id) ? message.id : responseId;\n }\n\n return null;\n}\n\nfunction sortMessagesByFallbackOutputOrder({\n fallbackOutputItems = [],\n messages,\n responseId,\n}: {\n fallbackOutputItems?: ResponseObject['output'];\n messages: MastraDBMessage[];\n responseId: string;\n}): MastraDBMessage[] {\n if (!fallbackOutputItems.length) {\n return messages;\n }\n\n const outputOrder = new Map(fallbackOutputItems.map((item, index) => [item.id, index]));\n const fallbackOutputIds = new Set(outputOrder.keys());\n\n return messages\n .map((message, index) => ({\n index,\n message,\n outputIndex:\n outputOrder.get(getFallbackOutputIdForMessage(message, responseId, fallbackOutputIds) ?? '') ??\n Number.MAX_SAFE_INTEGER,\n }))\n .sort((left, right) => left.outputIndex - right.outputIndex || left.index - right.index)\n .map(({ message }) => message);\n}\n\n/**\n * Resolves the Mastra messages that belong to the response turn being stored.\n */\nexport async function resolveResponseTurnMessagesForStorage({\n result,\n responseId,\n text,\n threadContext,\n fallbackOutputItems,\n}: {\n result: ResponseResultLike;\n responseId: string;\n text: string;\n threadContext: ThreadExecutionContext | null;\n fallbackOutputItems?: ResponseObject['output'];\n}): Promise<MastraDBMessage[]> {\n const response = await result.response;\n const responseMessages = response?.dbMessages?.length ? response.dbMessages : [];\n\n if (!threadContext) {\n return responseMessages;\n }\n\n if (responseMessages.length === 0) {\n if (fallbackOutputItems?.length) {\n const syntheticMessages = createSyntheticMessagesFromOutputItems({\n outputItems: fallbackOutputItems,\n responseId,\n threadContext,\n });\n\n return text && !syntheticMessages.some(message => message.role === 'assistant' && hasTextPart(message))\n ? [\n ...syntheticMessages,\n createSyntheticResponseMessage({\n createdAt: new Date(new Date(syntheticMessages.at(-1)?.createdAt ?? Date.now()).getTime() + 1),\n responseId,\n text,\n threadContext,\n }),\n ]\n : syntheticMessages;\n }\n\n return [createSyntheticResponseMessage({ responseId, text, threadContext })];\n }\n\n const missingFallbackItems = getMissingFallbackOutputItems({ fallbackOutputItems, messages: responseMessages });\n const missingFallbackMessageIds = new Set(\n missingFallbackItems\n .filter((item): item is Extract<ResponseOutputItem, { type: 'message' }> => item.type === 'message')\n .map(item => item.id),\n );\n const fallbackItemsWithMatchingAssistantText = (fallbackOutputItems ?? []).filter(\n (item): item is Extract<ResponseOutputItem, { type: 'message' }> =>\n item.type === 'message' && hasMatchingAssistantText(responseMessages, item),\n );\n const textOnlyFallbackMessageTexts = new Set(\n fallbackItemsWithMatchingAssistantText.map(getOutputMessageText).filter(Boolean),\n );\n const fallbackMessageTexts = new Set(\n (fallbackOutputItems ?? [])\n .filter((item): item is Extract<ResponseOutputItem, { type: 'message' }> => item.type === 'message')\n .filter(item => missingFallbackMessageIds.has(item.id) || fallbackItemsWithMatchingAssistantText.includes(item))\n .map(getOutputMessageText)\n .filter(Boolean),\n );\n const baseMessages = fallbackMessageTexts.size\n ? responseMessages.map(message =>\n replaceAssistantTextWithFallback({ fallbackMessageTexts, message, textOnlyFallbackMessageTexts }),\n )\n : responseMessages;\n const syntheticFallbackMessages = createSyntheticMessagesFromOutputItems({\n contextOutputItems: fallbackOutputItems ?? [],\n outputItems: missingFallbackItems,\n responseId,\n threadContext,\n });\n const resolvedMessages = sortMessagesByFallbackOutputOrder({\n fallbackOutputItems,\n messages: [...baseMessages, ...syntheticFallbackMessages],\n responseId,\n });\n\n if (text && !resolvedMessages.some(message => message.role === 'assistant' && hasTextPart(message))) {\n return [...resolvedMessages, createSyntheticResponseMessage({ responseId, text, threadContext })];\n }\n\n return resolvedMessages;\n}\n\n/**\n * Persists a response-turn record by anchoring it on the final assistant\n * message in the stored turn.\n *\n * The response id becomes that assistant message id, and the response-specific\n * metadata is written onto the assistant message so later retrieval can rebuild\n * the Responses object from thread-backed storage.\n */\nexport async function persistResponseTurnRecord({\n memoryStore,\n responseId,\n metadata,\n threadContext,\n messages,\n}: {\n memoryStore: MemoryStorage | null;\n responseId: string;\n metadata: ResponseTurnRecordMetadata;\n threadContext: ThreadExecutionContext;\n messages: MastraDBMessage[];\n}): Promise<void> {\n if (!memoryStore) {\n throw new HTTPException(500, { message: 'Memory storage was not available while storing the response' });\n }\n\n const normalizedMessages: MastraDBMessage[] = messages.map(message => ({\n ...message,\n threadId: message.threadId ?? threadContext.threadId,\n resourceId: message.resourceId ?? threadContext.resourceId,\n }));\n\n const lastAssistantIndex = [...normalizedMessages].map(message => message.role).lastIndexOf('assistant');\n const responseAnchorIndex =\n [...normalizedMessages]\n .map((message, index) => ({ index, message }))\n .reverse()\n .find(({ message }) => message.role === 'assistant' && hasTextPart(message))?.index ?? lastAssistantIndex;\n const lastAssistantMessage =\n responseAnchorIndex >= 0\n ? {\n ...normalizedMessages[responseAnchorIndex]!,\n id: responseId,\n }\n : ({\n id: responseId,\n role: 'assistant' as const,\n type: 'text' as const,\n createdAt: new Date(metadata.completedAt ? metadata.completedAt * 1000 : Date.now()),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n content: {\n format: 2 as const,\n parts: [],\n },\n } satisfies MastraDBMessage);\n\n if (responseAnchorIndex >= 0) {\n normalizedMessages[responseAnchorIndex] = lastAssistantMessage;\n } else {\n normalizedMessages.push(lastAssistantMessage);\n }\n const storedMessageIndex = responseAnchorIndex >= 0 ? responseAnchorIndex : normalizedMessages.length - 1;\n\n const droppedSupersededMessageIds = normalizedMessages.flatMap((message, index) =>\n index !== storedMessageIndex && isEmptyAssistantMessage(message) && messages[index]?.id\n ? [messages[index]!.id]\n : [],\n );\n const staleMessageIds =\n responseAnchorIndex >= 0 && messages[responseAnchorIndex]?.id && messages[responseAnchorIndex]?.id !== responseId\n ? [messages[responseAnchorIndex]!.id]\n : [];\n const messagesToSave = normalizedMessages.filter(\n (message, index) => index === storedMessageIndex || !isEmptyAssistantMessage(message),\n );\n\n const storedMessage = writeResponseTurnRecordMetadata(lastAssistantMessage, {\n ...metadata,\n messageIds: messagesToSave.map(message => message.id),\n });\n\n if (responseAnchorIndex >= 0) {\n normalizedMessages[responseAnchorIndex] = storedMessage;\n } else {\n normalizedMessages[normalizedMessages.length - 1] = storedMessage;\n }\n\n const savedMessages = normalizedMessages.filter(\n (message, index) => index === storedMessageIndex || !isEmptyAssistantMessage(message),\n );\n\n await memoryStore.saveMessages({ messages: savedMessages });\n\n const deleteMessageIds = [...new Set([...staleMessageIds, ...droppedSupersededMessageIds])];\n if (deleteMessageIds.length > 0) {\n await memoryStore.deleteMessages(deleteMessageIds);\n }\n}\n\n/**\n * Removes all persisted messages for a stored response-turn record.\n */\nexport async function deleteResponseTurnRecord({\n responseTurnRecord,\n}: {\n responseTurnRecord: ResponseTurnRecord;\n}): Promise<void> {\n const messageIds =\n responseTurnRecord.messages.length > 0\n ? responseTurnRecord.messages.map(message => message.id)\n : [responseTurnRecord.message.id];\n\n await responseTurnRecord.memoryStore.deleteMessages(messageIds);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/responses.storage.ts"],"names":["getEffectiveResourceId","validateThreadOwnership","HTTPException"],"mappings":"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","file":"chunk-KE4V4LJE.cjs","sourcesContent":["import type { Agent, MastraDBMessage } from '@mastra/core/agent';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { StorageThreadType } from '@mastra/core/memory';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { MemoryStorage } from '@mastra/core/storage';\nimport { HTTPException } from '../http-exception';\nimport type {\n ResponseObject,\n ResponseOutputItem,\n ResponseTextConfig,\n ResponseTool,\n ResponseUsage,\n} from '../schemas/responses';\nimport { getEffectiveResourceId, validateThreadOwnership } from './utils';\n\nexport type ThreadExecutionContext = {\n threadId: string;\n resourceId: string;\n};\n\nexport type UsageLike = {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n promptTokens?: number;\n completionTokens?: number;\n} | null;\n\nexport type ProviderMetadataLike = Record<string, Record<string, unknown> | undefined> | undefined;\n\nexport type ResponseTurnRecordMetadata = {\n agentId: string;\n model: string;\n createdAt: number;\n completedAt: number | null;\n status: ResponseObject['status'];\n usage: ResponseUsage | null;\n instructions?: string;\n text?: ResponseTextConfig;\n previousResponseId?: string;\n providerOptions?: ProviderMetadataLike;\n tools: ResponseTool[];\n store: boolean;\n messageIds: string[];\n outputItems?: ResponseOutputItem[];\n};\n\nexport type ResponseTurnRecord = {\n metadata: ResponseTurnRecordMetadata;\n message: MastraDBMessage;\n messages: MastraDBMessage[];\n thread: StorageThreadType;\n memoryStore: MemoryStorage;\n};\n\ntype ResponseResultLike = {\n response?:\n | Promise<{\n dbMessages?: MastraDBMessage[];\n }>\n | {\n dbMessages?: MastraDBMessage[];\n };\n};\n\ntype SyntheticToolResultMessage = Omit<MastraDBMessage, 'role'> & { role: 'tool' };\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * Resolves the backing memory store for a specific agent.\n *\n * This follows the normal agent-memory path. `agent.getMemory()` injects Mastra\n * root storage when the memory has no own storage, so this naturally prefers\n * agent storage first and falls back to Mastra storage through the same codepath.\n */\nexport async function getAgentMemoryStore({\n agent,\n requestContext,\n}: {\n agent: Agent<any, any, any, any>;\n requestContext: RequestContext;\n}): Promise<MemoryStorage | null> {\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n return null;\n }\n\n try {\n return (await memory.storage.getStore('memory')) ?? null;\n } catch {\n return null;\n }\n}\n\n/**\n * Reads the response-turn record metadata attached to a stored assistant message.\n */\nfunction readResponseTurnRecordMetadata(message: MastraDBMessage): ResponseTurnRecordMetadata | null {\n const mastraMetadata = isPlainObject(message.content?.metadata?.mastra) ? message.content.metadata.mastra : null;\n const responseMetadata = mastraMetadata && isPlainObject(mastraMetadata.response) ? mastraMetadata.response : null;\n\n if (\n !responseMetadata ||\n typeof responseMetadata.agentId !== 'string' ||\n typeof responseMetadata.model !== 'string' ||\n typeof responseMetadata.createdAt !== 'number' ||\n (responseMetadata.completedAt !== null && typeof responseMetadata.completedAt !== 'number') ||\n (responseMetadata.instructions !== undefined && typeof responseMetadata.instructions !== 'string') ||\n (responseMetadata.text !== undefined &&\n (!isPlainObject(responseMetadata.text) || !isPlainObject(responseMetadata.text.format))) ||\n (responseMetadata.previousResponseId !== undefined && typeof responseMetadata.previousResponseId !== 'string') ||\n !Array.isArray(responseMetadata.tools) ||\n typeof responseMetadata.store !== 'boolean' ||\n !Array.isArray(responseMetadata.messageIds) ||\n (responseMetadata.outputItems !== undefined && !Array.isArray(responseMetadata.outputItems))\n ) {\n return null;\n }\n\n return {\n agentId: responseMetadata.agentId,\n model: responseMetadata.model,\n createdAt: responseMetadata.createdAt,\n completedAt: responseMetadata.completedAt,\n status: responseMetadata.status === 'completed' ? 'completed' : 'incomplete',\n usage: responseMetadata.usage as ResponseUsage | null,\n instructions: responseMetadata.instructions,\n text: responseMetadata.text as ResponseTextConfig | undefined,\n previousResponseId: responseMetadata.previousResponseId,\n providerOptions: responseMetadata.providerOptions as ProviderMetadataLike,\n tools: responseMetadata.tools as ResponseTool[],\n store: responseMetadata.store,\n messageIds: responseMetadata.messageIds.filter((value): value is string => typeof value === 'string'),\n outputItems: responseMetadata.outputItems as ResponseOutputItem[] | undefined,\n };\n}\n\n/**\n * Writes response-turn record metadata onto a persisted assistant message.\n */\nfunction writeResponseTurnRecordMetadata(\n message: MastraDBMessage,\n metadata: ResponseTurnRecordMetadata,\n): MastraDBMessage {\n const contentMetadata = isPlainObject(message.content?.metadata) ? message.content.metadata : {};\n const mastraMetadata = isPlainObject(contentMetadata.mastra) ? contentMetadata.mastra : {};\n\n return {\n ...message,\n content: {\n ...message.content,\n metadata: {\n ...contentMetadata,\n mastra: {\n ...mastraMetadata,\n response: metadata,\n },\n },\n },\n };\n}\n\n/**\n * Looks up a stored response-turn record by response id.\n *\n * Response ids are assistant message ids, so this reconstructs the record by\n * loading that persisted assistant message, reading its response metadata, then\n * reloading the full set of stored turn messages referenced by the metadata.\n */\nexport async function findResponseTurnRecord({\n agent,\n responseId,\n requestContext,\n}: {\n agent: Agent<any, any, any, any>;\n responseId: string;\n requestContext: RequestContext;\n}): Promise<ResponseTurnRecord | null> {\n const memoryStore = await getAgentMemoryStore({ agent, requestContext });\n if (!memoryStore) {\n return null;\n }\n\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n const { messages: matchedMessages } = await memoryStore.listMessagesById({ messageIds: [responseId] });\n const message = matchedMessages[0];\n if (!message || message.role !== 'assistant') {\n return null;\n }\n\n const metadata = readResponseTurnRecordMetadata(message);\n if (!metadata || metadata.agentId !== agent.id) {\n return null;\n }\n\n const thread = message.threadId ? await memoryStore.getThreadById({ threadId: message.threadId }) : null;\n if (!thread) {\n return null;\n }\n\n await validateThreadOwnership(thread, effectiveResourceId);\n const messageIds = metadata.messageIds.length > 0 ? metadata.messageIds : [message.id];\n const { messages: responseMessages } = await memoryStore.listMessagesById({ messageIds });\n const messagesById = new Map(responseMessages.map(storedMessage => [storedMessage.id, storedMessage] as const));\n const orderedMessages = messageIds\n .map(messageId => messagesById.get(messageId))\n .filter((storedMessage): storedMessage is MastraDBMessage => Boolean(storedMessage));\n\n return { metadata, message, messages: orderedMessages, thread, memoryStore };\n}\n\nexport async function findResponseTurnRecordAcrossAgents({\n mastra,\n responseId,\n requestContext,\n}: {\n mastra: Mastra | undefined;\n responseId: string;\n requestContext: RequestContext;\n}): Promise<ResponseTurnRecord | null> {\n if (!mastra) {\n return null;\n }\n\n const agents = Object.values(mastra.listAgents()) as Agent<any, any, any, any>[];\n for (const agent of agents) {\n const match = await findResponseTurnRecord({ agent, responseId, requestContext });\n if (match) {\n return match;\n }\n }\n\n return null;\n}\n\nexport type ConversationThreadRecord = {\n thread: StorageThreadType;\n memoryStore: MemoryStorage;\n};\n\nexport async function findConversationThreadAcrossAgents({\n mastra,\n conversationId,\n requestContext,\n}: {\n mastra: Mastra | undefined;\n conversationId: string;\n requestContext: RequestContext;\n}): Promise<ConversationThreadRecord | null> {\n if (!mastra) {\n return null;\n }\n\n const effectiveResourceId = getEffectiveResourceId(requestContext, undefined);\n const agents = Object.values(mastra.listAgents()) as Agent<any, any, any, any>[];\n\n for (const agent of agents) {\n const memoryStore = await getAgentMemoryStore({ agent, requestContext });\n if (!memoryStore) {\n continue;\n }\n\n const thread = await memoryStore.getThreadById({ threadId: conversationId });\n if (!thread) {\n continue;\n }\n\n await validateThreadOwnership(thread, effectiveResourceId);\n return { thread, memoryStore };\n }\n\n return null;\n}\n\n/**\n * Creates a synthetic assistant message for responses that did not emit any\n * persisted DB messages but still need a durable response-turn record.\n */\nfunction createSyntheticResponseMessage({\n createdAt,\n responseId,\n text,\n threadContext,\n}: {\n createdAt?: Date;\n responseId: string;\n text: string;\n threadContext: ThreadExecutionContext;\n}): MastraDBMessage {\n return {\n id: responseId,\n role: 'assistant',\n type: 'text',\n createdAt: createdAt ?? new Date(),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n content: {\n format: 2 as const,\n parts: text ? [{ type: 'text', text }] : [],\n },\n };\n}\n\nfunction hasTextPart(message: MastraDBMessage): boolean {\n return Boolean(\n message.content?.parts?.some(\n part => isPlainObject(part) && part.type === 'text' && typeof part.text === 'string' && part.text.length > 0,\n ),\n );\n}\n\nfunction isEmptyAssistantMessage(message: MastraDBMessage): boolean {\n return message.role === 'assistant' && Array.isArray(message.content?.parts) && message.content.parts.length === 0;\n}\n\nfunction hasToolInvocationPart(message: MastraDBMessage): boolean {\n return Boolean(\n message.content?.parts?.some(\n part => isPlainObject(part) && part.type === 'tool-invocation' && isPlainObject(part.toolInvocation),\n ),\n );\n}\n\nfunction getMessageText(message: MastraDBMessage): string {\n return (\n message.content?.parts\n ?.flatMap(part =>\n isPlainObject(part) && part.type === 'text' && typeof part.text === 'string' ? [part.text] : [],\n )\n .join('') ?? ''\n );\n}\n\nfunction getOutputMessageText(item: Extract<ResponseOutputItem, { type: 'message' }>): string {\n return item.content.map(part => part.text).join('');\n}\n\nfunction normalizeFallbackComparisonText(text: string): string {\n return text.trim();\n}\n\nfunction matchesFallbackText(messageText: string, fallbackText: string): boolean {\n return (\n messageText === fallbackText ||\n normalizeFallbackComparisonText(messageText) === normalizeFallbackComparisonText(fallbackText)\n );\n}\n\nfunction hasMatchingAssistantText(\n messages: MastraDBMessage[],\n item: Extract<ResponseOutputItem, { type: 'message' }>,\n): boolean {\n const fallbackText = getOutputMessageText(item);\n\n return messages.some(\n message =>\n message.role === 'assistant' &&\n hasTextPart(message) &&\n matchesFallbackText(getMessageText(message), fallbackText),\n );\n}\n\nfunction shouldReplaceAssistantText(messageText: string, fallbackText: string): boolean {\n const normalizedMessageText = normalizeFallbackComparisonText(messageText);\n const normalizedFallbackText = normalizeFallbackComparisonText(fallbackText);\n\n return (\n normalizedFallbackText !== normalizedMessageText &&\n (fallbackText.startsWith(messageText) || normalizedFallbackText.startsWith(normalizedMessageText))\n );\n}\n\nfunction getAssistantMessageTexts(messages: MastraDBMessage[]): string[] {\n return messages.flatMap(message =>\n message.role === 'assistant' && hasTextPart(message) ? [getMessageText(message)] : [],\n );\n}\n\nfunction shouldAddFallbackMessageText(\n messages: MastraDBMessage[],\n item: Extract<ResponseOutputItem, { type: 'message' }>,\n): boolean {\n const assistantTexts = getAssistantMessageTexts(messages);\n if (assistantTexts.length === 0) {\n return true;\n }\n\n const fallbackText = getOutputMessageText(item);\n return assistantTexts.every(messageText => shouldReplaceAssistantText(messageText, fallbackText));\n}\n\nfunction shouldReplaceAssistantTextWithFallback({\n fallbackMessageTexts,\n message,\n textOnlyFallbackMessageTexts,\n}: {\n fallbackMessageTexts: Set<string>;\n message: MastraDBMessage;\n textOnlyFallbackMessageTexts: Set<string>;\n}): boolean {\n if (message.role !== 'assistant' || !hasTextPart(message)) {\n return false;\n }\n\n const messageText = getMessageText(message);\n if (!messageText) {\n return false;\n }\n\n const comparisonTexts = hasToolInvocationPart(message) ? fallbackMessageTexts : textOnlyFallbackMessageTexts;\n\n return [...comparisonTexts].some(fallbackText => shouldReplaceAssistantText(messageText, fallbackText));\n}\n\nfunction replaceAssistantTextWithFallback({\n fallbackMessageTexts,\n message,\n textOnlyFallbackMessageTexts,\n}: {\n fallbackMessageTexts: Set<string>;\n message: MastraDBMessage;\n textOnlyFallbackMessageTexts: Set<string>;\n}): MastraDBMessage {\n if (!shouldReplaceAssistantTextWithFallback({ fallbackMessageTexts, message, textOnlyFallbackMessageTexts })) {\n return message;\n }\n\n const parts = message.content?.parts ?? [];\n const remainingParts = parts.filter(part => !(isPlainObject(part) && part.type === 'text'));\n\n return {\n ...message,\n content: {\n ...message.content,\n parts: remainingParts,\n },\n };\n}\n\nfunction parseFunctionCallArguments(value: string): unknown {\n try {\n return JSON.parse(value);\n } catch {\n return { __raw: value };\n }\n}\n\nfunction createSyntheticToolResultMessage({\n baseMessage,\n item,\n responseId,\n toolCall,\n}: {\n baseMessage: Pick<MastraDBMessage, 'createdAt' | 'threadId' | 'resourceId'>;\n item: Extract<ResponseOutputItem, { type: 'function_call_output' }>;\n responseId: string;\n toolCall?: { args: unknown; toolName: string };\n}): SyntheticToolResultMessage {\n return {\n ...baseMessage,\n id: `${responseId}:tool-result:${item.call_id}`,\n role: 'tool',\n type: 'tool-result',\n content: {\n format: 2 as const,\n parts: [\n {\n type: 'tool-invocation',\n toolInvocation: {\n state: 'result',\n toolCallId: item.call_id,\n toolName: toolCall?.toolName ?? 'unknown',\n args: toolCall?.args ?? {},\n result: item.output,\n },\n },\n ],\n },\n };\n}\n\nfunction toMastraDBMessage(message: SyntheticToolResultMessage): MastraDBMessage {\n // MastraDBMessage does not yet type persisted v2 tool-role messages, but\n // storage and response mapping already handle them at runtime.\n return message as unknown as MastraDBMessage;\n}\n\nfunction createSyntheticMessagesFromOutputItems({\n contextOutputItems,\n outputItems,\n responseId,\n threadContext,\n}: {\n contextOutputItems?: ResponseOutputItem[];\n outputItems: ResponseOutputItem[];\n responseId: string;\n threadContext: ThreadExecutionContext;\n}): MastraDBMessage[] {\n const toolContextItems = contextOutputItems ?? outputItems;\n const toolCallsById = new Map(\n toolContextItems.flatMap(item =>\n item.type === 'function_call'\n ? [[item.call_id, { args: parseFunctionCallArguments(item.arguments), toolName: item.name }] as const]\n : [],\n ),\n );\n\n const baseCreatedAt = Date.now();\n\n return outputItems.map((item, index): MastraDBMessage => {\n const baseMessage = {\n createdAt: new Date(baseCreatedAt + index),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n };\n\n if (item.type === 'function_call') {\n return {\n ...baseMessage,\n id: `${responseId}:tool-call:${item.call_id}`,\n role: 'assistant',\n type: 'tool-call',\n content: {\n format: 2 as const,\n parts: [\n {\n type: 'tool-invocation',\n toolInvocation: {\n state: 'call',\n toolCallId: item.call_id,\n toolName: item.name,\n args: parseFunctionCallArguments(item.arguments),\n },\n },\n ],\n },\n };\n }\n\n if (item.type === 'function_call_output') {\n const toolCall = toolCallsById.get(item.call_id);\n\n return toMastraDBMessage(createSyntheticToolResultMessage({ baseMessage, item, responseId, toolCall }));\n }\n\n return {\n ...baseMessage,\n id: item.id,\n role: 'assistant',\n type: 'text',\n content: {\n format: 2 as const,\n parts: item.content.map(part => ({ type: 'text' as const, text: part.text })),\n },\n };\n });\n}\n\nfunction getToolInvocationParts(message: MastraDBMessage): Array<Record<string, unknown>> {\n const parts = Array.isArray(message.content?.parts) ? message.content.parts : [];\n\n return parts.flatMap(part =>\n isPlainObject(part) && part.type === 'tool-invocation' && isPlainObject(part.toolInvocation)\n ? [part.toolInvocation]\n : [],\n );\n}\n\nfunction getMissingFallbackOutputItems({\n fallbackOutputItems = [],\n messages,\n}: {\n fallbackOutputItems?: ResponseObject['output'];\n messages: MastraDBMessage[];\n}): ResponseOutputItem[] {\n if (!fallbackOutputItems.length) {\n return [];\n }\n\n const existingCallIds = new Set<string>();\n const existingResultCallIds = new Set<string>();\n\n for (const message of messages) {\n for (const toolInvocation of getToolInvocationParts(message)) {\n const toolCallId = typeof toolInvocation.toolCallId === 'string' ? toolInvocation.toolCallId : null;\n if (!toolCallId) {\n continue;\n }\n\n if (message.role === 'assistant' && (toolInvocation.args !== undefined || toolInvocation.result === undefined)) {\n existingCallIds.add(toolCallId);\n }\n if (toolInvocation.result !== undefined) {\n existingResultCallIds.add(toolCallId);\n }\n }\n }\n\n return fallbackOutputItems.filter(item => {\n if (item.type === 'function_call') {\n return !existingCallIds.has(item.call_id);\n }\n\n if (item.type === 'function_call_output') {\n return !existingResultCallIds.has(item.call_id);\n }\n\n if (item.type === 'message') {\n if (!item.content.some(part => part.text.length > 0) || hasMatchingAssistantText(messages, item)) {\n return false;\n }\n\n return shouldAddFallbackMessageText(messages, item);\n }\n\n return false;\n });\n}\n\nfunction getFallbackOutputIdForMessage(\n message: MastraDBMessage,\n responseId: string,\n fallbackOutputIds: Set<string>,\n): string | null {\n for (const toolInvocation of getToolInvocationParts(message)) {\n const toolCallId = typeof toolInvocation.toolCallId === 'string' ? toolInvocation.toolCallId : null;\n if (!toolCallId) {\n continue;\n }\n\n if (message.role === 'assistant' && toolInvocation.args !== undefined) {\n return toolCallId;\n }\n\n if (toolInvocation.result !== undefined) {\n return `${toolCallId}:output`;\n }\n }\n\n if (message.role === 'assistant' && hasTextPart(message)) {\n return fallbackOutputIds.has(message.id) ? message.id : responseId;\n }\n\n return null;\n}\n\nfunction sortMessagesByFallbackOutputOrder({\n fallbackOutputItems = [],\n messages,\n responseId,\n}: {\n fallbackOutputItems?: ResponseObject['output'];\n messages: MastraDBMessage[];\n responseId: string;\n}): MastraDBMessage[] {\n if (!fallbackOutputItems.length) {\n return messages;\n }\n\n const outputOrder = new Map(fallbackOutputItems.map((item, index) => [item.id, index]));\n const fallbackOutputIds = new Set(outputOrder.keys());\n\n return messages\n .map((message, index) => ({\n index,\n message,\n outputIndex:\n outputOrder.get(getFallbackOutputIdForMessage(message, responseId, fallbackOutputIds) ?? '') ??\n Number.MAX_SAFE_INTEGER,\n }))\n .sort((left, right) => left.outputIndex - right.outputIndex || left.index - right.index)\n .map(({ message }) => message);\n}\n\n/**\n * Resolves the Mastra messages that belong to the response turn being stored.\n */\nexport async function resolveResponseTurnMessagesForStorage({\n result,\n responseId,\n text,\n threadContext,\n fallbackOutputItems,\n}: {\n result: ResponseResultLike;\n responseId: string;\n text: string;\n threadContext: ThreadExecutionContext | null;\n fallbackOutputItems?: ResponseObject['output'];\n}): Promise<MastraDBMessage[]> {\n const response = await result.response;\n const responseMessages = response?.dbMessages?.length ? response.dbMessages : [];\n\n if (!threadContext) {\n return responseMessages;\n }\n\n if (responseMessages.length === 0) {\n if (fallbackOutputItems?.length) {\n const syntheticMessages = createSyntheticMessagesFromOutputItems({\n outputItems: fallbackOutputItems,\n responseId,\n threadContext,\n });\n\n return text && !syntheticMessages.some(message => message.role === 'assistant' && hasTextPart(message))\n ? [\n ...syntheticMessages,\n createSyntheticResponseMessage({\n createdAt: new Date(new Date(syntheticMessages.at(-1)?.createdAt ?? Date.now()).getTime() + 1),\n responseId,\n text,\n threadContext,\n }),\n ]\n : syntheticMessages;\n }\n\n return [createSyntheticResponseMessage({ responseId, text, threadContext })];\n }\n\n const missingFallbackItems = getMissingFallbackOutputItems({ fallbackOutputItems, messages: responseMessages });\n const missingFallbackMessageIds = new Set(\n missingFallbackItems\n .filter((item): item is Extract<ResponseOutputItem, { type: 'message' }> => item.type === 'message')\n .map(item => item.id),\n );\n const fallbackItemsWithMatchingAssistantText = (fallbackOutputItems ?? []).filter(\n (item): item is Extract<ResponseOutputItem, { type: 'message' }> =>\n item.type === 'message' && hasMatchingAssistantText(responseMessages, item),\n );\n const textOnlyFallbackMessageTexts = new Set(\n fallbackItemsWithMatchingAssistantText.map(getOutputMessageText).filter(Boolean),\n );\n const fallbackMessageTexts = new Set(\n (fallbackOutputItems ?? [])\n .filter((item): item is Extract<ResponseOutputItem, { type: 'message' }> => item.type === 'message')\n .filter(item => missingFallbackMessageIds.has(item.id) || fallbackItemsWithMatchingAssistantText.includes(item))\n .map(getOutputMessageText)\n .filter(Boolean),\n );\n const baseMessages = fallbackMessageTexts.size\n ? responseMessages.map(message =>\n replaceAssistantTextWithFallback({ fallbackMessageTexts, message, textOnlyFallbackMessageTexts }),\n )\n : responseMessages;\n const syntheticFallbackMessages = createSyntheticMessagesFromOutputItems({\n contextOutputItems: fallbackOutputItems ?? [],\n outputItems: missingFallbackItems,\n responseId,\n threadContext,\n });\n const resolvedMessages = sortMessagesByFallbackOutputOrder({\n fallbackOutputItems,\n messages: [...baseMessages, ...syntheticFallbackMessages],\n responseId,\n });\n\n if (text && !resolvedMessages.some(message => message.role === 'assistant' && hasTextPart(message))) {\n return [...resolvedMessages, createSyntheticResponseMessage({ responseId, text, threadContext })];\n }\n\n return resolvedMessages;\n}\n\n/**\n * Persists a response-turn record by anchoring it on the final assistant\n * message in the stored turn.\n *\n * The response id becomes that assistant message id, and the response-specific\n * metadata is written onto the assistant message so later retrieval can rebuild\n * the Responses object from thread-backed storage.\n */\nexport async function persistResponseTurnRecord({\n memoryStore,\n responseId,\n metadata,\n threadContext,\n messages,\n}: {\n memoryStore: MemoryStorage | null;\n responseId: string;\n metadata: ResponseTurnRecordMetadata;\n threadContext: ThreadExecutionContext;\n messages: MastraDBMessage[];\n}): Promise<void> {\n if (!memoryStore) {\n throw new HTTPException(500, { message: 'Memory storage was not available while storing the response' });\n }\n\n const normalizedMessages: MastraDBMessage[] = messages.map(message => ({\n ...message,\n threadId: message.threadId ?? threadContext.threadId,\n resourceId: message.resourceId ?? threadContext.resourceId,\n }));\n\n const lastAssistantIndex = [...normalizedMessages].map(message => message.role).lastIndexOf('assistant');\n const responseAnchorIndex =\n [...normalizedMessages]\n .map((message, index) => ({ index, message }))\n .reverse()\n .find(({ message }) => message.role === 'assistant' && hasTextPart(message))?.index ?? lastAssistantIndex;\n const lastAssistantMessage =\n responseAnchorIndex >= 0\n ? {\n ...normalizedMessages[responseAnchorIndex]!,\n id: responseId,\n }\n : ({\n id: responseId,\n role: 'assistant' as const,\n type: 'text' as const,\n createdAt: new Date(metadata.completedAt ? metadata.completedAt * 1000 : Date.now()),\n threadId: threadContext.threadId,\n resourceId: threadContext.resourceId,\n content: {\n format: 2 as const,\n parts: [],\n },\n } satisfies MastraDBMessage);\n\n if (responseAnchorIndex >= 0) {\n normalizedMessages[responseAnchorIndex] = lastAssistantMessage;\n } else {\n normalizedMessages.push(lastAssistantMessage);\n }\n const storedMessageIndex = responseAnchorIndex >= 0 ? responseAnchorIndex : normalizedMessages.length - 1;\n\n const droppedSupersededMessageIds = normalizedMessages.flatMap((message, index) =>\n index !== storedMessageIndex && isEmptyAssistantMessage(message) && messages[index]?.id\n ? [messages[index]!.id]\n : [],\n );\n const staleMessageIds =\n responseAnchorIndex >= 0 && messages[responseAnchorIndex]?.id && messages[responseAnchorIndex]?.id !== responseId\n ? [messages[responseAnchorIndex]!.id]\n : [];\n const messagesToSave = normalizedMessages.filter(\n (message, index) => index === storedMessageIndex || !isEmptyAssistantMessage(message),\n );\n\n const storedMessage = writeResponseTurnRecordMetadata(lastAssistantMessage, {\n ...metadata,\n messageIds: messagesToSave.map(message => message.id),\n });\n\n if (responseAnchorIndex >= 0) {\n normalizedMessages[responseAnchorIndex] = storedMessage;\n } else {\n normalizedMessages[normalizedMessages.length - 1] = storedMessage;\n }\n\n const savedMessages = normalizedMessages.filter(\n (message, index) => index === storedMessageIndex || !isEmptyAssistantMessage(message),\n );\n\n await memoryStore.saveMessages({ messages: savedMessages });\n\n const deleteMessageIds = [...new Set([...staleMessageIds, ...droppedSupersededMessageIds])];\n if (deleteMessageIds.length > 0) {\n await memoryStore.deleteMessages(deleteMessageIds);\n }\n}\n\n/**\n * Removes all persisted messages for a stored response-turn record.\n */\nexport async function deleteResponseTurnRecord({\n responseTurnRecord,\n}: {\n responseTurnRecord: ResponseTurnRecord;\n}): Promise<void> {\n const messageIds =\n responseTurnRecord.messages.length > 0\n ? responseTurnRecord.messages.map(message => message.id)\n : [responseTurnRecord.message.id];\n\n await responseTurnRecord.memoryStore.deleteMessages(messageIds);\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkC6CCPCEC_cjs = require('./chunk-C6CCPCEC.cjs');
|
|
4
|
-
var
|
|
5
|
-
var chunkAZORAK4H_cjs = require('./chunk-AZORAK4H.cjs');
|
|
6
|
-
var chunkB34S64RC_cjs = require('./chunk-B34S64RC.cjs');
|
|
4
|
+
var chunk4BLUIUHS_cjs = require('./chunk-4BLUIUHS.cjs');
|
|
7
5
|
var chunkDIG2K5CV_cjs = require('./chunk-DIG2K5CV.cjs');
|
|
6
|
+
var chunkYNSUYESL_cjs = require('./chunk-YNSUYESL.cjs');
|
|
7
|
+
var chunkXTFWFQZ7_cjs = require('./chunk-XTFWFQZ7.cjs');
|
|
8
8
|
var chunkO7I5CWRX_cjs = require('./chunk-O7I5CWRX.cjs');
|
|
9
9
|
|
|
10
10
|
// src/server/handlers/logs.ts
|
|
@@ -14,7 +14,7 @@ chunkO7I5CWRX_cjs.__export(logs_exports, {
|
|
|
14
14
|
LIST_LOGS_ROUTE: () => LIST_LOGS_ROUTE,
|
|
15
15
|
LIST_LOG_TRANSPORTS_ROUTE: () => LIST_LOG_TRANSPORTS_ROUTE
|
|
16
16
|
});
|
|
17
|
-
var LIST_LOG_TRANSPORTS_ROUTE =
|
|
17
|
+
var LIST_LOG_TRANSPORTS_ROUTE = chunkXTFWFQZ7_cjs.createRoute({
|
|
18
18
|
method: "GET",
|
|
19
19
|
path: "/logs/transports",
|
|
20
20
|
responseType: "json",
|
|
@@ -31,11 +31,11 @@ var LIST_LOG_TRANSPORTS_ROUTE = chunkAZORAK4H_cjs.createRoute({
|
|
|
31
31
|
transports: transports ? [...transports.keys()] : []
|
|
32
32
|
};
|
|
33
33
|
} catch (error) {
|
|
34
|
-
return
|
|
34
|
+
return chunkYNSUYESL_cjs.handleError(error, "Error getting log Transports");
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
|
-
var LIST_LOGS_ROUTE =
|
|
38
|
+
var LIST_LOGS_ROUTE = chunkXTFWFQZ7_cjs.createRoute({
|
|
39
39
|
method: "GET",
|
|
40
40
|
path: "/logs",
|
|
41
41
|
responseType: "json",
|
|
@@ -48,8 +48,8 @@ var LIST_LOGS_ROUTE = chunkAZORAK4H_cjs.createRoute({
|
|
|
48
48
|
handler: async ({ mastra, ...params }) => {
|
|
49
49
|
try {
|
|
50
50
|
const { transportId, fromDate, toDate, logLevel, filters: _filters, page, perPage } = params;
|
|
51
|
-
|
|
52
|
-
const filters =
|
|
51
|
+
chunk4BLUIUHS_cjs.validateBody({ transportId });
|
|
52
|
+
const filters = chunk4BLUIUHS_cjs.parseFilters(_filters);
|
|
53
53
|
const logs = await mastra.listLogs(transportId, {
|
|
54
54
|
fromDate,
|
|
55
55
|
toDate,
|
|
@@ -60,11 +60,11 @@ var LIST_LOGS_ROUTE = chunkAZORAK4H_cjs.createRoute({
|
|
|
60
60
|
});
|
|
61
61
|
return logs;
|
|
62
62
|
} catch (error) {
|
|
63
|
-
return
|
|
63
|
+
return chunkYNSUYESL_cjs.handleError(error, "Error getting logs");
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
});
|
|
67
|
-
var LIST_LOGS_BY_RUN_ID_ROUTE =
|
|
67
|
+
var LIST_LOGS_BY_RUN_ID_ROUTE = chunkXTFWFQZ7_cjs.createRoute({
|
|
68
68
|
method: "GET",
|
|
69
69
|
path: "/logs/:runId",
|
|
70
70
|
responseType: "json",
|
|
@@ -78,8 +78,8 @@ var LIST_LOGS_BY_RUN_ID_ROUTE = chunkAZORAK4H_cjs.createRoute({
|
|
|
78
78
|
handler: async ({ mastra, runId, ...params }) => {
|
|
79
79
|
try {
|
|
80
80
|
const { transportId, fromDate, toDate, logLevel, filters: _filters, page, perPage } = params;
|
|
81
|
-
|
|
82
|
-
const filters =
|
|
81
|
+
chunk4BLUIUHS_cjs.validateBody({ runId, transportId });
|
|
82
|
+
const filters = chunk4BLUIUHS_cjs.parseFilters(_filters);
|
|
83
83
|
const logs = await mastra.listLogsByRunId({
|
|
84
84
|
runId,
|
|
85
85
|
transportId,
|
|
@@ -92,7 +92,7 @@ var LIST_LOGS_BY_RUN_ID_ROUTE = chunkAZORAK4H_cjs.createRoute({
|
|
|
92
92
|
});
|
|
93
93
|
return logs;
|
|
94
94
|
} catch (error) {
|
|
95
|
-
return
|
|
95
|
+
return chunkYNSUYESL_cjs.handleError(error, "Error getting logs by run ID");
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
});
|
|
@@ -101,5 +101,5 @@ exports.LIST_LOGS_BY_RUN_ID_ROUTE = LIST_LOGS_BY_RUN_ID_ROUTE;
|
|
|
101
101
|
exports.LIST_LOGS_ROUTE = LIST_LOGS_ROUTE;
|
|
102
102
|
exports.LIST_LOG_TRANSPORTS_ROUTE = LIST_LOG_TRANSPORTS_ROUTE;
|
|
103
103
|
exports.logs_exports = logs_exports;
|
|
104
|
-
//# sourceMappingURL=chunk-
|
|
105
|
-
//# sourceMappingURL=chunk-
|
|
104
|
+
//# sourceMappingURL=chunk-LEIV627E.cjs.map
|
|
105
|
+
//# sourceMappingURL=chunk-LEIV627E.cjs.map
|