@mastra/server 1.31.1-alpha.0 → 1.32.0-alpha.2

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 (323) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/_types/@internal_core/dist/index.d.ts +82 -1
  3. package/dist/{chunk-7VXUWPHS.cjs → chunk-2REMDR2Q.cjs} +12 -12
  4. package/dist/{chunk-7VXUWPHS.cjs.map → chunk-2REMDR2Q.cjs.map} +1 -1
  5. package/dist/chunk-33USMBWV.js +250 -0
  6. package/dist/chunk-33USMBWV.js.map +1 -0
  7. package/dist/{chunk-KW2MZGRE.js → chunk-4JWF4VAL.js} +3 -3
  8. package/dist/{chunk-KW2MZGRE.js.map → chunk-4JWF4VAL.js.map} +1 -1
  9. package/dist/{chunk-53YFG5AY.js → chunk-4L2UVFJO.js} +8 -2
  10. package/dist/chunk-4L2UVFJO.js.map +1 -0
  11. package/dist/{chunk-CXBX2UAP.cjs → chunk-4UMO2IGR.cjs} +7 -7
  12. package/dist/{chunk-CXBX2UAP.cjs.map → chunk-4UMO2IGR.cjs.map} +1 -1
  13. package/dist/{chunk-5KM5P23Q.cjs → chunk-5VMRQT5S.cjs} +29 -29
  14. package/dist/{chunk-5KM5P23Q.cjs.map → chunk-5VMRQT5S.cjs.map} +1 -1
  15. package/dist/{chunk-FIP7YYSO.js → chunk-64M357LE.js} +6 -6
  16. package/dist/{chunk-FIP7YYSO.js.map → chunk-64M357LE.js.map} +1 -1
  17. package/dist/{chunk-CUIH4FYN.js → chunk-67TYG7WH.js} +3 -3
  18. package/dist/{chunk-CUIH4FYN.js.map → chunk-67TYG7WH.js.map} +1 -1
  19. package/dist/{chunk-65MQD7JR.js → chunk-6M7OOHNA.js} +6 -6
  20. package/dist/{chunk-65MQD7JR.js.map → chunk-6M7OOHNA.js.map} +1 -1
  21. package/dist/{chunk-HSU5D2KT.js → chunk-72RVQAAZ.js} +4 -4
  22. package/dist/{chunk-HSU5D2KT.js.map → chunk-72RVQAAZ.js.map} +1 -1
  23. package/dist/{chunk-5UKYK7YK.cjs → chunk-7LAFXMXB.cjs} +2 -2
  24. package/dist/{chunk-5UKYK7YK.cjs.map → chunk-7LAFXMXB.cjs.map} +1 -1
  25. package/dist/{chunk-2HIGXJMR.cjs → chunk-AF6AYXRW.cjs} +103 -103
  26. package/dist/{chunk-2HIGXJMR.cjs.map → chunk-AF6AYXRW.cjs.map} +1 -1
  27. package/dist/{chunk-Y2SA2JZT.cjs → chunk-ANEBYNP6.cjs} +89 -67
  28. package/dist/chunk-ANEBYNP6.cjs.map +1 -0
  29. package/dist/{chunk-YI2LXCWB.js → chunk-AOKUS5NX.js} +3 -3
  30. package/dist/{chunk-YI2LXCWB.js.map → chunk-AOKUS5NX.js.map} +1 -1
  31. package/dist/{chunk-MROI3O6S.cjs → chunk-ASVWXKET.cjs} +12 -12
  32. package/dist/{chunk-MROI3O6S.cjs.map → chunk-ASVWXKET.cjs.map} +1 -1
  33. package/dist/{chunk-XG2VRXG5.cjs → chunk-BK2PRWVJ.cjs} +22 -2
  34. package/dist/chunk-BK2PRWVJ.cjs.map +1 -0
  35. package/dist/{chunk-4GOK3PCO.js → chunk-CBSIIPHQ.js} +6 -6
  36. package/dist/{chunk-4GOK3PCO.js.map → chunk-CBSIIPHQ.js.map} +1 -1
  37. package/dist/{chunk-VGR4DSXQ.cjs → chunk-CEZZQMPM.cjs} +11 -11
  38. package/dist/{chunk-VGR4DSXQ.cjs.map → chunk-CEZZQMPM.cjs.map} +1 -1
  39. package/dist/{chunk-RPMBPQNO.cjs → chunk-CPZEA2XG.cjs} +10 -3
  40. package/dist/chunk-CPZEA2XG.cjs.map +1 -0
  41. package/dist/{chunk-OES3CANB.js → chunk-CR7RGILH.js} +3 -3
  42. package/dist/{chunk-OES3CANB.js.map → chunk-CR7RGILH.js.map} +1 -1
  43. package/dist/{chunk-ARZ6W3O3.cjs → chunk-CTYPGLJG.cjs} +46 -21
  44. package/dist/chunk-CTYPGLJG.cjs.map +1 -0
  45. package/dist/{chunk-H6NJWTER.cjs → chunk-CZU262RD.cjs} +20 -15
  46. package/dist/chunk-CZU262RD.cjs.map +1 -0
  47. package/dist/{chunk-4IYALPXO.js → chunk-DCMRHRHR.js} +4 -4
  48. package/dist/{chunk-4IYALPXO.js.map → chunk-DCMRHRHR.js.map} +1 -1
  49. package/dist/{chunk-B346SGRP.cjs → chunk-DIBOFJUK.cjs} +11 -11
  50. package/dist/{chunk-B346SGRP.cjs.map → chunk-DIBOFJUK.cjs.map} +1 -1
  51. package/dist/{chunk-DY6OYCMG.js → chunk-DOTOVTE2.js} +4 -4
  52. package/dist/{chunk-DY6OYCMG.js.map → chunk-DOTOVTE2.js.map} +1 -1
  53. package/dist/{chunk-VOAVPKTH.js → chunk-EAJSW5GK.js} +3 -3
  54. package/dist/{chunk-VOAVPKTH.js.map → chunk-EAJSW5GK.js.map} +1 -1
  55. package/dist/{chunk-S7REEERK.cjs → chunk-EWNTXTFB.cjs} +11 -11
  56. package/dist/{chunk-S7REEERK.cjs.map → chunk-EWNTXTFB.cjs.map} +1 -1
  57. package/dist/{chunk-DBPJYWAH.js → chunk-F23SQINQ.js} +30 -8
  58. package/dist/chunk-F23SQINQ.js.map +1 -0
  59. package/dist/{chunk-TKHLXCSZ.cjs → chunk-F5RU45N6.cjs} +7 -7
  60. package/dist/{chunk-TKHLXCSZ.cjs.map → chunk-F5RU45N6.cjs.map} +1 -1
  61. package/dist/{chunk-TNNU7IZK.cjs → chunk-FFDMYX2V.cjs} +25 -25
  62. package/dist/{chunk-TNNU7IZK.cjs.map → chunk-FFDMYX2V.cjs.map} +1 -1
  63. package/dist/{chunk-ANP3ESTF.js → chunk-FICILXAQ.js} +3 -3
  64. package/dist/{chunk-ANP3ESTF.js.map → chunk-FICILXAQ.js.map} +1 -1
  65. package/dist/{chunk-2QNJHTKM.cjs → chunk-GME2ZNSG.cjs} +11 -11
  66. package/dist/{chunk-2QNJHTKM.cjs.map → chunk-GME2ZNSG.cjs.map} +1 -1
  67. package/dist/{chunk-6SBH6SYP.js → chunk-GOFGQSF7.js} +20 -7
  68. package/dist/chunk-GOFGQSF7.js.map +1 -0
  69. package/dist/{chunk-PQETTP2F.js → chunk-GQOWV33T.js} +3 -3
  70. package/dist/{chunk-PQETTP2F.js.map → chunk-GQOWV33T.js.map} +1 -1
  71. package/dist/{chunk-OV64VJ5L.js → chunk-HBWNPGIL.js} +5 -5
  72. package/dist/{chunk-OV64VJ5L.js.map → chunk-HBWNPGIL.js.map} +1 -1
  73. package/dist/{chunk-H23VTK56.js → chunk-HKXIZNJC.js} +4 -4
  74. package/dist/{chunk-H23VTK56.js.map → chunk-HKXIZNJC.js.map} +1 -1
  75. package/dist/{chunk-EQR4MMSL.cjs → chunk-HN3V6UA4.cjs} +12 -12
  76. package/dist/{chunk-EQR4MMSL.cjs.map → chunk-HN3V6UA4.cjs.map} +1 -1
  77. package/dist/{chunk-OGV23F3H.cjs → chunk-IMPWOZUQ.cjs} +28 -15
  78. package/dist/chunk-IMPWOZUQ.cjs.map +1 -0
  79. package/dist/{chunk-AMC32S2M.js → chunk-IRKGFNRR.js} +34 -9
  80. package/dist/chunk-IRKGFNRR.js.map +1 -0
  81. package/dist/{chunk-EPM6ILRW.js → chunk-IYEGDP3G.js} +22 -3
  82. package/dist/chunk-IYEGDP3G.js.map +1 -0
  83. package/dist/{chunk-JZNOIGOQ.js → chunk-K2KWDOYR.js} +32 -5
  84. package/dist/chunk-K2KWDOYR.js.map +1 -0
  85. package/dist/{chunk-Q2N5GR7X.cjs → chunk-K745HNW2.cjs} +11 -11
  86. package/dist/{chunk-Q2N5GR7X.cjs.map → chunk-K745HNW2.cjs.map} +1 -1
  87. package/dist/{chunk-YJQYJ5WD.cjs → chunk-K7IVZQKI.cjs} +6 -6
  88. package/dist/{chunk-YJQYJ5WD.cjs.map → chunk-K7IVZQKI.cjs.map} +1 -1
  89. package/dist/{chunk-PA2BYLKF.js → chunk-KDUX3YN3.js} +2 -2
  90. package/dist/{chunk-PA2BYLKF.js.map → chunk-KDUX3YN3.js.map} +1 -1
  91. package/dist/{chunk-LVGLLXRY.cjs → chunk-KQU6VKAO.cjs} +7 -7
  92. package/dist/{chunk-LVGLLXRY.cjs.map → chunk-KQU6VKAO.cjs.map} +1 -1
  93. package/dist/{chunk-UZRD3SEA.js → chunk-KTTHNIBJ.js} +89 -26
  94. package/dist/chunk-KTTHNIBJ.js.map +1 -0
  95. package/dist/{chunk-LY6Q36YN.cjs → chunk-LGR7SFQ5.cjs} +38 -25
  96. package/dist/chunk-LGR7SFQ5.cjs.map +1 -0
  97. package/dist/{chunk-7GNVIWZY.js → chunk-LO7CBY5Q.js} +6 -6
  98. package/dist/{chunk-7GNVIWZY.js.map → chunk-LO7CBY5Q.js.map} +1 -1
  99. package/dist/{chunk-UQLJDNXU.cjs → chunk-M7L5EVQE.cjs} +12 -12
  100. package/dist/{chunk-UQLJDNXU.cjs.map → chunk-M7L5EVQE.cjs.map} +1 -1
  101. package/dist/{chunk-BMWSQ6HM.cjs → chunk-NIRJGDC6.cjs} +4 -4
  102. package/dist/{chunk-BMWSQ6HM.cjs.map → chunk-NIRJGDC6.cjs.map} +1 -1
  103. package/dist/{chunk-VZNOKYP5.js → chunk-NKD5XK43.js} +5 -5
  104. package/dist/{chunk-VZNOKYP5.js.map → chunk-NKD5XK43.js.map} +1 -1
  105. package/dist/{chunk-LTLTS3RN.js → chunk-NRKGN3C5.js} +4 -4
  106. package/dist/{chunk-LTLTS3RN.js.map → chunk-NRKGN3C5.js.map} +1 -1
  107. package/dist/{chunk-EETF75CE.cjs → chunk-OBRYBTX6.cjs} +12 -12
  108. package/dist/{chunk-EETF75CE.cjs.map → chunk-OBRYBTX6.cjs.map} +1 -1
  109. package/dist/{chunk-7E2JRYIE.js → chunk-OCBL7S62.js} +6 -6
  110. package/dist/{chunk-7E2JRYIE.js.map → chunk-OCBL7S62.js.map} +1 -1
  111. package/dist/chunk-ODCWNXTX.cjs +256 -0
  112. package/dist/chunk-ODCWNXTX.cjs.map +1 -0
  113. package/dist/{chunk-JQUNK754.js → chunk-OJ7SK6PH.js} +374 -53
  114. package/dist/chunk-OJ7SK6PH.js.map +1 -0
  115. package/dist/{chunk-4J4K36CU.js → chunk-OPBMOOBR.js} +5 -5
  116. package/dist/{chunk-4J4K36CU.js.map → chunk-OPBMOOBR.js.map} +1 -1
  117. package/dist/{chunk-2MWLNHBG.cjs → chunk-OQHTG2JK.cjs} +11 -11
  118. package/dist/{chunk-2MWLNHBG.cjs.map → chunk-OQHTG2JK.cjs.map} +1 -1
  119. package/dist/{chunk-4BSJHDYP.js → chunk-OUS6FNA7.js} +11 -6
  120. package/dist/chunk-OUS6FNA7.js.map +1 -0
  121. package/dist/{chunk-OGEXISZT.cjs → chunk-OZC7GEO5.cjs} +11 -11
  122. package/dist/{chunk-OGEXISZT.cjs.map → chunk-OZC7GEO5.cjs.map} +1 -1
  123. package/dist/{chunk-WFVK6ZXR.cjs → chunk-Q2T2Q4S5.cjs} +6 -6
  124. package/dist/{chunk-WFVK6ZXR.cjs.map → chunk-Q2T2Q4S5.cjs.map} +1 -1
  125. package/dist/{chunk-CKZMJIUO.cjs → chunk-R3DQGOTC.cjs} +6 -6
  126. package/dist/{chunk-CKZMJIUO.cjs.map → chunk-R3DQGOTC.cjs.map} +1 -1
  127. package/dist/{chunk-IQA7HL2V.js → chunk-R7X4YOSH.js} +51 -10
  128. package/dist/chunk-R7X4YOSH.js.map +1 -0
  129. package/dist/{chunk-NRFMMYTG.js → chunk-RF5ZDERV.js} +4 -4
  130. package/dist/{chunk-NRFMMYTG.js.map → chunk-RF5ZDERV.js.map} +1 -1
  131. package/dist/{chunk-KI7TGMMV.cjs → chunk-RL34ZMLF.cjs} +159 -96
  132. package/dist/chunk-RL34ZMLF.cjs.map +1 -0
  133. package/dist/{chunk-2HVAN7FF.js → chunk-RP7OLAVZ.js} +10 -3
  134. package/dist/chunk-RP7OLAVZ.js.map +1 -0
  135. package/dist/{chunk-K6VEDPBD.js → chunk-RPEPKUZQ.js} +12 -11
  136. package/dist/chunk-RPEPKUZQ.js.map +1 -0
  137. package/dist/{chunk-TU7U5XUE.cjs → chunk-SUT6SU4I.cjs} +8 -2
  138. package/dist/chunk-SUT6SU4I.cjs.map +1 -0
  139. package/dist/{chunk-DG5RFCGJ.cjs → chunk-T6MMZWHW.cjs} +427 -106
  140. package/dist/chunk-T6MMZWHW.cjs.map +1 -0
  141. package/dist/{chunk-RTD3NZ4G.js → chunk-TLOT3CIB.js} +6 -6
  142. package/dist/{chunk-RTD3NZ4G.js.map → chunk-TLOT3CIB.js.map} +1 -1
  143. package/dist/{chunk-3NNQG5XP.js → chunk-VG6A54JE.js} +3 -3
  144. package/dist/{chunk-3NNQG5XP.js.map → chunk-VG6A54JE.js.map} +1 -1
  145. package/dist/{chunk-QL62CV5V.js → chunk-VRPAOMXW.js} +25 -12
  146. package/dist/chunk-VRPAOMXW.js.map +1 -0
  147. package/dist/{chunk-EFP5PJBY.cjs → chunk-WMFH3SH2.cjs} +136 -94
  148. package/dist/chunk-WMFH3SH2.cjs.map +1 -0
  149. package/dist/{chunk-S4EHZQFI.js → chunk-WYSQECWW.js} +10 -10
  150. package/dist/{chunk-S4EHZQFI.js.map → chunk-WYSQECWW.js.map} +1 -1
  151. package/dist/{chunk-ERKUFMCT.js → chunk-X2LYM3QK.js} +3 -3
  152. package/dist/{chunk-ERKUFMCT.js.map → chunk-X2LYM3QK.js.map} +1 -1
  153. package/dist/{chunk-OGZ6ROYD.js → chunk-X3RINDH6.js} +6 -5
  154. package/dist/chunk-X3RINDH6.js.map +1 -0
  155. package/dist/{chunk-NGYGE7QW.cjs → chunk-X47OINMY.cjs} +17 -17
  156. package/dist/{chunk-NGYGE7QW.cjs.map → chunk-X47OINMY.cjs.map} +1 -1
  157. package/dist/{chunk-245BXYGJ.cjs → chunk-XCXPPGJ3.cjs} +13 -13
  158. package/dist/{chunk-245BXYGJ.cjs.map → chunk-XCXPPGJ3.cjs.map} +1 -1
  159. package/dist/{chunk-2CFH32YO.cjs → chunk-XEERRXWL.cjs} +32 -4
  160. package/dist/chunk-XEERRXWL.cjs.map +1 -0
  161. package/dist/{chunk-NUGBBASK.js → chunk-XOHBH6NQ.js} +4 -4
  162. package/dist/{chunk-NUGBBASK.js.map → chunk-XOHBH6NQ.js.map} +1 -1
  163. package/dist/{chunk-OLPARCPM.cjs → chunk-XUFQVLBC.cjs} +5 -5
  164. package/dist/{chunk-OLPARCPM.cjs.map → chunk-XUFQVLBC.cjs.map} +1 -1
  165. package/dist/{chunk-5XQIAEWJ.cjs → chunk-YMBKVVDF.cjs} +22 -21
  166. package/dist/chunk-YMBKVVDF.cjs.map +1 -0
  167. package/dist/{chunk-DZZBC6UV.cjs → chunk-ZCCXXT7V.cjs} +12 -12
  168. package/dist/{chunk-DZZBC6UV.cjs.map → chunk-ZCCXXT7V.cjs.map} +1 -1
  169. package/dist/{chunk-EBKNX5RM.cjs → chunk-ZHEQYOTL.cjs} +53 -52
  170. package/dist/chunk-ZHEQYOTL.cjs.map +1 -0
  171. package/dist/docs/SKILL.md +1 -1
  172. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  173. package/dist/{observational-memory-ZS2HJPUO-472SI4TK.cjs → observational-memory-UMDC4VC2-3I52URYY.cjs} +26 -26
  174. package/dist/{observational-memory-ZS2HJPUO-472SI4TK.cjs.map → observational-memory-UMDC4VC2-3I52URYY.cjs.map} +1 -1
  175. package/dist/{observational-memory-ZS2HJPUO-2ZBP2HCP.js → observational-memory-UMDC4VC2-X5QMTUND.js} +3 -3
  176. package/dist/{observational-memory-ZS2HJPUO-2ZBP2HCP.js.map → observational-memory-UMDC4VC2-X5QMTUND.js.map} +1 -1
  177. package/dist/server/auth/helpers.d.ts +9 -1
  178. package/dist/server/auth/helpers.d.ts.map +1 -1
  179. package/dist/server/auth/index.cjs +18 -14
  180. package/dist/server/auth/index.js +1 -1
  181. package/dist/server/handlers/a2a.cjs +10 -10
  182. package/dist/server/handlers/a2a.js +1 -1
  183. package/dist/server/handlers/agent-builder.cjs +16 -16
  184. package/dist/server/handlers/agent-builder.js +1 -1
  185. package/dist/server/handlers/agent-versions.cjs +8 -8
  186. package/dist/server/handlers/agent-versions.js +1 -1
  187. package/dist/server/handlers/agents.cjs +38 -38
  188. package/dist/server/handlers/agents.d.ts.map +1 -1
  189. package/dist/server/handlers/agents.js +1 -1
  190. package/dist/server/handlers/auth.cjs +11 -11
  191. package/dist/server/handlers/auth.d.ts.map +1 -1
  192. package/dist/server/handlers/auth.js +1 -1
  193. package/dist/server/handlers/background-tasks.cjs +4 -4
  194. package/dist/server/handlers/background-tasks.js +1 -1
  195. package/dist/server/handlers/channels.cjs +5 -5
  196. package/dist/server/handlers/channels.js +1 -1
  197. package/dist/server/handlers/conversations.cjs +5 -5
  198. package/dist/server/handlers/conversations.d.ts.map +1 -1
  199. package/dist/server/handlers/conversations.js +1 -1
  200. package/dist/server/handlers/datasets.cjs +26 -26
  201. package/dist/server/handlers/datasets.js +1 -1
  202. package/dist/server/handlers/logs.cjs +4 -4
  203. package/dist/server/handlers/logs.js +1 -1
  204. package/dist/server/handlers/mcp-client-versions.cjs +8 -8
  205. package/dist/server/handlers/mcp-client-versions.js +1 -1
  206. package/dist/server/handlers/mcp.cjs +9 -9
  207. package/dist/server/handlers/mcp.d.ts.map +1 -1
  208. package/dist/server/handlers/mcp.js +1 -1
  209. package/dist/server/handlers/memory.cjs +27 -27
  210. package/dist/server/handlers/memory.d.ts.map +1 -1
  211. package/dist/server/handlers/memory.js +1 -1
  212. package/dist/server/handlers/observability-new-endpoints.cjs +31 -27
  213. package/dist/server/handlers/observability-new-endpoints.d.ts +315 -19
  214. package/dist/server/handlers/observability-new-endpoints.d.ts.map +1 -1
  215. package/dist/server/handlers/observability-new-endpoints.js +1 -1
  216. package/dist/server/handlers/observability-shared.cjs +5 -5
  217. package/dist/server/handlers/observability-shared.d.ts +6 -0
  218. package/dist/server/handlers/observability-shared.d.ts.map +1 -1
  219. package/dist/server/handlers/observability-shared.js +1 -1
  220. package/dist/server/handlers/observability.cjs +39 -35
  221. package/dist/server/handlers/observability.js +2 -2
  222. package/dist/server/handlers/processor-providers.cjs +3 -3
  223. package/dist/server/handlers/processor-providers.js +1 -1
  224. package/dist/server/handlers/processors.cjs +4 -4
  225. package/dist/server/handlers/processors.js +1 -1
  226. package/dist/server/handlers/prompt-block-versions.cjs +8 -8
  227. package/dist/server/handlers/prompt-block-versions.js +1 -1
  228. package/dist/server/handlers/responses.cjs +4 -4
  229. package/dist/server/handlers/responses.d.ts.map +1 -1
  230. package/dist/server/handlers/responses.js +1 -1
  231. package/dist/server/handlers/responses.storage.cjs +8 -8
  232. package/dist/server/handlers/responses.storage.js +1 -1
  233. package/dist/server/handlers/schedules.cjs +28 -0
  234. package/dist/server/handlers/schedules.cjs.map +1 -0
  235. package/dist/server/handlers/schedules.d.ts +345 -0
  236. package/dist/server/handlers/schedules.d.ts.map +1 -0
  237. package/dist/server/handlers/schedules.js +3 -0
  238. package/dist/server/handlers/schedules.js.map +1 -0
  239. package/dist/server/handlers/scorer-versions.cjs +8 -8
  240. package/dist/server/handlers/scorer-versions.js +1 -1
  241. package/dist/server/handlers/scores.cjs +7 -7
  242. package/dist/server/handlers/scores.js +1 -1
  243. package/dist/server/handlers/stored-agents.cjs +7 -7
  244. package/dist/server/handlers/stored-agents.js +1 -1
  245. package/dist/server/handlers/stored-mcp-clients.cjs +6 -6
  246. package/dist/server/handlers/stored-mcp-clients.js +1 -1
  247. package/dist/server/handlers/stored-prompt-blocks.cjs +6 -6
  248. package/dist/server/handlers/stored-prompt-blocks.js +1 -1
  249. package/dist/server/handlers/stored-scorers.cjs +6 -6
  250. package/dist/server/handlers/stored-scorers.js +1 -1
  251. package/dist/server/handlers/stored-skills.cjs +7 -7
  252. package/dist/server/handlers/stored-skills.js +1 -1
  253. package/dist/server/handlers/stored-workspaces.cjs +6 -6
  254. package/dist/server/handlers/stored-workspaces.js +1 -1
  255. package/dist/server/handlers/system.cjs +2 -2
  256. package/dist/server/handlers/system.js +1 -1
  257. package/dist/server/handlers/tool-providers.cjs +5 -5
  258. package/dist/server/handlers/tool-providers.js +1 -1
  259. package/dist/server/handlers/tools.cjs +6 -6
  260. package/dist/server/handlers/tools.d.ts.map +1 -1
  261. package/dist/server/handlers/tools.js +1 -1
  262. package/dist/server/handlers/utils.cjs +13 -9
  263. package/dist/server/handlers/utils.d.ts +15 -0
  264. package/dist/server/handlers/utils.d.ts.map +1 -1
  265. package/dist/server/handlers/utils.js +1 -1
  266. package/dist/server/handlers/vector.cjs +16 -16
  267. package/dist/server/handlers/vector.js +1 -1
  268. package/dist/server/handlers/voice.cjs +8 -8
  269. package/dist/server/handlers/voice.js +1 -1
  270. package/dist/server/handlers/workflows.cjs +24 -24
  271. package/dist/server/handlers/workflows.d.ts.map +1 -1
  272. package/dist/server/handlers/workflows.js +1 -1
  273. package/dist/server/handlers/workspace.cjs +26 -26
  274. package/dist/server/handlers/workspace.js +1 -1
  275. package/dist/server/handlers.cjs +40 -40
  276. package/dist/server/handlers.js +15 -15
  277. package/dist/server/schemas/index.cjs +232 -232
  278. package/dist/server/schemas/index.js +8 -8
  279. package/dist/server/schemas/schedules.d.ts +204 -0
  280. package/dist/server/schemas/schedules.d.ts.map +1 -0
  281. package/dist/server/server-adapter/index.cjs +391 -319
  282. package/dist/server/server-adapter/index.cjs.map +1 -1
  283. package/dist/server/server-adapter/index.d.ts +9 -0
  284. package/dist/server/server-adapter/index.d.ts.map +1 -1
  285. package/dist/server/server-adapter/index.js +112 -41
  286. package/dist/server/server-adapter/index.js.map +1 -1
  287. package/dist/server/server-adapter/routes/index.d.ts +19 -3
  288. package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
  289. package/dist/server/server-adapter/routes/observability.d.ts +156 -9
  290. package/dist/server/server-adapter/routes/observability.d.ts.map +1 -1
  291. package/dist/server/server-adapter/routes/route-builder.d.ts +15 -1
  292. package/dist/server/server-adapter/routes/route-builder.d.ts.map +1 -1
  293. package/dist/server/server-adapter/routes/schedules.d.ts +3 -0
  294. package/dist/server/server-adapter/routes/schedules.d.ts.map +1 -0
  295. package/package.json +6 -4
  296. package/dist/chunk-2CFH32YO.cjs.map +0 -1
  297. package/dist/chunk-2HVAN7FF.js.map +0 -1
  298. package/dist/chunk-4BSJHDYP.js.map +0 -1
  299. package/dist/chunk-53YFG5AY.js.map +0 -1
  300. package/dist/chunk-5XQIAEWJ.cjs.map +0 -1
  301. package/dist/chunk-6SBH6SYP.js.map +0 -1
  302. package/dist/chunk-AMC32S2M.js.map +0 -1
  303. package/dist/chunk-ARZ6W3O3.cjs.map +0 -1
  304. package/dist/chunk-DBPJYWAH.js.map +0 -1
  305. package/dist/chunk-DG5RFCGJ.cjs.map +0 -1
  306. package/dist/chunk-EBKNX5RM.cjs.map +0 -1
  307. package/dist/chunk-EFP5PJBY.cjs.map +0 -1
  308. package/dist/chunk-EPM6ILRW.js.map +0 -1
  309. package/dist/chunk-H6NJWTER.cjs.map +0 -1
  310. package/dist/chunk-IQA7HL2V.js.map +0 -1
  311. package/dist/chunk-JQUNK754.js.map +0 -1
  312. package/dist/chunk-JZNOIGOQ.js.map +0 -1
  313. package/dist/chunk-K6VEDPBD.js.map +0 -1
  314. package/dist/chunk-KI7TGMMV.cjs.map +0 -1
  315. package/dist/chunk-LY6Q36YN.cjs.map +0 -1
  316. package/dist/chunk-OGV23F3H.cjs.map +0 -1
  317. package/dist/chunk-OGZ6ROYD.js.map +0 -1
  318. package/dist/chunk-QL62CV5V.js.map +0 -1
  319. package/dist/chunk-RPMBPQNO.cjs.map +0 -1
  320. package/dist/chunk-TU7U5XUE.cjs.map +0 -1
  321. package/dist/chunk-UZRD3SEA.js.map +0 -1
  322. package/dist/chunk-XG2VRXG5.cjs.map +0 -1
  323. package/dist/chunk-Y2SA2JZT.cjs.map +0 -1
