@mastra/server 1.80.0-alpha.3 → 1.80.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (475) hide show
  1. package/dist/_types/@internal_core/dist/storage/index.d.ts +0 -12
  2. package/dist/_types/@internal_voice/dist/_types/@internal_core/dist/request-context/index.d.ts +0 -2
  3. package/dist/_types/@internal_voice/dist/_types/@internal_core/dist/routes/index.d.ts +0 -2
  4. package/dist/_types/@internal_voice/dist/_types/@internal_core/dist/types/index.d.ts +0 -2
  5. package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-sdk-v5/dist/index.d.ts +65 -13
  6. package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-v6/dist/index.d.ts +110 -35
  7. package/dist/{a2a-DKGBctKT.js → a2a-B2K45wEY.js} +13 -21
  8. package/dist/{a2a-DKGBctKT.js.map → a2a-B2K45wEY.js.map} +1 -1
  9. package/dist/{a2a-BKtK_s5o.cjs → a2a-BUOtgjP-.cjs} +14 -22
  10. package/dist/{a2a-BKtK_s5o.cjs.map → a2a-BUOtgjP-.cjs.map} +1 -1
  11. package/dist/{a2a-CBl-c-lm.cjs → a2a-BsBYrosr.cjs} +2 -3
  12. package/dist/{a2a-CBl-c-lm.cjs.map → a2a-BsBYrosr.cjs.map} +1 -1
  13. package/dist/{a2a-BS0gTQk3.js → a2a-C3ClP3C2.js} +2 -3
  14. package/dist/{a2a-BS0gTQk3.js.map → a2a-C3ClP3C2.js.map} +1 -1
  15. package/dist/{agent-builder-DDYdQvlQ.cjs → agent-builder-9-GSvpgR.cjs} +3 -4
  16. package/dist/{agent-builder-DDYdQvlQ.cjs.map → agent-builder-9-GSvpgR.cjs.map} +1 -1
  17. package/dist/{agent-builder-C-U5USc5.js → agent-builder-BEhoRLS_.js} +12 -13
  18. package/dist/{agent-builder-C-U5USc5.js.map → agent-builder-BEhoRLS_.js.map} +1 -1
  19. package/dist/{agent-builder-us2nwcWc.cjs → agent-builder-CTHPsm8d.cjs} +12 -13
  20. package/dist/{agent-builder-us2nwcWc.cjs.map → agent-builder-CTHPsm8d.cjs.map} +1 -1
  21. package/dist/{agent-builder-B8kc4OBs.js → agent-builder-Cr-52Ulb.js} +3 -4
  22. package/dist/{agent-builder-B8kc4OBs.js.map → agent-builder-Cr-52Ulb.js.map} +1 -1
  23. package/dist/{agent-versions-CzXJWn1T.cjs → agent-versions-De5bRBaa.cjs} +5 -6
  24. package/dist/{agent-versions-CzXJWn1T.cjs.map → agent-versions-De5bRBaa.cjs.map} +1 -1
  25. package/dist/{agent-versions-W600H1ME.js → agent-versions-Pa-ABszp.js} +5 -6
  26. package/dist/{agent-versions-W600H1ME.js.map → agent-versions-Pa-ABszp.js.map} +1 -1
  27. package/dist/{agents-D1-fgNeb.js → agents-A-ahR0eQ.js} +5 -6
  28. package/dist/{agents-D1-fgNeb.js.map → agents-A-ahR0eQ.js.map} +1 -1
  29. package/dist/{agents-BYE5Dmfk.js → agents-DSZgApzs.js} +12 -13
  30. package/dist/{agents-BYE5Dmfk.js.map → agents-DSZgApzs.js.map} +1 -1
  31. package/dist/{agents-AyHEkc2F.cjs → agents-I0TVb_TM.cjs} +13 -14
  32. package/dist/{agents-AyHEkc2F.cjs.map → agents-I0TVb_TM.cjs.map} +1 -1
  33. package/dist/{agents-B1EiIdRs.cjs → agents-vFpMvK3w.cjs} +5 -6
  34. package/dist/{agents-B1EiIdRs.cjs.map → agents-vFpMvK3w.cjs.map} +1 -1
  35. package/dist/{api-schema-manifest-BaF6TE9d.cjs → api-schema-manifest-DCuGBEO0.cjs} +5 -6
  36. package/dist/{api-schema-manifest-BaF6TE9d.cjs.map → api-schema-manifest-DCuGBEO0.cjs.map} +1 -1
  37. package/dist/{api-schema-manifest-A066IsPX.js → api-schema-manifest-j2xurBb0.js} +4 -5
  38. package/dist/{api-schema-manifest-A066IsPX.js.map → api-schema-manifest-j2xurBb0.js.map} +1 -1
  39. package/dist/{auth-B8fQdEg-.cjs → auth-CM5AgF9l.cjs} +2 -3
  40. package/dist/{auth-B8fQdEg-.cjs.map → auth-CM5AgF9l.cjs.map} +1 -1
  41. package/dist/{auth-CZFXpwba.js → auth-CjT_a76k.js} +2 -3
  42. package/dist/{auth-CZFXpwba.js.map → auth-CjT_a76k.js.map} +1 -1
  43. package/dist/{background-tasks-B3VAKTJh.cjs → background-tasks-BMVUFtVh.cjs} +7 -9
  44. package/dist/{background-tasks-B3VAKTJh.cjs.map → background-tasks-BMVUFtVh.cjs.map} +1 -1
  45. package/dist/{background-tasks-Du2zYOPl.js → background-tasks-CFkXHgyQ.js} +7 -9
  46. package/dist/{background-tasks-Du2zYOPl.js.map → background-tasks-CFkXHgyQ.js.map} +1 -1
  47. package/dist/{builder-registry-DLdu9bWH.js → builder-registry-CtGv0Gj6.js} +7 -9
  48. package/dist/{builder-registry-DLdu9bWH.js.map → builder-registry-CtGv0Gj6.js.map} +1 -1
  49. package/dist/{builder-registry-DaFAaMTf.cjs → builder-registry-DWusXgse.cjs} +7 -9
  50. package/dist/{builder-registry-DaFAaMTf.cjs.map → builder-registry-DWusXgse.cjs.map} +1 -1
  51. package/dist/{channels-BnVRmnzK.cjs → channels-EqvuQQbv.cjs} +6 -8
  52. package/dist/{channels-BnVRmnzK.cjs.map → channels-EqvuQQbv.cjs.map} +1 -1
  53. package/dist/{channels-Db-4pXVZ.js → channels-LNR2QIkc.js} +6 -8
  54. package/dist/{channels-Db-4pXVZ.js.map → channels-LNR2QIkc.js.map} +1 -1
  55. package/dist/{common-DhKNoXGp.cjs → common-DVZqSEhZ.cjs} +2 -3
  56. package/dist/{common-DhKNoXGp.cjs.map → common-DVZqSEhZ.cjs.map} +1 -1
  57. package/dist/{common-Y30XtCyr.js → common-xUmaFUop.js} +2 -3
  58. package/dist/{common-Y30XtCyr.js.map → common-xUmaFUop.js.map} +1 -1
  59. package/dist/{constants-e7aaPCLj.cjs → constants-Co1XjPjd.cjs} +2 -3
  60. package/dist/{constants-e7aaPCLj.cjs.map → constants-Co1XjPjd.cjs.map} +1 -1
  61. package/dist/{constants-DazK_RZj.js → constants-ohUUT3Vg.js} +2 -3
  62. package/dist/{constants-DazK_RZj.js.map → constants-ohUUT3Vg.js.map} +1 -1
  63. package/dist/{conversations-DasqEDCF.cjs → conversations-BPQNrv5g.cjs} +5 -6
  64. package/dist/{conversations-DasqEDCF.cjs.map → conversations-BPQNrv5g.cjs.map} +1 -1
  65. package/dist/{conversations-DzuWI3w-.cjs → conversations-BSYZlASE.cjs} +8 -9
  66. package/dist/{conversations-DzuWI3w-.cjs.map → conversations-BSYZlASE.cjs.map} +1 -1
  67. package/dist/{conversations-D-ew5IXn.js → conversations-BfBS1UwQ.js} +8 -9
  68. package/dist/{conversations-D-ew5IXn.js.map → conversations-BfBS1UwQ.js.map} +1 -1
  69. package/dist/{conversations-BzBHVFYe.js → conversations-nNko6-H4.js} +4 -5
  70. package/dist/{conversations-BzBHVFYe.js.map → conversations-nNko6-H4.js.map} +1 -1
  71. package/dist/{datasets-Cgtczd13.cjs → datasets-BP2O5CSR.cjs} +3 -4
  72. package/dist/{datasets-Cgtczd13.cjs.map → datasets-BP2O5CSR.cjs.map} +1 -1
  73. package/dist/{datasets-FRp69Mwv.js → datasets-hLmYapTk.js} +3 -4
  74. package/dist/{datasets-FRp69Mwv.js.map → datasets-hLmYapTk.js.map} +1 -1
  75. package/dist/{default-options-C7tykjLq.cjs → default-options-DRN81WEQ.cjs} +2 -3
  76. package/dist/{default-options-C7tykjLq.cjs.map → default-options-DRN81WEQ.cjs.map} +1 -1
  77. package/dist/{default-options-oSlrqpuP.js → default-options-Dir6CKnE.js} +2 -3
  78. package/dist/{default-options-oSlrqpuP.js.map → default-options-Dir6CKnE.js.map} +1 -1
  79. package/dist/{dist-lT2rqyY9.cjs → dist-36GZrEvk.cjs} +4 -5
  80. package/dist/{dist-lT2rqyY9.cjs.map → dist-36GZrEvk.cjs.map} +1 -1
  81. package/dist/{dist-CeTLA-e5.cjs → dist-BZGewCGq.cjs} +6 -10
  82. package/dist/{dist-CeTLA-e5.cjs.map → dist-BZGewCGq.cjs.map} +1 -1
  83. package/dist/{dist-Bo3GdQwf.cjs → dist-Bal15xNO.cjs} +5 -7
  84. package/dist/{dist-Bo3GdQwf.cjs.map → dist-Bal15xNO.cjs.map} +1 -1
  85. package/dist/{dist-DjkPkAzV.js → dist-CNjm6d2Q.js} +5 -8
  86. package/dist/{dist-DjkPkAzV.js.map → dist-CNjm6d2Q.js.map} +1 -1
  87. package/dist/{dist-DLld1qjf.js → dist-CVoi_Dov.js} +3 -4
  88. package/dist/{dist-DLld1qjf.js.map → dist-CVoi_Dov.js.map} +1 -1
  89. package/dist/{dist-CukR8zi9.cjs → dist-Cci9RRWj.cjs} +1518 -667
  90. package/dist/dist-Cci9RRWj.cjs.map +1 -0
  91. package/dist/{dist-DsrJXwic.cjs → dist-D02J6PZG.cjs} +4 -5
  92. package/dist/{dist-DsrJXwic.cjs.map → dist-D02J6PZG.cjs.map} +1 -1
  93. package/dist/{dist-CREG82cy.js → dist-DC9qnRcv.js} +3 -4
  94. package/dist/{dist-CREG82cy.js.map → dist-DC9qnRcv.js.map} +1 -1
  95. package/dist/dist-DJ3281Ve.cjs +3 -0
  96. package/dist/{dist-BIrQLUV9.js → dist-Dc0g0QSi.js} +4 -6
  97. package/dist/{dist-BIrQLUV9.js.map → dist-Dc0g0QSi.js.map} +1 -1
  98. package/dist/{dist-BBOnrL_A.js → dist-Dwfkbwzg.js} +3 -4
  99. package/dist/{dist-BBOnrL_A.js.map → dist-Dwfkbwzg.js.map} +1 -1
  100. package/dist/{dist-5TAg2f91.js → dist-bAoX6ick.js} +1512 -660
  101. package/dist/dist-bAoX6ick.js.map +1 -0
  102. package/dist/{dist-B9ery9Zw.cjs → dist-lG-fYW7-.cjs} +4 -5
  103. package/dist/{dist-B9ery9Zw.cjs.map → dist-lG-fYW7-.cjs.map} +1 -1
  104. package/dist/dist-t_05BTrR.js +1 -0
  105. package/dist/docs/SKILL.md +1 -1
  106. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  107. package/dist/docs/references/docs-server-custom-adapters.md +53 -1
  108. package/dist/docs/references/docs-server-custom-api-routes.md +2 -0
  109. package/dist/{dynamic-workflows-HwPX3mcf.cjs → dynamic-workflows-CpCkqM1g.cjs} +6 -8
  110. package/dist/{dynamic-workflows-HwPX3mcf.cjs.map → dynamic-workflows-CpCkqM1g.cjs.map} +1 -1
  111. package/dist/{dynamic-workflows-CTUO0SFu.js → dynamic-workflows-DDauBnDt.js} +6 -8
  112. package/dist/{dynamic-workflows-CTUO0SFu.js.map → dynamic-workflows-DDauBnDt.js.map} +1 -1
  113. package/dist/{editor-builder-BSBHrTzY.cjs → editor-builder-8li-nXor.cjs} +3 -4
  114. package/dist/{editor-builder-BSBHrTzY.cjs.map → editor-builder-8li-nXor.cjs.map} +1 -1
  115. package/dist/{editor-builder-DCrTMwA4.js → editor-builder-BCZy1ZH1.js} +3 -4
  116. package/dist/{editor-builder-DCrTMwA4.js.map → editor-builder-BCZy1ZH1.js.map} +1 -1
  117. package/dist/{editor-builder-Bibw1X4q.cjs → editor-builder-BXT6F3Hl.cjs} +7 -9
  118. package/dist/{editor-builder-Bibw1X4q.cjs.map → editor-builder-BXT6F3Hl.cjs.map} +1 -1
  119. package/dist/{editor-builder-Dq03QZzH.js → editor-builder-Bywazgj1.js} +7 -9
  120. package/dist/{editor-builder-Dq03QZzH.js.map → editor-builder-Bywazgj1.js.map} +1 -1
  121. package/dist/{favorites-DWDyKxts.js → favorites-8aieznq3.js} +2 -3
  122. package/dist/{favorites-DWDyKxts.js.map → favorites-8aieznq3.js.map} +1 -1
  123. package/dist/{favorites-D1-AzGsK.cjs → favorites-D0CoxxQn.cjs} +2 -3
  124. package/dist/{favorites-D1-AzGsK.cjs.map → favorites-D0CoxxQn.cjs.map} +1 -1
  125. package/dist/{helpers-CewFtCva.cjs → helpers-CE1fJdLM.cjs} +6 -9
  126. package/dist/{helpers-CewFtCva.cjs.map → helpers-CE1fJdLM.cjs.map} +1 -1
  127. package/dist/{helpers-CxSa9O3X.js → helpers-CMCXsowL.js} +6 -9
  128. package/dist/{helpers-CxSa9O3X.js.map → helpers-CMCXsowL.js.map} +1 -1
  129. package/dist/{http-exception-CKDHupKw.cjs → http-exception-Co3MbFUf.cjs} +2 -3
  130. package/dist/{http-exception-CKDHupKw.cjs.map → http-exception-Co3MbFUf.cjs.map} +1 -1
  131. package/dist/{http-exception-CyfxZB6W.js → http-exception-CzaWkxMl.js} +2 -3
  132. package/dist/{http-exception-CyfxZB6W.js.map → http-exception-CzaWkxMl.js.map} +1 -1
  133. package/dist/index.cjs +2 -3
  134. package/dist/index.js +1 -2
  135. package/dist/{logs-CiSw7r0s.cjs → logs-BqHVVZBm.cjs} +7 -8
  136. package/dist/{logs-CiSw7r0s.cjs.map → logs-BqHVVZBm.cjs.map} +1 -1
  137. package/dist/{logs-CY8AGOCO.cjs → logs-CC6IycDY.cjs} +3 -4
  138. package/dist/{logs-CY8AGOCO.cjs.map → logs-CC6IycDY.cjs.map} +1 -1
  139. package/dist/{logs-CxfPk-iL.js → logs-Cbq2PiQG.js} +7 -8
  140. package/dist/{logs-CxfPk-iL.js.map → logs-Cbq2PiQG.js.map} +1 -1
  141. package/dist/{logs-Bd_xpsYw.js → logs-DpyTCDyt.js} +3 -4
  142. package/dist/{logs-Bd_xpsYw.js.map → logs-DpyTCDyt.js.map} +1 -1
  143. package/dist/{mcp-ziWVk7Ol.cjs → mcp-4iUBgZ7s.cjs} +3 -4
  144. package/dist/{mcp-ziWVk7Ol.cjs.map → mcp-4iUBgZ7s.cjs.map} +1 -1
  145. package/dist/{mcp-CWDfSu7w.js → mcp-CnV25lv0.js} +6 -7
  146. package/dist/{mcp-CWDfSu7w.js.map → mcp-CnV25lv0.js.map} +1 -1
  147. package/dist/{mcp-CWGJRqkC.cjs → mcp-DegWUDeB.cjs} +6 -7
  148. package/dist/{mcp-CWGJRqkC.cjs.map → mcp-DegWUDeB.cjs.map} +1 -1
  149. package/dist/{mcp-Drqt0GqD.js → mcp-DgdKiptb.js} +3 -4
  150. package/dist/{mcp-Drqt0GqD.js.map → mcp-DgdKiptb.js.map} +1 -1
  151. package/dist/{mcp-client-versions-DxBkzcYH.js → mcp-client-versions-B471u-DI.js} +3 -4
  152. package/dist/{mcp-client-versions-DxBkzcYH.js.map → mcp-client-versions-B471u-DI.js.map} +1 -1
  153. package/dist/{mcp-client-versions-Cq97zXiK.cjs → mcp-client-versions-HRTe5cRT.cjs} +3 -4
  154. package/dist/{mcp-client-versions-Cq97zXiK.cjs.map → mcp-client-versions-HRTe5cRT.cjs.map} +1 -1
  155. package/dist/{memory-CizEIbl1.cjs → memory-BnPGDrdg.cjs} +4 -5
  156. package/dist/{memory-CizEIbl1.cjs.map → memory-BnPGDrdg.cjs.map} +1 -1
  157. package/dist/{memory-B58Q2LgU.js → memory-CZ2ELVP0.js} +4 -5
  158. package/dist/{memory-B58Q2LgU.js.map → memory-CZ2ELVP0.js.map} +1 -1
  159. package/dist/{memory-BHtTSzvJ.js → memory-CtSwODLV.js} +7 -8
  160. package/dist/{memory-BHtTSzvJ.js.map → memory-CtSwODLV.js.map} +1 -1
  161. package/dist/{memory-CwwkVDh1.cjs → memory-dujCippo.cjs} +7 -8
  162. package/dist/{memory-CwwkVDh1.cjs.map → memory-dujCippo.cjs.map} +1 -1
  163. package/dist/{message-history-_kbQlA4r.js → message-history-BBVH-ORZ.js} +2 -3
  164. package/dist/{message-history-_kbQlA4r.js.map → message-history-BBVH-ORZ.js.map} +1 -1
  165. package/dist/{message-history-CkUYxSaS.cjs → message-history-CtELj716.cjs} +2 -3
  166. package/dist/{message-history-CkUYxSaS.cjs.map → message-history-CtELj716.cjs.map} +1 -1
  167. package/dist/{observability-Dz9jvMJ3.js → observability-65rZOqJk.js} +6 -7
  168. package/dist/{observability-Dz9jvMJ3.js.map → observability-65rZOqJk.js.map} +1 -1
  169. package/dist/{observability-C2BZQ2jU.cjs → observability-CFKSxaff.cjs} +6 -7
  170. package/dist/{observability-C2BZQ2jU.cjs.map → observability-CFKSxaff.cjs.map} +1 -1
  171. package/dist/{observability-new-endpoints-3DlTYf34.js → observability-new-endpoints-B6MRJ5Rb.js} +8 -11
  172. package/dist/observability-new-endpoints-B6MRJ5Rb.js.map +1 -0
  173. package/dist/{observability-new-endpoints-Drr7q2Dj.cjs → observability-new-endpoints-CDeHfFNP.cjs} +9 -12
  174. package/dist/observability-new-endpoints-CDeHfFNP.cjs.map +1 -0
  175. package/dist/{plans-DZAJG1Et.cjs → plans-CSLB_JKn.cjs} +8 -9
  176. package/dist/{plans-DZAJG1Et.cjs.map → plans-CSLB_JKn.cjs.map} +1 -1
  177. package/dist/{plans-CKbStbWl.js → plans-DToC_H5z.js} +8 -9
  178. package/dist/{plans-CKbStbWl.js.map → plans-DToC_H5z.js.map} +1 -1
  179. package/dist/{probe-image-size-l1uuhbob.cjs → probe-image-size-CTKFNI9H.cjs} +69 -120
  180. package/dist/probe-image-size-CTKFNI9H.cjs.map +1 -0
  181. package/dist/{probe-image-size-DBmo2MAe.js → probe-image-size-DnRk0ecb.js} +69 -120
  182. package/dist/probe-image-size-DnRk0ecb.js.map +1 -0
  183. package/dist/{processor-providers-DHvTA9AL.cjs → processor-providers-CRrcV9ra.cjs} +2 -3
  184. package/dist/{processor-providers-DHvTA9AL.cjs.map → processor-providers-CRrcV9ra.cjs.map} +1 -1
  185. package/dist/{processor-providers-DBhZC6-4.js → processor-providers-WHdDe4aA.js} +2 -3
  186. package/dist/{processor-providers-DBhZC6-4.js.map → processor-providers-WHdDe4aA.js.map} +1 -1
  187. package/dist/{processors-80HWq8nr.cjs → processors-BEut-2a-.cjs} +2 -3
  188. package/dist/{processors-80HWq8nr.cjs.map → processors-BEut-2a-.cjs.map} +1 -1
  189. package/dist/{processors-33IULT8X.js → processors-IhyRC0xH.js} +2 -3
  190. package/dist/{processors-33IULT8X.js.map → processors-IhyRC0xH.js.map} +1 -1
  191. package/dist/{prompt-block-versions-Cl3Lh4H-.cjs → prompt-block-versions-BUPyaY8g.cjs} +4 -5
  192. package/dist/{prompt-block-versions-Cl3Lh4H-.cjs.map → prompt-block-versions-BUPyaY8g.cjs.map} +1 -1
  193. package/dist/{prompt-block-versions-cfq_e1Zi.js → prompt-block-versions-D1gjBkQx.js} +4 -5
  194. package/dist/{prompt-block-versions-cfq_e1Zi.js.map → prompt-block-versions-D1gjBkQx.js.map} +1 -1
  195. package/dist/{responses-CfcIc53b.cjs → responses-CTiwnWeF.cjs} +3 -4
  196. package/dist/{responses-CfcIc53b.cjs.map → responses-CTiwnWeF.cjs.map} +1 -1
  197. package/dist/{responses-DJNJgCTg.js → responses-D-fsDRLd.js} +2 -3
  198. package/dist/{responses-DJNJgCTg.js.map → responses-D-fsDRLd.js.map} +1 -1
  199. package/dist/{responses-BubMB79l.cjs → responses-OoIIZ1g6.cjs} +8 -9
  200. package/dist/{responses-BubMB79l.cjs.map → responses-OoIIZ1g6.cjs.map} +1 -1
  201. package/dist/{responses-jiVC-1lx.js → responses-w6B0iv_t.js} +8 -9
  202. package/dist/{responses-jiVC-1lx.js.map → responses-w6B0iv_t.js.map} +1 -1
  203. package/dist/{rolldown-runtime-BwC_XMyb.cjs → rolldown-runtime-10nMEhjP.cjs} +1 -2
  204. package/dist/{rolldown-runtime-D3Hj5m0v.js → rolldown-runtime-CQI-hT2b.js} +1 -2
  205. package/dist/{route-builder-CjkWxv4E.js → route-builder-BxPrwNog.js} +6 -10
  206. package/dist/route-builder-BxPrwNog.js.map +1 -0
  207. package/dist/{route-builder-B2Qhhd7C.cjs → route-builder-CvARmqnA.cjs} +8 -12
  208. package/dist/route-builder-CvARmqnA.cjs.map +1 -0
  209. package/dist/{routes-DKV9oxFW.js → routes-CIjXlRu7.js} +59 -92
  210. package/dist/{routes-DKV9oxFW.js.map → routes-CIjXlRu7.js.map} +1 -1
  211. package/dist/{routes-jXksmX9G.cjs → routes-CtGp_lBn.cjs} +4 -7
  212. package/dist/routes-CtGp_lBn.cjs.map +1 -0
  213. package/dist/{routes-D6bDACPd.cjs → routes-KTxoRutQ.cjs} +59 -92
  214. package/dist/{routes-D6bDACPd.cjs.map → routes-KTxoRutQ.cjs.map} +1 -1
  215. package/dist/{routes-CKfXiwRc.js → routes-MRZFTKei.js} +4 -7
  216. package/dist/routes-MRZFTKei.js.map +1 -0
  217. package/dist/{rule-group-C5eydl98.js → rule-group-4pWeG61q.js} +2 -3
  218. package/dist/{rule-group-C5eydl98.js.map → rule-group-4pWeG61q.js.map} +1 -1
  219. package/dist/{rule-group-Hyn4rN52.cjs → rule-group-CIacr-Zz.cjs} +2 -3
  220. package/dist/{rule-group-Hyn4rN52.cjs.map → rule-group-CIacr-Zz.cjs.map} +1 -1
  221. package/dist/{schedules-GokZKBYg.cjs → schedules-CSkQFQwy.cjs} +6 -8
  222. package/dist/{schedules-GokZKBYg.cjs.map → schedules-CSkQFQwy.cjs.map} +1 -1
  223. package/dist/{schedules-_3zPKyqm.js → schedules-DfelziYe.js} +6 -8
  224. package/dist/{schedules-_3zPKyqm.js.map → schedules-DfelziYe.js.map} +1 -1
  225. package/dist/{schema-CzbEIyhE-BsMcj9Ws.js → schema-Bf12g7KC-DBc4NSds.js} +104 -35
  226. package/dist/schema-Bf12g7KC-DBc4NSds.js.map +1 -0
  227. package/dist/{schema-CzbEIyhE-20gGIWkz.cjs → schema-Bf12g7KC-plP4Ir6h.cjs} +105 -36
  228. package/dist/schema-Bf12g7KC-plP4Ir6h.cjs.map +1 -0
  229. package/dist/{scorer-versions-CX8RM9a6.js → scorer-versions-DIqKt2kn.js} +4 -5
  230. package/dist/{scorer-versions-CX8RM9a6.js.map → scorer-versions-DIqKt2kn.js.map} +1 -1
  231. package/dist/{scorer-versions-DeCS12ym.cjs → scorer-versions-r7C61gWf.cjs} +4 -5
  232. package/dist/{scorer-versions-DeCS12ym.cjs.map → scorer-versions-r7C61gWf.cjs.map} +1 -1
  233. package/dist/{scores-CetVKM4g.cjs → scores-Bu70OP1U.cjs} +3 -4
  234. package/dist/{scores-CetVKM4g.cjs.map → scores-Bu70OP1U.cjs.map} +1 -1
  235. package/dist/{scores-BbqFfKcy.js → scores-DZ1hftoG.js} +3 -4
  236. package/dist/{scores-BbqFfKcy.js.map → scores-DZ1hftoG.js.map} +1 -1
  237. package/dist/{scores-C8XPZcwt.cjs → scores-FzL-bpCC.cjs} +8 -9
  238. package/dist/{scores-C8XPZcwt.cjs.map → scores-FzL-bpCC.cjs.map} +1 -1
  239. package/dist/{scores-BWTo-_L5.js → scores-PdRDQNaC.js} +8 -9
  240. package/dist/{scores-BWTo-_L5.js.map → scores-PdRDQNaC.js.map} +1 -1
  241. package/dist/server/a2a/store.cjs +2 -3
  242. package/dist/server/a2a/store.js +1 -2
  243. package/dist/server/auth/index.cjs +3 -3
  244. package/dist/server/auth/index.js +2 -2
  245. package/dist/server/browser-stream/index.cjs +3 -5
  246. package/dist/server/browser-stream/index.cjs.map +1 -1
  247. package/dist/server/browser-stream/index.js +2 -4
  248. package/dist/server/browser-stream/index.js.map +1 -1
  249. package/dist/server/handlers/a2a.cjs +2 -2
  250. package/dist/server/handlers/a2a.js +1 -1
  251. package/dist/server/handlers/agent-builder.cjs +2 -2
  252. package/dist/server/handlers/agent-builder.js +1 -1
  253. package/dist/server/handlers/agent-controller.cjs +7 -8
  254. package/dist/server/handlers/agent-controller.js +6 -7
  255. package/dist/server/handlers/agent-versions.cjs +7 -8
  256. package/dist/server/handlers/agent-versions.js +6 -7
  257. package/dist/server/handlers/agents.cjs +2 -2
  258. package/dist/server/handlers/agents.js +1 -1
  259. package/dist/server/handlers/auth.cjs +7 -8
  260. package/dist/server/handlers/auth.js +6 -7
  261. package/dist/server/handlers/author-enrichment.cjs +2 -3
  262. package/dist/server/handlers/author-enrichment.js +1 -2
  263. package/dist/server/handlers/authorship.cjs +4 -5
  264. package/dist/server/handlers/authorship.js +3 -4
  265. package/dist/server/handlers/background-tasks.cjs +2 -2
  266. package/dist/server/handlers/background-tasks.js +1 -1
  267. package/dist/server/handlers/builder-registry.cjs +2 -2
  268. package/dist/server/handlers/builder-registry.js +1 -1
  269. package/dist/server/handlers/channels.cjs +2 -2
  270. package/dist/server/handlers/channels.js +1 -1
  271. package/dist/server/handlers/conversations.cjs +2 -2
  272. package/dist/server/handlers/conversations.js +1 -1
  273. package/dist/server/handlers/datasets.cjs +7 -8
  274. package/dist/server/handlers/datasets.js +6 -7
  275. package/dist/server/handlers/dynamic-workflows.cjs +2 -2
  276. package/dist/server/handlers/dynamic-workflows.js +1 -1
  277. package/dist/server/handlers/editor-builder.cjs +2 -2
  278. package/dist/server/handlers/editor-builder.js +1 -1
  279. package/dist/server/handlers/error.cjs +3 -4
  280. package/dist/server/handlers/error.js +2 -3
  281. package/dist/server/handlers/favorites-enrichment.cjs +3 -4
  282. package/dist/server/handlers/favorites-enrichment.js +2 -3
  283. package/dist/server/handlers/gateway-memory-client.cjs +2 -3
  284. package/dist/server/handlers/gateway-memory-client.js +1 -2
  285. package/dist/server/handlers/logs.cjs +2 -2
  286. package/dist/server/handlers/logs.js +1 -1
  287. package/dist/server/handlers/mcp-client-versions.cjs +6 -7
  288. package/dist/server/handlers/mcp-client-versions.js +5 -6
  289. package/dist/server/handlers/mcp.cjs +2 -2
  290. package/dist/server/handlers/mcp.js +1 -1
  291. package/dist/server/handlers/memory.cjs +2 -2
  292. package/dist/server/handlers/memory.js +1 -1
  293. package/dist/server/handlers/observability-list-query-schemas.cjs +2 -3
  294. package/dist/server/handlers/observability-list-query-schemas.js +1 -2
  295. package/dist/server/handlers/observability-new-endpoints.cjs +2 -2
  296. package/dist/server/handlers/observability-new-endpoints.js +1 -1
  297. package/dist/server/handlers/observability-shared.cjs +4 -5
  298. package/dist/server/handlers/observability-shared.js +3 -4
  299. package/dist/server/handlers/observability-storage-schemas.cjs +2 -3
  300. package/dist/server/handlers/observability-storage-schemas.js +1 -2
  301. package/dist/server/handlers/observability.cjs +3 -3
  302. package/dist/server/handlers/observability.js +2 -2
  303. package/dist/server/handlers/plans.cjs +2 -2
  304. package/dist/server/handlers/plans.js +1 -1
  305. package/dist/server/handlers/processor-providers.cjs +5 -6
  306. package/dist/server/handlers/processor-providers.js +4 -5
  307. package/dist/server/handlers/processors.cjs +5 -6
  308. package/dist/server/handlers/processors.js +4 -5
  309. package/dist/server/handlers/prompt-block-versions.cjs +6 -7
  310. package/dist/server/handlers/prompt-block-versions.js +5 -6
  311. package/dist/server/handlers/responses.adapter.cjs +2 -3
  312. package/dist/server/handlers/responses.adapter.js +1 -2
  313. package/dist/server/handlers/responses.cjs +2 -2
  314. package/dist/server/handlers/responses.js +1 -1
  315. package/dist/server/handlers/responses.storage.cjs +4 -5
  316. package/dist/server/handlers/responses.storage.js +3 -4
  317. package/dist/server/handlers/schedules-workflows-shim.cjs +2 -3
  318. package/dist/server/handlers/schedules-workflows-shim.js +1 -2
  319. package/dist/server/handlers/schedules.cjs +2 -2
  320. package/dist/server/handlers/schedules.js +1 -1
  321. package/dist/server/handlers/scorer-versions.cjs +6 -7
  322. package/dist/server/handlers/scorer-versions.js +5 -6
  323. package/dist/server/handlers/scores.cjs +2 -2
  324. package/dist/server/handlers/scores.js +1 -1
  325. package/dist/server/handlers/skills-sh-shared.cjs +3 -4
  326. package/dist/server/handlers/skills-sh-shared.js +2 -3
  327. package/dist/server/handlers/stored-agent-favorites.cjs +8 -9
  328. package/dist/server/handlers/stored-agent-favorites.js +7 -8
  329. package/dist/server/handlers/stored-agents.cjs +8 -9
  330. package/dist/server/handlers/stored-agents.js +7 -8
  331. package/dist/server/handlers/stored-mcp-clients.cjs +7 -8
  332. package/dist/server/handlers/stored-mcp-clients.js +6 -7
  333. package/dist/server/handlers/stored-prompt-blocks.cjs +7 -8
  334. package/dist/server/handlers/stored-prompt-blocks.js +6 -7
  335. package/dist/server/handlers/stored-scorers.cjs +7 -8
  336. package/dist/server/handlers/stored-scorers.js +6 -7
  337. package/dist/server/handlers/stored-skill-favorites.cjs +8 -9
  338. package/dist/server/handlers/stored-skill-favorites.js +7 -8
  339. package/dist/server/handlers/stored-skills.cjs +7 -8
  340. package/dist/server/handlers/stored-skills.js +6 -7
  341. package/dist/server/handlers/stored-workspaces.cjs +6 -7
  342. package/dist/server/handlers/stored-workspaces.js +5 -6
  343. package/dist/server/handlers/system.cjs +5 -6
  344. package/dist/server/handlers/system.js +4 -5
  345. package/dist/server/handlers/test-utils.cjs +2 -3
  346. package/dist/server/handlers/test-utils.js +1 -2
  347. package/dist/server/handlers/tool-providers.cjs +6 -7
  348. package/dist/server/handlers/tool-providers.js +5 -6
  349. package/dist/server/handlers/tool-schema-overrides.cjs +2 -3
  350. package/dist/server/handlers/tool-schema-overrides.js +1 -2
  351. package/dist/server/handlers/tools.cjs +2 -2
  352. package/dist/server/handlers/tools.js +1 -1
  353. package/dist/server/handlers/utils.cjs +2 -2
  354. package/dist/server/handlers/utils.js +1 -1
  355. package/dist/server/handlers/validate-agent-instructions.cjs +4 -5
  356. package/dist/server/handlers/validate-agent-instructions.js +3 -4
  357. package/dist/server/handlers/validate-avatar.cjs +3 -4
  358. package/dist/server/handlers/validate-avatar.js +2 -3
  359. package/dist/server/handlers/vector.cjs +2 -2
  360. package/dist/server/handlers/vector.js +1 -1
  361. package/dist/server/handlers/version-helpers.cjs +2 -3
  362. package/dist/server/handlers/version-helpers.js +1 -2
  363. package/dist/server/handlers/voice.cjs +2 -2
  364. package/dist/server/handlers/voice.js +1 -1
  365. package/dist/server/handlers/workflow-builder.cjs +2 -2
  366. package/dist/server/handlers/workflow-builder.js +1 -1
  367. package/dist/server/handlers/workflows.cjs +2 -2
  368. package/dist/server/handlers/workflows.js +1 -1
  369. package/dist/server/handlers/workspace.cjs +2 -2
  370. package/dist/server/handlers/workspace.js +1 -1
  371. package/dist/server/handlers.cjs +18 -18
  372. package/dist/server/handlers.js +17 -17
  373. package/dist/server/schemas/index.cjs +35 -35
  374. package/dist/server/schemas/index.js +34 -34
  375. package/dist/server/server-adapter/index.cjs +14 -21
  376. package/dist/server/server-adapter/index.cjs.map +1 -1
  377. package/dist/server/server-adapter/index.js +13 -20
  378. package/dist/server/server-adapter/index.js.map +1 -1
  379. package/dist/{stored-agents-BtaEzKfr.js → stored-agents-BpxMmhtz.js} +9 -11
  380. package/dist/{stored-agents-BtaEzKfr.js.map → stored-agents-BpxMmhtz.js.map} +1 -1
  381. package/dist/{stored-agents-BTL-o6aM.cjs → stored-agents-CDlh3CQQ.cjs} +9 -11
  382. package/dist/{stored-agents-BTL-o6aM.cjs.map → stored-agents-CDlh3CQQ.cjs.map} +1 -1
  383. package/dist/{stored-mcp-clients-D7bNkmTM.cjs → stored-mcp-clients-BA7OSGZ_.cjs} +3 -4
  384. package/dist/{stored-mcp-clients-D7bNkmTM.cjs.map → stored-mcp-clients-BA7OSGZ_.cjs.map} +1 -1
  385. package/dist/{stored-mcp-clients-DMR6NvCp.js → stored-mcp-clients-DtLv0Tly.js} +3 -4
  386. package/dist/{stored-mcp-clients-DMR6NvCp.js.map → stored-mcp-clients-DtLv0Tly.js.map} +1 -1
  387. package/dist/{stored-prompt-blocks-BjHxMCuC.cjs → stored-prompt-blocks-Cqi0vnTE.cjs} +4 -5
  388. package/dist/{stored-prompt-blocks-BjHxMCuC.cjs.map → stored-prompt-blocks-Cqi0vnTE.cjs.map} +1 -1
  389. package/dist/{stored-prompt-blocks-C7qmiWSB.js → stored-prompt-blocks-Z_BuhsUq.js} +4 -5
  390. package/dist/{stored-prompt-blocks-C7qmiWSB.js.map → stored-prompt-blocks-Z_BuhsUq.js.map} +1 -1
  391. package/dist/{stored-scorers-BSxh7JZX.js → stored-scorers-BdJadnUS.js} +4 -5
  392. package/dist/{stored-scorers-BSxh7JZX.js.map → stored-scorers-BdJadnUS.js.map} +1 -1
  393. package/dist/{stored-scorers-I8L1-bAI.cjs → stored-scorers-D1zYUEXg.cjs} +4 -5
  394. package/dist/{stored-scorers-I8L1-bAI.cjs.map → stored-scorers-D1zYUEXg.cjs.map} +1 -1
  395. package/dist/{stored-skills-DzW8hLnI.js → stored-skills-D8Q1NmsH.js} +3 -4
  396. package/dist/{stored-skills-DzW8hLnI.js.map → stored-skills-D8Q1NmsH.js.map} +1 -1
  397. package/dist/{stored-skills-C1e8kf2k.cjs → stored-skills-DppdzQY0.cjs} +3 -4
  398. package/dist/{stored-skills-C1e8kf2k.cjs.map → stored-skills-DppdzQY0.cjs.map} +1 -1
  399. package/dist/{stored-workspaces-DSfChCJ0.cjs → stored-workspaces-BOwJwkec.cjs} +3 -4
  400. package/dist/{stored-workspaces-DSfChCJ0.cjs.map → stored-workspaces-BOwJwkec.cjs.map} +1 -1
  401. package/dist/{stored-workspaces-AkC68rSw.js → stored-workspaces-CYXLBJy5.js} +3 -4
  402. package/dist/{stored-workspaces-AkC68rSw.js.map → stored-workspaces-CYXLBJy5.js.map} +1 -1
  403. package/dist/{system-sSSmmt7I.js → system-B8L_G4oo.js} +2 -3
  404. package/dist/{system-sSSmmt7I.js.map → system-B8L_G4oo.js.map} +1 -1
  405. package/dist/{system-B_Sod-Le.cjs → system-DGfJlOxK.cjs} +2 -3
  406. package/dist/{system-B_Sod-Le.cjs.map → system-DGfJlOxK.cjs.map} +1 -1
  407. package/dist/{tool-providers-DFQkhO4R.cjs → tool-providers-BVwRJTtB.cjs} +2 -3
  408. package/dist/{tool-providers-DFQkhO4R.cjs.map → tool-providers-BVwRJTtB.cjs.map} +1 -1
  409. package/dist/{tool-providers-CIESXi7M.js → tool-providers-Cq3vFqgE.js} +2 -3
  410. package/dist/{tool-providers-CIESXi7M.js.map → tool-providers-Cq3vFqgE.js.map} +1 -1
  411. package/dist/{tools-Ci71xxGP.cjs → tools-CottqeCZ.cjs} +12 -13
  412. package/dist/{tools-Ci71xxGP.cjs.map → tools-CottqeCZ.cjs.map} +1 -1
  413. package/dist/{tools--oMljfqq.js → tools-tMPXGAUO.js} +11 -12
  414. package/dist/{tools--oMljfqq.js.map → tools-tMPXGAUO.js.map} +1 -1
  415. package/dist/{utils-dDLIDg8O.cjs → utils-1UlUJRyC.cjs} +6 -8
  416. package/dist/{utils-dDLIDg8O.cjs.map → utils-1UlUJRyC.cjs.map} +1 -1
  417. package/dist/{utils-CF76qzZR.cjs → utils-BnH77wPf.cjs} +107 -81
  418. package/dist/utils-BnH77wPf.cjs.map +1 -0
  419. package/dist/{utils-BBJlS81s.js → utils-DEwjGOpJ.js} +5 -7
  420. package/dist/{utils-BBJlS81s.js.map → utils-DEwjGOpJ.js.map} +1 -1
  421. package/dist/{utils-aoLN3Wfi.js → utils-YEuwVEc2.js} +104 -78
  422. package/dist/utils-YEuwVEc2.js.map +1 -0
  423. package/dist/{vector-TWv4t-4g.js → vector-Deod39jt.js} +6 -7
  424. package/dist/{vector-TWv4t-4g.js.map → vector-Deod39jt.js.map} +1 -1
  425. package/dist/{vector-BKDD1kwc.cjs → vector-IxK1t4Cb.cjs} +6 -7
  426. package/dist/{vector-BKDD1kwc.cjs.map → vector-IxK1t4Cb.cjs.map} +1 -1
  427. package/dist/{vectors-LFI1jch0.cjs → vectors-CqV387sY.cjs} +3 -4
  428. package/dist/{vectors-LFI1jch0.cjs.map → vectors-CqV387sY.cjs.map} +1 -1
  429. package/dist/{vectors-CJtupgIF.js → vectors-CvHLWqjC.js} +3 -4
  430. package/dist/{vectors-CJtupgIF.js.map → vectors-CvHLWqjC.js.map} +1 -1
  431. package/dist/{version-common-DrzXq7Ct.cjs → version-common-B2n_ML_w.cjs} +3 -4
  432. package/dist/{version-common-DrzXq7Ct.cjs.map → version-common-B2n_ML_w.cjs.map} +1 -1
  433. package/dist/{version-common-4xFzvCS5.js → version-common-Di2U8VWH.js} +3 -4
  434. package/dist/{version-common-4xFzvCS5.js.map → version-common-Di2U8VWH.js.map} +1 -1
  435. package/dist/{voice-BnGwlZ75.cjs → voice-CBbxcsCM.cjs} +4 -5
  436. package/dist/{voice-BnGwlZ75.cjs.map → voice-CBbxcsCM.cjs.map} +1 -1
  437. package/dist/{voice-DjG8tBAD.js → voice-CzFWhWPJ.js} +4 -5
  438. package/dist/{voice-DjG8tBAD.js.map → voice-CzFWhWPJ.js.map} +1 -1
  439. package/dist/{workflow-builder-BoI-XXsT.js → workflow-builder-BcVfkods.js} +8 -10
  440. package/dist/{workflow-builder-BoI-XXsT.js.map → workflow-builder-BcVfkods.js.map} +1 -1
  441. package/dist/{workflow-builder-Dguv4rc0.cjs → workflow-builder-CJEajbkw.cjs} +8 -10
  442. package/dist/{workflow-builder-Dguv4rc0.cjs.map → workflow-builder-CJEajbkw.cjs.map} +1 -1
  443. package/dist/{workflows-D7Oq5On9.js → workflows-BjLruwQB.js} +10 -11
  444. package/dist/{workflows-D7Oq5On9.js.map → workflows-BjLruwQB.js.map} +1 -1
  445. package/dist/{workflows-Dcx4Ib0t.js → workflows-C9BMJV_C.js} +3 -4
  446. package/dist/{workflows-Dcx4Ib0t.js.map → workflows-C9BMJV_C.js.map} +1 -1
  447. package/dist/{workflows-5AytZqK_.cjs → workflows-CxPsDCnW.cjs} +10 -11
  448. package/dist/{workflows-5AytZqK_.cjs.map → workflows-CxPsDCnW.cjs.map} +1 -1
  449. package/dist/{workflows-C8rDpHyY.cjs → workflows-SYBpQupF.cjs} +3 -4
  450. package/dist/{workflows-C8rDpHyY.cjs.map → workflows-SYBpQupF.cjs.map} +1 -1
  451. package/dist/{workspace-BVHXoKmP.js → workspace-C9dE6D1U.js} +6 -7
  452. package/dist/{workspace-BVHXoKmP.js.map → workspace-C9dE6D1U.js.map} +1 -1
  453. package/dist/{workspace-d25MZ9dj.cjs → workspace-CyH_iu8w.cjs} +6 -7
  454. package/dist/{workspace-d25MZ9dj.cjs.map → workspace-CyH_iu8w.cjs.map} +1 -1
  455. package/dist/{workspace-BJYV2lkt.cjs → workspace-KeHGZvNV.cjs} +2 -3
  456. package/dist/{workspace-BJYV2lkt.cjs.map → workspace-KeHGZvNV.cjs.map} +1 -1
  457. package/dist/{workspace-4dBGFdV2.js → workspace-muaSMxVS.js} +2 -3
  458. package/dist/{workspace-4dBGFdV2.js.map → workspace-muaSMxVS.js.map} +1 -1
  459. package/package.json +10 -10
  460. package/dist/dist-5TAg2f91.js.map +0 -1
  461. package/dist/dist-C9Jwt1f0.cjs +0 -3
  462. package/dist/dist-CukR8zi9.cjs.map +0 -1
  463. package/dist/dist-Dgae8Imb.js +0 -1
  464. package/dist/observability-new-endpoints-3DlTYf34.js.map +0 -1
  465. package/dist/observability-new-endpoints-Drr7q2Dj.cjs.map +0 -1
  466. package/dist/probe-image-size-DBmo2MAe.js.map +0 -1
  467. package/dist/probe-image-size-l1uuhbob.cjs.map +0 -1
  468. package/dist/route-builder-B2Qhhd7C.cjs.map +0 -1
  469. package/dist/route-builder-CjkWxv4E.js.map +0 -1
  470. package/dist/routes-CKfXiwRc.js.map +0 -1
  471. package/dist/routes-jXksmX9G.cjs.map +0 -1
  472. package/dist/schema-CzbEIyhE-20gGIWkz.cjs.map +0 -1
  473. package/dist/schema-CzbEIyhE-BsMcj9Ws.js.map +0 -1
  474. package/dist/utils-CF76qzZR.cjs.map +0 -1
  475. package/dist/utils-aoLN3Wfi.js.map +0 -1
