@mastra/server 1.48.0 → 1.48.1-alpha.0

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 (232) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/{api-schema-manifest-4VQSWI7S.cjs → api-schema-manifest-BWKCYCQ5.cjs} +4 -4
  3. package/dist/{api-schema-manifest-4VQSWI7S.cjs.map → api-schema-manifest-BWKCYCQ5.cjs.map} +1 -1
  4. package/dist/{api-schema-manifest-RP35YQV7.js → api-schema-manifest-GOPIDVBN.js} +3 -3
  5. package/dist/{api-schema-manifest-RP35YQV7.js.map → api-schema-manifest-GOPIDVBN.js.map} +1 -1
  6. package/dist/{chunk-USYLK73B.js → chunk-2QR65733.js} +3 -3
  7. package/dist/{chunk-USYLK73B.js.map → chunk-2QR65733.js.map} +1 -1
  8. package/dist/{chunk-JBSUT5XF.js → chunk-3ENQND57.js} +3 -3
  9. package/dist/{chunk-JBSUT5XF.js.map → chunk-3ENQND57.js.map} +1 -1
  10. package/dist/{chunk-V4X6NCFW.js → chunk-3NXV3W5N.js} +35 -35
  11. package/dist/{chunk-V4X6NCFW.js.map → chunk-3NXV3W5N.js.map} +1 -1
  12. package/dist/{chunk-MDXMBAYV.js → chunk-3X6LP3LD.js} +4 -4
  13. package/dist/{chunk-MDXMBAYV.js.map → chunk-3X6LP3LD.js.map} +1 -1
  14. package/dist/{chunk-I4X4UHQW.cjs → chunk-433NHSTX.cjs} +5 -5
  15. package/dist/{chunk-I4X4UHQW.cjs.map → chunk-433NHSTX.cjs.map} +1 -1
  16. package/dist/{chunk-LAY7G3RT.cjs → chunk-4744QXJ5.cjs} +7 -7
  17. package/dist/{chunk-LAY7G3RT.cjs.map → chunk-4744QXJ5.cjs.map} +1 -1
  18. package/dist/{chunk-FR5QBXVS.cjs → chunk-4AOBPAJQ.cjs} +6 -6
  19. package/dist/{chunk-FR5QBXVS.cjs.map → chunk-4AOBPAJQ.cjs.map} +1 -1
  20. package/dist/{chunk-I4COPLOY.cjs → chunk-4LAKBLXV.cjs} +54 -54
  21. package/dist/{chunk-I4COPLOY.cjs.map → chunk-4LAKBLXV.cjs.map} +1 -1
  22. package/dist/{chunk-ZBOTGUPW.js → chunk-55QAS25J.js} +6 -6
  23. package/dist/{chunk-ZBOTGUPW.js.map → chunk-55QAS25J.js.map} +1 -1
  24. package/dist/{chunk-SXZS6VZ3.js → chunk-56AYHXOU.js} +3 -3
  25. package/dist/{chunk-SXZS6VZ3.js.map → chunk-56AYHXOU.js.map} +1 -1
  26. package/dist/{chunk-ZGAUP346.cjs → chunk-63R2BIAL.cjs} +11 -11
  27. package/dist/{chunk-ZGAUP346.cjs.map → chunk-63R2BIAL.cjs.map} +1 -1
  28. package/dist/{chunk-VWZFDHUG.js → chunk-6BV4FKSM.js} +5 -5
  29. package/dist/{chunk-VWZFDHUG.js.map → chunk-6BV4FKSM.js.map} +1 -1
  30. package/dist/{chunk-LVGS5ADS.cjs → chunk-6EDRDYGN.cjs} +63 -63
  31. package/dist/{chunk-LVGS5ADS.cjs.map → chunk-6EDRDYGN.cjs.map} +1 -1
  32. package/dist/{chunk-RUBHF3J4.js → chunk-6QJBHJVD.js} +4 -4
  33. package/dist/{chunk-RUBHF3J4.js.map → chunk-6QJBHJVD.js.map} +1 -1
  34. package/dist/{chunk-MJH4EEUV.cjs → chunk-6XNMQBYE.cjs} +4 -4
  35. package/dist/{chunk-MJH4EEUV.cjs.map → chunk-6XNMQBYE.cjs.map} +1 -1
  36. package/dist/{chunk-OJB6MLRD.cjs → chunk-755RJ4WD.cjs} +23 -23
  37. package/dist/{chunk-OJB6MLRD.cjs.map → chunk-755RJ4WD.cjs.map} +1 -1
  38. package/dist/{chunk-Q5CGBHAI.cjs → chunk-A6IFHAMY.cjs} +11 -11
  39. package/dist/{chunk-Q5CGBHAI.cjs.map → chunk-A6IFHAMY.cjs.map} +1 -1
  40. package/dist/{chunk-DR2XLMGB.cjs → chunk-ATZSN4MH.cjs} +3 -3
  41. package/dist/{chunk-DR2XLMGB.cjs.map → chunk-ATZSN4MH.cjs.map} +1 -1
  42. package/dist/{chunk-FKM644Z6.cjs → chunk-AXCPENWP.cjs} +290 -290
  43. package/dist/{chunk-FKM644Z6.cjs.map → chunk-AXCPENWP.cjs.map} +1 -1
  44. package/dist/{chunk-OJLVR6RK.js → chunk-CDZIWIME.js} +4 -4
  45. package/dist/{chunk-OJLVR6RK.js.map → chunk-CDZIWIME.js.map} +1 -1
  46. package/dist/{chunk-3MJF6POS.js → chunk-CVIBRSHE.js} +6 -6
  47. package/dist/{chunk-3MJF6POS.js.map → chunk-CVIBRSHE.js.map} +1 -1
  48. package/dist/{chunk-AXS2E3ZS.js → chunk-DECNKSKW.js} +4 -4
  49. package/dist/{chunk-AXS2E3ZS.js.map → chunk-DECNKSKW.js.map} +1 -1
  50. package/dist/{chunk-TWUWF3AU.js → chunk-DWLFAZ6X.js} +3 -3
  51. package/dist/{chunk-TWUWF3AU.js.map → chunk-DWLFAZ6X.js.map} +1 -1
  52. package/dist/{chunk-LQXFAW5L.js → chunk-ERQWC6JO.js} +6 -6
  53. package/dist/{chunk-LQXFAW5L.js.map → chunk-ERQWC6JO.js.map} +1 -1
  54. package/dist/{chunk-6QQ4I6IY.cjs → chunk-EUKL5LNM.cjs} +39 -39
  55. package/dist/{chunk-6QQ4I6IY.cjs.map → chunk-EUKL5LNM.cjs.map} +1 -1
  56. package/dist/{chunk-56RJJ6PJ.js → chunk-FLIAPNUU.js} +4 -4
  57. package/dist/{chunk-56RJJ6PJ.js.map → chunk-FLIAPNUU.js.map} +1 -1
  58. package/dist/{chunk-F3V5T2ON.js → chunk-FZGSWPE7.js} +5 -5
  59. package/dist/{chunk-F3V5T2ON.js.map → chunk-FZGSWPE7.js.map} +1 -1
  60. package/dist/{chunk-L2M2Z5CU.js → chunk-GTMBHJLQ.js} +5 -5
  61. package/dist/{chunk-L2M2Z5CU.js.map → chunk-GTMBHJLQ.js.map} +1 -1
  62. package/dist/{chunk-TGFTKXT4.cjs → chunk-GU6MTXHR.cjs} +10 -10
  63. package/dist/{chunk-TGFTKXT4.cjs.map → chunk-GU6MTXHR.cjs.map} +1 -1
  64. package/dist/{chunk-YWUVDFQZ.cjs → chunk-GZ4HWZWE.cjs} +3 -3
  65. package/dist/{chunk-YWUVDFQZ.cjs.map → chunk-GZ4HWZWE.cjs.map} +1 -1
  66. package/dist/{chunk-ZJM23PJU.js → chunk-HDBVD5FJ.js} +6 -6
  67. package/dist/{chunk-ZJM23PJU.js.map → chunk-HDBVD5FJ.js.map} +1 -1
  68. package/dist/{chunk-EOGTJIPF.js → chunk-IBUJJIRW.js} +3 -3
  69. package/dist/{chunk-EOGTJIPF.js.map → chunk-IBUJJIRW.js.map} +1 -1
  70. package/dist/{chunk-KE32UGIC.cjs → chunk-ILGUY62R.cjs} +14 -14
  71. package/dist/{chunk-KE32UGIC.cjs.map → chunk-ILGUY62R.cjs.map} +1 -1
  72. package/dist/{chunk-SORUUFZK.cjs → chunk-JFKJJR3U.cjs} +34 -34
  73. package/dist/{chunk-SORUUFZK.cjs.map → chunk-JFKJJR3U.cjs.map} +1 -1
  74. package/dist/{chunk-FOANUZQ3.cjs → chunk-JIK3WXOP.cjs} +11 -11
  75. package/dist/{chunk-FOANUZQ3.cjs.map → chunk-JIK3WXOP.cjs.map} +1 -1
  76. package/dist/{chunk-J63TLQKU.js → chunk-JZBZ3HZR.js} +8 -8
  77. package/dist/{chunk-J63TLQKU.js.map → chunk-JZBZ3HZR.js.map} +1 -1
  78. package/dist/{chunk-HDIYJI2Z.cjs → chunk-KGUHJRHZ.cjs} +3 -3
  79. package/dist/{chunk-HDIYJI2Z.cjs.map → chunk-KGUHJRHZ.cjs.map} +1 -1
  80. package/dist/{chunk-V23YWHBT.js → chunk-LH5CRODT.js} +6 -6
  81. package/dist/{chunk-V23YWHBT.js.map → chunk-LH5CRODT.js.map} +1 -1
  82. package/dist/{chunk-SXMPMMTX.cjs → chunk-M6RITLE5.cjs} +8 -8
  83. package/dist/{chunk-SXMPMMTX.cjs.map → chunk-M6RITLE5.cjs.map} +1 -1
  84. package/dist/{chunk-GZUFJQ5I.js → chunk-NF4PSDGQ.js} +3 -3
  85. package/dist/{chunk-GZUFJQ5I.js.map → chunk-NF4PSDGQ.js.map} +1 -1
  86. package/dist/{chunk-LRRO5PBP.cjs → chunk-NUQ5EITO.cjs} +14 -14
  87. package/dist/{chunk-LRRO5PBP.cjs.map → chunk-NUQ5EITO.cjs.map} +1 -1
  88. package/dist/{chunk-YDUA7L5F.cjs → chunk-ODUTR3YG.cjs} +9 -9
  89. package/dist/{chunk-YDUA7L5F.cjs.map → chunk-ODUTR3YG.cjs.map} +1 -1
  90. package/dist/{chunk-PRJENCIC.js → chunk-OR73MMQ3.js} +3 -3
  91. package/dist/{chunk-PRJENCIC.js.map → chunk-OR73MMQ3.js.map} +1 -1
  92. package/dist/{chunk-ICWJHWEM.js → chunk-ORPTO5F2.js} +5 -5
  93. package/dist/{chunk-ICWJHWEM.js.map → chunk-ORPTO5F2.js.map} +1 -1
  94. package/dist/{chunk-5C5P4MZE.js → chunk-OUQGCJQS.js} +5 -5
  95. package/dist/{chunk-5C5P4MZE.js.map → chunk-OUQGCJQS.js.map} +1 -1
  96. package/dist/{chunk-3EZOV6A3.cjs → chunk-OVFFGZLA.cjs} +14 -14
  97. package/dist/{chunk-3EZOV6A3.cjs.map → chunk-OVFFGZLA.cjs.map} +1 -1
  98. package/dist/{chunk-KN22ZEKU.cjs → chunk-QFSMY2ZW.cjs} +16 -16
  99. package/dist/{chunk-KN22ZEKU.cjs.map → chunk-QFSMY2ZW.cjs.map} +1 -1
  100. package/dist/{chunk-WLQ4XLHG.js → chunk-QHP2MCPG.js} +6 -6
  101. package/dist/{chunk-WLQ4XLHG.js.map → chunk-QHP2MCPG.js.map} +1 -1
  102. package/dist/{chunk-H4HJRAHU.js → chunk-R4C4XFA7.js} +3 -3
  103. package/dist/{chunk-H4HJRAHU.js.map → chunk-R4C4XFA7.js.map} +1 -1
  104. package/dist/{chunk-H7NWUAHC.cjs → chunk-R7D7QQC5.cjs} +3 -3
  105. package/dist/{chunk-H7NWUAHC.cjs.map → chunk-R7D7QQC5.cjs.map} +1 -1
  106. package/dist/{chunk-SDSDV6TA.js → chunk-RIPB4QC6.js} +4 -4
  107. package/dist/{chunk-SDSDV6TA.js.map → chunk-RIPB4QC6.js.map} +1 -1
  108. package/dist/{chunk-EG6DDVIJ.cjs → chunk-RS7ZTUH3.cjs} +20 -20
  109. package/dist/{chunk-EG6DDVIJ.cjs.map → chunk-RS7ZTUH3.cjs.map} +1 -1
  110. package/dist/{chunk-42M6Y2OD.cjs → chunk-RVD3DGBZ.cjs} +3 -3
  111. package/dist/{chunk-42M6Y2OD.cjs.map → chunk-RVD3DGBZ.cjs.map} +1 -1
  112. package/dist/{chunk-L4DD3HSB.js → chunk-RY5RETAD.js} +3 -3
  113. package/dist/{chunk-L4DD3HSB.js.map → chunk-RY5RETAD.js.map} +1 -1
  114. package/dist/{chunk-LHEZDXWV.js → chunk-RYU755ZB.js} +5 -5
  115. package/dist/{chunk-LHEZDXWV.js.map → chunk-RYU755ZB.js.map} +1 -1
  116. package/dist/{chunk-5O3XY7Z3.cjs → chunk-SIBBWIG2.cjs} +8 -8
  117. package/dist/{chunk-5O3XY7Z3.cjs.map → chunk-SIBBWIG2.cjs.map} +1 -1
  118. package/dist/{chunk-KR2OUW3N.js → chunk-SKYHKW2B.js} +7 -7
  119. package/dist/{chunk-KR2OUW3N.js.map → chunk-SKYHKW2B.js.map} +1 -1
  120. package/dist/{chunk-YRZYCQGE.cjs → chunk-SQJ7VNB7.cjs} +14 -14
  121. package/dist/{chunk-YRZYCQGE.cjs.map → chunk-SQJ7VNB7.cjs.map} +1 -1
  122. package/dist/{chunk-Y32XM46K.cjs → chunk-SVOOYE4P.cjs} +3 -3
  123. package/dist/{chunk-Y32XM46K.cjs.map → chunk-SVOOYE4P.cjs.map} +1 -1
  124. package/dist/{chunk-EMQZIPXG.cjs → chunk-V224FC6Y.cjs} +14 -14
  125. package/dist/{chunk-EMQZIPXG.cjs.map → chunk-V224FC6Y.cjs.map} +1 -1
  126. package/dist/{chunk-JGHI6QE5.js → chunk-VKCPJYAX.js} +4 -4
  127. package/dist/{chunk-JGHI6QE5.js.map → chunk-VKCPJYAX.js.map} +1 -1
  128. package/dist/{chunk-DPTBGWU7.js → chunk-VUEMRARE.js} +6 -6
  129. package/dist/{chunk-DPTBGWU7.js.map → chunk-VUEMRARE.js.map} +1 -1
  130. package/dist/{chunk-BEPGHVMJ.js → chunk-W4ALUSXG.js} +5 -5
  131. package/dist/{chunk-BEPGHVMJ.js.map → chunk-W4ALUSXG.js.map} +1 -1
  132. package/dist/{chunk-SCY53JIH.cjs → chunk-WBHJJ3UO.cjs} +89 -89
  133. package/dist/{chunk-SCY53JIH.cjs.map → chunk-WBHJJ3UO.cjs.map} +1 -1
  134. package/dist/{chunk-YPYXJKWJ.js → chunk-WRGLWN4J.js} +6 -6
  135. package/dist/{chunk-YPYXJKWJ.js.map → chunk-WRGLWN4J.js.map} +1 -1
  136. package/dist/{chunk-KC52XQSP.js → chunk-WXZBPFQS.js} +4 -4
  137. package/dist/{chunk-KC52XQSP.js.map → chunk-WXZBPFQS.js.map} +1 -1
  138. package/dist/{chunk-IQZE4X6U.cjs → chunk-X5UGPWMB.cjs} +14 -14
  139. package/dist/{chunk-IQZE4X6U.cjs.map → chunk-X5UGPWMB.cjs.map} +1 -1
  140. package/dist/{chunk-DX4ROVTA.js → chunk-XYARXEQO.js} +4 -4
  141. package/dist/{chunk-DX4ROVTA.js.map → chunk-XYARXEQO.js.map} +1 -1
  142. package/dist/{chunk-MTWCBGFH.cjs → chunk-Y24N7BKC.cjs} +3 -3
  143. package/dist/{chunk-MTWCBGFH.cjs.map → chunk-Y24N7BKC.cjs.map} +1 -1
  144. package/dist/{chunk-OE5GVCW4.cjs → chunk-YL22BKI2.cjs} +45 -45
  145. package/dist/{chunk-OE5GVCW4.cjs.map → chunk-YL22BKI2.cjs.map} +1 -1
  146. package/dist/{chunk-KIDHIRVO.cjs → chunk-YLWKZ3VK.cjs} +7 -7
  147. package/dist/{chunk-KIDHIRVO.cjs.map → chunk-YLWKZ3VK.cjs.map} +1 -1
  148. package/dist/{chunk-AR5PBVYY.cjs → chunk-YSIEX3WZ.cjs} +11 -11
  149. package/dist/{chunk-AR5PBVYY.cjs.map → chunk-YSIEX3WZ.cjs.map} +1 -1
  150. package/dist/{chunk-2MEUH7JT.js → chunk-ZO7HYQJT.js} +8 -8
  151. package/dist/{chunk-2MEUH7JT.js.map → chunk-ZO7HYQJT.js.map} +1 -1
  152. package/dist/{chunk-AJ4VAZFT.cjs → chunk-ZVDH3EUZ.cjs} +5 -5
  153. package/dist/{chunk-AJ4VAZFT.cjs.map → chunk-ZVDH3EUZ.cjs.map} +1 -1
  154. package/dist/docs/SKILL.md +1 -1
  155. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  156. package/dist/server/handlers/a2a.cjs +14 -14
  157. package/dist/server/handlers/a2a.js +1 -1
  158. package/dist/server/handlers/agent-builder.cjs +17 -17
  159. package/dist/server/handlers/agent-builder.js +1 -1
  160. package/dist/server/handlers/agent-versions.cjs +8 -8
  161. package/dist/server/handlers/agent-versions.js +1 -1
  162. package/dist/server/handlers/agents.cjs +47 -47
  163. package/dist/server/handlers/agents.js +1 -1
  164. package/dist/server/handlers/auth.cjs +13 -13
  165. package/dist/server/handlers/auth.js +1 -1
  166. package/dist/server/handlers/authorship.cjs +12 -12
  167. package/dist/server/handlers/authorship.js +1 -1
  168. package/dist/server/handlers/builder-registry.cjs +6 -6
  169. package/dist/server/handlers/builder-registry.js +1 -1
  170. package/dist/server/handlers/channels.cjs +5 -5
  171. package/dist/server/handlers/channels.js +1 -1
  172. package/dist/server/handlers/conversations.cjs +5 -5
  173. package/dist/server/handlers/conversations.js +1 -1
  174. package/dist/server/handlers/datasets.cjs +26 -26
  175. package/dist/server/handlers/datasets.js +1 -1
  176. package/dist/server/handlers/editor-builder.cjs +6 -6
  177. package/dist/server/handlers/editor-builder.js +1 -1
  178. package/dist/server/handlers/favorites-enrichment.cjs +4 -4
  179. package/dist/server/handlers/favorites-enrichment.js +1 -1
  180. package/dist/server/handlers/logs.cjs +4 -4
  181. package/dist/server/handlers/logs.js +1 -1
  182. package/dist/server/handlers/mcp-client-versions.cjs +8 -8
  183. package/dist/server/handlers/mcp-client-versions.js +1 -1
  184. package/dist/server/handlers/memory.cjs +27 -27
  185. package/dist/server/handlers/memory.js +1 -1
  186. package/dist/server/handlers/observability.cjs +11 -11
  187. package/dist/server/handlers/observability.js +1 -1
  188. package/dist/server/handlers/prompt-block-versions.cjs +8 -8
  189. package/dist/server/handlers/prompt-block-versions.js +1 -1
  190. package/dist/server/handlers/responses.cjs +4 -4
  191. package/dist/server/handlers/responses.js +1 -1
  192. package/dist/server/handlers/responses.storage.cjs +8 -8
  193. package/dist/server/handlers/responses.storage.js +1 -1
  194. package/dist/server/handlers/scorer-versions.cjs +8 -8
  195. package/dist/server/handlers/scorer-versions.js +1 -1
  196. package/dist/server/handlers/scores.cjs +7 -7
  197. package/dist/server/handlers/scores.js +1 -1
  198. package/dist/server/handlers/stored-agent-favorites.cjs +3 -3
  199. package/dist/server/handlers/stored-agent-favorites.js +1 -1
  200. package/dist/server/handlers/stored-agents.cjs +10 -10
  201. package/dist/server/handlers/stored-agents.js +1 -1
  202. package/dist/server/handlers/stored-mcp-clients.cjs +6 -6
  203. package/dist/server/handlers/stored-mcp-clients.js +1 -1
  204. package/dist/server/handlers/stored-prompt-blocks.cjs +6 -6
  205. package/dist/server/handlers/stored-prompt-blocks.js +1 -1
  206. package/dist/server/handlers/stored-scorers.cjs +6 -6
  207. package/dist/server/handlers/stored-scorers.js +1 -1
  208. package/dist/server/handlers/stored-skill-favorites.cjs +3 -3
  209. package/dist/server/handlers/stored-skill-favorites.js +1 -1
  210. package/dist/server/handlers/stored-skills.cjs +7 -7
  211. package/dist/server/handlers/stored-skills.js +1 -1
  212. package/dist/server/handlers/stored-workspaces.cjs +6 -6
  213. package/dist/server/handlers/stored-workspaces.js +1 -1
  214. package/dist/server/handlers/system.cjs +3 -3
  215. package/dist/server/handlers/system.js +1 -1
  216. package/dist/server/handlers/tool-providers.cjs +14 -14
  217. package/dist/server/handlers/tool-providers.js +1 -1
  218. package/dist/server/handlers/tools.cjs +6 -6
  219. package/dist/server/handlers/tools.js +1 -1
  220. package/dist/server/handlers/utils.cjs +10 -10
  221. package/dist/server/handlers/utils.js +1 -1
  222. package/dist/server/handlers/workflows.cjs +27 -27
  223. package/dist/server/handlers/workflows.js +1 -1
  224. package/dist/server/handlers/workspace.cjs +26 -26
  225. package/dist/server/handlers/workspace.js +1 -1
  226. package/dist/server/handlers.cjs +35 -35
  227. package/dist/server/handlers.js +12 -12
  228. package/dist/server/schemas/index.cjs +605 -605
  229. package/dist/server/schemas/index.js +9 -9
  230. package/dist/server/server-adapter/index.cjs +43 -43
  231. package/dist/server/server-adapter/index.js +7 -7
  232. package/package.json +4 -4
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkHDIYJI2Z_cjs = require('./chunk-HDIYJI2Z.cjs');
4
- var chunkPXLC5SNM_cjs = require('./chunk-PXLC5SNM.cjs');
5
- var chunkSXKQ7CSX_cjs = require('./chunk-SXKQ7CSX.cjs');
3
+ var chunkKGUHJRHZ_cjs = require('./chunk-KGUHJRHZ.cjs');
6
4
  var chunkZ7LCIYK7_cjs = require('./chunk-Z7LCIYK7.cjs');