@@ -1,15 +1,16 @@
1
1
  'use strict';
2
2
 
3
- var chunkUEACXZ5C_cjs = require('./chunk-UEACXZ5C.cjs');
4
3
  var chunkOJ72T77G_cjs = require('./chunk-OJ72T77G.cjs');
5
- var chunkTKHLXCSZ_cjs = require('./chunk-TKHLXCSZ.cjs');
6
- var chunkKI7TGMMV_cjs = require('./chunk-KI7TGMMV.cjs');
7
- var chunk2CFH32YO_cjs = require('./chunk-2CFH32YO.cjs');
8
- var chunk5UKYK7YK_cjs = require('./chunk-5UKYK7YK.cjs');
4
+ var chunkF5RU45N6_cjs = require('./chunk-F5RU45N6.cjs');
5
+ var chunkUEACXZ5C_cjs = require('./chunk-UEACXZ5C.cjs');
6
+ var chunkRL34ZMLF_cjs = require('./chunk-RL34ZMLF.cjs');
7
+ var chunkXEERRXWL_cjs = require('./chunk-XEERRXWL.cjs');
9
8
  var chunkB34S64RC_cjs = require('./chunk-B34S64RC.cjs');
9
+ var chunk7LAFXMXB_cjs = require('./chunk-7LAFXMXB.cjs');
10
10
  var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