@@ -1,11 +1,10 @@
1
1
  import { z } from "zod/v4";
2
- //#region src/server/schemas/message-history.ts
2
+ // src/server/schemas/message-history.ts
3
3
  const lastMessagesSchema = z.union([z.number().int().nonnegative(), z.literal(false)]);
4
4
  const messageHistorySchema = z.object({
5
5
  maxTokens: z.number().nonnegative(),
6
6
  atMaxRemoveTokens: z.number().nonnegative().optional()
7
7
  }).refine((value) => value.atMaxRemoveTokens === void 0 || value.atMaxRemoveTokens <= value.maxTokens, { message: "atMaxRemoveTokens cannot exceed maxTokens" });
8
- //#endregion
9
8
  export { messageHistorySchema as n, lastMessagesSchema as t };
10
9
 
11
- //# sourceMappingURL=message-history-_kbQlA4r.js.map
10
+ //# sourceMappingURL=message-history-BBVH-ORZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-history-_kbQlA4r.js","names":[],"sources":["../src/server/schemas/message-history.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nexport const lastMessagesSchema = z.union([z.number().int().nonnegative(), z.literal(false)]);\n\nexport const messageHistorySchema = z\n .object({\n maxTokens: z.number().nonnegative(),\n atMaxRemoveTokens: z.number().nonnegative().optional(),\n })\n .refine(value => value.atMaxRemoveTokens === undefined || value.atMaxRemoveTokens <= value.maxTokens, {\n message: 'atMaxRemoveTokens cannot exceed maxTokens',\n });\n"],"mappings":";;AAEA,MAAa,qBAAqB,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,GAAG,EAAE,QAAQ,KAAK,CAAC,CAAC;AAE5F,MAAa,uBAAuB,EACjC,OAAO;CACN,WAAW,EAAE,OAAO,CAAC,CAAC,YAAY;CAClC,mBAAmB,EAAE,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS;AACvD,CAAC,CAAC,CACD,QAAO,UAAS,MAAM,sBAAsB,KAAA,KAAa,MAAM,qBAAqB,MAAM,WAAW,EACpG,SAAS,4CACX,CAAC"}
1
+ {"version":3,"file":"message-history-BBVH-ORZ.js","names":[],"sources":["../src/server/schemas/message-history.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nexport const lastMessagesSchema = z.union([z.number().int().nonnegative(), z.literal(false)]);\n\nexport const messageHistorySchema = z\n .object({\n maxTokens: z.number().nonnegative(),\n atMaxRemoveTokens: z.number().nonnegative().optional(),\n })\n .refine(value => value.atMaxRemoveTokens === undefined || value.atMaxRemoveTokens <= value.maxTokens, {\n message: 'atMaxRemoveTokens cannot exceed maxTokens',\n });\n"],"mappings":";;AAEA,MAAa,qBAAqB,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,GAAG,EAAE,QAAQ,KAAK,CAAC,CAAC;AAE5F,MAAa,uBAAuB,EACjC,OAAO;CACN,WAAW,EAAE,OAAO,CAAC,CAAC,YAAY;CAClC,mBAAmB,EAAE,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS;AACvD,CAAC,CAAC,CACD,QAAO,UAAS,MAAM,sBAAsB,KAAA,KAAa,MAAM,qBAAqB,MAAM,WAAW,EACpG,SAAS,4CACX,CAAC"}
@@ -1,11 +1,10 @@
1
1
  let zod_v4 = require("zod/v4");
