@mastra/server 1.0.0-beta.5 → 1.0.0-beta.7

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 (163) hide show
  1. package/CHANGELOG.md +112 -0
  2. package/dist/{chunk-LGG3N3AV.js → chunk-3SFLFUKY.js} +4 -4
  3. package/dist/{chunk-LGG3N3AV.js.map → chunk-3SFLFUKY.js.map} +1 -1
  4. package/dist/{chunk-G7BPNX2V.js → chunk-6YWE7UPT.js} +16 -3
  5. package/dist/chunk-6YWE7UPT.js.map +1 -0
  6. package/dist/{chunk-CBDUTSTI.js → chunk-7N3PD4SV.js} +16 -12
  7. package/dist/chunk-7N3PD4SV.js.map +1 -0
  8. package/dist/{chunk-PDVJ2TTM.cjs → chunk-C3D3X2L5.cjs} +11 -9
  9. package/dist/chunk-C3D3X2L5.cjs.map +1 -0
  10. package/dist/{chunk-UCRV7PD3.js → chunk-C4J473OZ.js} +50 -37
  11. package/dist/chunk-C4J473OZ.js.map +1 -0
  12. package/dist/{chunk-RCCWKKI3.js → chunk-CT5VG7NT.js} +7 -5
  13. package/dist/chunk-CT5VG7NT.js.map +1 -0
  14. package/dist/{chunk-S6DFGBDD.cjs → chunk-DHWPHLGF.cjs} +23 -23
  15. package/dist/{chunk-S6DFGBDD.cjs.map → chunk-DHWPHLGF.cjs.map} +1 -1
  16. package/dist/{chunk-ZPZSAJAR.js → chunk-DRUNNM4C.js} +4 -4
  17. package/dist/{chunk-ZPZSAJAR.js.map → chunk-DRUNNM4C.js.map} +1 -1
  18. package/dist/{chunk-65Q7HO3Q.cjs → chunk-ESZ6V5WB.cjs} +45 -36
  19. package/dist/chunk-ESZ6V5WB.cjs.map +1 -0
  20. package/dist/{chunk-MH3A7RDQ.cjs → chunk-F4H7J6YV.cjs} +82 -71
  21. package/dist/chunk-F4H7J6YV.cjs.map +1 -0
  22. package/dist/{chunk-R6ZTXNN2.cjs → chunk-FMTSLS25.cjs} +120 -107
  23. package/dist/chunk-FMTSLS25.cjs.map +1 -0
  24. package/dist/{chunk-A6MQQTHN.js → chunk-FYY54HZC.js} +4 -4
  25. package/dist/{chunk-A6MQQTHN.js.map → chunk-FYY54HZC.js.map} +1 -1
  26. package/dist/{chunk-4O2QGUW3.js → chunk-GFF2I6UD.js} +4 -4
  27. package/dist/{chunk-4O2QGUW3.js.map → chunk-GFF2I6UD.js.map} +1 -1
  28. package/dist/{chunk-SAQSK4AG.cjs → chunk-H2RMXG2Q.cjs} +2 -2
  29. package/dist/{chunk-SAQSK4AG.cjs.map → chunk-H2RMXG2Q.cjs.map} +1 -1
  30. package/dist/{chunk-PKRHEXX7.js → chunk-HT4LP3BO.js} +19 -18
  31. package/dist/chunk-HT4LP3BO.js.map +1 -0
  32. package/dist/{chunk-Z7R7CFVF.cjs → chunk-I6LR6CPC.cjs} +10 -10
  33. package/dist/{chunk-Z7R7CFVF.cjs.map → chunk-I6LR6CPC.cjs.map} +1 -1
  34. package/dist/chunk-LBSJWPXK.cjs +312 -0
  35. package/dist/chunk-LBSJWPXK.cjs.map +1 -0
  36. package/dist/{chunk-2NW6POYK.cjs → chunk-MCYD5LW7.cjs} +19 -18
  37. package/dist/chunk-MCYD5LW7.cjs.map +1 -0
  38. package/dist/chunk-OL6U27XK.js +24488 -0
  39. package/dist/chunk-OL6U27XK.js.map +1 -0
  40. package/dist/{chunk-UZ6CYAOG.cjs → chunk-PUSD37LD.cjs} +16 -3
  41. package/dist/chunk-PUSD37LD.cjs.map +1 -0
  42. package/dist/{chunk-YLQHE2S5.js → chunk-QNVYGEJ4.js} +6 -6
  43. package/dist/{chunk-YLQHE2S5.js.map → chunk-QNVYGEJ4.js.map} +1 -1
  44. package/dist/{chunk-AUQBEMDP.cjs → chunk-S3TIWWQL.cjs} +12 -12
  45. package/dist/{chunk-AUQBEMDP.cjs.map → chunk-S3TIWWQL.cjs.map} +1 -1
  46. package/dist/{chunk-LZDCXQMX.js → chunk-SXVANU23.js} +2 -2
  47. package/dist/{chunk-LZDCXQMX.js.map → chunk-SXVANU23.js.map} +1 -1
  48. package/dist/{chunk-6KNI7VIX.js → chunk-TKL4TD2V.js} +29 -18
  49. package/dist/chunk-TKL4TD2V.js.map +1 -0
  50. package/dist/chunk-TWZCZKUD.cjs +24530 -0
  51. package/dist/chunk-TWZCZKUD.cjs.map +1 -0
  52. package/dist/{chunk-QVHQZUGJ.cjs → chunk-TYZ6ZISQ.cjs} +11 -11
  53. package/dist/{chunk-QVHQZUGJ.cjs.map → chunk-TYZ6ZISQ.cjs.map} +1 -1
  54. package/dist/{chunk-4JMHKKV3.cjs → chunk-US6Y5RLR.cjs} +41 -37
  55. package/dist/chunk-US6Y5RLR.cjs.map +1 -0
  56. package/dist/{chunk-FCHN5M25.js → chunk-UTIOKR5C.js} +16 -7
  57. package/dist/chunk-UTIOKR5C.js.map +1 -0
  58. package/dist/{chunk-R4M3BSUG.js → chunk-WE4USCF3.js} +3 -3
  59. package/dist/{chunk-R4M3BSUG.js.map → chunk-WE4USCF3.js.map} +1 -1
  60. package/dist/{chunk-IMK7366C.cjs → chunk-X43DWDXB.cjs} +12 -12
  61. package/dist/{chunk-IMK7366C.cjs.map → chunk-X43DWDXB.cjs.map} +1 -1
  62. package/dist/{chunk-MWQQRVQC.cjs → chunk-X4QMPCTP.cjs} +7 -7
  63. package/dist/{chunk-MWQQRVQC.cjs.map → chunk-X4QMPCTP.cjs.map} +1 -1
  64. package/dist/chunk-XNKZPXCY.js +302 -0
  65. package/dist/chunk-XNKZPXCY.js.map +1 -0
  66. package/dist/server/auth/defaults.d.ts +3 -0
  67. package/dist/server/auth/defaults.d.ts.map +1 -0
  68. package/dist/server/auth/helpers.d.ts +14 -0
  69. package/dist/server/auth/helpers.d.ts.map +1 -0
  70. package/dist/server/auth/index.cjs +137 -0
  71. package/dist/server/auth/index.cjs.map +1 -0
  72. package/dist/server/auth/index.d.ts +3 -0
  73. package/dist/server/auth/index.d.ts.map +1 -0
  74. package/dist/server/auth/index.js +127 -0
  75. package/dist/server/auth/index.js.map +1 -0
  76. package/dist/server/handlers/a2a.cjs +9 -9
  77. package/dist/server/handlers/a2a.d.ts.map +1 -1
  78. package/dist/server/handlers/a2a.js +1 -1
  79. package/dist/server/handlers/agent-builder.cjs +19 -19
  80. package/dist/server/handlers/agent-builder.d.ts +24 -25
  81. package/dist/server/handlers/agent-builder.d.ts.map +1 -1
  82. package/dist/server/handlers/agent-builder.js +1 -1
  83. package/dist/server/handlers/agents.cjs +23 -23
  84. package/dist/server/handlers/agents.d.ts +4 -2
  85. package/dist/server/handlers/agents.d.ts.map +1 -1
  86. package/dist/server/handlers/agents.js +1 -1
  87. package/dist/server/handlers/logs.cjs +4 -4
  88. package/dist/server/handlers/logs.js +1 -1
  89. package/dist/server/handlers/mcp.cjs +40 -0
  90. package/dist/server/handlers/mcp.cjs.map +1 -0
  91. package/dist/server/handlers/mcp.d.ts +110 -0
  92. package/dist/server/handlers/mcp.d.ts.map +1 -0
  93. package/dist/server/handlers/mcp.js +3 -0
  94. package/dist/server/handlers/mcp.js.map +1 -0
  95. package/dist/server/handlers/memory.cjs +24 -24
  96. package/dist/server/handlers/memory.d.ts +2 -2
  97. package/dist/server/handlers/memory.js +1 -1
  98. package/dist/server/handlers/observability.cjs +9 -9
  99. package/dist/server/handlers/observability.js +1 -1
  100. package/dist/server/handlers/scores.cjs +7 -7
  101. package/dist/server/handlers/scores.js +1 -1
  102. package/dist/server/handlers/tools.cjs +6 -6
  103. package/dist/server/handlers/tools.js +1 -1
  104. package/dist/server/handlers/vector.cjs +13 -13
  105. package/dist/server/handlers/vector.d.ts +2 -2
  106. package/dist/server/handlers/vector.js +1 -1
  107. package/dist/server/handlers/voice.cjs +8 -8
  108. package/dist/server/handlers/voice.d.ts.map +1 -1
  109. package/dist/server/handlers/voice.js +1 -1
  110. package/dist/server/handlers/workflows.cjs +26 -26
  111. package/dist/server/handlers/workflows.d.ts +294 -292
  112. package/dist/server/handlers/workflows.d.ts.map +1 -1
  113. package/dist/server/handlers/workflows.js +1 -1
  114. package/dist/server/handlers.cjs +36 -31
  115. package/dist/server/handlers.d.ts +1 -0
  116. package/dist/server/handlers.d.ts.map +1 -1
  117. package/dist/server/handlers.js +12 -11
  118. package/dist/server/schemas/agent-builder.d.ts +9 -0
  119. package/dist/server/schemas/agent-builder.d.ts.map +1 -1
  120. package/dist/server/schemas/common.d.ts +29 -15
  121. package/dist/server/schemas/common.d.ts.map +1 -1
  122. package/dist/server/schemas/mcp.d.ts +299 -0
  123. package/dist/server/schemas/mcp.d.ts.map +1 -0
  124. package/dist/server/schemas/memory.d.ts +4 -4
  125. package/dist/server/schemas/memory.d.ts.map +1 -1
  126. package/dist/server/schemas/vectors.d.ts +2 -2
  127. package/dist/server/schemas/workflows.d.ts +22 -28
  128. package/dist/server/schemas/workflows.d.ts.map +1 -1
  129. package/dist/server/server-adapter/index.cjs +286 -144
  130. package/dist/server/server-adapter/index.cjs.map +1 -1
  131. package/dist/server/server-adapter/index.d.ts +50 -7
  132. package/dist/server/server-adapter/index.d.ts.map +1 -1
  133. package/dist/server/server-adapter/index.js +168 -27
  134. package/dist/server/server-adapter/index.js.map +1 -1
  135. package/dist/server/server-adapter/redact.d.ts +26 -0
  136. package/dist/server/server-adapter/redact.d.ts.map +1 -0
  137. package/dist/server/server-adapter/routes/index.d.ts +11 -2
  138. package/dist/server/server-adapter/routes/index.d.ts.map +1 -1
  139. package/dist/server/server-adapter/routes/mcp.d.ts +9 -0
  140. package/dist/server/server-adapter/routes/mcp.d.ts.map +1 -0
  141. package/dist/server/server-adapter/routes/route-builder.d.ts +3 -3
  142. package/dist/server/server-adapter/routes/route-builder.d.ts.map +1 -1
  143. package/dist/server/utils.d.ts +1 -1
  144. package/dist/server/utils.d.ts.map +1 -1
  145. package/package.json +14 -4
  146. package/dist/chunk-2NW6POYK.cjs.map +0 -1
  147. package/dist/chunk-4JMHKKV3.cjs.map +0 -1
  148. package/dist/chunk-65Q7HO3Q.cjs.map +0 -1
  149. package/dist/chunk-6KNI7VIX.js.map +0 -1
  150. package/dist/chunk-CBDUTSTI.js.map +0 -1
  151. package/dist/chunk-EI2GXZE2.js +0 -23497
  152. package/dist/chunk-EI2GXZE2.js.map +0 -1
  153. package/dist/chunk-FCHN5M25.js.map +0 -1
  154. package/dist/chunk-G7BPNX2V.js.map +0 -1
  155. package/dist/chunk-MH3A7RDQ.cjs.map +0 -1
  156. package/dist/chunk-P6BEEW5J.cjs +0 -23539
  157. package/dist/chunk-P6BEEW5J.cjs.map +0 -1
  158. package/dist/chunk-PDVJ2TTM.cjs.map +0 -1
  159. package/dist/chunk-PKRHEXX7.js.map +0 -1
  160. package/dist/chunk-R6ZTXNN2.cjs.map +0 -1
  161. package/dist/chunk-RCCWKKI3.js.map +0 -1
  162. package/dist/chunk-UCRV7PD3.js.map +0 -1
  163. package/dist/chunk-UZ6CYAOG.cjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,117 @@
