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

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 (102) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/dist/_types/@mastra_schema-compat/dist/provider-compats/anthropic.d.ts +1 -1
  3. package/dist/{a2a-CnU9zaGR.js → a2a-8C4O2dVJ.js} +41 -5
  4. package/dist/a2a-8C4O2dVJ.js.map +1 -0
  5. package/dist/{a2a-D3ZYeXIx.cjs → a2a-B6YkZ2i9.cjs} +277 -52
  6. package/dist/a2a-B6YkZ2i9.cjs.map +1 -0
  7. package/dist/{a2a-oM7aqLz4.cjs → a2a-MPoM5lzS.cjs} +41 -5
  8. package/dist/a2a-MPoM5lzS.cjs.map +1 -0
  9. package/dist/{a2a-CHi9AJ0n.js → a2a-_D2EA4oa.js} +266 -53
  10. package/dist/a2a-_D2EA4oa.js.map +1 -0
  11. package/dist/{agent-builder-BDYN3r89.cjs → agent-builder-DAiJH1u2.cjs} +2 -2
  12. package/dist/{agent-builder-BDYN3r89.cjs.map → agent-builder-DAiJH1u2.cjs.map} +1 -1
  13. package/dist/{agent-builder-Dqy_qumV.js → agent-builder-gGFywDVq.js} +2 -2
  14. package/dist/{agent-builder-Dqy_qumV.js.map → agent-builder-gGFywDVq.js.map} +1 -1
  15. package/dist/{api-schema-manifest-J5hfk5ZZ.cjs → api-schema-manifest-B3bC-D98.cjs} +2 -2
  16. package/dist/{api-schema-manifest-J5hfk5ZZ.cjs.map → api-schema-manifest-B3bC-D98.cjs.map} +1 -1
  17. package/dist/{api-schema-manifest-R8CsF6RX.js → api-schema-manifest-B4J_QYOr.js} +2 -2
  18. package/dist/{api-schema-manifest-R8CsF6RX.js.map → api-schema-manifest-B4J_QYOr.js.map} +1 -1
  19. package/dist/{dist-IUXZtNBY.js → dist-BKRMiJcn.js} +102 -49
  20. package/dist/dist-BKRMiJcn.js.map +1 -0
  21. package/dist/{dist-DgY0llRv.cjs → dist-C2-SedDQ.cjs} +102 -49
  22. package/dist/dist-C2-SedDQ.cjs.map +1 -0
  23. package/dist/docs/SKILL.md +1 -1
  24. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  25. package/dist/docs/references/docs-agents-a2a.md +39 -0
  26. package/dist/docs/references/reference-server-routes.md +25 -11
  27. package/dist/route-builder-CIk5k35M.js.map +1 -1
  28. package/dist/route-builder-CgLVYL1c.cjs.map +1 -1
  29. package/dist/{routes-BzR8iVj4.cjs → routes-CZwPlO3-.cjs} +3 -2
  30. package/dist/routes-CZwPlO3-.cjs.map +1 -0
  31. package/dist/{routes-C7iRCN_l.js → routes-HUaCyUb7.js} +4 -3
  32. package/dist/{routes-C7iRCN_l.js.map → routes-HUaCyUb7.js.map} +1 -1
  33. package/dist/server/a2a/store.cjs +4 -0
  34. package/dist/server/a2a/store.cjs.map +1 -1
  35. package/dist/server/a2a/store.d.ts +3 -0
  36. package/dist/server/a2a/store.d.ts.map +1 -1
  37. package/dist/server/a2a/store.js +4 -0
  38. package/dist/server/a2a/store.js.map +1 -1
  39. package/dist/server/handlers/a2a.cjs +3 -1
  40. package/dist/server/handlers/a2a.d.ts +152 -10
  41. package/dist/server/handlers/a2a.d.ts.map +1 -1
  42. package/dist/server/handlers/a2a.js +2 -2
  43. package/dist/server/handlers/agent-builder.cjs +3 -3
  44. package/dist/server/handlers/agent-builder.js +3 -3
  45. package/dist/server/handlers/agent-controller.cjs +25 -6
  46. package/dist/server/handlers/agent-controller.cjs.map +1 -1
  47. package/dist/server/handlers/agent-controller.d.ts +4 -3
  48. package/dist/server/handlers/agent-controller.d.ts.map +1 -1
  49. package/dist/server/handlers/agent-controller.js +25 -6
  50. package/dist/server/handlers/agent-controller.js.map +1 -1
  51. package/dist/server/handlers/mcp-client-versions.cjs +1 -1
  52. package/dist/server/handlers/mcp-client-versions.js +1 -1
  53. package/dist/server/handlers/prompt-block-versions.cjs +1 -1
  54. package/dist/server/handlers/prompt-block-versions.js +1 -1
  55. package/dist/server/handlers/scorer-versions.cjs +1 -1
  56. package/dist/server/handlers/scorer-versions.js +1 -1
  57. package/dist/server/handlers/stored-mcp-clients.cjs +1 -1
  58. package/dist/server/handlers/stored-mcp-clients.js +1 -1
  59. package/dist/server/handlers/stored-prompt-blocks.cjs +1 -1
  60. package/dist/server/handlers/stored-prompt-blocks.js +1 -1
  61. package/dist/server/handlers/stored-scorers.cjs +1 -1
  62. package/dist/server/handlers/stored-scorers.js +1 -1
  63. package/dist/server/handlers/stored-skill-favorites.cjs +1 -1
  64. package/dist/server/handlers/stored-skill-favorites.js +1 -1
  65. package/dist/server/handlers/stored-skills.cjs +1 -1
  66. package/dist/server/handlers/stored-skills.js +1 -1
  67. package/dist/server/handlers/system.cjs +1 -1
  68. package/dist/server/handlers/system.js +1 -1
  69. package/dist/server/handlers/workflows.cjs +93 -2
  70. package/dist/server/handlers/workflows.cjs.map +1 -1
  71. package/dist/server/handlers/workflows.d.ts +9 -0
  72. package/dist/server/handlers/workflows.d.ts.map +1 -1
  73. package/dist/server/handlers/workflows.js +92 -3
  74. package/dist/server/handlers/workflows.js.map +1 -1
  75. package/dist/server/handlers.cjs +1 -1
  76. package/dist/server/handlers.js +1 -1
  77. package/dist/server/schemas/a2a.d.ts +70 -6
  78. package/dist/server/schemas/a2a.d.ts.map +1 -1
  79. package/dist/server/schemas/index.cjs +4 -4
  80. package/dist/server/schemas/index.js +4 -4
  81. package/dist/server/schemas/workflows.d.ts +8 -0
  82. package/dist/server/schemas/workflows.d.ts.map +1 -1
  83. package/dist/server/server-adapter/index.cjs +1 -1
  84. package/dist/server/server-adapter/index.js +1 -1
  85. package/dist/server/server-adapter/routes/a2a.d.ts +116 -8
  86. package/dist/server/server-adapter/routes/a2a.d.ts.map +1 -1
  87. package/dist/server/server-adapter/routes/workflows.d.ts +7 -1
  88. package/dist/server/server-adapter/routes/workflows.d.ts.map +1 -1
  89. package/dist/{workflows-DPW6FrY0.js → workflows-CMU5dz_4.js} +7 -2
  90. package/dist/workflows-CMU5dz_4.js.map +1 -0
  91. package/dist/{workflows-XfiENvkF.cjs → workflows-Dzxr6cmf.cjs} +12 -1
  92. package/dist/workflows-Dzxr6cmf.cjs.map +1 -0
  93. package/package.json +7 -7
  94. package/dist/a2a-CHi9AJ0n.js.map +0 -1
  95. package/dist/a2a-CnU9zaGR.js.map +0 -1
  96. package/dist/a2a-D3ZYeXIx.cjs.map +0 -1
  97. package/dist/a2a-oM7aqLz4.cjs.map +0 -1
  98. package/dist/dist-DgY0llRv.cjs.map +0 -1
  99. package/dist/dist-IUXZtNBY.js.map +0 -1
  100. package/dist/routes-BzR8iVj4.cjs.map +0 -1
  101. package/dist/workflows-DPW6FrY0.js.map +0 -1
  102. package/dist/workflows-XfiENvkF.cjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,68 @@
