@mastra/server 1.67.0 → 1.68.0-alpha.10

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 (471) hide show
  1. package/dist/_types/@internal_core/dist/storage/index.d.ts +3 -3
  2. package/dist/_types/@internal_core/package.json +1 -0
  3. package/dist/_types/@internal_voice/dist/_types/@internal_core/dist/routes/index.d.ts +1 -1
  4. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/checks.d.ts +1 -1
  5. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/compat.d.ts +9 -11
  6. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/deep-partial.d.ts +14 -0
  7. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/errors.d.ts +3 -4
  8. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/external.d.ts +5 -2
  9. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/in-out.d.ts +8 -0
  10. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/index.d.ts +1 -2
  11. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/iso.d.ts +2 -17
  12. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/parse.d.ts +17 -4
  13. package/dist/_types/@internal_voice/dist/_types/zod/v4/classic/schemas.d.ts +68 -19
  14. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/api.d.ts +22 -12
  15. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/checks.d.ts +29 -13
  16. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/compile.d.ts +65 -0
  17. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/core.d.ts +16 -4
  18. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/doc.d.ts +3 -1
  19. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/errors.d.ts +4 -0
  20. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/index.d.ts +3 -0
  21. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/json-schema-generator.d.ts +2 -2
  22. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/json-schema-processors.d.ts +16 -0
  23. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/json-schema.d.ts +2 -1
  24. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/memoizer.d.ts +15 -0
  25. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/parse.d.ts +14 -11
  26. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/regexes.d.ts +5 -0
  27. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/schemas.d.ts +123 -34
  28. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/to-json-schema.d.ts +45 -5
  29. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/util.d.ts +79 -1
  30. package/dist/_types/@internal_voice/dist/_types/zod/v4/core/versions.d.ts +1 -1
  31. package/dist/_types/@internal_voice/dist/_types/zod/v4/index.d.cts +2 -2
  32. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/bn.d.ts +4 -0
  33. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/ckb.d.ts +4 -0
  34. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/gu.d.ts +4 -0
  35. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/hi.d.ts +4 -0
  36. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/index.d.ts +11 -0
  37. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/kn.d.ts +4 -0
  38. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/ne.d.ts +4 -0
  39. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/nn.d.ts +4 -0
  40. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/pt-BR.d.ts +4 -0
  41. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/sk.d.ts +4 -0
  42. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/tg.d.ts +4 -0
  43. package/dist/_types/@internal_voice/dist/_types/zod/v4/locales/tk.d.ts +4 -0
  44. package/dist/_types/@internal_voice/dist/routes/index.d.ts +15 -15
  45. package/dist/_types/@internal_voice/package.json +1 -0
  46. package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-sdk-v4/dist/index.d.ts +1 -1
  47. package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-sdk-v5/dist/index.d.ts +1 -1
  48. package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-v6/dist/index.d.ts +1 -1
  49. package/dist/_types/@mastra_schema-compat/dist/provider-compats/anthropic.d.ts +2 -2
  50. package/dist/_types/@mastra_schema-compat/dist/provider-compats/deepseek.d.ts +2 -2
  51. package/dist/_types/@mastra_schema-compat/dist/provider-compats/google.d.ts +1 -1
  52. package/dist/_types/@mastra_schema-compat/dist/provider-compats/meta.d.ts +2 -2
  53. package/dist/_types/@mastra_schema-compat/dist/provider-compats/openai.d.ts +1 -1
  54. package/dist/_types/@mastra_schema-compat/dist/schema.types.d.ts +4 -4
  55. package/dist/_types/@mastra_schema-compat/dist/standard-schema/standard-schema.d.ts +2 -2
  56. package/dist/_types/@mastra_schema-compat/dist/standard-schema/standard-schema.types.d.ts +1 -1
  57. package/dist/_types/@mastra_schema-compat/dist/zod-to-json.d.ts +1 -1
  58. package/dist/_types/@mastra_schema-compat/package.json +1 -0
  59. package/dist/{a2a-8C4O2dVJ.js → a2a-BS0gTQk3.js} +94 -14
  60. package/dist/a2a-BS0gTQk3.js.map +1 -0
  61. package/dist/{a2a-MPoM5lzS.cjs → a2a-CBl-c-lm.cjs} +105 -13
  62. package/dist/a2a-CBl-c-lm.cjs.map +1 -0
  63. package/dist/{a2a-DQ8GeDz4.cjs → a2a-Cr-pxMJm.cjs} +151 -47
  64. package/dist/a2a-Cr-pxMJm.cjs.map +1 -0
  65. package/dist/{a2a-DUBjstWk.js → a2a-D2AP2MGB.js} +151 -47
  66. package/dist/a2a-D2AP2MGB.js.map +1 -0
  67. package/dist/{agent-versions-NGajm4l5.js → agent-versions-CiV6tT74.js} +2 -2
  68. package/dist/{agent-versions-NGajm4l5.js.map → agent-versions-CiV6tT74.js.map} +1 -1
  69. package/dist/{agent-versions-D99q4Gos.cjs → agent-versions-D2QdSbFn.cjs} +2 -2
  70. package/dist/{agent-versions-D99q4Gos.cjs.map → agent-versions-D2QdSbFn.cjs.map} +1 -1
  71. package/dist/{agents-CZE_MSQE.cjs → agents-BN8QmLxk.cjs} +25 -7
  72. package/dist/agents-BN8QmLxk.cjs.map +1 -0
  73. package/dist/{agents-ssoMemNs.js → agents-DCYUhwHn.js} +25 -7
  74. package/dist/agents-DCYUhwHn.js.map +1 -0
  75. package/dist/{api-schema-manifest-CeREx1dB.js → api-schema-manifest-BUEINaAC.js} +3 -3
  76. package/dist/{api-schema-manifest-CeREx1dB.js.map → api-schema-manifest-BUEINaAC.js.map} +1 -1
  77. package/dist/{api-schema-manifest-DzWP4nLu.cjs → api-schema-manifest-Byk_S1Xu.cjs} +3 -3
  78. package/dist/{api-schema-manifest-DzWP4nLu.cjs.map → api-schema-manifest-Byk_S1Xu.cjs.map} +1 -1
  79. package/dist/{background-tasks-kXPoCvgG.js → background-tasks-D7X7M0TU.js} +2 -2
  80. package/dist/{background-tasks-kXPoCvgG.js.map → background-tasks-D7X7M0TU.js.map} +1 -1
  81. package/dist/{background-tasks-CFJ0vNgp.cjs → background-tasks-NjqWJcUw.cjs} +2 -2
  82. package/dist/{background-tasks-CFJ0vNgp.cjs.map → background-tasks-NjqWJcUw.cjs.map} +1 -1
  83. package/dist/{builder-registry-r71f11_E.cjs → builder-registry-BtwztV7s.cjs} +4 -4
  84. package/dist/{builder-registry-r71f11_E.cjs.map → builder-registry-BtwztV7s.cjs.map} +1 -1
  85. package/dist/{builder-registry-DI3Ysclf.js → builder-registry-CZW_Z4DV.js} +4 -4
  86. package/dist/{builder-registry-DI3Ysclf.js.map → builder-registry-CZW_Z4DV.js.map} +1 -1
  87. package/dist/{channels-CGDo0Prv.cjs → channels-pCkdvG0z.cjs} +2 -2
  88. package/dist/{channels-CGDo0Prv.cjs.map → channels-pCkdvG0z.cjs.map} +1 -1
  89. package/dist/{channels-B_K1oJ7S.js → channels-uSO1ySnT.js} +2 -2
  90. package/dist/{channels-B_K1oJ7S.js.map → channels-uSO1ySnT.js.map} +1 -1
  91. package/dist/{conversations-b3vJRHF3.js → conversations-BQSekCFg.js} +2 -2
  92. package/dist/{conversations-b3vJRHF3.js.map → conversations-BQSekCFg.js.map} +1 -1
  93. package/dist/{conversations-DstENx2x.cjs → conversations-X5vg7ZxV.cjs} +2 -2
  94. package/dist/{conversations-DstENx2x.cjs.map → conversations-X5vg7ZxV.cjs.map} +1 -1
  95. package/dist/{datasets-zlaJQ9D0.cjs → datasets-DOZwJ68z.cjs} +5 -1
  96. package/dist/datasets-DOZwJ68z.cjs.map +1 -0
  97. package/dist/{datasets-CCC2huR0.js → datasets-DfMv5GX5.js} +5 -1
  98. package/dist/datasets-DfMv5GX5.js.map +1 -0
  99. package/dist/{dist-D6F_HzDS.cjs → dist-B0uCWZUF.cjs} +4 -4
  100. package/dist/{dist-D6F_HzDS.cjs.map → dist-B0uCWZUF.cjs.map} +1 -1
  101. package/dist/{dist-C9yKk16g.cjs → dist-BQ0VOLA9.cjs} +3 -3
  102. package/dist/{dist-C9yKk16g.cjs.map → dist-BQ0VOLA9.cjs.map} +1 -1
  103. package/dist/{dist-k6UeNFHu.js → dist-Bl3UrwJs.js} +3 -3
  104. package/dist/{dist-k6UeNFHu.js.map → dist-Bl3UrwJs.js.map} +1 -1
  105. package/dist/{dist-B6qmZNb0.cjs → dist-C2u5Kqxy.cjs} +3 -3
  106. package/dist/{dist-B6qmZNb0.cjs.map → dist-C2u5Kqxy.cjs.map} +1 -1
  107. package/dist/{dist-BKxbtiJd.cjs → dist-CF1rK7oZ.cjs} +874 -192
  108. package/dist/dist-CF1rK7oZ.cjs.map +1 -0
  109. package/dist/{dist-C76EmJsT.cjs → dist-CkFmsB2E.cjs} +3 -3
  110. package/dist/{dist-C76EmJsT.cjs.map → dist-CkFmsB2E.cjs.map} +1 -1
  111. package/dist/{dist-Da8AufS5.js → dist-D1rb-p2Y.js} +4 -4
  112. package/dist/{dist-Da8AufS5.js.map → dist-D1rb-p2Y.js.map} +1 -1
  113. package/dist/{dist-Chgswf37.js → dist-DD1mFVAc.js} +3 -3
  114. package/dist/{dist-Chgswf37.js.map → dist-DD1mFVAc.js.map} +1 -1
  115. package/dist/{dist-Wjq6PT76.js → dist-DJ7t3yBx.js} +3 -3
  116. package/dist/{dist-Wjq6PT76.js.map → dist-DJ7t3yBx.js.map} +1 -1
  117. package/dist/{dist-CLQt62Pi.cjs → dist-DO5NHh-t.cjs} +3 -3
  118. package/dist/{dist-CLQt62Pi.cjs.map → dist-DO5NHh-t.cjs.map} +1 -1
  119. package/dist/{dist-XnA2Lowr.js → dist-DiEECrlS.js} +3 -3
  120. package/dist/{dist-XnA2Lowr.js.map → dist-DiEECrlS.js.map} +1 -1
  121. package/dist/{dist-DoTDZ7wF.js → dist-Dx2Qp8Rj.js} +3 -3
  122. package/dist/{dist-DoTDZ7wF.js.map → dist-Dx2Qp8Rj.js.map} +1 -1
  123. package/dist/{dist-DOpm-tIl.js → dist-dfcZRhcQ.js} +871 -189
  124. package/dist/dist-dfcZRhcQ.js.map +1 -0
  125. package/dist/{dist-DpM-6UBk.cjs → dist-vM0zJcP5.cjs} +3 -3
  126. package/dist/{dist-DpM-6UBk.cjs.map → dist-vM0zJcP5.cjs.map} +1 -1
  127. package/dist/docs/SKILL.md +2 -2
  128. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  129. package/dist/docs/references/docs-connections-a2a.md +4 -3
  130. package/dist/docs/references/docs-server-custom-adapters.md +43 -0
  131. package/dist/docs/references/reference-observability-tracing-trace-query.md +219 -46
  132. package/dist/{dynamic-workflows-DeUG3lA2.cjs → dynamic-workflows-BiX72mRA.cjs} +2 -2
  133. package/dist/{dynamic-workflows-DeUG3lA2.cjs.map → dynamic-workflows-BiX72mRA.cjs.map} +1 -1
  134. package/dist/{dynamic-workflows-C3DXgmSP.js → dynamic-workflows-CVrxi8y7.js} +2 -2
  135. package/dist/{dynamic-workflows-C3DXgmSP.js.map → dynamic-workflows-CVrxi8y7.js.map} +1 -1
  136. package/dist/{editor-builder-D6P_hq7c.js → editor-builder-Blheim55.js} +2 -2
  137. package/dist/{editor-builder-D6P_hq7c.js.map → editor-builder-Blheim55.js.map} +1 -1
  138. package/dist/{editor-builder-BI5yHrbT.js → editor-builder-D287Qf1k.js} +3 -3
  139. package/dist/{editor-builder-BI5yHrbT.js.map → editor-builder-D287Qf1k.js.map} +1 -1
  140. package/dist/{editor-builder-CKAeON9r.cjs → editor-builder-D85orYra.cjs} +3 -3
  141. package/dist/{editor-builder-CKAeON9r.cjs.map → editor-builder-D85orYra.cjs.map} +1 -1
  142. package/dist/{editor-builder-BHf-g7q9.cjs → editor-builder-DhUUVbQ-.cjs} +2 -2
  143. package/dist/{editor-builder-BHf-g7q9.cjs.map → editor-builder-DhUUVbQ-.cjs.map} +1 -1
  144. package/dist/{mcp-BPmrXX9r.cjs → mcp-CdZzch5c.cjs} +11 -3
  145. package/dist/mcp-CdZzch5c.cjs.map +1 -0
  146. package/dist/{mcp-B_OMG3Ol.js → mcp-ea7f_n2D.js} +11 -3
  147. package/dist/mcp-ea7f_n2D.js.map +1 -0
  148. package/dist/{memory-BvKPIpyH.js → memory-CZT-ptes.js} +9 -3
  149. package/dist/memory-CZT-ptes.js.map +1 -0
  150. package/dist/{memory-CDYtqQnE.cjs → memory-D2TG_RVj.cjs} +9 -3
  151. package/dist/memory-D2TG_RVj.cjs.map +1 -0
  152. package/dist/message-history-CkUYxSaS.cjs +22 -0
  153. package/dist/message-history-CkUYxSaS.cjs.map +1 -0
  154. package/dist/message-history-_kbQlA4r.js +11 -0
  155. package/dist/message-history-_kbQlA4r.js.map +1 -0
  156. package/dist/{observability-new-endpoints-I2OxQzfY.cjs → observability-new-endpoints-BUC8-mAb.cjs} +230 -6
  157. package/dist/observability-new-endpoints-BUC8-mAb.cjs.map +1 -0
  158. package/dist/{observability-new-endpoints-pIq_OWa8.js → observability-new-endpoints-CZyppvEy.js} +214 -8
  159. package/dist/observability-new-endpoints-CZyppvEy.js.map +1 -0
  160. package/dist/{route-builder-DupY8fkI.cjs → route-builder-CbCx1upL.cjs} +5 -5
  161. package/dist/{route-builder-DupY8fkI.cjs.map → route-builder-CbCx1upL.cjs.map} +1 -1
  162. package/dist/{route-builder-BukcT_Kp.js → route-builder-DDOjv0sM.js} +3 -3
  163. package/dist/{route-builder-BukcT_Kp.js.map → route-builder-DDOjv0sM.js.map} +1 -1
  164. package/dist/{routes-PJ3eKHbs.cjs → routes-BGhq6AWK.cjs} +14 -11
  165. package/dist/routes-BGhq6AWK.cjs.map +1 -0
  166. package/dist/{routes-BJZtqLVx.js → routes-Bakqf-F5.js} +14 -11
  167. package/dist/routes-Bakqf-F5.js.map +1 -0
  168. package/dist/{schedules-DaEv0Usj.cjs → schedules-ByXP9Fgm.cjs} +15 -9
  169. package/dist/schedules-ByXP9Fgm.cjs.map +1 -0
  170. package/dist/{schedules-BzymFGR_.js → schedules-Cy6FhkZX.js} +15 -9
  171. package/dist/schedules-Cy6FhkZX.js.map +1 -0
  172. package/dist/{schema-D_ikovK6-DQrOVw5N.cjs → schema-BwlBcZRB-BLwYP0BY.cjs} +6 -6
  173. package/dist/{schema-D_ikovK6-DQrOVw5N.cjs.map → schema-BwlBcZRB-BLwYP0BY.cjs.map} +1 -1
  174. package/dist/{schema-D_ikovK6-BzTeMhWf.js → schema-BwlBcZRB-DUSSQ9TD.js} +6 -6
  175. package/dist/{schema-D_ikovK6-BzTeMhWf.js.map → schema-BwlBcZRB-DUSSQ9TD.js.map} +1 -1
  176. package/dist/schema-DM4T8wfR.cjs +1 -0
  177. package/dist/schema-Fa9iirVJ.js +2 -0
  178. package/dist/{scorer-versions-B6U7batJ.cjs → scorer-versions-DAsYq5b3.cjs} +2 -2
  179. package/dist/{scorer-versions-B6U7batJ.cjs.map → scorer-versions-DAsYq5b3.cjs.map} +1 -1
  180. package/dist/{scorer-versions-Dh2iaz4Y.js → scorer-versions-VpbcaDi8.js} +2 -2
  181. package/dist/{scorer-versions-Dh2iaz4Y.js.map → scorer-versions-VpbcaDi8.js.map} +1 -1
  182. package/dist/server/a2a/agent-card-signing.d.ts +8 -4
  183. package/dist/server/a2a/agent-card-signing.d.ts.map +1 -1
  184. package/dist/server/a2a/agent-card-v1.d.ts +6 -0
  185. package/dist/server/a2a/agent-card-v1.d.ts.map +1 -0
  186. package/dist/server/handlers/a2a.cjs +1 -1
  187. package/dist/server/handlers/a2a.d.ts +205 -61
  188. package/dist/server/handlers/a2a.d.ts.map +1 -1
  189. package/dist/server/handlers/a2a.js +1 -1
  190. package/dist/server/handlers/agent-builder.cjs +4 -4
  191. package/dist/server/handlers/agent-builder.d.ts +64 -64
  192. package/dist/server/handlers/agent-builder.js +4 -4
  193. package/dist/server/handlers/agent-controller.cjs +4 -5
  194. package/dist/server/handlers/agent-controller.cjs.map +1 -1
  195. package/dist/server/handlers/agent-controller.d.ts +145 -145
  196. package/dist/server/handlers/agent-controller.d.ts.map +1 -1
  197. package/dist/server/handlers/agent-controller.js +4 -5
  198. package/dist/server/handlers/agent-controller.js.map +1 -1
  199. package/dist/server/handlers/agent-versions.cjs +3 -3
  200. package/dist/server/handlers/agent-versions.d.ts +136 -40
  201. package/dist/server/handlers/agent-versions.d.ts.map +1 -1
  202. package/dist/server/handlers/agent-versions.js +3 -3
  203. package/dist/server/handlers/agents.cjs +11 -10
  204. package/dist/server/handlers/agents.cjs.map +1 -1
  205. package/dist/server/handlers/agents.d.ts +238 -152
  206. package/dist/server/handlers/agents.d.ts.map +1 -1
  207. package/dist/server/handlers/agents.js +10 -9
  208. package/dist/server/handlers/agents.js.map +1 -1
  209. package/dist/server/handlers/auth.cjs +1 -1
  210. package/dist/server/handlers/auth.d.ts +80 -80
  211. package/dist/server/handlers/auth.js +1 -1
  212. package/dist/server/handlers/background-tasks.cjs +1 -1
  213. package/dist/server/handlers/background-tasks.d.ts +12 -12
  214. package/dist/server/handlers/background-tasks.js +1 -1
  215. package/dist/server/handlers/builder-registry.cjs +1 -1
  216. package/dist/server/handlers/builder-registry.d.ts +20 -20
  217. package/dist/server/handlers/builder-registry.js +1 -1
  218. package/dist/server/handlers/channels.cjs +1 -1
  219. package/dist/server/handlers/channels.d.ts +16 -16
  220. package/dist/server/handlers/channels.js +1 -1
  221. package/dist/server/handlers/conversations.cjs +2 -2
  222. package/dist/server/handlers/conversations.d.ts +16 -16
  223. package/dist/server/handlers/conversations.js +2 -2
  224. package/dist/server/handlers/datasets.cjs +4 -4
  225. package/dist/server/handlers/datasets.cjs.map +1 -1
  226. package/dist/server/handlers/datasets.d.ts +150 -142
  227. package/dist/server/handlers/datasets.d.ts.map +1 -1
  228. package/dist/server/handlers/datasets.js +4 -4
  229. package/dist/server/handlers/datasets.js.map +1 -1
  230. package/dist/server/handlers/dynamic-workflows.cjs +1 -1
  231. package/dist/server/handlers/dynamic-workflows.d.ts +76 -76
  232. package/dist/server/handlers/dynamic-workflows.js +1 -1
  233. package/dist/server/handlers/editor-builder.cjs +1 -1
  234. package/dist/server/handlers/editor-builder.d.ts +12 -12
  235. package/dist/server/handlers/editor-builder.js +1 -1
  236. package/dist/server/handlers/favorites-enrichment.cjs +1 -1
  237. package/dist/server/handlers/favorites-enrichment.js +1 -1
  238. package/dist/server/handlers/logs.cjs +1 -1
  239. package/dist/server/handlers/logs.d.ts +12 -12
  240. package/dist/server/handlers/logs.js +1 -1
  241. package/dist/server/handlers/mcp-client-versions.cjs +2 -2
  242. package/dist/server/handlers/mcp-client-versions.d.ts +28 -28
  243. package/dist/server/handlers/mcp-client-versions.js +2 -2
  244. package/dist/server/handlers/mcp.cjs +34 -3
  245. package/dist/server/handlers/mcp.cjs.map +1 -1
  246. package/dist/server/handlers/mcp.d.ts +55 -42
  247. package/dist/server/handlers/mcp.d.ts.map +1 -1
  248. package/dist/server/handlers/mcp.js +34 -3
  249. package/dist/server/handlers/mcp.js.map +1 -1
  250. package/dist/server/handlers/memory.cjs +3 -4
  251. package/dist/server/handlers/memory.cjs.map +1 -1
  252. package/dist/server/handlers/memory.d.ts +176 -152
  253. package/dist/server/handlers/memory.d.ts.map +1 -1
  254. package/dist/server/handlers/memory.js +3 -4
  255. package/dist/server/handlers/memory.js.map +1 -1
  256. package/dist/server/handlers/observability-new-endpoints.cjs +4 -1
  257. package/dist/server/handlers/observability-new-endpoints.d.ts +974 -518
  258. package/dist/server/handlers/observability-new-endpoints.d.ts.map +1 -1
  259. package/dist/server/handlers/observability-new-endpoints.js +2 -2
  260. package/dist/server/handlers/observability-shared.cjs +41 -2
  261. package/dist/server/handlers/observability-shared.cjs.map +1 -1
  262. package/dist/server/handlers/observability-shared.d.ts +24 -0
  263. package/dist/server/handlers/observability-shared.d.ts.map +1 -1
  264. package/dist/server/handlers/observability-shared.js +37 -2
  265. package/dist/server/handlers/observability-shared.js.map +1 -1
  266. package/dist/server/handlers/observability.cjs +8 -2
  267. package/dist/server/handlers/observability.cjs.map +1 -1
  268. package/dist/server/handlers/observability.d.ts +33 -27
  269. package/dist/server/handlers/observability.d.ts.map +1 -1
  270. package/dist/server/handlers/observability.js +6 -3
  271. package/dist/server/handlers/observability.js.map +1 -1
  272. package/dist/server/handlers/plans.cjs +2 -2
  273. package/dist/server/handlers/plans.d.ts +4 -4
  274. package/dist/server/handlers/plans.js +2 -2
  275. package/dist/server/handlers/processor-providers.cjs +1 -1
  276. package/dist/server/handlers/processor-providers.d.ts +8 -8
  277. package/dist/server/handlers/processor-providers.js +1 -1
  278. package/dist/server/handlers/processors.cjs +1 -1
  279. package/dist/server/handlers/processors.d.ts +12 -12
  280. package/dist/server/handlers/processors.js +1 -1
  281. package/dist/server/handlers/prompt-block-versions.cjs +2 -2
  282. package/dist/server/handlers/prompt-block-versions.d.ts +28 -28
  283. package/dist/server/handlers/prompt-block-versions.js +2 -2
  284. package/dist/server/handlers/responses.cjs +1 -1
  285. package/dist/server/handlers/responses.d.ts +23 -23
  286. package/dist/server/handlers/responses.js +1 -1
  287. package/dist/server/handlers/schedules.cjs +1 -1
  288. package/dist/server/handlers/schedules.d.ts +52 -36
  289. package/dist/server/handlers/schedules.d.ts.map +1 -1
  290. package/dist/server/handlers/schedules.js +1 -1
  291. package/dist/server/handlers/scorer-versions.cjs +3 -3
  292. package/dist/server/handlers/scorer-versions.d.ts +28 -28
  293. package/dist/server/handlers/scorer-versions.js +3 -3
  294. package/dist/server/handlers/scores.cjs +1 -1
  295. package/dist/server/handlers/scores.d.ts +24 -24
  296. package/dist/server/handlers/scores.js +1 -1
  297. package/dist/server/handlers/stored-agent-favorites.cjs +4 -4
  298. package/dist/server/handlers/stored-agent-favorites.d.ts +8 -8
  299. package/dist/server/handlers/stored-agent-favorites.js +4 -4
  300. package/dist/server/handlers/stored-agents.cjs +4 -4
  301. package/dist/server/handlers/stored-agents.d.ts +140 -44
  302. package/dist/server/handlers/stored-agents.d.ts.map +1 -1
  303. package/dist/server/handlers/stored-agents.js +4 -4
  304. package/dist/server/handlers/stored-mcp-clients.cjs +2 -2
  305. package/dist/server/handlers/stored-mcp-clients.d.ts +20 -20
  306. package/dist/server/handlers/stored-mcp-clients.js +2 -2
  307. package/dist/server/handlers/stored-prompt-blocks.cjs +2 -2
  308. package/dist/server/handlers/stored-prompt-blocks.d.ts +20 -20
  309. package/dist/server/handlers/stored-prompt-blocks.js +2 -2
  310. package/dist/server/handlers/stored-scorers.cjs +3 -3
  311. package/dist/server/handlers/stored-scorers.d.ts +20 -20
  312. package/dist/server/handlers/stored-scorers.js +3 -3
  313. package/dist/server/handlers/stored-skill-favorites.cjs +3 -3
  314. package/dist/server/handlers/stored-skill-favorites.d.ts +8 -8
  315. package/dist/server/handlers/stored-skill-favorites.js +3 -3
  316. package/dist/server/handlers/stored-skills.cjs +3 -3
  317. package/dist/server/handlers/stored-skills.d.ts +24 -24
  318. package/dist/server/handlers/stored-skills.js +3 -3
  319. package/dist/server/handlers/stored-workspaces.cjs +2 -2
  320. package/dist/server/handlers/stored-workspaces.d.ts +20 -20
  321. package/dist/server/handlers/stored-workspaces.js +2 -2
  322. package/dist/server/handlers/system.cjs +7 -5
  323. package/dist/server/handlers/system.cjs.map +1 -1
  324. package/dist/server/handlers/system.d.ts +10 -8
  325. package/dist/server/handlers/system.d.ts.map +1 -1
  326. package/dist/server/handlers/system.js +7 -5
  327. package/dist/server/handlers/system.js.map +1 -1
  328. package/dist/server/handlers/tool-providers.cjs +1 -1
  329. package/dist/server/handlers/tool-providers.d.ts +52 -52
  330. package/dist/server/handlers/tool-providers.js +1 -1
  331. package/dist/server/handlers/tools.cjs +6 -6
  332. package/dist/server/handlers/tools.d.ts +26 -20
  333. package/dist/server/handlers/tools.d.ts.map +1 -1
  334. package/dist/server/handlers/tools.js +5 -5
  335. package/dist/server/handlers/validate-agent-instructions.cjs +1 -1
  336. package/dist/server/handlers/validate-agent-instructions.js +1 -1
  337. package/dist/server/handlers/vector.cjs +1 -1
  338. package/dist/server/handlers/vector.d.ts +32 -32
  339. package/dist/server/handlers/vector.js +1 -1
  340. package/dist/server/handlers/workflow-builder.cjs +1 -1
  341. package/dist/server/handlers/workflow-builder.d.ts +8 -8
  342. package/dist/server/handlers/workflow-builder.js +1 -1
  343. package/dist/server/handlers/workflows.cjs +3 -3
  344. package/dist/server/handlers/workflows.d.ts +108 -108
  345. package/dist/server/handlers/workflows.js +3 -3
  346. package/dist/server/handlers/workspace.cjs +2 -2
  347. package/dist/server/handlers/workspace.d.ts +172 -172
  348. package/dist/server/handlers/workspace.js +2 -2
  349. package/dist/server/handlers.cjs +2 -2
  350. package/dist/server/handlers.js +2 -2
  351. package/dist/server/schemas/a2a.d.ts +165 -9
  352. package/dist/server/schemas/a2a.d.ts.map +1 -1
  353. package/dist/server/schemas/agent-versions.d.ts +70 -10
  354. package/dist/server/schemas/agent-versions.d.ts.map +1 -1
  355. package/dist/server/schemas/agents.d.ts +49 -1
  356. package/dist/server/schemas/agents.d.ts.map +1 -1
  357. package/dist/server/schemas/datasets.d.ts +8 -4
  358. package/dist/server/schemas/datasets.d.ts.map +1 -1
  359. package/dist/server/schemas/feedback.d.ts +3 -3
  360. package/dist/server/schemas/index.cjs +13 -13
  361. package/dist/server/schemas/index.js +13 -13
  362. package/dist/server/schemas/mcp.d.ts +8 -2
  363. package/dist/server/schemas/mcp.d.ts.map +1 -1
  364. package/dist/server/schemas/memory-config.d.ts +10 -2
  365. package/dist/server/schemas/memory-config.d.ts.map +1 -1
  366. package/dist/server/schemas/memory.d.ts +36 -28
  367. package/dist/server/schemas/memory.d.ts.map +1 -1
  368. package/dist/server/schemas/message-history.d.ts +7 -0
  369. package/dist/server/schemas/message-history.d.ts.map +1 -0
  370. package/dist/server/schemas/schedules.d.ts +9 -3
  371. package/dist/server/schemas/schedules.d.ts.map +1 -1
  372. package/dist/server/schemas/stored-agents.d.ts +140 -20
  373. package/dist/server/schemas/stored-agents.d.ts.map +1 -1
  374. package/dist/server/schemas/system.d.ts +2 -0
  375. package/dist/server/schemas/system.d.ts.map +1 -1
  376. package/dist/server/schemas/workspace.d.ts +6 -6
  377. package/dist/server/schemas/workspace.d.ts.map +1 -1
  378. package/dist/server/server-adapter/api-schema-manifest.d.ts +1 -1
  379. package/dist/server/server-adapter/index.cjs +4 -3
  380. package/dist/server/server-adapter/index.cjs.map +1 -1
  381. package/dist/server/server-adapter/index.d.ts +1 -0
  382. package/dist/server/server-adapter/index.d.ts.map +1 -1
  383. package/dist/server/server-adapter/index.js +4 -4
  384. package/dist/server/server-adapter/index.js.map +1 -1
  385. package/dist/server/server-adapter/openapi-utils.d.ts +1 -1
  386. package/dist/server/server-adapter/routes/a2a.d.ts +193 -59
  387. package/dist/server/server-adapter/routes/a2a.d.ts.map +1 -1
  388. package/dist/server/server-adapter/routes/agent-builder.d.ts +64 -64
  389. package/dist/server/server-adapter/routes/channels.d.ts +16 -16
  390. package/dist/server/server-adapter/routes/conversations.d.ts +19 -19
  391. package/dist/server/server-adapter/routes/datasets.d.ts +150 -142
  392. package/dist/server/server-adapter/routes/datasets.d.ts.map +1 -1
  393. package/dist/server/server-adapter/routes/editor-builder.d.ts +40 -40
  394. package/dist/server/server-adapter/routes/legacy.d.ts +16 -16
  395. package/dist/server/server-adapter/routes/logs.d.ts +12 -12
  396. package/dist/server/server-adapter/routes/mcp.d.ts +54 -42
  397. package/dist/server/server-adapter/routes/mcp.d.ts.map +1 -1
  398. package/dist/server/server-adapter/routes/memory.d.ts +176 -152
  399. package/dist/server/server-adapter/routes/memory.d.ts.map +1 -1
  400. package/dist/server/server-adapter/routes/observability.d.ts +593 -286
  401. package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
  402. package/dist/server/server-adapter/routes/processor-providers.d.ts +8 -8
  403. package/dist/server/server-adapter/routes/processors.d.ts +12 -12
  404. package/dist/server/server-adapter/routes/responses.d.ts +12 -12
  405. package/dist/server/server-adapter/routes/scorers.d.ts +24 -24
  406. package/dist/server/server-adapter/routes/stored-mcp-clients.d.ts +48 -48
  407. package/dist/server/server-adapter/routes/stored-prompt-blocks.d.ts +48 -48
  408. package/dist/server/server-adapter/routes/stored-scorers.d.ts +48 -48
  409. package/dist/server/server-adapter/routes/stored-skills.d.ts +32 -32
  410. package/dist/server/server-adapter/routes/stored-workspaces.d.ts +20 -20
  411. package/dist/server/server-adapter/routes/system.d.ts +10 -8
  412. package/dist/server/server-adapter/routes/system.d.ts.map +1 -1
  413. package/dist/server/server-adapter/routes/tool-providers.d.ts +52 -52
  414. package/dist/server/server-adapter/routes/tools.d.ts +16 -12
  415. package/dist/server/server-adapter/routes/tools.d.ts.map +1 -1
  416. package/dist/server/server-adapter/routes/vectors.d.ts +32 -32
  417. package/dist/server/server-adapter/routes/workflows.d.ts +100 -100
  418. package/dist/server/server-adapter/routes/workspace.d.ts +111 -111
  419. package/dist/{stored-agents-BJMM5f9A.cjs → stored-agents-61cRlWax.cjs} +8 -4
  420. package/dist/stored-agents-61cRlWax.cjs.map +1 -0
  421. package/dist/{stored-agents-AC0najKd.js → stored-agents-CuEn_6cd.js} +8 -4
  422. package/dist/stored-agents-CuEn_6cd.js.map +1 -0
  423. package/dist/{stored-scorers-CWxW1_mY.cjs → stored-scorers-BLj27wz5.cjs} +2 -2
  424. package/dist/{stored-scorers-CWxW1_mY.cjs.map → stored-scorers-BLj27wz5.cjs.map} +1 -1
  425. package/dist/{stored-scorers-B8QVQCCs.js → stored-scorers-D7dAXnFk.js} +2 -2
  426. package/dist/{stored-scorers-B8QVQCCs.js.map → stored-scorers-D7dAXnFk.js.map} +1 -1
  427. package/dist/{system-Cfo5a63a.cjs → system-D85p7-oz.cjs} +3 -2
  428. package/dist/system-D85p7-oz.cjs.map +1 -0
  429. package/dist/{system-DT2JfUun.js → system-DMAG21IT.js} +3 -2
  430. package/dist/system-DMAG21IT.js.map +1 -0
  431. package/dist/{utils-WcR0QSUB.cjs → utils-DbHFc3hG.cjs} +5 -5
  432. package/dist/{utils-WcR0QSUB.cjs.map → utils-DbHFc3hG.cjs.map} +1 -1
  433. package/dist/{utils-Duk4hfT_.js → utils-mRt04Bqa.js} +3 -3
  434. package/dist/{utils-Duk4hfT_.js.map → utils-mRt04Bqa.js.map} +1 -1
  435. package/dist/{workflow-builder-D5dPsrog.cjs → workflow-builder-ZEU0Rafo.cjs} +4 -4
  436. package/dist/{workflow-builder-D5dPsrog.cjs.map → workflow-builder-ZEU0Rafo.cjs.map} +1 -1
  437. package/dist/{workflow-builder-Eape8SyU.js → workflow-builder-fkwRyZUG.js} +4 -4
  438. package/dist/{workflow-builder-Eape8SyU.js.map → workflow-builder-fkwRyZUG.js.map} +1 -1
  439. package/dist/{workspace-Cz9hE2ei.cjs → workspace-BE_j73fm.cjs} +21 -7
  440. package/dist/workspace-BE_j73fm.cjs.map +1 -0
  441. package/dist/{workspace-S5GiJ3Nx.js → workspace-SmQR_sZ4.js} +21 -7
  442. package/dist/workspace-SmQR_sZ4.js.map +1 -0
  443. package/package.json +10 -10
  444. package/dist/a2a-8C4O2dVJ.js.map +0 -1
  445. package/dist/a2a-DQ8GeDz4.cjs.map +0 -1
  446. package/dist/a2a-DUBjstWk.js.map +0 -1
  447. package/dist/a2a-MPoM5lzS.cjs.map +0 -1
  448. package/dist/agents-CZE_MSQE.cjs.map +0 -1
  449. package/dist/agents-ssoMemNs.js.map +0 -1
  450. package/dist/datasets-CCC2huR0.js.map +0 -1
  451. package/dist/datasets-zlaJQ9D0.cjs.map +0 -1
  452. package/dist/dist-BKxbtiJd.cjs.map +0 -1
  453. package/dist/dist-DOpm-tIl.js.map +0 -1
  454. package/dist/mcp-BPmrXX9r.cjs.map +0 -1
  455. package/dist/mcp-B_OMG3Ol.js.map +0 -1
  456. package/dist/memory-BvKPIpyH.js.map +0 -1
  457. package/dist/memory-CDYtqQnE.cjs.map +0 -1
  458. package/dist/observability-new-endpoints-I2OxQzfY.cjs.map +0 -1
  459. package/dist/observability-new-endpoints-pIq_OWa8.js.map +0 -1
  460. package/dist/routes-BJZtqLVx.js.map +0 -1
  461. package/dist/routes-PJ3eKHbs.cjs.map +0 -1
  462. package/dist/schedules-BzymFGR_.js.map +0 -1
  463. package/dist/schedules-DaEv0Usj.cjs.map +0 -1
  464. package/dist/schema-BF_cZG0Y.js +0 -2
  465. package/dist/schema-C7CvwM1d.cjs +0 -1
  466. package/dist/stored-agents-AC0najKd.js.map +0 -1
  467. package/dist/stored-agents-BJMM5f9A.cjs.map +0 -1
  468. package/dist/system-Cfo5a63a.cjs.map +0 -1
  469. package/dist/system-DT2JfUun.js.map +0 -1
  470. package/dist/workspace-Cz9hE2ei.cjs.map +0 -1
  471. package/dist/workspace-S5GiJ3Nx.js.map +0 -1
