@mastra/server 1.58.0-alpha.1 → 1.58.0-alpha.13

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 (467) hide show
  1. package/CHANGELOG.md +215 -0
  2. package/dist/_types/@mastra_schema-compat/dist/provider-compats/anthropic.d.ts +1 -1
  3. package/dist/{a2a-CnU9zaGR.js → a2a-8C4O2dVJ.js} +41 -5
  4. package/dist/a2a-8C4O2dVJ.js.map +1 -0
  5. package/dist/{a2a-CHi9AJ0n.js → a2a-CUkzkdTZ.js} +268 -55
  6. package/dist/a2a-CUkzkdTZ.js.map +1 -0
  7. package/dist/{a2a-D3ZYeXIx.cjs → a2a-DzZHH3OH.cjs} +279 -54
  8. package/dist/a2a-DzZHH3OH.cjs.map +1 -0
  9. package/dist/{a2a-oM7aqLz4.cjs → a2a-MPoM5lzS.cjs} +41 -5
  10. package/dist/a2a-MPoM5lzS.cjs.map +1 -0
  11. package/dist/{agent-builder-BDYN3r89.cjs → agent-builder-D8JyDQ5J.cjs} +2 -2
  12. package/dist/{agent-builder-BDYN3r89.cjs.map → agent-builder-D8JyDQ5J.cjs.map} +1 -1
  13. package/dist/{agent-builder-Dqy_qumV.js → agent-builder-DNTFty1u.js} +2 -2
  14. package/dist/{agent-builder-Dqy_qumV.js.map → agent-builder-DNTFty1u.js.map} +1 -1
  15. package/dist/{agent-versions-Bsrpa_zb.js → agent-versions-CWEnD62A.js} +4 -4
  16. package/dist/{agent-versions-Bsrpa_zb.js.map → agent-versions-CWEnD62A.js.map} +1 -1
  17. package/dist/{agent-versions-CdQGF-3e.cjs → agent-versions-xeysPGel.cjs} +4 -4
  18. package/dist/{agent-versions-CdQGF-3e.cjs.map → agent-versions-xeysPGel.cjs.map} +1 -1
  19. package/dist/{agents-Dk2qoJi_.cjs → agents-0Tw3kkD_.cjs} +9 -5
  20. package/dist/agents-0Tw3kkD_.cjs.map +1 -0
  21. package/dist/{agents-CYvun9iI.js → agents-uT8ZDE4k.js} +9 -5
  22. package/dist/agents-uT8ZDE4k.js.map +1 -0
  23. package/dist/{api-schema-manifest-J5hfk5ZZ.cjs → api-schema-manifest-BPk3u4B-.cjs} +3 -3
  24. package/dist/{api-schema-manifest-J5hfk5ZZ.cjs.map → api-schema-manifest-BPk3u4B-.cjs.map} +1 -1
  25. package/dist/{api-schema-manifest-R8CsF6RX.js → api-schema-manifest-DSelT9XK.js} +3 -3
  26. package/dist/{api-schema-manifest-R8CsF6RX.js.map → api-schema-manifest-DSelT9XK.js.map} +1 -1
  27. package/dist/{background-tasks-DnmhLalp.js → background-tasks-BtWM0sZs.js} +2 -2
  28. package/dist/{background-tasks-DnmhLalp.js.map → background-tasks-BtWM0sZs.js.map} +1 -1
  29. package/dist/{background-tasks-CYgzzUnb.cjs → background-tasks-C5G2jJax.cjs} +2 -2
  30. package/dist/{background-tasks-CYgzzUnb.cjs.map → background-tasks-C5G2jJax.cjs.map} +1 -1
  31. package/dist/{builder-registry-DE5w7bNk.js → builder-registry-B8KyPAOP.js} +3 -3
  32. package/dist/{builder-registry-DE5w7bNk.js.map → builder-registry-B8KyPAOP.js.map} +1 -1
  33. package/dist/{builder-registry-BoaXBdm_.cjs → builder-registry-Dcou-kzd.cjs} +3 -3
  34. package/dist/{builder-registry-BoaXBdm_.cjs.map → builder-registry-Dcou-kzd.cjs.map} +1 -1
  35. package/dist/{channels-BqkOxxEk.js → channels-B9yt3a2P.js} +2 -2
  36. package/dist/{channels-BqkOxxEk.js.map → channels-B9yt3a2P.js.map} +1 -1
  37. package/dist/{channels-BonQBJT0.cjs → channels-BRoq3VKR.cjs} +2 -2
  38. package/dist/{channels-BonQBJT0.cjs.map → channels-BRoq3VKR.cjs.map} +1 -1
  39. package/dist/{common-CPNOpqxA.js → common-5ZZuR6wj.js} +19 -8
  40. package/dist/common-5ZZuR6wj.js.map +1 -0
  41. package/dist/{common-spbwhiWS.cjs → common-DQn8jX5T.cjs} +19 -8
  42. package/dist/common-DQn8jX5T.cjs.map +1 -0
  43. package/dist/{conversations-CebKjBfB.cjs → conversations-CcFLCCeF.cjs} +2 -2
  44. package/dist/{conversations-CebKjBfB.cjs.map → conversations-CcFLCCeF.cjs.map} +1 -1
  45. package/dist/{conversations-BDD46VBM.js → conversations-DtnawNGm.js} +2 -2
  46. package/dist/{conversations-BDD46VBM.js.map → conversations-DtnawNGm.js.map} +1 -1
  47. package/dist/{datasets-BMeFvFwT.cjs → datasets-D2JdQI44.cjs} +2 -2
  48. package/dist/{datasets-BMeFvFwT.cjs.map → datasets-D2JdQI44.cjs.map} +1 -1
  49. package/dist/{datasets-BeBH9Seg.js → datasets-Dr1pCC6P.js} +2 -2
  50. package/dist/{datasets-BeBH9Seg.js.map → datasets-Dr1pCC6P.js.map} +1 -1
  51. package/dist/{default-options-BcPyp2Gx.cjs → default-options-C9HZGjYi.cjs} +6 -3
  52. package/dist/{default-options-BcPyp2Gx.cjs.map → default-options-C9HZGjYi.cjs.map} +1 -1
  53. package/dist/{default-options-DGCDKR3I.js → default-options-C9JVjlto.js} +6 -3
  54. package/dist/{default-options-DGCDKR3I.js.map → default-options-C9JVjlto.js.map} +1 -1
  55. package/dist/{dist-IUXZtNBY.js → dist-CzzxT_L5.js} +237 -1384
  56. package/dist/dist-CzzxT_L5.js.map +1 -0
  57. package/dist/{dist-DgY0llRv.cjs → dist-TkFPtpuy.cjs} +246 -1396
  58. package/dist/dist-TkFPtpuy.cjs.map +1 -0
  59. package/dist/docs/SKILL.md +2 -1
  60. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  61. package/dist/docs/references/docs-agents-a2a.md +39 -0
  62. package/dist/docs/references/docs-server-custom-adapters.md +1 -1
  63. package/dist/docs/references/docs-server-custom-api-routes.md +375 -0
  64. package/dist/docs/references/reference-server-create-route.md +27 -1
  65. package/dist/docs/references/reference-server-routes.md +38 -24
  66. package/dist/{stored-workflows-OanG0TmB.js → dynamic-workflows-B0TE8mjA.js} +62 -62
  67. package/dist/dynamic-workflows-B0TE8mjA.js.map +1 -0
  68. package/dist/{stored-workflows-pCiWK305.cjs → dynamic-workflows-C-6vmau5.cjs} +71 -71
  69. package/dist/dynamic-workflows-C-6vmau5.cjs.map +1 -0
  70. package/dist/{editor-builder-Ct2nIbum.js → editor-builder-Byg6wbi6.js} +3 -3
  71. package/dist/{editor-builder-Ct2nIbum.js.map → editor-builder-Byg6wbi6.js.map} +1 -1
  72. package/dist/{editor-builder-CWTGCtNu.cjs → editor-builder-C3ZvffGu.cjs} +2 -2
  73. package/dist/{editor-builder-CWTGCtNu.cjs.map → editor-builder-C3ZvffGu.cjs.map} +1 -1
  74. package/dist/{editor-builder-fKbRRlK_.js → editor-builder-DJUxdzC8.js} +2 -2
  75. package/dist/{editor-builder-fKbRRlK_.js.map → editor-builder-DJUxdzC8.js.map} +1 -1
  76. package/dist/{editor-builder-BW4nlDcX.cjs → editor-builder-DT7ypWfa.cjs} +3 -3
  77. package/dist/{editor-builder-BW4nlDcX.cjs.map → editor-builder-DT7ypWfa.cjs.map} +1 -1
  78. package/dist/{logs-wBYi7UWL.cjs → logs-BDuGFqxu.cjs} +2 -2
  79. package/dist/{logs-wBYi7UWL.cjs.map → logs-BDuGFqxu.cjs.map} +1 -1
  80. package/dist/{logs-BzwWWl57.js → logs-Cz5NiwGP.js} +2 -2
  81. package/dist/{logs-BzwWWl57.js.map → logs-Cz5NiwGP.js.map} +1 -1
  82. package/dist/{mcp-DusNUBdz.cjs → mcp-Buvksst5.cjs} +2 -2
  83. package/dist/{mcp-DusNUBdz.cjs.map → mcp-Buvksst5.cjs.map} +1 -1
  84. package/dist/{mcp-client-versions-Db71zP8j.cjs → mcp-client-versions-CG7po4hq.cjs} +2 -2
  85. package/dist/{mcp-client-versions-Db71zP8j.cjs.map → mcp-client-versions-CG7po4hq.cjs.map} +1 -1
  86. package/dist/{mcp-client-versions-Dwbiav9P.js → mcp-client-versions-Co8d39A6.js} +2 -2
  87. package/dist/{mcp-client-versions-Dwbiav9P.js.map → mcp-client-versions-Co8d39A6.js.map} +1 -1
  88. package/dist/{mcp-BpC_5RhI.js → mcp-oOFVSK8L.js} +2 -2
  89. package/dist/{mcp-BpC_5RhI.js.map → mcp-oOFVSK8L.js.map} +1 -1
  90. package/dist/{memory-BjemiyZJ.js → memory-CBLqn9xl.js} +2 -2
  91. package/dist/{memory-BjemiyZJ.js.map → memory-CBLqn9xl.js.map} +1 -1
  92. package/dist/{memory-CxM2p78x.cjs → memory-D0prxytx.cjs} +2 -2
  93. package/dist/{memory-CxM2p78x.cjs.map → memory-D0prxytx.cjs.map} +1 -1
  94. package/dist/{observability-new-endpoints-Dk3oatL8.cjs → observability-new-endpoints-BC-dasRY.cjs} +2 -2
  95. package/dist/{observability-new-endpoints-Dk3oatL8.cjs.map → observability-new-endpoints-BC-dasRY.cjs.map} +1 -1
  96. package/dist/{observability-new-endpoints-YK2DjZto.js → observability-new-endpoints-Drx0C8uc.js} +2 -2
  97. package/dist/{observability-new-endpoints-YK2DjZto.js.map → observability-new-endpoints-Drx0C8uc.js.map} +1 -1
  98. package/dist/{probe-image-size-DYJVSL0b.cjs → probe-image-size-C2F59z8Z.cjs} +56 -1707
  99. package/dist/probe-image-size-C2F59z8Z.cjs.map +1 -0
  100. package/dist/{probe-image-size-BQgIJeY_.js → probe-image-size-mXCWYNrz.js} +22 -1673
  101. package/dist/probe-image-size-mXCWYNrz.js.map +1 -0
  102. package/dist/{prompt-block-versions-CIDwXWiC.js → prompt-block-versions-CBjHhMVK.js} +2 -2
  103. package/dist/{prompt-block-versions-CIDwXWiC.js.map → prompt-block-versions-CBjHhMVK.js.map} +1 -1
  104. package/dist/{prompt-block-versions-Bl3RmkTE.cjs → prompt-block-versions-Cgt_Grk2.cjs} +2 -2
  105. package/dist/{prompt-block-versions-Bl3RmkTE.cjs.map → prompt-block-versions-Cgt_Grk2.cjs.map} +1 -1
  106. package/dist/{route-builder-CgLVYL1c.cjs → route-builder-BAAedfru.cjs} +11 -2
  107. package/dist/route-builder-BAAedfru.cjs.map +1 -0
  108. package/dist/{route-builder-CIk5k35M.js → route-builder-YQ_gLIvW.js} +11 -2
  109. package/dist/route-builder-YQ_gLIvW.js.map +1 -0
  110. package/dist/{routes-BzR8iVj4.cjs → routes-0BEh3stO.cjs} +26 -25
  111. package/dist/routes-0BEh3stO.cjs.map +1 -0
  112. package/dist/{routes-C7iRCN_l.js → routes-BsMPy5bu.js} +27 -26
  113. package/dist/routes-BsMPy5bu.js.map +1 -0
  114. package/dist/{schedules-CK3-IE0h.cjs → schedules-DOK225ZZ.cjs} +2 -2
  115. package/dist/{schedules-CK3-IE0h.cjs.map → schedules-DOK225ZZ.cjs.map} +1 -1
  116. package/dist/{schedules-qxFoU-Tb.js → schedules-RjPcNOmY.js} +2 -2
  117. package/dist/{schedules-qxFoU-Tb.js.map → schedules-RjPcNOmY.js.map} +1 -1
  118. package/dist/{schema-Bv9OdW1f-BY6u3u8K.cjs → schema-Bv9OdW1f-CHHI-NTr.cjs} +2 -76
  119. package/dist/schema-Bv9OdW1f-CHHI-NTr.cjs.map +1 -0
  120. package/dist/{schema-Bv9OdW1f-CIOfv-3w.js → schema-Bv9OdW1f-DLSJSqQv.js} +2 -76
  121. package/dist/schema-Bv9OdW1f-DLSJSqQv.js.map +1 -0
  122. package/dist/schema-CGeYTFwm.js +2 -0
  123. package/dist/schema-DkBbires.cjs +1 -0
  124. package/dist/{scorer-versions-DpmAJKsY.cjs → scorer-versions-CYXtxMTU.cjs} +3 -3
  125. package/dist/{scorer-versions-DpmAJKsY.cjs.map → scorer-versions-CYXtxMTU.cjs.map} +1 -1
  126. package/dist/{scorer-versions-BA8N488c.js → scorer-versions-CdVjOtQO.js} +3 -3
  127. package/dist/{scorer-versions-BA8N488c.js.map → scorer-versions-CdVjOtQO.js.map} +1 -1
  128. package/dist/{scores-DU0o86rP.js → scores-B1IdMcDj.js} +2 -2
  129. package/dist/{scores-DU0o86rP.js.map → scores-B1IdMcDj.js.map} +1 -1
  130. package/dist/{scores-Bm_sUKY1.cjs → scores-C_Au9jSw.cjs} +2 -2
  131. package/dist/{scores-Bm_sUKY1.cjs.map → scores-C_Au9jSw.cjs.map} +1 -1
  132. package/dist/server/a2a/store.cjs +4 -0
  133. package/dist/server/a2a/store.cjs.map +1 -1
  134. package/dist/server/a2a/store.d.ts +3 -0
  135. package/dist/server/a2a/store.d.ts.map +1 -1
  136. package/dist/server/a2a/store.js +4 -0
  137. package/dist/server/a2a/store.js.map +1 -1
  138. package/dist/server/handlers/a2a.cjs +3 -1
  139. package/dist/server/handlers/a2a.d.ts +583 -401
  140. package/dist/server/handlers/a2a.d.ts.map +1 -1
  141. package/dist/server/handlers/a2a.js +2 -2
  142. package/dist/server/handlers/agent-builder.cjs +7 -7
  143. package/dist/server/handlers/agent-builder.d.ts +1069 -764
  144. package/dist/server/handlers/agent-builder.d.ts.map +1 -1
  145. package/dist/server/handlers/agent-builder.js +7 -7
  146. package/dist/server/handlers/agent-controller.cjs +86 -17
  147. package/dist/server/handlers/agent-controller.cjs.map +1 -1
  148. package/dist/server/handlers/agent-controller.d.ts +1548 -893
  149. package/dist/server/handlers/agent-controller.d.ts.map +1 -1
  150. package/dist/server/handlers/agent-controller.js +86 -17
  151. package/dist/server/handlers/agent-controller.js.map +1 -1
  152. package/dist/server/handlers/agent-versions.cjs +4 -4
  153. package/dist/server/handlers/agent-versions.d.ts +8504 -8312
  154. package/dist/server/handlers/agent-versions.d.ts.map +1 -1
  155. package/dist/server/handlers/agent-versions.js +4 -4
  156. package/dist/server/handlers/agents.cjs +6 -6
  157. package/dist/server/handlers/agents.d.ts +9984 -9826
  158. package/dist/server/handlers/agents.d.ts.map +1 -1
  159. package/dist/server/handlers/agents.js +6 -6
  160. package/dist/server/handlers/auth.cjs +1 -1
  161. package/dist/server/handlers/auth.d.ts +693 -297
  162. package/dist/server/handlers/auth.d.ts.map +1 -1
  163. package/dist/server/handlers/auth.js +1 -1
  164. package/dist/server/handlers/background-tasks.cjs +1 -1
  165. package/dist/server/handlers/background-tasks.d.ts +190 -130
  166. package/dist/server/handlers/background-tasks.d.ts.map +1 -1
  167. package/dist/server/handlers/background-tasks.js +1 -1
  168. package/dist/server/handlers/builder-registry.cjs +1 -1
  169. package/dist/server/handlers/builder-registry.d.ts +218 -121
  170. package/dist/server/handlers/builder-registry.d.ts.map +1 -1
  171. package/dist/server/handlers/builder-registry.js +1 -1
  172. package/dist/server/handlers/channels.cjs +1 -1
  173. package/dist/server/handlers/channels.d.ts +157 -77
  174. package/dist/server/handlers/channels.d.ts.map +1 -1
  175. package/dist/server/handlers/channels.js +1 -1
  176. package/dist/server/handlers/conversations.cjs +2 -2
  177. package/dist/server/handlers/conversations.d.ts +221 -141
  178. package/dist/server/handlers/conversations.d.ts.map +1 -1
  179. package/dist/server/handlers/conversations.js +2 -2
  180. package/dist/server/handlers/datasets.cjs +3 -3
  181. package/dist/server/handlers/datasets.d.ts +2669 -2234
  182. package/dist/server/handlers/datasets.d.ts.map +1 -1
  183. package/dist/server/handlers/datasets.js +3 -3
  184. package/dist/server/handlers/dynamic-workflows.cjs +6 -0
  185. package/dist/server/handlers/dynamic-workflows.d.ts +900 -0
  186. package/dist/server/handlers/{stored-workflows.d.ts.map → dynamic-workflows.d.ts.map} +1 -1
  187. package/dist/server/handlers/dynamic-workflows.js +2 -0
  188. package/dist/server/handlers/editor-builder.cjs +1 -1
  189. package/dist/server/handlers/editor-builder.d.ts +305 -245
  190. package/dist/server/handlers/editor-builder.d.ts.map +1 -1
  191. package/dist/server/handlers/editor-builder.js +1 -1
  192. package/dist/server/handlers/favorites-enrichment.cjs +1 -1
  193. package/dist/server/handlers/favorites-enrichment.js +1 -1
  194. package/dist/server/handlers/logs.cjs +3 -3
  195. package/dist/server/handlers/logs.d.ts +245 -185
  196. package/dist/server/handlers/logs.d.ts.map +1 -1
  197. package/dist/server/handlers/logs.js +3 -3
  198. package/dist/server/handlers/mcp-client-versions.cjs +3 -3
  199. package/dist/server/handlers/mcp-client-versions.d.ts +447 -307
  200. package/dist/server/handlers/mcp-client-versions.d.ts.map +1 -1
  201. package/dist/server/handlers/mcp-client-versions.js +3 -3
  202. package/dist/server/handlers/mcp.cjs +2 -2
  203. package/dist/server/handlers/mcp.d.ts +357 -156
  204. package/dist/server/handlers/mcp.d.ts.map +1 -1
  205. package/dist/server/handlers/mcp.js +2 -2
  206. package/dist/server/handlers/memory.cjs +2 -2
  207. package/dist/server/handlers/memory.d.ts +1723 -1223
  208. package/dist/server/handlers/memory.d.ts.map +1 -1
  209. package/dist/server/handlers/memory.js +2 -2
  210. package/dist/server/handlers/observability-new-endpoints.cjs +1 -1
  211. package/dist/server/handlers/observability-new-endpoints.d.ts +3239 -2158
  212. package/dist/server/handlers/observability-new-endpoints.d.ts.map +1 -1
  213. package/dist/server/handlers/observability-new-endpoints.js +1 -1
  214. package/dist/server/handlers/observability-shared.cjs +1 -1
  215. package/dist/server/handlers/observability-shared.js +1 -1
  216. package/dist/server/handlers/observability.cjs +2 -2
  217. package/dist/server/handlers/observability.d.ts +267 -149
  218. package/dist/server/handlers/observability.d.ts.map +1 -1
  219. package/dist/server/handlers/observability.js +2 -2
  220. package/dist/server/handlers/processor-providers.cjs +1 -1
  221. package/dist/server/handlers/processor-providers.d.ts +74 -34
  222. package/dist/server/handlers/processor-providers.d.ts.map +1 -1
  223. package/dist/server/handlers/processor-providers.js +1 -1
  224. package/dist/server/handlers/processors.cjs +1 -1
  225. package/dist/server/handlers/processors.d.ts +222 -173
  226. package/dist/server/handlers/processors.d.ts.map +1 -1
  227. package/dist/server/handlers/processors.js +1 -1
  228. package/dist/server/handlers/prompt-block-versions.cjs +3 -3
  229. package/dist/server/handlers/prompt-block-versions.d.ts +646 -506
  230. package/dist/server/handlers/prompt-block-versions.d.ts.map +1 -1
  231. package/dist/server/handlers/prompt-block-versions.js +3 -3
  232. package/dist/server/handlers/responses.cjs +1 -1
  233. package/dist/server/handlers/responses.d.ts +352 -362
  234. package/dist/server/handlers/responses.d.ts.map +1 -1
  235. package/dist/server/handlers/responses.js +1 -1
  236. package/dist/server/handlers/schedules.cjs +1 -1
  237. package/dist/server/handlers/schedules.d.ts +1190 -1028
  238. package/dist/server/handlers/schedules.d.ts.map +1 -1
  239. package/dist/server/handlers/schedules.js +1 -1
  240. package/dist/server/handlers/scorer-versions.cjs +3 -3
  241. package/dist/server/handlers/scorer-versions.d.ts +551 -411
  242. package/dist/server/handlers/scorer-versions.d.ts.map +1 -1
  243. package/dist/server/handlers/scorer-versions.js +3 -3
  244. package/dist/server/handlers/scores.cjs +3 -3
  245. package/dist/server/handlers/scores.d.ts +287 -167
  246. package/dist/server/handlers/scores.d.ts.map +1 -1
  247. package/dist/server/handlers/scores.js +3 -3
  248. package/dist/server/handlers/stored-agent-favorites.cjs +4 -4
  249. package/dist/server/handlers/stored-agent-favorites.d.ts +62 -22
  250. package/dist/server/handlers/stored-agent-favorites.d.ts.map +1 -1
  251. package/dist/server/handlers/stored-agent-favorites.js +4 -4
  252. package/dist/server/handlers/stored-agents.cjs +5 -5
  253. package/dist/server/handlers/stored-agents.d.ts +12056 -16152
  254. package/dist/server/handlers/stored-agents.d.ts.map +1 -1
  255. package/dist/server/handlers/stored-agents.js +5 -5
  256. package/dist/server/handlers/stored-mcp-clients.cjs +4 -4
  257. package/dist/server/handlers/stored-mcp-clients.d.ts +417 -324
  258. package/dist/server/handlers/stored-mcp-clients.d.ts.map +1 -1
  259. package/dist/server/handlers/stored-mcp-clients.js +4 -4
  260. package/dist/server/handlers/stored-prompt-blocks.cjs +4 -4
  261. package/dist/server/handlers/stored-prompt-blocks.d.ts +603 -555
  262. package/dist/server/handlers/stored-prompt-blocks.d.ts.map +1 -1
  263. package/dist/server/handlers/stored-prompt-blocks.js +4 -4
  264. package/dist/server/handlers/stored-scorers.cjs +4 -4
  265. package/dist/server/handlers/stored-scorers.d.ts +556 -472
  266. package/dist/server/handlers/stored-scorers.d.ts.map +1 -1
  267. package/dist/server/handlers/stored-scorers.js +4 -4
  268. package/dist/server/handlers/stored-skill-favorites.cjs +4 -4
  269. package/dist/server/handlers/stored-skill-favorites.d.ts +62 -22
  270. package/dist/server/handlers/stored-skill-favorites.d.ts.map +1 -1
  271. package/dist/server/handlers/stored-skill-favorites.js +4 -4
  272. package/dist/server/handlers/stored-skills.cjs +4 -4
  273. package/dist/server/handlers/stored-skills.d.ts +632 -515
  274. package/dist/server/handlers/stored-skills.d.ts.map +1 -1
  275. package/dist/server/handlers/stored-skills.js +4 -4
  276. package/dist/server/handlers/stored-workspaces.cjs +3 -3
  277. package/dist/server/handlers/stored-workspaces.d.ts +646 -546
  278. package/dist/server/handlers/stored-workspaces.d.ts.map +1 -1
  279. package/dist/server/handlers/stored-workspaces.js +3 -3
  280. package/dist/server/handlers/system.cjs +2 -2
  281. package/dist/server/handlers/system.d.ts +146 -106
  282. package/dist/server/handlers/system.d.ts.map +1 -1
  283. package/dist/server/handlers/system.js +2 -2
  284. package/dist/server/handlers/tool-providers.cjs +1 -1
  285. package/dist/server/handlers/tool-providers.d.ts +580 -331
  286. package/dist/server/handlers/tool-providers.d.ts.map +1 -1
  287. package/dist/server/handlers/tool-providers.js +1 -1
  288. package/dist/server/handlers/tools.cjs +6 -6
  289. package/dist/server/handlers/tools.d.ts +177 -77
  290. package/dist/server/handlers/tools.d.ts.map +1 -1
  291. package/dist/server/handlers/tools.js +6 -6
  292. package/dist/server/handlers/validate-agent-instructions.cjs +1 -1
  293. package/dist/server/handlers/validate-agent-instructions.js +1 -1
  294. package/dist/server/handlers/vector.cjs +2 -2
  295. package/dist/server/handlers/vector.d.ts +282 -126
  296. package/dist/server/handlers/vector.d.ts.map +1 -1
  297. package/dist/server/handlers/vector.js +2 -2
  298. package/dist/server/handlers/workflows.cjs +149 -27
  299. package/dist/server/handlers/workflows.cjs.map +1 -1
  300. package/dist/server/handlers/workflows.d.ts +1704 -1173
  301. package/dist/server/handlers/workflows.d.ts.map +1 -1
  302. package/dist/server/handlers/workflows.js +149 -29
  303. package/dist/server/handlers/workflows.js.map +1 -1
  304. package/dist/server/handlers/workspace.cjs +1 -1
  305. package/dist/server/handlers/workspace.d.ts +1936 -1150
  306. package/dist/server/handlers/workspace.d.ts.map +1 -1
  307. package/dist/server/handlers/workspace.js +1 -1
  308. package/dist/server/handlers.cjs +8 -8
  309. package/dist/server/handlers.d.ts +1 -1
  310. package/dist/server/handlers.d.ts.map +1 -1
  311. package/dist/server/handlers.js +3 -3
  312. package/dist/server/schemas/a2a.d.ts +70 -6
  313. package/dist/server/schemas/a2a.d.ts.map +1 -1
  314. package/dist/server/schemas/agent-versions.d.ts +70 -10
  315. package/dist/server/schemas/agent-versions.d.ts.map +1 -1
  316. package/dist/server/schemas/agents.d.ts +23 -3
  317. package/dist/server/schemas/agents.d.ts.map +1 -1
  318. package/dist/server/schemas/common.d.ts.map +1 -1
  319. package/dist/server/schemas/default-options.d.ts +7 -1
  320. package/dist/server/schemas/default-options.d.ts.map +1 -1
  321. package/dist/server/schemas/{stored-workflows.d.ts → dynamic-workflows.d.ts} +13 -13
  322. package/dist/server/schemas/dynamic-workflows.d.ts.map +1 -0
  323. package/dist/server/schemas/index.cjs +26 -26
  324. package/dist/server/schemas/index.js +26 -26
  325. package/dist/server/schemas/stored-agents.d.ts +140 -20
  326. package/dist/server/schemas/stored-agents.d.ts.map +1 -1
  327. package/dist/server/schemas/workflows.d.ts +10 -2
  328. package/dist/server/schemas/workflows.d.ts.map +1 -1
  329. package/dist/server/server-adapter/index.cjs +69 -7
  330. package/dist/server/server-adapter/index.cjs.map +1 -1
  331. package/dist/server/server-adapter/index.d.ts +51 -1
  332. package/dist/server/server-adapter/index.d.ts.map +1 -1
  333. package/dist/server/server-adapter/index.js +70 -9
  334. package/dist/server/server-adapter/index.js.map +1 -1
  335. package/dist/server/server-adapter/openapi-utils.d.ts.map +1 -1
  336. package/dist/server/server-adapter/routes/a2a.d.ts +546 -398
  337. package/dist/server/server-adapter/routes/a2a.d.ts.map +1 -1
  338. package/dist/server/server-adapter/routes/agent-builder.d.ts +1054 -749
  339. package/dist/server/server-adapter/routes/agent-builder.d.ts.map +1 -1
  340. package/dist/server/server-adapter/routes/channels.d.ts +153 -73
  341. package/dist/server/server-adapter/routes/channels.d.ts.map +1 -1
  342. package/dist/server/server-adapter/routes/conversations.d.ts +218 -138
  343. package/dist/server/server-adapter/routes/conversations.d.ts.map +1 -1
  344. package/dist/server/server-adapter/routes/datasets.d.ts +2312 -1877
  345. package/dist/server/server-adapter/routes/datasets.d.ts.map +1 -1
  346. package/dist/server/server-adapter/routes/dynamic-workflows.d.ts +16 -0
  347. package/dist/server/server-adapter/routes/dynamic-workflows.d.ts.map +1 -0
  348. package/dist/server/server-adapter/routes/editor-builder.d.ts +506 -349
  349. package/dist/server/server-adapter/routes/editor-builder.d.ts.map +1 -1
  350. package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
  351. package/dist/server/server-adapter/routes/legacy.d.ts +615 -629
  352. package/dist/server/server-adapter/routes/legacy.d.ts.map +1 -1
  353. package/dist/server/server-adapter/routes/logs.d.ts +243 -183
  354. package/dist/server/server-adapter/routes/logs.d.ts.map +1 -1
  355. package/dist/server/server-adapter/routes/mcp.d.ts +347 -147
  356. package/dist/server/server-adapter/routes/mcp.d.ts.map +1 -1
  357. package/dist/server/server-adapter/routes/memory.d.ts +1699 -1199
  358. package/dist/server/server-adapter/routes/memory.d.ts.map +1 -1
  359. package/dist/server/server-adapter/routes/observability.d.ts +2761 -2103
  360. package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
  361. package/dist/server/server-adapter/routes/processor-providers.d.ts +70 -30
  362. package/dist/server/server-adapter/routes/processor-providers.d.ts.map +1 -1
  363. package/dist/server/server-adapter/routes/processors.d.ts +220 -171
  364. package/dist/server/server-adapter/routes/processors.d.ts.map +1 -1
  365. package/dist/server/server-adapter/routes/responses.d.ts +350 -360
  366. package/dist/server/server-adapter/routes/responses.d.ts.map +1 -1
  367. package/dist/server/server-adapter/routes/route-builder.d.ts +6 -2
  368. package/dist/server/server-adapter/routes/route-builder.d.ts.map +1 -1
  369. package/dist/server/server-adapter/routes/scorers.d.ts +282 -162
  370. package/dist/server/server-adapter/routes/scorers.d.ts.map +1 -1
  371. package/dist/server/server-adapter/routes/stored-mcp-clients.d.ts +821 -588
  372. package/dist/server/server-adapter/routes/stored-mcp-clients.d.ts.map +1 -1
  373. package/dist/server/server-adapter/routes/stored-prompt-blocks.d.ts +1252 -1064
  374. package/dist/server/server-adapter/routes/stored-prompt-blocks.d.ts.map +1 -1
  375. package/dist/server/server-adapter/routes/stored-scorers.d.ts +1046 -822
  376. package/dist/server/server-adapter/routes/stored-scorers.d.ts.map +1 -1
  377. package/dist/server/server-adapter/routes/stored-skills.d.ts +683 -526
  378. package/dist/server/server-adapter/routes/stored-skills.d.ts.map +1 -1
  379. package/dist/server/server-adapter/routes/stored-workspaces.d.ts +637 -537
  380. package/dist/server/server-adapter/routes/stored-workspaces.d.ts.map +1 -1
  381. package/dist/server/server-adapter/routes/system.d.ts +145 -105
  382. package/dist/server/server-adapter/routes/system.d.ts.map +1 -1
  383. package/dist/server/server-adapter/routes/tool-providers.d.ts +566 -317
  384. package/dist/server/server-adapter/routes/tool-providers.d.ts.map +1 -1
  385. package/dist/server/server-adapter/routes/tools.d.ts +103 -43
  386. package/dist/server/server-adapter/routes/tools.d.ts.map +1 -1
  387. package/dist/server/server-adapter/routes/vectors.d.ts +275 -119
  388. package/dist/server/server-adapter/routes/vectors.d.ts.map +1 -1
  389. package/dist/server/server-adapter/routes/workflows.d.ts +1586 -1098
  390. package/dist/server/server-adapter/routes/workflows.d.ts.map +1 -1
  391. package/dist/server/server-adapter/routes/workspace.d.ts +1026 -613
  392. package/dist/server/server-adapter/routes/workspace.d.ts.map +1 -1
  393. package/dist/{stored-agents-D8ar1Pn7.js → stored-agents-BRBZM-Xl.js} +4 -4
  394. package/dist/{stored-agents-D8ar1Pn7.js.map → stored-agents-BRBZM-Xl.js.map} +1 -1
  395. package/dist/{stored-agents-DKd89v5z.cjs → stored-agents-CPxfYRH9.cjs} +4 -4
  396. package/dist/{stored-agents-DKd89v5z.cjs.map → stored-agents-CPxfYRH9.cjs.map} +1 -1
  397. package/dist/{stored-mcp-clients-CwA5_nZ9.cjs → stored-mcp-clients-CJJPe_09.cjs} +2 -2
  398. package/dist/{stored-mcp-clients-CwA5_nZ9.cjs.map → stored-mcp-clients-CJJPe_09.cjs.map} +1 -1
  399. package/dist/{stored-mcp-clients-DJ3E4g8-.js → stored-mcp-clients-CoCfZRhw.js} +2 -2
  400. package/dist/{stored-mcp-clients-DJ3E4g8-.js.map → stored-mcp-clients-CoCfZRhw.js.map} +1 -1
  401. package/dist/{stored-prompt-blocks-BlqcqnEX.js → stored-prompt-blocks-DcmkZaCm.js} +2 -2
  402. package/dist/{stored-prompt-blocks-BlqcqnEX.js.map → stored-prompt-blocks-DcmkZaCm.js.map} +1 -1
  403. package/dist/{stored-prompt-blocks-DR_Wts8r.cjs → stored-prompt-blocks-XI4frgZv.cjs} +2 -2
  404. package/dist/{stored-prompt-blocks-DR_Wts8r.cjs.map → stored-prompt-blocks-XI4frgZv.cjs.map} +1 -1
  405. package/dist/{stored-scorers-BIKumDRO.js → stored-scorers-B__LF0Cy.js} +3 -3
  406. package/dist/{stored-scorers-BIKumDRO.js.map → stored-scorers-B__LF0Cy.js.map} +1 -1
  407. package/dist/{stored-scorers-_dqFdh-G.cjs → stored-scorers-Cml7jPJv.cjs} +3 -3
  408. package/dist/{stored-scorers-_dqFdh-G.cjs.map → stored-scorers-Cml7jPJv.cjs.map} +1 -1
  409. package/dist/{stored-skills-CgwoCNNV.cjs → stored-skills-BqNK0ssS.cjs} +2 -2
  410. package/dist/{stored-skills-CgwoCNNV.cjs.map → stored-skills-BqNK0ssS.cjs.map} +1 -1
  411. package/dist/{stored-skills-B_aAMn5W.js → stored-skills-JTWbMybs.js} +2 -2
  412. package/dist/{stored-skills-B_aAMn5W.js.map → stored-skills-JTWbMybs.js.map} +1 -1
  413. package/dist/{stored-workspaces-Dib-ClOP.js → stored-workspaces-6PYE4Y3m.js} +2 -2
  414. package/dist/{stored-workspaces-Dib-ClOP.js.map → stored-workspaces-6PYE4Y3m.js.map} +1 -1
  415. package/dist/{stored-workspaces-CbJQaFuP.cjs → stored-workspaces-Dl8B20LD.cjs} +2 -2
  416. package/dist/{stored-workspaces-CbJQaFuP.cjs.map → stored-workspaces-Dl8B20LD.cjs.map} +1 -1
  417. package/dist/sync-BHatXKfg.cjs +1679 -0
  418. package/dist/sync-BHatXKfg.cjs.map +1 -0
  419. package/dist/sync-djJ8Lmds.js +1656 -0
  420. package/dist/sync-djJ8Lmds.js.map +1 -0
  421. package/dist/{utils-wESuBh27.cjs → utils-Bna_JCkb.cjs} +3 -3
  422. package/dist/{utils-wESuBh27.cjs.map → utils-Bna_JCkb.cjs.map} +1 -1
  423. package/dist/{utils-BUK03Frl.js → utils-QXKhjIm6.js} +3 -3
  424. package/dist/{utils-BUK03Frl.js.map → utils-QXKhjIm6.js.map} +1 -1
  425. package/dist/{vectors-CZY34X8R.js → vectors-Ck7Qu6yz.js} +2 -2
  426. package/dist/{vectors-CZY34X8R.js.map → vectors-Ck7Qu6yz.js.map} +1 -1
  427. package/dist/{vectors-Cj-SPxOy.cjs → vectors-D6uZn2f1.cjs} +2 -2
  428. package/dist/{vectors-Cj-SPxOy.cjs.map → vectors-D6uZn2f1.cjs.map} +1 -1
  429. package/dist/{version-common-CEBQY7M8.cjs → version-common-AtNRQ5xH.cjs} +2 -2
  430. package/dist/{version-common-CEBQY7M8.cjs.map → version-common-AtNRQ5xH.cjs.map} +1 -1
  431. package/dist/{version-common-Cmd1f9JX.js → version-common-CudZ_WuW.js} +2 -2
  432. package/dist/{version-common-Cmd1f9JX.js.map → version-common-CudZ_WuW.js.map} +1 -1
  433. package/dist/{workflows-XfiENvkF.cjs → workflows--79xhOOb.cjs} +14 -3
  434. package/dist/workflows--79xhOOb.cjs.map +1 -0
  435. package/dist/{workflows-DPW6FrY0.js → workflows-B2ooCiwN.js} +9 -4
  436. package/dist/workflows-B2ooCiwN.js.map +1 -0
  437. package/package.json +6 -6
  438. package/dist/a2a-CHi9AJ0n.js.map +0 -1
  439. package/dist/a2a-CnU9zaGR.js.map +0 -1
  440. package/dist/a2a-D3ZYeXIx.cjs.map +0 -1
  441. package/dist/a2a-oM7aqLz4.cjs.map +0 -1
  442. package/dist/agents-CYvun9iI.js.map +0 -1
  443. package/dist/agents-Dk2qoJi_.cjs.map +0 -1
  444. package/dist/common-CPNOpqxA.js.map +0 -1
  445. package/dist/common-spbwhiWS.cjs.map +0 -1
  446. package/dist/dist-DgY0llRv.cjs.map +0 -1
  447. package/dist/dist-IUXZtNBY.js.map +0 -1
  448. package/dist/probe-image-size-BQgIJeY_.js.map +0 -1
  449. package/dist/probe-image-size-DYJVSL0b.cjs.map +0 -1
  450. package/dist/route-builder-CIk5k35M.js.map +0 -1
  451. package/dist/route-builder-CgLVYL1c.cjs.map +0 -1
  452. package/dist/routes-BzR8iVj4.cjs.map +0 -1
  453. package/dist/routes-C7iRCN_l.js.map +0 -1
  454. package/dist/schema-B8-5YCsA.js +0 -2
  455. package/dist/schema-BieM1qrc.cjs +0 -1
  456. package/dist/schema-Bv9OdW1f-BY6u3u8K.cjs.map +0 -1
  457. package/dist/schema-Bv9OdW1f-CIOfv-3w.js.map +0 -1
  458. package/dist/server/handlers/stored-workflows.cjs +0 -6
  459. package/dist/server/handlers/stored-workflows.d.ts +0 -820
  460. package/dist/server/handlers/stored-workflows.js +0 -2
  461. package/dist/server/schemas/stored-workflows.d.ts.map +0 -1
  462. package/dist/server/server-adapter/routes/stored-workflows.d.ts +0 -16
  463. package/dist/server/server-adapter/routes/stored-workflows.d.ts.map +0 -1
  464. package/dist/stored-workflows-OanG0TmB.js.map +0 -1
  465. package/dist/stored-workflows-pCiWK305.cjs.map +0 -1
  466. package/dist/workflows-DPW6FrY0.js.map +0 -1
  467. package/dist/workflows-XfiENvkF.cjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import { a as messageResponseSchema, f as tracingOptionsSchema, p as typedPermissive, r as createCombinedPaginationSchema } from "./common-CPNOpqxA.js";
