@adcp/sdk 14.0.0-beta.10 → 14.0.0-beta.12

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 (208) hide show
  1. package/bin/adcp-storyboard-sandbox.js +16 -0
  2. package/bin/adcp.js +28 -30
  3. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  4. package/dist/lib/core/SingleAgentClient.d.mts +2 -1
  5. package/dist/lib/core/SingleAgentClient.d.ts +2 -1
  6. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  7. package/dist/lib/core/SingleAgentClient.js +113 -64
  8. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  9. package/dist/lib/core/SingleAgentClient.mjs +113 -64
  10. package/dist/lib/core/SingleAgentClient.mjs.map +1 -1
  11. package/dist/lib/index.d.mts +1 -1
  12. package/dist/lib/index.d.ts +1 -1
  13. package/dist/lib/index.d.ts.map +1 -1
  14. package/dist/lib/index.js.map +1 -1
  15. package/dist/lib/index.mjs.map +1 -1
  16. package/dist/lib/protocols/a2a.d.mts +10 -3
  17. package/dist/lib/protocols/a2a.d.ts +10 -3
  18. package/dist/lib/protocols/a2a.d.ts.map +1 -1
  19. package/dist/lib/protocols/a2a.js +162 -34
  20. package/dist/lib/protocols/a2a.js.map +1 -1
  21. package/dist/lib/protocols/a2a.mjs +166 -34
  22. package/dist/lib/protocols/a2a.mjs.map +1 -1
  23. package/dist/lib/schemas/index.d.mts +385 -1
  24. package/dist/lib/schemas/index.d.ts +385 -1
  25. package/dist/lib/schemas/index.d.ts.map +1 -1
  26. package/dist/lib/schemas/index.js +13 -0
  27. package/dist/lib/schemas/index.js.map +1 -1
  28. package/dist/lib/schemas/index.mjs +11 -0
  29. package/dist/lib/schemas/index.mjs.map +1 -1
  30. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  31. package/dist/lib/server/a2a-adapter.d.mts +59 -33
  32. package/dist/lib/server/a2a-adapter.d.ts +59 -33
  33. package/dist/lib/server/a2a-adapter.d.ts.map +1 -1
  34. package/dist/lib/server/a2a-adapter.js +278 -67
  35. package/dist/lib/server/a2a-adapter.js.map +1 -1
  36. package/dist/lib/server/a2a-adapter.mjs +280 -68
  37. package/dist/lib/server/a2a-adapter.mjs.map +1 -1
  38. package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
  39. package/dist/lib/server/create-adcp-server.js +35 -108
  40. package/dist/lib/server/create-adcp-server.js.map +1 -1
  41. package/dist/lib/server/create-adcp-server.mjs +37 -109
  42. package/dist/lib/server/create-adcp-server.mjs.map +1 -1
  43. package/dist/lib/server/decisioning/index.d.mts +2 -0
  44. package/dist/lib/server/decisioning/index.d.ts +2 -0
  45. package/dist/lib/server/decisioning/index.d.ts.map +1 -1
  46. package/dist/lib/server/decisioning/index.js +5 -2
  47. package/dist/lib/server/decisioning/index.js.map +1 -1
  48. package/dist/lib/server/decisioning/index.mjs +3 -1
  49. package/dist/lib/server/decisioning/index.mjs.map +1 -1
  50. package/dist/lib/server/decisioning/response-summary.d.mts +33 -0
  51. package/dist/lib/server/decisioning/response-summary.d.ts +34 -0
  52. package/dist/lib/server/decisioning/response-summary.d.ts.map +1 -0
  53. package/dist/lib/server/decisioning/response-summary.js +62 -0
  54. package/dist/lib/server/decisioning/response-summary.js.map +1 -0
  55. package/dist/lib/server/decisioning/response-summary.mjs +37 -0
  56. package/dist/lib/server/decisioning/response-summary.mjs.map +1 -0
  57. package/dist/lib/server/decisioning/runtime/from-platform.d.ts.map +1 -1
  58. package/dist/lib/server/decisioning/runtime/from-platform.js +27 -5
  59. package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
  60. package/dist/lib/server/decisioning/runtime/from-platform.mjs +27 -5
  61. package/dist/lib/server/decisioning/runtime/from-platform.mjs.map +1 -1
  62. package/dist/lib/server/decisioning/specialisms/sales.d.mts +7 -1
  63. package/dist/lib/server/decisioning/specialisms/sales.d.ts +7 -1
  64. package/dist/lib/server/decisioning/specialisms/sales.d.ts.map +1 -1
  65. package/dist/lib/server/decisioning/specialisms/sales.js.map +1 -1
  66. package/dist/lib/server/index.d.mts +1 -1
  67. package/dist/lib/server/index.d.ts +1 -1
  68. package/dist/lib/server/index.d.ts.map +1 -1
  69. package/dist/lib/server/index.js.map +1 -1
  70. package/dist/lib/server/index.mjs.map +1 -1
  71. package/dist/lib/server/responses.d.ts.map +1 -1
  72. package/dist/lib/server/responses.js +9 -1
  73. package/dist/lib/server/responses.js.map +1 -1
  74. package/dist/lib/server/responses.mjs +8 -1
  75. package/dist/lib/server/responses.mjs.map +1 -1
  76. package/dist/lib/signing/agent-context.d.mts +1 -0
  77. package/dist/lib/signing/agent-context.d.ts +1 -0
  78. package/dist/lib/signing/agent-context.d.ts.map +1 -1
  79. package/dist/lib/signing/agent-context.js +37 -2
  80. package/dist/lib/signing/agent-context.js.map +1 -1
  81. package/dist/lib/signing/agent-context.mjs +38 -3
  82. package/dist/lib/signing/agent-context.mjs.map +1 -1
  83. package/dist/lib/signing/agent-fetch.d.mts +1 -2
  84. package/dist/lib/signing/agent-fetch.d.ts +1 -2
  85. package/dist/lib/signing/agent-fetch.d.ts.map +1 -1
  86. package/dist/lib/signing/agent-fetch.js +2 -0
  87. package/dist/lib/signing/agent-fetch.js.map +1 -1
  88. package/dist/lib/signing/agent-fetch.mjs +2 -0
  89. package/dist/lib/signing/agent-fetch.mjs.map +1 -1
  90. package/dist/lib/signing/agent-resolver/etld.js.map +1 -1
  91. package/dist/lib/signing/agent-resolver/etld.mjs.map +1 -1
  92. package/dist/lib/testing/client.d.mts +6 -0
  93. package/dist/lib/testing/client.d.ts +6 -0
  94. package/dist/lib/testing/client.d.ts.map +1 -1
  95. package/dist/lib/testing/client.js +76 -4
  96. package/dist/lib/testing/client.js.map +1 -1
  97. package/dist/lib/testing/client.mjs +75 -4
  98. package/dist/lib/testing/client.mjs.map +1 -1
  99. package/dist/lib/testing/compliance/comply.d.ts.map +1 -1
  100. package/dist/lib/testing/compliance/comply.js +6 -0
  101. package/dist/lib/testing/compliance/comply.js.map +1 -1
  102. package/dist/lib/testing/compliance/comply.mjs +7 -1
  103. package/dist/lib/testing/compliance/comply.mjs.map +1 -1
  104. package/dist/lib/testing/storyboard/context.d.ts.map +1 -1
  105. package/dist/lib/testing/storyboard/context.js +9 -4
  106. package/dist/lib/testing/storyboard/context.js.map +1 -1
  107. package/dist/lib/testing/storyboard/context.mjs +9 -4
  108. package/dist/lib/testing/storyboard/context.mjs.map +1 -1
  109. package/dist/lib/testing/storyboard/request-builder.d.ts.map +1 -1
  110. package/dist/lib/testing/storyboard/request-builder.js +28 -4
  111. package/dist/lib/testing/storyboard/request-builder.js.map +1 -1
  112. package/dist/lib/testing/storyboard/request-builder.mjs +28 -4
  113. package/dist/lib/testing/storyboard/request-builder.mjs.map +1 -1
  114. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.d.mts +15 -0
  115. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.d.ts +16 -0
  116. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.d.ts.map +1 -0
  117. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.js +106 -0
  118. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.js.map +1 -0
  119. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.mjs +82 -0
  120. package/dist/lib/testing/storyboard/request-signing/functional-dispatch.mjs.map +1 -0
  121. package/dist/lib/testing/storyboard/request-signing/test-kit.d.mts +15 -0
  122. package/dist/lib/testing/storyboard/request-signing/test-kit.d.ts +15 -0
  123. package/dist/lib/testing/storyboard/request-signing/test-kit.d.ts.map +1 -1
  124. package/dist/lib/testing/storyboard/request-signing/test-kit.js +58 -0
  125. package/dist/lib/testing/storyboard/request-signing/test-kit.js.map +1 -1
  126. package/dist/lib/testing/storyboard/request-signing/test-kit.mjs +58 -0
  127. package/dist/lib/testing/storyboard/request-signing/test-kit.mjs.map +1 -1
  128. package/dist/lib/testing/storyboard/request-signing/vector-loader.d.mts +2 -0
  129. package/dist/lib/testing/storyboard/request-signing/vector-loader.d.ts +2 -0
  130. package/dist/lib/testing/storyboard/request-signing/vector-loader.d.ts.map +1 -1
  131. package/dist/lib/testing/storyboard/request-signing/vector-loader.js +7 -1
  132. package/dist/lib/testing/storyboard/request-signing/vector-loader.js.map +1 -1
  133. package/dist/lib/testing/storyboard/request-signing/vector-loader.mjs +6 -1
  134. package/dist/lib/testing/storyboard/request-signing/vector-loader.mjs.map +1 -1
  135. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  136. package/dist/lib/testing/storyboard/runner.js +31 -7
  137. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  138. package/dist/lib/testing/storyboard/runner.mjs +31 -7
  139. package/dist/lib/testing/storyboard/runner.mjs.map +1 -1
  140. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  141. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  142. package/dist/lib/testing/storyboard/validations.d.ts.map +1 -1
  143. package/dist/lib/testing/storyboard/validations.js +18 -7
  144. package/dist/lib/testing/storyboard/validations.js.map +1 -1
  145. package/dist/lib/testing/storyboard/validations.mjs +18 -7
  146. package/dist/lib/testing/storyboard/validations.mjs.map +1 -1
  147. package/dist/lib/testing/storyboard/webhook-receiver.d.ts.map +1 -1
  148. package/dist/lib/testing/storyboard/webhook-receiver.js +32 -20
  149. package/dist/lib/testing/storyboard/webhook-receiver.js.map +1 -1
  150. package/dist/lib/testing/storyboard/webhook-receiver.mjs +32 -20
  151. package/dist/lib/testing/storyboard/webhook-receiver.mjs.map +1 -1
  152. package/dist/lib/testing/types.d.mts +10 -0
  153. package/dist/lib/testing/types.d.ts +10 -0
  154. package/dist/lib/testing/types.d.ts.map +1 -1
  155. package/dist/lib/testing/types.js.map +1 -1
  156. package/dist/lib/types/comply-test-controller.d.ts +1 -14
  157. package/dist/lib/types/core.generated.d.mts +1 -1
  158. package/dist/lib/types/core.generated.d.ts +1 -1
  159. package/dist/lib/types/core.generated.d.ts.map +1 -1
  160. package/dist/lib/types/core.generated.js.map +1 -1
  161. package/dist/lib/types/get-products.d.ts +1 -14
  162. package/dist/lib/types/schemas.generated.d.ts +519 -571
  163. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  164. package/dist/lib/types/schemas.generated.js +2 -2
  165. package/dist/lib/types/schemas.generated.js.map +1 -1
  166. package/dist/lib/types/schemas.generated.mjs +2 -2
  167. package/dist/lib/types/schemas.generated.mjs.map +1 -1
  168. package/dist/lib/types/tools.generated.d.mts +1 -1
  169. package/dist/lib/types/tools.generated.d.ts +1 -1
  170. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  171. package/dist/lib/types/tools.generated.js.map +1 -1
  172. package/dist/lib/utils/a2a-artifacts.d.ts.map +1 -1
  173. package/dist/lib/utils/a2a-artifacts.js +2 -2
  174. package/dist/lib/utils/a2a-artifacts.js.map +1 -1
  175. package/dist/lib/utils/a2a-artifacts.mjs +2 -2
  176. package/dist/lib/utils/a2a-artifacts.mjs.map +1 -1
  177. package/dist/lib/utils/a2a-discovery.d.mts +3 -3
  178. package/dist/lib/utils/a2a-discovery.d.ts +3 -3
  179. package/dist/lib/utils/a2a-discovery.js +1 -1
  180. package/dist/lib/utils/a2a-discovery.js.map +1 -1
  181. package/dist/lib/utils/a2a-discovery.mjs +1 -1
  182. package/dist/lib/utils/a2a-discovery.mjs.map +1 -1
  183. package/dist/lib/utils/tool-request-schemas.d.mts +31 -31
  184. package/dist/lib/utils/tool-request-schemas.d.ts +31 -31
  185. package/dist/lib/v2/projection/index.d.mts +2 -0
  186. package/dist/lib/v2/projection/index.d.ts +2 -0
  187. package/dist/lib/v2/projection/index.d.ts.map +1 -1
  188. package/dist/lib/v2/projection/index.js +3 -0
  189. package/dist/lib/v2/projection/index.js.map +1 -1
  190. package/dist/lib/v2/projection/index.mjs +2 -0
  191. package/dist/lib/v2/projection/index.mjs.map +1 -1
  192. package/dist/lib/v2/projection/legacy-normalization.d.mts +24 -0
  193. package/dist/lib/v2/projection/legacy-normalization.d.ts +25 -0
  194. package/dist/lib/v2/projection/legacy-normalization.d.ts.map +1 -0
  195. package/dist/lib/v2/projection/legacy-normalization.js +32 -0
  196. package/dist/lib/v2/projection/legacy-normalization.js.map +1 -0
  197. package/dist/lib/v2/projection/legacy-normalization.mjs +8 -0
  198. package/dist/lib/v2/projection/legacy-normalization.mjs.map +1 -0
  199. package/dist/lib/version.d.mts +3 -3
  200. package/dist/lib/version.d.ts +3 -3
  201. package/dist/lib/version.js +3 -3
  202. package/dist/lib/version.js.map +1 -1
  203. package/dist/lib/version.mjs +3 -3
  204. package/dist/lib/version.mjs.map +1 -1
  205. package/docs/guides/BUILD-AN-AGENT.md +42 -6
  206. package/docs/llms.txt +2 -2
  207. package/docs/migration-13-to-14.md +17 -0
  208. package/package.json +44 -41
