@mastra/server 1.26.0-alpha.9 → 1.26.1-alpha.0
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 +106 -0
- package/dist/_types/@internal_core/dist/index.d.ts +22 -0
- package/dist/{chunk-GOXZQ2BL.js → chunk-24SW3KB3.js} +4 -4
- package/dist/{chunk-GOXZQ2BL.js.map → chunk-24SW3KB3.js.map} +1 -1
- package/dist/{chunk-WNG6C2OY.cjs → chunk-2DNSABMG.cjs} +25 -25
- package/dist/{chunk-WNG6C2OY.cjs.map → chunk-2DNSABMG.cjs.map} +1 -1
- package/dist/{chunk-B7SBAXEP.cjs → chunk-2Q4IAQP6.cjs} +7 -7
- package/dist/{chunk-B7SBAXEP.cjs.map → chunk-2Q4IAQP6.cjs.map} +1 -1
- package/dist/{chunk-WBPWUNCX.js → chunk-2Q5WIJZV.js} +7 -5
- package/dist/chunk-2Q5WIJZV.js.map +1 -0
- package/dist/{chunk-S2QK2XG2.js → chunk-2YY3EMMS.js} +6 -3
- package/dist/chunk-2YY3EMMS.js.map +1 -0
- package/dist/{chunk-K5FZ3MKO.js → chunk-3224ZDIF.js} +5 -5
- package/dist/{chunk-K5FZ3MKO.js.map → chunk-3224ZDIF.js.map} +1 -1
- package/dist/{chunk-BP3FLWZT.js → chunk-3ACZ2AKY.js} +7 -7
- package/dist/{chunk-BP3FLWZT.js.map → chunk-3ACZ2AKY.js.map} +1 -1
- package/dist/{chunk-G2S6L4IR.js → chunk-3BLT6ISZ.js} +3 -3
- package/dist/{chunk-G2S6L4IR.js.map → chunk-3BLT6ISZ.js.map} +1 -1
- package/dist/{chunk-KO2V7HRR.js → chunk-3OQMTFIV.js} +3 -3
- package/dist/{chunk-KO2V7HRR.js.map → chunk-3OQMTFIV.js.map} +1 -1
- package/dist/{chunk-LWK57QIA.cjs → chunk-4WDBN7FE.cjs} +3 -3
- package/dist/{chunk-LWK57QIA.cjs.map → chunk-4WDBN7FE.cjs.map} +1 -1
- package/dist/{chunk-D2R7PY34.cjs → chunk-5BD65C6R.cjs} +156 -143
- package/dist/chunk-5BD65C6R.cjs.map +1 -0
- package/dist/{chunk-BWUKBT7Z.js → chunk-5TTCUSSA.js} +4 -4
- package/dist/{chunk-BWUKBT7Z.js.map → chunk-5TTCUSSA.js.map} +1 -1
- package/dist/{chunk-5EL4CHO6.cjs → chunk-5Y75OYZM.cjs} +28 -28
- package/dist/{chunk-5EL4CHO6.cjs.map → chunk-5Y75OYZM.cjs.map} +1 -1
- package/dist/{chunk-XM6TVQQD.js → chunk-6KMLRD3J.js} +3 -3
- package/dist/{chunk-XM6TVQQD.js.map → chunk-6KMLRD3J.js.map} +1 -1
- package/dist/{chunk-VTPTMQFA.cjs → chunk-6NHGGSHC.cjs} +14 -7
- package/dist/chunk-6NHGGSHC.cjs.map +1 -0
- package/dist/{chunk-EYWOOOQG.cjs → chunk-6UWPE4WD.cjs} +50 -40
- package/dist/chunk-6UWPE4WD.cjs.map +1 -0
- package/dist/{chunk-YG3JPRRY.cjs → chunk-73MISLDN.cjs} +19 -19
- package/dist/{chunk-YG3JPRRY.cjs.map → chunk-73MISLDN.cjs.map} +1 -1
- package/dist/{chunk-MP6KOR6Q.js → chunk-77UDRX7O.js} +54 -6
- package/dist/chunk-77UDRX7O.js.map +1 -0
- package/dist/{chunk-XI4SISOH.js → chunk-7I34BNA3.js} +6 -6
- package/dist/{chunk-XI4SISOH.js.map → chunk-7I34BNA3.js.map} +1 -1
- package/dist/{chunk-ACC4X5V6.js → chunk-7LBBDT4S.js} +4 -4
- package/dist/{chunk-ACC4X5V6.js.map → chunk-7LBBDT4S.js.map} +1 -1
- package/dist/{chunk-AQQEGR2L.cjs → chunk-7SPUHOHW.cjs} +24 -24
- package/dist/{chunk-AQQEGR2L.cjs.map → chunk-7SPUHOHW.cjs.map} +1 -1
- package/dist/{chunk-TKEJJLHK.js → chunk-AIRSK4QU.js} +4 -4
- package/dist/{chunk-TKEJJLHK.js.map → chunk-AIRSK4QU.js.map} +1 -1
- package/dist/{chunk-E6SN323H.js → chunk-AJADOQR4.js} +15 -6
- package/dist/chunk-AJADOQR4.js.map +1 -0
- package/dist/{chunk-GIIEDO2K.js → chunk-APFB2KF2.js} +3 -3
- package/dist/{chunk-GIIEDO2K.js.map → chunk-APFB2KF2.js.map} +1 -1
- package/dist/{chunk-GV5CQBWZ.js → chunk-BAJOHKSB.js} +9 -6
- package/dist/chunk-BAJOHKSB.js.map +1 -0
- package/dist/{chunk-6AEW3U34.cjs → chunk-BFJLZBI7.cjs} +18 -9
- package/dist/chunk-BFJLZBI7.cjs.map +1 -0
- package/dist/{chunk-ZFCNTRZ2.cjs → chunk-BIQ74OIO.cjs} +11 -3
- package/dist/chunk-BIQ74OIO.cjs.map +1 -0
- package/dist/{chunk-J2JX7FYX.cjs → chunk-BLINU5LG.cjs} +7 -7
- package/dist/{chunk-J2JX7FYX.cjs.map → chunk-BLINU5LG.cjs.map} +1 -1
- package/dist/{chunk-5ZIB34RZ.cjs → chunk-BLYICPLO.cjs} +140 -140
- package/dist/{chunk-5ZIB34RZ.cjs.map → chunk-BLYICPLO.cjs.map} +1 -1
- package/dist/{chunk-NWS4QRE6.js → chunk-BUFXUC67.js} +3 -3
- package/dist/{chunk-NWS4QRE6.js.map → chunk-BUFXUC67.js.map} +1 -1
- package/dist/{chunk-TQKWQKHP.js → chunk-C4T45CIM.js} +4 -4
- package/dist/{chunk-TQKWQKHP.js.map → chunk-C4T45CIM.js.map} +1 -1
- package/dist/{chunk-6BHM6ZJR.cjs → chunk-C6CCPCEC.cjs} +5 -5
- package/dist/{chunk-6BHM6ZJR.cjs.map → chunk-C6CCPCEC.cjs.map} +1 -1
- package/dist/{chunk-V7EVEI4C.js → chunk-CB5KNGCV.js} +10 -3
- package/dist/chunk-CB5KNGCV.js.map +1 -0
- package/dist/{chunk-5JWVKCGZ.cjs → chunk-CIPZ4VOZ.cjs} +12 -12
- package/dist/{chunk-5JWVKCGZ.cjs.map → chunk-CIPZ4VOZ.cjs.map} +1 -1
- package/dist/{chunk-WKBMLKBC.cjs → chunk-CQNREK5Y.cjs} +10 -10
- package/dist/{chunk-WKBMLKBC.cjs.map → chunk-CQNREK5Y.cjs.map} +1 -1
- package/dist/{chunk-VLNRGJEM.js → chunk-CT2AKZPZ.js} +3 -3
- package/dist/{chunk-VLNRGJEM.js.map → chunk-CT2AKZPZ.js.map} +1 -1
- package/dist/{chunk-6EORCZSC.cjs → chunk-D7P775NV.cjs} +28 -28
- package/dist/{chunk-6EORCZSC.cjs.map → chunk-D7P775NV.cjs.map} +1 -1
- package/dist/{chunk-YZFZHEHC.cjs → chunk-DCDQNIYY.cjs} +4 -4
- package/dist/{chunk-YZFZHEHC.cjs.map → chunk-DCDQNIYY.cjs.map} +1 -1
- package/dist/{chunk-O6TI6M65.js → chunk-DG6MQPBR.js} +6 -6
- package/dist/{chunk-O6TI6M65.js.map → chunk-DG6MQPBR.js.map} +1 -1
- package/dist/{chunk-EES2ZZGL.cjs → chunk-DIG2K5CV.cjs} +6 -3
- package/dist/chunk-DIG2K5CV.cjs.map +1 -0
- package/dist/{chunk-HITLRKIU.cjs → chunk-DIX6JWN4.cjs} +11 -10
- package/dist/chunk-DIX6JWN4.cjs.map +1 -0
- package/dist/{chunk-6MMZVEFC.js → chunk-DLULXY6G.js} +3 -3
- package/dist/{chunk-6MMZVEFC.js.map → chunk-DLULXY6G.js.map} +1 -1
- package/dist/{chunk-P6CD6Y4Z.cjs → chunk-DMMI7BSA.cjs} +4 -4
- package/dist/{chunk-P6CD6Y4Z.cjs.map → chunk-DMMI7BSA.cjs.map} +1 -1
- package/dist/{chunk-E63CFDUE.cjs → chunk-DRNCUSSM.cjs} +8 -8
- package/dist/{chunk-E63CFDUE.cjs.map → chunk-DRNCUSSM.cjs.map} +1 -1
- package/dist/{chunk-ECEYFPVI.js → chunk-EFJIK2PW.js} +3 -3
- package/dist/{chunk-ECEYFPVI.js.map → chunk-EFJIK2PW.js.map} +1 -1
- package/dist/{chunk-VDYI3V6P.cjs → chunk-F7DL7V5F.cjs} +5 -5
- package/dist/{chunk-VDYI3V6P.cjs.map → chunk-F7DL7V5F.cjs.map} +1 -1
- package/dist/{chunk-PWEAVIXV.cjs → chunk-FFSD7OV7.cjs} +19 -19
- package/dist/{chunk-PWEAVIXV.cjs.map → chunk-FFSD7OV7.cjs.map} +1 -1
- package/dist/{chunk-IN35SZ2C.js → chunk-GELMHP5G.js} +9 -7
- package/dist/chunk-GELMHP5G.js.map +1 -0
- package/dist/{chunk-2U535WWQ.cjs → chunk-GFP7IMFR.cjs} +5 -5
- package/dist/{chunk-2U535WWQ.cjs.map → chunk-GFP7IMFR.cjs.map} +1 -1
- package/dist/{chunk-DDLTXG3Y.cjs → chunk-H3SXVQYW.cjs} +96 -94
- package/dist/chunk-H3SXVQYW.cjs.map +1 -0
- package/dist/{chunk-XM2YJ3NM.cjs → chunk-IABGFWY2.cjs} +5 -5
- package/dist/{chunk-XM2YJ3NM.cjs.map → chunk-IABGFWY2.cjs.map} +1 -1
- package/dist/{chunk-JPH6OOSM.js → chunk-IBK77L63.js} +4 -4
- package/dist/{chunk-JPH6OOSM.js.map → chunk-IBK77L63.js.map} +1 -1
- package/dist/{chunk-KSHYQV6C.js → chunk-IFYVRBFS.js} +10 -4
- package/dist/chunk-IFYVRBFS.js.map +1 -0
- package/dist/{chunk-WC4RIS4D.js → chunk-INGHVKDO.js} +3 -3
- package/dist/{chunk-WC4RIS4D.js.map → chunk-INGHVKDO.js.map} +1 -1
- package/dist/{chunk-22KGDT57.js → chunk-JDC7A4YV.js} +5 -5
- package/dist/{chunk-22KGDT57.js.map → chunk-JDC7A4YV.js.map} +1 -1
- package/dist/{chunk-ZB4FHUTD.js → chunk-JKFMRHNM.js} +3 -3
- package/dist/{chunk-ZB4FHUTD.js.map → chunk-JKFMRHNM.js.map} +1 -1
- package/dist/{chunk-Q6FUJNUH.js → chunk-JV2ZLLVN.js} +5 -5
- package/dist/{chunk-Q6FUJNUH.js.map → chunk-JV2ZLLVN.js.map} +1 -1
- package/dist/{chunk-JSED6H32.js → chunk-K6WBL3KZ.js} +3 -3
- package/dist/{chunk-JSED6H32.js.map → chunk-K6WBL3KZ.js.map} +1 -1
- package/dist/{chunk-RN2QRBV4.js → chunk-KBJI2ZGO.js} +5 -5
- package/dist/{chunk-RN2QRBV4.js.map → chunk-KBJI2ZGO.js.map} +1 -1
- package/dist/{chunk-MY6TVQ24.js → chunk-KDIGKXA3.js} +13 -13
- package/dist/{chunk-MY6TVQ24.js.map → chunk-KDIGKXA3.js.map} +1 -1
- package/dist/{chunk-6MDHPZOJ.js → chunk-KEFOJ6EP.js} +4 -4
- package/dist/chunk-KEFOJ6EP.js.map +1 -0
- package/dist/{chunk-UKMRQ6ER.cjs → chunk-KME4O3RJ.cjs} +15 -9
- package/dist/chunk-KME4O3RJ.cjs.map +1 -0
- package/dist/{chunk-TMCDS3XP.cjs → chunk-KSARJEHH.cjs} +24 -24
- package/dist/{chunk-TMCDS3XP.cjs.map → chunk-KSARJEHH.cjs.map} +1 -1
- package/dist/{chunk-XNUXAO2P.cjs → chunk-KTS4NFM5.cjs} +92 -42
- package/dist/chunk-KTS4NFM5.cjs.map +1 -0
- package/dist/{chunk-DCWP744F.cjs → chunk-KZ3ERBUT.cjs} +4 -4
- package/dist/{chunk-DCWP744F.cjs.map → chunk-KZ3ERBUT.cjs.map} +1 -1
- package/dist/{chunk-KKQMEJOK.js → chunk-LCAQQOLF.js} +3 -3
- package/dist/{chunk-KKQMEJOK.js.map → chunk-LCAQQOLF.js.map} +1 -1
- package/dist/{chunk-Q7TFYRGQ.cjs → chunk-LCGUC3UL.cjs} +29 -29
- package/dist/{chunk-Q7TFYRGQ.cjs.map → chunk-LCGUC3UL.cjs.map} +1 -1
- package/dist/{chunk-QKOLB27L.cjs → chunk-LZ32IIH2.cjs} +5 -5
- package/dist/{chunk-QKOLB27L.cjs.map → chunk-LZ32IIH2.cjs.map} +1 -1
- package/dist/{chunk-SSY5LVIH.js → chunk-M6GSAOAD.js} +6 -6
- package/dist/{chunk-SSY5LVIH.js.map → chunk-M6GSAOAD.js.map} +1 -1
- package/dist/{chunk-XDBWJQO6.js → chunk-MLJVCFJQ.js} +24 -11
- package/dist/chunk-MLJVCFJQ.js.map +1 -0
- package/dist/{chunk-PPGMPIWY.cjs → chunk-MLV3OU36.cjs} +27 -27
- package/dist/{chunk-PPGMPIWY.cjs.map → chunk-MLV3OU36.cjs.map} +1 -1
- package/dist/{chunk-ZGP2PLRF.js → chunk-MWFVMI3T.js} +7 -7
- package/dist/{chunk-ZGP2PLRF.js.map → chunk-MWFVMI3T.js.map} +1 -1
- package/dist/{chunk-R6LBCSVW.js → chunk-MXZPGEC2.js} +3 -3
- package/dist/{chunk-R6LBCSVW.js.map → chunk-MXZPGEC2.js.map} +1 -1
- package/dist/{chunk-4EU56SMM.js → chunk-NCOIQYTM.js} +4 -4
- package/dist/{chunk-4EU56SMM.js.map → chunk-NCOIQYTM.js.map} +1 -1
- package/dist/{chunk-N2BDDGAV.cjs → chunk-O4TXCSGQ.cjs} +24 -24
- package/dist/{chunk-N2BDDGAV.cjs.map → chunk-O4TXCSGQ.cjs.map} +1 -1
- package/dist/{chunk-AX6RYALX.cjs → chunk-O5XIJDN3.cjs} +22 -22
- package/dist/{chunk-AX6RYALX.cjs.map → chunk-O5XIJDN3.cjs.map} +1 -1
- package/dist/{chunk-RA52MKCE.js → chunk-OC4S3EDO.js} +3 -3
- package/dist/{chunk-RA52MKCE.js.map → chunk-OC4S3EDO.js.map} +1 -1
- package/dist/{chunk-BSW2G3CB.cjs → chunk-ONL7ZWVI.cjs} +7 -5
- package/dist/chunk-ONL7ZWVI.cjs.map +1 -0
- package/dist/{chunk-37DBOOL2.cjs → chunk-P6PFWRSN.cjs} +11 -8
- package/dist/chunk-P6PFWRSN.cjs.map +1 -0
- package/dist/{chunk-G35BBKD7.cjs → chunk-PDEIYN7Y.cjs} +28 -28
- package/dist/{chunk-G35BBKD7.cjs.map → chunk-PDEIYN7Y.cjs.map} +1 -1
- package/dist/{chunk-2BRN4DAE.js → chunk-PDHGJ7GP.js} +3 -3
- package/dist/{chunk-2BRN4DAE.js.map → chunk-PDHGJ7GP.js.map} +1 -1
- package/dist/{chunk-MFO2IOF3.cjs → chunk-PIF6BJCN.cjs} +32 -32
- package/dist/{chunk-MFO2IOF3.cjs.map → chunk-PIF6BJCN.cjs.map} +1 -1
- package/dist/chunk-PXAMRQAF.js +25 -0
- package/dist/chunk-PXAMRQAF.js.map +1 -0
- package/dist/{chunk-MUOB33WV.cjs → chunk-Q2B7W7GA.cjs} +5 -5
- package/dist/{chunk-MUOB33WV.cjs.map → chunk-Q2B7W7GA.cjs.map} +1 -1
- package/dist/{chunk-FGU5GYMB.cjs → chunk-Q4CH5CG5.cjs} +6 -6
- package/dist/{chunk-FGU5GYMB.cjs.map → chunk-Q4CH5CG5.cjs.map} +1 -1
- package/dist/{chunk-SOG4LDST.cjs → chunk-Q7GNNLCY.cjs} +4 -4
- package/dist/chunk-Q7GNNLCY.cjs.map +1 -0
- package/dist/{chunk-DOHUOYZS.cjs → chunk-RPOKTN4O.cjs} +7 -7
- package/dist/{chunk-DOHUOYZS.cjs.map → chunk-RPOKTN4O.cjs.map} +1 -1
- package/dist/{chunk-7X4P2I6L.js → chunk-RQXUPTUI.js} +5 -4
- package/dist/chunk-RQXUPTUI.js.map +1 -0
- package/dist/{chunk-L5IPLJ3D.cjs → chunk-RRJKJPUJ.cjs} +29 -29
- package/dist/{chunk-L5IPLJ3D.cjs.map → chunk-RRJKJPUJ.cjs.map} +1 -1
- package/dist/{chunk-VMDL27ZN.js → chunk-RVICRXZF.js} +3 -3
- package/dist/{chunk-VMDL27ZN.js.map → chunk-RVICRXZF.js.map} +1 -1
- package/dist/{chunk-22JIX4IH.cjs → chunk-SGXBKIPB.cjs} +10 -10
- package/dist/{chunk-22JIX4IH.cjs.map → chunk-SGXBKIPB.cjs.map} +1 -1
- package/dist/{chunk-7FWYWVRL.cjs → chunk-SSJSTNMZ.cjs} +22 -22
- package/dist/{chunk-7FWYWVRL.cjs.map → chunk-SSJSTNMZ.cjs.map} +1 -1
- package/dist/{chunk-TMH4AMSS.cjs → chunk-TB5T5EIJ.cjs} +12 -12
- package/dist/{chunk-TMH4AMSS.cjs.map → chunk-TB5T5EIJ.cjs.map} +1 -1
- package/dist/{chunk-DWNUIMDL.js → chunk-TEE45LZB.js} +6 -6
- package/dist/{chunk-DWNUIMDL.js.map → chunk-TEE45LZB.js.map} +1 -1
- package/dist/{chunk-U3KAKJYL.js → chunk-TTZI2Z25.js} +8 -8
- package/dist/{chunk-U3KAKJYL.js.map → chunk-TTZI2Z25.js.map} +1 -1
- package/dist/{chunk-HGEHQKAH.cjs → chunk-TXM2XTUT.cjs} +10 -10
- package/dist/{chunk-HGEHQKAH.cjs.map → chunk-TXM2XTUT.cjs.map} +1 -1
- package/dist/{chunk-ZGAWVGDD.js → chunk-TZF2SAX5.js} +8 -8
- package/dist/{chunk-ZGAWVGDD.js.map → chunk-TZF2SAX5.js.map} +1 -1
- package/dist/{chunk-XDFQJNOR.cjs → chunk-U4Y53V3G.cjs} +6 -6
- package/dist/{chunk-XDFQJNOR.cjs.map → chunk-U4Y53V3G.cjs.map} +1 -1
- package/dist/{chunk-WV5LJP6Y.cjs → chunk-UH3MHVDF.cjs} +5 -5
- package/dist/{chunk-WV5LJP6Y.cjs.map → chunk-UH3MHVDF.cjs.map} +1 -1
- package/dist/{chunk-Q3IJZXJC.cjs → chunk-UM72OD3E.cjs} +27 -27
- package/dist/{chunk-Q3IJZXJC.cjs.map → chunk-UM72OD3E.cjs.map} +1 -1
- package/dist/{chunk-WPG4POSC.js → chunk-V3HMHVKU.js} +5 -5
- package/dist/{chunk-WPG4POSC.js.map → chunk-V3HMHVKU.js.map} +1 -1
- package/dist/{chunk-RYFUAQ6R.cjs → chunk-VO2PCVXW.cjs} +27 -27
- package/dist/{chunk-RYFUAQ6R.cjs.map → chunk-VO2PCVXW.cjs.map} +1 -1
- package/dist/{chunk-6NM5GLTZ.cjs → chunk-VQPGGT32.cjs} +154 -154
- package/dist/{chunk-6NM5GLTZ.cjs.map → chunk-VQPGGT32.cjs.map} +1 -1
- package/dist/{chunk-NUJ57TFV.js → chunk-VX2KJFOW.js} +6 -6
- package/dist/{chunk-NUJ57TFV.js.map → chunk-VX2KJFOW.js.map} +1 -1
- package/dist/{chunk-WWH2YGEQ.js → chunk-VXTJHEII.js} +3 -3
- package/dist/{chunk-WWH2YGEQ.js.map → chunk-VXTJHEII.js.map} +1 -1
- package/dist/{chunk-HSUOCEO7.js → chunk-WBHTWSW7.js} +6 -6
- package/dist/{chunk-HSUOCEO7.js.map → chunk-WBHTWSW7.js.map} +1 -1
- package/dist/{chunk-5XEAWQRZ.cjs → chunk-WIOYCLJC.cjs} +5 -5
- package/dist/{chunk-5XEAWQRZ.cjs.map → chunk-WIOYCLJC.cjs.map} +1 -1
- package/dist/{chunk-BG3UAWWQ.cjs → chunk-WKRZS674.cjs} +35 -35
- package/dist/{chunk-BG3UAWWQ.cjs.map → chunk-WKRZS674.cjs.map} +1 -1
- package/dist/{chunk-QGYUGVXG.cjs → chunk-WYLVJSGR.cjs} +7 -7
- package/dist/{chunk-QGYUGVXG.cjs.map → chunk-WYLVJSGR.cjs.map} +1 -1
- package/dist/{chunk-RHLVKDVK.cjs → chunk-X2QCUZYL.cjs} +26 -26
- package/dist/{chunk-RHLVKDVK.cjs.map → chunk-X2QCUZYL.cjs.map} +1 -1
- package/dist/{chunk-C32ITCAX.cjs → chunk-X5FUTLPK.cjs} +11 -11
- package/dist/{chunk-C32ITCAX.cjs.map → chunk-X5FUTLPK.cjs.map} +1 -1
- package/dist/{chunk-MXWJSZXL.js → chunk-XH2V4AVS.js} +6 -6
- package/dist/{chunk-MXWJSZXL.js.map → chunk-XH2V4AVS.js.map} +1 -1
- package/dist/{chunk-I5WEJOAE.js → chunk-XNGQB4ZW.js} +15 -5
- package/dist/chunk-XNGQB4ZW.js.map +1 -0
- package/dist/{chunk-S3IMBHXP.cjs → chunk-XQARPKHD.cjs} +25 -25
- package/dist/{chunk-S3IMBHXP.cjs.map → chunk-XQARPKHD.cjs.map} +1 -1
- package/dist/{chunk-S7PYDU5I.js → chunk-YO7N5VOP.js} +3 -3
- package/dist/{chunk-S7PYDU5I.js.map → chunk-YO7N5VOP.js.map} +1 -1
- package/dist/{chunk-QRCL3KIX.js → chunk-YPXOTWND.js} +4 -4
- package/dist/{chunk-QRCL3KIX.js.map → chunk-YPXOTWND.js.map} +1 -1
- package/dist/{chunk-E47ITIFY.cjs → chunk-YRTZGGKQ.cjs} +146 -146
- package/dist/{chunk-E47ITIFY.cjs.map → chunk-YRTZGGKQ.cjs.map} +1 -1
- package/dist/{chunk-BAD2NWEJ.js → chunk-Z6C7SDXA.js} +3 -3
- package/dist/{chunk-BAD2NWEJ.js.map → chunk-Z6C7SDXA.js.map} +1 -1
- package/dist/{chunk-HTDMQEXM.js → chunk-Z73DMS63.js} +3 -3
- package/dist/{chunk-HTDMQEXM.js.map → chunk-Z73DMS63.js.map} +1 -1
- package/dist/{chunk-HDBM3PDF.js → chunk-ZCXN7QWI.js} +4 -4
- package/dist/{chunk-HDBM3PDF.js.map → chunk-ZCXN7QWI.js.map} +1 -1
- package/dist/{chunk-G46IGMXH.js → chunk-ZUUD6FN5.js} +4 -4
- package/dist/{chunk-G46IGMXH.js.map → chunk-ZUUD6FN5.js.map} +1 -1
- package/dist/{chunk-GOV2VFTV.js → chunk-ZZJCYUVX.js} +3 -3
- package/dist/{chunk-GOV2VFTV.js.map → chunk-ZZJCYUVX.js.map} +1 -1
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/{observational-memory-WJ4BDRUP-HNAWHGDZ.cjs → observational-memory-CIGODMXV-5QVHS6GP.cjs} +26 -26
- package/dist/{observational-memory-WJ4BDRUP-HNAWHGDZ.cjs.map → observational-memory-CIGODMXV-5QVHS6GP.cjs.map} +1 -1
- package/dist/{observational-memory-WJ4BDRUP-5X5ZOEK3.js → observational-memory-CIGODMXV-RX4J6TAC.js} +3 -3
- package/dist/{observational-memory-WJ4BDRUP-5X5ZOEK3.js.map → observational-memory-CIGODMXV-RX4J6TAC.js.map} +1 -1
- package/dist/server/handlers/a2a.cjs +9 -9
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +16 -16
- package/dist/server/handlers/agent-builder.d.ts +48 -0
- package/dist/server/handlers/agent-builder.d.ts.map +1 -1
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/agent-versions.cjs +8 -8
- package/dist/server/handlers/agent-versions.js +1 -1
- package/dist/server/handlers/agents.cjs +35 -35
- package/dist/server/handlers/agents.d.ts +260 -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 +11 -11
- package/dist/server/handlers/auth.js +1 -1
- package/dist/server/handlers/background-tasks.cjs +4 -4
- package/dist/server/handlers/background-tasks.d.ts.map +1 -1
- package/dist/server/handlers/background-tasks.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.d.ts +20 -0
- package/dist/server/handlers/datasets.d.ts.map +1 -1
- package/dist/server/handlers/datasets.js +1 -1
- package/dist/server/handlers/logs.cjs +4 -4
- package/dist/server/handlers/logs.js +1 -1
- package/dist/server/handlers/mcp-client-versions.cjs +8 -8
- package/dist/server/handlers/mcp-client-versions.js +1 -1
- package/dist/server/handlers/mcp.cjs +9 -9
- package/dist/server/handlers/mcp.js +1 -1
- package/dist/server/handlers/memory.cjs +27 -27
- package/dist/server/handlers/memory.js +1 -1
- package/dist/server/handlers/observability-new-endpoints.cjs +27 -27
- package/dist/server/handlers/observability-new-endpoints.d.ts +20 -0
- 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.cjs +41 -33
- package/dist/server/handlers/observability.d.ts +140 -0
- package/dist/server/handlers/observability.d.ts.map +1 -1
- package/dist/server/handlers/observability.js +2 -2
- package/dist/server/handlers/processor-providers.cjs +3 -3
- package/dist/server/handlers/processor-providers.js +1 -1
- package/dist/server/handlers/processors.cjs +4 -4
- package/dist/server/handlers/processors.js +1 -1
- package/dist/server/handlers/prompt-block-versions.cjs +8 -8
- package/dist/server/handlers/prompt-block-versions.js +1 -1
- package/dist/server/handlers/responses.cjs +4 -4
- package/dist/server/handlers/responses.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/scorer-versions.cjs +8 -8
- package/dist/server/handlers/scorer-versions.js +1 -1
- package/dist/server/handlers/scores.cjs +7 -7
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers/stored-agents.cjs +7 -7
- package/dist/server/handlers/stored-agents.js +1 -1
- package/dist/server/handlers/stored-mcp-clients.cjs +6 -6
- package/dist/server/handlers/stored-mcp-clients.js +1 -1
- package/dist/server/handlers/stored-prompt-blocks.cjs +6 -6
- package/dist/server/handlers/stored-prompt-blocks.js +1 -1
- package/dist/server/handlers/stored-scorers.cjs +6 -6
- package/dist/server/handlers/stored-scorers.js +1 -1
- package/dist/server/handlers/stored-skills.cjs +7 -7
- package/dist/server/handlers/stored-skills.js +1 -1
- package/dist/server/handlers/stored-workspaces.cjs +6 -6
- package/dist/server/handlers/stored-workspaces.js +1 -1
- package/dist/server/handlers/system.cjs +2 -2
- package/dist/server/handlers/system.d.ts +7 -0
- package/dist/server/handlers/system.d.ts.map +1 -1
- 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 +9 -9
- package/dist/server/handlers/utils.js +1 -1
- package/dist/server/handlers/vector.cjs +16 -16
- package/dist/server/handlers/vector.js +1 -1
- package/dist/server/handlers/voice.cjs +8 -8
- package/dist/server/handlers/voice.js +1 -1
- package/dist/server/handlers/workflows.cjs +24 -24
- package/dist/server/handlers/workflows.d.ts +78 -0
- package/dist/server/handlers/workflows.d.ts.map +1 -1
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/handlers/workspace.cjs +26 -26
- package/dist/server/handlers/workspace.js +1 -1
- package/dist/server/handlers.cjs +41 -41
- package/dist/server/handlers.js +15 -15
- package/dist/server/schemas/agent-builder.d.ts +13 -0
- package/dist/server/schemas/agent-builder.d.ts.map +1 -1
- package/dist/server/schemas/agents.d.ts +26 -0
- package/dist/server/schemas/agents.d.ts.map +1 -1
- package/dist/server/schemas/common.d.ts +3 -0
- package/dist/server/schemas/common.d.ts.map +1 -1
- package/dist/server/schemas/datasets.d.ts +10 -0
- package/dist/server/schemas/datasets.d.ts.map +1 -1
- package/dist/server/schemas/index.cjs +536 -532
- package/dist/server/schemas/index.js +23 -23
- package/dist/server/schemas/system.d.ts +12 -0
- package/dist/server/schemas/system.d.ts.map +1 -1
- package/dist/server/schemas/workflows.d.ts +19 -0
- package/dist/server/schemas/workflows.d.ts.map +1 -1
- package/dist/server/server-adapter/index.cjs +309 -307
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.js +40 -38
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/server/server-adapter/openapi-utils.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/agent-builder.d.ts +42 -0
- package/dist/server/server-adapter/routes/agent-builder.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/datasets.d.ts +20 -0
- package/dist/server/server-adapter/routes/datasets.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/legacy.d.ts +64 -0
- package/dist/server/server-adapter/routes/legacy.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/observability.d.ts +146 -0
- package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/system.d.ts +7 -0
- package/dist/server/server-adapter/routes/system.d.ts.map +1 -1
- package/dist/server/server-adapter/routes/workflows.d.ts +72 -0
- package/dist/server/server-adapter/routes/workflows.d.ts.map +1 -1
- package/package.json +12 -12
- package/dist/chunk-37DBOOL2.cjs.map +0 -1
- package/dist/chunk-6AEW3U34.cjs.map +0 -1
- package/dist/chunk-6MDHPZOJ.js.map +0 -1
- package/dist/chunk-7X4P2I6L.js.map +0 -1
- package/dist/chunk-BSW2G3CB.cjs.map +0 -1
- package/dist/chunk-D2R7PY34.cjs.map +0 -1
- package/dist/chunk-DDLTXG3Y.cjs.map +0 -1
- package/dist/chunk-E6SN323H.js.map +0 -1
- package/dist/chunk-EES2ZZGL.cjs.map +0 -1
- package/dist/chunk-EYWOOOQG.cjs.map +0 -1
- package/dist/chunk-GV5CQBWZ.js.map +0 -1
- package/dist/chunk-HITLRKIU.cjs.map +0 -1
- package/dist/chunk-I5WEJOAE.js.map +0 -1
- package/dist/chunk-IN35SZ2C.js.map +0 -1
- package/dist/chunk-KSHYQV6C.js.map +0 -1
- package/dist/chunk-MP6KOR6Q.js.map +0 -1
- package/dist/chunk-RW62AXQH.js +0 -18
- package/dist/chunk-RW62AXQH.js.map +0 -1
- package/dist/chunk-S2QK2XG2.js.map +0 -1
- package/dist/chunk-SOG4LDST.cjs.map +0 -1
- package/dist/chunk-UKMRQ6ER.cjs.map +0 -1
- package/dist/chunk-V7EVEI4C.js.map +0 -1
- package/dist/chunk-VTPTMQFA.cjs.map +0 -1
- package/dist/chunk-WBPWUNCX.js.map +0 -1
- package/dist/chunk-XDBWJQO6.js.map +0 -1
- package/dist/chunk-XNUXAO2P.cjs.map +0 -1
- package/dist/chunk-ZFCNTRZ2.cjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,111 @@
|
|
|
1
1
|
# @mastra/server
|
|
2
2
|
|
|
3
|
+
## 1.26.1-alpha.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`f112db1`](https://github.com/mastra-ai/mastra/commit/f112db179557ae9b5a0f1d25dc47f928d7d61cd9), [`21d9706`](https://github.com/mastra-ai/mastra/commit/21d970604d89eee970cbf8013d26d7551aff6ea5)]:
|
|
8
|
+
- @mastra/core@1.26.1-alpha.0
|
|
9
|
+
|
|
10
|
+
## 1.26.0
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- You can now tag spans and redact sensitive input or output per request by passing `tags`, `hideInput`, or `hideOutput` in `tracingOptions` when calling an agent or workflow. ([#15512](https://github.com/mastra-ai/mastra/pull/15512))
|
|
15
|
+
|
|
16
|
+
Added a lightweight trace endpoint (`GET /observability/traces/:traceId/light`) that returns only timeline-relevant span fields, dramatically reducing payload size when rendering trace timelines. Also added a dedicated span endpoint (`GET /observability/traces/:traceId/spans/:spanId`) to fetch full span details on demand.
|
|
17
|
+
|
|
18
|
+
- Added `forEachIndex` to the workflow resume request body schema. The `/workflows/:workflowId/resume`, `/resume-async`, and `/resume-stream` endpoints (including their agent-builder equivalents) now accept an optional zero-based `forEachIndex` so clients can target a specific iteration of a suspended `.foreach()` step. ([#15563](https://github.com/mastra-ai/mastra/pull/15563))
|
|
19
|
+
|
|
20
|
+
```ts
|
|
21
|
+
// POST /workflows/:workflowId/resume
|
|
22
|
+
// body
|
|
23
|
+
{
|
|
24
|
+
step: 'approve',
|
|
25
|
+
resumeData: { ok: true },
|
|
26
|
+
forEachIndex: 1, // resume only the second iteration; others stay suspended
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Patch Changes
|
|
31
|
+
|
|
32
|
+
- Add `/api/background-tasks` routes (SSE stream, list with filters + pagination, get by ID) and matching `MastraClient` methods (`listBackgroundTasks`, `getBackgroundTask`, `streamBackgroundTasks`). ([#15307](https://github.com/mastra-ai/mastra/pull/15307))
|
|
33
|
+
|
|
34
|
+
- Added support for `versions` field in agent generate and stream request bodies, enabling per-request sub-agent version overrides that propagate through delegation. ([#15373](https://github.com/mastra-ai/mastra/pull/15373))
|
|
35
|
+
|
|
36
|
+
- Fix prototype pollution in `setNestedValue` (`@mastra/core/utils`) and `generateOpenAPIDocument` (`@mastra/server`). ([#15565](https://github.com/mastra-ai/mastra/pull/15565))
|
|
37
|
+
|
|
38
|
+
`setNestedValue` now rejects dot-path segments named `__proto__`, `constructor`, or `prototype`, preventing attacker-controlled field paths passed to `selectFields` from polluting `Object.prototype`. `generateOpenAPIDocument` builds its `paths` map with `Object.create(null)` so a route path of `__proto__` cannot poison the prototype chain.
|
|
39
|
+
|
|
40
|
+
- Fixed noisy 'Background task manager not available' error log in studio when background tasks are not enabled. The list endpoint now returns an empty list, the get-by-id endpoint returns 404, and the SSE stream endpoint returns an empty stream that closes on disconnect — instead of throwing an HTTP 400 that gets logged as an error. ([#15600](https://github.com/mastra-ai/mastra/pull/15600))
|
|
41
|
+
|
|
42
|
+
- Added unique IDs (`logId`, `metricId`, `scoreId`, `feedbackId`) to all observability signals, generated automatically at emission time for de-duplication across the framework pipeline and cross-system correlation. User-facing APIs (`logger.info()`, `metrics.emit()`, `addScore()`, `addFeedback()`) are unchanged. ([#15242](https://github.com/mastra-ai/mastra/pull/15242))
|
|
43
|
+
|
|
44
|
+
For existing ClickHouse and DuckDB observability signal tables, run `npx mastra migrate` before initializing the store so the new signal-ID schema is applied.
|
|
45
|
+
|
|
46
|
+
- Updated dependencies [[`20f59b8`](https://github.com/mastra-ai/mastra/commit/20f59b876cf91199efbc49a0e36b391240708f08), [`aba393e`](https://github.com/mastra-ai/mastra/commit/aba393e2da7390c69b80e516a4f153cda6f09376), [`3d83d06`](https://github.com/mastra-ai/mastra/commit/3d83d06f776f00fb5f4163dddd32a030c5c20844), [`e2687a7`](https://github.com/mastra-ai/mastra/commit/e2687a7408790c384563816a9a28ed06735684c9), [`fdd54cf`](https://github.com/mastra-ai/mastra/commit/fdd54cf612a9af876e9fdd85e534454f6e7dd518), [`6315317`](https://github.com/mastra-ai/mastra/commit/63153175fe9a7b224e5be7c209bbebc01dd9b0d5), [`a371ac5`](https://github.com/mastra-ai/mastra/commit/a371ac534aa1bb368a1acf9d8b313378dfdc787e), [`0474c2b`](https://github.com/mastra-ai/mastra/commit/0474c2b2e7c7e1ad8691dca031284841391ff1ef), [`0a5fa1d`](https://github.com/mastra-ai/mastra/commit/0a5fa1d3cb0583889d06687155f26fd7d2edc76c), [`7e0e63e`](https://github.com/mastra-ai/mastra/commit/7e0e63e2e485e84442351f4c7a79a424c83539dc), [`ea43e64`](https://github.com/mastra-ai/mastra/commit/ea43e646dd95d507694b6112b0bf1df22ad552b2), [`f607106`](https://github.com/mastra-ai/mastra/commit/f607106854c6416c4a07d4082604b9f66d047221), [`30456b6`](https://github.com/mastra-ai/mastra/commit/30456b6b08c8fd17e109dd093b73d93b65e83bc5), [`9d11a8c`](https://github.com/mastra-ai/mastra/commit/9d11a8c1c8924eb975a245a5884d40ca1b7e0491), [`9d3b24b`](https://github.com/mastra-ai/mastra/commit/9d3b24b19407ae9c09586cf7766d38dc4dff4a69), [`00d1b16`](https://github.com/mastra-ai/mastra/commit/00d1b16b401199cb294fa23f43336547db4dca9b), [`47cee3e`](https://github.com/mastra-ai/mastra/commit/47cee3e137fe39109cf7fffd2a8cf47b76dc702e), [`62919a6`](https://github.com/mastra-ai/mastra/commit/62919a6ee0fbf3779ad21a97b1ec6696515d5104), [`d246696`](https://github.com/mastra-ai/mastra/commit/d246696139a3144a5b21b042d41c532688e957e1), [`354f9ce`](https://github.com/mastra-ai/mastra/commit/354f9ce1ca6af2074b6a196a23f8ec30012dccca), [`16e34ca`](https://github.com/mastra-ai/mastra/commit/16e34caa98b9a114b17a6125e4e3fd87f169d0d0), [`7020c06`](https://github.com/mastra-ai/mastra/commit/7020c0690b199d9da337f0e805f16948e557922e), [`8786a61`](https://github.com/mastra-ai/mastra/commit/8786a61fa54ba265f85eeff9985ca39863d18bb6), [`9467ea8`](https://github.com/mastra-ai/mastra/commit/9467ea87695749a53dfc041576410ebf9ee7bb67), [`7338d94`](https://github.com/mastra-ai/mastra/commit/7338d949380cf68b095342e8e42610dc51d557c1), [`c80dc16`](https://github.com/mastra-ai/mastra/commit/c80dc16e113e6cc159f510ffde501ad4711b2189), [`af8a57e`](https://github.com/mastra-ai/mastra/commit/af8a57ed9ba9685ad8601d5b71ae3706da6222f9), [`d63ffdb`](https://github.com/mastra-ai/mastra/commit/d63ffdbb2c11e76fe5ea45faab44bc15460f010c), [`47cee3e`](https://github.com/mastra-ai/mastra/commit/47cee3e137fe39109cf7fffd2a8cf47b76dc702e), [`1bd5104`](https://github.com/mastra-ai/mastra/commit/1bd51048b6da93507276d6623e3fd96a9e1a8944), [`e9837b5`](https://github.com/mastra-ai/mastra/commit/e9837b53699e18711b09e0ca010a4106376f2653), [`8f1b280`](https://github.com/mastra-ai/mastra/commit/8f1b280b7fe6999ec654f160cb69c1a8719e7a57), [`92dcf02`](https://github.com/mastra-ai/mastra/commit/92dcf029294210ac91b090900c1a0555a425c57a), [`0fd90a2`](https://github.com/mastra-ai/mastra/commit/0fd90a215caf5fca8099c15a67ca03e4427747a3), [`8fb2405`](https://github.com/mastra-ai/mastra/commit/8fb2405138f2d208b7962ad03f121ca25bcc28c5), [`12df98c`](https://github.com/mastra-ai/mastra/commit/12df98c4904643d9481f5c78f3bed443725b4c96)]:
|
|
47
|
+
- @mastra/core@1.26.0
|
|
48
|
+
|
|
49
|
+
## 1.26.0-alpha.13
|
|
50
|
+
|
|
51
|
+
### Patch Changes
|
|
52
|
+
|
|
53
|
+
- Fixed noisy 'Background task manager not available' error log in studio when background tasks are not enabled. The list endpoint now returns an empty list, the get-by-id endpoint returns 404, and the SSE stream endpoint returns an empty stream that closes on disconnect — instead of throwing an HTTP 400 that gets logged as an error. ([#15600](https://github.com/mastra-ai/mastra/pull/15600))
|
|
54
|
+
|
|
55
|
+
- Updated dependencies:
|
|
56
|
+
- @mastra/core@1.26.0-alpha.13
|
|
57
|
+
|
|
58
|
+
## 1.26.0-alpha.12
|
|
59
|
+
|
|
60
|
+
### Patch Changes
|
|
61
|
+
|
|
62
|
+
- Updated dependencies [[`a371ac5`](https://github.com/mastra-ai/mastra/commit/a371ac534aa1bb368a1acf9d8b313378dfdc787e), [`47cee3e`](https://github.com/mastra-ai/mastra/commit/47cee3e137fe39109cf7fffd2a8cf47b76dc702e), [`c80dc16`](https://github.com/mastra-ai/mastra/commit/c80dc16e113e6cc159f510ffde501ad4711b2189), [`47cee3e`](https://github.com/mastra-ai/mastra/commit/47cee3e137fe39109cf7fffd2a8cf47b76dc702e)]:
|
|
63
|
+
- @mastra/core@1.26.0-alpha.12
|
|
64
|
+
|
|
65
|
+
## 1.26.0-alpha.11
|
|
66
|
+
|
|
67
|
+
### Minor Changes
|
|
68
|
+
|
|
69
|
+
- You can now tag spans and redact sensitive input or output per request by passing `tags`, `hideInput`, or `hideOutput` in `tracingOptions` when calling an agent or workflow. ([#15512](https://github.com/mastra-ai/mastra/pull/15512))
|
|
70
|
+
|
|
71
|
+
Added a lightweight trace endpoint (`GET /observability/traces/:traceId/light`) that returns only timeline-relevant span fields, dramatically reducing payload size when rendering trace timelines. Also added a dedicated span endpoint (`GET /observability/traces/:traceId/spans/:spanId`) to fetch full span details on demand.
|
|
72
|
+
|
|
73
|
+
### Patch Changes
|
|
74
|
+
|
|
75
|
+
- Added unique IDs (`logId`, `metricId`, `scoreId`, `feedbackId`) to all observability signals, generated automatically at emission time for de-duplication across the framework pipeline and cross-system correlation. User-facing APIs (`logger.info()`, `metrics.emit()`, `addScore()`, `addFeedback()`) are unchanged. ([#15242](https://github.com/mastra-ai/mastra/pull/15242))
|
|
76
|
+
|
|
77
|
+
For existing ClickHouse and DuckDB observability signal tables, run `npx mastra migrate` before initializing the store so the new signal-ID schema is applied.
|
|
78
|
+
|
|
79
|
+
- Updated dependencies [[`20f59b8`](https://github.com/mastra-ai/mastra/commit/20f59b876cf91199efbc49a0e36b391240708f08), [`e2687a7`](https://github.com/mastra-ai/mastra/commit/e2687a7408790c384563816a9a28ed06735684c9), [`8f1b280`](https://github.com/mastra-ai/mastra/commit/8f1b280b7fe6999ec654f160cb69c1a8719e7a57), [`12df98c`](https://github.com/mastra-ai/mastra/commit/12df98c4904643d9481f5c78f3bed443725b4c96)]:
|
|
80
|
+
- @mastra/core@1.26.0-alpha.11
|
|
81
|
+
|
|
82
|
+
## 1.26.0-alpha.10
|
|
83
|
+
|
|
84
|
+
### Minor Changes
|
|
85
|
+
|
|
86
|
+
- Added `forEachIndex` to the workflow resume request body schema. The `/workflows/:workflowId/resume`, `/resume-async`, and `/resume-stream` endpoints (including their agent-builder equivalents) now accept an optional zero-based `forEachIndex` so clients can target a specific iteration of a suspended `.foreach()` step. ([#15563](https://github.com/mastra-ai/mastra/pull/15563))
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
// POST /workflows/:workflowId/resume
|
|
90
|
+
// body
|
|
91
|
+
{
|
|
92
|
+
step: 'approve',
|
|
93
|
+
resumeData: { ok: true },
|
|
94
|
+
forEachIndex: 1, // resume only the second iteration; others stay suspended
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Patch Changes
|
|
99
|
+
|
|
100
|
+
- Added support for `versions` field in agent generate and stream request bodies, enabling per-request sub-agent version overrides that propagate through delegation. ([#15373](https://github.com/mastra-ai/mastra/pull/15373))
|
|
101
|
+
|
|
102
|
+
- Fix prototype pollution in `setNestedValue` (`@mastra/core/utils`) and `generateOpenAPIDocument` (`@mastra/server`). ([#15565](https://github.com/mastra-ai/mastra/pull/15565))
|
|
103
|
+
|
|
104
|
+
`setNestedValue` now rejects dot-path segments named `__proto__`, `constructor`, or `prototype`, preventing attacker-controlled field paths passed to `selectFields` from polluting `Object.prototype`. `generateOpenAPIDocument` builds its `paths` map with `Object.create(null)` so a route path of `__proto__` cannot poison the prototype chain.
|
|
105
|
+
|
|
106
|
+
- Updated dependencies [[`aba393e`](https://github.com/mastra-ai/mastra/commit/aba393e2da7390c69b80e516a4f153cda6f09376), [`0a5fa1d`](https://github.com/mastra-ai/mastra/commit/0a5fa1d3cb0583889d06687155f26fd7d2edc76c), [`ea43e64`](https://github.com/mastra-ai/mastra/commit/ea43e646dd95d507694b6112b0bf1df22ad552b2), [`00d1b16`](https://github.com/mastra-ai/mastra/commit/00d1b16b401199cb294fa23f43336547db4dca9b), [`af8a57e`](https://github.com/mastra-ai/mastra/commit/af8a57ed9ba9685ad8601d5b71ae3706da6222f9)]:
|
|
107
|
+
- @mastra/core@1.26.0-alpha.10
|
|
108
|
+
|
|
3
109
|
## 1.26.0-alpha.9
|
|
4
110
|
|
|
5
111
|
### Patch Changes
|
|
@@ -6,6 +6,8 @@ declare enum EntityType {
|
|
|
6
6
|
AGENT = "agent",
|
|
7
7
|
/** Scorer definition/execution */
|
|
8
8
|
SCORER = "scorer",
|
|
9
|
+
/** RAG ingestion pipeline execution */
|
|
10
|
+
RAG_INGESTION = "rag_ingestion",
|
|
9
11
|
/** Trajectory evaluation target */
|
|
10
12
|
TRAJECTORY = "trajectory",
|
|
11
13
|
/** Input Processor */
|
|
@@ -286,6 +288,7 @@ declare const logRecordSchema: z.ZodObject<{
|
|
|
286
288
|
parentEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
287
289
|
rootEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
288
290
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
291
|
+
logId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
289
292
|
timestamp: z.ZodDate;
|
|
290
293
|
level: z.ZodEnum<{
|
|
291
294
|
error: "error";
|
|
@@ -348,6 +351,7 @@ declare const createLogRecordSchema: z.ZodObject<{
|
|
|
348
351
|
parentEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
349
352
|
rootEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
350
353
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
354
|
+
logId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
351
355
|
timestamp: z.ZodDate;
|
|
352
356
|
level: z.ZodEnum<{
|
|
353
357
|
error: "error";
|
|
@@ -393,6 +397,7 @@ declare const batchCreateLogsArgsSchema: z.ZodObject<{
|
|
|
393
397
|
parentEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
394
398
|
rootEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
395
399
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
400
|
+
logId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
396
401
|
timestamp: z.ZodDate;
|
|
397
402
|
level: z.ZodEnum<{
|
|
398
403
|
error: "error";
|
|
@@ -570,6 +575,7 @@ declare const listLogsResponseSchema: z.ZodObject<{
|
|
|
570
575
|
parentEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
571
576
|
rootEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
572
577
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
578
|
+
logId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
573
579
|
timestamp: z.ZodDate;
|
|
574
580
|
level: z.ZodEnum<{
|
|
575
581
|
error: "error";
|
|
@@ -619,6 +625,7 @@ declare const scoreRecordSchema: z.ZodObject<{
|
|
|
619
625
|
parentEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
620
626
|
rootEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
621
627
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
628
|
+
scoreId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
622
629
|
timestamp: z.ZodDate;
|
|
623
630
|
traceId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
624
631
|
spanId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -680,6 +687,7 @@ declare const createScoreRecordSchema: z.ZodObject<{
|
|
|
680
687
|
parentEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
681
688
|
rootEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
682
689
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
690
|
+
scoreId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
683
691
|
timestamp: z.ZodDate;
|
|
684
692
|
traceId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
685
693
|
spanId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -723,6 +731,7 @@ declare const createScoreArgsSchema: z.ZodObject<{
|
|
|
723
731
|
parentEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
724
732
|
rootEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
725
733
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
734
|
+
scoreId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
726
735
|
timestamp: z.ZodDate;
|
|
727
736
|
traceId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
728
737
|
spanId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -771,6 +780,7 @@ declare const createScoreBodySchema: z.ZodObject<{
|
|
|
771
780
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
772
781
|
scorerId: z.ZodString;
|
|
773
782
|
score: z.ZodNumber;
|
|
783
|
+
scoreId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
774
784
|
scorerName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
775
785
|
scorerVersion: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
776
786
|
scoreSource: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -816,6 +826,7 @@ declare const batchCreateScoresArgsSchema: z.ZodObject<{
|
|
|
816
826
|
parentEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
817
827
|
rootEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
818
828
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
829
|
+
scoreId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
819
830
|
timestamp: z.ZodDate;
|
|
820
831
|
traceId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
821
832
|
spanId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -972,6 +983,7 @@ declare const listScoresResponseSchema: z.ZodObject<{
|
|
|
972
983
|
parentEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
973
984
|
rootEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
974
985
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
986
|
+
scoreId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
975
987
|
timestamp: z.ZodDate;
|
|
976
988
|
traceId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
977
989
|
spanId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -1250,6 +1262,7 @@ declare const feedbackRecordSchema: z.ZodObject<{
|
|
|
1250
1262
|
parentEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1251
1263
|
rootEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1252
1264
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1265
|
+
feedbackId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1253
1266
|
timestamp: z.ZodDate;
|
|
1254
1267
|
traceId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1255
1268
|
spanId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -1305,6 +1318,7 @@ declare const createFeedbackRecordSchema: z.ZodObject<{
|
|
|
1305
1318
|
parentEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1306
1319
|
rootEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1307
1320
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1321
|
+
feedbackId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1308
1322
|
timestamp: z.ZodDate;
|
|
1309
1323
|
traceId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1310
1324
|
spanId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -1347,6 +1361,7 @@ declare const createFeedbackArgsSchema: z.ZodObject<{
|
|
|
1347
1361
|
parentEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1348
1362
|
rootEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1349
1363
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1364
|
+
feedbackId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1350
1365
|
timestamp: z.ZodDate;
|
|
1351
1366
|
traceId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1352
1367
|
spanId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -1395,6 +1410,7 @@ declare const createFeedbackBodySchema: z.ZodObject<{
|
|
|
1395
1410
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1396
1411
|
feedbackUserId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1397
1412
|
feedbackType: z.ZodString;
|
|
1413
|
+
feedbackId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1398
1414
|
feedbackSource: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1399
1415
|
comment: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1400
1416
|
sourceId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -1438,6 +1454,7 @@ declare const batchCreateFeedbackArgsSchema: z.ZodObject<{
|
|
|
1438
1454
|
parentEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1439
1455
|
rootEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1440
1456
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1457
|
+
feedbackId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1441
1458
|
timestamp: z.ZodDate;
|
|
1442
1459
|
traceId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1443
1460
|
spanId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -1591,6 +1608,7 @@ declare const listFeedbackResponseSchema: z.ZodObject<{
|
|
|
1591
1608
|
parentEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1592
1609
|
rootEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1593
1610
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1611
|
+
feedbackId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1594
1612
|
timestamp: z.ZodDate;
|
|
1595
1613
|
traceId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1596
1614
|
spanId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -1891,6 +1909,7 @@ declare const metricRecordSchema: z.ZodObject<{
|
|
|
1891
1909
|
parentEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1892
1910
|
rootEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1893
1911
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1912
|
+
metricId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1894
1913
|
timestamp: z.ZodDate;
|
|
1895
1914
|
name: z.ZodString;
|
|
1896
1915
|
value: z.ZodNumber;
|
|
@@ -1945,6 +1964,7 @@ declare const createMetricRecordSchema: z.ZodObject<{
|
|
|
1945
1964
|
parentEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1946
1965
|
rootEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1947
1966
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1967
|
+
metricId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1948
1968
|
timestamp: z.ZodDate;
|
|
1949
1969
|
name: z.ZodString;
|
|
1950
1970
|
value: z.ZodNumber;
|
|
@@ -1989,6 +2009,7 @@ declare const batchCreateMetricsArgsSchema: z.ZodObject<{
|
|
|
1989
2009
|
parentEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1990
2010
|
rootEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1991
2011
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
2012
|
+
metricId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1992
2013
|
timestamp: z.ZodDate;
|
|
1993
2014
|
name: z.ZodString;
|
|
1994
2015
|
value: z.ZodNumber;
|
|
@@ -2170,6 +2191,7 @@ declare const listMetricsResponseSchema: z.ZodObject<{
|
|
|
2170
2191
|
parentEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
2171
2192
|
rootEntityVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
2172
2193
|
experimentId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
2194
|
+
metricId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
2173
2195
|
timestamp: z.ZodDate;
|
|
2174
2196
|
name: z.ZodString;
|
|
2175
2197
|
value: z.ZodNumber;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { listMCPClientVersionsResponseSchema, listMCPClientVersionsQuerySchema, mcpClientVersionPathParams, createMCPClientVersionResponseSchema, createMCPClientVersionBodySchema, getMCPClientVersionResponseSchema, mcpClientVersionIdPathParams, activateMCPClientVersionResponseSchema, restoreMCPClientVersionResponseSchema, deleteMCPClientVersionResponseSchema, compareMCPClientVersionsResponseSchema, compareMCPClientVersionsQuerySchema } from './chunk-ECEYFPVI.js';
|
|
2
1
|
import { extractConfigFromVersion, MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS, calculateChangedFields, createVersionWithRetry, enforceRetentionLimit, computeVersionDiffs } from './chunk-33QPJPK4.js';
|
|
3
|
-
import {
|
|
2
|
+
import { listMCPClientVersionsResponseSchema, listMCPClientVersionsQuerySchema, mcpClientVersionPathParams, createMCPClientVersionResponseSchema, createMCPClientVersionBodySchema, getMCPClientVersionResponseSchema, mcpClientVersionIdPathParams, activateMCPClientVersionResponseSchema, restoreMCPClientVersionResponseSchema, deleteMCPClientVersionResponseSchema, compareMCPClientVersionsResponseSchema, compareMCPClientVersionsQuerySchema } from './chunk-EFJIK2PW.js';
|
|
3
|
+
import { createRoute } from './chunk-KEFOJ6EP.js';
|
|
4
4
|
import { handleError } from './chunk-P23KBWKB.js';
|
|
5
5
|
import { HTTPException } from './chunk-6QWQZI4Q.js';
|
|
6
6
|
|
|
@@ -380,5 +380,5 @@ var COMPARE_MCP_CLIENT_VERSIONS_ROUTE = createRoute({
|
|
|
380
380
|
});
|
|
381
381
|
|
|
382
382
|
export { ACTIVATE_MCP_CLIENT_VERSION_ROUTE, COMPARE_MCP_CLIENT_VERSIONS_ROUTE, CREATE_MCP_CLIENT_VERSION_ROUTE, DELETE_MCP_CLIENT_VERSION_ROUTE, GET_MCP_CLIENT_VERSION_ROUTE, LIST_MCP_CLIENT_VERSIONS_ROUTE, RESTORE_MCP_CLIENT_VERSION_ROUTE };
|
|
383
|
-
//# sourceMappingURL=chunk-
|
|
384
|
-
//# sourceMappingURL=chunk-
|
|
383
|
+
//# sourceMappingURL=chunk-24SW3KB3.js.map
|
|
384
|
+
//# sourceMappingURL=chunk-24SW3KB3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server/handlers/mcp-client-versions.ts"],"names":[],"mappings":"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","file":"chunk-GOXZQ2BL.js","sourcesContent":["import { HTTPException } from '../http-exception';\nimport {\n mcpClientVersionPathParams,\n mcpClientVersionIdPathParams,\n listMCPClientVersionsQuerySchema,\n createMCPClientVersionBodySchema,\n compareMCPClientVersionsQuerySchema,\n listMCPClientVersionsResponseSchema,\n getMCPClientVersionResponseSchema,\n createMCPClientVersionResponseSchema,\n activateMCPClientVersionResponseSchema,\n restoreMCPClientVersionResponseSchema,\n deleteMCPClientVersionResponseSchema,\n compareMCPClientVersionsResponseSchema,\n} from '../schemas/mcp-client-versions';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { handleError } from './error';\nimport {\n extractConfigFromVersion,\n calculateChangedFields,\n computeVersionDiffs,\n createVersionWithRetry,\n enforceRetentionLimit,\n MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS,\n} from './version-helpers';\nimport type { VersionedStoreInterface } from './version-helpers';\n\n/**\n * GET /stored/mcp-clients/:mcpClientId/versions - List all versions for an MCP client\n */\nexport const LIST_MCP_CLIENT_VERSIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/mcp-clients/:mcpClientId/versions',\n requiresAuth: true,\n responseType: 'json',\n pathParamSchema: mcpClientVersionPathParams,\n queryParamSchema: listMCPClientVersionsQuerySchema,\n responseSchema: listMCPClientVersionsResponseSchema,\n summary: 'List MCP client versions',\n description: 'Returns a paginated list of all versions for a stored MCP client',\n tags: ['MCP Client Versions'],\n handler: async ({ mastra, mcpClientId, page, perPage, orderBy }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n const mcpClient = await mcpClientStore.getById(mcpClientId);\n if (!mcpClient) {\n throw new HTTPException(404, { message: `MCP client with id ${mcpClientId} not found` });\n }\n\n const result = await mcpClientStore.listVersions({\n mcpClientId,\n page,\n perPage,\n orderBy,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error listing MCP client versions');\n }\n },\n});\n\n/**\n * POST /stored/mcp-clients/:mcpClientId/versions - Create a new version snapshot\n */\nexport const CREATE_MCP_CLIENT_VERSION_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/mcp-clients/:mcpClientId/versions',\n requiresAuth: true,\n responseType: 'json',\n pathParamSchema: mcpClientVersionPathParams,\n bodySchema: createMCPClientVersionBodySchema,\n responseSchema: createMCPClientVersionResponseSchema,\n summary: 'Create MCP client version',\n description: 'Creates a new version snapshot of the current MCP client configuration',\n tags: ['MCP Client Versions'],\n handler: async ({ mastra, mcpClientId, changeMessage }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n const mcpClient = await mcpClientStore.getById(mcpClientId);\n if (!mcpClient) {\n throw new HTTPException(404, { message: `MCP client with id ${mcpClientId} not found` });\n }\n\n let currentConfig: Record<string, unknown> = {};\n if (mcpClient.activeVersionId) {\n const activeVersion = await mcpClientStore.getVersion(mcpClient.activeVersionId);\n if (activeVersion) {\n currentConfig = extractConfigFromVersion(\n activeVersion as unknown as Record<string, unknown>,\n MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS,\n );\n }\n }\n\n const latestVersion = await mcpClientStore.getLatestVersion(mcpClientId);\n\n // If no activeVersionId, fall back to latest version config\n if (!mcpClient.activeVersionId && latestVersion) {\n currentConfig = extractConfigFromVersion(\n latestVersion as unknown as Record<string, unknown>,\n MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS,\n );\n }\n const previousConfig = latestVersion\n ? extractConfigFromVersion(\n latestVersion as unknown as Record<string, unknown>,\n MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS,\n )\n : null;\n\n const changedFields = calculateChangedFields(previousConfig, currentConfig);\n\n const { versionId } = await createVersionWithRetry(\n mcpClientStore as unknown as VersionedStoreInterface,\n mcpClientId,\n 'mcpClientId',\n currentConfig,\n changedFields,\n { changeMessage },\n );\n\n const version = await mcpClientStore.getVersion(versionId);\n if (!version) {\n throw new HTTPException(500, { message: 'Failed to retrieve created version' });\n }\n\n await enforceRetentionLimit(\n mcpClientStore as unknown as VersionedStoreInterface,\n mcpClientId,\n 'mcpClientId',\n mcpClient.activeVersionId,\n );\n\n return version;\n } catch (error) {\n return handleError(error, 'Error creating MCP client version');\n }\n },\n});\n\n/**\n * GET /stored/mcp-clients/:mcpClientId/versions/:versionId - Get a specific version\n */\nexport const GET_MCP_CLIENT_VERSION_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/mcp-clients/:mcpClientId/versions/:versionId',\n requiresAuth: true,\n responseType: 'json',\n pathParamSchema: mcpClientVersionIdPathParams,\n responseSchema: getMCPClientVersionResponseSchema,\n summary: 'Get MCP client version',\n description: 'Returns a specific version of an MCP client by its version ID',\n tags: ['MCP Client Versions'],\n handler: async ({ mastra, mcpClientId, versionId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n const version = await mcpClientStore.getVersion(versionId);\n\n if (!version) {\n throw new HTTPException(404, { message: `Version with id ${versionId} not found` });\n }\n\n if (version.mcpClientId !== mcpClientId) {\n throw new HTTPException(404, {\n message: `Version with id ${versionId} not found for MCP client ${mcpClientId}`,\n });\n }\n\n return version;\n } catch (error) {\n return handleError(error, 'Error getting MCP client version');\n }\n },\n});\n\n/**\n * POST /stored/mcp-clients/:mcpClientId/versions/:versionId/activate - Set a version as active\n */\nexport const ACTIVATE_MCP_CLIENT_VERSION_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/mcp-clients/:mcpClientId/versions/:versionId/activate',\n requiresAuth: true,\n responseType: 'json',\n pathParamSchema: mcpClientVersionIdPathParams,\n responseSchema: activateMCPClientVersionResponseSchema,\n summary: 'Activate MCP client version',\n description: 'Sets a specific version as the active version for the MCP client',\n tags: ['MCP Client Versions'],\n handler: async ({ mastra, mcpClientId, versionId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n const mcpClient = await mcpClientStore.getById(mcpClientId);\n if (!mcpClient) {\n throw new HTTPException(404, { message: `MCP client with id ${mcpClientId} not found` });\n }\n\n const version = await mcpClientStore.getVersion(versionId);\n if (!version) {\n throw new HTTPException(404, { message: `Version with id ${versionId} not found` });\n }\n if (version.mcpClientId !== mcpClientId) {\n throw new HTTPException(404, {\n message: `Version with id ${versionId} not found for MCP client ${mcpClientId}`,\n });\n }\n\n await mcpClientStore.update({\n id: mcpClientId,\n activeVersionId: versionId,\n status: 'published',\n });\n\n // Clear the editor cache so subsequent requests see the new active version\n mastra.getEditor()?.mcp.clearCache(mcpClientId);\n\n return {\n success: true,\n message: `Version ${version.versionNumber} is now active`,\n activeVersionId: versionId,\n };\n } catch (error) {\n return handleError(error, 'Error activating MCP client version');\n }\n },\n});\n\n/**\n * POST /stored/mcp-clients/:mcpClientId/versions/:versionId/restore - Restore MCP client to a version\n */\nexport const RESTORE_MCP_CLIENT_VERSION_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/mcp-clients/:mcpClientId/versions/:versionId/restore',\n requiresAuth: true,\n responseType: 'json',\n pathParamSchema: mcpClientVersionIdPathParams,\n responseSchema: restoreMCPClientVersionResponseSchema,\n summary: 'Restore MCP client version',\n description: 'Restores the MCP client configuration from a version, creating a new version',\n tags: ['MCP Client Versions'],\n handler: async ({ mastra, mcpClientId, versionId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n const mcpClient = await mcpClientStore.getById(mcpClientId);\n if (!mcpClient) {\n throw new HTTPException(404, { message: `MCP client with id ${mcpClientId} not found` });\n }\n\n const versionToRestore = await mcpClientStore.getVersion(versionId);\n if (!versionToRestore) {\n throw new HTTPException(404, { message: `Version with id ${versionId} not found` });\n }\n if (versionToRestore.mcpClientId !== mcpClientId) {\n throw new HTTPException(404, {\n message: `Version with id ${versionId} not found for MCP client ${mcpClientId}`,\n });\n }\n\n const restoredConfig = extractConfigFromVersion(\n versionToRestore as unknown as Record<string, unknown>,\n MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS,\n );\n\n await mcpClientStore.update({\n id: mcpClientId,\n ...restoredConfig,\n });\n\n const latestVersion = await mcpClientStore.getLatestVersion(mcpClientId);\n const previousConfig = latestVersion\n ? extractConfigFromVersion(\n latestVersion as unknown as Record<string, unknown>,\n MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS,\n )\n : null;\n\n const changedFields = calculateChangedFields(previousConfig, restoredConfig);\n\n const { versionId: newVersionId } = await createVersionWithRetry(\n mcpClientStore as unknown as VersionedStoreInterface,\n mcpClientId,\n 'mcpClientId',\n restoredConfig,\n changedFields,\n {\n changeMessage: `Restored from version ${versionToRestore.versionNumber}`,\n },\n );\n\n const newVersion = await mcpClientStore.getVersion(newVersionId);\n if (!newVersion) {\n throw new HTTPException(500, { message: 'Failed to retrieve created version' });\n }\n\n await enforceRetentionLimit(\n mcpClientStore as unknown as VersionedStoreInterface,\n mcpClientId,\n 'mcpClientId',\n mcpClient.activeVersionId,\n );\n\n // Clear the editor cache so subsequent requests see the updated config\n mastra.getEditor()?.mcp.clearCache(mcpClientId);\n\n return newVersion;\n } catch (error) {\n return handleError(error, 'Error restoring MCP client version');\n }\n },\n});\n\n/**\n * DELETE /stored/mcp-clients/:mcpClientId/versions/:versionId - Delete a version\n */\nexport const DELETE_MCP_CLIENT_VERSION_ROUTE = createRoute({\n method: 'DELETE',\n path: '/stored/mcp-clients/:mcpClientId/versions/:versionId',\n requiresAuth: true,\n responseType: 'json',\n pathParamSchema: mcpClientVersionIdPathParams,\n responseSchema: deleteMCPClientVersionResponseSchema,\n summary: 'Delete MCP client version',\n description: 'Deletes a specific version (cannot delete the active version)',\n tags: ['MCP Client Versions'],\n handler: async ({ mastra, mcpClientId, versionId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n const mcpClient = await mcpClientStore.getById(mcpClientId);\n if (!mcpClient) {\n throw new HTTPException(404, { message: `MCP client with id ${mcpClientId} not found` });\n }\n\n const version = await mcpClientStore.getVersion(versionId);\n if (!version) {\n throw new HTTPException(404, { message: `Version with id ${versionId} not found` });\n }\n if (version.mcpClientId !== mcpClientId) {\n throw new HTTPException(404, {\n message: `Version with id ${versionId} not found for MCP client ${mcpClientId}`,\n });\n }\n\n if (mcpClient.activeVersionId === versionId) {\n throw new HTTPException(400, {\n message: 'Cannot delete the active version. Activate a different version first.',\n });\n }\n\n await mcpClientStore.deleteVersion(versionId);\n\n // Clear the editor cache so subsequent requests see the updated config\n mastra.getEditor()?.mcp.clearCache(mcpClientId);\n\n return {\n success: true,\n message: `Version ${version.versionNumber} deleted successfully`,\n };\n } catch (error) {\n return handleError(error, 'Error deleting MCP client version');\n }\n },\n});\n\n/**\n * GET /stored/mcp-clients/:mcpClientId/versions/compare - Compare two versions\n */\nexport const COMPARE_MCP_CLIENT_VERSIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/mcp-clients/:mcpClientId/versions/compare',\n requiresAuth: true,\n responseType: 'json',\n pathParamSchema: mcpClientVersionPathParams,\n queryParamSchema: compareMCPClientVersionsQuerySchema,\n responseSchema: compareMCPClientVersionsResponseSchema,\n summary: 'Compare MCP client versions',\n description: 'Compares two versions and returns the differences between them',\n tags: ['MCP Client Versions'],\n handler: async ({ mastra, mcpClientId, from, to }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n const fromVersion = await mcpClientStore.getVersion(from);\n if (!fromVersion) {\n throw new HTTPException(404, { message: `Version with id ${from} not found` });\n }\n if (fromVersion.mcpClientId !== mcpClientId) {\n throw new HTTPException(404, {\n message: `Version with id ${from} not found for MCP client ${mcpClientId}`,\n });\n }\n\n const toVersion = await mcpClientStore.getVersion(to);\n if (!toVersion) {\n throw new HTTPException(404, { message: `Version with id ${to} not found` });\n }\n if (toVersion.mcpClientId !== mcpClientId) {\n throw new HTTPException(404, {\n message: `Version with id ${to} not found for MCP client ${mcpClientId}`,\n });\n }\n\n const fromConfig = extractConfigFromVersion(\n fromVersion as unknown as Record<string, unknown>,\n MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS,\n );\n const toConfig = extractConfigFromVersion(\n toVersion as unknown as Record<string, unknown>,\n MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS,\n );\n\n const diffs = computeVersionDiffs(fromConfig, toConfig);\n\n return {\n diffs,\n fromVersion,\n toVersion,\n };\n } catch (error) {\n return handleError(error, 'Error comparing MCP client versions');\n }\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/mcp-client-versions.ts"],"names":[],"mappings":"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","file":"chunk-24SW3KB3.js","sourcesContent":["import { HTTPException } from '../http-exception';\nimport {\n mcpClientVersionPathParams,\n mcpClientVersionIdPathParams,\n listMCPClientVersionsQuerySchema,\n createMCPClientVersionBodySchema,\n compareMCPClientVersionsQuerySchema,\n listMCPClientVersionsResponseSchema,\n getMCPClientVersionResponseSchema,\n createMCPClientVersionResponseSchema,\n activateMCPClientVersionResponseSchema,\n restoreMCPClientVersionResponseSchema,\n deleteMCPClientVersionResponseSchema,\n compareMCPClientVersionsResponseSchema,\n} from '../schemas/mcp-client-versions';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { handleError } from './error';\nimport {\n extractConfigFromVersion,\n calculateChangedFields,\n computeVersionDiffs,\n createVersionWithRetry,\n enforceRetentionLimit,\n MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS,\n} from './version-helpers';\nimport type { VersionedStoreInterface } from './version-helpers';\n\n/**\n * GET /stored/mcp-clients/:mcpClientId/versions - List all versions for an MCP client\n */\nexport const LIST_MCP_CLIENT_VERSIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/mcp-clients/:mcpClientId/versions',\n requiresAuth: true,\n responseType: 'json',\n pathParamSchema: mcpClientVersionPathParams,\n queryParamSchema: listMCPClientVersionsQuerySchema,\n responseSchema: listMCPClientVersionsResponseSchema,\n summary: 'List MCP client versions',\n description: 'Returns a paginated list of all versions for a stored MCP client',\n tags: ['MCP Client Versions'],\n handler: async ({ mastra, mcpClientId, page, perPage, orderBy }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n const mcpClient = await mcpClientStore.getById(mcpClientId);\n if (!mcpClient) {\n throw new HTTPException(404, { message: `MCP client with id ${mcpClientId} not found` });\n }\n\n const result = await mcpClientStore.listVersions({\n mcpClientId,\n page,\n perPage,\n orderBy,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error listing MCP client versions');\n }\n },\n});\n\n/**\n * POST /stored/mcp-clients/:mcpClientId/versions - Create a new version snapshot\n */\nexport const CREATE_MCP_CLIENT_VERSION_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/mcp-clients/:mcpClientId/versions',\n requiresAuth: true,\n responseType: 'json',\n pathParamSchema: mcpClientVersionPathParams,\n bodySchema: createMCPClientVersionBodySchema,\n responseSchema: createMCPClientVersionResponseSchema,\n summary: 'Create MCP client version',\n description: 'Creates a new version snapshot of the current MCP client configuration',\n tags: ['MCP Client Versions'],\n handler: async ({ mastra, mcpClientId, changeMessage }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n const mcpClient = await mcpClientStore.getById(mcpClientId);\n if (!mcpClient) {\n throw new HTTPException(404, { message: `MCP client with id ${mcpClientId} not found` });\n }\n\n let currentConfig: Record<string, unknown> = {};\n if (mcpClient.activeVersionId) {\n const activeVersion = await mcpClientStore.getVersion(mcpClient.activeVersionId);\n if (activeVersion) {\n currentConfig = extractConfigFromVersion(\n activeVersion as unknown as Record<string, unknown>,\n MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS,\n );\n }\n }\n\n const latestVersion = await mcpClientStore.getLatestVersion(mcpClientId);\n\n // If no activeVersionId, fall back to latest version config\n if (!mcpClient.activeVersionId && latestVersion) {\n currentConfig = extractConfigFromVersion(\n latestVersion as unknown as Record<string, unknown>,\n MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS,\n );\n }\n const previousConfig = latestVersion\n ? extractConfigFromVersion(\n latestVersion as unknown as Record<string, unknown>,\n MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS,\n )\n : null;\n\n const changedFields = calculateChangedFields(previousConfig, currentConfig);\n\n const { versionId } = await createVersionWithRetry(\n mcpClientStore as unknown as VersionedStoreInterface,\n mcpClientId,\n 'mcpClientId',\n currentConfig,\n changedFields,\n { changeMessage },\n );\n\n const version = await mcpClientStore.getVersion(versionId);\n if (!version) {\n throw new HTTPException(500, { message: 'Failed to retrieve created version' });\n }\n\n await enforceRetentionLimit(\n mcpClientStore as unknown as VersionedStoreInterface,\n mcpClientId,\n 'mcpClientId',\n mcpClient.activeVersionId,\n );\n\n return version;\n } catch (error) {\n return handleError(error, 'Error creating MCP client version');\n }\n },\n});\n\n/**\n * GET /stored/mcp-clients/:mcpClientId/versions/:versionId - Get a specific version\n */\nexport const GET_MCP_CLIENT_VERSION_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/mcp-clients/:mcpClientId/versions/:versionId',\n requiresAuth: true,\n responseType: 'json',\n pathParamSchema: mcpClientVersionIdPathParams,\n responseSchema: getMCPClientVersionResponseSchema,\n summary: 'Get MCP client version',\n description: 'Returns a specific version of an MCP client by its version ID',\n tags: ['MCP Client Versions'],\n handler: async ({ mastra, mcpClientId, versionId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n const version = await mcpClientStore.getVersion(versionId);\n\n if (!version) {\n throw new HTTPException(404, { message: `Version with id ${versionId} not found` });\n }\n\n if (version.mcpClientId !== mcpClientId) {\n throw new HTTPException(404, {\n message: `Version with id ${versionId} not found for MCP client ${mcpClientId}`,\n });\n }\n\n return version;\n } catch (error) {\n return handleError(error, 'Error getting MCP client version');\n }\n },\n});\n\n/**\n * POST /stored/mcp-clients/:mcpClientId/versions/:versionId/activate - Set a version as active\n */\nexport const ACTIVATE_MCP_CLIENT_VERSION_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/mcp-clients/:mcpClientId/versions/:versionId/activate',\n requiresAuth: true,\n responseType: 'json',\n pathParamSchema: mcpClientVersionIdPathParams,\n responseSchema: activateMCPClientVersionResponseSchema,\n summary: 'Activate MCP client version',\n description: 'Sets a specific version as the active version for the MCP client',\n tags: ['MCP Client Versions'],\n handler: async ({ mastra, mcpClientId, versionId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n const mcpClient = await mcpClientStore.getById(mcpClientId);\n if (!mcpClient) {\n throw new HTTPException(404, { message: `MCP client with id ${mcpClientId} not found` });\n }\n\n const version = await mcpClientStore.getVersion(versionId);\n if (!version) {\n throw new HTTPException(404, { message: `Version with id ${versionId} not found` });\n }\n if (version.mcpClientId !== mcpClientId) {\n throw new HTTPException(404, {\n message: `Version with id ${versionId} not found for MCP client ${mcpClientId}`,\n });\n }\n\n await mcpClientStore.update({\n id: mcpClientId,\n activeVersionId: versionId,\n status: 'published',\n });\n\n // Clear the editor cache so subsequent requests see the new active version\n mastra.getEditor()?.mcp.clearCache(mcpClientId);\n\n return {\n success: true,\n message: `Version ${version.versionNumber} is now active`,\n activeVersionId: versionId,\n };\n } catch (error) {\n return handleError(error, 'Error activating MCP client version');\n }\n },\n});\n\n/**\n * POST /stored/mcp-clients/:mcpClientId/versions/:versionId/restore - Restore MCP client to a version\n */\nexport const RESTORE_MCP_CLIENT_VERSION_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/mcp-clients/:mcpClientId/versions/:versionId/restore',\n requiresAuth: true,\n responseType: 'json',\n pathParamSchema: mcpClientVersionIdPathParams,\n responseSchema: restoreMCPClientVersionResponseSchema,\n summary: 'Restore MCP client version',\n description: 'Restores the MCP client configuration from a version, creating a new version',\n tags: ['MCP Client Versions'],\n handler: async ({ mastra, mcpClientId, versionId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n const mcpClient = await mcpClientStore.getById(mcpClientId);\n if (!mcpClient) {\n throw new HTTPException(404, { message: `MCP client with id ${mcpClientId} not found` });\n }\n\n const versionToRestore = await mcpClientStore.getVersion(versionId);\n if (!versionToRestore) {\n throw new HTTPException(404, { message: `Version with id ${versionId} not found` });\n }\n if (versionToRestore.mcpClientId !== mcpClientId) {\n throw new HTTPException(404, {\n message: `Version with id ${versionId} not found for MCP client ${mcpClientId}`,\n });\n }\n\n const restoredConfig = extractConfigFromVersion(\n versionToRestore as unknown as Record<string, unknown>,\n MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS,\n );\n\n await mcpClientStore.update({\n id: mcpClientId,\n ...restoredConfig,\n });\n\n const latestVersion = await mcpClientStore.getLatestVersion(mcpClientId);\n const previousConfig = latestVersion\n ? extractConfigFromVersion(\n latestVersion as unknown as Record<string, unknown>,\n MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS,\n )\n : null;\n\n const changedFields = calculateChangedFields(previousConfig, restoredConfig);\n\n const { versionId: newVersionId } = await createVersionWithRetry(\n mcpClientStore as unknown as VersionedStoreInterface,\n mcpClientId,\n 'mcpClientId',\n restoredConfig,\n changedFields,\n {\n changeMessage: `Restored from version ${versionToRestore.versionNumber}`,\n },\n );\n\n const newVersion = await mcpClientStore.getVersion(newVersionId);\n if (!newVersion) {\n throw new HTTPException(500, { message: 'Failed to retrieve created version' });\n }\n\n await enforceRetentionLimit(\n mcpClientStore as unknown as VersionedStoreInterface,\n mcpClientId,\n 'mcpClientId',\n mcpClient.activeVersionId,\n );\n\n // Clear the editor cache so subsequent requests see the updated config\n mastra.getEditor()?.mcp.clearCache(mcpClientId);\n\n return newVersion;\n } catch (error) {\n return handleError(error, 'Error restoring MCP client version');\n }\n },\n});\n\n/**\n * DELETE /stored/mcp-clients/:mcpClientId/versions/:versionId - Delete a version\n */\nexport const DELETE_MCP_CLIENT_VERSION_ROUTE = createRoute({\n method: 'DELETE',\n path: '/stored/mcp-clients/:mcpClientId/versions/:versionId',\n requiresAuth: true,\n responseType: 'json',\n pathParamSchema: mcpClientVersionIdPathParams,\n responseSchema: deleteMCPClientVersionResponseSchema,\n summary: 'Delete MCP client version',\n description: 'Deletes a specific version (cannot delete the active version)',\n tags: ['MCP Client Versions'],\n handler: async ({ mastra, mcpClientId, versionId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n const mcpClient = await mcpClientStore.getById(mcpClientId);\n if (!mcpClient) {\n throw new HTTPException(404, { message: `MCP client with id ${mcpClientId} not found` });\n }\n\n const version = await mcpClientStore.getVersion(versionId);\n if (!version) {\n throw new HTTPException(404, { message: `Version with id ${versionId} not found` });\n }\n if (version.mcpClientId !== mcpClientId) {\n throw new HTTPException(404, {\n message: `Version with id ${versionId} not found for MCP client ${mcpClientId}`,\n });\n }\n\n if (mcpClient.activeVersionId === versionId) {\n throw new HTTPException(400, {\n message: 'Cannot delete the active version. Activate a different version first.',\n });\n }\n\n await mcpClientStore.deleteVersion(versionId);\n\n // Clear the editor cache so subsequent requests see the updated config\n mastra.getEditor()?.mcp.clearCache(mcpClientId);\n\n return {\n success: true,\n message: `Version ${version.versionNumber} deleted successfully`,\n };\n } catch (error) {\n return handleError(error, 'Error deleting MCP client version');\n }\n },\n});\n\n/**\n * GET /stored/mcp-clients/:mcpClientId/versions/compare - Compare two versions\n */\nexport const COMPARE_MCP_CLIENT_VERSIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/mcp-clients/:mcpClientId/versions/compare',\n requiresAuth: true,\n responseType: 'json',\n pathParamSchema: mcpClientVersionPathParams,\n queryParamSchema: compareMCPClientVersionsQuerySchema,\n responseSchema: compareMCPClientVersionsResponseSchema,\n summary: 'Compare MCP client versions',\n description: 'Compares two versions and returns the differences between them',\n tags: ['MCP Client Versions'],\n handler: async ({ mastra, mcpClientId, from, to }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n const fromVersion = await mcpClientStore.getVersion(from);\n if (!fromVersion) {\n throw new HTTPException(404, { message: `Version with id ${from} not found` });\n }\n if (fromVersion.mcpClientId !== mcpClientId) {\n throw new HTTPException(404, {\n message: `Version with id ${from} not found for MCP client ${mcpClientId}`,\n });\n }\n\n const toVersion = await mcpClientStore.getVersion(to);\n if (!toVersion) {\n throw new HTTPException(404, { message: `Version with id ${to} not found` });\n }\n if (toVersion.mcpClientId !== mcpClientId) {\n throw new HTTPException(404, {\n message: `Version with id ${to} not found for MCP client ${mcpClientId}`,\n });\n }\n\n const fromConfig = extractConfigFromVersion(\n fromVersion as unknown as Record<string, unknown>,\n MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS,\n );\n const toConfig = extractConfigFromVersion(\n toVersion as unknown as Record<string, unknown>,\n MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS,\n );\n\n const diffs = computeVersionDiffs(fromConfig, toConfig);\n\n return {\n diffs,\n fromVersion,\n toVersion,\n };\n } catch (error) {\n return handleError(error, 'Error comparing MCP client versions');\n }\n },\n});\n"]}
|