@mastra/server 1.48.0 → 1.49.0-alpha.2

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 (273) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/{api-schema-manifest-RP35YQV7.js → api-schema-manifest-DJMDRR6X.js} +4 -4
  3. package/dist/{api-schema-manifest-RP35YQV7.js.map → api-schema-manifest-DJMDRR6X.js.map} +1 -1
  4. package/dist/{api-schema-manifest-4VQSWI7S.cjs → api-schema-manifest-TLQAM6FO.cjs} +6 -6
  5. package/dist/{api-schema-manifest-4VQSWI7S.cjs.map → api-schema-manifest-TLQAM6FO.cjs.map} +1 -1
  6. package/dist/{chunk-5O3XY7Z3.cjs → chunk-2LOCN6TU.cjs} +6 -6
  7. package/dist/{chunk-5O3XY7Z3.cjs.map → chunk-2LOCN6TU.cjs.map} +1 -1
  8. package/dist/{chunk-MTWCBGFH.cjs → chunk-2S5ERWRO.cjs} +28 -28
  9. package/dist/{chunk-MTWCBGFH.cjs.map → chunk-2S5ERWRO.cjs.map} +1 -1
  10. package/dist/{chunk-22YWJT5H.js → chunk-2XPIKRSZ.js} +3 -3
  11. package/dist/{chunk-22YWJT5H.js.map → chunk-2XPIKRSZ.js.map} +1 -1
  12. package/dist/{chunk-AR5PBVYY.cjs → chunk-34TZGECU.cjs} +10 -10
  13. package/dist/{chunk-AR5PBVYY.cjs.map → chunk-34TZGECU.cjs.map} +1 -1
  14. package/dist/{chunk-ZJM23PJU.js → chunk-3O6HFZKJ.js} +4 -4
  15. package/dist/{chunk-ZJM23PJU.js.map → chunk-3O6HFZKJ.js.map} +1 -1
  16. package/dist/{chunk-SORUUFZK.cjs → chunk-4HG3QZXF.cjs} +19 -19
  17. package/dist/{chunk-SORUUFZK.cjs.map → chunk-4HG3QZXF.cjs.map} +1 -1
  18. package/dist/{chunk-H7NWUAHC.cjs → chunk-4I3ICQEM.cjs} +6 -6
  19. package/dist/{chunk-H7NWUAHC.cjs.map → chunk-4I3ICQEM.cjs.map} +1 -1
  20. package/dist/{chunk-ICWJHWEM.js → chunk-4JSAO4AK.js} +3 -3
  21. package/dist/{chunk-ICWJHWEM.js.map → chunk-4JSAO4AK.js.map} +1 -1
  22. package/dist/{chunk-OJLVR6RK.js → chunk-4LBURZRY.js} +3 -3
  23. package/dist/{chunk-OJLVR6RK.js.map → chunk-4LBURZRY.js.map} +1 -1
  24. package/dist/{chunk-6QZLGOUC.cjs → chunk-4RC5RIHE.cjs} +6 -6
  25. package/dist/{chunk-6QZLGOUC.cjs.map → chunk-4RC5RIHE.cjs.map} +1 -1
  26. package/dist/{chunk-KR2OUW3N.js → chunk-4USTGEP4.js} +4 -4
  27. package/dist/{chunk-KR2OUW3N.js.map → chunk-4USTGEP4.js.map} +1 -1
  28. package/dist/{chunk-V4X6NCFW.js → chunk-5FKIGNIU.js} +42 -42
  29. package/dist/{chunk-V4X6NCFW.js.map → chunk-5FKIGNIU.js.map} +1 -1
  30. package/dist/{chunk-H4HJRAHU.js → chunk-6TV4PLBV.js} +3 -3
  31. package/dist/{chunk-H4HJRAHU.js.map → chunk-6TV4PLBV.js.map} +1 -1
  32. package/dist/{chunk-USYLK73B.js → chunk-7FUA4DRZ.js} +4 -4
  33. package/dist/{chunk-USYLK73B.js.map → chunk-7FUA4DRZ.js.map} +1 -1
  34. package/dist/{chunk-Y32XM46K.cjs → chunk-7PSQEVII.cjs} +71 -71
  35. package/dist/{chunk-Y32XM46K.cjs.map → chunk-7PSQEVII.cjs.map} +1 -1
  36. package/dist/{chunk-J6XQWEEV.cjs → chunk-7X2ZLS5H.cjs} +8 -8
  37. package/dist/{chunk-J6XQWEEV.cjs.map → chunk-7X2ZLS5H.cjs.map} +1 -1
  38. package/dist/{chunk-V6Z2DEIO.js → chunk-AHK2A5GG.js} +3 -3
  39. package/dist/{chunk-V6Z2DEIO.js.map → chunk-AHK2A5GG.js.map} +1 -1
  40. package/dist/{chunk-LAY7G3RT.cjs → chunk-APG3BC3Q.cjs} +8 -8
  41. package/dist/{chunk-LAY7G3RT.cjs.map → chunk-APG3BC3Q.cjs.map} +1 -1
  42. package/dist/{chunk-3EZOV6A3.cjs → chunk-AQZ47L6G.cjs} +8 -8
  43. package/dist/{chunk-3EZOV6A3.cjs.map → chunk-AQZ47L6G.cjs.map} +1 -1
  44. package/dist/{chunk-DN2NUSL2.cjs → chunk-B5MQQ47W.cjs} +2 -2
  45. package/dist/{chunk-DN2NUSL2.cjs.map → chunk-B5MQQ47W.cjs.map} +1 -1
  46. package/dist/{chunk-WLQ4XLHG.js → chunk-BISSV5JO.js} +4 -4
  47. package/dist/{chunk-WLQ4XLHG.js.map → chunk-BISSV5JO.js.map} +1 -1
  48. package/dist/{chunk-Q5CGBHAI.cjs → chunk-BSJXD74O.cjs} +10 -10
  49. package/dist/{chunk-Q5CGBHAI.cjs.map → chunk-BSJXD74O.cjs.map} +1 -1
  50. package/dist/{chunk-VWZFDHUG.js → chunk-CFWY442V.js} +3 -3
  51. package/dist/{chunk-VWZFDHUG.js.map → chunk-CFWY442V.js.map} +1 -1
  52. package/dist/{chunk-A5GLESMH.js → chunk-CZMLESI4.js} +3 -3
  53. package/dist/{chunk-A5GLESMH.js.map → chunk-CZMLESI4.js.map} +1 -1
  54. package/dist/{chunk-LVGS5ADS.cjs → chunk-DKAAQTWH.cjs} +28 -28
  55. package/dist/{chunk-LVGS5ADS.cjs.map → chunk-DKAAQTWH.cjs.map} +1 -1
  56. package/dist/{chunk-RUOOTVGK.js → chunk-DL3ZW547.js} +3 -3
  57. package/dist/{chunk-RUOOTVGK.js.map → chunk-DL3ZW547.js.map} +1 -1
  58. package/dist/{chunk-I4X4UHQW.cjs → chunk-DVKCI3XT.cjs} +11 -11
  59. package/dist/{chunk-I4X4UHQW.cjs.map → chunk-DVKCI3XT.cjs.map} +1 -1
  60. package/dist/{chunk-56RJJ6PJ.js → chunk-DZQUDR25.js} +3 -3
  61. package/dist/{chunk-56RJJ6PJ.js.map → chunk-DZQUDR25.js.map} +1 -1
  62. package/dist/{chunk-RXSZMJIR.js → chunk-E2RUK5TV.js} +3 -3
  63. package/dist/{chunk-RXSZMJIR.js.map → chunk-E2RUK5TV.js.map} +1 -1
  64. package/dist/{chunk-KN22ZEKU.cjs → chunk-ETPE53DR.cjs} +9 -9
  65. package/dist/{chunk-KN22ZEKU.cjs.map → chunk-ETPE53DR.cjs.map} +1 -1
  66. package/dist/{chunk-GNVPX27J.js → chunk-G5YHDBGD.js} +3 -3
  67. package/dist/{chunk-GNVPX27J.js.map → chunk-G5YHDBGD.js.map} +1 -1
  68. package/dist/{chunk-FR5QBXVS.cjs → chunk-GD4WWM2T.cjs} +4 -4
  69. package/dist/{chunk-FR5QBXVS.cjs.map → chunk-GD4WWM2T.cjs.map} +1 -1
  70. package/dist/{chunk-YRZYCQGE.cjs → chunk-GDCCVDX7.cjs} +11 -11
  71. package/dist/{chunk-YRZYCQGE.cjs.map → chunk-GDCCVDX7.cjs.map} +1 -1
  72. package/dist/{chunk-Z5MTOVTR.js → chunk-GDTF6ABE.js} +2 -2
  73. package/dist/{chunk-Z5MTOVTR.js.map → chunk-GDTF6ABE.js.map} +1 -1
  74. package/dist/{chunk-JYWPYMQS.cjs → chunk-GH267MEV.cjs} +5 -5
  75. package/dist/{chunk-JYWPYMQS.cjs.map → chunk-GH267MEV.cjs.map} +1 -1
  76. package/dist/{chunk-2MEUH7JT.js → chunk-GOBORDBJ.js} +3 -3
  77. package/dist/{chunk-2MEUH7JT.js.map → chunk-GOBORDBJ.js.map} +1 -1
  78. package/dist/{chunk-SCY53JIH.cjs → chunk-GVCHXBVJ.cjs} +40 -40
  79. package/dist/{chunk-SCY53JIH.cjs.map → chunk-GVCHXBVJ.cjs.map} +1 -1
  80. package/dist/{chunk-UXYPH6HP.cjs → chunk-H55JQOSM.cjs} +13 -13
  81. package/dist/{chunk-UXYPH6HP.cjs.map → chunk-H55JQOSM.cjs.map} +1 -1
  82. package/dist/{chunk-PHATOO2U.js → chunk-IFY2QLAW.js} +3 -3
  83. package/dist/{chunk-PHATOO2U.js.map → chunk-IFY2QLAW.js.map} +1 -1
  84. package/dist/{chunk-FPJGLJUZ.cjs → chunk-IOZANQQU.cjs} +37 -37
  85. package/dist/{chunk-FPJGLJUZ.cjs.map → chunk-IOZANQQU.cjs.map} +1 -1
  86. package/dist/{chunk-J63TLQKU.js → chunk-ITBNSSQN.js} +5 -5
  87. package/dist/{chunk-J63TLQKU.js.map → chunk-ITBNSSQN.js.map} +1 -1
  88. package/dist/{chunk-YDUA7L5F.cjs → chunk-J4FY6FR2.cjs} +16 -16
  89. package/dist/{chunk-YDUA7L5F.cjs.map → chunk-J4FY6FR2.cjs.map} +1 -1
  90. package/dist/{chunk-5C5P4MZE.js → chunk-J4OSII66.js} +3 -3
  91. package/dist/{chunk-5C5P4MZE.js.map → chunk-J4OSII66.js.map} +1 -1
  92. package/dist/chunk-JCL5EKZP.cjs +753 -0
  93. package/dist/{chunk-FKM644Z6.cjs.map → chunk-JCL5EKZP.cjs.map} +1 -1
  94. package/dist/{chunk-TWUWF3AU.js → chunk-JCWJ3WWO.js} +3 -3
  95. package/dist/{chunk-TWUWF3AU.js.map → chunk-JCWJ3WWO.js.map} +1 -1
  96. package/dist/{chunk-EMQZIPXG.cjs → chunk-K4MLHP6P.cjs} +8 -8
  97. package/dist/{chunk-EMQZIPXG.cjs.map → chunk-K4MLHP6P.cjs.map} +1 -1
  98. package/dist/{chunk-EG6DDVIJ.cjs → chunk-KGZ4BTNC.cjs} +8 -8
  99. package/dist/{chunk-EG6DDVIJ.cjs.map → chunk-KGZ4BTNC.cjs.map} +1 -1
  100. package/dist/{chunk-TGFTKXT4.cjs → chunk-KKAK5N6V.cjs} +10 -10
  101. package/dist/{chunk-TGFTKXT4.cjs.map → chunk-KKAK5N6V.cjs.map} +1 -1
  102. package/dist/{chunk-3MJF6POS.js → chunk-KSWNLX2V.js} +3 -3
  103. package/dist/{chunk-3MJF6POS.js.map → chunk-KSWNLX2V.js.map} +1 -1
  104. package/dist/{chunk-DX4ROVTA.js → chunk-LUWUASNN.js} +4 -4
  105. package/dist/{chunk-DX4ROVTA.js.map → chunk-LUWUASNN.js.map} +1 -1
  106. package/dist/{chunk-XPJZ72ZH.cjs → chunk-LXTEG6CY.cjs} +6 -6
  107. package/dist/{chunk-XPJZ72ZH.cjs.map → chunk-LXTEG6CY.cjs.map} +1 -1
  108. package/dist/{chunk-ZGAUP346.cjs → chunk-MGHFYPEW.cjs} +10 -10
  109. package/dist/{chunk-ZGAUP346.cjs.map → chunk-MGHFYPEW.cjs.map} +1 -1
  110. package/dist/{chunk-SDSDV6TA.js → chunk-MJ5DKV6W.js} +3 -3
  111. package/dist/{chunk-SDSDV6TA.js.map → chunk-MJ5DKV6W.js.map} +1 -1
  112. package/dist/{chunk-I4COPLOY.cjs → chunk-MM6U5OIT.cjs} +36 -36
  113. package/dist/{chunk-I4COPLOY.cjs.map → chunk-MM6U5OIT.cjs.map} +1 -1
  114. package/dist/{chunk-LHEZDXWV.js → chunk-MOT4TTAR.js} +3 -3
  115. package/dist/{chunk-LHEZDXWV.js.map → chunk-MOT4TTAR.js.map} +1 -1
  116. package/dist/{chunk-5GQWTNAY.cjs → chunk-N6D2VLXK.cjs} +101 -101
  117. package/dist/{chunk-5GQWTNAY.cjs.map → chunk-N6D2VLXK.cjs.map} +1 -1
  118. package/dist/{chunk-BEPGHVMJ.js → chunk-NEX5YORG.js} +3 -3
  119. package/dist/{chunk-BEPGHVMJ.js.map → chunk-NEX5YORG.js.map} +1 -1
  120. package/dist/{chunk-JGHI6QE5.js → chunk-NEZJXC3B.js} +3 -3
  121. package/dist/{chunk-JGHI6QE5.js.map → chunk-NEZJXC3B.js.map} +1 -1
  122. package/dist/{chunk-LRRO5PBP.cjs → chunk-NGF5DIWK.cjs} +8 -8
  123. package/dist/{chunk-LRRO5PBP.cjs.map → chunk-NGF5DIWK.cjs.map} +1 -1
  124. package/dist/{chunk-SMQKZ2QV.js → chunk-O5HPGCIK.js} +3 -3
  125. package/dist/{chunk-SMQKZ2QV.js.map → chunk-O5HPGCIK.js.map} +1 -1
  126. package/dist/{chunk-OJB6MLRD.cjs → chunk-OE7F6E5N.cjs} +8 -8
  127. package/dist/{chunk-OJB6MLRD.cjs.map → chunk-OE7F6E5N.cjs.map} +1 -1
  128. package/dist/{chunk-55BEULMJ.cjs → chunk-OJBMFAFL.cjs} +11 -11
  129. package/dist/{chunk-55BEULMJ.cjs.map → chunk-OJBMFAFL.cjs.map} +1 -1
  130. package/dist/{chunk-MDXMBAYV.js → chunk-PGEKAIAI.js} +3 -3
  131. package/dist/{chunk-MDXMBAYV.js.map → chunk-PGEKAIAI.js.map} +1 -1
  132. package/dist/{chunk-KC52XQSP.js → chunk-QGCCLIGC.js} +3 -3
  133. package/dist/{chunk-KC52XQSP.js.map → chunk-QGCCLIGC.js.map} +1 -1
  134. package/dist/{chunk-7WWWWHIQ.js → chunk-QMSBHMHT.js} +3 -3
  135. package/dist/{chunk-7WWWWHIQ.js.map → chunk-QMSBHMHT.js.map} +1 -1
  136. package/dist/{chunk-DPTBGWU7.js → chunk-QZ4V6KTK.js} +4 -4
  137. package/dist/{chunk-DPTBGWU7.js.map → chunk-QZ4V6KTK.js.map} +1 -1
  138. package/dist/{chunk-ZBOTGUPW.js → chunk-S3THGNKG.js} +5 -5
  139. package/dist/{chunk-ZBOTGUPW.js.map → chunk-S3THGNKG.js.map} +1 -1
  140. package/dist/{chunk-RUBHF3J4.js → chunk-SCL4EOYX.js} +3 -3
  141. package/dist/{chunk-RUBHF3J4.js.map → chunk-SCL4EOYX.js.map} +1 -1
  142. package/dist/{chunk-SXMPMMTX.cjs → chunk-T4HUFZAT.cjs} +7 -7
  143. package/dist/{chunk-SXMPMMTX.cjs.map → chunk-T4HUFZAT.cjs.map} +1 -1
  144. package/dist/{chunk-FOANUZQ3.cjs → chunk-T7JMQ7QF.cjs} +10 -10
  145. package/dist/{chunk-FOANUZQ3.cjs.map → chunk-T7JMQ7QF.cjs.map} +1 -1
  146. package/dist/{chunk-IQZE4X6U.cjs → chunk-TDDFXMVT.cjs} +8 -8
  147. package/dist/{chunk-IQZE4X6U.cjs.map → chunk-TDDFXMVT.cjs.map} +1 -1
  148. package/dist/{chunk-QPICFOIK.cjs → chunk-TFXHXMHE.cjs} +11 -11
  149. package/dist/{chunk-QPICFOIK.cjs.map → chunk-TFXHXMHE.cjs.map} +1 -1
  150. package/dist/{chunk-V23YWHBT.js → chunk-TVVHBU4A.js} +4 -4
  151. package/dist/{chunk-V23YWHBT.js.map → chunk-TVVHBU4A.js.map} +1 -1
  152. package/dist/{chunk-DR2XLMGB.cjs → chunk-UWUAYOQA.cjs} +24 -24
  153. package/dist/{chunk-DR2XLMGB.cjs.map → chunk-UWUAYOQA.cjs.map} +1 -1
  154. package/dist/{chunk-KE32UGIC.cjs → chunk-V5TJ4XYJ.cjs} +8 -8
  155. package/dist/{chunk-KE32UGIC.cjs.map → chunk-V5TJ4XYJ.cjs.map} +1 -1
  156. package/dist/{chunk-TQIKCVFQ.cjs → chunk-VDIAUR4C.cjs} +4 -4
  157. package/dist/{chunk-TQIKCVFQ.cjs.map → chunk-VDIAUR4C.cjs.map} +1 -1
  158. package/dist/{chunk-GZUFJQ5I.js → chunk-VLACPPNB.js} +4 -4
  159. package/dist/{chunk-GZUFJQ5I.js.map → chunk-VLACPPNB.js.map} +1 -1
  160. package/dist/{chunk-F3V5T2ON.js → chunk-VWVSAA5C.js} +3 -3
  161. package/dist/{chunk-F3V5T2ON.js.map → chunk-VWVSAA5C.js.map} +1 -1
  162. package/dist/{chunk-7WVY3KMP.js → chunk-X5AIAJNC.js} +4 -4
  163. package/dist/{chunk-7WVY3KMP.js.map → chunk-X5AIAJNC.js.map} +1 -1
  164. package/dist/{chunk-MJH4EEUV.cjs → chunk-XIDL57DO.cjs} +8 -8
  165. package/dist/{chunk-MJH4EEUV.cjs.map → chunk-XIDL57DO.cjs.map} +1 -1
  166. package/dist/{chunk-YPYXJKWJ.js → chunk-Y72MU5MZ.js} +4 -4
  167. package/dist/{chunk-YPYXJKWJ.js.map → chunk-Y72MU5MZ.js.map} +1 -1
  168. package/dist/{chunk-OE5GVCW4.cjs → chunk-YF3ZKQWW.cjs} +29 -29
  169. package/dist/{chunk-OE5GVCW4.cjs.map → chunk-YF3ZKQWW.cjs.map} +1 -1
  170. package/dist/{chunk-AJ4VAZFT.cjs → chunk-YFLG3EHC.cjs} +13 -13
  171. package/dist/{chunk-AJ4VAZFT.cjs.map → chunk-YFLG3EHC.cjs.map} +1 -1
  172. package/dist/{chunk-AXS2E3ZS.js → chunk-YHZFX4QP.js} +3 -3
  173. package/dist/{chunk-AXS2E3ZS.js.map → chunk-YHZFX4QP.js.map} +1 -1
  174. package/dist/{chunk-PRJENCIC.js → chunk-YSQWR4HB.js} +5 -5
  175. package/dist/{chunk-PRJENCIC.js.map → chunk-YSQWR4HB.js.map} +1 -1
  176. package/dist/{chunk-L2M2Z5CU.js → chunk-Z7QLCQFV.js} +3 -3
  177. package/dist/{chunk-L2M2Z5CU.js.map → chunk-Z7QLCQFV.js.map} +1 -1
  178. package/dist/{chunk-6QQ4I6IY.cjs → chunk-ZFJRI5SE.cjs} +21 -21
  179. package/dist/{chunk-6QQ4I6IY.cjs.map → chunk-ZFJRI5SE.cjs.map} +1 -1
  180. package/dist/{chunk-LQXFAW5L.js → chunk-ZZFTX4PF.js} +5 -5
  181. package/dist/{chunk-LQXFAW5L.js.map → chunk-ZZFTX4PF.js.map} +1 -1
  182. package/dist/docs/SKILL.md +1 -1
  183. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  184. package/dist/server/handlers/a2a.cjs +14 -14
  185. package/dist/server/handlers/a2a.js +1 -1
  186. package/dist/server/handlers/agent-builder.cjs +17 -17
  187. package/dist/server/handlers/agent-builder.js +1 -1
  188. package/dist/server/handlers/agent-controller.cjs +35 -35
  189. package/dist/server/handlers/agent-controller.js +1 -1
  190. package/dist/server/handlers/agent-versions.cjs +8 -8
  191. package/dist/server/handlers/agent-versions.js +1 -1
  192. package/dist/server/handlers/agents.cjs +47 -47
  193. package/dist/server/handlers/agents.js +1 -1
  194. package/dist/server/handlers/auth.cjs +13 -13
  195. package/dist/server/handlers/auth.js +1 -1
  196. package/dist/server/handlers/background-tasks.cjs +4 -4
  197. package/dist/server/handlers/background-tasks.js +1 -1
  198. package/dist/server/handlers/builder-registry.cjs +6 -6
  199. package/dist/server/handlers/builder-registry.js +1 -1
  200. package/dist/server/handlers/channels.cjs +5 -5
  201. package/dist/server/handlers/channels.js +1 -1
  202. package/dist/server/handlers/conversations.cjs +5 -5
  203. package/dist/server/handlers/conversations.js +1 -1
  204. package/dist/server/handlers/datasets.cjs +26 -26
  205. package/dist/server/handlers/datasets.js +1 -1
  206. package/dist/server/handlers/editor-builder.cjs +6 -6
  207. package/dist/server/handlers/editor-builder.js +1 -1
  208. package/dist/server/handlers/favorites-enrichment.cjs +4 -4
  209. package/dist/server/handlers/favorites-enrichment.js +1 -1
  210. package/dist/server/handlers/heartbeats.cjs +9 -9
  211. package/dist/server/handlers/heartbeats.js +1 -1
  212. package/dist/server/handlers/logs.cjs +4 -4
  213. package/dist/server/handlers/logs.js +1 -1
  214. package/dist/server/handlers/mcp-client-versions.cjs +8 -8
  215. package/dist/server/handlers/mcp-client-versions.js +1 -1
  216. package/dist/server/handlers/mcp.cjs +11 -11
  217. package/dist/server/handlers/mcp.js +1 -1
  218. package/dist/server/handlers/memory.cjs +27 -27
  219. package/dist/server/handlers/memory.js +1 -1
  220. package/dist/server/handlers/observability-new-endpoints.cjs +29 -29
  221. package/dist/server/handlers/observability-new-endpoints.js +1 -1
  222. package/dist/server/handlers/observability-shared.cjs +9 -9
  223. package/dist/server/handlers/observability-shared.js +1 -1
  224. package/dist/server/handlers/observability.cjs +40 -40
  225. package/dist/server/handlers/observability.js +2 -2
  226. package/dist/server/handlers/processor-providers.cjs +3 -3
  227. package/dist/server/handlers/processor-providers.js +1 -1
  228. package/dist/server/handlers/processors.cjs +4 -4
  229. package/dist/server/handlers/processors.js +1 -1
  230. package/dist/server/handlers/prompt-block-versions.cjs +8 -8
  231. package/dist/server/handlers/prompt-block-versions.js +1 -1
  232. package/dist/server/handlers/responses.cjs +4 -4
  233. package/dist/server/handlers/responses.js +1 -1
  234. package/dist/server/handlers/schedules.cjs +6 -6
  235. package/dist/server/handlers/schedules.js +1 -1
  236. package/dist/server/handlers/scorer-versions.cjs +8 -8
  237. package/dist/server/handlers/scorer-versions.js +1 -1
  238. package/dist/server/handlers/scores.cjs +7 -7
  239. package/dist/server/handlers/scores.js +1 -1
  240. package/dist/server/handlers/stored-agent-favorites.cjs +3 -3
  241. package/dist/server/handlers/stored-agent-favorites.js +1 -1
  242. package/dist/server/handlers/stored-agents.cjs +10 -10
  243. package/dist/server/handlers/stored-agents.js +1 -1
  244. package/dist/server/handlers/stored-mcp-clients.cjs +6 -6
  245. package/dist/server/handlers/stored-mcp-clients.js +1 -1
  246. package/dist/server/handlers/stored-prompt-blocks.cjs +6 -6
  247. package/dist/server/handlers/stored-prompt-blocks.js +1 -1
  248. package/dist/server/handlers/stored-scorers.cjs +6 -6
  249. package/dist/server/handlers/stored-scorers.js +1 -1
  250. package/dist/server/handlers/stored-skill-favorites.cjs +3 -3
  251. package/dist/server/handlers/stored-skill-favorites.js +1 -1
  252. package/dist/server/handlers/stored-skills.cjs +7 -7
  253. package/dist/server/handlers/stored-skills.js +1 -1
  254. package/dist/server/handlers/stored-workspaces.cjs +6 -6
  255. package/dist/server/handlers/stored-workspaces.js +1 -1
  256. package/dist/server/handlers/system.cjs +3 -3
  257. package/dist/server/handlers/system.js +1 -1
  258. package/dist/server/handlers/tool-providers.cjs +14 -14
  259. package/dist/server/handlers/tool-providers.js +1 -1
  260. package/dist/server/handlers/tools.cjs +6 -6
  261. package/dist/server/handlers/tools.js +1 -1
  262. package/dist/server/handlers/vector.cjs +16 -16
  263. package/dist/server/handlers/vector.js +1 -1
  264. package/dist/server/handlers/workflows.cjs +27 -27
  265. package/dist/server/handlers/workflows.js +1 -1
  266. package/dist/server/handlers/workspace.cjs +26 -26
  267. package/dist/server/handlers/workspace.js +1 -1
  268. package/dist/server/handlers.cjs +28 -28
  269. package/dist/server/handlers.js +14 -14
  270. package/dist/server/server-adapter/index.cjs +21 -21
  271. package/dist/server/server-adapter/index.js +4 -4
  272. package/package.json +6 -6
  273. package/dist/chunk-FKM644Z6.cjs +0 -753
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/handlers/observability-shared.ts"],"names":[],"mappings":"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","file":"chunk-GNVPX27J.js","sourcesContent":["import type { Mastra } from '@mastra/core';\nimport { coreFeatures } from '@mastra/core/features';\nimport type { MastraCompositeStore, ObservabilityStorage } from '@mastra/core/storage';\nimport { z } from 'zod/v4';\nimport { HTTPException } from '../http-exception';\nimport type { ServerRoute } from '../server-adapter/routes';\nimport { wrapSchemaForQueryParams } from '../server-adapter/routes/route-builder';\nimport {\n deltaCursorSchema,\n deltaLimitSchema,\n listModeSchema,\n paginationArgsSchema,\n} from './observability-list-query-schemas';\n\nexport const OBSERVABILITY_DELTA_POLLING_FEATURE = 'observability-delta-polling';\nexport const OBSERVABILITY_DELTA_POLLING_UPGRADE_MESSAGE =\n 'Delta polling requires a newer @mastra/core with observability delta polling support. Please upgrade.';\n\nexport const OBSERVABILITY_LIST_ENDPOINTS = {\n traces: 'traces',\n branches: 'branches',\n logs: 'logs',\n metrics: 'metrics',\n scores: 'scores',\n feedback: 'feedback',\n} as const;\n\nexport type ObservabilityListEndpoint =\n (typeof OBSERVABILITY_LIST_ENDPOINTS)[keyof typeof OBSERVABILITY_LIST_ENDPOINTS];\nconst OBSERVABILITY_DELTA_POLLING_STORAGE_FEATURE = 'delta-polling';\n\nfunction getFeatures(observabilityStore: ObservabilityStorage): readonly string[] | undefined {\n const candidate = observabilityStore as ObservabilityStorage & {\n getFeatures?: () => readonly string[] | undefined;\n };\n return candidate.getFeatures?.();\n}\n\n/** Retrieves MastraCompositeStore or throws 500 if unavailable. */\nexport function getStorage(mastra: Mastra): MastraCompositeStore {\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n return storage;\n}\n\n/** Retrieves the observability storage domain or throws 500 if unavailable. */\nexport async function getObservabilityStore(mastra: Mastra): Promise<ObservabilityStorage> {\n const storage = getStorage(mastra);\n const observability = await storage.getStore('observability');\n if (!observability) {\n throw new HTTPException(500, { message: 'Observability storage domain is not available' });\n }\n return observability;\n}\n\nexport function assertObservabilityDeltaSupported(\n observabilityStore: ObservabilityStorage,\n endpoint: ObservabilityListEndpoint,\n) {\n if (!coreFeatures.has(OBSERVABILITY_DELTA_POLLING_FEATURE)) {\n throw new HTTPException(501, {\n message: `${OBSERVABILITY_DELTA_POLLING_UPGRADE_MESSAGE} (endpoint: ${endpoint})`,\n });\n }\n\n if (getFeatures(observabilityStore)?.includes(OBSERVABILITY_DELTA_POLLING_STORAGE_FEATURE)) {\n return;\n }\n\n throw new HTTPException(501, {\n message: `Delta polling is not supported by the configured observability store for ${endpoint}`,\n });\n}\n\nexport interface RouteDetails {\n method: ServerRoute['method'];\n path: `/${string}`;\n summary: string;\n description: string;\n requiresPermission?: ServerRoute['requiresPermission'];\n}\n\nexport const NEW_ROUTE_DEFS = {\n LIST_METRICS: {\n method: 'GET',\n path: '/observability/metrics',\n summary: 'List metrics',\n description: 'Returns a paginated list of metrics with optional filtering and sorting',\n },\n\n LIST_LOGS: {\n method: 'GET',\n path: '/observability/logs',\n summary: 'List logs',\n description: 'Returns a paginated list of logs with optional filtering and sorting',\n },\n\n LIST_SCORES: {\n method: 'GET',\n path: '/observability/scores',\n summary: 'List scores',\n description: 'Returns a paginated list of scores with optional filtering and sorting',\n },\n\n CREATE_SCORE: {\n method: 'POST',\n path: '/observability/scores',\n summary: 'Create a score',\n description: 'Creates a single score record in the observability store',\n },\n\n GET_SCORE: {\n method: 'GET',\n path: '/observability/scores/:scoreId',\n summary: 'Get score',\n description: 'Returns a single score by scoreId',\n },\n\n GET_SCORE_AGGREGATE: {\n method: 'POST',\n path: '/observability/scores/aggregate',\n summary: 'Get score aggregate',\n description: 'Returns an aggregated score value with optional period-over-period comparison',\n requiresPermission: 'observability:read',\n },\n\n GET_SCORE_BREAKDOWN: {\n method: 'POST',\n path: '/observability/scores/breakdown',\n summary: 'Get score breakdown',\n description: 'Returns score values grouped by specified dimensions',\n requiresPermission: 'observability:read',\n },\n\n GET_SCORE_TIME_SERIES: {\n method: 'POST',\n path: '/observability/scores/timeseries',\n summary: 'Get score time series',\n description: 'Returns score values bucketed by time interval with optional grouping',\n requiresPermission: 'observability:read',\n },\n\n GET_SCORE_PERCENTILES: {\n method: 'POST',\n path: '/observability/scores/percentiles',\n summary: 'Get score percentiles',\n description: 'Returns percentile values for a score bucketed by time interval',\n requiresPermission: 'observability:read',\n },\n\n LIST_FEEDBACK: {\n method: 'GET',\n path: '/observability/feedback',\n summary: 'List feedback',\n description: 'Returns a paginated list of feedback with optional filtering and sorting',\n },\n\n CREATE_FEEDBACK: {\n method: 'POST',\n path: '/observability/feedback',\n summary: 'Create feedback',\n description: 'Creates a single feedback record in the observability store',\n },\n\n GET_FEEDBACK_AGGREGATE: {\n method: 'POST',\n path: '/observability/feedback/aggregate',\n summary: 'Get feedback aggregate',\n description: 'Returns an aggregated numeric feedback value with optional period-over-period comparison',\n requiresPermission: 'observability:read',\n },\n\n GET_FEEDBACK_BREAKDOWN: {\n method: 'POST',\n path: '/observability/feedback/breakdown',\n summary: 'Get feedback breakdown',\n description: 'Returns numeric feedback values grouped by specified dimensions',\n requiresPermission: 'observability:read',\n },\n\n GET_FEEDBACK_TIME_SERIES: {\n method: 'POST',\n path: '/observability/feedback/timeseries',\n summary: 'Get feedback time series',\n description: 'Returns numeric feedback values bucketed by time interval with optional grouping',\n requiresPermission: 'observability:read',\n },\n\n GET_FEEDBACK_PERCENTILES: {\n method: 'POST',\n path: '/observability/feedback/percentiles',\n summary: 'Get feedback percentiles',\n description: 'Returns percentile values for numeric feedback bucketed by time interval',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_AGGREGATE: {\n method: 'POST',\n path: '/observability/metrics/aggregate',\n summary: 'Get metric aggregate',\n description: 'Returns an aggregated metric value with optional period-over-period comparison',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_BREAKDOWN: {\n method: 'POST',\n path: '/observability/metrics/breakdown',\n summary: 'Get metric breakdown',\n description: 'Returns metric values grouped by specified dimensions',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_TIME_SERIES: {\n method: 'POST',\n path: '/observability/metrics/timeseries',\n summary: 'Get metric time series',\n description: 'Returns metric values bucketed by time interval with optional grouping',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_PERCENTILES: {\n method: 'POST',\n path: '/observability/metrics/percentiles',\n summary: 'Get metric percentiles',\n description: 'Returns percentile values for a metric bucketed by time interval',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_NAMES: {\n method: 'GET',\n path: '/observability/discovery/metric-names',\n summary: 'Get metric names',\n description: 'Returns distinct metric names with optional prefix filtering',\n },\n\n GET_METRIC_LABEL_KEYS: {\n method: 'GET',\n path: '/observability/discovery/metric-label-keys',\n summary: 'Get metric label keys',\n description: 'Returns distinct label keys for a given metric',\n },\n\n GET_METRIC_LABEL_VALUES: {\n method: 'GET',\n path: '/observability/discovery/metric-label-values',\n summary: 'Get label values',\n description: 'Returns distinct values for a given metric label key',\n },\n\n GET_ENTITY_TYPES: {\n method: 'GET',\n path: '/observability/discovery/entity-types',\n summary: 'Get entity types',\n description: 'Returns distinct entity types from observability data',\n },\n\n GET_ENTITY_NAMES: {\n method: 'GET',\n path: '/observability/discovery/entity-names',\n summary: 'Get entity names',\n description: 'Returns distinct entity names with optional type filtering',\n },\n\n GET_SERVICE_NAMES: {\n method: 'GET',\n path: '/observability/discovery/service-names',\n summary: 'Get service names',\n description: 'Returns distinct service names from observability data',\n },\n\n GET_ENVIRONMENTS: {\n method: 'GET',\n path: '/observability/discovery/environments',\n summary: 'Get environments',\n description: 'Returns distinct environments from observability data',\n },\n\n GET_TAGS: {\n method: 'GET',\n path: '/observability/discovery/tags',\n summary: 'Get tags',\n description: 'Returns distinct tags with optional entity type filtering',\n },\n} as const satisfies Record<string, RouteDetails>;\n\nexport type NewRoutesKey = keyof typeof NEW_ROUTE_DEFS;\nexport type NewRoutesDefinitions = (typeof NEW_ROUTE_DEFS)[NewRoutesKey];\n\nexport function createObservabilityListQuerySchema<\n TFilter extends z.ZodObject<z.ZodRawShape>,\n TOrderBy extends z.ZodObject<z.ZodRawShape>,\n>(filterSchema: TFilter, orderBySchema: TOrderBy) {\n const unwrapDefault = (schema: unknown) => {\n const zodSchema = schema as z.ZodTypeAny;\n return zodSchema instanceof z.ZodDefault ? zodSchema.unwrap() : zodSchema;\n };\n const paginationShape = paginationArgsSchema.shape as unknown as Record<string, z.ZodTypeAny>;\n const orderByShape = orderBySchema.shape as unknown as Record<string, z.ZodTypeAny>;\n\n const pageSchema = unwrapDefault(paginationShape.page);\n const perPageSchema = unwrapDefault(paginationShape.perPage);\n const fieldSchema = orderByShape.field ? unwrapDefault(orderByShape.field) : z.never().optional();\n const directionSchema = orderByShape.direction ? unwrapDefault(orderByShape.direction) : z.never().optional();\n\n return wrapSchemaForQueryParams(\n z\n .object({\n ...filterSchema.shape,\n page: pageSchema,\n perPage: perPageSchema,\n field: fieldSchema,\n direction: directionSchema,\n mode: listModeSchema.optional(),\n after: deltaCursorSchema.optional(),\n limit: deltaLimitSchema,\n })\n .partial(),\n ).superRefine((value, ctx) => {\n const isDelta = value.mode === 'delta';\n const hasPagination = value.page !== undefined || value.perPage !== undefined;\n const hasOrderBy = value.field !== undefined || value.direction !== undefined;\n const hasAfter = value.after !== undefined;\n const hasLimit = value.limit !== undefined;\n\n if (isDelta) {\n if (hasPagination) {\n if (value.page !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['page'],\n message: '`page` is not allowed when `mode=delta`',\n });\n }\n if (value.perPage !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['perPage'],\n message: '`perPage` is not allowed when `mode=delta`',\n });\n }\n }\n if (hasOrderBy) {\n if (value.field !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['field'],\n message: '`field` is not allowed when `mode=delta`',\n });\n }\n if (value.direction !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['direction'],\n message: '`direction` is not allowed when `mode=delta`',\n });\n }\n }\n return;\n }\n\n if (hasAfter) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['after'],\n message: '`after` is only allowed when `mode=delta`',\n });\n }\n if (hasLimit) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['limit'],\n message: '`limit` is only allowed when `mode=delta`',\n });\n }\n });\n}\n"]}
1
+ {"version":3,"sources":["../src/server/handlers/observability-shared.ts"],"names":[],"mappings":"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","file":"chunk-G5YHDBGD.js","sourcesContent":["import type { Mastra } from '@mastra/core';\nimport { coreFeatures } from '@mastra/core/features';\nimport type { MastraCompositeStore, ObservabilityStorage } from '@mastra/core/storage';\nimport { z } from 'zod/v4';\nimport { HTTPException } from '../http-exception';\nimport type { ServerRoute } from '../server-adapter/routes';\nimport { wrapSchemaForQueryParams } from '../server-adapter/routes/route-builder';\nimport {\n deltaCursorSchema,\n deltaLimitSchema,\n listModeSchema,\n paginationArgsSchema,\n} from './observability-list-query-schemas';\n\nexport const OBSERVABILITY_DELTA_POLLING_FEATURE = 'observability-delta-polling';\nexport const OBSERVABILITY_DELTA_POLLING_UPGRADE_MESSAGE =\n 'Delta polling requires a newer @mastra/core with observability delta polling support. Please upgrade.';\n\nexport const OBSERVABILITY_LIST_ENDPOINTS = {\n traces: 'traces',\n branches: 'branches',\n logs: 'logs',\n metrics: 'metrics',\n scores: 'scores',\n feedback: 'feedback',\n} as const;\n\nexport type ObservabilityListEndpoint =\n (typeof OBSERVABILITY_LIST_ENDPOINTS)[keyof typeof OBSERVABILITY_LIST_ENDPOINTS];\nconst OBSERVABILITY_DELTA_POLLING_STORAGE_FEATURE = 'delta-polling';\n\nfunction getFeatures(observabilityStore: ObservabilityStorage): readonly string[] | undefined {\n const candidate = observabilityStore as ObservabilityStorage & {\n getFeatures?: () => readonly string[] | undefined;\n };\n return candidate.getFeatures?.();\n}\n\n/** Retrieves MastraCompositeStore or throws 500 if unavailable. */\nexport function getStorage(mastra: Mastra): MastraCompositeStore {\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n return storage;\n}\n\n/** Retrieves the observability storage domain or throws 500 if unavailable. */\nexport async function getObservabilityStore(mastra: Mastra): Promise<ObservabilityStorage> {\n const storage = getStorage(mastra);\n const observability = await storage.getStore('observability');\n if (!observability) {\n throw new HTTPException(500, { message: 'Observability storage domain is not available' });\n }\n return observability;\n}\n\nexport function assertObservabilityDeltaSupported(\n observabilityStore: ObservabilityStorage,\n endpoint: ObservabilityListEndpoint,\n) {\n if (!coreFeatures.has(OBSERVABILITY_DELTA_POLLING_FEATURE)) {\n throw new HTTPException(501, {\n message: `${OBSERVABILITY_DELTA_POLLING_UPGRADE_MESSAGE} (endpoint: ${endpoint})`,\n });\n }\n\n if (getFeatures(observabilityStore)?.includes(OBSERVABILITY_DELTA_POLLING_STORAGE_FEATURE)) {\n return;\n }\n\n throw new HTTPException(501, {\n message: `Delta polling is not supported by the configured observability store for ${endpoint}`,\n });\n}\n\nexport interface RouteDetails {\n method: ServerRoute['method'];\n path: `/${string}`;\n summary: string;\n description: string;\n requiresPermission?: ServerRoute['requiresPermission'];\n}\n\nexport const NEW_ROUTE_DEFS = {\n LIST_METRICS: {\n method: 'GET',\n path: '/observability/metrics',\n summary: 'List metrics',\n description: 'Returns a paginated list of metrics with optional filtering and sorting',\n },\n\n LIST_LOGS: {\n method: 'GET',\n path: '/observability/logs',\n summary: 'List logs',\n description: 'Returns a paginated list of logs with optional filtering and sorting',\n },\n\n LIST_SCORES: {\n method: 'GET',\n path: '/observability/scores',\n summary: 'List scores',\n description: 'Returns a paginated list of scores with optional filtering and sorting',\n },\n\n CREATE_SCORE: {\n method: 'POST',\n path: '/observability/scores',\n summary: 'Create a score',\n description: 'Creates a single score record in the observability store',\n },\n\n GET_SCORE: {\n method: 'GET',\n path: '/observability/scores/:scoreId',\n summary: 'Get score',\n description: 'Returns a single score by scoreId',\n },\n\n GET_SCORE_AGGREGATE: {\n method: 'POST',\n path: '/observability/scores/aggregate',\n summary: 'Get score aggregate',\n description: 'Returns an aggregated score value with optional period-over-period comparison',\n requiresPermission: 'observability:read',\n },\n\n GET_SCORE_BREAKDOWN: {\n method: 'POST',\n path: '/observability/scores/breakdown',\n summary: 'Get score breakdown',\n description: 'Returns score values grouped by specified dimensions',\n requiresPermission: 'observability:read',\n },\n\n GET_SCORE_TIME_SERIES: {\n method: 'POST',\n path: '/observability/scores/timeseries',\n summary: 'Get score time series',\n description: 'Returns score values bucketed by time interval with optional grouping',\n requiresPermission: 'observability:read',\n },\n\n GET_SCORE_PERCENTILES: {\n method: 'POST',\n path: '/observability/scores/percentiles',\n summary: 'Get score percentiles',\n description: 'Returns percentile values for a score bucketed by time interval',\n requiresPermission: 'observability:read',\n },\n\n LIST_FEEDBACK: {\n method: 'GET',\n path: '/observability/feedback',\n summary: 'List feedback',\n description: 'Returns a paginated list of feedback with optional filtering and sorting',\n },\n\n CREATE_FEEDBACK: {\n method: 'POST',\n path: '/observability/feedback',\n summary: 'Create feedback',\n description: 'Creates a single feedback record in the observability store',\n },\n\n GET_FEEDBACK_AGGREGATE: {\n method: 'POST',\n path: '/observability/feedback/aggregate',\n summary: 'Get feedback aggregate',\n description: 'Returns an aggregated numeric feedback value with optional period-over-period comparison',\n requiresPermission: 'observability:read',\n },\n\n GET_FEEDBACK_BREAKDOWN: {\n method: 'POST',\n path: '/observability/feedback/breakdown',\n summary: 'Get feedback breakdown',\n description: 'Returns numeric feedback values grouped by specified dimensions',\n requiresPermission: 'observability:read',\n },\n\n GET_FEEDBACK_TIME_SERIES: {\n method: 'POST',\n path: '/observability/feedback/timeseries',\n summary: 'Get feedback time series',\n description: 'Returns numeric feedback values bucketed by time interval with optional grouping',\n requiresPermission: 'observability:read',\n },\n\n GET_FEEDBACK_PERCENTILES: {\n method: 'POST',\n path: '/observability/feedback/percentiles',\n summary: 'Get feedback percentiles',\n description: 'Returns percentile values for numeric feedback bucketed by time interval',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_AGGREGATE: {\n method: 'POST',\n path: '/observability/metrics/aggregate',\n summary: 'Get metric aggregate',\n description: 'Returns an aggregated metric value with optional period-over-period comparison',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_BREAKDOWN: {\n method: 'POST',\n path: '/observability/metrics/breakdown',\n summary: 'Get metric breakdown',\n description: 'Returns metric values grouped by specified dimensions',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_TIME_SERIES: {\n method: 'POST',\n path: '/observability/metrics/timeseries',\n summary: 'Get metric time series',\n description: 'Returns metric values bucketed by time interval with optional grouping',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_PERCENTILES: {\n method: 'POST',\n path: '/observability/metrics/percentiles',\n summary: 'Get metric percentiles',\n description: 'Returns percentile values for a metric bucketed by time interval',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_NAMES: {\n method: 'GET',\n path: '/observability/discovery/metric-names',\n summary: 'Get metric names',\n description: 'Returns distinct metric names with optional prefix filtering',\n },\n\n GET_METRIC_LABEL_KEYS: {\n method: 'GET',\n path: '/observability/discovery/metric-label-keys',\n summary: 'Get metric label keys',\n description: 'Returns distinct label keys for a given metric',\n },\n\n GET_METRIC_LABEL_VALUES: {\n method: 'GET',\n path: '/observability/discovery/metric-label-values',\n summary: 'Get label values',\n description: 'Returns distinct values for a given metric label key',\n },\n\n GET_ENTITY_TYPES: {\n method: 'GET',\n path: '/observability/discovery/entity-types',\n summary: 'Get entity types',\n description: 'Returns distinct entity types from observability data',\n },\n\n GET_ENTITY_NAMES: {\n method: 'GET',\n path: '/observability/discovery/entity-names',\n summary: 'Get entity names',\n description: 'Returns distinct entity names with optional type filtering',\n },\n\n GET_SERVICE_NAMES: {\n method: 'GET',\n path: '/observability/discovery/service-names',\n summary: 'Get service names',\n description: 'Returns distinct service names from observability data',\n },\n\n GET_ENVIRONMENTS: {\n method: 'GET',\n path: '/observability/discovery/environments',\n summary: 'Get environments',\n description: 'Returns distinct environments from observability data',\n },\n\n GET_TAGS: {\n method: 'GET',\n path: '/observability/discovery/tags',\n summary: 'Get tags',\n description: 'Returns distinct tags with optional entity type filtering',\n },\n} as const satisfies Record<string, RouteDetails>;\n\nexport type NewRoutesKey = keyof typeof NEW_ROUTE_DEFS;\nexport type NewRoutesDefinitions = (typeof NEW_ROUTE_DEFS)[NewRoutesKey];\n\nexport function createObservabilityListQuerySchema<\n TFilter extends z.ZodObject<z.ZodRawShape>,\n TOrderBy extends z.ZodObject<z.ZodRawShape>,\n>(filterSchema: TFilter, orderBySchema: TOrderBy) {\n const unwrapDefault = (schema: unknown) => {\n const zodSchema = schema as z.ZodTypeAny;\n return zodSchema instanceof z.ZodDefault ? zodSchema.unwrap() : zodSchema;\n };\n const paginationShape = paginationArgsSchema.shape as unknown as Record<string, z.ZodTypeAny>;\n const orderByShape = orderBySchema.shape as unknown as Record<string, z.ZodTypeAny>;\n\n const pageSchema = unwrapDefault(paginationShape.page);\n const perPageSchema = unwrapDefault(paginationShape.perPage);\n const fieldSchema = orderByShape.field ? unwrapDefault(orderByShape.field) : z.never().optional();\n const directionSchema = orderByShape.direction ? unwrapDefault(orderByShape.direction) : z.never().optional();\n\n return wrapSchemaForQueryParams(\n z\n .object({\n ...filterSchema.shape,\n page: pageSchema,\n perPage: perPageSchema,\n field: fieldSchema,\n direction: directionSchema,\n mode: listModeSchema.optional(),\n after: deltaCursorSchema.optional(),\n limit: deltaLimitSchema,\n })\n .partial(),\n ).superRefine((value, ctx) => {\n const isDelta = value.mode === 'delta';\n const hasPagination = value.page !== undefined || value.perPage !== undefined;\n const hasOrderBy = value.field !== undefined || value.direction !== undefined;\n const hasAfter = value.after !== undefined;\n const hasLimit = value.limit !== undefined;\n\n if (isDelta) {\n if (hasPagination) {\n if (value.page !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['page'],\n message: '`page` is not allowed when `mode=delta`',\n });\n }\n if (value.perPage !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['perPage'],\n message: '`perPage` is not allowed when `mode=delta`',\n });\n }\n }\n if (hasOrderBy) {\n if (value.field !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['field'],\n message: '`field` is not allowed when `mode=delta`',\n });\n }\n if (value.direction !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['direction'],\n message: '`direction` is not allowed when `mode=delta`',\n });\n }\n }\n return;\n }\n\n if (hasAfter) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['after'],\n message: '`after` is only allowed when `mode=delta`',\n });\n }\n if (hasLimit) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['limit'],\n message: '`limit` is only allowed when `mode=delta`',\n });\n }\n });\n}\n"]}
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkMJH4EEUV_cjs = require('./chunk-MJH4EEUV.cjs');
3
+ var chunkXIDL57DO_cjs = require('./chunk-XIDL57DO.cjs');
4
4
  var chunkHDIYJI2Z_cjs = require('./chunk-HDIYJI2Z.cjs');
