@mastra/server 1.38.0-alpha.5 → 1.38.0-alpha.8

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 (274) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/{api-schema-manifest-OSBQZE4D.js → api-schema-manifest-DNC2KIKD.js} +3 -3
  3. package/dist/{api-schema-manifest-OSBQZE4D.js.map → api-schema-manifest-DNC2KIKD.js.map} +1 -1
  4. package/dist/{api-schema-manifest-M5LNZB6W.cjs → api-schema-manifest-E3RU6MLF.cjs} +4 -4
  5. package/dist/{api-schema-manifest-M5LNZB6W.cjs.map → api-schema-manifest-E3RU6MLF.cjs.map} +1 -1
  6. package/dist/{chunk-CVWSJF4P.cjs → chunk-2TM4EPMU.cjs} +10 -10
  7. package/dist/{chunk-CVWSJF4P.cjs.map → chunk-2TM4EPMU.cjs.map} +1 -1
  8. package/dist/{chunk-3X74T3P7.cjs → chunk-3CPWBXXK.cjs} +28 -28
  9. package/dist/{chunk-3X74T3P7.cjs.map → chunk-3CPWBXXK.cjs.map} +1 -1
  10. package/dist/{chunk-AFNQIYGU.cjs → chunk-3LUN33E7.cjs} +19 -19
  11. package/dist/{chunk-AFNQIYGU.cjs.map → chunk-3LUN33E7.cjs.map} +1 -1
  12. package/dist/{chunk-JGADJAZH.js → chunk-4APV4ZWP.js} +3 -3
  13. package/dist/{chunk-JGADJAZH.js.map → chunk-4APV4ZWP.js.map} +1 -1
  14. package/dist/{chunk-MTFF2YS5.cjs → chunk-4DGDQWQQ.cjs} +8 -8
  15. package/dist/{chunk-MTFF2YS5.cjs.map → chunk-4DGDQWQQ.cjs.map} +1 -1
  16. package/dist/{chunk-AAU6UVJA.js → chunk-4DVNH3KJ.js} +5 -5
  17. package/dist/{chunk-AAU6UVJA.js.map → chunk-4DVNH3KJ.js.map} +1 -1
  18. package/dist/{chunk-MU5XYKOI.js → chunk-4T6DC425.js} +4 -4
  19. package/dist/{chunk-MU5XYKOI.js.map → chunk-4T6DC425.js.map} +1 -1
  20. package/dist/{chunk-Z3TZ2Z34.js → chunk-4V2VNFVM.js} +3 -3
  21. package/dist/{chunk-Z3TZ2Z34.js.map → chunk-4V2VNFVM.js.map} +1 -1
  22. package/dist/{chunk-IKDK3Q2A.js → chunk-56F2IRK3.js} +4 -4
  23. package/dist/{chunk-IKDK3Q2A.js.map → chunk-56F2IRK3.js.map} +1 -1
  24. package/dist/{chunk-5RHJCZ4D.js → chunk-5SK4SJJH.js} +3 -3
  25. package/dist/{chunk-5RHJCZ4D.js.map → chunk-5SK4SJJH.js.map} +1 -1
  26. package/dist/{chunk-EESKD5BC.js → chunk-65NVES6T.js} +3 -3
  27. package/dist/{chunk-EESKD5BC.js.map → chunk-65NVES6T.js.map} +1 -1
  28. package/dist/{chunk-OSQG52VD.cjs → chunk-6MMXLHED.cjs} +42 -42
  29. package/dist/{chunk-OSQG52VD.cjs.map → chunk-6MMXLHED.cjs.map} +1 -1
  30. package/dist/{chunk-AWWFF4BH.cjs → chunk-6XSS54BL.cjs} +34 -34
  31. package/dist/{chunk-AWWFF4BH.cjs.map → chunk-6XSS54BL.cjs.map} +1 -1
  32. package/dist/{chunk-S3FJKEF5.js → chunk-7GOHECZP.js} +3 -3
  33. package/dist/{chunk-S3FJKEF5.js.map → chunk-7GOHECZP.js.map} +1 -1
  34. package/dist/{chunk-TFAJYRT3.js → chunk-7OSWGIVM.js} +3 -3
  35. package/dist/{chunk-TFAJYRT3.js.map → chunk-7OSWGIVM.js.map} +1 -1
  36. package/dist/{chunk-RJ5ZIUGX.js → chunk-7ZWJX3AN.js} +7 -3
  37. package/dist/chunk-7ZWJX3AN.js.map +1 -0
  38. package/dist/{chunk-3AAQTZ7E.js → chunk-A4PMW64L.js} +3 -3
  39. package/dist/{chunk-3AAQTZ7E.js.map → chunk-A4PMW64L.js.map} +1 -1
  40. package/dist/{chunk-GS6MWMFA.cjs → chunk-AC7GMUBN.cjs} +8 -8
  41. package/dist/{chunk-GS6MWMFA.cjs.map → chunk-AC7GMUBN.cjs.map} +1 -1
  42. package/dist/{chunk-YX73TS6P.js → chunk-APFBOAS4.js} +5 -4
  43. package/dist/chunk-APFBOAS4.js.map +1 -0
  44. package/dist/{chunk-USUWP563.cjs → chunk-AT5ZCHIV.cjs} +5 -5
  45. package/dist/{chunk-USUWP563.cjs.map → chunk-AT5ZCHIV.cjs.map} +1 -1
  46. package/dist/{chunk-ZYPYYEM2.cjs → chunk-AUO32DAZ.cjs} +10 -10
  47. package/dist/{chunk-ZYPYYEM2.cjs.map → chunk-AUO32DAZ.cjs.map} +1 -1
  48. package/dist/{chunk-7K5JYB7U.js → chunk-AV6CVKHQ.js} +5 -5
  49. package/dist/{chunk-7K5JYB7U.js.map → chunk-AV6CVKHQ.js.map} +1 -1
  50. package/dist/{chunk-BDYSW764.cjs → chunk-BHAAMXKQ.cjs} +19 -19
  51. package/dist/{chunk-BDYSW764.cjs.map → chunk-BHAAMXKQ.cjs.map} +1 -1
  52. package/dist/{chunk-OMUSGHI5.js → chunk-BKYFKSJI.js} +3 -3
  53. package/dist/{chunk-OMUSGHI5.js.map → chunk-BKYFKSJI.js.map} +1 -1
  54. package/dist/{chunk-HLXSMXGN.js → chunk-BSHJ4HUN.js} +3 -3
  55. package/dist/{chunk-HLXSMXGN.js.map → chunk-BSHJ4HUN.js.map} +1 -1
  56. package/dist/{chunk-QF5MCGQH.cjs → chunk-C7I2QUNB.cjs} +8 -8
  57. package/dist/{chunk-QF5MCGQH.cjs.map → chunk-C7I2QUNB.cjs.map} +1 -1
  58. package/dist/{chunk-C2HD3ATG.js → chunk-C7SZPANJ.js} +4 -4
  59. package/dist/{chunk-C2HD3ATG.js.map → chunk-C7SZPANJ.js.map} +1 -1
  60. package/dist/{chunk-HARB3PEO.cjs → chunk-CJMJQR2K.cjs} +9 -9
  61. package/dist/{chunk-HARB3PEO.cjs.map → chunk-CJMJQR2K.cjs.map} +1 -1
  62. package/dist/{chunk-NN3PXFMG.js → chunk-CZ7S47XN.js} +4 -4
  63. package/dist/{chunk-NN3PXFMG.js.map → chunk-CZ7S47XN.js.map} +1 -1
  64. package/dist/{chunk-UUDPQDYF.cjs → chunk-DNKTFFOV.cjs} +8 -8
  65. package/dist/{chunk-UUDPQDYF.cjs.map → chunk-DNKTFFOV.cjs.map} +1 -1
  66. package/dist/{chunk-NQEP6UT5.js → chunk-DRXZDKLU.js} +3 -3
  67. package/dist/{chunk-NQEP6UT5.js.map → chunk-DRXZDKLU.js.map} +1 -1
  68. package/dist/{chunk-ESWNWJOF.cjs → chunk-F27R55RI.cjs} +9 -9
  69. package/dist/{chunk-ESWNWJOF.cjs.map → chunk-F27R55RI.cjs.map} +1 -1
  70. package/dist/{chunk-M56TT27J.cjs → chunk-FDSM4QTH.cjs} +9 -8
  71. package/dist/chunk-FDSM4QTH.cjs.map +1 -0
  72. package/dist/{chunk-56IL637L.cjs → chunk-FPKJAWB4.cjs} +7 -7
  73. package/dist/{chunk-56IL637L.cjs.map → chunk-FPKJAWB4.cjs.map} +1 -1
  74. package/dist/{chunk-4E5KGAY3.js → chunk-FSSG5YQJ.js} +3 -3
  75. package/dist/{chunk-4E5KGAY3.js.map → chunk-FSSG5YQJ.js.map} +1 -1
  76. package/dist/{chunk-VTQOAV2C.cjs → chunk-GPAQ47NG.cjs} +27 -19
  77. package/dist/chunk-GPAQ47NG.cjs.map +1 -0
  78. package/dist/{chunk-NTXOTHB5.js → chunk-HEXNQMST.js} +3 -3
  79. package/dist/{chunk-NTXOTHB5.js.map → chunk-HEXNQMST.js.map} +1 -1
  80. package/dist/{chunk-JS263Z2W.cjs → chunk-HX5BGP6D.cjs} +23 -23
  81. package/dist/{chunk-JS263Z2W.cjs.map → chunk-HX5BGP6D.cjs.map} +1 -1
  82. package/dist/{chunk-3NQHD75J.js → chunk-IJFPP2XB.js} +5 -5
  83. package/dist/{chunk-3NQHD75J.js.map → chunk-IJFPP2XB.js.map} +1 -1
  84. package/dist/{chunk-TRUKR5IR.cjs → chunk-K5ANQB3I.cjs} +8 -8
  85. package/dist/{chunk-TRUKR5IR.cjs.map → chunk-K5ANQB3I.cjs.map} +1 -1
  86. package/dist/{chunk-TUIZTMGY.js → chunk-KSZXXQHZ.js} +4 -4
  87. package/dist/{chunk-TUIZTMGY.js.map → chunk-KSZXXQHZ.js.map} +1 -1
  88. package/dist/chunk-L33BLLID.cjs +693 -0
  89. package/dist/chunk-L33BLLID.cjs.map +1 -0
  90. package/dist/{chunk-GTCQB7MH.js → chunk-MLPBZURS.js} +3 -3
  91. package/dist/{chunk-GTCQB7MH.js.map → chunk-MLPBZURS.js.map} +1 -1
  92. package/dist/{chunk-XTZIOA6R.cjs → chunk-N2VPPQLD.cjs} +6 -6
  93. package/dist/{chunk-XTZIOA6R.cjs.map → chunk-N2VPPQLD.cjs.map} +1 -1
  94. package/dist/{chunk-KOU4JKTW.cjs → chunk-NLIGVLFF.cjs} +4 -4
  95. package/dist/{chunk-KOU4JKTW.cjs.map → chunk-NLIGVLFF.cjs.map} +1 -1
  96. package/dist/{chunk-UNSBVIVX.cjs → chunk-NSXV3FWO.cjs} +10 -10
  97. package/dist/{chunk-UNSBVIVX.cjs.map → chunk-NSXV3FWO.cjs.map} +1 -1
  98. package/dist/{chunk-IZZRKJQK.cjs → chunk-ODIMB6T6.cjs} +7 -7
  99. package/dist/{chunk-IZZRKJQK.cjs.map → chunk-ODIMB6T6.cjs.map} +1 -1
  100. package/dist/{chunk-WYGD4ZMU.js → chunk-OHPJKAQ6.js} +3 -3
  101. package/dist/{chunk-WYGD4ZMU.js.map → chunk-OHPJKAQ6.js.map} +1 -1
  102. package/dist/{chunk-Q2GIORD4.cjs → chunk-P7FVOCQB.cjs} +9 -9
  103. package/dist/{chunk-Q2GIORD4.cjs.map → chunk-P7FVOCQB.cjs.map} +1 -1
  104. package/dist/{chunk-6WP3XK7P.cjs → chunk-QH3IFRYL.cjs} +8 -8
  105. package/dist/{chunk-6WP3XK7P.cjs.map → chunk-QH3IFRYL.cjs.map} +1 -1
  106. package/dist/{chunk-B7BEYL4D.js → chunk-QM3NYDZZ.js} +114 -7
  107. package/dist/chunk-QM3NYDZZ.js.map +1 -0
  108. package/dist/{chunk-OPS3GWJN.js → chunk-QRIHD5UO.js} +6 -6
  109. package/dist/{chunk-OPS3GWJN.js.map → chunk-QRIHD5UO.js.map} +1 -1
  110. package/dist/{chunk-W3NKJMCD.cjs → chunk-R2CBBOZ4.cjs} +5 -5
  111. package/dist/{chunk-W3NKJMCD.cjs.map → chunk-R2CBBOZ4.cjs.map} +1 -1
  112. package/dist/{chunk-3MTM5V2U.js → chunk-R3UMBVUI.js} +3 -3
  113. package/dist/{chunk-3MTM5V2U.js.map → chunk-R3UMBVUI.js.map} +1 -1
  114. package/dist/{chunk-GX5H6RBX.js → chunk-R6NHDZOY.js} +3 -3
  115. package/dist/{chunk-GX5H6RBX.js.map → chunk-R6NHDZOY.js.map} +1 -1
  116. package/dist/{chunk-QYPJXCL6.js → chunk-RBONVWGZ.js} +11 -3
  117. package/dist/chunk-RBONVWGZ.js.map +1 -0
  118. package/dist/{chunk-YBXJMN7O.cjs → chunk-RTYOFB6W.cjs} +23 -2
  119. package/dist/chunk-RTYOFB6W.cjs.map +1 -0
  120. package/dist/{chunk-SJ27XRQ3.js → chunk-RULES2JK.js} +3 -3
  121. package/dist/{chunk-SJ27XRQ3.js.map → chunk-RULES2JK.js.map} +1 -1
  122. package/dist/{chunk-RTM2LDYY.js → chunk-RXT5WOCU.js} +3 -3
  123. package/dist/{chunk-RTM2LDYY.js.map → chunk-RXT5WOCU.js.map} +1 -1
  124. package/dist/{chunk-3KDY4WRR.js → chunk-RZL2PIA2.js} +3 -3
  125. package/dist/{chunk-3KDY4WRR.js.map → chunk-RZL2PIA2.js.map} +1 -1
  126. package/dist/{chunk-UZLWBQEU.cjs → chunk-SDBN3DIS.cjs} +43 -43
  127. package/dist/{chunk-UZLWBQEU.cjs.map → chunk-SDBN3DIS.cjs.map} +1 -1
  128. package/dist/{chunk-L5NNYUOJ.js → chunk-T6IXA4ZQ.js} +4 -4
  129. package/dist/{chunk-L5NNYUOJ.js.map → chunk-T6IXA4ZQ.js.map} +1 -1
  130. package/dist/{chunk-PZJ3AQSO.js → chunk-UFYCA27U.js} +20 -3
  131. package/dist/chunk-UFYCA27U.js.map +1 -0
  132. package/dist/{chunk-BCOYXSY2.cjs → chunk-UIVHXCOY.cjs} +16 -16
  133. package/dist/{chunk-BCOYXSY2.cjs.map → chunk-UIVHXCOY.cjs.map} +1 -1
  134. package/dist/{chunk-437FDAUG.cjs → chunk-URW7EH4T.cjs} +18 -18
  135. package/dist/{chunk-437FDAUG.cjs.map → chunk-URW7EH4T.cjs.map} +1 -1
  136. package/dist/{chunk-JCE67TCD.cjs → chunk-V57FPA4V.cjs} +8 -8
  137. package/dist/{chunk-JCE67TCD.cjs.map → chunk-V57FPA4V.cjs.map} +1 -1
  138. package/dist/{chunk-THPO2LIB.cjs → chunk-VBQKBXAI.cjs} +10 -10
  139. package/dist/{chunk-THPO2LIB.cjs.map → chunk-VBQKBXAI.cjs.map} +1 -1
  140. package/dist/{chunk-HGN36EQS.cjs → chunk-VH6QCEN7.cjs} +237 -128
  141. package/dist/chunk-VH6QCEN7.cjs.map +1 -0
  142. package/dist/{chunk-HRMRQFJW.js → chunk-WADS7CD7.js} +4 -4
  143. package/dist/{chunk-HRMRQFJW.js.map → chunk-WADS7CD7.js.map} +1 -1
  144. package/dist/{chunk-6A4EEIXX.cjs → chunk-WZ6R4WZT.cjs} +4 -4
  145. package/dist/{chunk-6A4EEIXX.cjs.map → chunk-WZ6R4WZT.cjs.map} +1 -1
  146. package/dist/{chunk-6E5HDZRB.js → chunk-XB6H6LOM.js} +4 -4
  147. package/dist/{chunk-6E5HDZRB.js.map → chunk-XB6H6LOM.js.map} +1 -1
  148. package/dist/{chunk-6YVC5NUR.cjs → chunk-XDOMY4VL.cjs} +8 -8
  149. package/dist/{chunk-6YVC5NUR.cjs.map → chunk-XDOMY4VL.cjs.map} +1 -1
  150. package/dist/{chunk-LW3QBZHN.js → chunk-YW252K6H.js} +39 -37
  151. package/dist/chunk-YW252K6H.js.map +1 -0
  152. package/dist/{chunk-XKE4GK7M.js → chunk-Z2ZMHHQW.js} +4 -4
  153. package/dist/{chunk-XKE4GK7M.js.map → chunk-Z2ZMHHQW.js.map} +1 -1
  154. package/dist/{chunk-STZTV4FB.cjs → chunk-Z7LCIYK7.cjs} +8 -4
  155. package/dist/chunk-Z7LCIYK7.cjs.map +1 -0
  156. package/dist/{chunk-2566PIF5.cjs → chunk-ZAWZ2BWD.cjs} +6 -6
  157. package/dist/{chunk-2566PIF5.cjs.map → chunk-ZAWZ2BWD.cjs.map} +1 -1
  158. package/dist/{chunk-R657EJZD.js → chunk-ZN3JHWNH.js} +3 -3
  159. package/dist/{chunk-R657EJZD.js.map → chunk-ZN3JHWNH.js.map} +1 -1
  160. package/dist/{chunk-2XLWAZII.cjs → chunk-ZNMKBPTN.cjs} +10 -10
  161. package/dist/{chunk-2XLWAZII.cjs.map → chunk-ZNMKBPTN.cjs.map} +1 -1
  162. package/dist/{dist-DXM2X3EL.js → dist-HIWM6H43.js} +2 -2
  163. package/dist/{dist-DXM2X3EL.js.map → dist-HIWM6H43.js.map} +1 -1
  164. package/dist/{dist-4BOOO3JV.cjs → dist-LZYJXHUM.cjs} +2 -2
  165. package/dist/{dist-4BOOO3JV.cjs.map → dist-LZYJXHUM.cjs.map} +1 -1
  166. package/dist/docs/SKILL.md +1 -1
  167. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  168. package/dist/docs/references/docs-agents-a2a.md +1 -1
  169. package/dist/docs/references/reference-server-routes.md +40 -13
  170. package/dist/server/handlers/a2a.cjs +14 -14
  171. package/dist/server/handlers/a2a.js +1 -1
  172. package/dist/server/handlers/agent-builder.cjs +17 -17
  173. package/dist/server/handlers/agent-builder.js +1 -1
  174. package/dist/server/handlers/agent-versions.cjs +8 -8
  175. package/dist/server/handlers/agent-versions.js +1 -1
  176. package/dist/server/handlers/agents.cjs +51 -43
  177. package/dist/server/handlers/agents.d.ts +42 -0
  178. package/dist/server/handlers/agents.d.ts.map +1 -1
  179. package/dist/server/handlers/agents.js +1 -1
  180. package/dist/server/handlers/auth.cjs +12 -12
  181. package/dist/server/handlers/auth.js +1 -1
  182. package/dist/server/handlers/builder-registry.cjs +6 -6
  183. package/dist/server/handlers/builder-registry.js +1 -1
  184. package/dist/server/handlers/channels.cjs +5 -5
  185. package/dist/server/handlers/channels.js +1 -1
  186. package/dist/server/handlers/conversations.cjs +5 -5
  187. package/dist/server/handlers/conversations.js +1 -1
  188. package/dist/server/handlers/datasets.cjs +26 -26
  189. package/dist/server/handlers/datasets.js +1 -1
  190. package/dist/server/handlers/editor-builder.cjs +5 -5
  191. package/dist/server/handlers/editor-builder.d.ts.map +1 -1
  192. package/dist/server/handlers/editor-builder.js +1 -1
  193. package/dist/server/handlers/error.cjs +4 -4
  194. package/dist/server/handlers/error.d.ts.map +1 -1
  195. package/dist/server/handlers/error.js +1 -1
  196. package/dist/server/handlers/favorites-enrichment.cjs +4 -4
  197. package/dist/server/handlers/favorites-enrichment.js +1 -1
  198. package/dist/server/handlers/logs.cjs +4 -4
  199. package/dist/server/handlers/logs.js +1 -1
  200. package/dist/server/handlers/mcp-client-versions.cjs +8 -8
  201. package/dist/server/handlers/mcp-client-versions.js +1 -1
  202. package/dist/server/handlers/memory.cjs +27 -27
  203. package/dist/server/handlers/memory.d.ts.map +1 -1
  204. package/dist/server/handlers/memory.js +1 -1
  205. package/dist/server/handlers/observability-new-endpoints.cjs +29 -29
  206. package/dist/server/handlers/observability-new-endpoints.js +1 -1
  207. package/dist/server/handlers/observability.cjs +40 -40
  208. package/dist/server/handlers/observability.js +2 -2
  209. package/dist/server/handlers/processor-providers.cjs +3 -3
  210. package/dist/server/handlers/processor-providers.js +1 -1
  211. package/dist/server/handlers/processors.cjs +4 -4
  212. package/dist/server/handlers/processors.js +1 -1
  213. package/dist/server/handlers/prompt-block-versions.cjs +8 -8
  214. package/dist/server/handlers/prompt-block-versions.js +1 -1
  215. package/dist/server/handlers/responses.cjs +4 -4
  216. package/dist/server/handlers/responses.js +1 -1
  217. package/dist/server/handlers/scorer-versions.cjs +8 -8
  218. package/dist/server/handlers/scorer-versions.js +1 -1
  219. package/dist/server/handlers/scores.cjs +7 -7
  220. package/dist/server/handlers/scores.js +1 -1
  221. package/dist/server/handlers/stored-agent-favorites.cjs +3 -3
  222. package/dist/server/handlers/stored-agent-favorites.js +1 -1
  223. package/dist/server/handlers/stored-agents.cjs +8 -8
  224. package/dist/server/handlers/stored-agents.js +1 -1
  225. package/dist/server/handlers/stored-mcp-clients.cjs +6 -6
  226. package/dist/server/handlers/stored-mcp-clients.js +1 -1
  227. package/dist/server/handlers/stored-prompt-blocks.cjs +6 -6
  228. package/dist/server/handlers/stored-prompt-blocks.js +1 -1
  229. package/dist/server/handlers/stored-scorers.cjs +6 -6
  230. package/dist/server/handlers/stored-scorers.js +1 -1
  231. package/dist/server/handlers/stored-skill-favorites.cjs +3 -3
  232. package/dist/server/handlers/stored-skill-favorites.js +1 -1
  233. package/dist/server/handlers/stored-skills.cjs +7 -7
  234. package/dist/server/handlers/stored-skills.js +1 -1
  235. package/dist/server/handlers/stored-workspaces.cjs +6 -6
  236. package/dist/server/handlers/stored-workspaces.js +1 -1
  237. package/dist/server/handlers/system.cjs +3 -3
  238. package/dist/server/handlers/system.js +1 -1
  239. package/dist/server/handlers/tool-providers.cjs +14 -14
  240. package/dist/server/handlers/tool-providers.js +1 -1
  241. package/dist/server/handlers/tools.cjs +6 -6
  242. package/dist/server/handlers/tools.js +1 -1
  243. package/dist/server/handlers/vector.cjs +16 -16
  244. package/dist/server/handlers/vector.js +1 -1
  245. package/dist/server/handlers/workflows.cjs +27 -27
  246. package/dist/server/handlers/workflows.js +1 -1
  247. package/dist/server/handlers/workspace.cjs +26 -26
  248. package/dist/server/handlers/workspace.js +1 -1
  249. package/dist/server/handlers.cjs +29 -29
  250. package/dist/server/handlers.js +14 -14
  251. package/dist/server/schemas/agents.d.ts +20 -0
  252. package/dist/server/schemas/agents.d.ts.map +1 -1
  253. package/dist/server/schemas/index.cjs +60 -44
  254. package/dist/server/schemas/index.js +1 -1
  255. package/dist/server/server-adapter/index.cjs +16 -16
  256. package/dist/server/server-adapter/index.js +4 -4
  257. package/dist/server/server-adapter/routes/agents.d.ts +3 -1
  258. package/dist/server/server-adapter/routes/agents.d.ts.map +1 -1
  259. package/dist/server/utils/resolve-builder-model-policy.d.ts +6 -0
  260. package/dist/server/utils/resolve-builder-model-policy.d.ts.map +1 -1
  261. package/package.json +6 -6
  262. package/dist/chunk-B7BEYL4D.js.map +0 -1
  263. package/dist/chunk-GTF3WRLL.cjs +0 -691
  264. package/dist/chunk-GTF3WRLL.cjs.map +0 -1
  265. package/dist/chunk-HGN36EQS.cjs.map +0 -1
  266. package/dist/chunk-LW3QBZHN.js.map +0 -1
  267. package/dist/chunk-M56TT27J.cjs.map +0 -1
  268. package/dist/chunk-PZJ3AQSO.js.map +0 -1
  269. package/dist/chunk-QYPJXCL6.js.map +0 -1
  270. package/dist/chunk-RJ5ZIUGX.js.map +0 -1
  271. package/dist/chunk-STZTV4FB.cjs.map +0 -1
  272. package/dist/chunk-VTQOAV2C.cjs.map +0 -1
  273. package/dist/chunk-YBXJMN7O.cjs.map +0 -1
  274. package/dist/chunk-YX73TS6P.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/handlers/stored-mcp-clients.ts"],"names":[],"mappings":"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","file":"chunk-3AAQTZ7E.js","sourcesContent":["import { HTTPException } from '../http-exception';\nimport {\n storedMCPClientIdPathParams,\n statusQuerySchema,\n listStoredMCPClientsQuerySchema,\n createStoredMCPClientBodySchema,\n updateStoredMCPClientBodySchema,\n listStoredMCPClientsResponseSchema,\n getStoredMCPClientResponseSchema,\n createStoredMCPClientResponseSchema,\n updateStoredMCPClientResponseSchema,\n deleteStoredMCPClientResponseSchema,\n} from '../schemas/stored-mcp-clients';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { assertStoredResourceScope, getStoredResourceScope, scopeStoredResourceMetadata, toSlug } from '../utils';\n\nimport { handleError } from './error';\nimport { handleAutoVersioning, MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS } from './version-helpers';\nimport type { VersionedStoreInterface } from './version-helpers';\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /stored/mcp-clients - List all stored MCP clients\n */\nexport const LIST_STORED_MCP_CLIENTS_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/mcp-clients',\n responseType: 'json',\n queryParamSchema: listStoredMCPClientsQuerySchema,\n responseSchema: listStoredMCPClientsResponseSchema,\n summary: 'List stored MCP clients',\n description: 'Returns a paginated list of all MCP client configurations stored in the database',\n tags: ['Stored MCP Clients'],\n requiresAuth: true,\n handler: async ({ mastra, page, perPage, orderBy, status, authorId, metadata, requestContext }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n const scope = await getStoredResourceScope(mastra, requestContext);\n const result = await mcpClientStore.listResolved({\n page,\n perPage,\n orderBy,\n status,\n authorId,\n metadata: scopeStoredResourceMetadata(metadata, scope),\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error listing stored MCP clients');\n }\n },\n});\n\n/**\n * GET /stored/mcp-clients/:storedMCPClientId - Get a stored MCP client by ID\n */\nexport const GET_STORED_MCP_CLIENT_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/mcp-clients/:storedMCPClientId',\n responseType: 'json',\n pathParamSchema: storedMCPClientIdPathParams,\n queryParamSchema: statusQuerySchema,\n responseSchema: getStoredMCPClientResponseSchema,\n summary: 'Get stored MCP client by ID',\n description:\n 'Returns a specific MCP client from storage by its unique identifier. Use ?status=draft to resolve with the latest (draft) version, or ?status=published (default) for the active published version.',\n tags: ['Stored MCP Clients'],\n requiresAuth: true,\n handler: async ({ mastra, storedMCPClientId, status, requestContext }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n const mcpClient = await mcpClientStore.getByIdResolved(storedMCPClientId, { status });\n\n if (!mcpClient) {\n throw new HTTPException(404, { message: `Stored MCP client with id ${storedMCPClientId} not found` });\n }\n assertStoredResourceScope(mcpClient, await getStoredResourceScope(mastra, requestContext));\n\n return mcpClient;\n } catch (error) {\n return handleError(error, 'Error getting stored MCP client');\n }\n },\n});\n\n/**\n * POST /stored/mcp-clients - Create a new stored MCP client\n */\nexport const CREATE_STORED_MCP_CLIENT_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/mcp-clients',\n responseType: 'json',\n bodySchema: createStoredMCPClientBodySchema,\n responseSchema: createStoredMCPClientResponseSchema,\n summary: 'Create stored MCP client',\n description: 'Creates a new MCP client configuration in storage with the provided servers',\n tags: ['Stored MCP Clients'],\n requiresAuth: true,\n handler: async ({ mastra, id: providedId, authorId, metadata, name, description, servers, requestContext }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n // 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 MCP client ID from name. Please provide an explicit id.',\n });\n }\n\n // Check if MCP client with this ID already exists\n const existing = await mcpClientStore.getById(id);\n if (existing) {\n throw new HTTPException(409, { message: `MCP client with id ${id} already exists` });\n }\n\n await mcpClientStore.create({\n mcpClient: {\n id,\n authorId,\n metadata: scopeStoredResourceMetadata(metadata, await getStoredResourceScope(mastra, requestContext)),\n name,\n description,\n servers,\n },\n });\n\n // Return the resolved MCP client (thin record + version config)\n // Use draft status since newly created entities start as drafts\n const resolved = await mcpClientStore.getByIdResolved(id, { status: 'draft' });\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve created MCP client' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error creating stored MCP client');\n }\n },\n});\n\n/**\n * PATCH /stored/mcp-clients/:storedMCPClientId - Update a stored MCP client\n */\nexport const UPDATE_STORED_MCP_CLIENT_ROUTE = createRoute({\n method: 'PATCH',\n path: '/stored/mcp-clients/:storedMCPClientId',\n responseType: 'json',\n pathParamSchema: storedMCPClientIdPathParams,\n bodySchema: updateStoredMCPClientBodySchema,\n responseSchema: updateStoredMCPClientResponseSchema,\n summary: 'Update stored MCP client',\n description: 'Updates an existing MCP client in storage with the provided fields',\n tags: ['Stored MCP Clients'],\n requiresAuth: true,\n handler: async ({\n mastra,\n storedMCPClientId,\n // Metadata-level fields\n authorId,\n metadata,\n requestContext,\n // Config fields (snapshot-level)\n name,\n description,\n servers,\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 mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n // Check if MCP client exists\n const existing = await mcpClientStore.getById(storedMCPClientId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored MCP client with id ${storedMCPClientId} not found` });\n }\n const scope = await getStoredResourceScope(mastra, requestContext);\n assertStoredResourceScope(existing, scope);\n const scopedMetadata =\n metadata !== undefined\n ? scopeStoredResourceMetadata({ ...(existing.metadata ?? {}), ...metadata }, scope)\n : undefined;\n\n // Update the MCP client with both metadata-level and config-level fields\n const updatedMCPClient = await mcpClientStore.update({\n id: storedMCPClientId,\n authorId,\n ...(scopedMetadata !== undefined ? { metadata: scopedMetadata } : {}),\n name,\n description,\n servers,\n });\n\n // Build the snapshot config for auto-versioning comparison\n const configFields = { name, description, servers };\n\n // Filter out undefined values to get only the config fields that were provided\n const providedConfigFields = Object.fromEntries(Object.entries(configFields).filter(([_, v]) => v !== undefined));\n\n // Handle auto-versioning with retry logic for race conditions\n // This creates a new version if there are meaningful config changes.\n // It does NOT update activeVersionId — the version stays as a draft until explicitly published.\n await handleAutoVersioning(\n mcpClientStore as unknown as VersionedStoreInterface,\n storedMCPClientId,\n 'mcpClientId',\n MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS,\n existing,\n updatedMCPClient,\n providedConfigFields,\n );\n\n // Return the resolved MCP client with the latest (draft) version so the UI sees its edits\n const resolved = await mcpClientStore.getByIdResolved(storedMCPClientId, { status: 'draft' });\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve updated MCP client' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error updating stored MCP client');\n }\n },\n});\n\n/**\n * DELETE /stored/mcp-clients/:storedMCPClientId - Delete a stored MCP client\n */\nexport const DELETE_STORED_MCP_CLIENT_ROUTE = createRoute({\n method: 'DELETE',\n path: '/stored/mcp-clients/:storedMCPClientId',\n responseType: 'json',\n pathParamSchema: storedMCPClientIdPathParams,\n responseSchema: deleteStoredMCPClientResponseSchema,\n summary: 'Delete stored MCP client',\n description: 'Deletes an MCP client from storage by its unique identifier',\n tags: ['Stored MCP Clients'],\n requiresAuth: true,\n handler: async ({ mastra, storedMCPClientId, requestContext }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n // Check if MCP client exists\n const existing = await mcpClientStore.getById(storedMCPClientId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored MCP client with id ${storedMCPClientId} not found` });\n }\n assertStoredResourceScope(existing, await getStoredResourceScope(mastra, requestContext));\n\n await mcpClientStore.delete(storedMCPClientId);\n\n return {\n success: true,\n message: `MCP client ${storedMCPClientId} deleted successfully`,\n };\n } catch (error) {\n return handleError(error, 'Error deleting stored MCP client');\n }\n },\n});\n"]}
1
+ {"version":3,"sources":["../src/server/handlers/stored-mcp-clients.ts"],"names":[],"mappings":"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","file":"chunk-A4PMW64L.js","sourcesContent":["import { HTTPException } from '../http-exception';\nimport {\n storedMCPClientIdPathParams,\n statusQuerySchema,\n listStoredMCPClientsQuerySchema,\n createStoredMCPClientBodySchema,\n updateStoredMCPClientBodySchema,\n listStoredMCPClientsResponseSchema,\n getStoredMCPClientResponseSchema,\n createStoredMCPClientResponseSchema,\n updateStoredMCPClientResponseSchema,\n deleteStoredMCPClientResponseSchema,\n} from '../schemas/stored-mcp-clients';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { assertStoredResourceScope, getStoredResourceScope, scopeStoredResourceMetadata, toSlug } from '../utils';\n\nimport { handleError } from './error';\nimport { handleAutoVersioning, MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS } from './version-helpers';\nimport type { VersionedStoreInterface } from './version-helpers';\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /stored/mcp-clients - List all stored MCP clients\n */\nexport const LIST_STORED_MCP_CLIENTS_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/mcp-clients',\n responseType: 'json',\n queryParamSchema: listStoredMCPClientsQuerySchema,\n responseSchema: listStoredMCPClientsResponseSchema,\n summary: 'List stored MCP clients',\n description: 'Returns a paginated list of all MCP client configurations stored in the database',\n tags: ['Stored MCP Clients'],\n requiresAuth: true,\n handler: async ({ mastra, page, perPage, orderBy, status, authorId, metadata, requestContext }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n const scope = await getStoredResourceScope(mastra, requestContext);\n const result = await mcpClientStore.listResolved({\n page,\n perPage,\n orderBy,\n status,\n authorId,\n metadata: scopeStoredResourceMetadata(metadata, scope),\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error listing stored MCP clients');\n }\n },\n});\n\n/**\n * GET /stored/mcp-clients/:storedMCPClientId - Get a stored MCP client by ID\n */\nexport const GET_STORED_MCP_CLIENT_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/mcp-clients/:storedMCPClientId',\n responseType: 'json',\n pathParamSchema: storedMCPClientIdPathParams,\n queryParamSchema: statusQuerySchema,\n responseSchema: getStoredMCPClientResponseSchema,\n summary: 'Get stored MCP client by ID',\n description:\n 'Returns a specific MCP client from storage by its unique identifier. Use ?status=draft to resolve with the latest (draft) version, or ?status=published (default) for the active published version.',\n tags: ['Stored MCP Clients'],\n requiresAuth: true,\n handler: async ({ mastra, storedMCPClientId, status, requestContext }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n const mcpClient = await mcpClientStore.getByIdResolved(storedMCPClientId, { status });\n\n if (!mcpClient) {\n throw new HTTPException(404, { message: `Stored MCP client with id ${storedMCPClientId} not found` });\n }\n assertStoredResourceScope(mcpClient, await getStoredResourceScope(mastra, requestContext));\n\n return mcpClient;\n } catch (error) {\n return handleError(error, 'Error getting stored MCP client');\n }\n },\n});\n\n/**\n * POST /stored/mcp-clients - Create a new stored MCP client\n */\nexport const CREATE_STORED_MCP_CLIENT_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/mcp-clients',\n responseType: 'json',\n bodySchema: createStoredMCPClientBodySchema,\n responseSchema: createStoredMCPClientResponseSchema,\n summary: 'Create stored MCP client',\n description: 'Creates a new MCP client configuration in storage with the provided servers',\n tags: ['Stored MCP Clients'],\n requiresAuth: true,\n handler: async ({ mastra, id: providedId, authorId, metadata, name, description, servers, requestContext }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n // 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 MCP client ID from name. Please provide an explicit id.',\n });\n }\n\n // Check if MCP client with this ID already exists\n const existing = await mcpClientStore.getById(id);\n if (existing) {\n throw new HTTPException(409, { message: `MCP client with id ${id} already exists` });\n }\n\n await mcpClientStore.create({\n mcpClient: {\n id,\n authorId,\n metadata: scopeStoredResourceMetadata(metadata, await getStoredResourceScope(mastra, requestContext)),\n name,\n description,\n servers,\n },\n });\n\n // Return the resolved MCP client (thin record + version config)\n // Use draft status since newly created entities start as drafts\n const resolved = await mcpClientStore.getByIdResolved(id, { status: 'draft' });\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve created MCP client' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error creating stored MCP client');\n }\n },\n});\n\n/**\n * PATCH /stored/mcp-clients/:storedMCPClientId - Update a stored MCP client\n */\nexport const UPDATE_STORED_MCP_CLIENT_ROUTE = createRoute({\n method: 'PATCH',\n path: '/stored/mcp-clients/:storedMCPClientId',\n responseType: 'json',\n pathParamSchema: storedMCPClientIdPathParams,\n bodySchema: updateStoredMCPClientBodySchema,\n responseSchema: updateStoredMCPClientResponseSchema,\n summary: 'Update stored MCP client',\n description: 'Updates an existing MCP client in storage with the provided fields',\n tags: ['Stored MCP Clients'],\n requiresAuth: true,\n handler: async ({\n mastra,\n storedMCPClientId,\n // Metadata-level fields\n authorId,\n metadata,\n requestContext,\n // Config fields (snapshot-level)\n name,\n description,\n servers,\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 mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n // Check if MCP client exists\n const existing = await mcpClientStore.getById(storedMCPClientId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored MCP client with id ${storedMCPClientId} not found` });\n }\n const scope = await getStoredResourceScope(mastra, requestContext);\n assertStoredResourceScope(existing, scope);\n const scopedMetadata =\n metadata !== undefined\n ? scopeStoredResourceMetadata({ ...(existing.metadata ?? {}), ...metadata }, scope)\n : undefined;\n\n // Update the MCP client with both metadata-level and config-level fields\n const updatedMCPClient = await mcpClientStore.update({\n id: storedMCPClientId,\n authorId,\n ...(scopedMetadata !== undefined ? { metadata: scopedMetadata } : {}),\n name,\n description,\n servers,\n });\n\n // Build the snapshot config for auto-versioning comparison\n const configFields = { name, description, servers };\n\n // Filter out undefined values to get only the config fields that were provided\n const providedConfigFields = Object.fromEntries(Object.entries(configFields).filter(([_, v]) => v !== undefined));\n\n // Handle auto-versioning with retry logic for race conditions\n // This creates a new version if there are meaningful config changes.\n // It does NOT update activeVersionId — the version stays as a draft until explicitly published.\n await handleAutoVersioning(\n mcpClientStore as unknown as VersionedStoreInterface,\n storedMCPClientId,\n 'mcpClientId',\n MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS,\n existing,\n updatedMCPClient,\n providedConfigFields,\n );\n\n // Return the resolved MCP client with the latest (draft) version so the UI sees its edits\n const resolved = await mcpClientStore.getByIdResolved(storedMCPClientId, { status: 'draft' });\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve updated MCP client' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error updating stored MCP client');\n }\n },\n});\n\n/**\n * DELETE /stored/mcp-clients/:storedMCPClientId - Delete a stored MCP client\n */\nexport const DELETE_STORED_MCP_CLIENT_ROUTE = createRoute({\n method: 'DELETE',\n path: '/stored/mcp-clients/:storedMCPClientId',\n responseType: 'json',\n pathParamSchema: storedMCPClientIdPathParams,\n responseSchema: deleteStoredMCPClientResponseSchema,\n summary: 'Delete stored MCP client',\n description: 'Deletes an MCP client from storage by its unique identifier',\n tags: ['Stored MCP Clients'],\n requiresAuth: true,\n handler: async ({ mastra, storedMCPClientId, requestContext }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const mcpClientStore = await storage.getStore('mcpClients');\n if (!mcpClientStore) {\n throw new HTTPException(500, { message: 'MCP clients storage domain is not available' });\n }\n\n // Check if MCP client exists\n const existing = await mcpClientStore.getById(storedMCPClientId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored MCP client with id ${storedMCPClientId} not found` });\n }\n assertStoredResourceScope(existing, await getStoredResourceScope(mastra, requestContext));\n\n await mcpClientStore.delete(storedMCPClientId);\n\n return {\n success: true,\n message: `MCP client ${storedMCPClientId} deleted successfully`,\n };\n } catch (error) {\n return handleError(error, 'Error deleting stored MCP client');\n }\n },\n});\n"]}
@@ -3,7 +3,7 @@
3
3
  var chunkVX3MJR4P_cjs = require('./chunk-VX3MJR4P.cjs');
4
4
  var chunk4C5RVGHE_cjs = require('./chunk-4C5RVGHE.cjs');
5
5
  var chunkPPNPOLWL_cjs = require('./chunk-PPNPOLWL.cjs');
6
- var chunkSTZTV4FB_cjs = require('./chunk-STZTV4FB.cjs');
6
+ var chunkZ7LCIYK7_cjs = require('./chunk-Z7LCIYK7.cjs');
7
7
  var chunkRZR7PLFW_cjs = require('./chunk-RZR7PLFW.cjs');
8
8
  var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
9
9
 
@@ -49,7 +49,7 @@ var LIST_STORED_WORKSPACES_ROUTE = chunkRZR7PLFW_cjs.createRoute({
49
49
  }));