1
+ import { a as messageResponseSchema, f as tracingOptionsSchema, p as typedPermissive, r as createCombinedPaginationSchema } from "./common-5ZZuR6wj.js";
2
2
  import { z } from "zod/v4";
3
3
  //#region src/server/schemas/workflows.ts
4
4
  const workflowRunStatusSchema = z.enum([
@@ -66,7 +66,7 @@ const workflowInfoSchema = z.object({
66
66
  stateSchema: z.string().optional(),
67
67
  options: z.object({}).optional(),
68
68
  isProcessorWorkflow: z.boolean().optional(),
69
- origin: z.enum(["code", "stored"]).optional()
69
+ origin: z.enum(["code", "dynamic"]).optional()
70
70
  });
71
71
  /**
72
72
  * Schema for list workflows endpoint response
@@ -103,6 +103,11 @@ const listWorkflowRunsQuerySchema = createCombinedPaginationSchema().extend({
103
103
  resourceId: z.string().optional(),
104
104
  status: workflowRunStatusSchema.optional()
105
105
  });
106
+ const workflowRunCountsEntrySchema = z.object({
107
+ running: z.number(),
108
+ suspended: z.number()
109
+ });
110
+ const workflowRunCountsResponseSchema = z.record(z.string(), workflowRunCountsEntrySchema);
106
111
  /**
107
112
  * Base schema for workflow execution with input data and tracing
108
113
  */
@@ -250,6 +255,6 @@ const observeWorkflowQuerySchema = z.object({
250
255
  offset: z.coerce.number().optional().describe("Resume from this event index (0-based). If omitted, replays all events.")
251
256
  });
252
257
  //#endregion
253
- export { workflowRunPathParams as _, observeWorkflowQuerySchema as a, workflowRunsResponseSchema as b, sendWorkflowRunEventBodySchema as c, streamWorkflowBodySchema as d, timeTravelBodySchema as f, workflowInfoSchema as g, workflowIdPathParams as h, listWorkflowsResponseSchema as i, startAsyncWorkflowBodySchema as l, workflowExecutionResultSchema as m, createWorkflowRunResponseSchema as n, restartBodySchema as o, workflowControlResponseSchema as p, listWorkflowRunsQuerySchema as r, resumeBodySchema as s, createWorkflowRunBodySchema as t, streamLegacyWorkflowBodySchema as u, workflowRunResultQuerySchema as v, workflowRunResultSchema as y };
258
+ export { workflowRunCountsResponseSchema as _, observeWorkflowQuerySchema as a, workflowRunResultSchema as b, sendWorkflowRunEventBodySchema as c, streamWorkflowBodySchema as d, timeTravelBodySchema as f, workflowInfoSchema as g, workflowIdPathParams as h, listWorkflowsResponseSchema as i, startAsyncWorkflowBodySchema as l, workflowExecutionResultSchema as m, createWorkflowRunResponseSchema as n, restartBodySchema as o, workflowControlResponseSchema as p, listWorkflowRunsQuerySchema as r, resumeBodySchema as s, createWorkflowRunBodySchema as t, streamLegacyWorkflowBodySchema as u, workflowRunPathParams as v, workflowRunsResponseSchema as x, workflowRunResultQuerySchema as y };
254
259
 
255
- //# sourceMappingURL=workflows-DPW6FrY0.js.map
260
+ //# sourceMappingURL=workflows-B2ooCiwN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows-B2ooCiwN.js","names":[],"sources":["../src/server/schemas/workflows.ts"],"sourcesContent":["import type { TimeTravelContext, WorkflowRunState } from '@mastra/core/workflows';\nimport { z } from 'zod/v4';\nimport { createCombinedPaginationSchema, tracingOptionsSchema, messageResponseSchema, typedPermissive } from './common';\n\nexport const workflowRunStatusSchema = z.enum([\n 'running',\n 'waiting',\n 'suspended',\n 'success',\n 'failed',\n 'canceled',\n 'pending',\n 'bailed',\n 'tripwire',\n 'paused',\n 'skipped',\n]);\n\n// Path parameter schemas\nexport const workflowIdPathParams = z.object({\n workflowId: z.string().describe('Unique identifier for the workflow'),\n});\n\nexport const workflowRunPathParams = workflowIdPathParams.extend({\n runId: z.string().describe('Unique identifier for the workflow run'),\n});\n\n/**\n * Schema for serialized step\n * Uses passthrough() to allow step-specific fields\n */\nconst serializedStepSchema = z.object({\n id: z.string(),\n description: z.string().optional(),\n stateSchema: z.string().optional(),\n inputSchema: z.string().optional(),\n outputSchema: z.string().optional(),\n resumeSchema: z.string().optional(),\n suspendSchema: z.string().optional(),\n component: z.string().optional(),\n isWorkflow: z.boolean().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\n/**\n * Schema for serialized step flow entry\n * Represents different step flow types in the workflow graph\n */\nconst serializedStepFlowEntrySchema = z.object({\n type: z.enum([\n 'step',\n 'agent',\n 'tool',\n 'mapping',\n 'sleep',\n 'sleepUntil',\n 'waitForEvent',\n 'parallel',\n 'conditional',\n 'loop',\n 'foreach',\n 'workflow',\n ]),\n});\n\n/**\n * Schema for workflow information\n * Returned by getWorkflowByIdHandler and listWorkflowsHandler\n */\nexport const workflowInfoSchema = z.object({\n steps: z.record(z.string(), serializedStepSchema),\n allSteps: z.record(z.string(), serializedStepSchema),\n name: z.string().optional(),\n description: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n stepGraph: z.array(serializedStepFlowEntrySchema),\n inputSchema: z.string().optional(),\n outputSchema: z.string().optional(),\n stateSchema: z.string().optional(),\n options: z.object({}).optional(),\n isProcessorWorkflow: z.boolean().optional(),\n origin: z.enum(['code', 'dynamic']).optional(),\n});\n\n/**\n * Schema for list workflows endpoint response\n * Returns a record of workflow ID to workflow info\n */\nexport const listWorkflowsResponseSchema = z.record(z.string(), workflowInfoSchema);\n\n/**\n * Schema for workflow run object\n */\nconst workflowRunSchema = z.object({\n workflowName: z.string(),\n runId: z.string(),\n snapshot: typedPermissive<WorkflowRunState | string>(z.union([z.record(z.string(), z.unknown()), z.string()])),\n createdAt: z.date(),\n updatedAt: z.date(),\n resourceId: z.string().optional(),\n});\n\n/**\n * Schema for workflow runs response (paginated)\n * Includes runs array and total count\n */\nexport const workflowRunsResponseSchema = z.object({\n runs: z.array(workflowRunSchema),\n total: z.number(),\n});\n\n/**\n * Schema for query parameters when listing workflow runs\n * Supports both page/perPage and limit/offset for backwards compatibility\n * If page/perPage provided, use directly; otherwise convert from limit/offset\n */\nexport const listWorkflowRunsQuerySchema = createCombinedPaginationSchema().extend({\n fromDate: z.coerce.date().optional(),\n toDate: z.coerce.date().optional(),\n resourceId: z.string().optional(),\n status: workflowRunStatusSchema.optional(),\n});\n\nexport const workflowRunCountsEntrySchema = z.object({\n running: z.number(),\n suspended: z.number(),\n});\n\nexport const workflowRunCountsResponseSchema = z.record(z.string(), workflowRunCountsEntrySchema);\n\n/**\n * Base schema for workflow execution with input data and tracing\n */\nconst workflowExecutionBodySchema = z.object({\n resourceId: z.string().optional(),\n inputData: z.unknown().optional(),\n initialState: z.unknown().optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n tracingOptions: tracingOptionsSchema.optional(),\n perStep: z.boolean().optional(),\n});\n\n/**\n * Schema for legacy stream workflow body (no closeOnSuspend support)\n * Used by /stream-legacy endpoints\n */\nexport const streamLegacyWorkflowBodySchema = workflowExecutionBodySchema;\n\n/**\n * Schema for stream workflow body\n * Used by both /stream and /streamVNext endpoints\n */\nexport const streamWorkflowBodySchema = workflowExecutionBodySchema.extend({\n closeOnSuspend: z.boolean().optional(),\n});\n\n/**\n * Schema for resume workflow body\n * Used by resume-stream, resume-async and resume endpoints\n */\nexport const resumeBodySchema = z.object({\n step: z.union([z.string(), z.array(z.string())]).optional(), // Optional - workflow can auto-resume all suspended steps\n resumeData: z.unknown().optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n tracingOptions: tracingOptionsSchema.optional(),\n perStep: z.boolean().optional(),\n forEachIndex: z.number().int().nonnegative().optional(),\n});\n\n/**\n * Schema for restart workflow body\n * Used by restart-async and restart endpoints\n */\nexport const restartBodySchema = z.object({\n requestContext: z.record(z.string(), z.unknown()).optional(),\n tracingOptions: tracingOptionsSchema.optional(),\n});\n\n/**\n * Schema for time travel workflow body\n * Used by time-travel-stream, time-travel-async and time-travel endpoints\n */\nexport const timeTravelBodySchema = z.object({\n inputData: z.unknown().optional(),\n resumeData: z.unknown().optional(),\n initialState: z.unknown().optional(),\n step: z.union([z.string(), z.array(z.string())]),\n context: typedPermissive<TimeTravelContext<unknown, unknown, unknown, unknown>>(\n z.record(z.string(), z.unknown()),\n ).optional(),\n nestedStepsContext: typedPermissive<Record<string, TimeTravelContext<unknown, unknown, unknown, unknown>>>(\n z.record(z.string(), z.record(z.string(), z.unknown())),\n ).optional(),\n requestContext: z.record(z.string(), z.unknown()).optional(),\n tracingOptions: tracingOptionsSchema.optional(),\n perStep: z.boolean().optional(),\n});\n\n/**\n * Schema for start async workflow body\n */\nexport const startAsyncWorkflowBodySchema = workflowExecutionBodySchema;\n\n/**\n * Schema for send workflow run event body\n */\nexport const sendWorkflowRunEventBodySchema = z.object({\n event: z.string(),\n data: z.unknown(),\n});\n\n// Shared field validation for workflow result queries\nconst VALID_WORKFLOW_RESULT_FIELDS = new Set([\n 'result',\n 'error',\n 'payload',\n 'steps',\n 'activeStepsPath',\n 'serializedStepGraph',\n]);\n\nconst WORKFLOW_RESULT_FIELDS_ERROR =\n 'Invalid field name. Available fields: result, error, payload, steps, activeStepsPath, serializedStepGraph';\n\nconst createFieldsValidator = (description: string) =>\n z\n .string()\n .optional()\n .refine(\n value => {\n if (!value) return true;\n const requestedFields = value.split(',').map(f => f.trim());\n return requestedFields.every(field => VALID_WORKFLOW_RESULT_FIELDS.has(field));\n },\n { message: WORKFLOW_RESULT_FIELDS_ERROR },\n )\n .describe(description);\n\nconst withNestedWorkflowsField = z\n .enum(['true', 'false'])\n .optional()\n .describe('Whether to include nested workflow data in steps. Defaults to true. Set to false for better performance.');\n\n/**\n * Schema for workflow execution result\n * All fields are optional since field filtering allows requesting specific fields only\n */\nexport const workflowExecutionResultSchema = z.object({\n status: workflowRunStatusSchema.optional(),\n result: z.unknown().optional(),\n error: z.unknown().optional(),\n payload: z.unknown().optional(),\n initialState: z.unknown().optional(),\n steps: z.record(z.string(), z.unknown()).optional(),\n activeStepsPath: z.record(z.string(), z.array(z.number())).optional(),\n serializedStepGraph: z.array(serializedStepFlowEntrySchema).optional(),\n});\n\n/**\n * Schema for query parameters when getting a unified workflow run result\n */\nexport const workflowRunResultQuerySchema = z.object({\n fields: createFieldsValidator(\n 'Comma-separated list of fields to return. Available fields: result, error, payload, steps, activeStepsPath, serializedStepGraph. Metadata fields (runId, workflowName, resourceId, createdAt, updatedAt) and status are always included.',\n ),\n withNestedWorkflows: withNestedWorkflowsField,\n});\n\n/**\n * Schema for unified workflow run result response\n * Combines metadata and processed execution state\n */\nexport const workflowRunResultSchema = z.object({\n // Metadata - always present\n runId: z.string(),\n workflowName: z.string(),\n resourceId: z.string().optional(),\n createdAt: z.date(),\n updatedAt: z.date(),\n\n // Execution state\n status: workflowRunStatusSchema,\n initialState: z.record(z.string(), z.unknown()).optional(),\n result: z.unknown().optional(),\n error: z.unknown().optional(),\n payload: z.unknown().optional(),\n steps: z.record(z.string(), z.unknown()).optional(),\n\n // Optional detailed fields\n activeStepsPath: z.record(z.string(), z.array(z.number())).optional(),\n serializedStepGraph: z.array(serializedStepFlowEntrySchema).optional(),\n});\n\n/**\n * Response schema for workflow control operations\n */\nexport const workflowControlResponseSchema = messageResponseSchema;\n\n/**\n * Response schema for create workflow run operation\n * Returns only the runId after creating a run\n */\nexport const createWorkflowRunResponseSchema = z.object({\n runId: z.string(),\n});\n\n/**\n * Schema for create workflow run body\n * Used by /create-run endpoint\n */\nexport const createWorkflowRunBodySchema = z.object({\n resourceId: z.string().optional(),\n disableScorers: z.boolean().optional(),\n});\n\n/**\n * Schema for observe workflow query params\n * Extends runId with optional offset for efficient resume\n */\nexport const observeWorkflowQuerySchema = z.object({\n runId: z.string().describe('Unique identifier for the run'),\n offset: z.coerce\n .number()\n .optional()\n .describe('Resume from this event index (0-based). If omitted, replays all events.'),\n});\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/server",
3
- "version": "1.58.0-alpha.1",
3
+ "version": "1.58.0-alpha.13",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "files": [
@@ -118,13 +118,13 @@
118
118
  "zod-to-ts": "^2.1.0",
119
119
  "@internal/core": "0.1.2",
120
120
  "@internal/lint": "0.0.121",
121
- "@internal/storage-test-utils": "0.0.117",
122
- "@internal/types-builder": "0.0.96",
123
121
  "@internal/test-utils": "0.0.57",
122
+ "@internal/storage-test-utils": "0.0.117",
124
123
  "@internal/voice": "0.0.19",
125
- "@mastra/agent-builder": "1.1.11-alpha.0",
126
- "@mastra/schema-compat": "1.3.6-alpha.0",
127
- "@mastra/core": "1.58.0-alpha.1"
124
+ "@mastra/agent-builder": "1.1.11-alpha.6",
125
+ "@mastra/core": "1.58.0-alpha.13",
126
+ "@internal/types-builder": "0.0.96",
127
+ "@mastra/schema-compat": "1.3.6-alpha.3"
128
128
  },
129
129
  "homepage": "https://mastra.ai",
130
130
  "repository": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"a2a-CHi9AJ0n.js","names":["crypto","defaultLookup","httpsRequest","httpRequest"],"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/canonicalize/1.0.8/8d710dcf19a48d178b2fc853e16c59951fde29eb27b6037da6c3f4dbb968b03d/node_modules/canonicalize/lib/canonicalize.js","../src/server/a2a/agent-card-signing.ts","../src/server/a2a/protocol.ts","../src/server/a2a/push-notification-sender.ts","../src/server/a2a/push-notification-store.ts","../src/server/a2a/task-state.ts","../src/server/a2a/tasks.ts","../src/server/handlers/a2a.ts"],"sourcesContent":["/* jshint esversion: 6 */\n/* jslint node: true */\n'use strict';\n\nmodule.exports = function serialize (object) {\n if (object === null || typeof object !== 'object' || object.toJSON != null) {\n return JSON.stringify(object);\n }\n\n if (Array.isArray(object)) {\n return '[' + object.reduce((t, cv, ci) => {\n const comma = ci === 0 ? '' : ',';\n const value = cv === undefined || typeof cv === 'symbol' ? null : cv;\n return t + comma + serialize(value);\n }, '') + ']';\n }\n\n return '{' + Object.keys(object).sort().reduce((t, cv, ci) => {\n if (object[cv] === undefined ||\n typeof object[cv] === 'symbol') {\n return t;\n }\n const comma = t.length === 0 ? '' : ',';\n return t + comma + serialize(cv) + ':' + serialize(object[cv]);\n }, '') + '}';\n};\n","import * as crypto from 'node:crypto';\nimport type { AgentCard, AgentCardSignature } from '@mastra/core/a2a';\nimport type { A2AAgentCardSigningConfig } from '@mastra/core/server';\nimport canonicalize from 'canonicalize';\n\nconst SUPPORTED_JWS_ALGORITHMS = new Set<string>([\n 'ES256',\n 'ES384',\n 'ES512',\n 'RS256',\n 'RS384',\n 'RS512',\n 'PS256',\n 'PS384',\n 'PS512',\n]);\n\nfunction stripAgentCardSignatures(agentCard: AgentCard): AgentCard {\n const unsignedCard = structuredClone(agentCard) as AgentCard & { signatures?: AgentCardSignature[] };\n delete unsignedCard.signatures;\n return unsignedCard;\n}\n\nfunction importSigningKey(signing: A2AAgentCardSigningConfig) {\n const { privateKey } = signing;\n\n if (typeof privateKey === 'string') {\n return crypto.createPrivateKey(privateKey);\n }\n\n return crypto.createPrivateKey({\n key: privateKey,\n format: 'jwk',\n });\n}\n\nfunction getProtectedHeader(signing: A2AAgentCardSigningConfig): Record<string, unknown> {\n const { alg, ...rest } = signing.protectedHeader;\n\n if (!SUPPORTED_JWS_ALGORITHMS.has(alg)) {\n throw new Error(`Unsupported JWS algorithm for A2A Agent Card signing: ${alg}`);\n }\n\n return {\n ...rest,\n alg,\n };\n}\n\ntype SignatureOptions = Pick<crypto.SignKeyObjectInput, 'dsaEncoding' | 'padding' | 'saltLength'>;\n\nfunction getSignatureOptions(algorithm: string): SignatureOptions {\n if (algorithm.startsWith('ES')) {\n return { dsaEncoding: 'ieee-p1363' as const };\n }\n\n if (algorithm.startsWith('PS')) {\n return {\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST,\n };\n }\n\n return {};\n}\n\nfunction getDigestAlgorithm(algorithm: string): string {\n if (algorithm.endsWith('256')) return 'sha256';\n if (algorithm.endsWith('384')) return 'sha384';\n if (algorithm.endsWith('512')) return 'sha512';\n throw new Error(`Unsupported JWS algorithm for A2A Agent Card signing: ${algorithm}`);\n}\n\nexport async function signAgentCard({\n agentCard,\n signing,\n}: {\n agentCard: AgentCard;\n signing: A2AAgentCardSigningConfig;\n}): Promise<AgentCard> {\n const canonicalPayload = canonicalize(stripAgentCardSignatures(agentCard));\n\n if (!canonicalPayload) {\n throw new Error('Failed to canonicalize A2A Agent Card for signing');\n }\n\n const key = importSigningKey(signing);\n const protectedHeader = getProtectedHeader(signing);\n const encodedHeader = Buffer.from(JSON.stringify(protectedHeader), 'utf8').toString('base64url');\n const encodedPayload = Buffer.from(canonicalPayload, 'utf8').toString('base64url');\n const signingInput = `${encodedHeader}.${encodedPayload}`;\n const signatureBuffer = crypto.sign(\n getDigestAlgorithm(String(protectedHeader.alg)),\n Buffer.from(signingInput, 'utf8'),\n {\n key,\n ...getSignatureOptions(String(protectedHeader.alg)),\n },\n );\n const signatureValue = signatureBuffer.toString('base64url');\n\n if (!encodedHeader || !signatureValue) {\n throw new Error('Failed to create compact JWS for A2A Agent Card');\n }\n\n const signature: AgentCardSignature = {\n protected: encodedHeader,\n signature: signatureValue,\n header: signing.header,\n };\n\n return {\n ...agentCard,\n signatures: [...(agentCard.signatures ?? []), signature],\n };\n}\n","import { MastraA2AError } from '@mastra/core/a2a';\n\nimport type { JSONRPCError, JSONRPCResponse, Message, Part } from '@mastra/core/a2a';\nimport type { CoreMessage } from '@mastra/core/llm';\nimport type { IMastraLogger } from '@mastra/core/logger';\n\nexport function normalizeError(\n error: any,\n reqId: number | string | null,\n taskId?: string,\n logger?: IMastraLogger,\n): JSONRPCResponse<null, unknown> {\n let a2aError: MastraA2AError;\n if (error instanceof MastraA2AError) {\n a2aError = error;\n } else if (error instanceof Error) {\n // Generic JS error\n a2aError = MastraA2AError.internalError(error.message, { stack: error.stack });\n } else {\n // Unknown error type\n a2aError = MastraA2AError.internalError('An unknown error occurred.', error);\n }\n\n // Ensure Task ID context is present if possible\n if (taskId && !a2aError.taskId) {\n a2aError.taskId = taskId;\n }\n\n logger?.error(`Error processing request (Task: ${a2aError.taskId ?? 'N/A'}, ReqID: ${reqId ?? 'N/A'}):`, a2aError);\n\n return createErrorResponse(reqId, a2aError.toJSONRPCError());\n}\n\nexport function createErrorResponse(\n id: number | string | null,\n error: JSONRPCError<unknown>,\n): JSONRPCResponse<null, unknown> {\n // For errors, ID should be the same as request ID, or null if that couldn't be determined\n return {\n jsonrpc: '2.0',\n id: id, // Can be null if request ID was invalid/missing\n error: error,\n };\n}\n\nexport function createSuccessResponse<T>(id: number | string | null, result: T): JSONRPCResponse<T> {\n if (id === null) {\n // This shouldn't happen for methods that expect a response, but safeguard\n throw MastraA2AError.internalError('Cannot create success response for null ID.');\n }\n\n return {\n jsonrpc: '2.0',\n id: id,\n result: result,\n };\n}\n\nexport function convertToCoreMessage(message: Message): CoreMessage {\n return {\n role: message.role === 'user' ? 'user' : 'assistant',\n content: message.parts.map(msg => convertToCoreMessagePart(msg)),\n };\n}\n\nfunction convertToCoreMessagePart(part: Part) {\n switch (part.kind) {\n case 'text':\n return {\n type: 'text',\n text: part.text,\n } as const;\n case 'file':\n return {\n type: 'file',\n data: 'uri' in part.file ? new URL(part.file.uri) : part.file.bytes,\n mimeType: part.file.mimeType!,\n } as const;\n case 'data':\n throw new Error('Data parts are not supported in core messages');\n }\n}\n","import { lookup as defaultLookup } from 'node:dns/promises';\nimport { request as httpRequest } from 'node:http';\nimport { request as httpsRequest } from 'node:https';\nimport { isIP } from 'node:net';\nimport type { Task } from '@mastra/core/a2a';\nimport type { IMastraLogger } from '@mastra/core/logger';\nimport type { InMemoryPushNotificationStore } from './push-notification-store';\n\nexport const DEFAULT_PUSH_NOTIFICATION_TOKEN_HEADER = 'X-A2A-Notification-Token';\n\nfunction isDisallowedHostname(hostname: string) {\n const normalized = hostname.toLowerCase();\n\n return (\n normalized === 'localhost' ||\n normalized.endsWith('.localhost') ||\n normalized.endsWith('.local') ||\n normalized.endsWith('.internal') ||\n !normalized.includes('.')\n );\n}\n\nfunction isDisallowedIpv4(address: string) {\n const [first = -1, second = -1] = address.split('.').map(Number);\n\n return (\n first === 10 ||\n first === 127 ||\n (first === 169 && second === 254) ||\n (first === 172 && second >= 16 && second <= 31) ||\n (first === 192 && second === 168)\n );\n}\n\nfunction isDisallowedIpv6(address: string) {\n const normalized = address.toLowerCase();\n\n return (\n normalized === '::1' ||\n normalized.startsWith('fe8') ||\n normalized.startsWith('fe9') ||\n normalized.startsWith('fea') ||\n normalized.startsWith('feb') ||\n normalized.startsWith('fc') ||\n normalized.startsWith('fd')\n );\n}\n\nfunction isDisallowedIpAddress(address: string) {\n const version = isIP(address);\n if (version === 4) {\n return isDisallowedIpv4(address);\n }\n\n if (version === 6) {\n return isDisallowedIpv6(address);\n }\n\n return false;\n}\n\nexport class DefaultPushNotificationSender {\n constructor(\n private readonly pushNotificationStore: InMemoryPushNotificationStore,\n private readonly options: {\n timeout?: number;\n tokenHeaderName?: string;\n fetch?: typeof fetch;\n lookup?: typeof defaultLookup;\n allowedHosts?: string[];\n } = {},\n ) {}\n\n getStore() {\n return this.pushNotificationStore;\n }\n\n private async resolveValidatedDestination(rawUrl: string) {\n const url = new URL(rawUrl);\n\n if (url.protocol !== 'https:' && url.protocol !== 'http:') {\n throw new Error(`Push notification URL must use http or https: ${url.protocol}`);\n }\n\n const hostname = url.hostname.toLowerCase();\n if (this.options.allowedHosts && !this.options.allowedHosts.includes(hostname)) {\n throw new Error(`Push notification host is not allowed: ${hostname}`);\n }\n\n if (isDisallowedHostname(hostname)) {\n throw new Error(`Push notification URL must not target local or internal hosts: ${hostname}`);\n }\n\n if (isDisallowedIpAddress(hostname)) {\n throw new Error(`Push notification URL must not target local or private IPs: ${hostname}`);\n }\n\n const resolvedAddresses =\n isIP(hostname) === 0\n ? await (this.options.lookup ?? defaultLookup)(hostname, { all: true, verbatim: true })\n : [{ address: hostname, family: isIP(hostname) }];\n\n if (resolvedAddresses.some(result => isDisallowedIpAddress(result.address))) {\n throw new Error(`Push notification URL resolved to a local or private IP: ${hostname}`);\n }\n\n const requestUrl = new URL(url.toString());\n requestUrl.hostname = resolvedAddresses[0]!.address;\n\n return {\n originalUrl: url,\n requestUrl,\n hostHeader: url.host,\n servername: isIP(hostname) === 0 ? hostname : undefined,\n };\n }\n\n private async postTaskSnapshot({\n requestUrl,\n hostHeader,\n servername,\n headers,\n body,\n timeout,\n }: {\n requestUrl: URL;\n hostHeader: string;\n servername?: string;\n headers: Headers;\n body: string;\n timeout: number;\n }) {\n headers.set('host', hostHeader);\n const signal = typeof AbortSignal.timeout === 'function' ? AbortSignal.timeout(timeout) : undefined;\n\n if (this.options.fetch) {\n return this.options.fetch(requestUrl.toString(), {\n method: 'POST',\n headers,\n body,\n signal,\n });\n }\n\n const transport = requestUrl.protocol === 'https:' ? httpsRequest : httpRequest;\n\n return await new Promise<{ ok: boolean; status: number; statusText: string }>((resolve, reject) => {\n const request = transport(\n {\n protocol: requestUrl.protocol,\n hostname: requestUrl.hostname,\n port: requestUrl.port || undefined,\n path: `${requestUrl.pathname}${requestUrl.search}`,\n method: 'POST',\n headers: Object.fromEntries(headers.entries()),\n servername,\n },\n response => {\n response.resume();\n response.on('end', () => {\n resolve({\n ok: !!response.statusCode && response.statusCode >= 200 && response.statusCode < 300,\n status: response.statusCode ?? 0,\n statusText: response.statusMessage ?? '',\n });\n });\n },\n );\n\n request.on('error', reject);\n\n if (signal) {\n signal.addEventListener(\n 'abort',\n () => {\n request.destroy(signal.reason instanceof Error ? signal.reason : new Error('Push notification timed out'));\n },\n { once: true },\n );\n }\n\n request.end(body);\n });\n }\n\n async sendNotifications({\n agentId,\n task,\n logger,\n }: {\n agentId: string;\n task: Task;\n logger?: IMastraLogger;\n }): Promise<void> {\n const configs = this.pushNotificationStore.list({\n agentId,\n params: { id: task.id },\n });\n\n if (configs.length === 0) {\n return;\n }\n\n await Promise.allSettled(\n configs.map(async config => {\n const headers = new Headers({\n 'content-type': 'application/json',\n });\n\n if (config.pushNotificationConfig.token) {\n headers.set(\n this.options.tokenHeaderName ?? DEFAULT_PUSH_NOTIFICATION_TOKEN_HEADER,\n config.pushNotificationConfig.token,\n );\n }\n\n const auth = config.pushNotificationConfig.authentication;\n if (auth?.credentials) {\n if (auth.schemes.includes('Bearer')) {\n headers.set('authorization', `Bearer ${auth.credentials}`);\n } else if (auth.schemes.includes('Basic')) {\n headers.set('authorization', `Basic ${auth.credentials}`);\n }\n }\n\n const { requestUrl, hostHeader, servername } = await this.resolveValidatedDestination(\n config.pushNotificationConfig.url,\n );\n const response = await this.postTaskSnapshot({\n requestUrl,\n hostHeader,\n servername,\n headers,\n body: JSON.stringify(task),\n timeout: this.options.timeout ?? 5_000,\n });\n\n if (!response.ok) {\n throw new Error(\n `Push notification failed with status ${response.status} ${response.statusText ?? ''}`.trim(),\n );\n }\n }),\n ).then(results => {\n for (const result of results) {\n if (result.status === 'rejected') {\n logger?.error('Failed to deliver A2A push notification', result.reason);\n }\n }\n });\n }\n}\n","import type {\n DeleteTaskPushNotificationConfigParams,\n GetTaskPushNotificationConfigParams,\n ListTaskPushNotificationConfigParams,\n TaskPushNotificationConfig,\n} from '@mastra/core/a2a';\n\nfunction normalizeConfigId(taskId: string, configId?: string) {\n return configId || taskId;\n}\n\nexport class InMemoryPushNotificationStore {\n private store = new Map<string, Map<string, TaskPushNotificationConfig>>();\n\n private getKey(agentId: string, taskId: string) {\n return JSON.stringify([agentId, taskId]);\n }\n\n set({ agentId, config }: { agentId: string; config: TaskPushNotificationConfig }): TaskPushNotificationConfig {\n const key = this.getKey(agentId, config.taskId);\n const configs = this.store.get(key) ?? new Map<string, TaskPushNotificationConfig>();\n const normalizedConfig: TaskPushNotificationConfig = {\n taskId: config.taskId,\n pushNotificationConfig: {\n ...config.pushNotificationConfig,\n id: normalizeConfigId(config.taskId, config.pushNotificationConfig.id),\n },\n };\n\n configs.set(normalizedConfig.pushNotificationConfig.id!, structuredClone(normalizedConfig));\n this.store.set(key, configs);\n\n return structuredClone(normalizedConfig);\n }\n\n get({\n agentId,\n params,\n }: {\n agentId: string;\n params: GetTaskPushNotificationConfigParams;\n }): TaskPushNotificationConfig | null {\n const key = this.getKey(agentId, params.id);\n const configId = normalizeConfigId(params.id, params.pushNotificationConfigId);\n const config = this.store.get(key)?.get(configId);\n return config ? structuredClone(config) : null;\n }\n\n list({\n agentId,\n params,\n }: {\n agentId: string;\n params: ListTaskPushNotificationConfigParams;\n }): TaskPushNotificationConfig[] {\n const key = this.getKey(agentId, params.id);\n return Array.from(this.store.get(key)?.values() ?? []).map(config => structuredClone(config));\n }\n\n delete({ agentId, params }: { agentId: string; params: DeleteTaskPushNotificationConfigParams }): boolean {\n const key = this.getKey(agentId, params.id);\n const configs = this.store.get(key);\n\n if (!configs) {\n return false;\n }\n\n const deleted = configs.delete(params.pushNotificationConfigId);\n if (configs.size === 0) {\n this.store.delete(key);\n }\n\n return deleted;\n }\n}\n","import type { TaskState } from '@mastra/core/a2a';\n\nexport function isTerminalTaskState(state: TaskState | undefined): boolean {\n return state === 'completed' || state === 'failed' || state === 'canceled' || state === 'rejected';\n}\n\nexport function isInterruptedTaskState(state: TaskState | undefined): boolean {\n return state === 'input-required' || state === 'auth-required';\n}\n","import type { Message, Task, TaskStatus, TaskContext, TaskArtifactUpdateEvent, Artifact } from '@mastra/core/a2a';\nimport { MastraA2AError } from '@mastra/core/a2a';\nimport type { IMastraLogger } from '@mastra/core/logger';\nimport { TaskStoreVersionConflictError, type InMemoryTaskStore } from './store';\nimport { isTerminalTaskState } from './task-state';\n\nfunction isTaskStatusUpdate(update: TaskStatus | TaskArtifactUpdateEvent): update is Omit<TaskStatus, 'timestamp'> {\n return 'state' in update && !('parts' in update);\n}\n\nfunction isArtifactUpdate(update: TaskStatus | TaskArtifactUpdateEvent): update is TaskArtifactUpdateEvent {\n return 'kind' in update && update.kind === 'artifact-update';\n}\n\nexport function applyUpdateToTask(\n current: Task,\n update: Omit<TaskStatus, 'timestamp'> | TaskArtifactUpdateEvent,\n): Task {\n let newTask = structuredClone(current);\n\n if (isTaskStatusUpdate(update)) {\n // Merge status update\n newTask.status = {\n ...newTask.status, // Keep existing properties if not overwritten\n ...update, // Apply updates\n timestamp: new Date().toISOString(),\n };\n } else if (isArtifactUpdate(update)) {\n // Handle artifact update\n if (!newTask.artifacts) {\n newTask.artifacts = [];\n } else {\n // Ensure we're working with a copy of the artifacts array\n newTask.artifacts = [...newTask.artifacts];\n }\n\n const artifact = update.artifact;\n const existingIndex = newTask.artifacts.findIndex(a => a.name === artifact.name);\n const existingArtifact = newTask.artifacts[existingIndex];\n\n if (existingArtifact) {\n if (update.append) {\n // Create a deep copy for modification to avoid mutating original\n const appendedArtifact = JSON.parse(JSON.stringify(existingArtifact)) as Artifact;\n appendedArtifact.parts.push(...artifact.parts);\n if (artifact.metadata) {\n appendedArtifact.metadata = {\n ...(appendedArtifact.metadata || {}),\n ...artifact.metadata,\n };\n }\n if (artifact.description) appendedArtifact.description = artifact.description;\n newTask.artifacts[existingIndex] = appendedArtifact; // Replace with appended version\n } else {\n // Overwrite artifact at index (with a copy of the update)\n newTask.artifacts[existingIndex] = { ...artifact };\n }\n } else {\n newTask.artifacts.push({ ...artifact });\n }\n }\n\n return newTask;\n}\n\nexport async function loadOrCreateTask({\n agentId,\n taskId,\n taskStore,\n message,\n contextId,\n metadata,\n logger,\n}: {\n agentId: string;\n taskId: string;\n taskStore: InMemoryTaskStore;\n message: Message;\n contextId?: string;\n metadata?: Record<string, unknown>;\n logger?: IMastraLogger;\n}): Promise<Task> {\n for (let attempt = 0; attempt < 2; attempt++) {\n const snapshot = taskStore.loadWithVersion({ agentId, taskId });\n const data = snapshot?.task;\n\n if (!data) {\n const initialTask: Task = {\n id: taskId,\n contextId: contextId || crypto.randomUUID(),\n status: {\n state: 'submitted',\n timestamp: new Date().toISOString(),\n message: undefined,\n },\n artifacts: [],\n history: [message],\n metadata: metadata,\n kind: 'task',\n };\n\n logger?.info(`[Task ${taskId}] Created new task.`);\n try {\n await taskStore.save({ agentId, data: initialTask, expectedVersion: 0 });\n return initialTask;\n } catch (error) {\n if (error instanceof TaskStoreVersionConflictError) {\n continue;\n }\n throw error;\n }\n }\n\n logger?.info(`[Task ${taskId}] Loaded existing task.`);\n\n const { status } = data;\n if (isTerminalTaskState(status.state)) {\n throw MastraA2AError.invalidRequest(\n `Task ${taskId} is in terminal state ${status.state} and cannot be restarted.`,\n );\n }\n\n let updatedData: Task = {\n ...data,\n history: [...(data.history || []), message],\n };\n\n if (status.state === 'input-required' || status.state === 'auth-required') {\n logger?.info(`[Task ${taskId}] Changing state from '${status.state}' to 'working'.`);\n updatedData = applyUpdateToTask(updatedData, { state: 'working' });\n } else if (status.state === 'working') {\n logger?.warn(`[Task ${taskId}] Received message while already 'working'. Proceeding.`);\n }\n\n try {\n await taskStore.save({ agentId, data: updatedData, expectedVersion: snapshot.version });\n return updatedData;\n } catch (error) {\n if (error instanceof TaskStoreVersionConflictError) {\n continue;\n }\n throw error;\n }\n }\n\n throw MastraA2AError.invalidRequest(`Task ${taskId} was updated concurrently. Retry the request.`);\n}\n\nexport function createTaskContext({\n task,\n userMessage,\n history,\n activeCancellations,\n}: {\n task: Task;\n userMessage: Message;\n history: Message[];\n activeCancellations: Set<string>;\n}): TaskContext {\n return {\n task: structuredClone(task),\n userMessage,\n history: structuredClone(history),\n isCancelled: () => activeCancellations.has(task.id),\n };\n}\n","import { isDeepStrictEqual } from 'node:util';\nimport { MastraA2AError } from '@mastra/core/a2a';\nimport type {\n MessageSendParams,\n TaskQueryParams,\n TaskIdParams,\n AgentCard,\n TaskStatus,\n TaskState,\n Task,\n TaskPushNotificationConfig,\n GetTaskPushNotificationConfigParams,\n ListTaskPushNotificationConfigParams,\n DeleteTaskPushNotificationConfigParams,\n Artifact,\n} from '@mastra/core/a2a';\nimport type { Agent } from '@mastra/core/agent';\nimport type { IMastraLogger } from '@mastra/core/logger';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport { z } from 'zod/v4';\nimport { signAgentCard } from '../a2a/agent-card-signing';\nimport { convertToCoreMessage, normalizeError, createSuccessResponse } from '../a2a/protocol';\nimport { DefaultPushNotificationSender } from '../a2a/push-notification-sender';\nimport { InMemoryPushNotificationStore } from '../a2a/push-notification-store';\nimport { TaskStoreVersionConflictError, type InMemoryTaskStore } from '../a2a/store';\nimport { isInterruptedTaskState, isTerminalTaskState } from '../a2a/task-state';\nimport { applyUpdateToTask, loadOrCreateTask } from '../a2a/tasks';\nimport {\n a2aAgentIdPathParams,\n agentExecutionBodySchema,\n agentCardResponseSchema,\n agentExecutionResponseSchema,\n} from '../schemas/a2a';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport type { Context } from '../types';\nimport { convertInstructionsToString } from '../utils';\nimport { getAgentFromSystem } from './agents';\nimport { getPublicOrigin } from './auth';\n\n// Mirrors @a2a-js/sdk's Part discriminated union (text | file | data) and the\n// part shape already declared in ../schemas/a2a.ts. Before this widening, the\n// schema hard-coded `kind: z.enum(['text'])` which rejected every non-text\n// part before the converter could see it — even though convertToCoreMessagePart\n// at ../a2a/protocol.ts already handles file and data parts. With this change,\n// FilePart (FileWithBytes | FileWithUri) and DataPart parse successfully and\n// reach the converter (data parts then throw a clear \"not supported in core\n// messages\" message; files convert natively to AI-SDK CoreMessage file parts).\nconst messagePartSchema = z.discriminatedUnion('kind', [\n z.object({\n kind: z.literal('text'),\n text: z.string(),\n metadata: z.record(z.string(), z.any()).optional(),\n }),\n z.object({\n kind: z.literal('file'),\n file: z.union([\n z.object({\n bytes: z.string(),\n mimeType: z.string().optional(),\n name: z.string().optional(),\n }),\n z.object({\n uri: z.string(),\n mimeType: z.string().optional(),\n name: z.string().optional(),\n }),\n ]),\n metadata: z.record(z.string(), z.any()).optional(),\n }),\n z.object({\n kind: z.literal('data'),\n data: z.record(z.string(), z.any()),\n metadata: z.record(z.string(), z.any()).optional(),\n }),\n]);\n\nconst messageSendParamsSchema = z.object({\n message: z.object({\n role: z.enum(['user', 'agent']),\n parts: z.array(messagePartSchema),\n kind: z.literal('message'),\n messageId: z.string(),\n contextId: z.string().optional(),\n taskId: z.string().optional(),\n referenceTaskIds: z.array(z.string()).optional(),\n extensions: z.array(z.string()).optional(),\n metadata: z.record(z.string(), z.any()).optional(),\n }),\n configuration: z\n .object({\n acceptedOutputModes: z.array(z.string()).optional(),\n blocking: z.boolean().optional(),\n historyLength: z.number().optional(),\n pushNotificationConfig: z\n .object({\n url: z.string(),\n id: z.string().optional(),\n token: z.string().optional(),\n authentication: z\n .object({\n schemes: z.array(z.string()),\n credentials: z.string().optional(),\n })\n .optional(),\n })\n .optional(),\n })\n .optional(),\n});\n\nconst defaultPushNotificationStore = new InMemoryPushNotificationStore();\nconst defaultPushNotificationSender = new DefaultPushNotificationSender(defaultPushNotificationStore);\n\nfunction createAgentCardDefaults({\n pushNotifications = false,\n}: {\n pushNotifications?: boolean;\n} = {}): Pick<\n AgentCard,\n | 'protocolVersion'\n | 'additionalInterfaces'\n | 'supportsAuthenticatedExtendedCard'\n | 'security'\n | 'securitySchemes'\n | 'capabilities'\n | 'defaultInputModes'\n | 'defaultOutputModes'\n> {\n return {\n protocolVersion: '0.3.0',\n additionalInterfaces: [],\n supportsAuthenticatedExtendedCard: false,\n security: [],\n securitySchemes: {},\n capabilities: {\n streaming: true,\n pushNotifications,\n stateTransitionHistory: false,\n extensions: [],\n },\n defaultInputModes: ['text/plain'],\n defaultOutputModes: ['text/plain'],\n };\n}\n\nexport async function getAgentCardByIdHandler({\n mastra,\n agentId,\n executionUrl = `/a2a/${agentId}`,\n provider = {\n organization: 'Mastra',\n url: 'https://mastra.ai',\n },\n version = '1.0',\n pushNotifications = false,\n requestContext,\n}: Context & {\n requestContext: RequestContext;\n agentId: keyof ReturnType<typeof mastra.listAgents>;\n executionUrl?: string;\n version?: string;\n provider?: {\n organization: string;\n url: string;\n };\n pushNotifications?: boolean;\n}): Promise<AgentCard> {\n const agent = await getAgentFromSystem({ mastra, agentId: agentId as string });\n\n const [instructions, tools]: [\n Awaited<ReturnType<typeof agent.getInstructions>>,\n Awaited<ReturnType<typeof agent.listTools>>,\n ] = await Promise.all([agent.getInstructions({ requestContext }), agent.listTools({ requestContext })]);\n\n // Extract agent information to create the AgentCard\n const agentCard: AgentCard = {\n name: agent.id || (agentId as string),\n description: convertInstructionsToString(instructions),\n url: executionUrl,\n provider,\n version,\n ...createAgentCardDefaults({ pushNotifications }),\n // Convert agent tools to skills format for A2A protocol\n skills: Object.entries(tools).map(([toolId, tool]) => ({\n id: toolId,\n name: toolId,\n description: ('description' in tool && tool.description) || `Tool: ${toolId}`,\n // Optional fields\n tags: ['tool'],\n })),\n };\n\n const signing = mastra.getServer?.()?.a2a?.agentCardSigning;\n if (!signing) {\n return agentCard;\n }\n\n return signAgentCard({\n agentCard,\n signing,\n });\n}\n\nfunction getA2AExecutionUrl({\n agentId,\n request,\n routePrefix,\n}: {\n agentId: string;\n request?: Request;\n routePrefix?: string;\n}) {\n const executionPath = `${routePrefix ?? ''}/a2a/${agentId}`;\n\n if (!request) {\n return executionPath;\n }\n\n return `${getPublicOrigin(request)}${executionPath}`;\n}\n\nfunction validateMessageSendParams(params: MessageSendParams) {\n try {\n messageSendParamsSchema.parse(params);\n } catch (error) {\n if (error instanceof z.ZodError) {\n throw MastraA2AError.invalidParams((error as z.ZodError).issues[0]!.message);\n }\n\n throw error;\n }\n}\n\nfunction createArtifactUpdate({\n taskId,\n contextId,\n text,\n data,\n}: {\n taskId: string;\n contextId: string;\n text?: string;\n data?: Record<string, unknown>;\n}) {\n const parts = [\n ...(text ? [{ kind: 'text' as const, text }] : []),\n ...(data ? [{ kind: 'data' as const, data }] : []),\n ];\n\n if (parts.length === 0) {\n return undefined;\n }\n\n return {\n kind: 'artifact-update' as const,\n taskId,\n contextId,\n lastChunk: true,\n artifact: {\n artifactId: `${taskId}:response`,\n name: data ? 'response.json' : 'response.txt',\n parts,\n },\n };\n}\n\nfunction createTextChunkArtifactUpdate({\n taskId,\n contextId,\n text,\n append,\n lastChunk,\n}: {\n taskId: string;\n contextId: string;\n text: string;\n append?: boolean;\n lastChunk?: boolean;\n}) {\n return {\n kind: 'artifact-update' as const,\n taskId,\n contextId,\n ...(append ? { append: true } : {}),\n ...(lastChunk !== undefined ? { lastChunk } : {}),\n artifact: {\n artifactId: `${taskId}:response:text`,\n name: 'response.txt',\n parts: [{ kind: 'text' as const, text }],\n },\n };\n}\n\nfunction createDataArtifactUpdate({\n taskId,\n contextId,\n data,\n lastChunk,\n}: {\n taskId: string;\n contextId: string;\n data: Record<string, unknown>;\n lastChunk?: boolean;\n}) {\n return {\n kind: 'artifact-update' as const,\n taskId,\n contextId,\n ...(lastChunk !== undefined ? { lastChunk } : {}),\n artifact: {\n artifactId: `${taskId}:response:data`,\n name: 'response.json',\n parts: [{ kind: 'data' as const, data }],\n },\n };\n}\n\n/**\n * Task metadata keys that store the resume bookkeeping for a suspended agent\n * run so a follow-up message for an `input-required` task can resume it.\n */\nconst SUSPENDED_RUN_ID_METADATA_KEY = 'suspendedRunId';\nconst SUSPENDED_TOOL_CALL_ID_METADATA_KEY = 'suspendedToolCallId';\nconst SUSPENDED_REQUIRES_APPROVAL_METADATA_KEY = 'suspendedRequiresApproval';\n\nfunction toJsonSafe(value: unknown): unknown {\n if (value === undefined) {\n return undefined;\n }\n\n try {\n return JSON.parse(JSON.stringify(value));\n } catch {\n return undefined;\n }\n}\n\n/**\n * Builds the `input-required` status update for a suspended agent run.\n * The status message carries a human-readable prompt plus a data part with\n * the structured suspend payload and resume schema so A2A clients can\n * render/collect the required input (HITL per the A2A spec).\n */\nfunction createInputRequiredStatusUpdate({\n taskId,\n contextId,\n suspendPayload,\n resumeSchema,\n logger,\n}: {\n taskId: string;\n contextId: string;\n suspendPayload?: unknown;\n resumeSchema?: unknown;\n logger?: IMastraLogger;\n}): Omit<TaskStatus, 'timestamp'> {\n // Suspension payloads are `{ toolCallId, toolName, suspendPayload, ... }`\n // where the nested `suspendPayload` is the tool's own suspend() data. Use a\n // `message` string from either level as the human-readable prompt.\n const extractMessage = (value: unknown): string | undefined => {\n if (!value || typeof value !== 'object') {\n return undefined;\n }\n\n const messageValue = (value as { message?: unknown }).message;\n return typeof messageValue === 'string' && messageValue.length > 0 ? messageValue : undefined;\n };\n const promptText =\n extractMessage(suspendPayload) ??\n extractMessage((suspendPayload as { suspendPayload?: unknown } | undefined)?.suspendPayload) ??\n 'Additional input is required to continue this task.';\n\n const safeSuspendPayload = toJsonSafe(suspendPayload);\n const safeResumeSchema = toJsonSafe(resumeSchema);\n if (suspendPayload !== undefined && safeSuspendPayload === undefined) {\n logger?.warn(`[Task ${taskId}] Suspend payload is not JSON-serializable and was omitted from the status message.`);\n }\n if (resumeSchema !== undefined && safeResumeSchema === undefined) {\n logger?.warn(`[Task ${taskId}] Resume schema is not JSON-serializable and was omitted from the status message.`);\n }\n const data: Record<string, unknown> = {\n ...(safeSuspendPayload !== undefined ? { suspendPayload: safeSuspendPayload } : {}),\n ...(safeResumeSchema !== undefined ? { resumeSchema: safeResumeSchema } : {}),\n };\n\n return {\n state: 'input-required',\n message: {\n messageId: crypto.randomUUID(),\n kind: 'message',\n role: 'agent',\n taskId,\n contextId,\n parts: [\n { kind: 'text', text: promptText },\n ...(Object.keys(data).length > 0 ? [{ kind: 'data' as const, data }] : []),\n ],\n },\n };\n}\n\n/**\n * Extracts resume data from a follow-up message for an `input-required` task.\n * Prefers a structured data part; falls back to parsing the text as JSON\n * (the Mastra A2A client serializes structured resume data as JSON text),\n * and finally to the raw text.\n */\nfunction extractResumeData(message: MessageSendParams['message']): unknown {\n const dataPart = message.parts.find(part => part.kind === 'data');\n if (dataPart && 'data' in dataPart) {\n return dataPart.data;\n }\n\n const text = message.parts\n .filter((part): part is Extract<(typeof message.parts)[number], { kind: 'text' }> => part.kind === 'text')\n .map(part => part.text)\n .join('\\n')\n .trim();\n\n if (!text) {\n return undefined;\n }\n\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nfunction getSuspendedRunId(task: Task | undefined | null): string | undefined {\n const value = task?.metadata?.[SUSPENDED_RUN_ID_METADATA_KEY];\n return typeof value === 'string' ? value : undefined;\n}\n\n/**\n * Approval suspensions (`requireApproval`) carry `{ toolCallId, toolName, args, resumeSchema }`\n * without a nested `suspendPayload`, while `suspend()` suspensions include one\n * (see `ToolCallApprovalPayload` / `ToolCallSuspendedPayload` in @mastra/core).\n */\nfunction isApprovalSuspension(suspendPayload: unknown): boolean {\n if (!suspendPayload || typeof suspendPayload !== 'object') {\n return false;\n }\n\n const payload = suspendPayload as { toolCallId?: unknown; suspendPayload?: unknown };\n return typeof payload.toolCallId === 'string' && payload.suspendPayload === undefined;\n}\n\nconst APPROVAL_AFFIRMATIVE_PATTERN = /^(y|yes|approve|approved|ok|okay|confirm|confirmed|true)[.!]?$/i;\nconst APPROVAL_NEGATIVE_PATTERN = /^(n|no|decline|declined|deny|denied|reject|rejected|false)[.!]?$/i;\n\n/**\n * Approval resumes are driven by `resumeData.approved` in the agentic loop, so\n * plain-text replies from A2A clients (\"yes\", \"no\") are coerced to the\n * `{ approved }` shape. Unrecognized values pass through unchanged.\n */\nfunction normalizeResumeData(resumeData: unknown, requiresApproval: boolean): unknown {\n if (!requiresApproval || typeof resumeData !== 'string') {\n return resumeData;\n }\n\n const text = resumeData.trim();\n if (APPROVAL_AFFIRMATIVE_PATTERN.test(text)) {\n return { approved: true };\n }\n if (APPROVAL_NEGATIVE_PATTERN.test(text)) {\n return { approved: false };\n }\n\n return resumeData;\n}\n\n/**\n * Marks a task `input-required` for a suspended agent run and records the\n * resume bookkeeping (runId, toolCallId, approval flag) in task metadata.\n * Shared by the send and stream paths so both report identical suspensions.\n */\nfunction applySuspensionToTask({\n task,\n suspendPayload,\n resumeSchema,\n runId,\n logger,\n}: {\n task: Task;\n suspendPayload?: unknown;\n resumeSchema?: unknown;\n runId: string;\n logger?: IMastraLogger;\n}): Task {\n const nextTask = applyUpdateToTask(\n task,\n createInputRequiredStatusUpdate({\n taskId: task.id,\n contextId: task.contextId,\n suspendPayload,\n resumeSchema,\n logger,\n }),\n );\n\n const payload = suspendPayload as { toolCallId?: unknown } | undefined;\n nextTask.metadata = {\n ...clearSuspensionMetadata(nextTask.metadata),\n [SUSPENDED_RUN_ID_METADATA_KEY]: runId,\n ...(typeof payload?.toolCallId === 'string' ? { [SUSPENDED_TOOL_CALL_ID_METADATA_KEY]: payload.toolCallId } : {}),\n ...(isApprovalSuspension(suspendPayload) ? { [SUSPENDED_REQUIRES_APPROVAL_METADATA_KEY]: true } : {}),\n };\n\n return nextTask;\n}\n\n/** Removes the suspension bookkeeping from task metadata once the run completes. */\nfunction clearSuspensionMetadata(metadata: Record<string, unknown> | undefined): Record<string, unknown> {\n const {\n [SUSPENDED_RUN_ID_METADATA_KEY]: _runId,\n [SUSPENDED_TOOL_CALL_ID_METADATA_KEY]: _toolCallId,\n [SUSPENDED_REQUIRES_APPROVAL_METADATA_KEY]: _requiresApproval,\n ...rest\n } = metadata ?? {};\n return rest;\n}\n\ninterface ResumeClaim {\n runId: string;\n toolCallId?: string;\n requiresApproval: boolean;\n}\n\n/**\n * Claims an interrupted task for resume by transitioning it to `working`.\n * `loadWithVersion` and the body of `InMemoryTaskStore.save` both execute\n * synchronously, so two concurrent follow-up messages cannot both claim (and\n * double-resume) the same suspended run.\n */\nasync function claimInterruptedTaskResume({\n taskStore,\n agentId,\n taskId,\n}: {\n taskStore: InMemoryTaskStore;\n agentId: string;\n taskId: string;\n}): Promise<ResumeClaim | undefined> {\n const snapshot = taskStore.loadWithVersion({ agentId, taskId });\n if (snapshot?.task.status.state !== 'input-required' && snapshot?.task.status.state !== 'auth-required') {\n return undefined;\n }\n\n const task = snapshot.task;\n const toolCallId = task.metadata?.[SUSPENDED_TOOL_CALL_ID_METADATA_KEY];\n const claim: ResumeClaim = {\n runId: getSuspendedRunId(task) ?? taskId,\n ...(typeof toolCallId === 'string' ? { toolCallId } : {}),\n requiresApproval: task.metadata?.[SUSPENDED_REQUIRES_APPROVAL_METADATA_KEY] === true,\n };\n\n try {\n await taskStore.save({\n agentId,\n data: applyUpdateToTask(task, { state: 'working' }),\n expectedVersion: snapshot.version,\n });\n } catch (error) {\n if (error instanceof TaskStoreVersionConflictError) {\n return undefined;\n }\n throw error;\n }\n\n return claim;\n}\n\nasync function waitForClaimedResume({\n taskStore,\n agentId,\n taskId,\n}: {\n taskStore: InMemoryTaskStore;\n agentId: string;\n taskId: string;\n}): Promise<Task> {\n let snapshot = taskStore.loadWithVersion({ agentId, taskId });\n if (!snapshot) {\n throw MastraA2AError.taskNotFound(taskId);\n }\n\n while (snapshot.task.status.state === 'working') {\n snapshot = await taskStore.waitForNextUpdate({\n agentId,\n taskId,\n afterVersion: snapshot.version,\n });\n }\n\n return snapshot.task;\n}\n\nfunction resolvePushNotificationPair({\n pushNotificationStore,\n pushNotificationSender,\n}: {\n pushNotificationStore?: InMemoryPushNotificationStore;\n pushNotificationSender?: DefaultPushNotificationSender;\n}) {\n if (pushNotificationSender) {\n return {\n pushNotificationStore: pushNotificationSender.getStore(),\n pushNotificationSender,\n };\n }\n\n if (pushNotificationStore) {\n return {\n pushNotificationStore,\n pushNotificationSender: new DefaultPushNotificationSender(pushNotificationStore),\n };\n }\n\n return {\n pushNotificationStore: defaultPushNotificationStore,\n pushNotificationSender: defaultPushNotificationSender,\n };\n}\n\nfunction createTaskPushNotificationConfig(\n taskId: string,\n pushNotificationConfig: TaskPushNotificationConfig['pushNotificationConfig'],\n): TaskPushNotificationConfig {\n return {\n taskId,\n pushNotificationConfig: {\n ...pushNotificationConfig,\n id: pushNotificationConfig.id ?? taskId,\n },\n };\n}\n\nfunction shouldSendPushNotification(previousTask: Task | undefined, nextTask: Task) {\n const pushTriggerStates: TaskState[] = [\n 'completed',\n 'failed',\n 'canceled',\n 'rejected',\n 'input-required',\n 'auth-required',\n ];\n\n if (!pushTriggerStates.includes(nextTask.status.state)) {\n return false;\n }\n\n return previousTask?.status.state !== nextTask.status.state;\n}\n\nfunction createLinkedAbortController(abortSignal?: AbortSignal) {\n const controller = new AbortController();\n\n if (!abortSignal) {\n return { controller, cleanup: () => {} };\n }\n\n const abortFromSignal = () => {\n if (!controller.signal.aborted) {\n controller.abort(abortSignal.reason);\n }\n };\n\n if (abortSignal.aborted) {\n abortFromSignal();\n } else {\n abortSignal.addEventListener('abort', abortFromSignal, { once: true });\n }\n\n return {\n controller,\n cleanup: () => abortSignal.removeEventListener('abort', abortFromSignal),\n };\n}\n\nasync function saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender,\n previousTask,\n nextTask,\n agentId,\n expectedVersion,\n logger,\n}: {\n taskStore: InMemoryTaskStore;\n pushNotificationSender: DefaultPushNotificationSender;\n previousTask?: Task;\n nextTask: Task;\n agentId: string;\n expectedVersion?: number;\n logger?: IMastraLogger;\n}): Promise<Task> {\n const storedTask = await taskStore.save({ agentId, data: nextTask, expectedVersion, skipIfCanceled: true });\n\n if (storedTask.status.state === 'canceled' && nextTask.status.state !== 'canceled') {\n return storedTask;\n }\n\n if (!shouldSendPushNotification(previousTask, storedTask)) {\n return storedTask;\n }\n\n void pushNotificationSender\n .sendNotifications({\n agentId,\n task: storedTask,\n logger,\n })\n .catch(error => {\n logger?.error('Failed to schedule A2A push notification', error);\n });\n\n return storedTask;\n}\n\nfunction extractFullStreamTextDelta(value: unknown): string | null {\n if (typeof value !== 'object' || value === null || !('type' in value)) {\n return null;\n }\n\n const chunk = value as {\n type: string;\n payload?: { text?: string; delta?: string };\n textDelta?: string;\n text?: string;\n delta?: string;\n };\n\n switch (chunk.type) {\n case 'text-delta':\n if (typeof chunk.payload?.text === 'string') {\n return chunk.payload.text;\n }\n\n if (typeof chunk.payload?.delta === 'string') {\n return chunk.payload.delta;\n }\n\n if (typeof chunk.textDelta === 'string') {\n return chunk.textDelta;\n }\n\n if (typeof chunk.delta === 'string') {\n return chunk.delta;\n }\n\n if (typeof chunk.text === 'string') {\n return chunk.text;\n }\n\n return null;\n default:\n return null;\n }\n}\n\nfunction extractFinalStructuredObject(value: unknown): Record<string, unknown> | undefined {\n if (typeof value !== 'object' || value === null || !('type' in value)) {\n return undefined;\n }\n\n const chunk = value as {\n type: string;\n object?: unknown;\n payload?: { object?: unknown };\n };\n\n if (chunk.type !== 'object-result') {\n return undefined;\n }\n\n const objectValue = chunk.payload?.object ?? chunk.object;\n return objectValue && typeof objectValue === 'object' ? (objectValue as Record<string, unknown>) : undefined;\n}\n\nfunction isSuspensionChunk(value: unknown): boolean {\n if (typeof value !== 'object' || value === null || !('type' in value)) {\n return false;\n }\n\n const type = (value as { type: string }).type;\n return type === 'tool-call-suspended' || type === 'tool-call-approval';\n}\n\nfunction artifactIdentity(artifact: Artifact) {\n return artifact.artifactId || artifact.name;\n}\n\nfunction areArtifactPartsEqual(left: Artifact['parts'], right: Artifact['parts']) {\n if (left === right) {\n return true;\n }\n\n if (left.length !== right.length) {\n return false;\n }\n\n return left.every((part, index) => {\n const other = right[index];\n if (!other || part.kind !== other.kind) {\n return false;\n }\n\n if (part.kind === 'text' && other.kind === 'text') {\n return part.text === other.text;\n }\n\n return part === other;\n });\n}\n\nfunction areArtifactsEqual(left: Artifact | undefined, right: Artifact | undefined) {\n if (left === right) {\n return true;\n }\n\n if (!left || !right) {\n return left === right;\n }\n\n return (\n left.artifactId === right.artifactId &&\n left.name === right.name &&\n left.description === right.description &&\n left.metadata === right.metadata &&\n areArtifactPartsEqual(left.parts, right.parts)\n );\n}\n\nfunction areStatusMessagePartsEqual(\n left: NonNullable<Task['status']['message']>['parts'],\n right: NonNullable<Task['status']['message']>['parts'],\n) {\n return left === right || isDeepStrictEqual(left, right);\n}\n\nfunction areStatusMessagesEqual(left: Task['status']['message'], right: Task['status']['message']) {\n if (left === right) {\n return true;\n }\n\n if (!left || !right) {\n return left === right;\n }\n\n return (\n left.messageId === right.messageId &&\n left.kind === right.kind &&\n left.role === right.role &&\n left.contextId === right.contextId &&\n left.taskId === right.taskId &&\n isDeepStrictEqual(left.referenceTaskIds, right.referenceTaskIds) &&\n isDeepStrictEqual(left.extensions, right.extensions) &&\n isDeepStrictEqual(left.metadata, right.metadata) &&\n areStatusMessagePartsEqual(left.parts, right.parts)\n );\n}\n\nfunction didTaskStatusChange(previous: Task, next: Task) {\n return (\n previous.status.state !== next.status.state ||\n previous.status.timestamp !== next.status.timestamp ||\n !areStatusMessagesEqual(previous.status.message, next.status.message)\n );\n}\n\nfunction getTaskArtifactUpdates({ previous, next }: { previous: Task; next: Task }) {\n const previousArtifacts = new Map((previous.artifacts ?? []).map(artifact => [artifactIdentity(artifact), artifact]));\n const changedArtifacts = (next.artifacts ?? []).filter(artifact => {\n const priorArtifact = previousArtifacts.get(artifactIdentity(artifact));\n return !priorArtifact || !areArtifactsEqual(priorArtifact, artifact);\n });\n\n return changedArtifacts.map((artifact, index) => ({\n kind: 'artifact-update' as const,\n taskId: next.id,\n contextId: next.contextId,\n lastChunk: isTerminalTaskState(next.status.state) && index === changedArtifacts.length - 1,\n artifact: structuredClone(artifact),\n }));\n}\n\nasync function executeMessageSend({\n requestId,\n message,\n metadata,\n currentData,\n taskStore,\n pushNotificationSender,\n agent,\n agentId,\n logger,\n requestContext,\n resume,\n}: {\n requestId: number | string;\n message: MessageSendParams['message'];\n metadata: MessageSendParams['metadata'];\n currentData: Task;\n taskStore: InMemoryTaskStore;\n pushNotificationSender: DefaultPushNotificationSender;\n agent: Agent;\n agentId: string;\n logger?: IMastraLogger;\n requestContext: RequestContext;\n resume?: ResumeClaim;\n}) {\n const { contextId } = message;\n\n try {\n // Pass contextId as threadId for memory persistence across A2A conversations\n // Allow user to pass resourceId via metadata, fall back to agentId\n const resourceId = (metadata?.resourceId as string) ?? (message.metadata?.resourceId as string) ?? agentId;\n const result = resume\n ? await agent.resumeGenerate(normalizeResumeData(extractResumeData(message), resume.requiresApproval), {\n runId: resume.runId,\n ...(resume.toolCallId ? { toolCallId: resume.toolCallId } : {}),\n requestContext,\n })\n : await agent.generate([convertToCoreMessage(message)], {\n runId: currentData.id,\n requestContext,\n ...(contextId ? { threadId: contextId, resourceId } : {}),\n });\n\n const latestTask = await taskStore.load({ agentId, taskId: currentData.id });\n if (latestTask?.status.state === 'canceled') {\n return createSuccessResponse(requestId, latestTask);\n }\n currentData = latestTask ?? currentData;\n\n const artifactUpdate = createArtifactUpdate({\n taskId: currentData.id,\n contextId: currentData.contextId,\n text: result.text,\n data: result.object as Record<string, unknown> | undefined,\n });\n\n if (artifactUpdate) {\n currentData = applyUpdateToTask(currentData, artifactUpdate);\n }\n\n // Agent suspensions (tool approval, suspend()) surface as the A2A\n // `input-required` state so clients can provide the missing input and\n // continue the task (HITL per the A2A spec).\n if (result.finishReason === 'suspended') {\n const previousTask = currentData;\n currentData = applySuspensionToTask({\n task: currentData,\n suspendPayload: result.suspendPayload,\n resumeSchema: result.resumeSchema,\n runId: result.runId ?? currentData.id,\n logger,\n });\n\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender,\n previousTask,\n nextTask: currentData,\n agentId,\n logger,\n });\n\n return createSuccessResponse(requestId, currentData);\n }\n\n const previousTask = currentData;\n currentData = applyUpdateToTask(currentData, {\n state: 'completed',\n message: undefined,\n });\n\n // Store execution details in task metadata\n currentData.metadata = {\n ...clearSuspensionMetadata(currentData.metadata),\n execution: {\n toolCalls: result.toolCalls,\n toolResults: result.toolResults,\n usage: result.usage,\n finishReason: result.finishReason,\n },\n };\n\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender,\n previousTask,\n nextTask: currentData,\n agentId,\n logger,\n });\n } catch (handlerError) {\n const latestTask = await taskStore.load({ agentId, taskId: currentData.id });\n if (latestTask?.status.state === 'canceled') {\n return createSuccessResponse(requestId, latestTask);\n }\n currentData = latestTask ?? currentData;\n\n // If handler throws, apply 'failed' status, save, and rethrow\n const failureStatusUpdate: Omit<TaskStatus, 'timestamp'> = {\n state: 'failed',\n message: {\n messageId: crypto.randomUUID(),\n role: 'agent',\n parts: [\n {\n kind: 'text',\n text: `Handler failed: ${handlerError instanceof Error ? handlerError.message : String(handlerError)}`,\n },\n ],\n kind: 'message',\n },\n };\n const previousTask = currentData;\n currentData = applyUpdateToTask(currentData, failureStatusUpdate);\n\n try {\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender,\n previousTask,\n nextTask: currentData,\n agentId,\n logger,\n });\n } catch (saveError) {\n // @ts-expect-error saveError is an unknown error\n logger?.error(`Failed to save task ${currentData.id} after handler error:`, saveError?.message);\n }\n\n return normalizeError(handlerError, requestId, currentData.id, logger); // Rethrow original error\n }\n\n // The loop finished, send the final task state\n return createSuccessResponse(requestId, currentData);\n}\n\nexport async function handleMessageSend({\n requestId,\n params,\n taskStore,\n pushNotificationStore,\n pushNotificationSender,\n agent,\n agentId,\n logger,\n requestContext,\n}: {\n requestId: number | string;\n params: MessageSendParams;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n pushNotificationSender?: DefaultPushNotificationSender;\n agent: Agent;\n agentId: string;\n logger?: IMastraLogger;\n requestContext: RequestContext;\n}) {\n validateMessageSendParams(params);\n\n const { message, metadata } = params;\n const { contextId } = message;\n const taskId = message.taskId || crypto.randomUUID();\n const existingTask = taskStore.loadWithVersion({ agentId, taskId })?.task;\n if (message.taskId && !existingTask) {\n throw MastraA2AError.taskNotFound(message.taskId);\n }\n if (params.configuration?.blocking === false && existingTask?.status.state === 'working') {\n return createSuccessResponse(requestId, existingTask);\n }\n\n if (existingTask?.status.state === 'working' && getSuspendedRunId(existingTask)) {\n const task = await waitForClaimedResume({ taskStore, agentId, taskId });\n return createSuccessResponse(requestId, task);\n }\n\n // A follow-up message for an interrupted task resumes the suspended agent\n // run instead of starting a fresh generation (A2A HITL continuation).\n // The claim transitions the task to `working` synchronously so concurrent\n // follow-ups cannot double-resume the same run.\n const wasInterrupted = isInterruptedTaskState(existingTask?.status.state);\n const resume = await claimInterruptedTaskResume({ taskStore, agentId, taskId });\n if (wasInterrupted && !resume) {\n const task = await waitForClaimedResume({ taskStore, agentId, taskId });\n return createSuccessResponse(requestId, task);\n }\n const {\n pushNotificationStore: resolvedPushNotificationStore,\n pushNotificationSender: resolvedPushNotificationSender,\n } = resolvePushNotificationPair({\n pushNotificationStore,\n pushNotificationSender,\n });\n\n let currentData = await loadOrCreateTask({\n taskId,\n taskStore,\n agentId,\n message,\n contextId,\n metadata,\n });\n\n if (params.configuration?.pushNotificationConfig) {\n resolvedPushNotificationStore.set({\n agentId,\n config: createTaskPushNotificationConfig(taskId, params.configuration.pushNotificationConfig),\n });\n }\n\n currentData = applyUpdateToTask(currentData, {\n state: 'working',\n message: {\n messageId: crypto.randomUUID(),\n kind: 'message',\n role: 'agent',\n parts: [{ kind: 'text', text: 'Generating response...' }],\n },\n });\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n nextTask: currentData,\n agentId,\n logger,\n });\n\n const execution = executeMessageSend({\n requestId,\n message,\n metadata,\n currentData,\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n agent,\n agentId,\n logger,\n requestContext,\n resume,\n });\n\n if (params.configuration?.blocking === false) {\n void execution.catch(error => {\n logger?.error(`Unexpected background failure for A2A task ${currentData.id}`, error);\n });\n return createSuccessResponse(requestId, currentData);\n }\n\n return execution;\n}\n\nexport async function handleTaskGet({\n requestId,\n taskStore,\n agentId,\n taskId,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n agentId: string;\n taskId: string;\n}) {\n const task = await taskStore.load({ agentId, taskId });\n\n if (!task) {\n throw MastraA2AError.taskNotFound(taskId);\n }\n\n return createSuccessResponse(requestId, task);\n}\n\nasync function loadTaskOrThrow({\n taskStore,\n agentId,\n taskId,\n}: {\n taskStore: InMemoryTaskStore;\n agentId: string;\n taskId: string;\n}) {\n const task = await taskStore.load({ agentId, taskId });\n\n if (!task) {\n throw MastraA2AError.taskNotFound(taskId);\n }\n\n return task;\n}\n\nexport async function handleSetTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore,\n agentId,\n params,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n agentId: string;\n params: TaskPushNotificationConfig;\n}) {\n await loadTaskOrThrow({\n taskStore,\n agentId,\n taskId: params.taskId,\n });\n\n const { pushNotificationStore: resolvedPushNotificationStore } = resolvePushNotificationPair({\n pushNotificationStore,\n });\n const config = resolvedPushNotificationStore.set({\n agentId,\n config: createTaskPushNotificationConfig(params.taskId, params.pushNotificationConfig),\n });\n\n return createSuccessResponse(requestId, config);\n}\n\nexport async function handleGetTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore,\n agentId,\n params,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n agentId: string;\n params: GetTaskPushNotificationConfigParams;\n}) {\n await loadTaskOrThrow({\n taskStore,\n agentId,\n taskId: params.id,\n });\n\n const { pushNotificationStore: resolvedPushNotificationStore } = resolvePushNotificationPair({\n pushNotificationStore,\n });\n const config = resolvedPushNotificationStore.get({\n agentId,\n params,\n });\n\n if (!config) {\n throw MastraA2AError.invalidParams(\n `Push notification config not found: ${params.pushNotificationConfigId ?? params.id}`,\n );\n }\n\n return createSuccessResponse(requestId, config);\n}\n\nexport async function handleListTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore,\n agentId,\n params,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n agentId: string;\n params: ListTaskPushNotificationConfigParams;\n}) {\n await loadTaskOrThrow({\n taskStore,\n agentId,\n taskId: params.id,\n });\n\n const { pushNotificationStore: resolvedPushNotificationStore } = resolvePushNotificationPair({\n pushNotificationStore,\n });\n const configs = resolvedPushNotificationStore.list({\n agentId,\n params,\n });\n\n return createSuccessResponse(requestId, configs);\n}\n\nexport async function handleDeleteTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore,\n agentId,\n params,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n agentId: string;\n params: DeleteTaskPushNotificationConfigParams;\n}) {\n await loadTaskOrThrow({\n taskStore,\n agentId,\n taskId: params.id,\n });\n\n const { pushNotificationStore: resolvedPushNotificationStore } = resolvePushNotificationPair({\n pushNotificationStore,\n });\n const deleted = resolvedPushNotificationStore.delete({\n agentId,\n params,\n });\n\n if (!deleted) {\n throw MastraA2AError.invalidParams(`Push notification config not found: ${params.pushNotificationConfigId}`);\n }\n\n return createSuccessResponse(requestId, null);\n}\n\nexport async function* handleMessageStream({\n requestId,\n params,\n taskStore,\n pushNotificationStore,\n pushNotificationSender,\n agent,\n agentId,\n logger,\n requestContext,\n abortSignal,\n}: {\n requestId: number | string;\n params: MessageSendParams;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n pushNotificationSender?: DefaultPushNotificationSender;\n agent: Agent;\n agentId: string;\n logger?: IMastraLogger;\n requestContext: RequestContext;\n abortSignal?: AbortSignal;\n}) {\n validateMessageSendParams(params);\n\n const { message, metadata } = params;\n const { contextId } = message;\n const taskId = message.taskId || crypto.randomUUID();\n if (message.taskId && !taskStore.loadWithVersion({ agentId, taskId })) {\n throw MastraA2AError.taskNotFound(message.taskId);\n }\n\n // A follow-up message for an interrupted task resumes the suspended agent\n // run instead of starting a fresh generation (A2A HITL continuation).\n // The claim transitions the task to `working` synchronously so concurrent\n // follow-ups cannot double-resume the same run.\n const resume = await claimInterruptedTaskResume({ taskStore, agentId, taskId });\n\n const {\n pushNotificationStore: resolvedPushNotificationStore,\n pushNotificationSender: resolvedPushNotificationSender,\n } = resolvePushNotificationPair({\n pushNotificationStore,\n pushNotificationSender,\n });\n\n let currentData = await loadOrCreateTask({\n taskId,\n taskStore,\n agentId,\n message,\n contextId,\n metadata,\n });\n\n if (params.configuration?.pushNotificationConfig) {\n resolvedPushNotificationStore.set({\n agentId,\n config: createTaskPushNotificationConfig(taskId, params.configuration.pushNotificationConfig),\n });\n }\n\n currentData = applyUpdateToTask(currentData, {\n state: 'working',\n message: {\n messageId: crypto.randomUUID(),\n kind: 'message',\n role: 'agent',\n parts: [{ kind: 'text', text: 'Generating response...' }],\n },\n });\n\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n nextTask: currentData,\n agentId,\n logger,\n });\n\n const { controller: taskAbortController, cleanup: cleanupLinkedAbortController } =\n createLinkedAbortController(abortSignal);\n const unregisterTaskAbortController = taskStore.registerAbortController({\n agentId,\n taskId,\n controller: taskAbortController,\n });\n\n try {\n yield createSuccessResponse(requestId, currentData);\n\n const resourceId = (metadata?.resourceId as string) ?? (message.metadata?.resourceId as string) ?? agentId;\n const result = resume\n ? await agent.resumeStream(normalizeResumeData(extractResumeData(message), resume.requiresApproval), {\n runId: resume.runId,\n ...(resume.toolCallId ? { toolCallId: resume.toolCallId } : {}),\n requestContext,\n abortSignal: taskAbortController.signal,\n })\n : await agent.stream([convertToCoreMessage(message)], {\n runId: taskId,\n requestContext,\n abortSignal: taskAbortController.signal,\n ...(contextId ? { threadId: contextId, resourceId } : {}),\n });\n let sawTextArtifact = false;\n let pendingTextChunk: string | undefined;\n let structuredData: Record<string, unknown> | undefined;\n let suspended = false;\n let streamCanceled = false;\n\n for await (const chunk of result.fullStream) {\n if (taskAbortController.signal.aborted) {\n const latestTask = await taskStore.load({ agentId, taskId: currentData.id });\n if (latestTask) {\n currentData = latestTask;\n }\n streamCanceled = true;\n break;\n }\n\n if (isSuspensionChunk(chunk)) {\n suspended = true;\n continue;\n }\n\n const textDelta = extractFullStreamTextDelta(chunk);\n if (textDelta !== null) {\n if (!pendingTextChunk) {\n pendingTextChunk = textDelta;\n continue;\n }\n\n const textUpdate = createTextChunkArtifactUpdate({\n taskId: currentData.id,\n contextId: currentData.contextId,\n text: pendingTextChunk,\n append: sawTextArtifact,\n lastChunk: false,\n });\n\n currentData = applyUpdateToTask(currentData, textUpdate);\n currentData = await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n nextTask: currentData,\n agentId,\n logger,\n });\n if (currentData.status.state === 'canceled') {\n streamCanceled = true;\n break;\n }\n yield createSuccessResponse(requestId, textUpdate);\n\n sawTextArtifact = true;\n pendingTextChunk = textDelta;\n continue;\n }\n\n const finalStructuredObject = extractFinalStructuredObject(chunk);\n if (finalStructuredObject) {\n structuredData = finalStructuredObject;\n }\n }\n\n if (!streamCanceled && taskAbortController.signal.aborted) {\n const latestTask = await taskStore.load({ agentId, taskId: currentData.id });\n if (latestTask) {\n currentData = latestTask;\n }\n streamCanceled = true;\n }\n\n if (streamCanceled && abortSignal?.aborted && currentData.status.state !== 'canceled') {\n const previousTask = currentData;\n currentData = applyUpdateToTask(currentData, {\n state: 'canceled',\n message: {\n messageId: crypto.randomUUID(),\n role: 'agent',\n parts: [{ kind: 'text', text: 'Task canceled because the request was aborted.' }],\n kind: 'message',\n },\n });\n currentData = await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n previousTask,\n nextTask: currentData,\n agentId,\n logger,\n });\n }\n\n if (!streamCanceled && suspended) {\n // Agent suspensions (tool approval, suspend()) surface as the A2A\n // `input-required` state so clients can provide the missing input and\n // continue the task (HITL per the A2A spec). Skip the completed path\n // and avoid awaiting result promises that only settle on completion.\n if (pendingTextChunk) {\n const textUpdate = createTextChunkArtifactUpdate({\n taskId: currentData.id,\n contextId: currentData.contextId,\n text: pendingTextChunk,\n append: sawTextArtifact,\n lastChunk: true,\n });\n\n currentData = applyUpdateToTask(currentData, textUpdate);\n currentData = await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n nextTask: currentData,\n agentId,\n logger,\n });\n if (currentData.status.state === 'canceled') {\n streamCanceled = true;\n } else {\n yield createSuccessResponse(requestId, textUpdate);\n }\n }\n\n const suspensionTask = currentData;\n currentData = applySuspensionToTask({\n task: currentData,\n suspendPayload: await result.suspendPayload,\n resumeSchema: await result.resumeSchema,\n runId: result.runId ?? currentData.id,\n logger,\n });\n\n currentData = await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n previousTask: suspensionTask,\n nextTask: currentData,\n agentId,\n logger,\n });\n if (currentData.status.state === 'canceled') {\n streamCanceled = true;\n }\n }\n\n if (!streamCanceled && !suspended) {\n structuredData ??= (await result.object) as Record<string, unknown> | undefined;\n\n if (!pendingTextChunk && !sawTextArtifact) {\n const finalText = await result.text;\n if (finalText) {\n pendingTextChunk = finalText;\n }\n }\n\n if (pendingTextChunk) {\n const textUpdate = createTextChunkArtifactUpdate({\n taskId: currentData.id,\n contextId: currentData.contextId,\n text: pendingTextChunk,\n append: sawTextArtifact,\n lastChunk: !structuredData,\n });\n\n currentData = applyUpdateToTask(currentData, textUpdate);\n currentData = await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n nextTask: currentData,\n agentId,\n logger,\n });\n if (currentData.status.state === 'canceled') {\n streamCanceled = true;\n } else {\n yield createSuccessResponse(requestId, textUpdate);\n }\n\n sawTextArtifact = true;\n pendingTextChunk = undefined;\n }\n\n if (!streamCanceled && structuredData) {\n const dataUpdate = createDataArtifactUpdate({\n taskId: currentData.id,\n contextId: currentData.contextId,\n data: structuredData,\n lastChunk: true,\n });\n\n currentData = applyUpdateToTask(currentData, dataUpdate);\n currentData = await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n nextTask: currentData,\n agentId,\n logger,\n });\n if (currentData.status.state === 'canceled') {\n streamCanceled = true;\n } else {\n yield createSuccessResponse(requestId, dataUpdate);\n }\n }\n\n if (!streamCanceled) {\n const previousTask = currentData;\n const completedTask = applyUpdateToTask(currentData, {\n state: 'completed',\n message: undefined,\n });\n\n completedTask.metadata = {\n ...clearSuspensionMetadata(completedTask.metadata),\n execution: {\n toolCalls: await result.toolCalls,\n toolResults: await result.toolResults,\n usage: await result.usage,\n finishReason: await result.finishReason,\n },\n };\n\n currentData = await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n previousTask,\n nextTask: completedTask,\n agentId,\n logger,\n });\n }\n }\n } catch (handlerError) {\n const latestTask = await taskStore.load({ agentId, taskId: currentData.id });\n if (latestTask?.status.state === 'canceled') {\n currentData = latestTask;\n } else if (taskAbortController.signal.aborted) {\n currentData = latestTask ?? currentData;\n if (abortSignal?.aborted) {\n const previousTask = currentData;\n currentData = applyUpdateToTask(currentData, {\n state: 'canceled',\n message: {\n messageId: crypto.randomUUID(),\n role: 'agent',\n parts: [{ kind: 'text', text: 'Task canceled because the request was aborted.' }],\n kind: 'message',\n },\n });\n\n try {\n currentData = await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n previousTask,\n nextTask: currentData,\n agentId,\n logger,\n });\n } catch (saveError) {\n // @ts-expect-error saveError is an unknown error\n logger?.error(`Failed to save task ${currentData.id} after request abort:`, saveError?.message);\n }\n }\n } else {\n currentData = latestTask ?? currentData;\n const previousTask = currentData;\n currentData = applyUpdateToTask(currentData, {\n state: 'failed',\n message: {\n messageId: crypto.randomUUID(),\n role: 'agent',\n parts: [\n {\n kind: 'text',\n text: `Handler failed: ${handlerError instanceof Error ? handlerError.message : String(handlerError)}`,\n },\n ],\n kind: 'message',\n },\n });\n\n try {\n currentData = await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n previousTask,\n nextTask: currentData,\n agentId,\n logger,\n });\n } catch (saveError) {\n // @ts-expect-error saveError is an unknown error\n logger?.error(`Failed to save task ${currentData.id} after handler error:`, saveError?.message);\n }\n }\n } finally {\n unregisterTaskAbortController();\n cleanupLinkedAbortController();\n }\n\n const latestTask = await taskStore.load({ agentId, taskId: currentData.id });\n if (latestTask?.status.state === 'canceled') {\n currentData = latestTask;\n }\n\n yield createSuccessResponse(requestId, {\n kind: 'status-update',\n taskId: currentData.id,\n contextId: currentData.contextId,\n status: currentData.status,\n final: true,\n });\n}\n\nexport async function* handleTaskResubscribe({\n requestId,\n taskStore,\n agentId,\n taskId,\n abortSignal,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n agentId: string;\n taskId: string;\n abortSignal?: AbortSignal;\n}) {\n let snapshot = taskStore.loadWithVersion({ agentId, taskId });\n\n if (!snapshot) {\n throw MastraA2AError.taskNotFound(taskId);\n }\n\n yield createSuccessResponse(requestId, snapshot.task);\n\n // Interrupted states produce no further updates until the client sends a\n // follow-up message, so the event stream ends here.\n if (isTerminalTaskState(snapshot.task.status.state) || isInterruptedTaskState(snapshot.task.status.state)) {\n return;\n }\n\n while (true) {\n const { task, version } = snapshot;\n const nextUpdate = await taskStore.waitForNextUpdate({\n agentId,\n taskId,\n afterVersion: version,\n signal: abortSignal,\n });\n\n for (const artifactUpdate of getTaskArtifactUpdates({ previous: task, next: nextUpdate.task })) {\n yield createSuccessResponse(requestId, artifactUpdate);\n }\n\n const nextState = nextUpdate.task.status.state;\n const streamEnded = isTerminalTaskState(nextState) || isInterruptedTaskState(nextState);\n\n if (didTaskStatusChange(task, nextUpdate.task)) {\n yield createSuccessResponse(requestId, {\n kind: 'status-update',\n taskId: nextUpdate.task.id,\n contextId: nextUpdate.task.contextId,\n status: nextUpdate.task.status,\n final: streamEnded,\n });\n }\n\n if (streamEnded) {\n return;\n }\n\n snapshot = nextUpdate;\n }\n}\n\nfunction getTaskIdFromParams(\n params: MessageSendParams | TaskQueryParams | TaskIdParams | Record<string, unknown> | undefined,\n) {\n if (!params || typeof params !== 'object') {\n return undefined;\n }\n\n if ('id' in params && typeof params.id === 'string') {\n return params.id;\n }\n\n if ('taskId' in params && typeof params.taskId === 'string') {\n return params.taskId;\n }\n\n if ('message' in params && params.message && typeof params.message === 'object' && 'taskId' in params.message) {\n return typeof params.message.taskId === 'string' ? params.message.taskId : undefined;\n }\n\n return undefined;\n}\n\nfunction isAsyncIterable(value: unknown): value is AsyncIterable<unknown> {\n return !!value && typeof value === 'object' && Symbol.asyncIterator in value;\n}\n\nfunction createA2AJsonResponse(payload: unknown): Response {\n return Response.json(payload);\n}\n\nfunction createA2ASSEResponse(payload: AsyncIterable<unknown> | unknown): Response {\n const encoder = new TextEncoder();\n const iterable = isAsyncIterable(payload)\n ? payload\n : (async function* () {\n yield payload;\n })();\n\n const stream = new ReadableStream<Uint8Array>({\n async start(controller) {\n try {\n for await (const chunk of iterable) {\n controller.enqueue(encoder.encode(`data: ${JSON.stringify(chunk)}\\n\\n`));\n }\n } catch (error) {\n controller.error(error);\n return;\n }\n\n controller.close();\n },\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream; charset=utf-8',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n 'X-Accel-Buffering': 'no',\n },\n });\n}\n\nexport async function handleTaskCancel({\n requestId,\n taskStore,\n pushNotificationSender,\n agentId,\n taskId,\n logger,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n pushNotificationSender?: DefaultPushNotificationSender;\n agentId: string;\n taskId: string;\n logger?: IMastraLogger;\n}) {\n for (let attempt = 0; attempt < 2; attempt++) {\n const snapshot = taskStore.loadWithVersion({ agentId, taskId });\n const data = snapshot?.task;\n\n if (!data) {\n throw MastraA2AError.taskNotFound(taskId);\n }\n\n if (isTerminalTaskState(data.status.state)) {\n logger?.info(`Task ${taskId} already in final state ${data.status.state}, cannot cancel.`);\n throw MastraA2AError.taskNotCancelable(taskId);\n }\n\n taskStore.activeCancellations.add(taskId);\n taskStore.abortTask({\n agentId,\n taskId,\n reason: new DOMException('Task cancelled by request.', 'AbortError'),\n });\n\n const cancelUpdate: Omit<TaskStatus, 'timestamp'> = {\n state: 'canceled',\n message: {\n role: 'agent',\n parts: [{ kind: 'text', text: 'Task cancelled by request.' }],\n kind: 'message',\n messageId: crypto.randomUUID(),\n },\n };\n const canceledTask = applyUpdateToTask(data, cancelUpdate);\n\n try {\n await saveTaskAndMaybeSendPushNotification({\n taskStore,\n pushNotificationSender: resolvePushNotificationPair({ pushNotificationSender }).pushNotificationSender,\n previousTask: data,\n nextTask: canceledTask,\n agentId,\n expectedVersion: snapshot.version,\n logger,\n });\n return createSuccessResponse(requestId, canceledTask);\n } catch (error) {\n if (!(error instanceof TaskStoreVersionConflictError)) {\n throw error;\n }\n } finally {\n taskStore.activeCancellations.delete(taskId);\n }\n }\n\n throw MastraA2AError.invalidRequest(`Task ${taskId} was updated concurrently. Retry the request.`);\n}\n\nexport async function getAgentExecutionHandler({\n requestId,\n mastra,\n agentId,\n requestContext,\n method,\n params,\n taskStore,\n pushNotificationStore,\n pushNotificationSender,\n logger,\n abortSignal,\n}: Context & {\n requestId: number | string;\n requestContext: RequestContext;\n agentId: string;\n method:\n | 'message/send'\n | 'message/stream'\n | 'tasks/get'\n | 'tasks/cancel'\n | 'tasks/resubscribe'\n | 'tasks/pushNotificationConfig/set'\n | 'tasks/pushNotificationConfig/get'\n | 'tasks/pushNotificationConfig/list'\n | 'tasks/pushNotificationConfig/delete'\n | 'agent/getAuthenticatedExtendedCard';\n params?: MessageSendParams | TaskQueryParams | TaskIdParams | Record<string, unknown>;\n taskStore: InMemoryTaskStore;\n pushNotificationStore?: InMemoryPushNotificationStore;\n pushNotificationSender?: DefaultPushNotificationSender;\n logger?: IMastraLogger;\n abortSignal?: AbortSignal;\n}): Promise<any> {\n const agent = await getAgentFromSystem({ mastra, agentId });\n const {\n pushNotificationStore: resolvedPushNotificationStore,\n pushNotificationSender: resolvedPushNotificationSender,\n } = resolvePushNotificationPair({\n pushNotificationStore,\n pushNotificationSender,\n });\n\n let taskId: string | undefined; // For error context\n\n try {\n taskId = getTaskIdFromParams(params);\n\n // 2. Route based on method\n switch (method) {\n case 'message/send': {\n const result = await handleMessageSend({\n requestId,\n params: params as MessageSendParams,\n taskStore,\n pushNotificationStore: resolvedPushNotificationStore,\n pushNotificationSender: resolvedPushNotificationSender,\n agent,\n agentId,\n logger,\n requestContext,\n });\n return result;\n }\n case 'message/stream': {\n const result = await handleMessageStream({\n requestId,\n taskStore,\n params: params as MessageSendParams,\n pushNotificationStore: resolvedPushNotificationStore,\n pushNotificationSender: resolvedPushNotificationSender,\n agent,\n agentId,\n logger,\n requestContext,\n abortSignal,\n });\n return result;\n }\n\n case 'tasks/get': {\n const result = await handleTaskGet({\n requestId,\n taskStore,\n agentId,\n taskId: taskId || 'No task ID provided',\n });\n\n return result;\n }\n case 'tasks/cancel': {\n const result = await handleTaskCancel({\n requestId,\n taskStore,\n pushNotificationSender: resolvedPushNotificationSender,\n agentId,\n taskId: taskId || 'No task ID provided',\n logger,\n });\n\n return result;\n }\n case 'tasks/resubscribe':\n return await handleTaskResubscribe({\n requestId,\n taskStore,\n agentId,\n taskId: taskId || 'No task ID provided',\n abortSignal,\n });\n case 'tasks/pushNotificationConfig/set':\n return await handleSetTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore: resolvedPushNotificationStore,\n agentId,\n params: params as unknown as TaskPushNotificationConfig,\n });\n case 'tasks/pushNotificationConfig/get':\n return await handleGetTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore: resolvedPushNotificationStore,\n agentId,\n params: params as GetTaskPushNotificationConfigParams,\n });\n case 'tasks/pushNotificationConfig/list':\n return await handleListTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore: resolvedPushNotificationStore,\n agentId,\n params: params as ListTaskPushNotificationConfigParams,\n });\n case 'tasks/pushNotificationConfig/delete':\n return await handleDeleteTaskPushNotificationConfig({\n requestId,\n taskStore,\n pushNotificationStore: resolvedPushNotificationStore,\n agentId,\n params: params as DeleteTaskPushNotificationConfigParams,\n });\n case 'agent/getAuthenticatedExtendedCard':\n throw MastraA2AError.extendedAgentCardNotConfigured();\n default:\n throw MastraA2AError.methodNotFound(method);\n }\n } catch (error) {\n if (error instanceof MastraA2AError && taskId && !error.taskId) {\n error.taskId = taskId; // Add task ID context if missing\n }\n\n return normalizeError(error, requestId, taskId, logger);\n }\n}\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const GET_AGENT_CARD_ROUTE = createRoute({\n method: 'GET',\n path: '/.well-known/:agentId/agent-card.json',\n responseType: 'json',\n pathParamSchema: a2aAgentIdPathParams,\n responseSchema: agentCardResponseSchema,\n summary: 'Get agent card',\n description: 'Returns the agent card information for A2A protocol discovery',\n tags: ['Agent-to-Agent'],\n requiresAuth: true,\n handler: async ctx => {\n const executionUrl = getA2AExecutionUrl({\n agentId: ctx.agentId as string,\n request: (ctx as typeof ctx & { request?: Request }).request,\n routePrefix: ctx.routePrefix,\n });\n\n return getAgentCardByIdHandler({\n mastra: ctx.mastra,\n requestContext: ctx.requestContext,\n agentId: ctx.agentId,\n executionUrl,\n pushNotifications: true,\n });\n },\n});\n\nexport const AGENT_EXECUTION_ROUTE = createRoute({\n method: 'POST',\n path: '/a2a/:agentId',\n responseType: 'datastream-response',\n pathParamSchema: a2aAgentIdPathParams,\n bodySchema: agentExecutionBodySchema,\n responseSchema: agentExecutionResponseSchema,\n summary: 'Execute agent',\n description: 'Executes an agent action via JSON-RPC 2.0 over A2A protocol',\n tags: ['Agent-to-Agent'],\n requiresAuth: true,\n handler: async ({ mastra, agentId, requestContext, taskStore, abortSignal, ...bodyParams }) => {\n const { id: requestId, method } = bodyParams;\n const params = 'params' in bodyParams ? bodyParams.params : undefined;\n const result = await getAgentExecutionHandler({\n requestId,\n mastra,\n agentId: agentId as string,\n requestContext,\n method,\n params,\n taskStore: taskStore!,\n abortSignal,\n });\n\n if (method === 'message/stream' || method === 'tasks/resubscribe') {\n return createA2ASSEResponse(result);\n }\n\n return createA2AJsonResponse(result);\n },\n});\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"a2a-CnU9zaGR.js","names":[],"sources":["../src/server/schemas/a2a.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\n// Path parameter schemas\nexport const a2aAgentIdPathParams = z.object({\n agentId: z.string().describe('Unique identifier for the agent'),\n});\n\nexport const a2aTaskPathParams = a2aAgentIdPathParams.extend({\n taskId: z.string().describe('Unique identifier for the task'),\n});\n\n// Body schemas for A2A protocol\n\n// Push notification schemas\nconst pushNotificationAuthenticationInfoSchema = z.object({\n schemes: z.array(z.string()).describe('Supported authentication schemes - e.g. Basic, Bearer'),\n credentials: z.string().optional().describe('Optional credentials'),\n});\n\nconst pushNotificationConfigSchema = z.object({\n url: z.string().describe('URL for sending the push notifications'),\n id: z.string().optional().describe('Push Notification ID - created by server to support multiple callbacks'),\n token: z.string().optional().describe('Token unique to this task/session'),\n authentication: pushNotificationAuthenticationInfoSchema.optional(),\n});\n\nconst messageSendConfigurationSchema = z.object({\n acceptedOutputModes: z.array(z.string()).optional().describe('Accepted output modalities by the client'),\n blocking: z.boolean().optional().describe('If the server should treat the client as a blocking request'),\n historyLength: z.number().optional().describe('Number of recent messages to be retrieved'),\n pushNotificationConfig: pushNotificationConfigSchema.optional(),\n});\n\n// Part schemas\nconst textPartSchema = z.object({\n kind: z.literal('text').describe('Part type - text for TextParts'),\n text: z.string().describe('Text content'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Optional metadata associated with the part'),\n});\n\nconst fileWithBytesSchema = z.object({\n bytes: z.string().describe('base64 encoded content of the file'),\n mimeType: z.string().optional().describe('Optional mimeType for the file'),\n name: z.string().optional().describe('Optional name for the file'),\n});\n\nconst fileWithUriSchema = z.object({\n uri: z.string().describe('URL for the File content'),\n mimeType: z.string().optional().describe('Optional mimeType for the file'),\n name: z.string().optional().describe('Optional name for the file'),\n});\n\nconst filePartSchema = z.object({\n kind: z.literal('file').describe('Part type - file for FileParts'),\n file: z.union([fileWithBytesSchema, fileWithUriSchema]).describe('File content either as url or bytes'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Optional metadata associated with the part'),\n});\n\nconst dataPartSchema = z.object({\n kind: z.literal('data').describe('Part type - data for DataParts'),\n data: z.record(z.string(), z.unknown()).describe('Structured data content'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Optional metadata associated with the part'),\n});\n\nconst partSchema = z.union([textPartSchema, filePartSchema, dataPartSchema]);\n\n// Message schema\nconst messageSchema = z.object({\n kind: z.literal('message').describe('Event type'),\n messageId: z.string().describe('Identifier created by the message creator'),\n role: z.enum(['user', 'agent']).describe(\"Message sender's role\"),\n parts: z.array(partSchema).describe('Message content'),\n contextId: z.string().optional().describe('The context the message is associated with'),\n taskId: z.string().optional().describe('Identifier of task the message is related to'),\n referenceTaskIds: z.array(z.string()).optional().describe('List of tasks referenced as context by this message'),\n extensions: z\n .array(z.string())\n .optional()\n .describe('The URIs of extensions that are present or contributed to this Message'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Extension metadata'),\n});\n\n// MessageSendParams schema\nconst messageSendParamsSchema = z.object({\n message: messageSchema,\n configuration: messageSendConfigurationSchema.optional(),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Extension metadata'),\n});\n\n// TaskQueryParams schema\nconst taskQueryParamsSchema = z.object({\n id: z.string().describe('Task id'),\n historyLength: z.number().optional().describe('Number of recent messages to be retrieved'),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\n// TaskIdParams schema\nconst taskIdParamsSchema = z.object({\n id: z.string().describe('Task id'),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const taskResubscribeParamsSchema = taskIdParamsSchema;\n\nexport const setPushNotificationConfigParamsSchema = z.object({\n taskId: z.string().describe('Task id'),\n pushNotificationConfig: pushNotificationConfigSchema,\n});\n\nconst getPushNotificationConfigParamsSchema = taskIdParamsSchema.extend({\n pushNotificationConfigId: z.string().optional().describe('Push notification config id'),\n});\n\nexport const listPushNotificationConfigParamsSchema = taskIdParamsSchema;\n\nexport const deletePushNotificationConfigParamsSchema = taskIdParamsSchema.extend({\n pushNotificationConfigId: z.string().describe('Push notification config id'),\n});\n\n// Legacy schema for backwards compatibility\nexport const messageSendBodySchema = z.object({\n message: messageSchema,\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const taskQueryBodySchema = z.object({\n id: z.string(),\n});\n\nconst requestBaseSchema = {\n jsonrpc: z.literal('2.0'),\n id: z.union([z.string(), z.number()]),\n} as const;\n\nexport const agentExecutionBodySchema = z.discriminatedUnion('method', [\n z.object({\n ...requestBaseSchema,\n method: z.literal('message/send'),\n params: messageSendParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('message/stream'),\n params: messageSendParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('tasks/get'),\n params: taskQueryParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('tasks/cancel'),\n params: taskIdParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('tasks/resubscribe'),\n params: taskResubscribeParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('tasks/pushNotificationConfig/set'),\n params: setPushNotificationConfigParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('tasks/pushNotificationConfig/get'),\n params: getPushNotificationConfigParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('tasks/pushNotificationConfig/list'),\n params: listPushNotificationConfigParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('tasks/pushNotificationConfig/delete'),\n params: deletePushNotificationConfigParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('agent/getAuthenticatedExtendedCard'),\n }),\n]);\n\n// Response schemas\nexport const agentCardResponseSchema = z.object({\n additionalInterfaces: z.array(z.unknown()).optional(),\n name: z.string(),\n description: z.string(),\n url: z.string(),\n protocolVersion: z.string(),\n provider: z\n .object({\n organization: z.string(),\n url: z.string(),\n })\n .optional(),\n security: z.array(z.record(z.string(), z.array(z.string()))).optional(),\n securitySchemes: z.record(z.string(), z.unknown()).optional(),\n version: z.string(),\n capabilities: z.object({\n extensions: z.array(z.unknown()).optional(),\n streaming: z.boolean().optional(),\n pushNotifications: z.boolean().optional(),\n stateTransitionHistory: z.boolean().optional(),\n }),\n defaultInputModes: z.array(z.string()),\n defaultOutputModes: z.array(z.string()),\n supportsAuthenticatedExtendedCard: z.boolean().optional(),\n signatures: z\n .array(\n z.object({\n protected: z.string(),\n signature: z.string(),\n header: z.record(z.string(), z.unknown()).optional(),\n }),\n )\n .optional(),\n skills: z.array(\n z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n tags: z.array(z.string()).optional(),\n }),\n ),\n});\n\nexport const taskResponseSchema = z.unknown(); // Complex task state structure\n\nexport const agentExecutionResponseSchema = z.unknown(); // JSON-RPC response\n"],"mappings":"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"}