@@ -4,5 +4,5 @@
4
4
  "source_sha": "4e553ad955f83b49c7d221ab5c3ff78237ad02e3",
5
5
  "source_tarball_sha256": "580656d6466ef9f0d1119985e6726c2efea718dc671e2ad30957fcb2fd54af0f",
6
6
  "upstream_adcp_version": "2.5.3",
7
- "synced_at": "2026-08-25T16:27:20.747Z"
7
+ "synced_at": "2026-08-26T12:02:34.820Z"
8
8
  }
@@ -6,8 +6,8 @@
6
6
  * store, state store, resolveAccount, and governance — everything the
7
7
  * framework pipeline owns is transport-agnostic.
8
8
  *
9
- * **Scope (v0)**: `message/send`, `tasks/get`, `tasks/cancel`, and
10
- * `GET /.well-known/agent-card.json`. Streaming (`message/stream`),
9
+ * **Scope**: A2A 1.0 `SendMessage`, `GetTask`, `CancelTask`, and
10
+ * `GET /.well-known/agent-card.json`. Streaming,
11
11
  * push notifications, and mid-flight `input-required` interrupts are
12
12
  * explicit "not yet" — see `docs/guides/BUILD-AN-AGENT.md`.
13
13
  *
@@ -17,28 +17,25 @@
17
17
  * |-------------------------------------|-------------------|--------------------------------------------------|
