@mastra/server 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/dist/chunk-2AUSWWKT.js +75 -0
  3. package/dist/chunk-2AUSWWKT.js.map +1 -0
  4. package/dist/{chunk-RLZPX2YZ.js → chunk-2E5ZB7FH.js} +7 -5
  5. package/dist/{chunk-RLZPX2YZ.js.map → chunk-2E5ZB7FH.js.map} +1 -1
  6. package/dist/chunk-2ERW3HSX.js +71 -0
  7. package/dist/chunk-2ERW3HSX.js.map +1 -0
  8. package/dist/{chunk-QRQAZI3Q.js → chunk-2GOCJDE2.js} +6 -73
  9. package/dist/chunk-2GOCJDE2.js.map +1 -0
  10. package/dist/{chunk-SVQNZ6U2.js → chunk-2OBRONRW.js} +4 -15
  11. package/dist/chunk-2OBRONRW.js.map +1 -0
  12. package/dist/chunk-43MOXX6D.cjs +74 -0
  13. package/dist/chunk-43MOXX6D.cjs.map +1 -0
  14. package/dist/chunk-47RDD2HN.js +61 -0
  15. package/dist/chunk-47RDD2HN.js.map +1 -0
  16. package/dist/{chunk-S7BVUW44.cjs → chunk-4NZHZQ6Q.cjs} +13 -8
  17. package/dist/chunk-4NZHZQ6Q.cjs.map +1 -0
  18. package/dist/{chunk-HFOR62M4.js → chunk-4V5MHFM6.js} +4 -343
  19. package/dist/chunk-4V5MHFM6.js.map +1 -0
  20. package/dist/chunk-574U64WA.cjs +103 -0
  21. package/dist/chunk-574U64WA.cjs.map +1 -0
  22. package/dist/chunk-5HJQACVQ.cjs +32 -0
  23. package/dist/chunk-5HJQACVQ.cjs.map +1 -0
  24. package/dist/chunk-5N4O5XJZ.js +259 -0
  25. package/dist/chunk-5N4O5XJZ.js.map +1 -0
  26. package/dist/chunk-5WFMCDP6.cjs +42 -0
  27. package/dist/chunk-5WFMCDP6.cjs.map +1 -0
  28. package/dist/{chunk-NBYRUVSE.cjs → chunk-6LFZL6QU.cjs} +100 -443
  29. package/dist/chunk-6LFZL6QU.cjs.map +1 -0
  30. package/dist/{chunk-D6AEONK2.js → chunk-6LTXNJU5.js} +4 -4
  31. package/dist/chunk-6LTXNJU5.js.map +1 -0
  32. package/dist/{chunk-VKBYR4V4.js → chunk-6M6OX2GI.js} +5 -5
  33. package/dist/{chunk-VKBYR4V4.js.map → chunk-6M6OX2GI.js.map} +1 -1
  34. package/dist/chunk-6P7P7Y5U.cjs +11959 -0
  35. package/dist/chunk-6P7P7Y5U.cjs.map +1 -0
  36. package/dist/{chunk-E4NYFEOQ.cjs → chunk-6T2DK2GP.cjs} +16 -71
  37. package/dist/chunk-6T2DK2GP.cjs.map +1 -0
  38. package/dist/chunk-7D3YBNO6.cjs +76 -0
  39. package/dist/chunk-7D3YBNO6.cjs.map +1 -0
  40. package/dist/chunk-7NDOPT3W.js +73 -0
  41. package/dist/chunk-7NDOPT3W.js.map +1 -0
  42. package/dist/{chunk-XQURD55R.js → chunk-7RVXUWRC.js} +4 -33
  43. package/dist/chunk-7RVXUWRC.js.map +1 -0
  44. package/dist/{chunk-S5SBIVKP.js → chunk-A37KSL6V.js} +4 -69
  45. package/dist/chunk-A37KSL6V.js.map +1 -0
  46. package/dist/{chunk-Y6UBLYBC.cjs → chunk-ALE53JHX.cjs} +13 -13
  47. package/dist/{chunk-Y6UBLYBC.cjs.map → chunk-ALE53JHX.cjs.map} +1 -1
  48. package/dist/chunk-AUPN3AM6.js +34 -0
  49. package/dist/chunk-AUPN3AM6.js.map +1 -0
  50. package/dist/chunk-BAECEBZY.cjs +117 -0
  51. package/dist/chunk-BAECEBZY.cjs.map +1 -0
  52. package/dist/{chunk-ELLQE6XA.js → chunk-BBMSARPV.js} +4 -46
  53. package/dist/chunk-BBMSARPV.js.map +1 -0
  54. package/dist/chunk-BNJI7YMJ.cjs +89 -0
  55. package/dist/chunk-BNJI7YMJ.cjs.map +1 -0
  56. package/dist/chunk-BOIOGPBE.js +24 -0
  57. package/dist/chunk-BOIOGPBE.js.map +1 -0
  58. package/dist/chunk-BTRFBBRF.js +102 -0
  59. package/dist/chunk-BTRFBBRF.js.map +1 -0
  60. package/dist/{chunk-RCEX4V4N.cjs → chunk-C3U5LR4X.cjs} +24 -124
  61. package/dist/chunk-C3U5LR4X.cjs.map +1 -0
  62. package/dist/{chunk-GAATB3SN.cjs → chunk-CMGZD5UE.cjs} +29 -94
  63. package/dist/chunk-CMGZD5UE.cjs.map +1 -0
  64. package/dist/chunk-CWPZX27X.cjs +88 -0
  65. package/dist/chunk-CWPZX27X.cjs.map +1 -0
  66. package/dist/{chunk-DX7T3ZCH.js → chunk-D64GTBXM.js} +5 -5
  67. package/dist/{chunk-DX7T3ZCH.js.map → chunk-D64GTBXM.js.map} +1 -1
  68. package/dist/{chunk-IXWCFFVU.cjs → chunk-DK4A344H.cjs} +28 -74
  69. package/dist/chunk-DK4A344H.cjs.map +1 -0
  70. package/dist/{chunk-VFRQX7CD.cjs → chunk-DMAGP2MP.cjs} +28 -79
  71. package/dist/chunk-DMAGP2MP.cjs.map +1 -0
  72. package/dist/{chunk-3P34AJWW.js → chunk-DWDLH2Q5.js} +5 -60
  73. package/dist/chunk-DWDLH2Q5.js.map +1 -0
  74. package/dist/{chunk-DRFNY77Q.cjs → chunk-EFX5WYRT.cjs} +12 -10
  75. package/dist/chunk-EFX5WYRT.cjs.map +1 -0
  76. package/dist/{chunk-S46TMT6A.cjs → chunk-F4HPG2WH.cjs} +35 -152
  77. package/dist/chunk-F4HPG2WH.cjs.map +1 -0
  78. package/dist/{chunk-DW6ZTEJ4.cjs → chunk-FBIKXU4U.cjs} +29 -88
  79. package/dist/chunk-FBIKXU4U.cjs.map +1 -0
  80. package/dist/chunk-FU22BXAG.cjs +29 -0
  81. package/dist/chunk-FU22BXAG.cjs.map +1 -0
  82. package/dist/{chunk-PYO3IWOR.js → chunk-GESVIYWC.js} +74 -388
  83. package/dist/chunk-GESVIYWC.js.map +1 -0
  84. package/dist/{chunk-43WGLEEB.js → chunk-GRI42AT7.js} +5 -5
  85. package/dist/chunk-GRI42AT7.js.map +1 -0
  86. package/dist/{chunk-BAWISNLT.cjs → chunk-GU5KJAMA.cjs} +14 -37
  87. package/dist/chunk-GU5KJAMA.cjs.map +1 -0
  88. package/dist/{chunk-MOR4VVBW.js → chunk-H4AABNBB.js} +4 -4
  89. package/dist/chunk-H4AABNBB.js.map +1 -0
  90. package/dist/{chunk-B5JKQOIU.cjs → chunk-HERQV6YY.cjs} +22 -22
  91. package/dist/{chunk-B5JKQOIU.cjs.map → chunk-HERQV6YY.cjs.map} +1 -1
  92. package/dist/{chunk-BZMWUSOF.js → chunk-HMUJSYUR.js} +4 -4
  93. package/dist/chunk-HMUJSYUR.js.map +1 -0
  94. package/dist/{chunk-WQWSVABP.cjs → chunk-HOAPZDJV.cjs} +81 -81
  95. package/dist/{chunk-WQWSVABP.cjs.map → chunk-HOAPZDJV.cjs.map} +1 -1
  96. package/dist/{chunk-KJ3H6ED4.js → chunk-HWOBV3IH.js} +11 -176
  97. package/dist/{chunk-KJ3H6ED4.js.map → chunk-HWOBV3IH.js.map} +1 -1
  98. package/dist/chunk-I4THGZHE.js +52 -0
  99. package/dist/chunk-I4THGZHE.js.map +1 -0
  100. package/dist/chunk-II6TN6MR.js +171 -0
  101. package/dist/chunk-II6TN6MR.js.map +1 -0
  102. package/dist/chunk-J3SEZ24R.cjs +70 -0
  103. package/dist/chunk-J3SEZ24R.cjs.map +1 -0
  104. package/dist/{chunk-CPEJA5XY.cjs → chunk-JGK2MALT.cjs} +9 -42
  105. package/dist/chunk-JGK2MALT.cjs.map +1 -0
  106. package/dist/{chunk-MWWNB5KJ.js → chunk-JK3GI25F.js} +6 -102
  107. package/dist/chunk-JK3GI25F.js.map +1 -0
  108. package/dist/{chunk-QYPZ4IND.js → chunk-JTAGYRQP.js} +3 -3
  109. package/dist/chunk-JTAGYRQP.js.map +1 -0
  110. package/dist/{chunk-7F2JBD7F.cjs → chunk-JWCTCYDF.cjs} +13 -81
  111. package/dist/chunk-JWCTCYDF.cjs.map +1 -0
  112. package/dist/{chunk-OBA7KIAW.js → chunk-KF2QGKT3.js} +4 -68
  113. package/dist/chunk-KF2QGKT3.js.map +1 -0
  114. package/dist/chunk-KPMEA5UE.js +121 -0
  115. package/dist/chunk-KPMEA5UE.js.map +1 -0
  116. package/dist/chunk-KTKTSTDR.cjs +297 -0
  117. package/dist/chunk-KTKTSTDR.cjs.map +1 -0
  118. package/dist/chunk-KXXILK3T.cjs +134 -0
  119. package/dist/chunk-KXXILK3T.cjs.map +1 -0
  120. package/dist/chunk-LCP4G5CT.cjs +83 -0
  121. package/dist/chunk-LCP4G5CT.cjs.map +1 -0
  122. package/dist/{chunk-2RQXCCD4.js → chunk-LIPXZWEY.js} +7 -7
  123. package/dist/{chunk-2RQXCCD4.js.map → chunk-LIPXZWEY.js.map} +1 -1
  124. package/dist/{chunk-GDE4YNSF.cjs → chunk-LKBYAMJS.cjs} +31 -31
  125. package/dist/{chunk-GDE4YNSF.cjs.map → chunk-LKBYAMJS.cjs.map} +1 -1
  126. package/dist/{chunk-LIXI3MOA.cjs → chunk-LNIERC4T.cjs} +27 -87
  127. package/dist/chunk-LNIERC4T.cjs.map +1 -0
  128. package/dist/chunk-LOA2QO6H.cjs +391 -0
  129. package/dist/chunk-LOA2QO6H.cjs.map +1 -0
  130. package/dist/{chunk-OQZPEQXU.cjs → chunk-LTJHINYX.cjs} +17 -96
  131. package/dist/chunk-LTJHINYX.cjs.map +1 -0
  132. package/dist/chunk-LU7HU7KW.cjs +65 -0
  133. package/dist/chunk-LU7HU7KW.cjs.map +1 -0
  134. package/dist/chunk-LW2FKUW5.js +94 -0
  135. package/dist/chunk-LW2FKUW5.js.map +1 -0
  136. package/dist/chunk-NLMVQMCR.js +85 -0
  137. package/dist/chunk-NLMVQMCR.js.map +1 -0
  138. package/dist/{chunk-LFB6AUDW.js → chunk-NOT4JSQJ.js} +7 -7
  139. package/dist/chunk-NOT4JSQJ.js.map +1 -0
  140. package/dist/{chunk-OQG4AAGQ.cjs → chunk-NSB6AGO3.cjs} +27 -92
  141. package/dist/chunk-NSB6AGO3.cjs.map +1 -0
  142. package/dist/chunk-O272KKXN.cjs +111 -0
  143. package/dist/chunk-O272KKXN.cjs.map +1 -0
  144. package/dist/chunk-OLKVMPNB.js +11943 -0
  145. package/dist/chunk-OLKVMPNB.js.map +1 -0
  146. package/dist/{chunk-O26N7P6R.js → chunk-ONORVWSC.js} +3 -3
  147. package/dist/{chunk-O26N7P6R.js.map → chunk-ONORVWSC.js.map} +1 -1
  148. package/dist/chunk-OP626LZY.js +61 -0
  149. package/dist/chunk-OP626LZY.js.map +1 -0
  150. package/dist/chunk-P2ZMGGHF.cjs +19 -0
  151. package/dist/chunk-P2ZMGGHF.cjs.map +1 -0
  152. package/dist/{chunk-V4RWTVRV.cjs → chunk-P445W4ET.cjs} +76 -334
  153. package/dist/chunk-P445W4ET.cjs.map +1 -0
  154. package/dist/chunk-PALNMAC6.js +1 -1
  155. package/dist/{chunk-JSX4LRMG.cjs → chunk-PEG4SKER.cjs} +33 -33
  156. package/dist/{chunk-JSX4LRMG.cjs.map → chunk-PEG4SKER.cjs.map} +1 -1
  157. package/dist/{chunk-27QSSHGX.js → chunk-PGABFIYY.js} +4 -51
  158. package/dist/chunk-PGABFIYY.js.map +1 -0
  159. package/dist/chunk-PNJPBMSY.js +69 -0
  160. package/dist/chunk-PNJPBMSY.js.map +1 -0
  161. package/dist/chunk-PONEV4T5.js +47 -0
  162. package/dist/chunk-PONEV4T5.js.map +1 -0
  163. package/dist/{chunk-LIMSH6CA.js → chunk-Q7KDJZGD.js} +23 -136
  164. package/dist/chunk-Q7KDJZGD.js.map +1 -0
  165. package/dist/chunk-QB3ZGAO4.js +57 -0
  166. package/dist/chunk-QB3ZGAO4.js.map +1 -0
  167. package/dist/{chunk-YHXHZINI.js → chunk-QGDZ4IB6.js} +6 -62
  168. package/dist/chunk-QGDZ4IB6.js.map +1 -0
  169. package/dist/chunk-QIP5UCDX.js +16 -0
  170. package/dist/chunk-QIP5UCDX.js.map +1 -0
  171. package/dist/{chunk-5OOQPDVS.cjs → chunk-QOLNS6MT.cjs} +109 -291
  172. package/dist/chunk-QOLNS6MT.cjs.map +1 -0
  173. package/dist/{chunk-MKIO7LCE.cjs → chunk-QQGEBRIG.cjs} +6 -17
  174. package/dist/chunk-QQGEBRIG.cjs.map +1 -0
  175. package/dist/chunk-QTBCX6KF.cjs +84 -0
  176. package/dist/chunk-QTBCX6KF.cjs.map +1 -0
  177. package/dist/{chunk-TRIYMJ4C.cjs → chunk-R2DKW2EK.cjs} +26 -120
  178. package/dist/chunk-R2DKW2EK.cjs.map +1 -0
  179. package/dist/{chunk-W7PA7IJX.js → chunk-R3SMI5BC.js} +5 -259
  180. package/dist/chunk-R3SMI5BC.js.map +1 -0
  181. package/dist/{chunk-E2UIA7IY.cjs → chunk-RCSPGNEZ.cjs} +3 -2
  182. package/dist/chunk-RCSPGNEZ.cjs.map +1 -0
  183. package/dist/{chunk-SAHA4QAC.js → chunk-RKKIUW52.js} +6 -75
  184. package/dist/chunk-RKKIUW52.js.map +1 -0
  185. package/dist/{chunk-R3WEUP7P.cjs → chunk-SE3VUDBK.cjs} +14 -3
  186. package/dist/chunk-SE3VUDBK.cjs.map +1 -0
  187. package/dist/{chunk-6JJCLDVS.cjs → chunk-SI3B7F4U.cjs} +28 -98
  188. package/dist/chunk-SI3B7F4U.cjs.map +1 -0
  189. package/dist/{chunk-ONKZNI7W.cjs → chunk-STHQS3QR.cjs} +116 -116
  190. package/dist/chunk-STHQS3QR.cjs.map +1 -0
  191. package/dist/chunk-TB3QXBEC.js +65 -0
  192. package/dist/chunk-TB3QXBEC.js.map +1 -0
  193. package/dist/chunk-TJIN7OPG.js +69 -0
  194. package/dist/chunk-TJIN7OPG.js.map +1 -0
  195. package/dist/{chunk-SCSCPEXU.cjs → chunk-TKBRQY5C.cjs} +24 -97
  196. package/dist/chunk-TKBRQY5C.cjs.map +1 -0
  197. package/dist/{chunk-TOAWPUWG.cjs → chunk-TSMZEPL3.cjs} +27 -27
  198. package/dist/chunk-TSMZEPL3.cjs.map +1 -0
  199. package/dist/{chunk-4Q3QO4MB.cjs → chunk-U3PO2SCK.cjs} +6 -5
  200. package/dist/chunk-U3PO2SCK.cjs.map +1 -0
  201. package/dist/chunk-U4YUXGDH.cjs +195 -0
  202. package/dist/chunk-U4YUXGDH.cjs.map +1 -0
  203. package/dist/chunk-ULL6VJ5E.cjs +90 -0
  204. package/dist/chunk-ULL6VJ5E.cjs.map +1 -0
  205. package/dist/{chunk-MHYPFRBW.js → chunk-UOJM27PI.js} +4 -83
  206. package/dist/chunk-UOJM27PI.js.map +1 -0
  207. package/dist/{chunk-U53P5KGY.js → chunk-URPQ6FHZ.js} +6 -6
  208. package/dist/chunk-URPQ6FHZ.js.map +1 -0
  209. package/dist/{chunk-R6M5RX3R.cjs → chunk-USD6C4ZL.cjs} +25 -16
  210. package/dist/chunk-USD6C4ZL.cjs.map +1 -0
  211. package/dist/{chunk-5CRPJSGU.js → chunk-USZD5AX2.js} +4 -4
  212. package/dist/chunk-USZD5AX2.js.map +1 -0
  213. package/dist/chunk-V7DWWIJ6.js +18 -0
  214. package/dist/chunk-V7DWWIJ6.js.map +1 -0
  215. package/dist/chunk-VDG7SNSS.js +343 -0
  216. package/dist/chunk-VDG7SNSS.js.map +1 -0
  217. package/dist/{chunk-Z3LL4AAE.js → chunk-VKTJMAUK.js} +6 -8
  218. package/dist/chunk-VKTJMAUK.js.map +1 -0
  219. package/dist/{chunk-KD3YOO6V.cjs → chunk-VTHT3PPM.cjs} +7 -5
  220. package/dist/chunk-VTHT3PPM.cjs.map +1 -0
  221. package/dist/{chunk-BJ7PYBAM.cjs → chunk-W34IV6DV.cjs} +24 -95
  222. package/dist/chunk-W34IV6DV.cjs.map +1 -0
  223. package/dist/{chunk-42NL52FN.js → chunk-WAWVGCSA.js} +5 -24
  224. package/dist/chunk-WAWVGCSA.js.map +1 -0
  225. package/dist/chunk-WOMVBFIP.cjs +81 -0
  226. package/dist/chunk-WOMVBFIP.cjs.map +1 -0
  227. package/dist/{chunk-6WDBVMGU.js → chunk-WXS6DNFY.js} +4 -65
  228. package/dist/chunk-WXS6DNFY.js.map +1 -0
  229. package/dist/{chunk-OFVMF4SA.js → chunk-X2UK65IJ.js} +5 -95
  230. package/dist/chunk-X2UK65IJ.js.map +1 -0
  231. package/dist/{chunk-Q5HPZJ5K.js → chunk-YEGGGHMD.js} +4 -4
  232. package/dist/{chunk-Q5HPZJ5K.js.map → chunk-YEGGGHMD.js.map} +1 -1
  233. package/dist/chunk-YUWWXTL2.cjs +69 -0
  234. package/dist/chunk-YUWWXTL2.cjs.map +1 -0
  235. package/dist/{chunk-WQW3XWRQ.js → chunk-YVN3HW3L.js} +4 -55
  236. package/dist/chunk-YVN3HW3L.js.map +1 -0
  237. package/dist/{chunk-AILL53XB.cjs → chunk-Z2QBLWUE.cjs} +1008 -1325
  238. package/dist/chunk-Z2QBLWUE.cjs.map +1 -0
  239. package/dist/{chunk-QTII22RU.js → chunk-ZMQY23MO.js} +4 -70
  240. package/dist/chunk-ZMQY23MO.js.map +1 -0
  241. package/dist/{chunk-RWLJZWDL.cjs → chunk-ZYXDUS6Q.cjs} +4 -3
  242. package/dist/chunk-ZYXDUS6Q.cjs.map +1 -0
  243. package/dist/dist-47C5ZLC7.js +1 -1
  244. package/dist/dist-BSWYTOHE.js +1 -1
  245. package/dist/dist-GKNLMW5G.js +1 -1
  246. package/dist/dist-RVKG65AN.js +1 -1
  247. package/dist/docs/SKILL.md +1 -1
  248. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  249. package/dist/{observational-memory-YRWU6CY3-OSS4UPF4.cjs → observational-memory-XXD6E2SO-3I4EZBKC.cjs} +308 -40
  250. package/dist/observational-memory-XXD6E2SO-3I4EZBKC.cjs.map +1 -0
  251. package/dist/{observational-memory-YRWU6CY3-I7PD5THQ.js → observational-memory-XXD6E2SO-QVSLOLI6.js} +308 -40
  252. package/dist/observational-memory-XXD6E2SO-QVSLOLI6.js.map +1 -0
  253. package/dist/server/handlers/a2a.cjs +9 -9
  254. package/dist/server/handlers/a2a.d.ts +95 -2
  255. package/dist/server/handlers/a2a.d.ts.map +1 -1
  256. package/dist/server/handlers/a2a.js +1 -1
  257. package/dist/server/handlers/agent-builder.cjs +16 -16
  258. package/dist/server/handlers/agent-builder.d.ts +377 -15
  259. package/dist/server/handlers/agent-builder.d.ts.map +1 -1
  260. package/dist/server/handlers/agent-builder.js +1 -1
  261. package/dist/server/handlers/agent-versions.cjs +8 -8
  262. package/dist/server/handlers/agent-versions.d.ts +13233 -2792
  263. package/dist/server/handlers/agent-versions.d.ts.map +1 -1
  264. package/dist/server/handlers/agent-versions.js +1 -1
  265. package/dist/server/handlers/agents.cjs +33 -33
  266. package/dist/server/handlers/agents.d.ts +4721 -134
  267. package/dist/server/handlers/agents.d.ts.map +1 -1
  268. package/dist/server/handlers/agents.js +1 -1
  269. package/dist/server/handlers/auth.cjs +10 -10
  270. package/dist/server/handlers/auth.d.ts +152 -13
  271. package/dist/server/handlers/auth.d.ts.map +1 -1
  272. package/dist/server/handlers/auth.js +1 -1
  273. package/dist/server/handlers/datasets.cjs +21 -21
  274. package/dist/server/handlers/datasets.d.ts +416 -20
  275. package/dist/server/handlers/datasets.d.ts.map +1 -1
  276. package/dist/server/handlers/datasets.js +1 -1
  277. package/dist/server/handlers/logs.cjs +4 -4
  278. package/dist/server/handlers/logs.d.ts +105 -3
  279. package/dist/server/handlers/logs.d.ts.map +1 -1
  280. package/dist/server/handlers/logs.js +1 -1
  281. package/dist/server/handlers/mcp-client-versions.cjs +8 -8
  282. package/dist/server/handlers/mcp-client-versions.d.ts +197 -7
  283. package/dist/server/handlers/mcp-client-versions.d.ts.map +1 -1
  284. package/dist/server/handlers/mcp-client-versions.js +1 -1
  285. package/dist/server/handlers/mcp.cjs +9 -9
  286. package/dist/server/handlers/mcp.d.ts +73 -8
  287. package/dist/server/handlers/mcp.d.ts.map +1 -1
  288. package/dist/server/handlers/mcp.js +1 -1
  289. package/dist/server/handlers/memory.cjs +27 -27
  290. package/dist/server/handlers/memory.d.ts +579 -25
  291. package/dist/server/handlers/memory.d.ts.map +1 -1
  292. package/dist/server/handlers/memory.js +1 -1
  293. package/dist/server/handlers/observability.cjs +5 -5
  294. package/dist/server/handlers/observability.d.ts +181 -10
  295. package/dist/server/handlers/observability.d.ts.map +1 -1
  296. package/dist/server/handlers/observability.js +1 -1
  297. package/dist/server/handlers/processor-providers.cjs +3 -3
  298. package/dist/server/handlers/processor-providers.d.ts +29 -2
  299. package/dist/server/handlers/processor-providers.d.ts.map +1 -1
  300. package/dist/server/handlers/processor-providers.js +1 -1
  301. package/dist/server/handlers/processors.cjs +4 -4
  302. package/dist/server/handlers/processors.d.ts +113 -3
  303. package/dist/server/handlers/processors.d.ts.map +1 -1
  304. package/dist/server/handlers/processors.js +1 -1
  305. package/dist/server/handlers/prompt-block-versions.cjs +8 -8
  306. package/dist/server/handlers/prompt-block-versions.d.ts +563 -7
  307. package/dist/server/handlers/prompt-block-versions.d.ts.map +1 -1
  308. package/dist/server/handlers/prompt-block-versions.js +1 -1
  309. package/dist/server/handlers/scorer-versions.cjs +8 -8
  310. package/dist/server/handlers/scorer-versions.d.ts +311 -7
  311. package/dist/server/handlers/scorer-versions.d.ts.map +1 -1
  312. package/dist/server/handlers/scorer-versions.js +1 -1
  313. package/dist/server/handlers/scores.cjs +7 -7
  314. package/dist/server/handlers/scores.d.ts +84 -6
  315. package/dist/server/handlers/scores.d.ts.map +1 -1
  316. package/dist/server/handlers/scores.js +1 -1
  317. package/dist/server/handlers/stored-agents.cjs +7 -7
  318. package/dist/server/handlers/stored-agents.d.ts +5965 -6883
  319. package/dist/server/handlers/stored-agents.d.ts.map +1 -1
  320. package/dist/server/handlers/stored-agents.js +1 -1
  321. package/dist/server/handlers/stored-mcp-clients.cjs +6 -6
  322. package/dist/server/handlers/stored-mcp-clients.d.ts +191 -5
  323. package/dist/server/handlers/stored-mcp-clients.d.ts.map +1 -1
  324. package/dist/server/handlers/stored-mcp-clients.js +1 -1
  325. package/dist/server/handlers/stored-prompt-blocks.cjs +6 -6
  326. package/dist/server/handlers/stored-prompt-blocks.d.ts +561 -5
  327. package/dist/server/handlers/stored-prompt-blocks.d.ts.map +1 -1
  328. package/dist/server/handlers/stored-prompt-blocks.js +1 -1
  329. package/dist/server/handlers/stored-scorers.cjs +6 -6
  330. package/dist/server/handlers/stored-scorers.d.ts +305 -5
  331. package/dist/server/handlers/stored-scorers.d.ts.map +1 -1
  332. package/dist/server/handlers/stored-scorers.js +1 -1
  333. package/dist/server/handlers/stored-skills.cjs +7 -7
  334. package/dist/server/handlers/stored-skills.d.ts +235 -6
  335. package/dist/server/handlers/stored-skills.d.ts.map +1 -1
  336. package/dist/server/handlers/stored-skills.js +1 -1
  337. package/dist/server/handlers/stored-workspaces.cjs +6 -6
  338. package/dist/server/handlers/stored-workspaces.d.ts +331 -5
  339. package/dist/server/handlers/stored-workspaces.d.ts.map +1 -1
  340. package/dist/server/handlers/stored-workspaces.js +1 -1
  341. package/dist/server/handlers/system.cjs +2 -2
  342. package/dist/server/handlers/system.d.ts +8 -1
  343. package/dist/server/handlers/system.d.ts.map +1 -1
  344. package/dist/server/handlers/system.js +1 -1
  345. package/dist/server/handlers/tool-providers.cjs +5 -5
  346. package/dist/server/handlers/tool-providers.d.ts +48 -4
  347. package/dist/server/handlers/tool-providers.d.ts.map +1 -1
  348. package/dist/server/handlers/tool-providers.js +1 -1
  349. package/dist/server/handlers/tools.cjs +6 -6
  350. package/dist/server/handlers/tools.d.ts +41 -5
  351. package/dist/server/handlers/tools.d.ts.map +1 -1
  352. package/dist/server/handlers/tools.js +1 -1
  353. package/dist/server/handlers/vector.cjs +16 -16
  354. package/dist/server/handlers/vector.d.ts +67 -8
  355. package/dist/server/handlers/vector.d.ts.map +1 -1
  356. package/dist/server/handlers/vector.js +1 -1
  357. package/dist/server/handlers/voice.cjs +8 -8
  358. package/dist/server/handlers/voice.d.ts +41 -7
  359. package/dist/server/handlers/voice.d.ts.map +1 -1
  360. package/dist/server/handlers/voice.js +1 -1
  361. package/dist/server/handlers/workflows.cjs +24 -24
  362. package/dist/server/handlers/workflows.d.ts +551 -23
  363. package/dist/server/handlers/workflows.d.ts.map +1 -1
  364. package/dist/server/handlers/workflows.js +1 -1
  365. package/dist/server/handlers/workspace.cjs +26 -26
  366. package/dist/server/handlers/workspace.d.ts +664 -39
  367. package/dist/server/handlers/workspace.d.ts.map +1 -1
  368. package/dist/server/handlers/workspace.js +1 -1
  369. package/dist/server/handlers.cjs +26 -26
  370. package/dist/server/handlers.js +13 -13
  371. package/dist/server/schemas/__tests__/route-contracts.typetest.d.ts +2 -0
  372. package/dist/server/schemas/__tests__/route-contracts.typetest.d.ts.map +1 -0
  373. package/dist/server/schemas/index.cjs +1717 -0
  374. package/dist/server/schemas/index.cjs.map +1 -0
  375. package/dist/server/schemas/index.d.ts +33 -0
  376. package/dist/server/schemas/index.d.ts.map +1 -0
  377. package/dist/server/schemas/index.js +32 -0
  378. package/dist/server/schemas/index.js.map +1 -0
  379. package/dist/server/schemas/route-contracts.d.ts +74 -0
  380. package/dist/server/schemas/route-contracts.d.ts.map +1 -0
  381. package/dist/server/server-adapter/index.cjs +290 -294
  382. package/dist/server/server-adapter/index.cjs.map +1 -1
  383. package/dist/server/server-adapter/index.d.ts +4 -0
  384. package/dist/server/server-adapter/index.d.ts.map +1 -1
  385. package/dist/server/server-adapter/index.js +65 -69
  386. package/dist/server/server-adapter/index.js.map +1 -1
  387. package/dist/server/server-adapter/openapi-utils.d.ts +2 -2
  388. package/dist/server/server-adapter/openapi-utils.d.ts.map +1 -1
  389. package/dist/server/server-adapter/routes/a2a.d.ts +187 -2
  390. package/dist/server/server-adapter/routes/a2a.d.ts.map +1 -1
  391. package/dist/server/server-adapter/routes/agent-builder.d.ts +607 -2
  392. package/dist/server/server-adapter/routes/agent-builder.d.ts.map +1 -1
  393. package/dist/server/server-adapter/routes/agents.d.ts +43 -1
  394. package/dist/server/server-adapter/routes/agents.d.ts.map +1 -1
  395. package/dist/server/server-adapter/routes/datasets.d.ts +768 -2
  396. package/dist/server/server-adapter/routes/datasets.d.ts.map +1 -1
  397. package/dist/server/server-adapter/routes/index.d.ts +75 -4
  398. package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
  399. package/dist/server/server-adapter/routes/legacy.d.ts +347 -2
  400. package/dist/server/server-adapter/routes/legacy.d.ts.map +1 -1
  401. package/dist/server/server-adapter/routes/logs.d.ts +193 -2
  402. package/dist/server/server-adapter/routes/logs.d.ts.map +1 -1
  403. package/dist/server/server-adapter/routes/mcp.d.ts +131 -2
  404. package/dist/server/server-adapter/routes/mcp.d.ts.map +1 -1
  405. package/dist/server/server-adapter/routes/memory.d.ts +1082 -2
  406. package/dist/server/server-adapter/routes/memory.d.ts.map +1 -1
  407. package/dist/server/server-adapter/routes/observability.d.ts +308 -2
  408. package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
  409. package/dist/server/server-adapter/routes/processor-providers.d.ts +43 -2
  410. package/dist/server/server-adapter/routes/processor-providers.d.ts.map +1 -1
  411. package/dist/server/server-adapter/routes/processors.d.ts +197 -2
  412. package/dist/server/server-adapter/routes/processors.d.ts.map +1 -1
  413. package/dist/server/server-adapter/routes/route-builder.d.ts +6 -6
  414. package/dist/server/server-adapter/routes/route-builder.d.ts.map +1 -1
  415. package/dist/server/server-adapter/routes/scorers.d.ts +157 -2
  416. package/dist/server/server-adapter/routes/scorers.d.ts.map +1 -1
  417. package/dist/server/server-adapter/routes/stored-agents.d.ts +22 -1
  418. package/dist/server/server-adapter/routes/stored-agents.d.ts.map +1 -1
  419. package/dist/server/server-adapter/routes/stored-mcp-clients.d.ts +720 -2
  420. package/dist/server/server-adapter/routes/stored-mcp-clients.d.ts.map +1 -1
  421. package/dist/server/server-adapter/routes/stored-prompt-blocks.d.ts +1697 -2
  422. package/dist/server/server-adapter/routes/stored-prompt-blocks.d.ts.map +1 -1
  423. package/dist/server/server-adapter/routes/stored-scorers.d.ts +1077 -2
  424. package/dist/server/server-adapter/routes/stored-scorers.d.ts.map +1 -1
  425. package/dist/server/server-adapter/routes/stored-skills.d.ts +459 -2
  426. package/dist/server/server-adapter/routes/stored-skills.d.ts.map +1 -1
  427. package/dist/server/server-adapter/routes/stored-workspaces.d.ts +653 -2
  428. package/dist/server/server-adapter/routes/stored-workspaces.d.ts.map +1 -1
  429. package/dist/server/server-adapter/routes/system.d.ts +8 -1
  430. package/dist/server/server-adapter/routes/system.d.ts.map +1 -1
  431. package/dist/server/server-adapter/routes/tool-providers.d.ts +89 -2
  432. package/dist/server/server-adapter/routes/tool-providers.d.ts.map +1 -1
  433. package/dist/server/server-adapter/routes/tools.d.ts +43 -2
  434. package/dist/server/server-adapter/routes/tools.d.ts.map +1 -1
  435. package/dist/server/server-adapter/routes/vectors.d.ts +119 -2
  436. package/dist/server/server-adapter/routes/vectors.d.ts.map +1 -1
  437. package/dist/server/server-adapter/routes/workflows.d.ts +897 -2
  438. package/dist/server/server-adapter/routes/workflows.d.ts.map +1 -1
  439. package/dist/server/server-adapter/routes/workspace.d.ts +650 -2
  440. package/dist/server/server-adapter/routes/workspace.d.ts.map +1 -1
  441. package/package.json +19 -9
  442. package/schemas.d.ts +1 -0
  443. package/dist/chunk-27QSSHGX.js.map +0 -1
  444. package/dist/chunk-3P34AJWW.js.map +0 -1
  445. package/dist/chunk-42NL52FN.js.map +0 -1
  446. package/dist/chunk-43WGLEEB.js.map +0 -1
  447. package/dist/chunk-4Q3QO4MB.cjs.map +0 -1
  448. package/dist/chunk-5CRPJSGU.js.map +0 -1
  449. package/dist/chunk-5OOQPDVS.cjs.map +0 -1
  450. package/dist/chunk-6JJCLDVS.cjs.map +0 -1
  451. package/dist/chunk-6WDBVMGU.js.map +0 -1
  452. package/dist/chunk-7F2JBD7F.cjs.map +0 -1
  453. package/dist/chunk-AILL53XB.cjs.map +0 -1
  454. package/dist/chunk-BAWISNLT.cjs.map +0 -1
  455. package/dist/chunk-BJ7PYBAM.cjs.map +0 -1
  456. package/dist/chunk-BZMWUSOF.js.map +0 -1
  457. package/dist/chunk-CPEJA5XY.cjs.map +0 -1
  458. package/dist/chunk-D6AEONK2.js.map +0 -1
  459. package/dist/chunk-DRFNY77Q.cjs.map +0 -1
  460. package/dist/chunk-DW6ZTEJ4.cjs.map +0 -1
  461. package/dist/chunk-E2UIA7IY.cjs.map +0 -1
  462. package/dist/chunk-E4NYFEOQ.cjs.map +0 -1
  463. package/dist/chunk-ELLQE6XA.js.map +0 -1
  464. package/dist/chunk-GAATB3SN.cjs.map +0 -1
  465. package/dist/chunk-GTFXCNM6.cjs +0 -343
  466. package/dist/chunk-GTFXCNM6.cjs.map +0 -1
  467. package/dist/chunk-HFOR62M4.js.map +0 -1
  468. package/dist/chunk-IXWCFFVU.cjs.map +0 -1
  469. package/dist/chunk-KD3YOO6V.cjs.map +0 -1
  470. package/dist/chunk-LFB6AUDW.js.map +0 -1
  471. package/dist/chunk-LIMSH6CA.js.map +0 -1
  472. package/dist/chunk-LIXI3MOA.cjs.map +0 -1
  473. package/dist/chunk-MHYPFRBW.js.map +0 -1
  474. package/dist/chunk-MKIO7LCE.cjs.map +0 -1
  475. package/dist/chunk-MOR4VVBW.js.map +0 -1
  476. package/dist/chunk-MWWNB5KJ.js.map +0 -1
  477. package/dist/chunk-NBYRUVSE.cjs.map +0 -1
  478. package/dist/chunk-OBA7KIAW.js.map +0 -1
  479. package/dist/chunk-OFVMF4SA.js.map +0 -1
  480. package/dist/chunk-ONKZNI7W.cjs.map +0 -1
  481. package/dist/chunk-OQG4AAGQ.cjs.map +0 -1
  482. package/dist/chunk-OQZPEQXU.cjs.map +0 -1
  483. package/dist/chunk-PYO3IWOR.js.map +0 -1
  484. package/dist/chunk-QG276LOL.js +0 -335
  485. package/dist/chunk-QG276LOL.js.map +0 -1
  486. package/dist/chunk-QRQAZI3Q.js.map +0 -1
  487. package/dist/chunk-QTII22RU.js.map +0 -1
  488. package/dist/chunk-QYPZ4IND.js.map +0 -1
  489. package/dist/chunk-R3WEUP7P.cjs.map +0 -1
  490. package/dist/chunk-R6M5RX3R.cjs.map +0 -1
  491. package/dist/chunk-RCEX4V4N.cjs.map +0 -1
  492. package/dist/chunk-RWLJZWDL.cjs.map +0 -1
  493. package/dist/chunk-S46TMT6A.cjs.map +0 -1
  494. package/dist/chunk-S5SBIVKP.js.map +0 -1
  495. package/dist/chunk-S7BVUW44.cjs.map +0 -1
  496. package/dist/chunk-SAHA4QAC.js.map +0 -1
  497. package/dist/chunk-SCSCPEXU.cjs.map +0 -1
  498. package/dist/chunk-SVQNZ6U2.js.map +0 -1
  499. package/dist/chunk-TOAWPUWG.cjs.map +0 -1
  500. package/dist/chunk-TRIYMJ4C.cjs.map +0 -1
  501. package/dist/chunk-U53P5KGY.js.map +0 -1
  502. package/dist/chunk-V4RWTVRV.cjs.map +0 -1
  503. package/dist/chunk-VFRQX7CD.cjs.map +0 -1
  504. package/dist/chunk-W7PA7IJX.js.map +0 -1
  505. package/dist/chunk-WQW3XWRQ.js.map +0 -1
  506. package/dist/chunk-XQURD55R.js.map +0 -1
  507. package/dist/chunk-YHXHZINI.js.map +0 -1
  508. package/dist/chunk-Z3LL4AAE.js.map +0 -1
  509. package/dist/observational-memory-YRWU6CY3-I7PD5THQ.js.map +0 -1
  510. package/dist/observational-memory-YRWU6CY3-OSS4UPF4.cjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/server/handlers/agents.ts","../src/server/constants.ts"],"names":["__export","PROVIDER_REGISTRY","stringify","zodToJsonSchema","agent","HTTPException","acc","key","createRoute","z","listAgentsResponseSchema","editor","handleError","agentIdPathParams","serializedAgentSchema","createStoredAgentResponseSchema","toSlug","agentExecutionBodySchema","generateResponseSchema","sanitizeBody","validateBody","getEffectiveResourceId","getEffectiveThreadId","validateThreadOwnership","agentExecutionLegacyBodySchema","streamResponseSchema","providersResponseSchema","approveToolCallBodySchema","toolCallResponseSchema","declineToolCallBodySchema","approveNetworkToolCallBodySchema","declineNetworkToolCallBodySchema","updateAgentModelBodySchema","modelManagementResponseSchema","reorderAgentModelListBodySchema","modelConfigIdPathParams","updateAgentModelInModelListBodySchema","enhanceInstructionsBodySchema","enhanceInstructionsResponseSchema","Agent","MastraError","ErrorCategory","ErrorDomain","agentSkillPathParams","getAgentSkillResponseSchema"],"mappings":"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","file":"chunk-ONKZNI7W.cjs","sourcesContent":["import { Agent } from '@mastra/core/agent';\nimport type { AgentModelManagerConfig } from '@mastra/core/agent';\nimport { ErrorCategory, ErrorDomain, MastraError } from '@mastra/core/error';\nimport { PROVIDER_REGISTRY } from '@mastra/core/llm';\nimport type { ProviderConfig, SystemMessage } from '@mastra/core/llm';\nimport type {\n InputProcessor,\n OutputProcessor,\n InputProcessorOrWorkflow,\n OutputProcessorOrWorkflow,\n} from '@mastra/core/processors';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport { zodToJsonSchema } from '@mastra/core/utils/zod-to-json';\nimport { stringify } from 'superjson';\n\nimport { z } from 'zod';\nimport { WORKSPACE_TOOLS, resolveToolConfig } from '../constants';\nimport type { WorkspaceToolName } from '../constants';\n\nimport { HTTPException } from '../http-exception';\nimport {\n agentIdPathParams,\n agentSkillPathParams,\n listAgentsResponseSchema,\n serializedAgentSchema,\n agentExecutionBodySchema,\n agentExecutionLegacyBodySchema,\n generateResponseSchema,\n streamResponseSchema,\n providersResponseSchema,\n approveToolCallBodySchema,\n declineToolCallBodySchema,\n toolCallResponseSchema,\n updateAgentModelBodySchema,\n reorderAgentModelListBodySchema,\n updateAgentModelInModelListBodySchema,\n modelManagementResponseSchema,\n modelConfigIdPathParams,\n enhanceInstructionsBodySchema,\n enhanceInstructionsResponseSchema,\n approveNetworkToolCallBodySchema,\n declineNetworkToolCallBodySchema,\n} from '../schemas/agents';\nimport { createStoredAgentResponseSchema } from '../schemas/stored-agents';\nimport { getAgentSkillResponseSchema } from '../schemas/workspace';\nimport type { ServerRoute } from '../server-adapter/routes';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\n\nimport { toSlug } from '../utils';\n\nimport { handleError } from './error';\nimport {\n sanitizeBody,\n validateBody,\n getEffectiveResourceId,\n getEffectiveThreadId,\n validateThreadOwnership,\n} from './utils';\n\n/**\n * Checks if a provider has its required API key environment variable(s) configured.\n * Handles provider IDs with suffixes (e.g., \"openai.chat\" -> \"openai\").\n * Also handles custom gateway providers that are stored with gateway prefix (e.g., \"acme/acme-openai\").\n * @param providerId - The provider identifier (may include a suffix like \".chat\" or be from a custom gateway)\n * @param customProviders - Optional record of custom gateway providers to check\n * @returns true if all required environment variables are set, false otherwise\n */\nexport function isProviderConnected(providerId: string, customProviders?: Record<string, ProviderConfig>): boolean {\n // Clean provider ID (e.g., \"openai.chat\" -> \"openai\")\n const cleanId = providerId.includes('.') ? providerId.split('.')[0]! : providerId;\n\n // First, try direct lookup in static registry\n let provider: ProviderConfig | undefined = PROVIDER_REGISTRY[cleanId as keyof typeof PROVIDER_REGISTRY];\n\n // If not found, check custom providers\n if (!provider && customProviders) {\n provider = customProviders[cleanId];\n }\n\n // If not found and doesn't contain a slash, check if it exists with a gateway prefix\n // This handles custom gateway providers stored as \"gateway/provider\" in the registry\n if (!provider && !cleanId.includes('/')) {\n // Search for a provider ID that matches the pattern \"*/cleanId\"\n const registryKeys = Object.keys(PROVIDER_REGISTRY);\n const matchingKey = registryKeys.find(key => {\n // Check if the key matches the pattern \"gateway/providerId\"\n const parts = key.split('/');\n return parts.length === 2 && parts[1] === cleanId;\n });\n\n if (matchingKey) {\n provider = PROVIDER_REGISTRY[matchingKey as keyof typeof PROVIDER_REGISTRY];\n }\n\n if (!provider && customProviders) {\n const customMatchingKey = Object.keys(customProviders).find(key => {\n const parts = key.split('/');\n return parts.length === 2 && parts[1] === cleanId;\n });\n if (customMatchingKey) {\n provider = customProviders[customMatchingKey];\n }\n }\n }\n\n if (!provider) return false;\n\n const envVars = Array.isArray(provider.apiKeyEnvVar) ? provider.apiKeyEnvVar : [provider.apiKeyEnvVar];\n return envVars.every(envVar => !!process.env[envVar]);\n}\n\nexport interface SerializedProcessor {\n id: string;\n name?: string;\n}\n\nexport interface SerializedSkill {\n name: string;\n description: string;\n license?: string;\n}\n\nexport interface SerializedTool {\n id: string;\n description?: string;\n inputSchema?: string;\n outputSchema?: string;\n requestContextSchema?: string;\n requireApproval?: boolean;\n}\n\ninterface SerializedToolInput {\n id?: string;\n description?: string;\n inputSchema?: { jsonSchema?: unknown } | unknown;\n outputSchema?: { jsonSchema?: unknown } | unknown;\n requestContextSchema?: { jsonSchema?: unknown } | unknown;\n}\n\nexport interface SerializedWorkflow {\n name: string;\n steps?: Record<string, { id: string; description?: string }>;\n}\n\nexport interface SerializedAgent {\n name: string;\n description?: string;\n instructions?: SystemMessage;\n tools: Record<string, SerializedTool>;\n agents: Record<string, SerializedAgentDefinition>;\n workflows: Record<string, SerializedWorkflow>;\n skills: SerializedSkill[];\n workspaceTools: string[];\n /** ID of the agent's workspace (if configured) */\n workspaceId?: string;\n inputProcessors: SerializedProcessor[];\n outputProcessors: SerializedProcessor[];\n provider?: string;\n modelId?: string;\n modelVersion?: string;\n modelList?: Array<\n Omit<AgentModelManagerConfig, 'model'> & {\n model: {\n modelId: string;\n provider: string;\n modelVersion: string;\n };\n }\n >;\n // We can't use the true types here because they are not serializable\n defaultOptions?: Record<string, unknown>;\n defaultGenerateOptionsLegacy?: Record<string, unknown>;\n defaultStreamOptionsLegacy?: Record<string, unknown>;\n /** Serialized JSON schema for request context validation */\n requestContextSchema?: string;\n source?: 'code' | 'stored';\n status?: 'draft' | 'published' | 'archived';\n activeVersionId?: string;\n hasDraft?: boolean;\n}\n\nexport interface SerializedAgentWithId extends SerializedAgent {\n id: string;\n}\n\nexport async function getSerializedAgentTools(\n tools: Record<string, SerializedToolInput>,\n partial: boolean = false,\n): Promise<Record<string, SerializedTool>> {\n return Object.entries(tools || {}).reduce<Record<string, SerializedTool>>((acc, [key, tool]) => {\n const toolId = tool.id ?? `tool-${key}`;\n\n let inputSchemaForReturn: string | undefined = undefined;\n let outputSchemaForReturn: string | undefined = undefined;\n let requestContextSchemaForReturn: string | undefined = undefined;\n\n // Only process schemas if not in partial mode\n if (!partial) {\n try {\n if (tool.inputSchema) {\n if (tool.inputSchema && typeof tool.inputSchema === 'object' && 'jsonSchema' in tool.inputSchema) {\n inputSchemaForReturn = stringify(tool.inputSchema.jsonSchema);\n } else if (typeof tool.inputSchema === 'function') {\n const inputSchema = tool.inputSchema();\n if (inputSchema && inputSchema.jsonSchema) {\n inputSchemaForReturn = stringify(inputSchema.jsonSchema);\n }\n } else if (tool.inputSchema) {\n inputSchemaForReturn = stringify(\n zodToJsonSchema(tool.inputSchema as Parameters<typeof zodToJsonSchema>[0]),\n );\n }\n }\n\n if (tool.outputSchema) {\n if (tool.outputSchema && typeof tool.outputSchema === 'object' && 'jsonSchema' in tool.outputSchema) {\n outputSchemaForReturn = stringify(tool.outputSchema.jsonSchema);\n } else if (typeof tool.outputSchema === 'function') {\n const outputSchema = tool.outputSchema();\n if (outputSchema && outputSchema.jsonSchema) {\n outputSchemaForReturn = stringify(outputSchema.jsonSchema);\n }\n } else if (tool.outputSchema) {\n outputSchemaForReturn = stringify(\n zodToJsonSchema(tool.outputSchema as Parameters<typeof zodToJsonSchema>[0]),\n );\n }\n }\n\n if (tool.requestContextSchema) {\n if (\n tool.requestContextSchema &&\n typeof tool.requestContextSchema === 'object' &&\n 'jsonSchema' in tool.requestContextSchema\n ) {\n requestContextSchemaForReturn = stringify(tool.requestContextSchema.jsonSchema);\n } else if (typeof tool.requestContextSchema === 'function') {\n const requestContextSchema = (tool.requestContextSchema as () => { jsonSchema?: unknown })();\n if (requestContextSchema && requestContextSchema.jsonSchema) {\n requestContextSchemaForReturn = stringify(requestContextSchema.jsonSchema);\n }\n } else if (tool.requestContextSchema) {\n requestContextSchemaForReturn = stringify(\n zodToJsonSchema(tool.requestContextSchema as Parameters<typeof zodToJsonSchema>[0]),\n );\n }\n }\n } catch (error) {\n console.error(`Error getting serialized tool`, {\n toolId: tool.id,\n error,\n });\n }\n }\n\n acc[key] = {\n ...tool,\n id: toolId,\n inputSchema: inputSchemaForReturn,\n outputSchema: outputSchemaForReturn,\n requestContextSchema: requestContextSchemaForReturn,\n };\n return acc;\n }, {});\n}\n\nexport function getSerializedProcessors(\n processors: (InputProcessor | OutputProcessor | InputProcessorOrWorkflow | OutputProcessorOrWorkflow)[],\n): SerializedProcessor[] {\n return processors.map(processor => {\n // Processors are class instances or objects with a name property\n // Use the name property if available, otherwise fall back to constructor name\n return {\n id: processor.id,\n name: processor.name || processor.constructor.name,\n };\n });\n}\n\n/**\n * Extract skills from agent's workspace.\n * Uses agent.getWorkspace() to get the workspace and then workspace.skills.list().\n */\nexport async function getSerializedSkillsFromAgent(\n agent: Agent,\n requestContext?: RequestContext,\n): Promise<SerializedSkill[]> {\n try {\n const workspace = await agent.getWorkspace({ requestContext });\n if (!workspace?.skills) {\n return [];\n }\n\n const skillsList = await workspace.skills.list();\n return skillsList.map(skill => ({\n name: skill.name,\n description: skill.description,\n license: skill.license,\n }));\n } catch {\n return [];\n }\n}\n\n/**\n * Get the list of available workspace tools for an agent.\n *\n * Tries to use core's `createWorkspaceTools` for an accurate tool list that\n * respects runtime availability (e.g. `@ast-grep/napi` for ast_edit).\n * Falls back to inlined config-based logic for older core versions that don't\n * export `createWorkspaceTools`.\n */\nexport async function getWorkspaceToolsFromAgent(agent: Agent, requestContext?: RequestContext): Promise<string[]> {\n try {\n const workspace = await agent.getWorkspace({ requestContext });\n if (!workspace) {\n return [];\n }\n\n // Try core's createWorkspaceTools — it checks runtime dep availability\n try {\n const mod = await import('@mastra/core/workspace');\n if (typeof mod.createWorkspaceTools === 'function') {\n return Object.keys(mod.createWorkspaceTools(workspace));\n }\n } catch {\n // Older core version without workspace module — fall through\n }\n\n // Fallback: inlined logic for older core versions.\n // Does not include AST_EDIT — only available via createWorkspaceTools above.\n const tools: string[] = [];\n const isReadOnly = workspace.filesystem?.readOnly ?? false;\n const toolsConfig = workspace.getToolsConfig();\n\n // Helper to check if a tool is enabled\n const isEnabled = (toolName: WorkspaceToolName) => {\n return resolveToolConfig(toolsConfig, toolName).enabled;\n };\n\n // Filesystem tools\n if (workspace.filesystem) {\n // Read tools\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.READ_FILE)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.READ_FILE);\n }\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.LIST_FILES)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.LIST_FILES);\n }\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.FILE_STAT)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.FILE_STAT);\n }\n\n // Write tools only if not readonly\n if (!isReadOnly) {\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.WRITE_FILE)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.WRITE_FILE);\n }\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.EDIT_FILE)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.EDIT_FILE);\n }\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.DELETE)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.DELETE);\n }\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.MKDIR)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.MKDIR);\n }\n }\n\n // Grep tool (filesystem-based, not BM25/vector)\n if (isEnabled(WORKSPACE_TOOLS.FILESYSTEM.GREP)) {\n tools.push(WORKSPACE_TOOLS.FILESYSTEM.GREP);\n }\n }\n\n // Search tools (available if BM25 or vector search is enabled)\n if (workspace.canBM25 || workspace.canVector) {\n if (isEnabled(WORKSPACE_TOOLS.SEARCH.SEARCH)) {\n tools.push(WORKSPACE_TOOLS.SEARCH.SEARCH);\n }\n if (!isReadOnly && isEnabled(WORKSPACE_TOOLS.SEARCH.INDEX)) {\n tools.push(WORKSPACE_TOOLS.SEARCH.INDEX);\n }\n }\n\n // Sandbox tools\n if (workspace.sandbox) {\n if (workspace.sandbox.executeCommand && isEnabled(WORKSPACE_TOOLS.SANDBOX.EXECUTE_COMMAND)) {\n tools.push(WORKSPACE_TOOLS.SANDBOX.EXECUTE_COMMAND);\n }\n }\n\n return tools;\n } catch {\n return [];\n }\n}\n\ninterface SerializedAgentDefinition {\n id: string;\n name: string;\n}\n\nasync function getSerializedAgentDefinition({\n agent,\n requestContext,\n}: {\n agent: Agent;\n requestContext: RequestContext;\n}): Promise<Record<string, SerializedAgentDefinition>> {\n let serializedAgentAgents: Record<string, SerializedAgentDefinition> = {};\n\n if ('listAgents' in agent) {\n const agents = await agent.listAgents({ requestContext });\n serializedAgentAgents = Object.entries(agents || {}).reduce<Record<string, SerializedAgentDefinition>>(\n (acc, [key, agent]) => {\n return {\n ...acc,\n [key]: { id: agent.id, name: agent.name },\n };\n },\n {},\n );\n }\n return serializedAgentAgents;\n}\n\nasync function formatAgentList({\n id,\n mastra,\n agent,\n requestContext,\n partial = false,\n}: {\n id: string;\n mastra: Context['mastra'];\n agent: Agent;\n requestContext: RequestContext;\n partial?: boolean;\n}): Promise<SerializedAgentWithId> {\n const description = agent.getDescription();\n const instructions = await agent.getInstructions({ requestContext });\n const tools = await agent.listTools({ requestContext });\n const llm = await agent.getLLM({ requestContext });\n const defaultGenerateOptionsLegacy = await agent.getDefaultGenerateOptionsLegacy({ requestContext });\n const defaultStreamOptionsLegacy = await agent.getDefaultStreamOptionsLegacy({ requestContext });\n const defaultOptions = await agent.getDefaultOptions({ requestContext });\n const serializedAgentTools = await getSerializedAgentTools(tools, partial);\n\n let serializedAgentWorkflows: Record<\n string,\n { name: string; steps?: Record<string, { id: string; description?: string }> }\n > = {};\n\n const logger = mastra.getLogger();\n\n if ('listWorkflows' in agent) {\n try {\n const workflows = await agent.listWorkflows({ requestContext });\n serializedAgentWorkflows = Object.entries(workflows || {}).reduce<\n Record<string, { name: string; steps?: Record<string, { id: string; description?: string }> }>\n >((acc, [key, workflow]) => {\n return {\n ...acc,\n [key]: {\n name: workflow.name || 'Unnamed workflow',\n },\n };\n }, {});\n } catch (error) {\n logger.error('Error getting workflows for agent', { agentName: agent.name, error });\n }\n }\n\n const serializedAgentAgents = await getSerializedAgentDefinition({ agent, requestContext });\n\n // Get and serialize only user-configured processors (excludes memory-derived processors)\n // This ensures the UI only shows processors explicitly configured by the user\n let serializedInputProcessors: ReturnType<typeof getSerializedProcessors> = [];\n let serializedOutputProcessors: ReturnType<typeof getSerializedProcessors> = [];\n try {\n const configuredProcessorWorkflows = await agent.getConfiguredProcessorWorkflows();\n const inputProcessorWorkflows = configuredProcessorWorkflows.filter(w => w.id.endsWith('-input-processor'));\n const outputProcessorWorkflows = configuredProcessorWorkflows.filter(w => w.id.endsWith('-output-processor'));\n serializedInputProcessors = getSerializedProcessors(inputProcessorWorkflows);\n serializedOutputProcessors = getSerializedProcessors(outputProcessorWorkflows);\n } catch (error) {\n logger.error('Error getting configured processors for agent', { agentName: agent.name, error });\n }\n\n // Extract skills, workspace tools, and workspaceId from agent's workspace\n const serializedSkills = await getSerializedSkillsFromAgent(agent, requestContext);\n const workspaceTools = await getWorkspaceToolsFromAgent(agent, requestContext);\n\n // Get workspaceId if agent has a workspace\n let workspaceId: string | undefined;\n try {\n const workspace = await agent.getWorkspace({ requestContext });\n workspaceId = workspace?.id;\n } catch {\n // Agent doesn't have a workspace or can't access it\n }\n\n const model = llm?.getModel();\n const models = await agent.getModelList(requestContext);\n const modelList = models?.map(md => ({\n ...md,\n model: {\n modelId: md.model.modelId,\n provider: md.model.provider,\n modelVersion: md.model.specificationVersion,\n },\n }));\n\n // Serialize requestContextSchema if present\n let serializedRequestContextSchema: string | undefined;\n if (agent.requestContextSchema) {\n try {\n serializedRequestContextSchema = stringify(zodToJsonSchema(agent.requestContextSchema));\n } catch (error) {\n logger.error('Error serializing requestContextSchema for agent', { agentName: agent.name, error });\n }\n }\n\n return {\n id: agent.id || id,\n name: agent.name,\n description,\n instructions,\n agents: serializedAgentAgents,\n tools: serializedAgentTools,\n workflows: serializedAgentWorkflows,\n skills: serializedSkills,\n workspaceTools,\n workspaceId,\n inputProcessors: serializedInputProcessors,\n outputProcessors: serializedOutputProcessors,\n provider: llm?.getProvider(),\n modelId: llm?.getModelId(),\n modelVersion: model?.specificationVersion,\n defaultOptions,\n modelList,\n defaultGenerateOptionsLegacy,\n defaultStreamOptionsLegacy,\n requestContextSchema: serializedRequestContextSchema,\n source: (agent as any).source ?? 'code',\n ...(agent.toRawConfig()?.status\n ? { status: agent.toRawConfig()!.status as 'draft' | 'published' | 'archived' }\n : {}),\n ...(agent.toRawConfig()?.activeVersionId\n ? { activeVersionId: agent.toRawConfig()!.activeVersionId as string }\n : {}),\n hasDraft: !!(\n agent.toRawConfig()?.resolvedVersionId &&\n agent.toRawConfig()?.activeVersionId &&\n agent.toRawConfig()!.resolvedVersionId !== agent.toRawConfig()!.activeVersionId\n ),\n };\n}\n\nexport async function getAgentFromSystem({ mastra, agentId }: { mastra: Context['mastra']; agentId: string }) {\n const logger = mastra.getLogger();\n\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n let agent;\n\n try {\n agent = mastra.getAgentById(agentId);\n } catch (error) {\n logger.debug('Error getting agent from mastra, searching agents for agent', error);\n }\n\n if (!agent) {\n logger.debug(`Agent ${agentId} not found, looking through sub-agents`);\n const agents = mastra.listAgents();\n if (Object.keys(agents || {}).length) {\n for (const [_, ag] of Object.entries(agents)) {\n try {\n const subAgents = await ag.listAgents();\n\n if (subAgents[agentId]) {\n agent = subAgents[agentId];\n break;\n }\n } catch (error) {\n logger.debug('Error getting agent from agent', error);\n }\n }\n }\n }\n\n // If a code-defined agent was found, apply stored config overrides (if any)\n if (agent && mastra.getEditor) {\n try {\n const editorAgent = mastra.getEditor()?.agent;\n if (editorAgent) {\n agent = await editorAgent.applyStoredOverrides(agent);\n }\n } catch (error) {\n logger.debug('Error applying stored overrides to code agent', error);\n }\n }\n\n // If still not found, try to get stored agent\n if (!agent) {\n logger.debug(`Agent ${agentId} not found in code-defined agents, looking in stored agents`);\n try {\n agent = (await mastra.getEditor()?.agent.getById(agentId)) ?? null;\n } catch (error) {\n logger.debug('Error getting stored agent', error);\n }\n }\n\n if (!agent) {\n throw new HTTPException(404, { message: `Agent with id ${agentId} not found` });\n }\n\n return agent;\n}\n\nasync function formatAgent({\n mastra,\n agent,\n requestContext,\n isStudio,\n}: {\n mastra: Context['mastra'];\n agent: Agent;\n requestContext: RequestContext;\n isStudio: boolean;\n}): Promise<SerializedAgent> {\n const description = agent.getDescription();\n\n const tools = await agent.listTools({ requestContext });\n const serializedAgentTools = await getSerializedAgentTools(tools);\n\n let serializedAgentWorkflows: Record<\n string,\n { name: string; steps: Record<string, { id: string; description?: string }> }\n > = {};\n\n if ('listWorkflows' in agent) {\n const logger = mastra.getLogger();\n try {\n const workflows = await agent.listWorkflows({ requestContext });\n\n serializedAgentWorkflows = Object.entries(workflows || {}).reduce<\n Record<string, { name: string; steps: Record<string, { id: string; description?: string }> }>\n >((acc, [key, workflow]) => {\n return {\n ...acc,\n [key]: {\n name: workflow.name || 'Unnamed workflow',\n steps: Object.entries(workflow.steps).reduce<Record<string, { id: string; description?: string }>>(\n (acc, [key, step]) => {\n return {\n ...acc,\n [key]: {\n id: step.id,\n description: step.description,\n },\n };\n },\n {},\n ),\n },\n };\n }, {});\n } catch (error) {\n logger.error('Error getting workflows for agent', { agentName: agent.name, error });\n }\n }\n\n let proxyRequestContext = requestContext;\n if (isStudio) {\n proxyRequestContext = new Proxy(requestContext, {\n get(target, prop) {\n if (prop === 'get') {\n return function (key: string) {\n const value = target.get(key);\n return value ?? `<${key}>`;\n };\n }\n return Reflect.get(target, prop);\n },\n });\n }\n\n const instructions = await agent.getInstructions({ requestContext: proxyRequestContext });\n const llm = await agent.getLLM({ requestContext });\n const defaultGenerateOptionsLegacy = await agent.getDefaultGenerateOptionsLegacy({\n requestContext: proxyRequestContext,\n });\n const defaultStreamOptionsLegacy = await agent.getDefaultStreamOptionsLegacy({ requestContext: proxyRequestContext });\n const defaultOptions = await agent.getDefaultOptions({ requestContext: proxyRequestContext });\n\n const model = llm?.getModel();\n const models = await agent.getModelList(requestContext);\n const modelList = models?.map(md => ({\n ...md,\n model: {\n modelId: md.model.modelId,\n provider: md.model.provider,\n modelVersion: md.model.specificationVersion,\n },\n }));\n\n const serializedAgentAgents = await getSerializedAgentDefinition({ agent, requestContext: proxyRequestContext });\n\n // Get and serialize only user-configured processors (excludes memory-derived processors)\n // This ensures the UI only shows processors explicitly configured by the user\n let serializedInputProcessors: ReturnType<typeof getSerializedProcessors> = [];\n let serializedOutputProcessors: ReturnType<typeof getSerializedProcessors> = [];\n try {\n const configuredProcessorWorkflows = await agent.getConfiguredProcessorWorkflows();\n const inputProcessorWorkflows = configuredProcessorWorkflows.filter(w => w.id.endsWith('-input-processor'));\n const outputProcessorWorkflows = configuredProcessorWorkflows.filter(w => w.id.endsWith('-output-processor'));\n serializedInputProcessors = getSerializedProcessors(inputProcessorWorkflows);\n serializedOutputProcessors = getSerializedProcessors(outputProcessorWorkflows);\n } catch (error) {\n mastra.getLogger().error('Error getting configured processors for agent', { agentName: agent.name, error });\n }\n\n // Extract skills, workspace tools, and workspaceId from agent's workspace\n const serializedSkills = await getSerializedSkillsFromAgent(agent, proxyRequestContext);\n const workspaceTools = await getWorkspaceToolsFromAgent(agent, proxyRequestContext);\n\n // Get workspaceId if agent has a workspace\n let workspaceId: string | undefined;\n try {\n const workspace = await agent.getWorkspace({ requestContext: proxyRequestContext });\n workspaceId = workspace?.id;\n } catch {\n // Agent doesn't have a workspace or can't access it\n }\n\n // Serialize requestContextSchema if present\n let serializedRequestContextSchema: string | undefined;\n if (agent.requestContextSchema) {\n try {\n serializedRequestContextSchema = stringify(zodToJsonSchema(agent.requestContextSchema));\n } catch (error) {\n mastra.getLogger().error('Error serializing requestContextSchema for agent', { agentName: agent.name, error });\n }\n }\n\n return {\n name: agent.name,\n description,\n instructions,\n tools: serializedAgentTools,\n agents: serializedAgentAgents,\n workflows: serializedAgentWorkflows,\n skills: serializedSkills,\n workspaceTools,\n workspaceId,\n inputProcessors: serializedInputProcessors,\n outputProcessors: serializedOutputProcessors,\n provider: llm?.getProvider(),\n modelId: llm?.getModelId(),\n modelVersion: model?.specificationVersion,\n modelList,\n defaultOptions,\n defaultGenerateOptionsLegacy,\n defaultStreamOptionsLegacy,\n requestContextSchema: serializedRequestContextSchema,\n source: (agent as any).source ?? 'code',\n ...(agent.toRawConfig()?.status\n ? { status: agent.toRawConfig()!.status as 'draft' | 'published' | 'archived' }\n : {}),\n };\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_AGENTS_ROUTE = createRoute({\n method: 'GET',\n path: '/agents',\n responseType: 'json',\n queryParamSchema: z.object({\n partial: z.string().optional(),\n }),\n responseSchema: listAgentsResponseSchema,\n summary: 'List all agents',\n description: 'Returns a list of all available agents in the system (both code-defined and stored)',\n tags: ['Agents'],\n requiresAuth: true,\n requiresPermission: 'agents:read',\n handler: async ({ mastra, requestContext, partial }) => {\n try {\n const codeAgents = mastra.listAgents();\n\n const isPartial = partial === 'true';\n\n // Apply stored config overrides to code-defined agents before serializing\n const editor = mastra.getEditor?.();\n const serializedCodeAgentsMap = await Promise.all(\n Object.entries(codeAgents).map(async ([id, agent]) => {\n let mergedAgent = agent;\n if (editor) {\n try {\n mergedAgent = await editor.agent.applyStoredOverrides(agent);\n } catch {\n // If overrides fail, use the original code agent\n }\n }\n return formatAgentList({ id, mastra, agent: mergedAgent, requestContext, partial: isPartial });\n }),\n );\n\n const serializedAgents = serializedCodeAgentsMap.reduce<Record<string, (typeof serializedCodeAgentsMap)[number]>>(\n (acc, { id, ...rest }) => {\n acc[id] = { id, ...rest };\n return acc;\n },\n {},\n );\n\n // Also fetch and include stored agents\n try {\n const editor = mastra.getEditor();\n\n let storedAgentsResult;\n try {\n storedAgentsResult = await editor?.agent.list();\n } catch (error) {\n console.error('Error listing stored agents:', error);\n storedAgentsResult = null;\n }\n\n if (storedAgentsResult?.agents) {\n // Process each agent individually to avoid one bad agent breaking the whole list\n for (const storedAgentConfig of storedAgentsResult.agents) {\n try {\n const agent = await editor?.agent.getById(storedAgentConfig.id, { status: 'draft' });\n if (!agent) continue;\n\n const serialized = await formatAgentList({\n id: agent.id,\n mastra,\n agent,\n requestContext,\n partial: isPartial,\n });\n\n // Don't overwrite code-defined agents with same ID\n if (!serializedAgents[serialized.id]) {\n serializedAgents[serialized.id] = serialized;\n }\n } catch (agentError) {\n // Log but continue with other agents\n const logger = mastra.getLogger();\n logger.warn('Failed to serialize stored agent', { agentId: storedAgentConfig.id, error: agentError });\n }\n }\n }\n } catch (storageError) {\n // Storage not configured or doesn't support agents - log and ignore\n const logger = mastra.getLogger();\n logger.debug('Could not fetch stored agents', { error: storageError });\n }\n\n return serializedAgents;\n } catch (error) {\n return handleError(error, 'Error getting agents');\n }\n },\n});\n\nexport const GET_AGENT_BY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n responseSchema: serializedAgentSchema,\n summary: 'Get agent by ID',\n description: 'Returns details for a specific agent including configuration, tools, and memory settings',\n tags: ['Agents'],\n requiresAuth: true,\n requiresPermission: 'agents:read',\n handler: async ({ agentId, mastra, requestContext }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n const isStudio = false; // TODO: Get from context if needed\n const result = await formatAgent({\n mastra,\n agent,\n requestContext,\n isStudio,\n });\n return result;\n } catch (error) {\n return handleError(error, 'Error getting agent');\n }\n },\n});\n\n/**\n * POST /agents/:agentId/clone - Clone an agent to a stored agent\n */\nexport const CLONE_AGENT_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/clone',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: z.object({\n newId: z.string().optional().describe('ID for the cloned agent. If not provided, derived from agent ID.'),\n newName: z.string().optional().describe('Name for the cloned agent. Defaults to \"{name} (Clone)\".'),\n metadata: z.record(z.string(), z.unknown()).optional(),\n authorId: z.string().optional(),\n }),\n responseSchema: createStoredAgentResponseSchema,\n summary: 'Clone agent',\n description: 'Clones a code-defined or stored agent to a new stored agent in the database',\n tags: ['Agents'],\n requiresAuth: true,\n handler: async ({ agentId, mastra, newId, newName, metadata, authorId, requestContext }) => {\n try {\n const editor = mastra.getEditor();\n if (!editor) {\n return handleError(new Error('Editor is not configured on the Mastra instance'), 'Error cloning agent');\n }\n\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const cloneId = toSlug(newId || `${agentId}-clone`);\n\n const result = await editor.agent.clone(agent, {\n newId: cloneId,\n newName,\n metadata,\n authorId,\n requestContext,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error cloning agent');\n }\n },\n});\n\nexport const GENERATE_AGENT_ROUTE: ServerRoute<\n z.infer<typeof agentIdPathParams> & z.infer<typeof agentExecutionBodySchema>,\n unknown\n> = createRoute({\n method: 'POST',\n path: '/agents/:agentId/generate',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: generateResponseSchema,\n summary: 'Generate agent response',\n description: 'Executes an agent with the provided messages and returns the complete response',\n tags: ['Agents'],\n requiresAuth: true,\n requiresPermission: 'agents:execute',\n handler: async ({ agentId, mastra, abortSignal, requestContext: serverRequestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const { messages, memory: memoryOption, requestContext: bodyRequestContext, ...rest } = params;\n\n validateBody({ messages });\n\n // Merge body's requestContext values into the server's RequestContext instance\n // Only set values that don't already exist on the server context to prevent\n // clients from overwriting server-populated auth/tenant values\n if (bodyRequestContext && typeof bodyRequestContext === 'object') {\n for (const [key, value] of Object.entries(bodyRequestContext)) {\n if (serverRequestContext.get(key) === undefined) {\n serverRequestContext.set(key, value);\n }\n }\n }\n\n // Authorization: apply context overrides to memory option if present\n let authorizedMemoryOption = memoryOption;\n if (memoryOption) {\n const clientThreadId = typeof memoryOption.thread === 'string' ? memoryOption.thread : memoryOption.thread?.id;\n\n const effectiveResourceId = getEffectiveResourceId(serverRequestContext, memoryOption.resource);\n const effectiveThreadId = getEffectiveThreadId(serverRequestContext, clientThreadId);\n\n // Validate thread ownership if accessing an existing thread\n if (effectiveThreadId && effectiveResourceId) {\n const memoryInstance = await agent.getMemory({ requestContext: serverRequestContext });\n if (memoryInstance) {\n const thread = await memoryInstance.getThreadById({ threadId: effectiveThreadId });\n await validateThreadOwnership(thread, effectiveResourceId);\n }\n }\n\n // Build authorized memory option with effective values\n authorizedMemoryOption = {\n ...memoryOption,\n resource: effectiveResourceId ?? memoryOption.resource,\n thread: effectiveThreadId ?? memoryOption.thread,\n };\n }\n\n const { structuredOutput, ...restOptions } = rest;\n\n const options = {\n ...restOptions,\n requestContext: serverRequestContext,\n memory: authorizedMemoryOption,\n abortSignal,\n };\n\n const result = structuredOutput\n ? await agent.generate(messages, { ...options, structuredOutput })\n : await agent.generate(messages, options);\n\n return result;\n } catch (error) {\n return handleError(error, 'Error generating from agent');\n }\n },\n});\n\n// Legacy routes (deprecated)\nexport const GENERATE_LEGACY_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/generate-legacy',\n responseType: 'json' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionLegacyBodySchema,\n responseSchema: generateResponseSchema,\n summary: '[DEPRECATED] Generate with legacy format',\n description: 'Legacy endpoint for generating agent responses. Use /agents/:agentId/generate instead.',\n tags: ['Agents', 'Legacy'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, abortSignal, requestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const { messages, resourceId, resourceid, threadId, ...rest } = params;\n // Use resourceId if provided, fall back to resourceid (deprecated)\n const clientResourceId = resourceId ?? resourceid;\n\n // Authorization: context values take precedence over client-provided values\n const effectiveResourceId = getEffectiveResourceId(requestContext, clientResourceId);\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n\n validateBody({ messages });\n\n if ((effectiveThreadId && !effectiveResourceId) || (!effectiveThreadId && effectiveResourceId)) {\n throw new HTTPException(400, { message: 'Both threadId or resourceId must be provided' });\n }\n\n // Validate thread ownership if accessing an existing thread\n if (effectiveThreadId && effectiveResourceId) {\n const memory = await agent.getMemory({ requestContext });\n if (memory) {\n const thread = await memory.getThreadById({ threadId: effectiveThreadId });\n await validateThreadOwnership(thread, effectiveResourceId);\n }\n }\n\n const result = await agent.generateLegacy(messages, {\n ...rest,\n abortSignal,\n resourceId: effectiveResourceId ?? '',\n threadId: effectiveThreadId ?? '',\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error generating from agent');\n }\n },\n});\n\nexport const STREAM_GENERATE_LEGACY_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/stream-legacy',\n responseType: 'datastream-response' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionLegacyBodySchema,\n responseSchema: streamResponseSchema,\n summary: '[DEPRECATED] Stream with legacy format',\n description: 'Legacy endpoint for streaming agent responses. Use /agents/:agentId/stream instead.',\n tags: ['Agents', 'Legacy'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, abortSignal, requestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const { messages, resourceId, resourceid, threadId, ...rest } = params;\n // Use resourceId if provided, fall back to resourceid (deprecated)\n const clientResourceId = resourceId ?? resourceid;\n\n // Authorization: context values take precedence over client-provided values\n const effectiveResourceId = getEffectiveResourceId(requestContext, clientResourceId);\n const effectiveThreadId = getEffectiveThreadId(requestContext, threadId);\n\n validateBody({ messages });\n\n if ((effectiveThreadId && !effectiveResourceId) || (!effectiveThreadId && effectiveResourceId)) {\n throw new HTTPException(400, { message: 'Both threadId or resourceId must be provided' });\n }\n\n // Validate thread ownership if accessing an existing thread\n if (effectiveThreadId && effectiveResourceId) {\n const memory = await agent.getMemory({ requestContext });\n if (memory) {\n const thread = await memory.getThreadById({ threadId: effectiveThreadId });\n await validateThreadOwnership(thread, effectiveResourceId);\n }\n }\n\n const streamResult = await agent.streamLegacy(messages, {\n ...rest,\n abortSignal,\n resourceId: effectiveResourceId ?? '',\n threadId: effectiveThreadId ?? '',\n });\n\n const streamResponse = rest.output\n ? streamResult.toTextStreamResponse({\n headers: {\n 'Transfer-Encoding': 'chunked',\n },\n })\n : streamResult.toDataStreamResponse({\n sendUsage: true,\n sendReasoning: true,\n getErrorMessage: (error: any) => {\n return `An error occurred while processing your request. ${error instanceof Error ? error.message : JSON.stringify(error)}`;\n },\n headers: {\n 'Transfer-Encoding': 'chunked',\n },\n });\n\n return streamResponse;\n } catch (error) {\n return handleError(error, 'error streaming agent response');\n }\n },\n});\n\nexport const GET_PROVIDERS_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/providers',\n responseType: 'json',\n responseSchema: providersResponseSchema,\n summary: 'List AI providers',\n description: 'Returns a list of all configured AI model providers',\n tags: ['Agents'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const allProviders: Record<string, ProviderConfig> = {};\n\n for (const [id, provider] of Object.entries(PROVIDER_REGISTRY)) {\n allProviders[id] = provider;\n }\n\n if (mastra) {\n const customGateways = mastra.listGateways();\n if (customGateways) {\n for (const gateway of Object.values(customGateways)) {\n try {\n const customProviders = await gateway.fetchProviders();\n for (const [providerId, config] of Object.entries(customProviders)) {\n allProviders[providerId] = config;\n }\n } catch (error) {\n console.warn(`Failed to fetch providers from gateway \"${gateway.id}\":`, error);\n }\n }\n }\n }\n\n const providers = Object.entries(allProviders).map(([id, provider]) => {\n return {\n id,\n name: provider.name,\n label: (provider as any).label || provider.name,\n description: (provider as any).description || '',\n envVar: provider.apiKeyEnvVar,\n connected: isProviderConnected(id, allProviders),\n docUrl: provider.docUrl,\n models: [...provider.models],\n };\n });\n return { providers };\n } catch (error) {\n return handleError(error, 'Error fetching providers');\n }\n },\n});\n\nexport const GENERATE_AGENT_VNEXT_ROUTE: ServerRoute<\n z.infer<typeof agentIdPathParams> & z.infer<typeof agentExecutionBodySchema>,\n unknown\n> = createRoute({\n method: 'POST',\n path: '/agents/:agentId/generate/vnext',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: generateResponseSchema,\n summary: 'Generate a response from an agent',\n description: 'Generate a response from an agent',\n tags: ['Agents'],\n requiresAuth: true,\n handler: GENERATE_AGENT_ROUTE.handler,\n});\n\nexport const STREAM_GENERATE_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/stream',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream agent response',\n description: 'Executes an agent with the provided messages and streams the response in real-time',\n tags: ['Agents'],\n requiresAuth: true,\n requiresPermission: 'agents:execute',\n handler: async ({ mastra, agentId, abortSignal, requestContext: serverRequestContext, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const { messages, memory: memoryOption, requestContext: bodyRequestContext, ...rest } = params;\n validateBody({ messages });\n\n // Merge body's requestContext values into the server's RequestContext instance\n // Only set values that don't already exist on the server context to prevent\n // clients from overwriting server-populated auth/tenant values\n if (bodyRequestContext && typeof bodyRequestContext === 'object') {\n for (const [key, value] of Object.entries(bodyRequestContext)) {\n if (serverRequestContext.get(key) === undefined) {\n serverRequestContext.set(key, value);\n }\n }\n }\n\n // Authorization: apply context overrides to memory option if present\n let authorizedMemoryOption = memoryOption;\n if (memoryOption) {\n const clientThreadId = typeof memoryOption.thread === 'string' ? memoryOption.thread : memoryOption.thread?.id;\n\n const effectiveResourceId = getEffectiveResourceId(serverRequestContext, memoryOption.resource);\n const effectiveThreadId = getEffectiveThreadId(serverRequestContext, clientThreadId);\n\n // Validate thread ownership if accessing an existing thread\n if (effectiveThreadId && effectiveResourceId) {\n const memoryInstance = await agent.getMemory({ requestContext: serverRequestContext });\n if (memoryInstance) {\n const thread = await memoryInstance.getThreadById({ threadId: effectiveThreadId });\n await validateThreadOwnership(thread, effectiveResourceId);\n }\n }\n\n // Build authorized memory option with effective values\n authorizedMemoryOption = {\n ...memoryOption,\n resource: effectiveResourceId ?? memoryOption.resource,\n thread: effectiveThreadId ?? memoryOption.thread,\n };\n }\n\n const { structuredOutput, ...restOptions } = rest;\n\n const options = {\n ...restOptions,\n requestContext: serverRequestContext,\n memory: authorizedMemoryOption,\n abortSignal,\n };\n\n const streamResult = structuredOutput\n ? await agent.stream(messages, { ...options, structuredOutput })\n : await agent.stream(messages, options);\n\n return streamResult.fullStream;\n } catch (error) {\n return handleError(error, 'error streaming agent response');\n }\n },\n});\n\nexport const STREAM_GENERATE_VNEXT_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/stream/vnext',\n responseType: 'stream',\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream a response from an agent',\n description: '[DEPRECATED] This endpoint is deprecated. Please use /stream instead.',\n tags: ['Agents'],\n requiresAuth: true,\n deprecated: true,\n handler: STREAM_GENERATE_ROUTE.handler,\n});\n\nexport const APPROVE_TOOL_CALL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/approve-tool-call',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: approveToolCallBodySchema,\n responseSchema: toolCallResponseSchema,\n summary: 'Approve tool call',\n description: 'Approves a pending tool call and continues agent execution',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, abortSignal, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n if (!params.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n if (!params.toolCallId) {\n throw new HTTPException(400, { message: 'Tool call id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const streamResult = await agent.approveToolCall({\n ...params,\n abortSignal,\n });\n\n return streamResult.fullStream;\n } catch (error) {\n return handleError(error, 'error approving tool call');\n }\n },\n});\n\nexport const DECLINE_TOOL_CALL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/decline-tool-call',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: declineToolCallBodySchema,\n responseSchema: toolCallResponseSchema,\n summary: 'Decline tool call',\n description: 'Declines a pending tool call and continues agent execution without executing the tool',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, abortSignal, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n if (!params.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n if (!params.toolCallId) {\n throw new HTTPException(400, { message: 'Tool call id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const streamResult = await agent.declineToolCall({\n ...params,\n abortSignal,\n });\n\n return streamResult.fullStream;\n } catch (error) {\n return handleError(error, 'error declining tool call');\n }\n },\n});\n\nexport const APPROVE_TOOL_CALL_GENERATE_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/approve-tool-call-generate',\n responseType: 'json' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: approveToolCallBodySchema,\n responseSchema: generateResponseSchema,\n summary: 'Approve tool call (non-streaming)',\n description: 'Approves a pending tool call and returns the complete response',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, abortSignal, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n if (!params.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n if (!params.toolCallId) {\n throw new HTTPException(400, { message: 'Tool call id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const result = await agent.approveToolCallGenerate({\n ...params,\n abortSignal,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'error approving tool call');\n }\n },\n});\n\nexport const DECLINE_TOOL_CALL_GENERATE_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/decline-tool-call-generate',\n responseType: 'json' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: declineToolCallBodySchema,\n responseSchema: generateResponseSchema,\n summary: 'Decline tool call (non-streaming)',\n description: 'Declines a pending tool call and returns the complete response',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, abortSignal, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n if (!params.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n if (!params.toolCallId) {\n throw new HTTPException(400, { message: 'Tool call id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const result = await agent.declineToolCallGenerate({\n ...params,\n abortSignal,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'error declining tool call');\n }\n },\n});\n\nexport const STREAM_NETWORK_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/network',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream agent network',\n description: 'Executes an agent network with multiple agents and streams the response',\n tags: ['Agents'],\n requiresAuth: true,\n handler: async ({ mastra, messages, agentId, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n validateBody({ messages });\n\n const streamResult = await agent.network(messages, {\n ...params,\n });\n\n return streamResult;\n } catch (error) {\n return handleError(error, 'error streaming agent loop response');\n }\n },\n});\n\nexport const APPROVE_NETWORK_TOOL_CALL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/approve-network-tool-call',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: approveNetworkToolCallBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Approve network tool call',\n description: 'Approves a pending network tool call and continues network agent execution',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n if (!params.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const streamResult = await agent.approveNetworkToolCall({\n ...params,\n });\n\n return streamResult;\n } catch (error) {\n return handleError(error, 'error approving network tool call');\n }\n },\n});\n\nexport const DECLINE_NETWORK_TOOL_CALL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/decline-network-tool-call',\n responseType: 'stream' as const,\n streamFormat: 'sse' as const,\n pathParamSchema: agentIdPathParams,\n bodySchema: declineNetworkToolCallBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Decline network tool call',\n description: 'Declines a pending network tool call and continues network agent execution without executing the tool',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, ...params }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n if (!params.runId) {\n throw new HTTPException(400, { message: 'Run id is required' });\n }\n\n // UI Frameworks may send \"client tools\" in the body,\n // but it interferes with llm providers tool handling, so we remove them\n sanitizeBody(params, ['tools']);\n\n const streamResult = await agent.declineNetworkToolCall({\n ...params,\n });\n\n return streamResult;\n } catch (error) {\n return handleError(error, 'error declining network tool call');\n }\n },\n});\n\nexport const UPDATE_AGENT_MODEL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/model',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: updateAgentModelBodySchema,\n responseSchema: modelManagementResponseSchema,\n summary: 'Update agent model',\n description: 'Updates the AI model used by the agent',\n tags: ['Agents', 'Models'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, modelId, provider }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // Use the universal Mastra router format: provider/model\n const newModel = `${provider}/${modelId}`;\n\n // Update the model in-memory only (for temporary testing)\n // This allows users to test different models without persisting\n // To save permanently, users should use the Edit agent dialog\n agent.__updateModel({ model: newModel });\n\n return { message: 'Agent model updated' };\n } catch (error) {\n return handleError(error, 'error updating agent model');\n }\n },\n});\n\nexport const RESET_AGENT_MODEL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/model/reset',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n responseSchema: modelManagementResponseSchema,\n summary: 'Reset agent model',\n description: 'Resets the agent model to its original configuration',\n tags: ['Agents', 'Models'],\n requiresAuth: true,\n handler: async ({ mastra, agentId }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n agent.__resetToOriginalModel();\n\n return { message: 'Agent model reset to original' };\n } catch (error) {\n return handleError(error, 'error resetting agent model');\n }\n },\n});\n\nexport const REORDER_AGENT_MODEL_LIST_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/models/reorder',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: reorderAgentModelListBodySchema,\n responseSchema: modelManagementResponseSchema,\n summary: 'Reorder agent model list',\n description: 'Reorders the model list for agents with multiple model configurations',\n tags: ['Agents', 'Models'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, reorderedModelIds }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const modelList = await agent.getModelList();\n if (!modelList || modelList.length === 0) {\n throw new HTTPException(400, { message: 'Agent model list is not found or empty' });\n }\n\n agent.reorderModels(reorderedModelIds);\n\n return { message: 'Model list reordered' };\n } catch (error) {\n return handleError(error, 'error reordering model list');\n }\n },\n});\n\nexport const UPDATE_AGENT_MODEL_IN_MODEL_LIST_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/models/:modelConfigId',\n responseType: 'json',\n pathParamSchema: modelConfigIdPathParams,\n bodySchema: updateAgentModelInModelListBodySchema,\n responseSchema: modelManagementResponseSchema,\n summary: 'Update model in model list',\n description: 'Updates a specific model configuration in the agent model list',\n tags: ['Agents', 'Models'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, modelConfigId, model: bodyModel, maxRetries, enabled }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const modelList = await agent.getModelList();\n if (!modelList || modelList.length === 0) {\n throw new HTTPException(400, { message: 'Agent model list is not found or empty' });\n }\n\n const modelConfig = modelList.find(config => config.id === modelConfigId);\n if (!modelConfig) {\n throw new HTTPException(404, { message: `Model config with id ${modelConfigId} not found` });\n }\n\n const newModel =\n bodyModel?.modelId && bodyModel?.provider ? `${bodyModel.provider}/${bodyModel.modelId}` : modelConfig.model;\n\n const updated = {\n ...modelConfig,\n model: newModel,\n ...(maxRetries !== undefined ? { maxRetries } : {}),\n ...(enabled !== undefined ? { enabled } : {}),\n };\n\n agent.updateModelInModelList(updated);\n\n return { message: 'Model updated in model list' };\n } catch (error) {\n return handleError(error, 'error updating model in model list');\n }\n },\n});\n\nconst ENHANCE_SYSTEM_PROMPT_INSTRUCTIONS = `You are an expert system prompt engineer, specialized in analyzing and enhancing instructions to create clear, effective, and comprehensive system prompts. Your goal is to help users transform their basic instructions into well-structured system prompts that will guide AI behavior effectively.\n\nFollow these steps to analyze and enhance the instructions:\n\n1. ANALYSIS PHASE\n- Identify the core purpose and goals\n- Extract key constraints and requirements\n- Recognize domain-specific terminology and concepts\n- Note any implicit assumptions that should be made explicit\n\n2. PROMPT STRUCTURE\nCreate a system prompt with these components:\na) ROLE DEFINITION\n - Clear statement of the AI's role and purpose\n - Key responsibilities and scope\n - Primary stakeholders and users\nb) CORE CAPABILITIES\n - Main functions and abilities\n - Specific domain knowledge required\n - Tools and resources available\nc) BEHAVIORAL GUIDELINES\n - Communication style and tone\n - Decision-making framework\n - Error handling approach\n - Ethical considerations\nd) CONSTRAINTS & BOUNDARIES\n - Explicit limitations\n - Out-of-scope activities\n - Security and privacy considerations\ne) SUCCESS CRITERIA\n - Quality standards\n - Expected outcomes\n - Performance metrics\n\n3. QUALITY CHECKS\nEnsure the prompt is:\n- Clear and unambiguous\n- Comprehensive yet concise\n- Properly scoped\n- Technically accurate\n- Ethically sound\n\n4. OUTPUT FORMAT\nReturn your response as JSON with exactly these two fields:\n- explanation: A brief explanation of the changes you made and why\n- new_prompt: The complete enhanced system prompt as a single string\n\nRemember: A good system prompt should be specific enough to guide behavior but flexible enough to handle edge cases. Focus on creating prompts that are clear, actionable, and aligned with the intended use case.`;\n\n// Helper to find the first model with a connected provider\nasync function findConnectedModel(agent: Agent): Promise<Awaited<ReturnType<Agent['getModel']>> | null> {\n const modelList = await agent.getModelList();\n\n if (modelList && modelList.length > 0) {\n // Find the first enabled model with a connected provider\n for (const modelConfig of modelList) {\n if (modelConfig.enabled !== false) {\n const model = modelConfig.model;\n if (isProviderConnected(model.provider)) {\n return model;\n }\n }\n }\n return null;\n }\n\n // No model list, check the default model\n const defaultModel = await agent.getModel();\n if (isProviderConnected(defaultModel.provider)) {\n return defaultModel;\n }\n return null;\n}\n\ntype EnhanceInstructionsResponse = z.infer<typeof enhanceInstructionsResponseSchema>;\n\nexport const ENHANCE_INSTRUCTIONS_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/instructions/enhance',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: enhanceInstructionsBodySchema,\n responseSchema: enhanceInstructionsResponseSchema,\n summary: 'Enhance agent instructions',\n description: 'Uses AI to enhance or modify agent instructions based on user feedback',\n tags: ['Agents'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, instructions, comment }) => {\n try {\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n // Find the first model with a connected provider (similar to how chat works)\n const model = await findConnectedModel(agent);\n if (!model) {\n throw new HTTPException(400, {\n message:\n 'No model with a configured API key found. Please set the required environment variable for your model provider.',\n });\n }\n\n const systemPromptAgent = new Agent({\n id: 'system-prompt-enhancer',\n name: 'system-prompt-enhancer',\n instructions: ENHANCE_SYSTEM_PROMPT_INSTRUCTIONS,\n model,\n });\n\n const result = await systemPromptAgent.generate(\n `We need to improve the system prompt.\nCurrent: ${instructions}\n${comment ? `User feedback: ${comment}` : ''}`,\n {\n structuredOutput: {\n schema: enhanceInstructionsResponseSchema,\n },\n },\n );\n\n return (await result.object) as unknown as EnhanceInstructionsResponse;\n } catch (error) {\n return handleError(error, 'Error enhancing instructions');\n }\n },\n});\n\nexport const STREAM_VNEXT_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/streamVNext',\n responseType: 'stream',\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream a response from an agent',\n description: '[DEPRECATED] This endpoint is deprecated. Please use /stream instead.',\n tags: ['Agents'],\n requiresAuth: true,\n deprecated: true,\n handler: async () => {\n throw new HTTPException(410, { message: 'This endpoint is deprecated. Please use /stream instead.' });\n },\n});\n\nexport const STREAM_UI_MESSAGE_VNEXT_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/stream/vnext/ui',\n responseType: 'stream',\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream UI messages from an agent',\n description:\n '[DEPRECATED] This endpoint is deprecated. Please use the @mastra/ai-sdk package for uiMessage transformations',\n tags: ['Agents'],\n requiresAuth: true,\n deprecated: true,\n handler: async () => {\n try {\n throw new MastraError({\n category: ErrorCategory.USER,\n domain: ErrorDomain.MASTRA_SERVER,\n id: 'DEPRECATED_ENDPOINT',\n text: 'This endpoint is deprecated. Please use the @mastra/ai-sdk package to for uiMessage transformations',\n });\n } catch (error) {\n return handleError(error, 'error streaming agent response');\n }\n },\n});\n\nexport const STREAM_UI_MESSAGE_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/stream/ui',\n responseType: 'stream',\n pathParamSchema: agentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: streamResponseSchema,\n summary: 'Stream UI messages from an agent',\n description:\n '[DEPRECATED] This endpoint is deprecated. Please use the @mastra/ai-sdk package for uiMessage transformations',\n tags: ['Agents'],\n requiresAuth: true,\n deprecated: true,\n handler: STREAM_UI_MESSAGE_VNEXT_DEPRECATED_ROUTE.handler,\n});\n\n// ============================================================================\n// Agent Skill Routes\n// ============================================================================\n\nexport const GET_AGENT_SKILL_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId/skills/:skillName',\n responseType: 'json',\n pathParamSchema: agentSkillPathParams,\n responseSchema: getAgentSkillResponseSchema,\n summary: 'Get agent skill',\n description: 'Returns details for a specific skill available to the agent via its workspace',\n tags: ['Agents', 'Skills'],\n handler: async ({ mastra, agentId, skillName, requestContext }) => {\n try {\n const agent = agentId ? mastra.getAgentById(agentId) : null;\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n // Get the agent's workspace\n const workspace = await agent.getWorkspace({ requestContext });\n if (!workspace?.skills) {\n throw new HTTPException(404, { message: 'Agent does not have skills configured' });\n }\n\n // Get the skill from the workspace\n const skill = await workspace.skills.get(skillName);\n if (!skill) {\n throw new HTTPException(404, { message: `Skill \"${skillName}\" not found` });\n }\n\n return {\n name: skill.name,\n description: skill.description,\n license: skill.license,\n compatibility: skill.compatibility,\n metadata: skill.metadata,\n path: skill.path,\n instructions: skill.instructions,\n source: skill.source,\n references: skill.references,\n scripts: skill.scripts,\n assets: skill.assets,\n };\n } catch (error) {\n return handleError(error, 'Error getting agent skill');\n }\n },\n});\n","/**\n * Workspace tool constants and utilities.\n *\n * Inlined from @mastra/core/workspace to avoid import compatibility\n * issues with older core versions that don't have the workspace module.\n */\n\nexport const WORKSPACE_TOOLS_PREFIX = 'mastra_workspace' as const;\n\nexport const WORKSPACE_TOOLS = {\n FILESYSTEM: {\n READ_FILE: `${WORKSPACE_TOOLS_PREFIX}_read_file` as const,\n WRITE_FILE: `${WORKSPACE_TOOLS_PREFIX}_write_file` as const,\n EDIT_FILE: `${WORKSPACE_TOOLS_PREFIX}_edit_file` as const,\n LIST_FILES: `${WORKSPACE_TOOLS_PREFIX}_list_files` as const,\n DELETE: `${WORKSPACE_TOOLS_PREFIX}_delete` as const,\n FILE_STAT: `${WORKSPACE_TOOLS_PREFIX}_file_stat` as const,\n MKDIR: `${WORKSPACE_TOOLS_PREFIX}_mkdir` as const,\n GREP: `${WORKSPACE_TOOLS_PREFIX}_grep` as const,\n },\n SANDBOX: {\n EXECUTE_COMMAND: `${WORKSPACE_TOOLS_PREFIX}_execute_command` as const,\n },\n SEARCH: {\n SEARCH: `${WORKSPACE_TOOLS_PREFIX}_search` as const,\n INDEX: `${WORKSPACE_TOOLS_PREFIX}_index` as const,\n },\n} as const;\n\nexport type WorkspaceToolName =\n | (typeof WORKSPACE_TOOLS.FILESYSTEM)[keyof typeof WORKSPACE_TOOLS.FILESYSTEM]\n | (typeof WORKSPACE_TOOLS.SEARCH)[keyof typeof WORKSPACE_TOOLS.SEARCH]\n | (typeof WORKSPACE_TOOLS.SANDBOX)[keyof typeof WORKSPACE_TOOLS.SANDBOX];\n\n/**\n * Configuration for a single workspace tool.\n */\nexport interface WorkspaceToolConfig {\n enabled?: boolean;\n requireApproval?: boolean;\n requireReadBeforeWrite?: boolean;\n}\n\n/**\n * Configuration for workspace tools.\n */\nexport type WorkspaceToolsConfig = {\n enabled?: boolean;\n requireApproval?: boolean;\n} & Partial<Record<WorkspaceToolName, WorkspaceToolConfig>>;\n\n/**\n * Resolve the effective configuration for a workspace tool.\n * Inlined from @mastra/core/workspace for compatibility.\n */\nexport function resolveToolConfig(\n toolsConfig: WorkspaceToolsConfig | undefined,\n toolName: WorkspaceToolName,\n): { enabled: boolean; requireApproval: boolean; requireReadBeforeWrite?: boolean } {\n let enabled = true;\n let requireApproval = false;\n let requireReadBeforeWrite: boolean | undefined;\n\n if (toolsConfig) {\n if (toolsConfig.enabled !== undefined) {\n enabled = toolsConfig.enabled;\n }\n if (toolsConfig.requireApproval !== undefined) {\n requireApproval = toolsConfig.requireApproval;\n }\n\n const perToolConfig = toolsConfig[toolName];\n if (perToolConfig) {\n if (perToolConfig.enabled !== undefined) {\n enabled = perToolConfig.enabled;\n }\n if (perToolConfig.requireApproval !== undefined) {\n requireApproval = perToolConfig.requireApproval;\n }\n if (perToolConfig.requireReadBeforeWrite !== undefined) {\n requireReadBeforeWrite = perToolConfig.requireReadBeforeWrite;\n }\n }\n }\n\n return { enabled, requireApproval, requireReadBeforeWrite };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/server/handlers/mcp.ts","../src/server/schemas/mcp.ts"],"names":["__export","z","createCombinedPaginationSchema","createRoute","HTTPException"],"mappings":";;;;;;;;;AAAA,IAAA,WAAA,GAAA;AAAAA,0BAAA,CAAA,WAAA,EAAA;AAAA,EAAA,6BAAA,EAAA,MAAA,6BAAA;AAAA,EAAA,2BAAA,EAAA,MAAA,2BAAA;AAAA,EAAA,gCAAA,EAAA,MAAA,gCAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,2BAAA,EAAA,MAAA,2BAAA;AAAA,EAAA,wBAAA,EAAA,MAAA,wBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;ACIO,IAAM,qBAAA,GAAwBC,MAAE,MAAA,CAAO;AAAA,EAC5C,QAAA,EAAUA,KAAA,CAAE,MAAA,EAAO,CAAE,SAAS,eAAe;AAC/C,CAAC,CAAA;AAEM,IAAM,yBAAA,GAA4BA,MAAE,MAAA,CAAO;AAAA,EAChD,EAAA,EAAIA,KAAA,CAAE,MAAA,EAAO,CAAE,SAAS,eAAe;AACzC,CAAC,CAAA;AAEM,IAAM,uBAAA,GAA0BA,MAAE,MAAA,CAAO;AAAA,EAC9C,QAAA,EAAUA,KAAA,CAAE,MAAA,EAAO,CAAE,SAAS,eAAe,CAAA;AAAA,EAC7C,MAAA,EAAQA,KAAA,CAAE,MAAA,EAAO,CAAE,SAAS,SAAS;AACvC,CAAC,CAAA;AAEM,IAAM,qBAAA,GAAwBA,MAAE,MAAA,CAAO;AAAA,EAC5C,IAAA,EAAMA,KAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AACpB,CAAC,CAAA;AAIM,IAAM,4BAA4BC,gDAAA,EAA+B;AAEjE,IAAM,6BAAA,GAAgCD,MAAE,MAAA,CAAO;AAAA,EACpD,OAAA,EAASA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACtB,CAAC,CAAA;AAGM,IAAM,mBAAA,GAAsBA,MAAE,MAAA,CAAO;AAAA,EAC1C,OAAA,EAASA,MAAE,MAAA,EAAO;AAAA,EAClB,YAAA,EAAcA,MAAE,MAAA,EAAO;AAAA,EACvB,SAAA,EAAWA,MAAE,OAAA;AACf,CAAC,CAAA;AAEM,IAAM,gBAAA,GAAmBA,MAAE,MAAA,CAAO;AAAA,EACvC,EAAA,EAAIA,MAAE,MAAA,EAAO;AAAA,EACb,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,EACf,cAAA,EAAgB;AAClB,CAAC,CAAA;AAEM,IAAM,4BAAA,GAA+BA,MAAE,MAAA,CAAO;AAAA,EACnD,OAAA,EAASA,KAAA,CAAE,KAAA,CAAM,gBAAgB,CAAA;AAAA,EACjC,WAAA,EAAaA,MAAE,MAAA,EAAO;AAAA,EACtB,IAAA,EAAMA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACnB,CAAC,CAAA;AAEM,IAAM,kBAAA,GAAqBA,MAAE,MAAA,CAAO;AAAA,EACzC,EAAA,EAAIA,MAAE,MAAA,EAAO;AAAA,EACb,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,EACf,WAAA,EAAaA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,cAAA,EAAgB,mBAAA;AAAA,EAChB,iBAAA,EAAmBA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACvC,UAAUA,KAAA,CAAE,KAAA,CAAMA,MAAE,OAAA,EAAS,EAAE,QAAA,EAAS;AAAA,EACxC,SAASA,KAAA,CAAE,KAAA,CAAMA,MAAE,OAAA,EAAS,EAAE,QAAA;AAChC,CAAC,CAAA;AAGM,IAAM,iBAAA,GAAoBA,MAAE,MAAA,CAAO;AAAA,EACxC,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,EACf,WAAA,EAAaA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,WAAA,EAAaA,MAAE,OAAA,EAAQ;AAAA,EACvB,YAAA,EAAcA,KAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACnC,QAAA,EAAUA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACvB,CAAC,CAAA;AAEM,IAAM,gCAAA,GAAmCA,MAAE,MAAA,CAAO;AAAA,EACvD,KAAA,EAAOA,KAAA,CAAE,KAAA,CAAM,iBAAiB;AAClC,CAAC,CAAA;AAEM,IAAM,yBAAA,GAA4BA,MAAE,MAAA,CAAO;AAAA,EAChD,MAAA,EAAQA,MAAE,OAAA;AACZ,CAAC,CAAA;AAGiCA,MAAE,MAAA,CAAO;AAAA,EACzC,OAAA,EAASA,KAAA,CAAE,OAAA,CAAQ,KAAK,CAAA;AAAA,EACxB,KAAA,EAAOA,MAAE,MAAA,CAAO;AAAA,IACd,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,IACf,OAAA,EAASA,MAAE,MAAA;AAAO,GACnB,CAAA;AAAA,EACD,EAAA,EAAIA,MAAE,IAAA;AACR,CAAC;;;AD7DM,IAAM,yBAAyBE,6BAAA,CAAY;AAAA,EAChD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,iBAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,gBAAA,EAAkB,yBAAA;AAAA,EAClB,cAAA,EAAgB,4BAAA;AAAA,EAChB,OAAA,EAAS,kBAAA;AAAA,EACT,WAAA,EAAa,kEAAA;AAAA,EACb,IAAA,EAAM,CAAC,KAAK,CAAA;AAAA,EACZ,YAAA,EAAc,IAAA;AAAA,EACd,SAAS,OAAO;AAAA,IACd,MAAA;AAAA,IACA,WAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACF,KAA4F;AAC1F,IAAA,IAAI,CAAC,MAAA,IAAU,OAAO,MAAA,CAAO,mBAAmB,UAAA,EAAY;AAC1D,MAAA,MAAM,IAAIC,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,0DAA0D,CAAA;AAAA,IACpG;AAEA,IAAA,MAAM,OAAA,GAAU,OAAO,cAAA,EAAe;AAEtC,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO,EAAE,OAAA,EAAS,IAAI,WAAA,EAAa,CAAA,EAAG,MAAM,IAAA,EAAK;AAAA,IACnD;AAEA,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,OAAO,CAAA;AACxC,IAAA,MAAM,aAAa,UAAA,CAAW,MAAA;AAI9B,IAAA,MAAM,mBACH,KAAA,KAAU,MAAA,IAAa,WAAW,MAAA,KAAc,IAAA,KAAS,UAAa,OAAA,KAAY,MAAA;AAGrF,IAAA,MAAM,eAAe,OAAA,IAAW,KAAA;AAEhC,IAAA,IAAI,SAAA,GAAY,IAAA;AAChB,IAAA,IAAI,cAAc,MAAA,IAAa,MAAA,KAAW,UAAa,YAAA,KAAiB,MAAA,IAAa,eAAe,CAAA,EAAG;AACrG,MAAA,SAAA,GAAY,IAAA,CAAK,KAAA,CAAM,MAAA,GAAS,YAAY,CAAA;AAAA,IAC9C;AAGA,IAAA,MAAM,eAAe,SAAA,KAAc,MAAA,IAAa,YAAA,KAAiB,MAAA,GAAY,YAAY,YAAA,GAAe,CAAA;AAGxG,IAAA,IAAI,gBAAA,GAAmB,UAAA;AACvB,IAAA,IAAI,OAAA,GAAyB,IAAA;AAE7B,IAAA,IAAI,iBAAiB,MAAA,EAAW;AAC9B,MAAA,gBAAA,GAAmB,UAAA,CAAW,KAAA,CAAM,YAAA,EAAc,YAAA,GAAe,YAAY,CAAA;AAG7E,MAAA,IAAI,YAAA,GAAe,eAAe,UAAA,EAAY;AAC5C,QAAA,MAAM,QAAA,GAAA,CAAY,aAAa,CAAA,IAAK,CAAA;AAEpC,QAAA,MAAM,SAAS,WAAA,IAAe,EAAA;AAC9B,QAAA,IAAI,eAAA,EAAiB;AACnB,UAAA,MAAM,aAAa,YAAA,GAAe,YAAA;AAClC,UAAA,OAAA,GAAU,CAAA,EAAG,MAAM,CAAA,sBAAA,EAAyB,YAAY,WAAW,UAAU,CAAA,CAAA;AAAA,QAC/E,CAAA,MAAO;AACL,UAAA,OAAA,GAAU,CAAA,EAAG,MAAM,CAAA,wBAAA,EAA2B,YAAY,SAAS,QAAQ,CAAA,CAAA;AAAA,QAC7E;AAAA,MACF;AAAA,IACF;AAGA,IAAA,MAAM,iBAA+B,gBAAA,CAAiB,GAAA,CAAI,CAAA,MAAA,KAAU,MAAA,CAAO,eAAe,CAAA;AAE1F,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,cAAA;AAAA,MACT,WAAA,EAAa,UAAA;AAAA,MACb,IAAA,EAAM;AAAA,KACR;AAAA,EACF;AACF,CAAC;AAEM,IAAM,8BAA8BD,6BAAA,CAAY;AAAA,EACrD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,qBAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiB,yBAAA;AAAA,EACjB,gBAAA,EAAkB,6BAAA;AAAA,EAClB,cAAA,EAAgB,kBAAA;AAAA,EAChB,OAAA,EAAS,wBAAA;AAAA,EACT,WAAA,EAAa,0DAAA;AAAA,EACb,IAAA,EAAM,CAAC,KAAK,CAAA;AAAA,EACZ,YAAA,EAAc,IAAA;AAAA,EACd,SAAS,OAAO,EAAE,MAAA,EAAQ,EAAA,EAAI,SAAQ,KAAwD;AAC5F,IAAA,IAAI,CAAC,MAAA,IAAU,OAAO,MAAA,CAAO,qBAAqB,UAAA,EAAY;AAC5D,MAAA,MAAM,IAAIC,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,4DAA4D,CAAA;AAAA,IACtG;AAEA,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,gBAAA,CAAiB,EAAE,CAAA;AAEzC,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK,EAAE,SAAS,CAAA,oBAAA,EAAuB,EAAE,eAAe,CAAA;AAAA,IAClF;AAEA,IAAA,MAAM,YAAA,GAAe,OAAO,eAAA,EAAgB;AAG5C,IAAA,IAAI,OAAA,IAAW,YAAA,CAAa,cAAA,CAAe,OAAA,KAAY,OAAA,EAAS;AAC9D,MAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK;AAAA,QAC3B,OAAA,EAAS,uBAAuB,EAAE,CAAA,0BAAA,EAA6B,OAAO,CAAA,sBAAA,EAAyB,YAAA,CAAa,eAAe,OAAO,CAAA;AAAA,OACnI,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,YAAA;AAAA,EACT;AACF,CAAC;AAEM,IAAM,8BAA8BD,6BAAA,CAAY;AAAA,EACrD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,sBAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiB,qBAAA;AAAA,EACjB,cAAA,EAAgB,gCAAA;AAAA,EAChB,OAAA,EAAS,uBAAA;AAAA,EACT,WAAA,EAAa,+DAAA;AAAA,EACb,IAAA,EAAM,CAAC,KAAK,CAAA;AAAA,EACZ,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,UAAS,KAA4C;AAC7E,IAAA,IAAI,CAAC,MAAA,IAAU,OAAO,MAAA,CAAO,qBAAqB,UAAA,EAAY;AAC5D,MAAA,MAAM,IAAIC,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,4DAA4D,CAAA;AAAA,IACtG;AAEA,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,gBAAA,CAAiB,QAAQ,CAAA;AAE/C,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK,EAAE,SAAS,CAAA,oBAAA,EAAuB,QAAQ,eAAe,CAAA;AAAA,IACxF;AAEA,IAAA,IAAI,OAAO,MAAA,CAAO,eAAA,KAAoB,UAAA,EAAY;AAChD,MAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK,EAAE,SAAS,CAAA,QAAA,EAAW,QAAQ,oCAAoC,CAAA;AAAA,IACjG;AAEA,IAAA,OAAO,OAAO,eAAA,EAAgB;AAAA,EAChC;AACF,CAAC;AAEM,IAAM,mCAAmCD,6BAAA,CAAY;AAAA,EAC1D,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,8BAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiB,uBAAA;AAAA,EACjB,cAAA,EAAgB,iBAAA;AAAA,EAChB,OAAA,EAAS,6BAAA;AAAA,EACT,WAAA,EAAa,sEAAA;AAAA,EACb,IAAA,EAAM,CAAC,KAAK,CAAA;AAAA,EACZ,YAAA,EAAc,IAAA;AAAA,EACd,SAAS,OAAO,EAAE,MAAA,EAAQ,QAAA,EAAU,QAAO,KAA4D;AACrG,IAAA,IAAI,CAAC,MAAA,IAAU,OAAO,MAAA,CAAO,qBAAqB,UAAA,EAAY;AAC5D,MAAA,MAAM,IAAIC,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,4DAA4D,CAAA;AAAA,IACtG;AAEA,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,gBAAA,CAAiB,QAAQ,CAAA;AAE/C,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK,EAAE,SAAS,CAAA,oBAAA,EAAuB,QAAQ,eAAe,CAAA;AAAA,IACxF;AAEA,IAAA,IAAI,OAAO,MAAA,CAAO,WAAA,KAAgB,UAAA,EAAY;AAC5C,MAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK,EAAE,SAAS,CAAA,QAAA,EAAW,QAAQ,8CAA8C,CAAA;AAAA,IAC3G;AAEA,IAAA,MAAM,QAAA,GAAW,MAAA,CAAO,WAAA,CAAY,MAAM,CAAA;AAC1C,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,MAAM,IAAIA,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,iBAAiB,MAAM,CAAA,2BAAA,EAA8B,QAAQ,CAAA,CAAA,CAAA,EAAK,CAAA;AAAA,IAC5G;AAEA,IAAA,OAAO,QAAA;AAAA,EACT;AACF,CAAC;AAEM,IAAM,gCAAgCD,6BAAA,CAAY;AAAA,EACvD,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,sCAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiB,uBAAA;AAAA,EACjB,UAAA,EAAY,qBAAA;AAAA,EACZ,cAAA,EAAgB,yBAAA;AAAA,EAChB,OAAA,EAAS,yBAAA;AAAA,EACT,WAAA,EAAa,yEAAA;AAAA,EACb,IAAA,EAAM,CAAC,KAAK,CAAA;AAAA,EACZ,YAAA,EAAc,IAAA;AAAA,EACd,SAAS,OAAO;AAAA,IACd,MAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF,KAA4E;AAC1E,IAAA,IAAI,CAAC,MAAA,IAAU,OAAO,MAAA,CAAO,qBAAqB,UAAA,EAAY;AAC5D,MAAA,MAAM,IAAIC,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,4DAA4D,CAAA;AAAA,IACtG;AAEA,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,gBAAA,CAAiB,QAAQ,CAAA;AAE/C,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK,EAAE,SAAS,CAAA,oBAAA,EAAuB,QAAQ,eAAe,CAAA;AAAA,IACxF;AAEA,IAAA,IAAI,OAAO,MAAA,CAAO,WAAA,KAAgB,UAAA,EAAY;AAC5C,MAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK,EAAE,SAAS,CAAA,QAAA,EAAW,QAAQ,uCAAuC,CAAA;AAAA,IACpG;AAEA,IAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,WAAA,CAAY,QAAQ,IAAI,CAAA;AACpD,IAAA,OAAO,EAAE,MAAA,EAAO;AAAA,EAClB;AACF,CAAC;AAgDM,IAAM,2BAA2BD,6BAAA,CAAY;AAAA,EAClD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,oBAAA;AAAA,EACN,YAAA,EAAc,UAAA;AAAA,EACd,eAAA,EAAiB,qBAAA;AAAA,EACjB,OAAA,EAAS,oBAAA;AAAA,EACT,WAAA,EAAa,mEAAA;AAAA,EACb,IAAA,EAAM,CAAC,KAAK,CAAA;AAAA,EACZ,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,UAAS,KAA6E;AAC9G,IAAA,IAAI,CAAC,MAAA,IAAU,OAAO,MAAA,CAAO,qBAAqB,UAAA,EAAY;AAC5D,MAAA,MAAM,IAAIC,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,4DAA4D,CAAA;AAAA,IACtG;AAEA,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,gBAAA,CAAiB,QAAQ,CAAA;AAE/C,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK,EAAE,SAAS,CAAA,YAAA,EAAe,QAAQ,eAAe,CAAA;AAAA,IAChF;AAEA,IAAA,OAAO;AAAA,MACL,MAAA;AAAA,MACA,QAAA,EAAU,QAAQ,QAAQ,CAAA,IAAA;AAAA,KAC5B;AAAA,EACF;AACF,CAAC;AAEM,IAAM,0BAA0BD,6BAAA,CAAY;AAAA,EACjD,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,oBAAA;AAAA,EACN,YAAA,EAAc,SAAA;AAAA,EACd,eAAA,EAAiB,qBAAA;AAAA,EACjB,OAAA,EAAS,mBAAA;AAAA,EACT,WAAA,EAAa,uDAAA;AAAA,EACb,IAAA,EAAM,CAAC,KAAK,CAAA;AAAA,EACZ,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,UAAS,KAA4E;AAC7G,IAAA,IAAI,CAAC,MAAA,IAAU,OAAO,MAAA,CAAO,qBAAqB,UAAA,EAAY;AAC5D,MAAA,MAAM,IAAIC,+BAAA,CAAc,GAAA,EAAK,EAAE,OAAA,EAAS,4DAA4D,CAAA;AAAA,IACtG;AAEA,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,gBAAA,CAAiB,QAAQ,CAAA;AAE/C,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAIA,gCAAc,GAAA,EAAK,EAAE,SAAS,CAAA,YAAA,EAAe,QAAQ,eAAe,CAAA;AAAA,IAChF;AAEA,IAAA,OAAO;AAAA,MACL,MAAA;AAAA,MACA,OAAA,EAAS,QAAQ,QAAQ,CAAA,IAAA,CAAA;AAAA,MACzB,WAAA,EAAa,QAAQ,QAAQ,CAAA,SAAA;AAAA,KAC/B;AAAA,EACF;AACF,CAAC;AAEM,IAAM,yBAAyBD,6BAAA,CAAY;AAAA,EAChD,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,yBAAA;AAAA,EACN,YAAA,EAAc,SAAA;AAAA,EACd,eAAA,EAAiB,qBAAA;AAAA,EACjB,OAAA,EAAS,kBAAA;AAAA,EACT,WAAA,EAAa,2EAAA;AAAA,EACb,IAAA,EAAM,CAAC,KAAK,CAAA;AAAA,EACZ,YAAA,EAAc,IAAA;AAAA,EACd,SAAS,uBAAA,CAAwB;AACnC,CAAC","file":"chunk-OQG4AAGQ.cjs","sourcesContent":["import type { MCPServerBase as MastraMCPServerImplementation, ServerInfo } from '@mastra/core/mcp';\nimport { HTTPException } from '../http-exception';\nimport {\n mcpServerDetailPathParams,\n mcpServerToolPathParams,\n executeToolBodySchema,\n listMcpServersQuerySchema,\n getMcpServerDetailQuerySchema,\n listMcpServersResponseSchema,\n serverDetailSchema,\n mcpServerIdPathParams,\n listMcpServerToolsResponseSchema,\n mcpToolInfoSchema,\n executeToolResponseSchema,\n} from '../schemas/mcp';\nimport type { ServerContext } from '../server-adapter';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\n// ============================================================================\n// Route Definitions (createRoute pattern for server adapters)\n// ============================================================================\n\nexport const LIST_MCP_SERVERS_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/v0/servers',\n responseType: 'json',\n queryParamSchema: listMcpServersQuerySchema,\n responseSchema: listMcpServersResponseSchema,\n summary: 'List MCP servers',\n description: 'Returns a list of registered MCP servers with pagination support',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({\n mastra,\n routePrefix,\n page,\n perPage,\n limit,\n offset,\n }: ServerContext & { page?: number; perPage?: number; limit?: number; offset?: number }) => {\n if (!mastra || typeof mastra.listMCPServers !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or listMCPServers method not available' });\n }\n\n const servers = mastra.listMCPServers();\n\n if (!servers) {\n return { servers: [], total_count: 0, next: null };\n }\n\n const serverList = Object.values(servers) as MastraMCPServerImplementation[];\n const totalCount = serverList.length;\n\n // Support both page/perPage and limit/offset for backwards compatibility\n // Detect which format user is using - prefer page/perPage if both provided\n const useLegacyFormat =\n (limit !== undefined || offset !== undefined) && page === undefined && perPage === undefined;\n\n // If perPage provided, use it; otherwise fall back to limit\n const finalPerPage = perPage ?? limit;\n // If page provided, use it; otherwise convert from offset\n let finalPage = page;\n if (finalPage === undefined && offset !== undefined && finalPerPage !== undefined && finalPerPage > 0) {\n finalPage = Math.floor(offset / finalPerPage);\n }\n\n // Calculate offset from page/perPage\n const actualOffset = finalPage !== undefined && finalPerPage !== undefined ? finalPage * finalPerPage : 0;\n\n // Apply pagination\n let paginatedServers = serverList;\n let nextUrl: string | null = null;\n\n if (finalPerPage !== undefined) {\n paginatedServers = serverList.slice(actualOffset, actualOffset + finalPerPage);\n\n // Calculate next URL if there are more results\n if (actualOffset + finalPerPage < totalCount) {\n const nextPage = (finalPage ?? 0) + 1;\n // Return next URL in same format as request (legacy limit/offset or page/perPage)\n const prefix = routePrefix ?? '';\n if (useLegacyFormat) {\n const nextOffset = actualOffset + finalPerPage;\n nextUrl = `${prefix}/mcp/v0/servers?limit=${finalPerPage}&offset=${nextOffset}`;\n } else {\n nextUrl = `${prefix}/mcp/v0/servers?perPage=${finalPerPage}&page=${nextPage}`;\n }\n }\n }\n\n // Get server info for each server\n const serverInfoList: ServerInfo[] = paginatedServers.map(server => server.getServerInfo());\n\n return {\n servers: serverInfoList,\n total_count: totalCount,\n next: nextUrl,\n };\n },\n});\n\nexport const GET_MCP_SERVER_DETAIL_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/v0/servers/:id',\n responseType: 'json',\n pathParamSchema: mcpServerDetailPathParams,\n queryParamSchema: getMcpServerDetailQuerySchema,\n responseSchema: serverDetailSchema,\n summary: 'Get MCP server details',\n description: 'Returns detailed information about a specific MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, id, version }: ServerContext & { id: string; version?: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(id);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${id}' not found` });\n }\n\n const serverDetail = server.getServerDetail();\n\n // If a specific version was requested, check if it matches\n if (version && serverDetail.version_detail.version !== version) {\n throw new HTTPException(404, {\n message: `MCP server with ID '${id}' found, but not version '${version}'. Available version: ${serverDetail.version_detail.version}`,\n });\n }\n\n return serverDetail;\n },\n});\n\nexport const LIST_MCP_SERVER_TOOLS_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/tools',\n responseType: 'json',\n pathParamSchema: mcpServerIdPathParams,\n responseSchema: listMcpServerToolsResponseSchema,\n summary: 'List MCP server tools',\n description: 'Returns a list of tools available on the specified MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.getToolListInfo !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot list tools in this way.` });\n }\n\n return server.getToolListInfo();\n },\n});\n\nexport const GET_MCP_SERVER_TOOL_DETAIL_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/tools/:toolId',\n responseType: 'json',\n pathParamSchema: mcpServerToolPathParams,\n responseSchema: mcpToolInfoSchema,\n summary: 'Get MCP server tool details',\n description: 'Returns detailed information about a specific tool on the MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, toolId }: ServerContext & { serverId: string; toolId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.getToolInfo !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot provide tool details in this way.` });\n }\n\n const toolInfo = server.getToolInfo(toolId);\n if (!toolInfo) {\n throw new HTTPException(404, { message: `Tool with ID '${toolId}' not found on MCP server '${serverId}'` });\n }\n\n return toolInfo;\n },\n});\n\nexport const EXECUTE_MCP_SERVER_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: mcpServerToolPathParams,\n bodySchema: executeToolBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute MCP server tool',\n description: 'Executes a tool on the specified MCP server with the provided arguments',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({\n mastra,\n serverId,\n toolId,\n data,\n }: ServerContext & { serverId: string; toolId: string; data?: unknown }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.executeTool !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot execute tools in this way.` });\n }\n\n const result = await server.executeTool(toolId, data);\n return { result };\n },\n});\n\n// ============================================================================\n// MCP Transport Routes (Streamable HTTP and SSE)\n// ============================================================================\n\n/**\n * MCP transport options that can be passed to startHTTP() or startSSE().\n * Includes serverless mode for running in stateless environments like Cloudflare Workers or Vercel Edge.\n */\nexport interface MCPTransportOptions {\n /**\n * When true, runs in stateless mode without session management.\n * Ideal for serverless environments where you can't maintain persistent connections.\n */\n serverless?: boolean;\n /**\n * Custom session ID generator function.\n */\n sessionIdGenerator?: () => string;\n}\n\n/**\n * MCP HTTP Transport response type.\n * Adapters use this to set up the HTTP transport via MCPServer.startHTTP()\n */\nexport interface MCPHttpTransportResult {\n server: MastraMCPServerImplementation;\n httpPath: string;\n /**\n * Optional MCP transport options for this specific route.\n * These override any class-level mcpOptions configured on the adapter.\n */\n mcpOptions?: MCPTransportOptions;\n}\n\n/**\n * MCP SSE Transport response type.\n * Adapters use this to set up the SSE transport via MCPServer.startSSE() or startHonoSSE()\n *\n * Note: SSE transport is inherently stateful and doesn't support serverless mode.\n */\nexport interface MCPSseTransportResult {\n server: MastraMCPServerImplementation;\n ssePath: string;\n messagePath: string;\n}\n\nexport const MCP_HTTP_TRANSPORT_ROUTE = createRoute({\n method: 'ALL',\n path: '/mcp/:serverId/mcp',\n responseType: 'mcp-http',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP HTTP Transport',\n description: 'Streamable HTTP transport endpoint for MCP protocol communication',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }): Promise<MCPHttpTransportResult> => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server '${serverId}' not found` });\n }\n\n return {\n server,\n httpPath: `/mcp/${serverId}/mcp`,\n };\n },\n});\n\nexport const MCP_SSE_TRANSPORT_ROUTE = createRoute({\n method: 'ALL',\n path: '/mcp/:serverId/sse',\n responseType: 'mcp-sse',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP SSE Transport',\n description: 'SSE transport endpoint for MCP protocol communication',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }): Promise<MCPSseTransportResult> => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server '${serverId}' not found` });\n }\n\n return {\n server,\n ssePath: `/mcp/${serverId}/sse`,\n messagePath: `/mcp/${serverId}/messages`,\n };\n },\n});\n\nexport const MCP_SSE_MESSAGES_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/messages',\n responseType: 'mcp-sse',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP SSE Messages',\n description: 'Message endpoint for SSE transport (posts messages to active SSE streams)',\n tags: ['MCP'],\n requiresAuth: true,\n handler: MCP_SSE_TRANSPORT_ROUTE.handler,\n});\n","import { z } from 'zod';\nimport { createCombinedPaginationSchema } from './common';\n\n// Path parameters\nexport const mcpServerIdPathParams = z.object({\n serverId: z.string().describe('MCP server ID'),\n});\n\nexport const mcpServerDetailPathParams = z.object({\n id: z.string().describe('MCP server ID'),\n});\n\nexport const mcpServerToolPathParams = z.object({\n serverId: z.string().describe('MCP server ID'),\n toolId: z.string().describe('Tool ID'),\n});\n\nexport const executeToolBodySchema = z.object({\n data: z.unknown().optional(),\n});\n\n// Query parameters\n// Supports both page/perPage and limit/offset for backwards compatibility\nexport const listMcpServersQuerySchema = createCombinedPaginationSchema();\n\nexport const getMcpServerDetailQuerySchema = z.object({\n version: z.string().optional(),\n});\n\n// Response schemas\nexport const versionDetailSchema = z.object({\n version: z.string(),\n release_date: z.string(),\n is_latest: z.boolean(),\n});\n\nexport const serverInfoSchema = z.object({\n id: z.string(),\n name: z.string(),\n version_detail: versionDetailSchema,\n});\n\nexport const listMcpServersResponseSchema = z.object({\n servers: z.array(serverInfoSchema),\n total_count: z.number(),\n next: z.string().nullable(),\n});\n\nexport const serverDetailSchema = z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional(),\n version_detail: versionDetailSchema,\n package_canonical: z.string().optional(),\n packages: z.array(z.unknown()).optional(),\n remotes: z.array(z.unknown()).optional(),\n});\n\n// Tool schemas\nexport const mcpToolInfoSchema = z.object({\n name: z.string(),\n description: z.string().optional(),\n inputSchema: z.unknown(),\n outputSchema: z.unknown().optional(),\n toolType: z.string().optional(),\n});\n\nexport const listMcpServerToolsResponseSchema = z.object({\n tools: z.array(mcpToolInfoSchema),\n});\n\nexport const executeToolResponseSchema = z.object({\n result: z.unknown(),\n});\n\n// JSON-RPC error response schema\nexport const jsonRpcErrorSchema = z.object({\n jsonrpc: z.literal('2.0'),\n error: z.object({\n code: z.number(),\n message: z.string(),\n }),\n id: z.null(),\n});\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/server/schemas/auth.ts","../src/server/handlers/auth.ts"],"names":["z","createPublicRoute","handleError","HTTPException","mastra"],"mappings":"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","file":"chunk-OQZPEQXU.cjs","sourcesContent":["import { z } from 'zod';\n\n// ============================================================================\n// Capabilities Response Schemas\n// ============================================================================\n\nexport const ssoConfigSchema = z.object({\n provider: z.string(),\n text: z.string(),\n icon: z.string().optional(),\n url: z.string(),\n});\n\nexport const loginConfigSchema = z\n .object({\n type: z.enum(['sso', 'credentials', 'both']),\n sso: ssoConfigSchema.optional(),\n signUpEnabled: z.boolean().optional(),\n })\n .nullable();\n\nexport const publicCapabilitiesSchema = z.object({\n enabled: z.boolean(),\n login: loginConfigSchema,\n});\n\nexport const authenticatedUserSchema = z.object({\n id: z.string(),\n email: z.string().optional(),\n name: z.string().optional(),\n avatarUrl: z.string().optional(),\n});\n\nexport const capabilityFlagsSchema = z.object({\n user: z.boolean(),\n session: z.boolean(),\n sso: z.boolean(),\n rbac: z.boolean(),\n acl: z.boolean(),\n});\n\nexport const userAccessSchema = z\n .object({\n roles: z.array(z.string()),\n permissions: z.array(z.string()),\n })\n .nullable();\n\nexport const authenticatedCapabilitiesSchema = publicCapabilitiesSchema.extend({\n user: authenticatedUserSchema,\n capabilities: capabilityFlagsSchema,\n access: userAccessSchema,\n});\n\n// Note: authenticatedCapabilitiesSchema is listed first because z.union checks left-to-right\n// and the authenticated schema is a superset of the public schema (extends it with user, capabilities, access).\nexport const capabilitiesResponseSchema = z.union([authenticatedCapabilitiesSchema, publicCapabilitiesSchema]);\n\n// ============================================================================\n// SSO Schemas\n// ============================================================================\n\nexport const ssoLoginQuerySchema = z.object({\n redirect_uri: z.string().optional(),\n});\n\nexport const ssoCallbackQuerySchema = z.object({\n code: z.string(),\n state: z.string().optional(),\n});\n\nexport const ssoLoginResponseSchema = z.object({\n url: z.string(),\n});\n\nexport const ssoCallbackResponseSchema = z.object({\n success: z.boolean(),\n user: authenticatedUserSchema.optional(),\n redirectTo: z.string().optional(),\n});\n\n// ============================================================================\n// Logout Schema\n// ============================================================================\n\nexport const logoutResponseSchema = z.object({\n success: z.boolean(),\n redirectTo: z.string().optional(),\n});\n\n// ============================================================================\n// Current User Schema\n// ============================================================================\n\nexport const currentUserResponseSchema = z\n .object({\n id: z.string(),\n email: z.string().optional(),\n name: z.string().optional(),\n avatarUrl: z.string().optional(),\n roles: z.array(z.string()).optional(),\n permissions: z.array(z.string()).optional(),\n })\n .nullable();\n\n// ============================================================================\n// Credentials Schemas\n// ============================================================================\n\nexport const credentialsSignInBodySchema = z.object({\n email: z.string().email(),\n password: z.string().min(1),\n});\n\nexport const credentialsSignUpBodySchema = z.object({\n email: z.string().email(),\n password: z.string().min(1),\n name: z.string().optional(),\n});\n\nexport const credentialsResponseSchema = z.object({\n user: authenticatedUserSchema,\n token: z.string().optional(),\n});\n","/**\n * Auth handlers for EE authentication capabilities.\n *\n * These routes enable Studio to:\n * - Detect available auth capabilities\n * - Initiate SSO login flows\n * - Handle OAuth callbacks\n * - Logout users\n */\n\nimport type {\n IUserProvider,\n ISessionProvider,\n ISSOProvider,\n ICredentialsProvider,\n SSOCallbackResult,\n} from '@mastra/core/auth';\nimport type { IRBACProvider, EEUser } from '@mastra/core/auth/ee';\nimport type { MastraAuthProvider } from '@mastra/core/server';\n\nimport { HTTPException } from '../http-exception';\nimport {\n capabilitiesResponseSchema,\n ssoLoginQuerySchema,\n ssoCallbackQuerySchema,\n currentUserResponseSchema,\n credentialsSignInBodySchema,\n credentialsSignUpBodySchema,\n} from '../schemas/auth';\nimport { createPublicRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\n\ntype BuildCapabilitiesFn = (auth: any, request: Request, options?: { rbac?: any; apiPrefix?: string }) => Promise<any>;\nlet _buildCapabilitiesPromise: Promise<BuildCapabilitiesFn | undefined> | undefined;\nfunction loadBuildCapabilities(): Promise<BuildCapabilitiesFn | undefined> {\n if (!_buildCapabilitiesPromise) {\n _buildCapabilitiesPromise = import('@mastra/core/auth/ee')\n .then(m => m.buildCapabilities as BuildCapabilitiesFn)\n .catch(() => {\n console.error(\n '[@mastra/server] EE auth features require @mastra/core >= 1.6.0. Please upgrade: npm install @mastra/core@latest',\n );\n return undefined;\n });\n }\n return _buildCapabilitiesPromise;\n}\n\n/**\n * Helper to get auth provider from Mastra instance.\n */\nfunction getAuthProvider(mastra: any): MastraAuthProvider | null {\n const serverConfig = mastra.getServer?.();\n if (!serverConfig?.auth) return null;\n\n // Auth can be either MastraAuthConfig or MastraAuthProvider\n // If it has authenticateToken method, it's a provider\n if (typeof serverConfig.auth.authenticateToken === 'function') {\n return serverConfig.auth as MastraAuthProvider;\n }\n\n return null;\n}\n\n/**\n * Get the public-facing origin from a request, respecting reverse proxy headers.\n * Behind a proxy (e.g. edge router), request.url contains the internal hostname.\n * X-Forwarded-Host tells us the real public hostname.\n * Always uses https when behind a proxy — Knative's queue-proxy overwrites\n * X-Forwarded-Proto based on the internal HTTP connection, so it's unreliable.\n */\nexport function getPublicOrigin(request: Request): string {\n const forwardedHost = request.headers.get('x-forwarded-host')?.split(',')[0]?.trim();\n if (forwardedHost) {\n return `https://${forwardedHost}`;\n }\n return new URL(request.url).origin;\n}\n\n/**\n * Helper to get RBAC provider from Mastra server config.\n */\nfunction getRBACProvider(mastra: any): IRBACProvider<EEUser> | undefined {\n const serverConfig = mastra.getServer?.();\n return serverConfig?.rbac as IRBACProvider<EEUser> | undefined;\n}\n\n/**\n * Type guard to check if auth provider implements an interface.\n */\nfunction implementsInterface<T>(auth: unknown, method: keyof T): auth is T {\n return auth !== null && typeof auth === 'object' && method in auth;\n}\n\n// ============================================================================\n// GET /auth/capabilities\n// ============================================================================\n\nexport const GET_AUTH_CAPABILITIES_ROUTE = createPublicRoute({\n method: 'GET',\n path: '/auth/capabilities',\n responseType: 'json',\n responseSchema: capabilitiesResponseSchema,\n summary: 'Get auth capabilities',\n description:\n 'Returns authentication capabilities and current user info. Used by Studio to determine available features and user state.',\n tags: ['Auth'],\n handler: async ctx => {\n try {\n const { mastra, request, routePrefix } = ctx as any;\n\n const auth = getAuthProvider(mastra);\n\n if (!auth) {\n return { enabled: false, login: null };\n }\n\n const rbac = getRBACProvider(mastra);\n\n const buildCapabilities = await loadBuildCapabilities();\n if (!buildCapabilities) {\n return { enabled: false, login: null };\n }\n const capabilities = await buildCapabilities(auth, request, { rbac, apiPrefix: routePrefix });\n\n return capabilities;\n } catch (error) {\n return handleError(error, 'Error getting auth capabilities');\n }\n },\n});\n\n// ============================================================================\n// GET /auth/me\n// ============================================================================\n\nexport const GET_CURRENT_USER_ROUTE = createPublicRoute({\n method: 'GET',\n path: '/auth/me',\n responseType: 'json',\n responseSchema: currentUserResponseSchema,\n summary: 'Get current user',\n description: 'Returns the currently authenticated user, or null if not authenticated.',\n tags: ['Auth'],\n handler: async ctx => {\n try {\n const { mastra, request } = ctx as any;\n const auth = getAuthProvider(mastra);\n const rbac = getRBACProvider(mastra);\n\n if (!auth || !implementsInterface<IUserProvider>(auth, 'getCurrentUser')) {\n return null;\n }\n\n const user = await auth.getCurrentUser(request);\n if (!user) return null;\n\n // Get roles/permissions from RBAC provider if available\n let roles: string[] | undefined;\n let permissions: string[] | undefined;\n\n if (rbac) {\n try {\n roles = await rbac.getRoles(user);\n permissions = await rbac.getPermissions(user);\n } catch {\n // RBAC not available or failed\n }\n }\n\n return {\n id: user.id,\n email: user.email,\n name: user.name,\n avatarUrl: user.avatarUrl,\n roles,\n permissions,\n };\n } catch (error) {\n return handleError(error, 'Error getting current user');\n }\n },\n});\n\n// ============================================================================\n// GET /auth/sso/login\n// ============================================================================\n\nexport const GET_SSO_LOGIN_ROUTE = createPublicRoute({\n method: 'GET',\n path: '/auth/sso/login',\n responseType: 'datastream-response',\n queryParamSchema: ssoLoginQuerySchema,\n summary: 'Initiate SSO login',\n description: 'Returns the SSO login URL and sets PKCE cookies if needed.',\n tags: ['Auth'],\n handler: async ctx => {\n try {\n const { mastra, redirect_uri, request, routePrefix } = ctx as any;\n const auth = getAuthProvider(mastra);\n\n if (!auth || !implementsInterface<ISSOProvider>(auth, 'getLoginUrl')) {\n throw new HTTPException(404, { message: 'SSO not configured' });\n }\n\n // Build OAuth callback URI using the configured route prefix\n const origin = getPublicOrigin(request);\n const raw = ((routePrefix as string) || '/api').trim();\n const withSlash = raw.startsWith('/') ? raw : `/${raw}`;\n const prefix = withSlash.endsWith('/') ? withSlash.slice(0, -1) : withSlash;\n const oauthCallbackUri = `${origin}${prefix}/auth/sso/callback`;\n\n // Encode the post-login redirect in state (where user goes after auth completes)\n // State format: uuid|postLoginRedirect\n // Validate redirect_uri to prevent open-redirect attacks: allow relative paths,\n // same-origin URLs, and localhost URLs (for dev setups where Studio runs on a\n // different port).\n let postLoginRedirect = '/';\n if (redirect_uri) {\n if (!redirect_uri.startsWith('http')) {\n // Relative path — always safe\n postLoginRedirect = redirect_uri;\n } else {\n try {\n const redirectUrl = new URL(redirect_uri);\n const requestOrigin = new URL(origin);\n const isHttps = redirectUrl.protocol === 'http:' || redirectUrl.protocol === 'https:';\n const isSameOrigin = redirectUrl.origin === requestOrigin.origin;\n const isLocalhost =\n redirectUrl.hostname === 'localhost' ||\n redirectUrl.hostname === '127.0.0.1' ||\n redirectUrl.hostname === '[::1]';\n if (isHttps && (isSameOrigin || isLocalhost)) {\n postLoginRedirect = redirect_uri;\n }\n } catch {\n // Malformed URL — fall back to /\n }\n }\n }\n const stateId = crypto.randomUUID();\n const state = `${stateId}|${encodeURIComponent(postLoginRedirect)}`;\n\n const loginUrl = auth.getLoginUrl(oauthCallbackUri, state);\n\n // Build response with optional PKCE cookies\n const headers = new Headers({ 'Content-Type': 'application/json' });\n\n // Check for PKCE cookies (e.g., MastraCloudAuthProvider)\n if (implementsInterface<ISSOProvider>(auth, 'getLoginCookies') && auth.getLoginCookies) {\n const cookies = auth.getLoginCookies(oauthCallbackUri, state);\n if (cookies?.length) {\n // PKCE cookies set for SSO state management\n for (const cookie of cookies) {\n headers.append('Set-Cookie', cookie);\n }\n }\n }\n\n return new Response(JSON.stringify({ url: loginUrl }), { status: 200, headers });\n } catch (error) {\n return handleError(error, 'Error initiating SSO login');\n }\n },\n});\n\n// ============================================================================\n// GET /auth/sso/callback\n// ============================================================================\n\nexport const GET_SSO_CALLBACK_ROUTE = createPublicRoute({\n method: 'GET',\n path: '/auth/sso/callback',\n responseType: 'datastream-response',\n queryParamSchema: ssoCallbackQuerySchema,\n summary: 'Handle SSO callback',\n description: 'Handles the OAuth callback, exchanges code for session, and redirects to the app.',\n tags: ['Auth'],\n handler: async ctx => {\n const { mastra, code, state, request } = ctx as any;\n\n // Build base URL for redirects (Response.redirect requires absolute URL)\n const baseUrl = getPublicOrigin(request);\n\n // Extract post-login redirect from state (format: uuid|encodedRedirect)\n let redirectTo = '/';\n let stateId = state || '';\n if (state && state.includes('|')) {\n const [id, encodedRedirect] = state.split('|', 2);\n stateId = id;\n try {\n redirectTo = decodeURIComponent(encodedRedirect);\n } catch {\n redirectTo = '/';\n }\n }\n\n // Build absolute redirect URL.\n // The redirect_uri was validated at the login endpoint (same-origin or localhost\n // only), so the state should only contain safe URLs. We still apply defense-in-depth\n // checks here: allow http(s) same-origin or localhost, reject everything else.\n let absoluteRedirect: string;\n if (redirectTo.startsWith('http')) {\n try {\n const parsed = new URL(redirectTo);\n const baseOrigin = new URL(baseUrl);\n const isHttps = parsed.protocol === 'http:' || parsed.protocol === 'https:';\n const isSameOrigin = parsed.origin === baseOrigin.origin;\n const isLocalhost =\n parsed.hostname === 'localhost' || parsed.hostname === '127.0.0.1' || parsed.hostname === '[::1]';\n absoluteRedirect = isHttps && (isSameOrigin || isLocalhost) ? redirectTo : `${baseUrl}/`;\n } catch {\n absoluteRedirect = `${baseUrl}/`;\n }\n } else {\n absoluteRedirect = `${baseUrl}${redirectTo}`;\n }\n\n try {\n const auth = getAuthProvider(mastra);\n\n if (!auth || !implementsInterface<ISSOProvider>(auth, 'handleCallback')) {\n return Response.redirect(`${absoluteRedirect}?error=sso_not_configured`, 302);\n }\n\n // Pass cookie header to provider for PKCE validation (if supported)\n const reqCookieHeader = request.headers.get('cookie');\n if (typeof (auth as any).setCallbackCookieHeader === 'function') {\n (auth as any).setCallbackCookieHeader(reqCookieHeader);\n }\n\n const result = (await auth.handleCallback(code, stateId)) as SSOCallbackResult<EEUser>;\n const user = result.user as EEUser;\n\n // Build response headers (session cookies, etc.)\n const headers = new Headers();\n headers.set('Location', absoluteRedirect);\n\n // Set session cookies from the SSO result\n if (result.cookies?.length) {\n for (const cookie of result.cookies) {\n headers.append('Set-Cookie', cookie);\n }\n } else if (implementsInterface<ISessionProvider>(auth, 'createSession') && result.tokens) {\n // Fallback: Create session manually for providers without cookie support\n const session = await auth.createSession(user.id, {\n accessToken: result.tokens.accessToken,\n refreshToken: result.tokens.refreshToken,\n expiresAt: result.tokens.expiresAt,\n organizationId: (user as any).organizationId,\n });\n const sessionHeaders = auth.getSessionHeaders(session);\n for (const [key, value] of Object.entries(sessionHeaders)) {\n headers.append(key, value);\n }\n }\n\n return new Response(null, {\n status: 302,\n headers,\n });\n } catch (error) {\n // Redirect with error (use absolute URL)\n const errorMessage = encodeURIComponent(error instanceof Error ? error.message : 'Unknown error');\n return Response.redirect(`${absoluteRedirect}?error=${errorMessage}`, 302);\n }\n },\n});\n\n// ============================================================================\n// POST /auth/logout\n// ============================================================================\n\nexport const POST_LOGOUT_ROUTE = createPublicRoute({\n method: 'POST',\n path: '/auth/logout',\n responseType: 'datastream-response',\n summary: 'Logout',\n description: 'Destroys the current session and returns logout redirect URL if available.',\n tags: ['Auth'],\n handler: async ctx => {\n const { mastra, request } = ctx as any;\n\n try {\n const auth = getAuthProvider(mastra);\n\n if (!auth) {\n return new Response(JSON.stringify({ success: true }), {\n status: 200,\n headers: { 'Content-Type': 'application/json' },\n });\n }\n\n // Get session ID and destroy it\n if (implementsInterface<ISessionProvider>(auth, 'getSessionIdFromRequest')) {\n const sessionId = auth.getSessionIdFromRequest(request);\n if (sessionId && implementsInterface<ISessionProvider>(auth, 'destroySession')) {\n await auth.destroySession(sessionId);\n }\n }\n\n // Get logout URL if available\n let redirectTo: string | undefined;\n if (implementsInterface<ISSOProvider>(auth, 'getLogoutUrl') && auth.getLogoutUrl) {\n // Use public origin (respects X-Forwarded-Host behind reverse proxy)\n const origin = getPublicOrigin(request);\n const logoutUrl = await auth.getLogoutUrl(origin, request);\n redirectTo = logoutUrl ?? undefined;\n }\n\n // Build response with session clearing headers\n const headers = new Headers({ 'Content-Type': 'application/json' });\n\n // Clear session cookie\n if (implementsInterface<ISessionProvider>(auth, 'getClearSessionHeaders')) {\n const clearHeaders = auth.getClearSessionHeaders();\n for (const [key, value] of Object.entries(clearHeaders)) {\n headers.append(key, value);\n }\n }\n\n return new Response(JSON.stringify({ success: true, redirectTo }), {\n status: 200,\n headers,\n });\n } catch (error) {\n return handleError(error, 'Error logging out');\n }\n },\n});\n\n// ============================================================================\n// POST /auth/credentials/sign-in\n// ============================================================================\n\nexport const POST_CREDENTIALS_SIGN_IN_ROUTE = createPublicRoute({\n method: 'POST',\n path: '/auth/credentials/sign-in',\n responseType: 'datastream-response',\n bodySchema: credentialsSignInBodySchema,\n summary: 'Sign in with credentials',\n description: 'Authenticates a user with email and password.',\n tags: ['Auth'],\n handler: async ctx => {\n const { mastra, request, email, password } = ctx as any;\n\n try {\n const auth = getAuthProvider(mastra);\n\n if (!auth || !implementsInterface<ICredentialsProvider>(auth, 'signIn')) {\n throw new HTTPException(404, { message: 'Credentials authentication not configured' });\n }\n\n const result = await auth.signIn(email, password, request);\n const user = result.user as EEUser;\n\n const responseBody = JSON.stringify({\n user: {\n id: user.id,\n email: user.email,\n name: user.name,\n avatarUrl: user.avatarUrl,\n },\n token: result.token,\n });\n\n // Build response headers, including cookies from the auth provider\n const headers = new Headers({\n 'Content-Type': 'application/json',\n });\n\n // Forward session cookies from the auth provider\n if (result.cookies?.length) {\n for (const cookie of result.cookies) {\n headers.append('Set-Cookie', cookie);\n }\n }\n\n return new Response(responseBody, { status: 200, headers });\n } catch (error) {\n if (error instanceof HTTPException) throw error;\n // Return a generic error for auth failures to avoid leaking info\n throw new HTTPException(401, { message: 'Invalid email or password' });\n }\n },\n});\n\n// ============================================================================\n// POST /auth/credentials/sign-up\n// ============================================================================\n\nexport const POST_CREDENTIALS_SIGN_UP_ROUTE = createPublicRoute({\n method: 'POST',\n path: '/auth/credentials/sign-up',\n responseType: 'datastream-response',\n bodySchema: credentialsSignUpBodySchema,\n summary: 'Sign up with credentials',\n description: 'Creates a new user account with email and password.',\n tags: ['Auth'],\n handler: async ctx => {\n const { mastra, request, email, password, name } = ctx as any;\n\n try {\n const auth = getAuthProvider(mastra);\n\n if (!auth || !implementsInterface<ICredentialsProvider>(auth, 'signUp')) {\n throw new HTTPException(404, { message: 'Credentials authentication not configured' });\n }\n\n const result = await auth.signUp(email, password, name, request);\n const user = result.user as EEUser;\n\n const responseBody = JSON.stringify({\n user: {\n id: user.id,\n email: user.email,\n name: user.name,\n avatarUrl: user.avatarUrl,\n },\n token: result.token,\n });\n\n // Build response headers, including cookies from the auth provider\n const headers = new Headers({\n 'Content-Type': 'application/json',\n });\n\n // Forward session cookies from the auth provider\n if (result.cookies?.length) {\n for (const cookie of result.cookies) {\n headers.append('Set-Cookie', cookie);\n }\n }\n\n return new Response(responseBody, { status: 200, headers });\n } catch (error) {\n if (error instanceof HTTPException) throw error;\n const mastra = (ctx as any).mastra;\n mastra?.getLogger?.()?.error('Sign-up error', {\n error: error instanceof Error ? { message: error.message, stack: error.stack } : error,\n });\n throw new HTTPException(400, { message: 'Failed to create account' });\n }\n },\n});\n\n// ============================================================================\n// Export all auth routes\n// ============================================================================\n\nexport const AUTH_ROUTES = [\n GET_AUTH_CAPABILITIES_ROUTE,\n GET_CURRENT_USER_ROUTE,\n GET_SSO_LOGIN_ROUTE,\n GET_SSO_CALLBACK_ROUTE,\n POST_LOGOUT_ROUTE,\n POST_CREDENTIALS_SIGN_IN_ROUTE,\n POST_CREDENTIALS_SIGN_UP_ROUTE,\n];\n"]}