50
50
  return { ...result, workspaces };
51
51
  } catch (error) {
52
- return chunkSTZTV4FB_cjs.handleError(error, "Error listing stored workspaces");
52
+ return chunkZ7LCIYK7_cjs.handleError(error, "Error listing stored workspaces");
53
53
  }
54
54
  }
55
55
  });
@@ -86,7 +86,7 @@ var GET_STORED_WORKSPACE_ROUTE = chunkRZR7PLFW_cjs.createRoute({
86
86
  });
87
87
  return workspace;
88
88
  } catch (error) {
89
- return chunkSTZTV4FB_cjs.handleError(error, "Error getting stored workspace");
89
+ return chunkZ7LCIYK7_cjs.handleError(error, "Error getting stored workspace");
90
90
  }
91
91
  }
92
92
  });
@@ -159,7 +159,7 @@ var CREATE_STORED_WORKSPACE_ROUTE = chunkRZR7PLFW_cjs.createRoute({
159
159
  }
160
160
  return resolved;
161
161
  } catch (error) {
162
- return chunkSTZTV4FB_cjs.handleError(error, "Error creating stored workspace");
162
+ return chunkZ7LCIYK7_cjs.handleError(error, "Error creating stored workspace");
163
163
  }
164
164
  }
165
165
  });