18
18
  * | Success arm | `completed` | DataPart with the typed AdCP response |
19
19
  * | Submitted arm (`status:'submitted'`)| `completed` [^1] | DataPart with AdCP response + `metadata.adcp_task_id` |
20
- * | Error arm (`errors:[]`) | `failed` | DataPart with the AdCP Error arm payload |
20
+ * | Error arm (`errors:[]`) | `completed` | DataPart with the AdCP Error arm payload |
21
21
  * | `adcpError()` envelope | `failed` | DataPart with `adcp_error` |
22
22
  *
23
23
  * [^1]: A2A `submitted` is the INITIAL lifecycle state (before
24
24
  * `working`); A2A `completed` marks the transport call as done.
25
25
  * When the AdCP handler returns a Submitted arm the HTTP call itself
26
26
  * has completed — the AdCP-level async work is queued and buyers
27
- * resume it via `adcp_task_id` on `artifact.metadata`. The DataPart's
27
+ * resume it via `task_id` in the typed DataPart response. The DataPart's
28
28
  * `data` still carries `status: 'submitted'` from the AdCP response,
29
29
  * so a buyer reading the artifact payload sees the ad-tech state
30
30
  * directly; the A2A Task.state only mirrors whether the transport
31
31
  * call itself terminated.
32
32
  *