5
5
 
6
6
  // src/server/handlers/favorites-enrichment.ts
7
7
  async function prepareFavoritesEnrichment(mastra, requestContext, entityType, entityIds) {
8
- if (!await chunkMJH4EEUV_cjs.isBuilderFeatureEnabled(mastra, "favorites")) return null;
8
+ if (!await chunkXIDL57DO_cjs.isBuilderFeatureEnabled(mastra, "favorites")) return null;
9
9
  const userId = chunkHDIYJI2Z_cjs.getCallerAuthorId(requestContext);
10
10
  if (!userId) return null;
11
11
  const storage = mastra.getStorage();
@@ -35,5 +35,5 @@ async function enrichOrStripFavorites(mastra, requestContext, entityType, record
35
35
  exports.enrichOrStripFavorites = enrichOrStripFavorites;
36
36
  exports.prepareFavoritesEnrichment = prepareFavoritesEnrichment;
37
37
  exports.stripFavoriteFields = stripFavoriteFields;
38
- //# sourceMappingURL=chunk-FR5QBXVS.cjs.map
39
- //# sourceMappingURL=chunk-FR5QBXVS.cjs.map
38
+ //# sourceMappingURL=chunk-GD4WWM2T.cjs.map
39
+ //# sourceMappingURL=chunk-GD4WWM2T.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/handlers/favorites-enrichment.ts"],"names":["isBuilderFeatureEnabled","getCallerAuthorId"],"mappings":";;;;;;AAyBA,eAAsB,0BAAA,CACpB,MAAA,EACA,cAAA,EACA,UAAA,EACA,SAAA,EACqC;AACrC,EAAA,IAAI,CAAE,MAAMA,yCAAA,CAAwB,MAAA,EAAQ,WAAW,GAAI,OAAO,IAAA;AAElE,EAAA,MAAM,MAAA,GAASC,oCAAkB,cAAc,CAAA;AAC/C,EAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AAEpB,EAAA,MAAM,OAAA,GAAU,OAAO,UAAA,EAAW;AAClC,EAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AACrB,EAAA,MAAM,cAAA,GAAiB,MAAM,OAAA,CAAQ,QAAA,CAAS,WAAW,CAAA;AACzD,EAAA,IAAI,CAAC,gBAAgB,OAAO,IAAA;AAE5B,EAAA,MAAM,UAAA,GACJ,SAAA,CAAU,MAAA,KAAW,CAAA,uBACb,GAAA,EAAY,GAChB,MAAM,cAAA,CAAe,gBAAA,CAAiB,EAAE,MAAA,EAAQ,UAAA,EAAY,WAAW,CAAA;AAC7E,EAAA,OAAO,EAAE,MAAA,EAAQ,UAAA,EAAY,cAAA,EAAe;AAC9C;AAMO,SAAS,oBAAsC,MAAA,EAAc;AAClE,EAAA,IAAI,aAAA,IAAiB,MAAA,IAAU,eAAA,IAAmB,MAAA,EAAQ;AACxD,IAAA,MAAM,IAAA,GAAO,EAAE,GAAG,MAAA,EAAO;AACzB,IAAA,OAAO,IAAA,CAAK,WAAA;AACZ,IAAA,OAAO,IAAA,CAAK,aAAA;AACZ,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,MAAA;AACT;AASA,eAAsB,sBAAA,CACpB,MAAA,EACA,cAAA,EACA,UAAA,EACA,MAAA,EACY;AACZ,EAAA,MAAM,UAAA,GAAa,MAAM,0BAAA,CAA2B,MAAA,EAAQ,gBAAgB,UAAA,EAAY,CAAC,MAAA,CAAO,EAAE,CAAC,CAAA;AACnG,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,WAAA,EAAa,WAAW,UAAA,CAAW,GAAA,CAAI,MAAA,CAAO,EAAE,CAAA,EAAE;AAAA,EACxE;AACA,EAAA,OAAO,oBAAoB,MAAM,CAAA;AACnC","file":"chunk-FR5QBXVS.cjs","sourcesContent":["import type { Mastra } from '@mastra/core';\nimport type { RequestContext } from '@mastra/core/di';\nimport type { FavoritesStorage, StorageFavoriteEntityType } from '@mastra/core/storage';\n\nimport { getCallerAuthorId } from './authorship';\nimport { isBuilderFeatureEnabled } from './editor-builder';\n\n/**\n * Result of `prepareFavoritesEnrichment` — `null` when the `favorites` EE feature is off.\n * When non-null the caller may use `starredIds` to set `isFavorited` on records\n * and may pass `userId` along to storage list paths for pin-favorited-first\n * sorting (`pinFavoritedFor`).\n */\nexport type FavoritesEnrichmentContext = {\n userId: string;\n starredIds: Set<string>;\n favoritesStore: FavoritesStorage;\n} | null;\n\n/**\n * Resolve the EE feature flag plus the caller's favorited set for a list of\n * candidate entity IDs in one shot. Soft-gated: returns `null` if the feature\n * is off or there's no caller — handlers should drop `isFavorited` / `favoriteCount`\n * fields and ignore `?favoritedOnly=true` in that case.\n */\nexport async function prepareFavoritesEnrichment(\n mastra: Mastra,\n requestContext: RequestContext,\n entityType: StorageFavoriteEntityType,\n entityIds: string[],\n): Promise<FavoritesEnrichmentContext> {\n if (!(await isBuilderFeatureEnabled(mastra, 'favorites'))) return null;\n\n const userId = getCallerAuthorId(requestContext);\n if (!userId) return null;\n\n const storage = mastra.getStorage();\n if (!storage) return null;\n const favoritesStore = await storage.getStore('favorites');\n if (!favoritesStore) return null;\n\n const starredIds =\n entityIds.length === 0\n ? new Set<string>()\n : await favoritesStore.isFavoritedBatch({ userId, entityType, entityIds });\n return { userId, starredIds, favoritesStore };\n}\n\n/**\n * Strip the favorites EE fields from a record. Used when the feature is off so\n * stale values from storage do not leak through the API.\n */\nexport function stripFavoriteFields<T extends object>(record: T): T {\n if ('isFavorited' in record || 'favoriteCount' in record) {\n const copy = { ...record } as Record<string, unknown>;\n delete copy.isFavorited;\n delete copy.favoriteCount;\n return copy as T;\n }\n return record;\n}\n\n/**\n * Convenience for single-entity handlers (GET / POST / PATCH): annotate\n * `isFavorited` from the caller's favorites set when enrichment is available,\n * otherwise strip both favorite fields. `favoriteCount` is the canonical\n * mirrored counter and is left in place so callers can render share-count UI\n * (it's identical across viewers).\n */\nexport async function enrichOrStripFavorites<T extends { id: string }>(\n mastra: Mastra,\n requestContext: RequestContext,\n entityType: StorageFavoriteEntityType,\n record: T,\n): Promise<T> {\n const enrichment = await prepareFavoritesEnrichment(mastra, requestContext, entityType, [record.id]);\n if (enrichment) {\n return { ...record, isFavorited: enrichment.starredIds.has(record.id) };\n }\n return stripFavoriteFields(record);\n}\n"]}
1
+ {"version":3,"sources":["../src/server/handlers/favorites-enrichment.ts"],"names":["isBuilderFeatureEnabled","getCallerAuthorId"],"mappings":";;;;;;AAyBA,eAAsB,0BAAA,CACpB,MAAA,EACA,cAAA,EACA,UAAA,EACA,SAAA,EACqC;AACrC,EAAA,IAAI,CAAE,MAAMA,yCAAA,CAAwB,MAAA,EAAQ,WAAW,GAAI,OAAO,IAAA;AAElE,EAAA,MAAM,MAAA,GAASC,oCAAkB,cAAc,CAAA;AAC/C,EAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AAEpB,EAAA,MAAM,OAAA,GAAU,OAAO,UAAA,EAAW;AAClC,EAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AACrB,EAAA,MAAM,cAAA,GAAiB,MAAM,OAAA,CAAQ,QAAA,CAAS,WAAW,CAAA;AACzD,EAAA,IAAI,CAAC,gBAAgB,OAAO,IAAA;AAE5B,EAAA,MAAM,UAAA,GACJ,SAAA,CAAU,MAAA,KAAW,CAAA,uBACb,GAAA,EAAY,GAChB,MAAM,cAAA,CAAe,gBAAA,CAAiB,EAAE,MAAA,EAAQ,UAAA,EAAY,WAAW,CAAA;AAC7E,EAAA,OAAO,EAAE,MAAA,EAAQ,UAAA,EAAY,cAAA,EAAe;AAC9C;AAMO,SAAS,oBAAsC,MAAA,EAAc;AAClE,EAAA,IAAI,aAAA,IAAiB,MAAA,IAAU,eAAA,IAAmB,MAAA,EAAQ;AACxD,IAAA,MAAM,IAAA,GAAO,EAAE,GAAG,MAAA,EAAO;AACzB,IAAA,OAAO,IAAA,CAAK,WAAA;AACZ,IAAA,OAAO,IAAA,CAAK,aAAA;AACZ,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,OAAO,MAAA;AACT;AASA,eAAsB,sBAAA,CACpB,MAAA,EACA,cAAA,EACA,UAAA,EACA,MAAA,EACY;AACZ,EAAA,MAAM,UAAA,GAAa,MAAM,0BAAA,CAA2B,MAAA,EAAQ,gBAAgB,UAAA,EAAY,CAAC,MAAA,CAAO,EAAE,CAAC,CAAA;AACnG,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,OAAO,EAAE,GAAG,MAAA,EAAQ,WAAA,EAAa,WAAW,UAAA,CAAW,GAAA,CAAI,MAAA,CAAO,EAAE,CAAA,EAAE;AAAA,EACxE;AACA,EAAA,OAAO,oBAAoB,MAAM,CAAA;AACnC","file":"chunk-GD4WWM2T.cjs","sourcesContent":["import type { Mastra } from '@mastra/core';\nimport type { RequestContext } from '@mastra/core/di';\nimport type { FavoritesStorage, StorageFavoriteEntityType } from '@mastra/core/storage';\n\nimport { getCallerAuthorId } from './authorship';\nimport { isBuilderFeatureEnabled } from './editor-builder';\n\n/**\n * Result of `prepareFavoritesEnrichment` — `null` when the `favorites` EE feature is off.\n * When non-null the caller may use `starredIds` to set `isFavorited` on records\n * and may pass `userId` along to storage list paths for pin-favorited-first\n * sorting (`pinFavoritedFor`).\n */\nexport type FavoritesEnrichmentContext = {\n userId: string;\n starredIds: Set<string>;\n favoritesStore: FavoritesStorage;\n} | null;\n\n/**\n * Resolve the EE feature flag plus the caller's favorited set for a list of\n * candidate entity IDs in one shot. Soft-gated: returns `null` if the feature\n * is off or there's no caller — handlers should drop `isFavorited` / `favoriteCount`\n * fields and ignore `?favoritedOnly=true` in that case.\n */\nexport async function prepareFavoritesEnrichment(\n mastra: Mastra,\n requestContext: RequestContext,\n entityType: StorageFavoriteEntityType,\n entityIds: string[],\n): Promise<FavoritesEnrichmentContext> {\n if (!(await isBuilderFeatureEnabled(mastra, 'favorites'))) return null;\n\n const userId = getCallerAuthorId(requestContext);\n if (!userId) return null;\n\n const storage = mastra.getStorage();\n if (!storage) return null;\n const favoritesStore = await storage.getStore('favorites');\n if (!favoritesStore) return null;\n\n const starredIds =\n entityIds.length === 0\n ? new Set<string>()\n : await favoritesStore.isFavoritedBatch({ userId, entityType, entityIds });\n return { userId, starredIds, favoritesStore };\n}\n\n/**\n * Strip the favorites EE fields from a record. Used when the feature is off so\n * stale values from storage do not leak through the API.\n */\nexport function stripFavoriteFields<T extends object>(record: T): T {\n if ('isFavorited' in record || 'favoriteCount' in record) {\n const copy = { ...record } as Record<string, unknown>;\n delete copy.isFavorited;\n delete copy.favoriteCount;\n return copy as T;\n }\n return record;\n}\n\n/**\n * Convenience for single-entity handlers (GET / POST / PATCH): annotate\n * `isFavorited` from the caller's favorites set when enrichment is available,\n * otherwise strip both favorite fields. `favoriteCount` is the canonical\n * mirrored counter and is left in place so callers can render share-count UI\n * (it's identical across viewers).\n */\nexport async function enrichOrStripFavorites<T extends { id: string }>(\n mastra: Mastra,\n requestContext: RequestContext,\n entityType: StorageFavoriteEntityType,\n record: T,\n): Promise<T> {\n const enrichment = await prepareFavoritesEnrichment(mastra, requestContext, entityType, [record.id]);\n if (enrichment) {\n return { ...record, isFavorited: enrichment.starredIds.has(record.id) };\n }\n return stripFavoriteFields(record);\n}\n"]}
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunkSCY53JIH_cjs = require('./chunk-SCY53JIH.cjs');
3
+ var chunkGVCHXBVJ_cjs = require('./chunk-GVCHXBVJ.cjs');
4
4
  var chunkZQ4GVMYG_cjs = require('./chunk-ZQ4GVMYG.cjs');
5
5
  var chunk42M6Y2OD_cjs = require('./chunk-42M6Y2OD.cjs');
6
6
  var chunkDIG2K5CV_cjs = require('./chunk-DIG2K5CV.cjs');
7
7
  var chunkYWUVDFQZ_cjs = require('./chunk-YWUVDFQZ.cjs');
8
8
  var chunkZ7LCIYK7_cjs = require('./chunk-Z7LCIYK7.cjs');
9
- var chunkDN2NUSL2_cjs = require('./chunk-DN2NUSL2.cjs');
9
+ var chunkB5MQQ47W_cjs = require('./chunk-B5MQQ47W.cjs');
10
10
  var chunk3YQ7NWF6_cjs = require('./chunk-3YQ7NWF6.cjs');
11
11
  var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
12
12
  var chunkO7I5CWRX_cjs = require('./chunk-O7I5CWRX.cjs');
@@ -72,7 +72,7 @@ function serializeTool(tool) {
72
72
  requestContextSchema: serializeSchema(tool.requestContextSchema)
73
73
  };
74
74
  }
75
- var LIST_TOOLS_ROUTE = chunkDN2NUSL2_cjs.createRoute({
75
+ var LIST_TOOLS_ROUTE = chunkB5MQQ47W_cjs.createRoute({
76
76
  method: "GET",
77
77
  path: "/tools",
78
78
  responseType: "json",
@@ -122,7 +122,7 @@ var LIST_TOOLS_ROUTE = chunkDN2NUSL2_cjs.createRoute({
122
122
  }
123
123
  }
124
124
  });
125
- var GET_TOOL_BY_ID_ROUTE = chunkDN2NUSL2_cjs.createRoute({
125
+ var GET_TOOL_BY_ID_ROUTE = chunkB5MQQ47W_cjs.createRoute({
126
126
  method: "GET",
127
127
  path: "/tools/:toolId",
128
128
  responseType: "json",
@@ -156,7 +156,7 @@ var GET_TOOL_BY_ID_ROUTE = chunkDN2NUSL2_cjs.createRoute({
156
156
  }
157
157
  }
158
158
  });
159
- var EXECUTE_TOOL_ROUTE = chunkDN2NUSL2_cjs.createRoute({
159
+ var EXECUTE_TOOL_ROUTE = chunkB5MQQ47W_cjs.createRoute({
160
160
  method: "POST",
161
161
  path: "/tools/:toolId/execute",
162
162
  responseType: "json",
@@ -218,7 +218,7 @@ var EXECUTE_TOOL_ROUTE = chunkDN2NUSL2_cjs.createRoute({
218
218
  }
219
219
  }
220
220
  });
221
- var GET_AGENT_TOOL_ROUTE = chunkDN2NUSL2_cjs.createRoute({
221
+ var GET_AGENT_TOOL_ROUTE = chunkB5MQQ47W_cjs.createRoute({
222
222
  method: "GET",
223
223
  path: "/agents/:agentId/tools/:toolId",
224
224
  responseType: "json",
@@ -233,7 +233,7 @@ var GET_AGENT_TOOL_ROUTE = chunkDN2NUSL2_cjs.createRoute({
233
233
  if (!agentId) {
234
234
  throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Agent ID is required" });
235
235
  }
236
- const agent = await chunkSCY53JIH_cjs.getAgentFromSystem({ mastra, agentId });
236
+ const agent = await chunkGVCHXBVJ_cjs.getAgentFromSystem({ mastra, agentId });
237
237
  const agentTools = await agent.listTools({ requestContext });
238
238
  const tool = Object.values(agentTools || {}).find((tool2) => tool2.id === toolId);
239
239
  if (!tool) {
@@ -245,7 +245,7 @@ var GET_AGENT_TOOL_ROUTE = chunkDN2NUSL2_cjs.createRoute({
245
245
  }
246
246
  }
247
247
  });
248
- var EXECUTE_AGENT_TOOL_ROUTE = chunkDN2NUSL2_cjs.createRoute({
248
+ var EXECUTE_AGENT_TOOL_ROUTE = chunkB5MQQ47W_cjs.createRoute({
249
249
  method: "POST",
250
250
  path: "/agents/:agentId/tools/:toolId/execute",
251
251
  responseType: "json",
@@ -261,7 +261,7 @@ var EXECUTE_AGENT_TOOL_ROUTE = chunkDN2NUSL2_cjs.createRoute({
261
261
  if (!agentId) {
262
262
  throw new chunk64ITUOXI_cjs.HTTPException(400, { message: "Agent ID is required" });
263
263
  }
264
- const agent = await chunkSCY53JIH_cjs.getAgentFromSystem({ mastra, agentId });
264
+ const agent = await chunkGVCHXBVJ_cjs.getAgentFromSystem({ mastra, agentId });
265
265
  const agentTools = await agent.listTools({ requestContext });
266
266
  const tool = Object.values(agentTools || {}).find((tool2) => tool2.id === toolId);
267
267
  if (!tool) {
@@ -289,5 +289,5 @@ exports.GET_AGENT_TOOL_ROUTE = GET_AGENT_TOOL_ROUTE;
289
289
  exports.GET_TOOL_BY_ID_ROUTE = GET_TOOL_BY_ID_ROUTE;
290
290
  exports.LIST_TOOLS_ROUTE = LIST_TOOLS_ROUTE;
291
291
  exports.tools_exports = tools_exports;
292
- //# sourceMappingURL=chunk-YRZYCQGE.cjs.map
293
- //# sourceMappingURL=chunk-YRZYCQGE.cjs.map
292
+ //# sourceMappingURL=chunk-GDCCVDX7.cjs.map
293
+ //# sourceMappingURL=chunk-GDCCVDX7.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/handlers/tools.ts"],"names":["__export","standardSchemaToJSONSchema","toStandardSchema5","stringify","isProviderDefinedTool","createRoute","listToolsResponseSchema","MastraFGAPermissions","handleError","toolIdPathParams","serializedToolSchema","HTTPException","optionalRunIdSchema","executeToolContextBodySchema","executeToolResponseSchema","validateBody","isVercelTool","agentToolPathParams","getAgentFromSystem","tool","executeToolBodySchema"],"mappings":"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","file":"chunk-YRZYCQGE.cjs","sourcesContent":["import { isVercelTool, isProviderDefinedTool } from '@mastra/core/tools';\nimport { toStandardSchema, standardSchemaToJSONSchema } from '@mastra/schema-compat/schema';\nimport type { PublicSchema } from '@mastra/schema-compat/schema';\nimport { stringify } from 'superjson';\nimport { MastraFGAPermissions } from '../fga-permissions';\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 { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { validateBody } from './utils';\n\n/**\n * Resolves a schema that may be a lazy function (e.g. AI SDK provider tools).\n * Recursively resolves until a non-function value is returned.\n * Skips functions that are themselves valid schemas (e.g. ArkType types are\n * callable but also implement StandardSchema via ~standard).\n */\nfunction resolveLazySchema(schema: unknown): unknown {\n if (typeof schema === 'function' && !('~standard' in schema)) {\n return resolveLazySchema(schema());\n }\n return schema;\n}\n\nfunction schemaToJsonSchema(schema: PublicSchema<unknown> | undefined) {\n if (!schema) {\n return undefined;\n }\n\n return standardSchemaToJSONSchema(toStandardSchema(schema), { target: 'draft-2020-12' });\n}\n\nfunction serializeSchema(schema: unknown): string | undefined {\n const jsonSchema = schemaToJsonSchema(resolveLazySchema(schema) as PublicSchema<unknown> | undefined);\n if (jsonSchema === undefined) return undefined;\n return stringify(jsonSchema);\n}\n\n/**\n * Searches dynamically-resolved agent tools (provided via `toolsResolver` /\n * function-based `tools`) for a tool with the given id. Used as a fallback\n * after the static tool registry (`registeredTools` + `mastra.getToolById`)\n * misses, so global tool routes can resolve tools that only exist on agents.\n *\n * Errors thrown by an individual agent's `listTools()` are logged and\n * skipped so a single broken resolver doesn't take down the whole lookup.\n */\nasync function findToolInAgents(mastra: any, toolId: string, requestContext: any): Promise<any | undefined> {\n const agents = mastra.listAgents() || {};\n for (const agent of Object.values(agents) as any[]) {\n try {\n const agentTools = await agent.listTools({ requestContext });\n const found = Object.values(agentTools || {}).find((t: any) => t.id === toolId);\n if (found) return found;\n } catch (error) {\n mastra.getLogger?.()?.warn?.('Failed to list tools for agent while resolving tool by id', {\n agentId: agent?.id,\n toolId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n return undefined;\n}\n\n/**\n * Serializes a tool for API responses, handling both regular tools (with Zod schemas)\n * and provider-defined tools (with AI SDK lazy schemas).\n */\nfunction serializeTool(tool: any): any {\n // Provider-defined tools (e.g. google.tools.googleSearch(), openai.tools.webSearch())\n // have lazy inputSchema functions that return AI SDK Schema objects, not Zod schemas.\n // We resolve them and use the jsonSchema property directly.\n if (isProviderDefinedTool(tool)) {\n const resolvedInput = resolveLazySchema(tool.inputSchema);\n const resolvedOutput = resolveLazySchema(tool.outputSchema);\n return {\n ...tool,\n inputSchema:\n resolvedInput && typeof resolvedInput === 'object' && 'jsonSchema' in resolvedInput\n ? stringify(resolvedInput.jsonSchema)\n : undefined,\n outputSchema:\n resolvedOutput && typeof resolvedOutput === 'object' && 'jsonSchema' in resolvedOutput\n ? stringify(resolvedOutput.jsonSchema)\n : undefined,\n };\n }\n\n return {\n ...tool,\n inputSchema: serializeSchema(tool.inputSchema),\n outputSchema: serializeSchema(tool.outputSchema),\n requestContextSchema: serializeSchema(tool.requestContextSchema),\n };\n}\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: '/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 requiresAuth: true,\n handler: async ({ mastra, registeredTools, requestContext }) => {\n try {\n // Merge tools from two sources: mastra.listTools() includes dynamically created tools\n // (e.g. MCP tools, or agent tools registered by their intrinsic id), while registeredTools\n // includes tools discovered by the CLI bundler (keyed by export name).\n //\n // The same tool instance can appear in both maps under different keys (e.g. an agent\n // registers it by `tool.id` while the bundler registers it by export name). Dedupe by\n // `tool.id`, preferring the registeredTools (bundler) key, so each tool appears once.\n const registered = registeredTools && Object.keys(registeredTools).length > 0 ? registeredTools : {};\n\n const allTools: Record<string, any> = {};\n const seenToolIds = new Map<string, string>();\n\n // registeredTools first so their key wins for a given tool.id.\n for (const [key, tool] of Object.entries(registered)) {\n const toolId = typeof (tool as any)?.id === 'string' ? (tool as any).id : undefined;\n if (toolId !== undefined) seenToolIds.set(toolId, key);\n allTools[key] = tool;\n }\n\n for (const [key, tool] of Object.entries(mastra.listTools() ?? {})) {\n const toolId = typeof (tool as any)?.id === 'string' ? (tool as any).id : undefined;\n // Skip if this exact tool.id was already registered (under any key) by registeredTools.\n if (toolId !== undefined && seenToolIds.has(toolId)) continue;\n if (toolId !== undefined) seenToolIds.set(toolId, key);\n allTools[key] = tool;\n }\n\n const serializedTools = Object.entries(allTools).reduce(\n (acc, [id, _tool]) => {\n acc[id] = serializeTool(_tool);\n return acc;\n },\n {} as Record<string, any>,\n );\n\n // Filter tools by FGA if configured\n const fgaProvider = mastra.getServer?.()?.fga;\n const user = requestContext?.get('user');\n if (fgaProvider && user) {\n const toolList = Object.entries(serializedTools).map(([id, t]) => ({ id, ...t }));\n const accessible = await fgaProvider.filterAccessible(user, toolList, 'tool', MastraFGAPermissions.TOOLS_READ);\n const accessibleSet = new Set(accessible.map((t: any) => t.id));\n for (const id of Object.keys(serializedTools)) {\n if (!accessibleSet.has(id)) {\n delete serializedTools[id];\n }\n }\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: '/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 requiresAuth: true,\n handler: async ({ mastra, registeredTools, toolId, requestContext }) => {\n try {\n let tool: any;\n\n // Try explicit registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n }\n if (!tool) {\n try {\n tool = mastra.getToolById(toolId);\n } catch {\n // tool not found in global registry, continue to agent fallback\n }\n }\n\n // Fallback: search dynamically-resolved agent tools (toolsResolver)\n if (!tool) {\n tool = await findToolInAgents(mastra, toolId, requestContext);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n return serializeTool(tool);\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: '/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 requiresAuth: true,\n handler: async ({ mastra, runId, toolId, registeredTools, 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 registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n }\n if (!tool) {\n try {\n tool = mastra.getToolById(toolId);\n } catch {\n // tool not found in global registry, continue to agent fallback\n }\n }\n\n // Fallback: search dynamically-resolved agent tools (toolsResolver)\n if (!tool) {\n tool = await findToolInAgents(mastra, toolId, requestContext);\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 let result;\n if (isVercelTool(tool)) {\n result = await (tool as any).execute(data);\n } else {\n 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 }\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: '/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 requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\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 return serializeTool(tool);\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: '/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 requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, data, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\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
+ {"version":3,"sources":["../src/server/handlers/tools.ts"],"names":["__export","standardSchemaToJSONSchema","toStandardSchema5","stringify","isProviderDefinedTool","createRoute","listToolsResponseSchema","MastraFGAPermissions","handleError","toolIdPathParams","serializedToolSchema","HTTPException","optionalRunIdSchema","executeToolContextBodySchema","executeToolResponseSchema","validateBody","isVercelTool","agentToolPathParams","getAgentFromSystem","tool","executeToolBodySchema"],"mappings":"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","file":"chunk-GDCCVDX7.cjs","sourcesContent":["import { isVercelTool, isProviderDefinedTool } from '@mastra/core/tools';\nimport { toStandardSchema, standardSchemaToJSONSchema } from '@mastra/schema-compat/schema';\nimport type { PublicSchema } from '@mastra/schema-compat/schema';\nimport { stringify } from 'superjson';\nimport { MastraFGAPermissions } from '../fga-permissions';\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 { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { validateBody } from './utils';\n\n/**\n * Resolves a schema that may be a lazy function (e.g. AI SDK provider tools).\n * Recursively resolves until a non-function value is returned.\n * Skips functions that are themselves valid schemas (e.g. ArkType types are\n * callable but also implement StandardSchema via ~standard).\n */\nfunction resolveLazySchema(schema: unknown): unknown {\n if (typeof schema === 'function' && !('~standard' in schema)) {\n return resolveLazySchema(schema());\n }\n return schema;\n}\n\nfunction schemaToJsonSchema(schema: PublicSchema<unknown> | undefined) {\n if (!schema) {\n return undefined;\n }\n\n return standardSchemaToJSONSchema(toStandardSchema(schema), { target: 'draft-2020-12' });\n}\n\nfunction serializeSchema(schema: unknown): string | undefined {\n const jsonSchema = schemaToJsonSchema(resolveLazySchema(schema) as PublicSchema<unknown> | undefined);\n if (jsonSchema === undefined) return undefined;\n return stringify(jsonSchema);\n}\n\n/**\n * Searches dynamically-resolved agent tools (provided via `toolsResolver` /\n * function-based `tools`) for a tool with the given id. Used as a fallback\n * after the static tool registry (`registeredTools` + `mastra.getToolById`)\n * misses, so global tool routes can resolve tools that only exist on agents.\n *\n * Errors thrown by an individual agent's `listTools()` are logged and\n * skipped so a single broken resolver doesn't take down the whole lookup.\n */\nasync function findToolInAgents(mastra: any, toolId: string, requestContext: any): Promise<any | undefined> {\n const agents = mastra.listAgents() || {};\n for (const agent of Object.values(agents) as any[]) {\n try {\n const agentTools = await agent.listTools({ requestContext });\n const found = Object.values(agentTools || {}).find((t: any) => t.id === toolId);\n if (found) return found;\n } catch (error) {\n mastra.getLogger?.()?.warn?.('Failed to list tools for agent while resolving tool by id', {\n agentId: agent?.id,\n toolId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n return undefined;\n}\n\n/**\n * Serializes a tool for API responses, handling both regular tools (with Zod schemas)\n * and provider-defined tools (with AI SDK lazy schemas).\n */\nfunction serializeTool(tool: any): any {\n // Provider-defined tools (e.g. google.tools.googleSearch(), openai.tools.webSearch())\n // have lazy inputSchema functions that return AI SDK Schema objects, not Zod schemas.\n // We resolve them and use the jsonSchema property directly.\n if (isProviderDefinedTool(tool)) {\n const resolvedInput = resolveLazySchema(tool.inputSchema);\n const resolvedOutput = resolveLazySchema(tool.outputSchema);\n return {\n ...tool,\n inputSchema:\n resolvedInput && typeof resolvedInput === 'object' && 'jsonSchema' in resolvedInput\n ? stringify(resolvedInput.jsonSchema)\n : undefined,\n outputSchema:\n resolvedOutput && typeof resolvedOutput === 'object' && 'jsonSchema' in resolvedOutput\n ? stringify(resolvedOutput.jsonSchema)\n : undefined,\n };\n }\n\n return {\n ...tool,\n inputSchema: serializeSchema(tool.inputSchema),\n outputSchema: serializeSchema(tool.outputSchema),\n requestContextSchema: serializeSchema(tool.requestContextSchema),\n };\n}\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: '/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 requiresAuth: true,\n handler: async ({ mastra, registeredTools, requestContext }) => {\n try {\n // Merge tools from two sources: mastra.listTools() includes dynamically created tools\n // (e.g. MCP tools, or agent tools registered by their intrinsic id), while registeredTools\n // includes tools discovered by the CLI bundler (keyed by export name).\n //\n // The same tool instance can appear in both maps under different keys (e.g. an agent\n // registers it by `tool.id` while the bundler registers it by export name). Dedupe by\n // `tool.id`, preferring the registeredTools (bundler) key, so each tool appears once.\n const registered = registeredTools && Object.keys(registeredTools).length > 0 ? registeredTools : {};\n\n const allTools: Record<string, any> = {};\n const seenToolIds = new Map<string, string>();\n\n // registeredTools first so their key wins for a given tool.id.\n for (const [key, tool] of Object.entries(registered)) {\n const toolId = typeof (tool as any)?.id === 'string' ? (tool as any).id : undefined;\n if (toolId !== undefined) seenToolIds.set(toolId, key);\n allTools[key] = tool;\n }\n\n for (const [key, tool] of Object.entries(mastra.listTools() ?? {})) {\n const toolId = typeof (tool as any)?.id === 'string' ? (tool as any).id : undefined;\n // Skip if this exact tool.id was already registered (under any key) by registeredTools.\n if (toolId !== undefined && seenToolIds.has(toolId)) continue;\n if (toolId !== undefined) seenToolIds.set(toolId, key);\n allTools[key] = tool;\n }\n\n const serializedTools = Object.entries(allTools).reduce(\n (acc, [id, _tool]) => {\n acc[id] = serializeTool(_tool);\n return acc;\n },\n {} as Record<string, any>,\n );\n\n // Filter tools by FGA if configured\n const fgaProvider = mastra.getServer?.()?.fga;\n const user = requestContext?.get('user');\n if (fgaProvider && user) {\n const toolList = Object.entries(serializedTools).map(([id, t]) => ({ id, ...t }));\n const accessible = await fgaProvider.filterAccessible(user, toolList, 'tool', MastraFGAPermissions.TOOLS_READ);\n const accessibleSet = new Set(accessible.map((t: any) => t.id));\n for (const id of Object.keys(serializedTools)) {\n if (!accessibleSet.has(id)) {\n delete serializedTools[id];\n }\n }\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: '/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 requiresAuth: true,\n handler: async ({ mastra, registeredTools, toolId, requestContext }) => {\n try {\n let tool: any;\n\n // Try explicit registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n }\n if (!tool) {\n try {\n tool = mastra.getToolById(toolId);\n } catch {\n // tool not found in global registry, continue to agent fallback\n }\n }\n\n // Fallback: search dynamically-resolved agent tools (toolsResolver)\n if (!tool) {\n tool = await findToolInAgents(mastra, toolId, requestContext);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n return serializeTool(tool);\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: '/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 requiresAuth: true,\n handler: async ({ mastra, runId, toolId, registeredTools, 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 registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n }\n if (!tool) {\n try {\n tool = mastra.getToolById(toolId);\n } catch {\n // tool not found in global registry, continue to agent fallback\n }\n }\n\n // Fallback: search dynamically-resolved agent tools (toolsResolver)\n if (!tool) {\n tool = await findToolInAgents(mastra, toolId, requestContext);\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 let result;\n if (isVercelTool(tool)) {\n result = await (tool as any).execute(data);\n } else {\n 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 }\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: '/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 requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\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 return serializeTool(tool);\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: '/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 requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, data, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\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"]}
@@ -3885,5 +3885,5 @@ function createPublicRoute(config) {
3885
3885
  }
3886
3886
 
3887
3887
  export { convertCustomRoutesToOpenAPIPaths, createPublicRoute, createRoute, generateOpenAPIDocument, jsonQueryParam, pickParams, schemaToJsonSchema, wrapSchemaForQueryParams };
3888
- //# sourceMappingURL=chunk-Z5MTOVTR.js.map
3889
- //# sourceMappingURL=chunk-Z5MTOVTR.js.map
3888
+ //# sourceMappingURL=chunk-GDTF6ABE.js.map
3889
+ //# sourceMappingURL=chunk-GDTF6ABE.js.map