@mastra/server 0.0.0-sidebar-window-undefined-fix-20251029233656 → 0.0.0-standard-schema-20260123120255

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 (461) hide show
  1. package/CHANGELOG.md +2492 -3
  2. package/README.md +2 -2
  3. package/a2a/store.d.ts +1 -0
  4. package/auth.d.ts +1 -0
  5. package/dist/{chunk-SHWNNZBL.js → chunk-24SISJRB.js} +13 -17
  6. package/dist/chunk-24SISJRB.js.map +1 -0
  7. package/dist/chunk-2JNW2CLE.js +180 -0
  8. package/dist/chunk-2JNW2CLE.js.map +1 -0
  9. package/dist/chunk-2UHOWYFV.js +184 -0
  10. package/dist/chunk-2UHOWYFV.js.map +1 -0
  11. package/dist/chunk-3W67K7YE.js +13 -0
  12. package/dist/chunk-3W67K7YE.js.map +1 -0
  13. package/dist/chunk-4HFYR562.cjs +82 -0
  14. package/dist/chunk-4HFYR562.cjs.map +1 -0
  15. package/dist/chunk-55TH4ME5.js +170 -0
  16. package/dist/chunk-55TH4ME5.js.map +1 -0
  17. package/dist/chunk-55XIQCGI.cjs +1128 -0
  18. package/dist/chunk-55XIQCGI.cjs.map +1 -0
  19. package/dist/chunk-5NQ3GWUJ.cjs +1118 -0
  20. package/dist/chunk-5NQ3GWUJ.cjs.map +1 -0
  21. package/dist/chunk-5W4RPVTK.cjs +49 -0
  22. package/dist/chunk-5W4RPVTK.cjs.map +1 -0
  23. package/dist/{chunk-7NADHFD2.cjs → chunk-64ITUOXI.cjs} +2 -2
  24. package/dist/chunk-64ITUOXI.cjs.map +1 -0
  25. package/dist/{chunk-QU6N55W6.cjs → chunk-6G2RQWKA.cjs} +17 -21
  26. package/dist/chunk-6G2RQWKA.cjs.map +1 -0
  27. package/dist/chunk-6NLJ5YC3.cjs +216 -0
  28. package/dist/chunk-6NLJ5YC3.cjs.map +1 -0
  29. package/dist/chunk-6OFKRQQL.js +45 -0
  30. package/dist/chunk-6OFKRQQL.js.map +1 -0
  31. package/dist/{chunk-MMROOK5J.js → chunk-6QWQZI4Q.js} +2 -2
  32. package/dist/{chunk-7NADHFD2.cjs.map → chunk-6QWQZI4Q.js.map} +1 -1
  33. package/dist/chunk-7AINN3FK.js +26 -0
  34. package/dist/chunk-7AINN3FK.js.map +1 -0
  35. package/dist/chunk-7D3UAMQM.cjs +82 -0
  36. package/dist/chunk-7D3UAMQM.cjs.map +1 -0
  37. package/dist/chunk-7ERB6H6K.js +334 -0
  38. package/dist/chunk-7ERB6H6K.js.map +1 -0
  39. package/dist/chunk-AEMLCRS5.cjs +1140 -0
  40. package/dist/chunk-AEMLCRS5.cjs.map +1 -0
  41. package/dist/chunk-BLCHLNBT.js +442 -0
  42. package/dist/chunk-BLCHLNBT.js.map +1 -0
  43. package/dist/chunk-BSOLG32W.js +1089 -0
  44. package/dist/chunk-BSOLG32W.js.map +1 -0
  45. package/dist/chunk-CQUWREB2.js +332 -0
  46. package/dist/chunk-CQUWREB2.js.map +1 -0
  47. package/dist/chunk-CRCXQW5R.cjs +47 -0
  48. package/dist/chunk-CRCXQW5R.cjs.map +1 -0
  49. package/dist/{chunk-MN2TZQ7I.js → chunk-CT7S7VRG.js} +232 -38
  50. package/dist/chunk-CT7S7VRG.js.map +1 -0
  51. package/dist/chunk-D23WBCJ6.js +227 -0
  52. package/dist/chunk-D23WBCJ6.js.map +1 -0
  53. package/dist/chunk-DOU5IGJB.js +242 -0
  54. package/dist/chunk-DOU5IGJB.js.map +1 -0
  55. package/dist/chunk-DUTGH2DM.js +31748 -0
  56. package/dist/chunk-DUTGH2DM.js.map +1 -0
  57. package/dist/chunk-E2SZSFGZ.cjs +128 -0
  58. package/dist/chunk-E2SZSFGZ.cjs.map +1 -0
  59. package/dist/chunk-EH45MGLR.cjs +322 -0
  60. package/dist/chunk-EH45MGLR.cjs.map +1 -0
  61. package/dist/chunk-FRRHYZR6.cjs +88 -0
  62. package/dist/chunk-FRRHYZR6.cjs.map +1 -0
  63. package/dist/{chunk-ZULZ2752.js → chunk-FXW7MD4U.js} +3 -3
  64. package/dist/chunk-FXW7MD4U.js.map +1 -0
  65. package/dist/chunk-GGAV65A7.cjs +352 -0
  66. package/dist/chunk-GGAV65A7.cjs.map +1 -0
  67. package/dist/chunk-HT4LP3BO.js +75 -0
  68. package/dist/chunk-HT4LP3BO.js.map +1 -0
  69. package/dist/chunk-HZINLMHL.cjs +252 -0
  70. package/dist/chunk-HZINLMHL.cjs.map +1 -0
  71. package/dist/{chunk-RQK4FQUD.js → chunk-IGXRQWNN.js} +6 -48
  72. package/dist/chunk-IGXRQWNN.js.map +1 -0
  73. package/dist/chunk-IROUDQSO.js +246 -0
  74. package/dist/chunk-IROUDQSO.js.map +1 -0
  75. package/dist/chunk-IS3HHGL4.js +250 -0
  76. package/dist/chunk-IS3HHGL4.js.map +1 -0
  77. package/dist/chunk-JJLEVKG7.js +576 -0
  78. package/dist/chunk-JJLEVKG7.js.map +1 -0
  79. package/dist/chunk-K34R4R2T.cjs +233 -0
  80. package/dist/chunk-K34R4R2T.cjs.map +1 -0
  81. package/dist/chunk-K4HSW5ZF.js +77 -0
  82. package/dist/chunk-K4HSW5ZF.js.map +1 -0
  83. package/dist/chunk-L2U75ERO.cjs +344 -0
  84. package/dist/chunk-L2U75ERO.cjs.map +1 -0
  85. package/dist/chunk-L2VZFGWH.cjs +31787 -0
  86. package/dist/chunk-L2VZFGWH.cjs.map +1 -0
  87. package/dist/chunk-L7LB66KK.cjs +450 -0
  88. package/dist/chunk-L7LB66KK.cjs.map +1 -0
  89. package/dist/chunk-LJ6YRVDI.cjs +15 -0
  90. package/dist/chunk-LJ6YRVDI.cjs.map +1 -0
  91. package/dist/chunk-MCYD5LW7.cjs +90 -0
  92. package/dist/chunk-MCYD5LW7.cjs.map +1 -0
  93. package/dist/chunk-MF4PZE2D.js +119 -0
  94. package/dist/chunk-MF4PZE2D.js.map +1 -0
  95. package/dist/chunk-MP6TNZXA.cjs +212 -0
  96. package/dist/chunk-MP6TNZXA.cjs.map +1 -0
  97. package/dist/chunk-MPM2W4IS.js +312 -0
  98. package/dist/chunk-MPM2W4IS.js.map +1 -0
  99. package/dist/chunk-NE4CLM6P.cjs +190 -0
  100. package/dist/chunk-NE4CLM6P.cjs.map +1 -0
  101. package/dist/chunk-NL6ELCFS.cjs +603 -0
  102. package/dist/chunk-NL6ELCFS.cjs.map +1 -0
  103. package/dist/chunk-OD6Y7FEM.cjs +280 -0
  104. package/dist/chunk-OD6Y7FEM.cjs.map +1 -0
  105. package/dist/chunk-OS7SAIRA.js +250 -0
  106. package/dist/chunk-OS7SAIRA.js.map +1 -0
  107. package/dist/chunk-PWXUI3OG.cjs +252 -0
  108. package/dist/chunk-PWXUI3OG.cjs.map +1 -0
  109. package/dist/chunk-QAXO2LQT.js +1098 -0
  110. package/dist/chunk-QAXO2LQT.js.map +1 -0
  111. package/dist/chunk-RIX6WEJ2.js +83 -0
  112. package/dist/chunk-RIX6WEJ2.js.map +1 -0
  113. package/dist/chunk-RRVA4RVW.js +203 -0
  114. package/dist/chunk-RRVA4RVW.js.map +1 -0
  115. package/dist/{chunk-LPM6BBAX.cjs → chunk-SLDAFSKJ.cjs} +5 -56
  116. package/dist/chunk-SLDAFSKJ.cjs.map +1 -0
  117. package/dist/{chunk-2PLXW4ZX.cjs → chunk-T6YYVQHJ.cjs} +74 -74
  118. package/dist/chunk-T6YYVQHJ.cjs.map +1 -0
  119. package/dist/chunk-TF4LSD27.cjs +180 -0
  120. package/dist/chunk-TF4LSD27.cjs.map +1 -0
  121. package/dist/chunk-TM6IOINJ.cjs +252 -0
  122. package/dist/chunk-TM6IOINJ.cjs.map +1 -0
  123. package/dist/chunk-UVE6SV6I.js +209 -0
  124. package/dist/chunk-UVE6SV6I.js.map +1 -0
  125. package/dist/chunk-UWYAL2Z3.cjs +29 -0
  126. package/dist/chunk-UWYAL2Z3.cjs.map +1 -0
  127. package/dist/{chunk-CJFKRVED.cjs → chunk-VES6QKOW.cjs} +66 -16
  128. package/dist/chunk-VES6QKOW.cjs.map +1 -0
  129. package/dist/chunk-W7HAZD2A.js +1098 -0
  130. package/dist/chunk-W7HAZD2A.js.map +1 -0
  131. package/dist/{chunk-K5T5A3AL.cjs → chunk-WNQUNLRT.cjs} +238 -38
  132. package/dist/chunk-WNQUNLRT.cjs.map +1 -0
  133. package/dist/chunk-XKLJYRAA.js +77 -0
  134. package/dist/chunk-XKLJYRAA.js.map +1 -0
  135. package/dist/chunk-XWGAT2DA.js +44 -0
  136. package/dist/chunk-XWGAT2DA.js.map +1 -0
  137. package/dist/{dist-G2BYZJOC.cjs → dist-2GQKYJ34.cjs} +28 -28
  138. package/dist/dist-2GQKYJ34.cjs.map +1 -0
  139. package/dist/{dist-X7XR3M3Z.js → dist-C6BUHOEE.js} +3 -3
  140. package/dist/dist-C6BUHOEE.js.map +1 -0
  141. package/dist/dist-DGOEFPQD.cjs +16 -0
  142. package/dist/{dist-P4MXBQ3U.cjs.map → dist-DGOEFPQD.cjs.map} +1 -1
  143. package/dist/dist-FT2OR7OS.js +3 -0
  144. package/dist/{dist-YREX2TJT.js.map → dist-FT2OR7OS.js.map} +1 -1
  145. package/dist/{dist-XVBSOGFK.js → dist-G4CR4WYY.js} +3 -3
  146. package/dist/dist-G4CR4WYY.js.map +1 -0
  147. package/dist/{dist-PQZUVLPC.js → dist-G5QFRYLQ.js} +3 -3
  148. package/dist/dist-G5QFRYLQ.js.map +1 -0
  149. package/dist/{dist-4MVGNSRL.cjs → dist-JPQK5S4K.cjs} +20 -20
  150. package/dist/dist-JPQK5S4K.cjs.map +1 -0
  151. package/dist/{dist-R7WYX6LC.js → dist-MIDN25GT.js} +3 -3
  152. package/dist/dist-MIDN25GT.js.map +1 -0
  153. package/dist/{dist-RFMYFILX.cjs → dist-SNKH6NS2.cjs} +30 -30
  154. package/dist/dist-SNKH6NS2.cjs.map +1 -0
  155. package/dist/{dist-FZYCV3VB.cjs → dist-XBQPKAO4.cjs} +26 -26
  156. package/dist/dist-XBQPKAO4.cjs.map +1 -0
  157. package/dist/docs/README.md +31 -0
  158. package/dist/docs/SKILL.md +32 -0
  159. package/dist/docs/SOURCE_MAP.json +6 -0
  160. package/dist/docs/server/01-custom-adapters.md +380 -0
  161. package/dist/docs/server/02-reference.md +819 -0
  162. package/dist/server/auth/defaults.d.ts +3 -0
  163. package/dist/server/auth/defaults.d.ts.map +1 -0
  164. package/dist/server/auth/helpers.d.ts +14 -0
  165. package/dist/server/auth/helpers.d.ts.map +1 -0
  166. package/dist/server/auth/index.cjs +44 -0
  167. package/dist/server/auth/index.cjs.map +1 -0
  168. package/dist/server/auth/index.d.ts +3 -0
  169. package/dist/server/auth/index.d.ts.map +1 -0
  170. package/dist/server/auth/index.js +3 -0
  171. package/dist/server/auth/index.js.map +1 -0
  172. package/dist/server/auth/path-pattern.d.ts +43 -0
  173. package/dist/server/auth/path-pattern.d.ts.map +1 -0
  174. package/dist/server/handlers/a2a.cjs +15 -7
  175. package/dist/server/handlers/a2a.d.ts +106 -10
  176. package/dist/server/handlers/a2a.d.ts.map +1 -1
  177. package/dist/server/handlers/a2a.js +1 -1
  178. package/dist/server/handlers/agent-builder.cjs +31 -31
  179. package/dist/server/handlers/agent-builder.d.ts +289 -87
  180. package/dist/server/handlers/agent-builder.d.ts.map +1 -1
  181. package/dist/server/handlers/agent-builder.js +1 -1
  182. package/dist/server/handlers/agent-versions.cjs +60 -0
  183. package/dist/server/handlers/agent-versions.cjs.map +1 -0
  184. package/dist/server/handlers/agent-versions.d.ts +425 -0
  185. package/dist/server/handlers/agent-versions.d.ts.map +1 -0
  186. package/dist/server/handlers/agent-versions.js +3 -0
  187. package/dist/server/handlers/agent-versions.js.map +1 -0
  188. package/dist/server/handlers/agents.cjs +71 -39
  189. package/dist/server/handlers/agents.d.ts +730 -151
  190. package/dist/server/handlers/agents.d.ts.map +1 -1
  191. package/dist/server/handlers/agents.js +1 -1
  192. package/dist/server/handlers/error.cjs +6 -2
  193. package/dist/server/handlers/error.d.ts +22 -0
  194. package/dist/server/handlers/error.d.ts.map +1 -1
  195. package/dist/server/handlers/error.js +1 -1
  196. package/dist/server/handlers/logs.cjs +7 -7
  197. package/dist/server/handlers/logs.d.ts +87 -27
  198. package/dist/server/handlers/logs.d.ts.map +1 -1
  199. package/dist/server/handlers/logs.js +1 -1
  200. package/dist/server/handlers/mcp.cjs +40 -0
  201. package/dist/server/handlers/mcp.cjs.map +1 -0
  202. package/dist/server/handlers/mcp.d.ts +92 -0
  203. package/dist/server/handlers/mcp.d.ts.map +1 -0
  204. package/dist/server/handlers/mcp.js +3 -0
  205. package/dist/server/handlers/mcp.js.map +1 -0
  206. package/dist/server/handlers/memory.cjs +67 -31
  207. package/dist/server/handlers/memory.d.ts +424 -105
  208. package/dist/server/handlers/memory.d.ts.map +1 -1
  209. package/dist/server/handlers/memory.js +1 -1
  210. package/dist/server/handlers/observability.cjs +9 -9
  211. package/dist/server/handlers/observability.d.ts +133 -43
  212. package/dist/server/handlers/observability.d.ts.map +1 -1
  213. package/dist/server/handlers/observability.js +1 -1
  214. package/dist/server/handlers/processors.cjs +20 -0
  215. package/dist/server/handlers/processors.cjs.map +1 -0
  216. package/dist/server/handlers/processors.d.ts +90 -0
  217. package/dist/server/handlers/processors.d.ts.map +1 -0
  218. package/dist/server/handlers/processors.js +3 -0
  219. package/dist/server/handlers/processors.js.map +1 -0
  220. package/dist/server/handlers/scores.cjs +13 -13
  221. package/dist/server/handlers/scores.d.ts +78 -145
  222. package/dist/server/handlers/scores.d.ts.map +1 -1
  223. package/dist/server/handlers/scores.js +1 -1
  224. package/dist/server/handlers/stored-agents.cjs +28 -0
  225. package/dist/server/handlers/stored-agents.cjs.map +1 -0
  226. package/dist/server/handlers/stored-agents.d.ts +214 -0
  227. package/dist/server/handlers/stored-agents.d.ts.map +1 -0
  228. package/dist/server/handlers/stored-agents.js +3 -0
  229. package/dist/server/handlers/stored-agents.js.map +1 -0
  230. package/dist/server/handlers/system.cjs +12 -0
  231. package/dist/server/handlers/system.cjs.map +1 -0
  232. package/dist/server/handlers/system.d.ts +7 -0
  233. package/dist/server/handlers/system.d.ts.map +1 -0
  234. package/dist/server/handlers/system.js +3 -0
  235. package/dist/server/handlers/system.js.map +1 -0
  236. package/dist/server/handlers/test-utils.cjs +15 -0
  237. package/dist/server/handlers/test-utils.cjs.map +1 -0
  238. package/dist/server/handlers/test-utils.d.ts +6 -0
  239. package/dist/server/handlers/test-utils.d.ts.map +1 -0
  240. package/dist/server/handlers/test-utils.js +13 -0
  241. package/dist/server/handlers/test-utils.js.map +1 -0
  242. package/dist/server/handlers/tools.cjs +11 -11
  243. package/dist/server/handlers/tools.d.ts +41 -24
  244. package/dist/server/handlers/tools.d.ts.map +1 -1
  245. package/dist/server/handlers/tools.js +1 -1
  246. package/dist/server/handlers/utils.cjs +11 -3
  247. package/dist/server/handlers/utils.d.ts +5 -0
  248. package/dist/server/handlers/utils.d.ts.map +1 -1
  249. package/dist/server/handlers/utils.js +1 -1
  250. package/dist/server/handlers/vector.cjs +31 -7
  251. package/dist/server/handlers/vector.d.ts +52 -9
  252. package/dist/server/handlers/vector.d.ts.map +1 -1
  253. package/dist/server/handlers/vector.js +1 -1
  254. package/dist/server/handlers/voice.cjs +21 -9
  255. package/dist/server/handlers/voice.d.ts +42 -39
  256. package/dist/server/handlers/voice.d.ts.map +1 -1
  257. package/dist/server/handlers/voice.js +1 -1
  258. package/dist/server/handlers/workflows.cjs +53 -41
  259. package/dist/server/handlers/workflows.d.ts +425 -86
  260. package/dist/server/handlers/workflows.d.ts.map +1 -1
  261. package/dist/server/handlers/workflows.js +1 -1
  262. package/dist/server/handlers.cjs +34 -34
  263. package/dist/server/handlers.d.ts +1 -1
  264. package/dist/server/handlers.d.ts.map +1 -1
  265. package/dist/server/handlers.js +12 -12
  266. package/dist/server/http-exception.d.ts +0 -5
  267. package/dist/server/http-exception.d.ts.map +1 -1
  268. package/dist/server/schemas/a2a.d.ts +142 -0
  269. package/dist/server/schemas/a2a.d.ts.map +1 -0
  270. package/dist/server/schemas/agent-builder.d.ts +78 -0
  271. package/dist/server/schemas/agent-builder.d.ts.map +1 -0
  272. package/dist/server/schemas/agent-versions.d.ts +379 -0
  273. package/dist/server/schemas/agent-versions.d.ts.map +1 -0
  274. package/dist/server/schemas/agents.d.ts +496 -0
  275. package/dist/server/schemas/agents.d.ts.map +1 -0
  276. package/dist/server/schemas/common.d.ts +99 -0
  277. package/dist/server/schemas/common.d.ts.map +1 -0
  278. package/dist/server/schemas/logs.d.ts +56 -0
  279. package/dist/server/schemas/logs.d.ts.map +1 -0
  280. package/dist/server/schemas/mcp.d.ts +91 -0
  281. package/dist/server/schemas/mcp.d.ts.map +1 -0
  282. package/dist/server/schemas/memory.d.ts +455 -0
  283. package/dist/server/schemas/memory.d.ts.map +1 -0
  284. package/dist/server/schemas/processors.d.ts +162 -0
  285. package/dist/server/schemas/processors.d.ts.map +1 -0
  286. package/dist/server/schemas/scores.d.ts +77 -0
  287. package/dist/server/schemas/scores.d.ts.map +1 -0
  288. package/dist/server/schemas/stored-agents.d.ts +274 -0
  289. package/dist/server/schemas/stored-agents.d.ts.map +1 -0
  290. package/dist/server/schemas/system.d.ts +14 -0
  291. package/dist/server/schemas/system.d.ts.map +1 -0
  292. package/dist/server/schemas/vectors.d.ts +47 -0
  293. package/dist/server/schemas/vectors.d.ts.map +1 -0
  294. package/dist/server/schemas/workflows.d.ts +371 -0
  295. package/dist/server/schemas/workflows.d.ts.map +1 -0
  296. package/dist/server/server-adapter/index.cjs +627 -0
  297. package/dist/server/server-adapter/index.cjs.map +1 -0
  298. package/dist/server/server-adapter/index.d.ts +130 -0
  299. package/dist/server/server-adapter/index.d.ts.map +1 -0
  300. package/dist/server/server-adapter/index.js +599 -0
  301. package/dist/server/server-adapter/index.js.map +1 -0
  302. package/dist/server/server-adapter/openapi-utils.d.ts +59 -0
  303. package/dist/server/server-adapter/openapi-utils.d.ts.map +1 -0
  304. package/dist/server/server-adapter/redact.d.ts +26 -0
  305. package/dist/server/server-adapter/redact.d.ts.map +1 -0
  306. package/dist/server/server-adapter/routes/a2a.d.ts +3 -0
  307. package/dist/server/server-adapter/routes/a2a.d.ts.map +1 -0
  308. package/dist/server/server-adapter/routes/agent-builder.d.ts +3 -0
  309. package/dist/server/server-adapter/routes/agent-builder.d.ts.map +1 -0
  310. package/dist/server/server-adapter/routes/agents.d.ts +3 -0
  311. package/dist/server/server-adapter/routes/agents.d.ts.map +1 -0
  312. package/dist/server/server-adapter/routes/index.d.ts +52 -0
  313. package/dist/server/server-adapter/routes/index.d.ts.map +1 -0
  314. package/dist/server/server-adapter/routes/legacy.d.ts +7 -0
  315. package/dist/server/server-adapter/routes/legacy.d.ts.map +1 -0
  316. package/dist/server/server-adapter/routes/logs.d.ts +3 -0
  317. package/dist/server/server-adapter/routes/logs.d.ts.map +1 -0
  318. package/dist/server/server-adapter/routes/mcp.d.ts +9 -0
  319. package/dist/server/server-adapter/routes/mcp.d.ts.map +1 -0
  320. package/dist/server/server-adapter/routes/memory.d.ts +3 -0
  321. package/dist/server/server-adapter/routes/memory.d.ts.map +1 -0
  322. package/dist/server/server-adapter/routes/observability.d.ts +3 -0
  323. package/dist/server/server-adapter/routes/observability.d.ts.map +1 -0
  324. package/dist/server/server-adapter/routes/processors.d.ts +3 -0
  325. package/dist/server/server-adapter/routes/processors.d.ts.map +1 -0
  326. package/dist/server/server-adapter/routes/route-builder.d.ts +112 -0
  327. package/dist/server/server-adapter/routes/route-builder.d.ts.map +1 -0
  328. package/dist/server/server-adapter/routes/scorers.d.ts +3 -0
  329. package/dist/server/server-adapter/routes/scorers.d.ts.map +1 -0
  330. package/dist/server/server-adapter/routes/stored-agents.d.ts +8 -0
  331. package/dist/server/server-adapter/routes/stored-agents.d.ts.map +1 -0
  332. package/dist/server/server-adapter/routes/stream-types.d.ts +10 -0
  333. package/dist/server/server-adapter/routes/stream-types.d.ts.map +1 -0
  334. package/dist/server/server-adapter/routes/system.d.ts +12 -0
  335. package/dist/server/server-adapter/routes/system.d.ts.map +1 -0
  336. package/dist/server/server-adapter/routes/tools.d.ts +3 -0
  337. package/dist/server/server-adapter/routes/tools.d.ts.map +1 -0
  338. package/dist/server/server-adapter/routes/vectors.d.ts +3 -0
  339. package/dist/server/server-adapter/routes/vectors.d.ts.map +1 -0
  340. package/dist/server/server-adapter/routes/workflows.d.ts +3 -0
  341. package/dist/server/server-adapter/routes/workflows.d.ts.map +1 -0
  342. package/dist/server/utils.d.ts +4 -3
  343. package/dist/server/utils.d.ts.map +1 -1
  344. package/dist/{token-375W3LEI.cjs → token-6GSAFR2W-ABXTQD64-MC4IMVOB.cjs} +11 -12
  345. package/dist/token-6GSAFR2W-ABXTQD64-MC4IMVOB.cjs.map +1 -0
  346. package/dist/{token-C3IMNCC4.js → token-6GSAFR2W-ABXTQD64-Z6U2TA2C.js} +8 -9
  347. package/dist/token-6GSAFR2W-ABXTQD64-Z6U2TA2C.js.map +1 -0
  348. package/dist/token-6GSAFR2W-F2L44NEJ-B3QIV63M.cjs +63 -0
  349. package/dist/token-6GSAFR2W-F2L44NEJ-B3QIV63M.cjs.map +1 -0
  350. package/dist/token-6GSAFR2W-F2L44NEJ-GFZ37A2V.js +61 -0
  351. package/dist/token-6GSAFR2W-F2L44NEJ-GFZ37A2V.js.map +1 -0
  352. package/dist/token-6GSAFR2W-WGTMOPEU-6HSZQUFZ.cjs +63 -0
  353. package/dist/token-6GSAFR2W-WGTMOPEU-6HSZQUFZ.cjs.map +1 -0
  354. package/dist/token-6GSAFR2W-WGTMOPEU-JKP67ZX4.js +61 -0
  355. package/dist/token-6GSAFR2W-WGTMOPEU-JKP67ZX4.js.map +1 -0
  356. package/dist/token-util-NEHG7TUY-4YJ4EPCL-MBTAVIJ3.js +8 -0
  357. package/dist/token-util-NEHG7TUY-4YJ4EPCL-MBTAVIJ3.js.map +1 -0
  358. package/dist/token-util-NEHG7TUY-4YJ4EPCL-SQ4NADRW.cjs +10 -0
  359. package/dist/token-util-NEHG7TUY-4YJ4EPCL-SQ4NADRW.cjs.map +1 -0
  360. package/dist/token-util-NEHG7TUY-TV2H7N56-GGCGMPDG.js +8 -0
  361. package/dist/token-util-NEHG7TUY-TV2H7N56-GGCGMPDG.js.map +1 -0
  362. package/dist/token-util-NEHG7TUY-TV2H7N56-R7OENTCJ.cjs +10 -0
  363. package/dist/token-util-NEHG7TUY-TV2H7N56-R7OENTCJ.cjs.map +1 -0
  364. package/dist/token-util-NEHG7TUY-XQP3QSPX-BL5O5N7R.cjs +10 -0
  365. package/dist/token-util-NEHG7TUY-XQP3QSPX-BL5O5N7R.cjs.map +1 -0
  366. package/dist/token-util-NEHG7TUY-XQP3QSPX-YCJRRNXO.js +8 -0
  367. package/dist/token-util-NEHG7TUY-XQP3QSPX-YCJRRNXO.js.map +1 -0
  368. package/handlers/server/handlers.d.ts +1 -0
  369. package/handlers.d.ts +1 -0
  370. package/package.json +46 -16
  371. package/server-adapter.d.ts +1 -0
  372. package/dist/chunk-2P4VRXBT.js +0 -533
  373. package/dist/chunk-2P4VRXBT.js.map +0 -1
  374. package/dist/chunk-2PLXW4ZX.cjs.map +0 -1
  375. package/dist/chunk-2S4IMB6E.cjs +0 -130
  376. package/dist/chunk-2S4IMB6E.cjs.map +0 -1
  377. package/dist/chunk-3SNGNFUJ.cjs +0 -128
  378. package/dist/chunk-3SNGNFUJ.cjs.map +0 -1
  379. package/dist/chunk-4QCXUEAT.js +0 -25
  380. package/dist/chunk-4QCXUEAT.js.map +0 -1
  381. package/dist/chunk-6VPAV4ZV.js +0 -692
  382. package/dist/chunk-6VPAV4ZV.js.map +0 -1
  383. package/dist/chunk-7HCPO76Z.js +0 -19548
  384. package/dist/chunk-7HCPO76Z.js.map +0 -1
  385. package/dist/chunk-ABRFV4XP.js +0 -83
  386. package/dist/chunk-ABRFV4XP.js.map +0 -1
  387. package/dist/chunk-AHB4JCIQ.js +0 -160
  388. package/dist/chunk-AHB4JCIQ.js.map +0 -1
  389. package/dist/chunk-AW5BU3RQ.js +0 -192
  390. package/dist/chunk-AW5BU3RQ.js.map +0 -1
  391. package/dist/chunk-B7QWVGQQ.cjs +0 -729
  392. package/dist/chunk-B7QWVGQQ.cjs.map +0 -1
  393. package/dist/chunk-BATEJLED.js +0 -124
  394. package/dist/chunk-BATEJLED.js.map +0 -1
  395. package/dist/chunk-CJFKRVED.cjs.map +0 -1
  396. package/dist/chunk-CY4TP3FK.js +0 -16
  397. package/dist/chunk-CY4TP3FK.js.map +0 -1
  398. package/dist/chunk-EP3JQDPD.cjs +0 -131
  399. package/dist/chunk-EP3JQDPD.cjs.map +0 -1
  400. package/dist/chunk-G4PUALCE.cjs +0 -28
  401. package/dist/chunk-G4PUALCE.cjs.map +0 -1
  402. package/dist/chunk-GDUKGVFI.cjs +0 -550
  403. package/dist/chunk-GDUKGVFI.cjs.map +0 -1
  404. package/dist/chunk-I3C4ODGV.cjs +0 -335
  405. package/dist/chunk-I3C4ODGV.cjs.map +0 -1
  406. package/dist/chunk-K5T5A3AL.cjs.map +0 -1
  407. package/dist/chunk-KDUHLUK4.cjs +0 -19584
  408. package/dist/chunk-KDUHLUK4.cjs.map +0 -1
  409. package/dist/chunk-KSFLUEWV.js +0 -130
  410. package/dist/chunk-KSFLUEWV.js.map +0 -1
  411. package/dist/chunk-LLUOPR3J.js +0 -323
  412. package/dist/chunk-LLUOPR3J.js.map +0 -1
  413. package/dist/chunk-LPM6BBAX.cjs.map +0 -1
  414. package/dist/chunk-MMROOK5J.js.map +0 -1
  415. package/dist/chunk-MN2TZQ7I.js.map +0 -1
  416. package/dist/chunk-MYR4PVGN.js +0 -123
  417. package/dist/chunk-MYR4PVGN.js.map +0 -1
  418. package/dist/chunk-QQXMIP6C.js +0 -122
  419. package/dist/chunk-QQXMIP6C.js.map +0 -1
  420. package/dist/chunk-QU6N55W6.cjs.map +0 -1
  421. package/dist/chunk-RE4RPXT2.cjs +0 -18
  422. package/dist/chunk-RE4RPXT2.cjs.map +0 -1
  423. package/dist/chunk-RQK4FQUD.js.map +0 -1
  424. package/dist/chunk-SHWNNZBL.js.map +0 -1
  425. package/dist/chunk-SPRRK3P7.cjs +0 -200
  426. package/dist/chunk-SPRRK3P7.cjs.map +0 -1
  427. package/dist/chunk-TOCYBDP2.js +0 -46
  428. package/dist/chunk-TOCYBDP2.js.map +0 -1
  429. package/dist/chunk-TRGAMKHX.cjs +0 -167
  430. package/dist/chunk-TRGAMKHX.cjs.map +0 -1
  431. package/dist/chunk-X6C7BUWN.cjs +0 -48
  432. package/dist/chunk-X6C7BUWN.cjs.map +0 -1
  433. package/dist/chunk-XN74I6VW.cjs +0 -88
  434. package/dist/chunk-XN74I6VW.cjs.map +0 -1
  435. package/dist/chunk-YSHNCC6F.cjs +0 -713
  436. package/dist/chunk-YSHNCC6F.cjs.map +0 -1
  437. package/dist/chunk-ZLBL4NQC.js +0 -707
  438. package/dist/chunk-ZLBL4NQC.js.map +0 -1
  439. package/dist/chunk-ZULZ2752.js.map +0 -1
  440. package/dist/dist-4MVGNSRL.cjs.map +0 -1
  441. package/dist/dist-FZYCV3VB.cjs.map +0 -1
  442. package/dist/dist-G2BYZJOC.cjs.map +0 -1
  443. package/dist/dist-P4MXBQ3U.cjs +0 -16
  444. package/dist/dist-PQZUVLPC.js.map +0 -1
  445. package/dist/dist-R7WYX6LC.js.map +0 -1
  446. package/dist/dist-RFMYFILX.cjs.map +0 -1
  447. package/dist/dist-X7XR3M3Z.js.map +0 -1
  448. package/dist/dist-XVBSOGFK.js.map +0 -1
  449. package/dist/dist-YREX2TJT.js +0 -3
  450. package/dist/server/handlers/legacyWorkflows.cjs +0 -48
  451. package/dist/server/handlers/legacyWorkflows.cjs.map +0 -1
  452. package/dist/server/handlers/legacyWorkflows.d.ts +0 -59
  453. package/dist/server/handlers/legacyWorkflows.d.ts.map +0 -1
  454. package/dist/server/handlers/legacyWorkflows.js +0 -3
  455. package/dist/server/handlers/legacyWorkflows.js.map +0 -1
  456. package/dist/token-375W3LEI.cjs.map +0 -1
  457. package/dist/token-C3IMNCC4.js.map +0 -1
  458. package/dist/token-util-CV3RRG6K.cjs +0 -9
  459. package/dist/token-util-CV3RRG6K.cjs.map +0 -1
  460. package/dist/token-util-E5QO2RCL.js +0 -7
  461. package/dist/token-util-E5QO2RCL.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/schemas/stored-agents.ts","../src/server/schemas/agent-versions.ts","../src/server/handlers/agent-versions.ts"],"names":["z"],"mappings":"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","file":"chunk-JJLEVKG7.js","sourcesContent":["import z from 'zod';\nimport { paginationInfoSchema, createPagePaginationSchema } from './common';\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\n/**\n * GET /stored/agents - List stored agents\n */\nexport const listStoredAgentsQuerySchema = createPagePaginationSchema(100).extend({\n orderBy: storageOrderBySchema.optional(),\n ownerId: z.string().optional().describe('Filter agents by owner identifier'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Filter agents by metadata key-value pairs'),\n});\n\n// ============================================================================\n// Body Parameter Schemas\n// ============================================================================\n\n/**\n * Scorer config schema with optional sampling\n */\nconst scorerConfigSchema = z.object({\n sampling: z\n .object({\n type: z.enum(['ratio', 'count']),\n rate: z.number().optional(),\n count: z.number().optional(),\n })\n .optional(),\n});\n\n/**\n * Base stored agent schema (shared fields)\n */\nconst storedAgentBaseSchema = z.object({\n name: z.string().describe('Name of the agent'),\n description: z.string().optional().describe('Description of the agent'),\n instructions: z.string().describe('System instructions for the agent'),\n model: z.record(z.string(), z.unknown()).describe('Model configuration (provider, name, etc.)'),\n tools: z.array(z.string()).optional().describe('Array of tool keys to resolve from Mastra registry'),\n defaultOptions: z.record(z.string(), z.unknown()).optional().describe('Default options for generate/stream calls'),\n workflows: z.array(z.string()).optional().describe('Array of workflow keys to resolve from Mastra registry'),\n agents: z.array(z.string()).optional().describe('Array of agent keys to resolve from Mastra registry'),\n integrationTools: z\n .array(z.string())\n .optional()\n .describe('Array of specific integration tool IDs (format: provider_toolkitSlug_toolSlug)'),\n inputProcessors: z.array(z.record(z.string(), z.unknown())).optional().describe('Input processor configurations'),\n outputProcessors: z.array(z.record(z.string(), z.unknown())).optional().describe('Output processor configurations'),\n memory: z.string().optional().describe('Memory key to resolve from Mastra registry'),\n scorers: z.record(z.string(), scorerConfigSchema).optional().describe('Scorer keys with optional sampling config'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Additional metadata for the agent'),\n ownerId: z.string().optional().describe('Owner identifier for multi-tenant filtering'),\n});\n\n/**\n * POST /stored/agents - Create stored agent body\n */\nexport const createStoredAgentBodySchema = storedAgentBaseSchema.extend({\n id: z.string().describe('Unique identifier for the agent'),\n});\n\n/**\n * PATCH /stored/agents/:storedAgentId - Update stored agent body\n */\nexport const updateStoredAgentBodySchema = storedAgentBaseSchema.partial();\n\n// ============================================================================\n// Response Schemas\n// ============================================================================\n\n/**\n * Stored agent object schema (full response)\n */\nexport const storedAgentSchema = storedAgentBaseSchema.extend({\n id: z.string(),\n ownerId: z.string().optional(),\n createdAt: z.date(),\n updatedAt: z.date(),\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 */\nexport const updateStoredAgentResponseSchema = storedAgentSchema;\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","import z from 'zod';\nimport { paginationInfoSchema, createPagePaginationSchema } from './common';\nimport { storedAgentSchema } from './stored-agents';\n\n// ============================================================================\n// Path Parameter Schemas\n// ============================================================================\n\n/**\n * Path parameters for agent version routes\n */\nexport const agentVersionPathParams = z.object({\n agentId: z.string().describe('Unique identifier for the stored agent'),\n});\n\n/**\n * Path parameters for specific version routes\n */\nexport const versionIdPathParams = z.object({\n agentId: z.string().describe('Unique identifier for the stored agent'),\n versionId: z.string().describe('Unique identifier for the version (UUID)'),\n});\n\n// ============================================================================\n// Query Parameter Schemas\n// ============================================================================\n\n/**\n * Version order by configuration\n */\nconst versionOrderBySchema = z.object({\n field: z.enum(['versionNumber', 'createdAt']).optional(),\n direction: z.enum(['ASC', 'DESC']).optional(),\n});\n\n/**\n * GET /stored/agents/:agentId/versions - List versions query params\n */\nexport const listVersionsQuerySchema = createPagePaginationSchema(20).extend({\n orderBy: versionOrderBySchema.optional(),\n});\n\n/**\n * GET /stored/agents/:agentId/versions/compare - Compare versions query params\n */\nexport const compareVersionsQuerySchema = z.object({\n from: z.string().describe('Version ID (UUID) to compare from'),\n to: z.string().describe('Version ID (UUID) to compare to'),\n});\n\n// ============================================================================\n// Body Parameter Schemas\n// ============================================================================\n\n/**\n * POST /stored/agents/:agentId/versions - Create version body\n */\nexport const createVersionBodySchema = z.object({\n name: z.string().max(100).optional().describe('Optional vanity name for this version'),\n changeMessage: z.string().max(500).optional().describe('Optional message describing the changes'),\n});\n\n// ============================================================================\n// Response Schemas\n// ============================================================================\n\n/**\n * Agent version object schema (full response)\n */\nexport const agentVersionSchema = z.object({\n id: z.string().describe('Unique identifier for the version (UUID)'),\n agentId: z.string().describe('ID of the agent this version belongs to'),\n versionNumber: z.number().describe('Sequential version number (1, 2, 3, ...)'),\n name: z.string().optional().describe('Optional vanity name for this version'),\n snapshot: storedAgentSchema.describe('Full agent configuration snapshot'),\n changedFields: z.array(z.string()).optional().describe('Array of field names that changed from the previous version'),\n changeMessage: z.string().optional().describe('Optional message describing the changes'),\n createdAt: z.date().describe('When this version was created'),\n});\n\n/**\n * Response for GET /stored/agents/:agentId/versions\n */\nexport const listVersionsResponseSchema = paginationInfoSchema.extend({\n versions: z.array(agentVersionSchema),\n});\n\n/**\n * Response for GET /stored/agents/:agentId/versions/:versionId\n */\nexport const getVersionResponseSchema = agentVersionSchema;\n\n/**\n * Response for POST /stored/agents/:agentId/versions\n */\nexport const createVersionResponseSchema = agentVersionSchema;\n\n/**\n * Response for POST /stored/agents/:agentId/versions/:versionId/activate\n */\nexport const activateVersionResponseSchema = z.object({\n success: z.boolean(),\n message: z.string(),\n activeVersionId: z.string(),\n});\n\n/**\n * Response for POST /stored/agents/:agentId/versions/:versionId/restore\n */\nexport const restoreVersionResponseSchema = agentVersionSchema.describe(\n 'The newly created version from the restored snapshot',\n);\n\n/**\n * Response for DELETE /stored/agents/:agentId/versions/:versionId\n */\nexport const deleteVersionResponseSchema = z.object({\n success: z.boolean(),\n message: z.string(),\n});\n\n/**\n * Single diff entry for version comparison\n */\nexport const versionDiffEntrySchema = z.object({\n field: z.string().describe('The field path that changed'),\n previousValue: z.unknown().describe('The value in the \"from\" version'),\n currentValue: z.unknown().describe('The value in the \"to\" version'),\n});\n\n/**\n * Response for GET /stored/agents/:agentId/versions/compare\n */\nexport const compareVersionsResponseSchema = z.object({\n diffs: z.array(versionDiffEntrySchema).describe('List of differences between versions'),\n fromVersion: agentVersionSchema.describe('The source version'),\n toVersion: agentVersionSchema.describe('The target version'),\n});\n","import { deepEqual } from '@mastra/core/utils';\nimport { HTTPException } from '../http-exception';\nimport {\n agentVersionPathParams,\n versionIdPathParams,\n listVersionsQuerySchema,\n createVersionBodySchema,\n compareVersionsQuerySchema,\n listVersionsResponseSchema,\n getVersionResponseSchema,\n createVersionResponseSchema,\n activateVersionResponseSchema,\n restoreVersionResponseSchema,\n deleteVersionResponseSchema,\n compareVersionsResponseSchema,\n} from '../schemas/agent-versions';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { handleError } from './error';\n\n// Default maximum versions per agent (can be made configurable in the future)\nexport const DEFAULT_MAX_VERSIONS_PER_AGENT = 50;\n\n// ============================================================================\n// Helper Functions (exported for use in stored-agents.ts)\n// ============================================================================\n\n/**\n * Generates a unique ID for a version using crypto.randomUUID()\n */\nexport function generateVersionId(): string {\n return crypto.randomUUID();\n}\n\n/**\n * Compares two agent snapshots and returns an array of field names that changed.\n * Performs deep comparison for nested objects.\n */\nexport function calculateChangedFields(\n previous: Record<string, unknown> | null | undefined,\n current: Record<string, unknown>,\n): string[] {\n if (!previous) {\n // If no previous version, all fields are \"changed\" (new)\n return Object.keys(current);\n }\n\n const changedFields: string[] = [];\n const allKeys = new Set([...Object.keys(previous), ...Object.keys(current)]);\n\n for (const key of allKeys) {\n // Skip metadata fields that change on every save\n if (key === 'updatedAt' || key === 'createdAt') {\n continue;\n }\n\n const prevValue = previous[key];\n const currValue = current[key];\n\n if (!deepEqual(prevValue, currValue)) {\n changedFields.push(key);\n }\n }\n\n return changedFields;\n}\n\n/**\n * Computes detailed diffs between two agent snapshots.\n */\nfunction computeVersionDiffs(\n fromSnapshot: Record<string, unknown>,\n toSnapshot: Record<string, unknown>,\n): Array<{ field: string; previousValue: unknown; currentValue: unknown }> {\n const diffs: Array<{ field: string; previousValue: unknown; currentValue: unknown }> = [];\n const allKeys = new Set([...Object.keys(fromSnapshot), ...Object.keys(toSnapshot)]);\n\n for (const key of allKeys) {\n // Skip metadata fields\n if (key === 'updatedAt' || key === 'createdAt') {\n continue;\n }\n\n const prevValue = fromSnapshot[key];\n const currValue = toSnapshot[key];\n\n if (!deepEqual(prevValue, currValue)) {\n diffs.push({\n field: key,\n previousValue: prevValue,\n currentValue: currValue,\n });\n }\n }\n\n return diffs;\n}\n\n/**\n * Enforces version retention limit by deleting oldest versions that exceed the maximum.\n * Never deletes the active version.\n *\n * @param agentsStore - The agents storage domain\n * @param agentId - The agent ID to enforce retention for\n * @param activeVersionId - The active version ID (will never be deleted)\n * @param maxVersions - Maximum number of versions to keep (default: 50)\n */\nexport async function enforceRetentionLimit(\n agentsStore: {\n listVersions: (params: {\n agentId: string;\n page?: number;\n perPage?: number | false;\n orderBy?: { field?: 'versionNumber' | 'createdAt'; direction?: 'ASC' | 'DESC' };\n }) => Promise<{\n versions: Array<{ id: string; versionNumber: number }>;\n total: number;\n }>;\n deleteVersion: (id: string) => Promise<void>;\n },\n agentId: string,\n activeVersionId: string | undefined | null,\n maxVersions: number = DEFAULT_MAX_VERSIONS_PER_AGENT,\n): Promise<{ deletedCount: number }> {\n // Get total version count\n const { total } = await agentsStore.listVersions({ agentId, perPage: 1 });\n\n if (total <= maxVersions) {\n return { deletedCount: 0 };\n }\n\n const versionsToDelete = total - maxVersions;\n\n // Get the oldest versions (ordered by versionNumber ascending)\n const { versions: oldestVersions } = await agentsStore.listVersions({\n agentId,\n perPage: versionsToDelete + 1, // Get one extra in case we need to skip the active version\n orderBy: { field: 'versionNumber', direction: 'ASC' },\n });\n\n let deletedCount = 0;\n for (const version of oldestVersions) {\n if (deletedCount >= versionsToDelete) {\n break;\n }\n\n // Never delete the active version\n if (version.id === activeVersionId) {\n continue;\n }\n\n await agentsStore.deleteVersion(version.id);\n deletedCount++;\n }\n\n return { deletedCount };\n}\n\n/**\n * Determines if an error is a unique constraint violation on versionNumber.\n * This is used to detect race conditions when creating versions concurrently.\n */\nfunction isVersionNumberConflictError(error: unknown): boolean {\n if (error instanceof Error) {\n const message = error.message.toLowerCase();\n // Check for common unique constraint violation patterns across databases\n return (\n (message.includes('unique') && message.includes('constraint')) ||\n message.includes('duplicate key') ||\n message.includes('unique_violation') ||\n message.includes('sqlite_constraint_unique') ||\n message.includes('versionnumber')\n );\n }\n return false;\n}\n\n/**\n * Type for the agents store with version-related methods.\n * Uses generic types to work with any StorageAgentType-compatible structure.\n */\nexport interface AgentsStoreWithVersions<TAgent = any> {\n getLatestVersion: (agentId: string) => Promise<{ id: string; versionNumber: number; snapshot: TAgent } | null>;\n createVersion: (params: {\n id: string;\n agentId: string;\n versionNumber: number;\n name?: string;\n snapshot: TAgent;\n changedFields?: string[];\n changeMessage?: string;\n }) => Promise<{ id: string; versionNumber: number }>;\n updateAgent: (params: { id: string; activeVersionId?: string; [key: string]: any }) => Promise<TAgent>;\n listVersions: (params: {\n agentId: string;\n page?: number;\n perPage?: number | false;\n orderBy?: { field?: 'versionNumber' | 'createdAt'; direction?: 'ASC' | 'DESC' };\n }) => Promise<{\n versions: Array<{ id: string; versionNumber: number }>;\n total: number;\n }>;\n deleteVersion: (id: string) => Promise<void>;\n}\n\n/**\n * Creates a new version with retry logic for race condition handling.\n * If a unique constraint violation occurs on versionNumber, retries with a fresh versionNumber.\n *\n * @param agentsStore - The agents storage domain\n * @param agentId - The agent ID to create a version for\n * @param snapshot - The agent configuration snapshot\n * @param changedFields - Array of field names that changed\n * @param options - Optional settings for the version\n * @param options.name - Optional vanity name for the version\n * @param options.changeMessage - Optional description of the changes\n * @param options.maxRetries - Maximum number of retry attempts (default: 3)\n * @returns The created version ID and version number\n */\nexport async function createVersionWithRetry<TAgent>(\n agentsStore: AgentsStoreWithVersions<TAgent>,\n agentId: string,\n snapshot: TAgent,\n changedFields: string[],\n options: {\n name?: string;\n changeMessage?: string;\n maxRetries?: number;\n } = {},\n): Promise<{ versionId: string; versionNumber: number }> {\n const { name, changeMessage, maxRetries = 3 } = options;\n let lastError: unknown;\n\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n try {\n // Get the latest version number (fresh on each attempt)\n const latestVersion = await agentsStore.getLatestVersion(agentId);\n const versionNumber = latestVersion ? latestVersion.versionNumber + 1 : 1;\n\n // Generate a unique version ID\n const versionId = generateVersionId();\n\n // Create the version\n await agentsStore.createVersion({\n id: versionId,\n agentId,\n versionNumber,\n name,\n snapshot,\n changedFields,\n changeMessage,\n });\n\n return { versionId, versionNumber };\n } catch (error) {\n lastError = error;\n\n // If it's a unique constraint violation, retry with a fresh versionNumber\n if (isVersionNumberConflictError(error) && attempt < maxRetries - 1) {\n // Small delay before retry to reduce contention\n await new Promise(resolve => setTimeout(resolve, 10 * (attempt + 1)));\n continue;\n }\n\n // For other errors or last attempt, rethrow\n throw error;\n }\n }\n\n // Should not reach here, but just in case\n throw lastError;\n}\n\n/**\n * Handles auto-versioning after an agent update.\n * Creates a new version with retry logic, then updates the agent's activeVersionId,\n * and finally enforces the retention limit. These are separate operations - if updateAgent\n * fails after version creation, a created-but-not-activated version may remain.\n *\n * @param agentsStore - The agents storage domain\n * @param agentId - The agent ID\n * @param existingAgent - The agent state before the update\n * @param updatedAgent - The agent state after the update\n * @returns The updated agent with the new activeVersionId, or the original if no changes\n */\nexport async function handleAutoVersioning<TAgent>(\n agentsStore: AgentsStoreWithVersions<TAgent>,\n agentId: string,\n existingAgent: TAgent,\n updatedAgent: TAgent,\n): Promise<{ agent: TAgent; versionCreated: boolean }> {\n // Calculate what fields changed\n const changedFields = calculateChangedFields(\n existingAgent as unknown as Record<string, unknown>,\n updatedAgent as unknown as Record<string, unknown>,\n );\n\n // Only create version if there are actual changes (excluding metadata timestamps)\n if (changedFields.length === 0) {\n return { agent: updatedAgent, versionCreated: false };\n }\n\n // Create version with retry logic for race conditions\n const { versionId } = await createVersionWithRetry(agentsStore, agentId, updatedAgent, changedFields, {\n changeMessage: 'Auto-saved after edit',\n });\n\n // Update the agent's activeVersionId\n const finalAgent = await agentsStore.updateAgent({\n id: agentId,\n activeVersionId: versionId,\n });\n\n // Enforce retention limit\n await enforceRetentionLimit(agentsStore, agentId, versionId);\n\n return { agent: finalAgent, versionCreated: true };\n}\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /stored/agents/:agentId/versions - List all versions for an agent\n */\nexport const LIST_AGENT_VERSIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/agents/:agentId/versions',\n responseType: 'json',\n pathParamSchema: agentVersionPathParams,\n queryParamSchema: listVersionsQuerySchema,\n responseSchema: listVersionsResponseSchema,\n summary: 'List agent versions',\n description: 'Returns a paginated list of all versions for a stored agent',\n tags: ['Agent Versions'],\n handler: async ({ mastra, agentId, page, perPage, orderBy }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const agentsStore = await storage.getStore('agents');\n if (!agentsStore) {\n throw new HTTPException(500, { message: 'Agents storage domain is not available' });\n }\n\n // Verify agent exists\n const agent = await agentsStore.getAgentById({ id: agentId });\n if (!agent) {\n throw new HTTPException(404, { message: `Agent with id ${agentId} not found` });\n }\n\n const result = await agentsStore.listVersions({\n agentId,\n page,\n perPage,\n orderBy,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error listing agent versions');\n }\n },\n});\n\n/**\n * POST /stored/agents/:agentId/versions - Create a new version snapshot\n */\nexport const CREATE_AGENT_VERSION_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/agents/:agentId/versions',\n responseType: 'json',\n pathParamSchema: agentVersionPathParams,\n bodySchema: createVersionBodySchema,\n responseSchema: createVersionResponseSchema,\n summary: 'Create agent version',\n description: 'Creates a new version snapshot of the current agent configuration',\n tags: ['Agent Versions'],\n handler: async ({ mastra, agentId, name, changeMessage }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const agentsStore = await storage.getStore('agents');\n if (!agentsStore) {\n throw new HTTPException(500, { message: 'Agents storage domain is not available' });\n }\n\n // Get the current agent configuration\n const agent = await agentsStore.getAgentById({ id: agentId });\n if (!agent) {\n throw new HTTPException(404, { message: `Agent with id ${agentId} not found` });\n }\n\n // Get the latest version to calculate changed fields\n const latestVersion = await agentsStore.getLatestVersion(agentId);\n const changedFields = calculateChangedFields(\n latestVersion?.snapshot as Record<string, unknown> | undefined,\n agent as unknown as Record<string, unknown>,\n );\n\n // Create the new version with retry logic to handle race conditions\n const { versionId } = await createVersionWithRetry(\n agentsStore,\n agentId,\n agent,\n changedFields.length > 0 ? changedFields : [],\n { name, changeMessage },\n );\n\n // Get the created version to return\n const version = await agentsStore.getVersion(versionId);\n if (!version) {\n throw new HTTPException(500, { message: 'Failed to retrieve created version' });\n }\n\n // Enforce retention limit - delete oldest versions if we exceed the max\n await enforceRetentionLimit(agentsStore, agentId, agent.activeVersionId);\n\n return version;\n } catch (error) {\n return handleError(error, 'Error creating agent version');\n }\n },\n});\n\n/**\n * GET /stored/agents/:agentId/versions/:versionId - Get a specific version\n */\nexport const GET_AGENT_VERSION_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/agents/:agentId/versions/:versionId',\n responseType: 'json',\n pathParamSchema: versionIdPathParams,\n responseSchema: getVersionResponseSchema,\n summary: 'Get agent version',\n description: 'Returns a specific version of an agent by its version ID',\n tags: ['Agent Versions'],\n handler: async ({ mastra, agentId, versionId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const agentsStore = await storage.getStore('agents');\n if (!agentsStore) {\n throw new HTTPException(500, { message: 'Agents storage domain is not available' });\n }\n\n const version = await agentsStore.getVersion(versionId);\n\n if (!version) {\n throw new HTTPException(404, { message: `Version with id ${versionId} not found` });\n }\n\n // Verify the version belongs to the specified agent\n if (version.agentId !== agentId) {\n throw new HTTPException(404, { message: `Version with id ${versionId} not found for agent ${agentId}` });\n }\n\n return version;\n } catch (error) {\n return handleError(error, 'Error getting agent version');\n }\n },\n});\n\n/**\n * POST /stored/agents/:agentId/versions/:versionId/activate - Set a version as active\n */\nexport const ACTIVATE_AGENT_VERSION_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/agents/:agentId/versions/:versionId/activate',\n responseType: 'json',\n pathParamSchema: versionIdPathParams,\n responseSchema: activateVersionResponseSchema,\n summary: 'Activate agent version',\n description: 'Sets a specific version as the active version for the agent',\n tags: ['Agent Versions'],\n handler: async ({ mastra, agentId, versionId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const agentsStore = await storage.getStore('agents');\n if (!agentsStore) {\n throw new HTTPException(500, { message: 'Agents storage domain is not available' });\n }\n\n // Verify agent exists\n const agent = await agentsStore.getAgentById({ id: agentId });\n if (!agent) {\n throw new HTTPException(404, { message: `Agent with id ${agentId} not found` });\n }\n\n // Verify version exists and belongs to this agent\n const version = await agentsStore.getVersion(versionId);\n if (!version) {\n throw new HTTPException(404, { message: `Version with id ${versionId} not found` });\n }\n if (version.agentId !== agentId) {\n throw new HTTPException(404, { message: `Version with id ${versionId} not found for agent ${agentId}` });\n }\n\n // Update the agent's activeVersionId\n await agentsStore.updateAgent({\n id: agentId,\n activeVersionId: versionId,\n });\n\n return {\n success: true,\n message: `Version ${version.versionNumber} is now active`,\n activeVersionId: versionId,\n };\n } catch (error) {\n return handleError(error, 'Error activating agent version');\n }\n },\n});\n\n/**\n * POST /stored/agents/:agentId/versions/:versionId/restore - Restore agent to a version\n */\nexport const RESTORE_AGENT_VERSION_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/agents/:agentId/versions/:versionId/restore',\n responseType: 'json',\n pathParamSchema: versionIdPathParams,\n responseSchema: restoreVersionResponseSchema,\n summary: 'Restore agent version',\n description: 'Restores the agent configuration from a version snapshot, creating a new version',\n tags: ['Agent Versions'],\n handler: async ({ mastra, agentId, versionId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const agentsStore = await storage.getStore('agents');\n if (!agentsStore) {\n throw new HTTPException(500, { message: 'Agents storage domain is not available' });\n }\n\n // Verify agent exists\n const agent = await agentsStore.getAgentById({ id: agentId });\n if (!agent) {\n throw new HTTPException(404, { message: `Agent with id ${agentId} not found` });\n }\n\n // Get the version to restore\n const versionToRestore = await agentsStore.getVersion(versionId);\n if (!versionToRestore) {\n throw new HTTPException(404, { message: `Version with id ${versionId} not found` });\n }\n if (versionToRestore.agentId !== agentId) {\n throw new HTTPException(404, { message: `Version with id ${versionId} not found for agent ${agentId}` });\n }\n\n // Update the agent with the snapshot from the version to restore\n // Exclude id, createdAt, updatedAt, and activeVersionId from the snapshot\n // (activeVersionId from old snapshot may reference a stale/deleted version)\n const {\n id: _id,\n createdAt: _createdAt,\n updatedAt: _updatedAt,\n activeVersionId: _activeVersionId,\n ...snapshotData\n } = versionToRestore.snapshot;\n await agentsStore.updateAgent({\n id: agentId,\n ...snapshotData,\n });\n\n // Get the updated agent\n const updatedAgent = await agentsStore.getAgentById({ id: agentId });\n if (!updatedAgent) {\n throw new HTTPException(500, { message: 'Failed to retrieve updated agent' });\n }\n\n // Get the latest version to calculate changed fields\n const latestVersion = await agentsStore.getLatestVersion(agentId);\n const changedFields = calculateChangedFields(\n latestVersion?.snapshot as Record<string, unknown> | undefined,\n updatedAgent as unknown as Record<string, unknown>,\n );\n\n // Create a new version with retry logic to handle race conditions\n const { versionId: newVersionId } = await createVersionWithRetry(\n agentsStore,\n agentId,\n updatedAgent,\n changedFields,\n {\n changeMessage: `Restored from version ${versionToRestore.versionNumber}${versionToRestore.name ? ` (${versionToRestore.name})` : ''}`,\n },\n );\n\n // Update the agent's activeVersionId to the new version\n await agentsStore.updateAgent({\n id: agentId,\n activeVersionId: newVersionId,\n });\n\n // Get the created version to return\n const newVersion = await agentsStore.getVersion(newVersionId);\n if (!newVersion) {\n throw new HTTPException(500, { message: 'Failed to retrieve created version' });\n }\n\n // Enforce retention limit - delete oldest versions if we exceed the max\n // Use the new version ID as the active version\n await enforceRetentionLimit(agentsStore, agentId, newVersionId);\n\n return newVersion;\n } catch (error) {\n return handleError(error, 'Error restoring agent version');\n }\n },\n});\n\n/**\n * DELETE /stored/agents/:agentId/versions/:versionId - Delete a version\n */\nexport const DELETE_AGENT_VERSION_ROUTE = createRoute({\n method: 'DELETE',\n path: '/stored/agents/:agentId/versions/:versionId',\n responseType: 'json',\n pathParamSchema: versionIdPathParams,\n responseSchema: deleteVersionResponseSchema,\n summary: 'Delete agent version',\n description: 'Deletes a specific version (cannot delete the active version)',\n tags: ['Agent Versions'],\n handler: async ({ mastra, agentId, versionId }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const agentsStore = await storage.getStore('agents');\n if (!agentsStore) {\n throw new HTTPException(500, { message: 'Agents storage domain is not available' });\n }\n\n // Verify agent exists\n const agent = await agentsStore.getAgentById({ id: agentId });\n if (!agent) {\n throw new HTTPException(404, { message: `Agent with id ${agentId} not found` });\n }\n\n // Verify version exists and belongs to this agent\n const version = await agentsStore.getVersion(versionId);\n if (!version) {\n throw new HTTPException(404, { message: `Version with id ${versionId} not found` });\n }\n if (version.agentId !== agentId) {\n throw new HTTPException(404, { message: `Version with id ${versionId} not found for agent ${agentId}` });\n }\n\n // Check if this is the active version\n if (agent.activeVersionId === versionId) {\n throw new HTTPException(400, {\n message: 'Cannot delete the active version. Activate a different version first.',\n });\n }\n\n await agentsStore.deleteVersion(versionId);\n\n return {\n success: true,\n message: `Version ${version.versionNumber} deleted successfully`,\n };\n } catch (error) {\n return handleError(error, 'Error deleting agent version');\n }\n },\n});\n\n/**\n * GET /stored/agents/:agentId/versions/compare - Compare two versions\n */\nexport const COMPARE_AGENT_VERSIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/agents/:agentId/versions/compare',\n responseType: 'json',\n pathParamSchema: agentVersionPathParams,\n queryParamSchema: compareVersionsQuerySchema,\n responseSchema: compareVersionsResponseSchema,\n summary: 'Compare agent versions',\n description: 'Compares two versions and returns the differences between them',\n tags: ['Agent Versions'],\n handler: async ({ mastra, agentId, from, to }) => {\n try {\n const storage = mastra.getStorage();\n\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not configured' });\n }\n\n const agentsStore = await storage.getStore('agents');\n if (!agentsStore) {\n throw new HTTPException(500, { message: 'Agents storage domain is not available' });\n }\n\n // Get both versions\n const fromVersion = await agentsStore.getVersion(from);\n if (!fromVersion) {\n throw new HTTPException(404, { message: `Version with id ${from} not found` });\n }\n if (fromVersion.agentId !== agentId) {\n throw new HTTPException(404, { message: `Version with id ${from} not found for agent ${agentId}` });\n }\n\n const toVersion = await agentsStore.getVersion(to);\n if (!toVersion) {\n throw new HTTPException(404, { message: `Version with id ${to} not found` });\n }\n if (toVersion.agentId !== agentId) {\n throw new HTTPException(404, { message: `Version with id ${to} not found for agent ${agentId}` });\n }\n\n // Compute diffs\n const diffs = computeVersionDiffs(\n fromVersion.snapshot as unknown as Record<string, unknown>,\n toVersion.snapshot as unknown as Record<string, unknown>,\n );\n\n return {\n diffs,\n fromVersion,\n toVersion,\n };\n } catch (error) {\n return handleError(error, 'Error comparing agent versions');\n }\n },\n});\n"]}