2
- //#region src/server/schemas/message-history.ts
2
+ // src/server/schemas/message-history.ts
3
3
  const lastMessagesSchema = zod_v4.z.union([zod_v4.z.number().int().nonnegative(), zod_v4.z.literal(false)]);
4
4
  const messageHistorySchema = zod_v4.z.object({
5
5
  maxTokens: zod_v4.z.number().nonnegative(),
6
6
  atMaxRemoveTokens: zod_v4.z.number().nonnegative().optional()
7
7
  }).refine((value) => value.atMaxRemoveTokens === void 0 || value.atMaxRemoveTokens <= value.maxTokens, { message: "atMaxRemoveTokens cannot exceed maxTokens" });
8
- //#endregion
9
8
  Object.defineProperty(exports, "lastMessagesSchema", {
10
9
  enumerable: true,
11
10
  get: function() {
@@ -19,4 +18,4 @@ Object.defineProperty(exports, "messageHistorySchema", {
19
18
  }
20
19
  });
21
20
 
22
- //# sourceMappingURL=message-history-CkUYxSaS.cjs.map
21
+ //# sourceMappingURL=message-history-CtELj716.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-history-CkUYxSaS.cjs","names":["z"],"sources":["../src/server/schemas/message-history.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nexport const lastMessagesSchema = z.union([z.number().int().nonnegative(), z.literal(false)]);\n\nexport const messageHistorySchema = z\n .object({\n maxTokens: z.number().nonnegative(),\n atMaxRemoveTokens: z.number().nonnegative().optional(),\n })\n .refine(value => value.atMaxRemoveTokens === undefined || value.atMaxRemoveTokens <= value.maxTokens, {\n message: 'atMaxRemoveTokens cannot exceed maxTokens',\n });\n"],"mappings":";;AAEA,MAAa,qBAAqBA,OAAAA,EAAE,MAAM,CAACA,OAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,GAAGA,OAAAA,EAAE,QAAQ,KAAK,CAAC,CAAC;AAE5F,MAAa,uBAAuBA,OAAAA,EACjC,OAAO;CACN,WAAWA,OAAAA,EAAE,OAAO,CAAC,CAAC,YAAY;CAClC,mBAAmBA,OAAAA,EAAE,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS;AACvD,CAAC,CAAC,CACD,QAAO,UAAS,MAAM,sBAAsB,KAAA,KAAa,MAAM,qBAAqB,MAAM,WAAW,EACpG,SAAS,4CACX,CAAC"}
1
+ {"version":3,"file":"message-history-CtELj716.cjs","names":["z"],"sources":["../src/server/schemas/message-history.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nexport const lastMessagesSchema = z.union([z.number().int().nonnegative(), z.literal(false)]);\n\nexport const messageHistorySchema = z\n .object({\n maxTokens: z.number().nonnegative(),\n atMaxRemoveTokens: z.number().nonnegative().optional(),\n })\n .refine(value => value.atMaxRemoveTokens === undefined || value.atMaxRemoveTokens <= value.maxTokens, {\n message: 'atMaxRemoveTokens cannot exceed maxTokens',\n });\n"],"mappings":";;AAEA,MAAa,qBAAqBA,OAAAA,EAAE,MAAM,CAACA,OAAAA,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,GAAGA,OAAAA,EAAE,QAAQ,KAAK,CAAC,CAAC;AAE5F,MAAa,uBAAuBA,OAAAA,EACjC,OAAO;CACN,WAAWA,OAAAA,EAAE,OAAO,CAAC,CAAC,YAAY;CAClC,mBAAmBA,OAAAA,EAAE,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS;AACvD,CAAC,CAAC,CACD,QAAO,UAAS,MAAM,sBAAsB,KAAA,KAAa,MAAM,qBAAqB,MAAM,WAAW,EACpG,SAAS,4CACX,CAAC"}
@@ -1,16 +1,16 @@
1
- import { r as __exportAll } from "./rolldown-runtime-D3Hj5m0v.js";
2
- import { t as HTTPException } from "./http-exception-CyfxZB6W.js";
3
- import { a as wrapSchemaForQueryParams, i as pickParams, n as createRoute } from "./route-builder-CjkWxv4E.js";
1
+ import { r as __exportAll } from "./rolldown-runtime-CQI-hT2b.js";
2
+ import { t as HTTPException } from "./http-exception-CzaWkxMl.js";
3
+ import { a as wrapSchemaForQueryParams, i as pickParams, n as createRoute } from "./route-builder-BxPrwNog.js";
4
4
  import { handleError } from "./server/handlers/error.js";
5
5
  import { paginationArgsSchema } from "./server/handlers/observability-list-query-schemas.js";
6
6
  import { OBSERVABILITY_LIST_ENDPOINTS, assertObservabilityDeltaSupported, createObservabilityListQuerySchema, getObservabilityStore, getScoresStore, getStorage } from "./server/handlers/observability-shared.js";
7
7
  import { batchDeleteTracesArgsSchema, batchDeleteTracesResponseSchema, branchesFilterSchema, branchesOrderBySchema, getBranchArgsSchema, getBranchResponseSchema, listBranchesResponseSchema, listTracesLightResponseSchema } from "./server/handlers/observability-storage-schemas.js";
8
- import { A as GET_TRACE_QUERY_VALUES, C as GET_SCORE_AGGREGATE, D as GET_SERVICE_NAMES, E as GET_SCORE_TIME_SERIES, F as NEW_ROUTES, I as QUERY_SPANS, L as QUERY_THREADS, M as LIST_LOGS, N as LIST_METRICS, O as GET_TAGS, P as LIST_SCORES, R as QUERY_TRACES, S as GET_SCORE, T as GET_SCORE_PERCENTILES, _ as GET_METRIC_LABEL_KEYS, a as DELETE_FEEDBACK, b as GET_METRIC_PERCENTILES, c as GET_ENTITY_NAMES, d as GET_FEEDBACK_AGGREGATE, f as GET_FEEDBACK_BREAKDOWN, g as GET_METRIC_BREAKDOWN, h as GET_METRIC_AGGREGATE, i as CREATE_SCORE, j as LIST_FEEDBACK, k as GET_TRACE_QUERY_FIELDS, l as GET_ENTITY_TYPES, m as GET_FEEDBACK_TIME_SERIES, n as AGGREGATE_TRACES, o as DELETE_SCORES, p as GET_FEEDBACK_PERCENTILES, r as CREATE_FEEDBACK, s as GET_CAPABILITIES, t as AGGREGATE_SPANS, u as GET_ENVIRONMENTS, v as GET_METRIC_LABEL_VALUES, w as GET_SCORE_BREAKDOWN, x as GET_METRIC_TIME_SERIES, y as GET_METRIC_NAMES, z as UPDATE_FEEDBACK_REVIEW_STATUS } from "./observability-new-endpoints-3DlTYf34.js";
8
+ import { A as GET_TRACE_QUERY_VALUES, C as GET_SCORE_AGGREGATE, D as GET_SERVICE_NAMES, E as GET_SCORE_TIME_SERIES, F as NEW_ROUTES, I as QUERY_SPANS, L as QUERY_THREADS, M as LIST_LOGS, N as LIST_METRICS, O as GET_TAGS, P as LIST_SCORES, R as QUERY_TRACES, S as GET_SCORE, T as GET_SCORE_PERCENTILES, _ as GET_METRIC_LABEL_KEYS, a as DELETE_FEEDBACK, b as GET_METRIC_PERCENTILES, c as GET_ENTITY_NAMES, d as GET_FEEDBACK_AGGREGATE, f as GET_FEEDBACK_BREAKDOWN, g as GET_METRIC_BREAKDOWN, h as GET_METRIC_AGGREGATE, i as CREATE_SCORE, j as LIST_FEEDBACK, k as GET_TRACE_QUERY_FIELDS, l as GET_ENTITY_TYPES, m as GET_FEEDBACK_TIME_SERIES, n as AGGREGATE_TRACES, o as DELETE_SCORES, p as GET_FEEDBACK_PERCENTILES, r as CREATE_FEEDBACK, s as GET_CAPABILITIES, t as AGGREGATE_SPANS, u as GET_ENVIRONMENTS, v as GET_METRIC_LABEL_VALUES, w as GET_SCORE_BREAKDOWN, x as GET_METRIC_TIME_SERIES, y as GET_METRIC_NAMES, z as UPDATE_FEEDBACK_REVIEW_STATUS } from "./observability-new-endpoints-B6MRJ5Rb.js";
9
9
  import { z } from "zod/v4";
10
10
  import { extractTrajectoryFromTrace, listScoresResponseSchema } from "@mastra/core/evals";
11
11
  import { scoreTraces } from "@mastra/core/evals/scoreTraces";
12
12
  import { dateRangeSchema, getSpanArgsSchema, getSpanResponseSchema, getTraceArgsSchema, getTraceLightResponseSchema, getTraceResponseSchema, listTracesResponseSchema, scoreTracesRequestSchema, scoreTracesResponseSchema, spanIdsSchema, toTraceSpans, traceSpanSchema, tracesFilterSchema, tracesOrderBySchema } from "@mastra/core/storage";
13
- //#region src/server/handlers/observability.ts
13
+ // src/server/handlers/observability.ts
14
14
  var observability_exports = /* @__PURE__ */ __exportAll({
15
15
  AGGREGATE_SPANS: () => AGGREGATE_SPANS,
16
16
  AGGREGATE_TRACES: () => AGGREGATE_TRACES,
@@ -426,7 +426,6 @@ const LIST_SCORES_BY_SPAN_ROUTE = createRoute({
426
426
  }
427
427
  }
428
428
  });
429
- //#endregion
430
429
  export { GET_TRACE_ROUTE as a, LIST_SCORES_BY_SPAN_ROUTE as c, SCORE_TRACES_ROUTE as d, observability_exports as f, GET_TRACE_LIGHT_ROUTE as i, LIST_TRACES_LIGHT_ROUTE as l, GET_BRANCH_ROUTE as n, GET_TRACE_TRAJECTORY_ROUTE as o, GET_SPAN_ROUTE as r, LIST_BRANCHES_ROUTE as s, DELETE_TRACES_ROUTE as t, LIST_TRACES_ROUTE as u };
431
430
 
432
- //# sourceMappingURL=observability-Dz9jvMJ3.js.map
431
+ //# sourceMappingURL=observability-65rZOqJk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"observability-Dz9jvMJ3.js","names":["store"],"sources":["../src/server/handlers/observability.ts"],"sourcesContent":["import { extractTrajectoryFromTrace, listScoresResponseSchema } from '@mastra/core/evals';\nimport { scoreTraces } from '@mastra/core/evals/scoreTraces';\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 toTraceSpans,\n traceSpanSchema,\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 getScoresStore,\n getStorage,\n OBSERVABILITY_LIST_ENDPOINTS,\n} from './observability-shared';\nimport {\n branchesFilterSchema,\n branchesOrderBySchema,\n listBranchesResponseSchema,\n getBranchArgsSchema,\n getBranchResponseSchema,\n listTracesLightResponseSchema,\n batchDeleteTracesArgsSchema,\n batchDeleteTracesResponseSchema,\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\n/** Filter shape shared by the full and lightweight trace list routes. */\nconst tracesListFilterSchema = tracesFilterSchema.extend({\n ...legacyQueryParamsSchema.shape, // Accept legacy params for backward compatibility\n entityType: z.preprocess(\n value => (value === 'workflow' ? 'workflow_run' : value),\n tracesFilterSchema.shape.entityType,\n ),\n});\n\nconst listTracesQueryParamSchema = createObservabilityListQuerySchema(tracesListFilterSchema, tracesOrderBySchema);\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: listTracesQueryParamSchema,\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:\n 'Returns a paginated list of lightweight 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 const transformedParams = transformLegacyParams(params);\n\n const filters = pickParams(tracesFilterSchema, transformedParams);\n const observabilityStore = await getObservabilityStore(mastra);\n\n // Every current store answers `listTracesLight` — stores without a dedicated\n // implementation inherit the base class's projection fallback. This guard is\n // only for an older `@mastra/core` whose base class predates the method, where\n // calling it would throw `TypeError: ... is not a function`; there we fall back\n // to `listTraces` so consumers still get a response.\n const store = observabilityStore as { listTracesLight?: unknown };\n const supportsLight = typeof store.listTracesLight === 'function';\n\n if (mode === 'delta') {\n assertObservabilityDeltaSupported(observabilityStore, OBSERVABILITY_LIST_ENDPOINTS.traces);\n const deltaArgs = {\n mode,\n filters,\n after: typeof after === 'string' ? after : undefined,\n limit,\n } as const;\n return supportsLight\n ? await observabilityStore.listTracesLight(deltaArgs)\n : await observabilityStore.listTraces(deltaArgs);\n }\n\n const pagination = pickParams(paginationArgsSchema, transformedParams);\n const orderBy = pickParams(tracesOrderBySchema, transformedParams);\n\n if (!supportsLight) {\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.extend({ spans: z.array(traceSpanSchema) }),\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 // Stored SpanRecords carry no status field; derive it from error/endedAt so\n // trace-detail spans match the status shown in trace list rows.\n return { ...trace, spans: toTraceSpans(trace.spans) };\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/delete - batch delete traces with cross-signal cascade. */\nexport const DELETE_TRACES_ROUTE: ServerRoute = createRoute({\n method: 'POST',\n path: '/observability/traces/delete',\n responseType: 'json',\n bodySchema: batchDeleteTracesArgsSchema.pick({ traceIds: true }),\n responseSchema: batchDeleteTracesResponseSchema,\n maxBodySize: 256 * 1024,\n summary: 'Delete traces',\n description:\n 'Deletes traces by ID, cascading to all associated data: spans, trace roots/branches, and signal events (scores, feedback, metrics, logs) that reference the deleted traces. Signals without a trace ID are untouched. Experiment traces are deleted like any other trace. On ClickHouse-backed stores, deletes are lightweight and reads may briefly return deleted rows until the delete is fully applied.',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, traceIds }) => {\n try {\n const observabilityStore = await getObservabilityStore(mastra);\n await observabilityStore.batchDeleteTraces({ traceIds });\n return { success: true as const };\n } catch (error) {\n return handleError(error, 'Error deleting traces');\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"],"mappings":"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"}
1
+ {"version":3,"file":"observability-65rZOqJk.js","names":["store"],"sources":["../src/server/handlers/observability.ts"],"sourcesContent":["import { extractTrajectoryFromTrace, listScoresResponseSchema } from '@mastra/core/evals';\nimport { scoreTraces } from '@mastra/core/evals/scoreTraces';\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 toTraceSpans,\n traceSpanSchema,\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 getScoresStore,\n getStorage,\n OBSERVABILITY_LIST_ENDPOINTS,\n} from './observability-shared';\nimport {\n branchesFilterSchema,\n branchesOrderBySchema,\n listBranchesResponseSchema,\n getBranchArgsSchema,\n getBranchResponseSchema,\n listTracesLightResponseSchema,\n batchDeleteTracesArgsSchema,\n batchDeleteTracesResponseSchema,\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\n/** Filter shape shared by the full and lightweight trace list routes. */\nconst tracesListFilterSchema = tracesFilterSchema.extend({\n ...legacyQueryParamsSchema.shape, // Accept legacy params for backward compatibility\n entityType: z.preprocess(\n value => (value === 'workflow' ? 'workflow_run' : value),\n tracesFilterSchema.shape.entityType,\n ),\n});\n\nconst listTracesQueryParamSchema = createObservabilityListQuerySchema(tracesListFilterSchema, tracesOrderBySchema);\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: listTracesQueryParamSchema,\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:\n 'Returns a paginated list of lightweight 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 const transformedParams = transformLegacyParams(params);\n\n const filters = pickParams(tracesFilterSchema, transformedParams);\n const observabilityStore = await getObservabilityStore(mastra);\n\n // Every current store answers `listTracesLight` — stores without a dedicated\n // implementation inherit the base class's projection fallback. This guard is\n // only for an older `@mastra/core` whose base class predates the method, where\n // calling it would throw `TypeError: ... is not a function`; there we fall back\n // to `listTraces` so consumers still get a response.\n const store = observabilityStore as { listTracesLight?: unknown };\n const supportsLight = typeof store.listTracesLight === 'function';\n\n if (mode === 'delta') {\n assertObservabilityDeltaSupported(observabilityStore, OBSERVABILITY_LIST_ENDPOINTS.traces);\n const deltaArgs = {\n mode,\n filters,\n after: typeof after === 'string' ? after : undefined,\n limit,\n } as const;\n return supportsLight\n ? await observabilityStore.listTracesLight(deltaArgs)\n : await observabilityStore.listTraces(deltaArgs);\n }\n\n const pagination = pickParams(paginationArgsSchema, transformedParams);\n const orderBy = pickParams(tracesOrderBySchema, transformedParams);\n\n if (!supportsLight) {\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.extend({ spans: z.array(traceSpanSchema) }),\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 // Stored SpanRecords carry no status field; derive it from error/endedAt so\n // trace-detail spans match the status shown in trace list rows.\n return { ...trace, spans: toTraceSpans(trace.spans) };\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/delete - batch delete traces with cross-signal cascade. */\nexport const DELETE_TRACES_ROUTE: ServerRoute = createRoute({\n method: 'POST',\n path: '/observability/traces/delete',\n responseType: 'json',\n bodySchema: batchDeleteTracesArgsSchema.pick({ traceIds: true }),\n responseSchema: batchDeleteTracesResponseSchema,\n maxBodySize: 256 * 1024,\n summary: 'Delete traces',\n description:\n 'Deletes traces by ID, cascading to all associated data: spans, trace roots/branches, and signal events (scores, feedback, metrics, logs) that reference the deleted traces. Signals without a trace ID are untouched. Experiment traces are deleted like any other trace. On ClickHouse-backed stores, deletes are lightweight and reads may briefly return deleted rows until the delete is fully applied.',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, traceIds }) => {\n try {\n const observabilityStore = await getObservabilityStore(mastra);\n await observabilityStore.batchDeleteTraces({ traceIds });\n return { success: true as const };\n } catch (error) {\n return handleError(error, 'Error deleting traces');\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"],"mappings":"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"}
@@ -1,16 +1,16 @@
1
- const require_rolldown_runtime = require("./rolldown-runtime-BwC_XMyb.cjs");
2
- const require_http_exception = require("./http-exception-CKDHupKw.cjs");
3
- const require_route_builder = require("./route-builder-B2Qhhd7C.cjs");
1
+ const require_rolldown_runtime = require("./rolldown-runtime-10nMEhjP.cjs");
2
+ const require_http_exception = require("./http-exception-Co3MbFUf.cjs");
3
+ const require_route_builder = require("./route-builder-CvARmqnA.cjs");
4
4
  const require_server_handlers_error = require("./server/handlers/error.cjs");
5
5
  const require_server_handlers_observability_list_query_schemas = require("./server/handlers/observability-list-query-schemas.cjs");
6
6
  const require_server_handlers_observability_shared = require("./server/handlers/observability-shared.cjs");
7
7
  const require_server_handlers_observability_storage_schemas = require("./server/handlers/observability-storage-schemas.cjs");
8
- const require_observability_new_endpoints = require("./observability-new-endpoints-Drr7q2Dj.cjs");
8
+ const require_observability_new_endpoints = require("./observability-new-endpoints-CDeHfFNP.cjs");
9
9
  let zod_v4 = require("zod/v4");
10
10
  let _mastra_core_evals = require("@mastra/core/evals");
11
11
  let _mastra_core_evals_scoreTraces = require("@mastra/core/evals/scoreTraces");
12
12
  let _mastra_core_storage = require("@mastra/core/storage");
13
- //#region src/server/handlers/observability.ts
13
+ // src/server/handlers/observability.ts
14
14
  var observability_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
15
15
  AGGREGATE_SPANS: () => require_observability_new_endpoints.AGGREGATE_SPANS,
16
16
  AGGREGATE_TRACES: () => require_observability_new_endpoints.AGGREGATE_TRACES,
@@ -426,7 +426,6 @@ const LIST_SCORES_BY_SPAN_ROUTE = require_route_builder.createRoute({
426
426
  }
427
427
  }
428
428
  });
