@mastra/server 1.51.1-alpha.0 → 1.52.0-alpha.11

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.
Files changed (484) hide show
  1. package/CHANGELOG.md +151 -0
  2. package/dist/_types/@internal_voice/dist/_types/@internal_core/dist/request-context/index.d.ts +5 -5
  3. package/dist/_types/@internal_voice/dist/routes/index.d.ts +18 -18
  4. package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-sdk-v5/dist/index.d.ts +4 -4
  5. package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-v6/dist/index.d.ts +10 -6
  6. package/dist/{api-schema-manifest-5AIWYXKR.cjs → api-schema-manifest-CP5SI2MF.cjs} +4 -4
  7. package/dist/{api-schema-manifest-5AIWYXKR.cjs.map → api-schema-manifest-CP5SI2MF.cjs.map} +1 -1
  8. package/dist/{api-schema-manifest-MZ4NOXVH.js → api-schema-manifest-SIDPW7RQ.js} +3 -3
  9. package/dist/{api-schema-manifest-MZ4NOXVH.js.map → api-schema-manifest-SIDPW7RQ.js.map} +1 -1
  10. package/dist/{chunk-THQZFNHO.cjs → chunk-2CMAB3SO.cjs} +10 -10
  11. package/dist/{chunk-THQZFNHO.cjs.map → chunk-2CMAB3SO.cjs.map} +1 -1
  12. package/dist/{chunk-JN4YYVB6.js → chunk-2PFISG5R.js} +3 -3
  13. package/dist/{chunk-JN4YYVB6.js.map → chunk-2PFISG5R.js.map} +1 -1
  14. package/dist/{chunk-BNR5CIPX.cjs → chunk-2Q2CCUIN.cjs} +4 -4
  15. package/dist/{chunk-BNR5CIPX.cjs.map → chunk-2Q2CCUIN.cjs.map} +1 -1
  16. package/dist/{chunk-U5AYX5QW.js → chunk-2XSTFQHE.js} +4 -4
  17. package/dist/{chunk-U5AYX5QW.js.map → chunk-2XSTFQHE.js.map} +1 -1
  18. package/dist/{chunk-AGMARPDG.js → chunk-2YL7Z4BF.js} +3 -3
  19. package/dist/{chunk-AGMARPDG.js.map → chunk-2YL7Z4BF.js.map} +1 -1
  20. package/dist/{chunk-MJ5QWRI2.cjs → chunk-33C4F4LV.cjs} +4 -4
  21. package/dist/{chunk-MJ5QWRI2.cjs.map → chunk-33C4F4LV.cjs.map} +1 -1
  22. package/dist/{chunk-27F2AJU2.cjs → chunk-3ANOSGBL.cjs} +3 -3
  23. package/dist/{chunk-27F2AJU2.cjs.map → chunk-3ANOSGBL.cjs.map} +1 -1
  24. package/dist/{chunk-QJEXUABN.js → chunk-3EKSC4QT.js} +5 -5
  25. package/dist/{chunk-QJEXUABN.js.map → chunk-3EKSC4QT.js.map} +1 -1
  26. package/dist/{chunk-NI4O4PKL.js → chunk-3G43R5VJ.js} +4 -4
  27. package/dist/{chunk-NI4O4PKL.js.map → chunk-3G43R5VJ.js.map} +1 -1
  28. package/dist/{chunk-DIG2K5CV.cjs → chunk-3JVOIOO6.cjs} +7 -3
  29. package/dist/chunk-3JVOIOO6.cjs.map +1 -0
  30. package/dist/{chunk-SGXBKIPB.cjs → chunk-3NRUYIMU.cjs} +10 -10
  31. package/dist/{chunk-SGXBKIPB.cjs.map → chunk-3NRUYIMU.cjs.map} +1 -1
  32. package/dist/{chunk-356JZOB2.js → chunk-3W4W6HXP.js} +3 -3
  33. package/dist/{chunk-356JZOB2.js.map → chunk-3W4W6HXP.js.map} +1 -1
  34. package/dist/{chunk-GFP7IMFR.cjs → chunk-4JAXFPYO.cjs} +5 -5
  35. package/dist/{chunk-GFP7IMFR.cjs.map → chunk-4JAXFPYO.cjs.map} +1 -1
  36. package/dist/{chunk-EFJIK2PW.js → chunk-4JVPQKUQ.js} +3 -3
  37. package/dist/{chunk-EFJIK2PW.js.map → chunk-4JVPQKUQ.js.map} +1 -1
  38. package/dist/{chunk-OY2WGJHL.js → chunk-4UMCN5AA.js} +12 -4
  39. package/dist/chunk-4UMCN5AA.js.map +1 -0
  40. package/dist/{chunk-TEIKCIX2.js → chunk-56RXKWNW.js} +8 -8
  41. package/dist/{chunk-TEIKCIX2.js.map → chunk-56RXKWNW.js.map} +1 -1
  42. package/dist/{chunk-MPFUINWR.js → chunk-5HBR27TT.js} +4 -4
  43. package/dist/{chunk-MPFUINWR.js.map → chunk-5HBR27TT.js.map} +1 -1
  44. package/dist/{chunk-LXWMMOJ4.cjs → chunk-5HJA6HXT.cjs} +6 -6
  45. package/dist/{chunk-LXWMMOJ4.cjs.map → chunk-5HJA6HXT.cjs.map} +1 -1
  46. package/dist/{chunk-LYOM6EQP.cjs → chunk-6O4WQ2VL.cjs} +22 -22
  47. package/dist/{chunk-LYOM6EQP.cjs.map → chunk-6O4WQ2VL.cjs.map} +1 -1
  48. package/dist/{chunk-2YY3EMMS.js → chunk-6VTOGOS2.js} +7 -4
  49. package/dist/chunk-6VTOGOS2.js.map +1 -0
  50. package/dist/{chunk-J6TRVKBB.cjs → chunk-74UCXGOB.cjs} +28 -21
  51. package/dist/chunk-74UCXGOB.cjs.map +1 -0
  52. package/dist/{chunk-Q6FMYSXG.js → chunk-A6SVMM25.js} +15 -9
  53. package/dist/chunk-A6SVMM25.js.map +1 -0
  54. package/dist/{chunk-JBSUT5XF.js → chunk-A7APTIYJ.js} +11 -4
  55. package/dist/chunk-A7APTIYJ.js.map +1 -0
  56. package/dist/{chunk-HI4E75YH.js → chunk-ACUQCHGF.js} +4 -4
  57. package/dist/{chunk-HI4E75YH.js.map → chunk-ACUQCHGF.js.map} +1 -1
  58. package/dist/{chunk-H32FN255.cjs → chunk-AEQ33POL.cjs} +9 -9
  59. package/dist/{chunk-H32FN255.cjs.map → chunk-AEQ33POL.cjs.map} +1 -1
  60. package/dist/{chunk-5535L5CG.js → chunk-ANCIQDAT.js} +5 -5
  61. package/dist/{chunk-5535L5CG.js.map → chunk-ANCIQDAT.js.map} +1 -1
  62. package/dist/{chunk-6LFFIOT4.cjs → chunk-B4G4AHXF.cjs} +24 -24
  63. package/dist/{chunk-6LFFIOT4.cjs.map → chunk-B4G4AHXF.cjs.map} +1 -1
  64. package/dist/{chunk-I2LG5WYB.js → chunk-BZUNERBP.js} +3 -3
  65. package/dist/{chunk-I2LG5WYB.js.map → chunk-BZUNERBP.js.map} +1 -1
  66. package/dist/{chunk-T7JR2CZV.cjs → chunk-C4XGTKYF.cjs} +9 -9
  67. package/dist/{chunk-T7JR2CZV.cjs.map → chunk-C4XGTKYF.cjs.map} +1 -1
  68. package/dist/{chunk-TXM2XTUT.cjs → chunk-C5V2PEPJ.cjs} +10 -10
  69. package/dist/{chunk-TXM2XTUT.cjs.map → chunk-C5V2PEPJ.cjs.map} +1 -1
  70. package/dist/{chunk-SYZ2NTP3.cjs → chunk-C6CSDVSE.cjs} +9 -9
  71. package/dist/{chunk-SYZ2NTP3.cjs.map → chunk-C6CSDVSE.cjs.map} +1 -1
  72. package/dist/{chunk-ZIBI62YT.cjs → chunk-CJYBEH4N.cjs} +78 -71
  73. package/dist/chunk-CJYBEH4N.cjs.map +1 -0
  74. package/dist/{chunk-K6WBL3KZ.js → chunk-CPWPKQUC.js} +3 -3
  75. package/dist/{chunk-K6WBL3KZ.js.map → chunk-CPWPKQUC.js.map} +1 -1
  76. package/dist/{chunk-5VEVLTZC.js → chunk-CU4RG2A5.js} +6 -6
  77. package/dist/{chunk-5VEVLTZC.js.map → chunk-CU4RG2A5.js.map} +1 -1
  78. package/dist/{chunk-SLHJWJR3.js → chunk-DAAJHX77.js} +7 -7
  79. package/dist/{chunk-SLHJWJR3.js.map → chunk-DAAJHX77.js.map} +1 -1
  80. package/dist/{chunk-TPB44HAO.cjs → chunk-DJCA3C65.cjs} +28 -28
  81. package/dist/{chunk-TPB44HAO.cjs.map → chunk-DJCA3C65.cjs.map} +1 -1
  82. package/dist/{chunk-C6CCPCEC.cjs → chunk-DN6EUIM5.cjs} +5 -5
  83. package/dist/{chunk-C6CCPCEC.cjs.map → chunk-DN6EUIM5.cjs.map} +1 -1
  84. package/dist/{chunk-7PXSB34V.js → chunk-E7NEJGD2.js} +13 -6
  85. package/dist/chunk-E7NEJGD2.js.map +1 -0
  86. package/dist/{chunk-ELVO5SFM.cjs → chunk-ECW3BRU7.cjs} +16 -16
  87. package/dist/{chunk-ELVO5SFM.cjs.map → chunk-ECW3BRU7.cjs.map} +1 -1
  88. package/dist/{chunk-RKUFUE6P.js → chunk-ENZ275MP.js} +5 -5
  89. package/dist/{chunk-RKUFUE6P.js.map → chunk-ENZ275MP.js.map} +1 -1
  90. package/dist/{chunk-LZ32IIH2.cjs → chunk-ERHA2RJM.cjs} +7 -7
  91. package/dist/{chunk-LZ32IIH2.cjs.map → chunk-ERHA2RJM.cjs.map} +1 -1
  92. package/dist/{chunk-SXZS6VZ3.js → chunk-ETR4XOVD.js} +3 -3
  93. package/dist/{chunk-SXZS6VZ3.js.map → chunk-ETR4XOVD.js.map} +1 -1
  94. package/dist/{chunk-EJFYAD2W.cjs → chunk-EZG6VIIA.cjs} +26 -26
  95. package/dist/{chunk-EJFYAD2W.cjs.map → chunk-EZG6VIIA.cjs.map} +1 -1
  96. package/dist/{chunk-GLD2BPPG.js → chunk-F6ANJJFG.js} +4 -4
  97. package/dist/{chunk-GLD2BPPG.js.map → chunk-F6ANJJFG.js.map} +1 -1
  98. package/dist/{chunk-UIRQU4GW.js → chunk-FBI32AWY.js} +3 -3
  99. package/dist/{chunk-UIRQU4GW.js.map → chunk-FBI32AWY.js.map} +1 -1
  100. package/dist/{chunk-SXOMGGNC.cjs → chunk-FG753SMY.cjs} +26 -26
  101. package/dist/{chunk-SXOMGGNC.cjs.map → chunk-FG753SMY.cjs.map} +1 -1
  102. package/dist/{chunk-GGPRZBVJ.cjs → chunk-FGMGG2II.cjs} +26 -26
  103. package/dist/{chunk-GGPRZBVJ.cjs.map → chunk-FGMGG2II.cjs.map} +1 -1
  104. package/dist/{chunk-3OQMTFIV.js → chunk-FXXHWBF2.js} +3 -3
  105. package/dist/{chunk-3OQMTFIV.js.map → chunk-FXXHWBF2.js.map} +1 -1
  106. package/dist/{chunk-BUFXUC67.js → chunk-G54EXH45.js} +3 -3
  107. package/dist/{chunk-BUFXUC67.js.map → chunk-G54EXH45.js.map} +1 -1
  108. package/dist/{chunk-TMGV2NRM.cjs → chunk-GBVJ57SE.cjs} +5 -5
  109. package/dist/{chunk-TMGV2NRM.cjs.map → chunk-GBVJ57SE.cjs.map} +1 -1
  110. package/dist/{chunk-NMIBDLQD.js → chunk-GBZWJJVT.js} +6 -6
  111. package/dist/{chunk-NMIBDLQD.js.map → chunk-GBZWJJVT.js.map} +1 -1
  112. package/dist/{chunk-4C5RVGHE.cjs → chunk-GKIWZDPL.cjs} +5 -5
  113. package/dist/{chunk-4C5RVGHE.cjs.map → chunk-GKIWZDPL.cjs.map} +1 -1
  114. package/dist/{chunk-GON46QS4.js → chunk-GYJ5QXCE.js} +57 -26
  115. package/dist/chunk-GYJ5QXCE.js.map +1 -0
  116. package/dist/{chunk-IABGFWY2.cjs → chunk-HGAWQVT6.cjs} +5 -5
  117. package/dist/{chunk-IABGFWY2.cjs.map → chunk-HGAWQVT6.cjs.map} +1 -1
  118. package/dist/{chunk-AKJAQVZ3.cjs → chunk-HHTDYBRJ.cjs} +8 -2
  119. package/dist/chunk-HHTDYBRJ.cjs.map +1 -0
  120. package/dist/{chunk-CTYOUJ2J.cjs → chunk-HSCGW2LP.cjs} +20 -20
  121. package/dist/{chunk-CTYOUJ2J.cjs.map → chunk-HSCGW2LP.cjs.map} +1 -1
  122. package/dist/{chunk-M7OJEIOD.js → chunk-IBAVZJXZ.js} +4 -4
  123. package/dist/{chunk-M7OJEIOD.js.map → chunk-IBAVZJXZ.js.map} +1 -1
  124. package/dist/{chunk-TLBW3NWJ.cjs → chunk-IDUF4LDJ.cjs} +26 -26
  125. package/dist/{chunk-TLBW3NWJ.cjs.map → chunk-IDUF4LDJ.cjs.map} +1 -1
  126. package/dist/{chunk-E43WB5QM.js → chunk-IJ2EU3PK.js} +4 -4
  127. package/dist/{chunk-E43WB5QM.js.map → chunk-IJ2EU3PK.js.map} +1 -1
  128. package/dist/{chunk-AX3JNQ27.cjs → chunk-ISCDA47F.cjs} +49 -49
  129. package/dist/{chunk-AX3JNQ27.cjs.map → chunk-ISCDA47F.cjs.map} +1 -1
  130. package/dist/{chunk-TS2WBQFI.cjs → chunk-IXA2QMW5.cjs} +7 -7
  131. package/dist/{chunk-TS2WBQFI.cjs.map → chunk-IXA2QMW5.cjs.map} +1 -1
  132. package/dist/{chunk-KEE6UMGC.js → chunk-J62MSX2P.js} +3 -3
  133. package/dist/{chunk-KEE6UMGC.js.map → chunk-J62MSX2P.js.map} +1 -1
  134. package/dist/{chunk-WEAXQLOP.js → chunk-JCN5OOXU.js} +106 -72
  135. package/dist/chunk-JCN5OOXU.js.map +1 -0
  136. package/dist/{chunk-LEKVIHSE.js → chunk-JF6VE6ZA.js} +3 -3
  137. package/dist/{chunk-LEKVIHSE.js.map → chunk-JF6VE6ZA.js.map} +1 -1
  138. package/dist/{chunk-NI2DJ2VW.cjs → chunk-KK6BI6UL.cjs} +4 -4
  139. package/dist/{chunk-NI2DJ2VW.cjs.map → chunk-KK6BI6UL.cjs.map} +1 -1
  140. package/dist/{chunk-KOMWGC24.cjs → chunk-KX3TTMAZ.cjs} +9 -9
  141. package/dist/{chunk-KOMWGC24.cjs.map → chunk-KX3TTMAZ.cjs.map} +1 -1
  142. package/dist/{chunk-ZA2G7XV3.js → chunk-KXKAQQMV.js} +8 -3
  143. package/dist/chunk-KXKAQQMV.js.map +1 -0
  144. package/dist/{chunk-PTPMBE6M.cjs → chunk-L44I4QOQ.cjs} +19 -15
  145. package/dist/chunk-L44I4QOQ.cjs.map +1 -0
  146. package/dist/{chunk-5FOSK5R3.js → chunk-L4WPXN4O.js} +7 -3
  147. package/dist/chunk-L4WPXN4O.js.map +1 -0
  148. package/dist/{chunk-WZTUUETT.js → chunk-L63QSRET.js} +37 -37
  149. package/dist/{chunk-WZTUUETT.js.map → chunk-L63QSRET.js.map} +1 -1
  150. package/dist/{chunk-K4HCNNHA.js → chunk-LVPM3N53.js} +13 -9
  151. package/dist/chunk-LVPM3N53.js.map +1 -0
  152. package/dist/{chunk-YH4H2AJO.cjs → chunk-LYR677ST.cjs} +31 -31
  153. package/dist/{chunk-YH4H2AJO.cjs.map → chunk-LYR677ST.cjs.map} +1 -1
  154. package/dist/{chunk-P6EQTV2Y.js → chunk-LZDF6UJK.js} +4 -4
  155. package/dist/{chunk-P6EQTV2Y.js.map → chunk-LZDF6UJK.js.map} +1 -1
  156. package/dist/{chunk-MG3WOQQQ.js → chunk-MCGO43FL.js} +6 -6
  157. package/dist/{chunk-MG3WOQQQ.js.map → chunk-MCGO43FL.js.map} +1 -1
  158. package/dist/{chunk-6QIJVEVN.js → chunk-MDZFTTCP.js} +4 -4
  159. package/dist/{chunk-6QIJVEVN.js.map → chunk-MDZFTTCP.js.map} +1 -1
  160. package/dist/{chunk-BMGJWPCE.js → chunk-MLHASMTE.js} +11 -10
  161. package/dist/chunk-MLHASMTE.js.map +1 -0
  162. package/dist/{chunk-7MQRMIVN.cjs → chunk-MN7K3ZEC.cjs} +4 -4
  163. package/dist/{chunk-7MQRMIVN.cjs.map → chunk-MN7K3ZEC.cjs.map} +1 -1
  164. package/dist/{chunk-RVICRXZF.js → chunk-MTIYMK4E.js} +5 -5
  165. package/dist/{chunk-RVICRXZF.js.map → chunk-MTIYMK4E.js.map} +1 -1
  166. package/dist/{chunk-W36PYFFL.cjs → chunk-NIMP2XEL.cjs} +7 -7
  167. package/dist/{chunk-W36PYFFL.cjs.map → chunk-NIMP2XEL.cjs.map} +1 -1
  168. package/dist/{chunk-2R5GLZJD.js → chunk-O2PSL6W6.js} +5 -5
  169. package/dist/{chunk-2R5GLZJD.js.map → chunk-O2PSL6W6.js.map} +1 -1
  170. package/dist/{chunk-HYTCHAEG.cjs → chunk-O4H32NTL.cjs} +12 -12
  171. package/dist/{chunk-HYTCHAEG.cjs.map → chunk-O4H32NTL.cjs.map} +1 -1
  172. package/dist/{chunk-P2CNIVQT.cjs → chunk-OEGP45VE.cjs} +14 -6
  173. package/dist/chunk-OEGP45VE.cjs.map +1 -0
  174. package/dist/{chunk-7EEV6KBG.cjs → chunk-OEN2YIF2.cjs} +8 -8
  175. package/dist/{chunk-7EEV6KBG.cjs.map → chunk-OEN2YIF2.cjs.map} +1 -1
  176. package/dist/{chunk-KIDHIRVO.cjs → chunk-OFF7L43B.cjs} +7 -7
  177. package/dist/{chunk-KIDHIRVO.cjs.map → chunk-OFF7L43B.cjs.map} +1 -1
  178. package/dist/{chunk-IKIMKEA3.cjs → chunk-ONIQCC3S.cjs} +16 -16
  179. package/dist/{chunk-IKIMKEA3.cjs.map → chunk-ONIQCC3S.cjs.map} +1 -1
  180. package/dist/{chunk-A2NBGGMX.cjs → chunk-OY3FWOYF.cjs} +6 -6
  181. package/dist/{chunk-A2NBGGMX.cjs.map → chunk-OY3FWOYF.cjs.map} +1 -1
  182. package/dist/{chunk-T3C54LPX.cjs → chunk-P2X2Q6N6.cjs} +5 -5
  183. package/dist/{chunk-T3C54LPX.cjs.map → chunk-P2X2Q6N6.cjs.map} +1 -1
  184. package/dist/{chunk-256OPP7S.js → chunk-QGKHU5OX.js} +85 -59
  185. package/dist/chunk-QGKHU5OX.js.map +1 -0
  186. package/dist/{chunk-6NNCDLZC.cjs → chunk-QHQ7MY3K.cjs} +130 -130
  187. package/dist/{chunk-6NNCDLZC.cjs.map → chunk-QHQ7MY3K.cjs.map} +1 -1
  188. package/dist/{chunk-MXZPGEC2.js → chunk-QJ4B3W64.js} +3 -3
  189. package/dist/{chunk-MXZPGEC2.js.map → chunk-QJ4B3W64.js.map} +1 -1
  190. package/dist/{chunk-42M6Y2OD.cjs → chunk-QQJHGSB2.cjs} +13 -5
  191. package/dist/chunk-QQJHGSB2.cjs.map +1 -0
  192. package/dist/chunk-QQOLXYM2.cjs +744 -0
  193. package/dist/{chunk-GZFCZEZB.cjs.map → chunk-QQOLXYM2.cjs.map} +1 -1
  194. package/dist/{chunk-SLWYNPH6.js → chunk-QUDWKBXC.js} +13 -13
  195. package/dist/{chunk-SLWYNPH6.js.map → chunk-QUDWKBXC.js.map} +1 -1
  196. package/dist/{chunk-Y6BBB5S7.cjs → chunk-R6VPE24Q.cjs} +9 -9
  197. package/dist/{chunk-Y6BBB5S7.cjs.map → chunk-R6VPE24Q.cjs.map} +1 -1
  198. package/dist/{chunk-Z5OBB3DJ.js → chunk-R6ZATY4F.js} +4 -4
  199. package/dist/{chunk-Z5OBB3DJ.js.map → chunk-R6ZATY4F.js.map} +1 -1
  200. package/dist/{chunk-GULBOJRY.cjs → chunk-RHG3AGKE.cjs} +15 -15
  201. package/dist/{chunk-GULBOJRY.cjs.map → chunk-RHG3AGKE.cjs.map} +1 -1
  202. package/dist/{chunk-XNL6KN4F.cjs → chunk-RK5AHYSE.cjs} +28 -28
  203. package/dist/{chunk-XNL6KN4F.cjs.map → chunk-RK5AHYSE.cjs.map} +1 -1
  204. package/dist/{chunk-IWIWEX2Y.js → chunk-RU4F2ISV.js} +7 -7
  205. package/dist/{chunk-IWIWEX2Y.js.map → chunk-RU4F2ISV.js.map} +1 -1
  206. package/dist/{chunk-LTKBD2RQ.js → chunk-RYV3E6MM.js} +5 -5
  207. package/dist/{chunk-LTKBD2RQ.js.map → chunk-RYV3E6MM.js.map} +1 -1
  208. package/dist/{chunk-IRIBLEBI.cjs → chunk-RZDKK7OA.cjs} +15 -15
  209. package/dist/{chunk-IRIBLEBI.cjs.map → chunk-RZDKK7OA.cjs.map} +1 -1
  210. package/dist/{chunk-W4XN6DDQ.cjs → chunk-S3G6Y4WZ.cjs} +28 -28
  211. package/dist/{chunk-W4XN6DDQ.cjs.map → chunk-S3G6Y4WZ.cjs.map} +1 -1
  212. package/dist/{chunk-XLK5XSM2.js → chunk-SBRDTYFU.js} +9 -9
  213. package/dist/{chunk-XLK5XSM2.js.map → chunk-SBRDTYFU.js.map} +1 -1
  214. package/dist/{chunk-H5ZXWLOQ.cjs → chunk-SDIJUD3E.cjs} +19 -19
  215. package/dist/{chunk-H5ZXWLOQ.cjs.map → chunk-SDIJUD3E.cjs.map} +1 -1
  216. package/dist/{chunk-WJAV35G4.js → chunk-SOVKSSNJ.js} +6 -6
  217. package/dist/{chunk-WJAV35G4.js.map → chunk-SOVKSSNJ.js.map} +1 -1
  218. package/dist/{chunk-L4DD3HSB.js → chunk-SPNWC52V.js} +3 -3
  219. package/dist/{chunk-L4DD3HSB.js.map → chunk-SPNWC52V.js.map} +1 -1
  220. package/dist/{chunk-JSXYWIQ4.cjs → chunk-SUAVC2WE.cjs} +106 -72
  221. package/dist/chunk-SUAVC2WE.cjs.map +1 -0
  222. package/dist/{chunk-QDVO3DAW.js → chunk-T26RGYB4.js} +3 -3
  223. package/dist/{chunk-QDVO3DAW.js.map → chunk-T26RGYB4.js.map} +1 -1
  224. package/dist/{chunk-APMXFPSU.cjs → chunk-T3UJXNVA.cjs} +23 -23
  225. package/dist/{chunk-APMXFPSU.cjs.map → chunk-T3UJXNVA.cjs.map} +1 -1
  226. package/dist/{chunk-NBI73TS5.js → chunk-TB2LLLRU.js} +3 -3
  227. package/dist/{chunk-NBI73TS5.js.map → chunk-TB2LLLRU.js.map} +1 -1
  228. package/dist/{chunk-K6WZK5RX.cjs → chunk-TEVN4DYZ.cjs} +61 -61
  229. package/dist/{chunk-K6WZK5RX.cjs.map → chunk-TEVN4DYZ.cjs.map} +1 -1
  230. package/dist/{chunk-ONEOOPSN.js → chunk-TOEGCGGX.js} +4 -4
  231. package/dist/{chunk-ONEOOPSN.js.map → chunk-TOEGCGGX.js.map} +1 -1
  232. package/dist/{chunk-3BLT6ISZ.js → chunk-TQARCQ7L.js} +3 -3
  233. package/dist/{chunk-3BLT6ISZ.js.map → chunk-TQARCQ7L.js.map} +1 -1
  234. package/dist/{chunk-3F5MV2ED.js → chunk-UCCYY4X3.js} +5 -5
  235. package/dist/{chunk-3F5MV2ED.js.map → chunk-UCCYY4X3.js.map} +1 -1
  236. package/dist/{chunk-HW2VSBCG.cjs → chunk-UCDJCHJA.cjs} +4 -4
  237. package/dist/{chunk-HW2VSBCG.cjs.map → chunk-UCDJCHJA.cjs.map} +1 -1
  238. package/dist/{chunk-2H2SGSP4.js → chunk-UE4237DD.js} +4 -4
  239. package/dist/{chunk-2H2SGSP4.js.map → chunk-UE4237DD.js.map} +1 -1
  240. package/dist/{chunk-RSCLEVN3.cjs → chunk-UMEXTJRN.cjs} +141 -140
  241. package/dist/chunk-UMEXTJRN.cjs.map +1 -0
  242. package/dist/{chunk-XKF5ENM7.cjs → chunk-UMLGA4KV.cjs} +57 -26
  243. package/dist/chunk-UMLGA4KV.cjs.map +1 -0
  244. package/dist/{chunk-UO4HGWYR.js → chunk-UXJQT76B.js} +5 -5
  245. package/dist/{chunk-UO4HGWYR.js.map → chunk-UXJQT76B.js.map} +1 -1
  246. package/dist/{chunk-BH354CYO.js → chunk-V4X6GU2M.js} +5 -5
  247. package/dist/{chunk-BH354CYO.js.map → chunk-V4X6GU2M.js.map} +1 -1
  248. package/dist/{chunk-7NBIALK4.js → chunk-VE4HJNJQ.js} +171 -48
  249. package/dist/chunk-VE4HJNJQ.js.map +1 -0
  250. package/dist/{chunk-SXKQ7CSX.cjs → chunk-VK4EOZXR.cjs} +7 -3
  251. package/dist/chunk-VK4EOZXR.cjs.map +1 -0
  252. package/dist/{chunk-2S4SNS5D.cjs → chunk-VQPOVKZG.cjs} +29 -29
  253. package/dist/{chunk-2S4SNS5D.cjs.map → chunk-VQPOVKZG.cjs.map} +1 -1
  254. package/dist/{chunk-OGHCGR5P.js → chunk-VTD4AE3B.js} +4 -4
  255. package/dist/{chunk-OGHCGR5P.js.map → chunk-VTD4AE3B.js.map} +1 -1
  256. package/dist/{chunk-DHAHH4TH.js → chunk-W54JQ2AA.js} +3 -3
  257. package/dist/{chunk-DHAHH4TH.js.map → chunk-W54JQ2AA.js.map} +1 -1
  258. package/dist/{chunk-QQF22Q32.cjs → chunk-WBW5BNAI.cjs} +22 -16
  259. package/dist/chunk-WBW5BNAI.cjs.map +1 -0
  260. package/dist/{chunk-CXAJPAJ2.cjs → chunk-WE6BWC6H.cjs} +3 -3
  261. package/dist/{chunk-CXAJPAJ2.cjs.map → chunk-WE6BWC6H.cjs.map} +1 -1
  262. package/dist/{chunk-S6TNTR3A.cjs → chunk-WFCNC4DB.cjs} +7 -7
  263. package/dist/{chunk-S6TNTR3A.cjs.map → chunk-WFCNC4DB.cjs.map} +1 -1
  264. package/dist/{chunk-SB4CG73V.js → chunk-WHIHVWH4.js} +3 -3
  265. package/dist/{chunk-SB4CG73V.js.map → chunk-WHIHVWH4.js.map} +1 -1
  266. package/dist/{chunk-HDIYJI2Z.cjs → chunk-WMS7BOP7.cjs} +10 -10
  267. package/dist/{chunk-HDIYJI2Z.cjs.map → chunk-WMS7BOP7.cjs.map} +1 -1
  268. package/dist/{chunk-52LEKN7E.cjs → chunk-WPRN2QB2.cjs} +9 -9
  269. package/dist/{chunk-52LEKN7E.cjs.map → chunk-WPRN2QB2.cjs.map} +1 -1
  270. package/dist/{chunk-ZG6ZAG5V.cjs → chunk-WQVA7QMU.cjs} +370 -247
  271. package/dist/chunk-WQVA7QMU.cjs.map +1 -0
  272. package/dist/{chunk-SU4ZAHUZ.js → chunk-WSGMIVDK.js} +4 -4
  273. package/dist/{chunk-SU4ZAHUZ.js.map → chunk-WSGMIVDK.js.map} +1 -1
  274. package/dist/{chunk-SEV4GJWB.js → chunk-XMHDBP3V.js} +6 -6
  275. package/dist/{chunk-SEV4GJWB.js.map → chunk-XMHDBP3V.js.map} +1 -1
  276. package/dist/{chunk-WIOYCLJC.cjs → chunk-XWC3RWOE.cjs} +5 -5
  277. package/dist/{chunk-WIOYCLJC.cjs.map → chunk-XWC3RWOE.cjs.map} +1 -1
  278. package/dist/{chunk-QJHZIGQG.js → chunk-XWPRNCUY.js} +11 -4
  279. package/dist/chunk-XWPRNCUY.js.map +1 -0
  280. package/dist/{chunk-ILPFFVYC.cjs → chunk-YBLFY24F.cjs} +90 -64
  281. package/dist/chunk-YBLFY24F.cjs.map +1 -0
  282. package/dist/{chunk-MPYN6WBT.cjs → chunk-YLHORHJN.cjs} +109 -109
  283. package/dist/{chunk-MPYN6WBT.cjs.map → chunk-YLHORHJN.cjs.map} +1 -1
  284. package/dist/{chunk-JGEOOOSP.js → chunk-YPSJBKM7.js} +3 -3
  285. package/dist/{chunk-JGEOOOSP.js.map → chunk-YPSJBKM7.js.map} +1 -1
  286. package/dist/{chunk-64QFFUEH.js → chunk-YTLTMMB7.js} +3 -3
  287. package/dist/{chunk-64QFFUEH.js.map → chunk-YTLTMMB7.js.map} +1 -1
  288. package/dist/{chunk-DJGKM4TB.cjs → chunk-ZCNBUBA6.cjs} +6 -6
  289. package/dist/{chunk-DJGKM4TB.cjs.map → chunk-ZCNBUBA6.cjs.map} +1 -1
  290. package/dist/{chunk-6SZGOLAP.js → chunk-ZIE4HRC6.js} +3 -3
  291. package/dist/{chunk-6SZGOLAP.js.map → chunk-ZIE4HRC6.js.map} +1 -1
  292. package/dist/{chunk-CH5VUESZ.js → chunk-ZLYTTIMY.js} +5 -5
  293. package/dist/{chunk-CH5VUESZ.js.map → chunk-ZLYTTIMY.js.map} +1 -1
  294. package/dist/{dist-U7GWPDLW.js → dist-5SOKL7Z3.js} +28 -9
  295. package/dist/dist-5SOKL7Z3.js.map +1 -0
  296. package/dist/{dist-3RPTBPFJ.cjs → dist-DSLHQDSU.cjs} +29 -10
  297. package/dist/dist-DSLHQDSU.cjs.map +1 -0
  298. package/dist/docs/SKILL.md +1 -1
  299. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  300. package/dist/{observational-memory-DH3LMZPZ-H3YJ62VW.js → observational-memory-HQ4AP566-5DYSQ36B.js} +3 -3
  301. package/dist/{observational-memory-DH3LMZPZ-H3YJ62VW.js.map → observational-memory-HQ4AP566-5DYSQ36B.js.map} +1 -1
  302. package/dist/{observational-memory-DH3LMZPZ-K7WGOXTQ.cjs → observational-memory-HQ4AP566-LOFKPCXM.cjs} +29 -29
  303. package/dist/{observational-memory-DH3LMZPZ-K7WGOXTQ.cjs.map → observational-memory-HQ4AP566-LOFKPCXM.cjs.map} +1 -1
  304. package/dist/server/auth/helpers.d.ts.map +1 -1
  305. package/dist/server/auth/index.cjs +19 -19
  306. package/dist/server/auth/index.js +2 -2
  307. package/dist/server/constants.d.ts.map +1 -1
  308. package/dist/server/handlers/a2a.cjs +14 -14
  309. package/dist/server/handlers/a2a.js +1 -1
  310. package/dist/server/handlers/agent-builder.cjs +17 -17
  311. package/dist/server/handlers/agent-builder.d.ts +20 -20
  312. package/dist/server/handlers/agent-builder.d.ts.map +1 -1
  313. package/dist/server/handlers/agent-builder.js +1 -1
  314. package/dist/server/handlers/agent-controller.cjs +35 -35
  315. package/dist/server/handlers/agent-controller.d.ts +39 -12
  316. package/dist/server/handlers/agent-controller.d.ts.map +1 -1
  317. package/dist/server/handlers/agent-controller.js +1 -1
  318. package/dist/server/handlers/agent-versions.cjs +8 -8
  319. package/dist/server/handlers/agent-versions.js +1 -1
  320. package/dist/server/handlers/agents.cjs +48 -48
  321. package/dist/server/handlers/agents.d.ts +2902 -1090
  322. package/dist/server/handlers/agents.d.ts.map +1 -1
  323. package/dist/server/handlers/agents.js +1 -1
  324. package/dist/server/handlers/auth.cjs +13 -13
  325. package/dist/server/handlers/auth.js +1 -1
  326. package/dist/server/handlers/authorship.cjs +12 -12
  327. package/dist/server/handlers/authorship.js +1 -1
  328. package/dist/server/handlers/background-tasks.cjs +4 -4
  329. package/dist/server/handlers/background-tasks.d.ts +2 -2
  330. package/dist/server/handlers/background-tasks.d.ts.map +1 -1
  331. package/dist/server/handlers/background-tasks.js +1 -1
  332. package/dist/server/handlers/builder-registry.cjs +6 -6
  333. package/dist/server/handlers/builder-registry.js +1 -1
  334. package/dist/server/handlers/channels.cjs +5 -5
  335. package/dist/server/handlers/channels.js +1 -1
  336. package/dist/server/handlers/conversations.cjs +5 -5
  337. package/dist/server/handlers/conversations.js +1 -1
  338. package/dist/server/handlers/datasets.cjs +26 -26
  339. package/dist/server/handlers/datasets.d.ts +78 -78
  340. package/dist/server/handlers/datasets.d.ts.map +1 -1
  341. package/dist/server/handlers/datasets.js +1 -1
  342. package/dist/server/handlers/editor-builder.cjs +6 -6
  343. package/dist/server/handlers/editor-builder.js +1 -1
  344. package/dist/server/handlers/favorites-enrichment.cjs +4 -4
  345. package/dist/server/handlers/favorites-enrichment.js +1 -1
  346. package/dist/server/handlers/logs.cjs +4 -4
  347. package/dist/server/handlers/logs.d.ts +12 -12
  348. package/dist/server/handlers/logs.js +1 -1
  349. package/dist/server/handlers/mcp-client-versions.cjs +8 -8
  350. package/dist/server/handlers/mcp-client-versions.js +1 -1
  351. package/dist/server/handlers/mcp.cjs +11 -11
  352. package/dist/server/handlers/mcp.js +1 -1
  353. package/dist/server/handlers/memory.cjs +27 -27
  354. package/dist/server/handlers/memory.d.ts +49 -30
  355. package/dist/server/handlers/memory.d.ts.map +1 -1
  356. package/dist/server/handlers/memory.js +1 -1
  357. package/dist/server/handlers/observability-new-endpoints.d.ts +2 -2
  358. package/dist/server/handlers/processors.cjs +4 -4
  359. package/dist/server/handlers/processors.d.ts +10 -10
  360. package/dist/server/handlers/processors.js +1 -1
  361. package/dist/server/handlers/prompt-block-versions.cjs +8 -8
  362. package/dist/server/handlers/prompt-block-versions.js +1 -1
  363. package/dist/server/handlers/responses.cjs +4 -4
  364. package/dist/server/handlers/responses.js +1 -1
  365. package/dist/server/handlers/responses.storage.cjs +8 -8
  366. package/dist/server/handlers/responses.storage.js +1 -1
  367. package/dist/server/handlers/scorer-versions.cjs +8 -8
  368. package/dist/server/handlers/scorer-versions.js +1 -1
  369. package/dist/server/handlers/scores.cjs +7 -7
  370. package/dist/server/handlers/scores.js +1 -1
  371. package/dist/server/handlers/stored-agent-favorites.cjs +3 -3
  372. package/dist/server/handlers/stored-agent-favorites.js +1 -1
  373. package/dist/server/handlers/stored-agents.cjs +10 -10
  374. package/dist/server/handlers/stored-agents.js +1 -1
  375. package/dist/server/handlers/stored-mcp-clients.cjs +6 -6
  376. package/dist/server/handlers/stored-mcp-clients.js +1 -1
  377. package/dist/server/handlers/stored-prompt-blocks.cjs +6 -6
  378. package/dist/server/handlers/stored-prompt-blocks.js +1 -1
  379. package/dist/server/handlers/stored-scorers.cjs +6 -6
  380. package/dist/server/handlers/stored-scorers.js +1 -1
  381. package/dist/server/handlers/stored-skill-favorites.cjs +3 -3
  382. package/dist/server/handlers/stored-skill-favorites.js +1 -1
  383. package/dist/server/handlers/stored-skills.cjs +7 -7
  384. package/dist/server/handlers/stored-skills.js +1 -1
  385. package/dist/server/handlers/stored-workspaces.cjs +6 -6
  386. package/dist/server/handlers/stored-workspaces.js +1 -1
  387. package/dist/server/handlers/system.cjs +3 -3
  388. package/dist/server/handlers/system.d.ts +8 -0
  389. package/dist/server/handlers/system.d.ts.map +1 -1
  390. package/dist/server/handlers/system.js +1 -1
  391. package/dist/server/handlers/tool-providers.cjs +14 -14
  392. package/dist/server/handlers/tool-providers.js +1 -1
  393. package/dist/server/handlers/tools.cjs +6 -6
  394. package/dist/server/handlers/tools.d.ts +8 -8
  395. package/dist/server/handlers/tools.d.ts.map +1 -1
  396. package/dist/server/handlers/tools.js +1 -1
  397. package/dist/server/handlers/utils.cjs +14 -10
  398. package/dist/server/handlers/utils.d.ts +8 -0
  399. package/dist/server/handlers/utils.d.ts.map +1 -1
  400. package/dist/server/handlers/utils.js +1 -1
  401. package/dist/server/handlers/vector.cjs +16 -16
  402. package/dist/server/handlers/vector.d.ts +4 -4
  403. package/dist/server/handlers/vector.d.ts.map +1 -1
  404. package/dist/server/handlers/vector.js +1 -1
  405. package/dist/server/handlers/voice.cjs +8 -8
  406. package/dist/server/handlers/voice.js +1 -1
  407. package/dist/server/handlers/workflows.cjs +27 -27
  408. package/dist/server/handlers/workflows.d.ts +46 -46
  409. package/dist/server/handlers/workflows.d.ts.map +1 -1
  410. package/dist/server/handlers/workflows.js +1 -1
  411. package/dist/server/handlers.cjs +26 -26
  412. package/dist/server/handlers.js +13 -13
  413. package/dist/server/schemas/a2a.d.ts +1 -1
  414. package/dist/server/schemas/agents.d.ts +237 -292
  415. package/dist/server/schemas/agents.d.ts.map +1 -1
  416. package/dist/server/schemas/background-tasks.d.ts +1 -1
  417. package/dist/server/schemas/background-tasks.d.ts.map +1 -1
  418. package/dist/server/schemas/common.d.ts +18 -2
  419. package/dist/server/schemas/common.d.ts.map +1 -1
  420. package/dist/server/schemas/datasets.d.ts +39 -39
  421. package/dist/server/schemas/index.cjs +432 -424
  422. package/dist/server/schemas/index.js +27 -27
  423. package/dist/server/schemas/logs.d.ts +3 -3
  424. package/dist/server/schemas/memory.d.ts +23 -11
  425. package/dist/server/schemas/memory.d.ts.map +1 -1
  426. package/dist/server/schemas/processors.d.ts +5 -5
  427. package/dist/server/schemas/system.d.ts +8 -0
  428. package/dist/server/schemas/system.d.ts.map +1 -1
  429. package/dist/server/schemas/vectors.d.ts +2 -2
  430. package/dist/server/schemas/workflows.d.ts +7 -6
  431. package/dist/server/schemas/workflows.d.ts.map +1 -1
  432. package/dist/server/server-adapter/index.cjs +39 -39
  433. package/dist/server/server-adapter/index.cjs.map +1 -1
  434. package/dist/server/server-adapter/index.d.ts +2 -1
  435. package/dist/server/server-adapter/index.d.ts.map +1 -1
  436. package/dist/server/server-adapter/index.js +10 -10
  437. package/dist/server/server-adapter/index.js.map +1 -1
  438. package/dist/server/server-adapter/routes/agent-builder.d.ts +20 -20
  439. package/dist/server/server-adapter/routes/datasets.d.ts +78 -78
  440. package/dist/server/server-adapter/routes/legacy.d.ts +384 -144
  441. package/dist/server/server-adapter/routes/legacy.d.ts.map +1 -1
  442. package/dist/server/server-adapter/routes/logs.d.ts +12 -12
  443. package/dist/server/server-adapter/routes/memory.d.ts +49 -30
  444. package/dist/server/server-adapter/routes/memory.d.ts.map +1 -1
  445. package/dist/server/server-adapter/routes/observability.d.ts +1 -1
  446. package/dist/server/server-adapter/routes/processors.d.ts +10 -10
  447. package/dist/server/server-adapter/routes/system.d.ts +8 -0
  448. package/dist/server/server-adapter/routes/system.d.ts.map +1 -1
  449. package/dist/server/server-adapter/routes/tools.d.ts +4 -4
  450. package/dist/server/server-adapter/routes/tools.d.ts.map +1 -1
  451. package/dist/server/server-adapter/routes/vectors.d.ts +4 -4
  452. package/dist/server/server-adapter/routes/workflows.d.ts +42 -42
  453. package/package.json +9 -9
  454. package/dist/chunk-256OPP7S.js.map +0 -1
  455. package/dist/chunk-2YY3EMMS.js.map +0 -1
  456. package/dist/chunk-42M6Y2OD.cjs.map +0 -1
  457. package/dist/chunk-5FOSK5R3.js.map +0 -1
  458. package/dist/chunk-7NBIALK4.js.map +0 -1
  459. package/dist/chunk-7PXSB34V.js.map +0 -1
  460. package/dist/chunk-AKJAQVZ3.cjs.map +0 -1
  461. package/dist/chunk-BMGJWPCE.js.map +0 -1
  462. package/dist/chunk-DIG2K5CV.cjs.map +0 -1
  463. package/dist/chunk-GON46QS4.js.map +0 -1
  464. package/dist/chunk-GZFCZEZB.cjs +0 -744
  465. package/dist/chunk-ILPFFVYC.cjs.map +0 -1
  466. package/dist/chunk-J6TRVKBB.cjs.map +0 -1
  467. package/dist/chunk-JBSUT5XF.js.map +0 -1
  468. package/dist/chunk-JSXYWIQ4.cjs.map +0 -1
  469. package/dist/chunk-K4HCNNHA.js.map +0 -1
  470. package/dist/chunk-OY2WGJHL.js.map +0 -1
  471. package/dist/chunk-P2CNIVQT.cjs.map +0 -1
  472. package/dist/chunk-PTPMBE6M.cjs.map +0 -1
  473. package/dist/chunk-Q6FMYSXG.js.map +0 -1
  474. package/dist/chunk-QJHZIGQG.js.map +0 -1
  475. package/dist/chunk-QQF22Q32.cjs.map +0 -1
  476. package/dist/chunk-RSCLEVN3.cjs.map +0 -1
  477. package/dist/chunk-SXKQ7CSX.cjs.map +0 -1
  478. package/dist/chunk-WEAXQLOP.js.map +0 -1
  479. package/dist/chunk-XKF5ENM7.cjs.map +0 -1
  480. package/dist/chunk-ZA2G7XV3.js.map +0 -1
  481. package/dist/chunk-ZG6ZAG5V.cjs.map +0 -1
  482. package/dist/chunk-ZIBI62YT.cjs.map +0 -1
  483. package/dist/dist-3RPTBPFJ.cjs.map +0 -1
  484. package/dist/dist-U7GWPDLW.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/auth/defaults.ts","../src/server/auth/path-pattern.ts","../src/server/auth/helpers.ts"],"names":["MASTRA_USER_KEY","MASTRA_AUTH_TOKEN_KEY","MASTRA_RESOURCE_ID_KEY","MASTRA_AUTH_MODE_KEY","MASTRA_USER_PERMISSIONS_KEY","MASTRA_USER_ROLES_KEY"],"mappings":";;;;;AAGO,IAAM,iBAAA,GAAsC;AAAA,EACjD,SAAA,EAAW,CAAC,QAAQ,CAAA;AAAA,EACpB,MAAA,EAAQ,CAAC,MAAA,EAAQ,aAAa,CAAA;AAAA;AAAA,EAE9B,KAAA,EAAO;AAAA;AAAA,IAEL;AAAA,MACE,WAAW,CAAA,IAAA,KAAQ;AACjB,QAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,IAAA,EAAM;AAC7C,UAAA,IAAI,aAAa,IAAA,EAAM;AACrB,YAAA,OAAO,CAAC,CAAC,IAAA,CAAK,OAAA;AAAA,UAChB;AAEA,UAAA,IAAI,UAAU,IAAA,EAAM;AAClB,YAAA,OAAO,KAAK,IAAA,KAAS,OAAA;AAAA,UACvB;AAAA,QACF;AACA,QAAA,OAAO,KAAA;AAAA,MACT,CAAA;AAAA,MACA,KAAA,EAAO;AAAA;AACT;AAEJ;;;ACcO,SAAS,KAAA,CAAM,OAAwB,KAAA,EAAgC;AAC5E,EAAA,IAAI,iBAAiB,MAAA,EAAQ,OAAO,EAAE,IAAA,EAAM,KAAA,EAAO,SAAS,KAAA,EAAM;AAElE,EAAA,IAAI,CAAA;AACJ,EAAA,IAAI,CAAA;AACJ,EAAA,IAAI,GAAA;AACJ,EAAA,IAAI,GAAA;AACJ,EAAA,MAAM,OAAiB,EAAC;AACxB,EAAA,IAAI,OAAA,GAAU,EAAA;AACd,EAAA,MAAM,GAAA,GAAM,KAAA,CAAM,KAAA,CAAM,GAAG,CAAA;AAE3B,EAAA,GAAA,CAAI,CAAC,CAAA,IAAK,GAAA,CAAI,KAAA,EAAM;AAEpB,EAAA,OAAQ,GAAA,GAAM,GAAA,CAAI,KAAA,EAAM,EAAI;AAC1B,IAAA,CAAA,GAAI,IAAI,CAAC,CAAA;AACT,IAAA,IAAI,MAAM,GAAA,EAAK;AACb,MAAA,IAAA,CAAK,KAAK,CAAC,CAAA;AACX,MAAA,OAAA,IAAW,GAAA,CAAI,CAAC,CAAA,KAAM,GAAA,GAAM,YAAA,GAAe,OAAA;AAAA,IAC7C,CAAA,MAAA,IAAW,MAAM,GAAA,EAAK;AACpB,MAAA,CAAA,GAAI,GAAA,CAAI,OAAA,CAAQ,GAAA,EAAK,CAAC,CAAA;AACtB,MAAA,GAAA,GAAM,GAAA,CAAI,OAAA,CAAQ,GAAA,EAAK,CAAC,CAAA;AACxB,MAAA,IAAA,CAAK,KAAK,GAAA,CAAI,SAAA,CAAU,CAAA,EAAG,CAAC,CAAC,CAAC,CAAA,GAAI,CAAA,GAAI,CAAC,CAAC,CAAC,GAAA,GAAM,GAAA,GAAM,GAAA,CAAI,MAAM,CAAC,CAAA;AAChE,MAAA,OAAA,IAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,gBAAA,GAAmB,WAAA;AAC9C,MAAA,IAAI,CAAC,CAAC,CAAC,GAAA,cAAiB,CAAC,CAAC,CAAC,CAAA,GAAI,GAAA,GAAM,EAAA,IAAM,IAAA,GAAO,GAAA,CAAI,UAAU,GAAG,CAAA;AAAA,IACrE,CAAA,MAAO;AACL,MAAA,OAAA,IAAW,GAAA,GAAM,GAAA;AAAA,IACnB;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,OAAA,EAAS,IAAI,MAAA,CAAO,GAAA,GAAM,WAA+B,QAAQ,GAAG;AAAA,GACtE;AACF;;;AC/CO,IAAM,sBAAA,GAAyB,CACpC,IAAA,EACA,MAAA,EACA,qBAAA,KACY;AACZ,EAAA,IAAI,CAAC,qBAAA,EAAuB;AAC1B,IAAA,OAAO,KAAA;AAAA,EACT;AAGA,EAAA,MAAM,aAAA,GAAgB,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA;AACvC,EAAA,IAAI,qBAAA,CAAsB,GAAA,CAAI,aAAa,CAAA,EAAG;AAC5C,IAAA,OAAO,qBAAA,CAAsB,GAAA,CAAI,aAAa,CAAA,KAAM,IAAA;AAAA,EACtD;AAGA,EAAA,MAAM,WAAA,GAAc,OAAO,IAAI,CAAA,CAAA;AAC/B,EAAA,IAAI,qBAAA,CAAsB,GAAA,CAAI,WAAW,CAAA,EAAG;AAC1C,IAAA,OAAO,qBAAA,CAAsB,GAAA,CAAI,WAAW,CAAA,KAAM,IAAA;AAAA,EACpD;AAGA,EAAA,KAAA,MAAW,CAAC,QAAA,EAAU,YAAY,CAAA,IAAK,qBAAA,CAAsB,SAAQ,EAAG;AACtE,IAAA,MAAM,UAAA,GAAa,QAAA,CAAS,OAAA,CAAQ,GAAG,CAAA;AACvC,IAAA,IAAI,eAAe,EAAA,EAAI;AACrB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,WAAA,GAAc,QAAA,CAAS,SAAA,CAAU,CAAA,EAAG,UAAU,CAAA;AACpD,IAAA,MAAM,YAAA,GAAe,QAAA,CAAS,SAAA,CAAU,UAAA,GAAa,CAAC,CAAA;AAGtD,IAAA,IAAI,WAAA,KAAgB,MAAA,IAAU,WAAA,KAAgB,KAAA,EAAO;AACnD,MAAA;AAAA,IACF;AAGA,IAAA,IAAI,kBAAA,CAAmB,IAAA,EAAM,YAAY,CAAA,EAAG;AAC1C,MAAA,OAAO,YAAA,KAAiB,IAAA;AAAA,IAC1B;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT;AAMO,IAAM,uBAAA,GAA0B,CACrC,IAAA,EACA,MAAA,EACA,SAAA,KACoE;AACpE,EAAA,IAAI,CAAC,WAAW,OAAO,MAAA;AAEvB,EAAA,KAAA,MAAW,SAAS,SAAA,EAAW;AAC7B,IAAA,IAAI,KAAA,CAAM,MAAA,KAAW,MAAA,IAAU,KAAA,CAAM,WAAW,KAAA,EAAO;AAEvD,IAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,OAAM,GAAI,KAAA,CAAM,MAAM,IAAI,CAAA;AACjD,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AAC7B,IAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,IAAA,MAAM,SAAiC,EAAC;AACxC,IAAA,IAAI,IAAA,IAAQ,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AAC3B,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,QAAA,IAAI,KAAA,CAAM,CAAA,GAAI,CAAC,CAAA,KAAM,MAAA,EAAW;AAC9B,UAAA,MAAA,CAAO,KAAK,CAAC,CAAE,CAAA,GAAI,KAAA,CAAM,IAAI,CAAC,CAAA;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AAEA,IAAA,OAAO,EAAE,OAAO,MAAA,EAAO;AAAA,EACzB;AAEA,EAAA,OAAO,MAAA;AACT;AAOO,IAAM,yBAAyB,CACpC,IAAA,EACA,MAAA,EACA,SAAA,EACA,YACA,qBAAA,KACY;AACZ,EAAA,MAAM,eAAA,GAAkB,CAAC,GAAI,iBAAA,CAAkB,SAAA,IAAa,EAAC,EAAI,GAAI,UAAA,CAAW,SAAA,IAAa,EAAG,CAAA;AAChG,EAAA,OACE,OAAA,CAAQ,IAAI,UAAA,KAAe,MAAA;AAAA,GAEzB,CAAC,UAAA,CAAW,IAAA,EAAM,MAAA,EAAQ,eAAe,KAAK,CAAC,sBAAA,CAAuB,IAAA,EAAM,MAAA,EAAQ,qBAAqB,CAAA;AAAA,EAEzG,SAAA,CAAU,yBAAyB,CAAA,KAAM,MAAA,CAAA;AAE/C;AAEO,IAAM,mBAAA,GAAsB,CACjC,IAAA,EACA,MAAA,EACA,qBAAA,KACY;AACZ,EAAA,IAAI,CAAC,qBAAA,EAAuB;AAC1B,IAAA,OAAO,KAAA;AAAA,EACT;AAGA,EAAA,MAAM,aAAA,GAAgB,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA;AACvC,EAAA,IAAI,qBAAA,CAAsB,GAAA,CAAI,aAAa,CAAA,EAAG;AAC5C,IAAA,OAAO,CAAC,qBAAA,CAAsB,GAAA,CAAI,aAAa,CAAA;AAAA,EACjD;AAGA,EAAA,MAAM,WAAA,GAAc,OAAO,IAAI,CAAA,CAAA;AAC/B,EAAA,IAAI,qBAAA,CAAsB,GAAA,CAAI,WAAW,CAAA,EAAG;AAC1C,IAAA,OAAO,CAAC,qBAAA,CAAsB,GAAA,CAAI,WAAW,CAAA;AAAA,EAC/C;AAGA,EAAA,KAAA,MAAW,CAAC,QAAA,EAAU,YAAY,CAAA,IAAK,qBAAA,CAAsB,SAAQ,EAAG;AACtE,IAAA,MAAM,UAAA,GAAa,QAAA,CAAS,OAAA,CAAQ,GAAG,CAAA;AACvC,IAAA,IAAI,eAAe,EAAA,EAAI;AACrB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,WAAA,GAAc,QAAA,CAAS,SAAA,CAAU,CAAA,EAAG,UAAU,CAAA;AACpD,IAAA,MAAM,YAAA,GAAe,QAAA,CAAS,SAAA,CAAU,UAAA,GAAa,CAAC,CAAA;AAGtD,IAAA,IAAI,WAAA,KAAgB,MAAA,IAAU,WAAA,KAAgB,KAAA,EAAO;AACnD,MAAA;AAAA,IACF;AAGA,IAAA,IAAI,kBAAA,CAAmB,IAAA,EAAM,YAAY,CAAA,EAAG;AAC1C,MAAA,OAAO,CAAC,YAAA;AAAA,IACV;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT;AAQO,IAAM,eAAA,GAAkB,CAC7B,IAAA,EACA,MAAA,EACA,YACA,qBAAA,KACY;AACZ,EAAA,MAAM,eAAA,GAAkB,CAAC,GAAI,iBAAA,CAAkB,SAAA,IAAa,EAAC,EAAI,GAAI,UAAA,CAAW,SAAA,IAAa,EAAG,CAAA;AAChG,EAAA,OAAO,UAAA,CAAW,MAAM,MAAA,EAAQ,eAAe,KAAK,sBAAA,CAAuB,IAAA,EAAM,QAAQ,qBAAqB,CAAA;AAChH;AAEO,IAAM,iBAAA,GAAoB,CAAC,IAAA,EAAc,MAAA,EAAgB,UAAA,KAA0C;AAExG,EAAA,MAAM,YAAA,GAAe,CAAC,GAAI,iBAAA,CAAkB,MAAA,IAAU,EAAC,EAAI,GAAI,UAAA,CAAW,MAAA,IAAU,EAAG,CAAA;AAEvF,EAAA,OAAO,UAAA,CAAW,IAAA,EAAM,MAAA,EAAQ,YAAY,CAAA;AAC9C;AAEA,IAAM,UAAA,GAAa,CACjB,IAAA,EACA,MAAA,EACA,QAAA,KACY;AACZ,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,KAAA,MAAW,uBAAuB,QAAA,EAAU;AAC1C,IAAA,IAAI,+BAA+B,MAAA,EAAQ;AACzC,MAAA,IAAI,mBAAA,CAAoB,IAAA,CAAK,IAAI,CAAA,EAAG;AAClC,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,IACF;AAEA,IAAA,IAAI,OAAO,mBAAA,KAAwB,QAAA,IAAY,kBAAA,CAAmB,IAAA,EAAM,mBAAmB,CAAA,EAAG;AAC5F,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,IAAI,MAAM,OAAA,CAAQ,mBAAmB,CAAA,IAAK,mBAAA,CAAoB,WAAW,CAAA,EAAG;AAC1E,MAAA,MAAM,CAAC,OAAA,EAAS,eAAe,CAAA,GAAI,mBAAA;AACnC,MAAA,IAAI,mBAAmB,IAAA,EAAM,OAAO,KAAK,iBAAA,CAAkB,eAAA,EAAiB,MAAM,CAAA,EAAG;AACnF,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT,CAAA;AAEO,IAAM,kBAAA,GAAqB,CAAC,IAAA,EAAc,OAAA,KAA6B;AAQ5E,EAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,MAAM,OAAO,CAAA;AACxC,EAAA,OAAO,KAAA,CAAM,KAAK,IAAI,CAAA;AACxB;AAEO,IAAM,eAAA,GAAkB,CAAC,IAAA,EAAc,QAAA,KAA8D;AAC1G,EAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AAEtB,EAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAChC,IAAA,OAAO,kBAAA,CAAmB,MAAM,QAAQ,CAAA;AAAA,EAC1C;AAEA,EAAA,IAAI,oBAAoB,MAAA,EAAQ;AAC9B,IAAA,OAAO,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,EAC3B;AAEA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,EAAG;AAC3B,IAAA,OAAO,SAAS,IAAA,CAAK,CAAA,CAAA,KAAK,kBAAA,CAAmB,IAAA,EAAM,CAAC,CAAC,CAAA;AAAA,EACvD;AAEA,EAAA,OAAO,KAAA;AACT;AAEO,IAAM,iBAAA,GAAoB,CAAC,MAAA,EAA2B,KAAA,KAA2B;AACtF,EAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC9B,IAAA,OAAO,MAAA,KAAW,KAAA;AAAA,EACpB;AAEA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EAAG;AACzB,IAAA,OAAO,MAAA,CAAO,SAAS,KAAK,CAAA;AAAA,EAC9B;AAEA,EAAA,OAAO,KAAA;AACT;AAyBA,IAAM,IAAA,GAAmB,EAAE,MAAA,EAAQ,MAAA,EAAO;AAE1C,IAAM,wBAAA,GAA2B,CAAC,OAAA,KAAkD;AAClF,EAAA,IAAI,EAAE,mBAAmB,OAAA,CAAA,EAAU;AACjC,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,OAAO;AAAA,IACL,GAAA,EAAK,OAAA;AAAA,IACL,SAAS,OAAA,CAAQ,OAAA;AAAA,IACjB,QAAQ,CAAA,IAAA,KAAQ,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,IAAI,CAAA,IAAK;AAAA,GAC/C;AACF,CAAA;AAQO,IAAM,uBAAuB,OAAwB;AAAA,EAC1D,MAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,KAA0D;AACxD,EAAA,MAAM,kBAAkB,KAAA,CAAM,OAAA,CAAQ,aAAA,EAAe,EAAE,EAAE,IAAA,EAAK;AAC9D,EAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,UAAA,GAAa,MAAA,CAAO,SAAA,EAAU,EAAG,IAAA;AACvC,EAAA,IAAI,CAAC,UAAA,IAAc,OAAO,UAAA,CAAW,sBAAsB,UAAA,EAAY;AACrE,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAQ,MAAM,UAAA,CAAW,iBAAA,CAAkB,eAAA,EAAiB,OAAO,CAAA;AACrE;AAMO,SAAS,uBACd,UAAA,EAE2F;AAC3F,EAAA,OACE,OAAQ,UAAA,CAAmB,uBAAA,KAA4B,UAAA,IACvD,OAAQ,WAAmB,cAAA,KAAmB,UAAA,IAC9C,OAAQ,UAAA,CAAmB,iBAAA,KAAsB,UAAA;AAErD;AAMO,IAAM,kBAAA,GAAqB,OAAO,GAAA,KAAoD;AAC3F,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,IACA,qBAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACF,GAAI,GAAA;AAOJ,EAAA,MAAM,eAAA,GAAkB,OAAO,UAAA,CAAW,iBAAA,KAAsB,UAAA;AAChE,EAAA,IAAI,CAAC,mBAAmB,sBAAA,CAAuB,IAAA,EAAM,QAAQ,SAAA,EAAW,UAAA,EAAY,qBAAqB,CAAA,EAAG;AAC1G,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,CAAC,eAAA,CAAgB,IAAA,EAAM,MAAA,EAAQ,UAAA,EAAY,qBAAqB,CAAA,EAAG;AACrE,IAAA,OAAO,IAAA;AAAA,EACT;AAKA,EAAA,IAAI,CAAC,YAAA,IAAgB,iBAAA,CAAkB,IAAA,EAAM,MAAA,EAAQ,UAAU,CAAA,EAAG;AAChE,IAAA,OAAO,IAAA;AAAA,EACT;AAIA,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI,cAAA;AACJ,EAAA,MAAM,WAAA,GAAc,yBAAyB,UAAU,CAAA;AAEvD,EAAA,IAAI;AACF,IAAA,IAAI,OAAO,UAAA,CAAW,iBAAA,KAAsB,UAAA,EAAY;AACtD,MAAA,IAAA,GAAO,MAAM,UAAA,CAAW,iBAAA,CAAkB,KAAA,IAAS,IAAI,WAAW,CAAA;AAAA,IACpE,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,MAAM,yCAAyC,CAAA;AAAA,IAC3D;AAIA,IAAA,IAAI,CAAC,IAAA,IAAQ,sBAAA,CAAuB,UAAU,CAAA,IAAK,sBAAsB,OAAA,EAAS;AAChF,MAAA,IAAI;AACF,QAAA,MAAM,SAAA,GAAY,UAAA,CAAW,uBAAA,CAAwB,UAAU,CAAA;AAC/D,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,MAAM,UAAA,GAAa,MAAM,UAAA,CAAW,cAAA,CAAe,SAAS,CAAA;AAC5D,UAAA,IAAI,UAAA,EAAY;AAKd,YAAA,cAAA,GAAiB,UAAA,CAAW,kBAAkB,UAAU,CAAA;AACxD,YAAA,MAAM,eAAA,GAAkB,MAAA,CAAO,OAAA,CAAQ,cAAc,CAAA,CAClD,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA,KAAM,CAAA,CAAE,WAAA,EAAY,KAAM,YAAY,CAAA,CAChD,GAAA,CAAI,CAAC,GAAG,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAC,CAAA,CAC9B,KAAK,IAAI,CAAA;AACZ,YAAA,IAAI,eAAA,EAAiB;AACnB,cAAA,MAAM,gBAAA,GAAmB,IAAI,OAAA,CAAQ,UAAA,CAAW,GAAA,EAAK;AAAA,gBACnD,QAAQ,UAAA,CAAW,MAAA;AAAA,gBACnB,OAAA,EAAS,IAAI,OAAA,CAAQ,UAAA,CAAW,OAAO;AAAA,eACxC,CAAA;AACD,cAAA,gBAAA,CAAiB,OAAA,CAAQ,GAAA,CAAI,QAAA,EAAU,eAAe,CAAA;AAKtD,cAAA,MAAM,WAAA,GAAc,eAAA,CAAgB,QAAA,CAAS,GAAG,IAC5C,eAAA,CAAgB,KAAA,CAAM,GAAG,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,GAC5C,eAAA;AACJ,cAAA,IAAA,GAAO,MAAM,UAAA,CAAW,iBAAA,CAAkB,WAAA,EAAa,wBAAA,CAAyB,gBAAgB,CAAC,CAAA;AAAA,YACnG;AACA,YAAA,IAAI,CAAC,IAAA,EAAM;AACT,cAAA,cAAA,GAAiB,MAAA;AAAA,YACnB;AAAA,UACF;AAAA,QACF;AAAA,MACF,SAAS,UAAA,EAAY;AACnB,QAAA,cAAA,GAAiB,MAAA;AACjB,QAAA,MAAA,CAAO,SAAA,EAAU,EAAG,KAAA,CAAM,6CAAA,EAA+C;AAAA,UACvE,OAAO,UAAA,YAAsB,KAAA,GAAQ,EAAE,OAAA,EAAS,UAAA,CAAW,SAAQ,GAAI;AAAA,SACxE,CAAA;AAAA,MACH;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,IAAA,EAAM,EAAE,KAAA,EAAO,0BAAA,EAA2B,EAAG,OAAA,EAAS,cAAA,EAAe;AAAA,IAC9G;AAEA,IAAA,cAAA,CAAe,GAAA,CAAIA,mCAAiB,IAAI,CAAA;AAMxC,IAAA,cAAA,CAAe,GAAA,CAAI,QAAQ,IAAI,CAAA;AAO/B,IAAA,IAAI,cAAA,GAAiB,KAAA;AACrB,IAAA,IAAI,CAAC,cAAA,IAAkB,UAAA,YAAsB,OAAA,EAAS;AACpD,MAAA,MAAM,YAAA,GAAe,UAAA,CAAW,OAAA,CAAQ,GAAA,CAAI,QAAQ,CAAA;AACpD,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,KAAA,CAAM,sBAAsB,CAAA;AACvD,QAAA,IAAI,KAAA,GAAQ,CAAC,CAAA,EAAG,cAAA,GAAiB,MAAM,CAAC,CAAA;AAAA,MAC1C;AAAA,IACF;AACA,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,cAAA,CAAe,GAAA,CAAIC,yCAAuB,cAAc,CAAA;AAAA,IAC1D;AAEA,IAAA,IAAI,OAAO,UAAA,CAAW,mBAAA,KAAwB,UAAA,EAAY;AACxD,MAAA,IAAI;AACF,QAAA,MAAM,UAAA,GAAa,UAAA,CAAW,mBAAA,CAAoB,IAAI,CAAA;AACtD,QAAA,IAAI,UAAA,EAAY;AACd,UAAA,cAAA,CAAe,GAAA,CAAIC,0CAAwB,UAAU,CAAA;AAAA,QACvD;AAAA,MACF,SAAS,QAAA,EAAU;AACjB,QAAA,MAAA,CAAO,SAAA,EAAU,EAAG,KAAA,CAAM,4BAAA,EAA8B;AAAA,UACtD,KAAA,EAAO,QAAA,YAAoB,KAAA,GAAQ,EAAE,OAAA,EAAS,SAAS,OAAA,EAAS,KAAA,EAAO,QAAA,CAAS,KAAA,EAAM,GAAI;AAAA,SAC3F,CAAA;AACD,QAAA,OAAO;AAAA,UACL,MAAA,EAAQ,OAAA;AAAA,UACR,MAAA,EAAQ,GAAA;AAAA,UACR,IAAA,EAAM,EAAE,KAAA,EAAO,mDAAA,EAAoD;AAAA,UACnE,OAAA,EAAS;AAAA,SACX;AAAA,MACF;AAAA,IACF;AAEA,IAAA,IAAI;AAEF,MAAA,MAAM,QAAA,GAAW,cAAA,CAAe,GAAA,CAAIC,sCAAoB,CAAA;AACxD,MAAA,MAAM,YAAA,GAAe,OAAO,SAAA,EAAU;AACtC,MAAA,MAAM,YAAA,GAAe,OAAO,SAAA,IAAY;AAExC,MAAA,MAAM,eAAgB,QAAA,KAAa,QAAA,GAAY,cAAc,IAAA,IAAQ,YAAA,EAAc,OAAQ,YAAA,EAAc,IAAA;AAIzG,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,SAAS,QAAA,IAAY,EAAE,QAAQ,IAAA,CAAA,EAAO;AACxD,UAAA,MAAA,CAAO,SAAA,EAAU,EAAG,IAAA,CAAK,mFAAmF,CAAA;AAAA,QAC9G,CAAA,MAAO;AACL,UAAA,MAAM,WAAA,GAAc,MAAM,YAAA,CAAa,cAAA,CAAe,IAAc,CAAA;AACpE,UAAA,cAAA,CAAe,GAAA,CAAIC,+CAA6B,WAAW,CAAA;AAE3D,UAAA,cAAA,CAAe,GAAA,CAAI,mBAAmB,WAAW,CAAA;AAEjD,UAAA,MAAM,KAAA,GAAQ,MAAM,YAAA,CAAa,QAAA,CAAS,IAAc,CAAA;AACxD,UAAA,cAAA,CAAe,GAAA,CAAIC,yCAAuB,KAAK,CAAA;AAE/C,UAAA,cAAA,CAAe,GAAA,CAAI,aAAa,KAAK,CAAA;AAAA,QACvC;AAAA,MACF;AAAA,IACF,SAAS,SAAA,EAAW;AAClB,MAAA,MAAA,CAAO,SAAA,EAAU,EAAG,KAAA,CAAM,6CAAA,EAA+C;AAAA,QACvE,KAAA,EAAO,SAAA,YAAqB,KAAA,GAAQ,EAAE,OAAA,EAAS,UAAU,OAAA,EAAS,KAAA,EAAO,SAAA,CAAU,KAAA,EAAM,GAAI;AAAA,OAC9F,CAAA;AAAA,IACH;AAAA,EACF,SAAS,GAAA,EAAK;AACZ,IAAA,MAAA,CAAO,SAAA,EAAU,EAAG,KAAA,CAAM,sBAAA,EAAwB;AAAA,MAChD,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,EAAE,OAAA,EAAS,IAAI,OAAA,EAAS,KAAA,EAAO,GAAA,CAAI,KAAA,EAAM,GAAI;AAAA,KAC5E,CAAA;AACD,IAAA,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,IAAA,EAAM,EAAE,KAAA,EAAO,0BAAA,EAA2B,EAAG,OAAA,EAAS,cAAA,EAAe;AAAA,EAC9G;AAIA,EAAA,IAAI,eAAA,IAAmB,UAAA,IAAc,OAAO,UAAA,CAAW,kBAAkB,UAAA,EAAY;AACnF,IAAA,IAAI;AACF,MAAA,MAAM,YAAA,GAAe,MAAM,UAAA,CAAW,aAAA,CAAc,MAAM,WAAW,CAAA;AAErE,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,IAAA,EAAM,EAAE,KAAA,EAAO,eAAA,EAAgB,EAAG,OAAA,EAAS,cAAA,EAAe;AAAA,MACnG;AAAA,IACF,SAAS,GAAA,EAAK;AACZ,MAAA,MAAA,CAAO,SAAA,EAAU,EAAG,KAAA,CAAM,sCAAA,EAAwC;AAAA,QAChE,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,EAAE,OAAA,EAAS,IAAI,OAAA,EAAS,KAAA,EAAO,GAAA,CAAI,KAAA,EAAM,GAAI;AAAA,OAC5E,CAAA;AACD,MAAA,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,IAAA,EAAM,EAAE,KAAA,EAAO,qBAAA,EAAsB,EAAG,OAAA,EAAS,cAAA,EAAe;AAAA,IACzG;AAAA,EACF,WAAW,WAAA,IAAe,UAAA,IAAc,OAAO,UAAA,CAAW,cAAc,UAAA,EAAY;AAClF,IAAA,IAAI;AACF,MAAA,MAAM,YAAA,GAAe,IAAI,qBAAA,EAAsB;AAC/C,MAAA,MAAM,eAAe,MAAM,UAAA,CAAW,UAAU,IAAA,EAAM,MAAA,EAAQ,MAAM,YAAmB,CAAA;AAEvF,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,IAAA,EAAM,EAAE,KAAA,EAAO,eAAA,EAAgB,EAAG,OAAA,EAAS,cAAA,EAAe;AAAA,MACnG;AAAA,IACF,SAAS,GAAA,EAAK;AACZ,MAAA,MAAA,CAAO,SAAA,EAAU,EAAG,KAAA,CAAM,kCAAA,EAAoC;AAAA,QAC5D,KAAA,EAAO,GAAA,YAAe,KAAA,GAAQ,EAAE,OAAA,EAAS,IAAI,OAAA,EAAS,KAAA,EAAO,GAAA,CAAI,KAAA,EAAM,GAAI,GAAA;AAAA,QAC3E,IAAA;AAAA,QACA;AAAA,OACD,CAAA;AACD,MAAA,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,IAAA,EAAM,EAAE,KAAA,EAAO,qBAAA,EAAsB,EAAG,OAAA,EAAS,cAAA,EAAe;AAAA,IACzG;AAAA,EACF,CAAA,MAAA,IAAW,WAAW,UAAA,IAAc,UAAA,CAAW,SAAS,UAAA,CAAW,KAAA,CAAM,SAAS,CAAA,EAAG;AACnF,IAAA,MAAM,eAAe,MAAM,UAAA,CAAW,WAAW,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAI,CAAA;AAE1E,IAAA,IAAI,CAAC,YAAA,EAAc;AACjB,MAAA,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,IAAA,EAAM,EAAE,KAAA,EAAO,eAAA,EAAgB,EAAG,OAAA,EAAS,cAAA,EAAe;AAAA,IACnG;AAAA,EACF,CAAA,MAAO;AAIL,IAAA,MAAM,YAAA,GAAe,MAAA,CAAO,SAAA,EAAU,EAAG,IAAA;AACzC,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,IAAI,iBAAA,CAAkB,KAAA,IAAS,iBAAA,CAAkB,KAAA,CAAM,SAAS,CAAA,EAAG;AACjE,QAAA,MAAM,eAAe,MAAM,UAAA,CAAW,kBAAkB,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAI,CAAA;AAEjF,QAAA,IAAI,CAAC,YAAA,EAAc;AACjB,UAAA,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,IAAA,EAAM,EAAE,KAAA,EAAO,eAAA,EAAgB,EAAG,OAAA,EAAS,cAAA,EAAe;AAAA,QACnG;AAAA,MACF,CAAA,MAAO;AACL,QAAA,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,IAAA,EAAM,EAAE,KAAA,EAAO,eAAA,EAAgB,EAAG,OAAA,EAAS,cAAA,EAAe;AAAA,MACnG;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,iBAAiB,EAAE,MAAA,EAAQ,MAAA,EAAQ,OAAA,EAAS,gBAAe,GAAI,IAAA;AACxE;AAGO,IAAM,UAAA,GAAa,OACxB,KAAA,EACA,IAAA,EACA,QACA,IAAA,KACqB;AAErB,EAAA,KAAA,MAAW,CAAA,IAAK,KAAA,IAAS,EAAC,EAAG;AAC3B,IAAA,MAAM,IAAA,GAAO,QAAQ,CAAC,CAAA;AAEtB,IAAA,IAAI,CAAC,eAAA,CAAgB,IAAA,EAAM,IAAA,CAAK,IAAI,CAAA,EAAG;AACrC,MAAA;AAAA,IACF;AAGA,IAAA,IAAI,KAAK,OAAA,IAAW,CAAC,kBAAkB,IAAA,CAAK,OAAA,EAAS,MAAM,CAAA,EAAG;AAC5D,MAAA;AAAA,IACF;AAGA,IAAA,MAAM,YAAY,IAAA,CAAK,SAAA;AACvB,IAAA,IAAI,OAAO,cAAc,UAAA,EAAY;AACnC,MAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,OAAA,EAAQ,CACnC,IAAA,CAAK,MAAM,SAAA,CAAU,IAAI,CAAC,CAAA,CAC1B,KAAA,CAAM,MAAM,KAAK,CAAA;AAEpB,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,IACF,CAAA,MAAA,IAAW,KAAK,KAAA,EAAO;AACrB,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,EACF;AAGA,EAAA,OAAO,KAAA;AACT","file":"chunk-SYZ2NTP3.cjs","sourcesContent":["import type { MastraAuthConfig } from '@mastra/core/server';\n\n// Default configuration that can be extended by clients\nexport const defaultAuthConfig: MastraAuthConfig = {\n protected: ['/api/*'],\n public: ['/api', '/api/auth/*'],\n // Simple rule system\n rules: [\n // Admin users can do anything\n {\n condition: user => {\n if (typeof user === 'object' && user !== null) {\n if ('isAdmin' in user) {\n return !!user.isAdmin;\n }\n\n if ('role' in user) {\n return user.role === 'admin';\n }\n }\n return false;\n },\n allow: true,\n },\n ],\n};\n","/**\n * Path pattern matching utility\n * Inlined from regexparam v3.0.0 (MIT License)\n * https://github.com/lukeed/regexparam\n *\n * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nexport interface ParsedPattern {\n keys: string[] | false;\n pattern: RegExp;\n}\n\n/**\n * Parse a route pattern into a RegExp\n * Supports:\n * - Named parameters: /users/:id\n * - Optional parameters: /users/:id?\n * - Wildcards: /files/*\n * - Mixed patterns: /api/:version/users/:id\n */\nexport function parse(input: string | RegExp, loose?: boolean): ParsedPattern {\n if (input instanceof RegExp) return { keys: false, pattern: input };\n\n let c: string;\n let o: number;\n let tmp: string | undefined;\n let ext: number;\n const keys: string[] = [];\n let pattern = '';\n const arr = input.split('/');\n\n arr[0] || arr.shift();\n\n while ((tmp = arr.shift())) {\n c = tmp[0]!;\n if (c === '*') {\n keys.push(c);\n pattern += tmp[1] === '?' ? '(?:/(.*))?' : '/(.*)';\n } else if (c === ':') {\n o = tmp.indexOf('?', 1);\n ext = tmp.indexOf('.', 1);\n keys.push(tmp.substring(1, !!~o ? o : !!~ext ? ext : tmp.length));\n pattern += !!~o && !~ext ? '(?:/([^/]+?))?' : '/([^/]+?)';\n if (!!~ext) pattern += (!!~o ? '?' : '') + '\\\\' + tmp.substring(ext);\n } else {\n pattern += '/' + tmp;\n }\n }\n\n return {\n keys: keys,\n pattern: new RegExp('^' + pattern + (loose ? '(?=$|/)' : '/?$'), 'i'),\n };\n}\n\n/**\n * Test if a path matches a pattern\n */\nexport function matchPath(path: string, pattern: string | RegExp): boolean {\n const { pattern: regex } = parse(pattern);\n return regex.test(path);\n}\n","import type { ISessionProvider } from '@mastra/core/auth';\nimport type { IRBACProvider, EEUser } from '@mastra/core/auth/ee';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { ApiRoute, IMastraAuthProvider, MastraAuthConfig, MastraAuthRequest } from '@mastra/core/server';\n\nimport {\n MASTRA_RESOURCE_ID_KEY,\n MASTRA_USER_KEY,\n MASTRA_USER_PERMISSIONS_KEY,\n MASTRA_USER_ROLES_KEY,\n MASTRA_AUTH_TOKEN_KEY,\n MASTRA_AUTH_MODE_KEY,\n} from '../constants';\nimport { defaultAuthConfig } from './defaults';\nimport { parse } from './path-pattern';\n\n// Re-export request-context key constants so custom middleware can read namespaced\n// auth state without importing internal paths.\nexport { MASTRA_USER_KEY, MASTRA_USER_PERMISSIONS_KEY, MASTRA_USER_ROLES_KEY } from '../constants';\n\n/**\n * Check if a route is a registered custom route that requires authentication.\n * Returns true only if the route is explicitly registered with requiresAuth: true.\n * Returns false if the route is not in the config or has requiresAuth: false.\n */\nexport const isProtectedCustomRoute = (\n path: string,\n method: string,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n if (!customRouteAuthConfig) {\n return false;\n }\n\n // Check exact match first (fast path for static routes)\n const exactRouteKey = `${method}:${path}`;\n if (customRouteAuthConfig.has(exactRouteKey)) {\n return customRouteAuthConfig.get(exactRouteKey) === true;\n }\n\n // Check exact match for ALL method\n const allRouteKey = `ALL:${path}`;\n if (customRouteAuthConfig.has(allRouteKey)) {\n return customRouteAuthConfig.get(allRouteKey) === true;\n }\n\n // Check pattern matches for dynamic routes (e.g., '/users/:id')\n for (const [routeKey, requiresAuth] of customRouteAuthConfig.entries()) {\n const colonIndex = routeKey.indexOf(':');\n if (colonIndex === -1) {\n continue; // Skip malformed keys\n }\n\n const routeMethod = routeKey.substring(0, colonIndex);\n const routePattern = routeKey.substring(colonIndex + 1);\n\n // Check if method matches (exact match or ALL)\n if (routeMethod !== method && routeMethod !== 'ALL') {\n continue;\n }\n\n // Check if path matches the pattern\n if (pathMatchesPattern(path, routePattern)) {\n return requiresAuth === true;\n }\n }\n\n return false; // Not in config = not a protected custom route\n};\n\n/**\n * Find a matching custom API route for the given path and method.\n * Returns the matched route and any extracted path parameters.\n */\nexport const findMatchingCustomRoute = (\n path: string,\n method: string,\n apiRoutes?: ApiRoute[],\n): { route: ApiRoute; params: Record<string, string> } | undefined => {\n if (!apiRoutes) return undefined;\n\n for (const route of apiRoutes) {\n if (route.method !== method && route.method !== 'ALL') continue;\n\n const { keys, pattern: regex } = parse(route.path);\n const match = regex.exec(path);\n if (!match) continue;\n\n const params: Record<string, string> = {};\n if (keys && keys.length > 0) {\n for (let i = 0; i < keys.length; i++) {\n if (match[i + 1] !== undefined) {\n params[keys[i]!] = match[i + 1]!;\n }\n }\n }\n\n return { route, params };\n }\n\n return undefined;\n};\n\n/**\n * Check if request is from dev playground\n * @param getHeader - Function to get header value from request\n * @param customRouteAuthConfig - Map of custom route auth configurations\n */\nexport const isDevPlaygroundRequest = (\n path: string,\n method: string,\n getHeader: (name: string) => string | undefined,\n authConfig: MastraAuthConfig,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n const protectedAccess = [...(defaultAuthConfig.protected || []), ...(authConfig.protected || [])];\n return (\n process.env.MASTRA_DEV === 'true' &&\n // Allow if path doesn't match protected patterns AND is not a protected custom route\n ((!isAnyMatch(path, method, protectedAccess) && !isProtectedCustomRoute(path, method, customRouteAuthConfig)) ||\n // Or if has playground header\n getHeader('x-mastra-dev-playground') === 'true')\n );\n};\n\nexport const isCustomRoutePublic = (\n path: string,\n method: string,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n if (!customRouteAuthConfig) {\n return false;\n }\n\n // Check exact match first (fast path for static routes)\n const exactRouteKey = `${method}:${path}`;\n if (customRouteAuthConfig.has(exactRouteKey)) {\n return !customRouteAuthConfig.get(exactRouteKey); // True when route opts out of auth\n }\n\n // Check exact match for ALL method\n const allRouteKey = `ALL:${path}`;\n if (customRouteAuthConfig.has(allRouteKey)) {\n return !customRouteAuthConfig.get(allRouteKey);\n }\n\n // Check pattern matches for dynamic routes (e.g., '/users/:id')\n for (const [routeKey, requiresAuth] of customRouteAuthConfig.entries()) {\n const colonIndex = routeKey.indexOf(':');\n if (colonIndex === -1) {\n continue; // Skip malformed keys\n }\n\n const routeMethod = routeKey.substring(0, colonIndex);\n const routePattern = routeKey.substring(colonIndex + 1);\n\n // Check if method matches (exact match or ALL)\n if (routeMethod !== method && routeMethod !== 'ALL') {\n continue;\n }\n\n // Check if path matches the pattern\n if (pathMatchesPattern(path, routePattern)) {\n return !requiresAuth; // True when route opts out of auth\n }\n }\n\n return false;\n};\n\n// NOTE: This uses isProtectedCustomRoute (default-allow for unknown paths) rather than\n// !isCustomRoutePublic (default-deny). This is intentional — all registered server and\n// custom routes are auth-checked via registerRoute/checkRouteAuth regardless of this\n// function. The '/api/*' protected pattern exists as a user-facing override mechanism.\n// The old default-deny logic incorrectly blocked non-API paths (e.g. '/', '/agents')\n// which prevented the studio login page from loading in production.\nexport const isProtectedPath = (\n path: string,\n method: string,\n authConfig: MastraAuthConfig,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n const protectedAccess = [...(defaultAuthConfig.protected || []), ...(authConfig.protected || [])];\n return isAnyMatch(path, method, protectedAccess) || isProtectedCustomRoute(path, method, customRouteAuthConfig);\n};\n\nexport const canAccessPublicly = (path: string, method: string, authConfig: MastraAuthConfig): boolean => {\n // Check if this path+method combination is publicly accessible\n const publicAccess = [...(defaultAuthConfig.public || []), ...(authConfig.public || [])];\n\n return isAnyMatch(path, method, publicAccess);\n};\n\nconst isAnyMatch = (\n path: string,\n method: string,\n patterns: MastraAuthConfig['protected'] | MastraAuthConfig['public'],\n): boolean => {\n if (!patterns) {\n return false;\n }\n\n for (const patternPathOrMethod of patterns) {\n if (patternPathOrMethod instanceof RegExp) {\n if (patternPathOrMethod.test(path)) {\n return true;\n }\n }\n\n if (typeof patternPathOrMethod === 'string' && pathMatchesPattern(path, patternPathOrMethod)) {\n return true;\n }\n\n if (Array.isArray(patternPathOrMethod) && patternPathOrMethod.length === 2) {\n const [pattern, methodOrMethods] = patternPathOrMethod;\n if (pathMatchesPattern(path, pattern) && matchesOrIncludes(methodOrMethods, method)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nexport const pathMatchesPattern = (path: string, pattern: string): boolean => {\n // Use regexparam for battle-tested path matching\n // Supports:\n // - Exact paths: '/api/users'\n // - Wildcards: '/api/agents/*' matches '/api/agents/123'\n // - Path parameters: '/users/:id' matches '/users/123'\n // - Optional parameters: '/users/:id?' matches '/users' and '/users/123'\n // - Mixed patterns: '/api/:version/users/:id/profile'\n const { pattern: regex } = parse(pattern);\n return regex.test(path);\n};\n\nexport const pathMatchesRule = (path: string, rulePath: string | RegExp | string[] | undefined): boolean => {\n if (!rulePath) return true; // No path specified means all paths\n\n if (typeof rulePath === 'string') {\n return pathMatchesPattern(path, rulePath);\n }\n\n if (rulePath instanceof RegExp) {\n return rulePath.test(path);\n }\n\n if (Array.isArray(rulePath)) {\n return rulePath.some(p => pathMatchesPattern(path, p));\n }\n\n return false;\n};\n\nexport const matchesOrIncludes = (values: string | string[], value: string): boolean => {\n if (typeof values === 'string') {\n return values === value;\n }\n\n if (Array.isArray(values)) {\n return values.includes(value);\n }\n\n return false;\n};\n\n// ── Core auth middleware ──\n// Framework-agnostic auth logic extracted from adapter middlewares.\n// Each adapter builds an AuthMiddlewareContext and delegates to coreAuthMiddleware.\n\nexport interface AuthMiddlewareContext {\n path: string;\n method: string;\n getHeader: (name: string) => string | undefined;\n mastra: Mastra;\n authConfig: MastraAuthConfig;\n customRouteAuthConfig?: Map<string, boolean>;\n requestContext: { get: (key: string) => unknown; set: (key: string, value: unknown) => void };\n rawRequest: MastraAuthRequest;\n token: string | null;\n buildAuthorizeContext: () => unknown;\n /** When true, force authentication even if the path matches a public pattern. */\n requiresAuth?: boolean;\n}\n\nexport type AuthResult =\n | { action: 'next'; headers?: Record<string, string> }\n | { action: 'error'; status: number; body: Record<string, unknown>; headers?: Record<string, string> };\n\nconst pass: AuthResult = { action: 'next' };\n\nconst adaptToMastraAuthRequest = (request: MastraAuthRequest): MastraAuthRequest => {\n if (!(request instanceof Request)) {\n return request;\n }\n\n return {\n raw: request,\n headers: request.headers,\n header: name => request.headers.get(name) ?? undefined,\n };\n};\n\nexport interface GetAuthenticatedUserOptions {\n mastra: Mastra;\n token: string;\n request: MastraAuthRequest;\n}\n\nexport const getAuthenticatedUser = async <TUser = unknown>({\n mastra,\n token,\n request,\n}: GetAuthenticatedUserOptions): Promise<TUser | null> => {\n const normalizedToken = token.replace(/^Bearer\\s+/i, '').trim();\n if (!normalizedToken) {\n return null;\n }\n\n const authConfig = mastra.getServer()?.auth;\n if (!authConfig || typeof authConfig.authenticateToken !== 'function') {\n return null;\n }\n\n return (await authConfig.authenticateToken(normalizedToken, request)) as TUser | null;\n};\n\n/**\n * Check if an auth config object supports transparent session refresh.\n * Returns true if the auth provider implements the necessary ISessionProvider methods.\n */\nexport function supportsSessionRefresh(\n authConfig: MastraAuthConfig | IMastraAuthProvider,\n): authConfig is (MastraAuthConfig | IMastraAuthProvider) &\n Pick<ISessionProvider, 'refreshSession' | 'getSessionIdFromRequest' | 'getSessionHeaders'> {\n return (\n typeof (authConfig as any).getSessionIdFromRequest === 'function' &&\n typeof (authConfig as any).refreshSession === 'function' &&\n typeof (authConfig as any).getSessionHeaders === 'function'\n );\n}\n\n/**\n * Single auth middleware: authenticate → authorize.\n * Skip checks (dev playground, unprotected path, public path) are evaluated once.\n */\nexport const coreAuthMiddleware = async (ctx: AuthMiddlewareContext): Promise<AuthResult> => {\n const {\n path,\n method,\n getHeader,\n mastra,\n authConfig,\n customRouteAuthConfig,\n requestContext,\n rawRequest,\n token,\n requiresAuth,\n } = ctx;\n\n // ── Skip checks (evaluated once) ──\n\n // Only bypass auth for dev playground when no real auth provider is configured.\n // When auth IS configured (has authenticateToken), we need the full auth flow\n // so user/roles/permissions are set in requestContext.\n const hasAuthProvider = typeof authConfig.authenticateToken === 'function';\n if (!hasAuthProvider && isDevPlaygroundRequest(path, method, getHeader, authConfig, customRouteAuthConfig)) {\n return pass;\n }\n\n if (!isProtectedPath(path, method, authConfig, customRouteAuthConfig)) {\n return pass;\n }\n\n // When a route explicitly requires auth (requiresAuth: true), skip the\n // public-path bypass so the user is still authenticated and permissions\n // are injected into the request context.\n if (!requiresAuth && canAccessPublicly(path, method, authConfig)) {\n return pass;\n }\n\n // ── Authentication ──\n\n let user: unknown;\n let refreshHeaders: Record<string, string> | undefined;\n const authRequest = adaptToMastraAuthRequest(rawRequest);\n\n try {\n if (typeof authConfig.authenticateToken === 'function') {\n user = await authConfig.authenticateToken(token ?? '', authRequest);\n } else {\n throw new Error('No token verification method configured');\n }\n\n // If authentication failed, attempt transparent session refresh before returning 401.\n // This handles expired access tokens without requiring client-side refresh logic.\n if (!user && supportsSessionRefresh(authConfig) && rawRequest instanceof Request) {\n try {\n const sessionId = authConfig.getSessionIdFromRequest(rawRequest);\n if (sessionId) {\n const newSession = await authConfig.refreshSession(sessionId);\n if (newSession) {\n // Refresh succeeded — build updated session headers and re-authenticate.\n // We create a synthetic request with the new session cookie so\n // authenticateToken (which reads cookies from the request) picks up\n // the refreshed session instead of the expired one.\n refreshHeaders = authConfig.getSessionHeaders(newSession);\n const refreshedCookie = Object.entries(refreshHeaders)\n .filter(([k]) => k.toLowerCase() === 'set-cookie')\n .map(([, v]) => v.split(';')[0]) // Extract name=value before attributes\n .join('; ');\n if (refreshedCookie) {\n const refreshedRequest = new Request(rawRequest.url, {\n method: rawRequest.method,\n headers: new Headers(rawRequest.headers),\n });\n refreshedRequest.headers.set('Cookie', refreshedCookie);\n // Pass the refreshed cookie value as the token so authenticateToken\n // picks up the new session instead of the stale original.\n // Auth providers typically read cookies from the request object, but\n // some may also inspect the token parameter directly.\n const cookieValue = refreshedCookie.includes('=')\n ? refreshedCookie.split('=').slice(1).join('=')\n : refreshedCookie;\n user = await authConfig.authenticateToken(cookieValue, adaptToMastraAuthRequest(refreshedRequest));\n }\n if (!user) {\n refreshHeaders = undefined;\n }\n }\n }\n } catch (refreshErr) {\n refreshHeaders = undefined;\n mastra.getLogger()?.debug('Session refresh failed, falling back to 401', {\n error: refreshErr instanceof Error ? { message: refreshErr.message } : refreshErr,\n });\n }\n }\n\n if (!user) {\n return { action: 'error', status: 401, body: { error: 'Invalid or expired token' }, headers: refreshHeaders };\n }\n\n requestContext.set(MASTRA_USER_KEY, user);\n // Backward-compat: also write the legacy `'user'` key so existing\n // middleware and integrations that read `requestContext.get('user')`\n // (including built-in FGA route enforcement, memory handlers, and the\n // documented public surface) keep working. New code should prefer\n // `MASTRA_USER_KEY` to avoid collisions with caller-supplied keys.\n requestContext.set('user', user);\n\n // Store the raw auth token so downstream code (e.g., editor MCP client\n // resolution) can forward it when connecting to auth-protected MCP servers.\n // The token may arrive via Authorization header, apiKey query param, or\n // cookie (SimpleAuth sets `mastra-token`). Check all sources so the\n // forwarded value is available regardless of how the user authenticated.\n let effectiveToken = token;\n if (!effectiveToken && rawRequest instanceof Request) {\n const cookieHeader = rawRequest.headers.get('cookie');\n if (cookieHeader) {\n const match = cookieHeader.match(/mastra-token=([^;]+)/);\n if (match?.[1]) effectiveToken = match[1];\n }\n }\n if (effectiveToken) {\n requestContext.set(MASTRA_AUTH_TOKEN_KEY, effectiveToken);\n }\n\n if (typeof authConfig.mapUserToResourceId === 'function') {\n try {\n const resourceId = authConfig.mapUserToResourceId(user);\n if (resourceId) {\n requestContext.set(MASTRA_RESOURCE_ID_KEY, resourceId);\n }\n } catch (mapError) {\n mastra.getLogger()?.error('mapUserToResourceId failed', {\n error: mapError instanceof Error ? { message: mapError.message, stack: mapError.stack } : mapError,\n });\n return {\n action: 'error',\n status: 500,\n body: { error: 'Failed to map authenticated user to a resource ID' },\n headers: refreshHeaders,\n };\n }\n }\n\n try {\n // Determine which RBAC provider to use based on auth mode\n const authMode = requestContext.get(MASTRA_AUTH_MODE_KEY);\n const serverConfig = mastra.getServer();\n const studioConfig = mastra.getStudio?.();\n // Use studio RBAC if this is a studio request, otherwise use server RBAC\n const rbacProvider = (authMode === 'studio' ? (studioConfig?.rbac ?? serverConfig?.rbac) : serverConfig?.rbac) as\n | IRBACProvider<EEUser>\n | undefined;\n\n if (rbacProvider) {\n if (!user || typeof user !== 'object' || !('id' in user)) {\n mastra.getLogger()?.warn('RBAC: authenticated user missing required \"id\" field, skipping permission loading');\n } else {\n const permissions = await rbacProvider.getPermissions(user as EEUser);\n requestContext.set(MASTRA_USER_PERMISSIONS_KEY, permissions);\n // Backward-compat alias for callers reading the legacy key.\n requestContext.set('userPermissions', permissions);\n\n const roles = await rbacProvider.getRoles(user as EEUser);\n requestContext.set(MASTRA_USER_ROLES_KEY, roles);\n // Backward-compat alias for callers reading the legacy key.\n requestContext.set('userRoles', roles);\n }\n }\n } catch (rbacError) {\n mastra.getLogger()?.error('RBAC: failed to load user permissions/roles', {\n error: rbacError instanceof Error ? { message: rbacError.message, stack: rbacError.stack } : rbacError,\n });\n }\n } catch (err) {\n mastra.getLogger()?.error('Authentication error', {\n error: err instanceof Error ? { message: err.message, stack: err.stack } : err,\n });\n return { action: 'error', status: 401, body: { error: 'Invalid or expired token' }, headers: refreshHeaders };\n }\n\n // ── Authorization ──\n\n if ('authorizeUser' in authConfig && typeof authConfig.authorizeUser === 'function') {\n try {\n const isAuthorized = await authConfig.authorizeUser(user, authRequest);\n\n if (!isAuthorized) {\n return { action: 'error', status: 403, body: { error: 'Access denied' }, headers: refreshHeaders };\n }\n } catch (err) {\n mastra.getLogger()?.error('Authorization error in authorizeUser', {\n error: err instanceof Error ? { message: err.message, stack: err.stack } : err,\n });\n return { action: 'error', status: 500, body: { error: 'Authorization error' }, headers: refreshHeaders };\n }\n } else if ('authorize' in authConfig && typeof authConfig.authorize === 'function') {\n try {\n const authorizeCtx = ctx.buildAuthorizeContext();\n const isAuthorized = await authConfig.authorize(path, method, user, authorizeCtx as any);\n\n if (!isAuthorized) {\n return { action: 'error', status: 403, body: { error: 'Access denied' }, headers: refreshHeaders };\n }\n } catch (err) {\n mastra.getLogger()?.error('Authorization error in authorize', {\n error: err instanceof Error ? { message: err.message, stack: err.stack } : err,\n path,\n method,\n });\n return { action: 'error', status: 500, body: { error: 'Authorization error' }, headers: refreshHeaders };\n }\n } else if ('rules' in authConfig && authConfig.rules && authConfig.rules.length > 0) {\n const isAuthorized = await checkRules(authConfig.rules, path, method, user);\n\n if (!isAuthorized) {\n return { action: 'error', status: 403, body: { error: 'Access denied' }, headers: refreshHeaders };\n }\n } else {\n // No explicit authorization configured (authorizeUser, authorize, or rules)\n // Check if RBAC is configured - if not, allow authenticated users through\n // (auth-only mode = authenticated users get full access)\n const rbacProvider = mastra.getServer()?.rbac;\n if (rbacProvider) {\n if (defaultAuthConfig.rules && defaultAuthConfig.rules.length > 0) {\n const isAuthorized = await checkRules(defaultAuthConfig.rules, path, method, user);\n\n if (!isAuthorized) {\n return { action: 'error', status: 403, body: { error: 'Access denied' }, headers: refreshHeaders };\n }\n } else {\n return { action: 'error', status: 403, body: { error: 'Access denied' }, headers: refreshHeaders };\n }\n }\n }\n\n return refreshHeaders ? { action: 'next', headers: refreshHeaders } : pass;\n};\n\n// Check authorization rules\nexport const checkRules = async (\n rules: MastraAuthConfig['rules'],\n path: string,\n method: string,\n user: unknown,\n): Promise<boolean> => {\n // Go through rules in order (first match wins)\n for (const i in rules || []) {\n const rule = rules?.[i]!;\n // Check if rule applies to this path\n if (!pathMatchesRule(path, rule.path)) {\n continue;\n }\n\n // Check if rule applies to this method\n if (rule.methods && !matchesOrIncludes(rule.methods, method)) {\n continue;\n }\n\n // Rule matches, check conditions\n const condition = rule.condition;\n if (typeof condition === 'function') {\n const allowed = await Promise.resolve()\n .then(() => condition(user))\n .catch(() => false);\n\n if (allowed) {\n return true;\n }\n } else if (rule.allow) {\n return true;\n }\n }\n\n // No matching rules, deny by default\n return false;\n};\n"]}