@@ -0,0 +1,233 @@
1
+ 'use strict';
2
+
3
+ var zodToJson = require('@mastra/core/utils/zod-to-json');
4
+ var zod = require('zod');
5
+
6
+ // src/server/server-adapter/openapi-utils.ts
7
+ function generateRouteOpenAPI({
8
+ method,
9
+ path,
10
+ summary,
11
+ description,
12
+ tags = [],
13
+ pathParamSchema,
14
+ queryParamSchema,
15
+ bodySchema,
16
+ responseSchema,
17
+ deprecated
18
+ }) {
19
+ const route = {
20
+ summary: summary || `${method} ${path}`,
21
+ description,
22
+ tags,
23
+ deprecated,
24
+ responses: {
25
+ 200: {
26
+ description: "Successful response"
27
+ }
28
+ }
29
+ };
30
+ if (pathParamSchema || queryParamSchema) {
31
+ route.requestParams = {};
32
+ if (pathParamSchema) {
33
+ route.requestParams.path = pathParamSchema;
34
+ }
35
+ if (queryParamSchema) {
36
+ route.requestParams.query = queryParamSchema;
37
+ }
38
+ }
39
+ if (bodySchema) {
40
+ route.requestBody = {
41
+ content: {
42
+ "application/json": {
43
+ schema: bodySchema
44
+ }
45
+ }
46
+ };
47
+ }
48
+ if (responseSchema) {
49
+ route.responses[200] = {
50
+ description: "Successful response",
51
+ content: {
52
+ "application/json": {
53
+ schema: responseSchema
54
+ }
55
+ }
56
+ };
57
+ }
58
+ return route;
59
+ }
60
+ function convertZodToJsonSchema(spec) {
61
+ const converted = {
62
+ summary: spec.summary,
63
+ description: spec.description,
64
+ tags: spec.tags,
65
+ responses: {}
66
+ };
67
+ const parameters = [];
68
+ if (spec.requestParams?.path) {
69
+ const pathSchema = zodToJson.zodToJsonSchema(spec.requestParams.path, "openApi3", "none");
70
+ const properties = pathSchema.properties || {};
71
+ Object.entries(properties).forEach(([name, schema]) => {
72
+ parameters.push({
73
+ name,
74
+ in: "path",
75
+ required: true,
76
+ description: schema.description || `The ${name} parameter`,
77
+ schema
78
+ });
79
+ });
80
+ }
81
+ if (spec.requestParams?.query) {
82
+ const querySchema = zodToJson.zodToJsonSchema(spec.requestParams.query, "openApi3", "none");
83
+ const properties = querySchema.properties || {};
84
+ const required = querySchema.required || [];
85
+ Object.entries(properties).forEach(([name, schema]) => {
86
+ parameters.push({
87
+ name,
88
+ in: "query",
89
+ required: required.includes(name),
90
+ description: schema.description || `Query parameter: ${name}`,
91
+ schema
92
+ });
93
+ });
94
+ }
95
+ if (parameters.length > 0) {
96
+ converted.parameters = parameters;
97
+ }
98
+ if (spec.requestBody?.content?.["application/json"]?.schema) {
99
+ converted.requestBody = {
100
+ required: true,
101
+ content: {
102
+ "application/json": {
103
+ schema: zodToJson.zodToJsonSchema(spec.requestBody.content["application/json"].schema, "openApi3", "none")
104
+ }
105
+ }
106
+ };
107
+ }
108
+ Object.entries(spec.responses).forEach(([statusCode, response]) => {
109
+ converted.responses[statusCode] = {
110
+ description: response.description
111
+ };
112
+ if (response.content?.["application/json"]?.schema) {
113
+ converted.responses[statusCode].content = {
114
+ "application/json": {
115
+ schema: zodToJson.zodToJsonSchema(response.content["application/json"].schema, "openApi3", "none")
116
+ }
117
+ };
118
+ }
119
+ });
120
+ return converted;
121
+ }
122
+ function generateOpenAPIDocument(routes, info) {
123
+ const paths = {};
124
+ routes.forEach((route) => {
125
+ if (!route.openapi) return;
126
+ const openapiPath = route.path.replace(/:(\w+)/g, "{$1}");
127
+ if (!paths[openapiPath]) {
128
+ paths[openapiPath] = {};
129
+ }
130
+ paths[openapiPath][route.method.toLowerCase()] = convertZodToJsonSchema(route.openapi);
131
+ });
132
+ return {
133
+ openapi: "3.1.0",
134
+ info: {
135
+ title: info.title,
136
+ version: info.version,
137
+ description: info.description
138
+ },
139
+ paths
140
+ };
141
+ }
142
+ function pickParams(schema, params) {
143
+ const keys = Object.keys(schema.shape);
144
+ const result = {};
145
+ for (const key of keys) {
146
+ if (key in params) {
147
+ result[key] = params[key];
148
+ }
149
+ }
150
+ return result;
151
+ }
152
+ function jsonQueryParam(schema) {
153
+ return zod.z.union([
154
+ schema,
155
+ // Already the expected type (non-string input)
156
+ zod.z.string().transform((val, ctx) => {
157
+ try {
158
+ const parsed = JSON.parse(val);
159
+ const result = schema.safeParse(parsed);
160
+ if (!result.success) {
161
+ for (const issue of result.error.issues) {
162
+ ctx.addIssue({
163
+ code: zod.z.ZodIssueCode.custom,
164
+ message: issue.message,
165
+ path: issue.path
166
+ });
167
+ }
168
+ return zod.z.NEVER;
169
+ }
170
+ return result.data;
171
+ } catch (e) {
172
+ ctx.addIssue({
173
+ code: zod.z.ZodIssueCode.custom,
174
+ message: `Invalid JSON: ${e instanceof Error ? e.message : "parse error"}`
175
+ });
176
+ return zod.z.NEVER;
177
+ }
178
+ })
179
+ ]);
180
+ }
181
+ function getZodTypeName(schema) {
182
+ return schema?._def?.typeName;
183
+ }
184
+ function isComplexType(schema) {
185
+ let inner = schema;
186
+ let typeName = getZodTypeName(inner);
187
+ while (typeName === "ZodOptional" || typeName === "ZodNullable") {
188
+ inner = inner._def.innerType;
189
+ typeName = getZodTypeName(inner);
190
+ }
191
+ return typeName === "ZodArray" || typeName === "ZodRecord" || typeName === "ZodObject";
192
+ }
193
+ function wrapSchemaForQueryParams(schema) {
194
+ const newShape = {};
195
+ const shape = schema.shape;
196
+ for (const [key, fieldSchema] of Object.entries(shape)) {
197
+ if (isComplexType(fieldSchema)) {
198
+ newShape[key] = jsonQueryParam(fieldSchema);
199
+ } else {
200
+ newShape[key] = fieldSchema;
201
+ }
202
+ }
203
+ return zod.z.object(newShape);
204
+ }
205
+ function createRoute(config) {
206
+ const { summary, description, tags, deprecated, requiresAuth, ...baseRoute } = config;
207
+ const openapi = config.method !== "ALL" ? generateRouteOpenAPI({
208
+ method: config.method,
209
+ path: config.path,
210
+ summary,
211
+ description,
212
+ tags,
213
+ pathParamSchema: config.pathParamSchema,
214
+ queryParamSchema: config.queryParamSchema,
215
+ bodySchema: config.bodySchema,
216
+ responseSchema: config.responseSchema,
217
+ deprecated
218
+ }) : void 0;
219
+ return {
220
+ ...baseRoute,
221
+ openapi,
222
+ deprecated,
223
+ requiresAuth
224
+ };
225
+ }
226
+
227
+ exports.createRoute = createRoute;
228
+ exports.generateOpenAPIDocument = generateOpenAPIDocument;
229
+ exports.jsonQueryParam = jsonQueryParam;
230
+ exports.pickParams = pickParams;
231
+ exports.wrapSchemaForQueryParams = wrapSchemaForQueryParams;
232
+ //# sourceMappingURL=chunk-K34R4R2T.cjs.map
233
+ //# sourceMappingURL=chunk-K34R4R2T.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/server-adapter/openapi-utils.ts","../src/server/server-adapter/routes/route-builder.ts"],"names":["zodToJsonSchema","z"],"mappings":";;;;;;AAiDO,SAAS,oBAAA,CAAqB;AAAA,EACnC,MAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAO,EAAC;AAAA,EACR,eAAA;AAAA,EACA,gBAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA,EAAqC;AACnC,EAAA,MAAM,KAAA,GAAsB;AAAA,IAC1B,OAAA,EAAS,OAAA,IAAW,CAAA,EAAG,MAAM,IAAI,IAAI,CAAA,CAAA;AAAA,IACrC,WAAA;AAAA,IACA,IAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,EAAW;AAAA,MACT,GAAA,EAAK;AAAA,QACH,WAAA,EAAa;AAAA;AACf;AACF,GACF;AAGA,EAAA,IAAI,mBAAmB,gBAAA,EAAkB;AACvC,IAAA,KAAA,CAAM,gBAAgB,EAAC;AAEvB,IAAA,IAAI,eAAA,EAAiB;AACnB,MAAA,KAAA,CAAM,cAAc,IAAA,GAAO,eAAA;AAAA,IAC7B;AAEA,IAAA,IAAI,gBAAA,EAAkB;AACpB,MAAA,KAAA,CAAM,cAAc,KAAA,GAAQ,gBAAA;AAAA,IAC9B;AAAA,EACF;AAGA,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,KAAA,CAAM,WAAA,GAAc;AAAA,MAClB,OAAA,EAAS;AAAA,QACP,kBAAA,EAAoB;AAAA,UAClB,MAAA,EAAQ;AAAA;AACV;AACF,KACF;AAAA,EACF;AAGA,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,KAAA,CAAM,SAAA,CAAU,GAAG,CAAA,GAAI;AAAA,MACrB,WAAA,EAAa,qBAAA;AAAA,MACb,OAAA,EAAS;AAAA,QACP,kBAAA,EAAoB;AAAA,UAClB,MAAA,EAAQ;AAAA;AACV;AACF,KACF;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT;AAKA,SAAS,uBAAuB,IAAA,EAAyB;AACvD,EAAA,MAAM,SAAA,GAAiB;AAAA,IACrB,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,aAAa,IAAA,CAAK,WAAA;AAAA,IAClB,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,WAAW;AAAC,GACd;AAEA,EAAA,MAAM,aAAoB,EAAC;AAG3B,EAAA,IAAI,IAAA,CAAK,eAAe,IAAA,EAAM;AAC5B,IAAA,MAAM,aAAaA,yBAAA,CAAgB,IAAA,CAAK,aAAA,CAAc,IAAA,EAAa,YAAY,MAAM,CAAA;AACrF,IAAA,MAAM,UAAA,GAAa,UAAA,CAAW,UAAA,IAAc,EAAC;AAE7C,IAAA,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,IAAA,EAAM,MAAM,CAAA,KAAM;AACrD,MAAA,UAAA,CAAW,IAAA,CAAK;AAAA,QACd,IAAA;AAAA,QACA,EAAA,EAAI,MAAA;AAAA,QACJ,QAAA,EAAU,IAAA;AAAA,QACV,WAAA,EAAc,MAAA,CAAe,WAAA,IAAe,CAAA,IAAA,EAAO,IAAI,CAAA,UAAA,CAAA;AAAA,QACvD;AAAA,OACD,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH;AAGA,EAAA,IAAI,IAAA,CAAK,eAAe,KAAA,EAAO;AAC7B,IAAA,MAAM,cAAcA,yBAAA,CAAgB,IAAA,CAAK,aAAA,CAAc,KAAA,EAAc,YAAY,MAAM,CAAA;AACvF,IAAA,MAAM,UAAA,GAAa,WAAA,CAAY,UAAA,IAAc,EAAC;AAC9C,IAAA,MAAM,QAAA,GAAW,WAAA,CAAY,QAAA,IAAY,EAAC;AAE1C,IAAA,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,IAAA,EAAM,MAAM,CAAA,KAAM;AACrD,MAAA,UAAA,CAAW,IAAA,CAAK;AAAA,QACd,IAAA;AAAA,QACA,EAAA,EAAI,OAAA;AAAA,QACJ,QAAA,EAAU,QAAA,CAAS,QAAA,CAAS,IAAI,CAAA;AAAA,QAChC,WAAA,EAAc,MAAA,CAAe,WAAA,IAAe,CAAA,iBAAA,EAAoB,IAAI,CAAA,CAAA;AAAA,QACpE;AAAA,OACD,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,UAAA,CAAW,SAAS,CAAA,EAAG;AACzB,IAAA,SAAA,CAAU,UAAA,GAAa,UAAA;AAAA,EACzB;AAGA,EAAA,IAAI,IAAA,CAAK,WAAA,EAAa,OAAA,GAAU,kBAAkB,GAAG,MAAA,EAAQ;AAC3D,IAAA,SAAA,CAAU,WAAA,GAAc;AAAA,MACtB,QAAA,EAAU,IAAA;AAAA,MACV,OAAA,EAAS;AAAA,QACP,kBAAA,EAAoB;AAAA,UAClB,MAAA,EAAQA,0BAAgB,IAAA,CAAK,WAAA,CAAY,QAAQ,kBAAkB,CAAA,CAAE,MAAA,EAAe,UAAA,EAAY,MAAM;AAAA;AACxG;AACF,KACF;AAAA,EACF;AAGA,EAAA,MAAA,CAAO,OAAA,CAAQ,KAAK,SAAS,CAAA,CAAE,QAAQ,CAAC,CAAC,UAAA,EAAY,QAAQ,CAAA,KAAM;AACjE,IAAA,SAAA,CAAU,SAAA,CAAU,UAAU,CAAA,GAAI;AAAA,MAChC,aAAa,QAAA,CAAS;AAAA,KACxB;AAEA,IAAA,IAAI,QAAA,CAAS,OAAA,GAAU,kBAAkB,CAAA,EAAG,MAAA,EAAQ;AAClD,MAAA,SAAA,CAAU,SAAA,CAAU,UAAU,CAAA,CAAE,OAAA,GAAU;AAAA,QACxC,kBAAA,EAAoB;AAAA,UAClB,MAAA,EAAQA,0BAAgB,QAAA,CAAS,OAAA,CAAQ,kBAAkB,CAAA,CAAE,MAAA,EAAe,YAAY,MAAM;AAAA;AAChG,OACF;AAAA,IACF;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,SAAA;AACT;AAQO,SAAS,uBAAA,CACd,QACA,IAAA,EACK;AACL,EAAA,MAAM,QAA6B,EAAC;AAIpC,EAAA,MAAA,CAAO,QAAQ,CAAA,KAAA,KAAS;AACtB,IAAA,IAAI,CAAC,MAAM,OAAA,EAAS;AAEpB,IAAA,MAAM,WAAA,GAAc,KAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,WAAW,MAAM,CAAA;AACxD,IAAA,IAAI,CAAC,KAAA,CAAM,WAAW,CAAA,EAAG;AACvB,MAAA,KAAA,CAAM,WAAW,IAAI,EAAC;AAAA,IACxB;AAGA,IAAA,KAAA,CAAM,WAAW,EAAE,KAAA,CAAM,MAAA,CAAO,aAAa,CAAA,GAAI,sBAAA,CAAuB,KAAA,CAAM,OAAO,CAAA;AAAA,EACvF,CAAC,CAAA;AAED,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,OAAA;AAAA,IACT,IAAA,EAAM;AAAA,MACJ,OAAO,IAAA,CAAK,KAAA;AAAA,MACZ,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,aAAa,IAAA,CAAK;AAAA,KACpB;AAAA,IACA;AAAA,GACF;AACF;AChNO,SAAS,UAAA,CACd,QACA,MAAA,EACyB;AACzB,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA;AACrC,EAAA,MAAM,SAAS,EAAC;AAChB,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,IAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,MAAC,MAAA,CAAe,GAAG,CAAA,GAAI,MAAA,CAAO,GAAG,CAAA;AAAA,IACnC;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAmBO,SAAS,eAAqC,MAAA,EAAkC;AACrF,EAAA,OAAOC,MAAE,KAAA,CAAM;AAAA,IACb,MAAA;AAAA;AAAA,IACAA,MAAE,MAAA,EAAO,CAAE,SAAA,CAAU,CAAC,KAAK,GAAA,KAAQ;AACjC,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC7B,QAAA,MAAM,MAAA,GAAS,MAAA,CAAO,SAAA,CAAU,MAAM,CAAA;AACtC,QAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,UAAA,KAAA,MAAW,KAAA,IAAS,MAAA,CAAO,KAAA,CAAM,MAAA,EAAQ;AACvC,YAAA,GAAA,CAAI,QAAA,CAAS;AAAA,cACX,IAAA,EAAMA,MAAE,YAAA,CAAa,MAAA;AAAA,cACrB,SAAS,KAAA,CAAM,OAAA;AAAA,cACf,MAAM,KAAA,CAAM;AAAA,aACb,CAAA;AAAA,UACH;AACA,UAAA,OAAOA,KAAA,CAAE,KAAA;AAAA,QACX;AACA,QAAA,OAAO,MAAA,CAAO,IAAA;AAAA,MAChB,SAAS,CAAA,EAAG;AACV,QAAA,GAAA,CAAI,QAAA,CAAS;AAAA,UACX,IAAA,EAAMA,MAAE,YAAA,CAAa,MAAA;AAAA,UACrB,SAAS,CAAA,cAAA,EAAiB,CAAA,YAAa,KAAA,GAAQ,CAAA,CAAE,UAAU,aAAa,CAAA;AAAA,SACzE,CAAA;AACD,QAAA,OAAOA,KAAA,CAAE,KAAA;AAAA,MACX;AAAA,IACF,CAAC;AAAA,GACF,CAAA;AACH;AAMA,SAAS,eAAe,MAAA,EAAwC;AAC9D,EAAA,OAAQ,QAAgB,IAAA,EAAM,QAAA;AAChC;AAUA,SAAS,cAAc,MAAA,EAA6B;AAGlD,EAAA,IAAI,KAAA,GAAoB,MAAA;AACxB,EAAA,IAAI,QAAA,GAAW,eAAe,KAAK,CAAA;AAEnC,EAAA,OAAO,QAAA,KAAa,aAAA,IAAiB,QAAA,KAAa,aAAA,EAAe;AAE/D,IAAA,KAAA,GAAS,MAAc,IAAA,CAAK,SAAA;AAC5B,IAAA,QAAA,GAAW,eAAe,KAAK,CAAA;AAAA,EACjC;AAGA,EAAA,OAAO,QAAA,KAAa,UAAA,IAAc,QAAA,KAAa,WAAA,IAAe,QAAA,KAAa,WAAA;AAC7E;AA0BO,SAAS,yBAAgD,MAAA,EAA8C;AAC5G,EAAA,MAAM,WAAuC,EAAC;AAG9C,EAAA,MAAM,QAAQ,MAAA,CAAO,KAAA;AACrB,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,WAAW,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtD,IAAA,IAAI,aAAA,CAAc,WAAW,CAAA,EAAG;AAE9B,MAAA,QAAA,CAAS,GAAG,CAAA,GAAI,cAAA,CAAe,WAAW,CAAA;AAAA,IAC5C,CAAA,MAAO;AAEL,MAAA,QAAA,CAAS,GAAG,CAAA,GAAI,WAAA;AAAA,IAClB;AAAA,EACF;AAEA,EAAA,OAAOA,KAAA,CAAE,OAAO,QAAQ,CAAA;AAC1B;AA6DO,SAAS,YAOd,MAAA,EAKA;AACA,EAAA,MAAM,EAAE,SAAS,WAAA,EAAa,IAAA,EAAM,YAAY,YAAA,EAAc,GAAG,WAAU,GAAI,MAAA;AAI/E,EAAA,MAAM,OAAA,GACJ,MAAA,CAAO,MAAA,KAAW,KAAA,GACd,oBAAA,CAAqB;AAAA,IACnB,QAAQ,MAAA,CAAO,MAAA;AAAA,IACf,MAAM,MAAA,CAAO,IAAA;AAAA,IACb,OAAA;AAAA,IACA,WAAA;AAAA,IACA,IAAA;AAAA,IACA,iBAAiB,MAAA,CAAO,eAAA;AAAA,IACxB,kBAAkB,MAAA,CAAO,gBAAA;AAAA,IACzB,YAAY,MAAA,CAAO,UAAA;AAAA,IACnB,gBAAgB,MAAA,CAAO,cAAA;AAAA,IACvB;AAAA,GACD,CAAA,GACD,MAAA;AAEN,EAAA,OAAO;AAAA,IACL,GAAG,SAAA;AAAA,IACH,OAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AACF","file":"chunk-K34R4R2T.cjs","sourcesContent":["import { zodToJsonSchema } from '@mastra/core/utils/zod-to-json';\nimport type { ZodSchema } from 'zod';\nimport type { ServerRoute } from './routes';\n\ninterface RouteOpenAPIConfig {\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n path: string;\n summary?: string;\n description?: string;\n tags?: string[];\n pathParamSchema?: ZodSchema;\n queryParamSchema?: ZodSchema;\n bodySchema?: ZodSchema;\n responseSchema?: ZodSchema;\n deprecated?: boolean;\n}\n\ninterface OpenAPIRoute {\n summary?: string;\n description?: string;\n tags?: string[];\n deprecated?: boolean;\n requestParams?: {\n path?: ZodSchema;\n query?: ZodSchema;\n };\n requestBody?: {\n content: {\n 'application/json': {\n schema: ZodSchema;\n };\n };\n };\n responses: {\n [statusCode: string]: {\n description: string;\n content?: {\n 'application/json': {\n schema: ZodSchema;\n };\n };\n };\n };\n}\n\n/**\n * Generates OpenAPI specification for a single route\n * Extracts path parameters, query parameters, request body, and response schemas\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 // Add path and query parameters\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 // Add request body with raw Zod schema\n if (bodySchema) {\n route.requestBody = {\n content: {\n 'application/json': {\n schema: bodySchema,\n },\n },\n };\n }\n\n // Add response schema with raw Zod schema\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\n/**\n * Converts an OpenAPI route spec with Zod schemas to one with JSON Schema\n */\nfunction convertZodToJsonSchema(spec: OpenAPIRoute): any {\n const converted: any = {\n summary: spec.summary,\n description: spec.description,\n tags: spec.tags,\n responses: {},\n };\n\n const parameters: any[] = [];\n\n // Convert path parameters\n if (spec.requestParams?.path) {\n const pathSchema = zodToJsonSchema(spec.requestParams.path as any, 'openApi3', 'none') as any;\n const properties = pathSchema.properties || {};\n\n Object.entries(properties).forEach(([name, schema]) => {\n parameters.push({\n name,\n in: 'path',\n required: true,\n description: (schema as any).description || `The ${name} parameter`,\n schema,\n });\n });\n }\n\n // Convert query parameters\n if (spec.requestParams?.query) {\n const querySchema = zodToJsonSchema(spec.requestParams.query as any, 'openApi3', 'none') as any;\n const properties = querySchema.properties || {};\n const required = querySchema.required || [];\n\n Object.entries(properties).forEach(([name, schema]) => {\n parameters.push({\n name,\n in: 'query',\n required: required.includes(name),\n description: (schema as any).description || `Query parameter: ${name}`,\n schema,\n });\n });\n }\n\n if (parameters.length > 0) {\n converted.parameters = parameters;\n }\n\n // Convert request body\n if (spec.requestBody?.content?.['application/json']?.schema) {\n converted.requestBody = {\n required: true,\n content: {\n 'application/json': {\n schema: zodToJsonSchema(spec.requestBody.content['application/json'].schema as any, 'openApi3', 'none'),\n },\n },\n };\n }\n\n // Convert response schemas\n Object.entries(spec.responses).forEach(([statusCode, response]) => {\n converted.responses[statusCode] = {\n description: response.description,\n };\n\n if (response.content?.['application/json']?.schema) {\n converted.responses[statusCode].content = {\n 'application/json': {\n schema: zodToJsonSchema(response.content['application/json'].schema as any, 'openApi3', 'none'),\n },\n };\n }\n });\n\n return converted;\n}\n\n/**\n * Generates a complete OpenAPI 3.1.0 document from server routes\n * @param routes - Array of ServerRoute objects with OpenAPI specifications\n * @param info - API metadata (title, version, description)\n * @returns Complete OpenAPI 3.1.0 document\n */\nexport function generateOpenAPIDocument(\n routes: ServerRoute[],\n info: { title: string; version: string; description?: string },\n): any {\n const paths: Record<string, any> = {};\n\n // Build paths object from routes\n // Convert Express-style :param to OpenAPI-style {param}\n routes.forEach(route => {\n if (!route.openapi) return;\n\n const openapiPath = route.path.replace(/:(\\w+)/g, '{$1}');\n if (!paths[openapiPath]) {\n paths[openapiPath] = {};\n }\n\n // Convert Zod schemas to JSON Schema\n paths[openapiPath][route.method.toLowerCase()] = convertZodToJsonSchema(route.openapi);\n });\n\n return {\n openapi: '3.1.0',\n info: {\n title: info.title,\n version: info.version,\n description: info.description,\n },\n paths,\n };\n}\n","import { z } from 'zod';\nimport type { ZodObject, ZodRawShape, ZodTypeAny } from 'zod';\nimport { generateRouteOpenAPI } from '../openapi-utils';\nimport type { InferParams, ResponseType, ServerRoute, ServerRouteHandler } from './index';\n\n/**\n * Extracts parameters matching a Zod schema's shape from a params object.\n * Useful for separating schema-defined params from ServerContext in handlers.\n *\n * @example\n * ```typescript\n * const querySchema = z.object({ page: z.number(), name: z.string() });\n *\n * handler: async (params) => {\n * const query = pickParams(querySchema, params);\n * // query is typed as { page: number, name: string }\n * }\n * ```\n */\nexport function pickParams<T extends z.ZodRawShape, P extends Record<string, unknown>>(\n schema: z.ZodObject<T>,\n params: P,\n): z.infer<z.ZodObject<T>> {\n const keys = Object.keys(schema.shape);\n const result = {} as z.infer<z.ZodObject<T>>;\n for (const key of keys) {\n if (key in params) {\n (result as any)[key] = params[key];\n }\n }\n return result;\n}\n\n/**\n * Wraps a Zod schema to accept either the expected type OR a JSON string.\n * Used for complex query parameters (arrays, objects) that are serialized as JSON in URLs.\n *\n * - If input is already the expected type, passes through to schema validation\n * - If input is a string, attempts JSON.parse then validates\n * - Provides clear error messages for JSON parse failures\n *\n * @example\n * ```typescript\n * const tagsSchema = jsonQueryParam(z.array(z.string()));\n * // Accepts: [\"tag1\", \"tag2\"] OR '[\"tag1\", \"tag2\"]'\n *\n * const dateRangeSchema = jsonQueryParam(z.object({ gte: z.coerce.date() }));\n * // Accepts: { gte: \"2024-01-01\" } OR '{\"gte\": \"2024-01-01\"}'\n * ```\n */\nexport function jsonQueryParam<T extends ZodTypeAny>(schema: T): z.ZodType<z.infer<T>> {\n return z.union([\n schema, // Already the expected type (non-string input)\n z.string().transform((val, ctx) => {\n try {\n const parsed = JSON.parse(val);\n const result = schema.safeParse(parsed);\n if (!result.success) {\n for (const issue of result.error.issues) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: issue.message,\n path: issue.path,\n });\n }\n return z.NEVER;\n }\n return result.data;\n } catch (e) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Invalid JSON: ${e instanceof Error ? e.message : 'parse error'}`,\n });\n return z.NEVER;\n }\n }),\n ]) as z.ZodType<z.infer<T>>;\n}\n\n/**\n * Gets the type name from a Zod schema's internal definition.\n * Works across zod v3 and v4 by checking _def.typeName.\n */\nfunction getZodTypeName(schema: ZodTypeAny): string | undefined {\n return (schema as any)?._def?.typeName;\n}\n\n/**\n * Checks if a Zod schema represents a complex type that needs JSON parsing from query strings.\n * Complex types: arrays, objects, records (these can't be represented as simple strings)\n * Simple types: strings, numbers, booleans, enums (can use z.coerce for conversion)\n *\n * Uses _def.typeName string comparison instead of instanceof to support both zod v3 and v4,\n * since instanceof checks fail across different zod versions in bundled code.\n */\nfunction isComplexType(schema: ZodTypeAny): boolean {\n // Unwrap all optional/nullable layers to check the inner type\n // Note: .partial() can create nested optionals (e.g., ZodOptional<ZodOptional<ZodObject>>)\n let inner: ZodTypeAny = schema;\n let typeName = getZodTypeName(inner);\n\n while (typeName === 'ZodOptional' || typeName === 'ZodNullable') {\n // Access innerType directly from _def to avoid version-specific method differences\n inner = (inner as any)._def.innerType;\n typeName = getZodTypeName(inner);\n }\n\n // Complex types that need JSON parsing\n return typeName === 'ZodArray' || typeName === 'ZodRecord' || typeName === 'ZodObject';\n}\n\n/**\n * Wraps a Zod object schema for HTTP query parameter handling.\n * Automatically detects complex fields (arrays, objects, records) and wraps them\n * with jsonQueryParam() to accept JSON strings from query parameters.\n *\n * Simple fields (strings, numbers, booleans, enums) are left unchanged and should\n * use z.coerce for string-to-type conversion.\n *\n * @example\n * ```typescript\n * // Base schema (for internal/storage use)\n * const tracesFilterSchema = z.object({\n * tags: z.array(z.string()).optional(),\n * startedAt: dateRangeSchema.optional(),\n * perPage: z.coerce.number().optional(),\n * });\n *\n * // HTTP schema (accepts JSON strings for complex fields)\n * const httpTracesFilterSchema = wrapSchemaForQueryParams(tracesFilterSchema);\n *\n * // Now accepts:\n * // ?tags=[\"tag1\",\"tag2\"]&startedAt={\"gte\":\"2024-01-01\"}&perPage=10\n * ```\n */\nexport function wrapSchemaForQueryParams<T extends ZodRawShape>(schema: ZodObject<T>): ZodObject<ZodRawShape> {\n const newShape: Record<string, ZodTypeAny> = {};\n\n // schema.shape is Readonly in Zod v4, so we need to create a mutable copy\n const shape = schema.shape as unknown as Record<string, ZodTypeAny>;\n for (const [key, fieldSchema] of Object.entries(shape)) {\n if (isComplexType(fieldSchema)) {\n // Wrap complex types to accept JSON strings\n newShape[key] = jsonQueryParam(fieldSchema);\n } else {\n // Keep simple types as-is\n newShape[key] = fieldSchema;\n }\n }\n\n return z.object(newShape);\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> {\n method: ServerRoute['method'];\n path: string;\n responseType: TResponseType;\n streamFormat?: 'sse' | 'stream'; // Only used when responseType is 'stream'\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; // Explicit auth requirement for this route\n}\n\n/**\n * Creates a server route with auto-generated OpenAPI specification and type-safe handler inference.\n *\n * The handler parameters are automatically inferred from the provided schemas:\n * - pathParamSchema: Infers path parameter types (e.g., :agentId)\n * - queryParamSchema: Infers query parameter types\n * - bodySchema: Infers request body types\n * - Runtime context (mastra, requestContext, tools, taskStore) is always available\n *\n * @param config - Route configuration including schemas, handler, and metadata\n * @returns Complete ServerRoute with OpenAPI spec\n *\n * @example\n * ```typescript\n * export const getAgentRoute = createRoute({\n * method: 'GET',\n * path: '/agents/:agentId',\n * responseType: 'json',\n * pathParamSchema: z.object({ agentId: z.string() }),\n * responseSchema: serializedAgentSchema,\n * handler: async ({ agentId, mastra, requestContext }) => {\n * // agentId is typed as string\n * // mastra, requestContext, tools, taskStore are always available\n * return mastra.getAgentById(agentId);\n * },\n * summary: 'Get agent by ID',\n * description: 'Returns details for a specific agent',\n * tags: ['Agents'],\n * });\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>(\n config: RouteConfig<TPathSchema, TQuerySchema, TBodySchema, TResponseSchema, TResponseType>,\n): ServerRoute<\n InferParams<TPathSchema, TQuerySchema, TBodySchema>,\n TResponseSchema extends z.ZodTypeAny ? z.infer<TResponseSchema> : unknown,\n TResponseType\n> {\n const { summary, description, tags, deprecated, requiresAuth, ...baseRoute } = config;\n\n // Generate OpenAPI specification from the route config\n // Skip OpenAPI generation for 'ALL' method as it doesn't map to OpenAPI\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: openapi as any,\n deprecated,\n requiresAuth,\n };\n}\n"]}
@@ -0,0 +1,77 @@
1
+ import { __require } from './chunk-3W67K7YE.js';
2
+
3
+ // ../memory/dist/chunk-YF4R74L2.js
4
+ var __create = Object.create;
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __require2 = /* @__PURE__ */ ((x) => typeof __require !== "undefined" ? __require : typeof Proxy !== "undefined" ? new Proxy(x, {
11
+ get: (a, b) => (typeof __require !== "undefined" ? __require : a)[b]
12
+ }) : x)(function(x) {
13
+ if (typeof __require !== "undefined") return __require.apply(this, arguments);
14
+ throw Error('Dynamic require of "' + x + '" is not supported');
15
+ });
16
+ var __commonJS = (cb, mod) => function __require22() {
17
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
18
+ };
19
+ var __copyProps = (to, from, except, desc) => {
20
+ if (from && typeof from === "object" || typeof from === "function") {
21
+ for (let key of __getOwnPropNames(from))
22
+ if (!__hasOwnProp.call(to, key) && key !== except)
23
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
24
+ }
25
+ return to;
26
+ };
27
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
28
+ // If the importer is in node compatibility mode or this is not an ESM
29
+ // file that has been converted to a CommonJS file using a Babel-
30
+ // compatible transform (i.e. "__esModule" has not been set), then set
31
+ // "default" to the CommonJS "module.exports" for node compatibility.
32
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
33
+ mod
34
+ ));
35
+ var require_token_error = __commonJS({
36
+ "../../../node_modules/.pnpm/@vercel+oidc@3.0.5/node_modules/@vercel/oidc/dist/token-error.js"(exports$1, module) {
37
+ var __defProp2 = Object.defineProperty;
38
+ var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
39
+ var __getOwnPropNames2 = Object.getOwnPropertyNames;
40
+ var __hasOwnProp2 = Object.prototype.hasOwnProperty;
41
+ var __export = (target, all) => {
42
+ for (var name in all)
43
+ __defProp2(target, name, { get: all[name], enumerable: true });
44
+ };
45
+ var __copyProps2 = (to, from, except, desc) => {
46
+ if (from && typeof from === "object" || typeof from === "function") {
47
+ for (let key of __getOwnPropNames2(from))
48
+ if (!__hasOwnProp2.call(to, key) && key !== except)
49
+ __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
50
+ }
51
+ return to;
52
+ };
53
+ var __toCommonJS = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
54
+ var token_error_exports = {};
55
+ __export(token_error_exports, {
56
+ VercelOidcTokenError: () => VercelOidcTokenError
57
+ });
58
+ module.exports = __toCommonJS(token_error_exports);
59
+ var VercelOidcTokenError = class extends Error {
60
+ constructor(message, cause) {
61
+ super(message);
62
+ this.name = "VercelOidcTokenError";
63
+ this.cause = cause;
64
+ }
65
+ toString() {
66
+ if (this.cause) {
67
+ return `${this.name}: ${this.message}: ${this.cause}`;
68
+ }
69
+ return `${this.name}: ${this.message}`;
70
+ }
71
+ };
72
+ }
73
+ });
74
+
75
+ export { __commonJS, __require2, __toESM, require_token_error };
76
+ //# sourceMappingURL=chunk-K4HSW5ZF.js.map
77
+ //# sourceMappingURL=chunk-K4HSW5ZF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../_vendored/ai_v6/dist/chunk-7D4SUZUM.js","../../../node_modules/.pnpm/@vercel+oidc@3.0.5/node_modules/@vercel/oidc/dist/token-error.js"],"names":["__require","__require2","exports","__defProp","__getOwnPropDesc","__getOwnPropNames","__hasOwnProp","__copyProps"],"mappings":"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","file":"chunk-K4HSW5ZF.js","sourcesContent":["var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __require = /* @__PURE__ */ ((x) => typeof require !== \"undefined\" ? require : typeof Proxy !== \"undefined\" ? new Proxy(x, {\n get: (a, b) => (typeof require !== \"undefined\" ? require : a)[b]\n}) : x)(function(x) {\n if (typeof require !== \"undefined\") return require.apply(this, arguments);\n throw Error('Dynamic require of \"' + x + '\" is not supported');\n});\nvar __commonJS = (cb, mod) => function __require2() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\n\nexport { __commonJS, __require, __toESM };\n//# sourceMappingURL=chunk-7D4SUZUM.js.map\n//# sourceMappingURL=chunk-7D4SUZUM.js.map","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar token_error_exports = {};\n__export(token_error_exports, {\n VercelOidcTokenError: () => VercelOidcTokenError\n});\nmodule.exports = __toCommonJS(token_error_exports);\nclass VercelOidcTokenError extends Error {\n constructor(message, cause) {\n super(message);\n this.name = \"VercelOidcTokenError\";\n this.cause = cause;\n }\n toString() {\n if (this.cause) {\n return `${this.name}: ${this.message}: ${this.cause}`;\n }\n return `${this.name}: ${this.message}`;\n }\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n VercelOidcTokenError\n});\n"]}