@mastra/server 1.29.0-alpha.5 → 1.29.0

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 (266) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/{chunk-7E2JRYIE.js → chunk-2GVTUHUO.js} +4 -4
  3. package/dist/{chunk-7E2JRYIE.js.map → chunk-2GVTUHUO.js.map} +1 -1
  4. package/dist/{chunk-JOC7WKJ2.cjs → chunk-2THJ6ADC.cjs} +28 -28
  5. package/dist/{chunk-JOC7WKJ2.cjs.map → chunk-2THJ6ADC.cjs.map} +1 -1
  6. package/dist/{chunk-WHJULBHV.cjs → chunk-2XESZTZT.cjs} +11 -11
  7. package/dist/{chunk-WHJULBHV.cjs.map → chunk-2XESZTZT.cjs.map} +1 -1
  8. package/dist/{chunk-4IYALPXO.js → chunk-3224ZDIF.js} +4 -4
  9. package/dist/{chunk-4IYALPXO.js.map → chunk-3224ZDIF.js.map} +1 -1
  10. package/dist/{chunk-BPA7HXKB.js → chunk-34CASLHS.js} +5 -5
  11. package/dist/{chunk-BPA7HXKB.js.map → chunk-34CASLHS.js.map} +1 -1
  12. package/dist/{chunk-5KM5P23Q.cjs → chunk-44HBA2O4.cjs} +28 -28
  13. package/dist/{chunk-5KM5P23Q.cjs.map → chunk-44HBA2O4.cjs.map} +1 -1
  14. package/dist/{chunk-65MQD7JR.js → chunk-4B22X3FH.js} +4 -4
  15. package/dist/{chunk-65MQD7JR.js.map → chunk-4B22X3FH.js.map} +1 -1
  16. package/dist/{chunk-I2ZMOQ7J.js → chunk-4C3YZI6Z.js} +6 -4
  17. package/dist/chunk-4C3YZI6Z.js.map +1 -0
  18. package/dist/{chunk-PQETTP2F.js → chunk-4EKPT57S.js} +3 -3
  19. package/dist/{chunk-PQETTP2F.js.map → chunk-4EKPT57S.js.map} +1 -1
  20. package/dist/{chunk-MROI3O6S.cjs → chunk-4LVIBP3H.cjs} +10 -10
  21. package/dist/{chunk-MROI3O6S.cjs.map → chunk-4LVIBP3H.cjs.map} +1 -1
  22. package/dist/{chunk-BIQ74OIO.cjs → chunk-4P7D66VB.cjs} +3 -2
  23. package/dist/chunk-4P7D66VB.cjs.map +1 -0
  24. package/dist/{chunk-VGR4DSXQ.cjs → chunk-6CI3CSK4.cjs} +10 -10
  25. package/dist/{chunk-VGR4DSXQ.cjs.map → chunk-6CI3CSK4.cjs.map} +1 -1
  26. package/dist/{chunk-HWK6K3DW.cjs → chunk-6CJWWTVS.cjs} +6 -6
  27. package/dist/{chunk-HWK6K3DW.cjs.map → chunk-6CJWWTVS.cjs.map} +1 -1
  28. package/dist/{chunk-YI2LXCWB.js → chunk-6KMLRD3J.js} +3 -3
  29. package/dist/{chunk-YI2LXCWB.js.map → chunk-6KMLRD3J.js.map} +1 -1
  30. package/dist/{chunk-7GNVIWZY.js → chunk-6P6HIITF.js} +4 -4
  31. package/dist/{chunk-7GNVIWZY.js.map → chunk-6P6HIITF.js.map} +1 -1
  32. package/dist/{chunk-EFP5PJBY.cjs → chunk-6UWPE4WD.cjs} +38 -38
  33. package/dist/{chunk-EFP5PJBY.cjs.map → chunk-6UWPE4WD.cjs.map} +1 -1
  34. package/dist/{chunk-OGZ6ROYD.js → chunk-77UDRX7O.js} +4 -4
  35. package/dist/{chunk-OGZ6ROYD.js.map → chunk-77UDRX7O.js.map} +1 -1
  36. package/dist/{chunk-S7REEERK.cjs → chunk-7KKKNNRH.cjs} +10 -10
  37. package/dist/{chunk-S7REEERK.cjs.map → chunk-7KKKNNRH.cjs.map} +1 -1
  38. package/dist/{chunk-OV64VJ5L.js → chunk-7UQ6VG3C.js} +4 -4
  39. package/dist/{chunk-OV64VJ5L.js.map → chunk-7UQ6VG3C.js.map} +1 -1
  40. package/dist/{chunk-E2PSSSTN.cjs → chunk-AZI2SAH6.cjs} +14 -14
  41. package/dist/{chunk-E2PSSSTN.cjs.map → chunk-AZI2SAH6.cjs.map} +1 -1
  42. package/dist/{chunk-LTLTS3RN.js → chunk-B5VM3A53.js} +3 -3
  43. package/dist/{chunk-LTLTS3RN.js.map → chunk-B5VM3A53.js.map} +1 -1
  44. package/dist/{chunk-Q2N5GR7X.cjs → chunk-B65LZWBE.cjs} +10 -10
  45. package/dist/{chunk-Q2N5GR7X.cjs.map → chunk-B65LZWBE.cjs.map} +1 -1
  46. package/dist/{chunk-LVGLLXRY.cjs → chunk-BLINU5LG.cjs} +7 -7
  47. package/dist/{chunk-LVGLLXRY.cjs.map → chunk-BLINU5LG.cjs.map} +1 -1
  48. package/dist/{chunk-DY6OYCMG.js → chunk-BUDY5TFR.js} +3 -3
  49. package/dist/{chunk-DY6OYCMG.js.map → chunk-BUDY5TFR.js.map} +1 -1
  50. package/dist/{chunk-NRFMMYTG.js → chunk-C4NU6EHX.js} +3 -3
  51. package/dist/{chunk-NRFMMYTG.js.map → chunk-C4NU6EHX.js.map} +1 -1
  52. package/dist/{chunk-ANP3ESTF.js → chunk-C4T45CIM.js} +3 -3
  53. package/dist/{chunk-ANP3ESTF.js.map → chunk-C4T45CIM.js.map} +1 -1
  54. package/dist/{chunk-7VXUWPHS.cjs → chunk-CDSA5YUY.cjs} +10 -10
  55. package/dist/{chunk-7VXUWPHS.cjs.map → chunk-CDSA5YUY.cjs.map} +1 -1
  56. package/dist/{chunk-6N5NDQVM.cjs → chunk-CNTWPG57.cjs} +75 -9
  57. package/dist/chunk-CNTWPG57.cjs.map +1 -0
  58. package/dist/{chunk-PFEVOAAN.js → chunk-D4DWAPZU.js} +4 -4
  59. package/dist/{chunk-PFEVOAAN.js.map → chunk-D4DWAPZU.js.map} +1 -1
  60. package/dist/{chunk-TNNU7IZK.cjs → chunk-DNY4PR4R.cjs} +24 -24
  61. package/dist/{chunk-TNNU7IZK.cjs.map → chunk-DNY4PR4R.cjs.map} +1 -1
  62. package/dist/{chunk-N6S7KI4E.js → chunk-E4SZPFH3.js} +4 -4
  63. package/dist/{chunk-N6S7KI4E.js.map → chunk-E4SZPFH3.js.map} +1 -1
  64. package/dist/{chunk-R4DZSQYI.cjs → chunk-EQR2JWYK.cjs} +30 -30
  65. package/dist/{chunk-R4DZSQYI.cjs.map → chunk-EQR2JWYK.cjs.map} +1 -1
  66. package/dist/{chunk-IO7PPBD4.js → chunk-EUB6UXBI.js} +4 -4
  67. package/dist/{chunk-IO7PPBD4.js.map → chunk-EUB6UXBI.js.map} +1 -1
  68. package/dist/{chunk-OLPARCPM.cjs → chunk-F7DL7V5F.cjs} +5 -5
  69. package/dist/{chunk-OLPARCPM.cjs.map → chunk-F7DL7V5F.cjs.map} +1 -1
  70. package/dist/{chunk-TFEHE3UN.js → chunk-FJC2FLV6.js} +4 -4
  71. package/dist/{chunk-TFEHE3UN.js.map → chunk-FJC2FLV6.js.map} +1 -1
  72. package/dist/{chunk-2MWLNHBG.cjs → chunk-FTQRGT3E.cjs} +10 -10
  73. package/dist/{chunk-2MWLNHBG.cjs.map → chunk-FTQRGT3E.cjs.map} +1 -1
  74. package/dist/{chunk-PXAMRQAF.js → chunk-GGCDSOHW.js} +3 -2
  75. package/dist/chunk-GGCDSOHW.js.map +1 -0
  76. package/dist/{chunk-53QVLUCB.cjs → chunk-HBMTKCJL.cjs} +3 -3
  77. package/dist/{chunk-53QVLUCB.cjs.map → chunk-HBMTKCJL.cjs.map} +1 -1
  78. package/dist/{chunk-THQCPWBO.cjs → chunk-HK6NFKTA.cjs} +11 -11
  79. package/dist/{chunk-THQCPWBO.cjs.map → chunk-HK6NFKTA.cjs.map} +1 -1
  80. package/dist/{chunk-H23VTK56.js → chunk-IT6MRNKH.js} +3 -3
  81. package/dist/{chunk-H23VTK56.js.map → chunk-IT6MRNKH.js.map} +1 -1
  82. package/dist/{chunk-ODOZS3ZD.cjs → chunk-JOGDEYIU.cjs} +39 -39
  83. package/dist/{chunk-ODOZS3ZD.cjs.map → chunk-JOGDEYIU.cjs.map} +1 -1
  84. package/dist/{chunk-PA2BYLKF.js → chunk-KEFOJ6EP.js} +39 -39
  85. package/dist/{chunk-PA2BYLKF.js.map → chunk-KEFOJ6EP.js.map} +1 -1
  86. package/dist/{chunk-EBKNX5RM.cjs → chunk-KTS4NFM5.cjs} +44 -44
  87. package/dist/{chunk-EBKNX5RM.cjs.map → chunk-KTS4NFM5.cjs.map} +1 -1
  88. package/dist/{chunk-AU3AUZU7.js → chunk-LCYZZIAU.js} +172 -1081
  89. package/dist/chunk-LCYZZIAU.js.map +1 -0
  90. package/dist/{chunk-CKZMJIUO.cjs → chunk-MGLEDDTR.cjs} +6 -6
  91. package/dist/{chunk-CKZMJIUO.cjs.map → chunk-MGLEDDTR.cjs.map} +1 -1
  92. package/dist/{chunk-T4B6NNIT.js → chunk-MIZHXCAC.js} +4 -4
  93. package/dist/{chunk-T4B6NNIT.js.map → chunk-MIZHXCAC.js.map} +1 -1
  94. package/dist/{chunk-OGV23F3H.cjs → chunk-MLV3OU36.cjs} +11 -11
  95. package/dist/{chunk-OGV23F3H.cjs.map → chunk-MLV3OU36.cjs.map} +1 -1
  96. package/dist/{chunk-EETF75CE.cjs → chunk-MPMM5D3U.cjs} +10 -10
  97. package/dist/{chunk-EETF75CE.cjs.map → chunk-MPMM5D3U.cjs.map} +1 -1
  98. package/dist/{chunk-FIP7YYSO.js → chunk-N32V7VSV.js} +4 -4
  99. package/dist/{chunk-FIP7YYSO.js.map → chunk-N32V7VSV.js.map} +1 -1
  100. package/dist/{chunk-6SBH6SYP.js → chunk-NCOIQYTM.js} +3 -3
  101. package/dist/{chunk-6SBH6SYP.js.map → chunk-NCOIQYTM.js.map} +1 -1
  102. package/dist/{chunk-53GID5Z5.cjs → chunk-NIGJATIB.cjs} +16 -16
  103. package/dist/{chunk-53GID5Z5.cjs.map → chunk-NIGJATIB.cjs.map} +1 -1
  104. package/dist/{chunk-4Y5P2GYV.js → chunk-NVH5GGIR.js} +3 -3
  105. package/dist/{chunk-4Y5P2GYV.js.map → chunk-NVH5GGIR.js.map} +1 -1
  106. package/dist/{chunk-NUGBBASK.js → chunk-OF6LR77W.js} +3 -3
  107. package/dist/{chunk-NUGBBASK.js.map → chunk-OF6LR77W.js.map} +1 -1
  108. package/dist/{chunk-RC6YILOB.cjs → chunk-OY6VG2JH.cjs} +265 -1174
  109. package/dist/chunk-OY6VG2JH.cjs.map +1 -0
  110. package/dist/{chunk-2QNJHTKM.cjs → chunk-PYPOKT4J.cjs} +10 -10
  111. package/dist/{chunk-2QNJHTKM.cjs.map → chunk-PYPOKT4J.cjs.map} +1 -1
  112. package/dist/{chunk-WFVK6ZXR.cjs → chunk-Q4CH5CG5.cjs} +6 -6
  113. package/dist/{chunk-WFVK6ZXR.cjs.map → chunk-Q4CH5CG5.cjs.map} +1 -1
  114. package/dist/{chunk-5UKYK7YK.cjs → chunk-Q7GNNLCY.cjs} +39 -39
  115. package/dist/{chunk-5UKYK7YK.cjs.map → chunk-Q7GNNLCY.cjs.map} +1 -1
  116. package/dist/{chunk-HU57X24H.js → chunk-QZSLYLW4.js} +3 -3
  117. package/dist/{chunk-HU57X24H.js.map → chunk-QZSLYLW4.js.map} +1 -1
  118. package/dist/{chunk-R32YJVMM.js → chunk-ROPYYPBZ.js} +269 -88
  119. package/dist/chunk-ROPYYPBZ.js.map +1 -0
  120. package/dist/{chunk-B346SGRP.cjs → chunk-RRJKJPUJ.cjs} +11 -11
  121. package/dist/{chunk-B346SGRP.cjs.map → chunk-RRJKJPUJ.cjs.map} +1 -1
  122. package/dist/{chunk-6VT7WJZZ.cjs → chunk-SJGVGNXJ.cjs} +279 -97
  123. package/dist/chunk-SJGVGNXJ.cjs.map +1 -0
  124. package/dist/{chunk-E3PJE3VW.js → chunk-SRVUIHVN.js} +3 -3
  125. package/dist/{chunk-E3PJE3VW.js.map → chunk-SRVUIHVN.js.map} +1 -1
  126. package/dist/{chunk-EFMMD5NL.cjs → chunk-T32ZPNKL.cjs} +8 -8
  127. package/dist/{chunk-EFMMD5NL.cjs.map → chunk-T32ZPNKL.cjs.map} +1 -1
  128. package/dist/{chunk-ZEVZ6OJY.js → chunk-TJNZEYLA.js} +75 -9
  129. package/dist/chunk-TJNZEYLA.js.map +1 -0
  130. package/dist/{chunk-HTCLQOY7.cjs → chunk-TRMAUC6D.cjs} +9 -9
  131. package/dist/{chunk-HTCLQOY7.cjs.map → chunk-TRMAUC6D.cjs.map} +1 -1
  132. package/dist/{chunk-YJQYJ5WD.cjs → chunk-U4Y53V3G.cjs} +6 -6
  133. package/dist/{chunk-YJQYJ5WD.cjs.map → chunk-U4Y53V3G.cjs.map} +1 -1
  134. package/dist/{chunk-POGEZPLQ.js → chunk-UMLVM74X.js} +4 -4
  135. package/dist/{chunk-POGEZPLQ.js.map → chunk-UMLVM74X.js.map} +1 -1
  136. package/dist/{chunk-VOAVPKTH.js → chunk-VXTJHEII.js} +3 -3
  137. package/dist/{chunk-VOAVPKTH.js.map → chunk-VXTJHEII.js.map} +1 -1
  138. package/dist/{chunk-245BXYGJ.cjs → chunk-WF6X4HFH.cjs} +11 -11
  139. package/dist/{chunk-245BXYGJ.cjs.map → chunk-WF6X4HFH.cjs.map} +1 -1
  140. package/dist/{chunk-OGEXISZT.cjs → chunk-X2QCUZYL.cjs} +11 -11
  141. package/dist/{chunk-OGEXISZT.cjs.map → chunk-X2QCUZYL.cjs.map} +1 -1
  142. package/dist/{chunk-HR6QEEPE.cjs → chunk-XKOJ2N2Y.cjs} +8 -6
  143. package/dist/chunk-XKOJ2N2Y.cjs.map +1 -0
  144. package/dist/{chunk-IQA7HL2V.js → chunk-XNGQB4ZW.js} +3 -3
  145. package/dist/{chunk-IQA7HL2V.js.map → chunk-XNGQB4ZW.js.map} +1 -1
  146. package/dist/{chunk-P7QF3UG4.js → chunk-YF6GPVGV.js} +3 -3
  147. package/dist/{chunk-P7QF3UG4.js.map → chunk-YF6GPVGV.js.map} +1 -1
  148. package/dist/{chunk-HSU5D2KT.js → chunk-YV25CDYJ.js} +3 -3
  149. package/dist/{chunk-HSU5D2KT.js.map → chunk-YV25CDYJ.js.map} +1 -1
  150. package/dist/{chunk-ERKUFMCT.js → chunk-Z73DMS63.js} +3 -3
  151. package/dist/{chunk-ERKUFMCT.js.map → chunk-Z73DMS63.js.map} +1 -1
  152. package/dist/{chunk-OES3CANB.js → chunk-ZZJCYUVX.js} +3 -3
  153. package/dist/{chunk-OES3CANB.js.map → chunk-ZZJCYUVX.js.map} +1 -1
  154. package/dist/docs/SKILL.md +1 -1
  155. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  156. package/dist/{observational-memory-YYO73QMY-CHIPDTZY.cjs → observational-memory-YYO73QMY-KGMPHQD4.cjs} +26 -26
  157. package/dist/{observational-memory-YYO73QMY-CHIPDTZY.cjs.map → observational-memory-YYO73QMY-KGMPHQD4.cjs.map} +1 -1
  158. package/dist/{observational-memory-YYO73QMY-JNLMPY5B.js → observational-memory-YYO73QMY-Q4SXDDYL.js} +3 -3
  159. package/dist/{observational-memory-YYO73QMY-JNLMPY5B.js.map → observational-memory-YYO73QMY-Q4SXDDYL.js.map} +1 -1
  160. package/dist/{probe-image-size-H2PYJKCK.cjs → probe-image-size-7HF7Q24F.cjs} +12 -113
  161. package/dist/probe-image-size-7HF7Q24F.cjs.map +1 -0
  162. package/dist/{probe-image-size-QWKVSEOF.js → probe-image-size-M5NYSF5D.js} +12 -113
  163. package/dist/probe-image-size-M5NYSF5D.js.map +1 -0
  164. package/dist/server/a2a/store.cjs +83 -4
  165. package/dist/server/a2a/store.cjs.map +1 -1
  166. package/dist/server/a2a/store.d.ts +23 -0
  167. package/dist/server/a2a/store.d.ts.map +1 -1
  168. package/dist/server/a2a/store.js +83 -4
  169. package/dist/server/a2a/store.js.map +1 -1
  170. package/dist/server/handlers/a2a.cjs +13 -9
  171. package/dist/server/handlers/a2a.d.ts +304 -42
  172. package/dist/server/handlers/a2a.d.ts.map +1 -1
  173. package/dist/server/handlers/a2a.js +1 -1
  174. package/dist/server/handlers/agent-builder.cjs +16 -16
  175. package/dist/server/handlers/agent-builder.js +1 -1
  176. package/dist/server/handlers/agent-versions.cjs +8 -8
  177. package/dist/server/handlers/agent-versions.js +1 -1
  178. package/dist/server/handlers/agents.cjs +37 -37
  179. package/dist/server/handlers/agents.js +1 -1
  180. package/dist/server/handlers/auth.cjs +11 -11
  181. package/dist/server/handlers/auth.js +1 -1
  182. package/dist/server/handlers/background-tasks.cjs +4 -4
  183. package/dist/server/handlers/background-tasks.js +1 -1
  184. package/dist/server/handlers/conversations.cjs +5 -5
  185. package/dist/server/handlers/conversations.js +1 -1
  186. package/dist/server/handlers/datasets.cjs +26 -26
  187. package/dist/server/handlers/datasets.js +1 -1
  188. package/dist/server/handlers/logs.cjs +4 -4
  189. package/dist/server/handlers/logs.js +1 -1
  190. package/dist/server/handlers/mcp-client-versions.cjs +8 -8
  191. package/dist/server/handlers/mcp-client-versions.js +1 -1
  192. package/dist/server/handlers/mcp.cjs +9 -9
  193. package/dist/server/handlers/mcp.js +1 -1
  194. package/dist/server/handlers/memory.cjs +27 -27
  195. package/dist/server/handlers/memory.js +1 -1
  196. package/dist/server/handlers/observability-new-endpoints.cjs +27 -27
  197. package/dist/server/handlers/observability-new-endpoints.js +1 -1
  198. package/dist/server/handlers/observability.cjs +35 -35
  199. package/dist/server/handlers/observability.js +2 -2
  200. package/dist/server/handlers/processor-providers.cjs +3 -3
  201. package/dist/server/handlers/processor-providers.js +1 -1
  202. package/dist/server/handlers/processors.cjs +4 -4
  203. package/dist/server/handlers/processors.js +1 -1
  204. package/dist/server/handlers/prompt-block-versions.cjs +8 -8
  205. package/dist/server/handlers/prompt-block-versions.js +1 -1
  206. package/dist/server/handlers/responses.cjs +4 -4
  207. package/dist/server/handlers/responses.js +1 -1
  208. package/dist/server/handlers/scorer-versions.cjs +8 -8
  209. package/dist/server/handlers/scorer-versions.js +1 -1
  210. package/dist/server/handlers/scores.cjs +7 -7
  211. package/dist/server/handlers/scores.js +1 -1
  212. package/dist/server/handlers/stored-agents.cjs +7 -7
  213. package/dist/server/handlers/stored-agents.js +1 -1
  214. package/dist/server/handlers/stored-mcp-clients.cjs +6 -6
  215. package/dist/server/handlers/stored-mcp-clients.js +1 -1
  216. package/dist/server/handlers/stored-prompt-blocks.cjs +6 -6
  217. package/dist/server/handlers/stored-prompt-blocks.js +1 -1
  218. package/dist/server/handlers/stored-scorers.cjs +6 -6
  219. package/dist/server/handlers/stored-scorers.js +1 -1
  220. package/dist/server/handlers/stored-skills.cjs +7 -7
  221. package/dist/server/handlers/stored-skills.js +1 -1
  222. package/dist/server/handlers/stored-workspaces.cjs +6 -6
  223. package/dist/server/handlers/stored-workspaces.js +1 -1
  224. package/dist/server/handlers/system.cjs +2 -2
  225. package/dist/server/handlers/system.d.ts +2 -0
  226. package/dist/server/handlers/system.d.ts.map +1 -1
  227. package/dist/server/handlers/system.js +1 -1
  228. package/dist/server/handlers/tool-providers.cjs +5 -5
  229. package/dist/server/handlers/tool-providers.js +1 -1
  230. package/dist/server/handlers/tools.cjs +6 -6
  231. package/dist/server/handlers/tools.js +1 -1
  232. package/dist/server/handlers/vector.cjs +16 -16
  233. package/dist/server/handlers/vector.js +1 -1
  234. package/dist/server/handlers/voice.cjs +8 -8
  235. package/dist/server/handlers/voice.js +1 -1
  236. package/dist/server/handlers/workflows.cjs +24 -24
  237. package/dist/server/handlers/workflows.js +1 -1
  238. package/dist/server/handlers/workspace.cjs +26 -26
  239. package/dist/server/handlers/workspace.js +1 -1
  240. package/dist/server/handlers.cjs +30 -30
  241. package/dist/server/handlers.js +15 -15
  242. package/dist/server/schemas/a2a.d.ts +158 -13
  243. package/dist/server/schemas/a2a.d.ts.map +1 -1
  244. package/dist/server/schemas/index.cjs +86 -86
  245. package/dist/server/schemas/index.js +3 -3
  246. package/dist/server/schemas/system.d.ts +1 -0
  247. package/dist/server/schemas/system.d.ts.map +1 -1
  248. package/dist/server/server-adapter/index.cjs +310 -310
  249. package/dist/server/server-adapter/index.js +37 -37
  250. package/dist/server/server-adapter/routes/a2a.d.ts +266 -26
  251. package/dist/server/server-adapter/routes/a2a.d.ts.map +1 -1
  252. package/dist/server/server-adapter/routes/system.d.ts +2 -0
  253. package/dist/server/server-adapter/routes/system.d.ts.map +1 -1
  254. package/package.json +8 -8
  255. package/dist/chunk-6N5NDQVM.cjs.map +0 -1
  256. package/dist/chunk-6VT7WJZZ.cjs.map +0 -1
  257. package/dist/chunk-AU3AUZU7.js.map +0 -1
  258. package/dist/chunk-BIQ74OIO.cjs.map +0 -1
  259. package/dist/chunk-HR6QEEPE.cjs.map +0 -1
  260. package/dist/chunk-I2ZMOQ7J.js.map +0 -1
  261. package/dist/chunk-PXAMRQAF.js.map +0 -1
  262. package/dist/chunk-R32YJVMM.js.map +0 -1
  263. package/dist/chunk-RC6YILOB.cjs.map +0 -1
  264. package/dist/chunk-ZEVZ6OJY.js.map +0 -1
  265. package/dist/probe-image-size-H2PYJKCK.cjs.map +0 -1
  266. package/dist/probe-image-size-QWKVSEOF.js.map +0 -1