1
+ {"version":3,"sources":["../src/server/auth/defaults.ts","../src/server/auth/path-pattern.ts","../src/server/auth/helpers.ts"],"names":["MASTRA_USER_KEY","MASTRA_AUTH_TOKEN_KEY","MASTRA_RESOURCE_ID_KEY","MASTRA_AUTH_MODE_KEY","MASTRA_USER_PERMISSIONS_KEY","MASTRA_USER_ROLES_KEY"],"mappings":"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","file":"chunk-C6CSDVSE.cjs","sourcesContent":["import type { MastraAuthConfig } from '@mastra/core/server';\n\n// Default configuration that can be extended by clients\nexport const defaultAuthConfig: MastraAuthConfig = {\n protected: ['/api/*'],\n public: ['/api', '/api/auth/*'],\n // Simple rule system\n rules: [\n // Admin users can do anything\n {\n condition: user => {\n if (typeof user === 'object' && user !== null) {\n if ('isAdmin' in user) {\n return !!user.isAdmin;\n }\n\n if ('role' in user) {\n return user.role === 'admin';\n }\n }\n return false;\n },\n allow: true,\n },\n ],\n};\n","/**\n * Path pattern matching utility\n * Inlined from regexparam v3.0.0 (MIT License)\n * https://github.com/lukeed/regexparam\n *\n * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nexport interface ParsedPattern {\n keys: string[] | false;\n pattern: RegExp;\n}\n\n/**\n * Parse a route pattern into a RegExp\n * Supports:\n * - Named parameters: /users/:id\n * - Optional parameters: /users/:id?\n * - Wildcards: /files/*\n * - Mixed patterns: /api/:version/users/:id\n */\nexport function parse(input: string | RegExp, loose?: boolean): ParsedPattern {\n if (input instanceof RegExp) return { keys: false, pattern: input };\n\n let c: string;\n let o: number;\n let tmp: string | undefined;\n let ext: number;\n const keys: string[] = [];\n let pattern = '';\n const arr = input.split('/');\n\n arr[0] || arr.shift();\n\n while ((tmp = arr.shift())) {\n c = tmp[0]!;\n if (c === '*') {\n keys.push(c);\n pattern += tmp[1] === '?' ? '(?:/(.*))?' : '/(.*)';\n } else if (c === ':') {\n o = tmp.indexOf('?', 1);\n ext = tmp.indexOf('.', 1);\n keys.push(tmp.substring(1, !!~o ? o : !!~ext ? ext : tmp.length));\n pattern += !!~o && !~ext ? '(?:/([^/]+?))?' : '/([^/]+?)';\n if (!!~ext) pattern += (!!~o ? '?' : '') + '\\\\' + tmp.substring(ext);\n } else {\n pattern += '/' + tmp;\n }\n }\n\n return {\n keys: keys,\n pattern: new RegExp('^' + pattern + (loose ? '(?=$|/)' : '/?$'), 'i'),\n };\n}\n\n/**\n * Test if a path matches a pattern\n */\nexport function matchPath(path: string, pattern: string | RegExp): boolean {\n const { pattern: regex } = parse(pattern);\n return regex.test(path);\n}\n","import type { ISessionProvider } from '@mastra/core/auth';\nimport type { IRBACProvider, EEUser } from '@mastra/core/auth/ee';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { ApiRoute, IMastraAuthProvider, MastraAuthConfig, MastraAuthRequest } from '@mastra/core/server';\n\nimport {\n MASTRA_RESOURCE_ID_KEY,\n MASTRA_USER_KEY,\n MASTRA_USER_PERMISSIONS_KEY,\n MASTRA_USER_ROLES_KEY,\n MASTRA_AUTH_TOKEN_KEY,\n MASTRA_AUTH_MODE_KEY,\n} from '../constants';\nimport { defaultAuthConfig } from './defaults';\nimport { parse } from './path-pattern';\n\n// Re-export request-context key constants so custom middleware can read namespaced\n// auth state without importing internal paths.\nexport { MASTRA_USER_KEY, MASTRA_USER_PERMISSIONS_KEY, MASTRA_USER_ROLES_KEY } from '../constants';\n\n/**\n * Check if a route is a registered custom route that requires authentication.\n * Returns true only if the route is explicitly registered with requiresAuth: true.\n * Returns false if the route is not in the config or has requiresAuth: false.\n */\nexport const isProtectedCustomRoute = (\n path: string,\n method: string,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n if (!customRouteAuthConfig) {\n return false;\n }\n\n // Check exact match first (fast path for static routes)\n const exactRouteKey = `${method}:${path}`;\n if (customRouteAuthConfig.has(exactRouteKey)) {\n return customRouteAuthConfig.get(exactRouteKey) === true;\n }\n\n // Check exact match for ALL method\n const allRouteKey = `ALL:${path}`;\n if (customRouteAuthConfig.has(allRouteKey)) {\n return customRouteAuthConfig.get(allRouteKey) === true;\n }\n\n // Check pattern matches for dynamic routes (e.g., '/users/:id')\n for (const [routeKey, requiresAuth] of customRouteAuthConfig.entries()) {\n const colonIndex = routeKey.indexOf(':');\n if (colonIndex === -1) {\n continue; // Skip malformed keys\n }\n\n const routeMethod = routeKey.substring(0, colonIndex);\n const routePattern = routeKey.substring(colonIndex + 1);\n\n // Check if method matches (exact match or ALL)\n if (routeMethod !== method && routeMethod !== 'ALL') {\n continue;\n }\n\n // Check if path matches the pattern\n if (pathMatchesPattern(path, routePattern)) {\n return requiresAuth === true;\n }\n }\n\n return false; // Not in config = not a protected custom route\n};\n\n/**\n * Find a matching custom API route for the given path and method.\n * Returns the matched route and any extracted path parameters.\n */\nexport const findMatchingCustomRoute = (\n path: string,\n method: string,\n apiRoutes?: ApiRoute[],\n): { route: ApiRoute; params: Record<string, string> } | undefined => {\n if (!apiRoutes) return undefined;\n\n for (const route of apiRoutes) {\n if (route.method !== method && route.method !== 'ALL') continue;\n\n const { keys, pattern: regex } = parse(route.path);\n const match = regex.exec(path);\n if (!match) continue;\n\n const params: Record<string, string> = {};\n if (keys && keys.length > 0) {\n for (let i = 0; i < keys.length; i++) {\n if (match[i + 1] !== undefined) {\n params[keys[i]!] = match[i + 1]!;\n }\n }\n }\n\n return { route, params };\n }\n\n return undefined;\n};\n\n/**\n * Check if request is from dev playground\n * @param getHeader - Function to get header value from request\n * @param customRouteAuthConfig - Map of custom route auth configurations\n */\nexport const isDevPlaygroundRequest = (\n path: string,\n method: string,\n getHeader: (name: string) => string | undefined,\n authConfig: MastraAuthConfig,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n const protectedAccess = [...(defaultAuthConfig.protected || []), ...(authConfig.protected || [])];\n return (\n process.env.MASTRA_DEV === 'true' &&\n // Allow if path doesn't match protected patterns AND is not a protected custom route\n ((!isAnyMatch(path, method, protectedAccess) && !isProtectedCustomRoute(path, method, customRouteAuthConfig)) ||\n // Or if has playground header\n getHeader('x-mastra-dev-playground') === 'true')\n );\n};\n\nexport const isCustomRoutePublic = (\n path: string,\n method: string,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n if (!customRouteAuthConfig) {\n return false;\n }\n\n // Check exact match first (fast path for static routes)\n const exactRouteKey = `${method}:${path}`;\n if (customRouteAuthConfig.has(exactRouteKey)) {\n return !customRouteAuthConfig.get(exactRouteKey); // True when route opts out of auth\n }\n\n // Check exact match for ALL method\n const allRouteKey = `ALL:${path}`;\n if (customRouteAuthConfig.has(allRouteKey)) {\n return !customRouteAuthConfig.get(allRouteKey);\n }\n\n // Check pattern matches for dynamic routes (e.g., '/users/:id')\n for (const [routeKey, requiresAuth] of customRouteAuthConfig.entries()) {\n const colonIndex = routeKey.indexOf(':');\n if (colonIndex === -1) {\n continue; // Skip malformed keys\n }\n\n const routeMethod = routeKey.substring(0, colonIndex);\n const routePattern = routeKey.substring(colonIndex + 1);\n\n // Check if method matches (exact match or ALL)\n if (routeMethod !== method && routeMethod !== 'ALL') {\n continue;\n }\n\n // Check if path matches the pattern\n if (pathMatchesPattern(path, routePattern)) {\n return !requiresAuth; // True when route opts out of auth\n }\n }\n\n return false;\n};\n\n// NOTE: This uses isProtectedCustomRoute (default-allow for unknown paths) rather than\n// !isCustomRoutePublic (default-deny). This is intentional — all registered server and\n// custom routes are auth-checked via registerRoute/checkRouteAuth regardless of this\n// function. The '/api/*' protected pattern exists as a user-facing override mechanism.\n// The old default-deny logic incorrectly blocked non-API paths (e.g. '/', '/agents')\n// which prevented the studio login page from loading in production.\nexport const isProtectedPath = (\n path: string,\n method: string,\n authConfig: MastraAuthConfig,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n const protectedAccess = [...(defaultAuthConfig.protected || []), ...(authConfig.protected || [])];\n return isAnyMatch(path, method, protectedAccess) || isProtectedCustomRoute(path, method, customRouteAuthConfig);\n};\n\nexport const canAccessPublicly = (path: string, method: string, authConfig: MastraAuthConfig): boolean => {\n // Check if this path+method combination is publicly accessible\n const publicAccess = [...(defaultAuthConfig.public || []), ...(authConfig.public || [])];\n\n return isAnyMatch(path, method, publicAccess);\n};\n\nconst isAnyMatch = (\n path: string,\n method: string,\n patterns: MastraAuthConfig['protected'] | MastraAuthConfig['public'],\n): boolean => {\n if (!patterns) {\n return false;\n }\n\n for (const patternPathOrMethod of patterns) {\n if (patternPathOrMethod instanceof RegExp) {\n if (patternPathOrMethod.test(path)) {\n return true;\n }\n }\n\n if (typeof patternPathOrMethod === 'string' && pathMatchesPattern(path, patternPathOrMethod)) {\n return true;\n }\n\n if (Array.isArray(patternPathOrMethod) && patternPathOrMethod.length === 2) {\n const [pattern, methodOrMethods] = patternPathOrMethod;\n if (pathMatchesPattern(path, pattern) && matchesOrIncludes(methodOrMethods, method)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nexport const pathMatchesPattern = (path: string, pattern: string): boolean => {\n // Use regexparam for battle-tested path matching\n // Supports:\n // - Exact paths: '/api/users'\n // - Wildcards: '/api/agents/*' matches '/api/agents/123'\n // - Path parameters: '/users/:id' matches '/users/123'\n // - Optional parameters: '/users/:id?' matches '/users' and '/users/123'\n // - Mixed patterns: '/api/:version/users/:id/profile'\n const { pattern: regex } = parse(pattern);\n return regex.test(path);\n};\n\nexport const pathMatchesRule = (path: string, rulePath: string | RegExp | string[] | undefined): boolean => {\n if (!rulePath) return true; // No path specified means all paths\n\n if (typeof rulePath === 'string') {\n return pathMatchesPattern(path, rulePath);\n }\n\n if (rulePath instanceof RegExp) {\n return rulePath.test(path);\n }\n\n if (Array.isArray(rulePath)) {\n return rulePath.some(p => pathMatchesPattern(path, p));\n }\n\n return false;\n};\n\nexport const matchesOrIncludes = (values: string | string[], value: string): boolean => {\n if (typeof values === 'string') {\n return values === value;\n }\n\n if (Array.isArray(values)) {\n return values.includes(value);\n }\n\n return false;\n};\n\n// ── Core auth middleware ──\n// Framework-agnostic auth logic extracted from adapter middlewares.\n// Each adapter builds an AuthMiddlewareContext and delegates to coreAuthMiddleware.\n\nexport interface AuthMiddlewareContext {\n path: string;\n method: string;\n getHeader: (name: string) => string | undefined;\n mastra: Mastra;\n authConfig: MastraAuthConfig;\n customRouteAuthConfig?: Map<string, boolean>;\n requestContext: { get: (key: string) => unknown; set: (key: string, value: unknown) => void };\n rawRequest: MastraAuthRequest;\n token: string | null;\n buildAuthorizeContext: () => unknown;\n /** When true, force authentication even if the path matches a public pattern. */\n requiresAuth?: boolean;\n}\n\nexport type AuthResult =\n | { action: 'next'; headers?: Record<string, string> }\n | { action: 'error'; status: number; body: Record<string, unknown>; headers?: Record<string, string> };\n\nconst pass: AuthResult = { action: 'next' };\n\nconst adaptToMastraAuthRequest = (request: MastraAuthRequest): MastraAuthRequest => {\n if (!(request instanceof Request)) {\n return request;\n }\n\n return {\n raw: request,\n headers: request.headers,\n header: name => request.headers.get(name) ?? undefined,\n };\n};\n\nexport interface GetAuthenticatedUserOptions {\n mastra: Mastra;\n token: string;\n request: MastraAuthRequest;\n}\n\nexport const getAuthenticatedUser = async <TUser = unknown>({\n mastra,\n token,\n request,\n}: GetAuthenticatedUserOptions): Promise<TUser | null> => {\n const normalizedToken = token.replace(/^Bearer\\s+/i, '').trim();\n if (!normalizedToken) {\n return null;\n }\n\n const authConfig = mastra.getServer()?.auth;\n if (!authConfig || typeof authConfig.authenticateToken !== 'function') {\n return null;\n }\n\n return (await authConfig.authenticateToken(normalizedToken, request)) as TUser | null;\n};\n\n/**\n * Check if an auth config object supports transparent session refresh.\n * Returns true if the auth provider implements the necessary ISessionProvider methods.\n */\nexport function supportsSessionRefresh(\n authConfig: MastraAuthConfig | IMastraAuthProvider,\n): authConfig is (MastraAuthConfig | IMastraAuthProvider) &\n Pick<ISessionProvider, 'refreshSession' | 'getSessionIdFromRequest' | 'getSessionHeaders'> {\n return (\n typeof (authConfig as any).getSessionIdFromRequest === 'function' &&\n typeof (authConfig as any).refreshSession === 'function' &&\n typeof (authConfig as any).getSessionHeaders === 'function'\n );\n}\n\n/**\n * Single auth middleware: authenticate → authorize.\n * Skip checks (dev playground, unprotected path, public path) are evaluated once.\n */\nexport const coreAuthMiddleware = async (ctx: AuthMiddlewareContext): Promise<AuthResult> => {\n const {\n path,\n method,\n getHeader,\n mastra,\n authConfig,\n customRouteAuthConfig,\n requestContext,\n rawRequest,\n token,\n requiresAuth,\n } = ctx;\n\n // ── Skip checks (evaluated once) ──\n\n // Only bypass auth for dev playground when no real auth provider is configured.\n // When auth IS configured (has authenticateToken), we need the full auth flow\n // so user/roles/permissions are set in requestContext.\n const hasAuthProvider = typeof authConfig.authenticateToken === 'function';\n if (!hasAuthProvider && isDevPlaygroundRequest(path, method, getHeader, authConfig, customRouteAuthConfig)) {\n return pass;\n }\n\n if (!isProtectedPath(path, method, authConfig, customRouteAuthConfig)) {\n return pass;\n }\n\n // When a route explicitly requires auth (requiresAuth: true), skip the\n // public-path bypass so the user is still authenticated and permissions\n // are injected into the request context.\n if (!requiresAuth && canAccessPublicly(path, method, authConfig)) {\n return pass;\n }\n\n // ── Authentication ──\n\n let user: unknown;\n let refreshHeaders: Record<string, string> | undefined;\n const authRequest = adaptToMastraAuthRequest(rawRequest);\n\n try {\n if (typeof authConfig.authenticateToken === 'function') {\n user = await authConfig.authenticateToken(token ?? '', authRequest);\n } else {\n throw new Error('No token verification method configured');\n }\n\n // If authentication failed, attempt transparent session refresh before returning 401.\n // This handles expired access tokens without requiring client-side refresh logic.\n if (!user && supportsSessionRefresh(authConfig) && rawRequest instanceof Request) {\n try {\n const sessionId = authConfig.getSessionIdFromRequest(rawRequest);\n if (sessionId) {\n const newSession = await authConfig.refreshSession(sessionId);\n if (newSession) {\n // Refresh succeeded — build updated session headers and re-authenticate.\n // We create a synthetic request with the new session cookie so\n // authenticateToken (which reads cookies from the request) picks up\n // the refreshed session instead of the expired one.\n refreshHeaders = authConfig.getSessionHeaders(newSession);\n const refreshedCookie = Object.entries(refreshHeaders)\n .filter(([k]) => k.toLowerCase() === 'set-cookie')\n .map(([, v]) => v.split(';')[0]) // Extract name=value before attributes\n .join('; ');\n if (refreshedCookie) {\n const refreshedRequest = new Request(rawRequest.url, {\n method: rawRequest.method,\n headers: new Headers(rawRequest.headers),\n });\n refreshedRequest.headers.set('Cookie', refreshedCookie);\n // Pass the refreshed cookie value as the token so authenticateToken\n // picks up the new session instead of the stale original.\n // Auth providers typically read cookies from the request object, but\n // some may also inspect the token parameter directly.\n const cookieValue = refreshedCookie.includes('=')\n ? refreshedCookie.split('=').slice(1).join('=')\n : refreshedCookie;\n user = await authConfig.authenticateToken(cookieValue, adaptToMastraAuthRequest(refreshedRequest));\n }\n if (!user) {\n refreshHeaders = undefined;\n }\n }\n }\n } catch (refreshErr) {\n refreshHeaders = undefined;\n mastra.getLogger()?.debug('Session refresh failed, falling back to 401', {\n error: refreshErr instanceof Error ? { message: refreshErr.message } : refreshErr,\n });\n }\n }\n\n if (!user) {\n return { action: 'error', status: 401, body: { error: 'Invalid or expired token' }, headers: refreshHeaders };\n }\n\n requestContext.set(MASTRA_USER_KEY, user);\n // Backward-compat: also write the legacy `'user'` key so existing\n // middleware and integrations that read `requestContext.get('user')`\n // (including built-in FGA route enforcement, memory handlers, and the\n // documented public surface) keep working. New code should prefer\n // `MASTRA_USER_KEY` to avoid collisions with caller-supplied keys.\n requestContext.set('user', user);\n\n // Store the raw auth token so downstream code (e.g., editor MCP client\n // resolution) can forward it when connecting to auth-protected MCP servers.\n // The token may arrive via Authorization header, apiKey query param, or\n // cookie (SimpleAuth sets `mastra-token`). Check all sources so the\n // forwarded value is available regardless of how the user authenticated.\n let effectiveToken = token;\n if (!effectiveToken && rawRequest instanceof Request) {\n const cookieHeader = rawRequest.headers.get('cookie');\n if (cookieHeader) {\n const match = cookieHeader.match(/mastra-token=([^;]+)/);\n if (match?.[1]) effectiveToken = match[1];\n }\n }\n if (effectiveToken) {\n requestContext.set(MASTRA_AUTH_TOKEN_KEY, effectiveToken);\n }\n\n if (typeof authConfig.mapUserToResourceId === 'function') {\n try {\n const resourceId = authConfig.mapUserToResourceId(user);\n if (resourceId) {\n requestContext.set(MASTRA_RESOURCE_ID_KEY, resourceId);\n }\n } catch (mapError) {\n mastra.getLogger()?.error('mapUserToResourceId failed', {\n error: mapError instanceof Error ? { message: mapError.message, stack: mapError.stack } : mapError,\n });\n return {\n action: 'error',\n status: 500,\n body: { error: 'Failed to map authenticated user to a resource ID' },\n headers: refreshHeaders,\n };\n }\n }\n\n try {\n // Determine which RBAC provider to use based on auth mode\n const authMode = requestContext.get(MASTRA_AUTH_MODE_KEY);\n const serverConfig = mastra.getServer();\n const studioConfig = mastra.getStudio?.();\n // Use studio RBAC if this is a studio request, otherwise use server RBAC\n const rbacProvider = (authMode === 'studio' ? (studioConfig?.rbac ?? serverConfig?.rbac) : serverConfig?.rbac) as\n IRBACProvider<EEUser> | undefined;\n\n if (rbacProvider) {\n if (!user || typeof user !== 'object' || !('id' in user)) {\n mastra.getLogger()?.warn('RBAC: authenticated user missing required \"id\" field, skipping permission loading');\n } else {\n const permissions = await rbacProvider.getPermissions(user as EEUser);\n requestContext.set(MASTRA_USER_PERMISSIONS_KEY, permissions);\n // Backward-compat alias for callers reading the legacy key.\n requestContext.set('userPermissions', permissions);\n\n const roles = await rbacProvider.getRoles(user as EEUser);\n requestContext.set(MASTRA_USER_ROLES_KEY, roles);\n // Backward-compat alias for callers reading the legacy key.\n requestContext.set('userRoles', roles);\n }\n }\n } catch (rbacError) {\n mastra.getLogger()?.error('RBAC: failed to load user permissions/roles', {\n error: rbacError instanceof Error ? { message: rbacError.message, stack: rbacError.stack } : rbacError,\n });\n }\n } catch (err) {\n mastra.getLogger()?.error('Authentication error', {\n error: err instanceof Error ? { message: err.message, stack: err.stack } : err,\n });\n return { action: 'error', status: 401, body: { error: 'Invalid or expired token' }, headers: refreshHeaders };\n }\n\n // ── Authorization ──\n\n if ('authorizeUser' in authConfig && typeof authConfig.authorizeUser === 'function') {\n try {\n const isAuthorized = await authConfig.authorizeUser(user, authRequest);\n\n if (!isAuthorized) {\n return { action: 'error', status: 403, body: { error: 'Access denied' }, headers: refreshHeaders };\n }\n } catch (err) {\n mastra.getLogger()?.error('Authorization error in authorizeUser', {\n error: err instanceof Error ? { message: err.message, stack: err.stack } : err,\n });\n return { action: 'error', status: 500, body: { error: 'Authorization error' }, headers: refreshHeaders };\n }\n } else if ('authorize' in authConfig && typeof authConfig.authorize === 'function') {\n try {\n const authorizeCtx = ctx.buildAuthorizeContext();\n const isAuthorized = await authConfig.authorize(path, method, user, authorizeCtx as any);\n\n if (!isAuthorized) {\n return { action: 'error', status: 403, body: { error: 'Access denied' }, headers: refreshHeaders };\n }\n } catch (err) {\n mastra.getLogger()?.error('Authorization error in authorize', {\n error: err instanceof Error ? { message: err.message, stack: err.stack } : err,\n path,\n method,\n });\n return { action: 'error', status: 500, body: { error: 'Authorization error' }, headers: refreshHeaders };\n }\n } else if ('rules' in authConfig && authConfig.rules && authConfig.rules.length > 0) {\n const isAuthorized = await checkRules(authConfig.rules, path, method, user);\n\n if (!isAuthorized) {\n return { action: 'error', status: 403, body: { error: 'Access denied' }, headers: refreshHeaders };\n }\n } else {\n // No explicit authorization configured (authorizeUser, authorize, or rules)\n // Check if RBAC is configured - if not, allow authenticated users through\n // (auth-only mode = authenticated users get full access)\n const rbacProvider = mastra.getServer()?.rbac;\n if (rbacProvider) {\n if (defaultAuthConfig.rules && defaultAuthConfig.rules.length > 0) {\n const isAuthorized = await checkRules(defaultAuthConfig.rules, path, method, user);\n\n if (!isAuthorized) {\n return { action: 'error', status: 403, body: { error: 'Access denied' }, headers: refreshHeaders };\n }\n } else {\n return { action: 'error', status: 403, body: { error: 'Access denied' }, headers: refreshHeaders };\n }\n }\n }\n\n return refreshHeaders ? { action: 'next', headers: refreshHeaders } : pass;\n};\n\n// Check authorization rules\nexport const checkRules = async (\n rules: MastraAuthConfig['rules'],\n path: string,\n method: string,\n user: unknown,\n): Promise<boolean> => {\n // Go through rules in order (first match wins)\n for (const i in rules || []) {\n const rule = rules?.[i]!;\n // Check if rule applies to this path\n if (!pathMatchesRule(path, rule.path)) {\n continue;\n }\n\n // Check if rule applies to this method\n if (rule.methods && !matchesOrIncludes(rule.methods, method)) {\n continue;\n }\n\n // Rule matches, check conditions\n const condition = rule.condition;\n if (typeof condition === 'function') {\n const allowed = await Promise.resolve()\n .then(() => condition(user))\n .catch(() => false);\n\n if (allowed) {\n return true;\n }\n } else if (rule.allow) {\n return true;\n }\n }\n\n // No matching rules, deny by default\n return false;\n};\n"]}
@@ -1,7 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkH32FN255_cjs = require('./chunk-H32FN255.cjs');
4
- var chunkDIG2K5CV_cjs = require('./chunk-DIG2K5CV.cjs');
3
+ var chunkAEQ33POL_cjs = require('./chunk-AEQ33POL.cjs');
4
+ var chunk3JVOIOO6_cjs = require('./chunk-3JVOIOO6.cjs');
5
+ var chunkVK4EOZXR_cjs = require('./chunk-VK4EOZXR.cjs');
5
6
  var chunkZ7LCIYK7_cjs = require('./chunk-Z7LCIYK7.cjs');
