@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,13 +1,14 @@
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 { o as optionalRunIdSchema } from "../../common-5ZZuR6wj.js";
4
- import { H as serializedToolSchema, J as toolIdPathParams, S as listToolsResponseSchema, _ as executeToolResponseSchema, g as executeToolContextBodySchema, h as executeToolBodySchema, s as agentToolPathParams } from "../../agents-uT8ZDE4k.js";
4
+ import { W as serializedToolSchema, X as toolIdPathParams, _ as executeToolBodySchema, l as agentToolPathParams, v as executeToolContextBodySchema, w as listToolsResponseSchema, y as executeToolResponseSchema } from "../../agents-BetrUB_N.js";
5
5
  import { n as standardSchemaToJSONSchema, r as toStandardSchema } from "../../schema-Bv9OdW1f-DLSJSqQv.js";
6
6
  import { n as createRoute } from "../../route-builder-YQ_gLIvW.js";
7
7
  import "../../schema-CGeYTFwm.js";
8
- import { l as stringify } from "../../utils-QXKhjIm6.js";
8
+ import { l as stringify } from "../../utils-CljhO7OY.js";
9
9
  import { handleError } from "./error.js";
10
- import { c as validateBody, d as MastraFGAPermissions } from "../../utils-CmHd1Sgh.js";
10
+ import { c as validateBody, d as MastraFGAPermissions } from "../../utils-qMLbyf2U.js";
11
+ import { stripInjectedToolOverrideFields } from "./tool-schema-overrides.js";
11
12
  import { getAgentFromSystem } from "./agents.js";
12
13
  import { isProviderDefinedTool, isVercelTool } from "@mastra/core/tools";
13
14
  //#region src/server/handlers/tools.ts
@@ -32,10 +33,10 @@ function schemaToJsonSchema(schema) {
32
33
  if (!schema) return;
33
34
  return standardSchemaToJSONSchema(toStandardSchema(schema), { target: "draft-2020-12" });
34
35
  }
