@mastra/server 1.36.0-alpha.1 → 1.36.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (525) hide show
  1. package/CHANGELOG.md +158 -0
  2. package/dist/_types/@internal_core/dist/index.d.ts +506 -28
  3. package/dist/{api-schema-manifest-EMKHNXSD.cjs → api-schema-manifest-HYLH35UU.cjs} +6 -6
  4. package/dist/{api-schema-manifest-EMKHNXSD.cjs.map → api-schema-manifest-HYLH35UU.cjs.map} +1 -1
  5. package/dist/{api-schema-manifest-EJXNYOFH.js → api-schema-manifest-WY623UST.js} +4 -4
  6. package/dist/{api-schema-manifest-EJXNYOFH.js.map → api-schema-manifest-WY623UST.js.map} +1 -1
  7. package/dist/{chunk-YARY4I5U.js → chunk-23S37FLK.js} +9 -3
  8. package/dist/chunk-23S37FLK.js.map +1 -0
  9. package/dist/{chunk-NG62OLVA.js → chunk-2JXX4IPC.js} +3 -3
  10. package/dist/{chunk-NG62OLVA.js.map → chunk-2JXX4IPC.js.map} +1 -1
  11. package/dist/{chunk-BYX5LHPW.cjs → chunk-2R76OYDZ.cjs} +22 -5
  12. package/dist/chunk-2R76OYDZ.cjs.map +1 -0
  13. package/dist/{chunk-6IUJAAQ2.js → chunk-2SMGXJZJ.js} +42 -8
  14. package/dist/chunk-2SMGXJZJ.js.map +1 -0
  15. package/dist/chunk-2YUSBWAC.js +101 -0
  16. package/dist/chunk-2YUSBWAC.js.map +1 -0
  17. package/dist/{chunk-PQDYNK4J.cjs → chunk-3AKG5KEE.cjs} +45 -37
  18. package/dist/chunk-3AKG5KEE.cjs.map +1 -0
  19. package/dist/{chunk-NPMJ6FRL.cjs → chunk-3AWUH2DT.cjs} +113 -86
  20. package/dist/chunk-3AWUH2DT.cjs.map +1 -0
  21. package/dist/{chunk-Y6CAJLYX.js → chunk-3FLL7GNJ.js} +6 -6
  22. package/dist/{chunk-Y6CAJLYX.js.map → chunk-3FLL7GNJ.js.map} +1 -1
  23. package/dist/{chunk-Y5LNMKEY.cjs → chunk-43KD3CRE.cjs} +21 -7
  24. package/dist/chunk-43KD3CRE.cjs.map +1 -0
  25. package/dist/{chunk-3NA22RQ5.cjs → chunk-4BLUIUHS.cjs} +5 -5
  26. package/dist/{chunk-3NA22RQ5.cjs.map → chunk-4BLUIUHS.cjs.map} +1 -1
  27. package/dist/{chunk-FRFWWBSS.js → chunk-4DUHTOLC.js} +4 -4
  28. package/dist/{chunk-FRFWWBSS.js.map → chunk-4DUHTOLC.js.map} +1 -1
  29. package/dist/chunk-4G7S52U3.cjs +356 -0
  30. package/dist/chunk-4G7S52U3.cjs.map +1 -0
  31. package/dist/{chunk-DYN7KSCZ.js → chunk-4KSV4WWQ.js} +6 -6
  32. package/dist/{chunk-DYN7KSCZ.js.map → chunk-4KSV4WWQ.js.map} +1 -1
  33. package/dist/{chunk-CJFSLVFA.js → chunk-4RLRTJ5M.js} +22 -5
  34. package/dist/chunk-4RLRTJ5M.js.map +1 -0
  35. package/dist/{chunk-XHA6OBT3.cjs → chunk-4UFLVROK.cjs} +13 -13
  36. package/dist/{chunk-XHA6OBT3.cjs.map → chunk-4UFLVROK.cjs.map} +1 -1
  37. package/dist/{chunk-YHRGDSTK.js → chunk-4XSWMZTL.js} +40 -3
  38. package/dist/chunk-4XSWMZTL.js.map +1 -0
  39. package/dist/{chunk-MHQFFRA2.cjs → chunk-4Z24UGLY.cjs} +26 -26
  40. package/dist/{chunk-MHQFFRA2.cjs.map → chunk-4Z24UGLY.cjs.map} +1 -1
  41. package/dist/{chunk-GPLCXP3B.cjs → chunk-5GI232FP.cjs} +8 -8
  42. package/dist/{chunk-GPLCXP3B.cjs.map → chunk-5GI232FP.cjs.map} +1 -1
  43. package/dist/{chunk-IIGNRK55.cjs → chunk-5OGVOPLG.cjs} +4 -4
  44. package/dist/{chunk-IIGNRK55.cjs.map → chunk-5OGVOPLG.cjs.map} +1 -1
  45. package/dist/{chunk-5XW4MKE6.cjs → chunk-65T6KVYX.cjs} +11 -2
  46. package/dist/chunk-65T6KVYX.cjs.map +1 -0
  47. package/dist/{chunk-W32BPAIP.js → chunk-664F5XOW.js} +7 -7
  48. package/dist/{chunk-W32BPAIP.js.map → chunk-664F5XOW.js.map} +1 -1
  49. package/dist/{chunk-N44OOOAL.js → chunk-6GMGCV74.js} +5 -5
  50. package/dist/{chunk-N44OOOAL.js.map → chunk-6GMGCV74.js.map} +1 -1
  51. package/dist/chunk-6HR2SJBP.js +101 -0
  52. package/dist/chunk-6HR2SJBP.js.map +1 -0
  53. package/dist/chunk-6JCLSYOU.js +351 -0
  54. package/dist/chunk-6JCLSYOU.js.map +1 -0
  55. package/dist/{chunk-HT4KV7V5.js → chunk-6NIQROP2.js} +23 -13
  56. package/dist/chunk-6NIQROP2.js.map +1 -0
  57. package/dist/chunk-753JFAF2.js +134 -0
  58. package/dist/chunk-753JFAF2.js.map +1 -0
  59. package/dist/{chunk-LQRPDQCE.js → chunk-7EDTSUCY.js} +4 -4
  60. package/dist/{chunk-LQRPDQCE.js.map → chunk-7EDTSUCY.js.map} +1 -1
  61. package/dist/chunk-7U7OWTR2.js +149 -0
  62. package/dist/chunk-7U7OWTR2.js.map +1 -0
  63. package/dist/{chunk-SR6QNILC.cjs → chunk-A4FTF4A7.cjs} +55 -55
  64. package/dist/{chunk-SR6QNILC.cjs.map → chunk-A4FTF4A7.cjs.map} +1 -1
  65. package/dist/{chunk-7YV7MYOP.js → chunk-AAZDGIDJ.js} +22 -12
  66. package/dist/chunk-AAZDGIDJ.js.map +1 -0
  67. package/dist/chunk-APCBVLVG.js +497 -0
  68. package/dist/chunk-APCBVLVG.js.map +1 -0
  69. package/dist/chunk-AR7VSXHH.cjs +143 -0
  70. package/dist/chunk-AR7VSXHH.cjs.map +1 -0
  71. package/dist/{chunk-JRFHBWKQ.cjs → chunk-AY3ZP465.cjs} +36 -26
  72. package/dist/chunk-AY3ZP465.cjs.map +1 -0
  73. package/dist/{chunk-YLJ5EVO3.js → chunk-BWNJBSXL.js} +3 -3
  74. package/dist/{chunk-YLJ5EVO3.js.map → chunk-BWNJBSXL.js.map} +1 -1
  75. package/dist/{chunk-JBAQMT4Y.cjs → chunk-CBHBMWZ2.cjs} +12 -12
  76. package/dist/{chunk-JBAQMT4Y.cjs.map → chunk-CBHBMWZ2.cjs.map} +1 -1
  77. package/dist/{chunk-JW4P6OFG.js → chunk-CCL4C2ZO.js} +4 -4
  78. package/dist/{chunk-JW4P6OFG.js.map → chunk-CCL4C2ZO.js.map} +1 -1
  79. package/dist/{chunk-7LBBDT4S.js → chunk-CGB327L6.js} +3 -3
  80. package/dist/{chunk-7LBBDT4S.js.map → chunk-CGB327L6.js.map} +1 -1
  81. package/dist/{chunk-WP67ASKV.js → chunk-CIBEUC5W.js} +8 -8
  82. package/dist/{chunk-WP67ASKV.js.map → chunk-CIBEUC5W.js.map} +1 -1
  83. package/dist/{chunk-RGUKCKGB.cjs → chunk-CODPCBGN.cjs} +22 -22
  84. package/dist/{chunk-RGUKCKGB.cjs.map → chunk-CODPCBGN.cjs.map} +1 -1
  85. package/dist/{chunk-PM6YRFZW.cjs → chunk-CY2WDWFQ.cjs} +8 -8
  86. package/dist/{chunk-PM6YRFZW.cjs.map → chunk-CY2WDWFQ.cjs.map} +1 -1
  87. package/dist/{chunk-OS2636MU.js → chunk-D4HVKF56.js} +5 -5
  88. package/dist/{chunk-OS2636MU.js.map → chunk-D4HVKF56.js.map} +1 -1
  89. package/dist/{chunk-73MISLDN.cjs → chunk-D774EZRN.cjs} +16 -16
  90. package/dist/{chunk-73MISLDN.cjs.map → chunk-D774EZRN.cjs.map} +1 -1
  91. package/dist/{chunk-L3WM4IWR.cjs → chunk-DYXX34YU.cjs} +56 -21
  92. package/dist/chunk-DYXX34YU.cjs.map +1 -0
  93. package/dist/{chunk-XZT7USLH.js → chunk-E3UHRQZ7.js} +81 -41
  94. package/dist/chunk-E3UHRQZ7.js.map +1 -0
  95. package/dist/{chunk-DZWFQD53.cjs → chunk-EAPGRYRG.cjs} +6 -6
  96. package/dist/{chunk-DZWFQD53.cjs.map → chunk-EAPGRYRG.cjs.map} +1 -1
  97. package/dist/{chunk-R4IYXUNR.cjs → chunk-ESZN7NKS.cjs} +34 -26
  98. package/dist/chunk-ESZN7NKS.cjs.map +1 -0
  99. package/dist/{chunk-E53AJNZB.js → chunk-F2FAL5CZ.js} +2 -2
  100. package/dist/{chunk-E53AJNZB.js.map → chunk-F2FAL5CZ.js.map} +1 -1
  101. package/dist/{chunk-7BM2AIKU.js → chunk-FKQCQSXF.js} +44 -17
  102. package/dist/chunk-FKQCQSXF.js.map +1 -0
  103. package/dist/{chunk-DGJSHUP4.cjs → chunk-FP3SA3LK.cjs} +177 -177
  104. package/dist/{chunk-DGJSHUP4.cjs.map → chunk-FP3SA3LK.cjs.map} +1 -1
  105. package/dist/chunk-G5LQCOFZ.js +292 -0
  106. package/dist/chunk-G5LQCOFZ.js.map +1 -0
  107. package/dist/{chunk-B3UPXBHD.js → chunk-G6W3FFTU.js} +227 -41
  108. package/dist/chunk-G6W3FFTU.js.map +1 -0
  109. package/dist/chunk-GA4BG5JK.js +46 -0
  110. package/dist/chunk-GA4BG5JK.js.map +1 -0
  111. package/dist/{chunk-YPXOTWND.js → chunk-GAGC4WDU.js} +3 -3
  112. package/dist/{chunk-YPXOTWND.js.map → chunk-GAGC4WDU.js.map} +1 -1
  113. package/dist/{chunk-T6QQYYPA.cjs → chunk-GAL7C4Y5.cjs} +36 -26
  114. package/dist/chunk-GAL7C4Y5.cjs.map +1 -0
  115. package/dist/{chunk-GTYVB2TS.js → chunk-GFZR6THV.js} +3 -3
  116. package/dist/{chunk-GTYVB2TS.js.map → chunk-GFZR6THV.js.map} +1 -1
  117. package/dist/{chunk-Q7LA2XMK.js → chunk-GW6T4HLN.js} +9 -9
  118. package/dist/{chunk-Q7LA2XMK.js.map → chunk-GW6T4HLN.js.map} +1 -1
  119. package/dist/{chunk-NDMG7SUN.js → chunk-HFESVWJ6.js} +8 -8
  120. package/dist/{chunk-NDMG7SUN.js.map → chunk-HFESVWJ6.js.map} +1 -1
  121. package/dist/{chunk-BBB4NKZZ.cjs → chunk-HGAPGNWM.cjs} +83 -83
  122. package/dist/{chunk-BBB4NKZZ.cjs.map → chunk-HGAPGNWM.cjs.map} +1 -1
  123. package/dist/{chunk-OOEYTKTC.js → chunk-HGRG2WVX.js} +35 -18
  124. package/dist/chunk-HGRG2WVX.js.map +1 -0
  125. package/dist/{chunk-4YSEVAAS.cjs → chunk-HKM5KOOK.cjs} +31 -31
  126. package/dist/{chunk-4YSEVAAS.cjs.map → chunk-HKM5KOOK.cjs.map} +1 -1
  127. package/dist/chunk-HMJL3C3H.js +36 -0
  128. package/dist/chunk-HMJL3C3H.js.map +1 -0
  129. package/dist/{chunk-X7ZNZFHV.js → chunk-HNGYUI5N.js} +23 -15
  130. package/dist/chunk-HNGYUI5N.js.map +1 -0
  131. package/dist/{chunk-7R7WT24X.cjs → chunk-HWT5YD7H.cjs} +17 -17
  132. package/dist/{chunk-7R7WT24X.cjs.map → chunk-HWT5YD7H.cjs.map} +1 -1
  133. package/dist/{chunk-R3R6VJRM.cjs → chunk-HZNJ4B7D.cjs} +32 -32
  134. package/dist/{chunk-R3R6VJRM.cjs.map → chunk-HZNJ4B7D.cjs.map} +1 -1
  135. package/dist/{chunk-XGNMFTYF.js → chunk-I3RWQGD7.js} +9 -9
  136. package/dist/{chunk-XGNMFTYF.js.map → chunk-I3RWQGD7.js.map} +1 -1
  137. package/dist/{chunk-UQ2H32RT.cjs → chunk-I6WBJDRP.cjs} +10 -10
  138. package/dist/{chunk-UQ2H32RT.cjs.map → chunk-I6WBJDRP.cjs.map} +1 -1
  139. package/dist/{chunk-T3PECMPO.js → chunk-IRJQQYII.js} +7 -7
  140. package/dist/{chunk-T3PECMPO.js.map → chunk-IRJQQYII.js.map} +1 -1
  141. package/dist/chunk-JUYUBEMU.js +28 -0
  142. package/dist/chunk-JUYUBEMU.js.map +1 -0
  143. package/dist/{chunk-IVFIYTLD.cjs → chunk-JZ2K5LY4.cjs} +34 -34
  144. package/dist/{chunk-IVFIYTLD.cjs.map → chunk-JZ2K5LY4.cjs.map} +1 -1
  145. package/dist/{chunk-MEYWNCUV.cjs → chunk-KE4V4LJE.cjs} +7 -7
  146. package/dist/{chunk-MEYWNCUV.cjs.map → chunk-KE4V4LJE.cjs.map} +1 -1
  147. package/dist/{chunk-ES23WZRF.cjs → chunk-LEIV627E.cjs} +15 -15
  148. package/dist/{chunk-ES23WZRF.cjs.map → chunk-LEIV627E.cjs.map} +1 -1
  149. package/dist/{chunk-AIRSK4QU.js → chunk-LH5Y7AJF.js} +46 -7
  150. package/dist/chunk-LH5Y7AJF.js.map +1 -0
  151. package/dist/{chunk-5TTCUSSA.js → chunk-LPFE6YTG.js} +3 -3
  152. package/dist/{chunk-5TTCUSSA.js.map → chunk-LPFE6YTG.js.map} +1 -1
  153. package/dist/{chunk-WYLVJSGR.cjs → chunk-LTRLD33R.cjs} +47 -8
  154. package/dist/chunk-LTRLD33R.cjs.map +1 -0
  155. package/dist/{chunk-UH3MHVDF.cjs → chunk-M4B42JGO.cjs} +6 -3
  156. package/dist/chunk-M4B42JGO.cjs.map +1 -0
  157. package/dist/{chunk-QWPEAC7I.cjs → chunk-MERLF4UP.cjs} +94 -94
  158. package/dist/{chunk-QWPEAC7I.cjs.map → chunk-MERLF4UP.cjs.map} +1 -1
  159. package/dist/{chunk-CIPZ4VOZ.cjs → chunk-N6RQC4Z3.cjs} +4 -4
  160. package/dist/{chunk-CIPZ4VOZ.cjs.map → chunk-N6RQC4Z3.cjs.map} +1 -1
  161. package/dist/chunk-NHJWT4KF.cjs +104 -0
  162. package/dist/chunk-NHJWT4KF.cjs.map +1 -0
  163. package/dist/chunk-O4O2EJF7.cjs +13 -0
  164. package/dist/chunk-O4O2EJF7.cjs.map +1 -0
  165. package/dist/{chunk-H3RUJBEL.cjs → chunk-O7B3P2AT.cjs} +57 -40
  166. package/dist/chunk-O7B3P2AT.cjs.map +1 -0
  167. package/dist/{chunk-L2RZNUOW.js → chunk-OGYYXNGI.js} +4 -4
  168. package/dist/{chunk-L2RZNUOW.js.map → chunk-OGYYXNGI.js.map} +1 -1
  169. package/dist/{chunk-M7DF3D2M.js → chunk-OJNVSXOF.js} +19 -5
  170. package/dist/chunk-OJNVSXOF.js.map +1 -0
  171. package/dist/{chunk-KGK2LCZ4.js → chunk-OKKJPM5N.js} +21 -14
  172. package/dist/chunk-OKKJPM5N.js.map +1 -0
  173. package/dist/{chunk-Z6C7SDXA.js → chunk-ONCDLJUQ.js} +6 -3
  174. package/dist/chunk-ONCDLJUQ.js.map +1 -0
  175. package/dist/{chunk-HX5WL5ZF.js → chunk-OORAVFI4.js} +3 -3
  176. package/dist/{chunk-HX5WL5ZF.js.map → chunk-OORAVFI4.js.map} +1 -1
  177. package/dist/{chunk-M7CTMLXS.js → chunk-OSN3DL34.js} +4 -4
  178. package/dist/{chunk-M7CTMLXS.js.map → chunk-OSN3DL34.js.map} +1 -1
  179. package/dist/{chunk-ZIR2AE52.js → chunk-P5ZWPVC2.js} +4 -4
  180. package/dist/{chunk-ZIR2AE52.js.map → chunk-P5ZWPVC2.js.map} +1 -1
  181. package/dist/{chunk-BBD7VAAR.js → chunk-PQ37PNAE.js} +22 -12
  182. package/dist/chunk-PQ37PNAE.js.map +1 -0
  183. package/dist/{chunk-DRNCUSSM.cjs → chunk-PWGPLCL4.cjs} +5 -5
  184. package/dist/{chunk-DRNCUSSM.cjs.map → chunk-PWGPLCL4.cjs.map} +1 -1
  185. package/dist/chunk-QJU62KP2.cjs +298 -0
  186. package/dist/chunk-QJU62KP2.cjs.map +1 -0
  187. package/dist/{chunk-AY5TY4EN.js → chunk-QUVYOHFH.js} +178 -52
  188. package/dist/chunk-QUVYOHFH.js.map +1 -0
  189. package/dist/{chunk-LTYRUL3Q.cjs → chunk-QZ6UFQ7V.cjs} +42 -2
  190. package/dist/chunk-QZ6UFQ7V.cjs.map +1 -0
  191. package/dist/chunk-REJUB2HI.cjs +104 -0
  192. package/dist/chunk-REJUB2HI.cjs.map +1 -0
  193. package/dist/chunk-RJUQQE46.cjs +551 -0
  194. package/dist/chunk-RJUQQE46.cjs.map +1 -0
  195. package/dist/{chunk-M4MNMBQF.cjs → chunk-RYPLQO4Z.cjs} +32 -25
  196. package/dist/chunk-RYPLQO4Z.cjs.map +1 -0
  197. package/dist/chunk-S77FIEDZ.cjs +504 -0
  198. package/dist/chunk-S77FIEDZ.cjs.map +1 -0
  199. package/dist/chunk-SFPN7SHZ.js +11 -0
  200. package/dist/chunk-SFPN7SHZ.js.map +1 -0
  201. package/dist/{chunk-LBEQ4EE4.js → chunk-SPGVPADY.js} +3 -3
  202. package/dist/{chunk-LBEQ4EE4.js.map → chunk-SPGVPADY.js.map} +1 -1
  203. package/dist/{chunk-Q2B7W7GA.cjs → chunk-T3C54LPX.cjs} +57 -5
  204. package/dist/chunk-T3C54LPX.cjs.map +1 -0
  205. package/dist/chunk-TNXHSUIL.cjs +655 -0
  206. package/dist/chunk-TNXHSUIL.cjs.map +1 -0
  207. package/dist/{chunk-3BL73LS3.cjs → chunk-U72BY62E.cjs} +260 -133
  208. package/dist/chunk-U72BY62E.cjs.map +1 -0
  209. package/dist/{chunk-DZXHO72E.cjs → chunk-UBYGPC2S.cjs} +12 -12
  210. package/dist/{chunk-DZXHO72E.cjs.map → chunk-UBYGPC2S.cjs.map} +1 -1
  211. package/dist/{chunk-IDUFQ5HG.js → chunk-UCKK7LPQ.js} +3 -3
  212. package/dist/{chunk-IDUFQ5HG.js.map → chunk-UCKK7LPQ.js.map} +1 -1
  213. package/dist/{chunk-JX4UGU4A.cjs → chunk-UGJBURIS.cjs} +12 -12
  214. package/dist/{chunk-JX4UGU4A.cjs.map → chunk-UGJBURIS.cjs.map} +1 -1
  215. package/dist/{chunk-PDHGJ7GP.js → chunk-UIRQU4GW.js} +54 -6
  216. package/dist/chunk-UIRQU4GW.js.map +1 -0
  217. package/dist/chunk-V4ATNZXG.cjs +31 -0
  218. package/dist/chunk-V4ATNZXG.cjs.map +1 -0
  219. package/dist/chunk-VX3MJR4P.cjs +161 -0
  220. package/dist/chunk-VX3MJR4P.cjs.map +1 -0
  221. package/dist/{chunk-QTPAVOG2.cjs → chunk-WLGC3IWY.cjs} +49 -39
  222. package/dist/chunk-WLGC3IWY.cjs.map +1 -0
  223. package/dist/{chunk-DM6UW5RD.js → chunk-WM2RUEBO.js} +8 -8
  224. package/dist/{chunk-DM6UW5RD.js.map → chunk-WM2RUEBO.js.map} +1 -1
  225. package/dist/{chunk-4L2UVFJO.js → chunk-WYP25ZMM.js} +120 -5
  226. package/dist/chunk-WYP25ZMM.js.map +1 -0
  227. package/dist/{chunk-MXGCIYNM.js → chunk-XI3XH4G7.js} +22 -12
  228. package/dist/chunk-XI3XH4G7.js.map +1 -0
  229. package/dist/{chunk-YE3LMHL3.js → chunk-XM54QZ3G.js} +5 -5
  230. package/dist/{chunk-YE3LMHL3.js.map → chunk-XM54QZ3G.js.map} +1 -1
  231. package/dist/{chunk-PYZAUXQX.cjs → chunk-XNR667MS.cjs} +27 -27
  232. package/dist/{chunk-PYZAUXQX.cjs.map → chunk-XNR667MS.cjs.map} +1 -1
  233. package/dist/{chunk-Y6MWNLAA.cjs → chunk-XR3CGVKU.cjs} +8 -8
  234. package/dist/{chunk-Y6MWNLAA.cjs.map → chunk-XR3CGVKU.cjs.map} +1 -1
  235. package/dist/{chunk-AZORAK4H.cjs → chunk-XTFWFQZ7.cjs} +2 -2
  236. package/dist/{chunk-AZORAK4H.cjs.map → chunk-XTFWFQZ7.cjs.map} +1 -1
  237. package/dist/{chunk-ELWN7ZXR.js → chunk-Y3KIKJW6.js} +6 -6
  238. package/dist/{chunk-ELWN7ZXR.js.map → chunk-Y3KIKJW6.js.map} +1 -1
  239. package/dist/{chunk-B34S64RC.cjs → chunk-YNSUYESL.cjs} +23 -3
  240. package/dist/chunk-YNSUYESL.cjs.map +1 -0
  241. package/dist/{chunk-3PQSHLG7.cjs → chunk-YQYYIRDS.cjs} +164 -164
  242. package/dist/{chunk-3PQSHLG7.cjs.map → chunk-YQYYIRDS.cjs.map} +1 -1
  243. package/dist/chunk-YRLCLLKR.js +14 -0
  244. package/dist/chunk-YRLCLLKR.js.map +1 -0
  245. package/dist/{chunk-SUT6SU4I.cjs → chunk-Z4PDJRZT.cjs} +124 -5
  246. package/dist/chunk-Z4PDJRZT.cjs.map +1 -0
  247. package/dist/{chunk-JRZZN55Y.cjs → chunk-Z772ZUYH.cjs} +53 -43
  248. package/dist/chunk-Z772ZUYH.cjs.map +1 -0
  249. package/dist/chunk-ZCX2J552.cjs +38 -0
  250. package/dist/chunk-ZCX2J552.cjs.map +1 -0
  251. package/dist/{chunk-OULCMO5R.js → chunk-ZHS2QDGO.js} +23 -15
  252. package/dist/chunk-ZHS2QDGO.js.map +1 -0
  253. package/dist/chunk-ZNP74O27.cjs +19 -0
  254. package/dist/chunk-ZNP74O27.cjs.map +1 -0
  255. package/dist/{dist-5OGIQLEZ.js → dist-TXPFV4FE.js} +3 -3
  256. package/dist/{dist-5OGIQLEZ.js.map → dist-TXPFV4FE.js.map} +1 -1
  257. package/dist/{dist-ON3E5YMU.cjs → dist-VWAYVM5T.cjs} +3 -3
  258. package/dist/{dist-ON3E5YMU.cjs.map → dist-VWAYVM5T.cjs.map} +1 -1
  259. package/dist/docs/SKILL.md +1 -1
  260. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  261. package/dist/server/auth/helpers.d.ts +3 -0
  262. package/dist/server/auth/helpers.d.ts.map +1 -1
  263. package/dist/server/auth/index.cjs +28 -15
  264. package/dist/server/auth/index.js +2 -1
  265. package/dist/server/browser-stream/types.d.ts +9 -0
  266. package/dist/server/browser-stream/types.d.ts.map +1 -1
  267. package/dist/server/constants.d.ts +3 -0
  268. package/dist/server/constants.d.ts.map +1 -1
  269. package/dist/server/handlers/a2a.cjs +14 -14
  270. package/dist/server/handlers/a2a.js +1 -1
  271. package/dist/server/handlers/agent-builder.cjs +16 -16
  272. package/dist/server/handlers/agent-builder.js +1 -1
  273. package/dist/server/handlers/agent-versions.cjs +8 -8
  274. package/dist/server/handlers/agent-versions.d.ts.map +1 -1
  275. package/dist/server/handlers/agent-versions.js +1 -1
  276. package/dist/server/handlers/agents.cjs +41 -41
  277. package/dist/server/handlers/agents.d.ts +185 -0
  278. package/dist/server/handlers/agents.d.ts.map +1 -1
  279. package/dist/server/handlers/agents.js +1 -1
  280. package/dist/server/handlers/auth.cjs +15 -11
  281. package/dist/server/handlers/auth.d.ts +168 -146
  282. package/dist/server/handlers/auth.d.ts.map +1 -1
  283. package/dist/server/handlers/auth.js +1 -1
  284. package/dist/server/handlers/authorship.cjs +52 -0
  285. package/dist/server/handlers/authorship.cjs.map +1 -0
  286. package/dist/server/handlers/authorship.d.ts +176 -0
  287. package/dist/server/handlers/authorship.d.ts.map +1 -0
  288. package/dist/server/handlers/authorship.js +3 -0
  289. package/dist/server/handlers/authorship.js.map +1 -0
  290. package/dist/server/handlers/background-tasks.cjs +4 -4
  291. package/dist/server/handlers/background-tasks.js +1 -1
  292. package/dist/server/handlers/builder-registry.cjs +28 -0
  293. package/dist/server/handlers/builder-registry.cjs.map +1 -0
  294. package/dist/server/handlers/builder-registry.d.ts +170 -0
  295. package/dist/server/handlers/builder-registry.d.ts.map +1 -0
  296. package/dist/server/handlers/builder-registry.js +3 -0
  297. package/dist/server/handlers/builder-registry.js.map +1 -0
  298. package/dist/server/handlers/channels.cjs +5 -5
  299. package/dist/server/handlers/channels.js +1 -1
  300. package/dist/server/handlers/conversations.cjs +5 -5
  301. package/dist/server/handlers/conversations.js +1 -1
  302. package/dist/server/handlers/datasets.cjs +26 -26
  303. package/dist/server/handlers/datasets.js +1 -1
  304. package/dist/server/handlers/editor-builder.cjs +24 -0
  305. package/dist/server/handlers/editor-builder.cjs.map +1 -0
  306. package/dist/server/handlers/editor-builder.d.ts +259 -0
  307. package/dist/server/handlers/editor-builder.d.ts.map +1 -0
  308. package/dist/server/handlers/editor-builder.js +3 -0
  309. package/dist/server/handlers/editor-builder.js.map +1 -0
  310. package/dist/server/handlers/error.cjs +3 -3
  311. package/dist/server/handlers/error.d.ts.map +1 -1
  312. package/dist/server/handlers/error.js +1 -1
  313. package/dist/server/handlers/favorites-enrichment.cjs +16 -0
  314. package/dist/server/handlers/favorites-enrichment.cjs.map +1 -0
  315. package/dist/server/handlers/favorites-enrichment.d.ts +27 -0
  316. package/dist/server/handlers/favorites-enrichment.d.ts.map +1 -0
  317. package/dist/server/handlers/favorites-enrichment.js +3 -0
  318. package/dist/server/handlers/favorites-enrichment.js.map +1 -0
  319. package/dist/server/handlers/logs.cjs +4 -4
  320. package/dist/server/handlers/logs.js +1 -1
  321. package/dist/server/handlers/mcp-client-versions.cjs +8 -8
  322. package/dist/server/handlers/mcp-client-versions.d.ts.map +1 -1
  323. package/dist/server/handlers/mcp-client-versions.js +1 -1
  324. package/dist/server/handlers/mcp.cjs +11 -11
  325. package/dist/server/handlers/mcp.js +1 -1
  326. package/dist/server/handlers/memory.cjs +27 -27
  327. package/dist/server/handlers/memory.d.ts +36 -36
  328. package/dist/server/handlers/memory.js +1 -1
  329. package/dist/server/handlers/observability-list-query-schemas.cjs +24 -0
  330. package/dist/server/handlers/observability-list-query-schemas.cjs.map +1 -0
  331. package/dist/server/handlers/observability-list-query-schemas.d.ts +29 -0
  332. package/dist/server/handlers/observability-list-query-schemas.d.ts.map +1 -0
  333. package/dist/server/handlers/observability-list-query-schemas.js +3 -0
  334. package/dist/server/handlers/observability-list-query-schemas.js.map +1 -0
  335. package/dist/server/handlers/observability-new-endpoints.cjs +32 -28
  336. package/dist/server/handlers/observability-new-endpoints.d.ts +326 -48
  337. package/dist/server/handlers/observability-new-endpoints.d.ts.map +1 -1
  338. package/dist/server/handlers/observability-new-endpoints.js +1 -1
  339. package/dist/server/handlers/observability-shared.cjs +23 -7
  340. package/dist/server/handlers/observability-shared.d.ts +22 -1
  341. package/dist/server/handlers/observability-shared.d.ts.map +1 -1
  342. package/dist/server/handlers/observability-shared.js +1 -1
  343. package/dist/server/handlers/observability.cjs +43 -39
  344. package/dist/server/handlers/observability.d.ts +18 -8
  345. package/dist/server/handlers/observability.d.ts.map +1 -1
  346. package/dist/server/handlers/observability.js +2 -2
  347. package/dist/server/handlers/processor-providers.cjs +3 -3
  348. package/dist/server/handlers/processor-providers.js +1 -1
  349. package/dist/server/handlers/processors.cjs +4 -4
  350. package/dist/server/handlers/processors.js +1 -1
  351. package/dist/server/handlers/prompt-block-versions.cjs +8 -8
  352. package/dist/server/handlers/prompt-block-versions.d.ts.map +1 -1
  353. package/dist/server/handlers/prompt-block-versions.js +1 -1
  354. package/dist/server/handlers/responses.cjs +4 -4
  355. package/dist/server/handlers/responses.js +1 -1
  356. package/dist/server/handlers/responses.storage.cjs +8 -8
  357. package/dist/server/handlers/responses.storage.js +1 -1
  358. package/dist/server/handlers/schedules.cjs +6 -6
  359. package/dist/server/handlers/schedules.js +1 -1
  360. package/dist/server/handlers/scorer-versions.cjs +8 -8
  361. package/dist/server/handlers/scorer-versions.d.ts.map +1 -1
  362. package/dist/server/handlers/scorer-versions.js +1 -1
  363. package/dist/server/handlers/scores.cjs +7 -7
  364. package/dist/server/handlers/scores.js +1 -1
  365. package/dist/server/handlers/skills-sh-shared.cjs +40 -0
  366. package/dist/server/handlers/skills-sh-shared.cjs.map +1 -0
  367. package/dist/server/handlers/skills-sh-shared.d.ts +89 -0
  368. package/dist/server/handlers/skills-sh-shared.d.ts.map +1 -0
  369. package/dist/server/handlers/skills-sh-shared.js +3 -0
  370. package/dist/server/handlers/skills-sh-shared.js.map +1 -0
  371. package/dist/server/handlers/stored-agent-favorites.cjs +16 -0
  372. package/dist/server/handlers/stored-agent-favorites.cjs.map +1 -0
  373. package/dist/server/handlers/stored-agent-favorites.d.ts +29 -0
  374. package/dist/server/handlers/stored-agent-favorites.d.ts.map +1 -0
  375. package/dist/server/handlers/stored-agent-favorites.js +3 -0
  376. package/dist/server/handlers/stored-agent-favorites.js.map +1 -0
  377. package/dist/server/handlers/stored-agents.cjs +7 -7
  378. package/dist/server/handlers/stored-agents.d.ts +390 -0
  379. package/dist/server/handlers/stored-agents.d.ts.map +1 -1
  380. package/dist/server/handlers/stored-agents.js +1 -1
  381. package/dist/server/handlers/stored-mcp-clients.cjs +6 -6
  382. package/dist/server/handlers/stored-mcp-clients.d.ts.map +1 -1
  383. package/dist/server/handlers/stored-mcp-clients.js +1 -1
  384. package/dist/server/handlers/stored-prompt-blocks.cjs +6 -6
  385. package/dist/server/handlers/stored-prompt-blocks.d.ts.map +1 -1
  386. package/dist/server/handlers/stored-prompt-blocks.js +1 -1
  387. package/dist/server/handlers/stored-scorers.cjs +6 -6
  388. package/dist/server/handlers/stored-scorers.d.ts.map +1 -1
  389. package/dist/server/handlers/stored-scorers.js +1 -1
  390. package/dist/server/handlers/stored-skill-favorites.cjs +16 -0
  391. package/dist/server/handlers/stored-skill-favorites.cjs.map +1 -0
  392. package/dist/server/handlers/stored-skill-favorites.d.ts +29 -0
  393. package/dist/server/handlers/stored-skill-favorites.d.ts.map +1 -0
  394. package/dist/server/handlers/stored-skill-favorites.js +3 -0
  395. package/dist/server/handlers/stored-skill-favorites.js.map +1 -0
  396. package/dist/server/handlers/stored-skills.cjs +7 -7
  397. package/dist/server/handlers/stored-skills.d.ts +117 -0
  398. package/dist/server/handlers/stored-skills.d.ts.map +1 -1
  399. package/dist/server/handlers/stored-skills.js +1 -1
  400. package/dist/server/handlers/stored-workspaces.cjs +6 -6
  401. package/dist/server/handlers/stored-workspaces.d.ts +2 -0
  402. package/dist/server/handlers/stored-workspaces.d.ts.map +1 -1
  403. package/dist/server/handlers/stored-workspaces.js +1 -1
  404. package/dist/server/handlers/system.cjs +3 -3
  405. package/dist/server/handlers/system.js +1 -1
  406. package/dist/server/handlers/tool-providers.cjs +5 -5
  407. package/dist/server/handlers/tool-providers.js +1 -1
  408. package/dist/server/handlers/tools.cjs +6 -6
  409. package/dist/server/handlers/tools.js +1 -1
  410. package/dist/server/handlers/utils.cjs +10 -10
  411. package/dist/server/handlers/utils.d.ts +1 -1
  412. package/dist/server/handlers/utils.js +1 -1
  413. package/dist/server/handlers/validate-avatar.cjs +12 -0
  414. package/dist/server/handlers/validate-avatar.cjs.map +1 -0
  415. package/dist/server/handlers/validate-avatar.d.ts +7 -0
  416. package/dist/server/handlers/validate-avatar.d.ts.map +1 -0
  417. package/dist/server/handlers/validate-avatar.js +3 -0
  418. package/dist/server/handlers/validate-avatar.js.map +1 -0
  419. package/dist/server/handlers/vector.cjs +16 -16
  420. package/dist/server/handlers/vector.js +1 -1
  421. package/dist/server/handlers/voice.cjs +8 -8
  422. package/dist/server/handlers/voice.js +1 -1
  423. package/dist/server/handlers/workflows.cjs +26 -26
  424. package/dist/server/handlers/workflows.js +1 -1
  425. package/dist/server/handlers/workspace.cjs +26 -26
  426. package/dist/server/handlers/workspace.js +1 -1
  427. package/dist/server/handlers.cjs +35 -35
  428. package/dist/server/handlers.js +16 -16
  429. package/dist/server/schemas/builder-registry.d.ts +73 -0
  430. package/dist/server/schemas/builder-registry.d.ts.map +1 -0
  431. package/dist/server/schemas/editor-builder.d.ts +288 -0
  432. package/dist/server/schemas/editor-builder.d.ts.map +1 -0
  433. package/dist/server/schemas/favorites.d.ts +9 -0
  434. package/dist/server/schemas/favorites.d.ts.map +1 -0
  435. package/dist/server/schemas/index.cjs +388 -372
  436. package/dist/server/schemas/index.js +10 -10
  437. package/dist/server/schemas/memory.d.ts +25 -19
  438. package/dist/server/schemas/memory.d.ts.map +1 -1
  439. package/dist/server/schemas/stored-agents.d.ts +1066 -94
  440. package/dist/server/schemas/stored-agents.d.ts.map +1 -1
  441. package/dist/server/schemas/stored-skills.d.ts +111 -0
  442. package/dist/server/schemas/stored-skills.d.ts.map +1 -1
  443. package/dist/server/schemas/stored-workspaces.d.ts +1 -0
  444. package/dist/server/schemas/stored-workspaces.d.ts.map +1 -1
  445. package/dist/server/server-adapter/index.cjs +200 -124
  446. package/dist/server/server-adapter/index.cjs.map +1 -1
  447. package/dist/server/server-adapter/index.d.ts +9 -1
  448. package/dist/server/server-adapter/index.d.ts.map +1 -1
  449. package/dist/server/server-adapter/index.js +174 -98
  450. package/dist/server/server-adapter/index.js.map +1 -1
  451. package/dist/server/server-adapter/routes/editor-builder.d.ts +353 -0
  452. package/dist/server/server-adapter/routes/editor-builder.d.ts.map +1 -0
  453. package/dist/server/server-adapter/routes/fga-manifest.d.ts +4 -0
  454. package/dist/server/server-adapter/routes/fga-manifest.d.ts.map +1 -0
  455. package/dist/server/server-adapter/routes/index.d.ts +7 -1
  456. package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
  457. package/dist/server/server-adapter/routes/memory.d.ts +36 -36
  458. package/dist/server/server-adapter/routes/observability.d.ts +176 -28
  459. package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
  460. package/dist/server/server-adapter/routes/permissions.d.ts +8 -3
  461. package/dist/server/server-adapter/routes/permissions.d.ts.map +1 -1
  462. package/dist/server/server-adapter/routes/route-builder.d.ts +3 -1
  463. package/dist/server/server-adapter/routes/route-builder.d.ts.map +1 -1
  464. package/dist/server/server-adapter/routes/stored-agents.d.ts +4 -1
  465. package/dist/server/server-adapter/routes/stored-agents.d.ts.map +1 -1
  466. package/dist/server/server-adapter/routes/stored-skills.d.ts +138 -1
  467. package/dist/server/server-adapter/routes/stored-skills.d.ts.map +1 -1
  468. package/dist/server/server-adapter/routes/stored-workspaces.d.ts +2 -0
  469. package/dist/server/server-adapter/routes/stored-workspaces.d.ts.map +1 -1
  470. package/dist/server/utils/resolve-builder-model-policy.d.ts +17 -0
  471. package/dist/server/utils/resolve-builder-model-policy.d.ts.map +1 -0
  472. package/dist/server/utils.d.ts +11 -0
  473. package/dist/server/utils.d.ts.map +1 -1
  474. package/package.json +3 -3
  475. package/dist/chunk-3BL73LS3.cjs.map +0 -1
  476. package/dist/chunk-4L2UVFJO.js.map +0 -1
  477. package/dist/chunk-5XW4MKE6.cjs.map +0 -1
  478. package/dist/chunk-6IUJAAQ2.js.map +0 -1
  479. package/dist/chunk-7BM2AIKU.js.map +0 -1
  480. package/dist/chunk-7YV7MYOP.js.map +0 -1
  481. package/dist/chunk-AIRSK4QU.js.map +0 -1
  482. package/dist/chunk-AY5TY4EN.js.map +0 -1
  483. package/dist/chunk-B34S64RC.cjs.map +0 -1
  484. package/dist/chunk-B3UPXBHD.js.map +0 -1
  485. package/dist/chunk-BBD7VAAR.js.map +0 -1
  486. package/dist/chunk-BYX5LHPW.cjs.map +0 -1
  487. package/dist/chunk-CJFSLVFA.js.map +0 -1
  488. package/dist/chunk-DRTUU5WC.cjs +0 -365
  489. package/dist/chunk-DRTUU5WC.cjs.map +0 -1
  490. package/dist/chunk-H3RUJBEL.cjs.map +0 -1
  491. package/dist/chunk-HT4KV7V5.js.map +0 -1
  492. package/dist/chunk-JRFHBWKQ.cjs.map +0 -1
  493. package/dist/chunk-JRZZN55Y.cjs.map +0 -1
  494. package/dist/chunk-KGK2LCZ4.js.map +0 -1
  495. package/dist/chunk-L3WM4IWR.cjs.map +0 -1
  496. package/dist/chunk-LTYRUL3Q.cjs.map +0 -1
  497. package/dist/chunk-M4MNMBQF.cjs.map +0 -1
  498. package/dist/chunk-M7DF3D2M.js.map +0 -1
  499. package/dist/chunk-MXGCIYNM.js.map +0 -1
  500. package/dist/chunk-NPMJ6FRL.cjs.map +0 -1
  501. package/dist/chunk-OMLB6EMJ.cjs +0 -313
  502. package/dist/chunk-OMLB6EMJ.cjs.map +0 -1
  503. package/dist/chunk-OOEYTKTC.js.map +0 -1
  504. package/dist/chunk-OULCMO5R.js.map +0 -1
  505. package/dist/chunk-P23KBWKB.js +0 -26
  506. package/dist/chunk-P23KBWKB.js.map +0 -1
  507. package/dist/chunk-PDHGJ7GP.js.map +0 -1
  508. package/dist/chunk-PQDYNK4J.cjs.map +0 -1
  509. package/dist/chunk-Q2B7W7GA.cjs.map +0 -1
  510. package/dist/chunk-QTPAVOG2.cjs.map +0 -1
  511. package/dist/chunk-R4IYXUNR.cjs.map +0 -1
  512. package/dist/chunk-SUT6SU4I.cjs.map +0 -1
  513. package/dist/chunk-T6QQYYPA.cjs.map +0 -1
  514. package/dist/chunk-UH3MHVDF.cjs.map +0 -1
  515. package/dist/chunk-WNIL6DVE.cjs +0 -615
  516. package/dist/chunk-WNIL6DVE.cjs.map +0 -1
  517. package/dist/chunk-WYLVJSGR.cjs.map +0 -1
  518. package/dist/chunk-X7ZNZFHV.js.map +0 -1
  519. package/dist/chunk-XT5ZVU5J.js +0 -306
  520. package/dist/chunk-XT5ZVU5J.js.map +0 -1
  521. package/dist/chunk-XZT7USLH.js.map +0 -1
  522. package/dist/chunk-Y5LNMKEY.cjs.map +0 -1
  523. package/dist/chunk-YARY4I5U.js.map +0 -1
  524. package/dist/chunk-YHRGDSTK.js.map +0 -1
  525. package/dist/chunk-Z6C7SDXA.js.map +0 -1
