@mastra/server 1.0.4-alpha.1 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (448) hide show
  1. package/CHANGELOG.md +6596 -0
  2. package/LICENSE.md +11 -42
  3. package/README.md +45 -137
  4. package/dist/chunk-2CLS2PYJ.js +1030 -0
  5. package/dist/chunk-2CLS2PYJ.js.map +1 -0
  6. package/dist/chunk-2CYGIE3E.js +1075 -0
  7. package/dist/chunk-2CYGIE3E.js.map +1 -0
  8. package/dist/chunk-33CKPQS4.cjs +175 -0
  9. package/dist/chunk-33CKPQS4.cjs.map +1 -0
  10. package/dist/chunk-3FEYUHHJ.js +116 -0
  11. package/dist/chunk-3FEYUHHJ.js.map +1 -0
  12. package/dist/chunk-3REGEJEN.js +250 -0
  13. package/dist/chunk-3REGEJEN.js.map +1 -0
  14. package/dist/chunk-3W67K7YE.js +13 -0
  15. package/dist/chunk-3W67K7YE.js.map +1 -0
  16. package/dist/chunk-4DJ7EJRB.cjs +186 -0
  17. package/dist/chunk-4DJ7EJRB.cjs.map +1 -0
  18. package/dist/chunk-4EYONQIW.cjs +82 -0
  19. package/dist/chunk-4EYONQIW.cjs.map +1 -0
  20. package/dist/chunk-4R2Z655M.js +1075 -0
  21. package/dist/chunk-4R2Z655M.js.map +1 -0
  22. package/dist/chunk-5NFRDYFN.js +77 -0
  23. package/dist/chunk-5NFRDYFN.js.map +1 -0
  24. package/dist/chunk-5VDI75UV.js +44 -0
  25. package/dist/chunk-5VDI75UV.js.map +1 -0
  26. package/dist/chunk-5W4RPVTK.cjs +49 -0
  27. package/dist/chunk-5W4RPVTK.cjs.map +1 -0
  28. package/dist/{chunk-FV45V6WC.cjs → chunk-64ITUOXI.cjs} +3 -7
  29. package/dist/chunk-64ITUOXI.cjs.map +1 -0
  30. package/dist/chunk-6MP2S6VI.cjs +211 -0
  31. package/dist/chunk-6MP2S6VI.cjs.map +1 -0
  32. package/dist/{chunk-TRDNDNGQ.js → chunk-6QWQZI4Q.js} +4 -7
  33. package/dist/chunk-6QWQZI4Q.js.map +1 -0
  34. package/dist/chunk-7S7ALPCY.js +225 -0
  35. package/dist/chunk-7S7ALPCY.js.map +1 -0
  36. package/dist/chunk-7XPMKW4Y.cjs +447 -0
  37. package/dist/chunk-7XPMKW4Y.cjs.map +1 -0
  38. package/dist/chunk-AQI6GLTN.cjs +2777 -0
  39. package/dist/chunk-AQI6GLTN.cjs.map +1 -0
  40. package/dist/chunk-AV3CN5ZR.cjs +326 -0
  41. package/dist/chunk-AV3CN5ZR.cjs.map +1 -0
  42. package/dist/chunk-AVRO3FIN.cjs +231 -0
  43. package/dist/chunk-AVRO3FIN.cjs.map +1 -0
  44. package/dist/chunk-BRI4GUZ2.cjs +280 -0
  45. package/dist/chunk-BRI4GUZ2.cjs.map +1 -0
  46. package/dist/chunk-CGIGPJRU.js +279 -0
  47. package/dist/chunk-CGIGPJRU.js.map +1 -0
  48. package/dist/chunk-CLAEGIP5.cjs +683 -0
  49. package/dist/chunk-CLAEGIP5.cjs.map +1 -0
  50. package/dist/chunk-DVSCJECS.js +250 -0
  51. package/dist/chunk-DVSCJECS.js.map +1 -0
  52. package/dist/chunk-EUBTCHQC.js +83 -0
  53. package/dist/chunk-EUBTCHQC.js.map +1 -0
  54. package/dist/chunk-FLLJIPD4.cjs +46 -0
  55. package/dist/chunk-FLLJIPD4.cjs.map +1 -0
  56. package/dist/chunk-FWSKVWS7.cjs +88 -0
  57. package/dist/chunk-FWSKVWS7.cjs.map +1 -0
  58. package/dist/chunk-G2AMUTU4.js +250 -0
  59. package/dist/chunk-G2AMUTU4.js.map +1 -0
  60. package/dist/chunk-GHQZIEPS.js +33118 -0
  61. package/dist/chunk-GHQZIEPS.js.map +1 -0
  62. package/dist/chunk-GNCALVLC.js +171 -0
  63. package/dist/chunk-GNCALVLC.js.map +1 -0
  64. package/dist/chunk-GU4EWMZB.cjs +769 -0
  65. package/dist/chunk-GU4EWMZB.cjs.map +1 -0
  66. package/dist/chunk-H34VRYSF.js +196 -0
  67. package/dist/chunk-H34VRYSF.js.map +1 -0
  68. package/dist/chunk-H66LLFDL.js +970 -0
  69. package/dist/chunk-H66LLFDL.js.map +1 -0
  70. package/dist/chunk-HCVDHEDD.cjs +33157 -0
  71. package/dist/chunk-HCVDHEDD.cjs.map +1 -0
  72. package/dist/chunk-HT4LP3BO.js +75 -0
  73. package/dist/chunk-HT4LP3BO.js.map +1 -0
  74. package/dist/chunk-I27H7BEB.js +439 -0
  75. package/dist/chunk-I27H7BEB.js.map +1 -0
  76. package/dist/chunk-IVGQTL3T.js +204 -0
  77. package/dist/chunk-IVGQTL3T.js.map +1 -0
  78. package/dist/chunk-KKY4MSZO.js +314 -0
  79. package/dist/chunk-KKY4MSZO.js.map +1 -0
  80. package/dist/chunk-L2E5RUVT.cjs +252 -0
  81. package/dist/chunk-L2E5RUVT.cjs.map +1 -0
  82. package/dist/chunk-LF2ZLOFP.js +767 -0
  83. package/dist/chunk-LF2ZLOFP.js.map +1 -0
  84. package/dist/chunk-LJ6YRVDI.cjs +15 -0
  85. package/dist/chunk-LJ6YRVDI.cjs.map +1 -0
  86. package/dist/chunk-LOA7RQYO.js +2774 -0
  87. package/dist/chunk-LOA7RQYO.js.map +1 -0
  88. package/dist/chunk-MCYD5LW7.cjs +90 -0
  89. package/dist/chunk-MCYD5LW7.cjs.map +1 -0
  90. package/dist/chunk-MPUVSOEU.cjs +346 -0
  91. package/dist/chunk-MPUVSOEU.cjs.map +1 -0
  92. package/dist/chunk-N4EIZSG2.js +180 -0
  93. package/dist/chunk-N4EIZSG2.js.map +1 -0
  94. package/dist/chunk-NUO7HPOV.cjs +1105 -0
  95. package/dist/chunk-NUO7HPOV.cjs.map +1 -0
  96. package/dist/chunk-O7I5CWRX.cjs +44 -0
  97. package/dist/chunk-O7I5CWRX.cjs.map +1 -0
  98. package/dist/chunk-ONN5EA7E.js +26 -0
  99. package/dist/chunk-ONN5EA7E.js.map +1 -0
  100. package/dist/chunk-P3H4AZKI.cjs +252 -0
  101. package/dist/chunk-P3H4AZKI.cjs.map +1 -0
  102. package/dist/chunk-PNZQCQY4.cjs +252 -0
  103. package/dist/chunk-PNZQCQY4.cjs.map +1 -0
  104. package/dist/chunk-PR4QN5HX.js +39 -0
  105. package/dist/chunk-PR4QN5HX.js.map +1 -0
  106. package/dist/chunk-QPFYN6B5.cjs +125 -0
  107. package/dist/chunk-QPFYN6B5.cjs.map +1 -0
  108. package/dist/chunk-SUKFO7UM.cjs +29 -0
  109. package/dist/chunk-SUKFO7UM.cjs.map +1 -0
  110. package/dist/chunk-T4SPG2GP.cjs +82 -0
  111. package/dist/chunk-T4SPG2GP.cjs.map +1 -0
  112. package/dist/chunk-TMS4LS2J.js +302 -0
  113. package/dist/chunk-TMS4LS2J.js.map +1 -0
  114. package/dist/chunk-UK4FZWNW.cjs +205 -0
  115. package/dist/chunk-UK4FZWNW.cjs.map +1 -0
  116. package/dist/chunk-VX3VN7FN.cjs +992 -0
  117. package/dist/chunk-VX3VN7FN.cjs.map +1 -0
  118. package/dist/chunk-WJ6DNHLW.cjs +312 -0
  119. package/dist/chunk-WJ6DNHLW.cjs.map +1 -0
  120. package/dist/chunk-WLGJVDH4.js +242 -0
  121. package/dist/chunk-WLGJVDH4.js.map +1 -0
  122. package/dist/chunk-XB27LCKO.js +328 -0
  123. package/dist/chunk-XB27LCKO.js.map +1 -0
  124. package/dist/chunk-XCEQ4GQW.cjs +289 -0
  125. package/dist/chunk-XCEQ4GQW.cjs.map +1 -0
  126. package/dist/chunk-XOUK3IYU.js +77 -0
  127. package/dist/chunk-XOUK3IYU.js.map +1 -0
  128. package/dist/chunk-XWGAT2DA.js +44 -0
  129. package/dist/chunk-XWGAT2DA.js.map +1 -0
  130. package/dist/chunk-YK63KHHB.cjs +1059 -0
  131. package/dist/chunk-YK63KHHB.cjs.map +1 -0
  132. package/dist/chunk-YN3FWKVQ.js +669 -0
  133. package/dist/chunk-YN3FWKVQ.js.map +1 -0
  134. package/dist/chunk-ZQ2G6QKS.cjs +1117 -0
  135. package/dist/chunk-ZQ2G6QKS.cjs.map +1 -0
  136. package/dist/dist-7NTDEVLP.cjs +928 -0
  137. package/dist/dist-7NTDEVLP.cjs.map +1 -0
  138. package/dist/dist-B5GMANA6.js +1147 -0
  139. package/dist/dist-B5GMANA6.js.map +1 -0
  140. package/dist/dist-EDO7GEGI.js +3 -0
  141. package/dist/dist-EDO7GEGI.js.map +1 -0
  142. package/dist/dist-OF24ZMHH.cjs +764 -0
  143. package/dist/dist-OF24ZMHH.cjs.map +1 -0
  144. package/dist/dist-P6YSNLL3.cjs +1150 -0
  145. package/dist/dist-P6YSNLL3.cjs.map +1 -0
  146. package/dist/dist-SMBO5KVB.js +937 -0
  147. package/dist/dist-SMBO5KVB.js.map +1 -0
  148. package/dist/dist-THPMW5QR.js +761 -0
  149. package/dist/dist-THPMW5QR.js.map +1 -0
  150. package/dist/dist-VZTG56X2.cjs +940 -0
  151. package/dist/dist-VZTG56X2.cjs.map +1 -0
  152. package/dist/dist-ZLC23RVC.cjs +16 -0
  153. package/dist/dist-ZLC23RVC.cjs.map +1 -0
  154. package/dist/dist-ZOZ6MHJH.js +925 -0
  155. package/dist/dist-ZOZ6MHJH.js.map +1 -0
  156. package/dist/docs/README.md +31 -0
  157. package/dist/docs/SKILL.md +32 -0
  158. package/dist/docs/SOURCE_MAP.json +6 -0
  159. package/dist/docs/server/01-custom-adapters.md +380 -0
  160. package/dist/docs/server/02-reference.md +819 -0
  161. package/dist/index.cjs +6 -0
  162. package/dist/index.cjs.map +1 -0
  163. package/dist/index.d.ts +1 -0
  164. package/dist/index.d.ts.map +1 -0
  165. package/dist/index.js +5 -0
  166. package/dist/index.js.map +1 -0
  167. package/dist/server/a2a/protocol.d.ts +8 -0
  168. package/dist/server/a2a/protocol.d.ts.map +1 -0
  169. package/dist/server/a2a/store.cjs +25 -0
  170. package/dist/server/a2a/store.cjs.map +1 -0
  171. package/dist/server/a2a/store.d.ts +14 -0
  172. package/dist/server/a2a/store.d.ts.map +1 -0
  173. package/dist/server/a2a/store.js +23 -0
  174. package/dist/server/a2a/store.js.map +1 -0
  175. package/dist/server/a2a/tasks.d.ts +20 -0
  176. package/dist/server/a2a/tasks.d.ts.map +1 -0
  177. package/dist/server/auth/defaults.d.ts +3 -0
  178. package/dist/server/auth/defaults.d.ts.map +1 -0
  179. package/dist/server/auth/helpers.d.ts +14 -0
  180. package/dist/server/auth/helpers.d.ts.map +1 -0
  181. package/dist/server/auth/index.cjs +137 -0
  182. package/dist/server/auth/index.cjs.map +1 -0
  183. package/dist/server/auth/index.d.ts +3 -0
  184. package/dist/server/auth/index.d.ts.map +1 -0
  185. package/dist/server/auth/index.js +127 -0
  186. package/dist/server/auth/index.js.map +1 -0
  187. package/dist/server/handlers/a2a.cjs +40 -0
  188. package/dist/server/handlers/a2a.cjs.map +1 -0
  189. package/dist/server/handlers/a2a.d.ts +550 -0
  190. package/dist/server/handlers/a2a.d.ts.map +1 -0
  191. package/dist/server/handlers/a2a.js +3 -0
  192. package/dist/server/handlers/a2a.js.map +1 -0
  193. package/dist/server/handlers/agent-builder.cjs +68 -0
  194. package/dist/server/handlers/agent-builder.cjs.map +1 -0
  195. package/dist/server/handlers/agent-builder.d.ts +632 -0
  196. package/dist/server/handlers/agent-builder.d.ts.map +1 -0
  197. package/dist/server/handlers/agent-builder.js +3 -0
  198. package/dist/server/handlers/agent-builder.js.map +1 -0
  199. package/dist/server/handlers/agents.cjs +99 -13
  200. package/dist/server/handlers/agents.cjs.map +1 -0
  201. package/dist/server/handlers/agents.d.ts +3387 -6
  202. package/dist/server/handlers/agents.d.ts.map +1 -0
  203. package/dist/server/handlers/agents.js +3 -1
  204. package/dist/server/handlers/agents.js.map +1 -0
  205. package/dist/server/handlers/error.cjs +8 -2
  206. package/dist/server/handlers/error.cjs.map +1 -0
  207. package/dist/server/handlers/error.d.ts +14 -1
  208. package/dist/server/handlers/error.d.ts.map +1 -0
  209. package/dist/server/handlers/error.js +3 -1
  210. package/dist/server/handlers/error.js.map +1 -0
  211. package/dist/server/handlers/logs.cjs +9 -7
  212. package/dist/server/handlers/logs.cjs.map +1 -0
  213. package/dist/server/handlers/logs.d.ts +142 -3
  214. package/dist/server/handlers/logs.d.ts.map +1 -0
  215. package/dist/server/handlers/logs.js +3 -1
  216. package/dist/server/handlers/logs.js.map +1 -0
  217. package/dist/server/handlers/mcp.cjs +40 -0
  218. package/dist/server/handlers/mcp.cjs.map +1 -0
  219. package/dist/server/handlers/mcp.d.ts +110 -0
  220. package/dist/server/handlers/mcp.d.ts.map +1 -0
  221. package/dist/server/handlers/mcp.js +3 -0
  222. package/dist/server/handlers/mcp.js.map +1 -0
  223. package/dist/server/handlers/memory.cjs +83 -17
  224. package/dist/server/handlers/memory.cjs.map +1 -0
  225. package/dist/server/handlers/memory.d.ts +1065 -8
  226. package/dist/server/handlers/memory.d.ts.map +1 -0
  227. package/dist/server/handlers/memory.js +3 -1
  228. package/dist/server/handlers/memory.js.map +1 -0
  229. package/dist/server/handlers/observability.cjs +24 -0
  230. package/dist/server/handlers/observability.cjs.map +1 -0
  231. package/dist/server/handlers/observability.d.ts +153 -0
  232. package/dist/server/handlers/observability.d.ts.map +1 -0
  233. package/dist/server/handlers/observability.js +3 -0
  234. package/dist/server/handlers/observability.js.map +1 -0
  235. package/dist/server/handlers/processors.cjs +20 -0
  236. package/dist/server/handlers/processors.cjs.map +1 -0
  237. package/dist/server/handlers/processors.d.ts +181 -0
  238. package/dist/server/handlers/processors.d.ts.map +1 -0
  239. package/dist/server/handlers/processors.js +3 -0
  240. package/dist/server/handlers/processors.js.map +1 -0
  241. package/dist/server/handlers/scores.cjs +32 -0
  242. package/dist/server/handlers/scores.cjs.map +1 -0
  243. package/dist/server/handlers/scores.d.ts +121 -0
  244. package/dist/server/handlers/scores.d.ts.map +1 -0
  245. package/dist/server/handlers/scores.js +3 -0
  246. package/dist/server/handlers/scores.js.map +1 -0
  247. package/dist/server/handlers/stored-agents.cjs +28 -0
  248. package/dist/server/handlers/stored-agents.cjs.map +1 -0
  249. package/dist/server/handlers/stored-agents.d.ts +289 -0
  250. package/dist/server/handlers/stored-agents.d.ts.map +1 -0
  251. package/dist/server/handlers/stored-agents.js +3 -0
  252. package/dist/server/handlers/stored-agents.js.map +1 -0
  253. package/dist/server/handlers/system.cjs +12 -0
  254. package/dist/server/handlers/system.cjs.map +1 -0
  255. package/dist/server/handlers/system.d.ts +7 -0
  256. package/dist/server/handlers/system.d.ts.map +1 -0
  257. package/dist/server/handlers/system.js +3 -0
  258. package/dist/server/handlers/system.js.map +1 -0
  259. package/dist/server/handlers/test-utils.cjs +15 -0
  260. package/dist/server/handlers/test-utils.cjs.map +1 -0
  261. package/dist/server/handlers/test-utils.d.ts +6 -0
  262. package/dist/server/handlers/test-utils.d.ts.map +1 -0
  263. package/dist/server/handlers/test-utils.js +13 -0
  264. package/dist/server/handlers/test-utils.js.map +1 -0
  265. package/dist/server/handlers/tools.cjs +15 -9
  266. package/dist/server/handlers/tools.cjs.map +1 -0
  267. package/dist/server/handlers/tools.d.ts +71 -4
  268. package/dist/server/handlers/tools.d.ts.map +1 -0
  269. package/dist/server/handlers/tools.js +3 -1
  270. package/dist/server/handlers/tools.js.map +1 -0
  271. package/dist/server/handlers/utils.cjs +16 -2
  272. package/dist/server/handlers/utils.cjs.map +1 -0
  273. package/dist/server/handlers/utils.d.ts +13 -1
  274. package/dist/server/handlers/utils.d.ts.map +1 -0
  275. package/dist/server/handlers/utils.js +3 -1
  276. package/dist/server/handlers/utils.js.map +1 -0
  277. package/dist/server/handlers/vector.cjs +33 -7
  278. package/dist/server/handlers/vector.cjs.map +1 -0
  279. package/dist/server/handlers/vector.d.ts +135 -6
  280. package/dist/server/handlers/vector.d.ts.map +1 -0
  281. package/dist/server/handlers/vector.js +3 -1
  282. package/dist/server/handlers/vector.js.map +1 -0
  283. package/dist/server/handlers/voice.cjs +25 -7
  284. package/dist/server/handlers/voice.cjs.map +1 -0
  285. package/dist/server/handlers/voice.d.ts +82 -3
  286. package/dist/server/handlers/voice.d.ts.map +1 -0
  287. package/dist/server/handlers/voice.js +3 -1
  288. package/dist/server/handlers/voice.js.map +1 -0
  289. package/dist/server/handlers/workflows.cjs +75 -21
  290. package/dist/server/handlers/workflows.cjs.map +1 -0
  291. package/dist/server/handlers/workflows.d.ts +994 -10
  292. package/dist/server/handlers/workflows.d.ts.map +1 -0
  293. package/dist/server/handlers/workflows.js +3 -1
  294. package/dist/server/handlers/workflows.js.map +1 -0
  295. package/dist/server/handlers.cjs +41 -24
  296. package/dist/server/handlers.cjs.map +1 -0
  297. package/dist/server/handlers.d.ts +13 -9
  298. package/dist/server/handlers.d.ts.map +1 -0
  299. package/dist/server/handlers.js +14 -9
  300. package/dist/server/handlers.js.map +1 -0
  301. package/dist/server/http-exception.d.ts +82 -0
  302. package/dist/server/http-exception.d.ts.map +1 -0
  303. package/dist/server/schemas/a2a.d.ts +786 -0
  304. package/dist/server/schemas/a2a.d.ts.map +1 -0
  305. package/dist/server/schemas/agent-builder.d.ts +225 -0
  306. package/dist/server/schemas/agent-builder.d.ts.map +1 -0
  307. package/dist/server/schemas/agents.d.ts +1804 -0
  308. package/dist/server/schemas/agents.d.ts.map +1 -0
  309. package/dist/server/schemas/common.d.ts +179 -0
  310. package/dist/server/schemas/common.d.ts.map +1 -0
  311. package/dist/server/schemas/logs.d.ts +124 -0
  312. package/dist/server/schemas/logs.d.ts.map +1 -0
  313. package/dist/server/schemas/mcp.d.ts +299 -0
  314. package/dist/server/schemas/mcp.d.ts.map +1 -0
  315. package/dist/server/schemas/memory.d.ts +1164 -0
  316. package/dist/server/schemas/memory.d.ts.map +1 -0
  317. package/dist/server/schemas/processors.d.ts +519 -0
  318. package/dist/server/schemas/processors.d.ts.map +1 -0
  319. package/dist/server/schemas/scores.d.ts +259 -0
  320. package/dist/server/schemas/scores.d.ts.map +1 -0
  321. package/dist/server/schemas/stored-agents.d.ts +792 -0
  322. package/dist/server/schemas/stored-agents.d.ts.map +1 -0
  323. package/dist/server/schemas/system.d.ts +36 -0
  324. package/dist/server/schemas/system.d.ts.map +1 -0
  325. package/dist/server/schemas/vectors.d.ts +107 -0
  326. package/dist/server/schemas/vectors.d.ts.map +1 -0
  327. package/dist/server/schemas/workflows.d.ts +863 -0
  328. package/dist/server/schemas/workflows.d.ts.map +1 -0
  329. package/dist/server/server-adapter/index.cjs +523 -0
  330. package/dist/server/server-adapter/index.cjs.map +1 -0
  331. package/dist/server/server-adapter/index.d.ts +109 -0
  332. package/dist/server/server-adapter/index.d.ts.map +1 -0
  333. package/dist/server/server-adapter/index.js +495 -0
  334. package/dist/server/server-adapter/index.js.map +1 -0
  335. package/dist/server/server-adapter/openapi-utils.d.ts +59 -0
  336. package/dist/server/server-adapter/openapi-utils.d.ts.map +1 -0
  337. package/dist/server/server-adapter/redact.d.ts +26 -0
  338. package/dist/server/server-adapter/redact.d.ts.map +1 -0
  339. package/dist/server/server-adapter/routes/a2a.d.ts +3 -0
  340. package/dist/server/server-adapter/routes/a2a.d.ts.map +1 -0
  341. package/dist/server/server-adapter/routes/agent-builder.d.ts +3 -0
  342. package/dist/server/server-adapter/routes/agent-builder.d.ts.map +1 -0
  343. package/dist/server/server-adapter/routes/agents.d.ts +3 -0
  344. package/dist/server/server-adapter/routes/agents.d.ts.map +1 -0
  345. package/dist/server/server-adapter/routes/index.d.ts +50 -0
  346. package/dist/server/server-adapter/routes/index.d.ts.map +1 -0
  347. package/dist/server/server-adapter/routes/legacy.d.ts +7 -0
  348. package/dist/server/server-adapter/routes/legacy.d.ts.map +1 -0
  349. package/dist/server/server-adapter/routes/logs.d.ts +3 -0
  350. package/dist/server/server-adapter/routes/logs.d.ts.map +1 -0
  351. package/dist/server/server-adapter/routes/mcp.d.ts +9 -0
  352. package/dist/server/server-adapter/routes/mcp.d.ts.map +1 -0
  353. package/dist/server/server-adapter/routes/memory.d.ts +3 -0
  354. package/dist/server/server-adapter/routes/memory.d.ts.map +1 -0
  355. package/dist/server/server-adapter/routes/observability.d.ts +3 -0
  356. package/dist/server/server-adapter/routes/observability.d.ts.map +1 -0
  357. package/dist/server/server-adapter/routes/processors.d.ts +3 -0
  358. package/dist/server/server-adapter/routes/processors.d.ts.map +1 -0
  359. package/dist/server/server-adapter/routes/route-builder.d.ts +111 -0
  360. package/dist/server/server-adapter/routes/route-builder.d.ts.map +1 -0
  361. package/dist/server/server-adapter/routes/scorers.d.ts +3 -0
  362. package/dist/server/server-adapter/routes/scorers.d.ts.map +1 -0
  363. package/dist/server/server-adapter/routes/stored-agents.d.ts +8 -0
  364. package/dist/server/server-adapter/routes/stored-agents.d.ts.map +1 -0
  365. package/dist/server/server-adapter/routes/stream-types.d.ts +10 -0
  366. package/dist/server/server-adapter/routes/stream-types.d.ts.map +1 -0
  367. package/dist/server/server-adapter/routes/system.d.ts +12 -0
  368. package/dist/server/server-adapter/routes/system.d.ts.map +1 -0
  369. package/dist/server/server-adapter/routes/tools.d.ts +3 -0
  370. package/dist/server/server-adapter/routes/tools.d.ts.map +1 -0
  371. package/dist/server/server-adapter/routes/vectors.d.ts +3 -0
  372. package/dist/server/server-adapter/routes/vectors.d.ts.map +1 -0
  373. package/dist/server/server-adapter/routes/workflows.d.ts +3 -0
  374. package/dist/server/server-adapter/routes/workflows.d.ts.map +1 -0
  375. package/dist/server/types.d.ts +10 -0
  376. package/dist/server/types.d.ts.map +1 -0
  377. package/dist/server/utils.d.ts +45 -0
  378. package/dist/server/utils.d.ts.map +1 -0
  379. package/dist/token-6GSAFR2W-K2BTU23I-5WBYUIGY.cjs +63 -0
  380. package/dist/token-6GSAFR2W-K2BTU23I-5WBYUIGY.cjs.map +1 -0
  381. package/dist/token-6GSAFR2W-K2BTU23I-NW33N3NU.js +61 -0
  382. package/dist/token-6GSAFR2W-K2BTU23I-NW33N3NU.js.map +1 -0
  383. package/dist/token-6GSAFR2W-KVDFAJ2M-EPLMGMHT.cjs +63 -0
  384. package/dist/token-6GSAFR2W-KVDFAJ2M-EPLMGMHT.cjs.map +1 -0
  385. package/dist/token-6GSAFR2W-KVDFAJ2M-VW443KIA.js +61 -0
  386. package/dist/token-6GSAFR2W-KVDFAJ2M-VW443KIA.js.map +1 -0
  387. package/dist/token-6GSAFR2W-VLY2XUPA-NCSASMWN.js +61 -0
  388. package/dist/token-6GSAFR2W-VLY2XUPA-NCSASMWN.js.map +1 -0
  389. package/dist/token-6GSAFR2W-VLY2XUPA-RKITWXKR.cjs +63 -0
  390. package/dist/token-6GSAFR2W-VLY2XUPA-RKITWXKR.cjs.map +1 -0
  391. package/dist/token-util-NEHG7TUY-DJYRKLRD-6TH3ODCN.cjs +10 -0
  392. package/dist/token-util-NEHG7TUY-DJYRKLRD-6TH3ODCN.cjs.map +1 -0
  393. package/dist/token-util-NEHG7TUY-DJYRKLRD-EACKYD4V.js +8 -0
  394. package/dist/token-util-NEHG7TUY-DJYRKLRD-EACKYD4V.js.map +1 -0
  395. package/dist/token-util-NEHG7TUY-KSXDO2NO-J6DEINGO.cjs +10 -0
  396. package/dist/token-util-NEHG7TUY-KSXDO2NO-J6DEINGO.cjs.map +1 -0
  397. package/dist/token-util-NEHG7TUY-KSXDO2NO-WH6I3PH3.js +8 -0
  398. package/dist/token-util-NEHG7TUY-KSXDO2NO-WH6I3PH3.js.map +1 -0
  399. package/dist/token-util-NEHG7TUY-TIJ3LMSH-ANFISSXX.cjs +10 -0
  400. package/dist/token-util-NEHG7TUY-TIJ3LMSH-ANFISSXX.cjs.map +1 -0
  401. package/dist/token-util-NEHG7TUY-TIJ3LMSH-SGVKOKXF.js +8 -0
  402. package/dist/token-util-NEHG7TUY-TIJ3LMSH-SGVKOKXF.js.map +1 -0
  403. package/package.json +72 -20
  404. package/dist/_tsup-dts-rollup.d.cts +0 -573
  405. package/dist/_tsup-dts-rollup.d.ts +0 -573
  406. package/dist/chunk-2FJURXCL.cjs +0 -213
  407. package/dist/chunk-3AHQ5RGN.js +0 -11
  408. package/dist/chunk-3EJZQ6TQ.js +0 -49
  409. package/dist/chunk-3RVHWGWO.js +0 -95
  410. package/dist/chunk-4JINXASC.js +0 -120
  411. package/dist/chunk-67WTHYAV.js +0 -156
  412. package/dist/chunk-A7DF4ETD.cjs +0 -100
  413. package/dist/chunk-B64YROKU.cjs +0 -317
  414. package/dist/chunk-CWSDZEZG.cjs +0 -139
  415. package/dist/chunk-DVPP5S6I.js +0 -135
  416. package/dist/chunk-JLDXUWK7.cjs +0 -126
  417. package/dist/chunk-L7XE5QTW.js +0 -16
  418. package/dist/chunk-M56ECCHK.cjs +0 -128
  419. package/dist/chunk-OPP7H5TW.js +0 -305
  420. package/dist/chunk-PDC4ZBQW.cjs +0 -126
  421. package/dist/chunk-QH6XWSXP.cjs +0 -5579
  422. package/dist/chunk-QN4KF3BH.cjs +0 -18
  423. package/dist/chunk-RBQASTUP.js +0 -203
  424. package/dist/chunk-SKBVVI24.cjs +0 -54
  425. package/dist/chunk-UV4WTEH4.js +0 -120
  426. package/dist/chunk-VK6FX47H.js +0 -5576
  427. package/dist/chunk-YANVFOYA.js +0 -120
  428. package/dist/chunk-Z46X3YCB.cjs +0 -164
  429. package/dist/chunk-ZLBRQFDD.cjs +0 -13
  430. package/dist/index.d.cts +0 -1
  431. package/dist/server/handlers/agents.d.cts +0 -6
  432. package/dist/server/handlers/error.d.cts +0 -1
  433. package/dist/server/handlers/logs.d.cts +0 -3
  434. package/dist/server/handlers/memory.d.cts +0 -8
  435. package/dist/server/handlers/network.cjs +0 -22
  436. package/dist/server/handlers/network.d.cts +0 -4
  437. package/dist/server/handlers/network.d.ts +0 -4
  438. package/dist/server/handlers/network.js +0 -1
  439. package/dist/server/handlers/telemetry.cjs +0 -14
  440. package/dist/server/handlers/telemetry.d.cts +0 -2
  441. package/dist/server/handlers/telemetry.d.ts +0 -2
  442. package/dist/server/handlers/telemetry.js +0 -1
  443. package/dist/server/handlers/tools.d.cts +0 -4
  444. package/dist/server/handlers/utils.d.cts +0 -1
  445. package/dist/server/handlers/vector.d.cts +0 -6
  446. package/dist/server/handlers/voice.d.cts +0 -3
  447. package/dist/server/handlers/workflows.d.cts +0 -10
  448. package/dist/server/handlers.d.cts +0 -9