33
33
  * **Message shape.** A client addresses a tool by sending a `Message`
34
- * with a single `DataPart`: `{ kind: 'data', data: { skill, input } }`.
34
+ * with a single structured `DataPart`: `{ skill, input }`.
35
35
  * `skill` must match a registered AdCP tool name (e.g. `get_products`);
36
36
  * `input` becomes the tool arguments before AdCP schema validation
37
- * runs. The older client convention `{ skill, parameters }` (used by
38
- * `src/lib/protocols/a2a.ts`) is also accepted — `data.parameters` is
39
- * treated as an alias for `data.input`; new callers should prefer
40
- * `input` since A2A `DataPart.data` is free-form and `input` matches
41
- * the AdCP tool's typed request shape.
37
+ * runs. The 0.3 compatibility path accepts the older `{ skill, parameters }`
38
+ * convention, but A2A 1.0 callers must use the AdCP profile's `input` field.
42
39
  *
43
40
  * **Two lifecycles, one response.** A2A's `Task.state` tracks the
44
41
  * TRANSPORT call (did the HTTP request complete?). AdCP's `status`
@@ -46,15 +43,15 @@
46
43
  * failed). Don't conflate them: a `completed` A2A task can carry a
47
44
  * `submitted` AdCP response, meaning the call returned successfully