@@ -0,0 +1,504 @@
1
+ 'use strict';
2
+
3
+ var chunkT3C54LPX_cjs = require('./chunk-T3C54LPX.cjs');
4
+ var chunkV4ATNZXG_cjs = require('./chunk-V4ATNZXG.cjs');
5
+ var chunk4G7S52U3_cjs = require('./chunk-4G7S52U3.cjs');
6
+ var chunkVX3MJR4P_cjs = require('./chunk-VX3MJR4P.cjs');
7
+ var chunkQZ6UFQ7V_cjs = require('./chunk-QZ6UFQ7V.cjs');
8
+ var chunkYNSUYESL_cjs = require('./chunk-YNSUYESL.cjs');
9
+ var chunkXTFWFQZ7_cjs = require('./chunk-XTFWFQZ7.cjs');
10
+ var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
11
+ var workspace = require('@mastra/core/workspace');
12
+
13
+ var INDEXED_FOLDERS = ["references", "scripts", "assets"];
14
+ function extractIndexedPathsFromFiles(files, existing) {
15
+ if (!files || files.length === 0) return {};
16
+ const root = files.find((n) => n.type === "folder");
17
+ if (!root?.children) return {};
18
+ const result = {};
19
+ for (const folderName of INDEXED_FOLDERS) {
20
+ const folder = root.children.find((n) => n.type === "folder" && n.name === folderName);
21
+ if (!folder?.children || folder.children.length === 0) continue;
22
+ const existingPaths = new Set(existing[folderName] ?? []);
23
+ const paths = [...existingPaths];
24
+ collectFilePaths(folder.children, folderName, existingPaths, paths);
25
+ if (paths.length > 0) {
26
+ result[folderName] = paths;
27
+ }
28
+ }
29
+ return result;
30
+ }
31
+ function collectFilePaths(nodes, prefix, existingPaths, out) {
32
+ for (const node of nodes) {
33
+ if (node.type === "file") {
34
+ const relativePath = `${prefix}/${node.name}`;
35
+ if (!existingPaths.has(relativePath)) {
36
+ out.push(relativePath);
37
+ }
38
+ } else if (node.type === "folder" && node.children) {
39
+ collectFilePaths(node.children, `${prefix}/${node.name}`, existingPaths, out);
40
+ }
41
+ }
42
+ }
43
+ var LIST_STORED_SKILLS_ROUTE = chunkXTFWFQZ7_cjs.createRoute({
44
+ method: "GET",
45
+ path: "/stored/skills",
46
+ responseType: "json",
47
+ queryParamSchema: chunkT3C54LPX_cjs.listStoredSkillsQuerySchema,
48
+ responseSchema: chunkT3C54LPX_cjs.listStoredSkillsResponseSchema,
49
+ summary: "List stored skills",
50
+ description: "Returns a paginated list of all skill configurations stored in the database",
51
+ tags: ["Stored Skills"],
52
+ requiresAuth: true,
53
+ handler: async ({
54
+ mastra,
55
+ requestContext,
56
+ page,
57
+ perPage,
58
+ orderBy,
59
+ status,
60
+ authorId,
61
+ visibility,
62
+ metadata,
63
+ favoritedOnly,
64
+ pinFavoritedFor
65
+ }) => {
66
+ try {
67
+ const storage = mastra.getStorage();
68
+ if (!storage) {
69
+ throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Storage is not configured" });
70
+ }
71
+ const skillStore = await storage.getStore("skills");
72
+ if (!skillStore) {
73
+ throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Skills storage domain is not available" });
74
+ }
75
+ const filter = chunkVX3MJR4P_cjs.resolveAuthorFilter({
76
+ requestContext,
77
+ resource: "stored-skills",
78
+ queryAuthorId: authorId,
79
+ queryVisibility: visibility
80
+ });
81
+ const scope = await chunkQZ6UFQ7V_cjs.getStoredResourceScope(mastra, requestContext);
82
+ const scopedMetadata = chunkQZ6UFQ7V_cjs.scopeStoredResourceMetadata(metadata, scope);
83
+ const callerId = chunkVX3MJR4P_cjs.getCallerAuthorId(requestContext);
84
+ const favoritesEnabled = await chunk4G7S52U3_cjs.isBuilderFeatureEnabled(mastra, "favorites");
85
+ const honoredStarredOnly = favoritesEnabled && favoritedOnly === true;
86
+ const favoriteSubjectId = pinFavoritedFor ?? callerId;
87
+ if (honoredStarredOnly) {
88
+ const effectivePerPage = perPage ?? 100;
89
+ if (!favoriteSubjectId) {
90
+ return { skills: [], total: 0, page, perPage: effectivePerPage, hasMore: false };
91
+ }
92
+ const favoritesStore = await storage.getStore("favorites");
93
+ if (!favoritesStore) {
94
+ throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Favorites storage domain is not available" });
95
+ }
96
+ const starredIds = await favoritesStore.listFavoritedIds({ userId: favoriteSubjectId, entityType: "skill" });
97
+ if (starredIds.length === 0) {
98
+ return { skills: [], total: 0, page, perPage: effectivePerPage, hasMore: false };
99
+ }
100
+ const allMatching = await skillStore.listResolved({
101
+ perPage: false,
102
+ orderBy,
103
+ status,
104
+ authorId: filter.kind === "exact" ? filter.authorId : void 0,
105
+ metadata: scopedMetadata,
106
+ entityIds: starredIds
107
+ });
108
+ const visible = allMatching.skills.filter((record) => chunkVX3MJR4P_cjs.matchesAuthorFilter(record, filter));
109
+ const total = visible.length;
110
+ const startIdx = effectivePerPage === 0 ? 0 : page * effectivePerPage;
111
+ const endIdx = effectivePerPage === 0 ? 0 : startIdx + effectivePerPage;
112
+ const sliced = effectivePerPage === 0 ? [] : visible.slice(startIdx, endIdx);
113
+ const annotated2 = sliced.map((record) => ({ ...record, isFavorited: true }));
114
+ const hasMore = effectivePerPage > 0 && endIdx < total;
115
+ return {
116
+ skills: annotated2,
117
+ total,
118
+ page,
119
+ perPage: effectivePerPage,
120
+ hasMore
121
+ };
122
+ }
123
+ const result = await skillStore.listResolved({
124
+ page,
125
+ perPage,
126
+ orderBy,
127
+ status,
128
+ authorId: filter.kind === "exact" ? filter.authorId : void 0,
129
+ metadata: scopedMetadata
130
+ });
131
+ const visibleSkills = result.skills.filter((record) => chunkVX3MJR4P_cjs.matchesAuthorFilter(record, filter));
132
+ if (!favoritesEnabled) {
133
+ return { ...result, skills: visibleSkills.map(chunkV4ATNZXG_cjs.stripFavoriteFields) };
134
+ }
135
+ const enrichment = await chunkV4ATNZXG_cjs.prepareFavoritesEnrichment(
136
+ mastra,
137
+ requestContext,
138
+ "skill",
139
+ visibleSkills.map((s) => s.id)
140
+ );
141
+ const annotated = enrichment ? visibleSkills.map((record) => ({ ...record, isFavorited: enrichment.starredIds.has(record.id) })) : visibleSkills;
142
+ return { ...result, skills: annotated };
143
+ } catch (error) {
144
+ return chunkYNSUYESL_cjs.handleError(error, "Error listing stored skills");
145
+ }
146
+ }
147
+ });
148
+ var GET_STORED_SKILL_ROUTE = chunkXTFWFQZ7_cjs.createRoute({
149
+ method: "GET",
150
+ path: "/stored/skills/:storedSkillId",
151
+ responseType: "json",
152
+ pathParamSchema: chunkT3C54LPX_cjs.storedSkillIdPathParams,
153
+ responseSchema: chunkT3C54LPX_cjs.getStoredSkillResponseSchema,
154
+ summary: "Get stored skill by ID",
155
+ description: "Returns a specific skill from storage by its unique identifier (resolved with active version config)",
156
+ tags: ["Stored Skills"],
157
+ requiresAuth: true,
158
+ handler: async ({ mastra, requestContext, storedSkillId }) => {
159
+ try {
160
+ const storage = mastra.getStorage();
161
+ if (!storage) {
162
+ throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Storage is not configured" });
163
+ }
164
+ const skillStore = await storage.getStore("skills");
165
+ if (!skillStore) {
166
+ throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Skills storage domain is not available" });
167
+ }
168
+ const skill = await skillStore.getByIdResolved(storedSkillId);
169
+ if (!skill) {
170
+ throw new chunk64ITUOXI_cjs.HTTPException(404, { message: `Stored skill with id ${storedSkillId} not found` });
171
+ }
172
+ chunkQZ6UFQ7V_cjs.assertStoredResourceScope(skill, await chunkQZ6UFQ7V_cjs.getStoredResourceScope(mastra, requestContext));
173
+ chunkVX3MJR4P_cjs.assertReadAccess({ requestContext, resource: "stored-skills", resourceId: storedSkillId, record: skill });
174
+ const enrichment = await chunkV4ATNZXG_cjs.prepareFavoritesEnrichment(mastra, requestContext, "skill", [skill.id]);
175
+ if (enrichment) {
176
+ return { ...skill, isFavorited: enrichment.starredIds.has(skill.id) };
177
+ }
178
+ return chunkV4ATNZXG_cjs.stripFavoriteFields(skill);
179
+ } catch (error) {
180
+ return chunkYNSUYESL_cjs.handleError(error, "Error getting stored skill");
181
+ }
182
+ }
183
+ });
184
+ var CREATE_STORED_SKILL_ROUTE = chunkXTFWFQZ7_cjs.createRoute({
185
+ method: "POST",
186
+ path: "/stored/skills",
187
+ responseType: "json",
188
+ bodySchema: chunkT3C54LPX_cjs.createStoredSkillBodySchema,
189
+ responseSchema: chunkT3C54LPX_cjs.createStoredSkillResponseSchema,
190
+ summary: "Create stored skill",
191
+ description: "Creates a new skill configuration in storage with the provided details",
192
+ tags: ["Stored Skills"],
193
+ requiresAuth: true,
194
+ handler: async ({
195
+ mastra,
196
+ requestContext,
197
+ id: providedId,
198
+ name,
199
+ description,
200
+ instructions,
201
+ license,
202
+ compatibility,
203
+ source,
204
+ references,
205
+ scripts,
206
+ assets,
207
+ files,
208
+ metadata,
209
+ visibility: bodyVisibility
210
+ }) => {
211
+ try {
212
+ const storage = mastra.getStorage();
213
+ if (!storage) {
214
+ throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Storage is not configured" });
215
+ }
216
+ const skillStore = await storage.getStore("skills");
217
+ if (!skillStore) {
218
+ throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Skills storage domain is not available" });
219
+ }
220
+ const id = providedId || chunkQZ6UFQ7V_cjs.toSlug(name);
221
+ if (!id) {
222
+ throw new chunk64ITUOXI_cjs.HTTPException(400, {
223
+ message: "Could not derive skill ID from name. Please provide an explicit id."
224
+ });
225
+ }
226
+ const existing = await skillStore.getById(id);
227
+ if (existing) {
228
+ throw new chunk64ITUOXI_cjs.HTTPException(409, { message: `Skill with id ${id} already exists` });
229
+ }
230
+ const authorId = chunkVX3MJR4P_cjs.getCallerAuthorId(requestContext) ?? void 0;
231
+ const visibility = authorId ? bodyVisibility ?? "private" : "public";
232
+ const indexedPaths = extractIndexedPathsFromFiles(files, { references, scripts, assets });
233
+ await skillStore.create({
234
+ skill: {
235
+ id,
236
+ authorId,
237
+ visibility,
238
+ name,
239
+ description,
240
+ instructions,
241
+ license,
242
+ compatibility,
243
+ source,
244
+ references: indexedPaths.references ?? references,
245
+ scripts: indexedPaths.scripts ?? scripts,
246
+ assets: indexedPaths.assets ?? assets,
247
+ files,
248
+ metadata: chunkQZ6UFQ7V_cjs.scopeStoredResourceMetadata(metadata, await chunkQZ6UFQ7V_cjs.getStoredResourceScope(mastra, requestContext))
249
+ }
250
+ });
251
+ const resolved = await skillStore.getByIdResolved(id);
252
+ if (!resolved) {
253
+ throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Failed to resolve created skill" });
254
+ }
255
+ return resolved;
256
+ } catch (error) {
257
+ return chunkYNSUYESL_cjs.handleError(error, "Error creating stored skill");
258
+ }
259
+ }
260
+ });
261
+ var UPDATE_STORED_SKILL_ROUTE = chunkXTFWFQZ7_cjs.createRoute({
262
+ method: "PATCH",
263
+ path: "/stored/skills/:storedSkillId",
264
+ responseType: "json",
265
+ pathParamSchema: chunkT3C54LPX_cjs.storedSkillIdPathParams,
266
+ bodySchema: chunkT3C54LPX_cjs.updateStoredSkillBodySchema,
267
+ responseSchema: chunkT3C54LPX_cjs.updateStoredSkillResponseSchema,
268
+ summary: "Update stored skill",
269
+ description: "Updates an existing skill in storage with the provided fields",
270
+ tags: ["Stored Skills"],
271
+ requiresAuth: true,
272
+ handler: async ({
273
+ mastra,
274
+ requestContext,
275
+ storedSkillId,
276
+ // Entity-level fields
277
+ authorId,
278
+ visibility,
279
+ // Config fields (snapshot-level)
280
+ name,
281
+ description,
282
+ instructions,
283
+ license,
284
+ compatibility,
285
+ source,
286
+ references,
287
+ scripts,
288
+ assets,
289
+ files,
290
+ metadata
291
+ }) => {
292
+ try {
293
+ const storage = mastra.getStorage();
294
+ if (!storage) {
295
+ throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Storage is not configured" });
296
+ }
297
+ const skillStore = await storage.getStore("skills");
298
+ if (!skillStore) {
299
+ throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Skills storage domain is not available" });
300
+ }
301
+ const existing = await skillStore.getByIdResolved(storedSkillId);
302
+ if (!existing) {
303
+ throw new chunk64ITUOXI_cjs.HTTPException(404, { message: `Stored skill with id ${storedSkillId} not found` });
304
+ }
305
+ const scope = await chunkQZ6UFQ7V_cjs.getStoredResourceScope(mastra, requestContext);
306
+ chunkQZ6UFQ7V_cjs.assertStoredResourceScope(existing, scope);
307
+ chunkVX3MJR4P_cjs.assertWriteAccess({
308
+ requestContext,
309
+ resource: "stored-skills",
310
+ resourceId: storedSkillId,
311
+ action: "edit",
312
+ record: existing
313
+ });
314
+ const callerAuthorId = chunkVX3MJR4P_cjs.getCallerAuthorId(requestContext) ?? void 0;
315
+ const resolvedVisibility = callerAuthorId ? visibility : visibility != null ? "public" : void 0;
316
+ const indexedPaths = files ? extractIndexedPathsFromFiles(files, { references, scripts, assets }) : {};
317
+ const update = { id: storedSkillId };
318
+ if (authorId !== void 0) update.authorId = authorId;
319
+ if (resolvedVisibility !== void 0) update.visibility = resolvedVisibility;
320
+ if (name !== void 0) update.name = name;
321
+ if (description !== void 0) update.description = description;
322
+ if (instructions !== void 0) update.instructions = instructions;
323
+ if (license !== void 0) update.license = license;
324
+ if (compatibility !== void 0) update.compatibility = compatibility;
325
+ if (source !== void 0) update.source = source;
326
+ const resolvedReferences = indexedPaths.references ?? references;
327
+ const resolvedScripts = indexedPaths.scripts ?? scripts;
328
+ const resolvedAssets = indexedPaths.assets ?? assets;
329
+ if (resolvedReferences !== void 0) update.references = resolvedReferences;
330
+ if (resolvedScripts !== void 0) update.scripts = resolvedScripts;
331
+ if (resolvedAssets !== void 0) update.assets = resolvedAssets;
332
+ if (files !== void 0) update.files = files;
333
+ if (metadata !== void 0) {
334
+ update.metadata = chunkQZ6UFQ7V_cjs.scopeStoredResourceMetadata({ ...existing.metadata ?? {}, ...metadata }, scope);
335
+ }
336
+ await skillStore.update(update);
337
+ const resolved = await skillStore.getByIdResolved(storedSkillId);
338
+ if (!resolved) {
339
+ throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Failed to resolve updated skill" });
340
+ }
341
+ return resolved;
342
+ } catch (error) {
343
+ return chunkYNSUYESL_cjs.handleError(error, "Error updating stored skill");
344
+ }
345
+ }
346
+ });
347
+ var DELETE_STORED_SKILL_ROUTE = chunkXTFWFQZ7_cjs.createRoute({
348
+ method: "DELETE",
349
+ path: "/stored/skills/:storedSkillId",
350
+ responseType: "json",
351
+ pathParamSchema: chunkT3C54LPX_cjs.storedSkillIdPathParams,
352
+ responseSchema: chunkT3C54LPX_cjs.deleteStoredSkillResponseSchema,
353
+ summary: "Delete stored skill",
354
+ description: "Deletes a skill from storage by its unique identifier",
355
+ tags: ["Stored Skills"],
356
+ requiresAuth: true,
357
+ handler: async ({ mastra, requestContext, storedSkillId }) => {
358
+ try {
359
+ const storage = mastra.getStorage();
360
+ if (!storage) {
361
+ throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Storage is not configured" });
362
+ }
363
+ const skillStore = await storage.getStore("skills");
364
+ if (!skillStore) {
365
+ throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Skills storage domain is not available" });
366
+ }
367
+ const existing = await skillStore.getByIdResolved(storedSkillId);
368
+ if (!existing) {
369
+ throw new chunk64ITUOXI_cjs.HTTPException(404, { message: `Stored skill with id ${storedSkillId} not found` });
370
+ }
371
+ chunkQZ6UFQ7V_cjs.assertStoredResourceScope(existing, await chunkQZ6UFQ7V_cjs.getStoredResourceScope(mastra, requestContext));
372
+ chunkVX3MJR4P_cjs.assertWriteAccess({
373
+ requestContext,
374
+ resource: "stored-skills",
375
+ resourceId: storedSkillId,
376
+ action: "delete",
377
+ record: existing
378
+ });
379
+ await skillStore.delete(storedSkillId);
380
+ try {
381
+ const favoritesStore = await storage.getStore("favorites");
382
+ await favoritesStore?.deleteFavoritesForEntity({ entityType: "skill", entityId: storedSkillId });
383
+ } catch (cascadeError) {
384
+ mastra.getLogger?.()?.warn?.("Failed to cascade-delete favorites for skill", { storedSkillId, error: cascadeError });
385
+ }
386
+ return {
387
+ success: true,
388
+ message: `Skill ${storedSkillId} deleted successfully`
389
+ };
390
+ } catch (error) {
391
+ return chunkYNSUYESL_cjs.handleError(error, "Error deleting stored skill");
392
+ }
393
+ }
394
+ });
395
+ var PUBLISH_STORED_SKILL_ROUTE = chunkXTFWFQZ7_cjs.createRoute({
396
+ method: "POST",
397
+ path: "/stored/skills/:storedSkillId/publish",
398
+ responseType: "json",
399
+ pathParamSchema: chunkT3C54LPX_cjs.storedSkillIdPathParams,
400
+ bodySchema: chunkT3C54LPX_cjs.publishStoredSkillBodySchema,
401
+ responseSchema: chunkT3C54LPX_cjs.publishStoredSkillResponseSchema,
402
+ summary: "Publish stored skill",
403
+ description: "Snapshots the skill directory from the filesystem into content-addressable blob storage, creates a new version with a tree manifest, and marks the skill as published",
404
+ tags: ["Stored Skills"],
405
+ requiresAuth: true,
406
+ handler: async ({ mastra, requestContext, storedSkillId, skillPath }) => {
407
+ try {
408
+ const storage = mastra.getStorage();
409
+ if (!storage) {
410
+ throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Storage is not configured" });
411
+ }
412
+ const skillStore = await storage.getStore("skills");
413
+ if (!skillStore) {
414
+ throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Skills storage domain is not available" });
415
+ }
416
+ const blobStore = await storage.getStore("blobs");
417
+ if (!blobStore) {
418
+ throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Blob storage domain is not available" });
419
+ }
420
+ const existing = await skillStore.getByIdResolved(storedSkillId);
421
+ if (!existing) {
422
+ throw new chunk64ITUOXI_cjs.HTTPException(404, { message: `Stored skill with id ${storedSkillId} not found` });
423
+ }
424
+ chunkQZ6UFQ7V_cjs.assertStoredResourceScope(existing, await chunkQZ6UFQ7V_cjs.getStoredResourceScope(mastra, requestContext));
425
+ chunkVX3MJR4P_cjs.assertWriteAccess({
426
+ requestContext,
427
+ resource: "stored-skills",
428
+ resourceId: storedSkillId,
429
+ action: "edit",
430
+ record: existing
431
+ });
432
+ const path = await import('path');
433
+ const fs = await import('fs/promises');
434
+ const resolvedPath = path.default.resolve(skillPath);
435
+ const allowedBase = path.default.resolve(process.env.SKILLS_BASE_DIR || process.cwd());
436
+ if (!resolvedPath.startsWith(allowedBase + path.default.sep) && resolvedPath !== allowedBase) {
437
+ throw new chunk64ITUOXI_cjs.HTTPException(400, {
438
+ message: `skillPath must be within the allowed directory: ${allowedBase}`
439
+ });
440
+ }
441
+ try {
442
+ const stat = await fs.stat(resolvedPath);
443
+ if (!stat.isDirectory()) {
444
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `skillPath is not a directory: ${resolvedPath}` });
445
+ }
446
+ } catch (err) {
447
+ if (err instanceof chunk64ITUOXI_cjs.HTTPException) throw err;
448
+ if (err?.code === "ENOENT") {
449
+ throw new chunk64ITUOXI_cjs.HTTPException(400, {
450
+ message: `skillPath does not exist on the server filesystem: ${resolvedPath}. Create the skill directory (with a SKILL.md) before publishing, or use a skill that was materialized to disk.`
451
+ });
452
+ }
453
+ throw err;
454
+ }
455
+ try {
456
+ await fs.stat(path.default.join(resolvedPath, "SKILL.md"));
457
+ } catch (err) {
458
+ if (err?.code === "ENOENT") {
459
+ throw new chunk64ITUOXI_cjs.HTTPException(400, {
460
+ message: `skillPath is missing SKILL.md: ${resolvedPath}`
461
+ });
462
+ }
463
+ throw err;
464
+ }
465
+ const source = new workspace.LocalSkillSource();
466
+ const { publishSkillFromSource } = await import('@mastra/core/workspace');
467
+ const { snapshot, tree, files } = await publishSkillFromSource(source, resolvedPath, blobStore);
468
+ const snapshotUpdate = {};
469
+ for (const [key, value] of Object.entries(snapshot)) {
470
+ if (value !== void 0) snapshotUpdate[key] = value;
471
+ }
472
+ await skillStore.update({
473
+ id: storedSkillId,
474
+ ...snapshotUpdate,
475
+ tree,
476
+ files,
477
+ status: "published"
478
+ });
479
+ const latestVersion = await skillStore.getLatestVersion(storedSkillId);
480
+ if (latestVersion) {
481
+ await skillStore.update({
482
+ id: storedSkillId,
483
+ activeVersionId: latestVersion.id
484
+ });
485
+ }
486
+ const resolved = await skillStore.getByIdResolved(storedSkillId);
487
+ if (!resolved) {
488
+ throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Failed to resolve skill after publish" });
489
+ }
490
+ return resolved;
491
+ } catch (error) {
492
+ return chunkYNSUYESL_cjs.handleError(error, "Error publishing stored skill");
493
+ }
494
+ }
495
+ });
496
+
497
+ exports.CREATE_STORED_SKILL_ROUTE = CREATE_STORED_SKILL_ROUTE;
498
+ exports.DELETE_STORED_SKILL_ROUTE = DELETE_STORED_SKILL_ROUTE;
499
+ exports.GET_STORED_SKILL_ROUTE = GET_STORED_SKILL_ROUTE;
500
+ exports.LIST_STORED_SKILLS_ROUTE = LIST_STORED_SKILLS_ROUTE;
501
+ exports.PUBLISH_STORED_SKILL_ROUTE = PUBLISH_STORED_SKILL_ROUTE;
502
+ exports.UPDATE_STORED_SKILL_ROUTE = UPDATE_STORED_SKILL_ROUTE;
503
+ //# sourceMappingURL=chunk-S77FIEDZ.cjs.map
504
+ //# sourceMappingURL=chunk-S77FIEDZ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/stored-skills.ts"],"names":["createRoute","listStoredSkillsQuerySchema","listStoredSkillsResponseSchema","HTTPException","resolveAuthorFilter","getStoredResourceScope","scopeStoredResourceMetadata","getCallerAuthorId","isBuilderFeatureEnabled","matchesAuthorFilter","annotated","stripFavoriteFields","prepareFavoritesEnrichment","handleError","storedSkillIdPathParams","getStoredSkillResponseSchema","assertStoredResourceScope","assertReadAccess","createStoredSkillBodySchema","createStoredSkillResponseSchema","toSlug","updateStoredSkillBodySchema","updateStoredSkillResponseSchema","assertWriteAccess","deleteStoredSkillResponseSchema","publishStoredSkillBodySchema","publishStoredSkillResponseSchema","LocalSkillSource"],"mappings":"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","file":"chunk-S77FIEDZ.cjs","sourcesContent":["import type { StorageSkillFileNode } from '@mastra/core/storage';\nimport { LocalSkillSource } from '@mastra/core/workspace';\n\nimport { HTTPException } from '../http-exception';\nimport {\n storedSkillIdPathParams,\n listStoredSkillsQuerySchema,\n createStoredSkillBodySchema,\n updateStoredSkillBodySchema,\n publishStoredSkillBodySchema,\n listStoredSkillsResponseSchema,\n getStoredSkillResponseSchema,\n createStoredSkillResponseSchema,\n updateStoredSkillResponseSchema,\n deleteStoredSkillResponseSchema,\n publishStoredSkillResponseSchema,\n} from '../schemas/stored-skills';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { toSlug, assertStoredResourceScope, getStoredResourceScope, scopeStoredResourceMetadata } from '../utils';\n\nimport {\n assertReadAccess,\n assertWriteAccess,\n getCallerAuthorId,\n matchesAuthorFilter,\n resolveAuthorFilter,\n} from './authorship';\nimport { isBuilderFeatureEnabled } from './editor-builder';\nimport { handleError } from './error';\nimport { prepareFavoritesEnrichment, stripFavoriteFields } from './favorites-enrichment';\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\n/**\n * Well-known folder names in the skill file tree whose children represent\n * indexable path arrays (references, scripts, assets).\n */\nconst INDEXED_FOLDERS = ['references', 'scripts', 'assets'] as const;\n\n/**\n * Walks the `files` tree and collects relative file paths for each well-known\n * folder (references, scripts, assets). Returned arrays only include entries\n * that are not already present in any explicitly-provided arrays so callers\n * can pass both `files` and `references` without creating duplicates.\n */\nfunction extractIndexedPathsFromFiles(\n files: StorageSkillFileNode[] | undefined,\n existing: {\n references?: string[];\n scripts?: string[];\n assets?: string[];\n },\n): {\n references?: string[];\n scripts?: string[];\n assets?: string[];\n} {\n if (!files || files.length === 0) return {};\n\n // Find the root folder (first folder node, usually id=\"root\")\n const root = files.find(n => n.type === 'folder');\n if (!root?.children) return {};\n\n const result: Record<string, string[]> = {};\n\n for (const folderName of INDEXED_FOLDERS) {\n const folder = root.children.find(n => n.type === 'folder' && n.name === folderName);\n if (!folder?.children || folder.children.length === 0) continue;\n\n const existingPaths = new Set(existing[folderName] ?? []);\n const paths: string[] = [...existingPaths];\n\n collectFilePaths(folder.children, folderName, existingPaths, paths);\n\n if (paths.length > 0) {\n result[folderName] = paths;\n }\n }\n\n return result;\n}\n\n/** Recursively collects file paths from a subtree, building relative paths. */\nfunction collectFilePaths(\n nodes: StorageSkillFileNode[],\n prefix: string,\n existingPaths: Set<string>,\n out: string[],\n): void {\n for (const node of nodes) {\n if (node.type === 'file') {\n const relativePath = `${prefix}/${node.name}`;\n if (!existingPaths.has(relativePath)) {\n out.push(relativePath);\n }\n } else if (node.type === 'folder' && node.children) {\n collectFilePaths(node.children, `${prefix}/${node.name}`, existingPaths, out);\n }\n }\n}\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /stored/skills - List all stored skills\n */\nexport const LIST_STORED_SKILLS_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/skills',\n responseType: 'json',\n queryParamSchema: listStoredSkillsQuerySchema,\n responseSchema: listStoredSkillsResponseSchema,\n summary: 'List stored skills',\n description: 'Returns a paginated list of all skill configurations stored in the database',\n tags: ['Stored Skills'],\n requiresAuth: true,\n handler: async ({\n mastra,\n requestContext,\n page,\n perPage,\n orderBy,\n status,\n authorId,\n visibility,\n metadata,\n favoritedOnly,\n pinFavoritedFor,\n }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills storage domain is not available' });\n }\n\n const filter = resolveAuthorFilter({\n requestContext,\n resource: 'stored-skills',\n queryAuthorId: authorId,\n queryVisibility: visibility,\n });\n\n const scope = await getStoredResourceScope(mastra, requestContext);\n const scopedMetadata = scopeStoredResourceMetadata(metadata, scope);\n\n const callerId = getCallerAuthorId(requestContext);\n const favoritesEnabled = await isBuilderFeatureEnabled(mastra, 'favorites');\n const honoredStarredOnly = favoritesEnabled && favoritedOnly === true;\n const favoriteSubjectId = pinFavoritedFor ?? callerId;\n\n // `?favoritedOnly=true` flow: fetch caller's favorited IDs, restrict the list\n // to that set, then post-filter by visibility and recompute total/pages.\n if (honoredStarredOnly) {\n const effectivePerPage: number = perPage ?? 100;\n if (!favoriteSubjectId) {\n // Caller cannot have favorited anything without an identity.\n return { skills: [], total: 0, page, perPage: effectivePerPage, hasMore: false };\n }\n const favoritesStore = await storage.getStore('favorites');\n if (!favoritesStore) {\n throw new HTTPException(500, { message: 'Favorites storage domain is not available' });\n }\n const starredIds = await favoritesStore.listFavoritedIds({ userId: favoriteSubjectId, entityType: 'skill' });\n if (starredIds.length === 0) {\n return { skills: [], total: 0, page, perPage: effectivePerPage, hasMore: false };\n }\n const allMatching = await skillStore.listResolved({\n perPage: false,\n orderBy,\n status,\n authorId: filter.kind === 'exact' ? filter.authorId : undefined,\n metadata: scopedMetadata,\n entityIds: starredIds,\n });\n const visible = allMatching.skills.filter(record => matchesAuthorFilter(record, filter));\n const total = visible.length;\n const startIdx = effectivePerPage === 0 ? 0 : page * effectivePerPage;\n const endIdx = effectivePerPage === 0 ? 0 : startIdx + effectivePerPage;\n const sliced = effectivePerPage === 0 ? [] : visible.slice(startIdx, endIdx);\n const annotated = sliced.map(record => ({ ...record, isFavorited: true }));\n const hasMore = effectivePerPage > 0 && endIdx < total;\n return {\n skills: annotated,\n total,\n page,\n perPage: effectivePerPage,\n hasMore,\n };\n }\n\n const result = await skillStore.listResolved({\n page,\n perPage,\n orderBy,\n status,\n authorId: filter.kind === 'exact' ? filter.authorId : undefined,\n metadata: scopedMetadata,\n });\n\n // Post-filter to enforce ownership + visibility rules across all backends.\n // Storage adapters can only do an equality filter on authorId, so we apply\n // the ownedOrPublic / publicOnly logic here.\n // Note: `result.total` / `result.hasMore` reflect the storage-reported\n // count before this post-filter. For `unrestricted` / `exact` filters\n // nothing is removed; for `ownedOrPublic` / `publicOnly`, downstream UIs\n // should treat the filter as a view over the caller's scope — an\n // approximation is OK and preserves pagination math.\n const visibleSkills = result.skills.filter(record => matchesAuthorFilter(record, filter));\n\n if (!favoritesEnabled) {\n return { ...result, skills: visibleSkills.map(stripFavoriteFields) };\n }\n\n const enrichment = await prepareFavoritesEnrichment(\n mastra,\n requestContext,\n 'skill',\n visibleSkills.map(s => s.id),\n );\n const annotated = enrichment\n ? visibleSkills.map(record => ({ ...record, isFavorited: enrichment.starredIds.has(record.id) }))\n : visibleSkills;\n\n return { ...result, skills: annotated };\n } catch (error) {\n return handleError(error, 'Error listing stored skills');\n }\n },\n});\n\n/**\n * GET /stored/skills/:storedSkillId - Get a stored skill by ID\n */\nexport const GET_STORED_SKILL_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/skills/:storedSkillId',\n responseType: 'json',\n pathParamSchema: storedSkillIdPathParams,\n responseSchema: getStoredSkillResponseSchema,\n summary: 'Get stored skill by ID',\n description: 'Returns a specific skill from storage by its unique identifier (resolved with active version config)',\n tags: ['Stored Skills'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, storedSkillId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills storage domain is not available' });\n }\n\n const skill = await skillStore.getByIdResolved(storedSkillId);\n\n if (!skill) {\n throw new HTTPException(404, { message: `Stored skill with id ${storedSkillId} not found` });\n }\n assertStoredResourceScope(skill, await getStoredResourceScope(mastra, requestContext));\n\n assertReadAccess({ requestContext, resource: 'stored-skills', resourceId: storedSkillId, record: skill });\n\n const enrichment = await prepareFavoritesEnrichment(mastra, requestContext, 'skill', [skill.id]);\n if (enrichment) {\n return { ...skill, isFavorited: enrichment.starredIds.has(skill.id) };\n }\n return stripFavoriteFields(skill);\n } catch (error) {\n return handleError(error, 'Error getting stored skill');\n }\n },\n});\n\n/**\n * POST /stored/skills - Create a new stored skill\n */\nexport const CREATE_STORED_SKILL_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/skills',\n responseType: 'json',\n bodySchema: createStoredSkillBodySchema,\n responseSchema: createStoredSkillResponseSchema,\n summary: 'Create stored skill',\n description: 'Creates a new skill configuration in storage with the provided details',\n tags: ['Stored Skills'],\n requiresAuth: true,\n handler: async ({\n mastra,\n requestContext,\n id: providedId,\n name,\n description,\n instructions,\n license,\n compatibility,\n source,\n references,\n scripts,\n assets,\n files,\n metadata,\n visibility: bodyVisibility,\n }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills storage domain is not available' });\n }\n\n // Derive ID from name if not explicitly provided\n const id = providedId || toSlug(name);\n\n if (!id) {\n throw new HTTPException(400, {\n message: 'Could not derive skill ID from name. Please provide an explicit id.',\n });\n }\n\n // Check if skill with this ID already exists\n const existing = await skillStore.getById(id);\n if (existing) {\n throw new HTTPException(409, { message: `Skill with id ${id} already exists` });\n }\n\n // Force authorId from the authenticated caller; ignore any body-provided value.\n // No owner = always public (no auth / no user context).\n // With an owner, respect the client's choice, defaulting to 'private'.\n const authorId = getCallerAuthorId(requestContext) ?? undefined;\n const visibility: 'private' | 'public' = authorId ? (bodyVisibility ?? 'private') : 'public';\n\n // Derive references/scripts/assets path arrays from the files tree\n // so agents can discover them via skill_read even when only `files` is provided.\n const indexedPaths = extractIndexedPathsFromFiles(files, { references, scripts, assets });\n\n await skillStore.create({\n skill: {\n id,\n authorId,\n visibility,\n name,\n description,\n instructions,\n license,\n compatibility,\n source,\n references: indexedPaths.references ?? references,\n scripts: indexedPaths.scripts ?? scripts,\n assets: indexedPaths.assets ?? assets,\n files,\n metadata: scopeStoredResourceMetadata(metadata, await getStoredResourceScope(mastra, requestContext)),\n },\n });\n\n // Return the resolved skill (thin record + version config)\n const resolved = await skillStore.getByIdResolved(id);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve created skill' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error creating stored skill');\n }\n },\n});\n\n/**\n * PATCH /stored/skills/:storedSkillId - Update a stored skill\n */\nexport const UPDATE_STORED_SKILL_ROUTE = createRoute({\n method: 'PATCH',\n path: '/stored/skills/:storedSkillId',\n responseType: 'json',\n pathParamSchema: storedSkillIdPathParams,\n bodySchema: updateStoredSkillBodySchema,\n responseSchema: updateStoredSkillResponseSchema,\n summary: 'Update stored skill',\n description: 'Updates an existing skill in storage with the provided fields',\n tags: ['Stored Skills'],\n requiresAuth: true,\n handler: async ({\n mastra,\n requestContext,\n storedSkillId,\n // Entity-level fields\n authorId,\n visibility,\n // Config fields (snapshot-level)\n name,\n description,\n instructions,\n license,\n compatibility,\n source,\n references,\n scripts,\n assets,\n files,\n metadata,\n }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills storage domain is not available' });\n }\n\n // Check if skill exists. Skill metadata lives on the resolved snapshot.\n const existing = await skillStore.getByIdResolved(storedSkillId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored skill with id ${storedSkillId} not found` });\n }\n const scope = await getStoredResourceScope(mastra, requestContext);\n assertStoredResourceScope(existing, scope);\n\n // Throws 404 if the caller isn't the owner, admin, or `stored-skills:write[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-skills',\n resourceId: storedSkillId,\n action: 'edit',\n record: existing,\n });\n\n // No owner = always public, regardless of what the client sent.\n const callerAuthorId = getCallerAuthorId(requestContext) ?? undefined;\n const resolvedVisibility = callerAuthorId ? visibility : visibility != null ? 'public' : undefined;\n\n // Derive references/scripts/assets path arrays from the files tree\n const indexedPaths = files ? extractIndexedPathsFromFiles(files, { references, scripts, assets }) : {};\n\n // Update the skill with both entity-level and config-level fields.\n // The storage layer handles separating these into record updates vs\n // new-version creation, but it uses `field in updates` to detect config\n // changes — so we must only include fields the caller actually sent.\n // Forwarding `undefined` keys would trigger a spurious version create\n // and pass `undefined` into the database driver.\n const update: Record<string, unknown> = { id: storedSkillId };\n if (authorId !== undefined) update.authorId = authorId;\n if (resolvedVisibility !== undefined) update.visibility = resolvedVisibility;\n if (name !== undefined) update.name = name;\n if (description !== undefined) update.description = description;\n if (instructions !== undefined) update.instructions = instructions;\n if (license !== undefined) update.license = license;\n if (compatibility !== undefined) update.compatibility = compatibility;\n if (source !== undefined) update.source = source;\n const resolvedReferences = indexedPaths.references ?? references;\n const resolvedScripts = indexedPaths.scripts ?? scripts;\n const resolvedAssets = indexedPaths.assets ?? assets;\n if (resolvedReferences !== undefined) update.references = resolvedReferences;\n if (resolvedScripts !== undefined) update.scripts = resolvedScripts;\n if (resolvedAssets !== undefined) update.assets = resolvedAssets;\n if (files !== undefined) update.files = files;\n if (metadata !== undefined) {\n update.metadata = scopeStoredResourceMetadata({ ...(existing.metadata ?? {}), ...metadata }, scope);\n }\n\n await skillStore.update(update as Parameters<typeof skillStore.update>[0]);\n\n // Return the resolved skill with the updated config\n const resolved = await skillStore.getByIdResolved(storedSkillId);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve updated skill' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error updating stored skill');\n }\n },\n});\n\n/**\n * DELETE /stored/skills/:storedSkillId - Delete a stored skill\n */\nexport const DELETE_STORED_SKILL_ROUTE = createRoute({\n method: 'DELETE',\n path: '/stored/skills/:storedSkillId',\n responseType: 'json',\n pathParamSchema: storedSkillIdPathParams,\n responseSchema: deleteStoredSkillResponseSchema,\n summary: 'Delete stored skill',\n description: 'Deletes a skill from storage by its unique identifier',\n tags: ['Stored Skills'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, storedSkillId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills storage domain is not available' });\n }\n\n // Check if skill exists. Skill metadata lives on the resolved snapshot.\n const existing = await skillStore.getByIdResolved(storedSkillId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored skill with id ${storedSkillId} not found` });\n }\n assertStoredResourceScope(existing, await getStoredResourceScope(mastra, requestContext));\n\n // Throws 404 if the caller isn't the owner, admin, or `skills:delete[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-skills',\n resourceId: storedSkillId,\n action: 'delete',\n record: existing,\n });\n\n await skillStore.delete(storedSkillId);\n\n // Cascade: drop any favorite rows referencing this skill. Failure must not\n // abort the delete.\n try {\n const favoritesStore = await storage.getStore('favorites');\n await favoritesStore?.deleteFavoritesForEntity({ entityType: 'skill', entityId: storedSkillId });\n } catch (cascadeError) {\n mastra\n .getLogger?.()\n ?.warn?.('Failed to cascade-delete favorites for skill', { storedSkillId, error: cascadeError });\n }\n\n return {\n success: true,\n message: `Skill ${storedSkillId} deleted successfully`,\n };\n } catch (error) {\n return handleError(error, 'Error deleting stored skill');\n }\n },\n});\n\n/**\n * POST /stored/skills/:storedSkillId/publish - Publish a skill from filesystem\n * Walks the skill directory, hashes files into blob store, creates a new version\n * with the tree manifest, and sets activeVersionId.\n */\nexport const PUBLISH_STORED_SKILL_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/skills/:storedSkillId/publish',\n responseType: 'json',\n pathParamSchema: storedSkillIdPathParams,\n bodySchema: publishStoredSkillBodySchema,\n responseSchema: publishStoredSkillResponseSchema,\n summary: 'Publish stored skill',\n description:\n 'Snapshots the skill directory from the filesystem into content-addressable blob storage, creates a new version with a tree manifest, and marks the skill as published',\n tags: ['Stored Skills'],\n requiresAuth: true,\n handler: async ({ mastra, requestContext, storedSkillId, skillPath }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const skillStore = await storage.getStore('skills');\n if (!skillStore) {\n throw new HTTPException(500, { message: 'Skills storage domain is not available' });\n }\n\n const blobStore = await storage.getStore('blobs');\n if (!blobStore) {\n throw new HTTPException(500, { message: 'Blob storage domain is not available' });\n }\n\n // Verify skill exists. Skill metadata lives on the resolved snapshot.\n const existing = await skillStore.getByIdResolved(storedSkillId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored skill with id ${storedSkillId} not found` });\n }\n assertStoredResourceScope(existing, await getStoredResourceScope(mastra, requestContext));\n\n // Throws 404 if the caller isn't the owner, admin, or `stored-skills:write[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-skills',\n resourceId: storedSkillId,\n action: 'edit',\n record: existing,\n });\n\n // Validate skillPath to prevent path traversal\n const path = await import('node:path');\n const fs = await import('node:fs/promises');\n const resolvedPath = path.default.resolve(skillPath);\n const allowedBase = path.default.resolve(process.env.SKILLS_BASE_DIR || process.cwd());\n if (!resolvedPath.startsWith(allowedBase + path.default.sep) && resolvedPath !== allowedBase) {\n throw new HTTPException(400, {\n message: `skillPath must be within the allowed directory: ${allowedBase}`,\n });\n }\n\n // Verify the source directory exists and contains a SKILL.md before attempting\n // to publish, so callers get a 400 with context instead of a raw 500/ENOENT.\n try {\n const stat = await fs.stat(resolvedPath);\n if (!stat.isDirectory()) {\n throw new HTTPException(400, { message: `skillPath is not a directory: ${resolvedPath}` });\n }\n } catch (err) {\n if (err instanceof HTTPException) throw err;\n if ((err as NodeJS.ErrnoException)?.code === 'ENOENT') {\n throw new HTTPException(400, {\n message: `skillPath does not exist on the server filesystem: ${resolvedPath}. Create the skill directory (with a SKILL.md) before publishing, or use a skill that was materialized to disk.`,\n });\n }\n throw err;\n }\n try {\n await fs.stat(path.default.join(resolvedPath, 'SKILL.md'));\n } catch (err) {\n if ((err as NodeJS.ErrnoException)?.code === 'ENOENT') {\n throw new HTTPException(400, {\n message: `skillPath is missing SKILL.md: ${resolvedPath}`,\n });\n }\n throw err;\n }\n\n // Use LocalSkillSource to read from the server filesystem\n const source = new LocalSkillSource();\n const { publishSkillFromSource } = await import('@mastra/core/workspace');\n\n const { snapshot, tree, files } = await publishSkillFromSource(source, resolvedPath, blobStore);\n\n // Strip undefined keys from the snapshot before passing to update(). The\n // storage layer treats \"field present\" as \"field changed\"; forwarding\n // undefined would overwrite populated columns with undefined and trip\n // NOT NULL / \"undefined cannot be passed as argument\" errors in\n // adapters that bind args raw (libsql, pg).\n const snapshotUpdate: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(snapshot)) {\n if (value !== undefined) snapshotUpdate[key] = value;\n }\n\n // Update the skill with new version data + tree + UI-facing file tree.\n // `files` is the nested folder/file structure shown in the editor; without\n // it the column would stay null and the UI would render an empty tree.\n await skillStore.update({\n id: storedSkillId,\n ...snapshotUpdate,\n tree,\n files,\n status: 'published',\n });\n\n // Point activeVersionId to the newly created version\n const latestVersion = await skillStore.getLatestVersion(storedSkillId);\n if (latestVersion) {\n await skillStore.update({\n id: storedSkillId,\n activeVersionId: latestVersion.id,\n });\n }\n\n const resolved = await skillStore.getByIdResolved(storedSkillId);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve skill after publish' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error publishing stored skill');\n }\n },\n});\n"]}
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod/v4';
2
+
3
+ // src/server/schemas/favorites.ts
4
+ var favoriteToggleResponseSchema = z.object({
5
+ favorited: z.boolean().describe("Whether the entity is currently favorited by the caller"),
6
+ favoriteCount: z.number().int().nonnegative().describe("Total number of users who have favorited this entity")
7
+ });
8
+
9
+ export { favoriteToggleResponseSchema };
10
+ //# sourceMappingURL=chunk-SFPN7SHZ.js.map
11
+ //# sourceMappingURL=chunk-SFPN7SHZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/schemas/favorites.ts"],"names":[],"mappings":";;;AAKO,IAAM,4BAAA,GAA+B,EAAE,MAAA,CAAO;AAAA,EACnD,SAAA,EAAW,CAAA,CAAE,OAAA,EAAQ,CAAE,SAAS,yDAAyD,CAAA;AAAA,EACzF,aAAA,EAAe,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,WAAA,EAAY,CAAE,QAAA,CAAS,sDAAsD;AAC/G,CAAC","file":"chunk-SFPN7SHZ.js","sourcesContent":["import { z } from 'zod/v4';\n\n/**\n * Response body for `PUT|DELETE /stored/{type}/:id/favorite` routes.\n */\nexport const favoriteToggleResponseSchema = z.object({\n favorited: z.boolean().describe('Whether the entity is currently favorited by the caller'),\n favoriteCount: z.number().int().nonnegative().describe('Total number of users who have favorited this entity'),\n});\n"]}
@@ -1,5 +1,5 @@
1
1
  import { listMcpServersResponseSchema, listMcpServersQuerySchema, serverDetailSchema, getMcpServerDetailQuerySchema, mcpServerDetailPathParams, listMcpServerToolsResponseSchema, mcpServerIdPathParams, mcpToolInfoSchema, mcpServerToolPathParams, executeToolResponseSchema, executeToolBodySchema, listResourcesResponseSchema, mcpServerResourcePathParams, readResourceResponseSchema, readResourceBodySchema } from './chunk-356JZOB2.js';