@@ -239,7 +239,7 @@ var UPDATE_STORED_WORKSPACE_ROUTE = chunkRZR7PLFW_cjs.createRoute({
239
239
  }
240
240
  return resolved;
241
241
  } catch (error) {
242
- return chunkSTZTV4FB_cjs.handleError(error, "Error updating stored workspace");
242
+ return chunkZ7LCIYK7_cjs.handleError(error, "Error updating stored workspace");
243
243
  }
244
244
  }
245
245
  });
@@ -281,7 +281,7 @@ var DELETE_STORED_WORKSPACE_ROUTE = chunkRZR7PLFW_cjs.createRoute({
281
281
  message: `Workspace ${storedWorkspaceId} deleted successfully`
282
282
  };
283
283
  } catch (error) {
284
- return chunkSTZTV4FB_cjs.handleError(error, "Error deleting stored workspace");
284
+ return chunkZ7LCIYK7_cjs.handleError(error, "Error deleting stored workspace");
285
285
  }
286
286
  }
287
287
  });
@@ -291,5 +291,5 @@ exports.DELETE_STORED_WORKSPACE_ROUTE = DELETE_STORED_WORKSPACE_ROUTE;
291
291
  exports.GET_STORED_WORKSPACE_ROUTE = GET_STORED_WORKSPACE_ROUTE;