35
- function serializeSchema(schema) {
36
+ function serializeSchema(schema, options) {
36
37
  const jsonSchema = schemaToJsonSchema(resolveLazySchema(schema));
37
38
  if (jsonSchema === void 0) return void 0;
38
- return stringify(jsonSchema);
39
+ return stringify(options?.stripInjectedOverrides ? stripInjectedToolOverrideFields(jsonSchema) : jsonSchema);
39
40
  }
40
41
  /**
41
42
  * Searches dynamically-resolved agent tools (provided via `toolsResolver` /
@@ -76,7 +77,7 @@ function serializeTool(tool) {
76
77
  }
77
78
  return {
78
79
  ...tool,
79
- inputSchema: serializeSchema(tool.inputSchema),
80
+ inputSchema: serializeSchema(tool.inputSchema, { stripInjectedOverrides: true }),
80
81
  outputSchema: serializeSchema(tool.outputSchema),
81
82
  requestContextSchema: serializeSchema(tool.requestContextSchema)
82
83
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","names":[],"sources":["../../../src/server/handlers/tools.ts"],"sourcesContent":["import { isVercelTool, isProviderDefinedTool } from '@mastra/core/tools';\nimport { toStandardSchema, standardSchemaToJSONSchema } from '@mastra/schema-compat/schema';\nimport type { PublicSchema } from '@mastra/schema-compat/schema';\nimport { stringify } from 'superjson';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n executeToolContextBodySchema,\n executeToolResponseSchema,\n listToolsResponseSchema,\n serializedToolSchema,\n toolIdPathParams,\n agentToolPathParams,\n executeToolBodySchema,\n} from '../schemas/agents';\nimport { optionalRunIdSchema } from '../schemas/common';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { validateBody } from './utils';\n\n/**\n * Resolves a schema that may be a lazy function (e.g. AI SDK provider tools).\n * Recursively resolves until a non-function value is returned.\n * Skips functions that are themselves valid schemas (e.g. ArkType types are\n * callable but also implement StandardSchema via ~standard).\n */\nfunction resolveLazySchema(schema: unknown): unknown {\n if (typeof schema === 'function' && !('~standard' in schema)) {\n return resolveLazySchema(schema());\n }\n return schema;\n}\n\nfunction schemaToJsonSchema(schema: PublicSchema<unknown> | undefined) {\n if (!schema) {\n return undefined;\n }\n\n return standardSchemaToJSONSchema(toStandardSchema(schema), { target: 'draft-2020-12' });\n}\n\nfunction serializeSchema(schema: unknown): string | undefined {\n const jsonSchema = schemaToJsonSchema(resolveLazySchema(schema) as PublicSchema<unknown> | undefined);\n if (jsonSchema === undefined) return undefined;\n return stringify(jsonSchema);\n}\n\n/**\n * Searches dynamically-resolved agent tools (provided via `toolsResolver` /\n * function-based `tools`) for a tool with the given id. Used as a fallback\n * after the static tool registry (`registeredTools` + `mastra.getToolById`)\n * misses, so global tool routes can resolve tools that only exist on agents.\n *\n * Errors thrown by an individual agent's `listTools()` are logged and\n * skipped so a single broken resolver doesn't take down the whole lookup.\n */\nasync function findToolInAgents(mastra: any, toolId: string, requestContext: any): Promise<any | undefined> {\n const agents = mastra.listAgents() || {};\n for (const agent of Object.values(agents) as any[]) {\n try {\n const agentTools = await agent.listTools({ requestContext });\n const found = Object.values(agentTools || {}).find((t: any) => t.id === toolId);\n if (found) return found;\n } catch (error) {\n mastra.getLogger?.()?.warn?.('Failed to list tools for agent while resolving tool by id', {\n agentId: agent?.id,\n toolId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n return undefined;\n}\n\n/**\n * Serializes a tool for API responses, handling both regular tools (with Zod schemas)\n * and provider-defined tools (with AI SDK lazy schemas).\n */\nfunction serializeTool(tool: any): any {\n // Provider-defined tools (e.g. google.tools.googleSearch(), openai.tools.webSearch())\n // have lazy inputSchema functions that return AI SDK Schema objects, not Zod schemas.\n // We resolve them and use the jsonSchema property directly.\n if (isProviderDefinedTool(tool)) {\n const resolvedInput = resolveLazySchema(tool.inputSchema);\n const resolvedOutput = resolveLazySchema(tool.outputSchema);\n return {\n ...tool,\n inputSchema:\n resolvedInput && typeof resolvedInput === 'object' && 'jsonSchema' in resolvedInput\n ? stringify(resolvedInput.jsonSchema)\n : undefined,\n outputSchema:\n resolvedOutput && typeof resolvedOutput === 'object' && 'jsonSchema' in resolvedOutput\n ? stringify(resolvedOutput.jsonSchema)\n : undefined,\n };\n }\n\n return {\n ...tool,\n inputSchema: serializeSchema(tool.inputSchema),\n outputSchema: serializeSchema(tool.outputSchema),\n requestContextSchema: serializeSchema(tool.requestContextSchema),\n };\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_TOOLS_ROUTE = createRoute({\n method: 'GET',\n path: '/tools',\n responseType: 'json',\n responseSchema: listToolsResponseSchema,\n summary: 'List all tools',\n description: 'Returns a list of all available tools in the system',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, registeredTools, requestContext }) => {\n try {\n // Merge tools from two sources: mastra.listTools() includes dynamically created tools\n // (e.g. MCP tools, or agent tools registered by their intrinsic id), while registeredTools\n // includes tools discovered by the CLI bundler (keyed by export name).\n //\n // The same tool instance can appear in both maps under different keys (e.g. an agent\n // registers it by `tool.id` while the bundler registers it by export name). Dedupe by\n // `tool.id`, preferring the registeredTools (bundler) key, so each tool appears once.\n const registered = registeredTools && Object.keys(registeredTools).length > 0 ? registeredTools : {};\n\n const allTools: Record<string, any> = {};\n const seenToolIds = new Map<string, string>();\n\n // registeredTools first so their key wins for a given tool.id.\n for (const [key, tool] of Object.entries(registered)) {\n const toolId = typeof (tool as any)?.id === 'string' ? (tool as any).id : undefined;\n if (toolId !== undefined) seenToolIds.set(toolId, key);\n allTools[key] = tool;\n }\n\n for (const [key, tool] of Object.entries(mastra.listTools() ?? {})) {\n const toolId = typeof (tool as any)?.id === 'string' ? (tool as any).id : undefined;\n // Skip if this exact tool.id was already registered (under any key) by registeredTools.\n if (toolId !== undefined && seenToolIds.has(toolId)) continue;\n if (toolId !== undefined) seenToolIds.set(toolId, key);\n allTools[key] = tool;\n }\n\n const serializedTools = Object.entries(allTools).reduce(\n (acc, [id, _tool]) => {\n acc[id] = serializeTool(_tool);\n return acc;\n },\n {} as Record<string, any>,\n );\n\n // Filter tools by FGA if configured\n const fgaProvider = mastra.getServer?.()?.fga;\n const user = requestContext?.get('user');\n if (fgaProvider && user) {\n const toolList = Object.entries(serializedTools).map(([id, t]) => ({ id, ...t }));\n const accessible = await fgaProvider.filterAccessible(user, toolList, 'tool', MastraFGAPermissions.TOOLS_READ);\n const accessibleSet = new Set(accessible.map((t: any) => t.id));\n for (const id of Object.keys(serializedTools)) {\n if (!accessibleSet.has(id)) {\n delete serializedTools[id];\n }\n }\n }\n\n return serializedTools;\n } catch (error) {\n return handleError(error, 'Error getting tools');\n }\n },\n});\n\nexport const GET_TOOL_BY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/tools/:toolId',\n responseType: 'json',\n pathParamSchema: toolIdPathParams,\n responseSchema: serializedToolSchema,\n summary: 'Get tool by ID',\n description: 'Returns details for a specific tool including its schema and configuration',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, registeredTools, toolId, requestContext }) => {\n try {\n let tool: any;\n\n // Try explicit registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n }\n if (!tool) {\n try {\n tool = mastra.getToolById(toolId);\n } catch {\n // tool not found in global registry, continue to agent fallback\n }\n }\n\n // Fallback: search dynamically-resolved agent tools (toolsResolver)\n if (!tool) {\n tool = await findToolInAgents(mastra, toolId, requestContext);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n return serializeTool(tool);\n } catch (error) {\n return handleError(error, 'Error getting tool');\n }\n },\n});\n\nexport const EXECUTE_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: toolIdPathParams,\n queryParamSchema: optionalRunIdSchema,\n bodySchema: executeToolContextBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute tool',\n description: 'Executes a specific tool with the provided input data',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, runId, toolId, registeredTools, requestContext, ...bodyParams }) => {\n try {\n if (!toolId) {\n throw new HTTPException(400, { message: 'Tool ID is required' });\n }\n\n let tool: any;\n\n // Try explicit registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n }\n if (!tool) {\n try {\n tool = mastra.getToolById(toolId);\n } catch {\n // tool not found in global registry, continue to agent fallback\n }\n }\n\n // Fallback: search dynamically-resolved agent tools (toolsResolver)\n if (!tool) {\n tool = await findToolInAgents(mastra, toolId, requestContext);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n const { data } = bodyParams;\n\n validateBody({ data });\n\n let result;\n if (isVercelTool(tool)) {\n result = await (tool as any).execute(data);\n } else {\n result = await tool.execute(data!, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n ...(runId\n ? {\n workflow: {\n runId,\n suspend: async () => {},\n },\n }\n : {}),\n });\n }\n\n return result;\n } catch (error) {\n return handleError(error, 'Error executing tool');\n }\n },\n});\n\n// ============================================================================\n// Agent Tool Routes\n// ============================================================================\n\nexport const GET_AGENT_TOOL_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId/tools/:toolId',\n responseType: 'json',\n pathParamSchema: agentToolPathParams,\n responseSchema: serializedToolSchema,\n summary: 'Get agent tool',\n description: 'Returns details for a specific tool assigned to the agent',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n return serializeTool(tool);\n } catch (error) {\n return handleError(error, 'Error getting agent tool');\n }\n },\n});\n\nexport const EXECUTE_AGENT_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: agentToolPathParams,\n bodySchema: executeToolBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute agent tool',\n description: 'Executes a specific tool assigned to the agent with the provided input data',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, data, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n const result = await tool.execute(data, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error executing agent tool');\n }\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","names":[],"sources":["../../../src/server/handlers/tools.ts"],"sourcesContent":["import { isVercelTool, isProviderDefinedTool } from '@mastra/core/tools';\nimport { toStandardSchema, standardSchemaToJSONSchema } from '@mastra/schema-compat/schema';\nimport type { PublicSchema } from '@mastra/schema-compat/schema';\nimport { stringify } from 'superjson';\nimport { MastraFGAPermissions } from '../fga-permissions';\nimport { HTTPException } from '../http-exception';\nimport {\n executeToolContextBodySchema,\n executeToolResponseSchema,\n listToolsResponseSchema,\n serializedToolSchema,\n toolIdPathParams,\n agentToolPathParams,\n executeToolBodySchema,\n} from '../schemas/agents';\nimport { optionalRunIdSchema } from '../schemas/common';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { stripInjectedToolOverrideFields } from './tool-schema-overrides';\nimport { validateBody } from './utils';\n\n/**\n * Resolves a schema that may be a lazy function (e.g. AI SDK provider tools).\n * Recursively resolves until a non-function value is returned.\n * Skips functions that are themselves valid schemas (e.g. ArkType types are\n * callable but also implement StandardSchema via ~standard).\n */\nfunction resolveLazySchema(schema: unknown): unknown {\n if (typeof schema === 'function' && !('~standard' in schema)) {\n return resolveLazySchema(schema());\n }\n return schema;\n}\n\nfunction schemaToJsonSchema(schema: PublicSchema<unknown> | undefined) {\n if (!schema) {\n return undefined;\n }\n\n return standardSchemaToJSONSchema(toStandardSchema(schema), { target: 'draft-2020-12' });\n}\n\nfunction serializeSchema(schema: unknown, options?: { stripInjectedOverrides?: boolean }): string | undefined {\n const jsonSchema = schemaToJsonSchema(resolveLazySchema(schema) as PublicSchema<unknown> | undefined);\n if (jsonSchema === undefined) return undefined;\n return stringify(options?.stripInjectedOverrides ? stripInjectedToolOverrideFields(jsonSchema) : jsonSchema);\n}\n\n/**\n * Searches dynamically-resolved agent tools (provided via `toolsResolver` /\n * function-based `tools`) for a tool with the given id. Used as a fallback\n * after the static tool registry (`registeredTools` + `mastra.getToolById`)\n * misses, so global tool routes can resolve tools that only exist on agents.\n *\n * Errors thrown by an individual agent's `listTools()` are logged and\n * skipped so a single broken resolver doesn't take down the whole lookup.\n */\nasync function findToolInAgents(mastra: any, toolId: string, requestContext: any): Promise<any | undefined> {\n const agents = mastra.listAgents() || {};\n for (const agent of Object.values(agents) as any[]) {\n try {\n const agentTools = await agent.listTools({ requestContext });\n const found = Object.values(agentTools || {}).find((t: any) => t.id === toolId);\n if (found) return found;\n } catch (error) {\n mastra.getLogger?.()?.warn?.('Failed to list tools for agent while resolving tool by id', {\n agentId: agent?.id,\n toolId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n return undefined;\n}\n\n/**\n * Serializes a tool for API responses, handling both regular tools (with Zod schemas)\n * and provider-defined tools (with AI SDK lazy schemas).\n */\nfunction serializeTool(tool: any): any {\n // Provider-defined tools (e.g. google.tools.googleSearch(), openai.tools.webSearch())\n // have lazy inputSchema functions that return AI SDK Schema objects, not Zod schemas.\n // We resolve them and use the jsonSchema property directly.\n if (isProviderDefinedTool(tool)) {\n const resolvedInput = resolveLazySchema(tool.inputSchema);\n const resolvedOutput = resolveLazySchema(tool.outputSchema);\n return {\n ...tool,\n inputSchema:\n resolvedInput && typeof resolvedInput === 'object' && 'jsonSchema' in resolvedInput\n ? stringify(resolvedInput.jsonSchema)\n : undefined,\n outputSchema:\n resolvedOutput && typeof resolvedOutput === 'object' && 'jsonSchema' in resolvedOutput\n ? stringify(resolvedOutput.jsonSchema)\n : undefined,\n };\n }\n\n return {\n ...tool,\n inputSchema: serializeSchema(tool.inputSchema, { stripInjectedOverrides: true }),\n outputSchema: serializeSchema(tool.outputSchema),\n requestContextSchema: serializeSchema(tool.requestContextSchema),\n };\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_TOOLS_ROUTE = createRoute({\n method: 'GET',\n path: '/tools',\n responseType: 'json',\n responseSchema: listToolsResponseSchema,\n summary: 'List all tools',\n description: 'Returns a list of all available tools in the system',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, registeredTools, requestContext }) => {\n try {\n // Merge tools from two sources: mastra.listTools() includes dynamically created tools\n // (e.g. MCP tools, or agent tools registered by their intrinsic id), while registeredTools\n // includes tools discovered by the CLI bundler (keyed by export name).\n //\n // The same tool instance can appear in both maps under different keys (e.g. an agent\n // registers it by `tool.id` while the bundler registers it by export name). Dedupe by\n // `tool.id`, preferring the registeredTools (bundler) key, so each tool appears once.\n const registered = registeredTools && Object.keys(registeredTools).length > 0 ? registeredTools : {};\n\n const allTools: Record<string, any> = {};\n const seenToolIds = new Map<string, string>();\n\n // registeredTools first so their key wins for a given tool.id.\n for (const [key, tool] of Object.entries(registered)) {\n const toolId = typeof (tool as any)?.id === 'string' ? (tool as any).id : undefined;\n if (toolId !== undefined) seenToolIds.set(toolId, key);\n allTools[key] = tool;\n }\n\n for (const [key, tool] of Object.entries(mastra.listTools() ?? {})) {\n const toolId = typeof (tool as any)?.id === 'string' ? (tool as any).id : undefined;\n // Skip if this exact tool.id was already registered (under any key) by registeredTools.\n if (toolId !== undefined && seenToolIds.has(toolId)) continue;\n if (toolId !== undefined) seenToolIds.set(toolId, key);\n allTools[key] = tool;\n }\n\n const serializedTools = Object.entries(allTools).reduce(\n (acc, [id, _tool]) => {\n acc[id] = serializeTool(_tool);\n return acc;\n },\n {} as Record<string, any>,\n );\n\n // Filter tools by FGA if configured\n const fgaProvider = mastra.getServer?.()?.fga;\n const user = requestContext?.get('user');\n if (fgaProvider && user) {\n const toolList = Object.entries(serializedTools).map(([id, t]) => ({ id, ...t }));\n const accessible = await fgaProvider.filterAccessible(user, toolList, 'tool', MastraFGAPermissions.TOOLS_READ);\n const accessibleSet = new Set(accessible.map((t: any) => t.id));\n for (const id of Object.keys(serializedTools)) {\n if (!accessibleSet.has(id)) {\n delete serializedTools[id];\n }\n }\n }\n\n return serializedTools;\n } catch (error) {\n return handleError(error, 'Error getting tools');\n }\n },\n});\n\nexport const GET_TOOL_BY_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/tools/:toolId',\n responseType: 'json',\n pathParamSchema: toolIdPathParams,\n responseSchema: serializedToolSchema,\n summary: 'Get tool by ID',\n description: 'Returns details for a specific tool including its schema and configuration',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, registeredTools, toolId, requestContext }) => {\n try {\n let tool: any;\n\n // Try explicit registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n }\n if (!tool) {\n try {\n tool = mastra.getToolById(toolId);\n } catch {\n // tool not found in global registry, continue to agent fallback\n }\n }\n\n // Fallback: search dynamically-resolved agent tools (toolsResolver)\n if (!tool) {\n tool = await findToolInAgents(mastra, toolId, requestContext);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n return serializeTool(tool);\n } catch (error) {\n return handleError(error, 'Error getting tool');\n }\n },\n});\n\nexport const EXECUTE_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: toolIdPathParams,\n queryParamSchema: optionalRunIdSchema,\n bodySchema: executeToolContextBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute tool',\n description: 'Executes a specific tool with the provided input data',\n tags: ['Tools'],\n requiresAuth: true,\n handler: async ({ mastra, runId, toolId, registeredTools, requestContext, ...bodyParams }) => {\n try {\n if (!toolId) {\n throw new HTTPException(400, { message: 'Tool ID is required' });\n }\n\n let tool: any;\n\n // Try explicit registeredTools first, then fallback to mastra\n if (registeredTools && Object.keys(registeredTools).length > 0) {\n tool = Object.values(registeredTools).find((t: any) => t.id === toolId);\n }\n if (!tool) {\n try {\n tool = mastra.getToolById(toolId);\n } catch {\n // tool not found in global registry, continue to agent fallback\n }\n }\n\n // Fallback: search dynamically-resolved agent tools (toolsResolver)\n if (!tool) {\n tool = await findToolInAgents(mastra, toolId, requestContext);\n }\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n const { data } = bodyParams;\n\n validateBody({ data });\n\n let result;\n if (isVercelTool(tool)) {\n result = await (tool as any).execute(data);\n } else {\n result = await tool.execute(data!, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n ...(runId\n ? {\n workflow: {\n runId,\n suspend: async () => {},\n },\n }\n : {}),\n });\n }\n\n return result;\n } catch (error) {\n return handleError(error, 'Error executing tool');\n }\n },\n});\n\n// ============================================================================\n// Agent Tool Routes\n// ============================================================================\n\nexport const GET_AGENT_TOOL_ROUTE = createRoute({\n method: 'GET',\n path: '/agents/:agentId/tools/:toolId',\n responseType: 'json',\n pathParamSchema: agentToolPathParams,\n responseSchema: serializedToolSchema,\n summary: 'Get agent tool',\n description: 'Returns details for a specific tool assigned to the agent',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n return serializeTool(tool);\n } catch (error) {\n return handleError(error, 'Error getting agent tool');\n }\n },\n});\n\nexport const EXECUTE_AGENT_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/agents/:agentId/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: agentToolPathParams,\n bodySchema: executeToolBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute agent tool',\n description: 'Executes a specific tool assigned to the agent with the provided input data',\n tags: ['Agents', 'Tools'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, toolId, data, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n const agent = await getAgentFromSystem({ mastra, agentId });\n\n const agentTools = await agent.listTools({ requestContext });\n\n const tool = Object.values(agentTools || {}).find((tool: any) => tool.id === toolId) as any;\n\n if (!tool) {\n throw new HTTPException(404, { message: 'Tool not found' });\n }\n\n if (!tool?.execute) {\n throw new HTTPException(400, { message: 'Tool is not executable' });\n }\n\n const result = await tool.execute(data, {\n mastra,\n requestContext,\n // TODO: Pass proper tracing context when server API supports tracing\n tracingContext: { currentSpan: undefined },\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error executing agent tool');\n }\n },\n});\n"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_utils = require("../../utils-wTwyTjg3.cjs");
2
+ require("../../rolldown-runtime-Bd6kNlEP.cjs");
3
+ const require_utils = require("../../utils-Xnn91QBW.cjs");
3
4
  exports.enforceThreadAccess = require_utils.enforceThreadAccess;
4
5
  exports.getEffectiveResourceId = require_utils.getEffectiveResourceId;
5
6
  exports.getEffectiveThreadId = require_utils.getEffectiveThreadId;
@@ -1,2 +1,2 @@
1
- import { a as parsePerPage, c as validateBody, i as parseFilters, l as validateRunOwnership, n as getEffectiveResourceId, o as requireEffectiveResourceId, r as getEffectiveThreadId, s as sanitizeBody, t as enforceThreadAccess, u as validateThreadOwnership } from "../../utils-CmHd1Sgh.js";
1
+ import { a as parsePerPage, c as validateBody, i as parseFilters, l as validateRunOwnership, n as getEffectiveResourceId, o as requireEffectiveResourceId, r as getEffectiveThreadId, s as sanitizeBody, t as enforceThreadAccess, u as validateThreadOwnership } from "../../utils-qMLbyf2U.js";
2
2
  export { enforceThreadAccess, getEffectiveResourceId, getEffectiveThreadId, parseFilters, parsePerPage, requireEffectiveResourceId, sanitizeBody, validateBody, validateRunOwnership, validateThreadOwnership };
@@ -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_utils = require("../../utils-Bna_JCkb.cjs");
4
+ const require_utils = require("../../utils-zkjmP1OK.cjs");
4
5
  //#region src/server/handlers/validate-agent-instructions.ts
5
6
  const UNPUBLISHED_REFERENCES_MESSAGE = "Unable to use unpublished referenced prompt blocks: {ids}. Publish these prompt blocks and try again.";
6
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"validate-agent-instructions.cjs","names":["getStoredResourceScope","HTTPException"],"sources":["../../../src/server/handlers/validate-agent-instructions.ts"],"sourcesContent":["import type { Mastra } from '@mastra/core';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { AgentInstructionBlock } from '@mastra/core/storage';\n\nimport { HTTPException } from '../http-exception';\nimport { assertStoredResourceScope, getStoredResourceScope } from '../utils';\n\nconst UNPUBLISHED_REFERENCES_MESSAGE =\n 'Unable to use unpublished referenced prompt blocks: {ids}. Publish these prompt blocks and try again.';\n\n/**\n * Type guard that returns AgentInstructionBlock[] when the input is an array, or undefined otherwise.\n */\nfunction getInstructionBlocks(instructions: unknown): AgentInstructionBlock[] | undefined {\n if (!Array.isArray(instructions)) {\n return undefined;\n }\n\n return instructions as AgentInstructionBlock[];\n}\n\n/**\n * Validates prompt_block_ref references in agent instructions.\n * Checks every referenced prompt block for existence, access scope, and published status with an activeVersionId.\n * Throws an HTTP 400 error listing unresolved or unpublished block IDs when validation fails.\n */\nexport async function validateAgentInstructionReferences({\n instructions,\n mastra,\n requestContext,\n}: {\n instructions: unknown;\n mastra: Pick<Mastra, 'getServer' | 'getStorage'>;\n requestContext: RequestContext | undefined;\n}): Promise<void> {\n const blocks = getInstructionBlocks(instructions);\n if (!blocks) {\n return;\n }\n\n const referenceIds = [\n ...new Set(\n blocks\n .filter(\n (block): block is Extract<AgentInstructionBlock, { type: 'prompt_block_ref' }> =>\n block.type === 'prompt_block_ref',\n )\n .map(block => block.id.trim())\n .filter(Boolean),\n ),\n ];\n if (referenceIds.length === 0) {\n return;\n }\n\n const storage = mastra.getStorage();\n const promptBlocksStore = storage ? await storage.getStore('promptBlocks') : null;\n const scope = await getStoredResourceScope(mastra, requestContext);\n const results = promptBlocksStore\n ? await Promise.allSettled(referenceIds.map(id => promptBlocksStore.getById(id)))\n : referenceIds.map(() => ({ status: 'rejected' as const, reason: new Error('Storage unavailable') }));\n\n const unresolvedIds: string[] = [];\n const unpublishedIds: string[] = [];\n\n for (const [index, result] of results.entries()) {\n const id = referenceIds[index];\n if (!id || result.status === 'rejected' || !result.value) {\n if (id) unresolvedIds.push(id);\n continue;\n }\n\n try {\n assertStoredResourceScope(result.value, scope);\n } catch {\n unresolvedIds.push(id);\n continue;\n }\n\n if (result.value.status !== 'published' || !result.value.activeVersionId) {\n unpublishedIds.push(id);\n }\n }\n\n if (unresolvedIds.length > 0) {\n throw new HTTPException(400, {\n message: `Unable to verify referenced prompt blocks: ${unresolvedIds.join(', ')}. Resolve these references and try again.`,\n });\n }\n\n if (unpublishedIds.length > 0) {\n throw new HTTPException(400, {\n message: UNPUBLISHED_REFERENCES_MESSAGE.replace('{ids}', unpublishedIds.join(', ')),\n });\n }\n}\n"],"mappings":";;;;AAOA,MAAM,iCACJ;;;;AAKF,SAAS,qBAAqB,cAA4D;CACxF,IAAI,CAAC,MAAM,QAAQ,YAAY,GAC7B;CAGF,OAAO;AACT;;;;;;AAOA,eAAsB,mCAAmC,EACvD,cACA,QACA,kBAKgB;CAChB,MAAM,SAAS,qBAAqB,YAAY;CAChD,IAAI,CAAC,QACH;CAGF,MAAM,eAAe,CACnB,GAAG,IAAI,IACL,OACG,QACE,UACC,MAAM,SAAS,kBACnB,CAAC,CACA,KAAI,UAAS,MAAM,GAAG,KAAK,CAAC,CAAC,CAC7B,OAAO,OAAO,CACnB,CACF;CACA,IAAI,aAAa,WAAW,GAC1B;CAGF,MAAM,UAAU,OAAO,WAAW;CAClC,MAAM,oBAAoB,UAAU,MAAM,QAAQ,SAAS,cAAc,IAAI;CAC7E,MAAM,QAAQ,MAAMA,cAAAA,uBAAuB,QAAQ,cAAc;CACjE,MAAM,UAAU,oBACZ,MAAM,QAAQ,WAAW,aAAa,KAAI,OAAM,kBAAkB,QAAQ,EAAE,CAAC,CAAC,IAC9E,aAAa,WAAW;EAAE,QAAQ;EAAqB,wBAAQ,IAAI,MAAM,qBAAqB;CAAE,EAAE;CAEtG,MAAM,gBAA0B,CAAC;CACjC,MAAM,iBAA2B,CAAC;CAElC,KAAK,MAAM,CAAC,OAAO,WAAW,QAAQ,QAAQ,GAAG;EAC/C,MAAM,KAAK,aAAa;EACxB,IAAI,CAAC,MAAM,OAAO,WAAW,cAAc,CAAC,OAAO,OAAO;GACxD,IAAI,IAAI,cAAc,KAAK,EAAE;GAC7B;EACF;EAEA,IAAI;GACF,cAAA,0BAA0B,OAAO,OAAO,KAAK;EAC/C,QAAQ;GACN,cAAc,KAAK,EAAE;GACrB;EACF;EAEA,IAAI,OAAO,MAAM,WAAW,eAAe,CAAC,OAAO,MAAM,iBACvD,eAAe,KAAK,EAAE;CAE1B;CAEA,IAAI,cAAc,SAAS,GACzB,MAAM,IAAIC,uBAAAA,cAAc,KAAK,EAC3B,SAAS,8CAA8C,cAAc,KAAK,IAAI,EAAE,2CAClF,CAAC;CAGH,IAAI,eAAe,SAAS,GAC1B,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAC3B,SAAS,+BAA+B,QAAQ,SAAS,eAAe,KAAK,IAAI,CAAC,EACpF,CAAC;AAEL"}
1
+ {"version":3,"file":"validate-agent-instructions.cjs","names":["getStoredResourceScope","HTTPException"],"sources":["../../../src/server/handlers/validate-agent-instructions.ts"],"sourcesContent":["import type { Mastra } from '@mastra/core';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { AgentInstructionBlock } from '@mastra/core/storage';\n\nimport { HTTPException } from '../http-exception';\nimport { assertStoredResourceScope, getStoredResourceScope } from '../utils';\n\nconst UNPUBLISHED_REFERENCES_MESSAGE =\n 'Unable to use unpublished referenced prompt blocks: {ids}. Publish these prompt blocks and try again.';\n\n/**\n * Type guard that returns AgentInstructionBlock[] when the input is an array, or undefined otherwise.\n */\nfunction getInstructionBlocks(instructions: unknown): AgentInstructionBlock[] | undefined {\n if (!Array.isArray(instructions)) {\n return undefined;\n }\n\n return instructions as AgentInstructionBlock[];\n}\n\n/**\n * Validates prompt_block_ref references in agent instructions.\n * Checks every referenced prompt block for existence, access scope, and published status with an activeVersionId.\n * Throws an HTTP 400 error listing unresolved or unpublished block IDs when validation fails.\n */\nexport async function validateAgentInstructionReferences({\n instructions,\n mastra,\n requestContext,\n}: {\n instructions: unknown;\n mastra: Pick<Mastra, 'getServer' | 'getStorage'>;\n requestContext: RequestContext | undefined;\n}): Promise<void> {\n const blocks = getInstructionBlocks(instructions);\n if (!blocks) {\n return;\n }\n\n const referenceIds = [\n ...new Set(\n blocks\n .filter(\n (block): block is Extract<AgentInstructionBlock, { type: 'prompt_block_ref' }> =>\n block.type === 'prompt_block_ref',\n )\n .map(block => block.id.trim())\n .filter(Boolean),\n ),\n ];\n if (referenceIds.length === 0) {\n return;\n }\n\n const storage = mastra.getStorage();\n const promptBlocksStore = storage ? await storage.getStore('promptBlocks') : null;\n const scope = await getStoredResourceScope(mastra, requestContext);\n const results = promptBlocksStore\n ? await Promise.allSettled(referenceIds.map(id => promptBlocksStore.getById(id)))\n : referenceIds.map(() => ({ status: 'rejected' as const, reason: new Error('Storage unavailable') }));\n\n const unresolvedIds: string[] = [];\n const unpublishedIds: string[] = [];\n\n for (const [index, result] of results.entries()) {\n const id = referenceIds[index];\n if (!id || result.status === 'rejected' || !result.value) {\n if (id) unresolvedIds.push(id);\n continue;\n }\n\n try {\n assertStoredResourceScope(result.value, scope);\n } catch {\n unresolvedIds.push(id);\n continue;\n }\n\n if (result.value.status !== 'published' || !result.value.activeVersionId) {\n unpublishedIds.push(id);\n }\n }\n\n if (unresolvedIds.length > 0) {\n throw new HTTPException(400, {\n message: `Unable to verify referenced prompt blocks: ${unresolvedIds.join(', ')}. Resolve these references and try again.`,\n });\n }\n\n if (unpublishedIds.length > 0) {\n throw new HTTPException(400, {\n message: UNPUBLISHED_REFERENCES_MESSAGE.replace('{ids}', unpublishedIds.join(', ')),\n });\n }\n}\n"],"mappings":";;;;;AAOA,MAAM,iCACJ;;;;AAKF,SAAS,qBAAqB,cAA4D;CACxF,IAAI,CAAC,MAAM,QAAQ,YAAY,GAC7B;CAGF,OAAO;AACT;;;;;;AAOA,eAAsB,mCAAmC,EACvD,cACA,QACA,kBAKgB;CAChB,MAAM,SAAS,qBAAqB,YAAY;CAChD,IAAI,CAAC,QACH;CAGF,MAAM,eAAe,CACnB,GAAG,IAAI,IACL,OACG,QACE,UACC,MAAM,SAAS,kBACnB,CAAC,CACA,KAAI,UAAS,MAAM,GAAG,KAAK,CAAC,CAAC,CAC7B,OAAO,OAAO,CACnB,CACF;CACA,IAAI,aAAa,WAAW,GAC1B;CAGF,MAAM,UAAU,OAAO,WAAW;CAClC,MAAM,oBAAoB,UAAU,MAAM,QAAQ,SAAS,cAAc,IAAI;CAC7E,MAAM,QAAQ,MAAMA,cAAAA,uBAAuB,QAAQ,cAAc;CACjE,MAAM,UAAU,oBACZ,MAAM,QAAQ,WAAW,aAAa,KAAI,OAAM,kBAAkB,QAAQ,EAAE,CAAC,CAAC,IAC9E,aAAa,WAAW;EAAE,QAAQ;EAAqB,wBAAQ,IAAI,MAAM,qBAAqB;CAAE,EAAE;CAEtG,MAAM,gBAA0B,CAAC;CACjC,MAAM,iBAA2B,CAAC;CAElC,KAAK,MAAM,CAAC,OAAO,WAAW,QAAQ,QAAQ,GAAG;EAC/C,MAAM,KAAK,aAAa;EACxB,IAAI,CAAC,MAAM,OAAO,WAAW,cAAc,CAAC,OAAO,OAAO;GACxD,IAAI,IAAI,cAAc,KAAK,EAAE;GAC7B;EACF;EAEA,IAAI;GACF,cAAA,0BAA0B,OAAO,OAAO,KAAK;EAC/C,QAAQ;GACN,cAAc,KAAK,EAAE;GACrB;EACF;EAEA,IAAI,OAAO,MAAM,WAAW,eAAe,CAAC,OAAO,MAAM,iBACvD,eAAe,KAAK,EAAE;CAE1B;CAEA,IAAI,cAAc,SAAS,GACzB,MAAM,IAAIC,uBAAAA,cAAc,KAAK,EAC3B,SAAS,8CAA8C,cAAc,KAAK,IAAI,EAAE,2CAClF,CAAC;CAGH,IAAI,eAAe,SAAS,GAC1B,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAC3B,SAAS,+BAA+B,QAAQ,SAAS,eAAe,KAAK,IAAI,CAAC,EACpF,CAAC;AAEL"}
@@ -1,5 +1,5 @@
1
1
  import { t as HTTPException } from "../../http-exception-CyfxZB6W.js";
2
- import { i as getStoredResourceScope, n as assertStoredResourceScope } from "../../utils-QXKhjIm6.js";
2
+ import { i as getStoredResourceScope, n as assertStoredResourceScope } from "../../utils-CljhO7OY.js";
3
3
  //#region src/server/handlers/validate-agent-instructions.ts
4
4
  const UNPUBLISHED_REFERENCES_MESSAGE = "Unable to use unpublished referenced prompt blocks: {ids}. Publish these prompt blocks and try again.";
5
5
  /**
@@ -1,4 +1,5 @@
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
4
  //#region src/server/handlers/validate-avatar.ts
4
5
  const AVATAR_MAX_BYTES = 512 * 1024;
@@ -1 +1 @@
1
- {"version":3,"file":"validate-avatar.cjs","names":["HTTPException"],"sources":["../../../src/server/handlers/validate-avatar.ts"],"sourcesContent":["import { HTTPException } from '../http-exception';\n\nconst AVATAR_MAX_BYTES = 512 * 1024; // 512 KB\n\n/**\n * Validates `metadata.avatarUrl` if present.\n * Ensures it's a well-formed data URL and the decoded payload is ≤ 512 KB.\n * No-ops when metadata is absent or doesn't contain avatarUrl.\n */\nexport function validateMetadataAvatarUrl(metadata: Record<string, unknown> | undefined): void {\n if (!metadata || !('avatarUrl' in metadata) || metadata.avatarUrl === null || metadata.avatarUrl === undefined)\n return;\n if (typeof metadata.avatarUrl !== 'string') {\n throw new HTTPException(400, { message: 'metadata.avatarUrl must be a string' });\n }\n\n const dataUrl = metadata.avatarUrl;\n const match = dataUrl.match(/^data:([^;]+);base64,(.+)$/);\n if (!match) {\n throw new HTTPException(400, {\n message: 'metadata.avatarUrl must be a valid data URL (data:<mime>;base64,<data>)',\n });\n }\n\n // `Buffer.from(..., 'base64')` decodes leniently — it silently ignores\n // invalid characters and never throws. Validate the payload format strictly\n // before measuring its byte length so malformed input is rejected.\n const base64Payload = match[2]!;\n const isStrictBase64 =\n base64Payload.length > 0 &&\n base64Payload.length % 4 === 0 &&\n /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(base64Payload);\n if (!isStrictBase64) {\n throw new HTTPException(400, { message: 'metadata.avatarUrl contains invalid base64' });\n }\n const byteLength = Buffer.from(base64Payload, 'base64').byteLength;\n\n if (byteLength === 0) {\n throw new HTTPException(400, { message: 'metadata.avatarUrl is empty' });\n }\n\n if (byteLength > AVATAR_MAX_BYTES) {\n throw new HTTPException(413, {\n message: `metadata.avatarUrl exceeds ${AVATAR_MAX_BYTES}-byte limit (got ${byteLength})`,\n });\n }\n}\n"],"mappings":";;;AAEA,MAAM,mBAAmB,MAAM;;;;;;AAO/B,SAAgB,0BAA0B,UAAqD;CAC7F,IAAI,CAAC,YAAY,EAAE,eAAe,aAAa,SAAS,cAAc,QAAQ,SAAS,cAAc,KAAA,GACnG;CACF,IAAI,OAAO,SAAS,cAAc,UAChC,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,sCAAsC,CAAC;CAIjF,MAAM,QADU,SAAS,UACH,MAAM,4BAA4B;CACxD,IAAI,CAAC,OACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAC3B,SAAS,0EACX,CAAC;CAMH,MAAM,gBAAgB,MAAM;CAK5B,IAAI,EAHF,cAAc,SAAS,KACvB,cAAc,SAAS,MAAM,KAC7B,mEAAmE,KAAK,aAAa,IAErF,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,6CAA6C,CAAC;CAExF,MAAM,aAAa,OAAO,KAAK,eAAe,QAAQ,CAAC,CAAC;CAExD,IAAI,eAAe,GACjB,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,8BAA8B,CAAC;CAGzE,IAAI,aAAa,kBACf,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAC3B,SAAS,8BAA8B,iBAAiB,mBAAmB,WAAW,GACxF,CAAC;AAEL"}
1
+ {"version":3,"file":"validate-avatar.cjs","names":["HTTPException"],"sources":["../../../src/server/handlers/validate-avatar.ts"],"sourcesContent":["import { HTTPException } from '../http-exception';\n\nconst AVATAR_MAX_BYTES = 512 * 1024; // 512 KB\n\n/**\n * Validates `metadata.avatarUrl` if present.\n * Ensures it's a well-formed data URL and the decoded payload is ≤ 512 KB.\n * No-ops when metadata is absent or doesn't contain avatarUrl.\n */\nexport function validateMetadataAvatarUrl(metadata: Record<string, unknown> | undefined): void {\n if (!metadata || !('avatarUrl' in metadata) || metadata.avatarUrl === null || metadata.avatarUrl === undefined)\n return;\n if (typeof metadata.avatarUrl !== 'string') {\n throw new HTTPException(400, { message: 'metadata.avatarUrl must be a string' });\n }\n\n const dataUrl = metadata.avatarUrl;\n const match = dataUrl.match(/^data:([^;]+);base64,(.+)$/);\n if (!match) {\n throw new HTTPException(400, {\n message: 'metadata.avatarUrl must be a valid data URL (data:<mime>;base64,<data>)',\n });\n }\n\n // `Buffer.from(..., 'base64')` decodes leniently — it silently ignores\n // invalid characters and never throws. Validate the payload format strictly\n // before measuring its byte length so malformed input is rejected.\n const base64Payload = match[2]!;\n const isStrictBase64 =\n base64Payload.length > 0 &&\n base64Payload.length % 4 === 0 &&\n /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(base64Payload);\n if (!isStrictBase64) {\n throw new HTTPException(400, { message: 'metadata.avatarUrl contains invalid base64' });\n }\n const byteLength = Buffer.from(base64Payload, 'base64').byteLength;\n\n if (byteLength === 0) {\n throw new HTTPException(400, { message: 'metadata.avatarUrl is empty' });\n }\n\n if (byteLength > AVATAR_MAX_BYTES) {\n throw new HTTPException(413, {\n message: `metadata.avatarUrl exceeds ${AVATAR_MAX_BYTES}-byte limit (got ${byteLength})`,\n });\n }\n}\n"],"mappings":";;;;AAEA,MAAM,mBAAmB,MAAM;;;;;;AAO/B,SAAgB,0BAA0B,UAAqD;CAC7F,IAAI,CAAC,YAAY,EAAE,eAAe,aAAa,SAAS,cAAc,QAAQ,SAAS,cAAc,KAAA,GACnG;CACF,IAAI,OAAO,SAAS,cAAc,UAChC,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,sCAAsC,CAAC;CAIjF,MAAM,QADU,SAAS,UACH,MAAM,4BAA4B;CACxD,IAAI,CAAC,OACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAC3B,SAAS,0EACX,CAAC;CAMH,MAAM,gBAAgB,MAAM;CAK5B,IAAI,EAHF,cAAc,SAAS,KACvB,cAAc,SAAS,MAAM,KAC7B,mEAAmE,KAAK,aAAa,IAErF,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,6CAA6C,CAAC;CAExF,MAAM,aAAa,OAAO,KAAK,eAAe,QAAQ,CAAC,CAAC;CAExD,IAAI,eAAe,GACjB,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,8BAA8B,CAAC;CAGzE,IAAI,aAAa,kBACf,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAC3B,SAAS,8BAA8B,iBAAiB,mBAAmB,WAAW,GACxF,CAAC;AAEL"}
@@ -1,7 +1,7 @@
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_vectors = require("../../vectors-D6uZn2f1.cjs");
7
7
  let _mastra_core_llm = require("@mastra/core/llm");
@@ -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 { n as createRoute } from "../../route-builder-YQ_gLIvW.js";
4
4
  import { handleError } from "./error.js";
@@ -1,4 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ require("../../rolldown-runtime-Bd6kNlEP.cjs");
2
3
  //#region src/server/handlers/version-helpers.ts
3
4
  /**
4
5
  * Generic version management helpers shared across all versioned editor primitives.
@@ -1 +1 @@
1
- {"version":3,"file":"version-helpers.cjs","names":[],"sources":["../../../src/server/handlers/version-helpers.ts"],"sourcesContent":["/**\n * Generic version management helpers shared across all versioned editor primitives.\n * These utilities are domain-agnostic and work with any VersionedStorageDomain.\n */\n\n// Default maximum versions per entity (can be made configurable in the future)\nexport const DEFAULT_MAX_VERSIONS = 50;\n\n/** Snapshot config fields for MCP client versioning. */\nexport const MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS = ['name', 'description', 'servers'] as const;\n\n/**\n * Deep equality comparison for comparing two values.\n * Handles primitives, arrays, objects, and Date instances.\n */\nexport function deepEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (a == null || b == null) return a === b;\n if (typeof a !== typeof b) return false;\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n return a.every((item, index) => deepEqual(item, b[index]));\n }\n\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n }\n\n if (typeof a === 'object' && typeof b === 'object') {\n const aObj = a as Record<string, unknown>;\n const bObj = b as Record<string, unknown>;\n const aKeys = Object.keys(aObj);\n const bKeys = Object.keys(bObj);\n\n if (aKeys.length !== bKeys.length) return false;\n return aKeys.every(key => Object.prototype.hasOwnProperty.call(bObj, key) && deepEqual(aObj[key], bObj[key]));\n }\n\n return false;\n}\n\n/**\n * Generates a unique ID for a version using crypto.randomUUID()\n */\nexport function generateVersionId(): string {\n return crypto.randomUUID();\n}\n\n/**\n * Extracts snapshot config fields from a version record.\n * Strips version-metadata fields (id, FK field, versionNumber, changedFields, changeMessage, createdAt).\n */\nexport function extractConfigFromVersion(\n version: Record<string, unknown>,\n snapshotConfigFields: readonly string[],\n): Record<string, unknown> {\n const config: Record<string, unknown> = {};\n for (const field of snapshotConfigFields) {\n if (field in version) {\n config[field] = version[field];\n }\n }\n return config;\n}\n\n/**\n * Compares two snapshots and returns an array of field names that changed.\n */\nexport function calculateChangedFields(\n previous: Record<string, unknown> | null | undefined,\n current: Record<string, unknown>,\n): string[] {\n if (!previous) {\n return Object.keys(current);\n }\n\n const changedFields: string[] = [];\n const allKeys = new Set([...Object.keys(previous), ...Object.keys(current)]);\n\n for (const key of allKeys) {\n if (key === 'updatedAt' || key === 'createdAt') {\n continue;\n }\n\n const prevValue = previous[key];\n const currValue = current[key];\n\n if (!deepEqual(prevValue, currValue)) {\n changedFields.push(key);\n }\n }\n\n return changedFields;\n}\n\n/**\n * Computes detailed diffs between two config snapshots.\n */\nexport function computeVersionDiffs(\n fromConfig: Record<string, unknown>,\n toConfig: Record<string, unknown>,\n): Array<{ field: string; previousValue: unknown; currentValue: unknown }> {\n const diffs: Array<{ field: string; previousValue: unknown; currentValue: unknown }> = [];\n const allKeys = new Set([...Object.keys(fromConfig), ...Object.keys(toConfig)]);\n\n for (const key of allKeys) {\n if (key === 'updatedAt' || key === 'createdAt') {\n continue;\n }\n\n const prevValue = fromConfig[key];\n const currValue = toConfig[key];\n\n if (!deepEqual(prevValue, currValue)) {\n diffs.push({\n field: key,\n previousValue: prevValue,\n currentValue: currValue,\n });\n }\n }\n\n return diffs;\n}\n\n/**\n * Generic store interface for version management operations.\n * Works with any versioned storage domain.\n */\nexport interface VersionedStoreInterface<TEntity = unknown> {\n getLatestVersion: (parentId: string) => Promise<{ id: string; versionNumber: number } | null>;\n getVersion: (id: string) => Promise<{ id: string; versionNumber: number } | null>;\n createVersion: (params: Record<string, unknown>) => Promise<unknown>;\n update: (params: Record<string, unknown>) => Promise<TEntity>;\n listVersions: (params: Record<string, unknown>) => Promise<{\n versions: Array<{ id: string; versionNumber: number }>;\n total: number;\n page: number;\n perPage: number | false;\n hasMore: boolean;\n }>;\n deleteVersion: (id: string) => Promise<void>;\n}\n\n/**\n * Determines if an error is a unique constraint violation on versionNumber.\n */\nfunction isVersionNumberConflictError(error: unknown): boolean {\n if (error instanceof Error) {\n const message = error.message.toLowerCase();\n return (\n (message.includes('unique') && message.includes('constraint')) ||\n message.includes('duplicate key') ||\n message.includes('unique_violation') ||\n message.includes('sqlite_constraint_unique') ||\n message.includes('versionnumber')\n );\n }\n return false;\n}\n\n/**\n * Enforces version retention limit by deleting oldest versions that exceed the maximum.\n * Never deletes the active version.\n */\nexport async function enforceRetentionLimit(\n store: Pick<VersionedStoreInterface, 'listVersions' | 'deleteVersion'>,\n parentId: string,\n parentIdField: string,\n activeVersionId: string | undefined | null,\n maxVersions: number = DEFAULT_MAX_VERSIONS,\n): Promise<{ deletedCount: number }> {\n const { total } = await store.listVersions({ [parentIdField]: parentId, perPage: 1 });\n\n if (total <= maxVersions) {\n return { deletedCount: 0 };\n }\n\n const versionsToDelete = total - maxVersions;\n\n const { versions: oldestVersions } = await store.listVersions({\n [parentIdField]: parentId,\n perPage: versionsToDelete + 1,\n orderBy: { field: 'versionNumber', direction: 'ASC' },\n });\n\n let deletedCount = 0;\n for (const version of oldestVersions) {\n if (deletedCount >= versionsToDelete) {\n break;\n }\n\n if (version.id === activeVersionId) {\n continue;\n }\n\n await store.deleteVersion(version.id);\n deletedCount++;\n }\n\n return { deletedCount };\n}\n\n/**\n * Creates a new version with retry logic for race condition handling.\n */\nexport async function createVersionWithRetry(\n store: Pick<VersionedStoreInterface, 'getLatestVersion' | 'createVersion'>,\n parentId: string,\n parentIdField: string,\n snapshotConfig: Record<string, unknown>,\n changedFields: string[],\n options: {\n changeMessage?: string;\n maxRetries?: number;\n } = {},\n): Promise<{ versionId: string; versionNumber: number }> {\n const { changeMessage, maxRetries = 3 } = options;\n let lastError: unknown;\n\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n try {\n const latestVersion = await store.getLatestVersion(parentId);\n const versionNumber = latestVersion ? latestVersion.versionNumber + 1 : 1;\n const versionId = generateVersionId();\n\n await store.createVersion({\n ...snapshotConfig,\n id: versionId,\n [parentIdField]: parentId,\n versionNumber,\n changedFields,\n changeMessage,\n });\n\n return { versionId, versionNumber };\n } catch (error) {\n lastError = error;\n\n if (isVersionNumberConflictError(error) && attempt < maxRetries - 1) {\n await new Promise(resolve => setTimeout(resolve, 10 * (attempt + 1)));\n continue;\n }\n\n throw error;\n }\n }\n\n throw lastError;\n}\n\n/**\n * Handles auto-versioning after an entity update.\n * Creates a new version if config fields changed, but does NOT update activeVersionId.\n */\nexport async function handleAutoVersioning<TEntity>(\n store: VersionedStoreInterface<TEntity>,\n parentId: string,\n parentIdField: string,\n snapshotConfigFields: readonly string[],\n existingEntity: TEntity & { activeVersionId?: string },\n updatedEntity: TEntity,\n configFields?: Record<string, unknown>,\n options?: { changeMessage?: string },\n): Promise<{ entity: TEntity; versionCreated: boolean }> {\n if (!configFields || Object.keys(configFields).length === 0) {\n return { entity: updatedEntity, versionCreated: false };\n }\n\n // Always compare against the latest version (not the active/published one).\n // This ensures each draft save is diffed against the last edit, so intermediate\n // draft changes are never silently reverted to the published baseline.\n const versionToCompare = await store.getLatestVersion(parentId);\n\n const previousConfig = versionToCompare\n ? extractConfigFromVersion(versionToCompare as unknown as Record<string, unknown>, snapshotConfigFields)\n : null;\n\n const changedFields = calculateChangedFields(previousConfig, configFields);\n\n if (changedFields.length === 0) {\n return { entity: updatedEntity, versionCreated: false };\n }\n\n const fullConfig: Record<string, unknown> = previousConfig ? { ...previousConfig } : {};\n for (const [key, value] of Object.entries(configFields)) {\n fullConfig[key] = value === null ? undefined : value;\n }\n\n const { versionId } = await createVersionWithRetry(store, parentId, parentIdField, fullConfig, changedFields, {\n changeMessage: options?.changeMessage ?? 'Auto-saved after edit',\n });\n\n // Do NOT update activeVersionId here — the new version stays as a draft.\n // activeVersionId is only updated when the user explicitly publishes/activates a version.\n\n const activeVersionId = existingEntity.activeVersionId || versionId;\n await enforceRetentionLimit(store, parentId, parentIdField, activeVersionId);\n\n return { entity: updatedEntity, versionCreated: true };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"version-helpers.cjs","names":[],"sources":["../../../src/server/handlers/version-helpers.ts"],"sourcesContent":["/**\n * Generic version management helpers shared across all versioned editor primitives.\n * These utilities are domain-agnostic and work with any VersionedStorageDomain.\n */\n\n// Default maximum versions per entity (can be made configurable in the future)\nexport const DEFAULT_MAX_VERSIONS = 50;\n\n/** Snapshot config fields for MCP client versioning. */\nexport const MCP_CLIENT_SNAPSHOT_CONFIG_FIELDS = ['name', 'description', 'servers'] as const;\n\n/**\n * Deep equality comparison for comparing two values.\n * Handles primitives, arrays, objects, and Date instances.\n */\nexport function deepEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true;\n if (a == null || b == null) return a === b;\n if (typeof a !== typeof b) return false;\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n return a.every((item, index) => deepEqual(item, b[index]));\n }\n\n if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n }\n\n if (typeof a === 'object' && typeof b === 'object') {\n const aObj = a as Record<string, unknown>;\n const bObj = b as Record<string, unknown>;\n const aKeys = Object.keys(aObj);\n const bKeys = Object.keys(bObj);\n\n if (aKeys.length !== bKeys.length) return false;\n return aKeys.every(key => Object.prototype.hasOwnProperty.call(bObj, key) && deepEqual(aObj[key], bObj[key]));\n }\n\n return false;\n}\n\n/**\n * Generates a unique ID for a version using crypto.randomUUID()\n */\nexport function generateVersionId(): string {\n return crypto.randomUUID();\n}\n\n/**\n * Extracts snapshot config fields from a version record.\n * Strips version-metadata fields (id, FK field, versionNumber, changedFields, changeMessage, createdAt).\n */\nexport function extractConfigFromVersion(\n version: Record<string, unknown>,\n snapshotConfigFields: readonly string[],\n): Record<string, unknown> {\n const config: Record<string, unknown> = {};\n for (const field of snapshotConfigFields) {\n if (field in version) {\n config[field] = version[field];\n }\n }\n return config;\n}\n\n/**\n * Compares two snapshots and returns an array of field names that changed.\n */\nexport function calculateChangedFields(\n previous: Record<string, unknown> | null | undefined,\n current: Record<string, unknown>,\n): string[] {\n if (!previous) {\n return Object.keys(current);\n }\n\n const changedFields: string[] = [];\n const allKeys = new Set([...Object.keys(previous), ...Object.keys(current)]);\n\n for (const key of allKeys) {\n if (key === 'updatedAt' || key === 'createdAt') {\n continue;\n }\n\n const prevValue = previous[key];\n const currValue = current[key];\n\n if (!deepEqual(prevValue, currValue)) {\n changedFields.push(key);\n }\n }\n\n return changedFields;\n}\n\n/**\n * Computes detailed diffs between two config snapshots.\n */\nexport function computeVersionDiffs(\n fromConfig: Record<string, unknown>,\n toConfig: Record<string, unknown>,\n): Array<{ field: string; previousValue: unknown; currentValue: unknown }> {\n const diffs: Array<{ field: string; previousValue: unknown; currentValue: unknown }> = [];\n const allKeys = new Set([...Object.keys(fromConfig), ...Object.keys(toConfig)]);\n\n for (const key of allKeys) {\n if (key === 'updatedAt' || key === 'createdAt') {\n continue;\n }\n\n const prevValue = fromConfig[key];\n const currValue = toConfig[key];\n\n if (!deepEqual(prevValue, currValue)) {\n diffs.push({\n field: key,\n previousValue: prevValue,\n currentValue: currValue,\n });\n }\n }\n\n return diffs;\n}\n\n/**\n * Generic store interface for version management operations.\n * Works with any versioned storage domain.\n */\nexport interface VersionedStoreInterface<TEntity = unknown> {\n getLatestVersion: (parentId: string) => Promise<{ id: string; versionNumber: number } | null>;\n getVersion: (id: string) => Promise<{ id: string; versionNumber: number } | null>;\n createVersion: (params: Record<string, unknown>) => Promise<unknown>;\n update: (params: Record<string, unknown>) => Promise<TEntity>;\n listVersions: (params: Record<string, unknown>) => Promise<{\n versions: Array<{ id: string; versionNumber: number }>;\n total: number;\n page: number;\n perPage: number | false;\n hasMore: boolean;\n }>;\n deleteVersion: (id: string) => Promise<void>;\n}\n\n/**\n * Determines if an error is a unique constraint violation on versionNumber.\n */\nfunction isVersionNumberConflictError(error: unknown): boolean {\n if (error instanceof Error) {\n const message = error.message.toLowerCase();\n return (\n (message.includes('unique') && message.includes('constraint')) ||\n message.includes('duplicate key') ||\n message.includes('unique_violation') ||\n message.includes('sqlite_constraint_unique') ||\n message.includes('versionnumber')\n );\n }\n return false;\n}\n\n/**\n * Enforces version retention limit by deleting oldest versions that exceed the maximum.\n * Never deletes the active version.\n */\nexport async function enforceRetentionLimit(\n store: Pick<VersionedStoreInterface, 'listVersions' | 'deleteVersion'>,\n parentId: string,\n parentIdField: string,\n activeVersionId: string | undefined | null,\n maxVersions: number = DEFAULT_MAX_VERSIONS,\n): Promise<{ deletedCount: number }> {\n const { total } = await store.listVersions({ [parentIdField]: parentId, perPage: 1 });\n\n if (total <= maxVersions) {\n return { deletedCount: 0 };\n }\n\n const versionsToDelete = total - maxVersions;\n\n const { versions: oldestVersions } = await store.listVersions({\n [parentIdField]: parentId,\n perPage: versionsToDelete + 1,\n orderBy: { field: 'versionNumber', direction: 'ASC' },\n });\n\n let deletedCount = 0;\n for (const version of oldestVersions) {\n if (deletedCount >= versionsToDelete) {\n break;\n }\n\n if (version.id === activeVersionId) {\n continue;\n }\n\n await store.deleteVersion(version.id);\n deletedCount++;\n }\n\n return { deletedCount };\n}\n\n/**\n * Creates a new version with retry logic for race condition handling.\n */\nexport async function createVersionWithRetry(\n store: Pick<VersionedStoreInterface, 'getLatestVersion' | 'createVersion'>,\n parentId: string,\n parentIdField: string,\n snapshotConfig: Record<string, unknown>,\n changedFields: string[],\n options: {\n changeMessage?: string;\n maxRetries?: number;\n } = {},\n): Promise<{ versionId: string; versionNumber: number }> {\n const { changeMessage, maxRetries = 3 } = options;\n let lastError: unknown;\n\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n try {\n const latestVersion = await store.getLatestVersion(parentId);\n const versionNumber = latestVersion ? latestVersion.versionNumber + 1 : 1;\n const versionId = generateVersionId();\n\n await store.createVersion({\n ...snapshotConfig,\n id: versionId,\n [parentIdField]: parentId,\n versionNumber,\n changedFields,\n changeMessage,\n });\n\n return { versionId, versionNumber };\n } catch (error) {\n lastError = error;\n\n if (isVersionNumberConflictError(error) && attempt < maxRetries - 1) {\n await new Promise(resolve => setTimeout(resolve, 10 * (attempt + 1)));\n continue;\n }\n\n throw error;\n }\n }\n\n throw lastError;\n}\n\n/**\n * Handles auto-versioning after an entity update.\n * Creates a new version if config fields changed, but does NOT update activeVersionId.\n */\nexport async function handleAutoVersioning<TEntity>(\n store: VersionedStoreInterface<TEntity>,\n parentId: string,\n parentIdField: string,\n snapshotConfigFields: readonly string[],\n existingEntity: TEntity & { activeVersionId?: string },\n updatedEntity: TEntity,\n configFields?: Record<string, unknown>,\n options?: { changeMessage?: string },\n): Promise<{ entity: TEntity; versionCreated: boolean }> {\n if (!configFields || Object.keys(configFields).length === 0) {\n return { entity: updatedEntity, versionCreated: false };\n }\n\n // Always compare against the latest version (not the active/published one).\n // This ensures each draft save is diffed against the last edit, so intermediate\n // draft changes are never silently reverted to the published baseline.\n const versionToCompare = await store.getLatestVersion(parentId);\n\n const previousConfig = versionToCompare\n ? extractConfigFromVersion(versionToCompare as unknown as Record<string, unknown>, snapshotConfigFields)\n : null;\n\n const changedFields = calculateChangedFields(previousConfig, configFields);\n\n if (changedFields.length === 0) {\n return { entity: updatedEntity, versionCreated: false };\n }\n\n const fullConfig: Record<string, unknown> = previousConfig ? { ...previousConfig } : {};\n for (const [key, value] of Object.entries(configFields)) {\n fullConfig[key] = value === null ? undefined : value;\n }\n\n const { versionId } = await createVersionWithRetry(store, parentId, parentIdField, fullConfig, changedFields, {\n changeMessage: options?.changeMessage ?? 'Auto-saved after edit',\n });\n\n // Do NOT update activeVersionId here — the new version stays as a draft.\n // activeVersionId is only updated when the user explicitly publishes/activates a version.\n\n const activeVersionId = existingEntity.activeVersionId || versionId;\n await enforceRetentionLimit(store, parentId, parentIdField, activeVersionId);\n\n return { entity: updatedEntity, versionCreated: true };\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
  const require_routes = require("../../routes-BKUF5ZHA.cjs");
4
4
  //#region src/server/handlers/voice.ts
5
5
  var voice_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
@@ -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 { a as GET_SPEAKERS_ROUTE$1, i as GET_SPEAKERS_DEPRECATED_ROUTE$1, n as GENERATE_SPEECH_ROUTE$1, o as TRANSCRIBE_SPEECH_DEPRECATED_ROUTE$1, r as GET_LISTENER_ROUTE$1, s as TRANSCRIBE_SPEECH_ROUTE$1, t as GENERATE_SPEECH_DEPRECATED_ROUTE$1 } from "../../routes-zHhMx-9S.js";
3
3
  //#region src/server/handlers/voice.ts
4
4
  var voice_exports = /* @__PURE__ */ __exportAll({
@@ -1,13 +1,13 @@
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
4
  const require_common = require("../../common-DQn8jX5T.cjs");
5
5
  const require_workflows = require("../../workflows--79xhOOb.cjs");
6
- const require_agents = require("../../agents-0Tw3kkD_.cjs");
7
- const require_route_builder = require("../../route-builder-BAAedfru.cjs");
8
- const require_utils = require("../../utils-Bna_JCkb.cjs");
6
+ const require_agents = require("../../agents-CLv_RFQx.cjs");
7
+ const require_route_builder = require("../../route-builder-CWsok5ci.cjs");
8
+ const require_utils = require("../../utils-zkjmP1OK.cjs");
9
9
  const require_server_handlers_error = require("./error.cjs");
10
- const require_utils$1 = require("../../utils-wTwyTjg3.cjs");
10
+ const require_utils$1 = require("../../utils-Xnn91QBW.cjs");
11
11
  let zod_v4 = require("zod/v4");
12
12
  let _mastra_core_stream = require("@mastra/core/stream");
13
13
  //#region src/server/handlers/workflows.ts
@@ -1,12 +1,12 @@
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 { l as runIdSchema, o as optionalRunIdSchema } from "../../common-5ZZuR6wj.js";
4
4
  import { _ as workflowRunCountsResponseSchema, a as observeWorkflowQuerySchema, b as workflowRunResultSchema, d as streamWorkflowBodySchema, f as timeTravelBodySchema, g as workflowInfoSchema, h as workflowIdPathParams, i as listWorkflowsResponseSchema, l as startAsyncWorkflowBodySchema, m as workflowExecutionResultSchema, n as createWorkflowRunResponseSchema, o as restartBodySchema, p as workflowControlResponseSchema, r as listWorkflowRunsQuerySchema, s as resumeBodySchema, t as createWorkflowRunBodySchema, v as workflowRunPathParams, x as workflowRunsResponseSchema, y as workflowRunResultQuerySchema } from "../../workflows-B2ooCiwN.js";
5
- import { W as streamResponseSchema } from "../../agents-uT8ZDE4k.js";
5
+ import { K as streamResponseSchema } from "../../agents-BetrUB_N.js";
6
6
  import { n as createRoute } from "../../route-builder-YQ_gLIvW.js";
7
- import { a as getWorkflowInfo, t as WorkflowRegistry } from "../../utils-QXKhjIm6.js";
7
+ import { a as getWorkflowInfo, t as WorkflowRegistry } from "../../utils-CljhO7OY.js";
8
8
  import { handleError } from "./error.js";
9
- import { d as MastraFGAPermissions, l as validateRunOwnership, n as getEffectiveResourceId } from "../../utils-CmHd1Sgh.js";
9
+ import { d as MastraFGAPermissions, l as validateRunOwnership, n as getEffectiveResourceId } from "../../utils-qMLbyf2U.js";
10
10
  import { z } from "zod/v4";
11
11
  import { createReplayStream } from "@mastra/core/stream";
12
12
  //#region src/server/handlers/workflows.ts
@@ -1,7 +1,7 @@
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_workspace = require("../../workspace-Cz9hE2ei.cjs");
7
7
  let _mastra_core_features = require("@mastra/core/features");
@@ -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 { n as createRoute } from "../../route-builder-YQ_gLIvW.js";
4
4
  import { handleError } from "./error.js";
@@ -1,9 +1,11 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ require("../rolldown-runtime-Bd6kNlEP.cjs");
2
3
  const require_server_handlers_error = require("./handlers/error.cjs");
3
4
  const require_server_handlers_workflows = require("./handlers/workflows.cjs");
4
5
  const require_server_handlers_agent_builder = require("./handlers/agent-builder.cjs");
5
6
  const require_server_handlers_agents = require("./handlers/agents.cjs");
6
- const require_a2a = require("../a2a-DzZHH3OH.cjs");
7
+ const require_server_handlers_plans = require("./handlers/plans.cjs");
8
+ const require_a2a = require("../a2a-C4JIRtLT.cjs");
7
9
  const require_server_handlers_conversations = require("./handlers/conversations.cjs");
8
10
  const require_server_handlers_logs = require("./handlers/logs.cjs");
9
11
  const require_server_handlers_mcp = require("./handlers/mcp.cjs");
@@ -15,7 +17,7 @@ const require_server_handlers_tools = require("./handlers/tools.cjs");
15
17
  const require_server_handlers_workspace = require("./handlers/workspace.cjs");
16
18
  const require_server_handlers_vector = require("./handlers/vector.cjs");
17
19
  const require_server_handlers_voice = require("./handlers/voice.cjs");
18
- const require_dynamic_workflows = require("../dynamic-workflows-C-6vmau5.cjs");
20
+ const require_dynamic_workflows = require("../dynamic-workflows-BZ5ru36x.cjs");
19
21
  Object.defineProperty(exports, "a2a", {
20
22
  enumerable: true,
21
23
  get: function() {
@@ -72,6 +74,12 @@ Object.defineProperty(exports, "observability", {
72
74
  return require_server_handlers_observability.observability_exports;
73
75
  }
74
76
  });
77
+ Object.defineProperty(exports, "plans", {
78
+ enumerable: true,
79
+ get: function() {
80
+ return require_server_handlers_plans.plans_exports;
81
+ }
82
+ });
75
83
  Object.defineProperty(exports, "responses", {
76
84
  enumerable: true,
77
85
  get: function() {
@@ -1,6 +1,7 @@
1
1
  export * as agentBuilder from './handlers/agent-builder.js';
2
2
  export { formatZodError, isZodError, type ZodErrorLike } from './handlers/error.js';
3
3
  export * as agents from './handlers/agents.js';
4
+ export * as plans from './handlers/plans.js';
4
5
  export * as a2a from './handlers/a2a.js';
5
6
  export * as conversations from './handlers/conversations.js';
6
7
  export * as logs from './handlers/logs.js';
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/server/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,gBAAgB,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/server/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,gBAAgB,MAAM,8BAA8B,CAAC"}
@@ -2,7 +2,8 @@ import { formatZodError, isZodError } from "./handlers/error.js";
2
2
  import { t as workflows_exports } from "./handlers/workflows.js";
3
3
  import { t as agent_builder_exports } from "./handlers/agent-builder.js";
4
4
  import { t as agents_exports } from "./handlers/agents.js";
5
- import { r as a2a_exports } from "../a2a-CUkzkdTZ.js";
5
+ import { t as plans_exports } from "./handlers/plans.js";
6
+ import { r as a2a_exports } from "../a2a-B2yosTel.js";
6
7
  import { t as conversations_exports } from "./handlers/conversations.js";
7
8
  import { t as logs_exports } from "./handlers/logs.js";
8
9
  import { t as mcp_exports } from "./handlers/mcp.js";
@@ -14,5 +15,5 @@ import { t as tools_exports } from "./handlers/tools.js";
14
15
  import { t as workspace_exports } from "./handlers/workspace.js";
15
16
  import { t as vector_exports } from "./handlers/vector.js";
16
17
  import { t as voice_exports } from "./handlers/voice.js";
17
- import { a as dynamic_workflows_exports } from "../dynamic-workflows-B0TE8mjA.js";
18
- export { a2a_exports as a2a, agent_builder_exports as agentBuilder, agents_exports as agents, conversations_exports as conversations, dynamic_workflows_exports as dynamicWorkflows, formatZodError, isZodError, logs_exports as logs, mcp_exports as mcp, memory_exports as memory, observability_exports as observability, responses_exports as responses, scores_exports as scores, tools_exports as tools, vector_exports as vector, voice_exports as voice, workflows_exports as workflows, workspace_exports as workspace };
18
+ import { a as dynamic_workflows_exports } from "../dynamic-workflows-C6U0Rdoc.js";
19
+ export { a2a_exports as a2a, agent_builder_exports as agentBuilder, agents_exports as agents, conversations_exports as conversations, dynamic_workflows_exports as dynamicWorkflows, formatZodError, isZodError, logs_exports as logs, mcp_exports as mcp, memory_exports as memory, observability_exports as observability, plans_exports as plans, responses_exports as responses, scores_exports as scores, tools_exports as tools, vector_exports as vector, voice_exports as voice, workflows_exports as workflows, workspace_exports as workspace };
@@ -56,6 +56,18 @@ export declare const agentVersionQuerySchema: z.ZodObject<{
56
56
  }>>;
57
57
  versionId: z.ZodOptional<z.ZodString>;
58
58
  }, z.core.$strip>;
59
+ export declare const agentPlanQuerySchema: z.ZodObject<{
60
+ status: z.ZodOptional<z.ZodEnum<{
61
+ draft: "draft";
62
+ published: "published";
63
+ }>>;
64
+ versionId: z.ZodOptional<z.ZodString>;
65
+ path: z.ZodString;
66
+ }, z.core.$strip>;
67
+ export declare const agentPlanResponseSchema: z.ZodObject<{
68
+ path: z.ZodString;
69
+ content: z.ZodString;
70
+ }, z.core.$strip>;
59
71
  export declare const toolIdPathParams: z.ZodObject<{
60
72
  toolId: z.ZodString;
61
73
  }, z.core.$strip>;
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../src/server/schemas/agents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../src/server/schemas/agents.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ require("../../rolldown-runtime-Bd6kNlEP.cjs");
2
3
  const require_common = require("../../common-DQn8jX5T.cjs");
3
4
  const require_workflows = require("../../workflows--79xhOOb.cjs");
4
5
  const require_agent_builder = require("../../agent-builder-D8JyDQ5J.cjs");
5
6
  const require_default_options = require("../../default-options-C9HZGjYi.cjs");
6
7
  const require_routes = require("../../routes-BKUF5ZHA.cjs");
7
- const require_agents = require("../../agents-0Tw3kkD_.cjs");
8
- const require_stored_agents = require("../../stored-agents-CPxfYRH9.cjs");
8
+ const require_agents = require("../../agents-CLv_RFQx.cjs");
9
+ const require_stored_agents = require("../../stored-agents-D6JEb3zN.cjs");
9
10
  const require_rule_group = require("../../rule-group-Hyn4rN52.cjs");
10
11
  const require_stored_workspaces = require("../../stored-workspaces-Dl8B20LD.cjs");
11
12
  const require_tool_providers = require("../../tool-providers-DFQkhO4R.cjs");
@@ -13,26 +14,26 @@ const require_workspace = require("../../workspace-Cz9hE2ei.cjs");
13
14
  const require_a2a = require("../../a2a-MPoM5lzS.cjs");
14
15
  const require_auth = require("../../auth-B8fQdEg-.cjs");
15
16
  const require_memory = require("../../memory-D0prxytx.cjs");
16
- const require_responses = require("../../responses-BI25doe1.cjs");
17
- const require_conversations = require("../../conversations-CcFLCCeF.cjs");
17
+ const require_responses = require("../../responses-CKNdSRkS.cjs");
18
+ const require_conversations = require("../../conversations-PF0eKhIu.cjs");
18
19
  const require_logs = require("../../logs-BDuGFqxu.cjs");
19
20
  const require_mcp = require("../../mcp-Buvksst5.cjs");
20
21
  const require_scores = require("../../scores-C_Au9jSw.cjs");
21
22
  const require_vectors = require("../../vectors-D6uZn2f1.cjs");
22
23
  const require_version_common = require("../../version-common-AtNRQ5xH.cjs");
23
- const require_agent_versions = require("../../agent-versions-xeysPGel.cjs");
24
+ const require_agent_versions = require("../../agent-versions-MYjO6Wl1.cjs");
24
25
  const require_datasets = require("../../datasets-D2JdQI44.cjs");
25
- const require_editor_builder = require("../../editor-builder-C3ZvffGu.cjs");
26
+ const require_editor_builder = require("../../editor-builder-DNRVszU-.cjs");
26
27
  const require_mcp_client_versions = require("../../mcp-client-versions-CG7po4hq.cjs");
27
28
  const require_processor_providers = require("../../processor-providers-DHvTA9AL.cjs");
29
+ const require_processors = require("../../processors-D6lRjS0e.cjs");
28
30
  const require_prompt_block_versions = require("../../prompt-block-versions-Cgt_Grk2.cjs");
29
- const require_scorer_versions = require("../../scorer-versions-CYXtxMTU.cjs");
31
+ const require_scorer_versions = require("../../scorer-versions-mL--H4LL.cjs");
30
32
  const require_stored_mcp_clients = require("../../stored-mcp-clients-CJJPe_09.cjs");
31
33
  const require_stored_prompt_blocks = require("../../stored-prompt-blocks-XI4frgZv.cjs");
32
- const require_stored_scorers = require("../../stored-scorers-Cml7jPJv.cjs");
34
+ const require_stored_scorers = require("../../stored-scorers-D8IwVM0S.cjs");
33
35
  const require_stored_skills = require("../../stored-skills-BqNK0ssS.cjs");
34
36
  const require_system = require("../../system-wl_uZdyz.cjs");
35
- const require_processors = require("../../processors-D6lRjS0e.cjs");
36
37
  exports.SKILL_ORIGIN_METADATA_KEY = require_stored_skills.SKILL_ORIGIN_METADATA_KEY;
37
38
  exports.a2aAgentExecutionBodySchema = require_a2a.agentExecutionBodySchema;
38
39
  exports.a2aAgentIdPathParams = require_a2a.a2aAgentIdPathParams;
@@ -55,6 +56,8 @@ exports.agentFeaturesSchema = require_editor_builder.agentFeaturesSchema;
55
56
  exports.agentIdPathParams = require_agents.agentIdPathParams;
56
57
  exports.agentIdQuerySchema = require_memory.agentIdQuerySchema;
57
58
  exports.agentModelsSchema = require_editor_builder.agentModelsSchema;
59
+ exports.agentPlanQuerySchema = require_agents.agentPlanQuerySchema;
60
+ exports.agentPlanResponseSchema = require_agents.agentPlanResponseSchema;
58
61
  exports.agentSkillPathParams = require_agents.agentSkillPathParams;
59
62
  exports.agentToolPathParams = require_agents.agentToolPathParams;
60
63
  exports.agentVersionPathParams = require_agent_versions.agentVersionPathParams;