2
- import { createRoute } from './chunk-E53AJNZB.js';
2
+ import { createRoute } from './chunk-F2FAL5CZ.js';
3
3
  import { HTTPException } from './chunk-6QWQZI4Q.js';
4
4
  import { __export } from './chunk-PR4QN5HX.js';
5
5
 
@@ -303,5 +303,5 @@ var MCP_SSE_MESSAGES_ROUTE = createRoute({
303
303
  });
304
304
 
305
305
  export { EXECUTE_MCP_SERVER_TOOL_ROUTE, GET_MCP_SERVER_DETAIL_ROUTE, GET_MCP_SERVER_TOOL_DETAIL_ROUTE, LIST_MCP_SERVERS_ROUTE, LIST_MCP_SERVER_RESOURCES_ROUTE, LIST_MCP_SERVER_TOOLS_ROUTE, MCP_HTTP_TRANSPORT_ROUTE, MCP_SSE_MESSAGES_ROUTE, MCP_SSE_TRANSPORT_ROUTE, READ_MCP_SERVER_RESOURCE_ROUTE, mcp_exports };
306
- //# sourceMappingURL=chunk-LBEQ4EE4.js.map
307
- //# sourceMappingURL=chunk-LBEQ4EE4.js.map
306
+ //# sourceMappingURL=chunk-SPGVPADY.js.map
307
+ //# sourceMappingURL=chunk-SPGVPADY.js.map