@mastra/server 0.0.0-cloud-storage-adapter-20251106204059 → 0.0.0-cloud-604-map-nested-flow-details-to-side-panel-20251212192149

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 (303) hide show
  1. package/CHANGELOG.md +490 -3
  2. package/README.md +2 -2
  3. package/dist/chunk-3SFLFUKY.js +116 -0
  4. package/dist/chunk-3SFLFUKY.js.map +1 -0
  5. package/dist/{chunk-W2KMU354.cjs → chunk-3XI22UQR.cjs} +19 -4
  6. package/dist/chunk-3XI22UQR.cjs.map +1 -0
  7. package/dist/chunk-4W2SM6CG.js +294 -0
  8. package/dist/chunk-4W2SM6CG.js.map +1 -0
  9. package/dist/chunk-5W4RPVTK.cjs +49 -0
  10. package/dist/chunk-5W4RPVTK.cjs.map +1 -0
  11. package/dist/chunk-6V57U52D.js +196 -0
  12. package/dist/chunk-6V57U52D.js.map +1 -0
  13. package/dist/chunk-7KOS32XA.cjs +928 -0
  14. package/dist/chunk-7KOS32XA.cjs.map +1 -0
  15. package/dist/{chunk-KJIDZQRA.cjs → chunk-7O3KPUJ4.cjs} +219 -24
  16. package/dist/chunk-7O3KPUJ4.cjs.map +1 -0
  17. package/dist/chunk-BMYZ4DO6.cjs +269 -0
  18. package/dist/chunk-BMYZ4DO6.cjs.map +1 -0
  19. package/dist/chunk-BNGT3NIC.cjs +211 -0
  20. package/dist/chunk-BNGT3NIC.cjs.map +1 -0
  21. package/dist/chunk-C3UIIRAT.cjs +920 -0
  22. package/dist/chunk-C3UIIRAT.cjs.map +1 -0
  23. package/dist/chunk-DRUNNM4C.js +328 -0
  24. package/dist/chunk-DRUNNM4C.js.map +1 -0
  25. package/dist/{chunk-TOCYBDP2.js → chunk-ER3QM7DD.js} +4 -4
  26. package/dist/{chunk-TOCYBDP2.js.map → chunk-ER3QM7DD.js.map} +1 -1
  27. package/dist/chunk-EVAMVADJ.js +23226 -0
  28. package/dist/chunk-EVAMVADJ.js.map +1 -0
  29. package/dist/chunk-FPCGLPLJ.cjs +297 -0
  30. package/dist/chunk-FPCGLPLJ.cjs.map +1 -0
  31. package/dist/chunk-FYY54HZC.js +310 -0
  32. package/dist/chunk-FYY54HZC.js.map +1 -0
  33. package/dist/chunk-GFF2I6UD.js +354 -0
  34. package/dist/chunk-GFF2I6UD.js.map +1 -0
  35. package/dist/chunk-H2RMXG2Q.cjs +167 -0
  36. package/dist/chunk-H2RMXG2Q.cjs.map +1 -0
  37. package/dist/chunk-HAJOEDNB.js +274 -0
  38. package/dist/chunk-HAJOEDNB.js.map +1 -0
  39. package/dist/chunk-HT4LP3BO.js +75 -0
  40. package/dist/chunk-HT4LP3BO.js.map +1 -0
  41. package/dist/chunk-I6LR6CPC.cjs +125 -0
  42. package/dist/chunk-I6LR6CPC.cjs.map +1 -0
  43. package/dist/chunk-IEYXQTUW.cjs +284 -0
  44. package/dist/chunk-IEYXQTUW.cjs.map +1 -0
  45. package/dist/{chunk-FPBYKMIS.js → chunk-KEXR53KI.js} +213 -24
  46. package/dist/chunk-KEXR53KI.js.map +1 -0
  47. package/dist/chunk-KPSSRYGH.js +234 -0
  48. package/dist/chunk-KPSSRYGH.js.map +1 -0
  49. package/dist/chunk-LQSZ4FJJ.cjs +205 -0
  50. package/dist/chunk-LQSZ4FJJ.cjs.map +1 -0
  51. package/dist/chunk-MCYD5LW7.cjs +90 -0
  52. package/dist/chunk-MCYD5LW7.cjs.map +1 -0
  53. package/dist/chunk-MQLS6Z7A.js +891 -0
  54. package/dist/chunk-MQLS6Z7A.js.map +1 -0
  55. package/dist/chunk-ONH4CRFW.js +1063 -0
  56. package/dist/chunk-ONH4CRFW.js.map +1 -0
  57. package/dist/chunk-PUFCKXFW.cjs +312 -0
  58. package/dist/chunk-PUFCKXFW.cjs.map +1 -0
  59. package/dist/chunk-QWZFPT6V.cjs +1107 -0
  60. package/dist/chunk-QWZFPT6V.cjs.map +1 -0
  61. package/dist/chunk-S3TIWWQL.cjs +322 -0
  62. package/dist/chunk-S3TIWWQL.cjs.map +1 -0
  63. package/dist/chunk-SRQY5IWD.js +204 -0
  64. package/dist/chunk-SRQY5IWD.js.map +1 -0
  65. package/dist/chunk-SXVANU23.js +164 -0
  66. package/dist/chunk-SXVANU23.js.map +1 -0
  67. package/dist/chunk-TYZ6ZISQ.cjs +368 -0
  68. package/dist/chunk-TYZ6ZISQ.cjs.map +1 -0
  69. package/dist/chunk-UWRAKVAJ.js +903 -0
  70. package/dist/chunk-UWRAKVAJ.js.map +1 -0
  71. package/dist/{chunk-QU6N55W6.cjs → chunk-V272B7RM.cjs} +11 -12
  72. package/dist/chunk-V272B7RM.cjs.map +1 -0
  73. package/dist/chunk-V3BW36SW.cjs +23268 -0
  74. package/dist/chunk-V3BW36SW.cjs.map +1 -0
  75. package/dist/{chunk-D7T74TVR.js → chunk-WBLT2HL3.js} +19 -4
  76. package/dist/chunk-WBLT2HL3.js.map +1 -0
  77. package/dist/chunk-X43DWDXB.cjs +346 -0
  78. package/dist/chunk-X43DWDXB.cjs.map +1 -0
  79. package/dist/{chunk-X6C7BUWN.cjs → chunk-XQPJ63ZD.cjs} +4 -4
  80. package/dist/{chunk-X6C7BUWN.cjs.map → chunk-XQPJ63ZD.cjs.map} +1 -1
  81. package/dist/chunk-XW2HXQDO.js +302 -0
  82. package/dist/chunk-XW2HXQDO.js.map +1 -0
  83. package/dist/chunk-XWGAT2DA.js +44 -0
  84. package/dist/chunk-XWGAT2DA.js.map +1 -0
  85. package/dist/{chunk-SHWNNZBL.js → chunk-YP34EWWK.js} +9 -10
  86. package/dist/chunk-YP34EWWK.js.map +1 -0
  87. package/dist/server/auth/defaults.d.ts +3 -0
  88. package/dist/server/auth/defaults.d.ts.map +1 -0
  89. package/dist/server/auth/helpers.d.ts +14 -0
  90. package/dist/server/auth/helpers.d.ts.map +1 -0
  91. package/dist/server/auth/index.cjs +137 -0
  92. package/dist/server/auth/index.cjs.map +1 -0
  93. package/dist/server/auth/index.d.ts +3 -0
  94. package/dist/server/auth/index.d.ts.map +1 -0
  95. package/dist/server/auth/index.js +127 -0
  96. package/dist/server/auth/index.js.map +1 -0
  97. package/dist/server/handlers/a2a.cjs +15 -7
  98. package/dist/server/handlers/a2a.d.ts +482 -0
  99. package/dist/server/handlers/a2a.d.ts.map +1 -1
  100. package/dist/server/handlers/a2a.js +1 -1
  101. package/dist/server/handlers/agent-builder.cjs +37 -37
  102. package/dist/server/handlers/agent-builder.d.ts +601 -77
  103. package/dist/server/handlers/agent-builder.d.ts.map +1 -1
  104. package/dist/server/handlers/agent-builder.js +1 -1
  105. package/dist/server/handlers/agents.cjs +57 -37
  106. package/dist/server/handlers/agents.d.ts +3296 -131
  107. package/dist/server/handlers/agents.d.ts.map +1 -1
  108. package/dist/server/handlers/agents.js +1 -1
  109. package/dist/server/handlers/logs.cjs +7 -7
  110. package/dist/server/handlers/logs.d.ts +135 -27
  111. package/dist/server/handlers/logs.d.ts.map +1 -1
  112. package/dist/server/handlers/logs.js +1 -1
  113. package/dist/server/handlers/mcp.cjs +40 -0
  114. package/dist/server/handlers/mcp.cjs.map +1 -0
  115. package/dist/server/handlers/mcp.d.ts +110 -0
  116. package/dist/server/handlers/mcp.d.ts.map +1 -0
  117. package/dist/server/handlers/mcp.js +3 -0
  118. package/dist/server/handlers/mcp.js.map +1 -0
  119. package/dist/server/handlers/memory.cjs +67 -27
  120. package/dist/server/handlers/memory.d.ts +933 -96
  121. package/dist/server/handlers/memory.d.ts.map +1 -1
  122. package/dist/server/handlers/memory.js +1 -1
  123. package/dist/server/handlers/observability.cjs +21 -5
  124. package/dist/server/handlers/observability.d.ts +119 -12
  125. package/dist/server/handlers/observability.d.ts.map +1 -1
  126. package/dist/server/handlers/observability.js +1 -1
  127. package/dist/server/handlers/scores.cjs +13 -13
  128. package/dist/server/handlers/scores.d.ts +110 -141
  129. package/dist/server/handlers/scores.d.ts.map +1 -1
  130. package/dist/server/handlers/scores.js +1 -1
  131. package/dist/server/handlers/stored-agents.cjs +28 -0
  132. package/dist/server/handlers/stored-agents.cjs.map +1 -0
  133. package/dist/server/handlers/stored-agents.d.ts +289 -0
  134. package/dist/server/handlers/stored-agents.d.ts.map +1 -0
  135. package/dist/server/handlers/stored-agents.js +3 -0
  136. package/dist/server/handlers/stored-agents.js.map +1 -0
  137. package/dist/server/handlers/test-utils.cjs +15 -0
  138. package/dist/server/handlers/test-utils.cjs.map +1 -0
  139. package/dist/server/handlers/test-utils.d.ts +6 -0
  140. package/dist/server/handlers/test-utils.d.ts.map +1 -0
  141. package/dist/server/handlers/test-utils.js +13 -0
  142. package/dist/server/handlers/test-utils.js.map +1 -0
  143. package/dist/server/handlers/tools.cjs +11 -11
  144. package/dist/server/handlers/tools.d.ts +69 -23
  145. package/dist/server/handlers/tools.d.ts.map +1 -1
  146. package/dist/server/handlers/tools.js +1 -1
  147. package/dist/server/handlers/utils.cjs +11 -3
  148. package/dist/server/handlers/utils.d.ts +5 -0
  149. package/dist/server/handlers/utils.d.ts.map +1 -1
  150. package/dist/server/handlers/utils.js +1 -1
  151. package/dist/server/handlers/vector.cjs +31 -7
  152. package/dist/server/handlers/vector.d.ts +93 -9
  153. package/dist/server/handlers/vector.d.ts.map +1 -1
  154. package/dist/server/handlers/vector.js +1 -1
  155. package/dist/server/handlers/voice.cjs +21 -9
  156. package/dist/server/handlers/voice.d.ts +81 -40
  157. package/dist/server/handlers/voice.d.ts.map +1 -1
  158. package/dist/server/handlers/voice.js +1 -1
  159. package/dist/server/handlers/workflows.cjs +69 -37
  160. package/dist/server/handlers/workflows.d.ts +929 -79
  161. package/dist/server/handlers/workflows.d.ts.map +1 -1
  162. package/dist/server/handlers/workflows.js +1 -1
  163. package/dist/server/handlers.cjs +36 -31
  164. package/dist/server/handlers.d.ts +1 -0
  165. package/dist/server/handlers.d.ts.map +1 -1
  166. package/dist/server/handlers.js +12 -11
  167. package/dist/server/schemas/a2a.d.ts +786 -0
  168. package/dist/server/schemas/a2a.d.ts.map +1 -0
  169. package/dist/server/schemas/agent-builder.d.ts +204 -0
  170. package/dist/server/schemas/agent-builder.d.ts.map +1 -0
  171. package/dist/server/schemas/agents.d.ts +1401 -0
  172. package/dist/server/schemas/agents.d.ts.map +1 -0
  173. package/dist/server/schemas/common.d.ts +179 -0
  174. package/dist/server/schemas/common.d.ts.map +1 -0
  175. package/dist/server/schemas/logs.d.ts +124 -0
  176. package/dist/server/schemas/logs.d.ts.map +1 -0
  177. package/dist/server/schemas/mcp.d.ts +299 -0
  178. package/dist/server/schemas/mcp.d.ts.map +1 -0
  179. package/dist/server/schemas/memory.d.ts +998 -0
  180. package/dist/server/schemas/memory.d.ts.map +1 -0
  181. package/dist/server/schemas/observability.d.ts +402 -0
  182. package/dist/server/schemas/observability.d.ts.map +1 -0
  183. package/dist/server/schemas/scores.d.ts +259 -0
  184. package/dist/server/schemas/scores.d.ts.map +1 -0
  185. package/dist/server/schemas/stored-agents.d.ts +792 -0
  186. package/dist/server/schemas/stored-agents.d.ts.map +1 -0
  187. package/dist/server/schemas/vectors.d.ts +107 -0
  188. package/dist/server/schemas/vectors.d.ts.map +1 -0
  189. package/dist/server/schemas/workflows.d.ts +608 -0
  190. package/dist/server/schemas/workflows.d.ts.map +1 -0
  191. package/dist/server/server-adapter/index.cjs +485 -0
  192. package/dist/server/server-adapter/index.cjs.map +1 -0
  193. package/dist/server/server-adapter/index.d.ts +91 -0
  194. package/dist/server/server-adapter/index.d.ts.map +1 -0
  195. package/dist/server/server-adapter/index.js +470 -0
  196. package/dist/server/server-adapter/index.js.map +1 -0
  197. package/dist/server/server-adapter/openapi-utils.d.ts +59 -0
  198. package/dist/server/server-adapter/openapi-utils.d.ts.map +1 -0
  199. package/dist/server/server-adapter/redact.d.ts +26 -0
  200. package/dist/server/server-adapter/redact.d.ts.map +1 -0
  201. package/dist/server/server-adapter/routes/a2a.d.ts +3 -0
  202. package/dist/server/server-adapter/routes/a2a.d.ts.map +1 -0
  203. package/dist/server/server-adapter/routes/agent-builder.d.ts +3 -0
  204. package/dist/server/server-adapter/routes/agent-builder.d.ts.map +1 -0
  205. package/dist/server/server-adapter/routes/agents.d.ts +3 -0
  206. package/dist/server/server-adapter/routes/agents.d.ts.map +1 -0
  207. package/dist/server/server-adapter/routes/index.d.ts +50 -0
  208. package/dist/server/server-adapter/routes/index.d.ts.map +1 -0
  209. package/dist/server/server-adapter/routes/legacy.d.ts +7 -0
  210. package/dist/server/server-adapter/routes/legacy.d.ts.map +1 -0
  211. package/dist/server/server-adapter/routes/logs.d.ts +3 -0
  212. package/dist/server/server-adapter/routes/logs.d.ts.map +1 -0
  213. package/dist/server/server-adapter/routes/mcp.d.ts +9 -0
  214. package/dist/server/server-adapter/routes/mcp.d.ts.map +1 -0
  215. package/dist/server/server-adapter/routes/memory.d.ts +3 -0
  216. package/dist/server/server-adapter/routes/memory.d.ts.map +1 -0
  217. package/dist/server/server-adapter/routes/observability.d.ts +3 -0
  218. package/dist/server/server-adapter/routes/observability.d.ts.map +1 -0
  219. package/dist/server/server-adapter/routes/route-builder.d.ts +52 -0
  220. package/dist/server/server-adapter/routes/route-builder.d.ts.map +1 -0
  221. package/dist/server/server-adapter/routes/scorers.d.ts +3 -0
  222. package/dist/server/server-adapter/routes/scorers.d.ts.map +1 -0
  223. package/dist/server/server-adapter/routes/stored-agents.d.ts +8 -0
  224. package/dist/server/server-adapter/routes/stored-agents.d.ts.map +1 -0
  225. package/dist/server/server-adapter/routes/stream-types.d.ts +10 -0
  226. package/dist/server/server-adapter/routes/stream-types.d.ts.map +1 -0
  227. package/dist/server/server-adapter/routes/tools.d.ts +3 -0
  228. package/dist/server/server-adapter/routes/tools.d.ts.map +1 -0
  229. package/dist/server/server-adapter/routes/vectors.d.ts +3 -0
  230. package/dist/server/server-adapter/routes/vectors.d.ts.map +1 -0
  231. package/dist/server/server-adapter/routes/workflows.d.ts +3 -0
  232. package/dist/server/server-adapter/routes/workflows.d.ts.map +1 -0
  233. package/dist/server/utils.d.ts +1 -1
  234. package/dist/server/utils.d.ts.map +1 -1
  235. package/dist/token-GVZ7HRD7.js +62 -0
  236. package/dist/{token-C3IMNCC4.js.map → token-GVZ7HRD7.js.map} +1 -1
  237. package/dist/{token-C3IMNCC4.js → token-JGA3ZWAN.js} +5 -6
  238. package/dist/token-JGA3ZWAN.js.map +1 -0
  239. package/dist/token-VFONFWVS.cjs +64 -0
  240. package/dist/{token-375W3LEI.cjs.map → token-VFONFWVS.cjs.map} +1 -1
  241. package/dist/{token-375W3LEI.cjs → token-ZOD6YIQ3.cjs} +7 -8
  242. package/dist/token-ZOD6YIQ3.cjs.map +1 -0
  243. package/dist/token-util-7R2ZFIXO.js +7 -0
  244. package/dist/{token-util-E5QO2RCL.js.map → token-util-7R2ZFIXO.js.map} +1 -1
  245. package/dist/token-util-BLJZJDBZ.cjs +9 -0
  246. package/dist/{token-util-CV3RRG6K.cjs.map → token-util-BLJZJDBZ.cjs.map} +1 -1
  247. package/dist/token-util-VGZUWSNR.cjs +9 -0
  248. package/dist/token-util-VGZUWSNR.cjs.map +1 -0
  249. package/dist/token-util-VKTPZLSE.js +7 -0
  250. package/dist/token-util-VKTPZLSE.js.map +1 -0
  251. package/package.json +33 -8
  252. package/dist/chunk-2IS5WICF.js +0 -23036
  253. package/dist/chunk-2IS5WICF.js.map +0 -1
  254. package/dist/chunk-2YZH5PH6.cjs +0 -200
  255. package/dist/chunk-2YZH5PH6.cjs.map +0 -1
  256. package/dist/chunk-3AMNUUZF.js +0 -124
  257. package/dist/chunk-3AMNUUZF.js.map +0 -1
  258. package/dist/chunk-3F52QCI4.js +0 -192
  259. package/dist/chunk-3F52QCI4.js.map +0 -1
  260. package/dist/chunk-4JF5WXPL.js +0 -502
  261. package/dist/chunk-4JF5WXPL.js.map +0 -1
  262. package/dist/chunk-73PAWDM5.js +0 -83
  263. package/dist/chunk-73PAWDM5.js.map +0 -1
  264. package/dist/chunk-A24TSVEZ.cjs +0 -130
  265. package/dist/chunk-A24TSVEZ.cjs.map +0 -1
  266. package/dist/chunk-A2NPD5N6.cjs +0 -517
  267. package/dist/chunk-A2NPD5N6.cjs.map +0 -1
  268. package/dist/chunk-B3Z6J745.js +0 -122
  269. package/dist/chunk-B3Z6J745.js.map +0 -1
  270. package/dist/chunk-BTWIR2B7.cjs +0 -28
  271. package/dist/chunk-BTWIR2B7.cjs.map +0 -1
  272. package/dist/chunk-D7T74TVR.js.map +0 -1
  273. package/dist/chunk-EHACNWDL.cjs +0 -681
  274. package/dist/chunk-EHACNWDL.cjs.map +0 -1
  275. package/dist/chunk-FPBYKMIS.js.map +0 -1
  276. package/dist/chunk-GLAZTMX3.cjs +0 -128
  277. package/dist/chunk-GLAZTMX3.cjs.map +0 -1
  278. package/dist/chunk-ID6JYDNL.cjs +0 -23075
  279. package/dist/chunk-ID6JYDNL.cjs.map +0 -1
  280. package/dist/chunk-KF3RI45U.cjs +0 -172
  281. package/dist/chunk-KF3RI45U.cjs.map +0 -1
  282. package/dist/chunk-KJIDZQRA.cjs.map +0 -1
  283. package/dist/chunk-KWH5QBXP.js +0 -123
  284. package/dist/chunk-KWH5QBXP.js.map +0 -1
  285. package/dist/chunk-ND5OKOMT.js +0 -165
  286. package/dist/chunk-ND5OKOMT.js.map +0 -1
  287. package/dist/chunk-PPMIB3FQ.cjs +0 -88
  288. package/dist/chunk-PPMIB3FQ.cjs.map +0 -1
  289. package/dist/chunk-QU6N55W6.cjs.map +0 -1
  290. package/dist/chunk-S54HNARD.cjs +0 -131
  291. package/dist/chunk-S54HNARD.cjs.map +0 -1
  292. package/dist/chunk-SHWNNZBL.js.map +0 -1
  293. package/dist/chunk-SZIFSF4T.js +0 -25
  294. package/dist/chunk-SZIFSF4T.js.map +0 -1
  295. package/dist/chunk-W2KMU354.cjs.map +0 -1
  296. package/dist/chunk-X3MICMI2.cjs +0 -620
  297. package/dist/chunk-X3MICMI2.cjs.map +0 -1
  298. package/dist/chunk-Z2O5YVHY.js +0 -661
  299. package/dist/chunk-Z2O5YVHY.js.map +0 -1
  300. package/dist/chunk-ZJ6KEY6H.js +0 -600
  301. package/dist/chunk-ZJ6KEY6H.js.map +0 -1
  302. package/dist/token-util-CV3RRG6K.cjs +0 -9
  303. package/dist/token-util-E5QO2RCL.js +0 -7