11
11
  var chunkO7I5CWRX_cjs = require('./chunk-O7I5CWRX.cjs');
12
12
  var crypto = require('crypto');
13
+ var ee = require('@mastra/core/auth/ee');
13
14
 
14
15
  // src/server/handlers/conversations.ts
15
16
  var conversations_exports = {};
@@ -42,7 +43,7 @@ function buildConversationDeleted(conversationId) {
42
43
  deleted: true
43
44
  };
44
45
  }
45
- var CREATE_CONVERSATION_ROUTE = chunk5UKYK7YK_cjs.createRoute({
46
+ var CREATE_CONVERSATION_ROUTE = chunk7LAFXMXB_cjs.createRoute({
46
47
  method: "POST",
47
48
  path: "/v1/conversations",
48
49
  responseType: "json",
@@ -52,22 +53,22 @@ var CREATE_CONVERSATION_ROUTE = chunk5UKYK7YK_cjs.createRoute({
52
53
  description: "Creates a new thread-backed conversation for agent-backed Responses API requests",
53
54
  tags: ["Responses"],
54
55
  requiresAuth: true,
55
- requiresPermission: "agents:create",
56
+ requiresPermission: ee.MastraFGAPermissions.AGENTS_CREATE,
56
57
  handler: async ({ mastra, requestContext, agent_id, conversation_id, resource_id, title, metadata }) => {
57
58
  try {
58
59
  if (!mastra) {
59
60
  throw new chunk64ITUOXI_cjs.HTTPException(500, { message: "Mastra instance is required for conversations" });
60
61
  }
61
- const agent = await chunkKI7TGMMV_cjs.getAgentFromSystem({ mastra, agentId: agent_id });
62
+ const agent = await chunkRL34ZMLF_cjs.getAgentFromSystem({ mastra, agentId: agent_id });
62
63
  const memory = await agent.getMemory({ requestContext });
63
64
  if (!memory) {
64
65
  throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Agent "${agent.id}" does not have memory configured` });
65
66
  }
66
- if (!await chunkTKHLXCSZ_cjs.getAgentMemoryStore({ agent, requestContext })) {
67
+ if (!await chunkF5RU45N6_cjs.getAgentMemoryStore({ agent, requestContext })) {
67
68
  throw new chunk64ITUOXI_cjs.HTTPException(400, { message: `Memory storage is not configured for agent "${agent.id}"` });
68
69
  }
69
70
  const threadId = conversation_id ?? crypto.randomUUID();
70
- const resourceId = chunk2CFH32YO_cjs.getEffectiveResourceId(requestContext, resource_id) ?? threadId;
71
+ const resourceId = chunkXEERRXWL_cjs.getEffectiveResourceId(requestContext, resource_id) ?? threadId;
71
72
  const thread = await memory.createThread({
72
73
  threadId,
73
74
  resourceId,
@@ -80,7 +81,7 @@ var CREATE_CONVERSATION_ROUTE = chunk5UKYK7YK_cjs.createRoute({
80
81
  }
81
82
  }
82
83
  });
83
- var GET_CONVERSATION_ROUTE = chunk5UKYK7YK_cjs.createRoute({
84
+ var GET_CONVERSATION_ROUTE = chunk7LAFXMXB_cjs.createRoute({
84
85
  method: "GET",
85
86
  path: "/v1/conversations/:conversationId",
86
87
  responseType: "json",
@@ -90,10 +91,10 @@ var GET_CONVERSATION_ROUTE = chunk5UKYK7YK_cjs.createRoute({
90
91
  description: "Returns a conversation object backed by a Mastra memory thread",
91
92
  tags: ["Responses"],
92
93
  requiresAuth: true,
93
- requiresPermission: "agents:read",
94
+ requiresPermission: ee.MastraFGAPermissions.AGENTS_READ,
94
95
  handler: async ({ mastra, requestContext, conversationId }) => {
95
96
  try {
96
- const match = await chunkTKHLXCSZ_cjs.findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });
97
+ const match = await chunkF5RU45N6_cjs.findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });
97
98
  if (!match) {
98
99
  throw new chunk64ITUOXI_cjs.HTTPException(404, { message: `Conversation ${conversationId} was not found` });
99
100
  }
@@ -103,7 +104,7 @@ var GET_CONVERSATION_ROUTE = chunk5UKYK7YK_cjs.createRoute({
103
104
  }
104
105
  }
105
106
  });
106
- var GET_CONVERSATION_ITEMS_ROUTE = chunk5UKYK7YK_cjs.createRoute({
107
+ var GET_CONVERSATION_ITEMS_ROUTE = chunk7LAFXMXB_cjs.createRoute({
107
108
  method: "GET",
108
109
  path: "/v1/conversations/:conversationId/items",
109
110
  responseType: "json",
@@ -113,10 +114,10 @@ var GET_CONVERSATION_ITEMS_ROUTE = chunk5UKYK7YK_cjs.createRoute({
113
114
  description: "Returns OpenAI-style conversation items derived from the stored thread messages",
114
115
  tags: ["Responses"],
115
116
  requiresAuth: true,
116
- requiresPermission: "agents:read",
117
+ requiresPermission: ee.MastraFGAPermissions.AGENTS_READ,
117
118
  handler: async ({ mastra, requestContext, conversationId }) => {
118
119
  try {
119
- const match = await chunkTKHLXCSZ_cjs.findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });
120
+ const match = await chunkF5RU45N6_cjs.findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });
120
121
  if (!match) {
121
122
  throw new chunk64ITUOXI_cjs.HTTPException(404, { message: `Conversation ${conversationId} was not found` });
122
123
  }
@@ -131,7 +132,7 @@ var GET_CONVERSATION_ITEMS_ROUTE = chunk5UKYK7YK_cjs.createRoute({
131
132
  }
132
133
  }
133
134
  });
134
- var DELETE_CONVERSATION_ROUTE = chunk5UKYK7YK_cjs.createRoute({
135
+ var DELETE_CONVERSATION_ROUTE = chunk7LAFXMXB_cjs.createRoute({
135
136
  method: "DELETE",
136
137
  path: "/v1/conversations/:conversationId",
137
138
  responseType: "json",
@@ -141,10 +142,10 @@ var DELETE_CONVERSATION_ROUTE = chunk5UKYK7YK_cjs.createRoute({
141
142
  description: "Deletes a thread-backed conversation and its stored items",
142
143
  tags: ["Responses"],
143
144
  requiresAuth: true,
144
- requiresPermission: "agents:delete",
145
+ requiresPermission: ee.MastraFGAPermissions.AGENTS_DELETE,
145
146
  handler: async ({ mastra, requestContext, conversationId }) => {
146
147
  try {
147
- const match = await chunkTKHLXCSZ_cjs.findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });
148
+ const match = await chunkF5RU45N6_cjs.findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });
148
149
  if (!match) {
149
150
  throw new chunk64ITUOXI_cjs.HTTPException(404, { message: `Conversation ${conversationId} was not found` });
150
151
  }
@@ -161,5 +162,5 @@ exports.DELETE_CONVERSATION_ROUTE = DELETE_CONVERSATION_ROUTE;
161
162
  exports.GET_CONVERSATION_ITEMS_ROUTE = GET_CONVERSATION_ITEMS_ROUTE;
162
163
  exports.GET_CONVERSATION_ROUTE = GET_CONVERSATION_ROUTE;
163
164
  exports.conversations_exports = conversations_exports;
164
- //# sourceMappingURL=chunk-5XQIAEWJ.cjs.map
165
- //# sourceMappingURL=chunk-5XQIAEWJ.cjs.map
165
+ //# sourceMappingURL=chunk-YMBKVVDF.cjs.map
166
+ //# sourceMappingURL=chunk-YMBKVVDF.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/conversations.ts"],"names":["__export","createRoute","createConversationBodySchema","conversationObjectSchema","MastraFGAPermissions","HTTPException","getAgentFromSystem","getAgentMemoryStore","randomUUID","getEffectiveResourceId","handleError","conversationIdPathParams","findConversationThreadAcrossAgents","conversationItemsListSchema","mapMastraMessagesToConversationItems","conversationDeletedSchema"],"mappings":"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","file":"chunk-YMBKVVDF.cjs","sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { MastraFGAPermissions } from '@mastra/core/auth/ee';\nimport { HTTPException } from '../http-exception';\nimport {\n conversationDeletedSchema,\n conversationIdPathParams,\n conversationItemsListSchema,\n conversationObjectSchema,\n createConversationBodySchema,\n} from '../schemas/conversations';\nimport type { ConversationDeleted, ConversationItemsList, ConversationObject } from '../schemas/conversations';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { getAgentFromSystem } from './agents';\nimport { handleError } from './error';\nimport { mapMastraMessagesToConversationItems } from './responses.adapter';\nimport { findConversationThreadAcrossAgents, getAgentMemoryStore } from './responses.storage';\nimport { getEffectiveResourceId } from './utils';\n\nfunction buildConversationObject({ thread }: { thread: ConversationObject['thread'] }): ConversationObject {\n return {\n id: thread.id,\n object: 'conversation',\n thread,\n };\n}\n\nfunction buildConversationItemsList(items: ConversationItemsList['data']): ConversationItemsList {\n return {\n object: 'list',\n data: items,\n first_id: items[0]?.id ?? null,\n last_id: items.at(-1)?.id ?? null,\n has_more: false,\n };\n}\n\nfunction buildConversationDeleted(conversationId: string): ConversationDeleted {\n return {\n id: conversationId,\n object: 'conversation.deleted',\n deleted: true,\n };\n}\n\nexport const CREATE_CONVERSATION_ROUTE = createRoute({\n method: 'POST',\n path: '/v1/conversations',\n responseType: 'json',\n bodySchema: createConversationBodySchema,\n responseSchema: conversationObjectSchema,\n summary: 'Create a conversation',\n description: 'Creates a new thread-backed conversation for agent-backed Responses API requests',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_CREATE,\n handler: async ({ mastra, requestContext, agent_id, conversation_id, resource_id, title, metadata }) => {\n try {\n if (!mastra) {\n throw new HTTPException(500, { message: 'Mastra instance is required for conversations' });\n }\n\n const agent = await getAgentFromSystem({ mastra, agentId: agent_id });\n const memory = await agent.getMemory({ requestContext });\n if (!memory) {\n throw new HTTPException(400, { message: `Agent \"${agent.id}\" does not have memory configured` });\n }\n if (!(await getAgentMemoryStore({ agent, requestContext }))) {\n throw new HTTPException(400, { message: `Memory storage is not configured for agent \"${agent.id}\"` });\n }\n\n const threadId = conversation_id ?? randomUUID();\n const resourceId = getEffectiveResourceId(requestContext, resource_id) ?? threadId;\n const thread = await memory.createThread({\n threadId,\n resourceId,\n title,\n metadata,\n });\n\n return buildConversationObject({ thread });\n } catch (error) {\n return handleError(error, 'Error creating conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationObjectSchema,\n summary: 'Retrieve a conversation',\n description: 'Returns a conversation object backed by a Mastra memory thread',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n return buildConversationObject({ thread: match.thread });\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const GET_CONVERSATION_ITEMS_ROUTE = createRoute({\n method: 'GET',\n path: '/v1/conversations/:conversationId/items',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationItemsListSchema,\n summary: 'List conversation items',\n description: 'Returns OpenAI-style conversation items derived from the stored thread messages',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_READ,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n const { messages } = await match.memoryStore.listMessages({\n threadId: conversationId,\n page: 0,\n perPage: 1000,\n });\n\n return buildConversationItemsList(mapMastraMessagesToConversationItems(messages));\n } catch (error) {\n return handleError(error, 'Error retrieving conversation');\n }\n },\n});\n\nexport const DELETE_CONVERSATION_ROUTE = createRoute({\n method: 'DELETE',\n path: '/v1/conversations/:conversationId',\n responseType: 'json',\n pathParamSchema: conversationIdPathParams,\n responseSchema: conversationDeletedSchema,\n summary: 'Delete a conversation',\n description: 'Deletes a thread-backed conversation and its stored items',\n tags: ['Responses'],\n requiresAuth: true,\n requiresPermission: MastraFGAPermissions.AGENTS_DELETE,\n handler: async ({ mastra, requestContext, conversationId }) => {\n try {\n const match = await findConversationThreadAcrossAgents({ mastra, conversationId, requestContext });\n if (!match) {\n throw new HTTPException(404, { message: `Conversation ${conversationId} was not found` });\n }\n\n await match.memoryStore.deleteThread({ threadId: conversationId });\n\n return buildConversationDeleted(conversationId);\n } catch (error) {\n return handleError(error, 'Error deleting conversation');\n }\n },\n});\n"]}
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
+ var chunkCZU262RD_cjs = require('./chunk-CZU262RD.cjs');
4
+ var chunkRL34ZMLF_cjs = require('./chunk-RL34ZMLF.cjs');
5
+ var chunkK7IVZQKI_cjs = require('./chunk-K7IVZQKI.cjs');
6
+ var chunk7LAFXMXB_cjs = require('./chunk-7LAFXMXB.cjs');
3
7
  var chunkCNTWPG57_cjs = require('./chunk-CNTWPG57.cjs');
4
- var chunkH6NJWTER_cjs = require('./chunk-H6NJWTER.cjs');
5
- var chunkKI7TGMMV_cjs = require('./chunk-KI7TGMMV.cjs');
6
- var chunkYJQYJ5WD_cjs = require('./chunk-YJQYJ5WD.cjs');
7
- var chunk5UKYK7YK_cjs = require('./chunk-5UKYK7YK.cjs');
8
8
  var chunkO7I5CWRX_cjs = require('./chunk-O7I5CWRX.cjs');
9
9
  var a2a = require('@mastra/core/a2a');
10
10
  var v4 = require('zod/v4');
@@ -235,11 +235,11 @@ async function getAgentCardByIdHandler({
235
235
  version = "1.0",
236
236
  requestContext
237
237
  }) {
238
- const agent = await chunkKI7TGMMV_cjs.getAgentFromSystem({ mastra, agentId });
238
+ const agent = await chunkRL34ZMLF_cjs.getAgentFromSystem({ mastra, agentId });
239
239
  const [instructions, tools] = await Promise.all([agent.getInstructions({ requestContext }), agent.listTools({ requestContext })]);
240
240
  const agentCard = {
241
241
  name: agent.id || agentId,
242
- description: chunkYJQYJ5WD_cjs.convertInstructionsToString(instructions),
242
+ description: chunkK7IVZQKI_cjs.convertInstructionsToString(instructions),
243
243
  url: executionUrl,
244
244
  provider,
245
245
  version,
@@ -264,7 +264,7 @@ function getA2AExecutionUrl({
264
264
  if (!request) {
265
265
  return executionPath;
266
266
  }
267
- return `${chunkH6NJWTER_cjs.getPublicOrigin(request)}${executionPath}`;
267
+ return `${chunkCZU262RD_cjs.getPublicOrigin(request)}${executionPath}`;
268
268
  }
269
269
  function validateMessageSendParams(params) {
270
270
  try {
@@ -743,7 +743,7 @@ async function getAgentExecutionHandler({
743
743
  logger,
744
744
  abortSignal
745
745
  }) {
746
- const agent = await chunkKI7TGMMV_cjs.getAgentFromSystem({ mastra, agentId });
746
+ const agent = await chunkRL34ZMLF_cjs.getAgentFromSystem({ mastra, agentId });
747
747
  let taskId;
748
748
  try {
749
749
  taskId = getTaskIdFromParams(params);
@@ -813,7 +813,7 @@ async function getAgentExecutionHandler({
813
813
  return normalizeError(error, requestId, taskId, logger);
814
814
  }
815
815
  }
816
- var GET_AGENT_CARD_ROUTE = chunk5UKYK7YK_cjs.createRoute({
816
+ var GET_AGENT_CARD_ROUTE = chunk7LAFXMXB_cjs.createRoute({
817
817
  method: "GET",
818
818
  path: "/.well-known/:agentId/agent-card.json",
819
819
  responseType: "json",
@@ -837,7 +837,7 @@ var GET_AGENT_CARD_ROUTE = chunk5UKYK7YK_cjs.createRoute({
837
837
  });
838
838
  }
839
839
  });
840
- var AGENT_EXECUTION_ROUTE = chunk5UKYK7YK_cjs.createRoute({
840
+ var AGENT_EXECUTION_ROUTE = chunk7LAFXMXB_cjs.createRoute({
841
841
  method: "POST",
842
842
  path: "/a2a/:agentId",
843
843
  responseType: "datastream-response",
@@ -878,5 +878,5 @@ exports.handleMessageStream = handleMessageStream;
878
878
  exports.handleTaskCancel = handleTaskCancel;
879
879
  exports.handleTaskGet = handleTaskGet;
880
880
  exports.handleTaskResubscribe = handleTaskResubscribe;
881
- //# sourceMappingURL=chunk-DZZBC6UV.cjs.map
882
- //# sourceMappingURL=chunk-DZZBC6UV.cjs.map
881
+ //# sourceMappingURL=chunk-ZCCXXT7V.cjs.map
882
+ //# sourceMappingURL=chunk-ZCCXXT7V.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/handlers/a2a.ts","../src/server/a2a/protocol.ts","../src/server/a2a/tasks.ts"],"names":["__export","MastraA2AError","z","getAgentFromSystem","convertInstructionsToString","getPublicOrigin","createRoute","a2aAgentIdPathParams","agentCardResponseSchema","agentExecutionBodySchema","agentExecutionResponseSchema"],"mappings":"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","file":"chunk-DZZBC6UV.cjs","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 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\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\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 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 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.stream([convertToCoreMessage(message)], {\n runId: taskId,\n requestContext,\n ...(contextId ? { threadId: contextId, resourceId } : {}),\n });\n let sawTextArtifact = false;\n let pendingTextChunk: string | undefined;\n let structuredData: Record<string, unknown> | undefined;\n\n for await (const chunk of result.fullStream) {\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 await taskStore.save({ agentId, data: currentData });\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 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 await taskStore.save({ agentId, data: currentData });\n yield createSuccessResponse(requestId, textUpdate);\n\n sawTextArtifact = true;\n pendingTextChunk = undefined;\n }\n\n if (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 await taskStore.save({ agentId, data: currentData });\n yield createSuccessResponse(requestId, dataUpdate);\n }\n\n currentData = applyUpdateToTask(currentData, {\n state: 'completed',\n message: undefined,\n });\n\n currentData.metadata = {\n ...currentData.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 await taskStore.save({ agentId, data: currentData });\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"]}
1
+ {"version":3,"sources":["../src/server/handlers/a2a.ts","../src/server/a2a/protocol.ts","../src/server/a2a/tasks.ts"],"names":["__export","MastraA2AError","z","getAgentFromSystem","convertInstructionsToString","getPublicOrigin","createRoute","a2aAgentIdPathParams","agentCardResponseSchema","agentExecutionBodySchema","agentExecutionResponseSchema"],"mappings":";;;;;;;;;;;;AAAA,IAAA,WAAA,GAAA;AAAAA,0BAAA,CAAA,WAAA,EAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,wBAAA,EAAA,MAAA,wBAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,aAAA,EAAA,MAAA,aAAA;AAAA,EAAA,qBAAA,EAAA,MAAA;AAAA,CAAA,CAAA;ACMO,SAAS,cAAA,CACd,KAAA,EACA,KAAA,EACA,MAAA,EACA,MAAA,EACgC;AAChC,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI,iBAAiBC,kBAAA,EAAgB;AACnC,IAAA,QAAA,GAAW,KAAA;AAAA,EACb,CAAA,MAAA,IAAW,iBAAiB,KAAA,EAAO;AAEjC,IAAA,QAAA,GAAWA,kBAAA,CAAe,cAAc,KAAA,CAAM,OAAA,EAAS,EAAE,KAAA,EAAO,KAAA,CAAM,OAAO,CAAA;AAAA,EAC/E,CAAA,MAAO;AAEL,IAAA,QAAA,GAAWA,kBAAA,CAAe,aAAA,CAAc,4BAAA,EAA8B,KAAK,CAAA;AAAA,EAC7E;AAGA,EAAA,IAAI,MAAA,IAAU,CAAC,QAAA,CAAS,MAAA,EAAQ;AAC9B,IAAA,QAAA,CAAS,MAAA,GAAS,MAAA;AAAA,EACpB;AAEA,EAAA,MAAA,EAAQ,KAAA,CAAM,mCAAmC,QAAA,CAAS,MAAA,IAAU,KAAK,CAAA,SAAA,EAAY,KAAA,IAAS,KAAK,CAAA,EAAA,CAAA,EAAM,QAAQ,CAAA;AAEjH,EAAA,OAAO,mBAAA,CAAoB,KAAA,EAAO,QAAA,CAAS,cAAA,EAAgB,CAAA;AAC7D;AAEO,SAAS,mBAAA,CACd,IACA,KAAA,EACgC;AAEhC,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,KAAA;AAAA,IACT,EAAA;AAAA;AAAA,IACA;AAAA,GACF;AACF;AAEO,SAAS,qBAAA,CAAyB,IAA4B,MAAA,EAA+B;AAClG,EAAA,IAAI,CAAC,EAAA,EAAI;AAEP,IAAA,MAAMA,kBAAA,CAAe,cAAc,6CAA6C,CAAA;AAAA,EAClF;AAEA,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,KAAA;AAAA,IACT,EAAA;AAAA,IACA;AAAA,GACF;AACF;AAEO,SAAS,qBAAqB,OAAA,EAA+B;AAClE,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,OAAA,CAAQ,IAAA,KAAS,MAAA,GAAS,MAAA,GAAS,WAAA;AAAA,IACzC,SAAS,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA,GAAA,KAAO,wBAAA,CAAyB,GAAG,CAAC;AAAA,GACjE;AACF;AAEA,SAAS,yBAAyB,IAAA,EAAY;AAC5C,EAAA,QAAQ,KAAK,IAAA;AAAM,IACjB,KAAK,MAAA;AACH,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,MAAA;AAAA,QACN,MAAM,IAAA,CAAK;AAAA,OACb;AAAA,IACF,KAAK,MAAA;AACH,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM,KAAA,IAAS,IAAA,CAAK,IAAA,GAAO,IAAI,GAAA,CAAI,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,GAAI,IAAA,CAAK,IAAA,CAAK,KAAA;AAAA,QAC9D,QAAA,EAAU,KAAK,IAAA,CAAK;AAAA,OACtB;AAAA,IACF,KAAK,MAAA;AACH,MAAA,MAAM,IAAI,MAAM,+CAA+C,CAAA;AAAA;AAErE;;;ACrEA,SAAS,mBAAmB,MAAA,EAAuF;AACjH,EAAA,OAAO,OAAA,IAAW,MAAA,IAAU,EAAE,OAAA,IAAW,MAAA,CAAA;AAC3C;AAEA,SAAS,iBAAiB,MAAA,EAAiF;AACzG,EAAA,OAAO,MAAA,IAAU,MAAA,IAAU,MAAA,CAAO,IAAA,KAAS,iBAAA;AAC7C;AAEO,SAAS,iBAAA,CACd,SACA,MAAA,EACM;AACN,EAAA,IAAI,OAAA,GAAU,gBAAgB,OAAO,CAAA;AAErC,EAAA,IAAI,kBAAA,CAAmB,MAAM,CAAA,EAAG;AAE9B,IAAA,OAAA,CAAQ,MAAA,GAAS;AAAA,MACf,GAAG,OAAA,CAAQ,MAAA;AAAA;AAAA,MACX,GAAG,MAAA;AAAA;AAAA,MACH,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA;AAAY,KACpC;AAAA,EACF,CAAA,MAAA,IAAW,gBAAA,CAAiB,MAAM,CAAA,EAAG;AAEnC,IAAA,IAAI,CAAC,QAAQ,SAAA,EAAW;AACtB,MAAA,OAAA,CAAQ,YAAY,EAAC;AAAA,IACvB,CAAA,MAAO;AAEL,MAAA,OAAA,CAAQ,SAAA,GAAY,CAAC,GAAG,OAAA,CAAQ,SAAS,CAAA;AAAA,IAC3C;AAEA,IAAA,MAAM,WAAW,MAAA,CAAO,QAAA;AACxB,IAAA,MAAM,aAAA,GAAgB,QAAQ,SAAA,CAAU,SAAA,CAAU,OAAK,CAAA,CAAE,IAAA,KAAS,SAAS,IAAI,CAAA;AAC/E,IAAA,MAAM,gBAAA,GAAmB,OAAA,CAAQ,SAAA,CAAU,aAAa,CAAA;AAExD,IAAA,IAAI,gBAAA,EAAkB;AACpB,MAAA,IAAI,OAAO,MAAA,EAAQ;AAEjB,QAAA,MAAM,mBAAmB,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,gBAAgB,CAAC,CAAA;AACpE,QAAA,gBAAA,CAAiB,KAAA,CAAM,IAAA,CAAK,GAAG,QAAA,CAAS,KAAK,CAAA;AAC7C,QAAA,IAAI,SAAS,QAAA,EAAU;AACrB,UAAA,gBAAA,CAAiB,QAAA,GAAW;AAAA,YAC1B,GAAI,gBAAA,CAAiB,QAAA,IAAY,EAAC;AAAA,YAClC,GAAG,QAAA,CAAS;AAAA,WACd;AAAA,QACF;AACA,QAAA,IAAI,QAAA,CAAS,WAAA,EAAa,gBAAA,CAAiB,WAAA,GAAc,QAAA,CAAS,WAAA;AAClE,QAAA,OAAA,CAAQ,SAAA,CAAU,aAAa,CAAA,GAAI,gBAAA;AAAA,MACrC,CAAA,MAAO;AAEL,QAAA,OAAA,CAAQ,SAAA,CAAU,aAAa,CAAA,GAAI,EAAE,GAAG,QAAA,EAAS;AAAA,MACnD;AAAA,IACF,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,EAAE,GAAG,UAAU,CAAA;AAAA,IACxC;AAAA,EACF;AAEA,EAAA,OAAO,OAAA;AACT;AAEA,eAAsB,gBAAA,CAAiB;AAAA,EACrC,OAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAQkB;AAChB,EAAA,MAAM,OAAO,MAAM,SAAA,CAAU,KAAK,EAAE,OAAA,EAAS,QAAQ,CAAA;AAGrD,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,MAAM,WAAA,GAAoB;AAAA,MACxB,EAAA,EAAI,MAAA;AAAA,MACJ,SAAA,EAAW,SAAA,IAAa,MAAA,CAAO,UAAA,EAAW;AAAA,MAC1C,MAAA,EAAQ;AAAA,QACN,KAAA,EAAO,WAAA;AAAA,QACP,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,QAClC,OAAA,EAAS;AAAA,OACX;AAAA,MACA,WAAW,EAAC;AAAA,MACZ,OAAA,EAAS,CAAC,OAAO,CAAA;AAAA,MACjB,QAAA;AAAA,MACA,IAAA,EAAM;AAAA,KACR;AAEA,IAAA,MAAA,EAAQ,IAAA,CAAK,CAAA,MAAA,EAAS,MAAM,CAAA,mBAAA,CAAqB,CAAA;AACjD,IAAA,MAAM,UAAU,IAAA,CAAK,EAAE,OAAA,EAAS,IAAA,EAAM,aAAa,CAAA;AAEnD,IAAA,OAAO,WAAA;AAAA,EACT;AAGA,EAAA,MAAA,EAAQ,IAAA,CAAK,CAAA,MAAA,EAAS,MAAM,CAAA,uBAAA,CAAyB,CAAA;AAGrD,EAAA,IAAI,WAAA,GAAc,IAAA;AAClB,EAAA,WAAA,CAAY,UAAU,CAAC,GAAI,KAAK,OAAA,IAAW,IAAK,OAAO,CAAA;AAGvD,EAAA,MAAM,EAAE,QAAO,GAAI,IAAA;AACnB,EAAA,MAAM,WAAA,GAA2B,CAAC,WAAA,EAAa,QAAA,EAAU,UAAU,CAAA;AAEnE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,MAAA,CAAO,KAAK,CAAA,EAAG;AACtC,IAAA,MAAA,EAAQ,KAAK,CAAA,MAAA,EAAS,MAAM,CAAA,2CAAA,EAA8C,MAAA,CAAO,KAAK,CAAA,aAAA,CAAe,CAAA;AACrG,IAAA,WAAA,GAAc,kBAAkB,WAAA,EAAa;AAAA,MAC3C,KAAA,EAAO,WAAA;AAAA,MACP,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH,CAAA,MAAA,IAAW,MAAA,CAAO,KAAA,KAAU,gBAAA,EAAkB;AAC5C,IAAA,MAAA,EAAQ,IAAA,CAAK,CAAA,MAAA,EAAS,MAAM,CAAA,oDAAA,CAAsD,CAAA;AAClF,IAAA,WAAA,GAAc,iBAAA,CAAkB,WAAA,EAAa,EAAE,KAAA,EAAO,WAAW,CAAA;AAAA,EACnE,CAAA,MAAA,IAAW,MAAA,CAAO,KAAA,KAAU,SAAA,EAAW;AACrC,IAAA,MAAA,EAAQ,IAAA,CAAK,CAAA,MAAA,EAAS,MAAM,CAAA,uDAAA,CAAyD,CAAA;AAAA,EACvF;AAEA,EAAA,MAAM,UAAU,IAAA,CAAK,EAAE,OAAA,EAAS,IAAA,EAAM,aAAa,CAAA;AAEnD,EAAA,OAAO,WAAA;AACT;AAEO,SAAS,iBAAA,CAAkB;AAAA,EAChC,IAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAKgB;AACd,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gBAAgB,IAAI,CAAA;AAAA,IAC1B,WAAA;AAAA,IACA,OAAA,EAAS,gBAAgB,OAAO,CAAA;AAAA,IAChC,WAAA,EAAa,MAAM,mBAAA,CAAoB,GAAA,CAAI,KAAK,EAAE;AAAA,GACpD;AACF;;;AFlIA,IAAM,uBAAA,GAA0BC,KAAE,MAAA,CAAO;AAAA,EACvC,OAAA,EAASA,KAAE,MAAA,CAAO;AAAA,IAChB,MAAMA,IAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA;AAAA,IAC9B,OAAOA,IAAA,CAAE,KAAA;AAAA,MACPA,KAAE,MAAA,CAAO;AAAA,QACP,IAAA,EAAMA,IAAA,CAAE,IAAA,CAAK,CAAC,MAAM,CAAC,CAAA;AAAA,QACrB,IAAA,EAAMA,KAAE,MAAA;AAAO,OAChB;AAAA,KACH;AAAA,IACA,IAAA,EAAMA,IAAA,CAAE,OAAA,CAAQ,SAAS,CAAA;AAAA,IACzB,SAAA,EAAWA,KAAE,MAAA,EAAO;AAAA,IACpB,SAAA,EAAWA,IAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC/B,MAAA,EAAQA,IAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,IAC5B,kBAAkBA,IAAA,CAAE,KAAA,CAAMA,KAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,IAC/C,YAAYA,IAAA,CAAE,KAAA,CAAMA,KAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,IACzC,QAAA,EAAUA,IAAA,CAAE,MAAA,CAAOA,IAAA,CAAE,MAAA,IAAUA,IAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA;AAAS,GAClD;AACH,CAAC,CAAA;AAED,SAAS,uBAAA,GAUP;AACA,EAAA,OAAO;AAAA,IACL,eAAA,EAAiB,OAAA;AAAA,IACjB,sBAAsB,EAAC;AAAA,IACvB,iCAAA,EAAmC,KAAA;AAAA,IACnC,UAAU,EAAC;AAAA,IACX,iBAAiB,EAAC;AAAA,IAClB,YAAA,EAAc;AAAA,MACZ,SAAA,EAAW,IAAA;AAAA,MACX,iBAAA,EAAmB,KAAA;AAAA,MACnB,sBAAA,EAAwB,KAAA;AAAA,MACxB,YAAY;AAAC,KACf;AAAA,IACA,iBAAA,EAAmB,CAAC,YAAY,CAAA;AAAA,IAChC,kBAAA,EAAoB,CAAC,YAAY;AAAA,GACnC;AACF;AAEA,eAAsB,uBAAA,CAAwB;AAAA,EAC5C,MAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA,GAAe,QAAQ,OAAO,CAAA,CAAA;AAAA,EAC9B,QAAA,GAAW;AAAA,IACT,YAAA,EAAc,QAAA;AAAA,IACd,GAAA,EAAK;AAAA,GACP;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV;AACF,CAAA,EASuB;AACrB,EAAA,MAAM,QAAQ,MAAMC,oCAAA,CAAmB,EAAE,MAAA,EAAQ,SAA4B,CAAA;AAE7E,EAAA,MAAM,CAAC,cAAc,KAAK,CAAA,GAGtB,MAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,KAAA,CAAM,eAAA,CAAgB,EAAE,cAAA,EAAgB,GAAG,KAAA,CAAM,SAAA,CAAU,EAAE,cAAA,EAAgB,CAAC,CAAC,CAAA;AAGtG,EAAA,MAAM,SAAA,GAAuB;AAAA,IAC3B,IAAA,EAAM,MAAM,EAAA,IAAO,OAAA;AAAA,IACnB,WAAA,EAAaC,8CAA4B,YAAY,CAAA;AAAA,IACrD,GAAA,EAAK,YAAA;AAAA,IACL,QAAA;AAAA,IACA,OAAA;AAAA,IACA,GAAG,uBAAA,EAAwB;AAAA;AAAA,IAE3B,MAAA,EAAQ,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,CAAE,IAAI,CAAC,CAAC,MAAA,EAAQ,IAAI,CAAA,MAAO;AAAA,MACrD,EAAA,EAAI,MAAA;AAAA,MACJ,IAAA,EAAM,MAAA;AAAA,MACN,WAAA,EAAa,IAAA,CAAK,WAAA,IAAe,CAAA,MAAA,EAAS,MAAM,CAAA,CAAA;AAAA;AAAA,MAEhD,IAAA,EAAM,CAAC,MAAM;AAAA,KACf,CAAE;AAAA,GACJ;AAEA,EAAA,OAAO,SAAA;AACT;AAEA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,OAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,MAAM,aAAA,GAAgB,CAAA,EAAG,WAAA,IAAe,EAAE,QAAQ,OAAO,CAAA,CAAA;AAEzD,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,aAAA;AAAA,EACT;AAEA,EAAA,OAAO,CAAA,EAAGC,iCAAA,CAAgB,OAAO,CAAC,GAAG,aAAa,CAAA,CAAA;AACpD;AAEA,SAAS,0BAA0B,MAAA,EAA2B;AAC5D,EAAA,IAAI;AACF,IAAA,uBAAA,CAAwB,MAAM,MAAM,CAAA;AAAA,EACtC,SAAS,KAAA,EAAO;AACd,IAAA,IAAI,KAAA,YAAiBH,KAAE,QAAA,EAAU;AAC/B,MAAA,MAAMD,mBAAe,aAAA,CAAe,KAAA,CAAqB,MAAA,CAAO,CAAC,EAAG,OAAO,CAAA;AAAA,IAC7E;AAEA,IAAA,MAAM,KAAA;AAAA,EACR;AACF;AAEA,SAAS,oBAAA,CAAqB;AAAA,EAC5B,MAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,GAAI,OAAO,CAAC,EAAE,MAAM,MAAA,EAAiB,IAAA,EAAM,CAAA,GAAI,EAAC;AAAA,IAChD,GAAI,OAAO,CAAC,EAAE,MAAM,MAAA,EAAiB,IAAA,EAAM,CAAA,GAAI;AAAC,GAClD;AAEA,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,iBAAA;AAAA,IACN,MAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA,EAAW,IAAA;AAAA,IACX,QAAA,EAAU;AAAA,MACR,UAAA,EAAY,GAAG,MAAM,CAAA,SAAA,CAAA;AAAA,MACrB,IAAA,EAAM,OAAO,eAAA,GAAkB,cAAA;AAAA,MAC/B;AAAA;AACF,GACF;AACF;AAEA,SAAS,6BAAA,CAA8B;AAAA,EACrC,MAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAMG;AACD,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,iBAAA;AAAA,IACN,MAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAI,MAAA,GAAS,EAAE,MAAA,EAAQ,IAAA,KAAS,EAAC;AAAA,IACjC,GAAI,SAAA,KAAc,MAAA,GAAY,EAAE,SAAA,KAAc,EAAC;AAAA,IAC/C,QAAA,EAAU;AAAA,MACR,UAAA,EAAY,GAAG,MAAM,CAAA,cAAA,CAAA;AAAA,MACrB,IAAA,EAAM,cAAA;AAAA,MACN,OAAO,CAAC,EAAE,IAAA,EAAM,MAAA,EAAiB,MAAM;AAAA;AACzC,GACF;AACF;AAEA,SAAS,wBAAA,CAAyB;AAAA,EAChC,MAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,iBAAA;AAAA,IACN,MAAA;AAAA,IACA,SAAA;AAAA,IACA,GAA8B,EAAE,SAAA,GAAe;AAAA,IAC/C,QAAA,EAAU;AAAA,MACR,UAAA,EAAY,GAAG,MAAM,CAAA,cAAA,CAAA;AAAA,MACrB,IAAA,EAAM,eAAA;AAAA,MACN,OAAO,CAAC,EAAE,IAAA,EAAM,MAAA,EAAiB,MAAM;AAAA;AACzC,GACF;AACF;AAEA,SAAS,2BAA2B,KAAA,EAA+B;AACjE,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,UAAU,IAAA,IAAQ,EAAE,UAAU,KAAA,CAAA,EAAQ;AACrE,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,KAAA,GAAQ,KAAA;AAQd,EAAA,QAAQ,MAAM,IAAA;AAAM,IAClB,KAAK,YAAA;AACH,MAAA,IAAI,OAAO,KAAA,CAAM,OAAA,EAAS,IAAA,KAAS,QAAA,EAAU;AAC3C,QAAA,OAAO,MAAM,OAAA,CAAQ,IAAA;AAAA,MACvB;AAEA,MAAA,IAAI,OAAO,KAAA,CAAM,OAAA,EAAS,KAAA,KAAU,QAAA,EAAU;AAC5C,QAAA,OAAO,MAAM,OAAA,CAAQ,KAAA;AAAA,MACvB;AAEA,MAAA,IAAI,OAAO,KAAA,CAAM,SAAA,KAAc,QAAA,EAAU;AACvC,QAAA,OAAO,KAAA,CAAM,SAAA;AAAA,MACf;AAEA,MAAA,IAAI,OAAO,KAAA,CAAM,KAAA,KAAU,QAAA,EAAU;AACnC,QAAA,OAAO,KAAA,CAAM,KAAA;AAAA,MACf;AAEA,MAAA,IAAI,OAAO,KAAA,CAAM,IAAA,KAAS,QAAA,EAAU;AAClC,QAAA,OAAO,KAAA,CAAM,IAAA;AAAA,MACf;AAEA,MAAA,OAAO,IAAA;AAAA,IACT;AACE,MAAA,OAAO,IAAA;AAAA;AAEb;AAEA,SAAS,6BAA6B,KAAA,EAAqD;AACzF,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,UAAU,IAAA,IAAQ,EAAE,UAAU,KAAA,CAAA,EAAQ;AACrE,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,KAAA,GAAQ,KAAA;AAMd,EAAA,IAAI,KAAA,CAAM,SAAS,eAAA,EAAiB;AAClC,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,WAAA,GAAc,KAAA,CAAM,OAAA,EAAS,MAAA,IAAU,KAAA,CAAM,MAAA;AACnD,EAAA,OAAO,WAAA,IAAe,OAAO,WAAA,KAAgB,QAAA,GAAY,WAAA,GAA0C,MAAA;AACrG;AAEA,eAAsB,iBAAA,CAAkB;AAAA,EACtC,SAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAQG;AACD,EAAA,yBAAA,CAA0B,MAAM,CAAA;AAEhC,EAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAS,GAAI,MAAA;AAC9B,EAAA,MAAM,EAAE,WAAU,GAAI,OAAA;AACtB,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,IAAU,MAAA,CAAO,UAAA,EAAW;AAGnD,EAAA,IAAI,WAAA,GAAc,MAAM,gBAAA,CAAiB;AAAA,IACvC,MAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACD,CAAA;AAGD,EAAgB,iBAAA,CAAkB;AAAA,IAChC,IAAA,EAAM,WAAA;AAAA,IACN,WAAA,EAAa,OAAA;AAAA,IACb,OAAA,EAAS,WAAA,CAAY,OAAA,IAAW,EAAC;AAAA,IACjC,qBAAqB,SAAA,CAAU;AAAA,GAChC;AAED,EAAA,IAAI;AAGF,IAAA,MAAM,UAAA,GAAc,QAAA,EAAU,UAAA,IAA0B,OAAA,CAAQ,UAAU,UAAA,IAAyB,OAAA;AACnG,IAAA,MAAM,MAAA,GAAS,MAAM,KAAA,CAAM,QAAA,CAAS,CAAC,oBAAA,CAAqB,OAAO,CAAC,CAAA,EAAG;AAAA,MACnE,KAAA,EAAO,MAAA;AAAA,MACP,cAAA;AAAA,MACA,GAAI,SAAA,GAAY,EAAE,UAAU,SAAA,EAAW,UAAA,KAAe;AAAC,KACxD,CAAA;AAED,IAAA,MAAM,iBAAiB,oBAAA,CAAqB;AAAA,MAC1C,QAAQ,WAAA,CAAY,EAAA;AAAA,MACpB,WAAW,WAAA,CAAY,SAAA;AAAA,MACvB,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,MAAM,MAAA,CAAO;AAAA,KACd,CAAA;AAED,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,WAAA,GAAc,iBAAA,CAAkB,aAAa,cAAc,CAAA;AAAA,IAC7D;AAEA,IAAA,WAAA,GAAc,kBAAkB,WAAA,EAAa;AAAA,MAC3C,KAAA,EAAO,WAAA;AAAA,MACP,OAAA,EAAS;AAAA,KACV,CAAA;AAGD,IAAA,WAAA,CAAY,QAAA,GAAW;AAAA,MACrB,GAAG,WAAA,CAAY,QAAA;AAAA,MACf,SAAA,EAAW;AAAA,QACT,WAAW,MAAA,CAAO,SAAA;AAAA,QAClB,aAAa,MAAA,CAAO,WAAA;AAAA,QACpB,OAAO,MAAA,CAAO,KAAA;AAAA,QACd,cAAc,MAAA,CAAO;AAAA;AACvB,KACF;AAEA,IAAA,MAAM,UAAU,IAAA,CAAK,EAAE,OAAA,EAAS,IAAA,EAAM,aAAa,CAAA;AACpC,EACjB,SAAS,YAAA,EAAc;AAErB,IAAA,MAAM,mBAAA,GAAqD;AAAA,MACzD,KAAA,EAAO,QAAA;AAAA,MACP,OAAA,EAAS;AAAA,QACP,SAAA,EAAW,OAAO,UAAA,EAAW;AAAA,QAC7B,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO;AAAA,UACL;AAAA,YACE,IAAA,EAAM,MAAA;AAAA,YACN,IAAA,EAAM,mBAAmB,YAAA,YAAwB,KAAA,GAAQ,aAAa,OAAA,GAAU,MAAA,CAAO,YAAY,CAAC,CAAA;AAAA;AACtG,SACF;AAAA,QACA,IAAA,EAAM;AAAA;AACR,KACF;AACA,IAAA,WAAA,GAAc,iBAAA,CAAkB,aAAa,mBAAmB,CAAA;AAEhE,IAAA,IAAI;AACF,MAAA,MAAM,UAAU,IAAA,CAAK,EAAE,OAAA,EAAS,IAAA,EAAM,aAAa,CAAA;AAAA,IACrD,SAAS,SAAA,EAAW;AAElB,MAAA,MAAA,EAAQ,MAAM,CAAA,oBAAA,EAAuB,WAAA,CAAY,EAAE,CAAA,qBAAA,CAAA,EAAyB,WAAW,OAAO,CAAA;AAAA,IAChG;AAEA,IAAA,OAAO,cAAA,CAAe,YAAA,EAAc,SAAA,EAAW,WAAA,CAAY,IAAI,MAAM,CAAA;AAAA,EACvE;AAGA,EAAA,OAAO,qBAAA,CAAsB,WAAW,WAAW,CAAA;AACrD;AAEA,eAAsB,aAAA,CAAc;AAAA,EAClC,SAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,MAAM,OAAO,MAAM,SAAA,CAAU,KAAK,EAAE,OAAA,EAAS,QAAQ,CAAA;AAErD,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,MAAMA,kBAAAA,CAAe,aAAa,MAAM,CAAA;AAAA,EAC1C;AAEA,EAAA,OAAO,qBAAA,CAAsB,WAAW,IAAI,CAAA;AAC9C;AAEA,gBAAuB,mBAAA,CAAoB;AAAA,EACzC,SAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAQG;AACD,EAAA,yBAAA,CAA0B,MAAM,CAAA;AAEhC,EAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAS,GAAI,MAAA;AAC9B,EAAA,MAAM,EAAE,WAAU,GAAI,OAAA;AACtB,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,IAAU,MAAA,CAAO,UAAA,EAAW;AAEnD,EAAA,IAAI,WAAA,GAAc,MAAM,gBAAA,CAAiB;AAAA,IACvC,MAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,WAAA,GAAc,kBAAkB,WAAA,EAAa;AAAA,IAC3C,KAAA,EAAO,SAAA;AAAA,IACP,OAAA,EAAS;AAAA,MACP,SAAA,EAAW,OAAO,UAAA,EAAW;AAAA,MAC7B,IAAA,EAAM,SAAA;AAAA,MACN,IAAA,EAAM,OAAA;AAAA,MACN,OAAO,CAAC,EAAE,MAAM,MAAA,EAAQ,IAAA,EAAM,0BAA0B;AAAA;AAC1D,GACD,CAAA;AAED,EAAA,MAAM,UAAU,IAAA,CAAK,EAAE,OAAA,EAAS,IAAA,EAAM,aAAa,CAAA;AAEnD,EAAA,MAAM,qBAAA,CAAsB,WAAW,WAAW,CAAA;AAElD,EAAA,IAAI;AACF,IAAA,MAAM,UAAA,GAAc,QAAA,EAAU,UAAA,IAA0B,OAAA,CAAQ,UAAU,UAAA,IAAyB,OAAA;AACnG,IAAA,MAAM,MAAA,GAAS,MAAM,KAAA,CAAM,MAAA,CAAO,CAAC,oBAAA,CAAqB,OAAO,CAAC,CAAA,EAAG;AAAA,MACjE,KAAA,EAAO,MAAA;AAAA,MACP,cAAA;AAAA,MACA,GAAI,SAAA,GAAY,EAAE,UAAU,SAAA,EAAW,UAAA,KAAe;AAAC,KACxD,CAAA;AACD,IAAA,IAAI,eAAA,GAAkB,KAAA;AACtB,IAAA,IAAI,gBAAA;AACJ,IAAA,IAAI,cAAA;AAEJ,IAAA,WAAA,MAAiB,KAAA,IAAS,OAAO,UAAA,EAAY;AAC3C,MAAA,MAAM,SAAA,GAAY,2BAA2B,KAAK,CAAA;AAClD,MAAA,IAAI,cAAc,IAAA,EAAM;AACtB,QAAA,IAAI,CAAC,gBAAA,EAAkB;AACrB,UAAA,gBAAA,GAAmB,SAAA;AACnB,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,aAAa,6BAAA,CAA8B;AAAA,UAC/C,QAAQ,WAAA,CAAY,EAAA;AAAA,UACpB,WAAW,WAAA,CAAY,SAAA;AAAA,UACvB,IAAA,EAAM,gBAAA;AAAA,UACN,MAAA,EAAQ,eAAA;AAAA,UACR,SAAA,EAAW;AAAA,SACZ,CAAA;AAED,QAAA,WAAA,GAAc,iBAAA,CAAkB,aAAa,UAAU,CAAA;AACvD,QAAA,MAAM,UAAU,IAAA,CAAK,EAAE,OAAA,EAAS,IAAA,EAAM,aAAa,CAAA;AACnD,QAAA,MAAM,qBAAA,CAAsB,WAAW,UAAU,CAAA;AAEjD,QAAA,eAAA,GAAkB,IAAA;AAClB,QAAA,gBAAA,GAAmB,SAAA;AACnB,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,qBAAA,GAAwB,6BAA6B,KAAK,CAAA;AAChE,MAAA,IAAI,qBAAA,EAAuB;AACzB,QAAA,cAAA,GAAiB,qBAAA;AAAA,MACnB;AAAA,IACF;AAEA,IAAA,cAAA,KAAoB,MAAM,MAAA,CAAO,MAAA;AAEjC,IAAA,IAAI,CAAC,gBAAA,IAAoB,CAAC,eAAA,EAAiB;AACzC,MAAA,MAAM,SAAA,GAAY,MAAM,MAAA,CAAO,IAAA;AAC/B,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,gBAAA,GAAmB,SAAA;AAAA,MACrB;AAAA,IACF;AAEA,IAAA,IAAI,gBAAA,EAAkB;AACpB,MAAA,MAAM,aAAa,6BAAA,CAA8B;AAAA,QAC/C,QAAQ,WAAA,CAAY,EAAA;AAAA,QACpB,WAAW,WAAA,CAAY,SAAA;AAAA,QACvB,IAAA,EAAM,gBAAA;AAAA,QACN,MAAA,EAAQ,eAAA;AAAA,QACR,WAAW,CAAC;AAAA,OACb,CAAA;AAED,MAAA,WAAA,GAAc,iBAAA,CAAkB,aAAa,UAAU,CAAA;AACvD,MAAA,MAAM,UAAU,IAAA,CAAK,EAAE,OAAA,EAAS,IAAA,EAAM,aAAa,CAAA;AACnD,MAAA,MAAM,qBAAA,CAAsB,WAAW,UAAU,CAAA;AAEjD,MAAA,eAAA,GAAkB,IAAA;AAClB,MAAA,gBAAA,GAAmB,MAAA;AAAA,IACrB;AAEA,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,MAAM,aAAa,wBAAA,CAAyB;AAAA,QAC1C,QAAQ,WAAA,CAAY,EAAA;AAAA,QACpB,WAAW,WAAA,CAAY,SAAA;AAAA,QACvB,IAAA,EAAM,cAAA;AAAA,QACN,SAAA,EAAW;AAAA,OACZ,CAAA;AAED,MAAA,WAAA,GAAc,iBAAA,CAAkB,aAAa,UAAU,CAAA;AACvD,MAAA,MAAM,UAAU,IAAA,CAAK,EAAE,OAAA,EAAS,IAAA,EAAM,aAAa,CAAA;AACnD,MAAA,MAAM,qBAAA,CAAsB,WAAW,UAAU,CAAA;AAAA,IACnD;AAEA,IAAA,WAAA,GAAc,kBAAkB,WAAA,EAAa;AAAA,MAC3C,KAAA,EAAO,WAAA;AAAA,MACP,OAAA,EAAS;AAAA,KACV,CAAA;AAED,IAAA,WAAA,CAAY,QAAA,GAAW;AAAA,MACrB,GAAG,WAAA,CAAY,QAAA;AAAA,MACf,SAAA,EAAW;AAAA,QACT,SAAA,EAAW,MAAM,MAAA,CAAO,SAAA;AAAA,QACxB,WAAA,EAAa,MAAM,MAAA,CAAO,WAAA;AAAA,QAC1B,KAAA,EAAO,MAAM,MAAA,CAAO,KAAA;AAAA,QACpB,YAAA,EAAc,MAAM,MAAA,CAAO;AAAA;AAC7B,KACF;AAEA,IAAA,MAAM,UAAU,IAAA,CAAK,EAAE,OAAA,EAAS,IAAA,EAAM,aAAa,CAAA;AAAA,EACrD,SAAS,YAAA,EAAc;AACrB,IAAA,WAAA,GAAc,kBAAkB,WAAA,EAAa;AAAA,MAC3C,KAAA,EAAO,QAAA;AAAA,MACP,OAAA,EAAS;AAAA,QACP,SAAA,EAAW,OAAO,UAAA,EAAW;AAAA,QAC7B,IAAA,EAAM,OAAA;AAAA,QACN,KAAA,EAAO;AAAA,UACL;AAAA,YACE,IAAA,EAAM,MAAA;AAAA,YACN,IAAA,EAAM,mBAAmB,YAAA,YAAwB,KAAA,GAAQ,aAAa,OAAA,GAAU,MAAA,CAAO,YAAY,CAAC,CAAA;AAAA;AACtG,SACF;AAAA,QACA,IAAA,EAAM;AAAA;AACR,KACD,CAAA;AAED,IAAA,IAAI;AACF,MAAA,MAAM,UAAU,IAAA,CAAK,EAAE,OAAA,EAAS,IAAA,EAAM,aAAa,CAAA;AAAA,IACrD,SAAS,SAAA,EAAW;AAElB,MAAA,MAAA,EAAQ,MAAM,CAAA,oBAAA,EAAuB,WAAA,CAAY,EAAE,CAAA,qBAAA,CAAA,EAAyB,WAAW,OAAO,CAAA;AAAA,IAChG;AAAA,EACF;AAEA,EAAA,MAAM,sBAAsB,SAAA,EAAW;AAAA,IACrC,IAAA,EAAM,eAAA;AAAA,IACN,QAAQ,WAAA,CAAY,EAAA;AAAA,IACpB,WAAW,WAAA,CAAY,SAAA;AAAA,IACvB,QAAQ,WAAA,CAAY,MAAA;AAAA,IACpB,KAAA,EAAO;AAAA,GACR,CAAA;AACH;AAEA,gBAAuB,qBAAA,CAAsB;AAAA,EAC3C,SAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAMG;AACD,EAAA,IAAI,WAAW,SAAA,CAAU,eAAA,CAAgB,EAAE,OAAA,EAAS,QAAQ,CAAA;AAE5D,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,MAAMA,kBAAAA,CAAe,aAAa,MAAM,CAAA;AAAA,EAC1C;AAEA,EAAA,MAAM,WAAA,GAA2B,CAAC,WAAA,EAAa,QAAA,EAAU,UAAU,CAAA;AAEnE,EAAA,OAAO,IAAA,EAAM;AACX,IAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAQ,GAAI,QAAA;AAC1B,IAAA,MAAM,OAAA,GAAU,WAAA,CAAY,QAAA,CAAS,IAAA,CAAK,OAAO,KAAK,CAAA;AAEtD,IAAA,MAAM,sBAAsB,SAAA,EAAW;AAAA,MACrC,IAAA,EAAM,eAAA;AAAA,MACN,QAAQ,IAAA,CAAK,EAAA;AAAA,MACb,WAAW,IAAA,CAAK,SAAA;AAAA,MAChB,QAAQ,IAAA,CAAK,MAAA;AAAA,MACb,KAAA,EAAO;AAAA,KACR,CAAA;AAED,IAAA,IAAI,OAAA,EAAS;AACX,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,UAAA,GAAa,MAAM,SAAA,CAAU,iBAAA,CAAkB;AAAA,MACnD,OAAA;AAAA,MACA,MAAA;AAAA,MACA,YAAA,EAAc,OAAA;AAAA,MACd,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,QAAA,GAAW,UAAA;AAAA,EACb;AACF;AAEA,SAAS,oBACP,MAAA,EACA;AACA,EAAA,IAAI,CAAC,MAAA,IAAU,OAAO,MAAA,KAAW,QAAA,EAAU;AACzC,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI,IAAA,IAAQ,MAAA,IAAU,OAAO,MAAA,CAAO,OAAO,QAAA,EAAU;AACnD,IAAA,OAAO,MAAA,CAAO,EAAA;AAAA,EAChB;AAEA,EAAA,IAAI,QAAA,IAAY,MAAA,IAAU,OAAO,MAAA,CAAO,WAAW,QAAA,EAAU;AAC3D,IAAA,OAAO,MAAA,CAAO,MAAA;AAAA,EAChB;AAEA,EAAA,IAAI,SAAA,IAAa,MAAA,IAAU,MAAA,CAAO,OAAA,IAAW,OAAO,OAAO,OAAA,KAAY,QAAA,IAAY,QAAA,IAAY,MAAA,CAAO,OAAA,EAAS;AAC7G,IAAA,OAAO,OAAO,MAAA,CAAO,OAAA,CAAQ,WAAW,QAAA,GAAW,MAAA,CAAO,QAAQ,MAAA,GAAS,MAAA;AAAA,EAC7E;AAEA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,gBAAgB,KAAA,EAAiD;AACxE,EAAA,OAAO,CAAC,CAAC,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,aAAA,IAAiB,KAAA;AACzE;AAEA,SAAS,sBAAsB,OAAA,EAA4B;AACzD,EAAA,OAAO,QAAA,CAAS,KAAK,OAAO,CAAA;AAC9B;AAEA,SAAS,qBAAqB,OAAA,EAAqD;AACjF,EAAA,MAAM,OAAA,GAAU,IAAI,WAAA,EAAY;AAChC,EAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,OAAO,CAAA,GACpC,WACC,mBAAmB;AAClB,IAAA,MAAM,OAAA;AAAA,EACR,CAAA,GAAG;AAEP,EAAA,MAAM,MAAA,GAAS,IAAI,cAAA,CAA2B;AAAA,IAC5C,MAAM,MAAM,UAAA,EAAY;AACtB,MAAA,IAAI;AACF,QAAA,WAAA,MAAiB,SAAS,QAAA,EAAU;AAClC,UAAA,UAAA,CAAW,QAAQ,OAAA,CAAQ,MAAA,CAAO,SAAS,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC;;AAAA,CAAM,CAAC,CAAA;AAAA,QACzE;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,UAAA,CAAW,MAAM,KAAK,CAAA;AACtB,QAAA;AAAA,MACF;AAEA,MAAA,UAAA,CAAW,KAAA,EAAM;AAAA,IACnB;AAAA,GACD,CAAA;AAED,EAAA,OAAO,IAAI,SAAS,MAAA,EAAQ;AAAA,IAC1B,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB,kCAAA;AAAA,MAChB,eAAA,EAAiB,UAAA;AAAA,MACjB,UAAA,EAAY,YAAA;AAAA,MACZ,mBAAA,EAAqB;AAAA;AACvB,GACD,CAAA;AACH;AAEA,eAAsB,gBAAA,CAAiB;AAAA,EACrC,SAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAMG;AAED,EAAA,IAAI,IAAA,GAAO,MAAM,SAAA,CAAU,IAAA,CAAK;AAAA,IAC9B,OAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,MAAMA,kBAAAA,CAAe,aAAa,MAAM,CAAA;AAAA,EAC1C;AAGA,EAAA,MAAM,WAAA,GAA2B,CAAC,WAAA,EAAa,QAAA,EAAU,UAAU,CAAA;AAEnE,EAAA,IAAI,WAAA,CAAY,QAAA,CAAS,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,EAAG;AAC3C,IAAA,MAAA,EAAQ,KAAK,CAAA,KAAA,EAAQ,MAAM,2BAA2B,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,gBAAA,CAAkB,CAAA;AACzF,IAAA,OAAO,qBAAA,CAAsB,WAAW,IAAI,CAAA;AAAA,EAC9C;AAGA,EAAA,SAAA,CAAU,mBAAA,CAAoB,IAAI,MAAM,CAAA;AAGxC,EAAA,MAAM,YAAA,GAA8C;AAAA,IAClD,KAAA,EAAO,UAAA;AAAA,IACP,OAAA,EAAS;AAAA,MACP,IAAA,EAAM,OAAA;AAAA,MACN,OAAO,CAAC,EAAE,MAAM,MAAA,EAAQ,IAAA,EAAM,8BAA8B,CAAA;AAAA,MAC5D,IAAA,EAAM,SAAA;AAAA,MACN,SAAA,EAAW,OAAO,UAAA;AAAW;AAC/B,GACF;AAEA,EAAA,IAAA,GAAO,iBAAA,CAAkB,MAAM,YAAY,CAAA;AAG3C,EAAA,MAAM,SAAA,CAAU,IAAA,CAAK,EAAE,OAAA,EAAS,MAAM,CAAA;AAGtC,EAAA,SAAA,CAAU,mBAAA,CAAoB,OAAO,MAAM,CAAA;AAG3C,EAAA,OAAO,qBAAA,CAAsB,WAAW,IAAI,CAAA;AAC9C;AAEA,eAAsB,wBAAA,CAAyB;AAAA,EAC7C,SAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAmBiB;AACf,EAAA,MAAM,QAAQ,MAAME,oCAAA,CAAmB,EAAE,MAAA,EAAQ,SAAS,CAAA;AAE1D,EAAA,IAAI,MAAA;AAEJ,EAAA,IAAI;AACF,IAAA,MAAA,GAAS,oBAAoB,MAAM,CAAA;AAGnC,IAAA,QAAQ,MAAA;AAAQ,MACd,KAAK,cAAA,EAAgB;AACnB,QAAA,MAAM,MAAA,GAAS,MAAM,iBAAA,CAAkB;AAAA,UACrC,SAAA;AAAA,UACA,MAAA;AAAA,UACA,SAAA;AAAA,UACA,KAAA;AAAA,UACA,OAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,MACA,KAAK,gBAAA,EAAkB;AACrB,QAAA,MAAM,MAAA,GAAS,MAAM,mBAAA,CAAoB;AAAA,UACvC,SAAA;AAAA,UACA,SAAA;AAAA,UACA,MAAA;AAAA,UACA,KAAA;AAAA,UACA,OAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,MAEA,KAAK,WAAA,EAAa;AAChB,QAAA,MAAM,MAAA,GAAS,MAAM,aAAA,CAAc;AAAA,UACjC,SAAA;AAAA,UACA,SAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAQ,MAAA,IAAU;AAAA,SACnB,CAAA;AAED,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,MACA,KAAK,cAAA,EAAgB;AACnB,QAAA,MAAM,MAAA,GAAS,MAAM,gBAAA,CAAiB;AAAA,UACpC,SAAA;AAAA,UACA,SAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAQ,MAAA,IAAU;AAAA,SACnB,CAAA;AAED,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,MACA,KAAK,mBAAA;AACH,QAAA,OAAO,MAAM,qBAAA,CAAsB;AAAA,UACjC,SAAA;AAAA,UACA,SAAA;AAAA,UACA,OAAA;AAAA,UACA,QAAQ,MAAA,IAAU,qBAAA;AAAA,UAClB;AAAA,SACD,CAAA;AAAA,MACH,KAAK,kCAAA;AAAA,MACL,KAAK,kCAAA;AAAA,MACL,KAAK,mCAAA;AAAA,MACL,KAAK,qCAAA;AACH,QAAA,MAAMF,mBAAe,4BAAA,EAA6B;AAAA,MACpD,KAAK,oCAAA;AACH,QAAA,MAAMA,mBAAe,8BAAA,EAA+B;AAAA,MACtD;AACE,QAAA,MAAMA,kBAAAA,CAAe,eAAe,MAAM,CAAA;AAAA;AAC9C,EACF,SAAS,KAAA,EAAO;AACd,IAAA,IAAI,KAAA,YAAiBA,kBAAAA,IAAkB,MAAA,IAAU,CAAC,MAAM,MAAA,EAAQ;AAC9D,MAAA,KAAA,CAAM,MAAA,GAAS,MAAA;AAAA,IACjB;AAEA,IAAA,OAAO,cAAA,CAAe,KAAA,EAAO,SAAA,EAAW,MAAA,EAAQ,MAAM,CAAA;AAAA,EACxD;AACF;AAMO,IAAM,uBAAuBK,6BAAA,CAAY;AAAA,EAC9C,MAAA,EAAQ,KAAA;AAAA,EACR,IAAA,EAAM,uCAAA;AAAA,EACN,YAAA,EAAc,MAAA;AAAA,EACd,eAAA,EAAiBC,sCAAA;AAAA,EACjB,cAAA,EAAgBC,yCAAA;AAAA,EAChB,OAAA,EAAS,gBAAA;AAAA,EACT,WAAA,EAAa,+DAAA;AAAA,EACb,IAAA,EAAM,CAAC,gBAAgB,CAAA;AAAA,EACvB,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAM,GAAA,KAAO;AACpB,IAAA,MAAM,eAAe,kBAAA,CAAmB;AAAA,MACtC,SAAS,GAAA,CAAI,OAAA;AAAA,MACb,SAAU,GAAA,CAA2C,OAAA;AAAA,MACrD,aAAa,GAAA,CAAI;AAAA,KAClB,CAAA;AAED,IAAA,OAAO,uBAAA,CAAwB;AAAA,MAC7B,QAAQ,GAAA,CAAI,MAAA;AAAA,MACZ,gBAAgB,GAAA,CAAI,cAAA;AAAA,MACpB,SAAS,GAAA,CAAI,OAAA;AAAA,MACb;AAAA,KACD,CAAA;AAAA,EACH;AACF,CAAC;AAEM,IAAM,wBAAwBF,6BAAA,CAAY;AAAA,EAC/C,MAAA,EAAQ,MAAA;AAAA,EACR,IAAA,EAAM,eAAA;AAAA,EACN,YAAA,EAAc,qBAAA;AAAA,EACd,eAAA,EAAiBC,sCAAA;AAAA,EACjB,UAAA,EAAYE,0CAAA;AAAA,EACZ,cAAA,EAAgBC,8CAAA;AAAA,EAChB,OAAA,EAAS,eAAA;AAAA,EACT,WAAA,EAAa,6DAAA;AAAA,EACb,IAAA,EAAM,CAAC,gBAAgB,CAAA;AAAA,EACvB,YAAA,EAAc,IAAA;AAAA,EACd,OAAA,EAAS,OAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,gBAAgB,SAAA,EAAW,WAAA,EAAa,GAAG,UAAA,EAAW,KAAM;AAC7F,IAAA,MAAM,EAAE,EAAA,EAAI,SAAA,EAAW,MAAA,EAAO,GAAI,UAAA;AAClC,IAAA,MAAM,MAAA,GAAS,QAAA,IAAY,UAAA,GAAa,UAAA,CAAW,MAAA,GAAS,MAAA;AAC5D,IAAA,MAAM,MAAA,GAAS,MAAM,wBAAA,CAAyB;AAAA,MAC5C,SAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,cAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,IAAI,MAAA,KAAW,gBAAA,IAAoB,MAAA,KAAW,mBAAA,EAAqB;AACjE,MAAA,OAAO,qBAAqB,MAAM,CAAA;AAAA,IACpC;AAEA,IAAA,OAAO,sBAAsB,MAAM,CAAA;AAAA,EACrC;AACF,CAAC","file":"chunk-ZCCXXT7V.cjs","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 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\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\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 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 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.stream([convertToCoreMessage(message)], {\n runId: taskId,\n requestContext,\n ...(contextId ? { threadId: contextId, resourceId } : {}),\n });\n let sawTextArtifact = false;\n let pendingTextChunk: string | undefined;\n let structuredData: Record<string, unknown> | undefined;\n\n for await (const chunk of result.fullStream) {\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 await taskStore.save({ agentId, data: currentData });\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 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 await taskStore.save({ agentId, data: currentData });\n yield createSuccessResponse(requestId, textUpdate);\n\n sawTextArtifact = true;\n pendingTextChunk = undefined;\n }\n\n if (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 await taskStore.save({ agentId, data: currentData });\n yield createSuccessResponse(requestId, dataUpdate);\n }\n\n currentData = applyUpdateToTask(currentData, {\n state: 'completed',\n message: undefined,\n });\n\n currentData.metadata = {\n ...currentData.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 await taskStore.save({ agentId, data: currentData });\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"]}