48
45
  * but the ad-tech operation itself is still queued. Buyers resume the
49
- * AdCP work via the `adcp_task_id` on the artifact's `metadata`, not
46
+ * AdCP work via the `task_id` in the structured response, not
50
47
  * by re-polling the A2A Task.
51
48
  *
52
- * @preview v0 surface — field semantics may shift while the ecosystem
53
- * converges on AdCP-over-A2A conventions. Pinning a minor version is
54
- * recommended.
49
+ * The advertised Agent Card requires the normative AdCP profile extension
50
+ * `https://adcontextprotocol.org/extensions/adcp/v3`.
55
51
  */
56
52
  import { type TaskStore } from '@a2a-js/sdk/server';
57
- import type { AgentCard, AgentCapabilities, AgentProvider, AgentSkill, SecurityScheme } from '@a2a-js/sdk';
53
+ import { AgentCard } from '@a2a-js/sdk';
54
+ import type { AgentCapabilities, AgentProvider, AgentSkill, SecurityScheme } from '@a2a-js/sdk';
58
55
  import type { Request, RequestHandler } from 'express';
59
56
  import { type AdcpAuthInfo, type AdcpServer } from './adcp-server.mjs';
60
57
  import type { AdcpLogger } from './create-adcp-server.mjs';
@@ -77,21 +74,19 @@ export interface A2AAgentCardOverrides {
77
74
  provider?: AgentProvider;
78
75
  documentationUrl?: string;
79
76
  iconUrl?: string;
80
- securitySchemes?: {
81
- [k: string]: SecurityScheme;
82
- };
77
+ securitySchemes?: Record<string, SecurityScheme | LegacySecurityScheme>;
83
78
  security?: {
84
79
  [k: string]: string[];
85
80
  }[];
81
+ /** @deprecated The adapter exposes JSON-RPC only; this value must be `JSONRPC` when supplied. */
86
82
  preferredTransport?: string;
87
83
  /**
88
84
  * Override the auto-generated capabilities. The adapter sets
89
- * `streaming: false` and `pushNotifications: false` by default (v0
85
+ * `streaming: false` and `pushNotifications: false` by default (this adapter
90
86
  * ships neither). Set `streaming: true` if you wire a downstream
91
- * extension; the adapter still won't emit `TaskStatusUpdateEvent`s
92
- * on the stream path in v0.
87
+ * extension; the adapter still does not emit streaming updates.
93
88
  */
94
- capabilities?: AgentCapabilities;
89
+ capabilities?: A2AAgentCapabilitiesOverride;
95
90
  /**
96
91
  * Override the auto-generated skills list. When omitted the adapter
97
92
  * derives one `AgentSkill` per registered AdCP tool from the server's
@@ -100,11 +95,45 @@ export interface A2AAgentCardOverrides {
100
95
  * tools such as `comply_test_controller` are still filtered from the public
101
96
  * A2A agent card.
102
97
  */
103
- skills?: AgentSkill[];
98
+ skills?: A2AAgentSkillOverride[];
104
99
  defaultInputModes?: string[];
105
100
  defaultOutputModes?: string[];
101
+ /** @deprecated AdCP 3.2 always advertises A2A 1.0 plus the SDK's 0.3 compatibility interface. */
106
102
  protocolVersion?: string;
107
103
  }