429
- //#endregion
430
429
  Object.defineProperty(exports, "DELETE_TRACES_ROUTE", {
431
430
  enumerable: true,
432
431
  get: function() {
@@ -500,4 +499,4 @@ Object.defineProperty(exports, "observability_exports", {
500
499
  }
501
500
  });
502
501
 
503
- //# sourceMappingURL=observability-C2BZQ2jU.cjs.map
502
+ //# sourceMappingURL=observability-CFKSxaff.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"observability-C2BZQ2jU.cjs","names":["z","dateRangeSchema","tracesFilterSchema","createObservabilityListQuerySchema","tracesOrderBySchema","createRoute","listTracesResponseSchema","pickParams","getObservabilityStore","OBSERVABILITY_LIST_ENDPOINTS","paginationArgsSchema","handleError","listTracesLightResponseSchema","store","branchesFilterSchema","branchesOrderBySchema","listBranchesResponseSchema","getBranchArgsSchema","wrapSchemaForQueryParams","getBranchResponseSchema","HTTPException","getTraceArgsSchema","getTraceResponseSchema","traceSpanSchema","toTraceSpans","getTraceLightResponseSchema","getSpanArgsSchema","getSpanResponseSchema","extractTrajectoryFromTrace","batchDeleteTracesArgsSchema","batchDeleteTracesResponseSchema","scoreTracesRequestSchema","scoreTracesResponseSchema","spanIdsSchema","listScoresResponseSchema","getScoresStore"],"sources":["../src/server/handlers/observability.ts"],"sourcesContent":["import { extractTrajectoryFromTrace, listScoresResponseSchema } from '@mastra/core/evals';\nimport { scoreTraces } from '@mastra/core/evals/scoreTraces';\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 toTraceSpans,\n traceSpanSchema,\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 getScoresStore,\n getStorage,\n OBSERVABILITY_LIST_ENDPOINTS,\n} from './observability-shared';\nimport {\n branchesFilterSchema,\n branchesOrderBySchema,\n listBranchesResponseSchema,\n getBranchArgsSchema,\n getBranchResponseSchema,\n listTracesLightResponseSchema,\n batchDeleteTracesArgsSchema,\n batchDeleteTracesResponseSchema,\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\n/** Filter shape shared by the full and lightweight trace list routes. */\nconst tracesListFilterSchema = tracesFilterSchema.extend({\n ...legacyQueryParamsSchema.shape, // Accept legacy params for backward compatibility\n entityType: z.preprocess(\n value => (value === 'workflow' ? 'workflow_run' : value),\n tracesFilterSchema.shape.entityType,\n ),\n});\n\nconst listTracesQueryParamSchema = createObservabilityListQuerySchema(tracesListFilterSchema, tracesOrderBySchema);\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: listTracesQueryParamSchema,\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:\n 'Returns a paginated list of lightweight 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 const transformedParams = transformLegacyParams(params);\n\n const filters = pickParams(tracesFilterSchema, transformedParams);\n const observabilityStore = await getObservabilityStore(mastra);\n\n // Every current store answers `listTracesLight` — stores without a dedicated\n // implementation inherit the base class's projection fallback. This guard is\n // only for an older `@mastra/core` whose base class predates the method, where\n // calling it would throw `TypeError: ... is not a function`; there we fall back\n // to `listTraces` so consumers still get a response.\n const store = observabilityStore as { listTracesLight?: unknown };\n const supportsLight = typeof store.listTracesLight === 'function';\n\n if (mode === 'delta') {\n assertObservabilityDeltaSupported(observabilityStore, OBSERVABILITY_LIST_ENDPOINTS.traces);\n const deltaArgs = {\n mode,\n filters,\n after: typeof after === 'string' ? after : undefined,\n limit,\n } as const;\n return supportsLight\n ? await observabilityStore.listTracesLight(deltaArgs)\n : await observabilityStore.listTraces(deltaArgs);\n }\n\n const pagination = pickParams(paginationArgsSchema, transformedParams);\n const orderBy = pickParams(tracesOrderBySchema, transformedParams);\n\n if (!supportsLight) {\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.extend({ spans: z.array(traceSpanSchema) }),\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 // Stored SpanRecords carry no status field; derive it from error/endedAt so\n // trace-detail spans match the status shown in trace list rows.\n return { ...trace, spans: toTraceSpans(trace.spans) };\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/delete - batch delete traces with cross-signal cascade. */\nexport const DELETE_TRACES_ROUTE: ServerRoute = createRoute({\n method: 'POST',\n path: '/observability/traces/delete',\n responseType: 'json',\n bodySchema: batchDeleteTracesArgsSchema.pick({ traceIds: true }),\n responseSchema: batchDeleteTracesResponseSchema,\n maxBodySize: 256 * 1024,\n summary: 'Delete traces',\n description:\n 'Deletes traces by ID, cascading to all associated data: spans, trace roots/branches, and signal events (scores, feedback, metrics, logs) that reference the deleted traces. Signals without a trace ID are untouched. Experiment traces are deleted like any other trace. On ClickHouse-backed stores, deletes are lightweight and reads may briefly return deleted rows until the delete is fully applied.',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, traceIds }) => {\n try {\n const observabilityStore = await getObservabilityStore(mastra);\n await observabilityStore.batchDeleteTraces({ traceIds });\n return { success: true as const };\n } catch (error) {\n return handleError(error, 'Error deleting traces');\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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDA,MAAM,0BAA0BA,OAAAA,EAAE,OAAO;CAEvC,WAAWC,qBAAAA,gBAAgB,SAAS;CAEpC,MAAMD,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;CAE1B,YAAYA,OAAAA,EAAE,YAAW,QAAQ,QAAQ,aAAa,iBAAiB,KAAMA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC;AACpG,CAAC;;;;;;;;AASD,SAAS,sBAAsB,QAA0D;CACvF,MAAM,SAAS,EAAE,GAAG,OAAO;CAG3B,IAAI,OAAO,eAAe,YACxB,OAAO,aAAa;CAItB,IAAI,OAAO,aAAa,CAAC,OAAO,WAAW;EACzC,OAAO,YAAY,OAAO;EAC1B,OAAO,OAAO;CAChB;CAIA,IAAI,OAAO,OAAO,SAAS,YAAY,CAAC,OAAO,UAAU;EACvD,MAAM,aAAa,OAAO,KAAK,MAAM,wBAAwB;EAC7D,MAAM,gBAAgB,OAAO,KAAK,MAAM,2BAA2B;EAEnE,IAAI,YAAY;GACd,OAAO,WAAW,WAAW;GAC7B,OAAO,aAAa;EACtB,OAAO,IAAI,eAAe;GACxB,OAAO,WAAW,cAAc;GAChC,OAAO,aAAa;EACtB;EACA,OAAO,OAAO;CAChB;CAEA,OAAO;AACT;;AAOA,MAAM,yBAAyBE,qBAAAA,mBAAmB,OAAO;CACvD,GAAG,wBAAwB;CAC3B,YAAYF,OAAAA,EAAE,YACZ,UAAU,UAAU,aAAa,iBAAiB,OAClDE,qBAAAA,mBAAmB,MAAM,UAC3B;AACF,CAAC;AAED,MAAM,6BAA6BC,6CAAAA,mCAAmC,wBAAwBC,qBAAAA,mBAAmB;;AAGjH,MAAa,oBAAiCC,sBAAAA,YAAY;CACxD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,kBAAkB;CAClB,gBAAgBC,qBAAAA;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,eAAe;CACtB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,MAAM,OAAO,OAAO,GAAG,aAAa;EAC5D,IAAI;GAEF,MAAM,oBAAoB,sBAAsB,MAAM;GAEtD,MAAM,UAAUC,sBAAAA,WAAWL,qBAAAA,oBAAoB,iBAAiB;GAChE,MAAM,qBAAqB,MAAMM,6CAAAA,sBAAsB,MAAM;GAC7D,IAAI,SAAS,SAAS;IACpB,6CAAA,kCAAkC,oBAAoBC,6CAAAA,6BAA6B,MAAM;IACzF,OAAO,MAAM,mBAAmB,WAAW;KACzC;KACA;KACA,OAAO,OAAO,UAAU,WAAW,QAAQ,KAAA;KAC3C;IACF,CAAC;GACH;GAEA,MAAM,aAAaF,sBAAAA,WAAWG,yDAAAA,sBAAsB,iBAAiB;GACrE,MAAM,UAAUH,sBAAAA,WAAWH,qBAAAA,qBAAqB,iBAAiB;GACjE,OAAO,MAAM,mBAAmB,WAAW;IAAE;IAAS;IAAY;GAAQ,CAAC;EAC7E,SAAS,OAAO;GACd,OAAOO,8BAAAA,YAAY,OAAO,sBAAsB;EAClD;CACF;AACF,CAAC;;AAGD,MAAa,0BAA0BN,sBAAAA,YAAY;CACjD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,kBAAkB;CAClB,gBAAgBO,sDAAAA;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,eAAe;CACtB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,MAAM,OAAO,OAAO,GAAG,aAAa;EAC5D,IAAI;GACF,MAAM,oBAAoB,sBAAsB,MAAM;GAEtD,MAAM,UAAUL,sBAAAA,WAAWL,qBAAAA,oBAAoB,iBAAiB;GAChE,MAAM,qBAAqB,MAAMM,6CAAAA,sBAAsB,MAAM;GAQ7D,MAAM,gBAAgB,OAAOK,mBAAM,oBAAoB;GAEvD,IAAI,SAAS,SAAS;IACpB,6CAAA,kCAAkC,oBAAoBJ,6CAAAA,6BAA6B,MAAM;IACzF,MAAM,YAAY;KAChB;KACA;KACA,OAAO,OAAO,UAAU,WAAW,QAAQ,KAAA;KAC3C;IACF;IACA,OAAO,gBACH,MAAM,mBAAmB,gBAAgB,SAAS,IAClD,MAAM,mBAAmB,WAAW,SAAS;GACnD;GAEA,MAAM,aAAaF,sBAAAA,WAAWG,yDAAAA,sBAAsB,iBAAiB;GACrE,MAAM,UAAUH,sBAAAA,WAAWH,qBAAAA,qBAAqB,iBAAiB;GAEjE,IAAI,CAAC,eACH,OAAO,MAAM,mBAAmB,WAAW;IAAE;IAAS;IAAY;GAAQ,CAAC;GAE7E,OAAO,MAAM,mBAAmB,gBAAgB;IAAE;IAAS;IAAY;GAAQ,CAAC;EAClF,SAAS,OAAO;GACd,OAAOO,8BAAAA,YAAY,OAAO,kCAAkC;EAC9D;CACF;AACF,CAAC;;AAGD,MAAa,sBAAsBN,sBAAAA,YAAY;CAC7C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,kBAAkBF,6CAAAA,mCAAmCW,sDAAAA,sBAAsBC,sDAAAA,qBAAqB;CAChG,gBAAgBC,sDAAAA;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,eAAe;CACtB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,MAAM,OAAO,OAAO,GAAG,aAAa;EAC5D,IAAI;GACF,MAAM,UAAUT,sBAAAA,WAAWO,sDAAAA,sBAAsB,MAAM;GACvD,MAAM,qBAAqB,MAAMN,6CAAAA,sBAAsB,MAAM;GAC7D,IAAI,SAAS,SAAS;IACpB,6CAAA,kCAAkC,oBAAoBC,6CAAAA,6BAA6B,QAAQ;IAC3F,OAAO,MAAM,mBAAmB,aAAa;KAC3C;KACA;KACA,OAAO,OAAO,UAAU,WAAW,QAAQ,KAAA;KAC3C;IACF,CAAC;GACH;GAEA,MAAM,aAAaF,sBAAAA,WAAWG,yDAAAA,sBAAsB,MAAM;GAC1D,MAAM,UAAUH,sBAAAA,WAAWQ,sDAAAA,uBAAuB,MAAM;GACxD,OAAO,MAAM,mBAAmB,aAAa;IAAE;IAAS;IAAY;GAAQ,CAAC;EAC/E,SAAS,OAAO;GACd,OAAOJ,8BAAAA,YAAY,OAAO,wBAAwB;EACpD;CACF;AACF,CAAC;;AAGD,MAAa,mBAAmBN,sBAAAA,YAAY;CAC1C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBY,sDAAAA,oBAAoB,KAAK;EAAE,SAAS;EAAM,QAAQ;CAAK,CAAC;CACzE,kBAAkBC,sBAAAA,yBAAyBD,sDAAAA,oBAAoB,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC;CACpF,gBAAgBE,sDAAAA;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,eAAe;CACtB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,SAAS,QAAQ,YAAY;EACrD,IAAI;GAEF,MAAM,SAAS,OAAM,MADYX,6CAAAA,sBAAsB,MAAM,EAAA,CACrB,UAAU;IAAE;IAAS;IAAQ;GAAM,CAAC;GAE5E,IAAI,CAAC,QACH,MAAM,IAAIY,uBAAAA,cAAc,KAAK,EAAE,SAAS,8BAA8B,OAAO,cAAc,QAAQ,GAAG,CAAC;GAGzG,OAAO;EACT,SAAS,OAAO;GACd,OAAOT,8BAAAA,YAAY,OAAO,sBAAsB;EAClD;CACF;AACF,CAAC;;AAED,MAAa,kBAA+BN,sBAAAA,YAAY;CACtD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBgB,qBAAAA;CACjB,gBAAgBC,qBAAAA,uBAAuB,OAAO,EAAE,OAAOtB,OAAAA,EAAE,MAAMuB,qBAAAA,eAAe,EAAE,CAAC;CACjF,SAAS;CACT,aAAa;CACb,MAAM,CAAC,eAAe;CACtB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,cAAc;EACtC,IAAI;GAEF,MAAM,QAAQ,OAAM,MADaf,6CAAAA,sBAAsB,MAAM,EAAA,CACtB,SAAS,EAAE,QAAQ,CAAC;GAE3D,IAAI,CAAC,OACH,MAAM,IAAIY,uBAAAA,cAAc,KAAK,EAAE,SAAS,kBAAkB,QAAQ,aAAa,CAAC;GAKlF,OAAO;IAAE,GAAG;IAAO,QAAA,GAAOI,qBAAAA,aAAAA,CAAa,MAAM,KAAK;GAAE;EACtD,SAAS,OAAO;GACd,OAAOb,8BAAAA,YAAY,OAAO,qBAAqB;EACjD;CACF;AACF,CAAC;;AAGD,MAAa,wBAAqCN,sBAAAA,YAAY;CAC5D,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBgB,qBAAAA;CACjB,gBAAgBI,qBAAAA;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,eAAe;CACtB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,cAAc;EACtC,IAAI;GAEF,MAAM,QAAQ,OAAM,MADajB,6CAAAA,sBAAsB,MAAM,EAAA,CACtB,cAAc,EAAE,QAAQ,CAAC;GAEhE,IAAI,CAAC,OACH,MAAM,IAAIY,uBAAAA,cAAc,KAAK,EAAE,SAAS,kBAAkB,QAAQ,aAAa,CAAC;GAGlF,OAAO;EACT,SAAS,OAAO;GACd,OAAOT,8BAAAA,YAAY,OAAO,iCAAiC;EAC7D;CACF;AACF,CAAC;;AAGD,MAAa,iBAA8BN,sBAAAA,YAAY;CACrD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBqB,qBAAAA;CACjB,gBAAgBC,qBAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,eAAe;CACtB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,SAAS,aAAa;EAC9C,IAAI;GAEF,MAAM,OAAO,OAAM,MADcnB,6CAAAA,sBAAsB,MAAM,EAAA,CACvB,QAAQ;IAAE;IAAS;GAAO,CAAC;GAEjE,IAAI,CAAC,MACH,MAAM,IAAIY,uBAAAA,cAAc,KAAK,EAAE,SAAS,iBAAiB,CAAC;GAG5D,OAAO;EACT,SAAS,OAAO;GACd,OAAOT,8BAAAA,YAAY,OAAO,oBAAoB;EAChD;CACF;AACF,CAAC;;AAGD,MAAa,6BAA6BN,sBAAAA,YAAY;CACpD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBgB,qBAAAA;CACjB,gBAAgBrB,OAAAA,EAAE,OAAO;EACvB,OAAOA,OAAAA,EAAE,MAAMA,OAAAA,EAAE,QAAQ,CAAC;EAC1B,iBAAiBA,OAAAA,EAAE,OAAO,CAAC,CAAC,SAAS;EACrC,WAAWA,OAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS;EAChC,mBAAmBA,OAAAA,EAAE,QAAQ,CAAC,CAAC,SAAS;CAC1C,CAAC;CACD,SAAS;CACT,aAAa;CACb,MAAM,CAAC,eAAe;CACtB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,cAAc;EACtC,IAAI;GAEF,MAAM,QAAQ,OAAM,MADaQ,6CAAAA,sBAAsB,MAAM,EAAA,CACtB,SAAS,EAAE,QAAQ,CAAC;GAE3D,IAAI,CAAC,OACH,MAAM,IAAIY,uBAAAA,cAAc,KAAK,EAAE,SAAS,kBAAkB,QAAQ,aAAa,CAAC;GAIlF,QAAA,GADmBQ,mBAAAA,2BAAAA,CAA2B,MAAM,KACpC;EAClB,SAAS,OAAO;GACd,OAAOjB,8BAAAA,YAAY,OAAO,wCAAwC;EACpE;CACF;AACF,CAAC;;AAGD,MAAa,sBAAmCN,sBAAAA,YAAY;CAC1D,QAAQ;CACR,MAAM;CACN,cAAc;CACd,YAAYwB,sDAAAA,4BAA4B,KAAK,EAAE,UAAU,KAAK,CAAC;CAC/D,gBAAgBC,sDAAAA;CAChB,aAAa;CACb,SAAS;CACT,aACE;CACF,MAAM,CAAC,eAAe;CACtB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,eAAe;EACvC,IAAI;GAEF,OAAM,MAD2BtB,6CAAAA,sBAAsB,MAAM,EAAA,CACpC,kBAAkB,EAAE,SAAS,CAAC;GACvD,OAAO,EAAE,SAAS,KAAc;EAClC,SAAS,OAAO;GACd,OAAOG,8BAAAA,YAAY,OAAO,uBAAuB;EACnD;CACF;AACF,CAAC;;AAGD,MAAa,qBAAqBN,sBAAAA,YAAY;CAC5C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,YAAY0B,qBAAAA;CACZ,gBAAgBC,qBAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,eAAe;CACtB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,GAAG,aAAa;EACxC,IAAI;GAEF,6CAAA,WAAW,MAAM;GAEjB,MAAM,EAAE,YAAY,YAAY;GAEhC,MAAM,SAAS,OAAO,cAAc,UAAU;GAC9C,IAAI,CAAC,QACH,MAAM,IAAIZ,uBAAAA,cAAc,KAAK,EAAE,SAAS,WAAW,WAAW,aAAa,CAAC;GAG9E,CAAA,GAAA,+BAAA,YAAA,CAAY;IACV,UAAU,OAAO,OAAO,MAAM,OAAO,OAAO;IAC5C;IACA;GACF,CAAC,CAAC,CAAC,OAAM,UAAS;IAEhB,OADsB,UACjB,CAAC,EAAE,MAAM,oCAAoC,MAAM,WAAW,KAAK;GAC1E,CAAC;GAED,OAAO;IACL,QAAQ;IACR,SAAS,uBAAuB,QAAQ,OAAO,GAAG,QAAQ,WAAW,IAAI,UAAU;IACnF,YAAY,QAAQ;GACtB;EACF,SAAS,OAAO;GACd,OAAOT,8BAAAA,YAAY,OAAO,gCAAgC;EAC5D;CACF;AACF,CAAC;AAED,MAAa,4BAA4BN,sBAAAA,YAAY;CACnD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiB4B,qBAAAA;CAEjB,kBAAkBf,sBAAAA,yBAAyBR,yDAAAA,qBAAqB,QAAQ,CAAC;CACzE,gBAAgBwB,mBAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,eAAe;CACtB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,GAAG,aAAa;EACxC,IAAI;GACF,MAAM,aAAa3B,sBAAAA,WAAWG,yDAAAA,sBAAsB,MAAM;GAC1D,MAAM,UAAUH,sBAAAA,WAAW0B,qBAAAA,eAAe,MAAM;GAIhD,OAAO,OAAM,MAFaE,6CAAAA,eAAe,MAAM,EAAA,CAEtB,iBAAiB;IACxC,GAAG;IACH;GACF,CAAC;EACH,SAAS,OAAO;GACd,OAAOxB,8BAAAA,YAAY,OAAO,8BAA8B;EAC1D;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"observability-CFKSxaff.cjs","names":["z","dateRangeSchema","tracesFilterSchema","createObservabilityListQuerySchema","tracesOrderBySchema","createRoute","listTracesResponseSchema","pickParams","getObservabilityStore","OBSERVABILITY_LIST_ENDPOINTS","paginationArgsSchema","handleError","listTracesLightResponseSchema","store","branchesFilterSchema","branchesOrderBySchema","listBranchesResponseSchema","getBranchArgsSchema","wrapSchemaForQueryParams","getBranchResponseSchema","HTTPException","getTraceArgsSchema","getTraceResponseSchema","traceSpanSchema","toTraceSpans","getTraceLightResponseSchema","getSpanArgsSchema","getSpanResponseSchema","extractTrajectoryFromTrace","batchDeleteTracesArgsSchema","batchDeleteTracesResponseSchema","scoreTracesRequestSchema","scoreTracesResponseSchema","spanIdsSchema","listScoresResponseSchema","getScoresStore"],"sources":["../src/server/handlers/observability.ts"],"sourcesContent":["import { extractTrajectoryFromTrace, listScoresResponseSchema } from '@mastra/core/evals';\nimport { scoreTraces } from '@mastra/core/evals/scoreTraces';\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 toTraceSpans,\n traceSpanSchema,\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 getScoresStore,\n getStorage,\n OBSERVABILITY_LIST_ENDPOINTS,\n} from './observability-shared';\nimport {\n branchesFilterSchema,\n branchesOrderBySchema,\n listBranchesResponseSchema,\n getBranchArgsSchema,\n getBranchResponseSchema,\n listTracesLightResponseSchema,\n batchDeleteTracesArgsSchema,\n batchDeleteTracesResponseSchema,\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\n/** Filter shape shared by the full and lightweight trace list routes. */\nconst tracesListFilterSchema = tracesFilterSchema.extend({\n ...legacyQueryParamsSchema.shape, // Accept legacy params for backward compatibility\n entityType: z.preprocess(\n value => (value === 'workflow' ? 'workflow_run' : value),\n tracesFilterSchema.shape.entityType,\n ),\n});\n\nconst listTracesQueryParamSchema = createObservabilityListQuerySchema(tracesListFilterSchema, tracesOrderBySchema);\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: listTracesQueryParamSchema,\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:\n 'Returns a paginated list of lightweight 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 const transformedParams = transformLegacyParams(params);\n\n const filters = pickParams(tracesFilterSchema, transformedParams);\n const observabilityStore = await getObservabilityStore(mastra);\n\n // Every current store answers `listTracesLight` — stores without a dedicated\n // implementation inherit the base class's projection fallback. This guard is\n // only for an older `@mastra/core` whose base class predates the method, where\n // calling it would throw `TypeError: ... is not a function`; there we fall back\n // to `listTraces` so consumers still get a response.\n const store = observabilityStore as { listTracesLight?: unknown };\n const supportsLight = typeof store.listTracesLight === 'function';\n\n if (mode === 'delta') {\n assertObservabilityDeltaSupported(observabilityStore, OBSERVABILITY_LIST_ENDPOINTS.traces);\n const deltaArgs = {\n mode,\n filters,\n after: typeof after === 'string' ? after : undefined,\n limit,\n } as const;\n return supportsLight\n ? await observabilityStore.listTracesLight(deltaArgs)\n : await observabilityStore.listTraces(deltaArgs);\n }\n\n const pagination = pickParams(paginationArgsSchema, transformedParams);\n const orderBy = pickParams(tracesOrderBySchema, transformedParams);\n\n if (!supportsLight) {\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.extend({ spans: z.array(traceSpanSchema) }),\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 // Stored SpanRecords carry no status field; derive it from error/endedAt so\n // trace-detail spans match the status shown in trace list rows.\n return { ...trace, spans: toTraceSpans(trace.spans) };\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/delete - batch delete traces with cross-signal cascade. */\nexport const DELETE_TRACES_ROUTE: ServerRoute = createRoute({\n method: 'POST',\n path: '/observability/traces/delete',\n responseType: 'json',\n bodySchema: batchDeleteTracesArgsSchema.pick({ traceIds: true }),\n responseSchema: batchDeleteTracesResponseSchema,\n maxBodySize: 256 * 1024,\n summary: 'Delete traces',\n description:\n 'Deletes traces by ID, cascading to all associated data: spans, trace roots/branches, and signal events (scores, feedback, metrics, logs) that reference the deleted traces. Signals without a trace ID are untouched. Experiment traces are deleted like any other trace. On ClickHouse-backed stores, deletes are lightweight and reads may briefly return deleted rows until the delete is fully applied.',\n tags: ['Observability'],\n requiresAuth: true,\n handler: async ({ mastra, traceIds }) => {\n try {\n const observabilityStore = await getObservabilityStore(mastra);\n await observabilityStore.batchDeleteTraces({ traceIds });\n return { success: true as const };\n } catch (error) {\n return handleError(error, 'Error deleting traces');\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"],"mappings":"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"}
@@ -1,17 +1,17 @@
1
- import { t as HTTPException } from "./http-exception-CyfxZB6W.js";
2
- import { a as wrapSchemaForQueryParams, i as pickParams, n as createRoute } from "./route-builder-CjkWxv4E.js";
3
- import { d as MASTRA_USER_ROLES_KEY, h as isStudioClientTypeHeader, l as MASTRA_USER_KEY } from "./constants-DazK_RZj.js";
1
+ import { t as HTTPException } from "./http-exception-CzaWkxMl.js";
2
+ import { a as wrapSchemaForQueryParams, i as pickParams, n as createRoute } from "./route-builder-BxPrwNog.js";
3
+ import { d as MASTRA_USER_ROLES_KEY, h as isStudioClientTypeHeader, l as MASTRA_USER_KEY } from "./constants-ohUUT3Vg.js";
4
4
  import { handleError } from "./server/handlers/error.js";
5
5
  import { paginationArgsSchema as paginationArgsSchema$1 } from "./server/handlers/observability-list-query-schemas.js";
6
6
  import { NEW_ROUTE_DEFS, NO_OBSERVABILITY_STORAGE_CAPABILITIES, OBSERVABILITY_LIST_ENDPOINTS, OBSERVABILITY_TRACE_QUERY_TENANT_SCOPE_UPGRADE_MESSAGE, assertObservabilityDeltaSupported, assertObservabilitySpanAggregateSupported, assertObservabilitySpanQueryFieldsSupported, assertObservabilitySpanQuerySupported, assertObservabilityThreadQuerySupported, assertObservabilityTraceAggregateSupported, assertObservabilityTraceQueryContextIdsSupported, assertObservabilityTraceQueryDiscoverySupported, assertObservabilityTraceQueryRootDurationSupported, assertObservabilityTraceQueryRootSpanFieldsSupported, assertObservabilityTraceQueryRootSpanValuesSupported, assertObservabilityTraceQuerySupported, assertObservabilityTraceQueryTenantScopeSupported, assertObservabilityTraceQueryTimeToFirstChunkSortSupported, assertObservabilityTraceQueryTimeToFirstChunkSupported, createObservabilityListQuerySchema, getObservabilityStorageCapabilities, getObservabilityStore, isTraceQueryContextIdField, supportsObservabilityTraceAggregate, supportsObservabilityTraceQueryContextIds, supportsObservabilityTraceQueryRootDuration, supportsObservabilityTraceQueryRootSpanField, supportsObservabilityTraceQueryTimeToFirstChunk, supportsSpanAggregateCore, supportsSpanQueryCore, supportsTraceAggregateCore, supportsTraceQueryDiscoveryCore, withDiscoveryFallback } from "./server/handlers/observability-shared.js";
7
- import { l as observabilityStorageCapabilitiesSchema } from "./system-sSSmmt7I.js";
7
+ import { l as observabilityStorageCapabilitiesSchema } from "./system-B8L_G4oo.js";
8
8
  import { prepareAuthorEnrichment } from "./server/handlers/author-enrichment.js";
9
9
  import { getCallerPermissions } from "./server/handlers/authorship.js";
10
10
  import { z } from "zod/v4";
11
11
  import * as coreStorage from "@mastra/core/storage";
12
12
  import { coreFeatures } from "@mastra/core/features";
13
13
  import { generateSignalId } from "@mastra/core/observability";
14
- //#region ../_internal-core/dist/storage/index.js
14
+ // ../_internal-core/dist/storage/index.js
15
15
  /** Types of entities that can produce observability spans. */
16
16
  let EntityType$1 = /* @__PURE__ */ function(EntityType) {
17
17
  /** Agent/Model execution */
@@ -865,16 +865,14 @@ z.object({}).describe("Arguments for getting environments");
865
865
  const getEnvironmentsResponseSchema = z.object({ environments: z.array(z.string()).describe("Distinct environments") });
866
866
  const getTagsArgsSchema = z.object({ entityType: entityTypeField.optional().describe("Optional entity type filter") }).describe("Arguments for getting tags");
867
867
  const getTagsResponseSchema = z.object({ tags: z.array(z.string()).describe("Distinct tags") });
868
- //#endregion
869
- //#region src/server/schemas/feedback.ts
868
+ // src/server/schemas/feedback.ts
870
869
  const listFeedbackResponseSchema = listFeedbackResponseSchema$1.extend({ feedback: z.array(feedbackRecordSchema.extend({ author: z.object({
871
870
  id: z.string(),
872
871
  name: z.string().optional(),
873
872
  email: z.string().optional(),
874
873
  avatarUrl: z.string().optional()
875
874
  }).optional() })) });
876
- //#endregion
877
- //#region src/server/handlers/observability-new-endpoints.ts
875
+ // src/server/handlers/observability-new-endpoints.ts
878
876
  function createNewRoute(def, config) {
879
877
  const { handler, preserveHttpExceptions, isCoreSupported, onUnsupportedCore, ...schemas } = config;
880
878
  return createRoute({
@@ -2083,7 +2081,6 @@ const NEW_ROUTES = {
2083
2081
  GET_TAGS,
2084
2082
  GET_CAPABILITIES
2085
2083
  };
2086
- //#endregion
2087
2084
  export { GET_TRACE_QUERY_VALUES as A, GET_SCORE_AGGREGATE as C, GET_SERVICE_NAMES as D, GET_SCORE_TIME_SERIES as E, NEW_ROUTES as F, QUERY_SPANS as I, QUERY_THREADS as L, LIST_LOGS as M, LIST_METRICS as N, GET_TAGS as O, LIST_SCORES as P, QUERY_TRACES as R, GET_SCORE as S, GET_SCORE_PERCENTILES as T, GET_METRIC_LABEL_KEYS as _, DELETE_FEEDBACK as a, GET_METRIC_PERCENTILES as b, GET_ENTITY_NAMES as c, GET_FEEDBACK_AGGREGATE as d, GET_FEEDBACK_BREAKDOWN as f, GET_METRIC_BREAKDOWN as g, GET_METRIC_AGGREGATE as h, CREATE_SCORE as i, LIST_FEEDBACK as j, GET_TRACE_QUERY_FIELDS as k, GET_ENTITY_TYPES as l, GET_FEEDBACK_TIME_SERIES as m, AGGREGATE_TRACES as n, DELETE_SCORES as o, GET_FEEDBACK_PERCENTILES as p, CREATE_FEEDBACK as r, GET_CAPABILITIES as s, AGGREGATE_SPANS as t, GET_ENVIRONMENTS as u, GET_METRIC_LABEL_VALUES as v, GET_SCORE_BREAKDOWN as w, GET_METRIC_TIME_SERIES as x, GET_METRIC_NAMES as y, UPDATE_FEEDBACK_REVIEW_STATUS as z };
2088
2085
 
2089
- //# sourceMappingURL=observability-new-endpoints-3DlTYf34.js.map
2086
+ //# sourceMappingURL=observability-new-endpoints-B6MRJ5Rb.js.map