292
292
  exports.LIST_STORED_WORKSPACES_ROUTE = LIST_STORED_WORKSPACES_ROUTE;
293
293
  exports.UPDATE_STORED_WORKSPACE_ROUTE = UPDATE_STORED_WORKSPACE_ROUTE;
294
- //# sourceMappingURL=chunk-GS6MWMFA.cjs.map
295
- //# sourceMappingURL=chunk-GS6MWMFA.cjs.map
294
+ //# sourceMappingURL=chunk-AC7GMUBN.cjs.map
295
+ //# sourceMappingURL=chunk-AC7GMUBN.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/handlers/stored-workspaces.ts"],"names":["createRoute","listStoredWorkspacesQuerySchema","listStoredWorkspacesResponseSchema","HTTPException","resolveAuthorFilter","getStoredResourceScope","scopeStoredResourceMetadata","matchesAuthorFilter","handleError","storedWorkspaceIdPathParams","getStoredWorkspaceResponseSchema","assertStoredResourceScope","assertReadAccess","createStoredWorkspaceBodySchema","createStoredWorkspaceResponseSchema","toSlug","getCallerAuthorId","updateStoredWorkspaceBodySchema","updateStoredWorkspaceResponseSchema","assertWriteAccess","deleteStoredWorkspaceResponseSchema"],"mappings":"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","file":"chunk-GS6MWMFA.cjs","sourcesContent":["import { HTTPException } from '../http-exception';\nimport {\n storedWorkspaceIdPathParams,\n listStoredWorkspacesQuerySchema,\n createStoredWorkspaceBodySchema,\n updateStoredWorkspaceBodySchema,\n listStoredWorkspacesResponseSchema,\n getStoredWorkspaceResponseSchema,\n createStoredWorkspaceResponseSchema,\n updateStoredWorkspaceResponseSchema,\n deleteStoredWorkspaceResponseSchema,\n} from '../schemas/stored-workspaces';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { assertStoredResourceScope, getStoredResourceScope, scopeStoredResourceMetadata, toSlug } from '../utils';\n\nimport {\n assertReadAccess,\n assertWriteAccess,\n getCallerAuthorId,\n matchesAuthorFilter,\n resolveAuthorFilter,\n} from './authorship';\nimport { handleError } from './error';\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /stored/workspaces - List all stored workspaces\n */\nexport const LIST_STORED_WORKSPACES_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/workspaces',\n responseType: 'json',\n queryParamSchema: listStoredWorkspacesQuerySchema,\n responseSchema: listStoredWorkspacesResponseSchema,\n summary: 'List stored workspaces',\n description: 'Returns a paginated list of all workspace configurations stored in the database',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({ mastra, page, perPage, orderBy, authorId, metadata, requestContext }) => {\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 workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Resolve the visibility scope for this caller. Non-owner queries for\n // another author return nothing (workspaces have no `public` visibility\n // yet); default lists return the caller's rows plus legacy unowned\n // records.\n const filter = resolveAuthorFilter({\n requestContext,\n resource: 'stored-workspaces',\n queryAuthorId: authorId,\n });\n\n const scope = await getStoredResourceScope(mastra, requestContext);\n const result = await workspaceStore.listResolved({\n page,\n perPage,\n orderBy,\n authorId: filter.kind === 'exact' ? filter.authorId : undefined,\n metadata: scopeStoredResourceMetadata(metadata, scope),\n });\n\n // Post-filter to enforce ownership rules across all backends. Storage\n // adapters can only do an equality filter on authorId, so we apply the\n // ownedOrPublic / ownedOrPublicOthers logic here. `total` is left as the\n // storage-reported count to keep pagination math working.\n const visibleWorkspaces = result.workspaces.filter(record => matchesAuthorFilter(record, filter));\n\n // Annotate each workspace with whether it's registered at runtime\n const runtimeWorkspaces = mastra.listWorkspaces();\n const workspaces = visibleWorkspaces.map(ws => ({\n ...ws,\n runtimeRegistered: ws.id in runtimeWorkspaces,\n }));\n\n return { ...result, workspaces };\n } catch (error) {\n return handleError(error, 'Error listing stored workspaces');\n }\n },\n});\n\n/**\n * GET /stored/workspaces/:storedWorkspaceId - Get a stored workspace by ID\n */\nexport const GET_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/workspaces/:storedWorkspaceId',\n responseType: 'json',\n pathParamSchema: storedWorkspaceIdPathParams,\n responseSchema: getStoredWorkspaceResponseSchema,\n summary: 'Get stored workspace by ID',\n description:\n 'Returns a specific workspace from storage by its unique identifier (resolved with active version config)',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({ mastra, storedWorkspaceId, requestContext }) => {\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 workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n const workspace = await workspaceStore.getByIdResolved(storedWorkspaceId);\n\n if (!workspace) {\n throw new HTTPException(404, { message: `Stored workspace with id ${storedWorkspaceId} not found` });\n }\n assertStoredResourceScope(workspace, await getStoredResourceScope(mastra, requestContext));\n\n // Throws 404 if the caller isn't the owner, admin, or `stored-workspaces:read[:<id>]` holder.\n assertReadAccess({\n requestContext,\n resource: 'stored-workspaces',\n resourceId: storedWorkspaceId,\n record: workspace,\n });\n\n return workspace;\n } catch (error) {\n return handleError(error, 'Error getting stored workspace');\n }\n },\n});\n\n/**\n * POST /stored/workspaces - Create a new stored workspace\n */\nexport const CREATE_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/workspaces',\n responseType: 'json',\n bodySchema: createStoredWorkspaceBodySchema,\n responseSchema: createStoredWorkspaceResponseSchema,\n summary: 'Create stored workspace',\n description: 'Creates a new workspace configuration in storage with the provided settings',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({\n mastra,\n id: providedId,\n metadata,\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n requestContext,\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 workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces 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 workspace ID from name. Please provide an explicit id.',\n });\n }\n\n // Check if workspace with this ID already exists\n const existing = await workspaceStore.getById(id);\n if (existing) {\n throw new HTTPException(409, { message: `Workspace with id ${id} already exists` });\n }\n\n // Force authorId from the authenticated caller; ignore any body-provided value.\n // No caller (auth not configured) leaves authorId undefined so legacy\n // single-user setups continue to behave as today.\n const authorId = getCallerAuthorId(requestContext) ?? undefined;\n\n await workspaceStore.create({\n workspace: {\n id,\n authorId,\n metadata: scopeStoredResourceMetadata(metadata, await getStoredResourceScope(mastra, requestContext)),\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n },\n });\n\n // Return the resolved workspace (thin record + version config)\n const resolved = await workspaceStore.getByIdResolved(id);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve created workspace' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error creating stored workspace');\n }\n },\n});\n\n/**\n * PATCH /stored/workspaces/:storedWorkspaceId - Update a stored workspace\n */\nexport const UPDATE_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'PATCH',\n path: '/stored/workspaces/:storedWorkspaceId',\n responseType: 'json',\n pathParamSchema: storedWorkspaceIdPathParams,\n bodySchema: updateStoredWorkspaceBodySchema,\n responseSchema: updateStoredWorkspaceResponseSchema,\n summary: 'Update stored workspace',\n description: 'Updates an existing workspace in storage with the provided fields',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({\n mastra,\n storedWorkspaceId,\n // Metadata-level fields\n metadata,\n // Config fields (snapshot-level)\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n requestContext,\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 workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Check if workspace exists\n const existing = await workspaceStore.getById(storedWorkspaceId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored workspace with id ${storedWorkspaceId} 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-workspaces:edit[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-workspaces',\n resourceId: storedWorkspaceId,\n action: 'edit',\n record: existing,\n });\n\n const scopedMetadata =\n metadata !== undefined\n ? scopeStoredResourceMetadata({ ...(existing.metadata ?? {}), ...metadata }, scope)\n : undefined;\n\n // Update the workspace with both metadata-level and config-level fields.\n // The storage layer handles separating these into record updates vs\n // new-version creation. Strip undefined keys so omitted fields don't\n // overwrite persisted values (same pattern as stored-skills PATCH).\n // Note: authorId is intentionally not accepted here. Ownership cannot be\n // transferred via PATCH; admins must use a dedicated flow if that is ever\n // needed.\n const updateInput: Record<string, unknown> = { id: storedWorkspaceId };\n const candidate: Record<string, unknown> = {\n ...(scopedMetadata !== undefined ? { metadata: scopedMetadata } : {}),\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n };\n for (const [key, value] of Object.entries(candidate)) {\n if (value !== undefined) updateInput[key] = value;\n }\n await workspaceStore.update(updateInput as Parameters<typeof workspaceStore.update>[0]);\n\n // Return the resolved workspace with the updated config\n const resolved = await workspaceStore.getByIdResolved(storedWorkspaceId);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve updated workspace' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error updating stored workspace');\n }\n },\n});\n\n/**\n * DELETE /stored/workspaces/:storedWorkspaceId - Delete a stored workspace\n */\nexport const DELETE_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'DELETE',\n path: '/stored/workspaces/:storedWorkspaceId',\n responseType: 'json',\n pathParamSchema: storedWorkspaceIdPathParams,\n responseSchema: deleteStoredWorkspaceResponseSchema,\n summary: 'Delete stored workspace',\n description: 'Deletes a workspace from storage by its unique identifier',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({ mastra, storedWorkspaceId, requestContext }) => {\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 workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Check if workspace exists\n const existing = await workspaceStore.getById(storedWorkspaceId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored workspace with id ${storedWorkspaceId} not found` });\n }\n assertStoredResourceScope(existing, await getStoredResourceScope(mastra, requestContext));\n\n // Throws 404 if the caller isn't the owner, admin, or `stored-workspaces:delete[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-workspaces',\n resourceId: storedWorkspaceId,\n action: 'delete',\n record: existing,\n });\n\n await workspaceStore.delete(storedWorkspaceId);\n\n return {\n success: true,\n message: `Workspace ${storedWorkspaceId} deleted successfully`,\n };\n } catch (error) {\n return handleError(error, 'Error deleting stored workspace');\n }\n },\n});\n"]}
1
+ {"version":3,"sources":["../src/server/handlers/stored-workspaces.ts"],"names":["createRoute","listStoredWorkspacesQuerySchema","listStoredWorkspacesResponseSchema","HTTPException","resolveAuthorFilter","getStoredResourceScope","scopeStoredResourceMetadata","matchesAuthorFilter","handleError","storedWorkspaceIdPathParams","getStoredWorkspaceResponseSchema","assertStoredResourceScope","assertReadAccess","createStoredWorkspaceBodySchema","createStoredWorkspaceResponseSchema","toSlug","getCallerAuthorId","updateStoredWorkspaceBodySchema","updateStoredWorkspaceResponseSchema","assertWriteAccess","deleteStoredWorkspaceResponseSchema"],"mappings":"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","file":"chunk-AC7GMUBN.cjs","sourcesContent":["import { HTTPException } from '../http-exception';\nimport {\n storedWorkspaceIdPathParams,\n listStoredWorkspacesQuerySchema,\n createStoredWorkspaceBodySchema,\n updateStoredWorkspaceBodySchema,\n listStoredWorkspacesResponseSchema,\n getStoredWorkspaceResponseSchema,\n createStoredWorkspaceResponseSchema,\n updateStoredWorkspaceResponseSchema,\n deleteStoredWorkspaceResponseSchema,\n} from '../schemas/stored-workspaces';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { assertStoredResourceScope, getStoredResourceScope, scopeStoredResourceMetadata, toSlug } from '../utils';\n\nimport {\n assertReadAccess,\n assertWriteAccess,\n getCallerAuthorId,\n matchesAuthorFilter,\n resolveAuthorFilter,\n} from './authorship';\nimport { handleError } from './error';\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /stored/workspaces - List all stored workspaces\n */\nexport const LIST_STORED_WORKSPACES_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/workspaces',\n responseType: 'json',\n queryParamSchema: listStoredWorkspacesQuerySchema,\n responseSchema: listStoredWorkspacesResponseSchema,\n summary: 'List stored workspaces',\n description: 'Returns a paginated list of all workspace configurations stored in the database',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({ mastra, page, perPage, orderBy, authorId, metadata, requestContext }) => {\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 workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Resolve the visibility scope for this caller. Non-owner queries for\n // another author return nothing (workspaces have no `public` visibility\n // yet); default lists return the caller's rows plus legacy unowned\n // records.\n const filter = resolveAuthorFilter({\n requestContext,\n resource: 'stored-workspaces',\n queryAuthorId: authorId,\n });\n\n const scope = await getStoredResourceScope(mastra, requestContext);\n const result = await workspaceStore.listResolved({\n page,\n perPage,\n orderBy,\n authorId: filter.kind === 'exact' ? filter.authorId : undefined,\n metadata: scopeStoredResourceMetadata(metadata, scope),\n });\n\n // Post-filter to enforce ownership rules across all backends. Storage\n // adapters can only do an equality filter on authorId, so we apply the\n // ownedOrPublic / ownedOrPublicOthers logic here. `total` is left as the\n // storage-reported count to keep pagination math working.\n const visibleWorkspaces = result.workspaces.filter(record => matchesAuthorFilter(record, filter));\n\n // Annotate each workspace with whether it's registered at runtime\n const runtimeWorkspaces = mastra.listWorkspaces();\n const workspaces = visibleWorkspaces.map(ws => ({\n ...ws,\n runtimeRegistered: ws.id in runtimeWorkspaces,\n }));\n\n return { ...result, workspaces };\n } catch (error) {\n return handleError(error, 'Error listing stored workspaces');\n }\n },\n});\n\n/**\n * GET /stored/workspaces/:storedWorkspaceId - Get a stored workspace by ID\n */\nexport const GET_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/workspaces/:storedWorkspaceId',\n responseType: 'json',\n pathParamSchema: storedWorkspaceIdPathParams,\n responseSchema: getStoredWorkspaceResponseSchema,\n summary: 'Get stored workspace by ID',\n description:\n 'Returns a specific workspace from storage by its unique identifier (resolved with active version config)',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({ mastra, storedWorkspaceId, requestContext }) => {\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 workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n const workspace = await workspaceStore.getByIdResolved(storedWorkspaceId);\n\n if (!workspace) {\n throw new HTTPException(404, { message: `Stored workspace with id ${storedWorkspaceId} not found` });\n }\n assertStoredResourceScope(workspace, await getStoredResourceScope(mastra, requestContext));\n\n // Throws 404 if the caller isn't the owner, admin, or `stored-workspaces:read[:<id>]` holder.\n assertReadAccess({\n requestContext,\n resource: 'stored-workspaces',\n resourceId: storedWorkspaceId,\n record: workspace,\n });\n\n return workspace;\n } catch (error) {\n return handleError(error, 'Error getting stored workspace');\n }\n },\n});\n\n/**\n * POST /stored/workspaces - Create a new stored workspace\n */\nexport const CREATE_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/workspaces',\n responseType: 'json',\n bodySchema: createStoredWorkspaceBodySchema,\n responseSchema: createStoredWorkspaceResponseSchema,\n summary: 'Create stored workspace',\n description: 'Creates a new workspace configuration in storage with the provided settings',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({\n mastra,\n id: providedId,\n metadata,\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n requestContext,\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 workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces 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 workspace ID from name. Please provide an explicit id.',\n });\n }\n\n // Check if workspace with this ID already exists\n const existing = await workspaceStore.getById(id);\n if (existing) {\n throw new HTTPException(409, { message: `Workspace with id ${id} already exists` });\n }\n\n // Force authorId from the authenticated caller; ignore any body-provided value.\n // No caller (auth not configured) leaves authorId undefined so legacy\n // single-user setups continue to behave as today.\n const authorId = getCallerAuthorId(requestContext) ?? undefined;\n\n await workspaceStore.create({\n workspace: {\n id,\n authorId,\n metadata: scopeStoredResourceMetadata(metadata, await getStoredResourceScope(mastra, requestContext)),\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n },\n });\n\n // Return the resolved workspace (thin record + version config)\n const resolved = await workspaceStore.getByIdResolved(id);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve created workspace' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error creating stored workspace');\n }\n },\n});\n\n/**\n * PATCH /stored/workspaces/:storedWorkspaceId - Update a stored workspace\n */\nexport const UPDATE_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'PATCH',\n path: '/stored/workspaces/:storedWorkspaceId',\n responseType: 'json',\n pathParamSchema: storedWorkspaceIdPathParams,\n bodySchema: updateStoredWorkspaceBodySchema,\n responseSchema: updateStoredWorkspaceResponseSchema,\n summary: 'Update stored workspace',\n description: 'Updates an existing workspace in storage with the provided fields',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({\n mastra,\n storedWorkspaceId,\n // Metadata-level fields\n metadata,\n // Config fields (snapshot-level)\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n requestContext,\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 workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Check if workspace exists\n const existing = await workspaceStore.getById(storedWorkspaceId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored workspace with id ${storedWorkspaceId} 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-workspaces:edit[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-workspaces',\n resourceId: storedWorkspaceId,\n action: 'edit',\n record: existing,\n });\n\n const scopedMetadata =\n metadata !== undefined\n ? scopeStoredResourceMetadata({ ...(existing.metadata ?? {}), ...metadata }, scope)\n : undefined;\n\n // Update the workspace with both metadata-level and config-level fields.\n // The storage layer handles separating these into record updates vs\n // new-version creation. Strip undefined keys so omitted fields don't\n // overwrite persisted values (same pattern as stored-skills PATCH).\n // Note: authorId is intentionally not accepted here. Ownership cannot be\n // transferred via PATCH; admins must use a dedicated flow if that is ever\n // needed.\n const updateInput: Record<string, unknown> = { id: storedWorkspaceId };\n const candidate: Record<string, unknown> = {\n ...(scopedMetadata !== undefined ? { metadata: scopedMetadata } : {}),\n name,\n description,\n filesystem,\n sandbox,\n mounts,\n search,\n skills,\n tools,\n autoSync,\n operationTimeout,\n };\n for (const [key, value] of Object.entries(candidate)) {\n if (value !== undefined) updateInput[key] = value;\n }\n await workspaceStore.update(updateInput as Parameters<typeof workspaceStore.update>[0]);\n\n // Return the resolved workspace with the updated config\n const resolved = await workspaceStore.getByIdResolved(storedWorkspaceId);\n if (!resolved) {\n throw new HTTPException(500, { message: 'Failed to resolve updated workspace' });\n }\n\n return resolved;\n } catch (error) {\n return handleError(error, 'Error updating stored workspace');\n }\n },\n});\n\n/**\n * DELETE /stored/workspaces/:storedWorkspaceId - Delete a stored workspace\n */\nexport const DELETE_STORED_WORKSPACE_ROUTE = createRoute({\n method: 'DELETE',\n path: '/stored/workspaces/:storedWorkspaceId',\n responseType: 'json',\n pathParamSchema: storedWorkspaceIdPathParams,\n responseSchema: deleteStoredWorkspaceResponseSchema,\n summary: 'Delete stored workspace',\n description: 'Deletes a workspace from storage by its unique identifier',\n tags: ['Stored Workspaces'],\n requiresAuth: true,\n handler: async ({ mastra, storedWorkspaceId, requestContext }) => {\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 workspaceStore = await storage.getStore('workspaces');\n if (!workspaceStore) {\n throw new HTTPException(500, { message: 'Workspaces storage domain is not available' });\n }\n\n // Check if workspace exists\n const existing = await workspaceStore.getById(storedWorkspaceId);\n if (!existing) {\n throw new HTTPException(404, { message: `Stored workspace with id ${storedWorkspaceId} not found` });\n }\n assertStoredResourceScope(existing, await getStoredResourceScope(mastra, requestContext));\n\n // Throws 404 if the caller isn't the owner, admin, or `stored-workspaces:delete[:<id>]` holder.\n assertWriteAccess({\n requestContext,\n resource: 'stored-workspaces',\n resourceId: storedWorkspaceId,\n action: 'delete',\n record: existing,\n });\n\n await workspaceStore.delete(storedWorkspaceId);\n\n return {\n success: true,\n message: `Workspace ${storedWorkspaceId} deleted successfully`,\n };\n } catch (error) {\n return handleError(error, 'Error deleting stored workspace');\n }\n },\n});\n"]}
@@ -1,9 +1,9 @@
1
1
  import { builderSettingsResponseSchema, infrastructureStatusResponseSchema, agentFeaturesSchema } from './chunk-T5H4CFHL.js';