@@ -0,0 +1,204 @@
1
+ import { validateBody } from './chunk-XWGAT2DA.js';
2
+ import { listToolsResponseSchema, serializedToolSchema, toolIdPathParams, executeToolResponseSchema, executeToolContextBodySchema, agentToolPathParams, executeToolBodySchema } from './chunk-KPSSRYGH.js';
3
+ import { optionalRunIdSchema } from './chunk-HT4LP3BO.js';
4
+ import { stringify } from './chunk-LF2ZLOFP.js';
5
+ import { createRoute } from './chunk-SXVANU23.js';
6
+ import { handleError } from './chunk-UXGQZUYZ.js';
7
+ import { HTTPException } from './chunk-6QWQZI4Q.js';
8
+ import { __export } from './chunk-PR4QN5HX.js';
9
+ import { isVercelTool } from '@mastra/core/tools';
10
+ import { zodToJsonSchema } from '@mastra/core/utils/zod-to-json';
11
+
12
+ // src/server/handlers/tools.ts
13
+ var tools_exports = {};
14
+ __export(tools_exports, {
15
+ EXECUTE_AGENT_TOOL_ROUTE: () => EXECUTE_AGENT_TOOL_ROUTE,
16
+ EXECUTE_TOOL_ROUTE: () => EXECUTE_TOOL_ROUTE,
17
+ GET_AGENT_TOOL_ROUTE: () => GET_AGENT_TOOL_ROUTE,
18
+ GET_TOOL_BY_ID_ROUTE: () => GET_TOOL_BY_ID_ROUTE,
19
+ LIST_TOOLS_ROUTE: () => LIST_TOOLS_ROUTE
20
+ });
21
+ var LIST_TOOLS_ROUTE = createRoute({
22
+ method: "GET",
23
+ path: "/api/tools",
24
+ responseType: "json",
25
+ responseSchema: listToolsResponseSchema,
26
+ summary: "List all tools",
27
+ description: "Returns a list of all available tools in the system",
28
+ tags: ["Tools"],
29
+ handler: async ({ mastra, tools }) => {
30
+ try {
31
+ const allTools = tools || mastra.listTools() || {};
32
+ const serializedTools = Object.entries(allTools).reduce(
33
+ (acc, [id, _tool]) => {
34
+ const tool = _tool;
35
+ acc[id] = {
36
+ ...tool,
37
+ inputSchema: tool.inputSchema ? stringify(zodToJsonSchema(tool.inputSchema)) : void 0,
38
+ outputSchema: tool.outputSchema ? stringify(zodToJsonSchema(tool.outputSchema)) : void 0
39
+ };
40
+ return acc;
41
+ },
42
+ {}
43
+ );
44
+ return serializedTools;
45
+ } catch (error) {
46
+ return handleError(error, "Error getting tools");
47
+ }
48
+ }
49
+ });
50
+ var GET_TOOL_BY_ID_ROUTE = createRoute({
51
+ method: "GET",
52
+ path: "/api/tools/:toolId",
53
+ responseType: "json",
54
+ pathParamSchema: toolIdPathParams,
55
+ responseSchema: serializedToolSchema,
56
+ summary: "Get tool by ID",
57
+ description: "Returns details for a specific tool including its schema and configuration",
58
+ tags: ["Tools"],
59
+ handler: async ({ mastra, tools, toolId }) => {
60
+ try {
61
+ let tool;
62
+ if (tools && Object.keys(tools).length > 0) {
63
+ tool = Object.values(tools).find((t) => t.id === toolId);
64
+ } else {
65
+ tool = mastra.getToolById(toolId);
66
+ }
67
+ if (!tool) {
68
+ throw new HTTPException(404, { message: "Tool not found" });
69
+ }
70
+ const serializedTool = {
71
+ ...tool,
72
+ inputSchema: tool.inputSchema ? stringify(zodToJsonSchema(tool.inputSchema)) : void 0,
73
+ outputSchema: tool.outputSchema ? stringify(zodToJsonSchema(tool.outputSchema)) : void 0
74
+ };
75
+ return serializedTool;
76
+ } catch (error) {
77
+ return handleError(error, "Error getting tool");
78
+ }
79
+ }
80
+ });
81
+ var EXECUTE_TOOL_ROUTE = createRoute({
82
+ method: "POST",
83
+ path: "/api/tools/:toolId/execute",
84
+ responseType: "json",
85
+ pathParamSchema: toolIdPathParams,
86
+ queryParamSchema: optionalRunIdSchema,
87
+ bodySchema: executeToolContextBodySchema,
88
+ responseSchema: executeToolResponseSchema,
89
+ summary: "Execute tool",
90
+ description: "Executes a specific tool with the provided input data",
91
+ tags: ["Tools"],
92
+ handler: async ({ mastra, runId, toolId, tools, requestContext, ...bodyParams }) => {
93
+ try {
94
+ if (!toolId) {
95
+ throw new HTTPException(400, { message: "Tool ID is required" });
96
+ }
97
+ let tool;
98
+ if (tools && Object.keys(tools).length > 0) {
99
+ tool = Object.values(tools).find((t) => t.id === toolId);
100
+ } else {
101
+ tool = mastra.getToolById(toolId);
102
+ }
103
+ if (!tool) {
104
+ throw new HTTPException(404, { message: "Tool not found" });
105
+ }
106
+ if (!tool?.execute) {
107
+ throw new HTTPException(400, { message: "Tool is not executable" });
108
+ }
109
+ const { data } = bodyParams;
110
+ validateBody({ data });
111
+ if (isVercelTool(tool)) {
112
+ const result2 = await tool.execute(data);
113
+ return result2;
114
+ }
115
+ const result = await tool.execute(data, {
116
+ mastra,
117
+ requestContext,
118
+ // TODO: Pass proper tracing context when server API supports tracing
119
+ tracingContext: { currentSpan: void 0 },
120
+ ...runId ? {
121
+ workflow: {
122
+ runId,
123
+ suspend: async () => {
124
+ }
125
+ }
126
+ } : {}
127
+ });
128
+ return result;
129
+ } catch (error) {
130
+ return handleError(error, "Error executing tool");
131
+ }
132
+ }
133
+ });
134
+ var GET_AGENT_TOOL_ROUTE = createRoute({
135
+ method: "GET",
136
+ path: "/api/agents/:agentId/tools/:toolId",
137
+ responseType: "json",
138
+ pathParamSchema: agentToolPathParams,
139
+ responseSchema: serializedToolSchema,
140
+ summary: "Get agent tool",
141
+ description: "Returns details for a specific tool assigned to the agent",
142
+ tags: ["Agents", "Tools"],
143
+ handler: async ({ mastra, agentId, toolId, requestContext }) => {
144
+ try {
145
+ const agent = agentId ? mastra.getAgentById(agentId) : null;
146
+ if (!agent) {
147
+ throw new HTTPException(404, { message: "Agent not found" });
148
+ }
149
+ const agentTools = await agent.listTools({ requestContext });
150
+ const tool = Object.values(agentTools || {}).find((tool2) => tool2.id === toolId);
151
+ if (!tool) {
152
+ throw new HTTPException(404, { message: "Tool not found" });
153
+ }
154
+ const serializedTool = {
155
+ ...tool,
156
+ inputSchema: tool.inputSchema ? stringify(zodToJsonSchema(tool.inputSchema)) : void 0,
157
+ outputSchema: tool.outputSchema ? stringify(zodToJsonSchema(tool.outputSchema)) : void 0
158
+ };
159
+ return serializedTool;
160
+ } catch (error) {
161
+ return handleError(error, "Error getting agent tool");
162
+ }
163
+ }
164
+ });
165
+ var EXECUTE_AGENT_TOOL_ROUTE = createRoute({
166
+ method: "POST",
167
+ path: "/api/agents/:agentId/tools/:toolId/execute",
168
+ responseType: "json",
169
+ pathParamSchema: agentToolPathParams,
170
+ bodySchema: executeToolBodySchema,
171
+ responseSchema: executeToolResponseSchema,
172
+ summary: "Execute agent tool",
173
+ description: "Executes a specific tool assigned to the agent with the provided input data",
174
+ tags: ["Agents", "Tools"],
175
+ handler: async ({ mastra, agentId, toolId, data, requestContext }) => {
176
+ try {
177
+ const agent = agentId ? mastra.getAgentById(agentId) : null;
178
+ if (!agent) {
179
+ throw new HTTPException(404, { message: "Tool not found" });
180
+ }
181
+ const agentTools = await agent.listTools({ requestContext });
182
+ const tool = Object.values(agentTools || {}).find((tool2) => tool2.id === toolId);
183
+ if (!tool) {
184
+ throw new HTTPException(404, { message: "Tool not found" });
185
+ }
186
+ if (!tool?.execute) {
187
+ throw new HTTPException(400, { message: "Tool is not executable" });
188
+ }
189
+ const result = await tool.execute(data, {
190
+ mastra,
191
+ requestContext,
192
+ // TODO: Pass proper tracing context when server API supports tracing
193
+ tracingContext: { currentSpan: void 0 }
194
+ });
195
+ return result;
196
+ } catch (error) {
197
+ return handleError(error, "Error executing agent tool");
198
+ }
199
+ }
200
+ });
201
+
202
+ export { EXECUTE_AGENT_TOOL_ROUTE, EXECUTE_TOOL_ROUTE, GET_AGENT_TOOL_ROUTE, GET_TOOL_BY_ID_ROUTE, LIST_TOOLS_ROUTE, tools_exports };
203
+ //# sourceMappingURL=chunk-SRQY5IWD.js.map
204
+ //# sourceMappingURL=chunk-SRQY5IWD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/tools.ts"],"names":["result","tool"],"mappings":"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","file":"chunk-SRQY5IWD.js","sourcesContent":["import { isVercelTool } from '@mastra/core/tools';\nimport { zodToJsonSchema } from '@mastra/core/utils/zod-to-json';\nimport { stringify } from 'superjson';\nimport { HTTPException } from '../http-exception';\nimport {\n executeToolContextBodySchema,\n executeToolResponseSchema,\n listToolsResponseSchema,\n serializedToolSchema,\n toolIdPathParams,\n agentToolPathParams,\n executeToolBodySchema,\n} from '../schemas/agents';\nimport { optionalRunIdSchema } from '../schemas/common';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { handleError } from './error';\nimport { validateBody } from './utils';\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_TOOLS_ROUTE = createRoute({\n method: 'GET',\n path: '/api/tools',\n responseType: 'json',\n responseSchema: listToolsResponseSchema,\n summary: 'List all tools',\n description: 'Returns a list of all available tools in the system',\n tags: ['Tools'],\n handler: async ({ mastra, tools }) => {\n try {\n const allTools = tools || mastra.listTools() || {};\n\n const serializedTools = Object.entries(allTools).reduce(\n (acc, [id, _tool]) => {\n const tool = _tool;\n acc[id] = {\n ...tool,\n inputSchema: tool.inputSchema ? stringify(zodToJsonSchema(tool.inputSchema)) : undefined,\n outputSchema: tool.outputSchema ? stringify(zodToJsonSchema(tool.outputSchema)) : undefined,\n };\n return acc;\n },\n {} as Record<string, any>,\n );\n\n return serializedTools;\n } catch (error) {\n return handleError(error, 'Error getting tools');\n }\n },\n});\n\nexport const GET_TOOL_BY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/api/tools/:toolId',\n responseType: 'json',\n pathParamSchema: toolIdPathParams,\n responseSchema: serializedToolSchema,\n summary: 'Get tool by ID',\n description: 'Returns details for a specific tool including its schema and configuration',\n tags: ['Tools'],\n handler: async ({ mastra, tools, toolId }) => {\n try {\n let tool: any;\n\n // Try explicit tools first, then fallback to mastra\n if (tools && Object.keys(tools).length > 0) {\n tool = Object.values(tools).find((t: any) => t.id === toolId);\n } else {\n tool = mastra.getToolById(toolId);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n const serializedTool = {\n ...tool,\n inputSchema: tool.inputSchema ? stringify(zodToJsonSchema(tool.inputSchema)) : undefined,\n outputSchema: tool.outputSchema ? stringify(zodToJsonSchema(tool.outputSchema)) : undefined,\n };\n\n return serializedTool;\n } catch (error) {\n return handleError(error, 'Error getting tool');\n }\n },\n});\n\nexport const EXECUTE_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/api/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: toolIdPathParams,\n queryParamSchema: optionalRunIdSchema,\n bodySchema: executeToolContextBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute tool',\n description: 'Executes a specific tool with the provided input data',\n tags: ['Tools'],\n handler: async ({ mastra, runId, toolId, tools, requestContext, ...bodyParams }) => {\n try {\n if (!toolId) {\n throw new HTTPException(400, { message: 'Tool ID is required' });\n }\n\n let tool: any;\n\n // Try explicit tools first, then fallback to mastra\n if (tools && Object.keys(tools).length > 0) {\n tool = Object.values(tools).find((t: any) => t.id === toolId);\n } else {\n tool = mastra.getToolById(toolId);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n const { data } = bodyParams;\n\n validateBody({ data });\n\n if (isVercelTool(tool)) {\n const result = await (tool as any).execute(data);\n return result;\n }\n\n const result = await tool.execute(data!, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n ...(runId\n ? {\n workflow: {\n runId,\n suspend: async () => {},\n },\n }\n : {}),\n });\n return result;\n } catch (error) {\n return handleError(error, 'Error executing tool');\n }\n },\n});\n\n// ============================================================================\n// Agent Tool Routes\n// ============================================================================\n\nexport const GET_AGENT_TOOL_ROUTE = createRoute({\n method: 'GET',\n path: '/api/agents/:agentId/tools/:toolId',\n responseType: 'json',\n pathParamSchema: agentToolPathParams,\n responseSchema: serializedToolSchema,\n summary: 'Get agent tool',\n description: 'Returns details for a specific tool assigned to the agent',\n tags: ['Agents', 'Tools'],\n handler: async ({ mastra, agentId, toolId, requestContext }) => {\n try {\n const agent = agentId ? mastra.getAgentById(agentId) : null;\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n const serializedTool = {\n ...tool,\n inputSchema: tool.inputSchema ? stringify(zodToJsonSchema(tool.inputSchema)) : undefined,\n outputSchema: tool.outputSchema ? stringify(zodToJsonSchema(tool.outputSchema)) : undefined,\n };\n\n return serializedTool;\n } catch (error) {\n return handleError(error, 'Error getting agent tool');\n }\n },\n});\n\nexport const EXECUTE_AGENT_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/api/agents/:agentId/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: agentToolPathParams,\n bodySchema: executeToolBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute agent tool',\n description: 'Executes a specific tool assigned to the agent with the provided input data',\n tags: ['Agents', 'Tools'],\n handler: async ({ mastra, agentId, toolId, data, requestContext }) => {\n try {\n const agent = agentId ? mastra.getAgentById(agentId) : null;\n if (!agent) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n const result = await tool.execute(data, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error executing agent tool');\n }\n },\n});\n"]}
@@ -0,0 +1,164 @@
1
+ import { zodToJsonSchema } from '@mastra/core/utils/zod-to-json';
2
+
3
+ // src/server/server-adapter/openapi-utils.ts
4
+ function generateRouteOpenAPI({
5
+ method,
6
+ path,
7
+ summary,
8
+ description,
9
+ tags = [],
10
+ pathParamSchema,
11
+ queryParamSchema,
12
+ bodySchema,
13
+ responseSchema,
14
+ deprecated
15
+ }) {
16
+ const route = {
17
+ summary: summary || `${method} ${path}`,
18
+ description,
19
+ tags,
20
+ deprecated,
21
+ responses: {
22
+ 200: {
23
+ description: "Successful response"
24
+ }
25
+ }
26
+ };
27
+ if (pathParamSchema || queryParamSchema) {
28
+ route.requestParams = {};
29
+ if (pathParamSchema) {
30
+ route.requestParams.path = pathParamSchema;
31
+ }
32
+ if (queryParamSchema) {
33
+ route.requestParams.query = queryParamSchema;
34
+ }
35
+ }
36
+ if (bodySchema) {
37
+ route.requestBody = {
38
+ content: {
39
+ "application/json": {
40
+ schema: bodySchema
41
+ }
42
+ }
43
+ };
44
+ }
45
+ if (responseSchema) {
46
+ route.responses[200] = {
47
+ description: "Successful response",
48
+ content: {
49
+ "application/json": {
50
+ schema: responseSchema
51
+ }
52
+ }
53
+ };
54
+ }
55
+ return route;
56
+ }
57
+ function convertZodToJsonSchema(spec) {
58
+ const converted = {
59
+ summary: spec.summary,
60
+ description: spec.description,
61
+ tags: spec.tags,
62
+ responses: {}
63
+ };
64
+ const parameters = [];
65
+ if (spec.requestParams?.path) {
66
+ const pathSchema = zodToJsonSchema(spec.requestParams.path, "openApi3", "none");
67
+ const properties = pathSchema.properties || {};
68
+ Object.entries(properties).forEach(([name, schema]) => {
69
+ parameters.push({
70
+ name,
71
+ in: "path",
72
+ required: true,
73
+ description: schema.description || `The ${name} parameter`,
74
+ schema
75
+ });
76
+ });
77
+ }
78
+ if (spec.requestParams?.query) {
79
+ const querySchema = zodToJsonSchema(spec.requestParams.query, "openApi3", "none");
80
+ const properties = querySchema.properties || {};
81
+ const required = querySchema.required || [];
82
+ Object.entries(properties).forEach(([name, schema]) => {
83
+ parameters.push({
84
+ name,
85
+ in: "query",
86
+ required: required.includes(name),
87
+ description: schema.description || `Query parameter: ${name}`,
88
+ schema
89
+ });
90
+ });
91
+ }
92
+ if (parameters.length > 0) {
93
+ converted.parameters = parameters;
94
+ }
95
+ if (spec.requestBody?.content?.["application/json"]?.schema) {
96
+ converted.requestBody = {
97
+ required: true,
98
+ content: {
99
+ "application/json": {
100
+ schema: zodToJsonSchema(spec.requestBody.content["application/json"].schema, "openApi3", "none")
101
+ }
102
+ }
103
+ };
104
+ }
105
+ Object.entries(spec.responses).forEach(([statusCode, response]) => {
106
+ converted.responses[statusCode] = {
107
+ description: response.description
108
+ };
109
+ if (response.content?.["application/json"]?.schema) {
110
+ converted.responses[statusCode].content = {
111
+ "application/json": {
112
+ schema: zodToJsonSchema(response.content["application/json"].schema, "openApi3", "none")
113
+ }
114
+ };
115
+ }
116
+ });
117
+ return converted;
118
+ }
119
+ function generateOpenAPIDocument(routes, info) {
120
+ const paths = {};
121
+ routes.forEach((route) => {
122
+ if (!route.openapi) return;
123
+ const openapiPath = route.path.replace(/:(\w+)/g, "{$1}");
124
+ if (!paths[openapiPath]) {
125
+ paths[openapiPath] = {};
126
+ }
127
+ paths[openapiPath][route.method.toLowerCase()] = convertZodToJsonSchema(route.openapi);
128
+ });
129
+ return {
130
+ openapi: "3.1.0",
131
+ info: {
132
+ title: info.title,
133
+ version: info.version,
134
+ description: info.description
135
+ },
136
+ paths
137
+ };
138
+ }
139
+
140
+ // src/server/server-adapter/routes/route-builder.ts
141
+ function createRoute(config) {
142
+ const { summary, description, tags, deprecated, ...baseRoute } = config;
143
+ const openapi = config.method !== "ALL" ? generateRouteOpenAPI({
144
+ method: config.method,
145
+ path: config.path,
146
+ summary,
147
+ description,
148
+ tags,
149
+ pathParamSchema: config.pathParamSchema,
150
+ queryParamSchema: config.queryParamSchema,
151
+ bodySchema: config.bodySchema,
152
+ responseSchema: config.responseSchema,
153
+ deprecated
154
+ }) : void 0;
155
+ return {
156
+ ...baseRoute,
157
+ openapi,
158
+ deprecated
159
+ };
160
+ }
161
+
162
+ export { createRoute, generateOpenAPIDocument };
163
+ //# sourceMappingURL=chunk-SXVANU23.js.map
164
+ //# sourceMappingURL=chunk-SXVANU23.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/server-adapter/openapi-utils.ts","../src/server/server-adapter/routes/route-builder.ts"],"names":[],"mappings":"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","file":"chunk-SXVANU23.js","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, '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, '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, '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, '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 type z from 'zod';\nimport { generateRouteOpenAPI } from '../openapi-utils';\nimport type { InferParams, ResponseType, ServerRoute, ServerRouteHandler } from './index';\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}\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: '/api/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, ...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 };\n}\n"]}