104
+ export interface LegacyHttpSecurityScheme {
105
+ type: 'http';
106
+ scheme: string;
107
+ description?: string;
108
+ bearerFormat?: string;
109
+ }
110
+ export type LegacySecurityScheme = LegacyHttpSecurityScheme | {
111
+ type: 'apiKey';
112
+ description?: string;
113
+ in: 'cookie' | 'header' | 'query';
114
+ name: string;
115
+ } | {
116
+ type: 'oauth2';
117
+ description?: string;
118
+ oauth2MetadataUrl?: string;
119
+ flows: Partial<Record<'authorizationCode' | 'clientCredentials' | 'implicit' | 'password', {
120
+ authorizationUrl?: string;
121
+ tokenUrl?: string;
122
+ refreshUrl?: string;
123
+ scopes: Record<string, string>;
124
+ } | undefined>>;
125
+ } | {
126
+ type: 'openIdConnect';
127
+ description?: string;
128
+ openIdConnectUrl: string;
129
+ } | {
130
+ type: 'mutualTLS';
131
+ description?: string;
132
+ };
133
+ export type A2AAgentSkillOverride = Omit<AgentSkill, 'examples' | 'inputModes' | 'outputModes' | 'securityRequirements'> & Partial<Pick<AgentSkill, 'examples' | 'inputModes' | 'outputModes' | 'securityRequirements'>>;
134
+ export type A2AAgentCapabilitiesOverride = Omit<AgentCapabilities, 'extensions'> & {
135
+ extensions?: AgentCapabilities['extensions'];
136
+ };
108
137
  /**
109
138
  * Options for {@link createA2AAdapter}.
110
139
  *
@@ -119,13 +148,11 @@ export interface A2AAgentCardOverrides {
119
148
  * the request reaches `jsonRpcHandler`. The `authenticate` option
120
149
  * here is a last-line-of-defense guard, not the primary auth surface.
121
150
  *
122
- * **Agent-card `securitySchemes`.** The `agentCard.securitySchemes`
123
- * you provide is served verbatim at `/.well-known/agent-card.json` —
124
- * only put non-secret discovery data there (token endpoint, scopes,
125
- * OIDC issuer URL). Never paste client secrets, private JWKS, or
126
- * internal URLs into the card. The SDK doesn't schema-validate
127
- * `securitySchemes` at boot (v0 check is required-field presence
128
- * only), so a hand-crafted malformed entry will ship as-written.
151
+ * **Agent-card `securitySchemes`.** Legacy 0.3 OpenAPI-style schemes are
152
+ * converted to the A2A 1.0 union and unsupported shapes fail at startup.
153
+ * Only put non-secret discovery data there (token endpoint, scopes, OIDC
154
+ * issuer URL). Never paste client secrets, private JWKS, or internal URLs
155
+ * into the card.
129
156
  *
130
157
  * Omitting `authenticate` makes the adapter anonymous — handlers see
131
158
  * `ctx.authInfo === undefined`, matching `serve({ authenticate: undefined })`.
@@ -142,9 +169,8 @@ export interface A2AAdapterOptions {
142
169
  /** Seller-supplied agent-card identity fields. Required. */
143
170
  agentCard: A2AAgentCardOverrides;
144
171
  /**
145
- * A2A task store. Defaults to the SDK's `InMemoryTaskStore`.
146
- * Persistent deployments should supply a durable implementation
147
- * (e.g. a Postgres-backed `TaskStore`).
172
+ * A2A task store. Tests and development default to the SDK's in-memory
173
+ * store. Production must supply a bounded, durable implementation.
148
174
  */
149
175
  taskStore?: TaskStore;
150
176
  /** Optional logger. Falls back to `console`. */
@@ -6,8 +6,8 @@
6
6
  * store, state store, resolveAccount, and governance — everything the
7
7
  * framework pipeline owns is transport-agnostic.
8
8
  *
9
- * **Scope (v0)**: `message/send`, `tasks/get`, `tasks/cancel`, and
10
- * `GET /.well-known/agent-card.json`. Streaming (`message/stream`),
9
+ * **Scope**: A2A 1.0 `SendMessage`, `GetTask`, `CancelTask`, and
10
+ * `GET /.well-known/agent-card.json`. Streaming,
11
11
  * push notifications, and mid-flight `input-required` interrupts are
12
12
  * explicit "not yet" — see `docs/guides/BUILD-AN-AGENT.md`.
13
13
  *
@@ -17,28 +17,25 @@
17
17
  * |-------------------------------------|-------------------|--------------------------------------------------|
18
18
  * | Success arm | `completed` | DataPart with the typed AdCP response |
19
19
  * | Submitted arm (`status:'submitted'`)| `completed` [^1] | DataPart with AdCP response + `metadata.adcp_task_id` |
20
- * | Error arm (`errors:[]`) | `failed` | DataPart with the AdCP Error arm payload |
20
+ * | Error arm (`errors:[]`) | `completed` | DataPart with the AdCP Error arm payload |
21
21
  * | `adcpError()` envelope | `failed` | DataPart with `adcp_error` |
22
22
  *
23
23
  * [^1]: A2A `submitted` is the INITIAL lifecycle state (before
24
24
  * `working`); A2A `completed` marks the transport call as done.