@@ -0,0 +1,211 @@
1
+ 'use strict';
2
+
3
+ var chunk5W4RPVTK_cjs = require('./chunk-5W4RPVTK.cjs');
4
+ var chunkBRI4GUZ2_cjs = require('./chunk-BRI4GUZ2.cjs');
5
+ var chunkMCYD5LW7_cjs = require('./chunk-MCYD5LW7.cjs');
6
+ var chunkGU4EWMZB_cjs = require('./chunk-GU4EWMZB.cjs');
7
+ var chunkAVRO3FIN_cjs = require('./chunk-AVRO3FIN.cjs');
8
+ var chunkSUKFO7UM_cjs = require('./chunk-SUKFO7UM.cjs');
9
+ var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
10
+ var chunkO7I5CWRX_cjs = require('./chunk-O7I5CWRX.cjs');
11
+ var tools = require('@mastra/core/tools');
12
+ var zodToJson = require('@mastra/core/utils/zod-to-json');
13
+
14
+ // src/server/handlers/tools.ts
15
+ var tools_exports = {};
16
+ chunkO7I5CWRX_cjs.__export(tools_exports, {
17
+ EXECUTE_AGENT_TOOL_ROUTE: () => EXECUTE_AGENT_TOOL_ROUTE,
18
+ EXECUTE_TOOL_ROUTE: () => EXECUTE_TOOL_ROUTE,
19
+ GET_AGENT_TOOL_ROUTE: () => GET_AGENT_TOOL_ROUTE,
20
+ GET_TOOL_BY_ID_ROUTE: () => GET_TOOL_BY_ID_ROUTE,
21
+ LIST_TOOLS_ROUTE: () => LIST_TOOLS_ROUTE
22
+ });
23
+ var LIST_TOOLS_ROUTE = chunkAVRO3FIN_cjs.createRoute({
24
+ method: "GET",
25
+ path: "/api/tools",
26
+ responseType: "json",
27
+ responseSchema: chunkBRI4GUZ2_cjs.listToolsResponseSchema,
28
+ summary: "List all tools",
29
+ description: "Returns a list of all available tools in the system",
30
+ tags: ["Tools"],
31
+ handler: async ({ mastra, tools }) => {
32
+ try {
33
+ const allTools = tools || mastra.listTools() || {};
34
+ const serializedTools = Object.entries(allTools).reduce(
35
+ (acc, [id, _tool]) => {
36
+ const tool = _tool;
37
+ acc[id] = {
38
+ ...tool,
39
+ inputSchema: tool.inputSchema ? chunkGU4EWMZB_cjs.stringify(zodToJson.zodToJsonSchema(tool.inputSchema)) : void 0,
40
+ outputSchema: tool.outputSchema ? chunkGU4EWMZB_cjs.stringify(zodToJson.zodToJsonSchema(tool.outputSchema)) : void 0
41
+ };
42
+ return acc;
43
+ },
44
+ {}
45
+ );
46
+ return serializedTools;
47
+ } catch (error) {
48
+ return chunkSUKFO7UM_cjs.handleError(error, "Error getting tools");
49
+ }
50
+ }
51
+ });
52
+ var GET_TOOL_BY_ID_ROUTE = chunkAVRO3FIN_cjs.createRoute({
53
+ method: "GET",
54
+ path: "/api/tools/:toolId",
55
+ responseType: "json",
56
+ pathParamSchema: chunkBRI4GUZ2_cjs.toolIdPathParams,
57
+ responseSchema: chunkBRI4GUZ2_cjs.serializedToolSchema,
58
+ summary: "Get tool by ID",
59
+ description: "Returns details for a specific tool including its schema and configuration",
60
+ tags: ["Tools"],
61
+ handler: async ({ mastra, tools, toolId }) => {
62
+ try {
63
+ let tool;
64
+ if (tools && Object.keys(tools).length > 0) {
65
+ tool = Object.values(tools).find((t) => t.id === toolId);
66
+ } else {
67
+ tool = mastra.getToolById(toolId);
68
+ }
69
+ if (!tool) {
70
+ throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Tool not found" });
71
+ }
72
+ const serializedTool = {
73
+ ...tool,
74
+ inputSchema: tool.inputSchema ? chunkGU4EWMZB_cjs.stringify(zodToJson.zodToJsonSchema(tool.inputSchema)) : void 0,
75
+ outputSchema: tool.outputSchema ? chunkGU4EWMZB_cjs.stringify(zodToJson.zodToJsonSchema(tool.outputSchema)) : void 0
76
+ };
77
+ return serializedTool;
78
+ } catch (error) {
79
+ return chunkSUKFO7UM_cjs.handleError(error, "Error getting tool");
80
+ }
81
+ }
82
+ });
83
+ var EXECUTE_TOOL_ROUTE = chunkAVRO3FIN_cjs.createRoute({
84
+ method: "POST",
85
+ path: "/api/tools/:toolId/execute",
86
+ responseType: "json",
87
+ pathParamSchema: chunkBRI4GUZ2_cjs.toolIdPathParams,
88
+ queryParamSchema: chunkMCYD5LW7_cjs.optionalRunIdSchema,
89
+ bodySchema: chunkBRI4GUZ2_cjs.executeToolContextBodySchema,
90
+ responseSchema: chunkBRI4GUZ2_cjs.executeToolResponseSchema,
91
+ summary: "Execute tool",
92
+ description: "Executes a specific tool with the provided input data",
93
+ tags: ["Tools"],
94
+ handler: async ({ mastra, runId, toolId, tools: tools$1, requestContext, ...bodyParams }) => {
95
+ try {
96
+ if (!toolId) {
97
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Tool ID is required" });
98
+ }
99
+ let tool;
100
+ if (tools$1 && Object.keys(tools$1).length > 0) {
101
+ tool = Object.values(tools$1).find((t) => t.id === toolId);
102
+ } else {
103
+ tool = mastra.getToolById(toolId);
104
+ }
105
+ if (!tool) {
106
+ throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Tool not found" });
107
+ }
108
+ if (!tool?.execute) {
109
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Tool is not executable" });
110
+ }
111
+ const { data } = bodyParams;
112
+ chunk5W4RPVTK_cjs.validateBody({ data });
113
+ if (tools.isVercelTool(tool)) {
114
+ const result2 = await tool.execute(data);
115
+ return result2;
116
+ }
117
+ const result = await tool.execute(data, {
118
+ mastra,
119
+ requestContext,
120
+ // TODO: Pass proper tracing context when server API supports tracing
121
+ tracingContext: { currentSpan: void 0 },
122
+ ...runId ? {
123
+ workflow: {
124
+ runId,
125
+ suspend: async () => {
126
+ }
127
+ }
128
+ } : {}
129
+ });
130
+ return result;
131
+ } catch (error) {
132
+ return chunkSUKFO7UM_cjs.handleError(error, "Error executing tool");
133
+ }
134
+ }
135
+ });
136
+ var GET_AGENT_TOOL_ROUTE = chunkAVRO3FIN_cjs.createRoute({
137
+ method: "GET",
138
+ path: "/api/agents/:agentId/tools/:toolId",
139
+ responseType: "json",
140
+ pathParamSchema: chunkBRI4GUZ2_cjs.agentToolPathParams,
141
+ responseSchema: chunkBRI4GUZ2_cjs.serializedToolSchema,
142
+ summary: "Get agent tool",
143
+ description: "Returns details for a specific tool assigned to the agent",
144
+ tags: ["Agents", "Tools"],
145
+ handler: async ({ mastra, agentId, toolId, requestContext }) => {
146
+ try {
147
+ const agent = agentId ? mastra.getAgentById(agentId) : null;
148
+ if (!agent) {
149
+ throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Agent not found" });
150
+ }
151
+ const agentTools = await agent.listTools({ requestContext });
152
+ const tool = Object.values(agentTools || {}).find((tool2) => tool2.id === toolId);
153
+ if (!tool) {
154
+ throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Tool not found" });
155
+ }
156
+ const serializedTool = {
157
+ ...tool,
158
+ inputSchema: tool.inputSchema ? chunkGU4EWMZB_cjs.stringify(zodToJson.zodToJsonSchema(tool.inputSchema)) : void 0,
159
+ outputSchema: tool.outputSchema ? chunkGU4EWMZB_cjs.stringify(zodToJson.zodToJsonSchema(tool.outputSchema)) : void 0
160
+ };
161
+ return serializedTool;
162
+ } catch (error) {
163
+ return chunkSUKFO7UM_cjs.handleError(error, "Error getting agent tool");
164
+ }
165
+ }
166
+ });
167
+ var EXECUTE_AGENT_TOOL_ROUTE = chunkAVRO3FIN_cjs.createRoute({
168
+ method: "POST",
169
+ path: "/api/agents/:agentId/tools/:toolId/execute",
170
+ responseType: "json",
171
+ pathParamSchema: chunkBRI4GUZ2_cjs.agentToolPathParams,
172
+ bodySchema: chunkBRI4GUZ2_cjs.executeToolBodySchema,
173
+ responseSchema: chunkBRI4GUZ2_cjs.executeToolResponseSchema,
174
+ summary: "Execute agent tool",
175
+ description: "Executes a specific tool assigned to the agent with the provided input data",
176
+ tags: ["Agents", "Tools"],
177
+ handler: async ({ mastra, agentId, toolId, data, requestContext }) => {
178
+ try {
179
+ const agent = agentId ? mastra.getAgentById(agentId) : null;
180
+ if (!agent) {
181
+ throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Tool not found" });
182
+ }
183
+ const agentTools = await agent.listTools({ requestContext });
184
+ const tool = Object.values(agentTools || {}).find((tool2) => tool2.id === toolId);
185
+ if (!tool) {
186
+ throw new chunk64ITUOXI_cjs.HTTPException(404, { message: "Tool not found" });
187
+ }
188
+ if (!tool?.execute) {
189
+ throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Tool is not executable" });
190
+ }
191
+ const result = await tool.execute(data, {
192
+ mastra,
193
+ requestContext,
194
+ // TODO: Pass proper tracing context when server API supports tracing
195
+ tracingContext: { currentSpan: void 0 }
196
+ });
197
+ return result;
198
+ } catch (error) {
199
+ return chunkSUKFO7UM_cjs.handleError(error, "Error executing agent tool");
200
+ }
201
+ }
202
+ });
203
+
204
+ exports.EXECUTE_AGENT_TOOL_ROUTE = EXECUTE_AGENT_TOOL_ROUTE;
205
+ exports.EXECUTE_TOOL_ROUTE = EXECUTE_TOOL_ROUTE;
206
+ exports.GET_AGENT_TOOL_ROUTE = GET_AGENT_TOOL_ROUTE;
207
+ exports.GET_TOOL_BY_ID_ROUTE = GET_TOOL_BY_ID_ROUTE;
208
+ exports.LIST_TOOLS_ROUTE = LIST_TOOLS_ROUTE;
209
+ exports.tools_exports = tools_exports;
210
+ //# sourceMappingURL=chunk-6MP2S6VI.cjs.map
211
+ //# sourceMappingURL=chunk-6MP2S6VI.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/tools.ts"],"names":["__export","createRoute","listToolsResponseSchema","stringify","zodToJsonSchema","handleError","toolIdPathParams","serializedToolSchema","HTTPException","optionalRunIdSchema","executeToolContextBodySchema","executeToolResponseSchema","tools","validateBody","isVercelTool","result","agentToolPathParams","tool","executeToolBodySchema"],"mappings":"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","file":"chunk-6MP2S6VI.cjs","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"]}
@@ -1,9 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __export = (target, all) => {
3
- for (var name in all)
4
- __defProp(target, name, { get: all[name], enumerable: true });
5
- };
6
-
7
1
  // src/server/http-exception.ts
