@mastra/server 1.42.0-alpha.2 → 1.42.0-alpha.4

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 (320) hide show
  1. package/CHANGELOG.md +86 -0
  2. package/dist/_types/@internal_voice/dist/routes/index.d.ts +2 -2
  3. package/dist/{api-schema-manifest-FNPX4CIO.js → api-schema-manifest-ASCOTXDG.js} +3 -3
  4. package/dist/{api-schema-manifest-FNPX4CIO.js.map → api-schema-manifest-ASCOTXDG.js.map} +1 -1
  5. package/dist/{api-schema-manifest-JOBIIRJT.cjs → api-schema-manifest-CASCZ5JA.cjs} +4 -4
  6. package/dist/{api-schema-manifest-JOBIIRJT.cjs.map → api-schema-manifest-CASCZ5JA.cjs.map} +1 -1
  7. package/dist/{chunk-ZN3JHWNH.js → chunk-27SJFO6E.js} +3 -3
  8. package/dist/{chunk-ZN3JHWNH.js.map → chunk-27SJFO6E.js.map} +1 -1
  9. package/dist/{chunk-D3DK6YLA.cjs → chunk-2AYEJULC.cjs} +34 -34
  10. package/dist/{chunk-D3DK6YLA.cjs.map → chunk-2AYEJULC.cjs.map} +1 -1
  11. package/dist/{chunk-A4PMW64L.js → chunk-2QXTSL5D.js} +3 -3
  12. package/dist/{chunk-A4PMW64L.js.map → chunk-2QXTSL5D.js.map} +1 -1
  13. package/dist/{chunk-K5ANQB3I.cjs → chunk-2YB3SJBB.cjs} +12 -12
  14. package/dist/{chunk-K5ANQB3I.cjs.map → chunk-2YB3SJBB.cjs.map} +1 -1
  15. package/dist/{chunk-MPTVGRNM.cjs → chunk-3ATUI6XD.cjs} +4 -4
  16. package/dist/{chunk-MPTVGRNM.cjs.map → chunk-3ATUI6XD.cjs.map} +1 -1
  17. package/dist/{chunk-BWNJBSXL.js → chunk-3ENQND57.js} +3 -3
  18. package/dist/{chunk-BWNJBSXL.js.map → chunk-3ENQND57.js.map} +1 -1
  19. package/dist/{chunk-P4IMQYF3.cjs → chunk-47PVLKIL.cjs} +8 -5
  20. package/dist/chunk-47PVLKIL.cjs.map +1 -0
  21. package/dist/{chunk-LBVQK4LO.cjs → chunk-4PQR3D5Y.cjs} +11 -9
  22. package/dist/chunk-4PQR3D5Y.cjs.map +1 -0
  23. package/dist/{chunk-AUO32DAZ.cjs → chunk-54OFLP7B.cjs} +10 -10
  24. package/dist/{chunk-AUO32DAZ.cjs.map → chunk-54OFLP7B.cjs.map} +1 -1
  25. package/dist/{chunk-7U7OWTR2.js → chunk-56AYHXOU.js} +3 -3
  26. package/dist/{chunk-7U7OWTR2.js.map → chunk-56AYHXOU.js.map} +1 -1
  27. package/dist/{chunk-BSHJ4HUN.js → chunk-5DPX2WRN.js} +4 -4
  28. package/dist/{chunk-BSHJ4HUN.js.map → chunk-5DPX2WRN.js.map} +1 -1
  29. package/dist/{chunk-23S37FLK.js → chunk-5FOSK5R3.js} +6 -4
  30. package/dist/chunk-5FOSK5R3.js.map +1 -0
  31. package/dist/{chunk-AEH5OCIH.js → chunk-5JJBM47G.js} +3 -3
  32. package/dist/{chunk-AEH5OCIH.js.map → chunk-5JJBM47G.js.map} +1 -1
  33. package/dist/{chunk-UWKICBCT.cjs → chunk-5NOU4GYX.cjs} +110 -110
  34. package/dist/{chunk-UWKICBCT.cjs.map → chunk-5NOU4GYX.cjs.map} +1 -1
  35. package/dist/{chunk-7H4IZVJL.cjs → chunk-5SICMPYN.cjs} +51 -43
  36. package/dist/chunk-5SICMPYN.cjs.map +1 -0
  37. package/dist/{chunk-ELK6U3BT.js → chunk-5UKZ2LAI.js} +4 -4
  38. package/dist/chunk-5UKZ2LAI.js.map +1 -0
  39. package/dist/{chunk-VBQKBXAI.cjs → chunk-5WVXBP2Y.cjs} +10 -10
  40. package/dist/{chunk-VBQKBXAI.cjs.map → chunk-5WVXBP2Y.cjs.map} +1 -1
  41. package/dist/{chunk-HJVMQDSZ.js → chunk-67TV3EH4.js} +3 -3
  42. package/dist/{chunk-HJVMQDSZ.js.map → chunk-67TV3EH4.js.map} +1 -1
  43. package/dist/{chunk-65NVES6T.js → chunk-6BY6VUN2.js} +3 -3
  44. package/dist/{chunk-65NVES6T.js.map → chunk-6BY6VUN2.js.map} +1 -1
  45. package/dist/{chunk-RXT5WOCU.js → chunk-6XJTDCOF.js} +4 -4
  46. package/dist/{chunk-RXT5WOCU.js.map → chunk-6XJTDCOF.js.map} +1 -1
  47. package/dist/{chunk-4V2VNFVM.js → chunk-7475TVI5.js} +4 -4
  48. package/dist/{chunk-4V2VNFVM.js.map → chunk-7475TVI5.js.map} +1 -1
  49. package/dist/{chunk-4W7KQRF5.cjs → chunk-AAPSZTLM.cjs} +10 -3
  50. package/dist/chunk-AAPSZTLM.cjs.map +1 -0
  51. package/dist/{chunk-FU6HBLCV.js → chunk-ANIBNJ3N.js} +6 -6
  52. package/dist/{chunk-FU6HBLCV.js.map → chunk-ANIBNJ3N.js.map} +1 -1
  53. package/dist/{chunk-ZIWTQGJV.cjs → chunk-AW4NGJ2N.cjs} +28 -28
  54. package/dist/{chunk-ZIWTQGJV.cjs.map → chunk-AW4NGJ2N.cjs.map} +1 -1
  55. package/dist/{chunk-C7I2QUNB.cjs → chunk-C7RGNU23.cjs} +12 -12
  56. package/dist/{chunk-C7I2QUNB.cjs.map → chunk-C7RGNU23.cjs.map} +1 -1
  57. package/dist/{chunk-PUNYS4VL.cjs → chunk-CF3ZJDTU.cjs} +53 -53
  58. package/dist/{chunk-PUNYS4VL.cjs.map → chunk-CF3ZJDTU.cjs.map} +1 -1
  59. package/dist/{chunk-UOQHTFYI.js → chunk-CHP6ZIVF.js} +3 -3
  60. package/dist/{chunk-UOQHTFYI.js.map → chunk-CHP6ZIVF.js.map} +1 -1
  61. package/dist/{chunk-RULES2JK.js → chunk-D5MBB7JN.js} +3 -3
  62. package/dist/{chunk-RULES2JK.js.map → chunk-D5MBB7JN.js.map} +1 -1
  63. package/dist/{chunk-DA6XYIJE.cjs → chunk-DMZ4R5Q7.cjs} +48 -20
  64. package/dist/chunk-DMZ4R5Q7.cjs.map +1 -0
  65. package/dist/{chunk-ZAWZ2BWD.cjs → chunk-EPKVYFCP.cjs} +7 -7
  66. package/dist/{chunk-ZAWZ2BWD.cjs.map → chunk-EPKVYFCP.cjs.map} +1 -1
  67. package/dist/{chunk-UQGNAEQK.cjs → chunk-F755HGAQ.cjs} +251 -251
  68. package/dist/{chunk-UQGNAEQK.cjs.map → chunk-F755HGAQ.cjs.map} +1 -1
  69. package/dist/{chunk-B3HC2NL5.js → chunk-FICIBTVS.js} +5 -5
  70. package/dist/{chunk-B3HC2NL5.js.map → chunk-FICIBTVS.js.map} +1 -1
  71. package/dist/{chunk-QVFQUBC7.cjs → chunk-FVUJRSNB.cjs} +62 -62
  72. package/dist/{chunk-QVFQUBC7.cjs.map → chunk-FVUJRSNB.cjs.map} +1 -1
  73. package/dist/{chunk-34IKPXUL.js → chunk-FZTCXQHI.js} +6 -6
  74. package/dist/{chunk-34IKPXUL.js.map → chunk-FZTCXQHI.js.map} +1 -1
  75. package/dist/{chunk-SEVIFRHN.js → chunk-G7B7MTWX.js} +32 -32
  76. package/dist/{chunk-SEVIFRHN.js.map → chunk-G7B7MTWX.js.map} +1 -1
  77. package/dist/{chunk-ESJTIVEQ.js → chunk-GBVJ4OYO.js} +11 -4
  78. package/dist/chunk-GBVJ4OYO.js.map +1 -0
  79. package/dist/{chunk-2XF6I7XI.js → chunk-GMGBMOC6.js} +5 -5
  80. package/dist/{chunk-2XF6I7XI.js.map → chunk-GMGBMOC6.js.map} +1 -1
  81. package/dist/{chunk-2SVCL3Y5.cjs → chunk-H27WOU55.cjs} +22 -22
  82. package/dist/{chunk-2SVCL3Y5.cjs.map → chunk-H27WOU55.cjs.map} +1 -1
  83. package/dist/{chunk-YH4WGIEH.js → chunk-HATXNJ4V.js} +6 -4
  84. package/dist/chunk-HATXNJ4V.js.map +1 -0
  85. package/dist/{chunk-AC7GMUBN.cjs → chunk-HB4PRXQ7.cjs} +19 -19
  86. package/dist/{chunk-AC7GMUBN.cjs.map → chunk-HB4PRXQ7.cjs.map} +1 -1
  87. package/dist/{chunk-SEAEQN2H.js → chunk-HLB3XKZS.js} +4 -4
  88. package/dist/{chunk-SEAEQN2H.js.map → chunk-HLB3XKZS.js.map} +1 -1
  89. package/dist/{chunk-UIVHXCOY.cjs → chunk-HOOYQBNB.cjs} +43 -43
  90. package/dist/{chunk-UIVHXCOY.cjs.map → chunk-HOOYQBNB.cjs.map} +1 -1
  91. package/dist/{chunk-ET7KSUVJ.cjs → chunk-HVATI3FQ.cjs} +13 -5
  92. package/dist/chunk-HVATI3FQ.cjs.map +1 -0
  93. package/dist/{chunk-V2DJWWQ4.js → chunk-IIRWTIFV.js} +4 -4
  94. package/dist/{chunk-V2DJWWQ4.js.map → chunk-IIRWTIFV.js.map} +1 -1
  95. package/dist/{chunk-357JDXKS.cjs → chunk-JRCLL2XG.cjs} +75 -58
  96. package/dist/chunk-JRCLL2XG.cjs.map +1 -0
  97. package/dist/{chunk-PPNPOLWL.cjs → chunk-JUFS6SVC.cjs} +4 -4
  98. package/dist/{chunk-PPNPOLWL.cjs.map → chunk-JUFS6SVC.cjs.map} +1 -1
  99. package/dist/{chunk-VX3MJR4P.cjs → chunk-KGUHJRHZ.cjs} +10 -10
  100. package/dist/{chunk-VX3MJR4P.cjs.map → chunk-KGUHJRHZ.cjs.map} +1 -1
  101. package/dist/{chunk-WUPBIK5J.cjs → chunk-KJ6DNZ6C.cjs} +23 -23
  102. package/dist/{chunk-WUPBIK5J.cjs.map → chunk-KJ6DNZ6C.cjs.map} +1 -1
  103. package/dist/chunk-KLV64VVH.js +63 -0
  104. package/dist/chunk-KLV64VVH.js.map +1 -0
  105. package/dist/{chunk-J5VCTQGX.js → chunk-LHBCIGPA.js} +6 -6
  106. package/dist/{chunk-J5VCTQGX.js.map → chunk-LHBCIGPA.js.map} +1 -1
  107. package/dist/{chunk-OCWY55IQ.js → chunk-LHF6URCC.js} +3 -3
  108. package/dist/{chunk-OCWY55IQ.js.map → chunk-LHF6URCC.js.map} +1 -1
  109. package/dist/{chunk-QH3IFRYL.cjs → chunk-LIIRA77X.cjs} +6 -6
  110. package/dist/{chunk-QH3IFRYL.cjs.map → chunk-LIIRA77X.cjs.map} +1 -1
  111. package/dist/{chunk-H7TPN2Y6.js → chunk-LPT77UR6.js} +8 -5
  112. package/dist/chunk-LPT77UR6.js.map +1 -0
  113. package/dist/{chunk-SLTGLKKQ.js → chunk-LQZHT5U7.js} +3 -3
  114. package/dist/{chunk-SLTGLKKQ.js.map → chunk-LQZHT5U7.js.map} +1 -1
  115. package/dist/{chunk-FSSG5YQJ.js → chunk-LUR6XGTP.js} +3 -3
  116. package/dist/{chunk-FSSG5YQJ.js.map → chunk-LUR6XGTP.js.map} +1 -1
  117. package/dist/chunk-M3UP3Z3G.cjs +66 -0
  118. package/dist/chunk-M3UP3Z3G.cjs.map +1 -0
  119. package/dist/{chunk-V4G7MSFL.js → chunk-MKJ6Y2HF.js} +4 -4
  120. package/dist/{chunk-V4G7MSFL.js.map → chunk-MKJ6Y2HF.js.map} +1 -1
  121. package/dist/{chunk-HLP25TJE.cjs → chunk-MMOFAVHH.cjs} +9 -9
  122. package/dist/{chunk-HLP25TJE.cjs.map → chunk-MMOFAVHH.cjs.map} +1 -1
  123. package/dist/{chunk-FPKJAWB4.cjs → chunk-NQHBWI24.cjs} +9 -9
  124. package/dist/{chunk-FPKJAWB4.cjs.map → chunk-NQHBWI24.cjs.map} +1 -1
  125. package/dist/{chunk-KWZXKGHG.cjs → chunk-NSBZR7QU.cjs} +13 -13
  126. package/dist/{chunk-KWZXKGHG.cjs.map → chunk-NSBZR7QU.cjs.map} +1 -1
  127. package/dist/{chunk-LPYCF5B2.js → chunk-O7JJZSXK.js} +4 -4
  128. package/dist/{chunk-LPYCF5B2.js.map → chunk-O7JJZSXK.js.map} +1 -1
  129. package/dist/{chunk-RZ5KYTQB.cjs → chunk-OH2UAAED.cjs} +6 -6
  130. package/dist/{chunk-RZ5KYTQB.cjs.map → chunk-OH2UAAED.cjs.map} +1 -1
  131. package/dist/{chunk-MNQ42Q7U.cjs → chunk-OZMSHZ5R.cjs} +4 -4
  132. package/dist/chunk-OZMSHZ5R.cjs.map +1 -0
  133. package/dist/{chunk-UVN5RRFK.js → chunk-P5IEX7A7.js} +3 -3
  134. package/dist/{chunk-UVN5RRFK.js.map → chunk-P5IEX7A7.js.map} +1 -1
  135. package/dist/{chunk-YL47EAFG.js → chunk-PGK2MPL7.js} +3 -3
  136. package/dist/{chunk-YL47EAFG.js.map → chunk-PGK2MPL7.js.map} +1 -1
  137. package/dist/{chunk-Y7ET562G.cjs → chunk-PJKQHNQX.cjs} +12 -12
  138. package/dist/{chunk-Y7ET562G.cjs.map → chunk-PJKQHNQX.cjs.map} +1 -1
  139. package/dist/{chunk-WOMWA56V.cjs → chunk-PMGFP7II.cjs} +10 -10
  140. package/dist/{chunk-WOMWA56V.cjs.map → chunk-PMGFP7II.cjs.map} +1 -1
  141. package/dist/{chunk-3KXE2KXE.cjs → chunk-PWBN74RE.cjs} +4 -4
  142. package/dist/{chunk-3KXE2KXE.cjs.map → chunk-PWBN74RE.cjs.map} +1 -1
  143. package/dist/{chunk-H7KDCXLQ.cjs → chunk-PXLC5SNM.cjs} +3 -3
  144. package/dist/chunk-PXLC5SNM.cjs.map +1 -0
  145. package/dist/{chunk-IGE7NPFH.cjs → chunk-Q2BOTNC2.cjs} +5 -5
  146. package/dist/{chunk-IGE7NPFH.cjs.map → chunk-Q2BOTNC2.cjs.map} +1 -1
  147. package/dist/{chunk-PLV74XAL.js → chunk-QM23NJBM.js} +3 -3
  148. package/dist/{chunk-PLV74XAL.js.map → chunk-QM23NJBM.js.map} +1 -1
  149. package/dist/{chunk-45MWBL6S.cjs → chunk-QQSQCWQJ.cjs} +16 -16
  150. package/dist/{chunk-45MWBL6S.cjs.map → chunk-QQSQCWQJ.cjs.map} +1 -1
  151. package/dist/{chunk-QXVUGFQQ.js → chunk-QSTMEJNF.js} +12 -4
  152. package/dist/chunk-QSTMEJNF.js.map +1 -0
  153. package/dist/{chunk-KL5BVH4I.js → chunk-R3YQMHOW.js} +5 -5
  154. package/dist/{chunk-KL5BVH4I.js.map → chunk-R3YQMHOW.js.map} +1 -1
  155. package/dist/{chunk-MWGAQKBU.js → chunk-RV2PL7XY.js} +28 -11
  156. package/dist/chunk-RV2PL7XY.js.map +1 -0
  157. package/dist/{chunk-77IY4RTO.cjs → chunk-RV4T5P5S.cjs} +16 -16
  158. package/dist/{chunk-77IY4RTO.cjs.map → chunk-RV4T5P5S.cjs.map} +1 -1
  159. package/dist/{chunk-4BLUIUHS.cjs → chunk-RVD3DGBZ.cjs} +5 -5
  160. package/dist/{chunk-4BLUIUHS.cjs.map → chunk-RVD3DGBZ.cjs.map} +1 -1
  161. package/dist/{chunk-GFZR6THV.js → chunk-RY5RETAD.js} +3 -3
  162. package/dist/{chunk-GFZR6THV.js.map → chunk-RY5RETAD.js.map} +1 -1
  163. package/dist/{chunk-EUFT3MIX.js → chunk-SFAWHLOX.js} +3 -3
  164. package/dist/chunk-SFAWHLOX.js.map +1 -0
  165. package/dist/{chunk-65T6KVYX.cjs → chunk-SXKQ7CSX.cjs} +6 -3
  166. package/dist/chunk-SXKQ7CSX.cjs.map +1 -0
  167. package/dist/{chunk-AV7NYVZY.js → chunk-SZBL63O3.js} +5 -5
  168. package/dist/{chunk-AV7NYVZY.js.map → chunk-SZBL63O3.js.map} +1 -1
  169. package/dist/{chunk-WAKRVERW.cjs → chunk-T4SHYW3E.cjs} +15 -15
  170. package/dist/{chunk-WAKRVERW.cjs.map → chunk-T4SHYW3E.cjs.map} +1 -1
  171. package/dist/{chunk-6N2KFN3C.js → chunk-T5N6VHVN.js} +5 -5
  172. package/dist/{chunk-6N2KFN3C.js.map → chunk-T5N6VHVN.js.map} +1 -1
  173. package/dist/{chunk-Y5CIOSHU.js → chunk-WMHXUJKB.js} +10 -3
  174. package/dist/chunk-WMHXUJKB.js.map +1 -0
  175. package/dist/{chunk-EBNFYJOD.js → chunk-WU3CTX2J.js} +5 -5
  176. package/dist/{chunk-EBNFYJOD.js.map → chunk-WU3CTX2J.js.map} +1 -1
  177. package/dist/{chunk-J2SGIUA6.cjs → chunk-XFAJ3EAC.cjs} +3 -3
  178. package/dist/{chunk-J2SGIUA6.cjs.map → chunk-XFAJ3EAC.cjs.map} +1 -1
  179. package/dist/{chunk-VWFP6O2W.cjs → chunk-YH4TLNWJ.cjs} +24 -24
  180. package/dist/{chunk-VWFP6O2W.cjs.map → chunk-YH4TLNWJ.cjs.map} +1 -1
  181. package/dist/{chunk-KE4V4LJE.cjs → chunk-YLWKZ3VK.cjs} +7 -7
  182. package/dist/{chunk-KE4V4LJE.cjs.map → chunk-YLWKZ3VK.cjs.map} +1 -1
  183. package/dist/{chunk-KDMOWJ4W.js → chunk-YXU6EIG6.js} +46 -18
  184. package/dist/chunk-YXU6EIG6.js.map +1 -0
  185. package/dist/{chunk-7OSWGIVM.js → chunk-ZF5T4CGE.js} +5 -5
  186. package/dist/{chunk-7OSWGIVM.js.map → chunk-ZF5T4CGE.js.map} +1 -1
  187. package/dist/{dist-VAHX4KVD.js → dist-D63ZZGV3.js} +5 -5
  188. package/dist/{dist-VAHX4KVD.js.map → dist-D63ZZGV3.js.map} +1 -1
  189. package/dist/{dist-N5RWDF6U.cjs → dist-QDOBLME7.cjs} +20 -20
  190. package/dist/{dist-N5RWDF6U.cjs.map → dist-QDOBLME7.cjs.map} +1 -1
  191. package/dist/docs/SKILL.md +1 -1
  192. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  193. package/dist/{observational-memory-G52HNRHE-RHA4V77M.js → observational-memory-NIGWGBLT-SBZMVFBE.js} +3 -3
  194. package/dist/{observational-memory-G52HNRHE-RHA4V77M.js.map → observational-memory-NIGWGBLT-SBZMVFBE.js.map} +1 -1
  195. package/dist/{observational-memory-G52HNRHE-73KIWQ2G.cjs → observational-memory-NIGWGBLT-XWKXVCLV.cjs} +26 -26
  196. package/dist/{observational-memory-G52HNRHE-73KIWQ2G.cjs.map → observational-memory-NIGWGBLT-XWKXVCLV.cjs.map} +1 -1
  197. package/dist/server/auth/helpers.d.ts.map +1 -1
  198. package/dist/server/auth/index.cjs +19 -19
  199. package/dist/server/auth/index.js +2 -2
  200. package/dist/server/constants.d.ts +7 -0
  201. package/dist/server/constants.d.ts.map +1 -1
  202. package/dist/server/handlers/a2a.cjs +14 -14
  203. package/dist/server/handlers/a2a.js +1 -1
  204. package/dist/server/handlers/agent-builder.cjs +17 -17
  205. package/dist/server/handlers/agent-builder.js +1 -1
  206. package/dist/server/handlers/agent-versions.cjs +8 -8
  207. package/dist/server/handlers/agent-versions.js +1 -1
  208. package/dist/server/handlers/agents.cjs +46 -46
  209. package/dist/server/handlers/agents.d.ts +12 -0
  210. package/dist/server/handlers/agents.d.ts.map +1 -1
  211. package/dist/server/handlers/agents.js +1 -1
  212. package/dist/server/handlers/auth.cjs +13 -13
  213. package/dist/server/handlers/auth.d.ts.map +1 -1
  214. package/dist/server/handlers/auth.js +1 -1
  215. package/dist/server/handlers/author-enrichment.cjs +16 -0
  216. package/dist/server/handlers/author-enrichment.cjs.map +1 -0
  217. package/dist/server/handlers/author-enrichment.d.ts +41 -0
  218. package/dist/server/handlers/author-enrichment.d.ts.map +1 -0
  219. package/dist/server/handlers/author-enrichment.js +3 -0
  220. package/dist/server/handlers/author-enrichment.js.map +1 -0
  221. package/dist/server/handlers/authorship.cjs +12 -12
  222. package/dist/server/handlers/authorship.js +1 -1
  223. package/dist/server/handlers/builder-registry.cjs +6 -6
  224. package/dist/server/handlers/builder-registry.js +1 -1
  225. package/dist/server/handlers/channels.cjs +5 -5
  226. package/dist/server/handlers/channels.js +1 -1
  227. package/dist/server/handlers/conversations.cjs +5 -5
  228. package/dist/server/handlers/conversations.js +1 -1
  229. package/dist/server/handlers/editor-builder.cjs +6 -6
  230. package/dist/server/handlers/editor-builder.d.ts +11 -7
  231. package/dist/server/handlers/editor-builder.d.ts.map +1 -1
  232. package/dist/server/handlers/editor-builder.js +1 -1
  233. package/dist/server/handlers/favorites-enrichment.cjs +4 -4
  234. package/dist/server/handlers/favorites-enrichment.js +1 -1
  235. package/dist/server/handlers/logs.cjs +4 -4
  236. package/dist/server/handlers/logs.js +1 -1
  237. package/dist/server/handlers/mcp-client-versions.cjs +8 -8
  238. package/dist/server/handlers/mcp-client-versions.js +1 -1
  239. package/dist/server/handlers/memory.cjs +27 -27
  240. package/dist/server/handlers/memory.js +1 -1
  241. package/dist/server/handlers/prompt-block-versions.cjs +8 -8
  242. package/dist/server/handlers/prompt-block-versions.js +1 -1
  243. package/dist/server/handlers/responses.cjs +4 -4
  244. package/dist/server/handlers/responses.js +1 -1
  245. package/dist/server/handlers/responses.storage.cjs +8 -8
  246. package/dist/server/handlers/responses.storage.js +1 -1
  247. package/dist/server/handlers/scorer-versions.cjs +8 -8
  248. package/dist/server/handlers/scorer-versions.js +1 -1
  249. package/dist/server/handlers/scores.cjs +7 -7
  250. package/dist/server/handlers/scores.js +1 -1
  251. package/dist/server/handlers/stored-agent-favorites.cjs +3 -3
  252. package/dist/server/handlers/stored-agent-favorites.js +1 -1
  253. package/dist/server/handlers/stored-agents.cjs +9 -9
  254. package/dist/server/handlers/stored-agents.d.ts +24 -0
  255. package/dist/server/handlers/stored-agents.d.ts.map +1 -1
  256. package/dist/server/handlers/stored-agents.js +1 -1
  257. package/dist/server/handlers/stored-mcp-clients.cjs +6 -6
  258. package/dist/server/handlers/stored-mcp-clients.js +1 -1
  259. package/dist/server/handlers/stored-prompt-blocks.cjs +6 -6
  260. package/dist/server/handlers/stored-prompt-blocks.js +1 -1
  261. package/dist/server/handlers/stored-scorers.cjs +6 -6
  262. package/dist/server/handlers/stored-scorers.js +1 -1
  263. package/dist/server/handlers/stored-skill-favorites.cjs +3 -3
  264. package/dist/server/handlers/stored-skill-favorites.js +1 -1
  265. package/dist/server/handlers/stored-skills.cjs +7 -7
  266. package/dist/server/handlers/stored-skills.js +1 -1
  267. package/dist/server/handlers/stored-workspaces.cjs +6 -6
  268. package/dist/server/handlers/stored-workspaces.js +1 -1
  269. package/dist/server/handlers/system.cjs +3 -3
  270. package/dist/server/handlers/system.js +1 -1
  271. package/dist/server/handlers/tool-providers.cjs +14 -14
  272. package/dist/server/handlers/tool-providers.d.ts +2 -2
  273. package/dist/server/handlers/tool-providers.js +1 -1
  274. package/dist/server/handlers/tools.cjs +6 -6
  275. package/dist/server/handlers/tools.js +1 -1
  276. package/dist/server/handlers/utils.cjs +10 -10
  277. package/dist/server/handlers/utils.js +1 -1
  278. package/dist/server/handlers/voice.cjs +8 -8
  279. package/dist/server/handlers/voice.js +1 -1
  280. package/dist/server/handlers/workflows.cjs +27 -27
  281. package/dist/server/handlers/workflows.d.ts.map +1 -1
  282. package/dist/server/handlers/workflows.js +1 -1
  283. package/dist/server/handlers.cjs +25 -25
  284. package/dist/server/handlers.js +11 -11
  285. package/dist/server/schemas/index.cjs +284 -280
  286. package/dist/server/schemas/index.js +8 -8
  287. package/dist/server/schemas/stored-agents.d.ts +42 -0
  288. package/dist/server/schemas/stored-agents.d.ts.map +1 -1
  289. package/dist/server/schemas/tool-providers.d.ts +1 -1
  290. package/dist/server/schemas/tool-providers.d.ts.map +1 -1
  291. package/dist/server/server-adapter/index.cjs +129 -43
  292. package/dist/server/server-adapter/index.cjs.map +1 -1
  293. package/dist/server/server-adapter/index.d.ts +58 -5
  294. package/dist/server/server-adapter/index.d.ts.map +1 -1
  295. package/dist/server/server-adapter/index.js +102 -20
  296. package/dist/server/server-adapter/index.js.map +1 -1
  297. package/dist/server/server-adapter/routes/index.d.ts +2 -0
  298. package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
  299. package/dist/server/server-adapter/routes/tool-providers.d.ts +2 -2
  300. package/package.json +5 -5
  301. package/dist/chunk-23S37FLK.js.map +0 -1
  302. package/dist/chunk-357JDXKS.cjs.map +0 -1
  303. package/dist/chunk-4W7KQRF5.cjs.map +0 -1
  304. package/dist/chunk-65T6KVYX.cjs.map +0 -1
  305. package/dist/chunk-7H4IZVJL.cjs.map +0 -1
  306. package/dist/chunk-DA6XYIJE.cjs.map +0 -1
  307. package/dist/chunk-ELK6U3BT.js.map +0 -1
  308. package/dist/chunk-ESJTIVEQ.js.map +0 -1
  309. package/dist/chunk-ET7KSUVJ.cjs.map +0 -1
  310. package/dist/chunk-EUFT3MIX.js.map +0 -1
  311. package/dist/chunk-H7KDCXLQ.cjs.map +0 -1
  312. package/dist/chunk-H7TPN2Y6.js.map +0 -1
  313. package/dist/chunk-KDMOWJ4W.js.map +0 -1
  314. package/dist/chunk-LBVQK4LO.cjs.map +0 -1
  315. package/dist/chunk-MNQ42Q7U.cjs.map +0 -1
  316. package/dist/chunk-MWGAQKBU.js.map +0 -1
  317. package/dist/chunk-P4IMQYF3.cjs.map +0 -1
  318. package/dist/chunk-QXVUGFQQ.js.map +0 -1
  319. package/dist/chunk-Y5CIOSHU.js.map +0 -1
  320. package/dist/chunk-YH4WGIEH.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/server/schemas/memory-config.ts","../src/server/schemas/stored-agents.ts"],"names":["z","createPagePaginationSchema","ruleGroupSchema","snapshotConfigSchema","defaultOptionsSchema","toolProvidersSchema","paginationInfoSchema"],"mappings":"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","file":"chunk-ET7KSUVJ.cjs","sourcesContent":["import { z } from 'zod/v4';\n\n/**\n * Shared memory configuration schemas for agent storage\n * These schemas match the SerializedMemoryConfig type from @mastra/core\n */\n\n/**\n * Semantic recall configuration for vector-based memory retrieval\n */\nexport const semanticRecallSchema = z.object({\n topK: z.number().describe('Number of semantically similar messages to retrieve'),\n messageRange: z\n .union([\n z.number(),\n z.object({\n before: z.number(),\n after: z.number(),\n }),\n ])\n .describe('Amount of surrounding context to include with each retrieved message'),\n scope: z.enum(['thread', 'resource']).optional().describe('Scope for semantic search queries'),\n threshold: z.number().min(0).max(1).optional().describe('Minimum similarity score threshold'),\n indexName: z.string().optional().describe('Index name for the vector store'),\n});\n\n/**\n * Title generation configuration\n * When stored, the model is serialized as a ModelRouterModelId string (provider/model-name format)\n */\nexport const titleGenerationSchema = z.union([\n z.boolean(),\n z.object({\n model: z.string().describe('Model ID in format provider/model-name (ModelRouterModelId)'),\n instructions: z.string().optional().describe('Custom instructions for title generation'),\n }),\n]);\n\n/**\n * Observation step configuration for observational memory\n */\nexport const serializedObservationConfigSchema = z.object({\n model: z.string().optional().describe('Observer model ID'),\n messageTokens: z.number().optional().describe('Token threshold that triggers observation'),\n modelSettings: z.record(z.string(), z.unknown()).optional().describe('Model settings (temperature, etc.)'),\n providerOptions: z\n .record(z.string(), z.record(z.string(), z.unknown()).optional())\n .optional()\n .describe('Provider-specific options'),\n maxTokensPerBatch: z.number().optional().describe('Maximum tokens per batch'),\n bufferTokens: z\n .union([z.number(), z.literal(false)])\n .optional()\n .describe('Async buffering interval or false'),\n bufferActivation: z.number().optional().describe('Ratio of buffered observations to activate'),\n blockAfter: z.number().optional().describe('Token threshold for synchronous blocking'),\n});\n\n/**\n * Reflection step configuration for observational memory\n */\nexport const serializedReflectionConfigSchema = z.object({\n model: z.string().optional().describe('Reflector model ID'),\n observationTokens: z.number().optional().describe('Token threshold that triggers reflection'),\n modelSettings: z.record(z.string(), z.unknown()).optional().describe('Model settings (temperature, etc.)'),\n providerOptions: z\n .record(z.string(), z.record(z.string(), z.unknown()).optional())\n .optional()\n .describe('Provider-specific options'),\n blockAfter: z.number().optional().describe('Token threshold for synchronous blocking'),\n bufferActivation: z.number().optional().describe('Ratio for async reflection buffering'),\n});\n\n/**\n * Serialized observational memory configuration\n */\nexport const serializedObservationalMemoryConfigObjectSchema = z.object({\n model: z.string().optional().describe('Model ID for both Observer and Reflector'),\n scope: z.enum(['resource', 'thread']).optional().describe('Memory scope'),\n shareTokenBudget: z.boolean().optional().describe('Share token budget between messages and observations'),\n observation: serializedObservationConfigSchema.optional().describe('Observation step configuration'),\n reflection: serializedReflectionConfigSchema.optional().describe('Reflection step configuration'),\n});\n\nexport const serializedObservationalMemoryConfigSchema = z.union([\n z.boolean(),\n serializedObservationalMemoryConfigObjectSchema,\n]);\n\n/**\n * Serialized memory configuration matching SerializedMemoryConfig from @mastra/core\n *\n * Note: workingMemory and threads are omitted as they are not part of SerializedMemoryConfig\n * @see packages/core/src/memory/types.ts\n */\nexport const serializedMemoryConfigSchema = z\n .object({\n vector: z\n .union([z.string(), z.literal(false)])\n .optional()\n .describe('Vector database identifier or false to disable'),\n options: z\n .object({\n readOnly: z.boolean().optional(),\n lastMessages: z.union([z.number(), z.literal(false)]).optional(),\n semanticRecall: z.union([z.boolean(), semanticRecallSchema]).optional(),\n generateTitle: titleGenerationSchema.optional(),\n })\n .optional()\n .describe('Memory behavior configuration, excluding workingMemory and threads'),\n embedder: z\n .string()\n .optional()\n .describe('Embedding model ID in the format \"provider/model\" (e.g., \"openai/text-embedding-3-small\")'),\n embedderOptions: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Options to pass to the embedder, omitting telemetry'),\n observationalMemory: serializedObservationalMemoryConfigSchema\n .optional()\n .describe('Serialized observational memory configuration'),\n })\n .refine(\n data => {\n // If semanticRecall is enabled (true or object), both vector and embedder are required\n const semanticRecall = data.options?.semanticRecall;\n const semanticRecallEnabled =\n semanticRecall === true || (typeof semanticRecall === 'object' && semanticRecall !== null);\n\n if (semanticRecallEnabled) {\n // vector must be a string (not false or undefined)\n const hasVector = typeof data.vector === 'string' && data.vector.length > 0;\n // embedder must be defined\n const hasEmbedder = typeof data.embedder === 'string' && data.embedder.length > 0;\n\n return hasVector && hasEmbedder;\n }\n return true;\n },\n {\n message: 'Semantic recall requires both vector and embedder to be configured',\n path: ['options', 'semanticRecall'],\n },\n );\n","import { z } from 'zod/v4';\nimport { paginationInfoSchema, createPagePaginationSchema, statusQuerySchema } from './common';\nimport { defaultOptionsSchema } from './default-options';\nimport { serializedMemoryConfigSchema } from './memory-config';\nimport { ruleGroupSchema } from './rule-group';\nimport { workspaceSnapshotConfigSchema } from './stored-workspaces';\nimport { toolProvidersSchema } from './tool-providers';\n\n// ============================================================================\n// Path Parameter Schemas\n// ============================================================================\n\n/**\n * Path parameter for stored agent ID\n */\nexport const storedAgentIdPathParams = z.object({\n storedAgentId: z.string().describe('Unique identifier for the stored agent'),\n});\n\n// ============================================================================\n// Query Parameter Schemas\n// ============================================================================\n\n/**\n * Storage order by configuration\n */\nconst storageOrderBySchema = z.object({\n field: z.enum(['createdAt', 'updatedAt']).optional(),\n direction: z.enum(['ASC', 'DESC']).optional(),\n});\n\nexport { statusQuerySchema };\n\n/**\n * GET /stored/agents - List stored agents\n */\nexport const listStoredAgentsQuerySchema = createPagePaginationSchema(100).extend({\n orderBy: storageOrderBySchema.optional(),\n status: z\n .enum(['draft', 'published', 'archived'])\n .optional()\n .default('published')\n .describe('Filter agents by status (defaults to published)'),\n authorId: z.string().optional().describe('Filter agents by author identifier'),\n visibility: z.enum(['public']).optional().describe('Filter to only public agents'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Filter agents by metadata key-value pairs'),\n favoritedOnly: z\n .stringbool()\n .optional()\n .describe('When true, return only agents favorited by the caller (requires the `favorites` EE feature)'),\n pinFavoritedFor: z\n .string()\n .optional()\n .describe(\n 'When set, treat the given subject (user/role) as the favoriting principal for `favoritedOnly` instead of the caller',\n ),\n});\n\n// ============================================================================\n// Body Parameter Schemas\n// ============================================================================\n\n/**\n * Scorer config schema with optional sampling and rules\n */\nconst scorerConfigSchema = z.object({\n description: z.string().optional(),\n sampling: z\n .union([\n z.object({ type: z.literal('none') }),\n z.object({ type: z.literal('ratio'), rate: z.number().min(0).max(1) }),\n ])\n .optional(),\n rules: ruleGroupSchema.optional(),\n});\n\n/**\n * Agent instruction block schema for prompt-block-based instructions.\n */\nconst agentInstructionBlockSchema = z.discriminatedUnion('type', [\n z.object({ type: z.literal('text'), content: z.string() }),\n z.object({ type: z.literal('prompt_block_ref'), id: z.string() }),\n z.object({ type: z.literal('prompt_block'), content: z.string(), rules: ruleGroupSchema.optional() }),\n]);\n\n/**\n * Creates a schema for a field that can be either a static value or an array of conditional variants.\n * Each variant has a `value` and an optional `rules` (RuleGroup) that determines when it applies.\n */\nfunction conditionalFieldSchema<T extends z.ZodTypeAny>(valueSchema: T) {\n const variantSchema = z.object({\n value: valueSchema,\n rules: ruleGroupSchema.optional(),\n });\n return z.union([valueSchema, z.array(variantSchema)]);\n}\n\n/**\n * Instructions can be a plain string or an array of instruction blocks (text + prompt_block references).\n */\nexport const instructionsSchema = z\n .union([z.string(), z.array(agentInstructionBlockSchema)])\n .describe('System instructions for the agent (string or array of instruction blocks)');\n\n/** Base model config schema (reused across snapshot and response schemas) */\nconst modelConfigSchema = z\n .object({\n provider: z.string().describe('Model provider (e.g., openai, anthropic)'),\n name: z.string().describe('Model name (e.g., gpt-4o, claude-3-opus)'),\n })\n .passthrough();\n\n/** Per-tool config schema */\nconst toolConfigSchema = z.object({ description: z.string().optional(), rules: ruleGroupSchema.optional() });\n\n/** Base tools config schema */\nconst toolsConfigSchema = z.record(z.string(), toolConfigSchema);\n\n/** MCP client tools config schema — specifies which tools to use from an MCP client/server */\nconst mcpClientToolsConfigSchema = z.object({\n tools: z.record(z.string(), toolConfigSchema).optional(),\n});\n\n/** Per-skill config schema */\nconst skillConfigSchema = z.object({\n description: z.string().optional(),\n instructions: z.string().optional(),\n pin: z.string().optional(),\n strategy: z.enum(['latest', 'live']).optional(),\n});\n\n/** Skills config: skill IDs mapped to per-skill config */\nconst skillsConfigSchema = z.record(z.string(), skillConfigSchema);\n\n/** Workspace reference: either a stored workspace ID or an inline config */\nconst workspaceRefSchema = z.discriminatedUnion('type', [\n z.object({ type: z.literal('id'), workspaceId: z.string() }),\n z.object({ type: z.literal('inline'), config: workspaceSnapshotConfigSchema }),\n]);\n\n/** Screencast options for streaming browser frames */\nconst screencastOptionsSchema = z.object({\n format: z.enum(['jpeg', 'png']).optional().describe('Image format (default: jpeg)'),\n quality: z.number().min(0).max(100).optional().describe('JPEG quality 0-100 (default: 80)'),\n maxWidth: z.number().optional().describe('Max width in pixels (default: 1280)'),\n maxHeight: z.number().optional().describe('Max height in pixels (default: 720)'),\n everyNthFrame: z.number().optional().describe('Capture every Nth frame (default: 1)'),\n});\n\n/** Browser config: serializable browser configuration for stored agents */\nconst browserConfigSchema = z.object({\n provider: z.string().describe('Browser provider type (e.g., stagehand, playwright)'),\n headless: z.boolean().optional().describe('Run browser in headless mode (default: true)'),\n viewport: z\n .object({\n width: z.number().describe('Viewport width in pixels'),\n height: z.number().describe('Viewport height in pixels'),\n })\n .optional()\n .describe('Browser viewport dimensions'),\n timeout: z.number().optional().describe('Default timeout in milliseconds (default: 10000)'),\n screencast: screencastOptionsSchema.optional().describe('Screencast options for streaming browser frames'),\n});\n\n/** Browser reference: inline browser configuration */\nconst browserRefSchema = z.object({\n type: z.literal('inline'),\n config: browserConfigSchema,\n});\n\n/**\n * Processor phase enum matching ProcessorPhase type\n */\nconst processorPhaseSchema = z.enum([\n 'processInput',\n 'processInputStep',\n 'processOutputStream',\n 'processOutputResult',\n 'processOutputStep',\n]);\n\n/**\n * A single processor step in a stored processor graph.\n */\nconst processorGraphStepSchema = z.object({\n id: z.string().describe('Unique ID for this step within the graph'),\n providerId: z.string().describe('ProcessorProvider ID that creates this processor'),\n config: z.record(z.string(), z.unknown()).describe('Configuration matching the provider configSchema'),\n enabledPhases: z.array(processorPhaseSchema).min(1).describe('Which processor phases to enable'),\n});\n\n/**\n * Processor graph entry schema.\n * Simplified version of SerializedStepFlowEntry, supporting step, parallel, and conditional.\n *\n * Uses a fixed nesting depth (3 levels) to avoid infinite recursion\n * when converting to JSON Schema / OpenAPI.\n */\n\n/** Depth 3 (leaf): only step entries allowed */\nconst processorGraphEntryDepth3 = z.discriminatedUnion('type', [\n z.object({ type: z.literal('step'), step: processorGraphStepSchema }),\n]);\n\n/** Depth 2: step, parallel, and conditional — children limited to depth 3 */\nconst processorGraphEntryDepth2 = z.discriminatedUnion('type', [\n z.object({ type: z.literal('step'), step: processorGraphStepSchema }),\n z.object({ type: z.literal('parallel'), branches: z.array(z.array(processorGraphEntryDepth3)) }),\n z.object({\n type: z.literal('conditional'),\n conditions: z.array(\n z.object({\n steps: z.array(processorGraphEntryDepth3),\n rules: ruleGroupSchema.optional(),\n }),\n ),\n }),\n]);\n\n/** Depth 1 (top-level): step, parallel, and conditional — children limited to depth 2 */\nconst processorGraphEntrySchema = z.discriminatedUnion('type', [\n z.object({ type: z.literal('step'), step: processorGraphStepSchema }),\n z.object({ type: z.literal('parallel'), branches: z.array(z.array(processorGraphEntryDepth2)) }),\n z.object({\n type: z.literal('conditional'),\n conditions: z.array(\n z.object({\n steps: z.array(processorGraphEntryDepth2),\n rules: ruleGroupSchema.optional(),\n }),\n ),\n }),\n]);\n\n/**\n * A stored processor graph representing a pipeline of processors.\n */\nconst storedProcessorGraphSchema = z.object({\n steps: z.array(processorGraphEntrySchema).describe('Ordered list of processor graph entries'),\n});\n\n/**\n * Agent snapshot config fields (name, description, instructions, model, tools, etc.)\n * These live in version snapshots, not on the thin agent record.\n *\n * Fields that support conditional variants (StorageConditionalField) can be either\n * a static value OR an array of { value, rules? } variants evaluated at request time.\n */\nconst snapshotConfigSchema = z.object({\n name: z.string().describe('Name of the agent'),\n description: z.string().optional().describe('Description of the agent'),\n instructions: instructionsSchema,\n model: conditionalFieldSchema(modelConfigSchema).describe(\n 'Model configuration — static value or array of conditional variants',\n ),\n tools: conditionalFieldSchema(toolsConfigSchema)\n .optional()\n .describe('Tool keys mapped to per-tool config — static or conditional'),\n defaultOptions: conditionalFieldSchema(defaultOptionsSchema)\n .optional()\n .describe('Default options for generate/stream calls — static or conditional'),\n workflows: conditionalFieldSchema(z.record(z.string(), toolConfigSchema))\n .optional()\n .describe('Workflow keys with optional per-workflow config — static or conditional'),\n agents: conditionalFieldSchema(z.record(z.string(), toolConfigSchema))\n .optional()\n .describe('Agent keys with optional per-agent config — static or conditional'),\n integrationTools: conditionalFieldSchema(z.record(z.string(), mcpClientToolsConfigSchema))\n .optional()\n .describe('Map of tool provider IDs to their tool configurations — static or conditional'),\n toolProviders: conditionalFieldSchema(toolProvidersSchema)\n .optional()\n .describe(\n 'Tool provider connections and per-tool config (provider-agnostic). Coexists with the deprecated `integrationTools` field.',\n ),\n mcpClients: conditionalFieldSchema(z.record(z.string(), mcpClientToolsConfigSchema))\n .optional()\n .describe('Map of stored MCP client IDs to their tool configurations — static or conditional'),\n inputProcessors: conditionalFieldSchema(storedProcessorGraphSchema)\n .optional()\n .describe('Input processor graph — static or conditional'),\n outputProcessors: conditionalFieldSchema(storedProcessorGraphSchema)\n .optional()\n .describe('Output processor graph — static or conditional'),\n memory: conditionalFieldSchema(serializedMemoryConfigSchema)\n .optional()\n .describe('Memory configuration — static or conditional'),\n scorers: conditionalFieldSchema(z.record(z.string(), scorerConfigSchema))\n .optional()\n .describe('Scorer keys with optional sampling config — static or conditional'),\n skills: conditionalFieldSchema(skillsConfigSchema)\n .optional()\n .describe('Skill IDs mapped to per-skill config — static or conditional'),\n workspace: conditionalFieldSchema(workspaceRefSchema)\n .optional()\n .describe('Workspace reference (stored ID or inline config) — static or conditional'),\n browser: z\n .union([conditionalFieldSchema(browserRefSchema), z.boolean(), z.null()])\n .optional()\n .describe('Browser configuration — object config, true (apply default), false/null (disable)'),\n requestContextSchema: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('JSON Schema defining valid request context variables for conditional rule evaluation'),\n});\n\n/**\n * Agent metadata fields (authorId, metadata, visibility) that live on the thin agent record.\n */\nconst agentMetadataSchema = z.object({\n authorId: z.string().optional().describe('Author identifier for multi-tenant filtering'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata for the agent'),\n visibility: z\n .enum(['private', 'public'])\n .optional()\n .describe('Agent visibility: private (owner/admin only) or public (any reader)'),\n});\n\n/**\n * Snapshot config schema for create where `model` is optional. When omitted, the\n * builder applies `defaults.model` from `/editor/builder/settings` server-side.\n */\nconst snapshotConfigCreateSchema = snapshotConfigSchema.extend({\n model: conditionalFieldSchema(modelConfigSchema)\n .optional()\n .describe(\n 'Model configuration — static value or array of conditional variants. ' +\n 'When omitted, the builder default model is applied server-side.',\n ),\n});\n\n/**\n * POST /stored/agents - Create stored agent body\n * Flat union of agent-record fields + config fields\n * The id is optional — if not provided, it will be derived from the agent name via slugify.\n */\nexport const createStoredAgentBodySchema = z\n .object({\n id: z.string().optional().describe('Unique identifier for the agent. If not provided, derived from name.'),\n authorId: z.string().optional().describe('Author identifier for multi-tenant filtering'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata for the agent'),\n visibility: z\n .enum(['private', 'public'])\n .optional()\n .describe('Agent visibility: private (owner/admin only) or public (any reader)'),\n })\n .merge(snapshotConfigCreateSchema);\n\n/**\n * Snapshot config schema for updates where nullable fields (like memory) can be set to null to clear them.\n */\nconst snapshotConfigUpdateSchema = snapshotConfigSchema.extend({\n memory: z\n .union([conditionalFieldSchema(serializedMemoryConfigSchema), z.null()])\n .optional()\n .describe('Memory configuration — static, conditional, or null to disable memory'),\n});\n\n/**\n * PATCH /stored/agents/:storedAgentId - Update stored agent body\n * Optional metadata-level fields + optional config fields\n */\nexport const updateStoredAgentBodySchema = agentMetadataSchema\n .partial()\n .merge(snapshotConfigUpdateSchema.partial())\n .extend({\n changeMessage: z\n .string()\n .trim()\n .max(500)\n .optional()\n .describe('Optional message describing the changes for the auto-created version'),\n });\n\nexport const exportStoredAgentBodySchema = snapshotConfigUpdateSchema.partial();\n\n// ============================================================================\n// Response Schemas\n// ============================================================================\n\n/**\n * Stored agent object schema (resolved response: thin record + version config)\n * Represents StorageResolvedAgentType\n */\nexport const storedAgentSchema = z.object({\n // Thin agent record fields\n id: z.string(),\n status: z.string().describe('Agent status: draft or published'),\n activeVersionId: z.string().optional(),\n authorId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n visibility: z.enum(['private', 'public']).optional(),\n favoriteCount: z.number().int().nonnegative().optional().describe('Number of users who have favorited this agent'),\n isFavorited: z.boolean().optional().describe('Whether the requesting user has favorited this agent'),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n // Version snapshot config fields (resolved from active version)\n name: z.string().describe('Name of the agent'),\n description: z.string().optional().describe('Description of the agent'),\n instructions: instructionsSchema,\n model: conditionalFieldSchema(modelConfigSchema).describe(\n 'Model configuration — static value or array of conditional variants',\n ),\n tools: conditionalFieldSchema(toolsConfigSchema)\n .optional()\n .describe('Tool keys mapped to per-tool config — static or conditional'),\n defaultOptions: conditionalFieldSchema(defaultOptionsSchema)\n .optional()\n .describe('Default options for generate/stream calls — static or conditional'),\n workflows: conditionalFieldSchema(z.record(z.string(), toolConfigSchema))\n .optional()\n .describe('Workflow keys with optional per-workflow config — static or conditional'),\n agents: conditionalFieldSchema(z.record(z.string(), toolConfigSchema))\n .optional()\n .describe('Agent keys with optional per-agent config — static or conditional'),\n integrationTools: conditionalFieldSchema(z.record(z.string(), mcpClientToolsConfigSchema))\n .optional()\n .describe('Map of tool provider IDs to their tool configurations — static or conditional'),\n toolProviders: conditionalFieldSchema(toolProvidersSchema)\n .optional()\n .describe(\n 'Tool provider connections and per-tool config (provider-agnostic). Coexists with the deprecated `integrationTools` field.',\n ),\n mcpClients: conditionalFieldSchema(z.record(z.string(), mcpClientToolsConfigSchema))\n .optional()\n .describe('Map of stored MCP client IDs to their tool configurations — static or conditional'),\n inputProcessors: conditionalFieldSchema(storedProcessorGraphSchema)\n .optional()\n .describe('Input processor graph — static or conditional'),\n outputProcessors: conditionalFieldSchema(storedProcessorGraphSchema)\n .optional()\n .describe('Output processor graph — static or conditional'),\n memory: conditionalFieldSchema(serializedMemoryConfigSchema)\n .optional()\n .describe('Memory configuration — static or conditional'),\n scorers: conditionalFieldSchema(z.record(z.string(), scorerConfigSchema))\n .optional()\n .describe('Scorer keys with optional sampling config — static or conditional'),\n skills: conditionalFieldSchema(skillsConfigSchema)\n .optional()\n .describe('Skill IDs mapped to per-skill config — static or conditional'),\n workspace: conditionalFieldSchema(workspaceRefSchema)\n .optional()\n .describe('Workspace reference (stored ID or inline config) — static or conditional'),\n browser: z\n .union([conditionalFieldSchema(browserRefSchema), z.boolean(), z.null()])\n .optional()\n .describe('Browser configuration — object config, true (apply default), false/null (disable)'),\n requestContextSchema: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('JSON Schema defining valid request context variables'),\n});\n\n/**\n * Response for GET /stored/agents\n */\nexport const listStoredAgentsResponseSchema = paginationInfoSchema.extend({\n agents: z.array(storedAgentSchema),\n});\n\n/**\n * Response for GET /stored/agents/:storedAgentId\n */\nexport const getStoredAgentResponseSchema = storedAgentSchema;\n\n/**\n * Response for POST /stored/agents\n */\nexport const createStoredAgentResponseSchema = storedAgentSchema;\n\n/**\n * Response for PATCH /stored/agents/:storedAgentId\n *\n * The response can be either:\n * 1. A thin agent record (no version) - only has id, status, dates, etc.\n * 2. A resolved agent (with version) - has all config fields from the version\n *\n * We use a union to handle both cases properly.\n */\nexport const updateStoredAgentResponseSchema = z.union([\n // Thin agent record (no version config)\n z.object({\n id: z.string(),\n status: z.string(),\n activeVersionId: z.string().optional(),\n authorId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n visibility: z.enum(['private', 'public']).optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n }),\n // Resolved agent (thin record + version config)\n storedAgentSchema,\n]);\n\n/**\n * Response for DELETE /stored/agents/:storedAgentId\n */\nexport const deleteStoredAgentResponseSchema = z.object({\n success: z.boolean(),\n message: z.string(),\n});\n\n/**\n * Response for GET /stored/agents/:storedAgentId/dependents\n *\n * `dependents` lists caller-readable stored agents whose resolved `agents` map\n * references the target. Includes both public and the caller's own private\n * agents — anything the caller already has read access to.\n * `hiddenCount` aggregates references from agents the caller cannot read\n * (cross-workspace private agents). Only populated when the target agent is\n * public, to avoid leaking cross-workspace structure for private targets.\n */\nexport const getStoredAgentDependentsResponseSchema = z.object({\n dependents: z.array(\n z.object({\n id: z.string(),\n name: z.string(),\n }),\n ),\n hiddenCount: z.number().int().nonnegative(),\n});\n\nexport const exportStoredAgentResponseSchema = z.object({\n agentId: z.string(),\n fileName: z.string(),\n content: z.string(),\n config: z.record(z.string(), z.unknown()),\n});\n\n// ============================================================================\n// Preview Instructions Schemas\n// ============================================================================\n\n/**\n * POST /stored/agents/preview-instructions - Preview resolved instructions\n */\nexport const previewInstructionsBodySchema = z.object({\n blocks: z.array(agentInstructionBlockSchema).describe('Array of instruction blocks to resolve'),\n context: z\n .record(z.string(), z.unknown())\n .optional()\n .default({})\n .describe('Request context for variable interpolation and rule evaluation'),\n});\n\n/**\n * Response for POST /stored/agents/preview-instructions\n */\nexport const previewInstructionsResponseSchema = z.object({\n result: z.string().describe('The resolved instructions string'),\n});\n\n/**\n * Exported for use in agent-versions.ts schemas\n */\nexport {\n snapshotConfigSchema,\n scorerConfigSchema,\n conditionalFieldSchema,\n modelConfigSchema,\n storedProcessorGraphSchema,\n processorGraphStepSchema,\n processorGraphEntrySchema,\n processorPhaseSchema,\n toolConfigSchema,\n toolsConfigSchema,\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/server/schemas/tool-providers.ts"],"names":[],"mappings":"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","file":"chunk-EUFT3MIX.js","sourcesContent":["import { z } from 'zod/v4';\n\n// ============================================================================\n// Stored form shape — `toolProviders` field on agents\n// ============================================================================\n\n/**\n * Zod schemas for the Agent Builder / CMS tool providers storage shape.\n *\n * Rules:\n * - **Additive-only.** No version field. Future fields are introduced as\n * optional and existing fields are never removed in v1.x.\n * - `label` is optional when there is exactly one connection for a\n * `toolkit`. Once two or more connections share a `toolkit`, every\n * connection must carry a non-empty, ≤ 32 char, `[A-Za-z0-9 _-]+`\n * label that is case-insensitively unique within that toolkit.\n * - `kind` accepts all three values for forward-compat; v1 only writes\n * `'author'`.\n */\n\nconst labelSchema = z\n .string()\n .min(1, 'Connection label is required')\n .max(32, 'Connection label must be ≤ 32 characters')\n .regex(/^[A-Za-z0-9 _-]+$/, 'Connection label may only contain letters, digits, spaces, _ and -');\n\n/**\n * Per-pin identity bucketing.\n *\n * - `'per-author'` (default) — bucketed under the caller's resolved authorId.\n * - `'shared'` — bucketed under SHARED_BUCKET_ID; visible to every caller.\n * - `'caller-supplied'` — bucketed under `requestContext[MASTRA_RESOURCE_ID_KEY]`.\n *\n * Optional for back-compat with pre-scope stored pins.\n */\nexport const connectionScopeSchema = z.enum(['shared', 'per-author', 'caller-supplied']);\n\nexport const connectionSchema = z.object({\n kind: z.enum(['author', 'invoker', 'platform']),\n toolkit: z.string().min(1),\n connectionId: z.string(),\n label: labelSchema.optional(),\n scope: connectionScopeSchema.optional(),\n});\n\nconst toolMetaSchema = z.object({\n toolkit: z.string().min(1).optional(),\n description: z.string().optional(),\n});\n\n/**\n * Stored shape for one provider's configuration on one agent.\n *\n * `superRefine` enforces case-insensitive uniqueness of `label` within\n * each `connections[toolkit]` array.\n */\nexport const toolProviderConfigSchema = z\n .object({\n tools: z.record(z.string(), toolMetaSchema),\n connections: z.record(z.string(), z.array(connectionSchema)),\n })\n .superRefine((value, ctx) => {\n for (const [toolkit, connections] of Object.entries(value.connections)) {\n if (connections.length < 2) continue;\n\n const seen = new Map<string, number>();\n for (let i = 0; i < connections.length; i++) {\n const conn = connections[i]!;\n const trimmed = conn.label?.trim() ?? '';\n if (trimmed.length === 0) {\n ctx.addIssue({\n code: 'custom',\n path: ['connections', toolkit, i, 'label'],\n message: `Connection label is required on toolkit \"${toolkit}\" once it has two or more connections`,\n });\n continue;\n }\n const key = trimmed.toLocaleLowerCase();\n const prevIndex = seen.get(key);\n if (prevIndex !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['connections', toolkit, i, 'label'],\n message: `Duplicate connection label \"${conn.label}\" on toolkit \"${toolkit}\" (labels must be unique case-insensitively)`,\n });\n } else {\n seen.set(key, i);\n }\n }\n }\n });\n\n/**\n * Full v1 tool providers payload: keyed by provider id.\n */\nexport const toolProvidersSchema = z.record(z.string(), toolProviderConfigSchema);\n\n// ============================================================================\n// HTTP route schemas — /tool-providers/*\n// ============================================================================\n\n// Path Parameter Schemas\n\nexport const toolProviderIdPathParams = z.object({\n providerId: z.string().describe('Unique identifier for the tool provider'),\n});\n\nexport const toolSlugPathParams = toolProviderIdPathParams.extend({\n toolSlug: z.string().describe('Slug identifier for the tool'),\n});\n\nexport const toolProviderAuthStatusPathParams = toolProviderIdPathParams.extend({\n authId: z.string().describe('Opaque auth handle returned by authorize'),\n});\n\nexport const toolProviderConnectionPathParams = toolProviderIdPathParams.extend({\n connectionId: z.string().describe('Adapter-native connection id (e.g. Composio ca_...)'),\n});\n\n// Query Parameter Schemas\n\nexport const listToolProviderToolsQuerySchema = z.object({\n toolkit: z.string().optional().describe('Filter tools by toolkit slug'),\n search: z.string().optional().describe('Search tools by name or description'),\n page: z.coerce.number().optional().describe('Page number for pagination (1-indexed)'),\n perPage: z.coerce.number().optional().describe('Number of items per page'),\n});\n\nexport const listConnectionFieldsQuerySchema = z.object({\n toolkit: z.string().describe('Toolkit slug whose connection field schema to list'),\n});\n\nexport const listConnectionsQuerySchema = z.object({\n toolkit: z.string().describe('Toolkit slug whose connections to list'),\n authorId: z\n .string()\n .optional()\n .describe('Admin-only: restrict listing to a specific author. Silently ignored for non-admin callers.'),\n scope: connectionScopeSchema\n .optional()\n .describe('Filter results by scope. Omit to include shared + per-author pins for the caller.'),\n page: z.coerce.number().int().positive().optional().describe('Page number for pagination (1-indexed)'),\n perPage: z.coerce\n .number()\n .int()\n .positive()\n .max(200)\n .optional()\n .describe('Number of items per page (default 50, max 200)'),\n});\n\nexport const disconnectConnectionQuerySchema = z.object({\n force: z\n .union([z.boolean(), z.enum(['true', 'false'])])\n .optional()\n .describe('When true, revoke at the provider and drop the row even if pinned by agents'),\n toolkit: z.string().optional().describe('Toolkit slug for the connection (used when the row was upserted with one)'),\n});\n\nexport const connectionUsageQuerySchema = z.object({\n toolkit: z.string().optional().describe('Optional toolkit slug to scope the usage scan'),\n});\n\n// Body Schemas\n\nexport const authorizeToolProviderBodySchema = z.object({\n toolkit: z.string().describe('Toolkit slug being authorized'),\n connectionId: z.string().describe('Existing or newly-minted connection bucket id'),\n toolName: z.string().optional().describe('Optional tool slug for tool-scoped authorization'),\n config: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Provider-specific user-supplied connection fields (e.g. subdomain)'),\n label: z\n .string()\n .min(1, 'Connection label is required')\n .max(32, 'Connection label must be ≤ 32 characters')\n .regex(/^[A-Za-z0-9 _-]+$/, 'Connection label may only contain letters, digits, spaces, _ and -')\n .nullish()\n .describe(\n 'Optional human label to persist on the resulting tool_provider_connections row. Must match the stored connection label rules (≤ 32 chars, [A-Za-z0-9 _-]+).',\n ),\n scope: connectionScopeSchema\n .optional()\n .describe(\n 'Identity bucket. \"shared\" pins under SHARED_BUCKET_ID. \"caller-supplied\" pins under the request-context resourceId (returns 400 when missing). Defaults to \"per-author\".',\n ),\n});\n\nexport const connectionStatusToolProviderBodySchema = z.object({\n items: z\n .array(\n z.object({\n connectionId: z.string(),\n toolkit: z.string(),\n }),\n )\n .describe('Connection tuples to batch-check'),\n});\n\n// ============================================================================\n// Response Schemas\n// ============================================================================\n\nconst paginationSchema = z\n .object({\n total: z.number().optional(),\n page: z.number().optional(),\n perPage: z.number().optional(),\n hasMore: z.boolean(),\n })\n .optional();\n\nconst capabilitiesSchema = z.object({\n multipleConnectionsPerToolkit: z.boolean(),\n batchConnectionStatus: z.boolean(),\n reauthorizeReusesConnectionId: z.boolean(),\n supportsRevoke: z.boolean().optional(),\n});\n\nexport const listToolProvidersResponseSchema = z.object({\n providers: z.array(\n z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional(),\n displayName: z.string().optional(),\n capabilities: capabilitiesSchema.optional(),\n }),\n ),\n});\n\nexport const listToolProviderToolkitsResponseSchema = z.object({\n data: z.array(\n z.object({\n slug: z.string(),\n name: z.string(),\n description: z.string().optional(),\n icon: z.string().optional(),\n }),\n ),\n pagination: paginationSchema,\n});\n\nexport const listToolProviderToolsResponseSchema = z.object({\n data: z.array(\n z.object({\n slug: z.string(),\n name: z.string(),\n description: z.string().optional(),\n toolkit: z.string().optional(),\n }),\n ),\n pagination: paginationSchema,\n});\n\nexport const getToolProviderToolSchemaResponseSchema = z.record(z.string(), z.unknown());\n\nexport const authorizeToolProviderResponseSchema = z.object({\n url: z.string(),\n authId: z.string(),\n});\n\nexport const authStatusToolProviderResponseSchema = z.object({\n status: z.enum(['pending', 'completed', 'failed']),\n});\n\nexport const connectionStatusToolProviderResponseSchema = z.object({\n items: z.record(z.string(), z.object({ connected: z.boolean() })),\n});\n\nexport const listConnectionsResponseSchema = z.object({\n items: z.array(\n z.object({\n connectionId: z.string(),\n status: z.enum(['active', 'pending', 'failed', 'inactive']),\n createdAt: z.string().optional(),\n label: z.string().nullish().describe('Persisted display label from tool_provider_connections, if any'),\n authorId: z.string().optional().describe('Owner of the connection (when known)'),\n scope: connectionScopeSchema\n .optional()\n .describe('Persisted scope from tool_provider_connections. Missing for rows that predate the scope field.'),\n }),\n ),\n pagination: paginationSchema,\n});\n\nexport const listConnectionFieldsResponseSchema = z.object({\n fields: z.array(\n z.object({\n name: z.string(),\n displayName: z.string().optional(),\n description: z.string().optional(),\n type: z.enum(['string', 'number', 'boolean']),\n required: z.boolean(),\n default: z.unknown().optional(),\n }),\n ),\n});\n\nexport const disconnectConnectionResponseSchema = z.object({\n ok: z.literal(true),\n revoked: z.boolean().describe('Whether the provider-side connection was revoked'),\n});\n\nexport const updateConnectionBodySchema = z.object({\n label: z\n .union([labelSchema, z.literal(''), z.null()])\n .describe('New display label for the connection. Pass null (or empty string) to clear the existing label.'),\n});\n\nexport const updateConnectionResponseSchema = z.object({\n ok: z.literal(true),\n label: z.string().nullable().describe('The persisted label after the update (null when cleared)'),\n});\n\nexport const connectionUsageResponseSchema = z.object({\n agents: z.array(\n z.object({\n id: z.string(),\n name: z.string(),\n }),\n ),\n});\n\nexport const toolProviderHealthResponseSchema = z.object({\n ok: z.boolean(),\n message: z.string().optional(),\n details: z.record(z.string(), z.unknown()).optional(),\n});\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/server/schemas/tool-providers.ts"],"names":["z"],"mappings":"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","file":"chunk-H7KDCXLQ.cjs","sourcesContent":["import { z } from 'zod/v4';\n\n// ============================================================================\n// Stored form shape — `toolProviders` field on agents\n// ============================================================================\n\n/**\n * Zod schemas for the Agent Builder / CMS tool providers storage shape.\n *\n * Rules:\n * - **Additive-only.** No version field. Future fields are introduced as\n * optional and existing fields are never removed in v1.x.\n * - `label` is optional when there is exactly one connection for a\n * `toolkit`. Once two or more connections share a `toolkit`, every\n * connection must carry a non-empty, ≤ 32 char, `[A-Za-z0-9 _-]+`\n * label that is case-insensitively unique within that toolkit.\n * - `kind` accepts all three values for forward-compat; v1 only writes\n * `'author'`.\n */\n\nconst labelSchema = z\n .string()\n .min(1, 'Connection label is required')\n .max(32, 'Connection label must be ≤ 32 characters')\n .regex(/^[A-Za-z0-9 _-]+$/, 'Connection label may only contain letters, digits, spaces, _ and -');\n\n/**\n * Per-pin identity bucketing.\n *\n * - `'per-author'` (default) — bucketed under the caller's resolved authorId.\n * - `'shared'` — bucketed under SHARED_BUCKET_ID; visible to every caller.\n * - `'caller-supplied'` — bucketed under `requestContext[MASTRA_RESOURCE_ID_KEY]`.\n *\n * Optional for back-compat with pre-scope stored pins.\n */\nexport const connectionScopeSchema = z.enum(['shared', 'per-author', 'caller-supplied']);\n\nexport const connectionSchema = z.object({\n kind: z.enum(['author', 'invoker', 'platform']),\n toolkit: z.string().min(1),\n connectionId: z.string(),\n label: labelSchema.optional(),\n scope: connectionScopeSchema.optional(),\n});\n\nconst toolMetaSchema = z.object({\n toolkit: z.string().min(1).optional(),\n description: z.string().optional(),\n});\n\n/**\n * Stored shape for one provider's configuration on one agent.\n *\n * `superRefine` enforces case-insensitive uniqueness of `label` within\n * each `connections[toolkit]` array.\n */\nexport const toolProviderConfigSchema = z\n .object({\n tools: z.record(z.string(), toolMetaSchema),\n connections: z.record(z.string(), z.array(connectionSchema)),\n })\n .superRefine((value, ctx) => {\n for (const [toolkit, connections] of Object.entries(value.connections)) {\n if (connections.length < 2) continue;\n\n const seen = new Map<string, number>();\n for (let i = 0; i < connections.length; i++) {\n const conn = connections[i]!;\n const trimmed = conn.label?.trim() ?? '';\n if (trimmed.length === 0) {\n ctx.addIssue({\n code: 'custom',\n path: ['connections', toolkit, i, 'label'],\n message: `Connection label is required on toolkit \"${toolkit}\" once it has two or more connections`,\n });\n continue;\n }\n const key = trimmed.toLocaleLowerCase();\n const prevIndex = seen.get(key);\n if (prevIndex !== undefined) {\n ctx.addIssue({\n code: 'custom',\n path: ['connections', toolkit, i, 'label'],\n message: `Duplicate connection label \"${conn.label}\" on toolkit \"${toolkit}\" (labels must be unique case-insensitively)`,\n });\n } else {\n seen.set(key, i);\n }\n }\n }\n });\n\n/**\n * Full v1 tool providers payload: keyed by provider id.\n */\nexport const toolProvidersSchema = z.record(z.string(), toolProviderConfigSchema);\n\n// ============================================================================\n// HTTP route schemas — /tool-providers/*\n// ============================================================================\n\n// Path Parameter Schemas\n\nexport const toolProviderIdPathParams = z.object({\n providerId: z.string().describe('Unique identifier for the tool provider'),\n});\n\nexport const toolSlugPathParams = toolProviderIdPathParams.extend({\n toolSlug: z.string().describe('Slug identifier for the tool'),\n});\n\nexport const toolProviderAuthStatusPathParams = toolProviderIdPathParams.extend({\n authId: z.string().describe('Opaque auth handle returned by authorize'),\n});\n\nexport const toolProviderConnectionPathParams = toolProviderIdPathParams.extend({\n connectionId: z.string().describe('Adapter-native connection id (e.g. Composio ca_...)'),\n});\n\n// Query Parameter Schemas\n\nexport const listToolProviderToolsQuerySchema = z.object({\n toolkit: z.string().optional().describe('Filter tools by toolkit slug'),\n search: z.string().optional().describe('Search tools by name or description'),\n page: z.coerce.number().optional().describe('Page number for pagination (1-indexed)'),\n perPage: z.coerce.number().optional().describe('Number of items per page'),\n});\n\nexport const listConnectionFieldsQuerySchema = z.object({\n toolkit: z.string().describe('Toolkit slug whose connection field schema to list'),\n});\n\nexport const listConnectionsQuerySchema = z.object({\n toolkit: z.string().describe('Toolkit slug whose connections to list'),\n authorId: z\n .string()\n .optional()\n .describe('Admin-only: restrict listing to a specific author. Silently ignored for non-admin callers.'),\n scope: connectionScopeSchema\n .optional()\n .describe('Filter results by scope. Omit to include shared + per-author pins for the caller.'),\n page: z.coerce.number().int().positive().optional().describe('Page number for pagination (1-indexed)'),\n perPage: z.coerce\n .number()\n .int()\n .positive()\n .max(200)\n .optional()\n .describe('Number of items per page (default 50, max 200)'),\n});\n\nexport const disconnectConnectionQuerySchema = z.object({\n force: z\n .union([z.boolean(), z.enum(['true', 'false'])])\n .optional()\n .describe('When true, revoke at the provider and drop the row even if pinned by agents'),\n toolkit: z.string().optional().describe('Toolkit slug for the connection (used when the row was upserted with one)'),\n});\n\nexport const connectionUsageQuerySchema = z.object({\n toolkit: z.string().optional().describe('Optional toolkit slug to scope the usage scan'),\n});\n\n// Body Schemas\n\nexport const authorizeToolProviderBodySchema = z.object({\n toolkit: z.string().describe('Toolkit slug being authorized'),\n connectionId: z.string().describe('Existing or newly-minted connection bucket id'),\n toolName: z.string().optional().describe('Optional tool slug for tool-scoped authorization'),\n config: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Provider-specific user-supplied connection fields (e.g. subdomain)'),\n label: z\n .string()\n .min(1, 'Connection label is required')\n .max(32, 'Connection label must be ≤ 32 characters')\n .regex(/^[A-Za-z0-9 _-]+$/, 'Connection label may only contain letters, digits, spaces, _ and -')\n .nullish()\n .describe(\n 'Optional human label to persist on the resulting tool_provider_connections row. Must match the stored connection label rules (≤ 32 chars, [A-Za-z0-9 _-]+).',\n ),\n scope: connectionScopeSchema\n .optional()\n .describe(\n 'Identity bucket. \"shared\" pins under SHARED_BUCKET_ID. \"caller-supplied\" pins under the request-context resourceId (returns 400 when missing). Defaults to \"per-author\".',\n ),\n});\n\nexport const connectionStatusToolProviderBodySchema = z.object({\n items: z\n .array(\n z.object({\n connectionId: z.string(),\n toolkit: z.string(),\n }),\n )\n .describe('Connection tuples to batch-check'),\n});\n\n// ============================================================================\n// Response Schemas\n// ============================================================================\n\nconst paginationSchema = z\n .object({\n total: z.number().optional(),\n page: z.number().optional(),\n perPage: z.number().optional(),\n hasMore: z.boolean(),\n })\n .optional();\n\nconst capabilitiesSchema = z.object({\n multipleConnectionsPerToolkit: z.boolean(),\n batchConnectionStatus: z.boolean(),\n reauthorizeReusesConnectionId: z.boolean(),\n supportsRevoke: z.boolean().optional(),\n});\n\nexport const listToolProvidersResponseSchema = z.object({\n providers: z.array(\n z.object({\n id: z.string(),\n name: z.string(),\n description: z.string().optional(),\n displayName: z.string().optional(),\n capabilities: capabilitiesSchema.optional(),\n }),\n ),\n});\n\nexport const listToolProviderToolkitsResponseSchema = z.object({\n data: z.array(\n z.object({\n slug: z.string(),\n name: z.string(),\n description: z.string().optional(),\n icon: z.string().optional(),\n }),\n ),\n pagination: paginationSchema,\n});\n\nexport const listToolProviderToolsResponseSchema = z.object({\n data: z.array(\n z.object({\n slug: z.string(),\n name: z.string(),\n description: z.string().optional(),\n toolkit: z.string().optional(),\n }),\n ),\n pagination: paginationSchema,\n});\n\nexport const getToolProviderToolSchemaResponseSchema = z.record(z.string(), z.unknown());\n\nexport const authorizeToolProviderResponseSchema = z.object({\n url: z.string(),\n authId: z.string(),\n});\n\nexport const authStatusToolProviderResponseSchema = z.object({\n status: z.enum(['pending', 'completed', 'failed']),\n});\n\nexport const connectionStatusToolProviderResponseSchema = z.object({\n items: z.record(z.string(), z.object({ connected: z.boolean() })),\n});\n\nexport const listConnectionsResponseSchema = z.object({\n items: z.array(\n z.object({\n connectionId: z.string(),\n status: z.enum(['active', 'pending', 'failed', 'inactive']),\n createdAt: z.string().optional(),\n label: z.string().nullish().describe('Persisted display label from tool_provider_connections, if any'),\n authorId: z.string().optional().describe('Owner of the connection (when known)'),\n scope: connectionScopeSchema\n .optional()\n .describe('Persisted scope from tool_provider_connections. Missing for rows that predate the scope field.'),\n }),\n ),\n pagination: paginationSchema,\n});\n\nexport const listConnectionFieldsResponseSchema = z.object({\n fields: z.array(\n z.object({\n name: z.string(),\n displayName: z.string().optional(),\n description: z.string().optional(),\n type: z.enum(['string', 'number', 'boolean']),\n required: z.boolean(),\n default: z.unknown().optional(),\n }),\n ),\n});\n\nexport const disconnectConnectionResponseSchema = z.object({\n ok: z.literal(true),\n revoked: z.boolean().describe('Whether the provider-side connection was revoked'),\n});\n\nexport const updateConnectionBodySchema = z.object({\n label: z\n .union([labelSchema, z.literal(''), z.null()])\n .describe('New display label for the connection. Pass null (or empty string) to clear the existing label.'),\n});\n\nexport const updateConnectionResponseSchema = z.object({\n ok: z.literal(true),\n label: z.string().nullable().describe('The persisted label after the update (null when cleared)'),\n});\n\nexport const connectionUsageResponseSchema = z.object({\n agents: z.array(\n z.object({\n id: z.string(),\n name: z.string(),\n }),\n ),\n});\n\nexport const toolProviderHealthResponseSchema = z.object({\n ok: z.boolean(),\n message: z.string().optional(),\n details: z.record(z.string(), z.unknown()).optional(),\n});\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../_internal-core/src/error/utils.ts","../../_internal-core/src/error/index.ts","../../_internal-core/src/routes/index.ts","../../_internals/voice/src/routes/index.ts"],"names":["ErrorDomain"],"mappings":"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","file":"chunk-H7TPN2Y6.js","sourcesContent":["/**\n * Safely converts an object to a string representation.\n * Uses JSON.stringify first, but falls back to String() if:\n * - JSON.stringify fails (e.g., circular references)\n * - JSON.stringify returns \"{}\" (e.g., Error objects with no enumerable properties)\n */\nexport function safeParseErrorObject(obj: unknown): string {\n if (typeof obj !== 'object' || obj === null) {\n return String(obj);\n }\n\n try {\n const stringified = JSON.stringify(obj);\n // If JSON.stringify returns \"{}\", fall back to String() for better representation\n if (stringified === '{}') {\n return String(obj);\n }\n return stringified;\n } catch {\n // Fallback to String() if JSON.stringify fails (e.g., circular references)\n return String(obj);\n }\n}\n\n/**\n * Represents a serialized error structure for JSON output.\n */\nexport type SerializedError = {\n name: string;\n message: string;\n stack?: string;\n cause?: SerializedError | unknown;\n} & Record<string, any>;\n\n/**\n * An Error instance with a toJSON method for proper serialization.\n */\nexport type SerializableError = Error & {\n toJSON: () => SerializedError;\n};\n\n/**\n * Safely converts an unknown error to an Error instance.\n */\nexport function getErrorFromUnknown<SERIALIZABLE extends boolean = true>(\n unknown: unknown,\n options: {\n /**\n * The fallback error message to use if the unknown error cannot be parsed.\n */\n fallbackMessage?: string;\n /**\n * The maximum depth to parse the cause of the error.\n */\n maxDepth?: number;\n /**\n * Whether to add .toJSON() method to the error instance to support serialization. (JSON.stringify)\n * @example\n * const error = getErrorFromUnknown(new Error('test'), { supportSerialization: true });\n * JSON.stringify(error) // { message: 'test', name: 'Error', stack: 'Error: test\\n at ...' }\n */\n supportSerialization?: SERIALIZABLE;\n /**\n * Whether to include the stack in JSON serialization.\n * The stack is always preserved on the Error instance for debugging.\n * This option only controls whether it appears in toJSON() output.\n * @default true\n */\n serializeStack?: boolean;\n } = {},\n): SERIALIZABLE extends true ? SerializableError : Error {\n const defaultOptions = {\n fallbackMessage: 'Unknown error',\n maxDepth: 5,\n supportSerialization: true,\n serializeStack: true,\n };\n const mergedOptions = options ? { ...defaultOptions, ...options } : defaultOptions;\n const { fallbackMessage, maxDepth, supportSerialization, serializeStack } = mergedOptions;\n\n if (unknown && unknown instanceof Error) {\n // Stack is always preserved on the instance for debugging\n // serializeStack only controls whether it appears in toJSON() output\n if (supportSerialization) {\n addErrorToJSON(unknown, serializeStack, { maxDepth });\n }\n return unknown as SERIALIZABLE extends true ? SerializableError : Error;\n }\n\n let error: Error | undefined;\n\n if (unknown && typeof unknown === 'object') {\n const errorMessage =\n unknown && 'message' in unknown && typeof unknown.message === 'string'\n ? unknown.message\n : safeParseErrorObject(unknown);\n\n const errorCause =\n 'cause' in unknown && unknown.cause !== undefined\n ? unknown.cause instanceof Error\n ? unknown.cause\n : maxDepth > 0 // Only process cause if we haven't exceeded max depth\n ? getErrorFromUnknown(unknown.cause, { ...mergedOptions, maxDepth: maxDepth - 1 })\n : undefined\n : undefined;\n\n error = new Error(errorMessage, errorCause ? { cause: errorCause } : undefined);\n\n Object.assign(error as Error, unknown);\n error.stack = 'stack' in unknown && typeof unknown.stack === 'string' ? unknown.stack : undefined;\n } else if (unknown && typeof unknown === 'string') {\n error = new Error(unknown);\n error.stack = undefined;\n } else {\n error = new Error(fallbackMessage);\n }\n\n if (supportSerialization) {\n addErrorToJSON(error, serializeStack, { maxDepth });\n }\n return error as SERIALIZABLE extends true ? SerializableError : Error;\n}\n\nconst DEFAULT_MAX_DEPTH = 5;\n\n/**\n * Adds a toJSON method to an Error instance for proper serialization.\n * Ensures that message, name, cause, and custom properties are all serialized.\n * Stack is only included in JSON output if serializeStack is true.\n * Recursively adds toJSON to the cause chain for proper nested error serialization.\n */\nfunction addErrorToJSON(\n error: Error,\n serializeStack: boolean = true,\n options?: { maxDepth?: number; currentDepth?: number },\n): void {\n const maxDepth = options?.maxDepth ?? DEFAULT_MAX_DEPTH;\n const currentDepth = options?.currentDepth ?? 0;\n\n // Skip if error already has toJSON - preserves custom implementations\n // and avoids re-processing (first call's options win)\n if ((error as SerializableError).toJSON) {\n return;\n }\n\n // Recursively add toJSON to cause chain (with depth protection)\n if (error.cause instanceof Error && currentDepth < maxDepth) {\n addErrorToJSON(error.cause, serializeStack, { maxDepth, currentDepth: currentDepth + 1 });\n }\n\n // Define toJSON as non-enumerable to avoid interfering with object comparisons\n Object.defineProperty(error, 'toJSON', {\n value: function (this: Error) {\n const json: SerializedError = {\n message: this.message,\n name: this.name,\n };\n // Only include stack in JSON if serializeStack is true\n if (serializeStack && this.stack !== undefined) {\n json.stack = this.stack;\n }\n\n // Serialize cause if it's an Error and has a toJSON method, else include as is\n if (this.cause !== undefined) {\n if (this.cause instanceof Error && 'toJSON' in this.cause && typeof this.cause.toJSON === 'function') {\n json.cause = this.cause.toJSON();\n } else {\n json.cause = this.cause;\n }\n }\n\n // Include all enumerable custom properties\n const errorAsAny = this as any;\n for (const key in errorAsAny) {\n if (errorAsAny.hasOwnProperty(key) && !(key in json) && key !== 'toJSON') {\n json[key] = errorAsAny[key];\n }\n }\n\n return json;\n },\n enumerable: false,\n writable: true,\n configurable: true,\n });\n}\n","import { getErrorFromUnknown } from './utils.js';\nimport type { SerializableError, SerializedError } from './utils.js';\n\nexport { getErrorFromUnknown, safeParseErrorObject } from './utils.js';\nexport type { SerializableError, SerializedError };\n\nexport enum ErrorDomain {\n TOOL = 'TOOL',\n AGENT = 'AGENT',\n MCP = 'MCP',\n AGENT_NETWORK = 'AGENT_NETWORK',\n MASTRA_SERVER = 'MASTRA_SERVER',\n MASTRA_OBSERVABILITY = 'MASTRA_OBSERVABILITY',\n MASTRA_WORKFLOW = 'MASTRA_WORKFLOW',\n MASTRA_VOICE = 'MASTRA_VOICE',\n MASTRA_VECTOR = 'MASTRA_VECTOR',\n MASTRA_MEMORY = 'MASTRA_MEMORY',\n LLM = 'LLM',\n EVAL = 'EVAL',\n SCORER = 'SCORER',\n A2A = 'A2A',\n MASTRA_INSTANCE = 'MASTRA_INSTANCE',\n MASTRA = 'MASTRA',\n DEPLOYER = 'DEPLOYER',\n STORAGE = 'STORAGE',\n MODEL_ROUTER = 'MODEL_ROUTER',\n}\n\nexport enum ErrorCategory {\n UNKNOWN = 'UNKNOWN',\n USER = 'USER',\n SYSTEM = 'SYSTEM',\n THIRD_PARTY = 'THIRD_PARTY',\n}\n\ntype Scalar = null | boolean | number | string;\n\ntype Json<T> = [T] extends [Scalar | undefined]\n ? Scalar\n : [T] extends [{ [x: number]: unknown }]\n ? { [K in keyof T]: Json<T[K]> }\n : never;\n\n/**\n * Defines the structure for an error's metadata.\n * This is used to create instances of MastraError.\n */\nexport interface IErrorDefinition<DOMAIN, CATEGORY> {\n /** Unique identifier for the error. */\n id: Uppercase<string>;\n /**\n * Optional custom error message that overrides the original error message.\n * If not provided, the original error message will be used, or 'Unknown error' if no error is provided.\n */\n text?: string;\n /**\n * Functional domain of the error (e.g., CONFIG, BUILD, API).\n */\n domain: DOMAIN;\n /** Broad category of the error (e.g., USER, SYSTEM, THIRD_PARTY). */\n category: CATEGORY;\n\n details?: Record<string, Json<Scalar>>;\n}\n\n/**\n * JSON representation of a MastraError for serialization\n */\nexport interface MastraErrorJSON<DOMAIN = string, CATEGORY = string> {\n message: string;\n code: Uppercase<string>;\n category: CATEGORY;\n domain: DOMAIN;\n details?: Record<string, Json<Scalar>>;\n cause?: ReturnType<SerializableError['toJSON']>;\n}\n\n/**\n * Base error class for the Mastra ecosystem.\n * It standardizes error reporting and can be extended for more specific error types.\n */\nexport class MastraBaseError<DOMAIN, CATEGORY> extends Error {\n public readonly id: Uppercase<string>;\n public readonly domain: DOMAIN;\n public readonly category: CATEGORY;\n public readonly details?: Record<string, Json<Scalar>> = {};\n public readonly message: string;\n public cause?: SerializableError;\n\n constructor(\n errorDefinition: IErrorDefinition<DOMAIN, CATEGORY>,\n originalError?: string | Error | MastraBaseError<DOMAIN, CATEGORY> | unknown,\n ) {\n const error = originalError\n ? getErrorFromUnknown(originalError, {\n serializeStack: false,\n fallbackMessage: 'Unknown error',\n })\n : undefined;\n\n const message = errorDefinition.text ?? error?.message ?? 'Unknown error';\n\n super(message, { cause: error });\n this.id = errorDefinition.id;\n this.domain = errorDefinition.domain;\n this.category = errorDefinition.category;\n this.details = errorDefinition.details ?? {};\n this.message = message;\n this.cause = error;\n\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n /**\n * Returns a structured representation of the error, useful for logging or API responses.\n */\n public toJSONDetails() {\n return {\n message: this.message,\n domain: this.domain,\n category: this.category,\n details: this.details,\n };\n }\n\n public toJSON(): MastraErrorJSON<DOMAIN, CATEGORY> {\n return {\n message: this.message,\n domain: this.domain,\n category: this.category,\n code: this.id,\n details: this.details,\n cause: this.cause?.toJSON?.(),\n };\n }\n\n public toString() {\n return JSON.stringify(this.toJSON());\n }\n}\n\nexport class MastraError extends MastraBaseError<`${ErrorDomain}`, `${ErrorCategory}`> {}\n","import type * as z from 'zod/v4';\nimport type { RequestContext } from '../request-context';\nimport type { ToolsInput } from '../types';\n\nexport interface OpenAPIRoute {\n summary?: string;\n description?: string;\n tags?: string[];\n deprecated?: boolean;\n requestParams?: {\n path?: z.ZodSchema;\n query?: z.ZodSchema;\n };\n requestBody?: {\n content: {\n 'application/json': {\n schema: z.ZodSchema;\n };\n };\n };\n responses: {\n [statusCode: string]: {\n description: string;\n content?: {\n 'application/json': {\n schema: z.ZodSchema;\n };\n };\n };\n };\n}\n\ninterface RouteOpenAPIConfig {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n path: string;\n summary?: string;\n description?: string;\n tags?: string[];\n pathParamSchema?: z.ZodSchema;\n queryParamSchema?: z.ZodSchema;\n bodySchema?: z.ZodSchema;\n responseSchema?: z.ZodSchema;\n deprecated?: boolean;\n}\n\nexport function generateRouteOpenAPI({\n method,\n path,\n summary,\n description,\n tags = [],\n pathParamSchema,\n queryParamSchema,\n bodySchema,\n responseSchema,\n deprecated,\n}: RouteOpenAPIConfig): OpenAPIRoute {\n const route: OpenAPIRoute = {\n summary: summary || `${method} ${path}`,\n description,\n tags,\n deprecated,\n responses: {\n 200: {\n description: 'Successful response',\n },\n },\n };\n\n if (pathParamSchema || queryParamSchema) {\n route.requestParams = {};\n\n if (pathParamSchema) {\n route.requestParams.path = pathParamSchema;\n }\n\n if (queryParamSchema) {\n route.requestParams.query = queryParamSchema;\n }\n }\n\n if (bodySchema) {\n route.requestBody = {\n content: {\n 'application/json': {\n schema: bodySchema,\n },\n },\n };\n }\n\n if (responseSchema) {\n route.responses[200] = {\n description: 'Successful response',\n content: {\n 'application/json': {\n schema: responseSchema,\n },\n },\n };\n }\n\n return route;\n}\n\nexport type ResponseType = 'stream' | 'json' | 'datastream-response' | 'mcp-http' | 'mcp-sse';\n\nexport type InferParams<\n TPathSchema extends z.ZodTypeAny | undefined,\n TQuerySchema extends z.ZodTypeAny | undefined,\n TBodySchema extends z.ZodTypeAny | undefined,\n> = (TPathSchema extends z.ZodTypeAny ? z.infer<TPathSchema> : {}) &\n (TQuerySchema extends z.ZodTypeAny ? z.infer<TQuerySchema> : {}) &\n (TBodySchema extends z.ZodTypeAny ? z.infer<TBodySchema> : {});\n\nexport interface RouteSchemas<\n TPathSchema = unknown,\n TQuerySchema = unknown,\n TBodySchema = unknown,\n TResponseSchema = unknown,\n> {\n readonly pathParams: TPathSchema;\n readonly queryParams: TQuerySchema;\n readonly body: TBodySchema;\n readonly response: TResponseSchema;\n}\n\nexport type ServerContext = {\n mastra: any;\n requestContext: RequestContext;\n registeredTools?: ToolsInput;\n taskStore?: unknown;\n abortSignal: AbortSignal;\n routePrefix?: string;\n};\n\nexport type ServerRouteHandler<\n TParams = Record<string, unknown>,\n TResponse = unknown,\n TResponseType extends ResponseType = 'json',\n> = (\n params: TParams & ServerContext,\n) => Promise<\n TResponseType extends 'stream' ? ReadableStream : TResponseType extends 'datastream-response' ? Response : TResponse\n>;\n\nexport type ValidationErrorHook = (error: z.ZodError) => { status?: number; body?: unknown } | void;\n\nexport type ServerRoute<\n TParams = Record<string, unknown>,\n TResponse = unknown,\n TResponseType extends ResponseType = ResponseType,\n TSchemas extends RouteSchemas = RouteSchemas,\n TMethod extends string = string,\n TPath extends string = string,\n> = {\n method: TMethod;\n path: TPath;\n responseType: TResponseType;\n streamFormat?: 'sse' | 'stream';\n sseFlushOnConnect?: boolean;\n handler(params: TParams & ServerContext): ReturnType<ServerRouteHandler<TParams, TResponse, TResponseType>>;\n pathParamSchema?: z.ZodSchema;\n queryParamSchema?: z.ZodSchema;\n bodySchema?: z.ZodSchema;\n responseSchema?: z.ZodSchema;\n openapi?: OpenAPIRoute;\n maxBodySize?: number;\n deprecated?: boolean;\n requiresAuth?: boolean;\n requiresPermission?: any;\n fga?: any;\n onValidationError?: ValidationErrorHook;\n readonly __schemas?: TSchemas;\n};\n\ninterface RouteConfig<\n TPathSchema extends z.ZodTypeAny | undefined = undefined,\n TQuerySchema extends z.ZodTypeAny | undefined = undefined,\n TBodySchema extends z.ZodTypeAny | undefined = undefined,\n TResponseSchema extends z.ZodTypeAny | undefined = undefined,\n TResponseType extends ResponseType = 'json',\n TMethod extends string = string,\n TPath extends string = string,\n> {\n method: TMethod;\n path: TPath;\n responseType: TResponseType;\n streamFormat?: 'sse' | 'stream';\n sseFlushOnConnect?: boolean;\n handler: ServerRouteHandler<\n InferParams<TPathSchema, TQuerySchema, TBodySchema>,\n TResponseSchema extends z.ZodTypeAny ? z.infer<TResponseSchema> : unknown,\n TResponseType\n >;\n pathParamSchema?: TPathSchema;\n queryParamSchema?: TQuerySchema;\n bodySchema?: TBodySchema;\n responseSchema?: TResponseSchema;\n summary?: string;\n description?: string;\n tags?: string[];\n deprecated?: boolean;\n maxBodySize?: number;\n requiresAuth?: boolean;\n requiresPermission?: any;\n fga?: any;\n onValidationError?: ValidationErrorHook;\n}\n\nexport function createRoute<\n TPathSchema extends z.ZodTypeAny | undefined = undefined,\n TQuerySchema extends z.ZodTypeAny | undefined = undefined,\n TBodySchema extends z.ZodTypeAny | undefined = undefined,\n TResponseSchema extends z.ZodTypeAny | undefined = undefined,\n TResponseType extends ResponseType = 'json',\n TMethod extends string = string,\n TPath extends string = string,\n>(\n config: RouteConfig<TPathSchema, TQuerySchema, TBodySchema, TResponseSchema, TResponseType, TMethod, TPath>,\n): ServerRoute<\n InferParams<TPathSchema, TQuerySchema, TBodySchema>,\n TResponseSchema extends z.ZodTypeAny ? z.infer<TResponseSchema> : unknown,\n TResponseType,\n RouteSchemas<TPathSchema, TQuerySchema, TBodySchema, TResponseSchema>,\n TMethod,\n TPath\n> {\n const { summary, description, tags, deprecated, requiresAuth, requiresPermission, onValidationError, ...baseRoute } =\n config;\n\n const openapi =\n config.method !== 'ALL'\n ? generateRouteOpenAPI({\n method: config.method as 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH',\n path: config.path,\n summary,\n description,\n tags,\n pathParamSchema: config.pathParamSchema,\n queryParamSchema: config.queryParamSchema,\n bodySchema: config.bodySchema,\n responseSchema: config.responseSchema,\n deprecated,\n })\n : undefined;\n\n return {\n ...baseRoute,\n openapi,\n deprecated,\n requiresAuth,\n requiresPermission,\n onValidationError,\n };\n}\n\nexport function createPublicRoute<\n TPathSchema extends z.ZodTypeAny | undefined = undefined,\n TQuerySchema extends z.ZodTypeAny | undefined = undefined,\n TBodySchema extends z.ZodTypeAny | undefined = undefined,\n TResponseSchema extends z.ZodTypeAny | undefined = undefined,\n TResponseType extends ResponseType = 'json',\n TMethod extends string = string,\n TPath extends string = string,\n>(\n config: Omit<\n RouteConfig<TPathSchema, TQuerySchema, TBodySchema, TResponseSchema, TResponseType, TMethod, TPath>,\n 'requiresAuth'\n >,\n): ServerRoute<\n InferParams<TPathSchema, TQuerySchema, TBodySchema>,\n TResponseSchema extends z.ZodTypeAny ? z.infer<TResponseSchema> : unknown,\n TResponseType,\n RouteSchemas<TPathSchema, TQuerySchema, TBodySchema, TResponseSchema>,\n TMethod,\n TPath\n> {\n return createRoute({\n ...config,\n requiresAuth: false,\n });\n}\n","import { Readable } from 'node:stream';\nimport { ErrorDomain, MastraError } from '@internal/core/error';\nimport type { RequestContext } from '@internal/core/request-context';\nimport { createRoute } from '@internal/core/routes';\nimport { z } from 'zod/v4';\n\nexport const voiceSpeakersResponseSchema = z.array(\n z\n .object({\n voiceId: z.string(),\n })\n .passthrough(),\n);\n\nexport const generateSpeechBodySchema = z.object({\n text: z.string(),\n speakerId: z.string().optional(),\n});\n\nexport const transcribeSpeechBodySchema = z.object({\n audio: z.any(),\n options: z.record(z.string(), z.any()).optional(),\n});\n\nexport const transcribeSpeechResponseSchema = z.object({\n text: z.string(),\n});\n\nexport const getListenerResponseSchema = z.any();\nexport const speakResponseSchema = z.any();\n\nconst agentIdPathParams = z.object({\n agentId: z.string().describe('Agent ID'),\n});\n\ntype StatusCode = 400 | 404 | 500;\n\nclass HTTPException extends Error {\n readonly status: StatusCode;\n\n constructor(status: StatusCode, options: { message?: string; cause?: unknown; stack?: string } = {}) {\n super(options.message, { cause: options.cause });\n this.status = status;\n this.stack = options.stack || this.stack;\n }\n}\n\ntype ApiError = Error & {\n status?: number;\n details?: {\n status?: number;\n };\n};\n\nfunction isMastraVoiceError(error: unknown): error is MastraError {\n return (\n error instanceof MastraError ||\n (typeof error === 'object' && error !== null && 'domain' in error && error.domain === ErrorDomain.MASTRA_VOICE) ||\n (error instanceof Error && error.message === 'No voice provider configured')\n );\n}\n\nfunction handleError(error: unknown, defaultMessage: string): never {\n const apiError = error as ApiError;\n const status = apiError.status || apiError.details?.status || 500;\n\n throw new HTTPException(status as StatusCode, {\n message: apiError.message || defaultMessage,\n stack: apiError.stack,\n cause: apiError.cause,\n });\n}\n\nfunction validateBody(data: Record<string, unknown>): void {\n for (const [key, value] of Object.entries(data)) {\n if (value === undefined || value === null || value === '') {\n throw new HTTPException(400, { message: `${key} is required` });\n }\n }\n}\n\nasync function getAgentFromSystem({\n mastra,\n agentId,\n requestContext,\n}: {\n mastra: any;\n agentId: string;\n requestContext?: RequestContext;\n}): Promise<any> {\n const logger = mastra.getLogger?.();\n\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n let agent: any;\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 not found, looking through sub-agents', { agentId });\n const agents = mastra.listAgents?.();\n if (Object.keys(agents || {}).length) {\n for (const ag of Object.values(agents)) {\n try {\n const subAgents = await (ag as any).listAgents();\n const subAgent = subAgents[agentId];\n if (subAgent) {\n agent = subAgent;\n break;\n }\n } catch (error) {\n logger?.debug?.('Error getting agent from agent', error);\n }\n }\n }\n }\n\n if (agent && mastra.getEditor) {\n try {\n const editorAgent = mastra.getEditor()?.agent;\n if (editorAgent) {\n agent = await editorAgent.applyStoredOverrides(agent, { status: 'published' }, requestContext);\n }\n } catch (error) {\n logger?.debug?.('Error applying stored overrides to code agent', error);\n }\n }\n\n if (!agent) {\n logger?.debug?.('Agent not found in code-defined agents, looking in stored agents', { agentId });\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\nexport const GET_SPEAKERS_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId/voice/speakers',\n responseType: 'json',\n summary: 'Get voice speakers',\n description: 'Returns available voice speakers for the specified agent',\n tags: ['Agents', 'Voice'],\n requiresAuth: true,\n pathParamSchema: agentIdPathParams,\n responseSchema: voiceSpeakersResponseSchema,\n handler: async ({ mastra, agentId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n const agent = await getAgentFromSystem({ mastra, agentId, requestContext });\n const voice = await agent.getVoice({ requestContext });\n\n const speakers = await Promise.resolve()\n .then(() => voice.getSpeakers())\n .catch(err => {\n if (isMastraVoiceError(err)) {\n return [];\n }\n throw err;\n });\n\n return speakers;\n } catch (error) {\n return handleError(error, 'Error getting speakers');\n }\n },\n});\n\nexport const GET_SPEAKERS_DEPRECATED_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId/speakers',\n responseType: 'json',\n summary: 'Get available speakers for an agent',\n description: '[DEPRECATED] Use /agents/:agentId/voice/speakers instead. Get available speakers for an agent',\n tags: ['Agents', 'Voice'],\n requiresAuth: true,\n deprecated: true,\n pathParamSchema: agentIdPathParams,\n responseSchema: voiceSpeakersResponseSchema,\n handler: GET_SPEAKERS_ROUTE.handler,\n});\n\nexport const GENERATE_SPEECH_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/voice/speak',\n responseType: 'stream',\n summary: 'Generate speech',\n description: 'Generates speech audio from text using the agent voice configuration',\n tags: ['Agents', 'Voice'],\n requiresAuth: true,\n pathParamSchema: agentIdPathParams,\n bodySchema: generateSpeechBodySchema,\n responseSchema: speakResponseSchema,\n handler: async ({ mastra, agentId, text, speakerId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n validateBody({ text });\n\n const agent = await getAgentFromSystem({ mastra, agentId, requestContext });\n const voice = await agent.getVoice({ requestContext });\n\n if (!voice) {\n throw new HTTPException(400, { message: 'Agent does not have voice capabilities' });\n }\n\n const audioStream = await Promise.resolve()\n .then(() => voice.speak(text!, { speaker: speakerId! }))\n .catch(err => {\n if (isMastraVoiceError(err)) {\n throw new HTTPException(400, { message: err.message });\n }\n\n throw err;\n });\n\n if (!audioStream) {\n throw new HTTPException(500, { message: 'Failed to generate speech' });\n }\n\n return audioStream as unknown as ReadableStream<any>;\n } catch (error) {\n return handleError(error, 'Error generating speech');\n }\n },\n});\n\nexport const GENERATE_SPEECH_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/speak',\n responseType: 'stream',\n summary: 'Convert text to speech',\n description:\n \"[DEPRECATED] Use /agents/:agentId/voice/speak instead. Convert text to speech using the agent's voice provider\",\n tags: ['Agents', 'Voice'],\n requiresAuth: true,\n deprecated: true,\n pathParamSchema: agentIdPathParams,\n bodySchema: generateSpeechBodySchema,\n responseSchema: speakResponseSchema,\n handler: GENERATE_SPEECH_ROUTE.handler,\n});\n\nexport const TRANSCRIBE_SPEECH_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/voice/listen',\n responseType: 'json',\n summary: 'Transcribe speech',\n description: 'Transcribes speech audio to text using the agent voice configuration',\n tags: ['Agents', 'Voice'],\n requiresAuth: true,\n pathParamSchema: agentIdPathParams,\n bodySchema: transcribeSpeechBodySchema,\n responseSchema: transcribeSpeechResponseSchema,\n handler: async ({ mastra, agentId, audio, options, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n if (!audio) {\n throw new HTTPException(400, { message: 'Audio data is required' });\n }\n\n const agent = await getAgentFromSystem({ mastra, agentId, requestContext });\n const voice = await agent.getVoice({ requestContext });\n\n if (!voice) {\n throw new HTTPException(400, { message: 'Agent does not have voice capabilities' });\n }\n\n const audioStream = new Readable();\n audioStream.push(audio);\n audioStream.push(null);\n\n const text = await voice.listen(audioStream, options);\n return { text: text as string };\n } catch (error) {\n return handleError(error, 'Error transcribing speech');\n }\n },\n});\n\nexport const TRANSCRIBE_SPEECH_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/listen',\n responseType: 'json',\n summary: 'Convert speech to text',\n description:\n \"[DEPRECATED] Use /agents/:agentId/voice/listen instead. Convert speech to text using the agent's voice provider. Additional provider-specific options can be passed as query parameters.\",\n tags: ['Agents', 'Voice'],\n requiresAuth: true,\n deprecated: true,\n pathParamSchema: agentIdPathParams,\n bodySchema: transcribeSpeechBodySchema,\n responseSchema: transcribeSpeechResponseSchema,\n handler: TRANSCRIBE_SPEECH_ROUTE.handler,\n});\n\nexport const GET_LISTENER_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId/voice/listener',\n responseType: 'json',\n summary: 'Get voice listener',\n description: 'Returns the voice listener configuration for the agent',\n tags: ['Agents', 'Voice'],\n requiresAuth: true,\n pathParamSchema: agentIdPathParams,\n responseSchema: getListenerResponseSchema,\n handler: async ({ mastra, agentId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n const agent = mastra.getAgentById(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const voice = await agent.getVoice({ requestContext });\n\n const listeners = await Promise.resolve()\n .then(() => voice.getListener())\n .catch(err => {\n if (isMastraVoiceError(err)) {\n return { enabled: false };\n }\n throw err;\n });\n\n return listeners;\n } catch (error) {\n return handleError(error, 'Error getting listeners');\n }\n },\n});\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/server/handlers/auth.ts"],"names":["mastra"],"mappings":"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","file":"chunk-KDMOWJ4W.js","sourcesContent":["/**\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, IFGAProvider, EEUser } from '@mastra/core/auth/ee';\nimport type { MastraAuthProvider } from '@mastra/core/server';\n\nimport { z } from 'zod/v4';\nimport { supportsSessionRefresh } from '../auth/helpers';\nimport { MASTRA_USER_PERMISSIONS_KEY } from '../constants';\nimport { HTTPException } from '../http-exception';\nimport {\n capabilitiesResponseSchema,\n ssoLoginQuerySchema,\n ssoCallbackQuerySchema,\n currentUserResponseSchema,\n credentialsSignInBodySchema,\n credentialsSignUpBodySchema,\n refreshResponseSchema,\n permissionPatternsResponseSchema,\n} from '../schemas/auth';\nimport { createPublicRoute, createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\n\ntype BuildCapabilitiesFn = (\n auth: any,\n request: Request,\n options?: { rbac?: any; fga?: any; apiPrefix?: string },\n) => 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\nlet _permissionPatternsPromise: Promise<Record<string, unknown> | undefined> | undefined;\nfunction loadPermissionPatterns(): Promise<Record<string, unknown> | undefined> {\n if (!_permissionPatternsPromise) {\n _permissionPatternsPromise = import('@mastra/core/auth/ee')\n .then(m => m.PERMISSION_PATTERNS as Record<string, unknown>)\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 _permissionPatternsPromise;\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 * so we rely on forwarded headers to reconstruct the real public origin.\n *\n * Assumes the server is behind a trusted proxy (or running locally). When\n * exposed directly to untrusted clients, the Host header is attacker-controlled\n * and must be validated upstream.\n *\n * Priority:\n * 1. X-Forwarded-Host (traditional reverse proxy) → always HTTPS. Knative's\n * queue-proxy overwrites X-Forwarded-Proto based on the internal HTTP\n * connection, so X-Forwarded-Proto is ignored here.\n * 2. Host header with X-Forwarded-Proto (AWS ALB, some proxies) → respect proto.\n * 3. Host header alone → use the scheme from request.url (covers both direct\n * HTTP access and proxies that preserve Host but don't set a proto header).\n * 4. No Host header → fall back to request.url.origin (local dev / direct access).\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\n const host = request.headers.get('host');\n if (host) {\n const forwardedProto = request.headers.get('x-forwarded-proto')?.split(',')[0]?.trim();\n const proto = forwardedProto || new URL(request.url).protocol.replace(':', '');\n return `${proto}://${host}`;\n }\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 * Helper to get FGA provider from Mastra server config.\n */\nfunction getFGAProvider(mastra: any): IFGAProvider<EEUser> | undefined {\n const serverConfig = mastra.getServer?.();\n return serverConfig?.fga as IFGAProvider<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' && typeof (auth as any)[method] === 'function';\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 const fga = getFGAProvider(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, fga, apiPrefix: routePrefix });\n\n // If capabilities came back without a user, the session may have expired.\n // Attempt a transparent refresh (same logic as coreAuthMiddleware) and retry.\n if (!('user' in capabilities) && supportsSessionRefresh(auth)) {\n try {\n const sessionId = await auth.getSessionIdFromRequest(request);\n if (sessionId) {\n const refreshedSession = await auth.refreshSession(sessionId);\n if (refreshedSession) {\n const sessionHeaders = await auth.getSessionHeaders(refreshedSession);\n const cookieValue = extractCookieFromHeaders(sessionHeaders);\n if (cookieValue) {\n // Rebuild capabilities with the refreshed cookie\n const refreshedRequest = new Request(request.url, {\n method: request.method,\n headers: new Headers(request.headers),\n });\n refreshedRequest.headers.set('Cookie', cookieValue);\n const refreshedCapabilities = await buildCapabilities(auth, refreshedRequest, {\n rbac,\n apiPrefix: routePrefix,\n });\n\n // Attach refresh headers so the adapter can set the new cookie\n if ('user' in refreshedCapabilities) {\n (refreshedCapabilities as any).__refreshHeaders = sessionHeaders;\n }\n return refreshedCapabilities;\n }\n }\n }\n } catch {\n // Refresh failed — return original unauthenticated capabilities\n }\n }\n\n return capabilities;\n } catch (error) {\n return handleError(error, 'Error getting auth capabilities');\n }\n },\n});\n\n/**\n * Extract a full cookie string from session headers (e.g. Set-Cookie → Cookie).\n */\nfunction extractCookieFromHeaders(headers: Record<string, string>): string | null {\n const setCookie = headers['Set-Cookie'] || headers['set-cookie'];\n if (!setCookie) return null;\n // Set-Cookie value is \"name=value; Path=/; ...\" — extract \"name=value\"\n const match = setCookie.match(/^([^;]+)/);\n return match ? (match[1] ?? null) : null;\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/refresh\n// ============================================================================\n\nexport const POST_REFRESH_ROUTE = createPublicRoute({\n method: 'POST',\n path: '/auth/refresh',\n responseType: 'datastream-response',\n responseSchema: refreshResponseSchema,\n summary: 'Refresh session',\n description: 'Refreshes the current session, extending its expiry. Sets a new session cookie on success.',\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 (\n !auth ||\n !implementsInterface<ISessionProvider>(auth, 'refreshSession') ||\n !implementsInterface<ISessionProvider>(auth, 'getSessionIdFromRequest')\n ) {\n throw new HTTPException(404, { message: 'Session refresh not configured' });\n }\n\n // Get session ID from request\n const sessionId = auth.getSessionIdFromRequest(request);\n if (!sessionId) {\n throw new HTTPException(401, { message: 'No session' });\n }\n\n // Refresh the session\n const newSession = await auth.refreshSession(sessionId);\n if (!newSession) {\n throw new HTTPException(401, { message: 'Session expired' });\n }\n\n // Build response with new session headers\n const headers = new Headers({ 'Content-Type': 'application/json' });\n if (implementsInterface<ISessionProvider>(auth, 'getSessionHeaders')) {\n const sessionHeaders = auth.getSessionHeaders(newSession);\n for (const [key, value] of Object.entries(sessionHeaders)) {\n headers.append(key, value);\n }\n }\n\n return new Response(JSON.stringify({ success: true }), {\n status: 200,\n headers,\n });\n } catch (error) {\n if (error instanceof HTTPException) throw error;\n return handleError(error, 'Error refreshing session');\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// GET /auth/roles/:roleId/permissions\n// ============================================================================\n\nconst rolePermissionsPathSchema = z.object({ roleId: z.string() });\nconst rolePermissionsResponseSchema = z.object({ roleId: z.string(), permissions: z.array(z.string()) });\n\nexport const GET_ROLE_PERMISSIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/auth/roles/:roleId/permissions',\n requiresAuth: true,\n responseType: 'json',\n pathParamSchema: rolePermissionsPathSchema,\n responseSchema: rolePermissionsResponseSchema,\n summary: 'Get permissions for a role',\n description:\n 'Returns the resolved permissions for a specific role. Only accessible by admin users. Used by the \"View as role\" feature.',\n tags: ['Auth'],\n handler: async ctx => {\n try {\n const { mastra, requestContext, roleId } = ctx as any;\n\n // Check that the caller is an admin\n const callerPermissions: string[] = requestContext?.get(MASTRA_USER_PERMISSIONS_KEY) ?? [];\n const isAdmin = callerPermissions.some((p: string) => p === '*' || p === '*:*');\n if (!isAdmin) {\n throw new HTTPException(403, { message: 'Admin access required' });\n }\n\n const rbac = getRBACProvider(mastra);\n if (!rbac?.getPermissionsForRole) {\n throw new HTTPException(404, { message: 'RBAC provider does not support role permission resolution' });\n }\n\n const permissions = await rbac.getPermissionsForRole(roleId);\n return { roleId, permissions };\n } catch (error) {\n if (error instanceof HTTPException) throw error;\n return handleError(error, 'Error getting role permissions');\n }\n },\n});\n\n// ============================================================================\n// GET /auth/permission-patterns\n// ============================================================================\n\nexport const GET_PERMISSION_PATTERNS_ROUTE = createRoute({\n method: 'GET',\n path: '/auth/permission-patterns',\n requiresAuth: true,\n responseType: 'json',\n responseSchema: permissionPatternsResponseSchema,\n summary: 'List valid permission patterns',\n description:\n 'Returns the authoritative list of valid permission-pattern strings. Used by Studio to validate the route→permission literals it ships and to gate the sidebar.',\n tags: ['Auth'],\n handler: async () => {\n const patterns = await loadPermissionPatterns();\n return { patterns: Object.keys(patterns ?? {}) };\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_REFRESH_ROUTE,\n POST_CREDENTIALS_SIGN_IN_ROUTE,\n POST_CREDENTIALS_SIGN_UP_ROUTE,\n GET_ROLE_PERMISSIONS_ROUTE,\n GET_PERMISSION_PATTERNS_ROUTE,\n] as const;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/server/auth/defaults.ts","../src/server/auth/path-pattern.ts","../src/server/auth/helpers.ts"],"names":["MASTRA_USER_KEY","MASTRA_AUTH_TOKEN_KEY","MASTRA_RESOURCE_ID_KEY","MASTRA_USER_PERMISSIONS_KEY","MASTRA_USER_ROLES_KEY"],"mappings":"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","file":"chunk-LBVQK4LO.cjs","sourcesContent":["import type { MastraAuthConfig } from '@mastra/core/server';\n\n// Default configuration that can be extended by clients\nexport const defaultAuthConfig: MastraAuthConfig = {\n protected: ['/api/*'],\n public: ['/api', '/api/auth/*'],\n // Simple rule system\n rules: [\n // Admin users can do anything\n {\n condition: user => {\n if (typeof user === 'object' && user !== null) {\n if ('isAdmin' in user) {\n return !!user.isAdmin;\n }\n\n if ('role' in user) {\n return user.role === 'admin';\n }\n }\n return false;\n },\n allow: true,\n },\n ],\n};\n","/**\n * Path pattern matching utility\n * Inlined from regexparam v3.0.0 (MIT License)\n * https://github.com/lukeed/regexparam\n *\n * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nexport interface ParsedPattern {\n keys: string[] | false;\n pattern: RegExp;\n}\n\n/**\n * Parse a route pattern into a RegExp\n * Supports:\n * - Named parameters: /users/:id\n * - Optional parameters: /users/:id?\n * - Wildcards: /files/*\n * - Mixed patterns: /api/:version/users/:id\n */\nexport function parse(input: string | RegExp, loose?: boolean): ParsedPattern {\n if (input instanceof RegExp) return { keys: false, pattern: input };\n\n let c: string;\n let o: number;\n let tmp: string | undefined;\n let ext: number;\n const keys: string[] = [];\n let pattern = '';\n const arr = input.split('/');\n\n arr[0] || arr.shift();\n\n while ((tmp = arr.shift())) {\n c = tmp[0]!;\n if (c === '*') {\n keys.push(c);\n pattern += tmp[1] === '?' ? '(?:/(.*))?' : '/(.*)';\n } else if (c === ':') {\n o = tmp.indexOf('?', 1);\n ext = tmp.indexOf('.', 1);\n keys.push(tmp.substring(1, !!~o ? o : !!~ext ? ext : tmp.length));\n pattern += !!~o && !~ext ? '(?:/([^/]+?))?' : '/([^/]+?)';\n if (!!~ext) pattern += (!!~o ? '?' : '') + '\\\\' + tmp.substring(ext);\n } else {\n pattern += '/' + tmp;\n }\n }\n\n return {\n keys: keys,\n pattern: new RegExp('^' + pattern + (loose ? '(?=$|/)' : '/?$'), 'i'),\n };\n}\n\n/**\n * Test if a path matches a pattern\n */\nexport function matchPath(path: string, pattern: string | RegExp): boolean {\n const { pattern: regex } = parse(pattern);\n return regex.test(path);\n}\n","import type { ISessionProvider } from '@mastra/core/auth';\nimport type { IRBACProvider, EEUser } from '@mastra/core/auth/ee';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { ApiRoute, MastraAuthConfig, MastraAuthProvider, MastraAuthRequest } from '@mastra/core/server';\n\nimport {\n MASTRA_RESOURCE_ID_KEY,\n MASTRA_USER_KEY,\n MASTRA_USER_PERMISSIONS_KEY,\n MASTRA_USER_ROLES_KEY,\n MASTRA_AUTH_TOKEN_KEY,\n} from '../constants';\nimport { defaultAuthConfig } from './defaults';\nimport { parse } from './path-pattern';\n\n// Re-export request-context key constants so custom middleware can read namespaced\n// auth state without importing internal paths.\nexport { MASTRA_USER_KEY, MASTRA_USER_PERMISSIONS_KEY, MASTRA_USER_ROLES_KEY } from '../constants';\n\n/**\n * Check if a route is a registered custom route that requires authentication.\n * Returns true only if the route is explicitly registered with requiresAuth: true.\n * Returns false if the route is not in the config or has requiresAuth: false.\n */\nexport const isProtectedCustomRoute = (\n path: string,\n method: string,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n if (!customRouteAuthConfig) {\n return false;\n }\n\n // Check exact match first (fast path for static routes)\n const exactRouteKey = `${method}:${path}`;\n if (customRouteAuthConfig.has(exactRouteKey)) {\n return customRouteAuthConfig.get(exactRouteKey) === true;\n }\n\n // Check exact match for ALL method\n const allRouteKey = `ALL:${path}`;\n if (customRouteAuthConfig.has(allRouteKey)) {\n return customRouteAuthConfig.get(allRouteKey) === true;\n }\n\n // Check pattern matches for dynamic routes (e.g., '/users/:id')\n for (const [routeKey, requiresAuth] of customRouteAuthConfig.entries()) {\n const colonIndex = routeKey.indexOf(':');\n if (colonIndex === -1) {\n continue; // Skip malformed keys\n }\n\n const routeMethod = routeKey.substring(0, colonIndex);\n const routePattern = routeKey.substring(colonIndex + 1);\n\n // Check if method matches (exact match or ALL)\n if (routeMethod !== method && routeMethod !== 'ALL') {\n continue;\n }\n\n // Check if path matches the pattern\n if (pathMatchesPattern(path, routePattern)) {\n return requiresAuth === true;\n }\n }\n\n return false; // Not in config = not a protected custom route\n};\n\n/**\n * Find a matching custom API route for the given path and method.\n * Returns the matched route and any extracted path parameters.\n */\nexport const findMatchingCustomRoute = (\n path: string,\n method: string,\n apiRoutes?: ApiRoute[],\n): { route: ApiRoute; params: Record<string, string> } | undefined => {\n if (!apiRoutes) return undefined;\n\n for (const route of apiRoutes) {\n if (route.method !== method && route.method !== 'ALL') continue;\n\n const { keys, pattern: regex } = parse(route.path);\n const match = regex.exec(path);\n if (!match) continue;\n\n const params: Record<string, string> = {};\n if (keys && keys.length > 0) {\n for (let i = 0; i < keys.length; i++) {\n if (match[i + 1] !== undefined) {\n params[keys[i]!] = match[i + 1]!;\n }\n }\n }\n\n return { route, params };\n }\n\n return undefined;\n};\n\n/**\n * Check if request is from dev playground\n * @param getHeader - Function to get header value from request\n * @param customRouteAuthConfig - Map of custom route auth configurations\n */\nexport const isDevPlaygroundRequest = (\n path: string,\n method: string,\n getHeader: (name: string) => string | undefined,\n authConfig: MastraAuthConfig,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n const protectedAccess = [...(defaultAuthConfig.protected || []), ...(authConfig.protected || [])];\n return (\n process.env.MASTRA_DEV === 'true' &&\n // Allow if path doesn't match protected patterns AND is not a protected custom route\n ((!isAnyMatch(path, method, protectedAccess) && !isProtectedCustomRoute(path, method, customRouteAuthConfig)) ||\n // Or if has playground header\n getHeader('x-mastra-dev-playground') === 'true')\n );\n};\n\nexport const isCustomRoutePublic = (\n path: string,\n method: string,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n if (!customRouteAuthConfig) {\n return false;\n }\n\n // Check exact match first (fast path for static routes)\n const exactRouteKey = `${method}:${path}`;\n if (customRouteAuthConfig.has(exactRouteKey)) {\n return !customRouteAuthConfig.get(exactRouteKey); // True when route opts out of auth\n }\n\n // Check exact match for ALL method\n const allRouteKey = `ALL:${path}`;\n if (customRouteAuthConfig.has(allRouteKey)) {\n return !customRouteAuthConfig.get(allRouteKey);\n }\n\n // Check pattern matches for dynamic routes (e.g., '/users/:id')\n for (const [routeKey, requiresAuth] of customRouteAuthConfig.entries()) {\n const colonIndex = routeKey.indexOf(':');\n if (colonIndex === -1) {\n continue; // Skip malformed keys\n }\n\n const routeMethod = routeKey.substring(0, colonIndex);\n const routePattern = routeKey.substring(colonIndex + 1);\n\n // Check if method matches (exact match or ALL)\n if (routeMethod !== method && routeMethod !== 'ALL') {\n continue;\n }\n\n // Check if path matches the pattern\n if (pathMatchesPattern(path, routePattern)) {\n return !requiresAuth; // True when route opts out of auth\n }\n }\n\n return false;\n};\n\n// NOTE: This uses isProtectedCustomRoute (default-allow for unknown paths) rather than\n// !isCustomRoutePublic (default-deny). This is intentional — all registered server and\n// custom routes are auth-checked via registerRoute/checkRouteAuth regardless of this\n// function. The '/api/*' protected pattern exists as a user-facing override mechanism.\n// The old default-deny logic incorrectly blocked non-API paths (e.g. '/', '/agents')\n// which prevented the studio login page from loading in production.\nexport const isProtectedPath = (\n path: string,\n method: string,\n authConfig: MastraAuthConfig,\n customRouteAuthConfig?: Map<string, boolean>,\n): boolean => {\n const protectedAccess = [...(defaultAuthConfig.protected || []), ...(authConfig.protected || [])];\n return isAnyMatch(path, method, protectedAccess) || isProtectedCustomRoute(path, method, customRouteAuthConfig);\n};\n\nexport const canAccessPublicly = (path: string, method: string, authConfig: MastraAuthConfig): boolean => {\n // Check if this path+method combination is publicly accessible\n const publicAccess = [...(defaultAuthConfig.public || []), ...(authConfig.public || [])];\n\n return isAnyMatch(path, method, publicAccess);\n};\n\nconst isAnyMatch = (\n path: string,\n method: string,\n patterns: MastraAuthConfig['protected'] | MastraAuthConfig['public'],\n): boolean => {\n if (!patterns) {\n return false;\n }\n\n for (const patternPathOrMethod of patterns) {\n if (patternPathOrMethod instanceof RegExp) {\n if (patternPathOrMethod.test(path)) {\n return true;\n }\n }\n\n if (typeof patternPathOrMethod === 'string' && pathMatchesPattern(path, patternPathOrMethod)) {\n return true;\n }\n\n if (Array.isArray(patternPathOrMethod) && patternPathOrMethod.length === 2) {\n const [pattern, methodOrMethods] = patternPathOrMethod;\n if (pathMatchesPattern(path, pattern) && matchesOrIncludes(methodOrMethods, method)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nexport const pathMatchesPattern = (path: string, pattern: string): boolean => {\n // Use regexparam for battle-tested path matching\n // Supports:\n // - Exact paths: '/api/users'\n // - Wildcards: '/api/agents/*' matches '/api/agents/123'\n // - Path parameters: '/users/:id' matches '/users/123'\n // - Optional parameters: '/users/:id?' matches '/users' and '/users/123'\n // - Mixed patterns: '/api/:version/users/:id/profile'\n const { pattern: regex } = parse(pattern);\n return regex.test(path);\n};\n\nexport const pathMatchesRule = (path: string, rulePath: string | RegExp | string[] | undefined): boolean => {\n if (!rulePath) return true; // No path specified means all paths\n\n if (typeof rulePath === 'string') {\n return pathMatchesPattern(path, rulePath);\n }\n\n if (rulePath instanceof RegExp) {\n return rulePath.test(path);\n }\n\n if (Array.isArray(rulePath)) {\n return rulePath.some(p => pathMatchesPattern(path, p));\n }\n\n return false;\n};\n\nexport const matchesOrIncludes = (values: string | string[], value: string): boolean => {\n if (typeof values === 'string') {\n return values === value;\n }\n\n if (Array.isArray(values)) {\n return values.includes(value);\n }\n\n return false;\n};\n\n// ── Core auth middleware ──\n// Framework-agnostic auth logic extracted from adapter middlewares.\n// Each adapter builds an AuthMiddlewareContext and delegates to coreAuthMiddleware.\n\nexport interface AuthMiddlewareContext {\n path: string;\n method: string;\n getHeader: (name: string) => string | undefined;\n mastra: Mastra;\n authConfig: MastraAuthConfig;\n customRouteAuthConfig?: Map<string, boolean>;\n requestContext: { get: (key: string) => unknown; set: (key: string, value: unknown) => void };\n rawRequest: MastraAuthRequest;\n token: string | null;\n buildAuthorizeContext: () => unknown;\n /** When true, force authentication even if the path matches a public pattern. */\n requiresAuth?: boolean;\n}\n\nexport type AuthResult =\n | { action: 'next'; headers?: Record<string, string> }\n | { action: 'error'; status: number; body: Record<string, unknown>; headers?: Record<string, string> };\n\nconst pass: AuthResult = { action: 'next' };\n\nconst adaptToMastraAuthRequest = (request: MastraAuthRequest): MastraAuthRequest => {\n if (!(request instanceof Request)) {\n return request;\n }\n\n return {\n raw: request,\n headers: request.headers,\n header: name => request.headers.get(name) ?? undefined,\n };\n};\n\nexport interface GetAuthenticatedUserOptions {\n mastra: Mastra;\n token: string;\n request: MastraAuthRequest;\n}\n\nexport const getAuthenticatedUser = async <TUser = unknown>({\n mastra,\n token,\n request,\n}: GetAuthenticatedUserOptions): Promise<TUser | null> => {\n const normalizedToken = token.replace(/^Bearer\\s+/i, '').trim();\n if (!normalizedToken) {\n return null;\n }\n\n const authConfig = mastra.getServer()?.auth;\n if (!authConfig || typeof authConfig.authenticateToken !== 'function') {\n return null;\n }\n\n return (await authConfig.authenticateToken(normalizedToken, request)) as TUser | null;\n};\n\n/**\n * Check if an auth config object supports transparent session refresh.\n * Returns true if the auth provider implements the necessary ISessionProvider methods.\n */\nexport function supportsSessionRefresh(\n authConfig: MastraAuthConfig | MastraAuthProvider,\n): authConfig is (MastraAuthConfig | MastraAuthProvider) &\n Pick<ISessionProvider, 'refreshSession' | 'getSessionIdFromRequest' | 'getSessionHeaders'> {\n return (\n typeof (authConfig as any).getSessionIdFromRequest === 'function' &&\n typeof (authConfig as any).refreshSession === 'function' &&\n typeof (authConfig as any).getSessionHeaders === 'function'\n );\n}\n\n/**\n * Single auth middleware: authenticate → authorize.\n * Skip checks (dev playground, unprotected path, public path) are evaluated once.\n */\nexport const coreAuthMiddleware = async (ctx: AuthMiddlewareContext): Promise<AuthResult> => {\n const {\n path,\n method,\n getHeader,\n mastra,\n authConfig,\n customRouteAuthConfig,\n requestContext,\n rawRequest,\n token,\n requiresAuth,\n } = ctx;\n\n // ── Skip checks (evaluated once) ──\n\n // Only bypass auth for dev playground when no real auth provider is configured.\n // When auth IS configured (has authenticateToken), we need the full auth flow\n // so user/roles/permissions are set in requestContext.\n const hasAuthProvider = typeof authConfig.authenticateToken === 'function';\n if (!hasAuthProvider && isDevPlaygroundRequest(path, method, getHeader, authConfig, customRouteAuthConfig)) {\n return pass;\n }\n\n if (!isProtectedPath(path, method, authConfig, customRouteAuthConfig)) {\n return pass;\n }\n\n // When a route explicitly requires auth (requiresAuth: true), skip the\n // public-path bypass so the user is still authenticated and permissions\n // are injected into the request context.\n if (!requiresAuth && canAccessPublicly(path, method, authConfig)) {\n return pass;\n }\n\n // ── Authentication ──\n\n let user: unknown;\n let refreshHeaders: Record<string, string> | undefined;\n const authRequest = adaptToMastraAuthRequest(rawRequest);\n\n try {\n if (typeof authConfig.authenticateToken === 'function') {\n user = await authConfig.authenticateToken(token ?? '', authRequest);\n } else {\n throw new Error('No token verification method configured');\n }\n\n // If authentication failed, attempt transparent session refresh before returning 401.\n // This handles expired access tokens without requiring client-side refresh logic.\n if (!user && supportsSessionRefresh(authConfig) && rawRequest instanceof Request) {\n try {\n const sessionId = authConfig.getSessionIdFromRequest(rawRequest);\n if (sessionId) {\n const newSession = await authConfig.refreshSession(sessionId);\n if (newSession) {\n // Refresh succeeded — build updated session headers and re-authenticate.\n // We create a synthetic request with the new session cookie so\n // authenticateToken (which reads cookies from the request) picks up\n // the refreshed session instead of the expired one.\n refreshHeaders = authConfig.getSessionHeaders(newSession);\n const refreshedCookie = Object.entries(refreshHeaders)\n .filter(([k]) => k.toLowerCase() === 'set-cookie')\n .map(([, v]) => v.split(';')[0]) // Extract name=value before attributes\n .join('; ');\n if (refreshedCookie) {\n const refreshedRequest = new Request(rawRequest.url, {\n method: rawRequest.method,\n headers: new Headers(rawRequest.headers),\n });\n refreshedRequest.headers.set('Cookie', refreshedCookie);\n // Pass the refreshed cookie value as the token so authenticateToken\n // picks up the new session instead of the stale original.\n // Auth providers typically read cookies from the request object, but\n // some may also inspect the token parameter directly.\n const cookieValue = refreshedCookie.includes('=')\n ? refreshedCookie.split('=').slice(1).join('=')\n : refreshedCookie;\n user = await authConfig.authenticateToken(cookieValue, adaptToMastraAuthRequest(refreshedRequest));\n }\n if (!user) {\n refreshHeaders = undefined;\n }\n }\n }\n } catch (refreshErr) {\n refreshHeaders = undefined;\n mastra.getLogger()?.debug('Session refresh failed, falling back to 401', {\n error: refreshErr instanceof Error ? { message: refreshErr.message } : refreshErr,\n });\n }\n }\n\n if (!user) {\n return { action: 'error', status: 401, body: { error: 'Invalid or expired token' }, headers: refreshHeaders };\n }\n\n requestContext.set(MASTRA_USER_KEY, user);\n // Backward-compat: also write the legacy `'user'` key so existing\n // middleware and integrations that read `requestContext.get('user')`\n // (including built-in FGA route enforcement, memory handlers, and the\n // documented public surface) keep working. New code should prefer\n // `MASTRA_USER_KEY` to avoid collisions with caller-supplied keys.\n requestContext.set('user', user);\n\n // Store the raw auth token so downstream code (e.g., editor MCP client\n // resolution) can forward it when connecting to auth-protected MCP servers.\n // The token may arrive via Authorization header, apiKey query param, or\n // cookie (SimpleAuth sets `mastra-token`). Check all sources so the\n // forwarded value is available regardless of how the user authenticated.\n let effectiveToken = token;\n if (!effectiveToken && rawRequest instanceof Request) {\n const cookieHeader = rawRequest.headers.get('cookie');\n if (cookieHeader) {\n const match = cookieHeader.match(/mastra-token=([^;]+)/);\n if (match?.[1]) effectiveToken = match[1];\n }\n }\n if (effectiveToken) {\n requestContext.set(MASTRA_AUTH_TOKEN_KEY, effectiveToken);\n }\n\n if (typeof authConfig.mapUserToResourceId === 'function') {\n try {\n const resourceId = authConfig.mapUserToResourceId(user);\n if (resourceId) {\n requestContext.set(MASTRA_RESOURCE_ID_KEY, resourceId);\n }\n } catch (mapError) {\n mastra.getLogger()?.error('mapUserToResourceId failed', {\n error: mapError instanceof Error ? { message: mapError.message, stack: mapError.stack } : mapError,\n });\n return {\n action: 'error',\n status: 500,\n body: { error: 'Failed to map authenticated user to a resource ID' },\n headers: refreshHeaders,\n };\n }\n }\n\n try {\n const serverConfig = mastra.getServer();\n const rbacProvider = serverConfig?.rbac as IRBACProvider<EEUser> | undefined;\n\n if (rbacProvider) {\n if (!user || typeof user !== 'object' || !('id' in user)) {\n mastra.getLogger()?.warn('RBAC: authenticated user missing required \"id\" field, skipping permission loading');\n } else {\n const permissions = await rbacProvider.getPermissions(user as EEUser);\n requestContext.set(MASTRA_USER_PERMISSIONS_KEY, permissions);\n // Backward-compat alias for callers reading the legacy key.\n requestContext.set('userPermissions', permissions);\n\n const roles = await rbacProvider.getRoles(user as EEUser);\n requestContext.set(MASTRA_USER_ROLES_KEY, roles);\n // Backward-compat alias for callers reading the legacy key.\n requestContext.set('userRoles', roles);\n }\n }\n } catch (rbacError) {\n mastra.getLogger()?.error('RBAC: failed to load user permissions/roles', {\n error: rbacError instanceof Error ? { message: rbacError.message, stack: rbacError.stack } : rbacError,\n });\n }\n } catch (err) {\n mastra.getLogger()?.error('Authentication error', {\n error: err instanceof Error ? { message: err.message, stack: err.stack } : err,\n });\n return { action: 'error', status: 401, body: { error: 'Invalid or expired token' }, headers: refreshHeaders };\n }\n\n // ── Authorization ──\n\n if ('authorizeUser' in authConfig && typeof authConfig.authorizeUser === 'function') {\n try {\n const isAuthorized = await authConfig.authorizeUser(user, authRequest);\n\n if (!isAuthorized) {\n return { action: 'error', status: 403, body: { error: 'Access denied' }, headers: refreshHeaders };\n }\n } catch (err) {\n mastra.getLogger()?.error('Authorization error in authorizeUser', {\n error: err instanceof Error ? { message: err.message, stack: err.stack } : err,\n });\n return { action: 'error', status: 500, body: { error: 'Authorization error' }, headers: refreshHeaders };\n }\n } else if ('authorize' in authConfig && typeof authConfig.authorize === 'function') {\n try {\n const authorizeCtx = ctx.buildAuthorizeContext();\n const isAuthorized = await authConfig.authorize(path, method, user, authorizeCtx as any);\n\n if (!isAuthorized) {\n return { action: 'error', status: 403, body: { error: 'Access denied' }, headers: refreshHeaders };\n }\n } catch (err) {\n mastra.getLogger()?.error('Authorization error in authorize', {\n error: err instanceof Error ? { message: err.message, stack: err.stack } : err,\n path,\n method,\n });\n return { action: 'error', status: 500, body: { error: 'Authorization error' }, headers: refreshHeaders };\n }\n } else if ('rules' in authConfig && authConfig.rules && authConfig.rules.length > 0) {\n const isAuthorized = await checkRules(authConfig.rules, path, method, user);\n\n if (!isAuthorized) {\n return { action: 'error', status: 403, body: { error: 'Access denied' }, headers: refreshHeaders };\n }\n } else {\n // No explicit authorization configured (authorizeUser, authorize, or rules)\n // Check if RBAC is configured - if not, allow authenticated users through\n // (auth-only mode = authenticated users get full access)\n const rbacProvider = mastra.getServer()?.rbac;\n if (rbacProvider) {\n if (defaultAuthConfig.rules && defaultAuthConfig.rules.length > 0) {\n const isAuthorized = await checkRules(defaultAuthConfig.rules, path, method, user);\n\n if (!isAuthorized) {\n return { action: 'error', status: 403, body: { error: 'Access denied' }, headers: refreshHeaders };\n }\n } else {\n return { action: 'error', status: 403, body: { error: 'Access denied' }, headers: refreshHeaders };\n }\n }\n }\n\n return refreshHeaders ? { action: 'next', headers: refreshHeaders } : pass;\n};\n\n// Check authorization rules\nexport const checkRules = async (\n rules: MastraAuthConfig['rules'],\n path: string,\n method: string,\n user: unknown,\n): Promise<boolean> => {\n // Go through rules in order (first match wins)\n for (const i in rules || []) {\n const rule = rules?.[i]!;\n // Check if rule applies to this path\n if (!pathMatchesRule(path, rule.path)) {\n continue;\n }\n\n // Check if rule applies to this method\n if (rule.methods && !matchesOrIncludes(rule.methods, method)) {\n continue;\n }\n\n // Rule matches, check conditions\n const condition = rule.condition;\n if (typeof condition === 'function') {\n const allowed = await Promise.resolve()\n .then(() => condition(user))\n .catch(() => false);\n\n if (allowed) {\n return true;\n }\n } else if (rule.allow) {\n return true;\n }\n }\n\n // No matching rules, deny by default\n return false;\n};\n"]}