25
25
  * When the AdCP handler returns a Submitted arm the HTTP call itself
26
26
  * has completed — the AdCP-level async work is queued and buyers
27
- * resume it via `adcp_task_id` on `artifact.metadata`. The DataPart's
27
+ * resume it via `task_id` in the typed DataPart response. The DataPart's
28
28
  * `data` still carries `status: 'submitted'` from the AdCP response,
29
29
  * so a buyer reading the artifact payload sees the ad-tech state
30
30
  * directly; the A2A Task.state only mirrors whether the transport
31
31
  * call itself terminated.
32
32
  *
33
33
  * **Message shape.** A client addresses a tool by sending a `Message`
34
- * with a single `DataPart`: `{ kind: 'data', data: { skill, input } }`.
34
+ * with a single structured `DataPart`: `{ skill, input }`.
35
35
  * `skill` must match a registered AdCP tool name (e.g. `get_products`);
36
36
  * `input` becomes the tool arguments before AdCP schema validation
37
- * runs. The older client convention `{ skill, parameters }` (used by
38
- * `src/lib/protocols/a2a.ts`) is also accepted — `data.parameters` is
39
- * treated as an alias for `data.input`; new callers should prefer
40
- * `input` since A2A `DataPart.data` is free-form and `input` matches
41
- * the AdCP tool's typed request shape.
37
+ * runs. The 0.3 compatibility path accepts the older `{ skill, parameters }`
38
+ * convention, but A2A 1.0 callers must use the AdCP profile's `input` field.
42
39
  *
43
40
  * **Two lifecycles, one response.** A2A's `Task.state` tracks the
44
41
  * TRANSPORT call (did the HTTP request complete?). AdCP's `status`
@@ -46,15 +43,15 @@
46
43
  * failed). Don't conflate them: a `completed` A2A task can carry a
47
44
  * `submitted` AdCP response, meaning the call returned successfully
48
45
  * but the ad-tech operation itself is still queued. Buyers resume the
49
- * AdCP work via the `adcp_task_id` on the artifact's `metadata`, not
46
+ * AdCP work via the `task_id` in the structured response, not
50
47
  * by re-polling the A2A Task.
51
48
  *
52
- * @preview v0 surface — field semantics may shift while the ecosystem
53
- * converges on AdCP-over-A2A conventions. Pinning a minor version is
54
- * recommended.
49
+ * The advertised Agent Card requires the normative AdCP profile extension
50
+ * `https://adcontextprotocol.org/extensions/adcp/v3`.
55
51
  */
56
52
  import { type TaskStore } from '@a2a-js/sdk/server';
57
- import type { AgentCard, AgentCapabilities, AgentProvider, AgentSkill, SecurityScheme } from '@a2a-js/sdk';
53
+ import { AgentCard } from '@a2a-js/sdk';
54
+ import type { AgentCapabilities, AgentProvider, AgentSkill, SecurityScheme } from '@a2a-js/sdk';
58
55
  import type { Request, RequestHandler } from 'express';
59
56
  import { type AdcpAuthInfo, type AdcpServer } from './adcp-server';
60
57
  import type { AdcpLogger } from './create-adcp-server';
@@ -77,21 +74,19 @@ export interface A2AAgentCardOverrides {
77
74
  provider?: AgentProvider;
78
75
  documentationUrl?: string;
79
76
  iconUrl?: string;
80
- securitySchemes?: {
81
- [k: string]: SecurityScheme;
82
- };
77
+ securitySchemes?: Record<string, SecurityScheme | LegacySecurityScheme>;
83
78
  security?: {
84
79
  [k: string]: string[];
85
80
  }[];
81
+ /** @deprecated The adapter exposes JSON-RPC only; this value must be `JSONRPC` when supplied. */
86
82
  preferredTransport?: string;
87
83
  /**
88
84
  * Override the auto-generated capabilities. The adapter sets
89
- * `streaming: false` and `pushNotifications: false` by default (v0
85
+ * `streaming: false` and `pushNotifications: false` by default (this adapter
90
86
  * ships neither). Set `streaming: true` if you wire a downstream
91
- * extension; the adapter still won't emit `TaskStatusUpdateEvent`s
92
- * on the stream path in v0.
87
+ * extension; the adapter still does not emit streaming updates.
93
88
  */
94
- capabilities?: AgentCapabilities;
89
+ capabilities?: A2AAgentCapabilitiesOverride;
95
90
  /**
96
91
  * Override the auto-generated skills list. When omitted the adapter
97
92
  * derives one `AgentSkill` per registered AdCP tool from the server's
@@ -100,11 +95,45 @@ export interface A2AAgentCardOverrides {
100
95
  * tools such as `comply_test_controller` are still filtered from the public
101
96
  * A2A agent card.
102
97
  */
103
- skills?: AgentSkill[];
98
+ skills?: A2AAgentSkillOverride[];
104
99
  defaultInputModes?: string[];
105
100
  defaultOutputModes?: string[];
101
+ /** @deprecated AdCP 3.2 always advertises A2A 1.0 plus the SDK's 0.3 compatibility interface. */
106
102
  protocolVersion?: string;
107
103
  }
