@mastra/server 1.60.0-alpha.1 → 1.60.0-alpha.11

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 (333) hide show
  1. package/CHANGELOG.md +125 -0
  2. package/dist/_types/@internal_voice/dist/_types/@internal_core/dist/request-context/index.d.ts +46 -1
  3. package/dist/{a2a-CUkzkdTZ.js → a2a-B2yosTel.js} +3 -3
  4. package/dist/{a2a-CUkzkdTZ.js.map → a2a-B2yosTel.js.map} +1 -1
  5. package/dist/{a2a-DzZHH3OH.cjs → a2a-C4JIRtLT.cjs} +4 -4
  6. package/dist/{a2a-DzZHH3OH.cjs.map → a2a-C4JIRtLT.cjs.map} +1 -1
  7. package/dist/{agent-versions-xeysPGel.cjs → agent-versions-MYjO6Wl1.cjs} +2 -2
  8. package/dist/{agent-versions-xeysPGel.cjs.map → agent-versions-MYjO6Wl1.cjs.map} +1 -1
  9. package/dist/{agent-versions-CWEnD62A.js → agent-versions-mFXaw5ma.js} +2 -2
  10. package/dist/{agent-versions-CWEnD62A.js.map → agent-versions-mFXaw5ma.js.map} +1 -1
  11. package/dist/{agents-uT8ZDE4k.js → agents-BetrUB_N.js} +7 -2
  12. package/dist/agents-BetrUB_N.js.map +1 -0
  13. package/dist/{agents-0Tw3kkD_.cjs → agents-CLv_RFQx.cjs} +18 -1
  14. package/dist/agents-CLv_RFQx.cjs.map +1 -0
  15. package/dist/{api-schema-manifest-B9exfVOY.js → api-schema-manifest-Cq7dyGz7.js} +2 -2
  16. package/dist/{api-schema-manifest-B9exfVOY.js.map → api-schema-manifest-Cq7dyGz7.js.map} +1 -1
  17. package/dist/{api-schema-manifest-C7J-8Hwe.cjs → api-schema-manifest-DBTuPeWn.cjs} +4 -3
  18. package/dist/{api-schema-manifest-C7J-8Hwe.cjs.map → api-schema-manifest-DBTuPeWn.cjs.map} +1 -1
  19. package/dist/{background-tasks-C5G2jJax.cjs → background-tasks-8M9W_27g.cjs} +2 -2
  20. package/dist/{background-tasks-C5G2jJax.cjs.map → background-tasks-8M9W_27g.cjs.map} +1 -1
  21. package/dist/{builder-registry-Dcou-kzd.cjs → builder-registry-C-NVj8w5.cjs} +3 -3
  22. package/dist/{builder-registry-Dcou-kzd.cjs.map → builder-registry-C-NVj8w5.cjs.map} +1 -1
  23. package/dist/{builder-registry-B8KyPAOP.js → builder-registry-CqLsr39q.js} +2 -2
  24. package/dist/{builder-registry-B8KyPAOP.js.map → builder-registry-CqLsr39q.js.map} +1 -1
  25. package/dist/{channels-BRoq3VKR.cjs → channels-Bn2aN-6o.cjs} +3 -3
  26. package/dist/{channels-BRoq3VKR.cjs.map → channels-Bn2aN-6o.cjs.map} +1 -1
  27. package/dist/{channels-B9yt3a2P.js → channels-BnFQESMf.js} +2 -2
  28. package/dist/{channels-B9yt3a2P.js.map → channels-BnFQESMf.js.map} +1 -1
  29. package/dist/{constants-ChBaIptn.cjs → constants-CXPpy-Ef.cjs} +7 -1
  30. package/dist/constants-CXPpy-Ef.cjs.map +1 -0
  31. package/dist/{constants-Cp1x-6sJ.js → constants-CutMu4A_.js} +7 -1
  32. package/dist/constants-CutMu4A_.js.map +1 -0
  33. package/dist/{conversations-CcFLCCeF.cjs → conversations-PF0eKhIu.cjs} +3 -3
  34. package/dist/{conversations-CcFLCCeF.cjs.map → conversations-PF0eKhIu.cjs.map} +1 -1
  35. package/dist/{dist-CAVC0nWG.cjs → dist-2zVeGGHi.cjs} +3 -2
  36. package/dist/{dist-CAVC0nWG.cjs.map → dist-2zVeGGHi.cjs.map} +1 -1
  37. package/dist/{dist-D7GkGue6.cjs → dist-8-Z5v77M.cjs} +3 -2
  38. package/dist/{dist-D7GkGue6.cjs.map → dist-8-Z5v77M.cjs.map} +1 -1
  39. package/dist/{dist-SKhVwZMV.cjs → dist-Be7Caz3Z.cjs} +3 -2
  40. package/dist/{dist-SKhVwZMV.cjs.map → dist-Be7Caz3Z.cjs.map} +1 -1
  41. package/dist/{dist-18h28zlO.cjs → dist-BfVTO0pC.cjs} +3 -2
  42. package/dist/{dist-18h28zlO.cjs.map → dist-BfVTO0pC.cjs.map} +1 -1
  43. package/dist/{dist-DhGJtn6J.cjs → dist-BrbvwbbJ.cjs} +243 -84
  44. package/dist/dist-BrbvwbbJ.cjs.map +1 -0
  45. package/dist/{dist-BD0I5lxM.js → dist-CHJcZQdS.js} +2 -2
  46. package/dist/{dist-BD0I5lxM.js.map → dist-CHJcZQdS.js.map} +1 -1
  47. package/dist/{dist-BpRGQqjE.cjs → dist-CJKQBH69.cjs} +2 -2
  48. package/dist/{dist-BpRGQqjE.cjs.map → dist-CJKQBH69.cjs.map} +1 -1
  49. package/dist/{dist-sUhxlnJz.js → dist-CRgxcDTg.js} +2 -2
  50. package/dist/{dist-sUhxlnJz.js.map → dist-CRgxcDTg.js.map} +1 -1
  51. package/dist/{dist-JdnTASYe.js → dist-CscF1cF8.js} +2 -2
  52. package/dist/{dist-JdnTASYe.js.map → dist-CscF1cF8.js.map} +1 -1
  53. package/dist/{dist-DBP9kw_8.cjs → dist-D4NzuG3G.cjs} +3 -2
  54. package/dist/{dist-DBP9kw_8.cjs.map → dist-D4NzuG3G.cjs.map} +1 -1
  55. package/dist/{dist-DKBns4r6.js → dist-DR_dRdv7.js} +241 -82
  56. package/dist/dist-DR_dRdv7.js.map +1 -0
  57. package/dist/{dist-mcwHCl2a.js → dist-F_Ql1co6.js} +2 -2
  58. package/dist/{dist-mcwHCl2a.js.map → dist-F_Ql1co6.js.map} +1 -1
  59. package/dist/{dist-C-9xUY65.js → dist-Jn3uXsoB.js} +2 -2
  60. package/dist/{dist-C-9xUY65.js.map → dist-Jn3uXsoB.js.map} +1 -1
  61. package/dist/{dist-DyBO3IVt.js → dist-bAFqx06T.js} +2 -2
  62. package/dist/{dist-DyBO3IVt.js.map → dist-bAFqx06T.js.map} +1 -1
  63. package/dist/docs/SKILL.md +2 -2
  64. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  65. package/dist/docs/references/{docs-agents-a2a.md → docs-connections-a2a.md} +2 -2
  66. package/dist/docs/references/docs-server-custom-api-routes.md +2 -2
  67. package/dist/{dynamic-workflows-C-6vmau5.cjs → dynamic-workflows-BZ5ru36x.cjs} +3 -3
  68. package/dist/{dynamic-workflows-C-6vmau5.cjs.map → dynamic-workflows-BZ5ru36x.cjs.map} +1 -1
  69. package/dist/{dynamic-workflows-B0TE8mjA.js → dynamic-workflows-C6U0Rdoc.js} +2 -2
  70. package/dist/{dynamic-workflows-B0TE8mjA.js.map → dynamic-workflows-C6U0Rdoc.js.map} +1 -1
  71. package/dist/{editor-builder-DJUxdzC8.js → editor-builder-BDEm-gZe.js} +2 -2
  72. package/dist/{editor-builder-DJUxdzC8.js.map → editor-builder-BDEm-gZe.js.map} +1 -1
  73. package/dist/{editor-builder-DT7ypWfa.cjs → editor-builder-BmRQift0.cjs} +3 -3
  74. package/dist/{editor-builder-DT7ypWfa.cjs.map → editor-builder-BmRQift0.cjs.map} +1 -1
  75. package/dist/{editor-builder-C3ZvffGu.cjs → editor-builder-DNRVszU-.cjs} +2 -2
  76. package/dist/{editor-builder-C3ZvffGu.cjs.map → editor-builder-DNRVszU-.cjs.map} +1 -1
  77. package/dist/{editor-builder-Byg6wbi6.js → editor-builder-EP9FAtQm.js} +2 -2
  78. package/dist/{editor-builder-Byg6wbi6.js.map → editor-builder-EP9FAtQm.js.map} +1 -1
  79. package/dist/{helpers-TmTGZi8e.cjs → helpers-C54OMiDG.cjs} +2 -2
  80. package/dist/{helpers-TmTGZi8e.cjs.map → helpers-C54OMiDG.cjs.map} +1 -1
  81. package/dist/{helpers-GyeAi5YN.js → helpers-Da9nPOFL.js} +2 -2
  82. package/dist/{helpers-GyeAi5YN.js.map → helpers-Da9nPOFL.js.map} +1 -1
  83. package/dist/index.cjs +1 -0
  84. package/dist/index.cjs.map +1 -1
  85. package/dist/{observability-new-endpoints-BC-dasRY.cjs → observability-new-endpoints-gRCFhnRr.cjs} +2 -2
  86. package/dist/{observability-new-endpoints-BC-dasRY.cjs.map → observability-new-endpoints-gRCFhnRr.cjs.map} +1 -1
  87. package/dist/{probe-image-size-C2F59z8Z.cjs → probe-image-size-CDCRrXNo.cjs} +140 -33
  88. package/dist/probe-image-size-CDCRrXNo.cjs.map +1 -0
  89. package/dist/{probe-image-size-mXCWYNrz.js → probe-image-size-Tf8sNZhU.js} +137 -33
  90. package/dist/probe-image-size-Tf8sNZhU.js.map +1 -0
  91. package/dist/{responses-BI25doe1.cjs → responses-CKNdSRkS.cjs} +2 -2
  92. package/dist/{responses-BI25doe1.cjs.map → responses-CKNdSRkS.cjs.map} +1 -1
  93. package/dist/{rolldown-runtime-CVvi-lCc.cjs → rolldown-runtime-Bd6kNlEP.cjs} +21 -0
  94. package/dist/{rolldown-runtime-DuvcJU0W.js → rolldown-runtime-maW3aOIk.js} +10 -1
  95. package/dist/{route-builder-BAAedfru.cjs → route-builder-CWsok5ci.cjs} +2 -2
  96. package/dist/{route-builder-BAAedfru.cjs.map → route-builder-CWsok5ci.cjs.map} +1 -1
  97. package/dist/{routes-BlSot4At.cjs → routes-DHRnM_bB.cjs} +16 -14
  98. package/dist/routes-DHRnM_bB.cjs.map +1 -0
  99. package/dist/{routes-B4p8XidO.js → routes-DMs0TJQw.js} +12 -10
  100. package/dist/routes-DMs0TJQw.js.map +1 -0
  101. package/dist/{schedules-DOK225ZZ.cjs → schedules-7YUg_TRM.cjs} +2 -2
  102. package/dist/{schedules-DOK225ZZ.cjs.map → schedules-7YUg_TRM.cjs.map} +1 -1
  103. package/dist/{schema-Bv9OdW1f-CHHI-NTr.cjs → schema-Bv9OdW1f-CxTiW8RD.cjs} +2 -2
  104. package/dist/{schema-Bv9OdW1f-CHHI-NTr.cjs.map → schema-Bv9OdW1f-CxTiW8RD.cjs.map} +1 -1
  105. package/dist/schema-CNKnRmv1.cjs +1 -0
  106. package/dist/{scorer-versions-CdVjOtQO.js → scorer-versions-D0_KP67E.js} +2 -2
  107. package/dist/{scorer-versions-CdVjOtQO.js.map → scorer-versions-D0_KP67E.js.map} +1 -1
  108. package/dist/{scorer-versions-CYXtxMTU.cjs → scorer-versions-mL--H4LL.cjs} +2 -2
  109. package/dist/{scorer-versions-CYXtxMTU.cjs.map → scorer-versions-mL--H4LL.cjs.map} +1 -1
  110. package/dist/server/a2a/store.cjs +1 -0
  111. package/dist/server/a2a/store.cjs.map +1 -1
  112. package/dist/server/auth/index.cjs +3 -2
  113. package/dist/server/auth/index.js +2 -2
  114. package/dist/server/browser-stream/index.cjs +1 -0
  115. package/dist/server/browser-stream/index.cjs.map +1 -1
  116. package/dist/server/constants.d.ts +5 -0
  117. package/dist/server/constants.d.ts.map +1 -1
  118. package/dist/server/handlers/a2a.cjs +2 -1
  119. package/dist/server/handlers/a2a.js +1 -1
  120. package/dist/server/handlers/agent-builder.cjs +5 -5
  121. package/dist/server/handlers/agent-builder.js +4 -4
  122. package/dist/server/handlers/agent-controller.cjs +73 -29
  123. package/dist/server/handlers/agent-controller.cjs.map +1 -1
  124. package/dist/server/handlers/agent-controller.d.ts +42 -4
  125. package/dist/server/handlers/agent-controller.d.ts.map +1 -1
  126. package/dist/server/handlers/agent-controller.js +71 -28
  127. package/dist/server/handlers/agent-controller.js.map +1 -1
  128. package/dist/server/handlers/agent-versions.cjs +4 -3
  129. package/dist/server/handlers/agent-versions.cjs.map +1 -1
  130. package/dist/server/handlers/agent-versions.js +2 -2
  131. package/dist/server/handlers/agents.cjs +11 -10
  132. package/dist/server/handlers/agents.cjs.map +1 -1
  133. package/dist/server/handlers/agents.d.ts +8 -0
  134. package/dist/server/handlers/agents.d.ts.map +1 -1
  135. package/dist/server/handlers/agents.js +8 -7
  136. package/dist/server/handlers/agents.js.map +1 -1
  137. package/dist/server/handlers/auth.cjs +4 -3
  138. package/dist/server/handlers/auth.cjs.map +1 -1
  139. package/dist/server/handlers/auth.js +2 -2
  140. package/dist/server/handlers/author-enrichment.cjs +1 -0
  141. package/dist/server/handlers/author-enrichment.cjs.map +1 -1
  142. package/dist/server/handlers/authorship.cjs +2 -1
  143. package/dist/server/handlers/authorship.cjs.map +1 -1
  144. package/dist/server/handlers/authorship.js +1 -1
  145. package/dist/server/handlers/background-tasks.cjs +2 -1
  146. package/dist/server/handlers/builder-registry.cjs +2 -1
  147. package/dist/server/handlers/builder-registry.js +1 -1
  148. package/dist/server/handlers/channels.cjs +2 -1
  149. package/dist/server/handlers/channels.js +1 -1
  150. package/dist/server/handlers/conversations.cjs +4 -4
  151. package/dist/server/handlers/conversations.js +2 -2
  152. package/dist/server/handlers/datasets.cjs +3 -2
  153. package/dist/server/handlers/datasets.cjs.map +1 -1
  154. package/dist/server/handlers/datasets.js +1 -1
  155. package/dist/server/handlers/dynamic-workflows.cjs +2 -1
  156. package/dist/server/handlers/dynamic-workflows.js +1 -1
  157. package/dist/server/handlers/editor-builder.cjs +2 -1
  158. package/dist/server/handlers/editor-builder.js +1 -1
  159. package/dist/server/handlers/error.cjs +1 -0
  160. package/dist/server/handlers/error.cjs.map +1 -1
  161. package/dist/server/handlers/favorites-enrichment.cjs +2 -1
  162. package/dist/server/handlers/favorites-enrichment.cjs.map +1 -1
  163. package/dist/server/handlers/favorites-enrichment.js +1 -1
  164. package/dist/server/handlers/gateway-memory-client.cjs +1 -0
  165. package/dist/server/handlers/gateway-memory-client.cjs.map +1 -1
  166. package/dist/server/handlers/logs.cjs +3 -3
  167. package/dist/server/handlers/logs.js +2 -2
  168. package/dist/server/handlers/mcp-client-versions.cjs +4 -3
  169. package/dist/server/handlers/mcp-client-versions.cjs.map +1 -1
  170. package/dist/server/handlers/mcp-client-versions.js +2 -2
  171. package/dist/server/handlers/mcp.cjs +2 -2
  172. package/dist/server/handlers/mcp.cjs.map +1 -1
  173. package/dist/server/handlers/mcp.d.ts +6 -0
  174. package/dist/server/handlers/mcp.d.ts.map +1 -1
  175. package/dist/server/handlers/mcp.js +1 -1
  176. package/dist/server/handlers/mcp.js.map +1 -1
  177. package/dist/server/handlers/memory.cjs +3 -3
  178. package/dist/server/handlers/memory.js +2 -2
  179. package/dist/server/handlers/observability-list-query-schemas.cjs +1 -0
  180. package/dist/server/handlers/observability-list-query-schemas.cjs.map +1 -1
  181. package/dist/server/handlers/observability-new-endpoints.cjs +2 -1
  182. package/dist/server/handlers/observability-shared.cjs +2 -1
  183. package/dist/server/handlers/observability-shared.cjs.map +1 -1
  184. package/dist/server/handlers/observability-storage-schemas.cjs +1 -1
  185. package/dist/server/handlers/observability.cjs +3 -3
  186. package/dist/server/handlers/observability.js +1 -1
  187. package/dist/server/handlers/plans.cjs +64 -0
  188. package/dist/server/handlers/plans.cjs.map +1 -0
  189. package/dist/server/handlers/plans.d.ts +43 -0
  190. package/dist/server/handlers/plans.d.ts.map +1 -0
  191. package/dist/server/handlers/plans.js +57 -0
  192. package/dist/server/handlers/plans.js.map +1 -0
  193. package/dist/server/handlers/processor-providers.cjs +2 -1
  194. package/dist/server/handlers/processor-providers.cjs.map +1 -1
  195. package/dist/server/handlers/processors.cjs +2 -1
  196. package/dist/server/handlers/processors.cjs.map +1 -1
  197. package/dist/server/handlers/prompt-block-versions.cjs +4 -3
  198. package/dist/server/handlers/prompt-block-versions.cjs.map +1 -1
  199. package/dist/server/handlers/prompt-block-versions.js +2 -2
  200. package/dist/server/handlers/responses.adapter.cjs +2 -1
  201. package/dist/server/handlers/responses.adapter.cjs.map +1 -1
  202. package/dist/server/handlers/responses.adapter.js +1 -1
  203. package/dist/server/handlers/responses.cjs +4 -4
  204. package/dist/server/handlers/responses.js +2 -2
  205. package/dist/server/handlers/responses.storage.cjs +2 -1
  206. package/dist/server/handlers/responses.storage.cjs.map +1 -1
  207. package/dist/server/handlers/responses.storage.js +1 -1
  208. package/dist/server/handlers/schedules-workflows-shim.cjs +1 -1
  209. package/dist/server/handlers/schedules.cjs +2 -1
  210. package/dist/server/handlers/scorer-versions.cjs +4 -3
  211. package/dist/server/handlers/scorer-versions.cjs.map +1 -1
  212. package/dist/server/handlers/scorer-versions.js +2 -2
  213. package/dist/server/handlers/scores.cjs +2 -2
  214. package/dist/server/handlers/scores.js +1 -1
  215. package/dist/server/handlers/skills-sh-shared.cjs +1 -0
  216. package/dist/server/handlers/skills-sh-shared.cjs.map +1 -1
  217. package/dist/server/handlers/stored-agent-favorites.cjs +5 -4
  218. package/dist/server/handlers/stored-agent-favorites.cjs.map +1 -1
  219. package/dist/server/handlers/stored-agent-favorites.js +3 -3
  220. package/dist/server/handlers/stored-agents.cjs +8 -6
  221. package/dist/server/handlers/stored-agents.cjs.map +1 -1
  222. package/dist/server/handlers/stored-agents.d.ts +32 -0
  223. package/dist/server/handlers/stored-agents.d.ts.map +1 -1
  224. package/dist/server/handlers/stored-agents.js +6 -5
  225. package/dist/server/handlers/stored-agents.js.map +1 -1
  226. package/dist/server/handlers/stored-mcp-clients.cjs +4 -3
  227. package/dist/server/handlers/stored-mcp-clients.cjs.map +1 -1
  228. package/dist/server/handlers/stored-mcp-clients.js +2 -2
  229. package/dist/server/handlers/stored-prompt-blocks.cjs +4 -3
  230. package/dist/server/handlers/stored-prompt-blocks.cjs.map +1 -1
  231. package/dist/server/handlers/stored-prompt-blocks.js +2 -2
  232. package/dist/server/handlers/stored-scorers.cjs +4 -3
  233. package/dist/server/handlers/stored-scorers.cjs.map +1 -1
  234. package/dist/server/handlers/stored-scorers.js +2 -2
  235. package/dist/server/handlers/stored-skill-favorites.cjs +5 -4
  236. package/dist/server/handlers/stored-skill-favorites.cjs.map +1 -1
  237. package/dist/server/handlers/stored-skill-favorites.js +3 -3
  238. package/dist/server/handlers/stored-skills.cjs +5 -4
  239. package/dist/server/handlers/stored-skills.cjs.map +1 -1
  240. package/dist/server/handlers/stored-skills.js +3 -3
  241. package/dist/server/handlers/stored-workspaces.cjs +3 -2
  242. package/dist/server/handlers/stored-workspaces.cjs.map +1 -1
  243. package/dist/server/handlers/stored-workspaces.js +1 -1
  244. package/dist/server/handlers/system.cjs +3 -2
  245. package/dist/server/handlers/system.cjs.map +1 -1
  246. package/dist/server/handlers/system.js +1 -1
  247. package/dist/server/handlers/test-utils.cjs +1 -0
  248. package/dist/server/handlers/test-utils.cjs.map +1 -1
  249. package/dist/server/handlers/tool-providers.cjs +3 -2
  250. package/dist/server/handlers/tool-providers.cjs.map +1 -1
  251. package/dist/server/handlers/tool-providers.js +1 -1
  252. package/dist/server/handlers/tool-schema-overrides.cjs +47 -0
  253. package/dist/server/handlers/tool-schema-overrides.cjs.map +1 -0
  254. package/dist/server/handlers/tool-schema-overrides.d.ts +13 -0
  255. package/dist/server/handlers/tool-schema-overrides.d.ts.map +1 -0
  256. package/dist/server/handlers/tool-schema-overrides.js +45 -0
  257. package/dist/server/handlers/tool-schema-overrides.js.map +1 -0
  258. package/dist/server/handlers/tools.cjs +11 -10
  259. package/dist/server/handlers/tools.cjs.map +1 -1
  260. package/dist/server/handlers/tools.d.ts.map +1 -1
  261. package/dist/server/handlers/tools.js +8 -7
  262. package/dist/server/handlers/tools.js.map +1 -1
  263. package/dist/server/handlers/utils.cjs +2 -1
  264. package/dist/server/handlers/utils.js +1 -1
  265. package/dist/server/handlers/validate-agent-instructions.cjs +2 -1
  266. package/dist/server/handlers/validate-agent-instructions.cjs.map +1 -1
  267. package/dist/server/handlers/validate-agent-instructions.js +1 -1
  268. package/dist/server/handlers/validate-avatar.cjs +1 -0
  269. package/dist/server/handlers/validate-avatar.cjs.map +1 -1
  270. package/dist/server/handlers/vector.cjs +2 -2
  271. package/dist/server/handlers/vector.js +1 -1
  272. package/dist/server/handlers/version-helpers.cjs +1 -0
  273. package/dist/server/handlers/version-helpers.cjs.map +1 -1
  274. package/dist/server/handlers/voice.cjs +1 -1
  275. package/dist/server/handlers/voice.js +1 -1
  276. package/dist/server/handlers/workflows.cjs +5 -5
  277. package/dist/server/handlers/workflows.js +4 -4
  278. package/dist/server/handlers/workspace.cjs +2 -2
  279. package/dist/server/handlers/workspace.js +1 -1
  280. package/dist/server/handlers.cjs +10 -2
  281. package/dist/server/handlers.d.ts +1 -0
  282. package/dist/server/handlers.d.ts.map +1 -1
  283. package/dist/server/handlers.js +4 -3
  284. package/dist/server/schemas/agents.d.ts +12 -0
  285. package/dist/server/schemas/agents.d.ts.map +1 -1
  286. package/dist/server/schemas/index.cjs +12 -9
  287. package/dist/server/schemas/index.js +8 -8
  288. package/dist/server/schemas/stored-agents.d.ts +40 -7
  289. package/dist/server/schemas/stored-agents.d.ts.map +1 -1
  290. package/dist/server/server-adapter/index.cjs +69 -6
  291. package/dist/server/server-adapter/index.cjs.map +1 -1
  292. package/dist/server/server-adapter/index.d.ts +12 -0
  293. package/dist/server/server-adapter/index.d.ts.map +1 -1
  294. package/dist/server/server-adapter/index.js +66 -6
  295. package/dist/server/server-adapter/index.js.map +1 -1
  296. package/dist/server/server-adapter/mcp-auth.d.ts +43 -0
  297. package/dist/server/server-adapter/mcp-auth.d.ts.map +1 -0
  298. package/dist/server/server-adapter/routes/agents.d.ts +2 -0
  299. package/dist/server/server-adapter/routes/agents.d.ts.map +1 -1
  300. package/dist/{stored-agents-CPxfYRH9.cjs → stored-agents-D6JEb3zN.cjs} +15 -3
  301. package/dist/stored-agents-D6JEb3zN.cjs.map +1 -0
  302. package/dist/{stored-agents-BRBZM-Xl.js → stored-agents-DMW5wrF7.js} +15 -3
  303. package/dist/stored-agents-DMW5wrF7.js.map +1 -0
  304. package/dist/{stored-scorers-B__LF0Cy.js → stored-scorers-BA4suzgn.js} +2 -2
  305. package/dist/{stored-scorers-B__LF0Cy.js.map → stored-scorers-BA4suzgn.js.map} +1 -1
  306. package/dist/{stored-scorers-Cml7jPJv.cjs → stored-scorers-D8IwVM0S.cjs} +2 -2
  307. package/dist/{stored-scorers-Cml7jPJv.cjs.map → stored-scorers-D8IwVM0S.cjs.map} +1 -1
  308. package/dist/{sync-djJ8Lmds.js → sync-BG15Yae1.js} +22 -22
  309. package/dist/{sync-djJ8Lmds.js.map → sync-BG15Yae1.js.map} +1 -1
  310. package/dist/{sync-BHatXKfg.cjs → sync-C4LbbSKR.cjs} +22 -22
  311. package/dist/{sync-BHatXKfg.cjs.map → sync-C4LbbSKR.cjs.map} +1 -1
  312. package/dist/{utils-QXKhjIm6.js → utils-CljhO7OY.js} +2 -2
  313. package/dist/{utils-QXKhjIm6.js.map → utils-CljhO7OY.js.map} +1 -1
  314. package/dist/{utils-wTwyTjg3.cjs → utils-Xnn91QBW.cjs} +3 -3
  315. package/dist/{utils-wTwyTjg3.cjs.map → utils-Xnn91QBW.cjs.map} +1 -1
  316. package/dist/{utils-CmHd1Sgh.js → utils-qMLbyf2U.js} +2 -2
  317. package/dist/{utils-CmHd1Sgh.js.map → utils-qMLbyf2U.js.map} +1 -1
  318. package/dist/{utils-Bna_JCkb.cjs → utils-zkjmP1OK.cjs} +4 -4
  319. package/dist/{utils-Bna_JCkb.cjs.map → utils-zkjmP1OK.cjs.map} +1 -1
  320. package/package.json +4 -4
  321. package/dist/agents-0Tw3kkD_.cjs.map +0 -1
  322. package/dist/agents-uT8ZDE4k.js.map +0 -1
  323. package/dist/constants-ChBaIptn.cjs.map +0 -1
  324. package/dist/constants-Cp1x-6sJ.js.map +0 -1
  325. package/dist/dist-DKBns4r6.js.map +0 -1
  326. package/dist/dist-DhGJtn6J.cjs.map +0 -1
  327. package/dist/probe-image-size-C2F59z8Z.cjs.map +0 -1
  328. package/dist/probe-image-size-mXCWYNrz.js.map +0 -1
  329. package/dist/routes-B4p8XidO.js.map +0 -1
  330. package/dist/routes-BlSot4At.cjs.map +0 -1
  331. package/dist/schema-DkBbires.cjs +0 -1
  332. package/dist/stored-agents-BRBZM-Xl.js.map +0 -1
  333. package/dist/stored-agents-CPxfYRH9.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"observability-shared.cjs","names":["candidate","HTTPException","coreFeatures","z","paginationArgsSchema","wrapSchemaForQueryParams","listModeSchema","deltaCursorSchema","deltaLimitSchema"],"sources":["../../../src/server/handlers/observability-shared.ts"],"sourcesContent":["import type { Mastra } from '@mastra/core';\nimport { coreFeatures } from '@mastra/core/features';\nimport type { MastraCompositeStore, ObservabilityStorage, ScoresStorage } from '@mastra/core/storage';\nimport { z } from 'zod/v4';\nimport { HTTPException } from '../http-exception';\nimport type { ServerRoute } from '../server-adapter/routes';\nimport { wrapSchemaForQueryParams } from '../server-adapter/routes/route-builder';\nimport {\n deltaCursorSchema,\n deltaLimitSchema,\n listModeSchema,\n paginationArgsSchema,\n} from './observability-list-query-schemas';\n\nexport const OBSERVABILITY_DELTA_POLLING_FEATURE = 'observability-delta-polling';\nexport const OBSERVABILITY_DELTA_POLLING_UPGRADE_MESSAGE =\n 'Delta polling requires a newer @mastra/core with observability delta polling support. Please upgrade.';\n\nexport const OBSERVABILITY_LIST_ENDPOINTS = {\n traces: 'traces',\n branches: 'branches',\n logs: 'logs',\n metrics: 'metrics',\n scores: 'scores',\n feedback: 'feedback',\n} as const;\n\nexport type ObservabilityListEndpoint =\n (typeof OBSERVABILITY_LIST_ENDPOINTS)[keyof typeof OBSERVABILITY_LIST_ENDPOINTS];\nconst OBSERVABILITY_DELTA_POLLING_STORAGE_FEATURE = 'delta-polling';\n\nfunction getFeatures(observabilityStore: ObservabilityStorage): readonly string[] | undefined {\n const candidate = observabilityStore as ObservabilityStorage & {\n getFeatures?: () => readonly string[] | undefined;\n };\n return candidate.getFeatures?.();\n}\n\n/** Retrieves MastraCompositeStore or throws 500 if unavailable. */\nexport function getStorage(mastra: Mastra): MastraCompositeStore {\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n return storage;\n}\n\n/** Retrieves the observability storage domain or throws 501 if unavailable. */\nexport async function getObservabilityStore(mastra: Mastra): Promise<ObservabilityStorage> {\n const storage = getStorage(mastra);\n const observability = await storage.getStore('observability');\n if (!observability) {\n // 501, not 500: a missing or explicitly disabled observability domain\n // (e.g. `domains: { observability: false }`) is a capability gap, not a\n // server failure — matching the other 501s in this file.\n throw new HTTPException(501, { message: 'Observability storage domain is not available' });\n }\n return observability;\n}\n\n/** Retrieves the scores storage domain or throws 501 if unavailable. */\nexport async function getScoresStore(mastra: Mastra): Promise<ScoresStorage> {\n const storage = getStorage(mastra);\n const scores = await storage.getStore('scores');\n if (!scores) {\n throw new HTTPException(501, { message: 'Scores storage domain is not available' });\n }\n return scores;\n}\n\nexport function assertObservabilityDeltaSupported(\n observabilityStore: ObservabilityStorage,\n endpoint: ObservabilityListEndpoint,\n) {\n if (!coreFeatures.has(OBSERVABILITY_DELTA_POLLING_FEATURE)) {\n throw new HTTPException(501, {\n message: `${OBSERVABILITY_DELTA_POLLING_UPGRADE_MESSAGE} (endpoint: ${endpoint})`,\n });\n }\n\n if (getFeatures(observabilityStore)?.includes(OBSERVABILITY_DELTA_POLLING_STORAGE_FEATURE)) {\n return;\n }\n\n throw new HTTPException(501, {\n message: `Delta polling is not supported by the configured observability store for ${endpoint}`,\n });\n}\n\nexport interface RouteDetails {\n method: ServerRoute['method'];\n path: `/${string}`;\n summary: string;\n description: string;\n requiresPermission?: ServerRoute['requiresPermission'];\n}\n\nexport const NEW_ROUTE_DEFS = {\n LIST_METRICS: {\n method: 'GET',\n path: '/observability/metrics',\n summary: 'List metrics',\n description: 'Returns a paginated list of metrics with optional filtering and sorting',\n },\n\n LIST_LOGS: {\n method: 'GET',\n path: '/observability/logs',\n summary: 'List logs',\n description: 'Returns a paginated list of logs with optional filtering and sorting',\n },\n\n LIST_SCORES: {\n method: 'GET',\n path: '/observability/scores',\n summary: 'List scores',\n description: 'Returns a paginated list of scores with optional filtering and sorting',\n },\n\n CREATE_SCORE: {\n method: 'POST',\n path: '/observability/scores',\n summary: 'Create a score',\n description: 'Creates a single score record in the observability store',\n },\n\n GET_SCORE: {\n method: 'GET',\n path: '/observability/scores/:scoreId',\n summary: 'Get score',\n description: 'Returns a single score by scoreId',\n },\n\n GET_SCORE_AGGREGATE: {\n method: 'POST',\n path: '/observability/scores/aggregate',\n summary: 'Get score aggregate',\n description: 'Returns an aggregated score value with optional period-over-period comparison',\n requiresPermission: 'observability:read',\n },\n\n GET_SCORE_BREAKDOWN: {\n method: 'POST',\n path: '/observability/scores/breakdown',\n summary: 'Get score breakdown',\n description: 'Returns score values grouped by specified dimensions',\n requiresPermission: 'observability:read',\n },\n\n GET_SCORE_TIME_SERIES: {\n method: 'POST',\n path: '/observability/scores/timeseries',\n summary: 'Get score time series',\n description: 'Returns score values bucketed by time interval with optional grouping',\n requiresPermission: 'observability:read',\n },\n\n GET_SCORE_PERCENTILES: {\n method: 'POST',\n path: '/observability/scores/percentiles',\n summary: 'Get score percentiles',\n description: 'Returns percentile values for a score bucketed by time interval',\n requiresPermission: 'observability:read',\n },\n\n LIST_FEEDBACK: {\n method: 'GET',\n path: '/observability/feedback',\n summary: 'List feedback',\n description: 'Returns a paginated list of feedback with optional filtering and sorting',\n },\n\n CREATE_FEEDBACK: {\n method: 'POST',\n path: '/observability/feedback',\n summary: 'Create feedback',\n description: 'Creates a single feedback record in the observability store',\n },\n\n GET_FEEDBACK_AGGREGATE: {\n method: 'POST',\n path: '/observability/feedback/aggregate',\n summary: 'Get feedback aggregate',\n description: 'Returns an aggregated numeric feedback value with optional period-over-period comparison',\n requiresPermission: 'observability:read',\n },\n\n GET_FEEDBACK_BREAKDOWN: {\n method: 'POST',\n path: '/observability/feedback/breakdown',\n summary: 'Get feedback breakdown',\n description: 'Returns numeric feedback values grouped by specified dimensions',\n requiresPermission: 'observability:read',\n },\n\n GET_FEEDBACK_TIME_SERIES: {\n method: 'POST',\n path: '/observability/feedback/timeseries',\n summary: 'Get feedback time series',\n description: 'Returns numeric feedback values bucketed by time interval with optional grouping',\n requiresPermission: 'observability:read',\n },\n\n GET_FEEDBACK_PERCENTILES: {\n method: 'POST',\n path: '/observability/feedback/percentiles',\n summary: 'Get feedback percentiles',\n description: 'Returns percentile values for numeric feedback bucketed by time interval',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_AGGREGATE: {\n method: 'POST',\n path: '/observability/metrics/aggregate',\n summary: 'Get metric aggregate',\n description: 'Returns an aggregated metric value with optional period-over-period comparison',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_BREAKDOWN: {\n method: 'POST',\n path: '/observability/metrics/breakdown',\n summary: 'Get metric breakdown',\n description: 'Returns metric values grouped by specified dimensions',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_TIME_SERIES: {\n method: 'POST',\n path: '/observability/metrics/timeseries',\n summary: 'Get metric time series',\n description: 'Returns metric values bucketed by time interval with optional grouping',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_PERCENTILES: {\n method: 'POST',\n path: '/observability/metrics/percentiles',\n summary: 'Get metric percentiles',\n description: 'Returns percentile values for a metric bucketed by time interval',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_NAMES: {\n method: 'GET',\n path: '/observability/discovery/metric-names',\n summary: 'Get metric names',\n description: 'Returns distinct metric names with optional prefix filtering',\n },\n\n GET_METRIC_LABEL_KEYS: {\n method: 'GET',\n path: '/observability/discovery/metric-label-keys',\n summary: 'Get metric label keys',\n description: 'Returns distinct label keys for a given metric',\n },\n\n GET_METRIC_LABEL_VALUES: {\n method: 'GET',\n path: '/observability/discovery/metric-label-values',\n summary: 'Get label values',\n description: 'Returns distinct values for a given metric label key',\n },\n\n GET_ENTITY_TYPES: {\n method: 'GET',\n path: '/observability/discovery/entity-types',\n summary: 'Get entity types',\n description: 'Returns distinct entity types from observability data',\n },\n\n GET_ENTITY_NAMES: {\n method: 'GET',\n path: '/observability/discovery/entity-names',\n summary: 'Get entity names',\n description: 'Returns distinct entity names with optional type filtering',\n },\n\n GET_SERVICE_NAMES: {\n method: 'GET',\n path: '/observability/discovery/service-names',\n summary: 'Get service names',\n description: 'Returns distinct service names from observability data',\n },\n\n GET_ENVIRONMENTS: {\n method: 'GET',\n path: '/observability/discovery/environments',\n summary: 'Get environments',\n description: 'Returns distinct environments from observability data',\n },\n\n GET_TAGS: {\n method: 'GET',\n path: '/observability/discovery/tags',\n summary: 'Get tags',\n description: 'Returns distinct tags with optional entity type filtering',\n },\n} as const satisfies Record<string, RouteDetails>;\n\nexport type NewRoutesKey = keyof typeof NEW_ROUTE_DEFS;\nexport type NewRoutesDefinitions = (typeof NEW_ROUTE_DEFS)[NewRoutesKey];\n\nexport function createObservabilityListQuerySchema<\n TFilter extends z.ZodObject<z.ZodRawShape>,\n TOrderBy extends z.ZodObject<z.ZodRawShape>,\n>(filterSchema: TFilter, orderBySchema: TOrderBy) {\n const unwrapDefault = (schema: unknown) => {\n const zodSchema = schema as z.ZodTypeAny;\n return zodSchema instanceof z.ZodDefault ? zodSchema.unwrap() : zodSchema;\n };\n const paginationShape = paginationArgsSchema.shape as unknown as Record<string, z.ZodTypeAny>;\n const orderByShape = orderBySchema.shape as unknown as Record<string, z.ZodTypeAny>;\n\n const pageSchema = unwrapDefault(paginationShape.page);\n const perPageSchema = unwrapDefault(paginationShape.perPage);\n const fieldSchema = orderByShape.field ? unwrapDefault(orderByShape.field) : z.never().optional();\n const directionSchema = orderByShape.direction ? unwrapDefault(orderByShape.direction) : z.never().optional();\n\n return wrapSchemaForQueryParams(\n z\n .object({\n ...filterSchema.shape,\n page: pageSchema,\n perPage: perPageSchema,\n field: fieldSchema,\n direction: directionSchema,\n mode: listModeSchema.optional(),\n after: deltaCursorSchema.optional(),\n limit: deltaLimitSchema,\n })\n .partial(),\n ).superRefine((value, ctx) => {\n const isDelta = value.mode === 'delta';\n const hasPagination = value.page !== undefined || value.perPage !== undefined;\n const hasOrderBy = value.field !== undefined || value.direction !== undefined;\n const hasAfter = value.after !== undefined;\n const hasLimit = value.limit !== undefined;\n\n if (isDelta) {\n if (hasPagination) {\n if (value.page !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['page'],\n message: '`page` is not allowed when `mode=delta`',\n });\n }\n if (value.perPage !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['perPage'],\n message: '`perPage` is not allowed when `mode=delta`',\n });\n }\n }\n if (hasOrderBy) {\n if (value.field !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['field'],\n message: '`field` is not allowed when `mode=delta`',\n });\n }\n if (value.direction !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['direction'],\n message: '`direction` is not allowed when `mode=delta`',\n });\n }\n }\n return;\n }\n\n if (hasAfter) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['after'],\n message: '`after` is only allowed when `mode=delta`',\n });\n }\n if (hasLimit) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['limit'],\n message: '`limit` is only allowed when `mode=delta`',\n });\n }\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"observability-shared.cjs","names":["candidate","HTTPException","coreFeatures","z","paginationArgsSchema","wrapSchemaForQueryParams","listModeSchema","deltaCursorSchema","deltaLimitSchema"],"sources":["../../../src/server/handlers/observability-shared.ts"],"sourcesContent":["import type { Mastra } from '@mastra/core';\nimport { coreFeatures } from '@mastra/core/features';\nimport type { MastraCompositeStore, ObservabilityStorage, ScoresStorage } from '@mastra/core/storage';\nimport { z } from 'zod/v4';\nimport { HTTPException } from '../http-exception';\nimport type { ServerRoute } from '../server-adapter/routes';\nimport { wrapSchemaForQueryParams } from '../server-adapter/routes/route-builder';\nimport {\n deltaCursorSchema,\n deltaLimitSchema,\n listModeSchema,\n paginationArgsSchema,\n} from './observability-list-query-schemas';\n\nexport const OBSERVABILITY_DELTA_POLLING_FEATURE = 'observability-delta-polling';\nexport const OBSERVABILITY_DELTA_POLLING_UPGRADE_MESSAGE =\n 'Delta polling requires a newer @mastra/core with observability delta polling support. Please upgrade.';\n\nexport const OBSERVABILITY_LIST_ENDPOINTS = {\n traces: 'traces',\n branches: 'branches',\n logs: 'logs',\n metrics: 'metrics',\n scores: 'scores',\n feedback: 'feedback',\n} as const;\n\nexport type ObservabilityListEndpoint =\n (typeof OBSERVABILITY_LIST_ENDPOINTS)[keyof typeof OBSERVABILITY_LIST_ENDPOINTS];\nconst OBSERVABILITY_DELTA_POLLING_STORAGE_FEATURE = 'delta-polling';\n\nfunction getFeatures(observabilityStore: ObservabilityStorage): readonly string[] | undefined {\n const candidate = observabilityStore as ObservabilityStorage & {\n getFeatures?: () => readonly string[] | undefined;\n };\n return candidate.getFeatures?.();\n}\n\n/** Retrieves MastraCompositeStore or throws 500 if unavailable. */\nexport function getStorage(mastra: Mastra): MastraCompositeStore {\n const storage = mastra.getStorage();\n if (!storage) {\n throw new HTTPException(500, { message: 'Storage is not available' });\n }\n return storage;\n}\n\n/** Retrieves the observability storage domain or throws 501 if unavailable. */\nexport async function getObservabilityStore(mastra: Mastra): Promise<ObservabilityStorage> {\n const storage = getStorage(mastra);\n const observability = await storage.getStore('observability');\n if (!observability) {\n // 501, not 500: a missing or explicitly disabled observability domain\n // (e.g. `domains: { observability: false }`) is a capability gap, not a\n // server failure — matching the other 501s in this file.\n throw new HTTPException(501, { message: 'Observability storage domain is not available' });\n }\n return observability;\n}\n\n/** Retrieves the scores storage domain or throws 501 if unavailable. */\nexport async function getScoresStore(mastra: Mastra): Promise<ScoresStorage> {\n const storage = getStorage(mastra);\n const scores = await storage.getStore('scores');\n if (!scores) {\n throw new HTTPException(501, { message: 'Scores storage domain is not available' });\n }\n return scores;\n}\n\nexport function assertObservabilityDeltaSupported(\n observabilityStore: ObservabilityStorage,\n endpoint: ObservabilityListEndpoint,\n) {\n if (!coreFeatures.has(OBSERVABILITY_DELTA_POLLING_FEATURE)) {\n throw new HTTPException(501, {\n message: `${OBSERVABILITY_DELTA_POLLING_UPGRADE_MESSAGE} (endpoint: ${endpoint})`,\n });\n }\n\n if (getFeatures(observabilityStore)?.includes(OBSERVABILITY_DELTA_POLLING_STORAGE_FEATURE)) {\n return;\n }\n\n throw new HTTPException(501, {\n message: `Delta polling is not supported by the configured observability store for ${endpoint}`,\n });\n}\n\nexport interface RouteDetails {\n method: ServerRoute['method'];\n path: `/${string}`;\n summary: string;\n description: string;\n requiresPermission?: ServerRoute['requiresPermission'];\n}\n\nexport const NEW_ROUTE_DEFS = {\n LIST_METRICS: {\n method: 'GET',\n path: '/observability/metrics',\n summary: 'List metrics',\n description: 'Returns a paginated list of metrics with optional filtering and sorting',\n },\n\n LIST_LOGS: {\n method: 'GET',\n path: '/observability/logs',\n summary: 'List logs',\n description: 'Returns a paginated list of logs with optional filtering and sorting',\n },\n\n LIST_SCORES: {\n method: 'GET',\n path: '/observability/scores',\n summary: 'List scores',\n description: 'Returns a paginated list of scores with optional filtering and sorting',\n },\n\n CREATE_SCORE: {\n method: 'POST',\n path: '/observability/scores',\n summary: 'Create a score',\n description: 'Creates a single score record in the observability store',\n },\n\n GET_SCORE: {\n method: 'GET',\n path: '/observability/scores/:scoreId',\n summary: 'Get score',\n description: 'Returns a single score by scoreId',\n },\n\n GET_SCORE_AGGREGATE: {\n method: 'POST',\n path: '/observability/scores/aggregate',\n summary: 'Get score aggregate',\n description: 'Returns an aggregated score value with optional period-over-period comparison',\n requiresPermission: 'observability:read',\n },\n\n GET_SCORE_BREAKDOWN: {\n method: 'POST',\n path: '/observability/scores/breakdown',\n summary: 'Get score breakdown',\n description: 'Returns score values grouped by specified dimensions',\n requiresPermission: 'observability:read',\n },\n\n GET_SCORE_TIME_SERIES: {\n method: 'POST',\n path: '/observability/scores/timeseries',\n summary: 'Get score time series',\n description: 'Returns score values bucketed by time interval with optional grouping',\n requiresPermission: 'observability:read',\n },\n\n GET_SCORE_PERCENTILES: {\n method: 'POST',\n path: '/observability/scores/percentiles',\n summary: 'Get score percentiles',\n description: 'Returns percentile values for a score bucketed by time interval',\n requiresPermission: 'observability:read',\n },\n\n LIST_FEEDBACK: {\n method: 'GET',\n path: '/observability/feedback',\n summary: 'List feedback',\n description: 'Returns a paginated list of feedback with optional filtering and sorting',\n },\n\n CREATE_FEEDBACK: {\n method: 'POST',\n path: '/observability/feedback',\n summary: 'Create feedback',\n description: 'Creates a single feedback record in the observability store',\n },\n\n GET_FEEDBACK_AGGREGATE: {\n method: 'POST',\n path: '/observability/feedback/aggregate',\n summary: 'Get feedback aggregate',\n description: 'Returns an aggregated numeric feedback value with optional period-over-period comparison',\n requiresPermission: 'observability:read',\n },\n\n GET_FEEDBACK_BREAKDOWN: {\n method: 'POST',\n path: '/observability/feedback/breakdown',\n summary: 'Get feedback breakdown',\n description: 'Returns numeric feedback values grouped by specified dimensions',\n requiresPermission: 'observability:read',\n },\n\n GET_FEEDBACK_TIME_SERIES: {\n method: 'POST',\n path: '/observability/feedback/timeseries',\n summary: 'Get feedback time series',\n description: 'Returns numeric feedback values bucketed by time interval with optional grouping',\n requiresPermission: 'observability:read',\n },\n\n GET_FEEDBACK_PERCENTILES: {\n method: 'POST',\n path: '/observability/feedback/percentiles',\n summary: 'Get feedback percentiles',\n description: 'Returns percentile values for numeric feedback bucketed by time interval',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_AGGREGATE: {\n method: 'POST',\n path: '/observability/metrics/aggregate',\n summary: 'Get metric aggregate',\n description: 'Returns an aggregated metric value with optional period-over-period comparison',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_BREAKDOWN: {\n method: 'POST',\n path: '/observability/metrics/breakdown',\n summary: 'Get metric breakdown',\n description: 'Returns metric values grouped by specified dimensions',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_TIME_SERIES: {\n method: 'POST',\n path: '/observability/metrics/timeseries',\n summary: 'Get metric time series',\n description: 'Returns metric values bucketed by time interval with optional grouping',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_PERCENTILES: {\n method: 'POST',\n path: '/observability/metrics/percentiles',\n summary: 'Get metric percentiles',\n description: 'Returns percentile values for a metric bucketed by time interval',\n requiresPermission: 'observability:read',\n },\n\n GET_METRIC_NAMES: {\n method: 'GET',\n path: '/observability/discovery/metric-names',\n summary: 'Get metric names',\n description: 'Returns distinct metric names with optional prefix filtering',\n },\n\n GET_METRIC_LABEL_KEYS: {\n method: 'GET',\n path: '/observability/discovery/metric-label-keys',\n summary: 'Get metric label keys',\n description: 'Returns distinct label keys for a given metric',\n },\n\n GET_METRIC_LABEL_VALUES: {\n method: 'GET',\n path: '/observability/discovery/metric-label-values',\n summary: 'Get label values',\n description: 'Returns distinct values for a given metric label key',\n },\n\n GET_ENTITY_TYPES: {\n method: 'GET',\n path: '/observability/discovery/entity-types',\n summary: 'Get entity types',\n description: 'Returns distinct entity types from observability data',\n },\n\n GET_ENTITY_NAMES: {\n method: 'GET',\n path: '/observability/discovery/entity-names',\n summary: 'Get entity names',\n description: 'Returns distinct entity names with optional type filtering',\n },\n\n GET_SERVICE_NAMES: {\n method: 'GET',\n path: '/observability/discovery/service-names',\n summary: 'Get service names',\n description: 'Returns distinct service names from observability data',\n },\n\n GET_ENVIRONMENTS: {\n method: 'GET',\n path: '/observability/discovery/environments',\n summary: 'Get environments',\n description: 'Returns distinct environments from observability data',\n },\n\n GET_TAGS: {\n method: 'GET',\n path: '/observability/discovery/tags',\n summary: 'Get tags',\n description: 'Returns distinct tags with optional entity type filtering',\n },\n} as const satisfies Record<string, RouteDetails>;\n\nexport type NewRoutesKey = keyof typeof NEW_ROUTE_DEFS;\nexport type NewRoutesDefinitions = (typeof NEW_ROUTE_DEFS)[NewRoutesKey];\n\nexport function createObservabilityListQuerySchema<\n TFilter extends z.ZodObject<z.ZodRawShape>,\n TOrderBy extends z.ZodObject<z.ZodRawShape>,\n>(filterSchema: TFilter, orderBySchema: TOrderBy) {\n const unwrapDefault = (schema: unknown) => {\n const zodSchema = schema as z.ZodTypeAny;\n return zodSchema instanceof z.ZodDefault ? zodSchema.unwrap() : zodSchema;\n };\n const paginationShape = paginationArgsSchema.shape as unknown as Record<string, z.ZodTypeAny>;\n const orderByShape = orderBySchema.shape as unknown as Record<string, z.ZodTypeAny>;\n\n const pageSchema = unwrapDefault(paginationShape.page);\n const perPageSchema = unwrapDefault(paginationShape.perPage);\n const fieldSchema = orderByShape.field ? unwrapDefault(orderByShape.field) : z.never().optional();\n const directionSchema = orderByShape.direction ? unwrapDefault(orderByShape.direction) : z.never().optional();\n\n return wrapSchemaForQueryParams(\n z\n .object({\n ...filterSchema.shape,\n page: pageSchema,\n perPage: perPageSchema,\n field: fieldSchema,\n direction: directionSchema,\n mode: listModeSchema.optional(),\n after: deltaCursorSchema.optional(),\n limit: deltaLimitSchema,\n })\n .partial(),\n ).superRefine((value, ctx) => {\n const isDelta = value.mode === 'delta';\n const hasPagination = value.page !== undefined || value.perPage !== undefined;\n const hasOrderBy = value.field !== undefined || value.direction !== undefined;\n const hasAfter = value.after !== undefined;\n const hasLimit = value.limit !== undefined;\n\n if (isDelta) {\n if (hasPagination) {\n if (value.page !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['page'],\n message: '`page` is not allowed when `mode=delta`',\n });\n }\n if (value.perPage !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['perPage'],\n message: '`perPage` is not allowed when `mode=delta`',\n });\n }\n }\n if (hasOrderBy) {\n if (value.field !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['field'],\n message: '`field` is not allowed when `mode=delta`',\n });\n }\n if (value.direction !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['direction'],\n message: '`direction` is not allowed when `mode=delta`',\n });\n }\n }\n return;\n }\n\n if (hasAfter) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['after'],\n message: '`after` is only allowed when `mode=delta`',\n });\n }\n if (hasLimit) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['limit'],\n message: '`limit` is only allowed when `mode=delta`',\n });\n }\n });\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_rolldown_runtime = require("../../rolldown-runtime-CVvi-lCc.cjs");
2
+ const require_rolldown_runtime = require("../../rolldown-runtime-Bd6kNlEP.cjs");
3
3
  let zod_v4 = require("zod/v4");
4
4
  let _mastra_core_storage = require("@mastra/core/storage");
5
5
  _mastra_core_storage = require_rolldown_runtime.__toESM(_mastra_core_storage, 1);
@@ -1,12 +1,12 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_rolldown_runtime = require("../../rolldown-runtime-CVvi-lCc.cjs");
2
+ const require_rolldown_runtime = require("../../rolldown-runtime-Bd6kNlEP.cjs");
3
3
  const require_http_exception = require("../../http-exception-CKDHupKw.cjs");
4
- const require_route_builder = require("../../route-builder-BAAedfru.cjs");
4
+ const require_route_builder = require("../../route-builder-CWsok5ci.cjs");
5
5
  const require_server_handlers_error = require("./error.cjs");
6
6
  const require_server_handlers_observability_list_query_schemas = require("./observability-list-query-schemas.cjs");
7
7
  const require_server_handlers_observability_shared = require("./observability-shared.cjs");
8
8
  const require_server_handlers_observability_storage_schemas = require("./observability-storage-schemas.cjs");
9
- const require_observability_new_endpoints = require("../../observability-new-endpoints-BC-dasRY.cjs");
9
+ const require_observability_new_endpoints = require("../../observability-new-endpoints-gRCFhnRr.cjs");
10
10
  let zod_v4 = require("zod/v4");
11
11
  let _mastra_core_evals = require("@mastra/core/evals");
12
12
  let _mastra_core_evals_scoreTraces = require("@mastra/core/evals/scoreTraces");
@@ -1,4 +1,4 @@
1
- import { n as __exportAll } from "../../rolldown-runtime-DuvcJU0W.js";
1
+ import { r as __exportAll } from "../../rolldown-runtime-maW3aOIk.js";
2
2
  import { t as HTTPException } from "../../http-exception-CyfxZB6W.js";
3
3
  import { a as wrapSchemaForQueryParams, i as pickParams, n as createRoute } from "../../route-builder-YQ_gLIvW.js";
4
4
  import { handleError } from "./error.js";
@@ -0,0 +1,64 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_rolldown_runtime = require("../../rolldown-runtime-Bd6kNlEP.cjs");
3
+ const require_http_exception = require("../../http-exception-CKDHupKw.cjs");
4
+ const require_agents = require("../../agents-CLv_RFQx.cjs");
5
+ const require_route_builder = require("../../route-builder-CWsok5ci.cjs");
6
+ const require_server_handlers_error = require("./error.cjs");
7
+ const require_utils = require("../../utils-Xnn91QBW.cjs");
8
+ const require_server_handlers_agents = require("./agents.cjs");
9
+ let _mastra_core_tools = require("@mastra/core/tools");
10
+ //#region src/server/handlers/plans.ts
11
+ var plans_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({ READ_AGENT_PLAN_ROUTE: () => READ_AGENT_PLAN_ROUTE });
12
+ const PLANS_DIRECTORY = ".mastracode/plans/";
13
+ function isPlanPath(path) {
14
+ if (!path.startsWith(PLANS_DIRECTORY)) return false;
15
+ if (!path.endsWith(".md")) return false;
16
+ if (path.includes("\\") || path.includes("\0")) return false;
17
+ return path.slice(18).split("/").every((segment) => segment.length > 0 && segment !== "." && segment !== "..");
18
+ }
19
+ const READ_AGENT_PLAN_ROUTE = require_route_builder.createRoute({
20
+ method: "GET",
21
+ path: "/agents/:agentId/plans/file",
22
+ responseType: "json",
23
+ pathParamSchema: require_agents.agentIdPathParams,
24
+ queryParamSchema: require_agents.agentPlanQuerySchema,
25
+ responseSchema: require_agents.agentPlanResponseSchema,
26
+ summary: "Read a submitted agent plan",
27
+ description: "Returns a markdown plan when the agent exposes the core submit_plan capability and the path is under .mastracode/plans/.",
28
+ tags: ["Agents", "Tools"],
29
+ requiresAuth: true,
30
+ requiresPermission: require_utils.MastraFGAPermissions.AGENTS_READ,
31
+ handler: async ({ agentId, mastra, path, requestContext, status, versionId }) => {
32
+ try {
33
+ const agent = await require_server_handlers_agents.getAgentFromSystem({
34
+ mastra,
35
+ agentId,
36
+ versionOptions: versionId ? { versionId } : status ? { status } : void 0,
37
+ requestContext
38
+ });
39
+ const tools = await agent.listTools({ requestContext });
40
+ if (!Object.values(tools).some((tool) => typeof tool === "object" && tool !== null && "id" in tool && tool.id === _mastra_core_tools.submitPlanTool.id)) throw new require_http_exception.HTTPException(404, { message: "Plan capability not found" });
41
+ if (!isPlanPath(path)) throw new require_http_exception.HTTPException(400, { message: "Invalid plan path" });
42
+ const filesystem = await (await agent.getWorkspace({ requestContext }))?.resolveFilesystem({ requestContext });
43
+ if (!filesystem) throw new require_http_exception.HTTPException(404, { message: "No workspace filesystem configured" });
44
+ if (!await filesystem.exists(path)) throw new require_http_exception.HTTPException(404, { message: `Plan file "${path}" not found` });
45
+ const content = await filesystem.readFile(path, { encoding: "utf-8" });
46
+ return {
47
+ path,
48
+ content: typeof content === "string" ? content : content.toString("utf-8")
49
+ };
50
+ } catch (error) {
51
+ return require_server_handlers_error.handleError(error, "Error reading submitted plan");
52
+ }
53
+ }
54
+ });
55
+ //#endregion
56
+ exports.READ_AGENT_PLAN_ROUTE = READ_AGENT_PLAN_ROUTE;
57
+ Object.defineProperty(exports, "plans_exports", {
58
+ enumerable: true,
59
+ get: function() {
60
+ return plans_exports;
61
+ }
62
+ });
63
+
64
+ //# sourceMappingURL=plans.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plans.cjs","names":["createRoute","agentIdPathParams","agentPlanQuerySchema","agentPlanResponseSchema","MastraFGAPermissions","getAgentFromSystem","submitPlanTool","HTTPException","handleError"],"sources":["../../../src/server/handlers/plans.ts"],"sourcesContent":["import { submitPlanTool } from '@mastra/core/tools';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport { agentIdPathParams, agentPlanQuerySchema, agentPlanResponseSchema } from '../schemas/agents';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\n\nconst PLANS_DIRECTORY = '.mastracode/plans/';\n\nfunction isPlanPath(path: string): boolean {\n if (!path.startsWith(PLANS_DIRECTORY)) return false;\n if (!path.endsWith('.md')) return false;\n if (path.includes('\\\\') || path.includes('\\0')) return false;\n\n const relativePath = path.slice(PLANS_DIRECTORY.length);\n const segments = relativePath.split('/');\n return segments.every(segment => segment.length > 0 && segment !== '.' && segment !== '..');\n}\n\nexport const READ_AGENT_PLAN_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId/plans/file',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n queryParamSchema: agentPlanQuerySchema,\n responseSchema: agentPlanResponseSchema,\n summary: 'Read a submitted agent plan',\n description:\n 'Returns a markdown plan when the agent exposes the core submit_plan capability and the path is under .mastracode/plans/.',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ agentId, mastra, path, requestContext, status, versionId }) => {\n try {\n const versionOptions = versionId ? { versionId } : status ? { status } : undefined;\n const agent = await getAgentFromSystem({ mastra, agentId, versionOptions, requestContext });\n const tools = await agent.listTools({ requestContext });\n const hasSubmitPlan = Object.values(tools).some(\n tool => typeof tool === 'object' && tool !== null && 'id' in tool && tool.id === submitPlanTool.id,\n );\n\n if (!hasSubmitPlan) {\n throw new HTTPException(404, { message: 'Plan capability not found' });\n }\n if (!isPlanPath(path)) {\n throw new HTTPException(400, { message: 'Invalid plan path' });\n }\n\n const workspace = await agent.getWorkspace({ requestContext });\n const filesystem = await workspace?.resolveFilesystem({ requestContext });\n if (!filesystem) {\n throw new HTTPException(404, { message: 'No workspace filesystem configured' });\n }\n if (!(await filesystem.exists(path))) {\n throw new HTTPException(404, { message: `Plan file \"${path}\" not found` });\n }\n\n const content = await filesystem.readFile(path, { encoding: 'utf-8' });\n return {\n path,\n content: typeof content === 'string' ? content : content.toString('utf-8'),\n };\n } catch (error) {\n return handleError(error, 'Error reading submitted plan');\n }\n },\n});\n"],"mappings":";;;;;;;;;;;AAQA,MAAM,kBAAkB;AAExB,SAAS,WAAW,MAAuB;CACzC,IAAI,CAAC,KAAK,WAAW,eAAe,GAAG,OAAO;CAC9C,IAAI,CAAC,KAAK,SAAS,KAAK,GAAG,OAAO;CAClC,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,OAAO;CAIvD,OAFqB,KAAK,MAAM,EACJ,CAAC,CAAC,MAAM,GACtB,CAAC,CAAC,OAAM,YAAW,QAAQ,SAAS,KAAK,YAAY,OAAO,YAAY,IAAI;AAC5F;AAEA,MAAa,wBAAwBA,sBAAAA,YAAY;CAC/C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBC,eAAAA;CACjB,kBAAkBC,eAAAA;CAClB,gBAAgBC,eAAAA;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,UAAU,OAAO;CACxB,cAAc;CACd,oBAAoBC,cAAAA,qBAAqB;CACzC,SAAS,OAAO,EAAE,SAAS,QAAQ,MAAM,gBAAgB,QAAQ,gBAAgB;EAC/E,IAAI;GAEF,MAAM,QAAQ,MAAMC,+BAAAA,mBAAmB;IAAE;IAAQ;IAAS,gBADnC,YAAY,EAAE,UAAU,IAAI,SAAS,EAAE,OAAO,IAAI,KAAA;IACC;GAAe,CAAC;GAC1F,MAAM,QAAQ,MAAM,MAAM,UAAU,EAAE,eAAe,CAAC;GAKtD,IAAI,CAJkB,OAAO,OAAO,KAAK,CAAC,CAAC,MACzC,SAAQ,OAAO,SAAS,YAAY,SAAS,QAAQ,QAAQ,QAAQ,KAAK,OAAOC,mBAAAA,eAAe,EAGjF,GACf,MAAM,IAAIC,uBAAAA,cAAc,KAAK,EAAE,SAAS,4BAA4B,CAAC;GAEvE,IAAI,CAAC,WAAW,IAAI,GAClB,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,oBAAoB,CAAC;GAI/D,MAAM,aAAa,OAAM,MADD,MAAM,aAAa,EAAE,eAAe,CAAC,EAAA,EACzB,kBAAkB,EAAE,eAAe,CAAC;GACxE,IAAI,CAAC,YACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,qCAAqC,CAAC;GAEhF,IAAI,CAAE,MAAM,WAAW,OAAO,IAAI,GAChC,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,cAAc,KAAK,aAAa,CAAC;GAG3E,MAAM,UAAU,MAAM,WAAW,SAAS,MAAM,EAAE,UAAU,QAAQ,CAAC;GACrE,OAAO;IACL;IACA,SAAS,OAAO,YAAY,WAAW,UAAU,QAAQ,SAAS,OAAO;GAC3E;EACF,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,8BAA8B;EAC1D;CACF;AACF,CAAC"}
@@ -0,0 +1,43 @@
1
+ export declare const READ_AGENT_PLAN_ROUTE: Omit<import("@mastra/core/server").ApiRoute, "path" | "method" | "handler" | "createHandler" | "openapi"> & {
2
+ method: "GET";
3
+ path: "/agents/:agentId/plans/file";
4
+ responseType: "json";
5
+ streamFormat?: "sse" | "stream";
6
+ sseFlushOnConnect?: boolean;
7
+ handler(params: {
8
+ agentId: string;
9
+ } & {
10
+ path: string;
11
+ status?: "draft" | "published" | undefined;
12
+ versionId?: string | undefined;
13
+ } & import("../server-adapter").ServerContext): Promise<{
14
+ path: string;
15
+ content: string;
16
+ }>;
17
+ pathParamSchema?: import("zod").ZodType;
18
+ queryParamSchema?: import("zod").ZodType;
19
+ bodySchema?: import("zod").ZodType;
20
+ responseSchema?: import("zod").ZodType;
21
+ openapi?: import("../server-adapter/openapi-utils").OpenAPIRoute;
22
+ maxBodySize?: number;
23
+ deprecated?: boolean;
24
+ requiresPermission?: import("@mastra/core/auth").MastraFGAPermissionInput | import("@mastra/core/auth").MastraFGAPermissionInput[];
25
+ fga?: import("@mastra/core/auth").FGARouteConfig;
26
+ onValidationError?: import("@mastra/core/server").ValidationErrorHook;
27
+ readonly __schemas?: import("../server-adapter").RouteSchemas<import("zod").ZodObject<{
28
+ agentId: import("zod").ZodString;
29
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
30
+ status: import("zod").ZodOptional<import("zod").ZodEnum<{
31
+ draft: "draft";
32
+ published: "published";
33
+ }>>;
34
+ versionId: import("zod").ZodOptional<import("zod").ZodString>;
35
+ path: import("zod").ZodString;
36
+ }, import("zod/v4/core").$strip>, undefined, import("zod").ZodObject<{
37
+ path: import("zod").ZodString;
38
+ content: import("zod").ZodString;
39
+ }, import("zod/v4/core").$strip>> | undefined;
40
+ } & {
41
+ readonly _mastraSchemaRoute: true;
42
+ };
43
+ //# sourceMappingURL=plans.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/plans.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+ChC,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { r as __exportAll } from "../../rolldown-runtime-maW3aOIk.js";
2
+ import { t as HTTPException } from "../../http-exception-CyfxZB6W.js";
3
+ import { a as agentIdPathParams, o as agentPlanQuerySchema, s as agentPlanResponseSchema } from "../../agents-BetrUB_N.js";
4
+ import { n as createRoute } from "../../route-builder-YQ_gLIvW.js";
5
+ import { handleError } from "./error.js";
6
+ import { d as MastraFGAPermissions } from "../../utils-qMLbyf2U.js";
7
+ import { getAgentFromSystem } from "./agents.js";
8
+ import { submitPlanTool } from "@mastra/core/tools";
9
+ //#region src/server/handlers/plans.ts
10
+ var plans_exports = /* @__PURE__ */ __exportAll({ READ_AGENT_PLAN_ROUTE: () => READ_AGENT_PLAN_ROUTE });
11
+ const PLANS_DIRECTORY = ".mastracode/plans/";
12
+ function isPlanPath(path) {
13
+ if (!path.startsWith(PLANS_DIRECTORY)) return false;
14
+ if (!path.endsWith(".md")) return false;
15
+ if (path.includes("\\") || path.includes("\0")) return false;
16
+ return path.slice(18).split("/").every((segment) => segment.length > 0 && segment !== "." && segment !== "..");
17
+ }
18
+ const READ_AGENT_PLAN_ROUTE = createRoute({
19
+ method: "GET",
20
+ path: "/agents/:agentId/plans/file",
21
+ responseType: "json",
22
+ pathParamSchema: agentIdPathParams,
23
+ queryParamSchema: agentPlanQuerySchema,
24
+ responseSchema: agentPlanResponseSchema,
25
+ summary: "Read a submitted agent plan",
26
+ description: "Returns a markdown plan when the agent exposes the core submit_plan capability and the path is under .mastracode/plans/.",
27
+ tags: ["Agents", "Tools"],
28
+ requiresAuth: true,
29
+ requiresPermission: MastraFGAPermissions.AGENTS_READ,
30
+ handler: async ({ agentId, mastra, path, requestContext, status, versionId }) => {
31
+ try {
32
+ const agent = await getAgentFromSystem({
33
+ mastra,
34
+ agentId,
35
+ versionOptions: versionId ? { versionId } : status ? { status } : void 0,
36
+ requestContext
37
+ });
38
+ const tools = await agent.listTools({ requestContext });
39
+ if (!Object.values(tools).some((tool) => typeof tool === "object" && tool !== null && "id" in tool && tool.id === submitPlanTool.id)) throw new HTTPException(404, { message: "Plan capability not found" });
40
+ if (!isPlanPath(path)) throw new HTTPException(400, { message: "Invalid plan path" });
41
+ const filesystem = await (await agent.getWorkspace({ requestContext }))?.resolveFilesystem({ requestContext });
42
+ if (!filesystem) throw new HTTPException(404, { message: "No workspace filesystem configured" });
43
+ if (!await filesystem.exists(path)) throw new HTTPException(404, { message: `Plan file "${path}" not found` });
44
+ const content = await filesystem.readFile(path, { encoding: "utf-8" });
45
+ return {
46
+ path,
47
+ content: typeof content === "string" ? content : content.toString("utf-8")
48
+ };
49
+ } catch (error) {
50
+ return handleError(error, "Error reading submitted plan");
51
+ }
52
+ }
53
+ });
54
+ //#endregion
55
+ export { READ_AGENT_PLAN_ROUTE, plans_exports as t };
56
+
57
+ //# sourceMappingURL=plans.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plans.js","names":[],"sources":["../../../src/server/handlers/plans.ts"],"sourcesContent":["import { submitPlanTool } from '@mastra/core/tools';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport { agentIdPathParams, agentPlanQuerySchema, agentPlanResponseSchema } from '../schemas/agents';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\n\nconst PLANS_DIRECTORY = '.mastracode/plans/';\n\nfunction isPlanPath(path: string): boolean {\n if (!path.startsWith(PLANS_DIRECTORY)) return false;\n if (!path.endsWith('.md')) return false;\n if (path.includes('\\\\') || path.includes('\\0')) return false;\n\n const relativePath = path.slice(PLANS_DIRECTORY.length);\n const segments = relativePath.split('/');\n return segments.every(segment => segment.length > 0 && segment !== '.' && segment !== '..');\n}\n\nexport const READ_AGENT_PLAN_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId/plans/file',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n queryParamSchema: agentPlanQuerySchema,\n responseSchema: agentPlanResponseSchema,\n summary: 'Read a submitted agent plan',\n description:\n 'Returns a markdown plan when the agent exposes the core submit_plan capability and the path is under .mastracode/plans/.',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ agentId, mastra, path, requestContext, status, versionId }) => {\n try {\n const versionOptions = versionId ? { versionId } : status ? { status } : undefined;\n const agent = await getAgentFromSystem({ mastra, agentId, versionOptions, requestContext });\n const tools = await agent.listTools({ requestContext });\n const hasSubmitPlan = Object.values(tools).some(\n tool => typeof tool === 'object' && tool !== null && 'id' in tool && tool.id === submitPlanTool.id,\n );\n\n if (!hasSubmitPlan) {\n throw new HTTPException(404, { message: 'Plan capability not found' });\n }\n if (!isPlanPath(path)) {\n throw new HTTPException(400, { message: 'Invalid plan path' });\n }\n\n const workspace = await agent.getWorkspace({ requestContext });\n const filesystem = await workspace?.resolveFilesystem({ requestContext });\n if (!filesystem) {\n throw new HTTPException(404, { message: 'No workspace filesystem configured' });\n }\n if (!(await filesystem.exists(path))) {\n throw new HTTPException(404, { message: `Plan file \"${path}\" not found` });\n }\n\n const content = await filesystem.readFile(path, { encoding: 'utf-8' });\n return {\n path,\n content: typeof content === 'string' ? content : content.toString('utf-8'),\n };\n } catch (error) {\n return handleError(error, 'Error reading submitted plan');\n }\n },\n});\n"],"mappings":";;;;;;;;;;AAQA,MAAM,kBAAkB;AAExB,SAAS,WAAW,MAAuB;CACzC,IAAI,CAAC,KAAK,WAAW,eAAe,GAAG,OAAO;CAC9C,IAAI,CAAC,KAAK,SAAS,KAAK,GAAG,OAAO;CAClC,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,GAAG,OAAO;CAIvD,OAFqB,KAAK,MAAM,EACJ,CAAC,CAAC,MAAM,GACtB,CAAC,CAAC,OAAM,YAAW,QAAQ,SAAS,KAAK,YAAY,OAAO,YAAY,IAAI;AAC5F;AAEA,MAAa,wBAAwB,YAAY;CAC/C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiB;CACjB,kBAAkB;CAClB,gBAAgB;CAChB,SAAS;CACT,aACE;CACF,MAAM,CAAC,UAAU,OAAO;CACxB,cAAc;CACd,oBAAoB,qBAAqB;CACzC,SAAS,OAAO,EAAE,SAAS,QAAQ,MAAM,gBAAgB,QAAQ,gBAAgB;EAC/E,IAAI;GAEF,MAAM,QAAQ,MAAM,mBAAmB;IAAE;IAAQ;IAAS,gBADnC,YAAY,EAAE,UAAU,IAAI,SAAS,EAAE,OAAO,IAAI,KAAA;IACC;GAAe,CAAC;GAC1F,MAAM,QAAQ,MAAM,MAAM,UAAU,EAAE,eAAe,CAAC;GAKtD,IAAI,CAJkB,OAAO,OAAO,KAAK,CAAC,CAAC,MACzC,SAAQ,OAAO,SAAS,YAAY,SAAS,QAAQ,QAAQ,QAAQ,KAAK,OAAO,eAAe,EAGjF,GACf,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,4BAA4B,CAAC;GAEvE,IAAI,CAAC,WAAW,IAAI,GAClB,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,oBAAoB,CAAC;GAI/D,MAAM,aAAa,OAAM,MADD,MAAM,aAAa,EAAE,eAAe,CAAC,EAAA,EACzB,kBAAkB,EAAE,eAAe,CAAC;GACxE,IAAI,CAAC,YACH,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,qCAAqC,CAAC;GAEhF,IAAI,CAAE,MAAM,WAAW,OAAO,IAAI,GAChC,MAAM,IAAI,cAAc,KAAK,EAAE,SAAS,cAAc,KAAK,aAAa,CAAC;GAG3E,MAAM,UAAU,MAAM,WAAW,SAAS,MAAM,EAAE,UAAU,QAAQ,CAAC;GACrE,OAAO;IACL;IACA,SAAS,OAAO,YAAY,WAAW,UAAU,QAAQ,SAAS,OAAO;GAC3E;EACF,SAAS,OAAO;GACd,OAAO,YAAY,OAAO,8BAA8B;EAC1D;CACF;AACF,CAAC"}
@@ -1,6 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ require("../../rolldown-runtime-Bd6kNlEP.cjs");
2
3
  const require_http_exception = require("../../http-exception-CKDHupKw.cjs");
3
- const require_route_builder = require("../../route-builder-BAAedfru.cjs");
4
+ const require_route_builder = require("../../route-builder-CWsok5ci.cjs");
4
5
  const require_server_handlers_error = require("./error.cjs");
5
6
  const require_processor_providers = require("../../processor-providers-DHvTA9AL.cjs");
6
7
  let _mastra_core_utils_zod_to_json = require("@mastra/core/utils/zod-to-json");
@@ -1 +1 @@
1
- {"version":3,"file":"processor-providers.cjs","names":["createRoute","getProcessorProvidersResponseSchema","HTTPException","handleError","processorProviderIdPathParams","getProcessorProviderResponseSchema"],"sources":["../../../src/server/handlers/processor-providers.ts"],"sourcesContent":["import { zodToJsonSchema } from '@mastra/core/utils/zod-to-json';\n\nimport { HTTPException } from '../http-exception';\nimport {\n processorProviderIdPathParams,\n getProcessorProvidersResponseSchema,\n getProcessorProviderResponseSchema,\n} from '../schemas/processor-providers';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { handleError } from './error';\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /processor-providers - List all registered processor providers\n */\nexport const LIST_PROCESSOR_PROVIDERS_ROUTE = createRoute({\n method: 'GET',\n path: '/processor-providers',\n responseType: 'json',\n responseSchema: getProcessorProvidersResponseSchema,\n summary: 'List processor providers',\n description: 'Returns a list of all registered processor providers with their info and available phases',\n tags: ['Processor Providers'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const editor = mastra.getEditor();\n\n if (!editor) {\n throw new HTTPException(500, { message: 'Editor is not configured' });\n }\n\n const providers = editor.getProcessorProviders();\n\n return {\n providers: Object.values(providers).map(provider => ({\n ...provider.info,\n availablePhases: provider.availablePhases,\n })),\n };\n } catch (error) {\n return handleError(error, 'Error listing processor providers');\n }\n },\n});\n\n/**\n * GET /processor-providers/:providerId - Get a specific processor provider with config schema\n */\nexport const GET_PROCESSOR_PROVIDER_ROUTE = createRoute({\n method: 'GET',\n path: '/processor-providers/:providerId',\n responseType: 'json',\n pathParamSchema: processorProviderIdPathParams,\n responseSchema: getProcessorProviderResponseSchema,\n summary: 'Get processor provider details',\n description: 'Returns details about a specific processor provider, including its configuration schema',\n tags: ['Processor Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId }) => {\n try {\n const editor = mastra.getEditor();\n\n if (!editor) {\n throw new HTTPException(500, { message: 'Editor is not configured' });\n }\n\n const provider = editor.getProcessorProvider(providerId);\n\n if (!provider) {\n throw new HTTPException(404, { message: `Processor provider with id ${providerId} not found` });\n }\n\n return {\n ...provider.info,\n availablePhases: provider.availablePhases,\n configSchema: zodToJsonSchema(provider.configSchema) as Record<string, unknown>,\n };\n } catch (error) {\n return handleError(error, 'Error getting processor provider');\n }\n },\n});\n"],"mappings":";;;;;;;;;;AAmBA,MAAa,iCAAiCA,sBAAAA,YAAY;CACxD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,gBAAgBC,4BAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,qBAAqB;CAC5B,cAAc;CACd,SAAS,OAAO,EAAE,aAAa;EAC7B,IAAI;GACF,MAAM,SAAS,OAAO,UAAU;GAEhC,IAAI,CAAC,QACH,MAAM,IAAIC,uBAAAA,cAAc,KAAK,EAAE,SAAS,2BAA2B,CAAC;GAGtE,MAAM,YAAY,OAAO,sBAAsB;GAE/C,OAAO,EACL,WAAW,OAAO,OAAO,SAAS,CAAC,CAAC,KAAI,cAAa;IACnD,GAAG,SAAS;IACZ,iBAAiB,SAAS;GAC5B,EAAE,EACJ;EACF,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,mCAAmC;EAC/D;CACF;AACF,CAAC;;;;AAKD,MAAa,+BAA+BH,sBAAAA,YAAY;CACtD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBI,4BAAAA;CACjB,gBAAgBC,4BAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,qBAAqB;CAC5B,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,iBAAiB;EACzC,IAAI;GACF,MAAM,SAAS,OAAO,UAAU;GAEhC,IAAI,CAAC,QACH,MAAM,IAAIH,uBAAAA,cAAc,KAAK,EAAE,SAAS,2BAA2B,CAAC;GAGtE,MAAM,WAAW,OAAO,qBAAqB,UAAU;GAEvD,IAAI,CAAC,UACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,8BAA8B,WAAW,YAAY,CAAC;GAGhG,OAAO;IACL,GAAG,SAAS;IACZ,iBAAiB,SAAS;IAC1B,eAAA,GAAA,+BAAA,gBAAA,CAA8B,SAAS,YAAY;GACrD;EACF,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,kCAAkC;EAC9D;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"processor-providers.cjs","names":["createRoute","getProcessorProvidersResponseSchema","HTTPException","handleError","processorProviderIdPathParams","getProcessorProviderResponseSchema"],"sources":["../../../src/server/handlers/processor-providers.ts"],"sourcesContent":["import { zodToJsonSchema } from '@mastra/core/utils/zod-to-json';\n\nimport { HTTPException } from '../http-exception';\nimport {\n processorProviderIdPathParams,\n getProcessorProvidersResponseSchema,\n getProcessorProviderResponseSchema,\n} from '../schemas/processor-providers';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { handleError } from './error';\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\n/**\n * GET /processor-providers - List all registered processor providers\n */\nexport const LIST_PROCESSOR_PROVIDERS_ROUTE = createRoute({\n method: 'GET',\n path: '/processor-providers',\n responseType: 'json',\n responseSchema: getProcessorProvidersResponseSchema,\n summary: 'List processor providers',\n description: 'Returns a list of all registered processor providers with their info and available phases',\n tags: ['Processor Providers'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const editor = mastra.getEditor();\n\n if (!editor) {\n throw new HTTPException(500, { message: 'Editor is not configured' });\n }\n\n const providers = editor.getProcessorProviders();\n\n return {\n providers: Object.values(providers).map(provider => ({\n ...provider.info,\n availablePhases: provider.availablePhases,\n })),\n };\n } catch (error) {\n return handleError(error, 'Error listing processor providers');\n }\n },\n});\n\n/**\n * GET /processor-providers/:providerId - Get a specific processor provider with config schema\n */\nexport const GET_PROCESSOR_PROVIDER_ROUTE = createRoute({\n method: 'GET',\n path: '/processor-providers/:providerId',\n responseType: 'json',\n pathParamSchema: processorProviderIdPathParams,\n responseSchema: getProcessorProviderResponseSchema,\n summary: 'Get processor provider details',\n description: 'Returns details about a specific processor provider, including its configuration schema',\n tags: ['Processor Providers'],\n requiresAuth: true,\n handler: async ({ mastra, providerId }) => {\n try {\n const editor = mastra.getEditor();\n\n if (!editor) {\n throw new HTTPException(500, { message: 'Editor is not configured' });\n }\n\n const provider = editor.getProcessorProvider(providerId);\n\n if (!provider) {\n throw new HTTPException(404, { message: `Processor provider with id ${providerId} not found` });\n }\n\n return {\n ...provider.info,\n availablePhases: provider.availablePhases,\n configSchema: zodToJsonSchema(provider.configSchema) as Record<string, unknown>,\n };\n } catch (error) {\n return handleError(error, 'Error getting processor provider');\n }\n },\n});\n"],"mappings":";;;;;;;;;;;AAmBA,MAAa,iCAAiCA,sBAAAA,YAAY;CACxD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,gBAAgBC,4BAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,qBAAqB;CAC5B,cAAc;CACd,SAAS,OAAO,EAAE,aAAa;EAC7B,IAAI;GACF,MAAM,SAAS,OAAO,UAAU;GAEhC,IAAI,CAAC,QACH,MAAM,IAAIC,uBAAAA,cAAc,KAAK,EAAE,SAAS,2BAA2B,CAAC;GAGtE,MAAM,YAAY,OAAO,sBAAsB;GAE/C,OAAO,EACL,WAAW,OAAO,OAAO,SAAS,CAAC,CAAC,KAAI,cAAa;IACnD,GAAG,SAAS;IACZ,iBAAiB,SAAS;GAC5B,EAAE,EACJ;EACF,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,mCAAmC;EAC/D;CACF;AACF,CAAC;;;;AAKD,MAAa,+BAA+BH,sBAAAA,YAAY;CACtD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBI,4BAAAA;CACjB,gBAAgBC,4BAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,qBAAqB;CAC5B,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,iBAAiB;EACzC,IAAI;GACF,MAAM,SAAS,OAAO,UAAU;GAEhC,IAAI,CAAC,QACH,MAAM,IAAIH,uBAAAA,cAAc,KAAK,EAAE,SAAS,2BAA2B,CAAC;GAGtE,MAAM,WAAW,OAAO,qBAAqB,UAAU;GAEvD,IAAI,CAAC,UACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,8BAA8B,WAAW,YAAY,CAAC;GAGhG,OAAO;IACL,GAAG,SAAS;IACZ,iBAAiB,SAAS;IAC1B,eAAA,GAAA,+BAAA,gBAAA,CAA8B,SAAS,YAAY;GACrD;EACF,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,kCAAkC;EAC9D;CACF;AACF,CAAC"}
@@ -1,6 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ require("../../rolldown-runtime-Bd6kNlEP.cjs");
2
3
  const require_http_exception = require("../../http-exception-CKDHupKw.cjs");
3
- const require_route_builder = require("../../route-builder-BAAedfru.cjs");
4
+ const require_route_builder = require("../../route-builder-CWsok5ci.cjs");
4
5
  const require_server_handlers_error = require("./error.cjs");
5
6
  const require_processors = require("../../processors-D6lRjS0e.cjs");
6
7
  let _mastra_core_agent = require("@mastra/core/agent");
@@ -1 +1 @@
1
- {"version":3,"file":"processors.cjs","names":["createRoute","listProcessorsResponseSchema","handleError","processorIdPathParams","serializedProcessorDetailSchema","HTTPException","executeProcessorBodySchema","executeProcessorResponseSchema","MessageList"],"sources":["../../../src/server/handlers/processors.ts"],"sourcesContent":["import { MessageList } from '@mastra/core/agent';\nimport type { MessageInput } from '@mastra/core/agent/message-list';\nimport { isProcessorWorkflow } from '@mastra/core/processors';\nimport type { Processor, ProcessorWorkflow } from '@mastra/core/processors';\n\nimport { HTTPException } from '../http-exception';\nimport {\n listProcessorsResponseSchema,\n serializedProcessorDetailSchema,\n processorIdPathParams,\n executeProcessorBodySchema,\n executeProcessorResponseSchema,\n} from '../schemas/processors';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\ntype ProcessorPhase = 'input' | 'inputStep' | 'outputStream' | 'outputResult' | 'outputStep' | 'toolResult';\n\n/**\n * Helper to extract text from messages for outputStep testing.\n * In real usage, the `text` field contains the assistant's response text.\n */\nfunction extractTextFromMessages(messages: unknown[]): string {\n if (!messages || !Array.isArray(messages) || messages.length === 0) {\n return '';\n }\n const firstMessage = messages[0] as any;\n if (firstMessage?.content?.parts) {\n const textParts = firstMessage.content.parts\n .filter((part: any) => part?.type === 'text')\n .map((part: any) => part?.text || '');\n return textParts.join('');\n }\n return '';\n}\n\n/**\n * Helper to detect phases for a processor.\n * For individual processors, checks which methods are implemented.\n * For workflow processors, returns all phases since createStep handles each phase\n * and it's a no-op if the underlying processor doesn't implement it.\n */\nfunction detectProcessorPhases(processor: any): ProcessorPhase[] {\n // Check if it's a workflow processor\n if (isProcessorWorkflow(processor)) {\n // Workflow processors can potentially handle all phases\n // The createStep in workflows handles each phase and it's a no-op if not implemented\n return ['input', 'inputStep', 'outputStream', 'outputResult', 'outputStep', 'toolResult'];\n }\n\n // For individual processors, detect by checking which methods exist\n const phases: ProcessorPhase[] = [];\n if (typeof processor.processInput === 'function') {\n phases.push('input');\n }\n if (typeof processor.processInputStep === 'function') {\n phases.push('inputStep');\n }\n if (typeof processor.processOutputStream === 'function') {\n phases.push('outputStream');\n }\n if (typeof processor.processOutputResult === 'function') {\n phases.push('outputResult');\n }\n if (typeof processor.processOutputStep === 'function') {\n phases.push('outputStep');\n }\n if (typeof processor.processToolResult === 'function') {\n phases.push('toolResult');\n }\n return phases;\n}\n\nexport const LIST_PROCESSORS_ROUTE = createRoute({\n method: 'GET',\n path: '/processors',\n responseType: 'json',\n responseSchema: listProcessorsResponseSchema,\n summary: 'List all processors',\n description: 'Returns a list of all available individual processors',\n tags: ['Processors'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const processors = mastra.listProcessors() || {};\n const processorConfigurations = mastra.listProcessorConfigurations();\n const result: Record<\n string,\n {\n id: string;\n name?: string;\n description?: string;\n phases: ProcessorPhase[];\n agentIds: string[];\n configurations: Array<{ agentId: string; type: 'input' | 'output' }>;\n isWorkflow: boolean;\n }\n > = {};\n\n // Iterate through all individual processors registered with Mastra\n for (const [processorKey, processorEntry] of Object.entries(processors)) {\n const processor = processorEntry as Processor | ProcessorWorkflow;\n const processorId = processor.id || processorKey;\n\n // Check if it's a workflow processor\n const isWorkflow = isProcessorWorkflow(processor);\n\n // Detect phases (handles both individual processors and workflow processors)\n const phases = detectProcessorPhases(processor);\n\n // Get agent configurations for this processor\n const configs = processorConfigurations.get(processorId) || [];\n const agentIds = [...new Set(configs.map(c => c.agentId))];\n const configurations = configs.map(c => ({ agentId: c.agentId, type: c.type }));\n\n result[processorId] = {\n id: processorId,\n name: processor.name || processorId,\n description: processor.description,\n phases,\n agentIds,\n configurations,\n isWorkflow,\n };\n }\n\n return result;\n } catch (error) {\n return handleError(error, 'Error getting processors');\n }\n },\n});\n\nexport const GET_PROCESSOR_BY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/processors/:processorId',\n responseType: 'json',\n pathParamSchema: processorIdPathParams,\n responseSchema: serializedProcessorDetailSchema,\n summary: 'Get processor by ID',\n description: 'Returns details for a specific processor including its phases and configurations',\n tags: ['Processors'],\n requiresAuth: true,\n handler: async ({ mastra, processorId }) => {\n try {\n // Get the processor from Mastra's registered processors\n let processorEntry: Processor | ProcessorWorkflow | undefined;\n try {\n processorEntry = mastra.getProcessorById(processorId) as Processor | ProcessorWorkflow;\n } catch {\n // getProcessorById throws if not found, try by key\n const processors = mastra.listProcessors() || {};\n processorEntry = processors[processorId as keyof typeof processors] as Processor | ProcessorWorkflow;\n }\n\n if (!processorEntry) {\n throw new HTTPException(404, { message: 'Processor not found' });\n }\n\n // Check if it's a workflow processor\n const isWorkflow = isProcessorWorkflow(processorEntry);\n\n // Detect phases (handles both individual processors and workflow processors)\n const phases = detectProcessorPhases(processorEntry);\n\n // Get agent configurations for this processor\n const configs = mastra.getProcessorConfigurations(processorId);\n const agents = mastra.listAgents() || {};\n const configurations = configs.map(c => ({\n agentId: c.agentId,\n agentName: agents[c.agentId]?.name || c.agentId,\n type: c.type,\n }));\n\n return {\n id: processorEntry.id,\n name: processorEntry.name || processorEntry.id,\n description: processorEntry.description,\n phases,\n configurations,\n isWorkflow,\n };\n } catch (error) {\n return handleError(error, 'Error getting processor');\n }\n },\n});\n\nexport const EXECUTE_PROCESSOR_ROUTE = createRoute({\n method: 'POST',\n path: '/processors/:processorId/execute',\n responseType: 'json',\n pathParamSchema: processorIdPathParams,\n bodySchema: executeProcessorBodySchema,\n responseSchema: executeProcessorResponseSchema,\n summary: 'Execute processor',\n description: 'Executes a specific processor with the provided input data',\n tags: ['Processors'],\n requiresAuth: true,\n handler: async ({ mastra, processorId, ...bodyParams }) => {\n try {\n const { phase, messages } = bodyParams;\n\n if (!processorId) {\n throw new HTTPException(400, { message: 'Processor ID is required' });\n }\n\n if (!phase) {\n throw new HTTPException(400, { message: 'Phase is required' });\n }\n\n if (!messages || !Array.isArray(messages)) {\n throw new HTTPException(400, { message: 'Messages array is required' });\n }\n\n // Get the processor from Mastra's registered processors\n let processor;\n try {\n processor = mastra.getProcessorById(processorId);\n } catch {\n // getProcessorById throws if not found, try by key\n const processors = mastra.listProcessors() || {};\n processor = processors[processorId as keyof typeof processors];\n }\n\n if (!processor) {\n throw new HTTPException(404, { message: 'Processor not found' });\n }\n\n const messageList = new MessageList();\n messageList.add(messages as unknown as MessageInput[], 'input');\n\n // Check if this is a workflow processor\n if (isProcessorWorkflow(processor)) {\n // Execute workflow processor\n try {\n // Build inputData based on phase - each phase has different required fields\n const baseInputData = {\n phase: phase as 'input' | 'inputStep' | 'outputStream' | 'outputResult' | 'outputStep' | 'toolResult',\n messages: messageList.get.all.db(),\n messageList,\n retryCount: 0,\n };\n let inputData: typeof baseInputData & Record<string, unknown> = baseInputData;\n\n // Add phase-specific fields\n switch (phase) {\n case 'input':\n inputData = {\n ...inputData,\n systemMessages: [],\n };\n break;\n case 'inputStep':\n inputData = {\n ...inputData,\n stepNumber: 0,\n systemMessages: [],\n steps: [],\n model: '',\n tools: {},\n toolChoice: undefined,\n activeTools: [],\n providerOptions: undefined,\n modelSettings: undefined,\n structuredOutput: undefined,\n };\n break;\n case 'outputResult':\n inputData = {\n ...inputData,\n state: {},\n result: {\n text: extractTextFromMessages(messages),\n usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },\n finishReason: 'unknown',\n steps: [],\n },\n };\n break;\n case 'outputStep':\n inputData = {\n ...inputData,\n stepNumber: 0,\n systemMessages: [],\n steps: [],\n finishReason: 'stop',\n toolCalls: [],\n text: extractTextFromMessages(messages),\n };\n break;\n case 'outputStream':\n inputData = {\n ...inputData,\n part: null,\n streamParts: [],\n state: {},\n };\n break;\n case 'toolResult':\n inputData = {\n ...inputData,\n stepNumber: 0,\n toolName: '',\n toolCallId: '',\n args: undefined,\n toolResultValue: undefined,\n providerExecuted: false,\n systemMessages: [],\n steps: [],\n };\n break;\n }\n\n const run = await processor.createRun();\n const result = await run.start({\n inputData,\n });\n\n // Check for tripwire status\n if (result.status === 'tripwire') {\n return {\n success: false,\n phase,\n tripwire: {\n triggered: true,\n reason: result.tripwire.reason || `Tripwire triggered in workflow ${processor.id}`,\n metadata: result.tripwire.metadata,\n },\n messages,\n messageList: {\n messages,\n },\n };\n }\n\n // Check for execution failure\n if (result.status !== 'success') {\n throw new HTTPException(500, {\n message: `Processor workflow ${processor.id} failed with status: ${result.status}`,\n });\n }\n\n // Extract output from workflow result\n const output = result.result;\n let outputMessages = messages;\n\n if (output && typeof output === 'object') {\n if ('messages' in output && Array.isArray(output.messages)) {\n outputMessages = output.messages;\n } else if ('messageList' in output && output.messageList instanceof MessageList) {\n outputMessages = output.messageList.get.all.db();\n }\n }\n\n return {\n success: true,\n phase,\n messages: outputMessages,\n messageList: {\n messages: outputMessages,\n },\n };\n } catch (error: any) {\n // Re-throw HTTP exceptions\n if (error instanceof HTTPException) {\n throw error;\n }\n throw new HTTPException(500, {\n message: `Error executing processor workflow: ${error.message}`,\n });\n }\n }\n\n // Handle individual processor execution\n // Create the abort function for tripwire support\n let tripwireTriggered = false;\n let tripwireReason: string | undefined;\n let tripwireMetadata: unknown;\n\n const abort = (reason?: string, options?: { retry?: boolean; metadata?: unknown }) => {\n tripwireTriggered = true;\n tripwireReason = reason;\n tripwireMetadata = options?.metadata;\n throw new Error(`TRIPWIRE:${reason || 'Processor aborted'}`);\n };\n\n // Build the context based on phase\n const baseContext = {\n abort,\n retryCount: 0,\n messages: messageList.get.all.db(),\n messageList,\n state: {},\n };\n\n try {\n let result: any;\n\n // Execute the specific phase method on the individual processor\n switch (phase) {\n case 'input':\n if (!processor.processInput) {\n throw new HTTPException(400, { message: 'Processor does not support input phase' });\n }\n result = await processor.processInput({\n ...baseContext,\n systemMessages: [],\n });\n break;\n\n case 'inputStep':\n if (!processor.processInputStep) {\n throw new HTTPException(400, { message: 'Processor does not support inputStep phase' });\n }\n result = await processor.processInputStep({\n ...baseContext,\n systemMessages: [],\n stepNumber: 0,\n steps: [],\n // Pass empty/default values for all inputStep fields\n model: '' as any,\n tools: {},\n toolChoice: undefined,\n activeTools: [],\n providerOptions: undefined,\n modelSettings: undefined,\n structuredOutput: undefined,\n });\n break;\n\n case 'outputResult':\n if (!processor.processOutputResult) {\n throw new HTTPException(400, { message: 'Processor does not support outputResult phase' });\n }\n result = await processor.processOutputResult({\n ...baseContext,\n state: {},\n result: {\n text: extractTextFromMessages(messages),\n usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },\n finishReason: 'unknown',\n steps: [],\n },\n });\n break;\n\n case 'outputStep':\n if (!processor.processOutputStep) {\n throw new HTTPException(400, { message: 'Processor does not support outputStep phase' });\n }\n result = await processor.processOutputStep({\n ...baseContext,\n systemMessages: [],\n stepNumber: 0,\n steps: [],\n finishReason: 'stop',\n toolCalls: [],\n text: extractTextFromMessages(messages),\n usage: { inputTokens: undefined, outputTokens: undefined, totalTokens: undefined },\n });\n break;\n\n case 'outputStream':\n // outputStream is for streaming chunks, not a simple execute\n throw new HTTPException(400, {\n message: 'outputStream phase cannot be executed directly. Use streaming instead.',\n });\n\n default:\n throw new HTTPException(400, { message: `Unknown phase: ${phase}` });\n }\n\n // Process the result\n let outputMessages = messages;\n if (result) {\n if (Array.isArray(result)) {\n outputMessages = result;\n } else if (result.get && result.get.all && typeof result.get.all.db === 'function') {\n // It's a MessageList\n outputMessages = result.get.all.db();\n } else if (result.messages) {\n outputMessages = result.messages;\n }\n }\n\n return {\n success: true,\n phase,\n messages: outputMessages,\n messageList: {\n messages: outputMessages,\n },\n };\n } catch (error: any) {\n // Check if it's a tripwire\n if (tripwireTriggered || error.message?.startsWith('TRIPWIRE:')) {\n return {\n success: false,\n phase,\n tripwire: {\n triggered: true,\n reason: tripwireReason || error.message?.replace('TRIPWIRE:', ''),\n metadata: tripwireMetadata,\n },\n messages,\n messageList: {\n messages,\n },\n };\n }\n throw error;\n }\n } catch (error) {\n return handleError(error, 'Error executing processor');\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;AA0BA,SAAS,wBAAwB,UAA6B;CAC5D,IAAI,CAAC,YAAY,CAAC,MAAM,QAAQ,QAAQ,KAAK,SAAS,WAAW,GAC/D,OAAO;CAET,MAAM,eAAe,SAAS;CAC9B,IAAI,cAAc,SAAS,OAIzB,OAHkB,aAAa,QAAQ,MACpC,QAAQ,SAAc,MAAM,SAAS,MAAM,CAAC,CAC5C,KAAK,SAAc,MAAM,QAAQ,EACrB,CAAC,CAAC,KAAK,EAAE;CAE1B,OAAO;AACT;;;;;;;AAQA,SAAS,sBAAsB,WAAkC;CAE/D,KAAA,GAAA,wBAAA,oBAAA,CAAwB,SAAS,GAG/B,OAAO;EAAC;EAAS;EAAa;EAAgB;EAAgB;EAAc;CAAY;CAI1F,MAAM,SAA2B,CAAC;CAClC,IAAI,OAAO,UAAU,iBAAiB,YACpC,OAAO,KAAK,OAAO;CAErB,IAAI,OAAO,UAAU,qBAAqB,YACxC,OAAO,KAAK,WAAW;CAEzB,IAAI,OAAO,UAAU,wBAAwB,YAC3C,OAAO,KAAK,cAAc;CAE5B,IAAI,OAAO,UAAU,wBAAwB,YAC3C,OAAO,KAAK,cAAc;CAE5B,IAAI,OAAO,UAAU,sBAAsB,YACzC,OAAO,KAAK,YAAY;CAE1B,IAAI,OAAO,UAAU,sBAAsB,YACzC,OAAO,KAAK,YAAY;CAE1B,OAAO;AACT;AAEA,MAAa,wBAAwBA,sBAAAA,YAAY;CAC/C,QAAQ;CACR,MAAM;CACN,cAAc;CACd,gBAAgBC,mBAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,YAAY;CACnB,cAAc;CACd,SAAS,OAAO,EAAE,aAAa;EAC7B,IAAI;GACF,MAAM,aAAa,OAAO,eAAe,KAAK,CAAC;GAC/C,MAAM,0BAA0B,OAAO,4BAA4B;GACnE,MAAM,SAWF,CAAC;GAGL,KAAK,MAAM,CAAC,cAAc,mBAAmB,OAAO,QAAQ,UAAU,GAAG;IACvE,MAAM,YAAY;IAClB,MAAM,cAAc,UAAU,MAAM;IAGpC,MAAM,cAAA,GAAA,wBAAA,oBAAA,CAAiC,SAAS;IAGhD,MAAM,SAAS,sBAAsB,SAAS;IAG9C,MAAM,UAAU,wBAAwB,IAAI,WAAW,KAAK,CAAC;IAC7D,MAAM,WAAW,CAAC,GAAG,IAAI,IAAI,QAAQ,KAAI,MAAK,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,iBAAiB,QAAQ,KAAI,OAAM;KAAE,SAAS,EAAE;KAAS,MAAM,EAAE;IAAK,EAAE;IAE9E,OAAO,eAAe;KACpB,IAAI;KACJ,MAAM,UAAU,QAAQ;KACxB,aAAa,UAAU;KACvB;KACA;KACA;KACA;IACF;GACF;GAEA,OAAO;EACT,SAAS,OAAO;GACd,OAAOC,8BAAAA,YAAY,OAAO,0BAA0B;EACtD;CACF;AACF,CAAC;AAED,MAAa,4BAA4BF,sBAAAA,YAAY;CACnD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBG,mBAAAA;CACjB,gBAAgBC,mBAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,YAAY;CACnB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,kBAAkB;EAC1C,IAAI;GAEF,IAAI;GACJ,IAAI;IACF,iBAAiB,OAAO,iBAAiB,WAAW;GACtD,QAAQ;IAGN,kBADmB,OAAO,eAAe,KAAK,CAAC,EAAA,CACnB;GAC9B;GAEA,IAAI,CAAC,gBACH,MAAM,IAAIC,uBAAAA,cAAc,KAAK,EAAE,SAAS,sBAAsB,CAAC;GAIjE,MAAM,cAAA,GAAA,wBAAA,oBAAA,CAAiC,cAAc;GAGrD,MAAM,SAAS,sBAAsB,cAAc;GAGnD,MAAM,UAAU,OAAO,2BAA2B,WAAW;GAC7D,MAAM,SAAS,OAAO,WAAW,KAAK,CAAC;GACvC,MAAM,iBAAiB,QAAQ,KAAI,OAAM;IACvC,SAAS,EAAE;IACX,WAAW,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;IACxC,MAAM,EAAE;GACV,EAAE;GAEF,OAAO;IACL,IAAI,eAAe;IACnB,MAAM,eAAe,QAAQ,eAAe;IAC5C,aAAa,eAAe;IAC5B;IACA;IACA;GACF;EACF,SAAS,OAAO;GACd,OAAOH,8BAAAA,YAAY,OAAO,yBAAyB;EACrD;CACF;AACF,CAAC;AAED,MAAa,0BAA0BF,sBAAAA,YAAY;CACjD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBG,mBAAAA;CACjB,YAAYG,mBAAAA;CACZ,gBAAgBC,mBAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,YAAY;CACnB,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,aAAa,GAAG,iBAAiB;EACzD,IAAI;GACF,MAAM,EAAE,OAAO,aAAa;GAE5B,IAAI,CAAC,aACH,MAAM,IAAIF,uBAAAA,cAAc,KAAK,EAAE,SAAS,2BAA2B,CAAC;GAGtE,IAAI,CAAC,OACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,oBAAoB,CAAC;GAG/D,IAAI,CAAC,YAAY,CAAC,MAAM,QAAQ,QAAQ,GACtC,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,6BAA6B,CAAC;GAIxE,IAAI;GACJ,IAAI;IACF,YAAY,OAAO,iBAAiB,WAAW;GACjD,QAAQ;IAGN,aADmB,OAAO,eAAe,KAAK,CAAC,EAAA,CACxB;GACzB;GAEA,IAAI,CAAC,WACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,sBAAsB,CAAC;GAGjE,MAAM,cAAc,IAAIG,mBAAAA,YAAY;GACpC,YAAY,IAAI,UAAuC,OAAO;GAG9D,KAAA,GAAA,wBAAA,oBAAA,CAAwB,SAAS,GAE/B,IAAI;IAQF,IAAI,YAA4D;KALvD;KACP,UAAU,YAAY,IAAI,IAAI,GAAG;KACjC;KACA,YAAY;IAE8D;IAG5E,QAAQ,OAAR;KACE,KAAK;MACH,YAAY;OACV,GAAG;OACH,gBAAgB,CAAC;MACnB;MACA;KACF,KAAK;MACH,YAAY;OACV,GAAG;OACH,YAAY;OACZ,gBAAgB,CAAC;OACjB,OAAO,CAAC;OACR,OAAO;OACP,OAAO,CAAC;OACR,YAAY,KAAA;OACZ,aAAa,CAAC;OACd,iBAAiB,KAAA;OACjB,eAAe,KAAA;OACf,kBAAkB,KAAA;MACpB;MACA;KACF,KAAK;MACH,YAAY;OACV,GAAG;OACH,OAAO,CAAC;OACR,QAAQ;QACN,MAAM,wBAAwB,QAAQ;QACtC,OAAO;SAAE,aAAa;SAAG,cAAc;SAAG,aAAa;QAAE;QACzD,cAAc;QACd,OAAO,CAAC;OACV;MACF;MACA;KACF,KAAK;MACH,YAAY;OACV,GAAG;OACH,YAAY;OACZ,gBAAgB,CAAC;OACjB,OAAO,CAAC;OACR,cAAc;OACd,WAAW,CAAC;OACZ,MAAM,wBAAwB,QAAQ;MACxC;MACA;KACF,KAAK;MACH,YAAY;OACV,GAAG;OACH,MAAM;OACN,aAAa,CAAC;OACd,OAAO,CAAC;MACV;MACA;KACF,KAAK;MACH,YAAY;OACV,GAAG;OACH,YAAY;OACZ,UAAU;OACV,YAAY;OACZ,MAAM,KAAA;OACN,iBAAiB,KAAA;OACjB,kBAAkB;OAClB,gBAAgB,CAAC;OACjB,OAAO,CAAC;MACV;MACA;IACJ;IAGA,MAAM,SAAS,OAAM,MADH,UAAU,UAAU,EAAA,CACb,MAAM,EAC7B,UACF,CAAC;IAGD,IAAI,OAAO,WAAW,YACpB,OAAO;KACL,SAAS;KACT;KACA,UAAU;MACR,WAAW;MACX,QAAQ,OAAO,SAAS,UAAU,kCAAkC,UAAU;MAC9E,UAAU,OAAO,SAAS;KAC5B;KACA;KACA,aAAa,EACX,SACF;IACF;IAIF,IAAI,OAAO,WAAW,WACpB,MAAM,IAAIH,uBAAAA,cAAc,KAAK,EAC3B,SAAS,sBAAsB,UAAU,GAAG,uBAAuB,OAAO,SAC5E,CAAC;IAIH,MAAM,SAAS,OAAO;IACtB,IAAI,iBAAiB;IAErB,IAAI,UAAU,OAAO,WAAW,UAC1B;SAAA,cAAc,UAAU,MAAM,QAAQ,OAAO,QAAQ,GACvD,iBAAiB,OAAO;UACnB,IAAI,iBAAiB,UAAU,OAAO,uBAAuBG,mBAAAA,aAClE,iBAAiB,OAAO,YAAY,IAAI,IAAI,GAAG;IAAA;IAInD,OAAO;KACL,SAAS;KACT;KACA,UAAU;KACV,aAAa,EACX,UAAU,eACZ;IACF;GACF,SAAS,OAAY;IAEnB,IAAI,iBAAiBH,uBAAAA,eACnB,MAAM;IAER,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAC3B,SAAS,uCAAuC,MAAM,UACxD,CAAC;GACH;GAKF,IAAI,oBAAoB;GACxB,IAAI;GACJ,IAAI;GAEJ,MAAM,SAAS,QAAiB,YAAsD;IACpF,oBAAoB;IACpB,iBAAiB;IACjB,mBAAmB,SAAS;IAC5B,MAAM,IAAI,MAAM,YAAY,UAAU,qBAAqB;GAC7D;GAGA,MAAM,cAAc;IAClB;IACA,YAAY;IACZ,UAAU,YAAY,IAAI,IAAI,GAAG;IACjC;IACA,OAAO,CAAC;GACV;GAEA,IAAI;IACF,IAAI;IAGJ,QAAQ,OAAR;KACE,KAAK;MACH,IAAI,CAAC,UAAU,cACb,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,yCAAyC,CAAC;MAEpF,SAAS,MAAM,UAAU,aAAa;OACpC,GAAG;OACH,gBAAgB,CAAC;MACnB,CAAC;MACD;KAEF,KAAK;MACH,IAAI,CAAC,UAAU,kBACb,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,6CAA6C,CAAC;MAExF,SAAS,MAAM,UAAU,iBAAiB;OACxC,GAAG;OACH,gBAAgB,CAAC;OACjB,YAAY;OACZ,OAAO,CAAC;OAER,OAAO;OACP,OAAO,CAAC;OACR,YAAY,KAAA;OACZ,aAAa,CAAC;OACd,iBAAiB,KAAA;OACjB,eAAe,KAAA;OACf,kBAAkB,KAAA;MACpB,CAAC;MACD;KAEF,KAAK;MACH,IAAI,CAAC,UAAU,qBACb,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,gDAAgD,CAAC;MAE3F,SAAS,MAAM,UAAU,oBAAoB;OAC3C,GAAG;OACH,OAAO,CAAC;OACR,QAAQ;QACN,MAAM,wBAAwB,QAAQ;QACtC,OAAO;SAAE,aAAa;SAAG,cAAc;SAAG,aAAa;QAAE;QACzD,cAAc;QACd,OAAO,CAAC;OACV;MACF,CAAC;MACD;KAEF,KAAK;MACH,IAAI,CAAC,UAAU,mBACb,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,8CAA8C,CAAC;MAEzF,SAAS,MAAM,UAAU,kBAAkB;OACzC,GAAG;OACH,gBAAgB,CAAC;OACjB,YAAY;OACZ,OAAO,CAAC;OACR,cAAc;OACd,WAAW,CAAC;OACZ,MAAM,wBAAwB,QAAQ;OACtC,OAAO;QAAE,aAAa,KAAA;QAAW,cAAc,KAAA;QAAW,aAAa,KAAA;OAAU;MACnF,CAAC;MACD;KAEF,KAAK,gBAEH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAC3B,SAAS,yEACX,CAAC;KAEH,SACE,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,kBAAkB,QAAQ,CAAC;IACvE;IAGA,IAAI,iBAAiB;IACrB,IAAI,QACE;SAAA,MAAM,QAAQ,MAAM,GACtB,iBAAiB;UACZ,IAAI,OAAO,OAAO,OAAO,IAAI,OAAO,OAAO,OAAO,IAAI,IAAI,OAAO,YAEtE,iBAAiB,OAAO,IAAI,IAAI,GAAG;UAC9B,IAAI,OAAO,UAChB,iBAAiB,OAAO;IAAA;IAI5B,OAAO;KACL,SAAS;KACT;KACA,UAAU;KACV,aAAa,EACX,UAAU,eACZ;IACF;GACF,SAAS,OAAY;IAEnB,IAAI,qBAAqB,MAAM,SAAS,WAAW,WAAW,GAC5D,OAAO;KACL,SAAS;KACT;KACA,UAAU;MACR,WAAW;MACX,QAAQ,kBAAkB,MAAM,SAAS,QAAQ,aAAa,EAAE;MAChE,UAAU;KACZ;KACA;KACA,aAAa,EACX,SACF;IACF;IAEF,MAAM;GACR;EACF,SAAS,OAAO;GACd,OAAOH,8BAAAA,YAAY,OAAO,2BAA2B;EACvD;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"processors.cjs","names":["createRoute","listProcessorsResponseSchema","handleError","processorIdPathParams","serializedProcessorDetailSchema","HTTPException","executeProcessorBodySchema","executeProcessorResponseSchema","MessageList"],"sources":["../../../src/server/handlers/processors.ts"],"sourcesContent":["import { MessageList } from '@mastra/core/agent';\nimport type { MessageInput } from '@mastra/core/agent/message-list';\nimport { isProcessorWorkflow } from '@mastra/core/processors';\nimport type { Processor, ProcessorWorkflow } from '@mastra/core/processors';\n\nimport { HTTPException } from '../http-exception';\nimport {\n listProcessorsResponseSchema,\n serializedProcessorDetailSchema,\n processorIdPathParams,\n executeProcessorBodySchema,\n executeProcessorResponseSchema,\n} from '../schemas/processors';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\n\n// ============================================================================\n// Route Definitions\n// ============================================================================\n\ntype ProcessorPhase = 'input' | 'inputStep' | 'outputStream' | 'outputResult' | 'outputStep' | 'toolResult';\n\n/**\n * Helper to extract text from messages for outputStep testing.\n * In real usage, the `text` field contains the assistant's response text.\n */\nfunction extractTextFromMessages(messages: unknown[]): string {\n if (!messages || !Array.isArray(messages) || messages.length === 0) {\n return '';\n }\n const firstMessage = messages[0] as any;\n if (firstMessage?.content?.parts) {\n const textParts = firstMessage.content.parts\n .filter((part: any) => part?.type === 'text')\n .map((part: any) => part?.text || '');\n return textParts.join('');\n }\n return '';\n}\n\n/**\n * Helper to detect phases for a processor.\n * For individual processors, checks which methods are implemented.\n * For workflow processors, returns all phases since createStep handles each phase\n * and it's a no-op if the underlying processor doesn't implement it.\n */\nfunction detectProcessorPhases(processor: any): ProcessorPhase[] {\n // Check if it's a workflow processor\n if (isProcessorWorkflow(processor)) {\n // Workflow processors can potentially handle all phases\n // The createStep in workflows handles each phase and it's a no-op if not implemented\n return ['input', 'inputStep', 'outputStream', 'outputResult', 'outputStep', 'toolResult'];\n }\n\n // For individual processors, detect by checking which methods exist\n const phases: ProcessorPhase[] = [];\n if (typeof processor.processInput === 'function') {\n phases.push('input');\n }\n if (typeof processor.processInputStep === 'function') {\n phases.push('inputStep');\n }\n if (typeof processor.processOutputStream === 'function') {\n phases.push('outputStream');\n }\n if (typeof processor.processOutputResult === 'function') {\n phases.push('outputResult');\n }\n if (typeof processor.processOutputStep === 'function') {\n phases.push('outputStep');\n }\n if (typeof processor.processToolResult === 'function') {\n phases.push('toolResult');\n }\n return phases;\n}\n\nexport const LIST_PROCESSORS_ROUTE = createRoute({\n method: 'GET',\n path: '/processors',\n responseType: 'json',\n responseSchema: listProcessorsResponseSchema,\n summary: 'List all processors',\n description: 'Returns a list of all available individual processors',\n tags: ['Processors'],\n requiresAuth: true,\n handler: async ({ mastra }) => {\n try {\n const processors = mastra.listProcessors() || {};\n const processorConfigurations = mastra.listProcessorConfigurations();\n const result: Record<\n string,\n {\n id: string;\n name?: string;\n description?: string;\n phases: ProcessorPhase[];\n agentIds: string[];\n configurations: Array<{ agentId: string; type: 'input' | 'output' }>;\n isWorkflow: boolean;\n }\n > = {};\n\n // Iterate through all individual processors registered with Mastra\n for (const [processorKey, processorEntry] of Object.entries(processors)) {\n const processor = processorEntry as Processor | ProcessorWorkflow;\n const processorId = processor.id || processorKey;\n\n // Check if it's a workflow processor\n const isWorkflow = isProcessorWorkflow(processor);\n\n // Detect phases (handles both individual processors and workflow processors)\n const phases = detectProcessorPhases(processor);\n\n // Get agent configurations for this processor\n const configs = processorConfigurations.get(processorId) || [];\n const agentIds = [...new Set(configs.map(c => c.agentId))];\n const configurations = configs.map(c => ({ agentId: c.agentId, type: c.type }));\n\n result[processorId] = {\n id: processorId,\n name: processor.name || processorId,\n description: processor.description,\n phases,\n agentIds,\n configurations,\n isWorkflow,\n };\n }\n\n return result;\n } catch (error) {\n return handleError(error, 'Error getting processors');\n }\n },\n});\n\nexport const GET_PROCESSOR_BY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/processors/:processorId',\n responseType: 'json',\n pathParamSchema: processorIdPathParams,\n responseSchema: serializedProcessorDetailSchema,\n summary: 'Get processor by ID',\n description: 'Returns details for a specific processor including its phases and configurations',\n tags: ['Processors'],\n requiresAuth: true,\n handler: async ({ mastra, processorId }) => {\n try {\n // Get the processor from Mastra's registered processors\n let processorEntry: Processor | ProcessorWorkflow | undefined;\n try {\n processorEntry = mastra.getProcessorById(processorId) as Processor | ProcessorWorkflow;\n } catch {\n // getProcessorById throws if not found, try by key\n const processors = mastra.listProcessors() || {};\n processorEntry = processors[processorId as keyof typeof processors] as Processor | ProcessorWorkflow;\n }\n\n if (!processorEntry) {\n throw new HTTPException(404, { message: 'Processor not found' });\n }\n\n // Check if it's a workflow processor\n const isWorkflow = isProcessorWorkflow(processorEntry);\n\n // Detect phases (handles both individual processors and workflow processors)\n const phases = detectProcessorPhases(processorEntry);\n\n // Get agent configurations for this processor\n const configs = mastra.getProcessorConfigurations(processorId);\n const agents = mastra.listAgents() || {};\n const configurations = configs.map(c => ({\n agentId: c.agentId,\n agentName: agents[c.agentId]?.name || c.agentId,\n type: c.type,\n }));\n\n return {\n id: processorEntry.id,\n name: processorEntry.name || processorEntry.id,\n description: processorEntry.description,\n phases,\n configurations,\n isWorkflow,\n };\n } catch (error) {\n return handleError(error, 'Error getting processor');\n }\n },\n});\n\nexport const EXECUTE_PROCESSOR_ROUTE = createRoute({\n method: 'POST',\n path: '/processors/:processorId/execute',\n responseType: 'json',\n pathParamSchema: processorIdPathParams,\n bodySchema: executeProcessorBodySchema,\n responseSchema: executeProcessorResponseSchema,\n summary: 'Execute processor',\n description: 'Executes a specific processor with the provided input data',\n tags: ['Processors'],\n requiresAuth: true,\n handler: async ({ mastra, processorId, ...bodyParams }) => {\n try {\n const { phase, messages } = bodyParams;\n\n if (!processorId) {\n throw new HTTPException(400, { message: 'Processor ID is required' });\n }\n\n if (!phase) {\n throw new HTTPException(400, { message: 'Phase is required' });\n }\n\n if (!messages || !Array.isArray(messages)) {\n throw new HTTPException(400, { message: 'Messages array is required' });\n }\n\n // Get the processor from Mastra's registered processors\n let processor;\n try {\n processor = mastra.getProcessorById(processorId);\n } catch {\n // getProcessorById throws if not found, try by key\n const processors = mastra.listProcessors() || {};\n processor = processors[processorId as keyof typeof processors];\n }\n\n if (!processor) {\n throw new HTTPException(404, { message: 'Processor not found' });\n }\n\n const messageList = new MessageList();\n messageList.add(messages as unknown as MessageInput[], 'input');\n\n // Check if this is a workflow processor\n if (isProcessorWorkflow(processor)) {\n // Execute workflow processor\n try {\n // Build inputData based on phase - each phase has different required fields\n const baseInputData = {\n phase: phase as 'input' | 'inputStep' | 'outputStream' | 'outputResult' | 'outputStep' | 'toolResult',\n messages: messageList.get.all.db(),\n messageList,\n retryCount: 0,\n };\n let inputData: typeof baseInputData & Record<string, unknown> = baseInputData;\n\n // Add phase-specific fields\n switch (phase) {\n case 'input':\n inputData = {\n ...inputData,\n systemMessages: [],\n };\n break;\n case 'inputStep':\n inputData = {\n ...inputData,\n stepNumber: 0,\n systemMessages: [],\n steps: [],\n model: '',\n tools: {},\n toolChoice: undefined,\n activeTools: [],\n providerOptions: undefined,\n modelSettings: undefined,\n structuredOutput: undefined,\n };\n break;\n case 'outputResult':\n inputData = {\n ...inputData,\n state: {},\n result: {\n text: extractTextFromMessages(messages),\n usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },\n finishReason: 'unknown',\n steps: [],\n },\n };\n break;\n case 'outputStep':\n inputData = {\n ...inputData,\n stepNumber: 0,\n systemMessages: [],\n steps: [],\n finishReason: 'stop',\n toolCalls: [],\n text: extractTextFromMessages(messages),\n };\n break;\n case 'outputStream':\n inputData = {\n ...inputData,\n part: null,\n streamParts: [],\n state: {},\n };\n break;\n case 'toolResult':\n inputData = {\n ...inputData,\n stepNumber: 0,\n toolName: '',\n toolCallId: '',\n args: undefined,\n toolResultValue: undefined,\n providerExecuted: false,\n systemMessages: [],\n steps: [],\n };\n break;\n }\n\n const run = await processor.createRun();\n const result = await run.start({\n inputData,\n });\n\n // Check for tripwire status\n if (result.status === 'tripwire') {\n return {\n success: false,\n phase,\n tripwire: {\n triggered: true,\n reason: result.tripwire.reason || `Tripwire triggered in workflow ${processor.id}`,\n metadata: result.tripwire.metadata,\n },\n messages,\n messageList: {\n messages,\n },\n };\n }\n\n // Check for execution failure\n if (result.status !== 'success') {\n throw new HTTPException(500, {\n message: `Processor workflow ${processor.id} failed with status: ${result.status}`,\n });\n }\n\n // Extract output from workflow result\n const output = result.result;\n let outputMessages = messages;\n\n if (output && typeof output === 'object') {\n if ('messages' in output && Array.isArray(output.messages)) {\n outputMessages = output.messages;\n } else if ('messageList' in output && output.messageList instanceof MessageList) {\n outputMessages = output.messageList.get.all.db();\n }\n }\n\n return {\n success: true,\n phase,\n messages: outputMessages,\n messageList: {\n messages: outputMessages,\n },\n };\n } catch (error: any) {\n // Re-throw HTTP exceptions\n if (error instanceof HTTPException) {\n throw error;\n }\n throw new HTTPException(500, {\n message: `Error executing processor workflow: ${error.message}`,\n });\n }\n }\n\n // Handle individual processor execution\n // Create the abort function for tripwire support\n let tripwireTriggered = false;\n let tripwireReason: string | undefined;\n let tripwireMetadata: unknown;\n\n const abort = (reason?: string, options?: { retry?: boolean; metadata?: unknown }) => {\n tripwireTriggered = true;\n tripwireReason = reason;\n tripwireMetadata = options?.metadata;\n throw new Error(`TRIPWIRE:${reason || 'Processor aborted'}`);\n };\n\n // Build the context based on phase\n const baseContext = {\n abort,\n retryCount: 0,\n messages: messageList.get.all.db(),\n messageList,\n state: {},\n };\n\n try {\n let result: any;\n\n // Execute the specific phase method on the individual processor\n switch (phase) {\n case 'input':\n if (!processor.processInput) {\n throw new HTTPException(400, { message: 'Processor does not support input phase' });\n }\n result = await processor.processInput({\n ...baseContext,\n systemMessages: [],\n });\n break;\n\n case 'inputStep':\n if (!processor.processInputStep) {\n throw new HTTPException(400, { message: 'Processor does not support inputStep phase' });\n }\n result = await processor.processInputStep({\n ...baseContext,\n systemMessages: [],\n stepNumber: 0,\n steps: [],\n // Pass empty/default values for all inputStep fields\n model: '' as any,\n tools: {},\n toolChoice: undefined,\n activeTools: [],\n providerOptions: undefined,\n modelSettings: undefined,\n structuredOutput: undefined,\n });\n break;\n\n case 'outputResult':\n if (!processor.processOutputResult) {\n throw new HTTPException(400, { message: 'Processor does not support outputResult phase' });\n }\n result = await processor.processOutputResult({\n ...baseContext,\n state: {},\n result: {\n text: extractTextFromMessages(messages),\n usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },\n finishReason: 'unknown',\n steps: [],\n },\n });\n break;\n\n case 'outputStep':\n if (!processor.processOutputStep) {\n throw new HTTPException(400, { message: 'Processor does not support outputStep phase' });\n }\n result = await processor.processOutputStep({\n ...baseContext,\n systemMessages: [],\n stepNumber: 0,\n steps: [],\n finishReason: 'stop',\n toolCalls: [],\n text: extractTextFromMessages(messages),\n usage: { inputTokens: undefined, outputTokens: undefined, totalTokens: undefined },\n });\n break;\n\n case 'outputStream':\n // outputStream is for streaming chunks, not a simple execute\n throw new HTTPException(400, {\n message: 'outputStream phase cannot be executed directly. Use streaming instead.',\n });\n\n default:\n throw new HTTPException(400, { message: `Unknown phase: ${phase}` });\n }\n\n // Process the result\n let outputMessages = messages;\n if (result) {\n if (Array.isArray(result)) {\n outputMessages = result;\n } else if (result.get && result.get.all && typeof result.get.all.db === 'function') {\n // It's a MessageList\n outputMessages = result.get.all.db();\n } else if (result.messages) {\n outputMessages = result.messages;\n }\n }\n\n return {\n success: true,\n phase,\n messages: outputMessages,\n messageList: {\n messages: outputMessages,\n },\n };\n } catch (error: any) {\n // Check if it's a tripwire\n if (tripwireTriggered || error.message?.startsWith('TRIPWIRE:')) {\n return {\n success: false,\n phase,\n tripwire: {\n triggered: true,\n reason: tripwireReason || error.message?.replace('TRIPWIRE:', ''),\n metadata: tripwireMetadata,\n },\n messages,\n messageList: {\n messages,\n },\n };\n }\n throw error;\n }\n } catch (error) {\n return handleError(error, 'Error executing processor');\n }\n },\n});\n"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ require("../../rolldown-runtime-Bd6kNlEP.cjs");
2
3
  const require_http_exception = require("../../http-exception-CKDHupKw.cjs");
3
- const require_route_builder = require("../../route-builder-BAAedfru.cjs");
4
- const require_utils = require("../../utils-Bna_JCkb.cjs");
4
+ const require_route_builder = require("../../route-builder-CWsok5ci.cjs");
5
+ const require_utils = require("../../utils-zkjmP1OK.cjs");
5
6
  const require_server_handlers_error = require("./error.cjs");
6
- const require_prompt_block_versions = require("../../prompt-block-versions-Cgt_Grk2.cjs");
7
7
  const require_server_handlers_version_helpers = require("./version-helpers.cjs");
8
+ const require_prompt_block_versions = require("../../prompt-block-versions-Cgt_Grk2.cjs");
8
9
  //#region src/server/handlers/prompt-block-versions.ts
9
10
  const SNAPSHOT_CONFIG_FIELDS = [
10
11
  "name",