2
- import { handleError } from './chunk-RJ5ZIUGX.js';
2
+ import { handleError } from './chunk-7ZWJX3AN.js';
3
3
  import { createRoute } from './chunk-YQL3TXSD.js';
4
4
  import { HTTPException } from './chunk-6QWQZI4Q.js';
5
- import { resolvePickerVisibility, builderToModelPolicy } from '@mastra/core/agent-builder/ee';
6
5
 
6
+ // src/server/handlers/editor-builder.ts
7
7
  async function resolveBuilderFeatures(mastra) {
8
8
  const editor = mastra.getEditor();
9
9
  if (!editor || typeof editor.resolveBuilder !== "function") return null;
@@ -70,6 +70,7 @@ var GET_EDITOR_BUILDER_SETTINGS_ROUTE = createRoute({
70
70
  const toolKeyMap = toResponseKey(toolAliases, "key");
71
71
  const agentKeyMap = toResponseKey(agentAliases, "id");
72
72
  const workflowKeyMap = toResponseKey(workflowAliases, "key");
73
+ const { builderToModelPolicy, resolvePickerVisibility } = await import('@mastra/core/agent-builder/ee');
73
74
  const picker = resolvePickerVisibility({
74
75
  config: configuration?.agent,
75
76
  registeredToolIds: toolAliases.flatMap((a) => [a.id, a.key]),
@@ -224,5 +225,5 @@ var GET_INFRASTRUCTURE_STATUS_ROUTE = createRoute({
224
225
  });
225
226
 
226
227
  export { GET_EDITOR_BUILDER_SETTINGS_ROUTE, GET_INFRASTRUCTURE_STATUS_ROUTE, isBuilderFeatureEnabled, requireBuilderFeature };
227
- //# sourceMappingURL=chunk-YX73TS6P.js.map
228
- //# sourceMappingURL=chunk-YX73TS6P.js.map
228
+ //# sourceMappingURL=chunk-APFBOAS4.js.map
229
+ //# sourceMappingURL=chunk-APFBOAS4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/editor-builder.ts"],"names":[],"mappings":"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","file":"chunk-APFBOAS4.js","sourcesContent":["import type { Mastra } from '@mastra/core';\n\nimport { HTTPException } from '../http-exception';\nimport {\n agentFeaturesSchema,\n builderSettingsResponseSchema,\n infrastructureStatusResponseSchema,\n} from '../schemas/editor-builder';\nimport type { AgentFeatures, InfrastructureStatus } from '../schemas/editor-builder';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\n\n/**\n * Resolve the active builder feature flags. Returns `null` when the editor is\n * absent, the builder is disabled, or no features are configured.\n */\nasync function resolveBuilderFeatures(mastra: Mastra): Promise<AgentFeatures | null> {\n const editor = mastra.getEditor();\n if (!editor || typeof editor.resolveBuilder !== 'function') return null;\n if (!editor.hasEnabledBuilderConfig?.()) return null;\n const builder = await editor.resolveBuilder();\n if (!builder || !builder.enabled) return null;\n const features = builder.getFeatures?.()?.agent;\n if (!features) return null;\n // Validate the shape so unknown keys cannot smuggle through.\n const parsed = agentFeaturesSchema.safeParse(features);\n return parsed.success ? parsed.data : null;\n}\n\n/**\n * Returns whether a given agent-builder feature is enabled. Used by list /\n * get-by-id handlers to soft-gate response enrichment (omit fields, ignore\n * favoritedOnly / pinFavoritedFor params) when the feature is off.\n */\nexport async function isBuilderFeatureEnabled(mastra: Mastra, feature: keyof AgentFeatures): Promise<boolean> {\n const features = await resolveBuilderFeatures(mastra);\n return features?.[feature] === true;\n}\n\n/**\n * Hard-gate helper for mutation routes that must not exist when the feature\n * is off. Throws `HTTPException(404)` so we don't leak the existence of the\n * feature surface (matches behavior of unregistered routes).\n */\nexport async function requireBuilderFeature(mastra: Mastra, feature: keyof AgentFeatures): Promise<void> {\n if (!(await isBuilderFeatureEnabled(mastra, feature))) {\n throw new HTTPException(404, { message: 'Not Found' });\n }\n}\n\n/**\n * GET /editor/builder/settings\n *\n * Returns the agent builder settings configured by the admin.\n * Used by frontend to determine which features to display.\n */\nexport const GET_EDITOR_BUILDER_SETTINGS_ROUTE = createRoute({\n method: 'GET',\n path: '/editor/builder/settings',\n responseType: 'json',\n responseSchema: builderSettingsResponseSchema,\n summary: 'Get agent builder settings',\n description: 'Returns the agent builder feature flags and configuration for UI gating',\n tags: ['Editor'],\n requiresAuth: true,\n requiresPermission: 'stored-agents:read',\n handler: async ({ mastra }) => {\n try {\n const editor = mastra.getEditor();\n\n // No editor configured\n if (!editor) {\n return { enabled: false, modelPolicy: { active: false } };\n }\n\n // Editor doesn't support builder (older version or OSS)\n if (typeof editor.resolveBuilder !== 'function') {\n return { enabled: false, modelPolicy: { active: false } };\n }\n\n // Check if builder is enabled in config\n if (!editor.hasEnabledBuilderConfig?.()) {\n return { enabled: false, modelPolicy: { active: false } };\n }\n\n // Resolve the builder instance\n const builder = await editor.resolveBuilder();\n if (!builder || !builder.enabled) {\n return { enabled: false, modelPolicy: { active: false } };\n }\n\n const baseWarnings = builder.getModelPolicyWarnings?.() ?? [];\n const configuration = builder.getConfiguration();\n\n // Picker allowlists are written against entity `.id` (what users see in\n // the UI, URLs, traces). The client filters list responses by their\n // response keys, which are not always `.id`:\n // - GET /agents keys by `agent.id`\n // - GET /tools keys by registration key (values include `id`)\n // - GET /workflows keys by registration key (values omit `id`)\n // To keep the client filter simple, we accept `.id` (fallback to\n // registration key) for matching, but emit visible IDs as response keys\n // so `Object.keys(data)` lines up.\n type AliasPair = { id: string; key: string };\n const collectAliases = (registry: Record<string, unknown>): AliasPair[] =>\n Object.entries(registry).map(([key, entity]) => ({\n id: (entity as { id?: string }).id || key,\n key,\n }));\n\n const toolAliases = collectAliases(mastra.listTools() ?? {});\n const agentAliases = collectAliases(mastra.listAgents() ?? {});\n const workflowAliases = collectAliases(mastra.listWorkflows() ?? {});\n\n // Tools/workflows responses are keyed by registration key. Agents\n // response is keyed by `.id`.\n const toResponseKey = (aliases: AliasPair[], byId: 'id' | 'key') => {\n const map = new Map<string, string>();\n for (const a of aliases) {\n map.set(a.id, byId === 'id' ? a.id : a.key);\n map.set(a.key, byId === 'id' ? a.id : a.key);\n }\n return map;\n };\n const toolKeyMap = toResponseKey(toolAliases, 'key');\n const agentKeyMap = toResponseKey(agentAliases, 'id');\n const workflowKeyMap = toResponseKey(workflowAliases, 'key');\n\n // Lazy-load the EE subpath so this module remains importable on\n // `@mastra/core` versions that pre-date it (added in core 1.34.0).\n // We only reach here after `builder.enabled` is true, which guarantees\n // a compatible core.\n const { builderToModelPolicy, resolvePickerVisibility } = await import('@mastra/core/agent-builder/ee');\n\n const picker = resolvePickerVisibility({\n config: configuration?.agent,\n registeredToolIds: toolAliases.flatMap(a => [a.id, a.key]),\n registeredAgentIds: agentAliases.flatMap(a => [a.id, a.key]),\n registeredWorkflowIds: workflowAliases.flatMap(a => [a.id, a.key]),\n });\n\n const normalize = (visible: string[] | null, map: Map<string, string>): string[] | null => {\n if (visible === null) return null;\n const out: string[] = [];\n const seen = new Set<string>();\n for (const id of visible) {\n const mapped = map.get(id);\n if (mapped && !seen.has(mapped)) {\n seen.add(mapped);\n out.push(mapped);\n }\n }\n return out;\n };\n\n const modelPolicyWarnings = [...baseWarnings, ...picker.warnings];\n\n return {\n enabled: true,\n features: builder.getFeatures(),\n configuration,\n modelPolicy: builderToModelPolicy(builder),\n picker: {\n visibleTools: normalize(picker.visibleTools, toolKeyMap),\n visibleAgents: normalize(picker.visibleAgents, agentKeyMap),\n visibleWorkflows: normalize(picker.visibleWorkflows, workflowKeyMap),\n },\n ...(modelPolicyWarnings.length > 0 ? { modelPolicyWarnings } : {}),\n };\n } catch (error) {\n return handleError(error, 'Error getting builder settings');\n }\n },\n});\n\n/**\n * GET /editor/builder/infrastructure\n *\n * Returns the runtime status of Mastra-opinionated primitives (channels,\n * browser providers, workspaces). Admin-only; surfaced in Studio Settings so\n * admins can sanity-check what's wired up to the running server.\n */\nexport const GET_INFRASTRUCTURE_STATUS_ROUTE = createRoute({\n method: 'GET',\n path: '/editor/builder/infrastructure',\n responseType: 'json',\n responseSchema: infrastructureStatusResponseSchema,\n summary: 'Get infrastructure status',\n description: 'Agent Builder infrastructure configuration and lightweight runtime status.',\n tags: ['Editor'],\n requiresAuth: true,\n requiresPermission: 'infrastructure:read',\n handler: async ({ mastra }) => {\n try {\n const formatConfigValue = (value: unknown): string => {\n if (value === null || value === undefined) return 'not set';\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') return String(value);\n if (Array.isArray(value)) return `${value.length} item${value.length === 1 ? '' : 's'}`;\n return value.constructor?.name && value.constructor.name !== 'Object' ? value.constructor.name : 'configured';\n };\n\n const getProviderName = (value: unknown): string | null => {\n if (!value) return null;\n if (typeof value === 'object' && 'provider' in value && typeof value.provider === 'string')\n return value.provider;\n if (typeof value === 'object' && 'constructor' in value) {\n const name = (value as { constructor?: { name?: string } }).constructor?.name;\n return name && name !== 'Object' ? name : 'configured';\n }\n return null;\n };\n\n const getConfigEntries = (config: Record<string, unknown>, omittedKeys: string[] = []) =>\n Object.entries(config)\n .filter(([key, value]) => !omittedKeys.includes(key) && value !== undefined && value !== null)\n .map(([key, value]) => ({ key, value: formatConfigValue(value) }));\n\n const channelProviders = mastra.getChannelProviders() ?? {};\n const channels: InfrastructureStatus['channels'] = {\n providers: Object.entries(channelProviders)\n .map(([id, provider]) => {\n const info = provider.getInfo?.();\n const routes = provider.getRoutes?.() ?? [];\n return {\n id: info?.id ?? id,\n name: info?.name ?? id,\n isConfigured: info?.isConfigured ?? false,\n routeCount: routes.length,\n };\n })\n .filter(provider => provider.isConfigured),\n };\n\n const editor = mastra.getEditor();\n let browser: InfrastructureStatus['browser'] = {\n type: null,\n provider: null,\n env: null,\n registered: false,\n availableProviders: [],\n config: [],\n };\n let workspace: InfrastructureStatus['workspace'] = {\n type: null,\n workspaceId: null,\n name: null,\n source: null,\n registered: false,\n hasFilesystem: false,\n hasSandbox: false,\n filesystemProvider: null,\n sandboxProvider: null,\n config: [],\n };\n let registries: InfrastructureStatus['registries'] = {\n skillsSh: { enabled: false },\n };\n\n if (editor?.resolveBuilder) {\n const browsers = (editor as unknown as { __browsers?: Map<string, unknown> }).__browsers;\n const builder = await editor.resolveBuilder();\n const builderRegistries = builder?.getRegistries?.();\n registries = {\n skillsSh: { enabled: builderRegistries?.skillsSh?.enabled === true },\n };\n const configuration = builder?.getConfiguration?.()?.agent as\n | {\n browser?: { type?: string; config?: { provider?: string; env?: string } };\n workspace?: {\n type?: string;\n workspaceId?: string;\n config?: { name?: string; filesystem?: unknown; sandbox?: unknown };\n };\n }\n | undefined;\n\n const browserRef = configuration?.browser;\n const browserConfig = browserRef?.config ?? {};\n const providerId = browserConfig.provider ?? null;\n browser = {\n type: browserRef?.type ?? null,\n provider: providerId,\n env: browserConfig.env ?? null,\n registered: providerId ? !!browsers?.has(providerId) : false,\n availableProviders: browsers ? Array.from(browsers.keys()) : [],\n config: getConfigEntries(browserConfig, ['provider', 'env']),\n };\n\n const workspaceRef = configuration?.workspace;\n const workspaceConfig = workspaceRef?.config ?? {};\n const registeredWorkspaces = mastra.listWorkspaces();\n const registeredWorkspace = workspaceRef?.workspaceId\n ? registeredWorkspaces[workspaceRef.workspaceId]\n : undefined;\n const filesystem = registeredWorkspace?.workspace.filesystem ?? workspaceConfig.filesystem;\n const sandbox = registeredWorkspace?.workspace.sandbox ?? workspaceConfig.sandbox;\n const filesystemConfig =\n typeof workspaceConfig.filesystem === 'object' &&\n workspaceConfig.filesystem &&\n 'config' in workspaceConfig.filesystem\n ? (workspaceConfig.filesystem.config as Record<string, unknown>)\n : {};\n const sandboxConfig =\n typeof workspaceConfig.sandbox === 'object' && workspaceConfig.sandbox && 'config' in workspaceConfig.sandbox\n ? (workspaceConfig.sandbox.config as Record<string, unknown>)\n : {};\n workspace = {\n type: workspaceRef?.type ?? null,\n workspaceId: workspaceRef?.workspaceId ?? null,\n name: workspaceConfig.name ?? registeredWorkspace?.workspace.name ?? null,\n source: registeredWorkspace?.source ?? null,\n registered: !!registeredWorkspace,\n hasFilesystem: !!filesystem,\n hasSandbox: !!sandbox,\n filesystemProvider: getProviderName(filesystem),\n sandboxProvider: getProviderName(sandbox),\n config: [\n ...getConfigEntries(filesystemConfig).map(entry => ({ ...entry, key: `filesystem.${entry.key}` })),\n ...getConfigEntries(sandboxConfig).map(entry => ({ ...entry, key: `sandbox.${entry.key}` })),\n ],\n };\n }\n\n return { channels, browser, workspace, registries };\n } catch (error) {\n return handleError(error, 'Error getting infrastructure status');\n }\n },\n});\n"]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunk3QTG4V4W_cjs = require('./chunk-3QTG4V4W.cjs');
4
- var chunkSTZTV4FB_cjs = require('./chunk-STZTV4FB.cjs');
4
+ var chunkZ7LCIYK7_cjs = require('./chunk-Z7LCIYK7.cjs');
5
5
  var chunkRZR7PLFW_cjs = require('./chunk-RZR7PLFW.cjs');
6
6
  var fs = require('fs');
7
7
 
@@ -15,7 +15,7 @@ var GET_API_SCHEMA_ROUTE = chunkRZR7PLFW_cjs.createRoute({
15
15
  tags: ["System"],
16
16
  requiresAuth: true,
17
17
  handler: async () => {
18
- const { buildApiSchemaManifest } = await import('./api-schema-manifest-M5LNZB6W.cjs');
18
+ const { buildApiSchemaManifest } = await import('./api-schema-manifest-E3RU6MLF.cjs');
19
19
  return buildApiSchemaManifest();
20
20
  }
21
21
  });
@@ -59,12 +59,12 @@ var GET_SYSTEM_PACKAGES_ROUTE = chunkRZR7PLFW_cjs.createRoute({
59
59
  observabilityRuntimeStrategy
60
60
  };
61
61
  } catch (error) {
62
- return chunkSTZTV4FB_cjs.handleError(error, "Error getting system packages");
62
+ return chunkZ7LCIYK7_cjs.handleError(error, "Error getting system packages");
63
63
  }
64
64
  }
65
65
  });
66
66
 
67
67
  exports.GET_API_SCHEMA_ROUTE = GET_API_SCHEMA_ROUTE;
68
68
  exports.GET_SYSTEM_PACKAGES_ROUTE = GET_SYSTEM_PACKAGES_ROUTE;
69
- //# sourceMappingURL=chunk-USUWP563.cjs.map
70
- //# sourceMappingURL=chunk-USUWP563.cjs.map
69
+ //# sourceMappingURL=chunk-AT5ZCHIV.cjs.map
70
+ //# sourceMappingURL=chunk-AT5ZCHIV.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/handlers/system.ts"],"names":["createRoute","apiSchemaManifestResponseSchema","systemPackagesResponseSchema","readFileSync","handleError"],"mappings":";;;;;;;AAOO,IAAM,uBAAuBA,6BAAA,CAAY;AAAA,EAC9C,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,oBAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,cAAA,EAAgBC,iDAAA;AAAA,EAChB,OAAA,EAAS,yBAAA;AAAA,EACT,WAAA,EAAa,qFAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,SAAS,YAAY;AAEnB,IAAA,MAAM,EAAE,sBAAA,EAAuB,GAAI,MAAM,OAAO,oCAAuC,CAAA;AACvF,IAAA,OAAO,sBAAA,EAAuB;AAAA,EAChC;AACF,CAAC;AAEM,IAAM,4BAA4BD,6BAAA,CAAY;AAAA,EACnD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,kBAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,cAAA,EAAgBE,8CAAA;AAAA,EAChB,OAAA,EAAS,+BAAA;AAAA,EACT,WAAA,EAAa,qFAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,IAAA,IAAI;AACF,MAAA,MAAM,gBAAA,GAAmB,QAAQ,GAAA,CAAI,oBAAA;AAErC,MAAA,IAAI,WAA4B,EAAC;AAEjC,MAAA,IAAI,gBAAA,EAAkB;AACpB,QAAA,IAAI;AACF,UAAA,MAAM,WAAA,GAAcC,eAAA,CAAa,gBAAA,EAAkB,OAAO,CAAA;AAC1D,UAAA,QAAA,GAAW,IAAA,CAAK,MAAM,WAAW,CAAA;AAAA,QACnC,CAAA,CAAA,MAAQ;AACN,UAAA,QAAA,GAAW,EAAC;AAAA,QACd;AAAA,MACF;AAEA,MAAA,MAAM,OAAA,GAAU,OAAO,UAAA,EAAW;AAClC,MAAA,MAAM,cAAc,OAAA,EAAS,IAAA;AAC7B,MAAA,MAAM,oBAAA,GAAuB,SAAS,MAAA,EAAQ,aAAA;AAC9C,MAAA,MAAM,wBAAA,GAA2B,sBAAsB,WAAA,CAAY,IAAA;AACnE,MAAA,MAAM,+BAA+B,oBAAA,EAAsB,sBAAA;AAC3D,MAAA,MAAM,oBAAA,GAAuB,CAAC,CAAC,MAAA,CAAO,cAAc,kBAAA,EAAmB;AAEvE,MAAA,MAAM,MAAA,GAAS,OAAO,SAAA,EAAU;AAChC,MAAA,MAAM,YAAA,GAAe,QAAQ,SAAA,IAAY;AAEzC,MAAA,OAAO;AAAA,QACL,QAAA;AAAA,QACA,KAAA,EAAO,OAAA,CAAQ,GAAA,CAAI,UAAA,KAAe,MAAA;AAAA,QAClC,UAAA,EAAY,CAAC,CAAC,MAAA;AAAA,QACd,YAAA;AAAA,QACA,oBAAA;AAAA,QACA,WAAA;AAAA,QACA,wBAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOC,6BAAA,CAAY,OAAO,+BAA+B,CAAA;AAAA,IAC3D;AAAA,EACF;AACF,CAAC","file":"chunk-USUWP563.cjs","sourcesContent":["import { readFileSync } from 'node:fs';\n\nimport type { MastraPackage } from '../schemas/system';\nimport { apiSchemaManifestResponseSchema, systemPackagesResponseSchema } from '../schemas/system';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\n\nexport const GET_API_SCHEMA_ROUTE = createRoute({\n method: 'GET',\n path: '/system/api-schema',\n responseType: 'json',\n responseSchema: apiSchemaManifestResponseSchema,\n summary: 'Get API schema manifest',\n description: 'Returns the route-contract-derived API schema manifest for the machine-readable CLI',\n tags: ['System'],\n requiresAuth: true,\n handler: async () => {\n // Dynamic import to avoid circular dependency issues\n const { buildApiSchemaManifest } = await import('../server-adapter/api-schema-manifest');\n return buildApiSchemaManifest();\n },\n});\n\nexport const GET_SYSTEM_PACKAGES_ROUTE = createRoute({\n method: 'GET',\n path: '/system/packages',\n responseType: 'json',\n responseSchema: systemPackagesResponseSchema,\n summary: 'Get installed Mastra packages',\n description: 'Returns a list of all installed Mastra packages and their versions from the project',\n tags: ['System'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const packagesFilePath = process.env.MASTRA_PACKAGES_FILE;\n\n let packages: MastraPackage[] = [];\n\n if (packagesFilePath) {\n try {\n const fileContent = readFileSync(packagesFilePath, 'utf-8');\n packages = JSON.parse(fileContent);\n } catch {\n packages = [];\n }\n }\n\n const storage = mastra.getStorage();\n const storageType = storage?.name;\n const observabilityStorage = storage?.stores?.observability;\n const observabilityStorageType = observabilityStorage?.constructor.name;\n const observabilityRuntimeStrategy = observabilityStorage?.runtimeTracingStrategy;\n const observabilityEnabled = !!mastra.observability.getDefaultInstance();\n\n const editor = mastra.getEditor();\n const editorSource = editor?.getSource?.();\n\n return {\n packages,\n isDev: process.env.MASTRA_DEV === 'true',\n cmsEnabled: !!editor,\n editorSource,\n observabilityEnabled,\n storageType,\n observabilityStorageType,\n observabilityRuntimeStrategy,\n };\n } catch (error) {\n return handleError(error, 'Error getting system packages');\n }\n },\n});\n"]}
1
+ {"version":3,"sources":["../src/server/handlers/system.ts"],"names":["createRoute","apiSchemaManifestResponseSchema","systemPackagesResponseSchema","readFileSync","handleError"],"mappings":";;;;;;;AAOO,IAAM,uBAAuBA,6BAAA,CAAY;AAAA,EAC9C,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,oBAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,cAAA,EAAgBC,iDAAA;AAAA,EAChB,OAAA,EAAS,yBAAA;AAAA,EACT,WAAA,EAAa,qFAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,SAAS,YAAY;AAEnB,IAAA,MAAM,EAAE,sBAAA,EAAuB,GAAI,MAAM,OAAO,oCAAuC,CAAA;AACvF,IAAA,OAAO,sBAAA,EAAuB;AAAA,EAChC;AACF,CAAC;AAEM,IAAM,4BAA4BD,6BAAA,CAAY;AAAA,EACnD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,kBAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,cAAA,EAAgBE,8CAAA;AAAA,EAChB,OAAA,EAAS,+BAAA;AAAA,EACT,WAAA,EAAa,qFAAA;AAAA,EACb,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAAM;AAC7B,IAAA,IAAI;AACF,MAAA,MAAM,gBAAA,GAAmB,QAAQ,GAAA,CAAI,oBAAA;AAErC,MAAA,IAAI,WAA4B,EAAC;AAEjC,MAAA,IAAI,gBAAA,EAAkB;AACpB,QAAA,IAAI;AACF,UAAA,MAAM,WAAA,GAAcC,eAAA,CAAa,gBAAA,EAAkB,OAAO,CAAA;AAC1D,UAAA,QAAA,GAAW,IAAA,CAAK,MAAM,WAAW,CAAA;AAAA,QACnC,CAAA,CAAA,MAAQ;AACN,UAAA,QAAA,GAAW,EAAC;AAAA,QACd;AAAA,MACF;AAEA,MAAA,MAAM,OAAA,GAAU,OAAO,UAAA,EAAW;AAClC,MAAA,MAAM,cAAc,OAAA,EAAS,IAAA;AAC7B,MAAA,MAAM,oBAAA,GAAuB,SAAS,MAAA,EAAQ,aAAA;AAC9C,MAAA,MAAM,wBAAA,GAA2B,sBAAsB,WAAA,CAAY,IAAA;AACnE,MAAA,MAAM,+BAA+B,oBAAA,EAAsB,sBAAA;AAC3D,MAAA,MAAM,oBAAA,GAAuB,CAAC,CAAC,MAAA,CAAO,cAAc,kBAAA,EAAmB;AAEvE,MAAA,MAAM,MAAA,GAAS,OAAO,SAAA,EAAU;AAChC,MAAA,MAAM,YAAA,GAAe,QAAQ,SAAA,IAAY;AAEzC,MAAA,OAAO;AAAA,QACL,QAAA;AAAA,QACA,KAAA,EAAO,OAAA,CAAQ,GAAA,CAAI,UAAA,KAAe,MAAA;AAAA,QAClC,UAAA,EAAY,CAAC,CAAC,MAAA;AAAA,QACd,YAAA;AAAA,QACA,oBAAA;AAAA,QACA,WAAA;AAAA,QACA,wBAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,OAAOC,6BAAA,CAAY,OAAO,+BAA+B,CAAA;AAAA,IAC3D;AAAA,EACF;AACF,CAAC","file":"chunk-AT5ZCHIV.cjs","sourcesContent":["import { readFileSync } from 'node:fs';\n\nimport type { MastraPackage } from '../schemas/system';\nimport { apiSchemaManifestResponseSchema, systemPackagesResponseSchema } from '../schemas/system';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\n\nexport const GET_API_SCHEMA_ROUTE = createRoute({\n method: 'GET',\n path: '/system/api-schema',\n responseType: 'json',\n responseSchema: apiSchemaManifestResponseSchema,\n summary: 'Get API schema manifest',\n description: 'Returns the route-contract-derived API schema manifest for the machine-readable CLI',\n tags: ['System'],\n requiresAuth: true,\n handler: async () => {\n // Dynamic import to avoid circular dependency issues\n const { buildApiSchemaManifest } = await import('../server-adapter/api-schema-manifest');\n return buildApiSchemaManifest();\n },\n});\n\nexport const GET_SYSTEM_PACKAGES_ROUTE = createRoute({\n method: 'GET',\n path: '/system/packages',\n responseType: 'json',\n responseSchema: systemPackagesResponseSchema,\n summary: 'Get installed Mastra packages',\n description: 'Returns a list of all installed Mastra packages and their versions from the project',\n tags: ['System'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const packagesFilePath = process.env.MASTRA_PACKAGES_FILE;\n\n let packages: MastraPackage[] = [];\n\n if (packagesFilePath) {\n try {\n const fileContent = readFileSync(packagesFilePath, 'utf-8');\n packages = JSON.parse(fileContent);\n } catch {\n packages = [];\n }\n }\n\n const storage = mastra.getStorage();\n const storageType = storage?.name;\n const observabilityStorage = storage?.stores?.observability;\n const observabilityStorageType = observabilityStorage?.constructor.name;\n const observabilityRuntimeStrategy = observabilityStorage?.runtimeTracingStrategy;\n const observabilityEnabled = !!mastra.observability.getDefaultInstance();\n\n const editor = mastra.getEditor();\n const editorSource = editor?.getSource?.();\n\n return {\n packages,\n isDev: process.env.MASTRA_DEV === 'true',\n cmsEnabled: !!editor,\n editorSource,\n observabilityEnabled,\n storageType,\n observabilityStorageType,\n observabilityRuntimeStrategy,\n };\n } catch (error) {\n return handleError(error, 'Error getting system packages');\n }\n },\n});\n"]}
@@ -3,7 +3,7 @@
3
3
  var chunkTXM2XTUT_cjs = require('./chunk-TXM2XTUT.cjs');
4
4
  var chunk2XZ2466F_cjs = require('./chunk-2XZ2466F.cjs');
5
5
  var chunkPPNPOLWL_cjs = require('./chunk-PPNPOLWL.cjs');
6
- var chunkSTZTV4FB_cjs = require('./chunk-STZTV4FB.cjs');
6
+ var chunkZ7LCIYK7_cjs = require('./chunk-Z7LCIYK7.cjs');
7
7
  var chunkRZR7PLFW_cjs = require('./chunk-RZR7PLFW.cjs');
8
8
  var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
9
9
 
@@ -43,7 +43,7 @@ var LIST_PROMPT_BLOCK_VERSIONS_ROUTE = chunkRZR7PLFW_cjs.createRoute({
43
43
  });
44
44
  return result;
45
45
  } catch (error) {
46
- return chunkSTZTV4FB_cjs.handleError(error, "Error listing prompt block versions");
46
+ return chunkZ7LCIYK7_cjs.handleError(error, "Error listing prompt block versions");
47
47
  }
48
48
  }