104
+ export interface LegacyHttpSecurityScheme {
105
+ type: 'http';
106
+ scheme: string;
107
+ description?: string;
108
+ bearerFormat?: string;
109
+ }
110
+ export type LegacySecurityScheme = LegacyHttpSecurityScheme | {
111
+ type: 'apiKey';
112
+ description?: string;
113
+ in: 'cookie' | 'header' | 'query';
114
+ name: string;
115
+ } | {
116
+ type: 'oauth2';
117
+ description?: string;
118
+ oauth2MetadataUrl?: string;
119
+ flows: Partial<Record<'authorizationCode' | 'clientCredentials' | 'implicit' | 'password', {
120
+ authorizationUrl?: string;
121
+ tokenUrl?: string;
122
+ refreshUrl?: string;
123
+ scopes: Record<string, string>;
124
+ } | undefined>>;
125
+ } | {
126
+ type: 'openIdConnect';
127
+ description?: string;
128
+ openIdConnectUrl: string;
129
+ } | {
130
+ type: 'mutualTLS';
131
+ description?: string;
132
+ };
133
+ export type A2AAgentSkillOverride = Omit<AgentSkill, 'examples' | 'inputModes' | 'outputModes' | 'securityRequirements'> & Partial<Pick<AgentSkill, 'examples' | 'inputModes' | 'outputModes' | 'securityRequirements'>>;
134
+ export type A2AAgentCapabilitiesOverride = Omit<AgentCapabilities, 'extensions'> & {
135
+ extensions?: AgentCapabilities['extensions'];
136
+ };
108
137
  /**
109
138
  * Options for {@link createA2AAdapter}.
110
139
  *
@@ -119,13 +148,11 @@ export interface A2AAgentCardOverrides {
119
148
  * the request reaches `jsonRpcHandler`. The `authenticate` option
120
149
  * here is a last-line-of-defense guard, not the primary auth surface.
121
150
  *
122
- * **Agent-card `securitySchemes`.** The `agentCard.securitySchemes`
123
- * you provide is served verbatim at `/.well-known/agent-card.json` —
124
- * only put non-secret discovery data there (token endpoint, scopes,
125
- * OIDC issuer URL). Never paste client secrets, private JWKS, or
126
- * internal URLs into the card. The SDK doesn't schema-validate
127
- * `securitySchemes` at boot (v0 check is required-field presence
128
- * only), so a hand-crafted malformed entry will ship as-written.
151
+ * **Agent-card `securitySchemes`.** Legacy 0.3 OpenAPI-style schemes are
152
+ * converted to the A2A 1.0 union and unsupported shapes fail at startup.
153
+ * Only put non-secret discovery data there (token endpoint, scopes, OIDC
154
+ * issuer URL). Never paste client secrets, private JWKS, or internal URLs
155
+ * into the card.
129
156
  *
130
157
  * Omitting `authenticate` makes the adapter anonymous — handlers see
131
158
  * `ctx.authInfo === undefined`, matching `serve({ authenticate: undefined })`.
@@ -142,9 +169,8 @@ export interface A2AAdapterOptions {
142
169
  /** Seller-supplied agent-card identity fields. Required. */
143
170
  agentCard: A2AAgentCardOverrides;
144
171
  /**
145
- * A2A task store. Defaults to the SDK's `InMemoryTaskStore`.
146
- * Persistent deployments should supply a durable implementation
147
- * (e.g. a Postgres-backed `TaskStore`).
172
+ * A2A task store. Tests and development default to the SDK's in-memory
173
+ * store. Production must supply a bounded, durable implementation.
148
174
  */
149
175
  taskStore?: TaskStore;
150
176
  /** Optional logger. Falls back to `console`. */
@@ -1 +1 @@
1
- {"version":3,"file":"a2a-adapter.d.ts","sourceRoot":"","sources":["../../../src/lib/server/a2a-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"a2a-adapter.d.ts","sourceRoot":"","sources":["../../../src/lib/server/a2a-adapter.ts"],"names":[],"mappings":"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"}