@@ -4,9 +4,9 @@
4
4
 
5
5
  # Advanced trace queries
6
6
 
7
- Use `POST /api/observability/traces/query` to find completed logical traces that match trace fields and related span or score records. The endpoint returns a fixed lightweight trace projection, or distinct thread IDs when you group by `threadId`.
7
+ Use `queryTraces()` or `POST /api/observability/traces/query` to find completed logical traces that match trace fields and related span, score, or feedback records. Use `queryTraceThreads()` or `POST /api/observability/threads/query` to find thread identities that qualify across multiple eligible traces.
8
8
 
9
- The endpoint uses the same authentication as other observability routes and requires the `observability:read` permission. The configured observability store must support advanced trace queries.
9
+ Both endpoints use the same authentication as other observability routes and require the `observability:read` permission. The configured observability store must support the requested trace-query or thread-query operation.
10
10
 
11
11
  ## Query traces with the client SDK
12
12
 
@@ -37,7 +37,74 @@ const result = await mastraClient.queryTraces({
37
37
 
38
38
  A `some` clause matches when one related record satisfies its complete nested predicate. In this example, `scorerId`, `scorerVersion`, and `score` must match on the same score record. A `none` clause uses anti-existence semantics: it matches when no related record satisfies its complete nested predicate. A trace with no related scores therefore matches `scores.none`.
39
39
 
40
- Span clauses examine the current root span and current child spans. The root `timeRange` applies only to the selected current root's `startedAt`. Related spans and scores can participate even when their own timestamps are outside that range. Related records correlate only through a matching non-null `traceId`.
40
+ Span clauses examine the current root span and current child spans. The root `timeRange` applies only to the selected current root's `startedAt`. Related spans, scores, and feedback can participate even when their own timestamps are outside that range. Related records correlate only through a matching non-null `traceId`.
41
+
42
+ ## Query threads across traces
43
+
44
+ Pass an eligible trace selection and an optional thread predicate to `queryTraceThreads()`:
45
+
46
+ ```typescript
47
+ const result = await mastraClient.queryTraceThreads({
48
+ traces: {
49
+ timeRange: {
50
+ from: '2026-08-01T00:00:00.000Z',
51
+ to: '2026-08-08T00:00:00.000Z',
52
+ },
53
+ where: {
54
+ op: 'eq',
55
+ left: { path: 'environment' },
56
+ right: { literal: 'production' },
57
+ },
58
+ },
59
+ where: {
60
+ op: 'and',
61
+ args: [
62
+ {
63
+ traces: {
64
+ some: {
65
+ scores: {
66
+ some: {
67
+ op: 'lt',
68
+ left: { path: 'score' },
69
+ right: { literal: 0.6 },
70
+ },
71
+ },
72
+ },
73
+ },
74
+ },
75
+ {
76
+ traces: {
77
+ some: {
78
+ feedback: {
79
+ some: {
80
+ op: 'eq',
81
+ left: { path: 'feedbackType' },
82
+ right: { literal: 'clinician-correction' },
83
+ },
84
+ },
85
+ },
86
+ },
87
+ },
88
+ ],
89
+ },
90
+ page: { limit: 25 },
91
+ })
92
+ ```
93
+
94
+ The server applies `traces.timeRange` and `traces.where` first. This produces the complete eligible trace population. It then derives distinct non-null `threadId` values and evaluates the top-level `where` predicate against eligible traces in each thread.
95
+
96
+ One `traces.some` clause requires one eligible trace to satisfy its complete nested trace predicate. Separate `traces.some` clauses are independent, so different traces in the same thread can satisfy them. Nested `spans.some`, `scores.some`, and `feedback.some` clauses still require one related record to satisfy every condition inside that clause.
97
+
98
+ `traces.none: P` uses anti-existence semantics: it matches only when no eligible trace in the thread satisfies `P`. This differs from `traces.some: { feedback: { none: P } }`, which requires at least one eligible trace with no matching feedback record.
99
+
100
+ The response contains identities only:
101
+
102
+ ```json
103
+ {
104
+ "threads": [{ "threadId": "thread-123" }],
105
+ "page": { "next": null }
106
+ }
107
+ ```
41
108
 
42
109
  ## Send an HTTP request
43
110
 
@@ -65,34 +132,143 @@ curl --request POST \
65
132
  }'
66
133
  ```
67
134
 
135
+ ## Discover fields and values
136
+
137
+ Use trace-query discovery to build field and value autocomplete without scanning trace payloads or copying the query grammar into your client. The configured observability store must support `trace-query-discovery`.
138
+
139
+ Call `getTraceQueryFields()` for one predicate scope:
140
+
141
+ ```typescript
142
+ const timeRange = {
143
+ from: '2026-08-01T00:00:00.000Z',
144
+ to: '2026-08-08T00:00:00.000Z',
145
+ }
146
+
147
+ const fields = await mastraClient.getTraceQueryFields({
148
+ timeRange,
149
+ predicateScope: 'trace',
150
+ search: 'region',
151
+ limit: 25,
152
+ })
153
+ ```
154
+
155
+ The response separates canonical fields from observed metadata fields:
156
+
157
+ ```json
158
+ {
159
+ "canonicalFields": [],
160
+ "observedFields": [
161
+ {
162
+ "path": "metadata.region",
163
+ "valueKind": "string",
164
+ "operators": ["eq", "ne", "in", "notIn", "exists", "notExists"],
165
+ "valueSuggestions": true,
166
+ "occurrences": 125
167
+ }
168
+ ],
169
+ "observedFieldsTruncated": false
170
+ }
171
+ ```
172
+
173
+ Canonical fields come from the same registry used to validate trace queries. They don't consume `limit`. The canonical order follows that registry. `observedFields` contains top-level string `metadata.<key>` paths found on qualifying current root spans. These fields are ordered by `occurrences` descending, then by path. Nested metadata, keys containing `.`, empty keys, non-string values, and oversized paths are omitted.
174
+
175
+ `predicateScope` selects the local predicate grammar. It isn't an authorization scope:
176
+
177
+ | `predicateScope` | Example returned path | Query usage |
178
+ | ---------------- | ---------------------------------- | ----------------------------------------- |
179
+ | `trace` | `environment` or `metadata.region` | Root `where` predicate |
180
+ | `spans` | `model` | Inside `spans.some` or `spans.none` |
181
+ | `scores` | `scorerId` | Inside `scores.some` or `scores.none` |
182
+ | `feedback` | `feedbackType` | Inside `feedback.some` or `feedback.none` |
183
+
184
+ A global field picker can request all four scopes in parallel and qualify display labels locally. Every returned path is directly accepted by `queryTraces()` in its matching scope. `metadata` by itself isn't a field. A user interface can offer manual metadata-key entry separately.
185
+
186
+ After a user selects one field with `valueSuggestions: true`, call `getTraceQueryValues()`:
187
+
188
+ ```typescript
189
+ const abortController = new AbortController()
190
+ const suggestions = await mastraClient.getTraceQueryValues(
191
+ {
192
+ timeRange,
193
+ predicateScope: 'trace',
194
+ path: 'metadata.region',
195
+ search: 'west',
196
+ limit: 25,
197
+ },
198
+ { signal: abortController.signal },
199
+ )
200
+ ```
201
+
202
+ ```json
203
+ {
204
+ "values": [
205
+ { "value": "eu-west-1", "count": 82 },
206
+ { "value": "us-west-2", "count": 43 }
207
+ ],
208
+ "valuesTruncated": false
209
+ }
210
+ ```
211
+
212
+ Discovery returns string values only. Missing values, empty strings, and strings larger than 4,096 UTF-8 bytes are omitted. Values are ordered by `count` descending, then by value. Suggestions are advisory: `queryTraces()` continues to accept valid manual literals that discovery doesn't return.
213
+
214
+ Value suggestions are available for these canonical fields:
215
+
216
+ | Scope | Fields |
217
+ | -------- | ----------------------------------------------------------------------------- |
218
+ | Trace | `entityName`, `entityType`, `environment`, `status` |
219
+ | Spans | `name`, `spanType`, `model`, `provider`, `status`, `entityType`, `entityName` |
220
+ | Scores | `scorerId`, `scorerVersion`, `scoreSource` |
221
+ | Feedback | `feedbackType`, `feedbackSource` |
222
+
223
+ Each executable top-level string `metadata.<key>` field also supports value suggestions in the `trace` scope. Identifiers, timestamps, durations, numeric score or feedback values, comments, errors, and version IDs don't. The fields response still includes canonical fields with `valueSuggestions: false`. The values endpoint rejects those paths with `422 TRACE_QUERY_INVALID`.
224
+
225
+ Both discovery requests require a half-open time range of at most 31 days. They use the same current-record semantics as `queryTraces()`: qualifying completed roots satisfy `from <= startedAt < to`, and related values come only from current records joined to those roots by `traceId`. Discovery doesn't accept or apply a draft `where` predicate.
226
+
227
+ `search` defaults to the empty string, is trimmed, and matches case-insensitive literal substrings. Characters such as `%` and `_` have no wildcard meaning. An empty search returns the most frequent results. `limit` defaults to 25 and has a maximum of 100. Both endpoints fetch one extra result to set their truncation flag, but don't provide a cursor. When a flag is `true`, refine `search`. It doesn't imply that a next page is available. No matches return an empty array and `false` truncation.
228
+
229
+ If discovery exceeds its execution timeout, the route returns `504 TRACE_QUERY_EXECUTION_TIMEOUT`. If the backend exceeds a memory or resource budget, it returns `503 TRACE_QUERY_RESOURCE_LIMIT`. Neither failure returns partial suggestions or sets a truncation flag. Truncation only means a complete ranking was cut to the requested response limit.
230
+
231
+ ClickHouse discovery requests default to a 5-second timeout and a 256 MiB per-query memory limit. Configure these with `observability.traceQuery.discovery.timeoutMs` and `observability.traceQuery.discovery.memoryLimitBytes` on `ClickhouseStoreVNext`. Discovery falls back to `observability.traceQuery.timeoutMs` when its timeout isn't configured, without changing ordinary `queryTraces()` execution limits.
232
+
233
+ Both routes require `observability:read` and use the configured observability storage boundary. Don't send organization or project authorization fields in the request. Treat discovered paths, values, and counts as observability data.
234
+
68
235
  ## Request fields
69
236
 
70
- | Field | Required | Description |
71
- | ----------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
72
- | `timeRange` | Yes | Trace start-time boundary. `from` is inclusive, `to` is exclusive, and the range can span at most 31 days. Both values must be ISO timestamps. |
73
- | `where` | No | Recursive trace predicate. Supports scalar conditions and `spans.some`, `spans.none`, `scores.some`, and `scores.none`. |
74
- | `group` | No | Set to `{ by: ['threadId'] }` to return distinct non-null thread IDs. |
75
- | `orderBy` | No | One item ordering ungrouped results by `startedAt` or `endedAt`, in `asc` or `desc` order. Defaults to `startedAt desc`. Not accepted with `group`. |
76
- | `page` | No | `{ limit, after }`. `limit` defaults to 100 and has a maximum of 1000. Pass the opaque `page.next` value as `after`. |
237
+ ### Trace queries
238
+
239
+ | Field | Required | Description |
240
+ | ----------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
241
+ | `timeRange` | Yes | Trace start-time boundary. `from` is inclusive and `to` is exclusive. Both values must be ISO timestamps, `from` must be earlier than `to`, and the range can't exceed 31 days. |
242
+ | `where` | No | Recursive trace predicate. Supports scalar conditions and `spans`, `scores`, and `feedback` `some` or `none` clauses. |
243
+ | `orderBy` | No | One item ordering results by `startedAt` or `endedAt`, in `asc` or `desc` order. Defaults to `startedAt desc`. |
244
+ | `page` | No | `{ limit, after }`. `limit` defaults to 100 and has a maximum of 1000. Pass the opaque `page.next` value as `after`. |
245
+
246
+ ### Thread queries
77
247
 
78
- Unknown fields are rejected. The request can't select a projection, declare joins, or control authorization. Request bodies are limited to 256 KiB.
248
+ | Field | Required | Description |
249
+ | -------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
250
+ | `traces` | Yes | Eligible trace selection containing `timeRange` and an optional trace `where` predicate. |
251
+ | `where` | No | Recursive thread predicate composed with boolean operators and `traces.some` or `traces.none`. Each quantifier contains a complete trace predicate. |
252
+ | `page` | No | `{ limit, after }`. Thread identities always use fixed ordinal `threadId` ascending order. Pass the opaque `page.next` value as `after`. |
253
+
254
+ Unknown fields are rejected. Requests can't select a projection, declare joins, request counts or measures, or control authorization. Request bodies are limited to 256 KiB.
79
255
 
80
256
  ## Query limits
81
257
 
82
258
  The planner rejects a query before storage execution when it exceeds any of these limits:
83
259
 
84
- | Input | Maximum |
85
- | ----------------------------------------- | ----------------- |
86
- | Root `timeRange` | 31 days |
87
- | Predicate nesting depth | 12 levels |
88
- | Predicate nodes | 100 |
89
- | Related `spans` and `scores` clauses | 8 total |
90
- | Values in one `in` or `notIn` set | 100 |
91
- | Comparison literals and membership values | 1,000 total |
92
- | String literal | 4,096 UTF-8 bytes |
93
- | Raw predicate path | 128 UTF-8 bytes |
94
- | `page.limit` | 1,000 |
95
- | HTTP request body | 256 KiB |
260
+ | Input | Maximum |
261
+ | ----------------------------------------------------------- | ----------------- |
262
+ | Trace selection `timeRange` | 31 days |
263
+ | Predicate nesting depth | 12 levels |
264
+ | Predicate nodes | 100 |
265
+ | Related `traces`, `spans`, `scores`, and `feedback` clauses | 8 total |
266
+ | Values in one `in` or `notIn` set | 100 |
267
+ | Comparison literals and membership values | 1,000 total |
268
+ | String literal | 4,096 UTF-8 bytes |
269
+ | Raw predicate path | 128 UTF-8 bytes |
270
+ | `page.limit` | 1,000 |
271
+ | HTTP request body | 256 KiB |
96
272
 
97
273
  Each comparison literal counts as one literal. Each member of an `in` or `notIn` set also counts as one literal, even when the set is within its per-set limit.
98
274
 
@@ -271,7 +447,7 @@ const messageTrace = {
271
447
 
272
448
  The key must name one top-level property. Empty keys and nested paths are rejected. Metadata keys aren't trimmed, so leading and trailing whitespace remains part of the exact key identity. When metadata duplicates a canonical trace field, such as `resourceId`, `threadId`, or `environment`, prefer the canonical field because it uses the dedicated storage column. The `metadata.<key>` form remains available when you specifically need the value from the metadata object. Metadata and canonical values may differ.
273
449
 
274
- Metadata fields aren't available for grouping or field discovery.
450
+ Metadata fields aren't available for grouping. Trace-query discovery returns executable top-level string metadata fields observed in the selected time range.
275
451
 
276
452
  ### Filter by feedback
277
453
 
@@ -336,43 +512,40 @@ An ungrouped query returns only lightweight completed traces:
336
512
  }
337
513
  ```
338
514
 
339
- A grouped query returns distinct non-null thread IDs in ascending order:
515
+ A thread query returns distinct non-null thread IDs in ordinal ascending order:
340
516
 
341
- ```typescript
342
- const result = await mastraClient.queryTraces({
343
- timeRange: {
344
- from: '2026-08-01T00:00:00.000Z',
345
- to: '2026-08-08T00:00:00.000Z',
346
- },
347
- group: { by: ['threadId'] },
348
- })
349
- // { groups: [{ threadId: 'thread-123' }], page: { next: null } }
517
+ ```json
518
+ {
519
+ "threads": [{ "threadId": "thread-123" }],
520
+ "page": { "next": null }
521
+ }
350
522
  ```
351
523
 
352
524
  Related evidence isn't embedded in either response. Use the trace-detail and branch APIs to load spans after selecting a result.
353
525
 
354
526
  ## Pagination and errors
355
527
 
356
- Ordering is deterministic. Ungrouped ordering appends `traceId` ascending as a tie-breaker. Grouped queries always order by `threadId` ascending.
528
+ Ordering is deterministic. Trace ordering appends `traceId` ascending as a tie-breaker. Thread queries always use raw ordinal `threadId` ascending order. Callers can't override it.
357
529
 
358
- Cursors are bound to the accepted normalized query shape and ordering. Reusing a cursor after changing the time range, predicates, grouping, or ordering returns `409`. A malformed cursor returns `400`.
530
+ Cursors are bound to the operation, accepted normalized query, authorization state, and ordering. Reusing a cursor after changing the trace selection, predicates, or ordering returns `409`. Trace and thread cursors aren't interchangeable. A malformed cursor returns `400`.
359
531
 
360
532
  Cursor pagination is deterministic, but it isn't a database snapshot. Traces or replacement signals written between page requests can change later pages.
361
533
 
362
- PostgreSQL and ClickHouse stop an advanced trace query after 15 seconds by default and return `504` when the database timeout is exceeded. Set `traceQueryTimeoutMs` in the store's vNext observability configuration to an integer from 1 through 300,000 milliseconds to change the timeout. DuckDB doesn't currently provide query-scoped timeout or cancellation through its driver wrapper, so this `504` guarantee doesn't apply to DuckDB.
534
+ PostgreSQL and ClickHouse stop advanced trace and thread queries after 15 seconds by default and return `504` when the database timeout is exceeded. Set `traceQueryTimeoutMs` in the store's vNext observability configuration to an integer from 1 through 300,000 milliseconds to change the timeout. DuckDB doesn't currently provide query-scoped timeout or cancellation through its driver wrapper, so this `504` guarantee doesn't apply to DuckDB.
363
535
 
364
- | Status | Meaning |
365
- | ------ | ------------------------------------------------------------------------------------------------------------------------------------- |
366
- | `400` | Malformed JSON or malformed cursor. |
367
- | `409` | The cursor doesn't match the query. |
368
- | `413` | The request body exceeds 256 KiB. |
369
- | `422` | The JSON is well formed, but the request is structurally or semantically invalid. The response includes stable issue codes and paths. |
370
- | `501` | The configured observability store doesn't support advanced trace queries. |
371
- | `504` | A PostgreSQL or ClickHouse query exceeded its configured database execution timeout. |
536
+ | Status | Meaning |
537
+ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
538
+ | `400` | Malformed JSON or malformed cursor. |
539
+ | `409` | The cursor doesn't match the query. |
540
+ | `413` | The request body exceeds 256 KiB. |
541
+ | `422` | The JSON is well formed, but the request is structurally or semantically invalid. The response includes stable issue codes and paths. Discovery validation uses `TRACE_QUERY_INVALID`. |
542
+ | `501` | The installed Core or configured observability store doesn't support the requested operation. Discovery returns `TRACE_QUERY_DISCOVERY_UNSUPPORTED` unless Core provides the discovery contract and the store implements both field and value discovery. |
543
+ | `503` | Discovery exceeded a backend memory or resource budget and returned `TRACE_QUERY_RESOURCE_LIMIT`. |
544
+ | `504` | A PostgreSQL or ClickHouse query exceeded its configured database execution timeout. Discovery returns `TRACE_QUERY_EXECUTION_TIMEOUT`. |
372
545
 
373
546
  ## Limitations
374
547
 
375
- The endpoint returns completed traces only. It doesn't support running traces, custom projections, embedded evidence, summaries, aggregations, grouping by fields other than `threadId`, or conditions over an entire group.
548
+ Both operations consider completed traces only. They don't support running traces, custom projections, embedded evidence, summaries, aggregations, counts, measures, or custom grouping.
376
549
 
377
550
  ## Related
378
551
 
@@ -1,6 +1,6 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-Bd6kNlEP.cjs");
2
2
  const require_http_exception = require("./http-exception-CKDHupKw.cjs");
3
- const require_route_builder = require("./route-builder-DupY8fkI.cjs");
3
+ const require_route_builder = require("./route-builder-CbCx1upL.cjs");
4
4
  const require_server_handlers_error = require("./server/handlers/error.cjs");
5
5
  let zod_v4 = require("zod/v4");
6
6
  //#region src/server/schemas/dynamic-workflows.ts
@@ -379,4 +379,4 @@ Object.defineProperty(exports, "dynamic_workflows_exports", {
379
379
  }
380
380
  });
381
381
 
382
- //# sourceMappingURL=dynamic-workflows-DeUG3lA2.cjs.map
382
+ //# sourceMappingURL=dynamic-workflows-BiX72mRA.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-workflows-DeUG3lA2.cjs","names":["z","createRoute","HTTPException","handleError"],"sources":["../src/server/schemas/dynamic-workflows.ts","../src/server/handlers/dynamic-workflows.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\n// ============================================================================\n// Serialized graph — discriminated union mirroring core's SerializedStepFlowEntry.\n// Duplicated locally rather than imported from @mastra/core/workflows because\n// this file's peer-dependency floor predates that export. Structurally\n// compatible with `Mastra.addDynamicWorkflow`'s input; the handler casts once\n// to bridge the remaining wire-vs-runtime divergences (sleepUntil.date as\n// ISO string, fluent-builder-only debug labels) that the core rehydrator\n// handles at runtime.\n// ============================================================================\n\nconst stepOptionsSchema = z\n .object({\n retries: z.number().int().nonnegative().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n })\n .optional();\n\n// Optional identity/display fields on control-flow entries (mirrors core's\n// `StepFlowEntryOptions`). Declared explicitly because zod's default object\n// mode strips unknown keys — without these, posted fields would vanish\n// silently before reaching core.\nconst entryDisplayFields = {\n description: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n};\nconst containerIdentityFields = {\n id: z.string().optional(),\n ...entryDisplayFields,\n};\n\n// ----------------------------------------------------------------------------\n// Predicate DSL — declarative condition for `conditional` / `loop` entries.\n// Mirrors `Predicate` in `@mastra/core/workflows/predicate`; duplicated\n// locally for the same peer-floor reason as the graph schema above.\n// ----------------------------------------------------------------------------\nconst literalScalar = z.union([z.string(), z.number(), z.boolean(), z.null()]);\nconst pathOrLiteral: z.ZodType = z.union([\n z.object({ path: z.string().min(1) }).strict(),\n z.object({ literal: literalScalar }).strict(),\n]);\nconst predicateSchema: z.ZodType = z.lazy(() =>\n z.union([\n z\n .object({\n op: z.enum(['eq', 'ne', 'lt', 'lte', 'gt', 'gte']),\n left: pathOrLiteral,\n right: pathOrLiteral,\n })\n .strict(),\n z\n .object({\n op: z.enum(['in', 'notIn']),\n value: pathOrLiteral,\n set: z.array(literalScalar).min(1),\n })\n .strict(),\n z.object({ op: z.enum(['exists', 'notExists']), path: z.string().min(1) }).strict(),\n z.object({ op: z.enum(['truthy', 'falsy']), value: pathOrLiteral }).strict(),\n z.object({ op: z.enum(['and', 'or']), args: z.array(predicateSchema).min(1) }).strict(),\n z.object({ op: z.literal('not'), arg: predicateSchema }).strict(),\n ]),\n);\n\nconst agentEntrySchema = z.object({\n type: z.literal('agent'),\n id: z.string(),\n agentId: z.string(),\n description: z.string().optional(),\n outputSchema: z.record(z.string(), z.unknown()).optional(),\n options: stepOptionsSchema,\n});\n\nconst toolEntrySchema = z.object({\n type: z.literal('tool'),\n id: z.string(),\n toolId: z.string(),\n description: z.string().optional(),\n options: stepOptionsSchema,\n});\n\nconst mappingEntrySchema = z.object({\n type: z.literal('mapping'),\n id: z.string(),\n ...entryDisplayFields,\n mapConfig: z.string(),\n});\n\nconst workflowEntrySchema = z.object({\n type: z.literal('workflow'),\n id: z.string(),\n workflowId: z.string(),\n description: z.string().optional(),\n});\n\nconst singleStepEntrySchema = z.discriminatedUnion('type', [\n agentEntrySchema,\n toolEntrySchema,\n mappingEntrySchema,\n workflowEntrySchema,\n]);\n\nconst foreachInnerStepSchema = z.discriminatedUnion('type', [agentEntrySchema, toolEntrySchema, workflowEntrySchema]);\n\nconst graphEntrySchema = z.discriminatedUnion('type', [\n agentEntrySchema,\n toolEntrySchema,\n mappingEntrySchema,\n workflowEntrySchema,\n z.object({\n type: z.literal('parallel'),\n ...containerIdentityFields,\n steps: z.array(singleStepEntrySchema),\n }),\n z.object({\n type: z.literal('foreach'),\n ...containerIdentityFields,\n step: foreachInnerStepSchema,\n opts: z.object({ concurrency: z.number().int().positive() }).optional(),\n }),\n z.object({\n type: z.literal('sleep'),\n id: z.string(),\n ...entryDisplayFields,\n duration: z.number(),\n }),\n z.object({\n type: z.literal('sleepUntil'),\n id: z.string(),\n ...entryDisplayFields,\n date: z.string(),\n }),\n z\n .object({\n // Declarative-only conditional. Inbound dynamic workflows must ship a\n // `predicates` array aligned with `steps`; closure-based branches are not\n // accepted over the wire (they'd be arbitrary JS strings we can't\n // safely rehydrate).\n type: z.literal('conditional'),\n ...containerIdentityFields,\n steps: z.array(singleStepEntrySchema),\n predicates: z.array(predicateSchema),\n })\n .refine(entry => entry.predicates.length === entry.steps.length, {\n message:\n 'conditional entries must have exactly one predicate per branch (`predicates` and `steps` must be the same length)',\n path: ['predicates'],\n }),\n z.object({\n // Declarative-only loop. Same rationale as `conditional`.\n type: z.literal('loop'),\n ...containerIdentityFields,\n step: singleStepEntrySchema,\n loopType: z.enum(['dowhile', 'dountil']),\n predicate: predicateSchema,\n }),\n]);\n\n// ============================================================================\n// Path params\n// ============================================================================\n\nexport const dynamicWorkflowIdPathParams = z.object({\n dynamicWorkflowId: z.string().describe('Unique identifier for the dynamic workflow definition'),\n});\n\n// ============================================================================\n// Query params\n// ============================================================================\n\nexport const listDynamicWorkflowsQuerySchema = z.object({\n status: z\n .enum(['active', 'archived'])\n .optional()\n .describe('Filter dynamic workflows by status (defaults to active when omitted by the handler)'),\n authorId: z.string().optional().describe('Filter dynamic workflows by author identifier'),\n});\n\n// ============================================================================\n// Body schemas\n// ============================================================================\n\n/**\n * One static workflow definition on the wire. Matches the input shape of\n * `mastra.addDynamicWorkflow()`.\n */\nexport const dynamicWorkflowDefinitionBodySchema = z.object({\n id: z.string().describe('Workflow id — kebab-case, descriptive'),\n description: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n // Schemas are loose object bags by design: different JSON Schema producers\n // emit slightly different shapes and core's `JsonSchema` type is\n // `Record<string, any>`. Using `z.record` here aligns with that shape so\n // no cast is needed at the handler boundary.\n inputSchema: z.record(z.string(), z.unknown()).describe('JSON Schema (Draft 2020-12) for the workflow input'),\n outputSchema: z.record(z.string(), z.unknown()).describe('JSON Schema (Draft 2020-12) for the workflow output'),\n stateSchema: z.record(z.string(), z.unknown()).optional(),\n requestContextSchema: z.record(z.string(), z.unknown()).optional(),\n graph: z\n .array(graphEntrySchema)\n .describe('Static workflow graph — ordered array of serialized step entries with all refs as ids.'),\n});\n\n/**\n * Body for `POST /stored/workflows` — upsert a static workflow definition,\n * optionally together with the helper workflows it nests.\n */\nexport const upsertDynamicWorkflowBodySchema = dynamicWorkflowDefinitionBodySchema.extend({\n // Deliberately a FLAT list rather than a recursive tree: helpers are peers\n // of each other, hydration order is derived from the graphs, and a\n // self-referential Zod schema would not survive OpenAPI generation.\n dependencies: z\n .array(dynamicWorkflowDefinitionBodySchema)\n .optional()\n .describe(\n 'Helper workflow definitions this workflow nests. Saved with it as one unit — the whole set is validated together, ' +\n 'hydrated in derived dependency order, and rejected together, so a failed save never leaves orphaned helpers behind. ' +\n 'Each helper becomes an ordinary dynamic workflow in its own right.',\n ),\n});\n\n// ============================================================================\n// Response schemas\n// ============================================================================\n\n/**\n * Shape returned for any single dynamic workflow row.\n */\nexport const dynamicWorkflowResponseSchema = z.object({\n id: z.string(),\n description: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n inputSchema: z.unknown(),\n outputSchema: z.unknown(),\n stateSchema: z.unknown().optional(),\n requestContextSchema: z.unknown().optional(),\n graph: z.array(z.unknown()),\n status: z.enum(['active', 'archived']),\n source: z.literal('storage'),\n authorId: z.string().optional(),\n createdAt: z.union([z.date(), z.string()]),\n updatedAt: z.union([z.date(), z.string()]),\n});\n\nexport const listDynamicWorkflowsResponseSchema = z.object({\n workflows: z.array(dynamicWorkflowResponseSchema),\n total: z.number(),\n});\n\nexport const getDynamicWorkflowResponseSchema = dynamicWorkflowResponseSchema;\n\nexport const upsertDynamicWorkflowResponseSchema = z.object({\n ok: z.literal(true),\n id: z.string(),\n dependencyIds: z\n .array(z.string())\n .optional()\n .describe('Ids of the helper workflows saved alongside this one. Present only when dependencies were supplied.'),\n});\n\nexport const deleteDynamicWorkflowResponseSchema = z.object({\n success: z.literal(true),\n message: z.string(),\n});\n","import type { Mastra } from '@mastra/core/mastra';\n\nimport { HTTPException } from '../http-exception';\nimport {\n dynamicWorkflowIdPathParams,\n listDynamicWorkflowsQuerySchema,\n upsertDynamicWorkflowBodySchema,\n listDynamicWorkflowsResponseSchema,\n getDynamicWorkflowResponseSchema,\n upsertDynamicWorkflowResponseSchema,\n deleteDynamicWorkflowResponseSchema,\n} from '../schemas/dynamic-workflows';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { handleError } from './error';\n\n/**\n * GET /stored/workflows — list stored static workflow definitions.\n *\n * Mirrors `LIST_STORED_AGENTS_ROUTE` but without favorites/visibility/authorship\n * scoping (which the workflow-definitions domain doesn't carry in v1).\n */\nexport const LIST_DYNAMIC_WORKFLOWS_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/workflows',\n responseType: 'json',\n queryParamSchema: listDynamicWorkflowsQuerySchema,\n responseSchema: listDynamicWorkflowsResponseSchema,\n summary: 'List dynamic workflow definitions',\n description: 'Returns workflow definitions persisted to storage. Filterable by status and authorId.',\n tags: ['Dynamic Workflows'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:read',\n handler: async ({ mastra, status, authorId }) => {\n try {\n const storage = mastra.getStorage();\n if (!storage) throw new HTTPException(500, { message: 'Storage is not configured' });\n\n const store = await storage.getStore('workflowDefinitions');\n if (!store) throw new HTTPException(500, { message: 'workflowDefinitions storage domain is not available' });\n\n const result = await store.list({ status: status ?? 'active', authorId });\n return { workflows: result.definitions, total: result.total };\n } catch (error) {\n return handleError(error, 'Error listing dynamic workflows');\n }\n },\n});\n\n/**\n * GET /stored/workflows/:dynamicWorkflowId — get one dynamic workflow.\n */\nexport const GET_DYNAMIC_WORKFLOW_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/workflows/:dynamicWorkflowId',\n responseType: 'json',\n pathParamSchema: dynamicWorkflowIdPathParams,\n responseSchema: getDynamicWorkflowResponseSchema,\n summary: 'Get a dynamic workflow definition by id',\n description: 'Returns a single workflow definition persisted to storage.',\n tags: ['Dynamic Workflows'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:read',\n handler: async ({ mastra, dynamicWorkflowId }) => {\n try {\n const storage = mastra.getStorage();\n if (!storage) throw new HTTPException(500, { message: 'Storage is not configured' });\n\n const store = await storage.getStore('workflowDefinitions');\n if (!store) throw new HTTPException(500, { message: 'workflowDefinitions storage domain is not available' });\n\n const def = await store.get(dynamicWorkflowId);\n if (!def) throw new HTTPException(404, { message: `Dynamic workflow \"${dynamicWorkflowId}\" not found` });\n return def;\n } catch (error) {\n return handleError(error, 'Error getting dynamic workflow');\n }\n },\n});\n\n/**\n * POST /stored/workflows — upsert a static workflow definition and live-register\n * it on the Mastra instance.\n *\n * Calls `mastra.addDynamicWorkflow(def)` which persists the row + rehydrates a\n * runnable workflow + registers it via `mastra.addWorkflow(workflow, id)`.\n * After this returns, `GET /workflows/:id` and `POST /workflows/:id/run` work\n * immediately — no server restart needed.\n */\nexport const UPSERT_DYNAMIC_WORKFLOW_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/workflows',\n responseType: 'json',\n bodySchema: upsertDynamicWorkflowBodySchema,\n responseSchema: upsertDynamicWorkflowResponseSchema,\n summary: 'Upsert a dynamic workflow definition and live-register it',\n description:\n 'Persists a static workflow definition and live-registers it on the running Mastra instance. Idempotent — same id updates in place.',\n tags: ['Dynamic Workflows'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:write',\n handler: async ({\n mastra,\n id,\n description,\n metadata,\n inputSchema,\n outputSchema,\n stateSchema,\n requestContextSchema,\n graph,\n dependencies,\n }) => {\n try {\n // Pick the body fields explicitly — handler args also carry server\n // context (requestContext, abortSignal, ...) which must not leak into\n // the stored definition.\n const def = { id, description, metadata, inputSchema, outputSchema, stateSchema, requestContextSchema, graph };\n // Helpers are saved with the root as one unit so a nested workflow that\n // does not exist yet resolves, and so a rejected root can never leave\n // its helpers behind as orphans. Order within the bundle is derived\n // from the graphs, not from the order the client sent them in.\n const bundle = [...(dependencies ?? []), def];\n // The wire schema is deliberately looser than the core authoring type:\n // it admits `mapping` entries as children of parallel/conditional/loop,\n // which `WorkflowBuilderExecutableInnerEntry` excludes. That is not\n // drift. Letting those through means a misplaced mapping surfaces from\n // the validation domain as a structured `invalid-map-placement` issue —\n // pointed at the offending path and carrying a machine-applicable\n // `remove-workflow-step` repair action that Studio's draft UI consumes —\n // instead of dying at the boundary as an opaque discriminated-union\n // error. `foreach` is excluded from this on purpose: core rejects a\n // foreach mapping body with an unstructured throw during rehydration,\n // so there is no repairable issue to preserve and the wire schema is\n // the better place to catch it.\n //\n // `addDynamicWorkflows` runs a full registry pre-flight before\n // rehydration, so nothing reaches the engine unvalidated; the cast\n // documents this boundary. Narrowing the schema to delete the cast\n // would trade a repairable issue for a generic 400.\n await mastra.addDynamicWorkflows(bundle as Parameters<Mastra['addDynamicWorkflows']>[0]);\n return {\n ok: true as const,\n id: def.id,\n ...(dependencies?.length ? { dependencyIds: dependencies.map(dependency => dependency.id) } : {}),\n };\n } catch (error) {\n return handleError(error, 'Error upserting dynamic workflow');\n }\n },\n});\n\n/**\n * DELETE /stored/workflows/:dynamicWorkflowId — delete a dynamic workflow.\n *\n * Removes the row from storage AND un-registers the live Workflow instance so\n * a subsequent POST with the same id starts from a clean slate. Idempotent.\n */\nexport const DELETE_DYNAMIC_WORKFLOW_ROUTE = createRoute({\n method: 'DELETE',\n path: '/stored/workflows/:dynamicWorkflowId',\n responseType: 'json',\n pathParamSchema: dynamicWorkflowIdPathParams,\n responseSchema: deleteDynamicWorkflowResponseSchema,\n summary: 'Delete a dynamic workflow definition',\n description: 'Removes a dynamic workflow definition and unregisters the live workflow instance. Idempotent.',\n tags: ['Dynamic Workflows'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:write',\n handler: async ({ mastra, dynamicWorkflowId }) => {\n try {\n const storage = mastra.getStorage();\n if (!storage) throw new HTTPException(500, { message: 'Storage is not configured' });\n\n const store = await storage.getStore('workflowDefinitions');\n if (!store) throw new HTTPException(500, { message: 'workflowDefinitions storage domain is not available' });\n\n await store.delete(dynamicWorkflowId);\n mastra.removeWorkflow(dynamicWorkflowId);\n return { success: true as const, message: `Workflow ${dynamicWorkflowId} deleted` };\n } catch (error) {\n return handleError(error, 'Error deleting dynamic workflow');\n }\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"dynamic-workflows-BiX72mRA.cjs","names":["z","createRoute","HTTPException","handleError"],"sources":["../src/server/schemas/dynamic-workflows.ts","../src/server/handlers/dynamic-workflows.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\n// ============================================================================\n// Serialized graph — discriminated union mirroring core's SerializedStepFlowEntry.\n// Duplicated locally rather than imported from @mastra/core/workflows because\n// this file's peer-dependency floor predates that export. Structurally\n// compatible with `Mastra.addDynamicWorkflow`'s input; the handler casts once\n// to bridge the remaining wire-vs-runtime divergences (sleepUntil.date as\n// ISO string, fluent-builder-only debug labels) that the core rehydrator\n// handles at runtime.\n// ============================================================================\n\nconst stepOptionsSchema = z\n .object({\n retries: z.number().int().nonnegative().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n })\n .optional();\n\n// Optional identity/display fields on control-flow entries (mirrors core's\n// `StepFlowEntryOptions`). Declared explicitly because zod's default object\n// mode strips unknown keys — without these, posted fields would vanish\n// silently before reaching core.\nconst entryDisplayFields = {\n description: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n};\nconst containerIdentityFields = {\n id: z.string().optional(),\n ...entryDisplayFields,\n};\n\n// ----------------------------------------------------------------------------\n// Predicate DSL — declarative condition for `conditional` / `loop` entries.\n// Mirrors `Predicate` in `@mastra/core/workflows/predicate`; duplicated\n// locally for the same peer-floor reason as the graph schema above.\n// ----------------------------------------------------------------------------\nconst literalScalar = z.union([z.string(), z.number(), z.boolean(), z.null()]);\nconst pathOrLiteral: z.ZodType = z.union([\n z.object({ path: z.string().min(1) }).strict(),\n z.object({ literal: literalScalar }).strict(),\n]);\nconst predicateSchema: z.ZodType = z.lazy(() =>\n z.union([\n z\n .object({\n op: z.enum(['eq', 'ne', 'lt', 'lte', 'gt', 'gte']),\n left: pathOrLiteral,\n right: pathOrLiteral,\n })\n .strict(),\n z\n .object({\n op: z.enum(['in', 'notIn']),\n value: pathOrLiteral,\n set: z.array(literalScalar).min(1),\n })\n .strict(),\n z.object({ op: z.enum(['exists', 'notExists']), path: z.string().min(1) }).strict(),\n z.object({ op: z.enum(['truthy', 'falsy']), value: pathOrLiteral }).strict(),\n z.object({ op: z.enum(['and', 'or']), args: z.array(predicateSchema).min(1) }).strict(),\n z.object({ op: z.literal('not'), arg: predicateSchema }).strict(),\n ]),\n);\n\nconst agentEntrySchema = z.object({\n type: z.literal('agent'),\n id: z.string(),\n agentId: z.string(),\n description: z.string().optional(),\n outputSchema: z.record(z.string(), z.unknown()).optional(),\n options: stepOptionsSchema,\n});\n\nconst toolEntrySchema = z.object({\n type: z.literal('tool'),\n id: z.string(),\n toolId: z.string(),\n description: z.string().optional(),\n options: stepOptionsSchema,\n});\n\nconst mappingEntrySchema = z.object({\n type: z.literal('mapping'),\n id: z.string(),\n ...entryDisplayFields,\n mapConfig: z.string(),\n});\n\nconst workflowEntrySchema = z.object({\n type: z.literal('workflow'),\n id: z.string(),\n workflowId: z.string(),\n description: z.string().optional(),\n});\n\nconst singleStepEntrySchema = z.discriminatedUnion('type', [\n agentEntrySchema,\n toolEntrySchema,\n mappingEntrySchema,\n workflowEntrySchema,\n]);\n\nconst foreachInnerStepSchema = z.discriminatedUnion('type', [agentEntrySchema, toolEntrySchema, workflowEntrySchema]);\n\nconst graphEntrySchema = z.discriminatedUnion('type', [\n agentEntrySchema,\n toolEntrySchema,\n mappingEntrySchema,\n workflowEntrySchema,\n z.object({\n type: z.literal('parallel'),\n ...containerIdentityFields,\n steps: z.array(singleStepEntrySchema),\n }),\n z.object({\n type: z.literal('foreach'),\n ...containerIdentityFields,\n step: foreachInnerStepSchema,\n opts: z.object({ concurrency: z.number().int().positive() }).optional(),\n }),\n z.object({\n type: z.literal('sleep'),\n id: z.string(),\n ...entryDisplayFields,\n duration: z.number(),\n }),\n z.object({\n type: z.literal('sleepUntil'),\n id: z.string(),\n ...entryDisplayFields,\n date: z.string(),\n }),\n z\n .object({\n // Declarative-only conditional. Inbound dynamic workflows must ship a\n // `predicates` array aligned with `steps`; closure-based branches are not\n // accepted over the wire (they'd be arbitrary JS strings we can't\n // safely rehydrate).\n type: z.literal('conditional'),\n ...containerIdentityFields,\n steps: z.array(singleStepEntrySchema),\n predicates: z.array(predicateSchema),\n })\n .refine(entry => entry.predicates.length === entry.steps.length, {\n message:\n 'conditional entries must have exactly one predicate per branch (`predicates` and `steps` must be the same length)',\n path: ['predicates'],\n }),\n z.object({\n // Declarative-only loop. Same rationale as `conditional`.\n type: z.literal('loop'),\n ...containerIdentityFields,\n step: singleStepEntrySchema,\n loopType: z.enum(['dowhile', 'dountil']),\n predicate: predicateSchema,\n }),\n]);\n\n// ============================================================================\n// Path params\n// ============================================================================\n\nexport const dynamicWorkflowIdPathParams = z.object({\n dynamicWorkflowId: z.string().describe('Unique identifier for the dynamic workflow definition'),\n});\n\n// ============================================================================\n// Query params\n// ============================================================================\n\nexport const listDynamicWorkflowsQuerySchema = z.object({\n status: z\n .enum(['active', 'archived'])\n .optional()\n .describe('Filter dynamic workflows by status (defaults to active when omitted by the handler)'),\n authorId: z.string().optional().describe('Filter dynamic workflows by author identifier'),\n});\n\n// ============================================================================\n// Body schemas\n// ============================================================================\n\n/**\n * One static workflow definition on the wire. Matches the input shape of\n * `mastra.addDynamicWorkflow()`.\n */\nexport const dynamicWorkflowDefinitionBodySchema = z.object({\n id: z.string().describe('Workflow id — kebab-case, descriptive'),\n description: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n // Schemas are loose object bags by design: different JSON Schema producers\n // emit slightly different shapes and core's `JsonSchema` type is\n // `Record<string, any>`. Using `z.record` here aligns with that shape so\n // no cast is needed at the handler boundary.\n inputSchema: z.record(z.string(), z.unknown()).describe('JSON Schema (Draft 2020-12) for the workflow input'),\n outputSchema: z.record(z.string(), z.unknown()).describe('JSON Schema (Draft 2020-12) for the workflow output'),\n stateSchema: z.record(z.string(), z.unknown()).optional(),\n requestContextSchema: z.record(z.string(), z.unknown()).optional(),\n graph: z\n .array(graphEntrySchema)\n .describe('Static workflow graph — ordered array of serialized step entries with all refs as ids.'),\n});\n\n/**\n * Body for `POST /stored/workflows` — upsert a static workflow definition,\n * optionally together with the helper workflows it nests.\n */\nexport const upsertDynamicWorkflowBodySchema = dynamicWorkflowDefinitionBodySchema.extend({\n // Deliberately a FLAT list rather than a recursive tree: helpers are peers\n // of each other, hydration order is derived from the graphs, and a\n // self-referential Zod schema would not survive OpenAPI generation.\n dependencies: z\n .array(dynamicWorkflowDefinitionBodySchema)\n .optional()\n .describe(\n 'Helper workflow definitions this workflow nests. Saved with it as one unit — the whole set is validated together, ' +\n 'hydrated in derived dependency order, and rejected together, so a failed save never leaves orphaned helpers behind. ' +\n 'Each helper becomes an ordinary dynamic workflow in its own right.',\n ),\n});\n\n// ============================================================================\n// Response schemas\n// ============================================================================\n\n/**\n * Shape returned for any single dynamic workflow row.\n */\nexport const dynamicWorkflowResponseSchema = z.object({\n id: z.string(),\n description: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n inputSchema: z.unknown(),\n outputSchema: z.unknown(),\n stateSchema: z.unknown().optional(),\n requestContextSchema: z.unknown().optional(),\n graph: z.array(z.unknown()),\n status: z.enum(['active', 'archived']),\n source: z.literal('storage'),\n authorId: z.string().optional(),\n createdAt: z.union([z.date(), z.string()]),\n updatedAt: z.union([z.date(), z.string()]),\n});\n\nexport const listDynamicWorkflowsResponseSchema = z.object({\n workflows: z.array(dynamicWorkflowResponseSchema),\n total: z.number(),\n});\n\nexport const getDynamicWorkflowResponseSchema = dynamicWorkflowResponseSchema;\n\nexport const upsertDynamicWorkflowResponseSchema = z.object({\n ok: z.literal(true),\n id: z.string(),\n dependencyIds: z\n .array(z.string())\n .optional()\n .describe('Ids of the helper workflows saved alongside this one. Present only when dependencies were supplied.'),\n});\n\nexport const deleteDynamicWorkflowResponseSchema = z.object({\n success: z.literal(true),\n message: z.string(),\n});\n","import type { Mastra } from '@mastra/core/mastra';\n\nimport { HTTPException } from '../http-exception';\nimport {\n dynamicWorkflowIdPathParams,\n listDynamicWorkflowsQuerySchema,\n upsertDynamicWorkflowBodySchema,\n listDynamicWorkflowsResponseSchema,\n getDynamicWorkflowResponseSchema,\n upsertDynamicWorkflowResponseSchema,\n deleteDynamicWorkflowResponseSchema,\n} from '../schemas/dynamic-workflows';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { handleError } from './error';\n\n/**\n * GET /stored/workflows — list stored static workflow definitions.\n *\n * Mirrors `LIST_STORED_AGENTS_ROUTE` but without favorites/visibility/authorship\n * scoping (which the workflow-definitions domain doesn't carry in v1).\n */\nexport const LIST_DYNAMIC_WORKFLOWS_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/workflows',\n responseType: 'json',\n queryParamSchema: listDynamicWorkflowsQuerySchema,\n responseSchema: listDynamicWorkflowsResponseSchema,\n summary: 'List dynamic workflow definitions',\n description: 'Returns workflow definitions persisted to storage. Filterable by status and authorId.',\n tags: ['Dynamic Workflows'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:read',\n handler: async ({ mastra, status, authorId }) => {\n try {\n const storage = mastra.getStorage();\n if (!storage) throw new HTTPException(500, { message: 'Storage is not configured' });\n\n const store = await storage.getStore('workflowDefinitions');\n if (!store) throw new HTTPException(500, { message: 'workflowDefinitions storage domain is not available' });\n\n const result = await store.list({ status: status ?? 'active', authorId });\n return { workflows: result.definitions, total: result.total };\n } catch (error) {\n return handleError(error, 'Error listing dynamic workflows');\n }\n },\n});\n\n/**\n * GET /stored/workflows/:dynamicWorkflowId — get one dynamic workflow.\n */\nexport const GET_DYNAMIC_WORKFLOW_ROUTE = createRoute({\n method: 'GET',\n path: '/stored/workflows/:dynamicWorkflowId',\n responseType: 'json',\n pathParamSchema: dynamicWorkflowIdPathParams,\n responseSchema: getDynamicWorkflowResponseSchema,\n summary: 'Get a dynamic workflow definition by id',\n description: 'Returns a single workflow definition persisted to storage.',\n tags: ['Dynamic Workflows'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:read',\n handler: async ({ mastra, dynamicWorkflowId }) => {\n try {\n const storage = mastra.getStorage();\n if (!storage) throw new HTTPException(500, { message: 'Storage is not configured' });\n\n const store = await storage.getStore('workflowDefinitions');\n if (!store) throw new HTTPException(500, { message: 'workflowDefinitions storage domain is not available' });\n\n const def = await store.get(dynamicWorkflowId);\n if (!def) throw new HTTPException(404, { message: `Dynamic workflow \"${dynamicWorkflowId}\" not found` });\n return def;\n } catch (error) {\n return handleError(error, 'Error getting dynamic workflow');\n }\n },\n});\n\n/**\n * POST /stored/workflows — upsert a static workflow definition and live-register\n * it on the Mastra instance.\n *\n * Calls `mastra.addDynamicWorkflow(def)` which persists the row + rehydrates a\n * runnable workflow + registers it via `mastra.addWorkflow(workflow, id)`.\n * After this returns, `GET /workflows/:id` and `POST /workflows/:id/run` work\n * immediately — no server restart needed.\n */\nexport const UPSERT_DYNAMIC_WORKFLOW_ROUTE = createRoute({\n method: 'POST',\n path: '/stored/workflows',\n responseType: 'json',\n bodySchema: upsertDynamicWorkflowBodySchema,\n responseSchema: upsertDynamicWorkflowResponseSchema,\n summary: 'Upsert a dynamic workflow definition and live-register it',\n description:\n 'Persists a static workflow definition and live-registers it on the running Mastra instance. Idempotent — same id updates in place.',\n tags: ['Dynamic Workflows'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:write',\n handler: async ({\n mastra,\n id,\n description,\n metadata,\n inputSchema,\n outputSchema,\n stateSchema,\n requestContextSchema,\n graph,\n dependencies,\n }) => {\n try {\n // Pick the body fields explicitly — handler args also carry server\n // context (requestContext, abortSignal, ...) which must not leak into\n // the stored definition.\n const def = { id, description, metadata, inputSchema, outputSchema, stateSchema, requestContextSchema, graph };\n // Helpers are saved with the root as one unit so a nested workflow that\n // does not exist yet resolves, and so a rejected root can never leave\n // its helpers behind as orphans. Order within the bundle is derived\n // from the graphs, not from the order the client sent them in.\n const bundle = [...(dependencies ?? []), def];\n // The wire schema is deliberately looser than the core authoring type:\n // it admits `mapping` entries as children of parallel/conditional/loop,\n // which `WorkflowBuilderExecutableInnerEntry` excludes. That is not\n // drift. Letting those through means a misplaced mapping surfaces from\n // the validation domain as a structured `invalid-map-placement` issue —\n // pointed at the offending path and carrying a machine-applicable\n // `remove-workflow-step` repair action that Studio's draft UI consumes —\n // instead of dying at the boundary as an opaque discriminated-union\n // error. `foreach` is excluded from this on purpose: core rejects a\n // foreach mapping body with an unstructured throw during rehydration,\n // so there is no repairable issue to preserve and the wire schema is\n // the better place to catch it.\n //\n // `addDynamicWorkflows` runs a full registry pre-flight before\n // rehydration, so nothing reaches the engine unvalidated; the cast\n // documents this boundary. Narrowing the schema to delete the cast\n // would trade a repairable issue for a generic 400.\n await mastra.addDynamicWorkflows(bundle as Parameters<Mastra['addDynamicWorkflows']>[0]);\n return {\n ok: true as const,\n id: def.id,\n ...(dependencies?.length ? { dependencyIds: dependencies.map(dependency => dependency.id) } : {}),\n };\n } catch (error) {\n return handleError(error, 'Error upserting dynamic workflow');\n }\n },\n});\n\n/**\n * DELETE /stored/workflows/:dynamicWorkflowId — delete a dynamic workflow.\n *\n * Removes the row from storage AND un-registers the live Workflow instance so\n * a subsequent POST with the same id starts from a clean slate. Idempotent.\n */\nexport const DELETE_DYNAMIC_WORKFLOW_ROUTE = createRoute({\n method: 'DELETE',\n path: '/stored/workflows/:dynamicWorkflowId',\n responseType: 'json',\n pathParamSchema: dynamicWorkflowIdPathParams,\n responseSchema: deleteDynamicWorkflowResponseSchema,\n summary: 'Delete a dynamic workflow definition',\n description: 'Removes a dynamic workflow definition and unregisters the live workflow instance. Idempotent.',\n tags: ['Dynamic Workflows'],\n requiresAuth: true,\n requiresPermission: 'stored-workflows:write',\n handler: async ({ mastra, dynamicWorkflowId }) => {\n try {\n const storage = mastra.getStorage();\n if (!storage) throw new HTTPException(500, { message: 'Storage is not configured' });\n\n const store = await storage.getStore('workflowDefinitions');\n if (!store) throw new HTTPException(500, { message: 'workflowDefinitions storage domain is not available' });\n\n await store.delete(dynamicWorkflowId);\n mastra.removeWorkflow(dynamicWorkflowId);\n return { success: true as const, message: `Workflow ${dynamicWorkflowId} deleted` };\n } catch (error) {\n return handleError(error, 'Error deleting dynamic workflow');\n }\n },\n});\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { r as __exportAll } from "./rolldown-runtime-maW3aOIk.js";
2
2
  import { t as HTTPException } from "./http-exception-CyfxZB6W.js";
3
- import { n as createRoute } from "./route-builder-BukcT_Kp.js";
3
+ import { n as createRoute } from "./route-builder-DDOjv0sM.js";
4
4
  import { handleError } from "./server/handlers/error.js";
5
5
  import { z } from "zod/v4";
6
6
  //#region src/server/schemas/dynamic-workflows.ts
@@ -350,4 +350,4 @@ const DELETE_DYNAMIC_WORKFLOW_ROUTE = createRoute({
350
350
  //#endregion
351
351
  export { dynamic_workflows_exports as a, UPSERT_DYNAMIC_WORKFLOW_ROUTE as i, GET_DYNAMIC_WORKFLOW_ROUTE as n, LIST_DYNAMIC_WORKFLOWS_ROUTE as r, DELETE_DYNAMIC_WORKFLOW_ROUTE as t };
352
352
 
353
- //# sourceMappingURL=dynamic-workflows-C3DXgmSP.js.map
353
+ //# sourceMappingURL=dynamic-workflows-CVrxi8y7.js.map