1
1
  # @mastra/server
2
2
 
3
+ ## 1.0.0-beta.7
4
+
5
+ ### Patch Changes
6
+
7
+ - fix: standardize pagination params to page/perPage with backwards compatibility for limit/offset ([#10790](https://github.com/mastra-ai/mastra/pull/10790))
8
+ - Server now accepts both `page`/`perPage` and legacy `limit`/`offset` params for workflow runs and MCP server listing endpoints
9
+ - Client SDK sends both param formats to support older server versions
10
+ - Added `createCombinedPaginationSchema` helper for endpoints needing backwards compatibility
11
+ - Marked `limit` and `offset` as deprecated in client types
12
+
13
+ - feat: Add partial response support for agent and workflow list endpoints ([#10886](https://github.com/mastra-ai/mastra/pull/10886))
14
+
15
+ Add optional `partial` query parameter to `/api/agents` and `/api/workflows` endpoints to return minimal data without schemas, reducing payload size for list views:
16
+ - When `partial=true`: tool schemas (inputSchema, outputSchema) are omitted
17
+ - When `partial=true`: workflow steps are replaced with stepCount integer
18
+ - When `partial=true`: workflow root schemas (inputSchema, outputSchema) are omitted
19
+ - Maintains backward compatibility when partial parameter is not provided
20
+
21
+ ## Server Endpoint Usage
22
+
23
+ ```http
24
+ # Get partial agent data (no tool schemas)
25
+ GET /api/agents?partial=true
26
+
27
+ # Get full agent data (default behavior)
28
+ GET /api/agents
29
+
30
+ # Get partial workflow data (stepCount instead of steps, no schemas)
31
+ GET /api/workflows?partial=true
32
+
33
+ # Get full workflow data (default behavior)
34
+ GET /api/workflows
35
+ ```
36
+
37
+ ## Client SDK Usage
38
+
39
+ ```typescript
40
+ import { MastraClient } from '@mastra/client-js';
41
+
42
+ const client = new MastraClient({ baseUrl: 'http://localhost:4111' });
43
+
44
+ // Get partial agent list (smaller payload)
45
+ const partialAgents = await client.listAgents({ partial: true });
46
+
47
+ // Get full agent list with tool schemas
48
+ const fullAgents = await client.listAgents();
49
+
50
+ // Get partial workflow list (smaller payload)
51
+ const partialWorkflows = await client.listWorkflows({ partial: true });
52
+
53
+ // Get full workflow list with steps and schemas
54
+ const fullWorkflows = await client.listWorkflows();
55
+ ```
56
+
57
+ - Updated dependencies [[`3076c67`](https://github.com/mastra-ai/mastra/commit/3076c6778b18988ae7d5c4c5c466366974b2d63f), [`85d7ee1`](https://github.com/mastra-ai/mastra/commit/85d7ee18ff4e14d625a8a30ec6656bb49804989b), [`c6c1092`](https://github.com/mastra-ai/mastra/commit/c6c1092f8fbf76109303f69e000e96fd1960c4ce), [`81dc110`](https://github.com/mastra-ai/mastra/commit/81dc11008d147cf5bdc8996ead1aa61dbdebb6fc), [`7aedb74`](https://github.com/mastra-ai/mastra/commit/7aedb74883adf66af38e270e4068fd42e7a37036), [`8f02d80`](https://github.com/mastra-ai/mastra/commit/8f02d800777397e4b45d7f1ad041988a8b0c6630), [`d7aad50`](https://github.com/mastra-ai/mastra/commit/d7aad501ce61646b76b4b511e558ac4eea9884d0), [`ce0a73a`](https://github.com/mastra-ai/mastra/commit/ce0a73abeaa75b10ca38f9e40a255a645d50ebfb), [`a02e542`](https://github.com/mastra-ai/mastra/commit/a02e542d23179bad250b044b17ff023caa61739f), [`a372c64`](https://github.com/mastra-ai/mastra/commit/a372c640ad1fd12e8f0613cebdc682fc156b4d95), [`8846867`](https://github.com/mastra-ai/mastra/commit/8846867ffa9a3746767618e314bebac08eb77d87), [`42a42cf`](https://github.com/mastra-ai/mastra/commit/42a42cf3132b9786feecbb8c13c583dce5b0e198), [`ae08bf0`](https://github.com/mastra-ai/mastra/commit/ae08bf0ebc6a4e4da992b711c4a389c32ba84cf4), [`21735a7`](https://github.com/mastra-ai/mastra/commit/21735a7ef306963554a69a89b44f06c3bcd85141), [`1d877b8`](https://github.com/mastra-ai/mastra/commit/1d877b8d7b536a251c1a7a18db7ddcf4f68d6f8b)]:
58
+ - @mastra/core@1.0.0-beta.7
59
+
60
+ ## 1.0.0-beta.6
61
+
62
+ ### Patch Changes
63
+
64
+ - Unified MastraServer API with MCP transport routes ([#10644](https://github.com/mastra-ai/mastra/pull/10644))
65
+
66
+ **Breaking Changes:**
67
+ - Renamed `HonoServerAdapter` to `MastraServer` in `@mastra/hono`
68
+ - Renamed `ExpressServerAdapter` to `MastraServer` in `@mastra/express`
69
+ - Configuration now passed to constructor instead of separate method calls
70
+ - Renamed base class from `ServerAdapter` to `MastraServerBase` in `@mastra/server`
71
+
72
+ **New Features:**
73
+ - Added MCP transport routes (HTTP and SSE) to server adapters
74
+ - MCP endpoints available at `/api/mcp/:serverId/mcp` (HTTP) and `/api/mcp/:serverId/sse` (SSE)
75
+ - Added `express.json()` middleware compatibility for MCP routes
76
+ - Moved authentication helpers from deployer to `@mastra/server/auth`
77
+
78
+ **Testing:**
79
+ - Added shared MCP route and transport test suites in `@internal/server-adapter-test-utils`
80
+ - Added comprehensive MCP endpoint tests for both Hono and Express adapters
81
+ - Added GitHub Actions workflow for server adapter CI testing
82
+
83
+ - Allow direct access to server app handle directly from Mastra instance. ([#10598](https://github.com/mastra-ai/mastra/pull/10598))
84
+
85
+ ```ts
86
+ // Before: HTTP request to localhost
87
+ const response = await fetch(`http://localhost:5000/api/tools`);
88
+
89
+ // After: Direct call via app.fetch()
90
+ const app = mastra.getServerApp<Hono>();
91
+ const response = await app.fetch(new Request('http://internal/api/tools'));
92
+ ```
93
+
94
+ - Added `mastra.getServerApp<T>()` to access the underlying Hono/Express app
95
+ - Added `mastra.getMastraServer()` and `mastra.setMastraServer()` for adapter access
96
+ - Added `MastraServerBase` class in `@mastra/core/server` for adapter implementations
97
+ - Server adapters now auto-register with Mastra in their constructor
98
+
99
+ - fix(a2a): fix streaming and memory support for A2A protocol ([#10653](https://github.com/mastra-ai/mastra/pull/10653))
100
+
101
+ **Client (`@mastra/client-js`):**
102
+ - Fixed `sendStreamingMessage` to properly return a streaming response instead of attempting to parse it as JSON
103
+
104
+ **Server (`@mastra/server`):**
105
+ - Fixed A2A message handler to pass `contextId` as `threadId` for memory persistence across conversations
106
+ - Added support for user-provided `resourceId` via `params.metadata.resourceId` or `message.metadata.resourceId`, falling back to `agentId`
107
+
108
+ - Add stream data redaction to prevent sensitive information leaks in agent stream API responses. ([#10705](https://github.com/mastra-ai/mastra/pull/10705))
109
+
110
+ The `stream` API endpoint now automatically redacts `request` data from stream chunks (`step-start`, `step-finish`, `finish`) which could contain system prompts, tool definitions, and API keys. Redaction is enabled by default and can be disabled for debugging/internal services via `streamOptions.redact`.
111
+
112
+ - Updated dependencies [[`ac0d2f4`](https://github.com/mastra-ai/mastra/commit/ac0d2f4ff8831f72c1c66c2be809706d17f65789), [`1a0d3fc`](https://github.com/mastra-ai/mastra/commit/1a0d3fc811482c9c376cdf79ee615c23bae9b2d6), [`85a628b`](https://github.com/mastra-ai/mastra/commit/85a628b1224a8f64cd82ea7f033774bf22df7a7e), [`c237233`](https://github.com/mastra-ai/mastra/commit/c23723399ccedf7f5744b3f40997b79246bfbe64), [`15f9e21`](https://github.com/mastra-ai/mastra/commit/15f9e216177201ea6e3f6d0bfb063fcc0953444f), [`ff94dea`](https://github.com/mastra-ai/mastra/commit/ff94dea935f4e34545c63bcb6c29804732698809), [`5b2ff46`](https://github.com/mastra-ai/mastra/commit/5b2ff4651df70c146523a7fca773f8eb0a2272f8), [`db41688`](https://github.com/mastra-ai/mastra/commit/db4168806d007417e2e60b4f68656dca4e5f40c9), [`5ca599d`](https://github.com/mastra-ai/mastra/commit/5ca599d0bb59a1595f19f58473fcd67cc71cef58), [`bff1145`](https://github.com/mastra-ai/mastra/commit/bff114556b3cbadad9b2768488708f8ad0e91475), [`5c8ca24`](https://github.com/mastra-ai/mastra/commit/5c8ca247094e0cc2cdbd7137822fb47241f86e77), [`e191844`](https://github.com/mastra-ai/mastra/commit/e1918444ca3f80e82feef1dad506cd4ec6e2875f), [`22553f1`](https://github.com/mastra-ai/mastra/commit/22553f11c63ee5e966a9c034a349822249584691), [`7237163`](https://github.com/mastra-ai/mastra/commit/72371635dbf96a87df4b073cc48fc655afbdce3d), [`2500740`](https://github.com/mastra-ai/mastra/commit/2500740ea23da067d6e50ec71c625ab3ce275e64), [`873ecbb`](https://github.com/mastra-ai/mastra/commit/873ecbb517586aa17d2f1e99283755b3ebb2863f), [`4f9bbe5`](https://github.com/mastra-ai/mastra/commit/4f9bbe5968f42c86f4930b8193de3c3c17e5bd36), [`02e51fe`](https://github.com/mastra-ai/mastra/commit/02e51feddb3d4155cfbcc42624fd0d0970d032c0), [`8f3fa3a`](https://github.com/mastra-ai/mastra/commit/8f3fa3a652bb77da092f913ec51ae46e3a7e27dc), [`cd29ad2`](https://github.com/mastra-ai/mastra/commit/cd29ad23a255534e8191f249593849ed29160886), [`bdf4d8c`](https://github.com/mastra-ai/mastra/commit/bdf4d8cdc656d8a2c21d81834bfa3bfa70f56c16), [`854e3da`](https://github.com/mastra-ai/mastra/commit/854e3dad5daac17a91a20986399d3a51f54bf68b), [`ce18d38`](https://github.com/mastra-ai/mastra/commit/ce18d38678c65870350d123955014a8432075fd9), [`cccf9c8`](https://github.com/mastra-ai/mastra/commit/cccf9c8b2d2dfc1a5e63919395b83d78c89682a0), [`61a5705`](https://github.com/mastra-ai/mastra/commit/61a570551278b6743e64243b3ce7d73de915ca8a), [`db70a48`](https://github.com/mastra-ai/mastra/commit/db70a48aeeeeb8e5f92007e8ede52c364ce15287), [`f0fdc14`](https://github.com/mastra-ai/mastra/commit/f0fdc14ee233d619266b3d2bbdeea7d25cfc6d13), [`db18bc9`](https://github.com/mastra-ai/mastra/commit/db18bc9c3825e2c1a0ad9a183cc9935f6691bfa1), [`9b37b56`](https://github.com/mastra-ai/mastra/commit/9b37b565e1f2a76c24f728945cc740c2b09be9da), [`41a23c3`](https://github.com/mastra-ai/mastra/commit/41a23c32f9877d71810f37e24930515df2ff7a0f), [`5d171ad`](https://github.com/mastra-ai/mastra/commit/5d171ad9ef340387276b77c2bb3e83e83332d729), [`f03ae60`](https://github.com/mastra-ai/mastra/commit/f03ae60500fe350c9d828621006cdafe1975fdd8), [`d1e74a0`](https://github.com/mastra-ai/mastra/commit/d1e74a0a293866dece31022047f5dbab65a304d0), [`39e7869`](https://github.com/mastra-ai/mastra/commit/39e7869bc7d0ee391077ce291474d8a84eedccff), [`5761926`](https://github.com/mastra-ai/mastra/commit/57619260c4a2cdd598763abbacd90de594c6bc76), [`c900fdd`](https://github.com/mastra-ai/mastra/commit/c900fdd504c41348efdffb205cfe80d48c38fa33), [`604a79f`](https://github.com/mastra-ai/mastra/commit/604a79fecf276e26a54a3fe01bb94e65315d2e0e), [`887f0b4`](https://github.com/mastra-ai/mastra/commit/887f0b4746cdbd7cb7d6b17ac9f82aeb58037ea5), [`2562143`](https://github.com/mastra-ai/mastra/commit/256214336b4faa78646c9c1776612393790d8784), [`ef11a61`](https://github.com/mastra-ai/mastra/commit/ef11a61920fa0ed08a5b7ceedd192875af119749)]:
113
+ - @mastra/core@1.0.0-beta.6
114
+
3
115
  ## 1.0.0-beta.5
4
116
 
5
117
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  import { validateBody, parseFilters } from './chunk-XWGAT2DA.js';
2
- import { createPagePaginationSchema, baseLogMessageSchema, runIdSchema } from './chunk-PKRHEXX7.js';
3
- import { createRoute } from './chunk-LZDCXQMX.js';
2
+ import { createPagePaginationSchema, baseLogMessageSchema, runIdSchema } from './chunk-HT4LP3BO.js';
3
+ import { createRoute } from './chunk-SXVANU23.js';
4
4
  import { handleError } from './chunk-UXGQZUYZ.js';
5
5
  import { __export } from './chunk-PR4QN5HX.js';
6
6
  import z from 'zod';
@@ -112,5 +112,5 @@ var LIST_LOGS_BY_RUN_ID_ROUTE = createRoute({
112
112
  });
113
113
 
114
114
  export { LIST_LOGS_BY_RUN_ID_ROUTE, LIST_LOGS_ROUTE, LIST_LOG_TRANSPORTS_ROUTE, logs_exports };
115
- //# sourceMappingURL=chunk-LGG3N3AV.js.map
116
- //# sourceMappingURL=chunk-LGG3N3AV.js.map
115
+ //# sourceMappingURL=chunk-3SFLFUKY.js.map
116
+ //# sourceMappingURL=chunk-3SFLFUKY.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/handlers/logs.ts","../src/server/schemas/logs.ts"],"names":[],"mappings":"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","file":"chunk-LGG3N3AV.js","sourcesContent":["import { runIdSchema } from '../schemas/common';\nimport { listLogsQuerySchema, listLogsResponseSchema, listLogTransportsResponseSchema } from '../schemas/logs';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\nimport { parseFilters, validateBody } from './utils';\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_LOG_TRANSPORTS_ROUTE = createRoute({\n method: 'GET',\n path: '/api/logs/transports',\n responseType: 'json',\n responseSchema: listLogTransportsResponseSchema,\n summary: 'List log transports',\n description: 'Returns a list of all available log transports',\n tags: ['Logs'],\n handler: async ({ mastra }) => {\n try {\n const logger = mastra.getLogger();\n const transports = logger.getTransports();\n\n return {\n transports: transports ? [...transports.keys()] : [],\n };\n } catch (error) {\n return handleError(error, 'Error getting log Transports');\n }\n },\n});\n\nexport const LIST_LOGS_ROUTE = createRoute({\n method: 'GET',\n path: '/api/logs',\n responseType: 'json',\n queryParamSchema: listLogsQuerySchema,\n responseSchema: listLogsResponseSchema,\n summary: 'List logs',\n description:\n 'Returns logs from a specific transport with optional filtering by date range, log level, and custom filters',\n tags: ['Logs'],\n handler: async ({ mastra, ...params }) => {\n try {\n const { transportId, fromDate, toDate, logLevel, filters: _filters, page, perPage } = params;\n\n validateBody({ transportId });\n\n // Parse filter query parameter if present\n const filters = parseFilters(_filters);\n\n const logs = await mastra.listLogs(transportId!, {\n fromDate,\n toDate,\n logLevel,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n });\n return logs;\n } catch (error) {\n return handleError(error, 'Error getting logs');\n }\n },\n});\n\nexport const LIST_LOGS_BY_RUN_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/api/logs/:runId',\n responseType: 'json',\n pathParamSchema: runIdSchema,\n queryParamSchema: listLogsQuerySchema,\n responseSchema: listLogsResponseSchema,\n summary: 'List logs by run ID',\n description: 'Returns all logs for a specific execution run from a transport',\n tags: ['Logs'],\n handler: async ({ mastra, runId, ...params }) => {\n try {\n const { transportId, fromDate, toDate, logLevel, filters: _filters, page, perPage } = params;\n\n validateBody({ runId, transportId });\n\n // Parse filter query parameter if present\n const filters = parseFilters(_filters);\n\n const logs = await mastra.listLogsByRunId({\n runId: runId!,\n transportId: transportId!,\n fromDate,\n toDate,\n logLevel,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n });\n return logs;\n } catch (error) {\n return handleError(error, 'Error getting logs by run ID');\n }\n },\n});\n","import z from 'zod';\nimport { createPagePaginationSchema, baseLogMessageSchema } from './common';\n\n// Query parameter schemas\nexport const listLogsQuerySchema = createPagePaginationSchema().extend({\n fromDate: z.coerce.date().optional(),\n toDate: z.coerce.date().optional(),\n logLevel: z.enum(['debug', 'info', 'warn', 'error', 'silent']).optional(),\n filters: z.union([z.string(), z.array(z.string())]).optional(),\n transportId: z.string(),\n});\n\n// Response schemas\nexport const listLogsResponseSchema = z.object({\n logs: z.array(baseLogMessageSchema),\n total: z.number(),\n page: z.number(),\n perPage: z.union([z.number(), z.literal(false)]),\n hasMore: z.boolean(),\n});\n\nexport const listLogTransportsResponseSchema = z.object({\n transports: z.array(z.string()),\n});\n"]}
1
+ {"version":3,"sources":["../src/server/handlers/logs.ts","../src/server/schemas/logs.ts"],"names":[],"mappings":"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","file":"chunk-3SFLFUKY.js","sourcesContent":["import { runIdSchema } from '../schemas/common';\nimport { listLogsQuerySchema, listLogsResponseSchema, listLogTransportsResponseSchema } from '../schemas/logs';\nimport { createRoute } from '../server-adapter/routes/route-builder';\nimport { handleError } from './error';\nimport { parseFilters, validateBody } from './utils';\n\n// ============================================================================\n// Route Definitions (new pattern - handlers defined inline with createRoute)\n// ============================================================================\n\nexport const LIST_LOG_TRANSPORTS_ROUTE = createRoute({\n method: 'GET',\n path: '/api/logs/transports',\n responseType: 'json',\n responseSchema: listLogTransportsResponseSchema,\n summary: 'List log transports',\n description: 'Returns a list of all available log transports',\n tags: ['Logs'],\n handler: async ({ mastra }) => {\n try {\n const logger = mastra.getLogger();\n const transports = logger.getTransports();\n\n return {\n transports: transports ? [...transports.keys()] : [],\n };\n } catch (error) {\n return handleError(error, 'Error getting log Transports');\n }\n },\n});\n\nexport const LIST_LOGS_ROUTE = createRoute({\n method: 'GET',\n path: '/api/logs',\n responseType: 'json',\n queryParamSchema: listLogsQuerySchema,\n responseSchema: listLogsResponseSchema,\n summary: 'List logs',\n description:\n 'Returns logs from a specific transport with optional filtering by date range, log level, and custom filters',\n tags: ['Logs'],\n handler: async ({ mastra, ...params }) => {\n try {\n const { transportId, fromDate, toDate, logLevel, filters: _filters, page, perPage } = params;\n\n validateBody({ transportId });\n\n // Parse filter query parameter if present\n const filters = parseFilters(_filters);\n\n const logs = await mastra.listLogs(transportId!, {\n fromDate,\n toDate,\n logLevel,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n });\n return logs;\n } catch (error) {\n return handleError(error, 'Error getting logs');\n }\n },\n});\n\nexport const LIST_LOGS_BY_RUN_ID_ROUTE = createRoute({\n method: 'GET',\n path: '/api/logs/:runId',\n responseType: 'json',\n pathParamSchema: runIdSchema,\n queryParamSchema: listLogsQuerySchema,\n responseSchema: listLogsResponseSchema,\n summary: 'List logs by run ID',\n description: 'Returns all logs for a specific execution run from a transport',\n tags: ['Logs'],\n handler: async ({ mastra, runId, ...params }) => {\n try {\n const { transportId, fromDate, toDate, logLevel, filters: _filters, page, perPage } = params;\n\n validateBody({ runId, transportId });\n\n // Parse filter query parameter if present\n const filters = parseFilters(_filters);\n\n const logs = await mastra.listLogsByRunId({\n runId: runId!,\n transportId: transportId!,\n fromDate,\n toDate,\n logLevel,\n filters,\n page: page ? Number(page) : undefined,\n perPage: perPage ? Number(perPage) : undefined,\n });\n return logs;\n } catch (error) {\n return handleError(error, 'Error getting logs by run ID');\n }\n },\n});\n","import z from 'zod';\nimport { createPagePaginationSchema, baseLogMessageSchema } from './common';\n\n// Query parameter schemas\nexport const listLogsQuerySchema = createPagePaginationSchema().extend({\n fromDate: z.coerce.date().optional(),\n toDate: z.coerce.date().optional(),\n logLevel: z.enum(['debug', 'info', 'warn', 'error', 'silent']).optional(),\n filters: z.union([z.string(), z.array(z.string())]).optional(),\n transportId: z.string(),\n});\n\n// Response schemas\nexport const listLogsResponseSchema = z.object({\n logs: z.array(baseLogMessageSchema),\n total: z.number(),\n page: z.number(),\n perPage: z.union([z.number(), z.literal(false)]),\n hasMore: z.boolean(),\n});\n\nexport const listLogTransportsResponseSchema = z.object({\n transports: z.array(z.string()),\n});\n"]}
@@ -21,7 +21,20 @@ function getSteps(steps, path) {
21
21
  return acc;
22
22
  }, {});
23
23
  }
24
- function getWorkflowInfo(workflow) {
24
+ function getWorkflowInfo(workflow, partial = false) {
25
+ if (partial) {
26
+ return {
27
+ name: workflow.name,
28
+ description: workflow.description,
29
+ stepCount: Object.keys(workflow.steps).length,
30
+ stepGraph: workflow.serializedStepGraph,
31
+ options: workflow.options,
32
+ steps: {},
33
+ allSteps: {},
34
+ inputSchema: void 0,
35
+ outputSchema: void 0
36
+ };
37
+ }
25
38
  return {
26
39
  name: workflow.name,
27
40
  description: workflow.description,
@@ -126,5 +139,5 @@ function convertInstructionsToString(message) {
126
139
  }
127
140
 
128
141
  export { WorkflowRegistry, convertInstructionsToString, getWorkflowInfo };
129
- //# sourceMappingURL=chunk-G7BPNX2V.js.map
130
- //# sourceMappingURL=chunk-G7BPNX2V.js.map
142
+ //# sourceMappingURL=chunk-6YWE7UPT.js.map
143
+ //# sourceMappingURL=chunk-6YWE7UPT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/utils.ts"],"names":[],"mappings":"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","file":"chunk-6YWE7UPT.js","sourcesContent":["import type { Mastra } from '@mastra/core';\nimport type { SystemMessage } from '@mastra/core/llm';\nimport { zodToJsonSchema } from '@mastra/core/utils/zod-to-json';\nimport type { StepWithComponent, Workflow, WorkflowInfo } from '@mastra/core/workflows';\nimport { stringify } from 'superjson';\n\nfunction getSteps(steps: Record<string, StepWithComponent>, path?: string) {\n return Object.entries(steps).reduce<any>((acc, [key, step]) => {\n const fullKey = path ? `${path}.${key}` : key;\n acc[fullKey] = {\n id: step.id,\n description: step.description,\n inputSchema: step.inputSchema ? stringify(zodToJsonSchema(step.inputSchema)) : undefined,\n outputSchema: step.outputSchema ? stringify(zodToJsonSchema(step.outputSchema)) : undefined,\n resumeSchema: step.resumeSchema ? stringify(zodToJsonSchema(step.resumeSchema)) : undefined,\n suspendSchema: step.suspendSchema ? stringify(zodToJsonSchema(step.suspendSchema)) : undefined,\n isWorkflow: step.component === 'WORKFLOW',\n component: step.component,\n };\n\n if (step.component === 'WORKFLOW' && step.steps) {\n const nestedSteps = getSteps(step.steps, fullKey) || {};\n acc = { ...acc, ...nestedSteps };\n }\n\n return acc;\n }, {});\n}\n\nexport function getWorkflowInfo(workflow: Workflow, partial: boolean = false): WorkflowInfo {\n if (partial) {\n // Return minimal info in partial mode\n return {\n name: workflow.name,\n description: workflow.description,\n stepCount: Object.keys(workflow.steps).length,\n stepGraph: workflow.serializedStepGraph,\n options: workflow.options,\n steps: {},\n allSteps: {},\n inputSchema: undefined,\n outputSchema: undefined,\n } as WorkflowInfo;\n }\n\n return {\n name: workflow.name,\n description: workflow.description,\n steps: Object.entries(workflow.steps).reduce<any>((acc, [key, step]) => {\n acc[key] = {\n id: step.id,\n description: step.description,\n inputSchema: step.inputSchema ? stringify(zodToJsonSchema(step.inputSchema)) : undefined,\n outputSchema: step.outputSchema ? stringify(zodToJsonSchema(step.outputSchema)) : undefined,\n resumeSchema: step.resumeSchema ? stringify(zodToJsonSchema(step.resumeSchema)) : undefined,\n suspendSchema: step.suspendSchema ? stringify(zodToJsonSchema(step.suspendSchema)) : undefined,\n component: step.component,\n };\n return acc;\n }, {}),\n allSteps: getSteps(workflow.steps) || {},\n stepGraph: workflow.serializedStepGraph,\n inputSchema: workflow.inputSchema ? stringify(zodToJsonSchema(workflow.inputSchema)) : undefined,\n outputSchema: workflow.outputSchema ? stringify(zodToJsonSchema(workflow.outputSchema)) : undefined,\n options: workflow.options,\n };\n}\n\n/**\n * Workflow Registry for temporarily registering additional workflows\n * that are not part of the user's Mastra instance (e.g., internal template workflows)\n */\nexport class WorkflowRegistry {\n private static additionalWorkflows: Record<string, Workflow> = {};\n\n /**\n * Register a workflow temporarily\n */\n static registerTemporaryWorkflow(id: string, workflow: Workflow): void {\n this.additionalWorkflows[id] = workflow;\n }\n\n /**\n * Register all workflows from map\n */\n static registerTemporaryWorkflows(\n workflows: Record<string, Workflow>,\n mastra?: Mastra<any, any, any, any, any, any, any, any, any>,\n ): void {\n for (const [id, workflow] of Object.entries(workflows)) {\n // Register Mastra instance with the workflow if provided\n if (mastra) {\n workflow.__registerMastra(mastra);\n workflow.__registerPrimitives({\n logger: mastra.getLogger(),\n storage: mastra.getStorage(),\n agents: mastra.listAgents(),\n tts: mastra.getTTS(),\n vectors: mastra.listVectors(),\n });\n }\n this.additionalWorkflows[id] = workflow;\n }\n }\n\n /**\n * Get a workflow by ID from the registry (returns undefined if not found)\n */\n static getWorkflow(workflowId: string): Workflow | undefined {\n return this.additionalWorkflows[workflowId];\n }\n\n /**\n * Get all workflows from the registry\n */\n static getAllWorkflows(): Record<string, Workflow> {\n return { ...this.additionalWorkflows };\n }\n\n /**\n * Clean up a temporary workflow\n */\n static cleanupTemporaryWorkflow(workflowId: string): void {\n delete this.additionalWorkflows[workflowId];\n }\n /**\n * Clean up all registered workflows\n */\n static cleanup(): void {\n // Clear all workflows (since we register all agent-builder workflows each time)\n this.additionalWorkflows = {};\n }\n\n /**\n * Check if a workflow ID is a valid agent-builder workflow\n */\n static isAgentBuilderWorkflow(workflowId: string): boolean {\n return workflowId in this.additionalWorkflows;\n }\n\n /**\n * Get all registered temporary workflow IDs (for debugging)\n */\n static getRegisteredWorkflowIds(): string[] {\n return Object.keys(this.additionalWorkflows);\n }\n}\n\nexport function convertInstructionsToString(message: SystemMessage): string {\n if (!message) {\n return '';\n }\n\n if (typeof message === 'string') {\n return message;\n }\n\n if (Array.isArray(message)) {\n return message\n .map(m => {\n if (typeof m === 'string') {\n return m;\n }\n // Safely extract content from message objects\n return typeof m.content === 'string' ? m.content : '';\n })\n .filter(content => content) // Remove empty strings\n .join('\\n');\n }\n\n // Handle single message object - safely extract content\n return typeof message.content === 'string' ? message.content : '';\n}\n"]}
@@ -1,6 +1,6 @@
1
- import { voiceSpeakersResponseSchema, agentIdPathParams, speakResponseSchema, generateSpeechBodySchema, transcribeSpeechResponseSchema, transcribeSpeechBodySchema, getListenerResponseSchema } from './chunk-R4M3BSUG.js';
2
1
  import { validateBody } from './chunk-XWGAT2DA.js';
3
- import { createRoute } from './chunk-LZDCXQMX.js';
2
+ import { voiceSpeakersResponseSchema, agentIdPathParams, speakResponseSchema, generateSpeechBodySchema, transcribeSpeechResponseSchema, transcribeSpeechBodySchema, getListenerResponseSchema } from './chunk-WE4USCF3.js';
3
+ import { createRoute } from './chunk-SXVANU23.js';
4
4
  import { handleError } from './chunk-UXGQZUYZ.js';
5
5
  import { HTTPException } from './chunk-6QWQZI4Q.js';
6
6
  import { __export } from './chunk-PR4QN5HX.js';
@@ -37,10 +37,12 @@ var GET_SPEAKERS_ROUTE = createRoute({
37
37
  throw new HTTPException(404, { message: "Agent not found" });
38
38
  }
39
39
  const voice = await agent.getVoice({ requestContext });
40
- if (!voice) {
41
- throw new HTTPException(400, { message: "Agent does not have voice capabilities" });
42
- }
43
- const speakers = await voice.getSpeakers();
40
+ const speakers = await Promise.resolve().then(() => voice.getSpeakers()).catch((err) => {
41
+ if (err instanceof MastraError) {
42
+ return [];
43
+ }
44
+ throw err;
45
+ });
44
46
  return speakers;
45
47
  } catch (error) {
46
48
  return handleError(error, "Error getting speakers");
@@ -176,10 +178,12 @@ var GET_LISTENER_ROUTE = createRoute({
176
178
  throw new HTTPException(404, { message: "Agent not found" });
177
179
  }
178
180
  const voice = await agent.getVoice({ requestContext });
179
- if (!voice) {
180
- throw new HTTPException(400, { message: "Agent does not have voice capabilities" });
181
- }
182
- const listeners = await voice.getListener();
181
+ const listeners = await Promise.resolve().then(() => voice.getListener()).catch((err) => {
182
+ if (err instanceof MastraError) {
183
+ return { enabled: false };
184
+ }
185
+ throw err;
186
+ });
183
187
  return listeners;
184
188
  } catch (error) {
185
189
  return handleError(error, "Error getting listeners");
@@ -188,5 +192,5 @@ var GET_LISTENER_ROUTE = createRoute({
188
192
  });
189
193
 
190
194
  export { GENERATE_SPEECH_DEPRECATED_ROUTE, GENERATE_SPEECH_ROUTE, GET_LISTENER_ROUTE, GET_SPEAKERS_DEPRECATED_ROUTE, GET_SPEAKERS_ROUTE, TRANSCRIBE_SPEECH_DEPRECATED_ROUTE, TRANSCRIBE_SPEECH_ROUTE, voice_exports };
191
- //# sourceMappingURL=chunk-CBDUTSTI.js.map
192
- //# sourceMappingURL=chunk-CBDUTSTI.js.map
195
+ //# sourceMappingURL=chunk-7N3PD4SV.js.map
196
+ //# sourceMappingURL=chunk-7N3PD4SV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/voice.ts"],"names":[],"mappings":"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","file":"chunk-7N3PD4SV.js","sourcesContent":["import { Readable } from 'node:stream';\nimport { MastraError } from '@mastra/core/error';\nimport { HTTPException } from '../http-exception';\nimport {\n agentIdPathParams,\n voiceSpeakersResponseSchema,\n generateSpeechBodySchema,\n speakResponseSchema,\n transcribeSpeechBodySchema,\n transcribeSpeechResponseSchema,\n getListenerResponseSchema,\n} from '../schemas/agents';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\nimport { handleError } from './error';\nimport { validateBody } from './utils';\n\n// ============================================================================\n// Route Objects\n// ============================================================================\n\nexport const GET_SPEAKERS_ROUTE = createRoute({\n method: 'GET',\n path: '/api/agents/:agentId/voice/speakers',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n responseSchema: voiceSpeakersResponseSchema,\n summary: 'Get voice speakers',\n description: 'Returns available voice speakers for the specified agent',\n tags: ['Agents', 'Voice'],\n handler: async ({ mastra, agentId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n const agent = mastra.getAgentById(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const voice = await agent.getVoice({ requestContext });\n\n const speakers = await Promise.resolve()\n .then(() => voice.getSpeakers())\n .catch(err => {\n if (err instanceof MastraError) {\n // No voice provider configured, return empty array\n return [];\n }\n throw err;\n });\n\n return speakers;\n } catch (error) {\n return handleError(error, 'Error getting speakers');\n }\n },\n});\n\nexport const GET_SPEAKERS_DEPRECATED_ROUTE = createRoute({\n method: 'GET',\n path: '/api/agents/:agentId/speakers',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n responseSchema: voiceSpeakersResponseSchema,\n summary: 'Get available speakers for an agent',\n description: '[DEPRECATED] Use /api/agents/:agentId/voice/speakers instead. Get available speakers for an agent',\n tags: ['Agents', 'Voice'],\n handler: GET_SPEAKERS_ROUTE.handler,\n});\n\nexport const GENERATE_SPEECH_ROUTE = createRoute({\n method: 'POST',\n path: '/api/agents/:agentId/voice/speak',\n responseType: 'stream',\n pathParamSchema: agentIdPathParams,\n bodySchema: generateSpeechBodySchema,\n responseSchema: speakResponseSchema,\n summary: 'Generate speech',\n description: 'Generates speech audio from text using the agent voice configuration',\n tags: ['Agents', 'Voice'],\n handler: async ({ mastra, agentId, text, speakerId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n validateBody({ text });\n\n const agent = mastra.getAgentById(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const voice = await agent.getVoice({ requestContext });\n\n if (!voice) {\n throw new HTTPException(400, { message: 'Agent does not have voice capabilities' });\n }\n\n const audioStream = await Promise.resolve()\n .then(() => voice.speak(text!, { speaker: speakerId! }))\n .catch(err => {\n if (err instanceof MastraError) {\n throw new HTTPException(400, { message: err.message });\n }\n\n throw err;\n });\n\n if (!audioStream) {\n throw new HTTPException(500, { message: 'Failed to generate speech' });\n }\n\n return audioStream as unknown as ReadableStream<any>;\n } catch (error) {\n return handleError(error, 'Error generating speech');\n }\n },\n});\n\nexport const GENERATE_SPEECH_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/api/agents/:agentId/speak',\n responseType: 'stream',\n pathParamSchema: agentIdPathParams,\n bodySchema: generateSpeechBodySchema,\n responseSchema: speakResponseSchema,\n summary: 'Convert text to speech',\n description:\n \"[DEPRECATED] Use /api/agents/:agentId/voice/speak instead. Convert text to speech using the agent's voice provider\",\n tags: ['Agents', 'Voice'],\n handler: GENERATE_SPEECH_ROUTE.handler,\n});\n\nexport const TRANSCRIBE_SPEECH_ROUTE = createRoute({\n method: 'POST',\n path: '/api/agents/:agentId/voice/listen',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: transcribeSpeechBodySchema,\n responseSchema: transcribeSpeechResponseSchema,\n summary: 'Transcribe speech',\n description: 'Transcribes speech audio to text using the agent voice configuration',\n tags: ['Agents', 'Voice'],\n handler: async ({ mastra, agentId, audioData, options, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n if (!audioData) {\n throw new HTTPException(400, { message: 'Audio data is required' });\n }\n\n const agent = mastra.getAgentById(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const voice = await agent.getVoice({ requestContext });\n\n if (!voice) {\n throw new HTTPException(400, { message: 'Agent does not have voice capabilities' });\n }\n\n const audioStream = new Readable();\n audioStream.push(audioData);\n audioStream.push(null);\n\n const text = await voice.listen(audioStream, options);\n return { text: text as string };\n } catch (error) {\n return handleError(error, 'Error transcribing speech');\n }\n },\n});\n\nexport const TRANSCRIBE_SPEECH_DEPRECATED_ROUTE = createRoute({\n method: 'POST',\n path: '/api/agents/:agentId/listen',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n bodySchema: transcribeSpeechBodySchema,\n responseSchema: transcribeSpeechResponseSchema,\n summary: 'Convert speech to text',\n description:\n \"[DEPRECATED] Use /api/agents/:agentId/voice/listen instead. Convert speech to text using the agent's voice provider. Additional provider-specific options can be passed as query parameters.\",\n tags: ['Agents', 'Voice'],\n handler: TRANSCRIBE_SPEECH_ROUTE.handler,\n});\n\nexport const GET_LISTENER_ROUTE = createRoute({\n method: 'GET',\n path: '/api/agents/:agentId/voice/listener',\n responseType: 'json',\n pathParamSchema: agentIdPathParams,\n responseSchema: getListenerResponseSchema,\n summary: 'Get voice listener',\n description: 'Returns the voice listener configuration for the agent',\n tags: ['Agents', 'Voice'],\n handler: async ({ mastra, agentId, requestContext }) => {\n try {\n if (!agentId) {\n throw new HTTPException(400, { message: 'Agent ID is required' });\n }\n\n const agent = mastra.getAgentById(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const voice = await agent.getVoice({ requestContext });\n\n const listeners = await Promise.resolve()\n .then(() => voice.getListener())\n .catch(err => {\n if (err instanceof MastraError) {\n // No voice provider configured\n return { enabled: false };\n }\n throw err;\n });\n\n return listeners;\n } catch (error) {\n return handleError(error, 'Error getting listeners');\n }\n },\n});\n"]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkUZ6CYAOG_cjs = require('./chunk-UZ6CYAOG.cjs');
4
- var chunkSAQSK4AG_cjs = require('./chunk-SAQSK4AG.cjs');
3
+ var chunkPUSD37LD_cjs = require('./chunk-PUSD37LD.cjs');
4
+ var chunkH2RMXG2Q_cjs = require('./chunk-H2RMXG2Q.cjs');
5
5
  var chunkO7I5CWRX_cjs = require('./chunk-O7I5CWRX.cjs');
6
6
  var a2a = require('@mastra/core/a2a');
7
7
  var z = require('zod');
@@ -342,7 +342,7 @@ async function getAgentCardByIdHandler({
342
342
  ]);
343
343
  const agentCard = {
344
344
  name: agent.id || agentId,
345
- description: chunkUZ6CYAOG_cjs.convertInstructionsToString(instructions),
345
+ description: chunkPUSD37LD_cjs.convertInstructionsToString(instructions),
346
346
  url: executionUrl,
347
347
  provider,
348
348
  version,
@@ -403,9 +403,11 @@ async function handleMessageSend({
403
403
  activeCancellations: taskStore.activeCancellations
404
404
  });
405
405
  try {
406
+ const resourceId = metadata?.resourceId ?? message.metadata?.resourceId ?? agentId;
406
407
  const { text } = await agent.generate([convertToCoreMessage(message)], {
407
408
  runId: taskId,
408
- requestContext
409
+ requestContext,
410
+ ...contextId ? { threadId: contextId, resourceId } : {}
409
411
  });
410
412
  currentData = applyUpdateToTask(currentData, {
411
413
  state: "completed",
@@ -594,7 +596,7 @@ async function getAgentExecutionHandler({
594
596
  return normalizeError(error, requestId, taskId, logger);
595
597
  }
596
598
  }
597
- var GET_AGENT_CARD_ROUTE = chunkSAQSK4AG_cjs.createRoute({
599
+ var GET_AGENT_CARD_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
598
600
  method: "GET",
599
601
  path: "/.well-known/:agentId/agent-card.json",
600
602
  responseType: "json",
@@ -620,7 +622,7 @@ var GET_AGENT_CARD_ROUTE = chunkSAQSK4AG_cjs.createRoute({
620
622
  ]);
621
623
  const agentCard = {
622
624
  name: agent.id || agentId,
623
- description: chunkUZ6CYAOG_cjs.convertInstructionsToString(instructions),
625
+ description: chunkPUSD37LD_cjs.convertInstructionsToString(instructions),
624
626
  url: executionUrl,
625
627
  provider,
626
628
  version,
@@ -641,7 +643,7 @@ var GET_AGENT_CARD_ROUTE = chunkSAQSK4AG_cjs.createRoute({
641
643
  return agentCard;
642
644
  }
643
645
  });
644
- var AGENT_EXECUTION_ROUTE = chunkSAQSK4AG_cjs.createRoute({
646
+ var AGENT_EXECUTION_ROUTE = chunkH2RMXG2Q_cjs.createRoute({
645
647
  method: "POST",
646
648
  path: "/a2a/:agentId",
647
649
  responseType: "json",
@@ -674,5 +676,5 @@ exports.handleMessageSend = handleMessageSend;
674
676
  exports.handleMessageStream = handleMessageStream;
675
677
  exports.handleTaskCancel = handleTaskCancel;
676
678
  exports.handleTaskGet = handleTaskGet;
677
- //# sourceMappingURL=chunk-PDVJ2TTM.cjs.map
678
- //# sourceMappingURL=chunk-PDVJ2TTM.cjs.map
679
+ //# sourceMappingURL=chunk-C3D3X2L5.cjs.map
680
+ //# sourceMappingURL=chunk-C3D3X2L5.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/server/handlers/a2a.ts","../src/server/a2a/protocol.ts","../src/server/a2a/tasks.ts","../src/server/schemas/a2a.ts"],"names":["__export","MastraA2AError","z","messageSendParamsSchema","convertInstructionsToString","result","createRoute"],"mappings":"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","file":"chunk-C3D3X2L5.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';\nimport { convertToCoreMessage, normalizeError, createSuccessResponse, createErrorResponse } 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';\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 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 = mastra.getAgentById(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({ requestContext }),\n agent.listTools({ requestContext }),\n ]);\n\n // Extract agent information to create the AgentCard\n const agentCard: AgentCard = {\n name: agent.id || agentId,\n description: convertInstructionsToString(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 requestContext,\n}: {\n requestId: 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 { text } = await agent.generate([convertToCoreMessage(message)], {\n runId: taskId,\n requestContext,\n ...(contextId ? { threadId: contextId, resourceId } : {}),\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 requestContext,\n}: {\n requestId: string;\n params: MessageSendParams;\n taskStore: InMemoryTaskStore;\n agent: Agent;\n agentId: string;\n logger?: IMastraLogger;\n requestContext: RequestContext;\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 requestContext,\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 requestContext,\n method,\n params,\n taskStore,\n logger,\n}: Context & {\n requestId: string;\n requestContext: RequestContext;\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.getAgentById(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 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 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\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 handler: async ({ mastra, agentId, requestContext }) => {\n const executionUrl = `/a2a/${agentId}`;\n const provider = {\n organization: 'Mastra',\n url: 'https://mastra.ai',\n };\n const version = '1.0';\n\n const agent = mastra.getAgentById(agentId as string);\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({ requestContext }),\n agent.listTools({ requestContext }),\n ]);\n\n const agentCard: AgentCard = {\n name: agent.id || (agentId as string),\n description: convertInstructionsToString(instructions),\n url: executionUrl,\n provider,\n version,\n capabilities: {\n streaming: true,\n pushNotifications: false,\n stateTransitionHistory: false,\n },\n defaultInputModes: ['text'],\n defaultOutputModes: ['text'],\n skills: Object.entries(tools).map(([toolId, tool]) => ({\n id: toolId,\n name: toolId,\n description: tool.description || `Tool: ${toolId}`,\n tags: ['tool'],\n })),\n };\n\n return agentCard;\n },\n});\n\nexport const AGENT_EXECUTION_ROUTE = createRoute({\n method: 'POST',\n path: '/a2a/:agentId',\n responseType: 'json',\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 handler: async ({ mastra, agentId, requestContext, taskStore, ...bodyParams }) => {\n const { id: requestId, method, params } = bodyParams;\n\n return await getAgentExecutionHandler({\n requestId: String(requestId),\n mastra,\n agentId: agentId as string,\n requestContext,\n method,\n params,\n taskStore: taskStore!,\n });\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","import z from 'zod';\n\n// Path parameter schemas\nexport const a2aAgentIdPathParams = z.object({\n agentId: z.string().describe('Unique identifier for the agent'),\n});\n\nexport const a2aTaskPathParams = a2aAgentIdPathParams.extend({\n taskId: z.string().describe('Unique identifier for the task'),\n});\n\n// Body schemas for A2A protocol\n\n// Push notification schemas\nconst pushNotificationAuthenticationInfoSchema = z.object({\n schemes: z.array(z.string()).describe('Supported authentication schemes - e.g. Basic, Bearer'),\n credentials: z.string().optional().describe('Optional credentials'),\n});\n\nconst pushNotificationConfigSchema = z.object({\n url: z.string().describe('URL for sending the push notifications'),\n id: z.string().optional().describe('Push Notification ID - created by server to support multiple callbacks'),\n token: z.string().optional().describe('Token unique to this task/session'),\n authentication: pushNotificationAuthenticationInfoSchema.optional(),\n});\n\nconst messageSendConfigurationSchema = z.object({\n acceptedOutputModes: z.array(z.string()).describe('Accepted output modalities by the client'),\n blocking: z.boolean().optional().describe('If the server should treat the client as a blocking request'),\n historyLength: z.number().optional().describe('Number of recent messages to be retrieved'),\n pushNotificationConfig: pushNotificationConfigSchema.optional(),\n});\n\n// Part schemas\nconst textPartSchema = z.object({\n kind: z.literal('text').describe('Part type - text for TextParts'),\n text: z.string().describe('Text content'),\n metadata: z.record(z.unknown()).optional().describe('Optional metadata associated with the part'),\n});\n\nconst fileWithBytesSchema = z.object({\n bytes: z.string().describe('base64 encoded content of the file'),\n mimeType: z.string().optional().describe('Optional mimeType for the file'),\n name: z.string().optional().describe('Optional name for the file'),\n});\n\nconst fileWithUriSchema = z.object({\n uri: z.string().describe('URL for the File content'),\n mimeType: z.string().optional().describe('Optional mimeType for the file'),\n name: z.string().optional().describe('Optional name for the file'),\n});\n\nconst filePartSchema = z.object({\n kind: z.literal('file').describe('Part type - file for FileParts'),\n file: z.union([fileWithBytesSchema, fileWithUriSchema]).describe('File content either as url or bytes'),\n metadata: z.record(z.unknown()).optional().describe('Optional metadata associated with the part'),\n});\n\nconst dataPartSchema = z.object({\n kind: z.literal('data').describe('Part type - data for DataParts'),\n data: z.record(z.unknown()).describe('Structured data content'),\n metadata: z.record(z.unknown()).optional().describe('Optional metadata associated with the part'),\n});\n\nconst partSchema = z.union([textPartSchema, filePartSchema, dataPartSchema]);\n\n// Message schema\nconst messageSchema = z.object({\n kind: z.literal('message').describe('Event type'),\n messageId: z.string().describe('Identifier created by the message creator'),\n role: z.enum(['user', 'agent']).describe(\"Message sender's role\"),\n parts: z.array(partSchema).describe('Message content'),\n contextId: z.string().optional().describe('The context the message is associated with'),\n taskId: z.string().optional().describe('Identifier of task the message is related to'),\n referenceTaskIds: z.array(z.string()).optional().describe('List of tasks referenced as context by this message'),\n extensions: z\n .array(z.string())\n .optional()\n .describe('The URIs of extensions that are present or contributed to this Message'),\n metadata: z.record(z.unknown()).optional().describe('Extension metadata'),\n});\n\n// MessageSendParams schema\nconst messageSendParamsSchema = z.object({\n message: messageSchema,\n configuration: messageSendConfigurationSchema.optional(),\n metadata: z.record(z.unknown()).optional().describe('Extension metadata'),\n});\n\n// TaskQueryParams schema\nconst taskQueryParamsSchema = z.object({\n id: z.string().describe('Task id'),\n historyLength: z.number().optional().describe('Number of recent messages to be retrieved'),\n metadata: z.record(z.unknown()).optional(),\n});\n\n// TaskIdParams schema\nconst taskIdParamsSchema = z.object({\n id: z.string().describe('Task id'),\n metadata: z.record(z.unknown()).optional(),\n});\n\n// Legacy schema for backwards compatibility\nexport const messageSendBodySchema = z.object({\n message: messageSchema,\n metadata: z.record(z.any()).optional(),\n});\n\nexport const taskQueryBodySchema = z.object({\n id: z.string(),\n});\n\n// Union of all possible params types\nconst agentExecutionParamsSchema = z.union([messageSendParamsSchema, taskQueryParamsSchema, taskIdParamsSchema]);\n\nexport const agentExecutionBodySchema = z.object({\n jsonrpc: z.literal('2.0'),\n id: z.union([z.string(), z.number()]),\n method: z.enum(['message/send', 'message/stream', 'tasks/get', 'tasks/cancel']),\n params: agentExecutionParamsSchema,\n});\n\n// Response schemas\nexport const agentCardResponseSchema = z.object({\n name: z.string(),\n description: z.string(),\n url: z.string(),\n provider: z\n .object({\n organization: z.string(),\n url: z.string(),\n })\n .optional(),\n version: z.string(),\n capabilities: z.object({\n streaming: z.boolean().optional(),\n pushNotifications: z.boolean().optional(),\n stateTransitionHistory: z.boolean().optional(),\n }),\n defaultInputModes: z.array(z.string()),\n defaultOutputModes: z.array(z.string()),\n skills: z.array(\n z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n tags: z.array(z.string()).optional(),\n }),\n ),\n});\n\nexport const taskResponseSchema = z.unknown(); // Complex task state structure\n\nexport const agentExecutionResponseSchema = z.unknown(); // JSON-RPC response\n"]}