6
7
  var chunkSX2AJUSP_cjs = require('./chunk-SX2AJUSP.cjs');
7
8
  var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
@@ -17,6 +18,11 @@ function assertDatasetsAvailable() {
17
18
  throw new chunk64ITUOXI_cjs.HTTPException(501, { message: "Datasets require @mastra/core >= 1.4.0" });
18
19
  }
19
20
  }
21
+ function toItemRequestContext(requestContext$1) {
22
+ if (!(requestContext$1 instanceof requestContext.RequestContext)) return requestContext$1;
23
+ const entries = Object.entries(requestContext$1.toJSON()).filter(([key]) => !chunkVK4EOZXR_cjs.isReservedRequestContextKey(key));
24
+ return entries.length > 0 ? Object.fromEntries(entries) : void 0;
25
+ }
20
26
  function isSchemaValidationError(error) {
21
27
  return error instanceof Error && error.name === "SchemaValidationError";
22
28
  }
@@ -30,6 +36,7 @@ function getHttpStatusForMastraError(errorId) {
30
36
  return 404;
31
37
  case "EXPERIMENT_NO_ITEMS":
32
38
  case "DATASET_ITEM_EXTERNAL_ID_INVALID":
39
+ case "DATASET_ITEM_PAYLOAD_NOT_SERIALIZABLE":
33
40
  return 400;
34
41
  case "DATASET_ITEM_IDENTITY_CONFLICT":
35
42
  return 409;
@@ -41,8 +48,8 @@ var LIST_DATASETS_ROUTE = chunkSX2AJUSP_cjs.createRoute({
41
48
  method: "GET",
42
49
  path: "/datasets",
43
50
  responseType: "json",
44
- queryParamSchema: chunkH32FN255_cjs.paginationQuerySchema,
45
- responseSchema: chunkH32FN255_cjs.listDatasetsResponseSchema,
51
+ queryParamSchema: chunkAEQ33POL_cjs.paginationQuerySchema,
52
+ responseSchema: chunkAEQ33POL_cjs.listDatasetsResponseSchema,
46
53
  summary: "List all datasets",
47
54
  description: "Returns a paginated list of all datasets",
48
55
  tags: ["Datasets"],
@@ -68,8 +75,8 @@ var CREATE_DATASET_ROUTE = chunkSX2AJUSP_cjs.createRoute({
68
75
  method: "POST",
69
76
  path: "/datasets",
70
77
  responseType: "json",
71
- bodySchema: chunkH32FN255_cjs.createDatasetBodySchema,
72
- responseSchema: chunkH32FN255_cjs.datasetResponseSchema,
78
+ bodySchema: chunkAEQ33POL_cjs.createDatasetBodySchema,
79
+ responseSchema: chunkAEQ33POL_cjs.datasetResponseSchema,
73
80
  summary: "Create a new dataset",
74
81
  description: "Creates a new dataset with the specified name and optional metadata",
75
82
  tags: ["Datasets"],
@@ -113,9 +120,9 @@ var GET_DATASET_ROUTE = chunkSX2AJUSP_cjs.createRoute({
113
120
  method: "GET",
114
121
  path: "/datasets/:datasetId",
115
122
  responseType: "json",
116
- pathParamSchema: chunkH32FN255_cjs.datasetIdPathParams,
117
- queryParamSchema: chunkH32FN255_cjs.tenancyQuerySchema,
118
- responseSchema: chunkH32FN255_cjs.datasetResponseSchema.nullable(),
123
+ pathParamSchema: chunkAEQ33POL_cjs.datasetIdPathParams,
124
+ queryParamSchema: chunkAEQ33POL_cjs.tenancyQuerySchema,
125
+ responseSchema: chunkAEQ33POL_cjs.datasetResponseSchema.nullable(),
119
126
  summary: "Get dataset by ID",
120
127
  description: "Returns details for a specific dataset",
121
128
  tags: ["Datasets"],
@@ -138,10 +145,10 @@ var UPDATE_DATASET_ROUTE = chunkSX2AJUSP_cjs.createRoute({
138
145
  method: "PATCH",
139
146
  path: "/datasets/:datasetId",
140
147
  responseType: "json",
141
- pathParamSchema: chunkH32FN255_cjs.datasetIdPathParams,
142
- queryParamSchema: chunkH32FN255_cjs.tenancyQuerySchema,
143
- bodySchema: chunkH32FN255_cjs.updateDatasetBodySchema,
144
- responseSchema: chunkH32FN255_cjs.datasetResponseSchema,
148
+ pathParamSchema: chunkAEQ33POL_cjs.datasetIdPathParams,
149
+ queryParamSchema: chunkAEQ33POL_cjs.tenancyQuerySchema,
150
+ bodySchema: chunkAEQ33POL_cjs.updateDatasetBodySchema,
151
+ responseSchema: chunkAEQ33POL_cjs.datasetResponseSchema,
145
152
  summary: "Update dataset",
146
153
  description: "Updates a dataset with the specified fields",
147
154
  tags: ["Datasets"],
@@ -201,9 +208,9 @@ var DELETE_DATASET_ROUTE = chunkSX2AJUSP_cjs.createRoute({
201
208
  method: "DELETE",
202
209
  path: "/datasets/:datasetId",
203
210
  responseType: "json",
204
- pathParamSchema: chunkH32FN255_cjs.datasetIdPathParams,
205
- queryParamSchema: chunkH32FN255_cjs.tenancyQuerySchema,
206
- responseSchema: chunkDIG2K5CV_cjs.successResponseSchema,
211
+ pathParamSchema: chunkAEQ33POL_cjs.datasetIdPathParams,
212
+ queryParamSchema: chunkAEQ33POL_cjs.tenancyQuerySchema,
213
+ responseSchema: chunk3JVOIOO6_cjs.successResponseSchema,
207
214
  summary: "Delete dataset",
208
215
  description: "Deletes a dataset and all its items",
209
216
  tags: ["Datasets"],
@@ -229,9 +236,9 @@ var LIST_ITEMS_ROUTE = chunkSX2AJUSP_cjs.createRoute({
229
236
  method: "GET",
230
237
  path: "/datasets/:datasetId/items",
231
238
  responseType: "json",
232
- pathParamSchema: chunkH32FN255_cjs.datasetIdPathParams,
233
- queryParamSchema: chunkH32FN255_cjs.listItemsQuerySchema,
234
- responseSchema: chunkH32FN255_cjs.listItemsResponseSchema,
239
+ pathParamSchema: chunkAEQ33POL_cjs.datasetIdPathParams,
240
+ queryParamSchema: chunkAEQ33POL_cjs.listItemsQuerySchema,
241
+ responseSchema: chunkAEQ33POL_cjs.listItemsResponseSchema,
235
242
  summary: "List dataset items",
236
243
  description: "Returns a paginated list of items in the dataset",
237
244
  tags: ["Datasets"],
@@ -263,9 +270,9 @@ var ADD_ITEM_ROUTE = chunkSX2AJUSP_cjs.createRoute({
263
270
  method: "POST",
264
271
  path: "/datasets/:datasetId/items",
265
272
  responseType: "json",
266
- pathParamSchema: chunkH32FN255_cjs.datasetIdPathParams,
267
- bodySchema: chunkH32FN255_cjs.addItemBodySchema,
268
- responseSchema: chunkH32FN255_cjs.datasetItemResponseSchema,
273
+ pathParamSchema: chunkAEQ33POL_cjs.datasetIdPathParams,
274
+ bodySchema: chunkAEQ33POL_cjs.addItemBodySchema,
275
+ responseSchema: chunkAEQ33POL_cjs.datasetItemResponseSchema,
269
276
  summary: "Add item to dataset",
270
277
  description: "Adds a new item to the dataset (auto-increments dataset version)",
271
278
  tags: ["Datasets"],
@@ -279,7 +286,7 @@ var ADD_ITEM_ROUTE = chunkSX2AJUSP_cjs.createRoute({
279
286
  externalId: externalId ?? void 0,
280
287
  input,
281
288
  groundTruth,
282
- requestContext,
289
+ requestContext: toItemRequestContext(requestContext),
283
290
  metadata,
284
291
  source,
285
292
  expectedTrajectory,
@@ -312,8 +319,8 @@ var GET_ITEM_ROUTE = chunkSX2AJUSP_cjs.createRoute({
312
319
  method: "GET",
313
320
  path: "/datasets/:datasetId/items/:itemId",
314
321
  responseType: "json",
315
- pathParamSchema: chunkH32FN255_cjs.datasetAndItemIdPathParams,
316
- responseSchema: chunkH32FN255_cjs.datasetItemResponseSchema.nullable(),
322
+ pathParamSchema: chunkAEQ33POL_cjs.datasetAndItemIdPathParams,
323
+ responseSchema: chunkAEQ33POL_cjs.datasetItemResponseSchema.nullable(),
317
324
  summary: "Get dataset item by ID",
318
325
  description: "Returns details for a specific dataset item",
319
326
  tags: ["Datasets"],
@@ -339,9 +346,9 @@ var UPDATE_ITEM_ROUTE = chunkSX2AJUSP_cjs.createRoute({
339
346
  method: "PATCH",
340
347
  path: "/datasets/:datasetId/items/:itemId",
341
348
  responseType: "json",
342
- pathParamSchema: chunkH32FN255_cjs.datasetAndItemIdPathParams,
343
- bodySchema: chunkH32FN255_cjs.updateItemBodySchema,
344
- responseSchema: chunkH32FN255_cjs.datasetItemResponseSchema,
349
+ pathParamSchema: chunkAEQ33POL_cjs.datasetAndItemIdPathParams,
350
+ bodySchema: chunkAEQ33POL_cjs.updateItemBodySchema,
351
+ responseSchema: chunkAEQ33POL_cjs.datasetItemResponseSchema,
345
352
  summary: "Update dataset item",
346
353
  description: "Updates a dataset item (auto-increments dataset version)",
347
354
  tags: ["Datasets"],
@@ -359,7 +366,7 @@ var UPDATE_ITEM_ROUTE = chunkSX2AJUSP_cjs.createRoute({
359
366
  itemId,
360
367
  input,
361
368
  groundTruth,
362
- requestContext,
369
+ requestContext: toItemRequestContext(requestContext),
363
370
  metadata,
364
371
  expectedTrajectory,
365
372
  toolMocks
@@ -382,8 +389,8 @@ var DELETE_ITEM_ROUTE = chunkSX2AJUSP_cjs.createRoute({
382
389
  method: "DELETE",
383
390
  path: "/datasets/:datasetId/items/:itemId",
384
391
  responseType: "json",
385
- pathParamSchema: chunkH32FN255_cjs.datasetAndItemIdPathParams,
386
- responseSchema: chunkDIG2K5CV_cjs.successResponseSchema,
392
+ pathParamSchema: chunkAEQ33POL_cjs.datasetAndItemIdPathParams,
393
+ responseSchema: chunk3JVOIOO6_cjs.successResponseSchema,
387
394
  summary: "Delete dataset item",
388
395
  description: "Deletes a dataset item",
389
396
  tags: ["Datasets"],
@@ -410,8 +417,8 @@ var LIST_ALL_EXPERIMENTS_ROUTE = chunkSX2AJUSP_cjs.createRoute({
410
417
  method: "GET",
411
418
  path: "/experiments",
412
419
  responseType: "json",
413
- queryParamSchema: chunkH32FN255_cjs.paginationQuerySchema,
414
- responseSchema: chunkH32FN255_cjs.listExperimentsResponseSchema,
420
+ queryParamSchema: chunkAEQ33POL_cjs.paginationQuerySchema,
421
+ responseSchema: chunkAEQ33POL_cjs.listExperimentsResponseSchema,
415
422
  summary: "List all experiments",
416
423
  description: "Returns a paginated list of all experiments across all datasets",
417
424
  tags: ["Experiments"],
@@ -444,7 +451,7 @@ var EXPERIMENT_REVIEW_SUMMARY_ROUTE = chunkSX2AJUSP_cjs.createRoute({
444
451
  method: "GET",
445
452
  path: "/experiments/review-summary",
446
453
  responseType: "json",
447
- responseSchema: chunkH32FN255_cjs.reviewSummaryResponseSchema,
454
+ responseSchema: chunkAEQ33POL_cjs.reviewSummaryResponseSchema,
448
455
  summary: "Get review summary for all experiments",
449
456
  description: "Returns review status counts (needs-review, reviewed, complete) aggregated per experiment",
450
457
  tags: ["Experiments"],
@@ -474,9 +481,9 @@ var LIST_EXPERIMENTS_ROUTE = chunkSX2AJUSP_cjs.createRoute({
474
481
  method: "GET",
475
482
  path: "/datasets/:datasetId/experiments",
476
483
  responseType: "json",
477
- pathParamSchema: chunkH32FN255_cjs.datasetIdPathParams,
478
- queryParamSchema: chunkH32FN255_cjs.paginationQuerySchema,
479
- responseSchema: chunkH32FN255_cjs.listExperimentsResponseSchema,
484
+ pathParamSchema: chunkAEQ33POL_cjs.datasetIdPathParams,
485
+ queryParamSchema: chunkAEQ33POL_cjs.paginationQuerySchema,
486
+ responseSchema: chunkAEQ33POL_cjs.listExperimentsResponseSchema,
480
487
  summary: "List experiments for dataset",
481
488
  description: "Returns a paginated list of experiments for the dataset",
482
489
  tags: ["Datasets"],
@@ -500,9 +507,9 @@ var TRIGGER_EXPERIMENT_ROUTE = chunkSX2AJUSP_cjs.createRoute({
500
507
  method: "POST",
501
508
  path: "/datasets/:datasetId/experiments",
502
509
  responseType: "json",
503
- pathParamSchema: chunkH32FN255_cjs.datasetIdPathParams,
504
- bodySchema: chunkH32FN255_cjs.triggerExperimentBodySchema,
505
- responseSchema: chunkH32FN255_cjs.experimentSummaryResponseSchema,
510
+ pathParamSchema: chunkAEQ33POL_cjs.datasetIdPathParams,
511
+ bodySchema: chunkAEQ33POL_cjs.triggerExperimentBodySchema,
512
+ responseSchema: chunkAEQ33POL_cjs.experimentSummaryResponseSchema,
506
513
  summary: "Trigger a new experiment",
507
514
  description: "Triggers a new experiment on the dataset against the specified target. Returns immediately with pending status; execution happens in background.",
508
515
  tags: ["Datasets"],
@@ -554,8 +561,8 @@ var GET_EXPERIMENT_ROUTE = chunkSX2AJUSP_cjs.createRoute({
554
561
  method: "GET",
555
562
  path: "/datasets/:datasetId/experiments/:experimentId",
556
563
  responseType: "json",
557
- pathParamSchema: chunkH32FN255_cjs.datasetAndExperimentIdPathParams,
558
- responseSchema: chunkH32FN255_cjs.experimentResponseSchema.nullable(),
564
+ pathParamSchema: chunkAEQ33POL_cjs.datasetAndExperimentIdPathParams,
565
+ responseSchema: chunkAEQ33POL_cjs.experimentResponseSchema.nullable(),
559
566
  summary: "Get experiment by ID",
560
567
  description: "Returns details for a specific experiment",
561
568
  tags: ["Datasets"],
@@ -581,9 +588,9 @@ var LIST_EXPERIMENT_RESULTS_ROUTE = chunkSX2AJUSP_cjs.createRoute({
581
588
  method: "GET",
582
589
  path: "/datasets/:datasetId/experiments/:experimentId/results",
583
590
  responseType: "json",
584
- pathParamSchema: chunkH32FN255_cjs.datasetAndExperimentIdPathParams,
585
- queryParamSchema: chunkH32FN255_cjs.paginationQuerySchema,
586
- responseSchema: chunkH32FN255_cjs.listExperimentResultsResponseSchema,
591
+ pathParamSchema: chunkAEQ33POL_cjs.datasetAndExperimentIdPathParams,
592
+ queryParamSchema: chunkAEQ33POL_cjs.paginationQuerySchema,
593
+ responseSchema: chunkAEQ33POL_cjs.listExperimentResultsResponseSchema,
587
594
  summary: "List experiment results",
588
595
  description: "Returns a paginated list of results for the experiment",
589
596
  tags: ["Datasets"],
@@ -614,9 +621,9 @@ var UPDATE_EXPERIMENT_RESULT_ROUTE = chunkSX2AJUSP_cjs.createRoute({
614
621
  method: "PATCH",
615
622
  path: "/datasets/:datasetId/experiments/:experimentId/results/:resultId",
616
623
  responseType: "json",
617
- pathParamSchema: chunkH32FN255_cjs.experimentResultIdPathParams,
618
- bodySchema: chunkH32FN255_cjs.updateExperimentResultBodySchema,
619
- responseSchema: chunkH32FN255_cjs.experimentResultResponseSchema,
624
+ pathParamSchema: chunkAEQ33POL_cjs.experimentResultIdPathParams,
625
+ bodySchema: chunkAEQ33POL_cjs.updateExperimentResultBodySchema,
626
+ responseSchema: chunkAEQ33POL_cjs.experimentResultResponseSchema,
620
627
  summary: "Update an experiment result",
621
628
  description: "Updates the status and/or tags on an experiment result",
622
629
  tags: ["Datasets"],
@@ -651,9 +658,9 @@ var COMPARE_EXPERIMENTS_ROUTE = chunkSX2AJUSP_cjs.createRoute({
651
658
  method: "POST",
652
659
  path: "/datasets/:datasetId/compare",
653
660
  responseType: "json",
654
- pathParamSchema: chunkH32FN255_cjs.datasetIdPathParams,
655
- bodySchema: chunkH32FN255_cjs.compareExperimentsBodySchema,
656
- responseSchema: chunkH32FN255_cjs.comparisonResponseSchema,
661
+ pathParamSchema: chunkAEQ33POL_cjs.datasetIdPathParams,
662
+ bodySchema: chunkAEQ33POL_cjs.compareExperimentsBodySchema,
663
+ responseSchema: chunkAEQ33POL_cjs.comparisonResponseSchema,
657
664
  summary: "Compare two experiments",
658
665
  description: "Compares two experiments to detect score regressions",
659
666
  tags: ["Datasets"],
@@ -680,9 +687,9 @@ var LIST_DATASET_VERSIONS_ROUTE = chunkSX2AJUSP_cjs.createRoute({
680
687
  method: "GET",
681
688
  path: "/datasets/:datasetId/versions",
682
689
  responseType: "json",
683
- pathParamSchema: chunkH32FN255_cjs.datasetIdPathParams,
684
- queryParamSchema: chunkH32FN255_cjs.paginationQuerySchema,
685
- responseSchema: chunkH32FN255_cjs.listDatasetVersionsResponseSchema,
690
+ pathParamSchema: chunkAEQ33POL_cjs.datasetIdPathParams,
691
+ queryParamSchema: chunkAEQ33POL_cjs.paginationQuerySchema,
692
+ responseSchema: chunkAEQ33POL_cjs.listDatasetVersionsResponseSchema,
686
693
  summary: "List dataset versions",
687
694
  description: "Returns a paginated list of all versions for the dataset",
688
695
  tags: ["Datasets"],
@@ -706,8 +713,8 @@ var LIST_ITEM_VERSIONS_ROUTE = chunkSX2AJUSP_cjs.createRoute({
706
713
  method: "GET",
707
714
  path: "/datasets/:datasetId/items/:itemId/history",
708
715
  responseType: "json",
709
- pathParamSchema: chunkH32FN255_cjs.datasetAndItemIdPathParams,
710
- responseSchema: chunkH32FN255_cjs.listItemVersionsResponseSchema,
716
+ pathParamSchema: chunkAEQ33POL_cjs.datasetAndItemIdPathParams,
717
+ responseSchema: chunkAEQ33POL_cjs.listItemVersionsResponseSchema,
711
718
  summary: "Get item history",
712
719
  description: "Returns the full SCD-2 history of the item across all dataset versions",
713
720
  tags: ["Datasets"],
@@ -733,8 +740,8 @@ var GET_ITEM_VERSION_ROUTE = chunkSX2AJUSP_cjs.createRoute({
733
740
  method: "GET",
734
741
  path: "/datasets/:datasetId/items/:itemId/versions/:datasetVersion",
735
742
  responseType: "json",
736
- pathParamSchema: chunkH32FN255_cjs.datasetItemVersionPathParams,
737
- responseSchema: chunkH32FN255_cjs.datasetItemResponseSchema.nullable(),
743
+ pathParamSchema: chunkAEQ33POL_cjs.datasetItemVersionPathParams,
744
+ responseSchema: chunkAEQ33POL_cjs.datasetItemResponseSchema.nullable(),
738
745
  summary: "Get item at specific dataset version",
739
746
  description: "Returns the item as it existed at a specific dataset version",
740
747
  tags: ["Datasets"],
@@ -763,9 +770,9 @@ var BATCH_INSERT_ITEMS_ROUTE = chunkSX2AJUSP_cjs.createRoute({
763
770
  method: "POST",
764
771
  path: "/datasets/:datasetId/items/batch",
765
772
  responseType: "json",
766
- pathParamSchema: chunkH32FN255_cjs.datasetIdPathParams,
767
- bodySchema: chunkH32FN255_cjs.batchInsertItemsBodySchema,
768
- responseSchema: chunkH32FN255_cjs.batchInsertItemsResponseSchema,
773
+ pathParamSchema: chunkAEQ33POL_cjs.datasetIdPathParams,
774
+ bodySchema: chunkAEQ33POL_cjs.batchInsertItemsBodySchema,
775
+ responseSchema: chunkAEQ33POL_cjs.batchInsertItemsResponseSchema,
769
776
  summary: "Batch insert items to dataset",
770
777
  description: "Adds multiple items to the dataset in a single operation (single version entry)",
771
778
  tags: ["Datasets"],
@@ -806,9 +813,9 @@ var BATCH_DELETE_ITEMS_ROUTE = chunkSX2AJUSP_cjs.createRoute({
806
813
  method: "DELETE",
807
814
  path: "/datasets/:datasetId/items/batch",
808
815
  responseType: "json",
809
- pathParamSchema: chunkH32FN255_cjs.datasetIdPathParams,
810
- bodySchema: chunkH32FN255_cjs.batchDeleteItemsBodySchema,
811
- responseSchema: chunkH32FN255_cjs.batchDeleteItemsResponseSchema,
816
+ pathParamSchema: chunkAEQ33POL_cjs.datasetIdPathParams,
817
+ bodySchema: chunkAEQ33POL_cjs.batchDeleteItemsBodySchema,
818
+ responseSchema: chunkAEQ33POL_cjs.batchDeleteItemsResponseSchema,
812
819
  summary: "Batch delete items from dataset",
813
820
  description: "Deletes multiple items from the dataset in a single operation (single version entry)",
814
821
  tags: ["Datasets"],
@@ -845,9 +852,9 @@ var GENERATE_ITEMS_ROUTE = chunkSX2AJUSP_cjs.createRoute({
845
852
  method: "POST",
846
853
  path: "/datasets/:datasetId/generate-items",
847
854
  responseType: "json",
848
- pathParamSchema: chunkH32FN255_cjs.datasetIdPathParams,
849
- bodySchema: chunkH32FN255_cjs.generateItemsBodySchema,
850
- responseSchema: chunkH32FN255_cjs.generateItemsResponseSchema,
855
+ pathParamSchema: chunkAEQ33POL_cjs.datasetIdPathParams,
856
+ bodySchema: chunkAEQ33POL_cjs.generateItemsBodySchema,
857
+ responseSchema: chunkAEQ33POL_cjs.generateItemsResponseSchema,
851
858
  summary: "Generate dataset items using AI",
852
859
  description: "Uses an LLM to generate synthetic dataset items based on the dataset schema and a user prompt. Returns generated items for review \u2014 they are NOT automatically added to the dataset.",
853
860
  tags: ["Datasets"],
@@ -948,8 +955,8 @@ var CLUSTER_FAILURES_ROUTE = chunkSX2AJUSP_cjs.createRoute({
948
955
  method: "POST",
949
956
  path: "/datasets/cluster-failures",
950
957
  responseType: "json",
951
- bodySchema: chunkH32FN255_cjs.clusterFailuresBodySchema,
952
- responseSchema: chunkH32FN255_cjs.clusterFailuresResponseSchema,
958
+ bodySchema: chunkAEQ33POL_cjs.clusterFailuresBodySchema,
959
+ responseSchema: chunkAEQ33POL_cjs.clusterFailuresResponseSchema,
953
960
  summary: "Cluster experiment failures using AI",
954
961
  description: "Uses an LLM to analyze failure items from an experiment and group them into meaningful failure pattern clusters.",
955
962
  tags: ["Datasets"],
@@ -1051,5 +1058,5 @@ exports.TRIGGER_EXPERIMENT_ROUTE = TRIGGER_EXPERIMENT_ROUTE;
1051
1058
  exports.UPDATE_DATASET_ROUTE = UPDATE_DATASET_ROUTE;
1052
1059
  exports.UPDATE_EXPERIMENT_RESULT_ROUTE = UPDATE_EXPERIMENT_RESULT_ROUTE;
1053
1060
  exports.UPDATE_ITEM_ROUTE = UPDATE_ITEM_ROUTE;
1054
- //# sourceMappingURL=chunk-ZIBI62YT.cjs.map
1055
- //# sourceMappingURL=chunk-ZIBI62YT.cjs.map
1061
+ //# sourceMappingURL=chunk-CJYBEH4N.cjs.map
1062
+ //# sourceMappingURL=chunk-CJYBEH4N.cjs.map