49
49
  });
@@ -112,7 +112,7 @@ var CREATE_PROMPT_BLOCK_VERSION_ROUTE = chunkRZR7PLFW_cjs.createRoute({
112
112
  );
113
113
  return version;
114
114
  } catch (error) {
115
- return chunkSTZTV4FB_cjs.handleError(error, "Error creating prompt block version");
115
+ return chunkZ7LCIYK7_cjs.handleError(error, "Error creating prompt block version");
116
116
  }
117
117
  }
118
118
  });
@@ -149,7 +149,7 @@ var GET_PROMPT_BLOCK_VERSION_ROUTE = chunkRZR7PLFW_cjs.createRoute({
149
149
  chunkPPNPOLWL_cjs.assertStoredResourceScope(promptBlock, await chunkPPNPOLWL_cjs.getStoredResourceScope(mastra, requestContext));
150
150
  return version;
151
151
  } catch (error) {
152
- return chunkSTZTV4FB_cjs.handleError(error, "Error getting prompt block version");
152
+ return chunkZ7LCIYK7_cjs.handleError(error, "Error getting prompt block version");
153
153
  }
154
154
  }
155
155
  });
@@ -199,7 +199,7 @@ var ACTIVATE_PROMPT_BLOCK_VERSION_ROUTE = chunkRZR7PLFW_cjs.createRoute({
199
199
  activeVersionId: versionId
200
200
  };
201
201
  } catch (error) {
202
- return chunkSTZTV4FB_cjs.handleError(error, "Error activating prompt block version");
202
+ return chunkZ7LCIYK7_cjs.handleError(error, "Error activating prompt block version");
203
203
  }