@@ -1,7 +1,8 @@
1
- import { agentCardResponseSchema, a2aAgentIdPathParams, agentExecutionResponseSchema, agentExecutionBodySchema } from './chunk-ZEVZ6OJY.js';
2
- import { getAgentFromSystem } from './chunk-T4B6NNIT.js';
3
- import { convertInstructionsToString } from './chunk-ERKUFMCT.js';
4
- import { createRoute } from './chunk-PA2BYLKF.js';
1
+ import { agentCardResponseSchema, a2aAgentIdPathParams, agentExecutionResponseSchema, agentExecutionBodySchema } from './chunk-TJNZEYLA.js';
2
+ import { getPublicOrigin } from './chunk-SRVUIHVN.js';
3
+ import { getAgentFromSystem } from './chunk-MIZHXCAC.js';
4
+ import { convertInstructionsToString } from './chunk-Z73DMS63.js';
5
+ import { createRoute } from './chunk-KEFOJ6EP.js';
5
6
  import { __export } from './chunk-PR4QN5HX.js';
6
7
  import { MastraA2AError } from '@mastra/core/a2a';
7
8
  import { z } from 'zod/v4';
@@ -16,7 +17,8 @@ __export(a2a_exports, {
16
17
  handleMessageSend: () => handleMessageSend,
17
18
  handleMessageStream: () => handleMessageStream,
18
19
  handleTaskCancel: () => handleTaskCancel,
19
- handleTaskGet: () => handleTaskGet
20
+ handleTaskGet: () => handleTaskGet,
21
+ handleTaskResubscribe: () => handleTaskResubscribe
20
22
  });