1
1
  # @mastra/server
2
2
 
3
+ ## 1.58.0-alpha.3
4
+
5
+ ### Minor Changes
6
+
7
+ - Added `GET /api/workflows/run-counts` — per-workflow counts of running and suspended (awaiting resume) runs in one request, keyed by the workflow registry key. Counts respect the reserved request-context resource id the runs endpoints already enforce, are filtered per user when FGA is configured, and may be served from a short server-side cache otherwise. ([#18925](https://github.com/mastra-ai/mastra/pull/18925))
8
+
9
+ ```json
10
+ // GET /api/workflows/run-counts
11
+ {
12
+ "cityWorkflow": { "running": 2, "suspended": 1 },
13
+ "reportWorkflow": { "running": 0, "suspended": 0 }
14
+ }
15
+ ```
16
+
17
+ - Added A2A Protocol v1.0 request handling through the standard A2A routes. Send `A2A-Version: 1.0` to use v1 methods, streaming responses, and task listing while existing requests continue to use v0.3. ([#20811](https://github.com/mastra-ai/mastra/pull/20811))
18
+
19
+ ```typescript
20
+ await fetch('/api/a2a/weather-agent', {
21
+ method: 'POST',
22
+ headers: { 'A2A-Version': '1.0' },
23
+ body: JSON.stringify({ jsonrpc: '2.0', id: '1', method: 'tasks/list', params: {} }),
24
+ });
25
+ ```
26
+
27
+ ### Patch Changes
28
+
29
+ - Add a reasoning-effort configuration surface across mastracode and Factory (fixes #20766): ([#20884](https://github.com/mastra-ai/mastra/pull/20884))
30
+
31
+ - New `max` thinking level (mapped to `reasoning effort: max` for OpenAI Codex and Anthropic `effort`).
32
+ - Anthropic extended-thinking wiring: the session thinking level now applies to anthropic/claude-opus-4-7 and other Anthropic models via provider thinking/effort options (previously OpenAI-only).
33
+ - New `models.modeThinkingDefaults` setting: per-mode (build/plan/fast) default thinking levels, resolved at request time with precedence session override → mode default → global `preferences.thinkingLevel`. Configuration changes now apply to the next request of every session, including automated Factory runs.
34
+ - Factory: new Settings → Defaults controls for editing global and per-mode thinking defaults in local deployments.
35
+ - TUI: `/think` now sets a session-only override, supports `/think default` to clear it, and `/think status` reports the effective level with provenance (session override / mode default / global default).
36
+
37
+ Example `settings.json` configuration:
38
+
39
+ ```json
40
+ {
41
+ "preferences": { "thinkingLevel": "medium" },
42
+ "models": {
43
+ "modeThinkingDefaults": {
44
+ "build": "high",
45
+ "plan": "max",
46
+ "fast": "off"
47
+ }
48
+ }
49
+ }
50
+ ```
51
+
52
+ - Updated dependencies [[`cdd5c33`](https://github.com/mastra-ai/mastra/commit/cdd5c33ac6c7118a9f139e6dc0e14e6a8ae31658), [`d7cf7fa`](https://github.com/mastra-ai/mastra/commit/d7cf7fafc1ae1b50bd8462dd0e6c671a8606db93), [`0f9a448`](https://github.com/mastra-ai/mastra/commit/0f9a448502157e59f7b76f24360ad497168f5ef8), [`289f4ce`](https://github.com/mastra-ai/mastra/commit/289f4ce16e3293370440172132c52ee787cbc09f), [`4f16ff8`](https://github.com/mastra-ai/mastra/commit/4f16ff824bf2f9b0ddc93f210477c10c8a4fb1ab), [`1c67d85`](https://github.com/mastra-ai/mastra/commit/1c67d85e9da8285662f4dbbf47e0378c3fee0747), [`ba24be6`](https://github.com/mastra-ai/mastra/commit/ba24be662439c331ab23a600041f93803c89eca8), [`842b5fe`](https://github.com/mastra-ai/mastra/commit/842b5fe22b6a7fa811bd14e48eb9af523ac989f2), [`80bdf3a`](https://github.com/mastra-ai/mastra/commit/80bdf3ae16ade6ff63bde0cb16fa2df8ab7dd4dd), [`9ba1247`](https://github.com/mastra-ai/mastra/commit/9ba12470c77f1c03642d720ce67e517e878f666e), [`fd96298`](https://github.com/mastra-ai/mastra/commit/fd96298a8367622f4ebfcaa97b5b6c1fbbd14564), [`6a84954`](https://github.com/mastra-ai/mastra/commit/6a84954a2667f85b6d59da652dab1bbff007ccb0), [`52d8ef0`](https://github.com/mastra-ai/mastra/commit/52d8ef03801f1deb7ee48532fc4190dd4a33916c), [`cdd5c33`](https://github.com/mastra-ai/mastra/commit/cdd5c33ac6c7118a9f139e6dc0e14e6a8ae31658), [`efd5c81`](https://github.com/mastra-ai/mastra/commit/efd5c81cc25fde3c2ddd86fc1178deb4ec176e19), [`0976933`](https://github.com/mastra-ai/mastra/commit/0976933142333ec78451feef265b68bcb45aa5e7), [`242b945`](https://github.com/mastra-ai/mastra/commit/242b94558777bfbdeb42cbfea84afff0b6ad0633), [`fea5cae`](https://github.com/mastra-ai/mastra/commit/fea5caedc7e2cfea51784a15e015952692027abf), [`4b59f78`](https://github.com/mastra-ai/mastra/commit/4b59f786cbc9a7d1ef07a07517dbd4b96865e99d), [`7010c5d`](https://github.com/mastra-ai/mastra/commit/7010c5d15728bf9c5dfe4fb6b1bf80ce23bf143a)]:
53
+ - @mastra/core@1.58.0-alpha.3
54
+
55
+ ## 1.58.0-alpha.2
56
+
57
+ ### Patch Changes
58
+
59
+ - Fixed agent-controller display-state events losing their tool state over SSE. The display state's Maps (active tools, streaming tool inputs, pending suspensions, active subagents, modified files) serialized to empty objects on the wire; they now arrive as plain records keyed the same way. ([#20805](https://github.com/mastra-ai/mastra/pull/20805))
60
+
61
+ - Catch rejected background Run.resume() and Run.timeTravel() in the workflow /resume and /time-travel routes so they cannot become unhandled rejections and terminate the server process ([#20916](https://github.com/mastra-ai/mastra/pull/20916))
62
+
63
+ - Updated dependencies [[`b4c89b4`](https://github.com/mastra-ai/mastra/commit/b4c89b4371b0c86da57403ad1a3b3ef0681f3128), [`e44e8f3`](https://github.com/mastra-ai/mastra/commit/e44e8f370b66c339ddcaba946d33da6d3c3f06cd), [`c967a5e`](https://github.com/mastra-ai/mastra/commit/c967a5eec150c5dc5418c4a4388982d1fb7ad27c), [`f53d5bd`](https://github.com/mastra-ai/mastra/commit/f53d5bd4885b29e4ac29a428a6044088ea8d6aa3), [`bda2235`](https://github.com/mastra-ai/mastra/commit/bda22353ee28f2df0eaea555f7cae1549f979c0b), [`a7eb4a1`](https://github.com/mastra-ai/mastra/commit/a7eb4a11450f6170274ed5141bffe821d4fdd5a6), [`2f9ef3f`](https://github.com/mastra-ai/mastra/commit/2f9ef3f4ca06fc2dcdd5088c26b7f4da6a016791), [`e7eefcb`](https://github.com/mastra-ai/mastra/commit/e7eefcb162cda7c493e8c3bf43050ead0efbcb2c), [`4d7aca2`](https://github.com/mastra-ai/mastra/commit/4d7aca2fe75f225c83d1502d63079568e6ec163f), [`c4ec889`](https://github.com/mastra-ai/mastra/commit/c4ec889561c0264c43f66d04d587bee4ce35e792), [`9be8878`](https://github.com/mastra-ai/mastra/commit/9be8878dcf0388e84fc4873e0eec27bd49b881a4)]:
64
+ - @mastra/core@1.58.0-alpha.2
65
+
3
66
  ## 1.58.0-alpha.1
4
67
 
5
68
  ### Minor Changes
@@ -13,7 +13,7 @@ export declare class AnthropicSchemaCompatLayer extends SchemaCompatLayer {
13
13
  processToJSONSchema(schema: PublicSchema<any>, io?: 'input' | 'output'): JSONSchema7;
14
14
  shouldApply(): boolean;
15
15
  processZodType(value: ZodType): ZodType;
16
- processToAISDKSchema(zodSchema: ZodTypeV3 | ZodTypeV4): import("../_types/@internal_ai-sdk-v4/dist/index.d.ts").Schema<any>;
16
+ processToAISDKSchema(zodSchema: ZodTypeV3 | ZodTypeV4): import("../_types/@internal_ai-sdk-v4/dist/index.d.ts").Schema<unknown>;
17
17
  processToCompatSchema<T>(schema: PublicSchema<T>): StandardSchemaWithJSON<T>;
18
18
  preProcessJSONNode(schema: JSONSchema7): void;
19
19
  postProcessJSONNode(schema: JSONSchema7): void;
@@ -15,8 +15,10 @@ const pushNotificationConfigSchema = z.object({
15
15
  const messageSendConfigurationSchema = z.object({
16
16
  acceptedOutputModes: z.array(z.string()).optional().describe("Accepted output modalities by the client"),
17
17
  blocking: z.boolean().optional().describe("If the server should treat the client as a blocking request"),
18
+ returnImmediately: z.boolean().optional().describe("If the v1 server should return before task completion"),
18
19
  historyLength: z.number().optional().describe("Number of recent messages to be retrieved"),
19
- pushNotificationConfig: pushNotificationConfigSchema.optional()
20
+ pushNotificationConfig: pushNotificationConfigSchema.optional(),
21
+ taskPushNotificationConfig: pushNotificationConfigSchema.optional()
20
22
  });
21
23
  const textPartSchema = z.object({
22
24
  kind: z.literal("text").describe("Part type - text for TextParts"),
@@ -48,11 +50,30 @@ const partSchema = z.union([
48
50
  filePartSchema,
49
51
  dataPartSchema
50
52
  ]);
53
+ const v1PartSchema = z.object({
54
+ text: z.string().optional(),
55
+ raw: z.string().optional(),
56
+ url: z.string().optional(),
57
+ data: z.unknown().optional(),
58
+ filename: z.string().optional(),
59
+ mediaType: z.string().optional(),
60
+ metadata: z.record(z.string(), z.unknown()).optional()
61
+ }).refine((part) => [
62
+ part.text,
63
+ part.raw,
64
+ part.url,
65
+ part.data
66
+ ].filter((value) => value !== void 0).length === 1, { message: "A v1 part must contain exactly one of text, raw, url, or data" });
51
67
  const messageSchema = z.object({
52
- kind: z.literal("message").describe("Event type"),
68
+ kind: z.literal("message").optional().describe("Event type"),
53
69
  messageId: z.string().describe("Identifier created by the message creator"),
54
- role: z.enum(["user", "agent"]).describe("Message sender's role"),
55
- parts: z.array(partSchema).describe("Message content"),
70
+ role: z.enum([
71
+ "user",
72
+ "agent",
73
+ "ROLE_USER",
74
+ "ROLE_AGENT"
75
+ ]).describe("Message sender's role"),
76
+ parts: z.array(z.union([partSchema, v1PartSchema])).describe("Message content"),
56
77
  contextId: z.string().optional().describe("The context the message is associated with"),
57
78
  taskId: z.string().optional().describe("Identifier of task the message is related to"),
58
79
  referenceTaskIds: z.array(z.string()).optional().describe("List of tasks referenced as context by this message"),
@@ -73,6 +94,16 @@ const taskIdParamsSchema = z.object({
73
94
  id: z.string().describe("Task id"),
74
95
  metadata: z.record(z.string(), z.unknown()).optional()
75
96
  });
97
+ const listTasksParamsSchema = z.object({
98
+ tenant: z.string().optional(),
99
+ contextId: z.string().optional(),
100
+ status: z.union([z.string(), z.number()]).optional(),
101
+ pageSize: z.number().int().min(1).max(100).optional(),
102
+ pageToken: z.string().optional(),
103
+ historyLength: z.number().int().min(0).optional(),
104
+ statusTimestampAfter: z.string().optional(),
105
+ includeArtifacts: z.boolean().optional()
106
+ });
76
107
  const taskResubscribeParamsSchema = taskIdParamsSchema;
77
108
  const setPushNotificationConfigParamsSchema = z.object({
78
109
  taskId: z.string().describe("Task id"),
@@ -106,6 +137,11 @@ const agentExecutionBodySchema = z.discriminatedUnion("method", [
106
137
  method: z.literal("tasks/get"),
107
138
  params: taskQueryParamsSchema
108
139
  }),
140
+ z.object({
141
+ ...requestBaseSchema,
142
+ method: z.literal("tasks/list"),
143
+ params: listTasksParamsSchema
144
+ }),
109
145
  z.object({
110
146
  ...requestBaseSchema,
111
147
  method: z.literal("tasks/cancel"),
@@ -180,4 +216,4 @@ const agentExecutionResponseSchema = z.unknown();
180
216
  //#endregion
181
217
  export { agentExecutionResponseSchema as a, taskResponseSchema as c, agentExecutionBodySchema as i, a2aTaskPathParams as n, messageSendBodySchema as o, agentCardResponseSchema as r, taskQueryBodySchema as s, a2aAgentIdPathParams as t };
182
218
 
183
- //# sourceMappingURL=a2a-CnU9zaGR.js.map
219
+ //# sourceMappingURL=a2a-8C4O2dVJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a-8C4O2dVJ.js","names":[],"sources":["../src/server/schemas/a2a.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\n// Path parameter schemas\nexport const a2aAgentIdPathParams = z.object({\n agentId: z.string().describe('Unique identifier for the agent'),\n});\n\nexport const a2aTaskPathParams = a2aAgentIdPathParams.extend({\n taskId: z.string().describe('Unique identifier for the task'),\n});\n\n// Body schemas for A2A protocol\n\n// Push notification schemas\nconst pushNotificationAuthenticationInfoSchema = z.object({\n schemes: z.array(z.string()).describe('Supported authentication schemes - e.g. Basic, Bearer'),\n credentials: z.string().optional().describe('Optional credentials'),\n});\n\nconst pushNotificationConfigSchema = z.object({\n url: z.string().describe('URL for sending the push notifications'),\n id: z.string().optional().describe('Push Notification ID - created by server to support multiple callbacks'),\n token: z.string().optional().describe('Token unique to this task/session'),\n authentication: pushNotificationAuthenticationInfoSchema.optional(),\n});\n\nconst messageSendConfigurationSchema = z.object({\n acceptedOutputModes: z.array(z.string()).optional().describe('Accepted output modalities by the client'),\n blocking: z.boolean().optional().describe('If the server should treat the client as a blocking request'),\n returnImmediately: z.boolean().optional().describe('If the v1 server should return before task completion'),\n historyLength: z.number().optional().describe('Number of recent messages to be retrieved'),\n pushNotificationConfig: pushNotificationConfigSchema.optional(),\n taskPushNotificationConfig: pushNotificationConfigSchema.optional(),\n});\n\n// Part schemas\nconst textPartSchema = z.object({\n kind: z.literal('text').describe('Part type - text for TextParts'),\n text: z.string().describe('Text content'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Optional metadata associated with the part'),\n});\n\nconst fileWithBytesSchema = z.object({\n bytes: z.string().describe('base64 encoded content of the file'),\n mimeType: z.string().optional().describe('Optional mimeType for the file'),\n name: z.string().optional().describe('Optional name for the file'),\n});\n\nconst fileWithUriSchema = z.object({\n uri: z.string().describe('URL for the File content'),\n mimeType: z.string().optional().describe('Optional mimeType for the file'),\n name: z.string().optional().describe('Optional name for the file'),\n});\n\nconst filePartSchema = z.object({\n kind: z.literal('file').describe('Part type - file for FileParts'),\n file: z.union([fileWithBytesSchema, fileWithUriSchema]).describe('File content either as url or bytes'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Optional metadata associated with the part'),\n});\n\nconst dataPartSchema = z.object({\n kind: z.literal('data').describe('Part type - data for DataParts'),\n data: z.record(z.string(), z.unknown()).describe('Structured data content'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Optional metadata associated with the part'),\n});\n\nconst partSchema = z.union([textPartSchema, filePartSchema, dataPartSchema]);\n\nconst v1PartSchema = z\n .object({\n text: z.string().optional(),\n raw: z.string().optional(),\n url: z.string().optional(),\n data: z.unknown().optional(),\n filename: z.string().optional(),\n mediaType: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n })\n .refine(part => [part.text, part.raw, part.url, part.data].filter(value => value !== undefined).length === 1, {\n message: 'A v1 part must contain exactly one of text, raw, url, or data',\n });\n\n// Message schema\nconst messageSchema = z.object({\n kind: z.literal('message').optional().describe('Event type'),\n messageId: z.string().describe('Identifier created by the message creator'),\n role: z.enum(['user', 'agent', 'ROLE_USER', 'ROLE_AGENT']).describe(\"Message sender's role\"),\n parts: z.array(z.union([partSchema, v1PartSchema])).describe('Message content'),\n contextId: z.string().optional().describe('The context the message is associated with'),\n taskId: z.string().optional().describe('Identifier of task the message is related to'),\n referenceTaskIds: z.array(z.string()).optional().describe('List of tasks referenced as context by this message'),\n extensions: z\n .array(z.string())\n .optional()\n .describe('The URIs of extensions that are present or contributed to this Message'),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Extension metadata'),\n});\n\n// MessageSendParams schema\nconst messageSendParamsSchema = z.object({\n message: messageSchema,\n configuration: messageSendConfigurationSchema.optional(),\n metadata: z.record(z.string(), z.unknown()).optional().describe('Extension metadata'),\n});\n\n// TaskQueryParams schema\nconst taskQueryParamsSchema = z.object({\n id: z.string().describe('Task id'),\n historyLength: z.number().optional().describe('Number of recent messages to be retrieved'),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\n// TaskIdParams schema\nconst taskIdParamsSchema = z.object({\n id: z.string().describe('Task id'),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nconst listTasksParamsSchema = z.object({\n tenant: z.string().optional(),\n contextId: z.string().optional(),\n status: z.union([z.string(), z.number()]).optional(),\n pageSize: z.number().int().min(1).max(100).optional(),\n pageToken: z.string().optional(),\n historyLength: z.number().int().min(0).optional(),\n statusTimestampAfter: z.string().optional(),\n includeArtifacts: z.boolean().optional(),\n});\n\nexport const taskResubscribeParamsSchema = taskIdParamsSchema;\n\nexport const setPushNotificationConfigParamsSchema = z.object({\n taskId: z.string().describe('Task id'),\n pushNotificationConfig: pushNotificationConfigSchema,\n});\n\nconst getPushNotificationConfigParamsSchema = taskIdParamsSchema.extend({\n pushNotificationConfigId: z.string().optional().describe('Push notification config id'),\n});\n\nexport const listPushNotificationConfigParamsSchema = taskIdParamsSchema;\n\nexport const deletePushNotificationConfigParamsSchema = taskIdParamsSchema.extend({\n pushNotificationConfigId: z.string().describe('Push notification config id'),\n});\n\n// Legacy schema for backwards compatibility\nexport const messageSendBodySchema = z.object({\n message: messageSchema,\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const taskQueryBodySchema = z.object({\n id: z.string(),\n});\n\nconst requestBaseSchema = {\n jsonrpc: z.literal('2.0'),\n id: z.union([z.string(), z.number()]),\n} as const;\n\nexport const agentExecutionBodySchema = z.discriminatedUnion('method', [\n z.object({\n ...requestBaseSchema,\n method: z.literal('message/send'),\n params: messageSendParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('message/stream'),\n params: messageSendParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('tasks/get'),\n params: taskQueryParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('tasks/list'),\n params: listTasksParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('tasks/cancel'),\n params: taskIdParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('tasks/resubscribe'),\n params: taskResubscribeParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('tasks/pushNotificationConfig/set'),\n params: setPushNotificationConfigParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('tasks/pushNotificationConfig/get'),\n params: getPushNotificationConfigParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('tasks/pushNotificationConfig/list'),\n params: listPushNotificationConfigParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('tasks/pushNotificationConfig/delete'),\n params: deletePushNotificationConfigParamsSchema,\n }),\n z.object({\n ...requestBaseSchema,\n method: z.literal('agent/getAuthenticatedExtendedCard'),\n }),\n]);\n\n// Response schemas\nexport const agentCardResponseSchema = z.object({\n additionalInterfaces: z.array(z.unknown()).optional(),\n name: z.string(),\n description: z.string(),\n url: z.string(),\n protocolVersion: z.string(),\n provider: z\n .object({\n organization: z.string(),\n url: z.string(),\n })\n .optional(),\n security: z.array(z.record(z.string(), z.array(z.string()))).optional(),\n securitySchemes: z.record(z.string(), z.unknown()).optional(),\n version: z.string(),\n capabilities: z.object({\n extensions: z.array(z.unknown()).optional(),\n streaming: z.boolean().optional(),\n pushNotifications: z.boolean().optional(),\n stateTransitionHistory: z.boolean().optional(),\n }),\n defaultInputModes: z.array(z.string()),\n defaultOutputModes: z.array(z.string()),\n supportsAuthenticatedExtendedCard: z.boolean().optional(),\n signatures: z\n .array(\n z.object({\n protected: z.string(),\n signature: z.string(),\n header: z.record(z.string(), z.unknown()).optional(),\n }),\n )\n .optional(),\n skills: z.array(\n z.object({\n id: z.string(),\n name: z.string(),\n description: z.string(),\n tags: z.array(z.string()).optional(),\n }),\n ),\n});\n\nexport const taskResponseSchema = z.unknown(); // Complex task state structure\n\nexport const agentExecutionResponseSchema = z.unknown(); // JSON-RPC response\n"],"mappings":"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"}
@@ -3,7 +3,7 @@ const require_route_builder = require("./route-builder-CgLVYL1c.cjs");
3
3
  const require_utils = require("./utils-wESuBh27.cjs");
4
4
  const require_server_handlers_agents = require("./server/handlers/agents.cjs");
5
5
  const require_server_a2a_store = require("./server/a2a/store.cjs");
6
- const require_a2a = require("./a2a-oM7aqLz4.cjs");
6
+ const require_a2a = require("./a2a-MPoM5lzS.cjs");
7
7
  const require_server_handlers_auth = require("./server/handlers/auth.cjs");
8
8
  let zod_v4 = require("zod/v4");
9
9
  let util = require("util");
@@ -423,7 +423,9 @@ var a2a_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
423
423
  handleSetTaskPushNotificationConfig: () => handleSetTaskPushNotificationConfig,
424
424
  handleTaskCancel: () => handleTaskCancel,
425
425
  handleTaskGet: () => handleTaskGet,
426
- handleTaskResubscribe: () => handleTaskResubscribe
426
+ handleTaskList: () => handleTaskList,
427
+ handleTaskResubscribe: () => handleTaskResubscribe,
428
+ resolveA2AProtocolVersion: () => resolveA2AProtocolVersion
427
429
  });
428
430
  const messagePartSchema = zod_v4.z.discriminatedUnion("kind", [
429
431
  zod_v4.z.object({
@@ -465,6 +467,7 @@ const messageSendParamsSchema = zod_v4.z.object({
465
467
  configuration: zod_v4.z.object({
466
468
  acceptedOutputModes: zod_v4.z.array(zod_v4.z.string()).optional(),
467
469
  blocking: zod_v4.z.boolean().optional(),
470
+ returnImmediately: zod_v4.z.boolean().optional(),
468
471
  historyLength: zod_v4.z.number().optional(),
469
472
  pushNotificationConfig: zod_v4.z.object({
470
473
  url: zod_v4.z.string(),
@@ -479,6 +482,159 @@ const messageSendParamsSchema = zod_v4.z.object({
479
482
  });
480
483
  const defaultPushNotificationStore = new InMemoryPushNotificationStore();
481
484
  const defaultPushNotificationSender = new DefaultPushNotificationSender(defaultPushNotificationStore);
485
+ const V1_TASK_STATES = {
486
+ submitted: "TASK_STATE_SUBMITTED",
487
+ working: "TASK_STATE_WORKING",
488
+ completed: "TASK_STATE_COMPLETED",
489
+ failed: "TASK_STATE_FAILED",
490
+ canceled: "TASK_STATE_CANCELED",
491
+ "input-required": "TASK_STATE_INPUT_REQUIRED",
492
+ rejected: "TASK_STATE_REJECTED",
493
+ "auth-required": "TASK_STATE_AUTH_REQUIRED"
494
+ };
495
+ function normalizeV1Part(part) {
496
+ if ("text" in part) return {
497
+ kind: "text",
498
+ text: part.text,
499
+ metadata: part.metadata
500
+ };
501
+ if ("raw" in part) return {
502
+ kind: "file",
503
+ file: {
504
+ bytes: part.raw,
505
+ mimeType: part.mediaType,
506
+ name: part.filename
507
+ },
508
+ metadata: part.metadata
509
+ };
510
+ if ("url" in part) return {
511
+ kind: "file",
512
+ file: {
513
+ uri: part.url,
514
+ mimeType: part.mediaType,
515
+ name: part.filename
516
+ },
517
+ metadata: part.metadata
518
+ };
519
+ return {
520
+ kind: "data",
521
+ data: part.data,
522
+ metadata: part.metadata
523
+ };
524
+ }
525
+ function normalizeV1Params(params) {
526
+ if (!params?.message) return params;
527
+ const configuration = params.configuration;
528
+ return {
529
+ ...params,
530
+ message: {
531
+ ...params.message,
532
+ kind: "message",
533
+ role: params.message.role === "ROLE_AGENT" ? "agent" : "user",
534
+ parts: params.message.parts.map((part) => normalizeV1Part(part))
535
+ },
536
+ configuration: configuration ? {
537
+ ...configuration,
538
+ blocking: configuration.returnImmediately === void 0 ? void 0 : !configuration.returnImmediately,
539
+ pushNotificationConfig: configuration.taskPushNotificationConfig
540
+ } : void 0
541
+ };
542
+ }
543
+ function toV1Part(part) {
544
+ if (part.kind === "text") return {
545
+ text: part.text,
546
+ metadata: part.metadata
547
+ };
548
+ if (part.kind === "file") return "uri" in part.file ? {
549
+ url: part.file.uri,
550
+ filename: part.file.name,
551
+ mediaType: part.file.mimeType,
552
+ metadata: part.metadata
553
+ } : {
554
+ raw: part.file.bytes,
555
+ filename: part.file.name,
556
+ mediaType: part.file.mimeType,
557
+ metadata: part.metadata
558
+ };
559
+ return {
560
+ data: part.data,
561
+ metadata: part.metadata
562
+ };
563
+ }
564
+ function toV1Message(message) {
565
+ if (!message) return void 0;
566
+ return {
567
+ messageId: message.messageId,
568
+ contextId: message.contextId,
569
+ taskId: message.taskId,
570
+ role: message.role === "agent" ? "ROLE_AGENT" : "ROLE_USER",
571
+ parts: message.parts?.map(toV1Part),
572
+ metadata: message.metadata,
573
+ extensions: message.extensions,
574
+ referenceTaskIds: message.referenceTaskIds
575
+ };
576
+ }
577
+ function toV1Task(task, { includeArtifacts = true, historyLength } = {}) {
578
+ return {
579
+ id: task.id,
580
+ contextId: task.contextId,
581
+ status: {
582
+ state: V1_TASK_STATES[task.status.state] ?? "TASK_STATE_UNSPECIFIED",
583
+ message: toV1Message(task.status.message),
584
+ timestamp: task.status.timestamp
585
+ },
586
+ artifacts: includeArtifacts ? task.artifacts?.map((artifact) => ({
587
+ artifactId: artifact.artifactId,
588
+ name: artifact.name,
589
+ description: artifact.description,
590
+ parts: artifact.parts?.map(toV1Part),
591
+ metadata: artifact.metadata,
592
+ extensions: artifact.extensions
593
+ })) : void 0,
594
+ history: task.history?.slice(historyLength === void 0 ? 0 : -historyLength).map(toV1Message),
595
+ metadata: task.metadata
596
+ };
597
+ }
598
+ function toV1Result(result, method) {
599
+ if (method === "message/send") return result?.kind === "message" ? { message: toV1Message(result) } : { task: toV1Task(result) };
600
+ if (method === "message/stream" || method === "tasks/resubscribe") {
601
+ if (result?.kind === "status-update") return { statusUpdate: {
602
+ taskId: result.taskId,
603
+ contextId: result.contextId,
604
+ status: {
605
+ state: V1_TASK_STATES[result.status.state] ?? "TASK_STATE_UNSPECIFIED",
606
+ message: toV1Message(result.status.message),
607
+ timestamp: result.status.timestamp
608
+ },
609
+ final: result.final,
610
+ metadata: result.metadata
611
+ } };
612
+ if (result?.kind === "artifact-update") return { artifactUpdate: {
613
+ taskId: result.taskId,
614
+ contextId: result.contextId,
615
+ artifact: {
616
+ ...result.artifact,
617
+ parts: result.artifact.parts?.map(toV1Part)
618
+ },
619
+ append: result.append,
620
+ lastChunk: result.lastChunk,
621
+ metadata: result.metadata
622
+ } };
623
+ return result?.kind === "message" ? { message: toV1Message(result) } : { task: toV1Task(result) };
624
+ }
625
+ if (method === "tasks/get" || method === "tasks/cancel") return toV1Task(result);
626
+ return result;
627
+ }
628
+ function convertV1Response(response, method) {
629
+ if (!response || !("result" in response)) return response;
630
+ return {
631
+ ...response,
632
+ result: toV1Result(response.result, method)
633
+ };
634
+ }
635
+ async function* convertV1Stream(stream, method) {
636
+ for await (const response of stream) yield convertV1Response(response, method);
637
+ }
482
638
  function createAgentCardDefaults({ pushNotifications = false } = {}) {
483
639
  return {
484
640
  protocolVersion: "0.3.0",
@@ -1098,6 +1254,25 @@ async function handleTaskGet({ requestId, taskStore, agentId, taskId }) {
1098
1254
  if (!task) throw _mastra_core_a2a.MastraA2AError.taskNotFound(taskId);
1099
1255
  return createSuccessResponse(requestId, task);
1100
1256
  }
1257
+ function handleTaskList({ requestId, taskStore, agentId, params }) {
1258
+ const requestedPageSize = params.pageSize ?? 50;
1259
+ const offset = params.pageToken ? Number.parseInt(params.pageToken, 10) : 0;
1260
+ const start = Number.isFinite(offset) && offset >= 0 ? offset : 0;
1261
+ const status = typeof params.status === "string" ? params.status.replace(/^TASK_STATE_/, "").toLowerCase().replaceAll("_", "-") : void 0;
1262
+ const timestampAfter = params.statusTimestampAfter ? Date.parse(params.statusTimestampAfter) : void 0;
1263
+ const matchingTasks = taskStore.list({ agentId }).filter((task) => !params.contextId || task.contextId === params.contextId).filter((task) => !status || task.status.state === status).filter((task) => !timestampAfter || task.status.timestamp !== void 0 && Date.parse(task.status.timestamp) >= timestampAfter);
1264
+ const tasks = matchingTasks.slice(start, start + requestedPageSize).map((task) => toV1Task(task, {
1265
+ includeArtifacts: params.includeArtifacts ?? false,
1266
+ historyLength: params.historyLength
1267
+ }));
1268
+ const nextOffset = start + tasks.length;
1269
+ return createSuccessResponse(requestId, {
1270
+ tasks,
1271
+ nextPageToken: nextOffset < matchingTasks.length ? String(nextOffset) : "",
1272
+ pageSize: requestedPageSize,
1273
+ totalSize: matchingTasks.length
1274
+ });
1275
+ }
1101
1276
  async function loadTaskOrThrow({ taskStore, agentId, taskId }) {
1102
1277
  const task = await taskStore.load({
1103
1278
  agentId,
@@ -1615,63 +1790,87 @@ async function handleTaskCancel({ requestId, taskStore, pushNotificationSender,
1615
1790
  }
1616
1791
  throw _mastra_core_a2a.MastraA2AError.invalidRequest(`Task ${taskId} was updated concurrently. Retry the request.`);
1617
1792
  }
1618
- async function getAgentExecutionHandler({ requestId, mastra, agentId, requestContext, method, params, taskStore, pushNotificationStore, pushNotificationSender, logger, abortSignal }) {
1793
+ async function getAgentExecutionHandler({ requestId, mastra, agentId, requestContext, method, params, taskStore, pushNotificationStore, pushNotificationSender, logger, abortSignal, protocolVersion = "0.3" }) {
1619
1794
  const agent = await require_server_handlers_agents.getAgentFromSystem({
1620
1795
  mastra,
1621
1796
  agentId
1622
1797
  });
1798
+ const protocolParams = protocolVersion === "1.0" ? normalizeV1Params(params) : params;
1623
1799
  const { pushNotificationStore: resolvedPushNotificationStore, pushNotificationSender: resolvedPushNotificationSender } = resolvePushNotificationPair({
1624
1800
  pushNotificationStore,
1625
1801
  pushNotificationSender
1626
1802
  });
1627
1803
  let taskId;
1628
1804
  try {
1629
- taskId = getTaskIdFromParams(params);
1805
+ taskId = getTaskIdFromParams(protocolParams);
1630
1806
  switch (method) {
1631
- case "message/send": return await handleMessageSend({
1632
- requestId,
1633
- params,
1634
- taskStore,
1635
- pushNotificationStore: resolvedPushNotificationStore,
1636
- pushNotificationSender: resolvedPushNotificationSender,
1637
- agent,
1638
- agentId,
1639
- logger,
1640
- requestContext
1641
- });
1642
- case "message/stream": return await handleMessageStream({
1643
- requestId,
1644
- taskStore,
1645
- params,
1646
- pushNotificationStore: resolvedPushNotificationStore,
1647
- pushNotificationSender: resolvedPushNotificationSender,
1648
- agent,
1649
- agentId,
1650
- logger,
1651
- requestContext,
1652
- abortSignal
1653
- });
1654
- case "tasks/get": return await handleTaskGet({
1655
- requestId,
1656
- taskStore,
1657
- agentId,
1658
- taskId: taskId || "No task ID provided"
1659
- });
1660
- case "tasks/cancel": return await handleTaskCancel({
1661
- requestId,
1662
- taskStore,
1663
- pushNotificationSender: resolvedPushNotificationSender,
1664
- agentId,
1665
- taskId: taskId || "No task ID provided",
1666
- logger
1667
- });
1668
- case "tasks/resubscribe": return await handleTaskResubscribe({
1669
- requestId,
1670
- taskStore,
1671
- agentId,
1672
- taskId: taskId || "No task ID provided",
1673
- abortSignal
1674
- });
1807
+ case "message/send": {
1808
+ const result = await handleMessageSend({
1809
+ requestId,
1810
+ params: protocolParams,
1811
+ taskStore,
1812
+ pushNotificationStore: resolvedPushNotificationStore,
1813
+ pushNotificationSender: resolvedPushNotificationSender,
1814
+ agent,
1815
+ agentId,
1816
+ logger,
1817
+ requestContext
1818
+ });
1819
+ return protocolVersion === "1.0" ? convertV1Response(result, method) : result;
1820
+ }
1821
+ case "message/stream": {
1822
+ const result = await handleMessageStream({
1823
+ requestId,
1824
+ taskStore,
1825
+ params: protocolParams,
1826
+ pushNotificationStore: resolvedPushNotificationStore,
1827
+ pushNotificationSender: resolvedPushNotificationSender,
1828
+ agent,
1829
+ agentId,
1830
+ logger,
1831
+ requestContext,
1832
+ abortSignal
1833
+ });
1834
+ return protocolVersion === "1.0" ? convertV1Stream(result, method) : result;
1835
+ }
1836
+ case "tasks/get": {
1837
+ const result = await handleTaskGet({
1838
+ requestId,
1839
+ taskStore,
1840
+ agentId,
1841
+ taskId: taskId || "No task ID provided"
1842
+ });
1843
+ return protocolVersion === "1.0" ? convertV1Response(result, method) : result;
1844
+ }
1845
+ case "tasks/list":
1846
+ if (protocolVersion !== "1.0") throw _mastra_core_a2a.MastraA2AError.methodNotFound(method);
1847
+ return handleTaskList({
1848
+ requestId,
1849
+ taskStore,
1850
+ agentId,
1851
+ params: protocolParams ?? {}
1852
+ });
1853
+ case "tasks/cancel": {
1854
+ const result = await handleTaskCancel({
1855
+ requestId,
1856
+ taskStore,
1857
+ pushNotificationSender: resolvedPushNotificationSender,
1858
+ agentId,
1859
+ taskId: taskId || "No task ID provided",
1860
+ logger
1861
+ });
1862
+ return protocolVersion === "1.0" ? convertV1Response(result, method) : result;
1863
+ }
1864
+ case "tasks/resubscribe": {
1865
+ const result = handleTaskResubscribe({
1866
+ requestId,
1867
+ taskStore,
1868
+ agentId,
1869
+ taskId: taskId || "No task ID provided",
1870
+ abortSignal
1871
+ });
1872
+ return protocolVersion === "1.0" ? convertV1Stream(result, method) : result;
1873
+ }
1675
1874
  case "tasks/pushNotificationConfig/set": return await handleSetTaskPushNotificationConfig({
1676
1875
  requestId,
1677
1876
  taskStore,
@@ -1708,6 +1907,12 @@ async function getAgentExecutionHandler({ requestId, mastra, agentId, requestCon
1708
1907
  return normalizeError(error, requestId, taskId, logger);
1709
1908
  }
1710
1909
  }
1910
+ function resolveA2AProtocolVersion(request) {
1911
+ const version = request?.headers.get("A2A-Version")?.trim();
1912
+ if (!version || version === "0.3") return "0.3";
1913
+ if (version === "1.0") return "1.0";
1914
+ throw _mastra_core_a2a.MastraA2AError.versionNotSupported(version);
1915
+ }
1711
1916
  const GET_AGENT_CARD_ROUTE = require_route_builder.createRoute({
1712
1917
  method: "GET",
1713
1918
  path: "/.well-known/:agentId/agent-card.json",
@@ -1744,17 +1949,25 @@ const AGENT_EXECUTION_ROUTE = require_route_builder.createRoute({
1744
1949
  description: "Executes an agent action via JSON-RPC 2.0 over A2A protocol",
1745
1950
  tags: ["Agent-to-Agent"],
1746
1951
  requiresAuth: true,
1747
- handler: async ({ mastra, agentId, requestContext, taskStore, abortSignal, ...bodyParams }) => {
1952
+ handler: async ({ mastra, agentId, requestContext, taskStore, abortSignal, request, ...bodyParams }) => {
1748
1953
  const { id: requestId, method } = bodyParams;
1954
+ const params = "params" in bodyParams ? bodyParams.params : void 0;
1955
+ let protocolVersion;
1956
+ try {
1957
+ protocolVersion = resolveA2AProtocolVersion(request);
1958
+ } catch (error) {
1959
+ return createA2AJsonResponse(normalizeError(error, requestId));
1960
+ }
1749
1961
  const result = await getAgentExecutionHandler({
1750
1962
  requestId,
1751
1963
  mastra,
1752
1964
  agentId,
1753
1965
  requestContext,
1754
1966
  method,
1755
- params: "params" in bodyParams ? bodyParams.params : void 0,
1967
+ params,
1756
1968
  taskStore,
1757
- abortSignal
1969
+ abortSignal,
1970
+ protocolVersion
1758
1971
  });
1759
1972
  if (method === "message/stream" || method === "tasks/resubscribe") return createA2ASSEResponse(result);
1760
1973
  return createA2AJsonResponse(result);
@@ -1839,11 +2052,23 @@ Object.defineProperty(exports, "handleTaskGet", {
1839
2052
  return handleTaskGet;
1840
2053
  }
1841
2054
  });
2055
+ Object.defineProperty(exports, "handleTaskList", {
2056
+ enumerable: true,
2057
+ get: function() {
2058
+ return handleTaskList;
2059
+ }
2060
+ });
1842
2061
  Object.defineProperty(exports, "handleTaskResubscribe", {
1843
2062
  enumerable: true,
1844
2063
  get: function() {
1845
2064
  return handleTaskResubscribe;
1846
2065
  }
1847
2066
  });
2067
+ Object.defineProperty(exports, "resolveA2AProtocolVersion", {
2068
+ enumerable: true,
2069
+ get: function() {
2070
+ return resolveA2AProtocolVersion;
2071
+ }
2072
+ });
1848
2073
 
1849
- //# sourceMappingURL=a2a-D3ZYeXIx.cjs.map
2074
+ //# sourceMappingURL=a2a-B6YkZ2i9.cjs.map