204
204
  }
205
205
  });
@@ -271,7 +271,7 @@ var RESTORE_PROMPT_BLOCK_VERSION_ROUTE = chunkRZR7PLFW_cjs.createRoute({
271
271
  mastra.getEditor()?.prompt.clearCache(promptBlockId);
272
272
  return newVersion;
273
273
  } catch (error) {
274
- return chunkSTZTV4FB_cjs.handleError(error, "Error restoring prompt block version");
274
+ return chunkZ7LCIYK7_cjs.handleError(error, "Error restoring prompt block version");
275
275
  }
276
276
  }
277
277
  });
@@ -321,7 +321,7 @@ var DELETE_PROMPT_BLOCK_VERSION_ROUTE = chunkRZR7PLFW_cjs.createRoute({
321
321
  message: `Version ${version.versionNumber} deleted successfully`
322
322
  };
323
323
  } catch (error) {
324
- return chunkSTZTV4FB_cjs.handleError(error, "Error deleting prompt block version");
324
+ return chunkZ7LCIYK7_cjs.handleError(error, "Error deleting prompt block version");
325
325
  }
326
326
  }
327
327
  });
@@ -381,7 +381,7 @@ var COMPARE_PROMPT_BLOCK_VERSIONS_ROUTE = chunkRZR7PLFW_cjs.createRoute({
381
381
  toVersion
382
382
  };
383
383
  } catch (error) {
384
- return chunkSTZTV4FB_cjs.handleError(error, "Error comparing prompt block versions");
384
+ return chunkZ7LCIYK7_cjs.handleError(error, "Error comparing prompt block versions");
385
385
  }
386
386
  }
387
387
  });
@@ -393,5 +393,5 @@ exports.DELETE_PROMPT_BLOCK_VERSION_ROUTE = DELETE_PROMPT_BLOCK_VERSION_ROUTE;
393
393
  exports.GET_PROMPT_BLOCK_VERSION_ROUTE = GET_PROMPT_BLOCK_VERSION_ROUTE;
394
394
  exports.LIST_PROMPT_BLOCK_VERSIONS_ROUTE = LIST_PROMPT_BLOCK_VERSIONS_ROUTE;
395
395
  exports.RESTORE_PROMPT_BLOCK_VERSION_ROUTE = RESTORE_PROMPT_BLOCK_VERSION_ROUTE;
396
- //# sourceMappingURL=chunk-ZYPYYEM2.cjs.map
397
- //# sourceMappingURL=chunk-ZYPYYEM2.cjs.map
396
+ //# sourceMappingURL=chunk-AUO32DAZ.cjs.map
397
+ //# sourceMappingURL=chunk-AUO32DAZ.cjs.map