21
23
  function normalizeError(error, reqId, taskId, logger) {
22
24
  let a2aError;
@@ -203,6 +205,23 @@ var messageSendParamsSchema = z.object({
203
205
  metadata: z.record(z.string(), z.any()).optional()
204
206
  })
205
207
  });
208
+ function createAgentCardDefaults() {
209
+ return {
210
+ protocolVersion: "0.3.0",
211
+ additionalInterfaces: [],
212
+ supportsAuthenticatedExtendedCard: false,
213
+ security: [],
214
+ securitySchemes: {},
215
+ capabilities: {
216
+ streaming: true,
217
+ pushNotifications: false,
218
+ stateTransitionHistory: false,
219
+ extensions: []
220
+ },
221
+ defaultInputModes: ["text/plain"],
222
+ defaultOutputModes: ["text/plain"]
223
+ };
224
+ }
206
225
  async function getAgentCardByIdHandler({
207
226
  mastra,
208
227
  agentId,
@@ -222,14 +241,7 @@ async function getAgentCardByIdHandler({
222
241
  url: executionUrl,
223
242
  provider,
224
243
  version,
225
- capabilities: {
226
- streaming: true,
227
- // All agents support streaming
228
- pushNotifications: false,
229
- stateTransitionHistory: false
230
- },
231
- defaultInputModes: ["text"],
232
- defaultOutputModes: ["text"],
244
+ ...createAgentCardDefaults(),
233
245
  // Convert agent tools to skills format for A2A protocol
234
246
  skills: Object.entries(tools).map(([toolId, tool]) => ({
235
247
  id: toolId,
@@ -241,6 +253,17 @@ async function getAgentCardByIdHandler({
241
253
  };
242
254
  return agentCard;
243
255
  }
256
+ function getA2AExecutionUrl({
257
+ agentId,
258
+ request,
259
+ routePrefix
260
+ }) {
261
+ const executionPath = `${routePrefix ?? ""}/a2a/${agentId}`;
262
+ if (!request) {
263
+ return executionPath;
264
+ }
265
+ return `${getPublicOrigin(request)}${executionPath}`;
266
+ }
244
267
  function validateMessageSendParams(params) {
245
268
  try {
246
269
  messageSendParamsSchema.parse(params);
@@ -251,6 +274,19 @@ function validateMessageSendParams(params) {
251
274
  throw error;
252
275
  }
253
276
  }
277
+ function createTextArtifactUpdate({ taskId, contextId, text }) {
278
+ return {
279
+ kind: "artifact-update",
280
+ taskId,
281
+ contextId,
282
+ lastChunk: true,
283
+ artifact: {
284
+ artifactId: `${taskId}:response`,
285
+ name: "response.txt",
286
+ parts: [{ kind: "text", text }]
287
+ }
288
+ };
289
+ }
254
290
  async function handleMessageSend({
255
291
  requestId,
256
292
  params,
@@ -285,19 +321,19 @@ async function handleMessageSend({
285
321
  requestContext,
286
322
  ...contextId ? { threadId: contextId, resourceId } : {}
287
323
  });
324
+ if (result.text) {
325
+ currentData = applyUpdateToTask(
326
+ currentData,
327
+ createTextArtifactUpdate({
328
+ taskId: currentData.id,
329
+ contextId: currentData.contextId,
330
+ text: result.text
331
+ })
332
+ );
333
+ }
288
334
  currentData = applyUpdateToTask(currentData, {
289
335
  state: "completed",
290
- message: {
291
- messageId: crypto.randomUUID(),
292
- role: "agent",
293
- parts: [
294
- {
295
- kind: "text",
296
- text: result.text
297
- }
298
- ],
299
- kind: "message"
300
- }
336
+ message: void 0
301
337
  });
302
338
  currentData.metadata = {
303
339
  ...currentData.metadata,
@@ -355,7 +391,19 @@ async function* handleMessageStream({
355
391
  logger,
356
392
  requestContext
357
393
  }) {
358
- yield createSuccessResponse(requestId, {
394
+ validateMessageSendParams(params);
395
+ const { message, metadata } = params;
396
+ const { contextId } = message;
397
+ const taskId = message.taskId || crypto.randomUUID();
398
+ let currentData = await loadOrCreateTask({
399
+ taskId,
400
+ taskStore,
401
+ agentId,
402
+ message,
403
+ contextId,
404
+ metadata
405
+ });
406
+ currentData = applyUpdateToTask(currentData, {
359
407
  state: "working",
360
408
  message: {
361
409
  messageId: crypto.randomUUID(),
@@ -364,24 +412,152 @@ async function* handleMessageStream({
364
412
  parts: [{ kind: "text", text: "Generating response..." }]
365
413
  }
366
414
  });
367
- let result;
415
+ await taskStore.save({ agentId, data: currentData });
416
+ yield createSuccessResponse(requestId, currentData);
368
417
  try {
369
- result = await handleMessageSend({
370
- requestId,
371
- params,
372
- taskStore,
373
- agent,
374
- agentId,
418
+ const resourceId = metadata?.resourceId ?? message.metadata?.resourceId ?? agentId;
419
+ const result = await agent.generate([convertToCoreMessage(message)], {
420
+ runId: taskId,
375
421
  requestContext,
376
- logger
422
+ ...contextId ? { threadId: contextId, resourceId } : {}
423
+ });
424
+ const artifactUpdate = result.text && createTextArtifactUpdate({
425
+ taskId: currentData.id,
426
+ contextId: currentData.contextId,
427
+ text: result.text
428
+ });
429
+ if (artifactUpdate) {
430
+ currentData = applyUpdateToTask(currentData, artifactUpdate);
431
+ }
432
+ currentData = applyUpdateToTask(currentData, {
433
+ state: "completed",
434
+ message: void 0
435
+ });
436
+ currentData.metadata = {
437
+ ...currentData.metadata,
438
+ execution: {
439
+ toolCalls: result.toolCalls,
440
+ toolResults: result.toolResults,
441
+ usage: result.usage,
442
+ finishReason: result.finishReason
443
+ }
444
+ };
445
+ await taskStore.save({ agentId, data: currentData });
446
+ if (artifactUpdate) {
447
+ yield createSuccessResponse(requestId, artifactUpdate);
448
+ }
449
+ } catch (handlerError) {
450
+ currentData = applyUpdateToTask(currentData, {
451
+ state: "failed",
452
+ message: {
453
+ messageId: crypto.randomUUID(),
454
+ role: "agent",
455
+ parts: [
456
+ {
457
+ kind: "text",
458
+ text: `Handler failed: ${handlerError instanceof Error ? handlerError.message : String(handlerError)}`
459
+ }
460
+ ],
461
+ kind: "message"
462
+ }
377
463
  });
378
- } catch (err) {
379
- if (!(err instanceof MastraA2AError)) {
380
- throw err;
464
+ try {
465
+ await taskStore.save({ agentId, data: currentData });
466
+ } catch (saveError) {
467
+ logger?.error(`Failed to save task ${currentData.id} after handler error:`, saveError?.message);
381
468
  }
382
- result = createErrorResponse(requestId, err.toJSONRPCError());
383
469
  }
384
- yield result;
470
+ yield createSuccessResponse(requestId, {
471
+ kind: "status-update",
472
+ taskId: currentData.id,
473
+ contextId: currentData.contextId,
474
+ status: currentData.status,
475
+ final: true
476
+ });
477
+ }
478
+ async function* handleTaskResubscribe({
479
+ requestId,
480
+ taskStore,
481
+ agentId,
482
+ taskId,
483
+ abortSignal
484
+ }) {
485
+ let snapshot = taskStore.loadWithVersion({ agentId, taskId });
486
+ if (!snapshot) {
487
+ throw MastraA2AError.taskNotFound(taskId);
488
+ }
489
+ const finalStates = ["completed", "failed", "canceled"];
490
+ while (true) {
491
+ const { task, version } = snapshot;
492
+ const isFinal = finalStates.includes(task.status.state);
493
+ yield createSuccessResponse(requestId, {
494
+ kind: "status-update",
495
+ taskId: task.id,
496
+ contextId: task.contextId,
497
+ status: task.status,
498
+ final: isFinal
499
+ });
500
+ if (isFinal) {
501
+ return;
502
+ }
503
+ const nextUpdate = await taskStore.waitForNextUpdate({
504
+ agentId,
505
+ taskId,
506
+ afterVersion: version,
507
+ signal: abortSignal
508
+ });
509
+ snapshot = nextUpdate;
510
+ }
511
+ }
512
+ function getTaskIdFromParams(params) {
513
+ if (!params || typeof params !== "object") {
514
+ return void 0;
515
+ }
516
+ if ("id" in params && typeof params.id === "string") {
517
+ return params.id;
518
+ }
519
+ if ("taskId" in params && typeof params.taskId === "string") {
520
+ return params.taskId;
521
+ }
522
+ if ("message" in params && params.message && typeof params.message === "object" && "taskId" in params.message) {
523
+ return typeof params.message.taskId === "string" ? params.message.taskId : void 0;
524
+ }
525
+ return void 0;
526
+ }
527
+ function isAsyncIterable(value) {
528
+ return !!value && typeof value === "object" && Symbol.asyncIterator in value;
529
+ }
530
+ function createA2AJsonResponse(payload) {
531
+ return Response.json(payload);
532
+ }
533
+ function createA2ASSEResponse(payload) {
534
+ const encoder = new TextEncoder();
535
+ const iterable = isAsyncIterable(payload) ? payload : (async function* () {
536
+ yield payload;
537
+ })();
538
+ const stream = new ReadableStream({
539
+ async start(controller) {
540
+ try {
541
+ for await (const chunk of iterable) {
542
+ controller.enqueue(encoder.encode(`data: ${JSON.stringify(chunk)}
543
+
544
+ `));
545
+ }
546
+ } catch (error) {
547
+ controller.error(error);
548
+ return;
549
+ }
550
+ controller.close();
551
+ }
552
+ });
553
+ return new Response(stream, {
554
+ headers: {
555
+ "Content-Type": "text/event-stream; charset=utf-8",
556
+ "Cache-Control": "no-cache",
557
+ Connection: "keep-alive",
558
+ "X-Accel-Buffering": "no"
559
+ }
560
+ });
385
561
  }
386
562
  async function handleTaskCancel({
387
563
  requestId,
@@ -425,15 +601,16 @@ async function getAgentExecutionHandler({
425
601
  method,
426
602
  params,
427
603
  taskStore,
428
- logger
604
+ logger,
605
+ abortSignal
429
606
  }) {
430
607
  const agent = await getAgentFromSystem({ mastra, agentId });
431
608
  let taskId;
432
609
  try {
433
- taskId = "id" in params ? params.id : params.message?.taskId || "No task ID provided";
610
+ taskId = getTaskIdFromParams(params);
434
611
  switch (method) {
435
612
  case "message/send": {
436
- const result2 = await handleMessageSend({
613
+ const result = await handleMessageSend({
437
614
  requestId,
438
615
  params,
439
616
  taskStore,
@@ -441,9 +618,9 @@ async function getAgentExecutionHandler({
441
618
  agentId,
442
619
  requestContext
443
620
  });
444
- return result2;
621
+ return result;
445
622
  }
446
- case "message/stream":
623
+ case "message/stream": {
447
624
  const result = await handleMessageStream({
448
625
  requestId,
449
626
  taskStore,
@@ -453,24 +630,40 @@ async function getAgentExecutionHandler({
453
630
  requestContext
454
631
  });
455
632
  return result;
633
+ }
456
634
  case "tasks/get": {
457
- const result2 = await handleTaskGet({
635
+ const result = await handleTaskGet({
458
636
  requestId,
459
637
  taskStore,
460
638
  agentId,
461
- taskId
639
+ taskId: taskId || "No task ID provided"
462
640
  });
463
- return result2;
641
+ return result;
464
642
  }
465
643
  case "tasks/cancel": {
466
- const result2 = await handleTaskCancel({
644
+ const result = await handleTaskCancel({
467
645
  requestId,
468
646
  taskStore,
469
647
  agentId,
470
- taskId
648
+ taskId: taskId || "No task ID provided"
471
649
  });
472
- return result2;
650
+ return result;
473
651
  }
652
+ case "tasks/resubscribe":
653
+ return await handleTaskResubscribe({
654
+ requestId,
655
+ taskStore,
656
+ agentId,
657
+ taskId: taskId || "No task ID provided",
658
+ abortSignal
659
+ });
660
+ case "tasks/pushNotificationConfig/set":
661
+ case "tasks/pushNotificationConfig/get":
662
+ case "tasks/pushNotificationConfig/list":
663
+ case "tasks/pushNotificationConfig/delete":
664
+ throw MastraA2AError.pushNotificationNotSupported();
665
+ case "agent/getAuthenticatedExtendedCard":
666
+ throw MastraA2AError.extendedAgentCardNotConfigured();
474
667
  default:
475
668
  throw MastraA2AError.methodNotFound(method);
476
669
  }
@@ -491,42 +684,24 @@ var GET_AGENT_CARD_ROUTE = createRoute({
491
684
  description: "Returns the agent card information for A2A protocol discovery",
492
685
  tags: ["Agent-to-Agent"],
493
686
  requiresAuth: true,
494
- handler: async ({ mastra, agentId, requestContext }) => {
495
- const executionUrl = `/a2a/${agentId}`;
496
- const provider = {
497
- organization: "Mastra",
498
- url: "https://mastra.ai"
499
- };
500
- const version = "1.0";
501
- const agent = await getAgentFromSystem({ mastra, agentId });
502
- const [instructions, tools] = await Promise.all([agent.getInstructions({ requestContext }), agent.listTools({ requestContext })]);
503
- const agentCard = {
504
- name: agent.id || agentId,
505
- description: convertInstructionsToString(instructions),
506
- url: executionUrl,
507
- provider,
508
- version,
509
- capabilities: {
510
- streaming: true,
511
- pushNotifications: false,
512
- stateTransitionHistory: false
513
- },
514
- defaultInputModes: ["text"],
515
- defaultOutputModes: ["text"],
516
- skills: Object.entries(tools).map(([toolId, tool]) => ({
517
- id: toolId,
518
- name: toolId,
519
- description: tool.description || `Tool: ${toolId}`,
520
- tags: ["tool"]
521
- }))
522
- };
523
- return agentCard;
687
+ handler: async (ctx) => {
688
+ const executionUrl = getA2AExecutionUrl({
689
+ agentId: ctx.agentId,
690
+ request: ctx.request,
691
+ routePrefix: ctx.routePrefix
692
+ });
693
+ return getAgentCardByIdHandler({
694
+ mastra: ctx.mastra,
695
+ requestContext: ctx.requestContext,
696
+ agentId: ctx.agentId,
697
+ executionUrl
698
+ });
524
699
  }
525
700
  });
526
701
  var AGENT_EXECUTION_ROUTE = createRoute({
527
702
  method: "POST",
528
703
  path: "/a2a/:agentId",
529
- responseType: "json",
704
+ responseType: "datastream-response",
530
705
  pathParamSchema: a2aAgentIdPathParams,
531
706
  bodySchema: agentExecutionBodySchema,
532
707
  responseSchema: agentExecutionResponseSchema,
@@ -534,20 +709,26 @@ var AGENT_EXECUTION_ROUTE = createRoute({
534
709
  description: "Executes an agent action via JSON-RPC 2.0 over A2A protocol",
535
710
  tags: ["Agent-to-Agent"],
536
711
  requiresAuth: true,
537
- handler: async ({ mastra, agentId, requestContext, taskStore, ...bodyParams }) => {
538
- const { id: requestId, method, params } = bodyParams;
539
- return await getAgentExecutionHandler({
540
- requestId: String(requestId),
712
+ handler: async ({ mastra, agentId, requestContext, taskStore, abortSignal, ...bodyParams }) => {
713
+ const { id: requestId, method } = bodyParams;
714
+ const params = "params" in bodyParams ? bodyParams.params : void 0;
715
+ const result = await getAgentExecutionHandler({
716
+ requestId,
541
717
  mastra,
542
718
  agentId,
543
719
  requestContext,
544
720
  method,
545
721
  params,
546
- taskStore
722
+ taskStore,
723
+ abortSignal
547
724
  });
725
+ if (method === "message/stream" || method === "tasks/resubscribe") {
726
+ return createA2ASSEResponse(result);
727
+ }
728
+ return createA2AJsonResponse(result);
548
729
  }
549
730
  });
550
731
 
551
- export { AGENT_EXECUTION_ROUTE, GET_AGENT_CARD_ROUTE, a2a_exports, getAgentCardByIdHandler, getAgentExecutionHandler, handleMessageSend, handleMessageStream, handleTaskCancel, handleTaskGet };
552
- //# sourceMappingURL=chunk-R32YJVMM.js.map
553
- //# sourceMappingURL=chunk-R32YJVMM.js.map
732
+ export { AGENT_EXECUTION_ROUTE, GET_AGENT_CARD_ROUTE, a2a_exports, getAgentCardByIdHandler, getAgentExecutionHandler, handleMessageSend, handleMessageStream, handleTaskCancel, handleTaskGet, handleTaskResubscribe };
733
+ //# sourceMappingURL=chunk-ROPYYPBZ.js.map
734
+ //# sourceMappingURL=chunk-ROPYYPBZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/a2a.ts","../src/server/a2a/protocol.ts","../src/server/a2a/tasks.ts"],"names":["MastraA2AError"],"mappings":"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","file":"chunk-ROPYYPBZ.js","sourcesContent":["import { MastraA2AError } from '@mastra/core/a2a';\nimport type {\n MessageSendParams,\n TaskQueryParams,\n TaskIdParams,\n AgentCard,\n TaskStatus,\n TaskState,\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 { convertToCoreMessage, normalizeError, createSuccessResponse } from '../a2a/protocol';\nimport type { InMemoryTaskStore } from '../a2a/store';\nimport { applyUpdateToTask, createTaskContext, 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\nconst messageSendParamsSchema = z.object({\n message: z.object({\n role: z.enum(['user', 'agent']),\n parts: z.array(\n z.object({\n kind: z.enum(['text']),\n text: z.string(),\n }),\n ),\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});\n\nfunction createAgentCardDefaults(): 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: false,\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 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}): 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(),\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: tool.description || `Tool: ${toolId}`,\n // Optional fields\n tags: ['tool'],\n })),\n };\n\n return agentCard;\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 createTextArtifactUpdate({ taskId, contextId, text }: { taskId: string; contextId: string; text: string }) {\n return {\n kind: 'artifact-update' as const,\n taskId,\n contextId,\n lastChunk: true,\n artifact: {\n artifactId: `${taskId}:response`,\n name: 'response.txt',\n parts: [{ kind: 'text' as const, text }],\n },\n };\n}\n\nexport async function handleMessageSend({\n requestId,\n params,\n taskStore,\n agent,\n agentId,\n logger,\n requestContext,\n}: {\n requestId: number | string;\n params: MessageSendParams;\n taskStore: InMemoryTaskStore;\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\n // Load or create task\n let currentData = await loadOrCreateTask({\n taskId,\n taskStore,\n agentId,\n message,\n contextId,\n metadata,\n });\n\n // Use the new TaskContext definition, passing history\n const context = createTaskContext({\n task: currentData,\n userMessage: message,\n history: currentData.history || [],\n activeCancellations: taskStore.activeCancellations,\n });\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 = await agent.generate([convertToCoreMessage(message)], {\n runId: taskId,\n requestContext,\n ...(contextId ? { threadId: contextId, resourceId } : {}),\n });\n\n if (result.text) {\n currentData = applyUpdateToTask(\n currentData,\n createTextArtifactUpdate({\n taskId: currentData.id,\n contextId: currentData.contextId,\n text: result.text,\n }),\n );\n }\n\n currentData = applyUpdateToTask(currentData, {\n state: 'completed',\n message: undefined,\n });\n\n // Store execution details in task metadata\n currentData.metadata = {\n ...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 taskStore.save({ agentId, data: currentData });\n context.task = currentData;\n } catch (handlerError) {\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 currentData = applyUpdateToTask(currentData, failureStatusUpdate);\n\n try {\n await taskStore.save({ agentId, data: currentData });\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 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\nexport async function* handleMessageStream({\n requestId,\n params,\n taskStore,\n agent,\n agentId,\n logger,\n requestContext,\n}: {\n requestId: number | string;\n params: MessageSendParams;\n taskStore: InMemoryTaskStore;\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\n let currentData = await loadOrCreateTask({\n taskId,\n taskStore,\n agentId,\n message,\n contextId,\n metadata,\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 taskStore.save({ agentId, data: currentData });\n\n yield createSuccessResponse(requestId, currentData);\n\n try {\n const resourceId = (metadata?.resourceId as string) ?? (message.metadata?.resourceId as string) ?? agentId;\n const result = await agent.generate([convertToCoreMessage(message)], {\n runId: taskId,\n requestContext,\n ...(contextId ? { threadId: contextId, resourceId } : {}),\n });\n\n const artifactUpdate =\n result.text &&\n createTextArtifactUpdate({\n taskId: currentData.id,\n contextId: currentData.contextId,\n text: result.text,\n });\n\n if (artifactUpdate) {\n currentData = applyUpdateToTask(currentData, artifactUpdate);\n }\n\n currentData = applyUpdateToTask(currentData, {\n state: 'completed',\n message: undefined,\n });\n\n currentData.metadata = {\n ...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 taskStore.save({ agentId, data: currentData });\n\n if (artifactUpdate) {\n yield createSuccessResponse(requestId, artifactUpdate);\n }\n } catch (handlerError) {\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 await taskStore.save({ agentId, data: currentData });\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\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 const finalStates: TaskState[] = ['completed', 'failed', 'canceled'];\n\n while (true) {\n const { task, version } = snapshot;\n const isFinal = finalStates.includes(task.status.state);\n\n yield createSuccessResponse(requestId, {\n kind: 'status-update',\n taskId: task.id,\n contextId: task.contextId,\n status: task.status,\n final: isFinal,\n });\n\n if (isFinal) {\n return;\n }\n\n const nextUpdate = await taskStore.waitForNextUpdate({\n agentId,\n taskId,\n afterVersion: version,\n signal: abortSignal,\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 agentId,\n taskId,\n logger,\n}: {\n requestId: number | string;\n taskStore: InMemoryTaskStore;\n agentId: string;\n taskId: string;\n logger?: IMastraLogger;\n}) {\n // Load task and history\n let data = await taskStore.load({\n agentId,\n taskId,\n });\n\n if (!data) {\n throw MastraA2AError.taskNotFound(taskId);\n }\n\n // Check if cancelable (not already in a final state)\n const finalStates: TaskState[] = ['completed', 'failed', 'canceled'];\n\n if (finalStates.includes(data.status.state)) {\n logger?.info(`Task ${taskId} already in final state ${data.status.state}, cannot cancel.`);\n return createSuccessResponse(requestId, data);\n }\n\n // Signal cancellation\n taskStore.activeCancellations.add(taskId);\n\n // Apply 'canceled' state update\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\n data = applyUpdateToTask(data, cancelUpdate);\n\n // Save the updated state\n await taskStore.save({ agentId, data });\n\n // Remove from active cancellations *after* saving\n taskStore.activeCancellations.delete(taskId);\n\n // Return the updated task object\n return createSuccessResponse(requestId, data);\n}\n\nexport async function getAgentExecutionHandler({\n requestId,\n mastra,\n agentId,\n requestContext,\n method,\n params,\n taskStore,\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 logger?: IMastraLogger;\n abortSignal?: AbortSignal;\n}): Promise<any> {\n const agent = await getAgentFromSystem({ mastra, agentId });\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 agent,\n agentId,\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 agent,\n agentId,\n requestContext,\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 agentId,\n taskId: taskId || 'No task ID provided',\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 case 'tasks/pushNotificationConfig/get':\n case 'tasks/pushNotificationConfig/list':\n case 'tasks/pushNotificationConfig/delete':\n throw MastraA2AError.pushNotificationNotSupported();\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 });\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","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) {\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 type {\n Message,\n Task,\n TaskState,\n TaskStatus,\n TaskContext,\n TaskArtifactUpdateEvent,\n Artifact,\n} from '@mastra/core/a2a';\nimport type { IMastraLogger } from '@mastra/core/logger';\nimport type { InMemoryTaskStore } from './store';\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 const data = await taskStore.load({ agentId, taskId });\n\n // Create new task if none exists\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 await taskStore.save({ agentId, data: initialTask });\n\n return initialTask;\n }\n\n // Handle existing task\n logger?.info(`[Task ${taskId}] Loaded existing task.`);\n\n // Add message to history and prepare updated data\n let updatedData = data;\n updatedData.history = [...(data.history || []), message];\n\n // Handle state transitions\n const { status } = data;\n const finalStates: TaskState[] = ['completed', 'failed', 'canceled'];\n\n if (finalStates.includes(status.state)) {\n logger?.warn(`[Task ${taskId}] Received message for task in final state ${status.state}. Restarting.`);\n updatedData = applyUpdateToTask(updatedData, {\n state: 'submitted',\n message: undefined,\n });\n } else if (status.state === 'input-required') {\n logger?.info(`[Task ${taskId}] Changing state from 'input-required' 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 await taskStore.save({ agentId, data: updatedData });\n\n return updatedData;\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"]}