7
5
  var chunkDN2NUSL2_cjs = require('./chunk-DN2NUSL2.cjs');
8
6
  var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
7
+ var chunkSXKQ7CSX_cjs = require('./chunk-SXKQ7CSX.cjs');
8
+ var chunkPXLC5SNM_cjs = require('./chunk-PXLC5SNM.cjs');
9
9
  var requestContext = require('@mastra/core/request-context');
10
10
 
11
11
  var TOOL_PROVIDERS_RESOURCE = "tool-providers";
@@ -300,7 +300,7 @@ var LIST_TOOL_PROVIDER_CONNECTIONS_ROUTE = chunkDN2NUSL2_cjs.createRoute({
300
300
  throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Tool provider ${providerId} does not support listConnections` });
301
301
  }
302
302
  const callerAuthorId = resolveOwnerId(requestContext, mastra.getLogger());
303
- const isAdmin = requestContext ? chunkHDIYJI2Z_cjs.hasAdminBypass(requestContext, TOOL_PROVIDERS_RESOURCE) : false;
303
+ const isAdmin = requestContext ? chunkKGUHJRHZ_cjs.hasAdminBypass(requestContext, TOOL_PROVIDERS_RESOURCE) : false;
304
304
  const requestedAuthorId = isAdmin && typeof queryAuthorId === "string" && queryAuthorId.length > 0 ? queryAuthorId : void 0;
305
305
  const effectiveAuthorId = isAdmin ? requestedAuthorId : callerAuthorId;
306
306
  const storage = mastra.getStorage();
@@ -420,7 +420,7 @@ var DISCONNECT_TOOL_PROVIDER_CONNECTION_ROUTE = chunkDN2NUSL2_cjs.createRoute({
420
420
  const editor = requireEditor(mastra.getEditor());
421
421
  const provider = await resolveProvider(editor, providerId);
422
422
  const callerAuthorId = resolveOwnerId(requestContext, mastra.getLogger());
423
- const isAdmin = requestContext ? chunkHDIYJI2Z_cjs.hasAdminBypass(requestContext, TOOL_PROVIDERS_RESOURCE) : false;
423
+ const isAdmin = requestContext ? chunkKGUHJRHZ_cjs.hasAdminBypass(requestContext, TOOL_PROVIDERS_RESOURCE) : false;
424
424
  const isForce = force === true || force === "true";
425
425
  const storage = mastra.getStorage();
426
426
  const store = await storage?.getStore("toolProviderConnections");
@@ -490,7 +490,7 @@ var UPDATE_TOOL_PROVIDER_CONNECTION_ROUTE = chunkDN2NUSL2_cjs.createRoute({
490
490
  const editor = requireEditor(mastra.getEditor());
491
491
  const provider = await resolveProvider(editor, providerId);
492
492
  const callerAuthorId = resolveOwnerId(requestContext, mastra.getLogger());
493
- const isAdmin = requestContext ? chunkHDIYJI2Z_cjs.hasAdminBypass(requestContext, TOOL_PROVIDERS_RESOURCE) : false;
493
+ const isAdmin = requestContext ? chunkKGUHJRHZ_cjs.hasAdminBypass(requestContext, TOOL_PROVIDERS_RESOURCE) : false;
494
494
  const storage = mastra.getStorage();
495
495
  const store = await storage?.getStore("toolProviderConnections");
496
496
  if (!store) {
@@ -542,7 +542,7 @@ var GET_TOOL_PROVIDER_CONNECTION_USAGE_ROUTE = chunkDN2NUSL2_cjs.createRoute({
542
542
  const editor = requireEditor(mastra.getEditor());
543
543
  const provider = await resolveProvider(editor, providerId);
544
544
  const callerAuthorId = resolveOwnerId(requestContext, mastra.getLogger());
545
- const isAdmin = requestContext ? chunkHDIYJI2Z_cjs.hasAdminBypass(requestContext, TOOL_PROVIDERS_RESOURCE) : false;
545
+ const isAdmin = requestContext ? chunkKGUHJRHZ_cjs.hasAdminBypass(requestContext, TOOL_PROVIDERS_RESOURCE) : false;
546
546
  const storage = mastra.getStorage();
547
547
  const store = await storage?.getStore("toolProviderConnections");
548
548
  let ownerAuthorId;
@@ -654,5 +654,5 @@ exports.LIST_TOOL_PROVIDER_TOOLKITS_ROUTE = LIST_TOOL_PROVIDER_TOOLKITS_ROUTE;
654
654
  exports.LIST_TOOL_PROVIDER_TOOLS_ROUTE = LIST_TOOL_PROVIDER_TOOLS_ROUTE;
655
655
  exports.TOOL_PROVIDER_CONNECTION_STATUS_ROUTE = TOOL_PROVIDER_CONNECTION_STATUS_ROUTE;
656
656
  exports.UPDATE_TOOL_PROVIDER_CONNECTION_ROUTE = UPDATE_TOOL_PROVIDER_CONNECTION_ROUTE;
657
- //# sourceMappingURL=chunk-YDUA7L5F.cjs.map
658
- //# sourceMappingURL=chunk-YDUA7L5F.cjs.map
657
+ //# sourceMappingURL=chunk-ODUTR3YG.cjs.map
658
+ //# sourceMappingURL=chunk-ODUTR3YG.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/handlers/tool-providers.ts"],"names":["HTTPException","requestContext","MASTRA_RESOURCE_ID_KEY","MASTRA_USER_KEY","createRoute","listToolProvidersResponseSchema","handleError","toolProviderIdPathParams","listToolProviderToolkitsResponseSchema","listToolProviderToolsQuerySchema","listToolProviderToolsResponseSchema","toolSlugPathParams","getToolProviderToolSchemaResponseSchema","authorizeToolProviderBodySchema","authorizeToolProviderResponseSchema","toolProviderAuthStatusPathParams","authStatusToolProviderResponseSchema","connectionStatusToolProviderBodySchema","connectionStatusToolProviderResponseSchema","listConnectionsQuerySchema","listConnectionsResponseSchema","hasAdminBypass","listConnectionFieldsQuerySchema","listConnectionFieldsResponseSchema","toolProviderConnectionPathParams","disconnectConnectionQuerySchema","disconnectConnectionResponseSchema","updateConnectionBodySchema","updateConnectionResponseSchema","connectionUsageQuerySchema","connectionUsageResponseSchema","toolProviderHealthResponseSchema"],"mappings":"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","file":"chunk-YDUA7L5F.cjs","sourcesContent":["import type { IMastraEditor } from '@mastra/core/editor';\nimport type { IMastraLogger } from '@mastra/core/logger';\nimport { MASTRA_RESOURCE_ID_KEY } from '@mastra/core/request-context';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type * as ToolProviderModule from '@mastra/core/tool-provider';\nimport type { ToolProvider } from '@mastra/core/tool-provider';\n\nimport { MASTRA_USER_KEY } from '../constants';\nimport { HTTPException } from '../http-exception';\nimport {\n authorizeToolProviderBodySchema,\n authorizeToolProviderResponseSchema,\n authStatusToolProviderResponseSchema,\n connectionStatusToolProviderBodySchema,\n connectionStatusToolProviderResponseSchema,\n connectionUsageQuerySchema,\n connectionUsageResponseSchema,\n disconnectConnectionQuerySchema,\n disconnectConnectionResponseSchema,\n getToolProviderToolSchemaResponseSchema,\n listConnectionFieldsQuerySchema,\n listConnectionFieldsResponseSchema,\n listConnectionsQuerySchema,\n listConnectionsResponseSchema,\n listToolProviderToolkitsResponseSchema,\n listToolProviderToolsQuerySchema,\n listToolProviderToolsResponseSchema,\n listToolProvidersResponseSchema,\n toolProviderAuthStatusPathParams,\n toolProviderConnectionPathParams,\n toolProviderHealthResponseSchema,\n toolProviderIdPathParams,\n toolSlugPathParams,\n updateConnectionBodySchema,\n updateConnectionResponseSchema,\n} from '../schemas/tool-providers';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { hasAdminBypass } from './authorship';\nimport { handleError } from './error';\n\nconst TOOL_PROVIDERS_RESOURCE = 'tool-providers' as const;\n\n/**\n * Mirrors `@mastra/core/tool-provider#SHARED_BUCKET_ID`. Inlined locally so this\n * module evaluates under any peer-compatible core; a regression test in\n * `tool-providers.test.ts` verifies the literal stays in lockstep with core.\n */\nconst SHARED_BUCKET_ID = 'shared' as const;\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\n/**\n * Lazily import `@mastra/core/tool-provider` so this server module can evaluate\n * under any peer-compatible core. The new value exports (`UnknownToolProviderError`,\n * `SHARED_BUCKET_ID`) ship in core `>=1.39.0-0`; users on older cores who never\n * configure a `MastraEditor` short-circuit via `requireEditor` long before this\n * runs. ESM caches one module instance per resolved specifier so the\n * `instanceof` check below sees the same class identity that `@mastra/editor`\n * throws.\n */\nlet _toolProviderModule: typeof ToolProviderModule | undefined;\nasync function loadToolProviderModule() {\n if (!_toolProviderModule) {\n _toolProviderModule = await import('@mastra/core/tool-provider');\n }\n return _toolProviderModule;\n}\n\nfunction requireEditor(editor: IMastraEditor | undefined): IMastraEditor {\n if (!editor) {\n throw new HTTPException(500, { message: 'Editor is not configured' });\n }\n return editor;\n}\n\nasync function resolveProvider(editor: IMastraEditor, providerId: string): Promise<ToolProvider> {\n try {\n return editor.getToolProviderOrThrow(providerId);\n } catch (error) {\n const { UnknownToolProviderError } = await loadToolProviderModule();\n if (error instanceof UnknownToolProviderError) {\n throw new HTTPException(404, { message: error.message });\n }\n throw error;\n }\n}\n\n// Emit a single warn per process when the connection-owner fallback fires.\n// Multi-tenant deployments that forget to wire `mapUserToResourceId` (or\n// `MASTRA_USER_KEY`) silently funnel every `caller-supplied` pin into one\n// shared OAuth account — surface that misconfiguration once.\nlet defaultBucketWarned = false;\nfunction warnDefaultBucketFallback(logger: IMastraLogger | undefined): void {\n if (defaultBucketWarned) return;\n defaultBucketWarned = true;\n logger?.warn(\n '[tool-providers] caller-supplied scope falling back to shared \"default\" bucket — ' +\n 'wire mapUserToResourceId or set MASTRA_USER_KEY to avoid cross-tenant OAuth sharing',\n );\n}\n\n/**\n * Resolve the connection owner (provider `userId` bucket) from the caller's\n * `RequestContext`. Mirrors the runtime fan-out fallback to `'default'` when\n * no auth context is present so OSS deployments still work.\n */\nfunction resolveOwnerId(requestContext: RequestContext | undefined, logger: IMastraLogger | undefined): string {\n const resourceId = requestContext?.get(MASTRA_RESOURCE_ID_KEY);\n if (typeof resourceId === 'string' && resourceId.length > 0) {\n return resourceId;\n }\n\n const user = requestContext?.get(MASTRA_USER_KEY);\n if (user && typeof user === 'object' && 'id' in user) {\n const id = (user as { id: unknown }).id;\n if (typeof id === 'string' && id.length > 0) {\n return id;\n }\n }\n\n warnDefaultBucketFallback(logger);\n return 'default';\n}\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /tool-providers — List all registered tool providers with their\n * capabilities (when the provider exposes them).\n */\nexport const LIST_TOOL_PROVIDERS_ROUTE = createRoute({\n method: 'GET',\n path: '/tool-providers',\n responseType: 'json',\n responseSchema: listToolProvidersResponseSchema,\n summary: 'List tool providers',\n description: 'Returns a list of all registered tool providers with their info and capabilities',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const providers = editor.getToolProviders();\n return {\n providers: Object.values(providers).map(provider => ({\n ...provider.info,\n ...(provider.displayName ? { displayName: provider.displayName } : {}),\n ...(provider.capabilities ? { capabilities: provider.capabilities } : {}),\n })),\n };\n } catch (error) {\n return handleError(error, 'Error listing tool providers');\n }\n },\n});\n\n/**\n * GET /tool-providers/:providerId/toolkits — Toolkits exposed by a provider.\n */\nexport const LIST_TOOL_PROVIDER_TOOLKITS_ROUTE = createRoute({\n method: 'GET',\n path: '/tool-providers/:providerId/toolkits',\n responseType: 'json',\n pathParamSchema: toolProviderIdPathParams,\n responseSchema: listToolProviderToolkitsResponseSchema,\n summary: 'List tool provider toolkits',\n description: 'Returns the toolkits available from a specific tool provider',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n if (provider.listToolkitsVNext) {\n return await provider.listToolkitsVNext();\n }\n if (provider.listToolkits) {\n return await provider.listToolkits();\n }\n return { data: [] };\n } catch (error) {\n return handleError(error, 'Error listing tool provider toolkits');\n }\n },\n});\n\n/**\n * GET /tool-providers/:providerId/tools — List tools, optionally filtered.\n */\nexport const LIST_TOOL_PROVIDER_TOOLS_ROUTE = createRoute({\n method: 'GET',\n path: '/tool-providers/:providerId/tools',\n responseType: 'json',\n pathParamSchema: toolProviderIdPathParams,\n queryParamSchema: listToolProviderToolsQuerySchema,\n responseSchema: listToolProviderToolsResponseSchema,\n summary: 'List tool provider tools',\n description: 'Returns the tools available from a specific tool provider, with optional filtering',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId, toolkit, search, page, perPage }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n const opts: { toolkit?: string; search?: string; page?: number; perPage?: number } = {};\n if (toolkit !== undefined) opts.toolkit = toolkit;\n if (search !== undefined) opts.search = search;\n if (page !== undefined) opts.page = page;\n if (perPage !== undefined) opts.perPage = perPage;\n if (provider.listToolsVNext) {\n return await provider.listToolsVNext(Object.keys(opts).length > 0 ? opts : undefined);\n }\n return await provider.listTools(Object.keys(opts).length > 0 ? opts : undefined);\n } catch (error) {\n return handleError(error, 'Error listing tool provider tools');\n }\n },\n});\n\n/**\n * GET /tool-providers/:providerId/tools/:toolSlug/schema — Tool schema.\n */\nexport const GET_TOOL_PROVIDER_TOOL_SCHEMA_ROUTE = createRoute({\n method: 'GET',\n path: '/tool-providers/:providerId/tools/:toolSlug/schema',\n responseType: 'json',\n pathParamSchema: toolSlugPathParams,\n responseSchema: getToolProviderToolSchemaResponseSchema,\n summary: 'Get tool provider tool schema',\n description: 'Returns the schema for a specific tool from a tool provider',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId, toolSlug }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n if (!provider.getToolSchema) {\n throw new HTTPException(404, { message: `Tool provider ${providerId} does not support getToolSchema` });\n }\n const schema = await provider.getToolSchema(toolSlug);\n if (!schema) {\n throw new HTTPException(404, { message: `Schema for tool ${toolSlug} not found in provider ${providerId}` });\n }\n return schema;\n } catch (error) {\n return handleError(error, 'Error getting tool provider tool schema');\n }\n },\n});\n\n/**\n * POST /tool-providers/:providerId/authorize — Start an OAuth flow and persist\n * a `tool_provider_connections` row for label / scope joins.\n */\nexport const AUTHORIZE_TOOL_PROVIDER_ROUTE = createRoute({\n method: 'POST',\n path: '/tool-providers/:providerId/authorize',\n responseType: 'json',\n pathParamSchema: toolProviderIdPathParams,\n bodySchema: authorizeToolProviderBodySchema,\n responseSchema: authorizeToolProviderResponseSchema,\n summary: 'Authorize tool provider connection',\n description: 'Starts an OAuth flow and returns a redirect URL + opaque auth handle',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId, toolkit, connectionId, toolName, config, label, scope, requestContext }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n if (!provider.authorize) {\n throw new HTTPException(400, { message: `Tool provider ${providerId} does not support authorize` });\n }\n // Per-pin scope:\n // - 'shared' buckets under SHARED_BUCKET_ID.\n // - 'caller-supplied' buckets under request-context resourceId (400 if missing).\n // - 'per-author' (default) buckets under the caller's resolved authorId.\n const effectiveScope: 'shared' | 'per-author' | 'caller-supplied' =\n scope === 'shared' || scope === 'caller-supplied' ? scope : 'per-author';\n const callerResourceId = requestContext?.get(MASTRA_RESOURCE_ID_KEY);\n if (effectiveScope === 'caller-supplied') {\n if (typeof callerResourceId !== 'string' || callerResourceId.length === 0) {\n throw new HTTPException(400, {\n message: `Cannot authorize caller-supplied connection: request context has no '${MASTRA_RESOURCE_ID_KEY}'. Set requestContext.set('${MASTRA_RESOURCE_ID_KEY}', <userId>) before calling /authorize.`,\n });\n }\n }\n const callerAuthorId = resolveOwnerId(requestContext, mastra.getLogger());\n const ownerAuthorId =\n effectiveScope === 'shared'\n ? SHARED_BUCKET_ID\n : effectiveScope === 'caller-supplied'\n ? (callerResourceId as string)\n : callerAuthorId;\n\n // Fresh connect (no connectionId) uses the resolved owner id as the\n // provider bucket so the adapter creates the connection under the same\n // userId the runtime will resolve to at execution time. Re-auth (caller\n // passed an existing connectionId) is left untouched.\n const bucket = connectionId && connectionId.length > 0 ? connectionId : ownerAuthorId;\n const result = await provider.authorize({ toolkit, connectionId: bucket, toolName, config });\n\n // Persist label + scope. Upsert even when label is null/undefined so the\n // row exists for later list-join in the picker.\n const persistedConnectionId = connectionId && connectionId.length > 0 ? connectionId : result.authId;\n try {\n const storage = mastra.getStorage();\n const store = await storage?.getStore('toolProviderConnections');\n if (store && persistedConnectionId) {\n await store.upsertConnection({\n authorId: ownerAuthorId,\n providerId: provider.info.id,\n toolkit,\n connectionId: persistedConnectionId,\n label: typeof label === 'string' && label.length > 0 ? label : null,\n scope: effectiveScope,\n });\n }\n } catch (upsertError) {\n mastra.getLogger?.()?.warn?.('[tool-providers] failed to upsert tool_provider_connections label', {\n error: upsertError instanceof Error ? upsertError.message : String(upsertError),\n providerId,\n toolkit,\n connectionId: persistedConnectionId,\n });\n }\n\n return result;\n } catch (error) {\n return handleError(error, 'Error authorizing tool provider');\n }\n },\n});\n\n/**\n * GET /tool-providers/:providerId/auth-status/:authId — Poll OAuth flow status.\n */\nexport const GET_TOOL_PROVIDER_AUTH_STATUS_ROUTE = createRoute({\n method: 'GET',\n path: '/tool-providers/:providerId/auth-status/:authId',\n responseType: 'json',\n pathParamSchema: toolProviderAuthStatusPathParams,\n responseSchema: authStatusToolProviderResponseSchema,\n summary: 'Get tool provider auth status',\n description: 'Polls the OAuth flow status for an outstanding authorize call',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId, authId }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n if (!provider.getAuthStatus) {\n throw new HTTPException(400, { message: `Tool provider ${providerId} does not support getAuthStatus` });\n }\n const status = await provider.getAuthStatus(authId);\n return { status };\n } catch (error) {\n return handleError(error, 'Error getting tool provider auth status');\n }\n },\n});\n\n/**\n * POST /tool-providers/:providerId/connection-status — Batch-check connection liveness.\n */\nexport const TOOL_PROVIDER_CONNECTION_STATUS_ROUTE = createRoute({\n method: 'POST',\n path: '/tool-providers/:providerId/connection-status',\n responseType: 'json',\n pathParamSchema: toolProviderIdPathParams,\n bodySchema: connectionStatusToolProviderBodySchema,\n responseSchema: connectionStatusToolProviderResponseSchema,\n summary: 'Get connection status for a provider',\n description: 'Batch-checks whether a set of (connectionId, toolkit) tuples are still connected',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId, items }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n if (!provider.getConnectionStatus) {\n throw new HTTPException(400, { message: `Tool provider ${providerId} does not support getConnectionStatus` });\n }\n const result = await provider.getConnectionStatus({ items });\n return { items: result };\n } catch (error) {\n return handleError(error, 'Error getting connection status');\n }\n },\n});\n\n/**\n * GET /tool-providers/:providerId/connections — Existing provider connections\n * scoped to a toolkit. Admin callers can pass `authorId` and `scope` filters;\n * non-admins always see only their own + shared rows.\n */\nexport const LIST_TOOL_PROVIDER_CONNECTIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/tool-providers/:providerId/connections',\n responseType: 'json',\n pathParamSchema: toolProviderIdPathParams,\n queryParamSchema: listConnectionsQuerySchema,\n responseSchema: listConnectionsResponseSchema,\n summary: 'List existing connections',\n description:\n 'Returns existing provider connections on a toolkit, so the picker can offer them for pinning without re-running OAuth',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({\n mastra,\n providerId,\n toolkit,\n authorId: queryAuthorId,\n scope: queryScope,\n page,\n perPage,\n requestContext,\n }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n if (!provider.listConnections) {\n throw new HTTPException(400, { message: `Tool provider ${providerId} does not support listConnections` });\n }\n const callerAuthorId = resolveOwnerId(requestContext, mastra.getLogger());\n const isAdmin = requestContext ? hasAdminBypass(requestContext, TOOL_PROVIDERS_RESOURCE) : false;\n\n const requestedAuthorId =\n isAdmin && typeof queryAuthorId === 'string' && queryAuthorId.length > 0 ? queryAuthorId : undefined;\n const effectiveAuthorId = isAdmin ? requestedAuthorId : callerAuthorId;\n\n const storage = mastra.getStorage();\n const store = await storage?.getStore('toolProviderConnections');\n\n // Strategy B: seed userIds[] from persisted rows so admins can enumerate\n // connections owned by other authors.\n let labelRows: Array<{\n authorId: string;\n connectionId: string;\n label: string | null;\n scope: 'shared' | 'per-author' | 'caller-supplied';\n }> = [];\n if (store) {\n try {\n const rows = await store.listConnectionsByAuthor({\n providerId: provider.info.id,\n toolkit,\n });\n labelRows = rows.map(r => ({\n authorId: r.authorId,\n connectionId: r.connectionId,\n label: r.label,\n scope: r.scope ?? 'per-author',\n }));\n } catch (joinError) {\n mastra.getLogger?.()?.warn?.('[tool-providers] failed to join tool_provider_connections labels', {\n error: joinError instanceof Error ? joinError.message : String(joinError),\n providerId,\n toolkit,\n });\n }\n }\n\n const userIdSet = new Set<string>();\n const wantShared = !queryScope || queryScope === 'shared';\n const wantPerAuthor = !queryScope || queryScope === 'per-author';\n const wantCallerSupplied = !queryScope || queryScope === 'caller-supplied';\n const hasSharedRow = labelRows.some(r => r.scope === 'shared');\n if (isAdmin && effectiveAuthorId === undefined) {\n for (const r of labelRows) {\n if (r.scope === 'shared' && wantShared) userIdSet.add(r.authorId);\n if (r.scope === 'per-author' && wantPerAuthor) userIdSet.add(r.authorId);\n if (r.scope === 'caller-supplied' && wantCallerSupplied) userIdSet.add(r.authorId);\n }\n } else if (isAdmin && effectiveAuthorId) {\n if (wantPerAuthor || wantCallerSupplied) userIdSet.add(effectiveAuthorId);\n if (wantShared && hasSharedRow) userIdSet.add(SHARED_BUCKET_ID);\n } else {\n if (wantPerAuthor) userIdSet.add(callerAuthorId);\n if (wantShared && hasSharedRow) userIdSet.add(SHARED_BUCKET_ID);\n // Non-admins never enumerate caller-supplied connections.\n }\n\n const userIds = Array.from(userIdSet);\n if (userIds.length === 0) {\n return {\n items: [],\n pagination: { page: page ?? 1, perPage, hasMore: false },\n };\n }\n\n const adapterResult = await provider.listConnections({\n toolkit,\n userIds,\n ...(typeof page === 'number' ? { page } : {}),\n ...(typeof perPage === 'number' ? { perPage } : {}),\n });\n\n const rowByConnId = new Map(labelRows.map(r => [r.connectionId, r]));\n\n const visibleItems = adapterResult.items.filter(item => {\n if (!queryScope) return true;\n const scope = rowByConnId.get(item.connectionId)?.scope ?? 'per-author';\n return scope === queryScope;\n });\n\n return {\n items: visibleItems.map(item => {\n const row = rowByConnId.get(item.connectionId);\n return {\n ...item,\n label: row?.label ?? null,\n ...(row?.scope ? { scope: row.scope } : {}),\n };\n }),\n pagination: adapterResult.pagination,\n };\n } catch (error) {\n return handleError(error, 'Error listing tool provider connections');\n }\n },\n});\n\n/**\n * GET /tool-providers/:providerId/connection-fields — Dynamic auth fields\n * the picker should collect before authorize (e.g. Confluence subdomain).\n */\nexport const LIST_TOOL_PROVIDER_CONNECTION_FIELDS_ROUTE = createRoute({\n method: 'GET',\n path: '/tool-providers/:providerId/connection-fields',\n responseType: 'json',\n pathParamSchema: toolProviderIdPathParams,\n queryParamSchema: listConnectionFieldsQuerySchema,\n responseSchema: listConnectionFieldsResponseSchema,\n summary: 'List connection field schema',\n description: 'Returns a list of provider-specific fields the UI should collect before initiating an authorize call',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId, toolkit }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n if (!provider.listConnectionFields) {\n return { fields: [] };\n }\n const fields = await provider.listConnectionFields({ toolkit });\n return { fields };\n } catch (error) {\n return handleError(error, 'Error listing tool provider connection fields');\n }\n },\n});\n\n/**\n * DELETE /tool-providers/:providerId/connections/:connectionId — Disconnect.\n * Without `?force=true` rejects when the connection is still pinned by any\n * agent. With `?force=true` revokes at the provider (best-effort) and drops\n * the persisted row.\n */\nexport const DISCONNECT_TOOL_PROVIDER_CONNECTION_ROUTE = createRoute({\n method: 'DELETE',\n path: '/tool-providers/:providerId/connections/:connectionId',\n responseType: 'json',\n pathParamSchema: toolProviderConnectionPathParams,\n queryParamSchema: disconnectConnectionQuerySchema,\n responseSchema: disconnectConnectionResponseSchema,\n summary: 'Disconnect a connection',\n description:\n 'Revokes the provider-side connection (if supported) and removes the persisted tool_provider_connections row. Use `?force=true` to bypass usage checks.',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId, connectionId, force, requestContext }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n const callerAuthorId = resolveOwnerId(requestContext, mastra.getLogger());\n const isAdmin = requestContext ? hasAdminBypass(requestContext, TOOL_PROVIDERS_RESOURCE) : false;\n const isForce = force === true || force === 'true';\n\n const storage = mastra.getStorage();\n const store = await storage?.getStore('toolProviderConnections');\n\n let ownerAuthorId: string | undefined;\n let ownerScope: 'shared' | 'per-author' | 'caller-supplied' | undefined;\n let matched = false;\n if (store) {\n const rows = await store.listConnectionsByAuthor({ providerId: provider.info.id });\n const match = rows.find(r => r.connectionId === connectionId);\n if (match) {\n matched = true;\n ownerAuthorId = match.authorId;\n ownerScope = match.scope;\n }\n }\n\n // Fail closed: if storage is configured and no row matches the\n // requested connectionId, refuse the call for non-admins. Without\n // this guard, a caller could trigger provider-side `revokeConnection`\n // against another tenant's connectionId by guessing it.\n if (store && !matched && !isAdmin) {\n throw new HTTPException(403, {\n message: 'You do not have permission to disconnect this connection',\n });\n }\n\n const effectiveOwner = ownerAuthorId ?? callerAuthorId;\n const isShared = ownerScope === 'shared';\n if (!isShared && effectiveOwner !== callerAuthorId && !isAdmin) {\n throw new HTTPException(403, {\n message: 'You do not have permission to disconnect this connection',\n });\n }\n\n if (!isForce) {\n const usage = await countConnectionUsage(mastra, connectionId);\n if (usage > 0) {\n throw new HTTPException(409, {\n message: `Connection ${connectionId} is still pinned by ${usage} agent(s). Pass ?force=true to disconnect anyway.`,\n });\n }\n }\n\n let revoked = false;\n if (provider.capabilities?.supportsRevoke && typeof provider.revokeConnection === 'function') {\n await provider.revokeConnection(connectionId);\n revoked = true;\n }\n\n if (store) {\n await store.deleteConnection({\n authorId: effectiveOwner,\n providerId: provider.info.id,\n connectionId,\n });\n }\n\n return { ok: true as const, revoked };\n } catch (error) {\n return handleError(error, 'Error disconnecting tool provider connection');\n }\n },\n});\n\n/**\n * PATCH /tool-providers/:providerId/connections/:connectionId — Update a\n * connection's persisted display label. Idempotent. Ownership-gated the same\n * way as DISCONNECT: only the connection owner (or an admin) may rename,\n * unless the row is `scope: 'shared'`.\n *\n * Pass `label: null` (or an empty string) to clear the existing label.\n */\nexport const UPDATE_TOOL_PROVIDER_CONNECTION_ROUTE = createRoute({\n method: 'PATCH',\n path: '/tool-providers/:providerId/connections/:connectionId',\n responseType: 'json',\n pathParamSchema: toolProviderConnectionPathParams,\n bodySchema: updateConnectionBodySchema,\n responseSchema: updateConnectionResponseSchema,\n summary: 'Update a connection label',\n description:\n 'Updates the persisted display label on tool_provider_connections. Returns 403 when caller is neither the owner nor admin (and the row is not shared), 404 when the row does not exist.',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId, connectionId, label, requestContext }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n const callerAuthorId = resolveOwnerId(requestContext, mastra.getLogger());\n const isAdmin = requestContext ? hasAdminBypass(requestContext, TOOL_PROVIDERS_RESOURCE) : false;\n\n const storage = mastra.getStorage();\n const store = await storage?.getStore('toolProviderConnections');\n if (!store) {\n throw new HTTPException(500, {\n message: 'Tool provider connections storage is not configured',\n });\n }\n\n const rows = await store.listConnectionsByAuthor({ providerId: provider.info.id });\n const match = rows.find(r => r.connectionId === connectionId);\n if (!match) {\n throw new HTTPException(404, {\n message: `Connection ${connectionId} not found for provider ${providerId}`,\n });\n }\n\n const isShared = match.scope === 'shared';\n if (!isShared && match.authorId !== callerAuthorId && !isAdmin) {\n throw new HTTPException(403, {\n message: 'You do not have permission to update this connection',\n });\n }\n\n // Normalize: empty string and explicit null both clear the label.\n const nextLabel: string | null = typeof label === 'string' && label.trim().length > 0 ? label.trim() : null;\n\n await store.upsertConnection({\n authorId: match.authorId,\n providerId: provider.info.id,\n toolkit: match.toolkit,\n connectionId,\n label: nextLabel,\n scope: match.scope,\n });\n\n return { ok: true as const, label: nextLabel };\n } catch (error) {\n return handleError(error, 'Error updating tool provider connection');\n }\n },\n});\n\n/**\n * GET /tool-providers/:providerId/connections/:connectionId/usage — Lists agents\n * that currently pin the given connection in their `toolProviders` config.\n */\nexport const GET_TOOL_PROVIDER_CONNECTION_USAGE_ROUTE = createRoute({\n method: 'GET',\n path: '/tool-providers/:providerId/connections/:connectionId/usage',\n responseType: 'json',\n pathParamSchema: toolProviderConnectionPathParams,\n queryParamSchema: connectionUsageQuerySchema,\n responseSchema: connectionUsageResponseSchema,\n summary: 'List agents using a connection',\n description: 'Returns the agents that pin this connection in their toolProviders config',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId, connectionId, toolkit, requestContext }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n const callerAuthorId = resolveOwnerId(requestContext, mastra.getLogger());\n const isAdmin = requestContext ? hasAdminBypass(requestContext, TOOL_PROVIDERS_RESOURCE) : false;\n\n const storage = mastra.getStorage();\n const store = await storage?.getStore('toolProviderConnections');\n let ownerAuthorId: string | undefined;\n let ownerScope: 'shared' | 'per-author' | 'caller-supplied' | undefined;\n let matched = false;\n if (store) {\n const rows = await store.listConnectionsByAuthor({ providerId: provider.info.id });\n const match = rows.find(r => r.connectionId === connectionId);\n if (match) {\n matched = true;\n ownerAuthorId = match.authorId;\n ownerScope = match.scope;\n }\n }\n\n // Fail closed: if storage is configured and no row matches the\n // requested connectionId, refuse the call for non-admins so callers\n // cannot probe for other tenants' connections.\n if (store && !matched && !isAdmin) {\n throw new HTTPException(403, {\n message: 'You do not have permission to view usage for this connection',\n });\n }\n\n const effectiveOwner = ownerAuthorId ?? callerAuthorId;\n const isShared = ownerScope === 'shared';\n if (!isShared && effectiveOwner !== callerAuthorId && !isAdmin) {\n throw new HTTPException(403, {\n message: 'You do not have permission to view usage for this connection',\n });\n }\n\n const agents = await scanConnectionUsage(mastra, { providerId: provider.info.id, connectionId, toolkit });\n return { agents };\n } catch (error) {\n return handleError(error, 'Error listing tool provider connection usage');\n }\n },\n});\n\n/**\n * GET /tool-providers/:providerId/health — Provider-level health check.\n */\nexport const GET_TOOL_PROVIDER_HEALTH_ROUTE = createRoute({\n method: 'GET',\n path: '/tool-providers/:providerId/health',\n responseType: 'json',\n pathParamSchema: toolProviderIdPathParams,\n responseSchema: toolProviderHealthResponseSchema,\n summary: 'Get tool provider health',\n description: 'Returns provider-level health (config, reachability, etc.)',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n if (!provider.getHealth) {\n return { ok: true };\n }\n return await provider.getHealth();\n } catch (error) {\n return handleError(error, 'Error getting tool provider health');\n }\n },\n});\n\n// ============================================================================\n// Usage scan helpers\n// ============================================================================\n\nasync function scanConnectionUsage(\n mastra: any,\n args: { providerId: string; connectionId: string; toolkit?: string },\n): Promise<Array<{ id: string; name: string }>> {\n const storage = mastra.getStorage();\n const agentsStore = await storage?.getStore('agents');\n if (!agentsStore) return [];\n\n const { agents } = await agentsStore.listResolved({ perPage: false });\n const out: Array<{ id: string; name: string }> = [];\n for (const agent of agents) {\n const config = agent?.toolProviders?.[args.providerId];\n if (!config?.connections) continue;\n for (const [toolkit, connections] of Object.entries(config.connections)) {\n if (args.toolkit && toolkit !== args.toolkit) continue;\n const match = (connections as Array<{ connectionId: string }>).some(c => c.connectionId === args.connectionId);\n if (match) {\n out.push({ id: agent.id, name: agent.name ?? agent.id });\n break;\n }\n }\n }\n return out;\n}\n\nasync function countConnectionUsage(mastra: any, connectionId: string): Promise<number> {\n const storage = mastra.getStorage();\n const agentsStore = await storage?.getStore('agents');\n if (!agentsStore) return 0;\n const { agents } = await agentsStore.listResolved({ perPage: false });\n let count = 0;\n for (const agent of agents) {\n const tp = agent?.toolProviders;\n if (!tp) continue;\n for (const config of Object.values(tp) as Array<{\n connections?: Record<string, Array<{ connectionId: string }>>;\n }>) {\n const pinned = Object.values(config?.connections ?? {}).some(arr =>\n arr.some(c => c.connectionId === connectionId),\n );\n if (pinned) {\n count += 1;\n break;\n }\n }\n }\n return count;\n}\n"]}
1
+ {"version":3,"sources":["../src/server/handlers/tool-providers.ts"],"names":["HTTPException","requestContext","MASTRA_RESOURCE_ID_KEY","MASTRA_USER_KEY","createRoute","listToolProvidersResponseSchema","handleError","toolProviderIdPathParams","listToolProviderToolkitsResponseSchema","listToolProviderToolsQuerySchema","listToolProviderToolsResponseSchema","toolSlugPathParams","getToolProviderToolSchemaResponseSchema","authorizeToolProviderBodySchema","authorizeToolProviderResponseSchema","toolProviderAuthStatusPathParams","authStatusToolProviderResponseSchema","connectionStatusToolProviderBodySchema","connectionStatusToolProviderResponseSchema","listConnectionsQuerySchema","listConnectionsResponseSchema","hasAdminBypass","listConnectionFieldsQuerySchema","listConnectionFieldsResponseSchema","toolProviderConnectionPathParams","disconnectConnectionQuerySchema","disconnectConnectionResponseSchema","updateConnectionBodySchema","updateConnectionResponseSchema","connectionUsageQuerySchema","connectionUsageResponseSchema","toolProviderHealthResponseSchema"],"mappings":"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","file":"chunk-ODUTR3YG.cjs","sourcesContent":["import type { IMastraEditor } from '@mastra/core/editor';\nimport type { IMastraLogger } from '@mastra/core/logger';\nimport { MASTRA_RESOURCE_ID_KEY } from '@mastra/core/request-context';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type * as ToolProviderModule from '@mastra/core/tool-provider';\nimport type { ToolProvider } from '@mastra/core/tool-provider';\n\nimport { MASTRA_USER_KEY } from '../constants';\nimport { HTTPException } from '../http-exception';\nimport {\n authorizeToolProviderBodySchema,\n authorizeToolProviderResponseSchema,\n authStatusToolProviderResponseSchema,\n connectionStatusToolProviderBodySchema,\n connectionStatusToolProviderResponseSchema,\n connectionUsageQuerySchema,\n connectionUsageResponseSchema,\n disconnectConnectionQuerySchema,\n disconnectConnectionResponseSchema,\n getToolProviderToolSchemaResponseSchema,\n listConnectionFieldsQuerySchema,\n listConnectionFieldsResponseSchema,\n listConnectionsQuerySchema,\n listConnectionsResponseSchema,\n listToolProviderToolkitsResponseSchema,\n listToolProviderToolsQuerySchema,\n listToolProviderToolsResponseSchema,\n listToolProvidersResponseSchema,\n toolProviderAuthStatusPathParams,\n toolProviderConnectionPathParams,\n toolProviderHealthResponseSchema,\n toolProviderIdPathParams,\n toolSlugPathParams,\n updateConnectionBodySchema,\n updateConnectionResponseSchema,\n} from '../schemas/tool-providers';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { hasAdminBypass } from './authorship';\nimport { handleError } from './error';\n\nconst TOOL_PROVIDERS_RESOURCE = 'tool-providers' as const;\n\n/**\n * Mirrors `@mastra/core/tool-provider#SHARED_BUCKET_ID`. Inlined locally so this\n * module evaluates under any peer-compatible core; a regression test in\n * `tool-providers.test.ts` verifies the literal stays in lockstep with core.\n */\nconst SHARED_BUCKET_ID = 'shared' as const;\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\n/**\n * Lazily import `@mastra/core/tool-provider` so this server module can evaluate\n * under any peer-compatible core. The new value exports (`UnknownToolProviderError`,\n * `SHARED_BUCKET_ID`) ship in core `>=1.39.0-0`; users on older cores who never\n * configure a `MastraEditor` short-circuit via `requireEditor` long before this\n * runs. ESM caches one module instance per resolved specifier so the\n * `instanceof` check below sees the same class identity that `@mastra/editor`\n * throws.\n */\nlet _toolProviderModule: typeof ToolProviderModule | undefined;\nasync function loadToolProviderModule() {\n if (!_toolProviderModule) {\n _toolProviderModule = await import('@mastra/core/tool-provider');\n }\n return _toolProviderModule;\n}\n\nfunction requireEditor(editor: IMastraEditor | undefined): IMastraEditor {\n if (!editor) {\n throw new HTTPException(500, { message: 'Editor is not configured' });\n }\n return editor;\n}\n\nasync function resolveProvider(editor: IMastraEditor, providerId: string): Promise<ToolProvider> {\n try {\n return editor.getToolProviderOrThrow(providerId);\n } catch (error) {\n const { UnknownToolProviderError } = await loadToolProviderModule();\n if (error instanceof UnknownToolProviderError) {\n throw new HTTPException(404, { message: error.message });\n }\n throw error;\n }\n}\n\n// Emit a single warn per process when the connection-owner fallback fires.\n// Multi-tenant deployments that forget to wire `mapUserToResourceId` (or\n// `MASTRA_USER_KEY`) silently funnel every `caller-supplied` pin into one\n// shared OAuth account — surface that misconfiguration once.\nlet defaultBucketWarned = false;\nfunction warnDefaultBucketFallback(logger: IMastraLogger | undefined): void {\n if (defaultBucketWarned) return;\n defaultBucketWarned = true;\n logger?.warn(\n '[tool-providers] caller-supplied scope falling back to shared \"default\" bucket — ' +\n 'wire mapUserToResourceId or set MASTRA_USER_KEY to avoid cross-tenant OAuth sharing',\n );\n}\n\n/**\n * Resolve the connection owner (provider `userId` bucket) from the caller's\n * `RequestContext`. Mirrors the runtime fan-out fallback to `'default'` when\n * no auth context is present so OSS deployments still work.\n */\nfunction resolveOwnerId(requestContext: RequestContext | undefined, logger: IMastraLogger | undefined): string {\n const resourceId = requestContext?.get(MASTRA_RESOURCE_ID_KEY);\n if (typeof resourceId === 'string' && resourceId.length > 0) {\n return resourceId;\n }\n\n const user = requestContext?.get(MASTRA_USER_KEY);\n if (user && typeof user === 'object' && 'id' in user) {\n const id = (user as { id: unknown }).id;\n if (typeof id === 'string' && id.length > 0) {\n return id;\n }\n }\n\n warnDefaultBucketFallback(logger);\n return 'default';\n}\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /tool-providers — List all registered tool providers with their\n * capabilities (when the provider exposes them).\n */\nexport const LIST_TOOL_PROVIDERS_ROUTE = createRoute({\n method: 'GET',\n path: '/tool-providers',\n responseType: 'json',\n responseSchema: listToolProvidersResponseSchema,\n summary: 'List tool providers',\n description: 'Returns a list of all registered tool providers with their info and capabilities',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const providers = editor.getToolProviders();\n return {\n providers: Object.values(providers).map(provider => ({\n ...provider.info,\n ...(provider.displayName ? { displayName: provider.displayName } : {}),\n ...(provider.capabilities ? { capabilities: provider.capabilities } : {}),\n })),\n };\n } catch (error) {\n return handleError(error, 'Error listing tool providers');\n }\n },\n});\n\n/**\n * GET /tool-providers/:providerId/toolkits — Toolkits exposed by a provider.\n */\nexport const LIST_TOOL_PROVIDER_TOOLKITS_ROUTE = createRoute({\n method: 'GET',\n path: '/tool-providers/:providerId/toolkits',\n responseType: 'json',\n pathParamSchema: toolProviderIdPathParams,\n responseSchema: listToolProviderToolkitsResponseSchema,\n summary: 'List tool provider toolkits',\n description: 'Returns the toolkits available from a specific tool provider',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n if (provider.listToolkitsVNext) {\n return await provider.listToolkitsVNext();\n }\n if (provider.listToolkits) {\n return await provider.listToolkits();\n }\n return { data: [] };\n } catch (error) {\n return handleError(error, 'Error listing tool provider toolkits');\n }\n },\n});\n\n/**\n * GET /tool-providers/:providerId/tools — List tools, optionally filtered.\n */\nexport const LIST_TOOL_PROVIDER_TOOLS_ROUTE = createRoute({\n method: 'GET',\n path: '/tool-providers/:providerId/tools',\n responseType: 'json',\n pathParamSchema: toolProviderIdPathParams,\n queryParamSchema: listToolProviderToolsQuerySchema,\n responseSchema: listToolProviderToolsResponseSchema,\n summary: 'List tool provider tools',\n description: 'Returns the tools available from a specific tool provider, with optional filtering',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId, toolkit, search, page, perPage }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n const opts: { toolkit?: string; search?: string; page?: number; perPage?: number } = {};\n if (toolkit !== undefined) opts.toolkit = toolkit;\n if (search !== undefined) opts.search = search;\n if (page !== undefined) opts.page = page;\n if (perPage !== undefined) opts.perPage = perPage;\n if (provider.listToolsVNext) {\n return await provider.listToolsVNext(Object.keys(opts).length > 0 ? opts : undefined);\n }\n return await provider.listTools(Object.keys(opts).length > 0 ? opts : undefined);\n } catch (error) {\n return handleError(error, 'Error listing tool provider tools');\n }\n },\n});\n\n/**\n * GET /tool-providers/:providerId/tools/:toolSlug/schema — Tool schema.\n */\nexport const GET_TOOL_PROVIDER_TOOL_SCHEMA_ROUTE = createRoute({\n method: 'GET',\n path: '/tool-providers/:providerId/tools/:toolSlug/schema',\n responseType: 'json',\n pathParamSchema: toolSlugPathParams,\n responseSchema: getToolProviderToolSchemaResponseSchema,\n summary: 'Get tool provider tool schema',\n description: 'Returns the schema for a specific tool from a tool provider',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId, toolSlug }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n if (!provider.getToolSchema) {\n throw new HTTPException(404, { message: `Tool provider ${providerId} does not support getToolSchema` });\n }\n const schema = await provider.getToolSchema(toolSlug);\n if (!schema) {\n throw new HTTPException(404, { message: `Schema for tool ${toolSlug} not found in provider ${providerId}` });\n }\n return schema;\n } catch (error) {\n return handleError(error, 'Error getting tool provider tool schema');\n }\n },\n});\n\n/**\n * POST /tool-providers/:providerId/authorize — Start an OAuth flow and persist\n * a `tool_provider_connections` row for label / scope joins.\n */\nexport const AUTHORIZE_TOOL_PROVIDER_ROUTE = createRoute({\n method: 'POST',\n path: '/tool-providers/:providerId/authorize',\n responseType: 'json',\n pathParamSchema: toolProviderIdPathParams,\n bodySchema: authorizeToolProviderBodySchema,\n responseSchema: authorizeToolProviderResponseSchema,\n summary: 'Authorize tool provider connection',\n description: 'Starts an OAuth flow and returns a redirect URL + opaque auth handle',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId, toolkit, connectionId, toolName, config, label, scope, requestContext }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n if (!provider.authorize) {\n throw new HTTPException(400, { message: `Tool provider ${providerId} does not support authorize` });\n }\n // Per-pin scope:\n // - 'shared' buckets under SHARED_BUCKET_ID.\n // - 'caller-supplied' buckets under request-context resourceId (400 if missing).\n // - 'per-author' (default) buckets under the caller's resolved authorId.\n const effectiveScope: 'shared' | 'per-author' | 'caller-supplied' =\n scope === 'shared' || scope === 'caller-supplied' ? scope : 'per-author';\n const callerResourceId = requestContext?.get(MASTRA_RESOURCE_ID_KEY);\n if (effectiveScope === 'caller-supplied') {\n if (typeof callerResourceId !== 'string' || callerResourceId.length === 0) {\n throw new HTTPException(400, {\n message: `Cannot authorize caller-supplied connection: request context has no '${MASTRA_RESOURCE_ID_KEY}'. Set requestContext.set('${MASTRA_RESOURCE_ID_KEY}', <userId>) before calling /authorize.`,\n });\n }\n }\n const callerAuthorId = resolveOwnerId(requestContext, mastra.getLogger());\n const ownerAuthorId =\n effectiveScope === 'shared'\n ? SHARED_BUCKET_ID\n : effectiveScope === 'caller-supplied'\n ? (callerResourceId as string)\n : callerAuthorId;\n\n // Fresh connect (no connectionId) uses the resolved owner id as the\n // provider bucket so the adapter creates the connection under the same\n // userId the runtime will resolve to at execution time. Re-auth (caller\n // passed an existing connectionId) is left untouched.\n const bucket = connectionId && connectionId.length > 0 ? connectionId : ownerAuthorId;\n const result = await provider.authorize({ toolkit, connectionId: bucket, toolName, config });\n\n // Persist label + scope. Upsert even when label is null/undefined so the\n // row exists for later list-join in the picker.\n const persistedConnectionId = connectionId && connectionId.length > 0 ? connectionId : result.authId;\n try {\n const storage = mastra.getStorage();\n const store = await storage?.getStore('toolProviderConnections');\n if (store && persistedConnectionId) {\n await store.upsertConnection({\n authorId: ownerAuthorId,\n providerId: provider.info.id,\n toolkit,\n connectionId: persistedConnectionId,\n label: typeof label === 'string' && label.length > 0 ? label : null,\n scope: effectiveScope,\n });\n }\n } catch (upsertError) {\n mastra.getLogger?.()?.warn?.('[tool-providers] failed to upsert tool_provider_connections label', {\n error: upsertError instanceof Error ? upsertError.message : String(upsertError),\n providerId,\n toolkit,\n connectionId: persistedConnectionId,\n });\n }\n\n return result;\n } catch (error) {\n return handleError(error, 'Error authorizing tool provider');\n }\n },\n});\n\n/**\n * GET /tool-providers/:providerId/auth-status/:authId — Poll OAuth flow status.\n */\nexport const GET_TOOL_PROVIDER_AUTH_STATUS_ROUTE = createRoute({\n method: 'GET',\n path: '/tool-providers/:providerId/auth-status/:authId',\n responseType: 'json',\n pathParamSchema: toolProviderAuthStatusPathParams,\n responseSchema: authStatusToolProviderResponseSchema,\n summary: 'Get tool provider auth status',\n description: 'Polls the OAuth flow status for an outstanding authorize call',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId, authId }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n if (!provider.getAuthStatus) {\n throw new HTTPException(400, { message: `Tool provider ${providerId} does not support getAuthStatus` });\n }\n const status = await provider.getAuthStatus(authId);\n return { status };\n } catch (error) {\n return handleError(error, 'Error getting tool provider auth status');\n }\n },\n});\n\n/**\n * POST /tool-providers/:providerId/connection-status — Batch-check connection liveness.\n */\nexport const TOOL_PROVIDER_CONNECTION_STATUS_ROUTE = createRoute({\n method: 'POST',\n path: '/tool-providers/:providerId/connection-status',\n responseType: 'json',\n pathParamSchema: toolProviderIdPathParams,\n bodySchema: connectionStatusToolProviderBodySchema,\n responseSchema: connectionStatusToolProviderResponseSchema,\n summary: 'Get connection status for a provider',\n description: 'Batch-checks whether a set of (connectionId, toolkit) tuples are still connected',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId, items }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n if (!provider.getConnectionStatus) {\n throw new HTTPException(400, { message: `Tool provider ${providerId} does not support getConnectionStatus` });\n }\n const result = await provider.getConnectionStatus({ items });\n return { items: result };\n } catch (error) {\n return handleError(error, 'Error getting connection status');\n }\n },\n});\n\n/**\n * GET /tool-providers/:providerId/connections — Existing provider connections\n * scoped to a toolkit. Admin callers can pass `authorId` and `scope` filters;\n * non-admins always see only their own + shared rows.\n */\nexport const LIST_TOOL_PROVIDER_CONNECTIONS_ROUTE = createRoute({\n method: 'GET',\n path: '/tool-providers/:providerId/connections',\n responseType: 'json',\n pathParamSchema: toolProviderIdPathParams,\n queryParamSchema: listConnectionsQuerySchema,\n responseSchema: listConnectionsResponseSchema,\n summary: 'List existing connections',\n description:\n 'Returns existing provider connections on a toolkit, so the picker can offer them for pinning without re-running OAuth',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({\n mastra,\n providerId,\n toolkit,\n authorId: queryAuthorId,\n scope: queryScope,\n page,\n perPage,\n requestContext,\n }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n if (!provider.listConnections) {\n throw new HTTPException(400, { message: `Tool provider ${providerId} does not support listConnections` });\n }\n const callerAuthorId = resolveOwnerId(requestContext, mastra.getLogger());\n const isAdmin = requestContext ? hasAdminBypass(requestContext, TOOL_PROVIDERS_RESOURCE) : false;\n\n const requestedAuthorId =\n isAdmin && typeof queryAuthorId === 'string' && queryAuthorId.length > 0 ? queryAuthorId : undefined;\n const effectiveAuthorId = isAdmin ? requestedAuthorId : callerAuthorId;\n\n const storage = mastra.getStorage();\n const store = await storage?.getStore('toolProviderConnections');\n\n // Strategy B: seed userIds[] from persisted rows so admins can enumerate\n // connections owned by other authors.\n let labelRows: Array<{\n authorId: string;\n connectionId: string;\n label: string | null;\n scope: 'shared' | 'per-author' | 'caller-supplied';\n }> = [];\n if (store) {\n try {\n const rows = await store.listConnectionsByAuthor({\n providerId: provider.info.id,\n toolkit,\n });\n labelRows = rows.map(r => ({\n authorId: r.authorId,\n connectionId: r.connectionId,\n label: r.label,\n scope: r.scope ?? 'per-author',\n }));\n } catch (joinError) {\n mastra.getLogger?.()?.warn?.('[tool-providers] failed to join tool_provider_connections labels', {\n error: joinError instanceof Error ? joinError.message : String(joinError),\n providerId,\n toolkit,\n });\n }\n }\n\n const userIdSet = new Set<string>();\n const wantShared = !queryScope || queryScope === 'shared';\n const wantPerAuthor = !queryScope || queryScope === 'per-author';\n const wantCallerSupplied = !queryScope || queryScope === 'caller-supplied';\n const hasSharedRow = labelRows.some(r => r.scope === 'shared');\n if (isAdmin && effectiveAuthorId === undefined) {\n for (const r of labelRows) {\n if (r.scope === 'shared' && wantShared) userIdSet.add(r.authorId);\n if (r.scope === 'per-author' && wantPerAuthor) userIdSet.add(r.authorId);\n if (r.scope === 'caller-supplied' && wantCallerSupplied) userIdSet.add(r.authorId);\n }\n } else if (isAdmin && effectiveAuthorId) {\n if (wantPerAuthor || wantCallerSupplied) userIdSet.add(effectiveAuthorId);\n if (wantShared && hasSharedRow) userIdSet.add(SHARED_BUCKET_ID);\n } else {\n if (wantPerAuthor) userIdSet.add(callerAuthorId);\n if (wantShared && hasSharedRow) userIdSet.add(SHARED_BUCKET_ID);\n // Non-admins never enumerate caller-supplied connections.\n }\n\n const userIds = Array.from(userIdSet);\n if (userIds.length === 0) {\n return {\n items: [],\n pagination: { page: page ?? 1, perPage, hasMore: false },\n };\n }\n\n const adapterResult = await provider.listConnections({\n toolkit,\n userIds,\n ...(typeof page === 'number' ? { page } : {}),\n ...(typeof perPage === 'number' ? { perPage } : {}),\n });\n\n const rowByConnId = new Map(labelRows.map(r => [r.connectionId, r]));\n\n const visibleItems = adapterResult.items.filter(item => {\n if (!queryScope) return true;\n const scope = rowByConnId.get(item.connectionId)?.scope ?? 'per-author';\n return scope === queryScope;\n });\n\n return {\n items: visibleItems.map(item => {\n const row = rowByConnId.get(item.connectionId);\n return {\n ...item,\n label: row?.label ?? null,\n ...(row?.scope ? { scope: row.scope } : {}),\n };\n }),\n pagination: adapterResult.pagination,\n };\n } catch (error) {\n return handleError(error, 'Error listing tool provider connections');\n }\n },\n});\n\n/**\n * GET /tool-providers/:providerId/connection-fields — Dynamic auth fields\n * the picker should collect before authorize (e.g. Confluence subdomain).\n */\nexport const LIST_TOOL_PROVIDER_CONNECTION_FIELDS_ROUTE = createRoute({\n method: 'GET',\n path: '/tool-providers/:providerId/connection-fields',\n responseType: 'json',\n pathParamSchema: toolProviderIdPathParams,\n queryParamSchema: listConnectionFieldsQuerySchema,\n responseSchema: listConnectionFieldsResponseSchema,\n summary: 'List connection field schema',\n description: 'Returns a list of provider-specific fields the UI should collect before initiating an authorize call',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId, toolkit }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n if (!provider.listConnectionFields) {\n return { fields: [] };\n }\n const fields = await provider.listConnectionFields({ toolkit });\n return { fields };\n } catch (error) {\n return handleError(error, 'Error listing tool provider connection fields');\n }\n },\n});\n\n/**\n * DELETE /tool-providers/:providerId/connections/:connectionId — Disconnect.\n * Without `?force=true` rejects when the connection is still pinned by any\n * agent. With `?force=true` revokes at the provider (best-effort) and drops\n * the persisted row.\n */\nexport const DISCONNECT_TOOL_PROVIDER_CONNECTION_ROUTE = createRoute({\n method: 'DELETE',\n path: '/tool-providers/:providerId/connections/:connectionId',\n responseType: 'json',\n pathParamSchema: toolProviderConnectionPathParams,\n queryParamSchema: disconnectConnectionQuerySchema,\n responseSchema: disconnectConnectionResponseSchema,\n summary: 'Disconnect a connection',\n description:\n 'Revokes the provider-side connection (if supported) and removes the persisted tool_provider_connections row. Use `?force=true` to bypass usage checks.',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId, connectionId, force, requestContext }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n const callerAuthorId = resolveOwnerId(requestContext, mastra.getLogger());\n const isAdmin = requestContext ? hasAdminBypass(requestContext, TOOL_PROVIDERS_RESOURCE) : false;\n const isForce = force === true || force === 'true';\n\n const storage = mastra.getStorage();\n const store = await storage?.getStore('toolProviderConnections');\n\n let ownerAuthorId: string | undefined;\n let ownerScope: 'shared' | 'per-author' | 'caller-supplied' | undefined;\n let matched = false;\n if (store) {\n const rows = await store.listConnectionsByAuthor({ providerId: provider.info.id });\n const match = rows.find(r => r.connectionId === connectionId);\n if (match) {\n matched = true;\n ownerAuthorId = match.authorId;\n ownerScope = match.scope;\n }\n }\n\n // Fail closed: if storage is configured and no row matches the\n // requested connectionId, refuse the call for non-admins. Without\n // this guard, a caller could trigger provider-side `revokeConnection`\n // against another tenant's connectionId by guessing it.\n if (store && !matched && !isAdmin) {\n throw new HTTPException(403, {\n message: 'You do not have permission to disconnect this connection',\n });\n }\n\n const effectiveOwner = ownerAuthorId ?? callerAuthorId;\n const isShared = ownerScope === 'shared';\n if (!isShared && effectiveOwner !== callerAuthorId && !isAdmin) {\n throw new HTTPException(403, {\n message: 'You do not have permission to disconnect this connection',\n });\n }\n\n if (!isForce) {\n const usage = await countConnectionUsage(mastra, connectionId);\n if (usage > 0) {\n throw new HTTPException(409, {\n message: `Connection ${connectionId} is still pinned by ${usage} agent(s). Pass ?force=true to disconnect anyway.`,\n });\n }\n }\n\n let revoked = false;\n if (provider.capabilities?.supportsRevoke && typeof provider.revokeConnection === 'function') {\n await provider.revokeConnection(connectionId);\n revoked = true;\n }\n\n if (store) {\n await store.deleteConnection({\n authorId: effectiveOwner,\n providerId: provider.info.id,\n connectionId,\n });\n }\n\n return { ok: true as const, revoked };\n } catch (error) {\n return handleError(error, 'Error disconnecting tool provider connection');\n }\n },\n});\n\n/**\n * PATCH /tool-providers/:providerId/connections/:connectionId — Update a\n * connection's persisted display label. Idempotent. Ownership-gated the same\n * way as DISCONNECT: only the connection owner (or an admin) may rename,\n * unless the row is `scope: 'shared'`.\n *\n * Pass `label: null` (or an empty string) to clear the existing label.\n */\nexport const UPDATE_TOOL_PROVIDER_CONNECTION_ROUTE = createRoute({\n method: 'PATCH',\n path: '/tool-providers/:providerId/connections/:connectionId',\n responseType: 'json',\n pathParamSchema: toolProviderConnectionPathParams,\n bodySchema: updateConnectionBodySchema,\n responseSchema: updateConnectionResponseSchema,\n summary: 'Update a connection label',\n description:\n 'Updates the persisted display label on tool_provider_connections. Returns 403 when caller is neither the owner nor admin (and the row is not shared), 404 when the row does not exist.',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId, connectionId, label, requestContext }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n const callerAuthorId = resolveOwnerId(requestContext, mastra.getLogger());\n const isAdmin = requestContext ? hasAdminBypass(requestContext, TOOL_PROVIDERS_RESOURCE) : false;\n\n const storage = mastra.getStorage();\n const store = await storage?.getStore('toolProviderConnections');\n if (!store) {\n throw new HTTPException(500, {\n message: 'Tool provider connections storage is not configured',\n });\n }\n\n const rows = await store.listConnectionsByAuthor({ providerId: provider.info.id });\n const match = rows.find(r => r.connectionId === connectionId);\n if (!match) {\n throw new HTTPException(404, {\n message: `Connection ${connectionId} not found for provider ${providerId}`,\n });\n }\n\n const isShared = match.scope === 'shared';\n if (!isShared && match.authorId !== callerAuthorId && !isAdmin) {\n throw new HTTPException(403, {\n message: 'You do not have permission to update this connection',\n });\n }\n\n // Normalize: empty string and explicit null both clear the label.\n const nextLabel: string | null = typeof label === 'string' && label.trim().length > 0 ? label.trim() : null;\n\n await store.upsertConnection({\n authorId: match.authorId,\n providerId: provider.info.id,\n toolkit: match.toolkit,\n connectionId,\n label: nextLabel,\n scope: match.scope,\n });\n\n return { ok: true as const, label: nextLabel };\n } catch (error) {\n return handleError(error, 'Error updating tool provider connection');\n }\n },\n});\n\n/**\n * GET /tool-providers/:providerId/connections/:connectionId/usage — Lists agents\n * that currently pin the given connection in their `toolProviders` config.\n */\nexport const GET_TOOL_PROVIDER_CONNECTION_USAGE_ROUTE = createRoute({\n method: 'GET',\n path: '/tool-providers/:providerId/connections/:connectionId/usage',\n responseType: 'json',\n pathParamSchema: toolProviderConnectionPathParams,\n queryParamSchema: connectionUsageQuerySchema,\n responseSchema: connectionUsageResponseSchema,\n summary: 'List agents using a connection',\n description: 'Returns the agents that pin this connection in their toolProviders config',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId, connectionId, toolkit, requestContext }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n const callerAuthorId = resolveOwnerId(requestContext, mastra.getLogger());\n const isAdmin = requestContext ? hasAdminBypass(requestContext, TOOL_PROVIDERS_RESOURCE) : false;\n\n const storage = mastra.getStorage();\n const store = await storage?.getStore('toolProviderConnections');\n let ownerAuthorId: string | undefined;\n let ownerScope: 'shared' | 'per-author' | 'caller-supplied' | undefined;\n let matched = false;\n if (store) {\n const rows = await store.listConnectionsByAuthor({ providerId: provider.info.id });\n const match = rows.find(r => r.connectionId === connectionId);\n if (match) {\n matched = true;\n ownerAuthorId = match.authorId;\n ownerScope = match.scope;\n }\n }\n\n // Fail closed: if storage is configured and no row matches the\n // requested connectionId, refuse the call for non-admins so callers\n // cannot probe for other tenants' connections.\n if (store && !matched && !isAdmin) {\n throw new HTTPException(403, {\n message: 'You do not have permission to view usage for this connection',\n });\n }\n\n const effectiveOwner = ownerAuthorId ?? callerAuthorId;\n const isShared = ownerScope === 'shared';\n if (!isShared && effectiveOwner !== callerAuthorId && !isAdmin) {\n throw new HTTPException(403, {\n message: 'You do not have permission to view usage for this connection',\n });\n }\n\n const agents = await scanConnectionUsage(mastra, { providerId: provider.info.id, connectionId, toolkit });\n return { agents };\n } catch (error) {\n return handleError(error, 'Error listing tool provider connection usage');\n }\n },\n});\n\n/**\n * GET /tool-providers/:providerId/health — Provider-level health check.\n */\nexport const GET_TOOL_PROVIDER_HEALTH_ROUTE = createRoute({\n method: 'GET',\n path: '/tool-providers/:providerId/health',\n responseType: 'json',\n pathParamSchema: toolProviderIdPathParams,\n responseSchema: toolProviderHealthResponseSchema,\n summary: 'Get tool provider health',\n description: 'Returns provider-level health (config, reachability, etc.)',\n tags: ['Tool Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId }) => {\n try {\n const editor = requireEditor(mastra.getEditor());\n const provider = await resolveProvider(editor, providerId);\n if (!provider.getHealth) {\n return { ok: true };\n }\n return await provider.getHealth();\n } catch (error) {\n return handleError(error, 'Error getting tool provider health');\n }\n },\n});\n\n// ============================================================================\n// Usage scan helpers\n// ============================================================================\n\nasync function scanConnectionUsage(\n mastra: any,\n args: { providerId: string; connectionId: string; toolkit?: string },\n): Promise<Array<{ id: string; name: string }>> {\n const storage = mastra.getStorage();\n const agentsStore = await storage?.getStore('agents');\n if (!agentsStore) return [];\n\n const { agents } = await agentsStore.listResolved({ perPage: false });\n const out: Array<{ id: string; name: string }> = [];\n for (const agent of agents) {\n const config = agent?.toolProviders?.[args.providerId];\n if (!config?.connections) continue;\n for (const [toolkit, connections] of Object.entries(config.connections)) {\n if (args.toolkit && toolkit !== args.toolkit) continue;\n const match = (connections as Array<{ connectionId: string }>).some(c => c.connectionId === args.connectionId);\n if (match) {\n out.push({ id: agent.id, name: agent.name ?? agent.id });\n break;\n }\n }\n }\n return out;\n}\n\nasync function countConnectionUsage(mastra: any, connectionId: string): Promise<number> {\n const storage = mastra.getStorage();\n const agentsStore = await storage?.getStore('agents');\n if (!agentsStore) return 0;\n const { agents } = await agentsStore.listResolved({ perPage: false });\n let count = 0;\n for (const agent of agents) {\n const tp = agent?.toolProviders;\n if (!tp) continue;\n for (const config of Object.values(tp) as Array<{\n connections?: Record<string, Array<{ connectionId: string }>>;\n }>) {\n const pinned = Object.values(config?.connections ?? {}).some(arr =>\n arr.some(c => c.connectionId === connectionId),\n );\n if (pinned) {\n count += 1;\n break;\n }\n }\n }\n return count;\n}\n"]}
@@ -1,7 +1,7 @@
1
+ import { listTracesLightResponseSchema, listBranchesResponseSchema, branchesFilterSchema, branchesOrderBySchema, getBranchResponseSchema, getBranchArgsSchema } from './chunk-5HICERRG.js';
1
2
  import { NEW_ROUTES, LIST_SCORES, LIST_METRICS, LIST_LOGS, LIST_FEEDBACK, GET_TAGS, GET_SERVICE_NAMES, GET_SCORE_TIME_SERIES, GET_SCORE_PERCENTILES, GET_SCORE_BREAKDOWN, GET_SCORE_AGGREGATE, GET_SCORE, GET_METRIC_TIME_SERIES, GET_METRIC_PERCENTILES, GET_METRIC_NAMES, GET_METRIC_LABEL_VALUES, GET_METRIC_LABEL_KEYS, GET_METRIC_BREAKDOWN, GET_METRIC_AGGREGATE, GET_FEEDBACK_TIME_SERIES, GET_FEEDBACK_PERCENTILES, GET_FEEDBACK_BREAKDOWN, GET_FEEDBACK_AGGREGATE, GET_ENVIRONMENTS, GET_ENTITY_TYPES, GET_ENTITY_NAMES, CREATE_SCORE, CREATE_FEEDBACK } from './chunk-7WVY3KMP.js';
2
3
  import { getObservabilityStore, assertObservabilityDeltaSupported, OBSERVABILITY_LIST_ENDPOINTS, createObservabilityListQuerySchema, getStorage } from './chunk-GNVPX27J.js';
3
4
  import { paginationArgsSchema } from './chunk-YRLCLLKR.js';
4
- import { listTracesLightResponseSchema, listBranchesResponseSchema, branchesFilterSchema, branchesOrderBySchema, getBranchResponseSchema, getBranchArgsSchema } from './chunk-5HICERRG.js';
5
5
  import { handleError } from './chunk-7ZWJX3AN.js';
6
6
  import { wrapSchemaForQueryParams, createRoute, pickParams } from './chunk-Z5MTOVTR.js';
7
7
  import { HTTPException } from './chunk-6QWQZI4Q.js';
@@ -380,5 +380,5 @@ var LIST_SCORES_BY_SPAN_ROUTE = createRoute({
380
380
  });
381
381
 
382
382
  export { GET_BRANCH_ROUTE, GET_SPAN_ROUTE, GET_TRACE_LIGHT_ROUTE, GET_TRACE_ROUTE, GET_TRACE_TRAJECTORY_ROUTE, LIST_BRANCHES_ROUTE, LIST_SCORES_BY_SPAN_ROUTE, LIST_TRACES_LIGHT_ROUTE, LIST_TRACES_ROUTE, SCORE_TRACES_ROUTE, observability_exports };
383
- //# sourceMappingURL=chunk-PRJENCIC.js.map
384
- //# sourceMappingURL=chunk-PRJENCIC.js.map
383
+ //# sourceMappingURL=chunk-OR73MMQ3.js.map
384
+ //# sourceMappingURL=chunk-OR73MMQ3.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/handlers/observability.ts"],"names":[],"mappings":"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","file":"chunk-PRJENCIC.js","sourcesContent":["import type { Mastra } from '@mastra/core';\nimport { extractTrajectoryFromTrace, listScoresResponseSchema } from '@mastra/core/evals';\nimport { scoreTraces } from '@mastra/core/evals/scoreTraces';\nimport type { ScoresStorage } from '@mastra/core/storage';\nimport {\n tracesFilterSchema,\n tracesOrderBySchema,\n spanIdsSchema,\n listTracesResponseSchema,\n scoreTracesRequestSchema,\n scoreTracesResponseSchema,\n getTraceArgsSchema,\n getTraceResponseSchema,\n getTraceLightResponseSchema,\n getSpanArgsSchema,\n getSpanResponseSchema,\n dateRangeSchema,\n} from '@mastra/core/storage';\n// `branches*`, `listBranches*`, and `getBranch*` schemas are new in\n// @mastra/core@1.32.0; route them through a shim that tolerates older cores\n// (see ./observability-storage-schemas.ts for full rationale).\nimport { z } from 'zod/v4';\nimport { HTTPException } from '../http-exception';\nimport type { ServerRoute } from '../server-adapter/routes';\nimport { createRoute, pickParams, wrapSchemaForQueryParams } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\nimport { paginationArgsSchema } from './observability-list-query-schemas';\nimport {\n assertObservabilityDeltaSupported,\n createObservabilityListQuerySchema,\n getObservabilityStore,\n getStorage,\n OBSERVABILITY_LIST_ENDPOINTS,\n} from './observability-shared';\nimport {\n branchesFilterSchema,\n branchesOrderBySchema,\n listBranchesResponseSchema,\n getBranchArgsSchema,\n getBranchResponseSchema,\n listTracesLightResponseSchema,\n} from './observability-storage-schemas';\n\nexport * from './observability-new-endpoints';\n\n// ============================================================================\n// Legacy Parameter Support (backward compatibility with main branch API)\n// ============================================================================\n\n/**\n * Legacy query parameters from the old API (main branch).\n * These are accepted for backward compatibility and transformed to new format.\n */\nconst legacyQueryParamsSchema = z.object({\n // Old: dateRange was in pagination, now it's startedAt in filters\n dateRange: dateRangeSchema.optional(),\n // Old: name matched span names like \"agent run: 'myAgent'\"\n name: z.string().optional(),\n // entityType needs preprocessing to handle legacy 'workflow' value\n entityType: z.preprocess(val => (val === 'workflow' ? 'workflow_run' : val), z.string().optional()),\n});\n\n/**\n * Transforms legacy query parameters to the new format.\n * - dateRange -> startedAt (if startedAt not already set)\n * - name=\"agent run: 'x'\" -> entityId='x', entityType='agent'\n * - name=\"workflow run: 'x'\" -> entityId='x', entityType='workflow_run'\n * - entityType='workflow' -> entityType='workflow_run' (enum value fix)\n */\nfunction transformLegacyParams(params: Record<string, unknown>): Record<string, unknown> {\n const result = { ...params };\n\n // Transform old entityType='workflow' -> 'workflow_run' to support direct handler usage in tests\n if (result.entityType === 'workflow') {\n result.entityType = 'workflow_run';\n }\n\n // Transform old dateRange -> new startedAt\n if (params.dateRange && !params.startedAt) {\n result.startedAt = params.dateRange;\n delete result.dateRange;\n }\n\n // Transform old name -> entityId + entityType\n // Old format: name matched span names like \"agent run: 'myAgent'\" or \"workflow run: 'myWorkflow'\"\n if (typeof params.name === 'string' && !params.entityId) {\n const agentMatch = params.name.match(/^agent run: '([^']+)'$/);\n const workflowMatch = params.name.match(/^workflow run: '([^']+)'$/);\n\n if (agentMatch) {\n result.entityId = agentMatch[1];\n result.entityType = 'agent';\n } else if (workflowMatch) {\n result.entityId = workflowMatch[1];\n result.entityType = 'workflow_run';\n }\n delete result.name;\n }\n\n return result;\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nasync function getScoresStore(mastra: Mastra): Promise<ScoresStorage> {\n const storage = getStorage(mastra);\n const scores = await storage.getStore('scores');\n if (!scores) {\n throw new HTTPException(500, { message: 'Scores storage domain is not available' });\n }\n return scores;\n}\n\nconst listTracesQueryParamSchema = wrapSchemaForQueryParams(\n tracesFilterSchema\n .extend(paginationArgsSchema.shape)\n .extend(tracesOrderBySchema.shape)\n .extend(legacyQueryParamsSchema.shape) // Accept legacy params for backward compatibility\n .partial(),\n);\n\n/** Route: GET /observability/traces - paginated trace listing with filtering and sorting. */\nexport const LIST_TRACES_ROUTE: ServerRoute = createRoute({\n method: 'GET',\n path: '/observability/traces',\n responseType: 'json',\n queryParamSchema: createObservabilityListQuerySchema(\n tracesFilterSchema.extend({\n ...legacyQueryParamsSchema.shape,\n entityType: z.preprocess(\n value => (value === 'workflow' ? 'workflow_run' : value),\n tracesFilterSchema.shape.entityType,\n ),\n }),\n tracesOrderBySchema,\n ),\n responseSchema: listTracesResponseSchema,\n summary: 'List traces',\n description:\n 'Returns a paginated list of traces with optional filtering and sorting. In delta mode, returns only newly listed traces matching the filters.',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, mode, after, limit, ...params }) => {\n try {\n // Transform legacy params to new format before processing\n const transformedParams = transformLegacyParams(params);\n\n const filters = pickParams(tracesFilterSchema, transformedParams);\n const observabilityStore = await getObservabilityStore(mastra);\n if (mode === 'delta') {\n assertObservabilityDeltaSupported(observabilityStore, OBSERVABILITY_LIST_ENDPOINTS.traces);\n return await observabilityStore.listTraces({\n mode,\n filters,\n after: typeof after === 'string' ? after : undefined,\n limit,\n });\n }\n\n const pagination = pickParams(paginationArgsSchema, transformedParams);\n const orderBy = pickParams(tracesOrderBySchema, transformedParams);\n return await observabilityStore.listTraces({ filters, pagination, orderBy });\n } catch (error) {\n return handleError(error, 'Error listing traces');\n }\n },\n});\n\n/** Route: GET /observability/traces/light - paginated lightweight trace listing with filtering and sorting. */\nexport const LIST_TRACES_LIGHT_ROUTE = createRoute({\n method: 'GET',\n path: '/observability/traces/light',\n responseType: 'json',\n queryParamSchema: listTracesQueryParamSchema,\n responseSchema: listTracesLightResponseSchema,\n summary: 'List lightweight traces',\n description: 'Returns a paginated list of lightweight traces with optional filtering and sorting',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, ...params }) => {\n try {\n const transformedParams = transformLegacyParams(params);\n\n const filters = pickParams(tracesFilterSchema, transformedParams);\n const pagination = pickParams(paginationArgsSchema, transformedParams);\n const orderBy = pickParams(tracesOrderBySchema, transformedParams);\n\n const observabilityStore = await getObservabilityStore(mastra);\n // `listTracesLight` was added in `@mastra/core` alongside this route.\n // When this `@mastra/server` is paired with an older `@mastra/core`,\n // the base `ObservabilityStorage` class doesn't declare\n // `listTracesLight` at all, so calling it on a store instance throws\n // `TypeError: ... is not a function`. Detect that case and fall back\n // to the full `listTraces` call so consumers still get a response.\n const store = observabilityStore as { listTracesLight?: unknown };\n if (typeof store.listTracesLight !== 'function') {\n return await observabilityStore.listTraces({ filters, pagination, orderBy });\n }\n return await observabilityStore.listTracesLight({ filters, pagination, orderBy });\n } catch (error) {\n return handleError(error, 'Error listing lightweight traces');\n }\n },\n});\n\n/** Route: GET /observability/branches - paginated branch-anchor span listing across all traces. */\nexport const LIST_BRANCHES_ROUTE = createRoute({\n method: 'GET',\n path: '/observability/branches',\n responseType: 'json',\n queryParamSchema: createObservabilityListQuerySchema(branchesFilterSchema, branchesOrderBySchema),\n responseSchema: listBranchesResponseSchema,\n summary: 'List trace branches',\n description:\n 'Returns a paginated list of branch-anchor spans (e.g., AGENT_RUN, WORKFLOW_RUN, TOOL_CALL) across all traces. Unlike listTraces (one row per root-rooted trace), each row here is a single anchor span -- including ones nested under a different root entity. In delta mode, returns only newly listed branch rows matching the filters.',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, mode, after, limit, ...params }) => {\n try {\n const filters = pickParams(branchesFilterSchema, params);\n const observabilityStore = await getObservabilityStore(mastra);\n if (mode === 'delta') {\n assertObservabilityDeltaSupported(observabilityStore, OBSERVABILITY_LIST_ENDPOINTS.branches);\n return await observabilityStore.listBranches({\n mode,\n filters,\n after: typeof after === 'string' ? after : undefined,\n limit,\n });\n }\n\n const pagination = pickParams(paginationArgsSchema, params);\n const orderBy = pickParams(branchesOrderBySchema, params);\n return await observabilityStore.listBranches({ filters, pagination, orderBy });\n } catch (error) {\n return handleError(error, 'Error listing branches');\n }\n },\n});\n\n/** Route: GET /observability/traces/:traceId/branches/:spanId - retrieve the subtree rooted at a span. */\nexport const GET_BRANCH_ROUTE = createRoute({\n method: 'GET',\n path: '/observability/traces/:traceId/branches/:spanId',\n responseType: 'json',\n pathParamSchema: getBranchArgsSchema.pick({ traceId: true, spanId: true }),\n queryParamSchema: wrapSchemaForQueryParams(getBranchArgsSchema.pick({ depth: true })),\n responseSchema: getBranchResponseSchema,\n summary: 'Get trace branch by span ID',\n description:\n 'Returns the subtree of spans rooted at the given span. The optional `depth` query param bounds descendant levels below the anchor (0 = anchor only; omitted = full subtree).',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, traceId, spanId, depth }) => {\n try {\n const observabilityStore = await getObservabilityStore(mastra);\n const branch = await observabilityStore.getBranch({ traceId, spanId, depth });\n\n if (!branch) {\n throw new HTTPException(404, { message: `Branch not found for span '${spanId}' in trace '${traceId}'` });\n }\n\n return branch;\n } catch (error) {\n return handleError(error, 'Error getting branch');\n }\n },\n});\n/** Route: GET /observability/traces/:traceId - retrieve a single trace with all spans. */\nexport const GET_TRACE_ROUTE: ServerRoute = createRoute({\n method: 'GET',\n path: '/observability/traces/:traceId',\n responseType: 'json',\n pathParamSchema: getTraceArgsSchema,\n responseSchema: getTraceResponseSchema,\n summary: 'Get AI trace by ID',\n description: 'Returns a complete AI trace with all spans by trace ID',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, traceId }) => {\n try {\n const observabilityStore = await getObservabilityStore(mastra);\n const trace = await observabilityStore.getTrace({ traceId });\n\n if (!trace) {\n throw new HTTPException(404, { message: `Trace with ID '${traceId}' not found` });\n }\n\n return trace;\n } catch (error) {\n return handleError(error, 'Error getting trace');\n }\n },\n});\n\n/** Route: GET /observability/traces/:traceId/light - lightweight trace for timeline rendering. */\nexport const GET_TRACE_LIGHT_ROUTE: ServerRoute = createRoute({\n method: 'GET',\n path: '/observability/traces/:traceId/light',\n responseType: 'json',\n pathParamSchema: getTraceArgsSchema,\n responseSchema: getTraceLightResponseSchema,\n summary: 'Get lightweight AI trace by ID',\n description:\n 'Returns a trace with lightweight span data (timeline fields only, excludes input/output/attributes/metadata/tags/links)',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, traceId }) => {\n try {\n const observabilityStore = await getObservabilityStore(mastra);\n const trace = await observabilityStore.getTraceLight({ traceId });\n\n if (!trace) {\n throw new HTTPException(404, { message: `Trace with ID '${traceId}' not found` });\n }\n\n return trace;\n } catch (error) {\n return handleError(error, 'Error getting lightweight trace');\n }\n },\n});\n\n/** Route: GET /observability/traces/:traceId/spans/:spanId - get a single span with full details. */\nexport const GET_SPAN_ROUTE: ServerRoute = createRoute({\n method: 'GET',\n path: '/observability/traces/:traceId/spans/:spanId',\n responseType: 'json',\n pathParamSchema: getSpanArgsSchema,\n responseSchema: getSpanResponseSchema,\n summary: 'Get a single span by ID',\n description: 'Returns a complete span record with all details by trace ID and span ID',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, traceId, spanId }) => {\n try {\n const observabilityStore = await getObservabilityStore(mastra);\n const span = await observabilityStore.getSpan({ traceId, spanId });\n\n if (!span) {\n throw new HTTPException(404, { message: `Span not found` });\n }\n\n return span;\n } catch (error) {\n return handleError(error, 'Error getting span');\n }\n },\n});\n\n/** Route: GET /observability/traces/:traceId/trajectory - extract trajectory from a trace. */\nexport const GET_TRACE_TRAJECTORY_ROUTE = createRoute({\n method: 'GET',\n path: '/observability/traces/:traceId/trajectory',\n responseType: 'json',\n pathParamSchema: getTraceArgsSchema,\n responseSchema: z.object({\n steps: z.array(z.unknown()),\n totalDurationMs: z.number().optional(),\n rawOutput: z.unknown().optional(),\n rawWorkflowResult: z.unknown().optional(),\n }),\n summary: 'Extract trajectory from trace',\n description: 'Extracts a structured trajectory (ordered steps) from a trace by analyzing its spans',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, traceId }) => {\n try {\n const observabilityStore = await getObservabilityStore(mastra);\n const trace = await observabilityStore.getTrace({ traceId });\n\n if (!trace) {\n throw new HTTPException(404, { message: `Trace with ID '${traceId}' not found` });\n }\n\n const trajectory = extractTrajectoryFromTrace(trace.spans);\n return trajectory;\n } catch (error) {\n return handleError(error, 'Error extracting trajectory from trace');\n }\n },\n});\n\n/** Route: POST /observability/traces/score - score traces using a specified scorer (fire-and-forget). */\nexport const SCORE_TRACES_ROUTE = createRoute({\n method: 'POST',\n path: '/observability/traces/score',\n responseType: 'json',\n bodySchema: scoreTracesRequestSchema,\n responseSchema: scoreTracesResponseSchema,\n summary: 'Score traces',\n description: 'Scores one or more traces using a specified scorer (fire-and-forget)',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, ...params }) => {\n try {\n // Validate storage exists before starting background task\n getStorage(mastra);\n\n const { scorerName, targets } = params;\n\n const scorer = mastra.getScorerById(scorerName);\n if (!scorer) {\n throw new HTTPException(404, { message: `Scorer '${scorerName}' not found` });\n }\n\n scoreTraces({\n scorerId: scorer.config.id || scorer.config.name,\n targets,\n mastra,\n }).catch(error => {\n const logger = mastra.getLogger();\n logger?.error(`Background trace scoring failed: ${error.message}`, error);\n });\n\n return {\n status: 'success',\n message: `Scoring started for ${targets.length} ${targets.length === 1 ? 'trace' : 'traces'}`,\n traceCount: targets.length,\n };\n } catch (error) {\n return handleError(error, 'Error processing trace scoring');\n }\n },\n});\n\nexport const LIST_SCORES_BY_SPAN_ROUTE = createRoute({\n method: 'GET',\n path: '/observability/traces/:traceId/:spanId/scores',\n responseType: 'json',\n pathParamSchema: spanIdsSchema,\n // List endpoints accept optional query params; use partial() to allow empty queries.\n queryParamSchema: wrapSchemaForQueryParams(paginationArgsSchema.partial()),\n responseSchema: listScoresResponseSchema,\n summary: 'List scores by span',\n description: 'Returns all scores for a specific span within a trace',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, ...params }) => {\n try {\n const pagination = pickParams(paginationArgsSchema, params);\n const spanIds = pickParams(spanIdsSchema, params);\n\n const scoresStore = await getScoresStore(mastra);\n\n return await scoresStore.listScoresBySpan({\n ...spanIds,\n pagination,\n });\n } catch (error) {\n return handleError(error, 'Error getting scores by span');\n }\n },\n});\n"]}
1
+ {"version":3,"sources":["../src/server/handlers/observability.ts"],"names":[],"mappings":"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","file":"chunk-OR73MMQ3.js","sourcesContent":["import type { Mastra } from '@mastra/core';\nimport { extractTrajectoryFromTrace, listScoresResponseSchema } from '@mastra/core/evals';\nimport { scoreTraces } from '@mastra/core/evals/scoreTraces';\nimport type { ScoresStorage } from '@mastra/core/storage';\nimport {\n tracesFilterSchema,\n tracesOrderBySchema,\n spanIdsSchema,\n listTracesResponseSchema,\n scoreTracesRequestSchema,\n scoreTracesResponseSchema,\n getTraceArgsSchema,\n getTraceResponseSchema,\n getTraceLightResponseSchema,\n getSpanArgsSchema,\n getSpanResponseSchema,\n dateRangeSchema,\n} from '@mastra/core/storage';\n// `branches*`, `listBranches*`, and `getBranch*` schemas are new in\n// @mastra/core@1.32.0; route them through a shim that tolerates older cores\n// (see ./observability-storage-schemas.ts for full rationale).\nimport { z } from 'zod/v4';\nimport { HTTPException } from '../http-exception';\nimport type { ServerRoute } from '../server-adapter/routes';\nimport { createRoute, pickParams, wrapSchemaForQueryParams } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\nimport { paginationArgsSchema } from './observability-list-query-schemas';\nimport {\n assertObservabilityDeltaSupported,\n createObservabilityListQuerySchema,\n getObservabilityStore,\n getStorage,\n OBSERVABILITY_LIST_ENDPOINTS,\n} from './observability-shared';\nimport {\n branchesFilterSchema,\n branchesOrderBySchema,\n listBranchesResponseSchema,\n getBranchArgsSchema,\n getBranchResponseSchema,\n listTracesLightResponseSchema,\n} from './observability-storage-schemas';\n\nexport * from './observability-new-endpoints';\n\n// ============================================================================\n// Legacy Parameter Support (backward compatibility with main branch API)\n// ============================================================================\n\n/**\n * Legacy query parameters from the old API (main branch).\n * These are accepted for backward compatibility and transformed to new format.\n */\nconst legacyQueryParamsSchema = z.object({\n // Old: dateRange was in pagination, now it's startedAt in filters\n dateRange: dateRangeSchema.optional(),\n // Old: name matched span names like \"agent run: 'myAgent'\"\n name: z.string().optional(),\n // entityType needs preprocessing to handle legacy 'workflow' value\n entityType: z.preprocess(val => (val === 'workflow' ? 'workflow_run' : val), z.string().optional()),\n});\n\n/**\n * Transforms legacy query parameters to the new format.\n * - dateRange -> startedAt (if startedAt not already set)\n * - name=\"agent run: 'x'\" -> entityId='x', entityType='agent'\n * - name=\"workflow run: 'x'\" -> entityId='x', entityType='workflow_run'\n * - entityType='workflow' -> entityType='workflow_run' (enum value fix)\n */\nfunction transformLegacyParams(params: Record<string, unknown>): Record<string, unknown> {\n const result = { ...params };\n\n // Transform old entityType='workflow' -> 'workflow_run' to support direct handler usage in tests\n if (result.entityType === 'workflow') {\n result.entityType = 'workflow_run';\n }\n\n // Transform old dateRange -> new startedAt\n if (params.dateRange && !params.startedAt) {\n result.startedAt = params.dateRange;\n delete result.dateRange;\n }\n\n // Transform old name -> entityId + entityType\n // Old format: name matched span names like \"agent run: 'myAgent'\" or \"workflow run: 'myWorkflow'\"\n if (typeof params.name === 'string' && !params.entityId) {\n const agentMatch = params.name.match(/^agent run: '([^']+)'$/);\n const workflowMatch = params.name.match(/^workflow run: '([^']+)'$/);\n\n if (agentMatch) {\n result.entityId = agentMatch[1];\n result.entityType = 'agent';\n } else if (workflowMatch) {\n result.entityId = workflowMatch[1];\n result.entityType = 'workflow_run';\n }\n delete result.name;\n }\n\n return result;\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nasync function getScoresStore(mastra: Mastra): Promise<ScoresStorage> {\n const storage = getStorage(mastra);\n const scores = await storage.getStore('scores');\n if (!scores) {\n throw new HTTPException(500, { message: 'Scores storage domain is not available' });\n }\n return scores;\n}\n\nconst listTracesQueryParamSchema = wrapSchemaForQueryParams(\n tracesFilterSchema\n .extend(paginationArgsSchema.shape)\n .extend(tracesOrderBySchema.shape)\n .extend(legacyQueryParamsSchema.shape) // Accept legacy params for backward compatibility\n .partial(),\n);\n\n/** Route: GET /observability/traces - paginated trace listing with filtering and sorting. */\nexport const LIST_TRACES_ROUTE: ServerRoute = createRoute({\n method: 'GET',\n path: '/observability/traces',\n responseType: 'json',\n queryParamSchema: createObservabilityListQuerySchema(\n tracesFilterSchema.extend({\n ...legacyQueryParamsSchema.shape,\n entityType: z.preprocess(\n value => (value === 'workflow' ? 'workflow_run' : value),\n tracesFilterSchema.shape.entityType,\n ),\n }),\n tracesOrderBySchema,\n ),\n responseSchema: listTracesResponseSchema,\n summary: 'List traces',\n description:\n 'Returns a paginated list of traces with optional filtering and sorting. In delta mode, returns only newly listed traces matching the filters.',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, mode, after, limit, ...params }) => {\n try {\n // Transform legacy params to new format before processing\n const transformedParams = transformLegacyParams(params);\n\n const filters = pickParams(tracesFilterSchema, transformedParams);\n const observabilityStore = await getObservabilityStore(mastra);\n if (mode === 'delta') {\n assertObservabilityDeltaSupported(observabilityStore, OBSERVABILITY_LIST_ENDPOINTS.traces);\n return await observabilityStore.listTraces({\n mode,\n filters,\n after: typeof after === 'string' ? after : undefined,\n limit,\n });\n }\n\n const pagination = pickParams(paginationArgsSchema, transformedParams);\n const orderBy = pickParams(tracesOrderBySchema, transformedParams);\n return await observabilityStore.listTraces({ filters, pagination, orderBy });\n } catch (error) {\n return handleError(error, 'Error listing traces');\n }\n },\n});\n\n/** Route: GET /observability/traces/light - paginated lightweight trace listing with filtering and sorting. */\nexport const LIST_TRACES_LIGHT_ROUTE = createRoute({\n method: 'GET',\n path: '/observability/traces/light',\n responseType: 'json',\n queryParamSchema: listTracesQueryParamSchema,\n responseSchema: listTracesLightResponseSchema,\n summary: 'List lightweight traces',\n description: 'Returns a paginated list of lightweight traces with optional filtering and sorting',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, ...params }) => {\n try {\n const transformedParams = transformLegacyParams(params);\n\n const filters = pickParams(tracesFilterSchema, transformedParams);\n const pagination = pickParams(paginationArgsSchema, transformedParams);\n const orderBy = pickParams(tracesOrderBySchema, transformedParams);\n\n const observabilityStore = await getObservabilityStore(mastra);\n // `listTracesLight` was added in `@mastra/core` alongside this route.\n // When this `@mastra/server` is paired with an older `@mastra/core`,\n // the base `ObservabilityStorage` class doesn't declare\n // `listTracesLight` at all, so calling it on a store instance throws\n // `TypeError: ... is not a function`. Detect that case and fall back\n // to the full `listTraces` call so consumers still get a response.\n const store = observabilityStore as { listTracesLight?: unknown };\n if (typeof store.listTracesLight !== 'function') {\n return await observabilityStore.listTraces({ filters, pagination, orderBy });\n }\n return await observabilityStore.listTracesLight({ filters, pagination, orderBy });\n } catch (error) {\n return handleError(error, 'Error listing lightweight traces');\n }\n },\n});\n\n/** Route: GET /observability/branches - paginated branch-anchor span listing across all traces. */\nexport const LIST_BRANCHES_ROUTE = createRoute({\n method: 'GET',\n path: '/observability/branches',\n responseType: 'json',\n queryParamSchema: createObservabilityListQuerySchema(branchesFilterSchema, branchesOrderBySchema),\n responseSchema: listBranchesResponseSchema,\n summary: 'List trace branches',\n description:\n 'Returns a paginated list of branch-anchor spans (e.g., AGENT_RUN, WORKFLOW_RUN, TOOL_CALL) across all traces. Unlike listTraces (one row per root-rooted trace), each row here is a single anchor span -- including ones nested under a different root entity. In delta mode, returns only newly listed branch rows matching the filters.',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, mode, after, limit, ...params }) => {\n try {\n const filters = pickParams(branchesFilterSchema, params);\n const observabilityStore = await getObservabilityStore(mastra);\n if (mode === 'delta') {\n assertObservabilityDeltaSupported(observabilityStore, OBSERVABILITY_LIST_ENDPOINTS.branches);\n return await observabilityStore.listBranches({\n mode,\n filters,\n after: typeof after === 'string' ? after : undefined,\n limit,\n });\n }\n\n const pagination = pickParams(paginationArgsSchema, params);\n const orderBy = pickParams(branchesOrderBySchema, params);\n return await observabilityStore.listBranches({ filters, pagination, orderBy });\n } catch (error) {\n return handleError(error, 'Error listing branches');\n }\n },\n});\n\n/** Route: GET /observability/traces/:traceId/branches/:spanId - retrieve the subtree rooted at a span. */\nexport const GET_BRANCH_ROUTE = createRoute({\n method: 'GET',\n path: '/observability/traces/:traceId/branches/:spanId',\n responseType: 'json',\n pathParamSchema: getBranchArgsSchema.pick({ traceId: true, spanId: true }),\n queryParamSchema: wrapSchemaForQueryParams(getBranchArgsSchema.pick({ depth: true })),\n responseSchema: getBranchResponseSchema,\n summary: 'Get trace branch by span ID',\n description:\n 'Returns the subtree of spans rooted at the given span. The optional `depth` query param bounds descendant levels below the anchor (0 = anchor only; omitted = full subtree).',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, traceId, spanId, depth }) => {\n try {\n const observabilityStore = await getObservabilityStore(mastra);\n const branch = await observabilityStore.getBranch({ traceId, spanId, depth });\n\n if (!branch) {\n throw new HTTPException(404, { message: `Branch not found for span '${spanId}' in trace '${traceId}'` });\n }\n\n return branch;\n } catch (error) {\n return handleError(error, 'Error getting branch');\n }\n },\n});\n/** Route: GET /observability/traces/:traceId - retrieve a single trace with all spans. */\nexport const GET_TRACE_ROUTE: ServerRoute = createRoute({\n method: 'GET',\n path: '/observability/traces/:traceId',\n responseType: 'json',\n pathParamSchema: getTraceArgsSchema,\n responseSchema: getTraceResponseSchema,\n summary: 'Get AI trace by ID',\n description: 'Returns a complete AI trace with all spans by trace ID',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, traceId }) => {\n try {\n const observabilityStore = await getObservabilityStore(mastra);\n const trace = await observabilityStore.getTrace({ traceId });\n\n if (!trace) {\n throw new HTTPException(404, { message: `Trace with ID '${traceId}' not found` });\n }\n\n return trace;\n } catch (error) {\n return handleError(error, 'Error getting trace');\n }\n },\n});\n\n/** Route: GET /observability/traces/:traceId/light - lightweight trace for timeline rendering. */\nexport const GET_TRACE_LIGHT_ROUTE: ServerRoute = createRoute({\n method: 'GET',\n path: '/observability/traces/:traceId/light',\n responseType: 'json',\n pathParamSchema: getTraceArgsSchema,\n responseSchema: getTraceLightResponseSchema,\n summary: 'Get lightweight AI trace by ID',\n description:\n 'Returns a trace with lightweight span data (timeline fields only, excludes input/output/attributes/metadata/tags/links)',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, traceId }) => {\n try {\n const observabilityStore = await getObservabilityStore(mastra);\n const trace = await observabilityStore.getTraceLight({ traceId });\n\n if (!trace) {\n throw new HTTPException(404, { message: `Trace with ID '${traceId}' not found` });\n }\n\n return trace;\n } catch (error) {\n return handleError(error, 'Error getting lightweight trace');\n }\n },\n});\n\n/** Route: GET /observability/traces/:traceId/spans/:spanId - get a single span with full details. */\nexport const GET_SPAN_ROUTE: ServerRoute = createRoute({\n method: 'GET',\n path: '/observability/traces/:traceId/spans/:spanId',\n responseType: 'json',\n pathParamSchema: getSpanArgsSchema,\n responseSchema: getSpanResponseSchema,\n summary: 'Get a single span by ID',\n description: 'Returns a complete span record with all details by trace ID and span ID',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, traceId, spanId }) => {\n try {\n const observabilityStore = await getObservabilityStore(mastra);\n const span = await observabilityStore.getSpan({ traceId, spanId });\n\n if (!span) {\n throw new HTTPException(404, { message: `Span not found` });\n }\n\n return span;\n } catch (error) {\n return handleError(error, 'Error getting span');\n }\n },\n});\n\n/** Route: GET /observability/traces/:traceId/trajectory - extract trajectory from a trace. */\nexport const GET_TRACE_TRAJECTORY_ROUTE = createRoute({\n method: 'GET',\n path: '/observability/traces/:traceId/trajectory',\n responseType: 'json',\n pathParamSchema: getTraceArgsSchema,\n responseSchema: z.object({\n steps: z.array(z.unknown()),\n totalDurationMs: z.number().optional(),\n rawOutput: z.unknown().optional(),\n rawWorkflowResult: z.unknown().optional(),\n }),\n summary: 'Extract trajectory from trace',\n description: 'Extracts a structured trajectory (ordered steps) from a trace by analyzing its spans',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, traceId }) => {\n try {\n const observabilityStore = await getObservabilityStore(mastra);\n const trace = await observabilityStore.getTrace({ traceId });\n\n if (!trace) {\n throw new HTTPException(404, { message: `Trace with ID '${traceId}' not found` });\n }\n\n const trajectory = extractTrajectoryFromTrace(trace.spans);\n return trajectory;\n } catch (error) {\n return handleError(error, 'Error extracting trajectory from trace');\n }\n },\n});\n\n/** Route: POST /observability/traces/score - score traces using a specified scorer (fire-and-forget). */\nexport const SCORE_TRACES_ROUTE = createRoute({\n method: 'POST',\n path: '/observability/traces/score',\n responseType: 'json',\n bodySchema: scoreTracesRequestSchema,\n responseSchema: scoreTracesResponseSchema,\n summary: 'Score traces',\n description: 'Scores one or more traces using a specified scorer (fire-and-forget)',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, ...params }) => {\n try {\n // Validate storage exists before starting background task\n getStorage(mastra);\n\n const { scorerName, targets } = params;\n\n const scorer = mastra.getScorerById(scorerName);\n if (!scorer) {\n throw new HTTPException(404, { message: `Scorer '${scorerName}' not found` });\n }\n\n scoreTraces({\n scorerId: scorer.config.id || scorer.config.name,\n targets,\n mastra,\n }).catch(error => {\n const logger = mastra.getLogger();\n logger?.error(`Background trace scoring failed: ${error.message}`, error);\n });\n\n return {\n status: 'success',\n message: `Scoring started for ${targets.length} ${targets.length === 1 ? 'trace' : 'traces'}`,\n traceCount: targets.length,\n };\n } catch (error) {\n return handleError(error, 'Error processing trace scoring');\n }\n },\n});\n\nexport const LIST_SCORES_BY_SPAN_ROUTE = createRoute({\n method: 'GET',\n path: '/observability/traces/:traceId/:spanId/scores',\n responseType: 'json',\n pathParamSchema: spanIdsSchema,\n // List endpoints accept optional query params; use partial() to allow empty queries.\n queryParamSchema: wrapSchemaForQueryParams(paginationArgsSchema.partial()),\n responseSchema: listScoresResponseSchema,\n summary: 'List scores by span',\n description: 'Returns all scores for a specific span within a trace',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, ...params }) => {\n try {\n const pagination = pickParams(paginationArgsSchema, params);\n const spanIds = pickParams(spanIdsSchema, params);\n\n const scoresStore = await getScoresStore(mastra);\n\n return await scoresStore.listScoresBySpan({\n ...spanIds,\n pagination,\n });\n } catch (error) {\n return handleError(error, 'Error getting scores by span');\n }\n },\n});\n"]}
@@ -1,9 +1,9 @@
1
- import { resolveAuthorFilter, matchesAuthorFilter, assertReadAccess, getCallerAuthorId, assertWriteAccess } from './chunk-SXZS6VZ3.js';
2
- import { listStoredWorkspacesResponseSchema, listStoredWorkspacesQuerySchema, getStoredWorkspaceResponseSchema, storedWorkspaceIdPathParams, createStoredWorkspaceResponseSchema, createStoredWorkspaceBodySchema, updateStoredWorkspaceResponseSchema, updateStoredWorkspaceBodySchema, deleteStoredWorkspaceResponseSchema } from './chunk-64QFFUEH.js';
3
- import { getStoredResourceScope, scopeStoredResourceMetadata, assertStoredResourceScope, toSlug } from './chunk-EOGTJIPF.js';
1
+ import { resolveAuthorFilter, matchesAuthorFilter, assertReadAccess, getCallerAuthorId, assertWriteAccess } from './chunk-56AYHXOU.js';
2
+ import { getStoredResourceScope, scopeStoredResourceMetadata, assertStoredResourceScope, toSlug } from './chunk-IBUJJIRW.js';
4
3
  import { handleError } from './chunk-7ZWJX3AN.js';
5
4
  import { createRoute } from './chunk-Z5MTOVTR.js';
6
5
  import { HTTPException } from './chunk-6QWQZI4Q.js';
6
+ import { listStoredWorkspacesResponseSchema, listStoredWorkspacesQuerySchema, getStoredWorkspaceResponseSchema, storedWorkspaceIdPathParams, createStoredWorkspaceResponseSchema, createStoredWorkspaceBodySchema, updateStoredWorkspaceResponseSchema, updateStoredWorkspaceBodySchema, deleteStoredWorkspaceResponseSchema } from './chunk-64QFFUEH.js';
7
7
 
8
8
  // src/server/handlers/stored-workspaces.ts
9
9
  var LIST_STORED_WORKSPACES_ROUTE = createRoute({
@@ -285,5 +285,5 @@ var DELETE_STORED_WORKSPACE_ROUTE = createRoute({
285
285
  });
286
286
 
287
287
  export { CREATE_STORED_WORKSPACE_ROUTE, DELETE_STORED_WORKSPACE_ROUTE, GET_STORED_WORKSPACE_ROUTE, LIST_STORED_WORKSPACES_ROUTE, UPDATE_STORED_WORKSPACE_ROUTE };
288
- //# sourceMappingURL=chunk-ICWJHWEM.js.map
289
- //# sourceMappingURL=chunk-ICWJHWEM.js.map
288
+ //# sourceMappingURL=chunk-ORPTO5F2.js.map
289
+ //# sourceMappingURL=chunk-ORPTO5F2.js.map