@mastra/server 0.0.0-inject-middleware-20250528222017 → 0.0.0-interpolate-reporter-url-20250910180021
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.
- package/CHANGELOG.md +3569 -0
- package/LICENSE.md +11 -42
- package/dist/{chunk-5SN4U5AC.cjs → chunk-3THIIWWW.cjs} +113 -137
- package/dist/chunk-3THIIWWW.cjs.map +1 -0
- package/dist/{chunk-H5PTF3Y4.js → chunk-4QCXUEAT.js} +11 -2
- package/dist/chunk-4QCXUEAT.js.map +1 -0
- package/dist/chunk-4RRMWXQ2.js +3522 -0
- package/dist/chunk-4RRMWXQ2.js.map +1 -0
- package/dist/chunk-5DP5XZH6.cjs +928 -0
- package/dist/chunk-5DP5XZH6.cjs.map +1 -0
- package/dist/{chunk-P6SCPDYW.js → chunk-5QUKZCEF.js} +112 -136
- package/dist/chunk-5QUKZCEF.js.map +1 -0
- package/dist/chunk-66YYHFGF.js +761 -0
- package/dist/chunk-66YYHFGF.js.map +1 -0
- package/dist/chunk-6GMFZ5LK.js +2774 -0
- package/dist/chunk-6GMFZ5LK.js.map +1 -0
- package/dist/chunk-6LUKYSWE.cjs +610 -0
- package/dist/chunk-6LUKYSWE.cjs.map +1 -0
- package/dist/chunk-743UIDHI.cjs +2013 -0
- package/dist/chunk-743UIDHI.cjs.map +1 -0
- package/dist/{chunk-OCWPVYNI.cjs → chunk-7NADHFD2.cjs} +3 -0
- package/dist/chunk-7NADHFD2.cjs.map +1 -0
- package/dist/chunk-7QEJ5QG5.js +151 -0
- package/dist/chunk-7QEJ5QG5.js.map +1 -0
- package/dist/chunk-A3AL7EWJ.js +83 -0
- package/dist/chunk-A3AL7EWJ.js.map +1 -0
- package/dist/{chunk-HFWCEP5S.js → chunk-A75S4TDD.js} +36 -11
- package/dist/chunk-A75S4TDD.js.map +1 -0
- package/dist/chunk-AK2FXLLB.cjs +849 -0
- package/dist/chunk-AK2FXLLB.cjs.map +1 -0
- package/dist/chunk-B2V3PUB7.js +591 -0
- package/dist/chunk-B2V3PUB7.js.map +1 -0
- package/dist/chunk-CY4TP3FK.js +16 -0
- package/dist/chunk-CY4TP3FK.js.map +1 -0
- package/dist/chunk-EMMSS5I5.cjs +37 -0
- package/dist/chunk-EMMSS5I5.cjs.map +1 -0
- package/dist/chunk-EMNGA4R4.js +845 -0
- package/dist/chunk-EMNGA4R4.js.map +1 -0
- package/dist/chunk-FALVL2VV.cjs +3525 -0
- package/dist/chunk-FALVL2VV.cjs.map +1 -0
- package/dist/chunk-FQNT7PI4.js +937 -0
- package/dist/chunk-FQNT7PI4.js.map +1 -0
- package/dist/chunk-G3PMV62Z.js +33 -0
- package/dist/chunk-G3PMV62Z.js.map +1 -0
- package/dist/chunk-G4PUALCE.cjs +28 -0
- package/dist/chunk-G4PUALCE.cjs.map +1 -0
- package/dist/chunk-GU4EWMZB.cjs +769 -0
- package/dist/chunk-GU4EWMZB.cjs.map +1 -0
- package/dist/chunk-GUI3CROV.cjs +159 -0
- package/dist/chunk-GUI3CROV.cjs.map +1 -0
- package/dist/chunk-HJQKWRKQ.cjs +764 -0
- package/dist/chunk-HJQKWRKQ.cjs.map +1 -0
- package/dist/{chunk-YWLUOY3D.cjs → chunk-HVBBFCDH.cjs} +1110 -793
- package/dist/chunk-HVBBFCDH.cjs.map +1 -0
- package/dist/chunk-HZJRQ5L3.cjs +1411 -0
- package/dist/chunk-HZJRQ5L3.cjs.map +1 -0
- package/dist/chunk-IGFMAZZ5.cjs +1150 -0
- package/dist/chunk-IGFMAZZ5.cjs.map +1 -0
- package/dist/chunk-IOQGI4ML.js +931 -0
- package/dist/chunk-IOQGI4ML.js.map +1 -0
- package/dist/{chunk-VPNDC2DI.cjs → chunk-IY34NOLA.cjs} +16 -14
- package/dist/chunk-IY34NOLA.cjs.map +1 -0
- package/dist/chunk-J7BPKKOG.cjs +163 -0
- package/dist/chunk-J7BPKKOG.cjs.map +1 -0
- package/dist/{chunk-YIOVBYZH.cjs → chunk-KNGXRN26.cjs} +48 -45
- package/dist/chunk-KNGXRN26.cjs.map +1 -0
- package/dist/{chunk-OR3CIE2H.js → chunk-KV6VHX4V.js} +29 -7
- package/dist/chunk-KV6VHX4V.js.map +1 -0
- package/dist/chunk-L265APUD.cjs +69 -0
- package/dist/chunk-L265APUD.cjs.map +1 -0
- package/dist/chunk-LF2ZLOFP.js +767 -0
- package/dist/chunk-LF2ZLOFP.js.map +1 -0
- package/dist/chunk-LYPU75T6.js +1147 -0
- package/dist/chunk-LYPU75T6.js.map +1 -0
- package/dist/chunk-M2YFWHSB.js +455 -0
- package/dist/chunk-M2YFWHSB.js.map +1 -0
- package/dist/chunk-MLGHQDZZ.js +15671 -0
- package/dist/chunk-MLGHQDZZ.js.map +1 -0
- package/dist/{chunk-NYN7KFXL.js → chunk-MMROOK5J.js} +3 -0
- package/dist/chunk-MMROOK5J.js.map +1 -0
- package/dist/{chunk-LIVAK2DM.js → chunk-N7F33WAD.js} +1083 -794
- package/dist/chunk-N7F33WAD.js.map +1 -0
- package/dist/chunk-NG5IVLEZ.js +1012 -0
- package/dist/chunk-NG5IVLEZ.js.map +1 -0
- package/dist/chunk-OGW6HHVI.js +1408 -0
- package/dist/chunk-OGW6HHVI.js.map +1 -0
- package/dist/chunk-OZLRIVC4.cjs +588 -0
- package/dist/chunk-OZLRIVC4.cjs.map +1 -0
- package/dist/chunk-P7CIEIJ3.js +925 -0
- package/dist/chunk-P7CIEIJ3.js.map +1 -0
- package/dist/chunk-P7RBMCBE.cjs +934 -0
- package/dist/chunk-P7RBMCBE.cjs.map +1 -0
- package/dist/chunk-PPYGWINI.cjs +2777 -0
- package/dist/chunk-PPYGWINI.cjs.map +1 -0
- package/dist/{chunk-MHKNLNAN.cjs → chunk-PWTXZZTR.cjs} +33 -10
- package/dist/chunk-PWTXZZTR.cjs.map +1 -0
- package/dist/chunk-R7NOGUZG.js +65 -0
- package/dist/chunk-R7NOGUZG.js.map +1 -0
- package/dist/chunk-RCHEPTZZ.js +2006 -0
- package/dist/chunk-RCHEPTZZ.js.map +1 -0
- package/dist/chunk-RE4RPXT2.cjs +18 -0
- package/dist/chunk-RE4RPXT2.cjs.map +1 -0
- package/dist/chunk-RW2D3G4K.cjs +470 -0
- package/dist/chunk-RW2D3G4K.cjs.map +1 -0
- package/dist/chunk-SIGXR3JT.cjs +1043 -0
- package/dist/chunk-SIGXR3JT.cjs.map +1 -0
- package/dist/chunk-SPLSYTYW.cjs +88 -0
- package/dist/chunk-SPLSYTYW.cjs.map +1 -0
- package/dist/chunk-SQY4T6EJ.js +571 -0
- package/dist/chunk-SQY4T6EJ.js.map +1 -0
- package/dist/{chunk-TJKLBTFB.js → chunk-SYRRSBGL.js} +51 -27
- package/dist/chunk-SYRRSBGL.js.map +1 -0
- package/dist/{chunk-BNEY4P4P.cjs → chunk-T3TIA3O6.cjs} +20 -18
- package/dist/chunk-T3TIA3O6.cjs.map +1 -0
- package/dist/{chunk-W7VCKPAD.js → chunk-TTHEEIZ3.js} +19 -16
- package/dist/chunk-TTHEEIZ3.js.map +1 -0
- package/dist/chunk-TVSIG4JE.cjs +940 -0
- package/dist/chunk-TVSIG4JE.cjs.map +1 -0
- package/dist/{chunk-C7564HUT.js → chunk-U46VIX2V.js} +6 -4
- package/dist/chunk-U46VIX2V.js.map +1 -0
- package/dist/{chunk-55DOQLP6.js → chunk-WHN4VX55.js} +5 -3
- package/dist/chunk-WHN4VX55.js.map +1 -0
- package/dist/chunk-WZC6CIVD.cjs +120 -0
- package/dist/chunk-WZC6CIVD.cjs.map +1 -0
- package/dist/chunk-YITREQVN.cjs +15707 -0
- package/dist/chunk-YITREQVN.cjs.map +1 -0
- package/dist/dist-26HWEQY6.js +3 -0
- package/dist/dist-26HWEQY6.js.map +1 -0
- package/dist/dist-3A5DXB37.cjs +20 -0
- package/dist/dist-3A5DXB37.cjs.map +1 -0
- package/dist/dist-3SJKQJGY.cjs +16 -0
- package/dist/dist-3SJKQJGY.cjs.map +1 -0
- package/dist/dist-4ZQSPE5K.js +3 -0
- package/dist/dist-4ZQSPE5K.js.map +1 -0
- package/dist/dist-5W5QNRTD.js +3 -0
- package/dist/dist-5W5QNRTD.js.map +1 -0
- package/dist/dist-653SRMPL.js +3 -0
- package/dist/dist-653SRMPL.js.map +1 -0
- package/dist/dist-6U6EFC5C.cjs +16 -0
- package/dist/dist-6U6EFC5C.cjs.map +1 -0
- package/dist/dist-7IHNNYMF.cjs +16 -0
- package/dist/dist-7IHNNYMF.cjs.map +1 -0
- package/dist/dist-B5IPRF6W.js +3 -0
- package/dist/dist-B5IPRF6W.js.map +1 -0
- package/dist/dist-EOMYFT4Y.cjs +16 -0
- package/dist/dist-EOMYFT4Y.cjs.map +1 -0
- package/dist/dist-EZZMMMNT.cjs +16 -0
- package/dist/dist-EZZMMMNT.cjs.map +1 -0
- package/dist/dist-F2ET4MNO.cjs +16 -0
- package/dist/dist-F2ET4MNO.cjs.map +1 -0
- package/dist/dist-H64VX6DE.js +3 -0
- package/dist/dist-H64VX6DE.js.map +1 -0
- package/dist/dist-HY7RMLJQ.cjs +16 -0
- package/dist/dist-HY7RMLJQ.cjs.map +1 -0
- package/dist/dist-M6S4P3FJ.js +3 -0
- package/dist/dist-M6S4P3FJ.js.map +1 -0
- package/dist/dist-NR7QSCQT.js +3 -0
- package/dist/dist-NR7QSCQT.js.map +1 -0
- package/dist/dist-QLFMCMCX.js +3 -0
- package/dist/dist-QLFMCMCX.js.map +1 -0
- package/dist/dist-UY46BFRP.js +3 -0
- package/dist/dist-UY46BFRP.js.map +1 -0
- package/dist/dist-WCQDRTIV.cjs +16 -0
- package/dist/dist-WCQDRTIV.cjs.map +1 -0
- package/dist/dist-WKYB3LTJ.cjs +16 -0
- package/dist/dist-WKYB3LTJ.cjs.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/server/a2a/protocol.d.ts +8 -0
- package/dist/server/a2a/protocol.d.ts.map +1 -0
- package/dist/server/a2a/store.cjs +25 -0
- package/dist/server/a2a/store.cjs.map +1 -0
- package/dist/server/a2a/store.d.ts +14 -0
- package/dist/server/a2a/store.d.ts.map +1 -0
- package/dist/server/a2a/store.js +23 -0
- package/dist/server/a2a/store.js.map +1 -0
- package/dist/server/a2a/tasks.d.ts +20 -0
- package/dist/server/a2a/tasks.d.ts.map +1 -0
- package/dist/server/handlers/a2a.cjs +13 -11
- package/dist/server/handlers/a2a.cjs.map +1 -0
- package/dist/server/handlers/a2a.d.ts +68 -6
- package/dist/server/handlers/a2a.d.ts.map +1 -0
- package/dist/server/handlers/a2a.js +3 -1
- package/dist/server/handlers/a2a.js.map +1 -0
- package/dist/server/handlers/agent-builder.cjs +68 -0
- package/dist/server/handlers/agent-builder.cjs.map +1 -0
- package/dist/server/handlers/agent-builder.d.ts +87 -0
- package/dist/server/handlers/agent-builder.d.ts.map +1 -0
- package/dist/server/handlers/agent-builder.js +3 -0
- package/dist/server/handlers/agent-builder.js.map +1 -0
- package/dist/server/handlers/agents.cjs +37 -7
- package/dist/server/handlers/agents.cjs.map +1 -0
- package/dist/server/handlers/agents.d.ts +129 -6
- package/dist/server/handlers/agents.d.ts.map +1 -0
- package/dist/server/handlers/agents.js +3 -1
- package/dist/server/handlers/agents.js.map +1 -0
- package/dist/server/handlers/error.cjs +4 -2
- package/dist/server/handlers/error.cjs.map +1 -0
- package/dist/server/handlers/error.d.ts +2 -1
- package/dist/server/handlers/error.d.ts.map +1 -0
- package/dist/server/handlers/error.js +3 -1
- package/dist/server/handlers/error.js.map +1 -0
- package/dist/server/handlers/legacyWorkflows.cjs +13 -11
- package/dist/server/handlers/legacyWorkflows.cjs.map +1 -0
- package/dist/server/handlers/legacyWorkflows.d.ts +59 -10
- package/dist/server/handlers/legacyWorkflows.d.ts.map +1 -0
- package/dist/server/handlers/legacyWorkflows.js +3 -1
- package/dist/server/handlers/legacyWorkflows.js.map +1 -0
- package/dist/server/handlers/logs.cjs +6 -4
- package/dist/server/handlers/logs.cjs.map +1 -0
- package/dist/server/handlers/logs.d.ts +34 -3
- package/dist/server/handlers/logs.d.ts.map +1 -0
- package/dist/server/handlers/logs.js +3 -1
- package/dist/server/handlers/logs.js.map +1 -0
- package/dist/server/handlers/memory.cjs +39 -9
- package/dist/server/handlers/memory.cjs.map +1 -0
- package/dist/server/handlers/memory.d.ts +118 -8
- package/dist/server/handlers/memory.d.ts.map +1 -0
- package/dist/server/handlers/memory.js +3 -1
- package/dist/server/handlers/memory.js.map +1 -0
- package/dist/server/handlers/network.cjs +7 -5
- package/dist/server/handlers/network.cjs.map +1 -0
- package/dist/server/handlers/network.d.ts +50 -4
- package/dist/server/handlers/network.d.ts.map +1 -0
- package/dist/server/handlers/network.js +3 -1
- package/dist/server/handlers/network.js.map +1 -0
- package/dist/server/handlers/observability.cjs +16 -0
- package/dist/server/handlers/observability.cjs.map +1 -0
- package/dist/server/handlers/observability.d.ts +23 -0
- package/dist/server/handlers/observability.d.ts.map +1 -0
- package/dist/server/handlers/observability.js +3 -0
- package/dist/server/handlers/observability.js.map +1 -0
- package/dist/server/handlers/scores.cjs +32 -0
- package/dist/server/handlers/scores.cjs.map +1 -0
- package/dist/server/handlers/scores.d.ts +49 -0
- package/dist/server/handlers/scores.d.ts.map +1 -0
- package/dist/server/handlers/scores.js +3 -0
- package/dist/server/handlers/scores.js.map +1 -0
- package/dist/server/handlers/telemetry.cjs +9 -3
- package/dist/server/handlers/telemetry.cjs.map +1 -0
- package/dist/server/handlers/telemetry.d.ts +33 -2
- package/dist/server/handlers/telemetry.d.ts.map +1 -0
- package/dist/server/handlers/telemetry.js +3 -1
- package/dist/server/handlers/telemetry.js.map +1 -0
- package/dist/server/handlers/tools.cjs +11 -5
- package/dist/server/handlers/tools.cjs.map +1 -0
- package/dist/server/handlers/tools.d.ts +25 -4
- package/dist/server/handlers/tools.d.ts.map +1 -0
- package/dist/server/handlers/tools.js +3 -1
- package/dist/server/handlers/tools.js.map +1 -0
- package/dist/server/handlers/utils.cjs +8 -2
- package/dist/server/handlers/utils.cjs.map +1 -0
- package/dist/server/handlers/utils.d.ts +8 -1
- package/dist/server/handlers/utils.d.ts.map +1 -0
- package/dist/server/handlers/utils.js +3 -1
- package/dist/server/handlers/utils.js.map +1 -0
- package/dist/server/handlers/vNextNetwork.cjs +220 -0
- package/dist/server/handlers/vNextNetwork.cjs.map +1 -0
- package/dist/server/handlers/vNextNetwork.d.ts +179 -0
- package/dist/server/handlers/vNextNetwork.d.ts.map +1 -0
- package/dist/server/handlers/vNextNetwork.js +213 -0
- package/dist/server/handlers/vNextNetwork.js.map +1 -0
- package/dist/server/handlers/vector.cjs +9 -7
- package/dist/server/handlers/vector.cjs.map +1 -0
- package/dist/server/handlers/vector.d.ts +51 -6
- package/dist/server/handlers/vector.d.ts.map +1 -0
- package/dist/server/handlers/vector.js +3 -1
- package/dist/server/handlers/vector.js.map +1 -0
- package/dist/server/handlers/voice.cjs +10 -4
- package/dist/server/handlers/voice.cjs.map +1 -0
- package/dist/server/handlers/voice.d.ts +39 -3
- package/dist/server/handlers/voice.d.ts.map +1 -0
- package/dist/server/handlers/voice.js +3 -1
- package/dist/server/handlers/voice.js.map +1 -0
- package/dist/server/handlers/workflows.cjs +30 -12
- package/dist/server/handlers/workflows.cjs.map +1 -0
- package/dist/server/handlers/workflows.d.ts +73 -11
- package/dist/server/handlers/workflows.d.ts.map +1 -0
- package/dist/server/handlers/workflows.js +3 -1
- package/dist/server/handlers/workflows.js.map +1 -0
- package/dist/server/handlers.cjs +49 -32
- package/dist/server/handlers.cjs.map +1 -0
- package/dist/server/handlers.d.ts +15 -11
- package/dist/server/handlers.d.ts.map +1 -0
- package/dist/server/handlers.js +16 -11
- package/dist/server/handlers.js.map +1 -0
- package/dist/server/http-exception.d.ts +87 -0
- package/dist/server/http-exception.d.ts.map +1 -0
- package/dist/server/types.d.ts +10 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/utils.d.ts +42 -0
- package/dist/server/utils.d.ts.map +1 -0
- package/package.json +51 -21
- package/dist/_tsup-dts-rollup.d.cts +0 -830
- package/dist/_tsup-dts-rollup.d.ts +0 -830
- package/dist/chunk-57CJTIPW.cjs +0 -18
- package/dist/chunk-64U3UDTH.cjs +0 -13
- package/dist/chunk-75ZPJI57.cjs +0 -9
- package/dist/chunk-A3KDUGS7.cjs +0 -239
- package/dist/chunk-DJJIUEL2.js +0 -211
- package/dist/chunk-DQLE3DVM.js +0 -49
- package/dist/chunk-J3PKLB3A.js +0 -231
- package/dist/chunk-KUNQFY2W.js +0 -365
- package/dist/chunk-M5ABIP7D.js +0 -11
- package/dist/chunk-MLKGABMK.js +0 -7
- package/dist/chunk-MMO2HDM6.cjs +0 -378
- package/dist/chunk-NEOOQUKW.cjs +0 -54
- package/dist/chunk-Y7UWRW5X.cjs +0 -221
- package/dist/chunk-YBVOQN4M.cjs +0 -94
- package/dist/chunk-ZE5AAC4I.cjs +0 -138
- package/dist/index.d.cts +0 -1
- package/dist/server/handlers/a2a.d.cts +0 -6
- package/dist/server/handlers/agents.d.cts +0 -6
- package/dist/server/handlers/error.d.cts +0 -1
- package/dist/server/handlers/legacyWorkflows.d.cts +0 -10
- package/dist/server/handlers/logs.d.cts +0 -3
- package/dist/server/handlers/memory.d.cts +0 -8
- package/dist/server/handlers/network.d.cts +0 -4
- package/dist/server/handlers/telemetry.d.cts +0 -2
- package/dist/server/handlers/tools.d.cts +0 -4
- package/dist/server/handlers/utils.d.cts +0 -1
- package/dist/server/handlers/vector.d.cts +0 -6
- package/dist/server/handlers/voice.d.cts +0 -3
- package/dist/server/handlers/workflows.d.cts +0 -11
- package/dist/server/handlers.d.cts +0 -11
package/LICENSE.md
CHANGED
|
@@ -1,46 +1,15 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Apache License 2.0
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2025
|
|
3
|
+
Copyright (c) 2025 Kepler Software, Inc.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
The licensor grants you a non-exclusive, royalty-free, worldwide, non-sublicensable, non-transferable license to use, copy, distribute, make available, and prepare derivative works of the software, in each case subject to the limitations and conditions below
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
You may not alter, remove, or obscure any licensing, copyright, or other notices of the licensor in the software. Any use of the licensor’s trademarks is subject to applicable law.
|
|
17
|
-
|
|
18
|
-
**Patents**
|
|
19
|
-
The licensor grants you a license, under any patent claims the licensor can license, or becomes able to license, to make, have made, use, sell, offer for sale, import and have imported the software, in each case subject to the limitations and conditions in this license. This license does not cover any patent claims that you cause to be infringed by modifications or additions to the software. If you or your company make any written claim that the software infringes or contributes to infringement of any patent, your patent license for the software granted under these terms ends immediately. If your company makes such a claim, your patent license ends immediately for work on behalf of your company.
|
|
20
|
-
|
|
21
|
-
**Notices**
|
|
22
|
-
You must ensure that anyone who gets a copy of any part of the software from you also gets a copy of these terms.
|
|
23
|
-
|
|
24
|
-
If you modify the software, you must include in any modified copies of the software prominent notices stating that you have modified the software.
|
|
25
|
-
|
|
26
|
-
**No Other Rights**
|
|
27
|
-
These terms do not imply any licenses other than those expressly granted in these terms.
|
|
28
|
-
|
|
29
|
-
**Termination**
|
|
30
|
-
If you use the software in violation of these terms, such use is not licensed, and your licenses will automatically terminate. If the licensor provides you with a notice of your violation, and you cease all violation of this license no later than 30 days after you receive that notice, your licenses will be reinstated retroactively. However, if you violate these terms after such reinstatement, any additional violation of these terms will cause your licenses to terminate automatically and permanently.
|
|
31
|
-
|
|
32
|
-
**No Liability**
|
|
33
|
-
As far as the law allows, the software comes as is, without any warranty or condition, and the licensor will not be liable to you for any damages arising out of these terms or the use or nature of the software, under any kind of legal claim.
|
|
34
|
-
|
|
35
|
-
**Definitions**
|
|
36
|
-
The _licensor_ is the entity offering these terms, and the _software_ is the software the licensor makes available under these terms, including any portion of it.
|
|
37
|
-
|
|
38
|
-
_you_ refers to the individual or entity agreeing to these terms.
|
|
39
|
-
|
|
40
|
-
_your company_ is any legal entity, sole proprietorship, or other kind of organization that you work for, plus all organizations that have control over, are under the control of, or are under common control with that organization. _control_ means ownership of substantially all the assets of an entity, or the power to direct its management and policies by vote, contract, or otherwise. Control can be direct or indirect.
|
|
41
|
-
|
|
42
|
-
_your licenses_ are all the licenses granted to you for the software under these terms.
|
|
43
|
-
|
|
44
|
-
_use_ means anything you do with the software requiring one of your licenses.
|
|
45
|
-
|
|
46
|
-
_trademark_ means trademarks, service marks, and similar rights.
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkEMMSS5I5_cjs = require('./chunk-EMMSS5I5.cjs');
|
|
4
4
|
var a2a = require('@mastra/core/a2a');
|
|
5
5
|
var zod = require('zod');
|
|
6
6
|
|
|
7
7
|
// src/server/handlers/a2a.ts
|
|
8
8
|
var a2a_exports = {};
|
|
9
|
-
|
|
9
|
+
chunkEMMSS5I5_cjs.__export(a2a_exports, {
|
|
10
10
|
getAgentCardByIdHandler: () => getAgentCardByIdHandler,
|
|
11
11
|
getAgentExecutionHandler: () => getAgentExecutionHandler,
|
|
12
|
+
handleMessageSend: () => handleMessageSend,
|
|
13
|
+
handleMessageStream: () => handleMessageStream,
|
|
12
14
|
handleTaskCancel: () => handleTaskCancel,
|
|
13
|
-
handleTaskGet: () => handleTaskGet
|
|
14
|
-
handleTaskSend: () => handleTaskSend,
|
|
15
|
-
handleTaskSendSubscribe: () => handleTaskSendSubscribe
|
|
15
|
+
handleTaskGet: () => handleTaskGet
|
|
16
16
|
});
|
|
17
17
|
function normalizeError(error, reqId, taskId, logger) {
|
|
18
18
|
let a2aError;
|
|
19
|
-
if (error instanceof a2a.
|
|
19
|
+
if (error instanceof a2a.MastraA2AError) {
|
|
20
20
|
a2aError = error;
|
|
21
21
|
} else if (error instanceof Error) {
|
|
22
|
-
a2aError = a2a.
|
|
22
|
+
a2aError = a2a.MastraA2AError.internalError(error.message, { stack: error.stack });
|
|
23
23
|
} else {
|
|
24
|
-
a2aError = a2a.
|
|
24
|
+
a2aError = a2a.MastraA2AError.internalError("An unknown error occurred.", error);
|
|
25
25
|
}
|
|
26
26
|
if (taskId && !a2aError.taskId) {
|
|
27
27
|
a2aError.taskId = taskId;
|
|
@@ -39,7 +39,7 @@ function createErrorResponse(id, error) {
|
|
|
39
39
|
}
|
|
40
40
|
function createSuccessResponse(id, result) {
|
|
41
41
|
if (!id) {
|
|
42
|
-
throw a2a.
|
|
42
|
+
throw a2a.MastraA2AError.internalError("Cannot create success response for null ID.");
|
|
43
43
|
}
|
|
44
44
|
return {
|
|
45
45
|
jsonrpc: "2.0",
|
|
@@ -54,7 +54,7 @@ function convertToCoreMessage(message) {
|
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
function convertToCoreMessagePart(part) {
|
|
57
|
-
switch (part.
|
|
57
|
+
switch (part.kind) {
|
|
58
58
|
case "text":
|
|
59
59
|
return {
|
|
60
60
|
type: "text",
|
|
@@ -63,7 +63,7 @@ function convertToCoreMessagePart(part) {
|
|
|
63
63
|
case "file":
|
|
64
64
|
return {
|
|
65
65
|
type: "file",
|
|
66
|
-
data: new URL(part.file.uri),
|
|
66
|
+
data: "uri" in part.file ? new URL(part.file.uri) : part.file.bytes,
|
|
67
67
|
mimeType: part.file.mimeType
|
|
68
68
|
};
|
|
69
69
|
case "data":
|
|
@@ -71,39 +71,15 @@ function convertToCoreMessagePart(part) {
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
// src/server/a2a/store.ts
|
|
75
|
-
var InMemoryTaskStore = class {
|
|
76
|
-
store = /* @__PURE__ */ new Map();
|
|
77
|
-
activeCancellations = /* @__PURE__ */ new Set();
|
|
78
|
-
async load({ agentId, taskId }) {
|
|
79
|
-
const entry = this.store.get(`${agentId}-${taskId}`);
|
|
80
|
-
if (!entry) {
|
|
81
|
-
return null;
|
|
82
|
-
}
|
|
83
|
-
return { task: { ...entry.task }, history: [...entry.history] };
|
|
84
|
-
}
|
|
85
|
-
async save({ agentId, data }) {
|
|
86
|
-
const key = `${agentId}-${data.task.id}`;
|
|
87
|
-
if (!data.task.id) {
|
|
88
|
-
throw new Error("Task ID is required");
|
|
89
|
-
}
|
|
90
|
-
this.store.set(key, {
|
|
91
|
-
task: { ...data.task },
|
|
92
|
-
history: [...data.history]
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
|
|
97
74
|
// src/server/a2a/tasks.ts
|
|
98
75
|
function isTaskStatusUpdate(update) {
|
|
99
76
|
return "state" in update && !("parts" in update);
|
|
100
77
|
}
|
|
101
78
|
function isArtifactUpdate(update) {
|
|
102
|
-
return "
|
|
79
|
+
return "kind" in update && update.kind === "artifact-update";
|
|
103
80
|
}
|
|
104
|
-
function
|
|
105
|
-
let newTask = structuredClone(current
|
|
106
|
-
let newHistory = structuredClone(current.history);
|
|
81
|
+
function applyUpdateToTask(current, update) {
|
|
82
|
+
let newTask = structuredClone(current);
|
|
107
83
|
if (isTaskStatusUpdate(update)) {
|
|
108
84
|
newTask.status = {
|
|
109
85
|
...newTask.status,
|
|
@@ -112,58 +88,42 @@ function applyUpdateToTaskAndHistory(current, update) {
|
|
|
112
88
|
// Apply updates
|
|
113
89
|
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
114
90
|
};
|
|
115
|
-
if (update.message?.role === "agent") {
|
|
116
|
-
newHistory.push(update.message);
|
|
117
|
-
}
|
|
118
91
|
} else if (isArtifactUpdate(update)) {
|
|
119
92
|
if (!newTask.artifacts) {
|
|
120
93
|
newTask.artifacts = [];
|
|
121
94
|
} else {
|
|
122
95
|
newTask.artifacts = [...newTask.artifacts];
|
|
123
96
|
}
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
97
|
+
const artifact = update.artifact;
|
|
98
|
+
const existingIndex = newTask.artifacts.findIndex((a) => a.name === artifact.name);
|
|
99
|
+
const existingArtifact = newTask.artifacts[existingIndex];
|
|
100
|
+
if (existingArtifact) {
|
|
128
101
|
if (update.append) {
|
|
129
102
|
const appendedArtifact = JSON.parse(JSON.stringify(existingArtifact));
|
|
130
|
-
appendedArtifact.parts.push(...
|
|
131
|
-
if (
|
|
103
|
+
appendedArtifact.parts.push(...artifact.parts);
|
|
104
|
+
if (artifact.metadata) {
|
|
132
105
|
appendedArtifact.metadata = {
|
|
133
106
|
...appendedArtifact.metadata || {},
|
|
134
|
-
...
|
|
107
|
+
...artifact.metadata
|
|
135
108
|
};
|
|
136
109
|
}
|
|
137
|
-
if (
|
|
138
|
-
if (update.description) appendedArtifact.description = update.description;
|
|
110
|
+
if (artifact.description) appendedArtifact.description = artifact.description;
|
|
139
111
|
newTask.artifacts[existingIndex] = appendedArtifact;
|
|
140
|
-
replaced = true;
|
|
141
112
|
} else {
|
|
142
|
-
newTask.artifacts[existingIndex] = { ...
|
|
143
|
-
replaced = true;
|
|
144
|
-
}
|
|
145
|
-
} else if (update.name) {
|
|
146
|
-
const namedIndex = newTask.artifacts.findIndex((a) => a.name === update.name);
|
|
147
|
-
if (namedIndex >= 0) {
|
|
148
|
-
newTask.artifacts[namedIndex] = { ...update };
|
|
149
|
-
replaced = true;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
if (!replaced) {
|
|
153
|
-
newTask.artifacts.push({ ...update });
|
|
154
|
-
if (newTask.artifacts.some((a) => a.index !== void 0)) {
|
|
155
|
-
newTask.artifacts.sort((a, b) => (a.index ?? 0) - (b.index ?? 0));
|
|
113
|
+
newTask.artifacts[existingIndex] = { ...artifact };
|
|
156
114
|
}
|
|
115
|
+
} else {
|
|
116
|
+
newTask.artifacts.push({ ...artifact });
|
|
157
117
|
}
|
|
158
118
|
}
|
|
159
|
-
return
|
|
119
|
+
return newTask;
|
|
160
120
|
}
|
|
161
|
-
async function
|
|
121
|
+
async function loadOrCreateTask({
|
|
162
122
|
agentId,
|
|
163
123
|
taskId,
|
|
164
124
|
taskStore,
|
|
165
125
|
message,
|
|
166
|
-
|
|
126
|
+
contextId,
|
|
167
127
|
metadata,
|
|
168
128
|
logger
|
|
169
129
|
}) {
|
|
@@ -171,47 +131,40 @@ async function loadOrCreateTaskAndHistory({
|
|
|
171
131
|
if (!data) {
|
|
172
132
|
const initialTask = {
|
|
173
133
|
id: taskId,
|
|
174
|
-
|
|
134
|
+
contextId: contextId || crypto.randomUUID(),
|
|
175
135
|
status: {
|
|
176
136
|
state: "submitted",
|
|
177
137
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
178
|
-
message:
|
|
138
|
+
message: void 0
|
|
179
139
|
},
|
|
180
140
|
artifacts: [],
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
task: initialTask,
|
|
185
|
-
history: [message]
|
|
141
|
+
history: [message],
|
|
142
|
+
metadata,
|
|
143
|
+
kind: "task"
|
|
186
144
|
};
|
|
187
|
-
logger?.info(`[Task ${taskId}] Created new task
|
|
188
|
-
await taskStore.save({ agentId, data:
|
|
189
|
-
return
|
|
145
|
+
logger?.info(`[Task ${taskId}] Created new task.`);
|
|
146
|
+
await taskStore.save({ agentId, data: initialTask });
|
|
147
|
+
return initialTask;
|
|
190
148
|
}
|
|
191
|
-
logger?.info(`[Task ${taskId}] Loaded existing task
|
|
192
|
-
let updatedData =
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
};
|
|
196
|
-
const { status } = data.task;
|
|
149
|
+
logger?.info(`[Task ${taskId}] Loaded existing task.`);
|
|
150
|
+
let updatedData = data;
|
|
151
|
+
updatedData.history = [...data.history || [], message];
|
|
152
|
+
const { status } = data;
|
|
197
153
|
const finalStates = ["completed", "failed", "canceled"];
|
|
198
154
|
if (finalStates.includes(status.state)) {
|
|
199
155
|
logger?.warn(`[Task ${taskId}] Received message for task in final state ${status.state}. Restarting.`);
|
|
200
|
-
updatedData =
|
|
156
|
+
updatedData = applyUpdateToTask(updatedData, {
|
|
201
157
|
state: "submitted",
|
|
202
|
-
message:
|
|
158
|
+
message: void 0
|
|
203
159
|
});
|
|
204
160
|
} else if (status.state === "input-required") {
|
|
205
161
|
logger?.info(`[Task ${taskId}] Changing state from 'input-required' to 'working'.`);
|
|
206
|
-
updatedData =
|
|
162
|
+
updatedData = applyUpdateToTask(updatedData, { state: "working" });
|
|
207
163
|
} else if (status.state === "working") {
|
|
208
164
|
logger?.warn(`[Task ${taskId}] Received message while already 'working'. Proceeding.`);
|
|
209
165
|
}
|
|
210
166
|
await taskStore.save({ agentId, data: updatedData });
|
|
211
|
-
return
|
|
212
|
-
task: { ...updatedData.task },
|
|
213
|
-
history: [...updatedData.history]
|
|
214
|
-
};
|
|
167
|
+
return updatedData;
|
|
215
168
|
}
|
|
216
169
|
function createTaskContext({
|
|
217
170
|
task,
|
|
@@ -228,15 +181,22 @@ function createTaskContext({
|
|
|
228
181
|
}
|
|
229
182
|
|
|
230
183
|
// src/server/handlers/a2a.ts
|
|
231
|
-
var
|
|
232
|
-
id: zod.z.string().min(1, "Invalid or missing task ID (params.id)."),
|
|
184
|
+
var messageSendParamsSchema = zod.z.object({
|
|
233
185
|
message: zod.z.object({
|
|
186
|
+
role: zod.z.enum(["user", "agent"]),
|
|
234
187
|
parts: zod.z.array(
|
|
235
188
|
zod.z.object({
|
|
236
|
-
|
|
189
|
+
kind: zod.z.enum(["text"]),
|
|
237
190
|
text: zod.z.string()
|
|
238
191
|
})
|
|
239
|
-
)
|
|
192
|
+
),
|
|
193
|
+
kind: zod.z.literal("message"),
|
|
194
|
+
messageId: zod.z.string(),
|
|
195
|
+
contextId: zod.z.string().optional(),
|
|
196
|
+
taskId: zod.z.string().optional(),
|
|
197
|
+
referenceTaskIds: zod.z.array(zod.z.string()).optional(),
|
|
198
|
+
extensions: zod.z.array(zod.z.string()).optional(),
|
|
199
|
+
metadata: zod.z.record(zod.z.any()).optional()
|
|
240
200
|
})
|
|
241
201
|
});
|
|
242
202
|
async function getAgentCardByIdHandler({
|
|
@@ -283,39 +243,41 @@ async function getAgentCardByIdHandler({
|
|
|
283
243
|
};
|
|
284
244
|
return agentCard;
|
|
285
245
|
}
|
|
286
|
-
function
|
|
246
|
+
function validateMessageSendParams(params) {
|
|
287
247
|
try {
|
|
288
|
-
|
|
248
|
+
messageSendParamsSchema.parse(params);
|
|
289
249
|
} catch (error) {
|
|
290
250
|
if (error instanceof zod.z.ZodError) {
|
|
291
|
-
throw a2a.
|
|
251
|
+
throw a2a.MastraA2AError.invalidParams(error.errors[0].message);
|
|
292
252
|
}
|
|
293
253
|
throw error;
|
|
294
254
|
}
|
|
295
255
|
}
|
|
296
|
-
async function
|
|
256
|
+
async function handleMessageSend({
|
|
297
257
|
requestId,
|
|
298
258
|
params,
|
|
299
259
|
taskStore,
|
|
300
260
|
agent,
|
|
261
|
+
agentId,
|
|
301
262
|
logger,
|
|
302
263
|
runtimeContext
|
|
303
264
|
}) {
|
|
304
|
-
|
|
305
|
-
const
|
|
306
|
-
const {
|
|
307
|
-
|
|
265
|
+
validateMessageSendParams(params);
|
|
266
|
+
const { message, metadata } = params;
|
|
267
|
+
const { contextId } = message;
|
|
268
|
+
const taskId = message.taskId || crypto.randomUUID();
|
|
269
|
+
let currentData = await loadOrCreateTask({
|
|
308
270
|
taskId,
|
|
309
271
|
taskStore,
|
|
310
272
|
agentId,
|
|
311
273
|
message,
|
|
312
|
-
|
|
274
|
+
contextId,
|
|
313
275
|
metadata
|
|
314
276
|
});
|
|
315
277
|
createTaskContext({
|
|
316
|
-
task: currentData
|
|
278
|
+
task: currentData,
|
|
317
279
|
userMessage: message,
|
|
318
|
-
history: currentData.history,
|
|
280
|
+
history: currentData.history || [],
|
|
319
281
|
activeCancellations: taskStore.activeCancellations
|
|
320
282
|
});
|
|
321
283
|
try {
|
|
@@ -323,16 +285,18 @@ async function handleTaskSend({
|
|
|
323
285
|
runId: taskId,
|
|
324
286
|
runtimeContext
|
|
325
287
|
});
|
|
326
|
-
currentData =
|
|
288
|
+
currentData = applyUpdateToTask(currentData, {
|
|
327
289
|
state: "completed",
|
|
328
290
|
message: {
|
|
291
|
+
messageId: crypto.randomUUID(),
|
|
329
292
|
role: "agent",
|
|
330
293
|
parts: [
|
|
331
294
|
{
|
|
332
|
-
|
|
295
|
+
kind: "text",
|
|
333
296
|
text
|
|
334
297
|
}
|
|
335
|
-
]
|
|
298
|
+
],
|
|
299
|
+
kind: "message"
|
|
336
300
|
}
|
|
337
301
|
});
|
|
338
302
|
await taskStore.save({ agentId, data: currentData });
|
|
@@ -340,24 +304,26 @@ async function handleTaskSend({
|
|
|
340
304
|
const failureStatusUpdate = {
|
|
341
305
|
state: "failed",
|
|
342
306
|
message: {
|
|
307
|
+
messageId: crypto.randomUUID(),
|
|
343
308
|
role: "agent",
|
|
344
309
|
parts: [
|
|
345
310
|
{
|
|
346
|
-
|
|
311
|
+
kind: "text",
|
|
347
312
|
text: `Handler failed: ${handlerError instanceof Error ? handlerError.message : String(handlerError)}`
|
|
348
313
|
}
|
|
349
|
-
]
|
|
314
|
+
],
|
|
315
|
+
kind: "message"
|
|
350
316
|
}
|
|
351
317
|
};
|
|
352
|
-
currentData =
|
|
318
|
+
currentData = applyUpdateToTask(currentData, failureStatusUpdate);
|
|
353
319
|
try {
|
|
354
320
|
await taskStore.save({ agentId, data: currentData });
|
|
355
321
|
} catch (saveError) {
|
|
356
|
-
logger?.error(`Failed to save task ${
|
|
322
|
+
logger?.error(`Failed to save task ${currentData.id} after handler error:`, saveError?.message);
|
|
357
323
|
}
|
|
358
|
-
return normalizeError(handlerError, requestId,
|
|
324
|
+
return normalizeError(handlerError, requestId, currentData.id, logger);
|
|
359
325
|
}
|
|
360
|
-
return createSuccessResponse(requestId, currentData
|
|
326
|
+
return createSuccessResponse(requestId, currentData);
|
|
361
327
|
}
|
|
362
328
|
async function handleTaskGet({
|
|
363
329
|
requestId,
|
|
@@ -367,37 +333,41 @@ async function handleTaskGet({
|
|
|
367
333
|
}) {
|
|
368
334
|
const task = await taskStore.load({ agentId, taskId });
|
|
369
335
|
if (!task) {
|
|
370
|
-
throw a2a.
|
|
336
|
+
throw a2a.MastraA2AError.taskNotFound(taskId);
|
|
371
337
|
}
|
|
372
338
|
return createSuccessResponse(requestId, task);
|
|
373
339
|
}
|
|
374
|
-
async function*
|
|
340
|
+
async function* handleMessageStream({
|
|
375
341
|
requestId,
|
|
376
342
|
params,
|
|
377
343
|
taskStore,
|
|
378
344
|
agent,
|
|
345
|
+
agentId,
|
|
379
346
|
logger,
|
|
380
347
|
runtimeContext
|
|
381
348
|
}) {
|
|
382
349
|
yield createSuccessResponse(requestId, {
|
|
383
350
|
state: "working",
|
|
384
351
|
message: {
|
|
352
|
+
messageId: crypto.randomUUID(),
|
|
353
|
+
kind: "message",
|
|
385
354
|
role: "agent",
|
|
386
|
-
parts: [{
|
|
355
|
+
parts: [{ kind: "text", text: "Generating response..." }]
|
|
387
356
|
}
|
|
388
357
|
});
|
|
389
358
|
let result;
|
|
390
359
|
try {
|
|
391
|
-
result = await
|
|
360
|
+
result = await handleMessageSend({
|
|
392
361
|
requestId,
|
|
393
362
|
params,
|
|
394
363
|
taskStore,
|
|
395
364
|
agent,
|
|
365
|
+
agentId,
|
|
396
366
|
runtimeContext,
|
|
397
367
|
logger
|
|
398
368
|
});
|
|
399
369
|
} catch (err) {
|
|
400
|
-
if (!(err instanceof a2a.
|
|
370
|
+
if (!(err instanceof a2a.MastraA2AError)) {
|
|
401
371
|
throw err;
|
|
402
372
|
}
|
|
403
373
|
result = createErrorResponse(requestId, err.toJSONRPCError());
|
|
@@ -416,25 +386,27 @@ async function handleTaskCancel({
|
|
|
416
386
|
taskId
|
|
417
387
|
});
|
|
418
388
|
if (!data) {
|
|
419
|
-
throw a2a.
|
|
389
|
+
throw a2a.MastraA2AError.taskNotFound(taskId);
|
|
420
390
|
}
|
|
421
391
|
const finalStates = ["completed", "failed", "canceled"];
|
|
422
|
-
if (finalStates.includes(data.
|
|
423
|
-
logger?.info(`Task ${taskId} already in final state ${data.
|
|
424
|
-
return createSuccessResponse(requestId, data
|
|
392
|
+
if (finalStates.includes(data.status.state)) {
|
|
393
|
+
logger?.info(`Task ${taskId} already in final state ${data.status.state}, cannot cancel.`);
|
|
394
|
+
return createSuccessResponse(requestId, data);
|
|
425
395
|
}
|
|
426
396
|
taskStore.activeCancellations.add(taskId);
|
|
427
397
|
const cancelUpdate = {
|
|
428
398
|
state: "canceled",
|
|
429
399
|
message: {
|
|
430
400
|
role: "agent",
|
|
431
|
-
parts: [{
|
|
401
|
+
parts: [{ kind: "text", text: "Task cancelled by request." }],
|
|
402
|
+
kind: "message",
|
|
403
|
+
messageId: crypto.randomUUID()
|
|
432
404
|
}
|
|
433
405
|
};
|
|
434
|
-
data =
|
|
406
|
+
data = applyUpdateToTask(data, cancelUpdate);
|
|
435
407
|
await taskStore.save({ agentId, data });
|
|
436
408
|
taskStore.activeCancellations.delete(taskId);
|
|
437
|
-
return createSuccessResponse(requestId, data
|
|
409
|
+
return createSuccessResponse(requestId, data);
|
|
438
410
|
}
|
|
439
411
|
async function getAgentExecutionHandler({
|
|
440
412
|
requestId,
|
|
@@ -443,30 +415,32 @@ async function getAgentExecutionHandler({
|
|
|
443
415
|
runtimeContext,
|
|
444
416
|
method,
|
|
445
417
|
params,
|
|
446
|
-
taskStore
|
|
418
|
+
taskStore,
|
|
447
419
|
logger
|
|
448
420
|
}) {
|
|
449
421
|
const agent = mastra.getAgent(agentId);
|
|
450
422
|
let taskId;
|
|
451
423
|
try {
|
|
452
|
-
taskId = params.id;
|
|
424
|
+
taskId = "id" in params ? params.id : params.message?.taskId || "No task ID provided";
|
|
453
425
|
switch (method) {
|
|
454
|
-
case "
|
|
455
|
-
const result2 = await
|
|
426
|
+
case "message/send": {
|
|
427
|
+
const result2 = await handleMessageSend({
|
|
456
428
|
requestId,
|
|
457
429
|
params,
|
|
458
430
|
taskStore,
|
|
459
431
|
agent,
|
|
432
|
+
agentId,
|
|
460
433
|
runtimeContext
|
|
461
434
|
});
|
|
462
435
|
return result2;
|
|
463
436
|
}
|
|
464
|
-
case "
|
|
465
|
-
const result = await
|
|
437
|
+
case "message/stream":
|
|
438
|
+
const result = await handleMessageStream({
|
|
466
439
|
requestId,
|
|
467
440
|
taskStore,
|
|
468
441
|
params,
|
|
469
442
|
agent,
|
|
443
|
+
agentId,
|
|
470
444
|
runtimeContext
|
|
471
445
|
});
|
|
472
446
|
return result;
|
|
@@ -489,10 +463,10 @@ async function getAgentExecutionHandler({
|
|
|
489
463
|
return result2;
|
|
490
464
|
}
|
|
491
465
|
default:
|
|
492
|
-
throw a2a.
|
|
466
|
+
throw a2a.MastraA2AError.methodNotFound(method);
|
|
493
467
|
}
|
|
494
468
|
} catch (error) {
|
|
495
|
-
if (error instanceof a2a.
|
|
469
|
+
if (error instanceof a2a.MastraA2AError && taskId && !error.taskId) {
|
|
496
470
|
error.taskId = taskId;
|
|
497
471
|
}
|
|
498
472
|
return normalizeError(error, requestId, taskId, logger);
|
|
@@ -502,7 +476,9 @@ async function getAgentExecutionHandler({
|
|
|
502
476
|
exports.a2a_exports = a2a_exports;
|
|
503
477
|
exports.getAgentCardByIdHandler = getAgentCardByIdHandler;
|
|
504
478
|
exports.getAgentExecutionHandler = getAgentExecutionHandler;
|
|
479
|
+
exports.handleMessageSend = handleMessageSend;
|
|
480
|
+
exports.handleMessageStream = handleMessageStream;
|
|
505
481
|
exports.handleTaskCancel = handleTaskCancel;
|
|
506
482
|
exports.handleTaskGet = handleTaskGet;
|
|
507
|
-
|
|
508
|
-
|
|
483
|
+
//# sourceMappingURL=chunk-3THIIWWW.cjs.map
|
|
484
|
+
//# sourceMappingURL=chunk-3THIIWWW.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server/handlers/a2a.ts","../src/server/a2a/protocol.ts","../src/server/a2a/tasks.ts"],"names":["__export","MastraA2AError","z","result"],"mappings":"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","file":"chunk-3THIIWWW.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 { RuntimeContext } from '@mastra/core/runtime-context';\nimport { z } from 'zod';\nimport { convertToCoreMessage, normalizeError, createSuccessResponse, createErrorResponse } from '../a2a/protocol';\nimport type { InMemoryTaskStore } from '../a2a/store';\nimport { applyUpdateToTask, createTaskContext, loadOrCreateTask } from '../a2a/tasks';\nimport type { Context } from '../types';\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.any()).optional(),\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 runtimeContext,\n}: Context & {\n runtimeContext: RuntimeContext;\n agentId: keyof ReturnType<typeof mastra.getAgents>;\n executionUrl?: string;\n version?: string;\n provider?: {\n organization: string;\n url: string;\n };\n}): Promise<AgentCard> {\n const agent = mastra.getAgent(agentId);\n\n if (!agent) {\n throw new Error(`Agent with ID ${agentId} not found`);\n }\n\n const [instructions, tools] = await Promise.all([\n agent.getInstructions({ runtimeContext }),\n agent.getTools({ runtimeContext }),\n ]);\n\n // Extract agent information to create the AgentCard\n const agentCard: AgentCard = {\n name: agent.id || agentId,\n description: instructions,\n url: executionUrl,\n provider,\n version,\n capabilities: {\n streaming: true, // All agents support streaming\n pushNotifications: false,\n stateTransitionHistory: false,\n },\n defaultInputModes: ['text'],\n defaultOutputModes: ['text'],\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 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).errors[0]!.message);\n }\n\n throw error;\n }\n}\n\nexport async function handleMessageSend({\n requestId,\n params,\n taskStore,\n agent,\n agentId,\n logger,\n runtimeContext,\n}: {\n requestId: string;\n params: MessageSendParams;\n taskStore: InMemoryTaskStore;\n agent: Agent;\n agentId: string;\n logger?: IMastraLogger;\n runtimeContext: RuntimeContext;\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 const { text } = await agent.generate([convertToCoreMessage(message)], {\n runId: taskId,\n runtimeContext,\n });\n\n currentData = applyUpdateToTask(currentData, {\n state: 'completed',\n message: {\n messageId: crypto.randomUUID(),\n role: 'agent',\n parts: [\n {\n kind: 'text',\n text: text,\n },\n ],\n kind: 'message',\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: 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 runtimeContext,\n}: {\n requestId: string;\n params: MessageSendParams;\n taskStore: InMemoryTaskStore;\n agent: Agent;\n agentId: string;\n logger?: IMastraLogger;\n runtimeContext: RuntimeContext;\n}) {\n yield createSuccessResponse(requestId, {\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 let result;\n try {\n result = await handleMessageSend({\n requestId,\n params,\n taskStore,\n agent,\n agentId,\n runtimeContext,\n logger,\n });\n } catch (err) {\n if (!(err instanceof MastraA2AError)) {\n throw err;\n }\n\n result = createErrorResponse(requestId, err.toJSONRPCError());\n }\n\n yield result;\n}\n\nexport async function handleTaskCancel({\n requestId,\n taskStore,\n agentId,\n taskId,\n logger,\n}: {\n requestId: 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 runtimeContext,\n method,\n params,\n taskStore,\n logger,\n}: Context & {\n requestId: string;\n runtimeContext: RuntimeContext;\n agentId: string;\n method: 'message/send' | 'message/stream' | 'tasks/get' | 'tasks/cancel';\n params: MessageSendParams | TaskQueryParams | TaskIdParams;\n taskStore: InMemoryTaskStore;\n logger?: IMastraLogger;\n}): Promise<any> {\n const agent = mastra.getAgent(agentId);\n\n let taskId: string | undefined; // For error context\n\n try {\n // Attempt to get task ID early for error context. Cast params to any to access id.\n // Proper validation happens within specific handlers.\n taskId = 'id' in params ? params.id : params.message?.taskId || 'No task ID provided';\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 runtimeContext,\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 runtimeContext,\n });\n return result;\n\n case 'tasks/get': {\n const result = await handleTaskGet({\n requestId,\n taskStore,\n agentId,\n taskId,\n });\n\n return result;\n }\n case 'tasks/cancel': {\n const result = await handleTaskCancel({\n requestId,\n taskStore,\n agentId,\n taskId,\n });\n\n return result;\n }\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","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"]}
|