8
2
  var HTTPException = class extends Error {
9
3
  res;
@@ -17,6 +11,7 @@ var HTTPException = class extends Error {
17
11
  super(options?.message, { cause: options?.cause });
18
12
  this.res = options?.res;
19
13
  this.status = status;
14
+ this.stack = options?.stack || this.stack;
20
15
  }
21
16
  /**
22
17
  * Returns the response object associated with the exception.
@@ -37,4 +32,6 @@ var HTTPException = class extends Error {
37
32
  }
38
33
  };
39
34
 
40
- export { HTTPException, __export };
35
+ export { HTTPException };
36
+ //# sourceMappingURL=chunk-6QWQZI4Q.js.map
37
+ //# sourceMappingURL=chunk-6QWQZI4Q.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/http-exception.ts"],"names":[],"mappings":";AA0GO,IAAM,aAAA,GAAN,cAA4B,KAAA,CAAM;AAAA,EAC9B,GAAA;AAAA,EACA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOT,WAAA,CAAY,MAAA,GAAqB,GAAA,EAAK,OAAA,EAAgC;AACpE,IAAA,KAAA,CAAM,SAAS,OAAA,EAAS,EAAE,KAAA,EAAO,OAAA,EAAS,OAAO,CAAA;AACjD,IAAA,IAAA,CAAK,MAAM,OAAA,EAAS,GAAA;AACpB,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,KAAA,GAAQ,OAAA,EAAS,KAAA,IAAS,IAAA,CAAK,KAAA;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAA,GAAwB;AACtB,IAAA,IAAI,KAAK,GAAA,EAAK;AACZ,MAAA,MAAM,WAAA,GAAc,IAAI,QAAA,CAAS,IAAA,CAAK,IAAI,IAAA,EAAM;AAAA,QAC9C,QAAQ,IAAA,CAAK,MAAA;AAAA,QACb,OAAA,EAAS,KAAK,GAAA,CAAI;AAAA,OACnB,CAAA;AACD,MAAA,OAAO,WAAA;AAAA,IACT;AACA,IAAA,OAAO,IAAI,QAAA,CAAS,IAAA,CAAK,OAAA,EAAS;AAAA,MAChC,QAAQ,IAAA,CAAK;AAAA,KACd,CAAA;AAAA,EACH;AACF","file":"chunk-6QWQZI4Q.js","sourcesContent":["// Copied from https://github.com/honojs/hono/blob/main/packages/hono/src/http-exception.ts\n\n/**\n * @module\n * This module provides the `HTTPException` class.\n */\n\ntype InfoStatusCode = 100 | 101 | 102 | 103;\ntype SuccessStatusCode = 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 226;\ntype DeprecatedStatusCode = 305 | 306;\ntype RedirectStatusCode = 300 | 301 | 302 | 303 | 304 | DeprecatedStatusCode | 307 | 308;\ntype ClientErrorStatusCode =\n | 400\n | 401\n | 402\n | 403\n | 404\n | 405\n | 406\n | 407\n | 408\n | 409\n | 410\n | 411\n | 412\n | 413\n | 414\n | 415\n | 416\n | 417\n | 418\n | 421\n | 422\n | 423\n | 424\n | 425\n | 426\n | 428\n | 429\n | 431\n | 451;\ntype ServerErrorStatusCode = 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511;\n\n/**\n * `UnofficialStatusCode` can be used to specify an unofficial status code.\n * @example\n *\n * ```ts\n * app.get('/unknown', (c) => {\n * return c.text(\"Unknown Error\", 520 as UnofficialStatusCode)\n * })\n * ```\n */\nexport type UnofficialStatusCode = -1;\n\n/**\n * If you want to use an unofficial status, use `UnofficialStatusCode`.\n */\nexport type StatusCode =\n | InfoStatusCode\n | SuccessStatusCode\n | RedirectStatusCode\n | ClientErrorStatusCode\n | ServerErrorStatusCode\n | UnofficialStatusCode;\n\n/**\n * Options for creating an `HTTPException`.\n * @property res - Optional response object to use.\n * @property message - Optional custom error message.\n * @property cause - Optional cause of the error.\n * @property stack - Optional stack trace for the error.\n */\ntype HTTPExceptionOptions = {\n res?: Response;\n message?: string;\n cause?: unknown;\n stack?: string;\n};\n\n/**\n * `HTTPException` must be used when a fatal error such as authentication failure occurs.\n *\n * @see {@link https://hono.dev/docs/api/exception}\n *\n * @param {StatusCode} status - status code of HTTPException\n * @param {HTTPExceptionOptions} options - options of HTTPException\n * @param {HTTPExceptionOptions[\"res\"]} options.res - response of options of HTTPException\n * @param {HTTPExceptionOptions[\"message\"]} options.message - message of options of HTTPException\n * @param {HTTPExceptionOptions[\"cause\"]} options.cause - cause of options of HTTPException\n *\n * @example\n * ```ts\n * import { HTTPException } from 'hono/http-exception'\n *\n * // ...\n *\n * app.post('/auth', async (c, next) => {\n * // authentication\n * if (authorized === false) {\n * throw new HTTPException(401, { message: 'Custom error message' })\n * }\n * await next()\n * })\n * ```\n */\nexport class HTTPException extends Error {\n readonly res?: Response;\n readonly status: StatusCode;\n\n /**\n * Creates an instance of `HTTPException`.\n * @param status - HTTP status code for the exception. Defaults to 500.\n * @param options - Additional options for the exception.\n */\n constructor(status: StatusCode = 500, options?: HTTPExceptionOptions) {\n super(options?.message, { cause: options?.cause });\n this.res = options?.res;\n this.status = status;\n this.stack = options?.stack || this.stack;\n }\n\n /**\n * Returns the response object associated with the exception.\n * If a response object is not provided, a new response is created with the error message and status code.\n * @returns The response object.\n */\n getResponse(): Response {\n if (this.res) {\n const newResponse = new Response(this.res.body, {\n status: this.status,\n headers: this.res.headers,\n });\n return newResponse;\n }\n return new Response(this.message, {\n status: this.status,\n });\n }\n}\n"]}
@@ -0,0 +1,225 @@
1
+ import { zodToJsonSchema } from '@mastra/core/utils/zod-to-json';
2
+ import { z } from 'zod';
3
+
4
+ // src/server/server-adapter/openapi-utils.ts
5
+ function generateRouteOpenAPI({
6
+ method,
7
+ path,
8
+ summary,
9
+ description,
10
+ tags = [],
11
+ pathParamSchema,
12
+ queryParamSchema,
13
+ bodySchema,
14
+ responseSchema,
15
+ deprecated
16
+ }) {
17
+ const route = {
18
+ summary: summary || `${method} ${path}`,
19
+ description,
20
+ tags,
21
+ deprecated,
22
+ responses: {
23
+ 200: {
24
+ description: "Successful response"
25
+ }
26
+ }
27
+ };
28
+ if (pathParamSchema || queryParamSchema) {
29
+ route.requestParams = {};
30
+ if (pathParamSchema) {
31
+ route.requestParams.path = pathParamSchema;
32
+ }
33
+ if (queryParamSchema) {
34
+ route.requestParams.query = queryParamSchema;
35
+ }
36
+ }
37
+ if (bodySchema) {
38
+ route.requestBody = {
39
+ content: {
40
+ "application/json": {
41
+ schema: bodySchema
42
+ }
43
+ }
44
+ };
45
+ }
46
+ if (responseSchema) {
47
+ route.responses[200] = {
48
+ description: "Successful response",
49
+ content: {
50
+ "application/json": {
51
+ schema: responseSchema
52
+ }
53
+ }
54
+ };
55
+ }
56
+ return route;
57
+ }
58
+ function convertZodToJsonSchema(spec) {
59
+ const converted = {
60
+ summary: spec.summary,
61
+ description: spec.description,
62
+ tags: spec.tags,
63
+ responses: {}
64
+ };
65
+ const parameters = [];
66
+ if (spec.requestParams?.path) {
67
+ const pathSchema = zodToJsonSchema(spec.requestParams.path, "openApi3", "none");
68
+ const properties = pathSchema.properties || {};
69
+ Object.entries(properties).forEach(([name, schema]) => {
70
+ parameters.push({
71
+ name,
72
+ in: "path",
73
+ required: true,
74
+ description: schema.description || `The ${name} parameter`,
75
+ schema
76
+ });
77
+ });
78
+ }
79
+ if (spec.requestParams?.query) {
80
+ const querySchema = zodToJsonSchema(spec.requestParams.query, "openApi3", "none");
81
+ const properties = querySchema.properties || {};
82
+ const required = querySchema.required || [];
83
+ Object.entries(properties).forEach(([name, schema]) => {
84
+ parameters.push({
85
+ name,
86
+ in: "query",
87
+ required: required.includes(name),
88
+ description: schema.description || `Query parameter: ${name}`,
89
+ schema
90
+ });
91
+ });
92
+ }
93
+ if (parameters.length > 0) {
94
+ converted.parameters = parameters;
95
+ }
96
+ if (spec.requestBody?.content?.["application/json"]?.schema) {
97
+ converted.requestBody = {
98
+ required: true,
99
+ content: {
100
+ "application/json": {
101
+ schema: zodToJsonSchema(spec.requestBody.content["application/json"].schema, "openApi3", "none")
102
+ }
103
+ }
104
+ };
105
+ }
106
+ Object.entries(spec.responses).forEach(([statusCode, response]) => {
107
+ converted.responses[statusCode] = {
108
+ description: response.description
109
+ };
110
+ if (response.content?.["application/json"]?.schema) {
111
+ converted.responses[statusCode].content = {
112
+ "application/json": {
113
+ schema: zodToJsonSchema(response.content["application/json"].schema, "openApi3", "none")
114
+ }
115
+ };
116
+ }
117
+ });
118
+ return converted;
119
+ }
120
+ function generateOpenAPIDocument(routes, info) {
121
+ const paths = {};
122
+ routes.forEach((route) => {
123
+ if (!route.openapi) return;
124
+ const openapiPath = route.path.replace(/:(\w+)/g, "{$1}");
125
+ if (!paths[openapiPath]) {
126
+ paths[openapiPath] = {};
127
+ }
128
+ paths[openapiPath][route.method.toLowerCase()] = convertZodToJsonSchema(route.openapi);
129
+ });
130
+ return {
131
+ openapi: "3.1.0",
132
+ info: {
133
+ title: info.title,
134
+ version: info.version,
135
+ description: info.description
136
+ },
137
+ paths
138
+ };
139
+ }
140
+ function pickParams(schema, params) {
141
+ const keys = Object.keys(schema.shape);
142
+ const result = {};
143
+ for (const key of keys) {
144
+ if (key in params) {
145
+ result[key] = params[key];
146
+ }
147
+ }
148
+ return result;
149
+ }
150
+ function jsonQueryParam(schema) {
151
+ return z.union([
152
+ schema,
153
+ // Already the expected type (non-string input)
154
+ z.string().transform((val, ctx) => {
155
+ try {
156
+ const parsed = JSON.parse(val);
157
+ const result = schema.safeParse(parsed);
158
+ if (!result.success) {
159
+ for (const issue of result.error.issues) {
160
+ ctx.addIssue({
161
+ code: z.ZodIssueCode.custom,
162
+ message: issue.message,
163
+ path: issue.path
164
+ });
165
+ }
166
+ return z.NEVER;
167
+ }
168
+ return result.data;
169
+ } catch (e) {
170
+ ctx.addIssue({
171
+ code: z.ZodIssueCode.custom,
172
+ message: `Invalid JSON: ${e instanceof Error ? e.message : "parse error"}`
173
+ });
174
+ return z.NEVER;
175
+ }
176
+ })
177
+ ]);
178
+ }
179
+ function getZodTypeName(schema) {
180
+ return schema?._def?.typeName;
181
+ }
182
+ function isComplexType(schema) {
183
+ let inner = schema;
184
+ let typeName = getZodTypeName(inner);
185
+ while (typeName === "ZodOptional" || typeName === "ZodNullable") {
186
+ inner = inner._def.innerType;
187
+ typeName = getZodTypeName(inner);
188
+ }
189
+ return typeName === "ZodArray" || typeName === "ZodRecord" || typeName === "ZodObject";
190
+ }
191
+ function wrapSchemaForQueryParams(schema) {
192
+ const newShape = {};
193
+ for (const [key, fieldSchema] of Object.entries(schema.shape)) {
194
+ if (isComplexType(fieldSchema)) {
195
+ newShape[key] = jsonQueryParam(fieldSchema);
196
+ } else {
197
+ newShape[key] = fieldSchema;
198
+ }
199
+ }
200
+ return z.object(newShape);
201
+ }
202
+ function createRoute(config) {
203
+ const { summary, description, tags, deprecated, ...baseRoute } = config;
204
+ const openapi = config.method !== "ALL" ? generateRouteOpenAPI({
205
+ method: config.method,
206
+ path: config.path,
207
+ summary,
208
+ description,
209
+ tags,
210
+ pathParamSchema: config.pathParamSchema,
211
+ queryParamSchema: config.queryParamSchema,
212
+ bodySchema: config.bodySchema,
213
+ responseSchema: config.responseSchema,
214
+ deprecated
215
+ }) : void 0;
216
+ return {
217
+ ...baseRoute,
218
+ openapi,
219
+ deprecated
220
+ };
221
+ }
222
+
223
+ export { createRoute, generateOpenAPIDocument, jsonQueryParam, pickParams, wrapSchemaForQueryParams };
224
+ //# sourceMappingURL=chunk-7S7ALPCY.js.map
225
+ //# sourceMappingURL=chunk-7S7ALPCY.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-7S7ALPCY.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 { 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: ZodRawShape = {};\n\n for (const [key, fieldSchema] of Object.entries(schema.shape)) {\n if (isComplexType(fieldSchema as ZodTypeAny)) {\n // Wrap complex types to accept JSON strings\n newShape[key] = jsonQueryParam(fieldSchema as ZodTypeAny);\n } else {\n // Keep simple types as-is\n newShape[key] = fieldSchema as ZodTypeAny;\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}\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"]}