@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
@@ -0,0 +1,25 @@
1
+ import { type PricingOptionV2, type PricingOptionV3 } from '../../utils/pricing-adapter';
2
+ /** Legacy product fields normalized before v2-to-canonical projection. */
3
+ export type LegacyProductNormalizationInput = object & {
4
+ pricing_options?: readonly (PricingOptionV2 | PricingOptionV3)[];
5
+ channels?: readonly string[];
6
+ forecast?: Record<string, unknown>;
7
+ };
8
+ /** Product shape after pricing, channel, and forecast compatibility cleanup. */
9
+ export type NormalizedLegacyProduct<TProduct extends LegacyProductNormalizationInput> = Omit<TProduct, 'pricing_options' | 'channels' | 'forecast'> & {
10
+ pricing_options?: PricingOptionV3[];
11
+ channels?: string[];
12
+ forecast?: Record<string, unknown>;
13
+ };
14
+ /**
15
+ * Apply the SDK's complete v2.5 `get_products` compatibility normalization
16
+ * before projecting a response recovered through a custom `tasks_get` flow.
17
+ */
18
+ export declare function normalizeLegacyGetProductsResponse<TProduct extends LegacyProductNormalizationInput, TResponse extends object & {
19
+ products: readonly TProduct[];
20
+ }>(response: TResponse): Omit<TResponse, 'products'> & {
21
+ products: NormalizedLegacyProduct<TProduct>[];
22
+ };
23
+ /** Preserve pass-through/error responses when the recovered shape is not yet narrowed. */
24
+ export declare function normalizeLegacyGetProductsResponse(response: unknown): unknown;
25
+ //# sourceMappingURL=legacy-normalization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-normalization.d.ts","sourceRoot":"","sources":["../../../../src/lib/v2/projection/legacy-normalization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAEvH,0EAA0E;AAC1E,MAAM,MAAM,+BAA+B,GAAG,MAAM,GAAG;IACrD,eAAe,CAAC,EAAE,SAAS,CAAC,eAAe,GAAG,eAAe,CAAC,EAAE,CAAC;IACjE,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,uBAAuB,CAAC,QAAQ,SAAS,+BAA+B,IAAI,IAAI,CAC1F,QAAQ,EACR,iBAAiB,GAAG,UAAU,GAAG,UAAU,CAC5C,GAAG;IACF,eAAe,CAAC,EAAE,eAAe,EAAE,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kCAAkC,CAChD,QAAQ,SAAS,+BAA+B,EAChD,SAAS,SAAS,MAAM,GAAG;IAAE,QAAQ,EAAE,SAAS,QAAQ,EAAE,CAAA;CAAE,EAC5D,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG;IAAE,QAAQ,EAAE,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAA;CAAE,CAAC;AACxG,0FAA0F;AAC1F,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var legacy_normalization_exports = {};
20
+ __export(legacy_normalization_exports, {
21
+ normalizeLegacyGetProductsResponse: () => normalizeLegacyGetProductsResponse
22
+ });
23
+ module.exports = __toCommonJS(legacy_normalization_exports);
24
+ var import_pricing_adapter = require('../../utils/pricing-adapter.js');
25
+ function normalizeLegacyGetProductsResponse(response) {
26
+ return (0, import_pricing_adapter.normalizeGetProductsResponse)(response);
27
+ }
28
+ // Annotate the CommonJS export names for ESM import in node:
29
+ 0 && (module.exports = {
30
+ normalizeLegacyGetProductsResponse
31
+ });
32
+ //# sourceMappingURL=legacy-normalization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/v2/projection/legacy-normalization.ts"],"sourcesContent":["import { normalizeGetProductsResponse, type PricingOptionV2, type PricingOptionV3 } from '../../utils/pricing-adapter';\n\n/** Legacy product fields normalized before v2-to-canonical projection. */\nexport type LegacyProductNormalizationInput = object & {\n pricing_options?: readonly (PricingOptionV2 | PricingOptionV3)[];\n channels?: readonly string[];\n forecast?: Record<string, unknown>;\n};\n\n/** Product shape after pricing, channel, and forecast compatibility cleanup. */\nexport type NormalizedLegacyProduct<TProduct extends LegacyProductNormalizationInput> = Omit<\n TProduct,\n 'pricing_options' | 'channels' | 'forecast'\n> & {\n pricing_options?: PricingOptionV3[];\n channels?: string[];\n forecast?: Record<string, unknown>;\n};\n\n/**\n * Apply the SDK's complete v2.5 `get_products` compatibility normalization\n * before projecting a response recovered through a custom `tasks_get` flow.\n */\nexport function normalizeLegacyGetProductsResponse<\n TProduct extends LegacyProductNormalizationInput,\n TResponse extends object & { products: readonly TProduct[] },\n>(response: TResponse): Omit<TResponse, 'products'> & { products: NormalizedLegacyProduct<TProduct>[] };\n/** Preserve pass-through/error responses when the recovered shape is not yet narrowed. */\nexport function normalizeLegacyGetProductsResponse(response: unknown): unknown;\nexport function normalizeLegacyGetProductsResponse(response: unknown): unknown {\n return normalizeGetProductsResponse(response);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAAyF;AA6BlF,SAAS,mCAAmC,UAA4B;AAC7E,aAAO,qDAA6B,QAAQ;AAC9C;","names":[]}
@@ -0,0 +1,8 @@
1
+ import { normalizeGetProductsResponse } from "../../utils/pricing-adapter.mjs";
2
+ function normalizeLegacyGetProductsResponse(response) {
3
+ return normalizeGetProductsResponse(response);
4
+ }
5
+ export {
6
+ normalizeLegacyGetProductsResponse
7
+ };
8
+ //# sourceMappingURL=legacy-normalization.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/lib/v2/projection/legacy-normalization.ts"],"sourcesContent":["import { normalizeGetProductsResponse, type PricingOptionV2, type PricingOptionV3 } from '../../utils/pricing-adapter';\n\n/** Legacy product fields normalized before v2-to-canonical projection. */\nexport type LegacyProductNormalizationInput = object & {\n pricing_options?: readonly (PricingOptionV2 | PricingOptionV3)[];\n channels?: readonly string[];\n forecast?: Record<string, unknown>;\n};\n\n/** Product shape after pricing, channel, and forecast compatibility cleanup. */\nexport type NormalizedLegacyProduct<TProduct extends LegacyProductNormalizationInput> = Omit<\n TProduct,\n 'pricing_options' | 'channels' | 'forecast'\n> & {\n pricing_options?: PricingOptionV3[];\n channels?: string[];\n forecast?: Record<string, unknown>;\n};\n\n/**\n * Apply the SDK's complete v2.5 `get_products` compatibility normalization\n * before projecting a response recovered through a custom `tasks_get` flow.\n */\nexport function normalizeLegacyGetProductsResponse<\n TProduct extends LegacyProductNormalizationInput,\n TResponse extends object & { products: readonly TProduct[] },\n>(response: TResponse): Omit<TResponse, 'products'> & { products: NormalizedLegacyProduct<TProduct>[] };\n/** Preserve pass-through/error responses when the recovered shape is not yet narrowed. */\nexport function normalizeLegacyGetProductsResponse(response: unknown): unknown;\nexport function normalizeLegacyGetProductsResponse(response: unknown): unknown {\n return normalizeGetProductsResponse(response);\n}\n"],"mappings":"AAAA,SAAS,oCAAgF;AA6BlF,SAAS,mCAAmC,UAA4B;AAC7E,SAAO,6BAA6B,QAAQ;AAC9C;","names":[]}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * AdCP SDK library version
3
3
  */
4
- export declare const LIBRARY_VERSION = "14.0.0-beta.10";
4
+ export declare const LIBRARY_VERSION = "14.0.0-beta.12";
5
5
  /**
6
6
  * AdCP specification version this library is built for
7
7
  */
@@ -33,10 +33,10 @@ export type AdcpVersion = (typeof COMPATIBLE_ADCP_VERSIONS)[number];
33
33
  * Full version information
34
34
  */
35
35
  export declare const VERSION_INFO: {
36
- readonly library: "14.0.0-beta.10";
36
+ readonly library: "14.0.0-beta.12";
37
37
  readonly adcp: "3.2.0-beta.6";
38
38
  readonly compatibleVersions: readonly ["v2.5", "v2.6", "v3", "3.0.0-beta.1", "3.0-beta.1", "3.0-beta", "3.0.0-beta.3", "3.0-beta.3", "3.0.0", "3.0", "3.0.1", "3.0.2", "3.0.3", "3.0.4", "3.0.5", "3.0.6", "3.0.7", "3.0.8", "3.0.9", "3.0.10", "3.0.11", "3.0.12", "3.0.13", "3.0.14", "3.0.15", "3.0.16", "3.0.17", "3.0.18", "3.0.19", "3.0.20", "3.0.21", "3.0.22", "3.0.23", "3.0.24", "3.0.25", "3.1.0", "3.1", "3.1.1", "3.1.2", "3.1.3", "3.1.4", "3.1.5", "3.1.6", "3.1.7", "3.1.8", "3.1.9", "3.1.10", "3.1.11", "3.1.12", "3.1.13", "3.1.14", "3.1.15", "3.1.16", "3.1.17", "3.1.18", "3.2.0-beta.6", "3.2-beta.6"];
39
- readonly generatedAt: "2026-08-25T15:24:44.079Z";
39
+ readonly generatedAt: "2026-08-26T11:45:46.555Z";
40
40
  };
41
41
  /**
42
42
  * Get the AdCP specification version this library is built for
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * AdCP SDK library version
3
3
  */
4
- export declare const LIBRARY_VERSION = "14.0.0-beta.10";
4
+ export declare const LIBRARY_VERSION = "14.0.0-beta.12";
5
5
  /**
6
6
  * AdCP specification version this library is built for
7
7
  */
@@ -33,10 +33,10 @@ export type AdcpVersion = (typeof COMPATIBLE_ADCP_VERSIONS)[number];
33
33
  * Full version information
34
34
  */
35
35
  export declare const VERSION_INFO: {
36
- readonly library: "14.0.0-beta.10";
36
+ readonly library: "14.0.0-beta.12";
37
37
  readonly adcp: "3.2.0-beta.6";
38
38
  readonly compatibleVersions: readonly ["v2.5", "v2.6", "v3", "3.0.0-beta.1", "3.0-beta.1", "3.0-beta", "3.0.0-beta.3", "3.0-beta.3", "3.0.0", "3.0", "3.0.1", "3.0.2", "3.0.3", "3.0.4", "3.0.5", "3.0.6", "3.0.7", "3.0.8", "3.0.9", "3.0.10", "3.0.11", "3.0.12", "3.0.13", "3.0.14", "3.0.15", "3.0.16", "3.0.17", "3.0.18", "3.0.19", "3.0.20", "3.0.21", "3.0.22", "3.0.23", "3.0.24", "3.0.25", "3.1.0", "3.1", "3.1.1", "3.1.2", "3.1.3", "3.1.4", "3.1.5", "3.1.6", "3.1.7", "3.1.8", "3.1.9", "3.1.10", "3.1.11", "3.1.12", "3.1.13", "3.1.14", "3.1.15", "3.1.16", "3.1.17", "3.1.18", "3.2.0-beta.6", "3.2-beta.6"];
39
- readonly generatedAt: "2026-08-25T15:24:44.079Z";
39
+ readonly generatedAt: "2026-08-26T11:45:46.555Z";
40
40
  };
41
41
  /**
42
42
  * Get the AdCP specification version this library is built for
@@ -31,7 +31,7 @@ __export(version_exports, {
31
31
  toReleasePrecisionVersion: () => toReleasePrecisionVersion
32
32
  });
33
33
  module.exports = __toCommonJS(version_exports);
34
- const LIBRARY_VERSION = "14.0.0-beta.10";
34
+ const LIBRARY_VERSION = "14.0.0-beta.12";
35
35
  const ADCP_VERSION = "3.2.0-beta.6";
36
36
  const ADCP_MAJOR_VERSION = 3;
37
37
  const COMPATIBLE_ADCP_VERSIONS = [
@@ -94,10 +94,10 @@ const COMPATIBLE_ADCP_VERSIONS = [
94
94
  "3.2-beta.6"
95
95
  ];
96
96
  const VERSION_INFO = {
97
- library: "14.0.0-beta.10",
97
+ library: "14.0.0-beta.12",
98
98
  adcp: "3.2.0-beta.6",
99
99
  compatibleVersions: COMPATIBLE_ADCP_VERSIONS,
100
- generatedAt: "2026-08-25T15:24:44.079Z"
100
+ generatedAt: "2026-08-26T11:45:46.555Z"
101
101
  };
102
102
  function getAdcpVersion() {
103
103
  return ADCP_VERSION;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/version.ts"],"sourcesContent":["// Generated version information\n// This file is auto-generated by sync-version.ts\n\n/**\n * AdCP SDK library version\n */\nexport const LIBRARY_VERSION = '14.0.0-beta.10';\n\n/**\n * AdCP specification version this library is built for\n */\nexport const ADCP_VERSION = '3.2.0-beta.6';\n\n/**\n * AdCP major version sent with every request (adcp_major_version field).\n * Sellers validate this against their supported versions and return\n * VERSION_UNSUPPORTED if the version is not in range.\n */\nexport const ADCP_MAJOR_VERSION = 3;\n\n/**\n * AdCP versions this library maintains backward compatibility with.\n *\n * Auto-derived from `ADCP_VERSION` by scripts/sync-version.ts. Do not edit\n * this list by hand; bumping the AdCP pin via `npm run sync-version`\n * extends it.\n */\nexport const COMPATIBLE_ADCP_VERSIONS = [\n 'v2.5',\n 'v2.6',\n 'v3',\n '3.0.0-beta.1',\n '3.0-beta.1',\n '3.0-beta',\n '3.0.0-beta.3',\n '3.0-beta.3',\n '3.0.0',\n '3.0',\n '3.0.1',\n '3.0.2',\n '3.0.3',\n '3.0.4',\n '3.0.5',\n '3.0.6',\n '3.0.7',\n '3.0.8',\n '3.0.9',\n '3.0.10',\n '3.0.11',\n '3.0.12',\n '3.0.13',\n '3.0.14',\n '3.0.15',\n '3.0.16',\n '3.0.17',\n '3.0.18',\n '3.0.19',\n '3.0.20',\n '3.0.21',\n '3.0.22',\n '3.0.23',\n '3.0.24',\n '3.0.25',\n '3.1.0',\n '3.1',\n '3.1.1',\n '3.1.2',\n '3.1.3',\n '3.1.4',\n '3.1.5',\n '3.1.6',\n '3.1.7',\n '3.1.8',\n '3.1.9',\n '3.1.10',\n '3.1.11',\n '3.1.12',\n '3.1.13',\n '3.1.14',\n '3.1.15',\n '3.1.16',\n '3.1.17',\n '3.1.18',\n '3.2.0-beta.6',\n '3.2-beta.6',\n] as const;\n\n/**\n * String literal union of every AdCP version the SDK formally supports.\n *\n * Used by the per-instance `adcpVersion` constructor option to give callers\n * autocomplete in editors. The intersection with `(string & {})` in the\n * config type preserves the escape hatch — any string is still accepted at\n * the type level — while the literal union surfaces canonical values first.\n */\nexport type AdcpVersion = (typeof COMPATIBLE_ADCP_VERSIONS)[number];\n\n/**\n * Full version information\n */\nexport const VERSION_INFO = {\n library: '14.0.0-beta.10',\n adcp: '3.2.0-beta.6',\n compatibleVersions: COMPATIBLE_ADCP_VERSIONS,\n generatedAt: '2026-08-25T15:24:44.079Z',\n} as const;\n\n/**\n * Get the AdCP specification version this library is built for\n */\nexport function getAdcpVersion(): string {\n return ADCP_VERSION;\n}\n\n/**\n * Get the library version\n */\nexport function getLibraryVersion(): string {\n return LIBRARY_VERSION;\n}\n\n/**\n * Check if this library version is compatible with a given AdCP version\n */\nexport function isCompatibleWith(adcpVersion: string): boolean {\n return (COMPATIBLE_ADCP_VERSIONS as readonly string[]).includes(adcpVersion);\n}\n\n/**\n * Get all AdCP versions this library is compatible with\n */\nexport function getCompatibleVersions(): readonly string[] {\n return COMPATIBLE_ADCP_VERSIONS;\n}\n\n/**\n * Extract the major version number from an AdCP version string.\n *\n * Accepts:\n * - Semver: '3.0.0', '3.0.1', '3.1.0-beta.1' → 3\n * - Legacy aliases: 'v3' → 3, 'v2.5' / 'v2.6' → 2\n *\n * Returns NaN for unrecognized strings — callers should validate before passing.\n */\nexport function parseAdcpMajorVersion(version: string): number {\n const trimmed = version.trim();\n const semverLike = trimmed.startsWith('v') ? trimmed.slice(1) : trimmed;\n const major = parseInt(semverLike.split('.')[0] ?? '', 10);\n return Number.isFinite(major) ? major : NaN;\n}\n\n/**\n * Normalize a full-semver AdCP version (`MAJOR.MINOR.PATCH[-prerelease]`) to\n * the release-precision form that AdCP 3.1+ requires on the wire:\n * `MAJOR.MINOR[-prerelease]` — the patch digit is dropped.\n *\n * Per the spec note on `adcp_version`: \"SDKs that read full-semver values\n * from bundle metadata (e.g. `ComplianceIndex.published_version =\n * \"3.1.0-beta.1\"`) MUST normalize to release-precision (`\"3.1-beta.1\"`)\n * before emitting on the wire — meta-field values are NOT valid wire\n * values.\" The wire regex (`^\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?$`) rejects strings\n * with a patch digit.\n *\n * Behavior:\n * - `\"3.1.0-beta.7\"` → `\"3.1-beta.7\"`\n * - `\"3.1.0\"` → `\"3.1\"`\n * - `\"3.0.12\"` → `\"3.0\"`\n * - Already-release-precision input (`\"3.1\"`, `\"3.1-beta.7\"`) passes through\n * - Legacy aliases (`\"v2.5\"`, `\"v3\"`) pass through unchanged — the wire\n * regex doesn't accept them anyway; the v2.5 path uses\n * `adcp_major_version` instead of `adcp_version` for transport.\n * - Unrecognized strings pass through unchanged so callers can detect drift\n * via the wire validator rather than have it masked by this helper.\n */\nexport function toReleasePrecisionVersion(version: string): string {\n const trimmed = version.trim();\n // Pre-release form `MAJOR.MINOR.PATCH-prerelease` → `MAJOR.MINOR-prerelease`\n const semverMatch = trimmed.match(/^(\\d+)\\.(\\d+)\\.\\d+(-[A-Za-z0-9.-]+)?$/);\n if (semverMatch) {\n const [, major, minor, pre = ''] = semverMatch;\n return `${major}.${minor}${pre}`;\n }\n // Already release-precision (no patch digit). Includes `3.1`, `3.1-beta.7`.\n if (/^\\d+\\.\\d+(-[A-Za-z0-9.-]+)?$/.test(trimmed)) return trimmed;\n // Legacy aliases (`v3`, `v2.5`, `v2.6`) and anything we don't recognize —\n // pass through so the wire validator can flag genuine drift.\n return version;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,MAAM,kBAAkB;AAKxB,MAAM,eAAe;AAOrB,MAAM,qBAAqB;AAS3B,MAAM,2BAA2B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAeO,MAAM,eAAe;AAAA,EAC1B,SAAS;AAAA,EACT,MAAM;AAAA,EACN,oBAAoB;AAAA,EACpB,aAAa;AACf;AAKO,SAAS,iBAAyB;AACvC,SAAO;AACT;AAKO,SAAS,oBAA4B;AAC1C,SAAO;AACT;AAKO,SAAS,iBAAiB,aAA8B;AAC7D,SAAQ,yBAA+C,SAAS,WAAW;AAC7E;AAKO,SAAS,wBAA2C;AACzD,SAAO;AACT;AAWO,SAAS,sBAAsB,SAAyB;AAC7D,QAAM,UAAU,QAAQ,KAAK;AAC7B,QAAM,aAAa,QAAQ,WAAW,GAAG,IAAI,QAAQ,MAAM,CAAC,IAAI;AAChE,QAAM,QAAQ,SAAS,WAAW,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE;AACzD,SAAO,OAAO,SAAS,KAAK,IAAI,QAAQ;AAC1C;AAyBO,SAAS,0BAA0B,SAAyB;AACjE,QAAM,UAAU,QAAQ,KAAK;AAE7B,QAAM,cAAc,QAAQ,MAAM,uCAAuC;AACzE,MAAI,aAAa;AACf,UAAM,CAAC,EAAE,OAAO,OAAO,MAAM,EAAE,IAAI;AACnC,WAAO,GAAG,KAAK,IAAI,KAAK,GAAG,GAAG;AAAA,EAChC;AAEA,MAAI,+BAA+B,KAAK,OAAO,EAAG,QAAO;AAGzD,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../src/lib/version.ts"],"sourcesContent":["// Generated version information\n// This file is auto-generated by sync-version.ts\n\n/**\n * AdCP SDK library version\n */\nexport const LIBRARY_VERSION = '14.0.0-beta.12';\n\n/**\n * AdCP specification version this library is built for\n */\nexport const ADCP_VERSION = '3.2.0-beta.6';\n\n/**\n * AdCP major version sent with every request (adcp_major_version field).\n * Sellers validate this against their supported versions and return\n * VERSION_UNSUPPORTED if the version is not in range.\n */\nexport const ADCP_MAJOR_VERSION = 3;\n\n/**\n * AdCP versions this library maintains backward compatibility with.\n *\n * Auto-derived from `ADCP_VERSION` by scripts/sync-version.ts. Do not edit\n * this list by hand; bumping the AdCP pin via `npm run sync-version`\n * extends it.\n */\nexport const COMPATIBLE_ADCP_VERSIONS = [\n 'v2.5',\n 'v2.6',\n 'v3',\n '3.0.0-beta.1',\n '3.0-beta.1',\n '3.0-beta',\n '3.0.0-beta.3',\n '3.0-beta.3',\n '3.0.0',\n '3.0',\n '3.0.1',\n '3.0.2',\n '3.0.3',\n '3.0.4',\n '3.0.5',\n '3.0.6',\n '3.0.7',\n '3.0.8',\n '3.0.9',\n '3.0.10',\n '3.0.11',\n '3.0.12',\n '3.0.13',\n '3.0.14',\n '3.0.15',\n '3.0.16',\n '3.0.17',\n '3.0.18',\n '3.0.19',\n '3.0.20',\n '3.0.21',\n '3.0.22',\n '3.0.23',\n '3.0.24',\n '3.0.25',\n '3.1.0',\n '3.1',\n '3.1.1',\n '3.1.2',\n '3.1.3',\n '3.1.4',\n '3.1.5',\n '3.1.6',\n '3.1.7',\n '3.1.8',\n '3.1.9',\n '3.1.10',\n '3.1.11',\n '3.1.12',\n '3.1.13',\n '3.1.14',\n '3.1.15',\n '3.1.16',\n '3.1.17',\n '3.1.18',\n '3.2.0-beta.6',\n '3.2-beta.6',\n] as const;\n\n/**\n * String literal union of every AdCP version the SDK formally supports.\n *\n * Used by the per-instance `adcpVersion` constructor option to give callers\n * autocomplete in editors. The intersection with `(string & {})` in the\n * config type preserves the escape hatch — any string is still accepted at\n * the type level — while the literal union surfaces canonical values first.\n */\nexport type AdcpVersion = (typeof COMPATIBLE_ADCP_VERSIONS)[number];\n\n/**\n * Full version information\n */\nexport const VERSION_INFO = {\n library: '14.0.0-beta.12',\n adcp: '3.2.0-beta.6',\n compatibleVersions: COMPATIBLE_ADCP_VERSIONS,\n generatedAt: '2026-08-26T11:45:46.555Z',\n} as const;\n\n/**\n * Get the AdCP specification version this library is built for\n */\nexport function getAdcpVersion(): string {\n return ADCP_VERSION;\n}\n\n/**\n * Get the library version\n */\nexport function getLibraryVersion(): string {\n return LIBRARY_VERSION;\n}\n\n/**\n * Check if this library version is compatible with a given AdCP version\n */\nexport function isCompatibleWith(adcpVersion: string): boolean {\n return (COMPATIBLE_ADCP_VERSIONS as readonly string[]).includes(adcpVersion);\n}\n\n/**\n * Get all AdCP versions this library is compatible with\n */\nexport function getCompatibleVersions(): readonly string[] {\n return COMPATIBLE_ADCP_VERSIONS;\n}\n\n/**\n * Extract the major version number from an AdCP version string.\n *\n * Accepts:\n * - Semver: '3.0.0', '3.0.1', '3.1.0-beta.1' → 3\n * - Legacy aliases: 'v3' → 3, 'v2.5' / 'v2.6' → 2\n *\n * Returns NaN for unrecognized strings — callers should validate before passing.\n */\nexport function parseAdcpMajorVersion(version: string): number {\n const trimmed = version.trim();\n const semverLike = trimmed.startsWith('v') ? trimmed.slice(1) : trimmed;\n const major = parseInt(semverLike.split('.')[0] ?? '', 10);\n return Number.isFinite(major) ? major : NaN;\n}\n\n/**\n * Normalize a full-semver AdCP version (`MAJOR.MINOR.PATCH[-prerelease]`) to\n * the release-precision form that AdCP 3.1+ requires on the wire:\n * `MAJOR.MINOR[-prerelease]` — the patch digit is dropped.\n *\n * Per the spec note on `adcp_version`: \"SDKs that read full-semver values\n * from bundle metadata (e.g. `ComplianceIndex.published_version =\n * \"3.1.0-beta.1\"`) MUST normalize to release-precision (`\"3.1-beta.1\"`)\n * before emitting on the wire — meta-field values are NOT valid wire\n * values.\" The wire regex (`^\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?$`) rejects strings\n * with a patch digit.\n *\n * Behavior:\n * - `\"3.1.0-beta.7\"` → `\"3.1-beta.7\"`\n * - `\"3.1.0\"` → `\"3.1\"`\n * - `\"3.0.12\"` → `\"3.0\"`\n * - Already-release-precision input (`\"3.1\"`, `\"3.1-beta.7\"`) passes through\n * - Legacy aliases (`\"v2.5\"`, `\"v3\"`) pass through unchanged — the wire\n * regex doesn't accept them anyway; the v2.5 path uses\n * `adcp_major_version` instead of `adcp_version` for transport.\n * - Unrecognized strings pass through unchanged so callers can detect drift\n * via the wire validator rather than have it masked by this helper.\n */\nexport function toReleasePrecisionVersion(version: string): string {\n const trimmed = version.trim();\n // Pre-release form `MAJOR.MINOR.PATCH-prerelease` → `MAJOR.MINOR-prerelease`\n const semverMatch = trimmed.match(/^(\\d+)\\.(\\d+)\\.\\d+(-[A-Za-z0-9.-]+)?$/);\n if (semverMatch) {\n const [, major, minor, pre = ''] = semverMatch;\n return `${major}.${minor}${pre}`;\n }\n // Already release-precision (no patch digit). Includes `3.1`, `3.1-beta.7`.\n if (/^\\d+\\.\\d+(-[A-Za-z0-9.-]+)?$/.test(trimmed)) return trimmed;\n // Legacy aliases (`v3`, `v2.5`, `v2.6`) and anything we don't recognize —\n // pass through so the wire validator can flag genuine drift.\n return version;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,MAAM,kBAAkB;AAKxB,MAAM,eAAe;AAOrB,MAAM,qBAAqB;AAS3B,MAAM,2BAA2B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAeO,MAAM,eAAe;AAAA,EAC1B,SAAS;AAAA,EACT,MAAM;AAAA,EACN,oBAAoB;AAAA,EACpB,aAAa;AACf;AAKO,SAAS,iBAAyB;AACvC,SAAO;AACT;AAKO,SAAS,oBAA4B;AAC1C,SAAO;AACT;AAKO,SAAS,iBAAiB,aAA8B;AAC7D,SAAQ,yBAA+C,SAAS,WAAW;AAC7E;AAKO,SAAS,wBAA2C;AACzD,SAAO;AACT;AAWO,SAAS,sBAAsB,SAAyB;AAC7D,QAAM,UAAU,QAAQ,KAAK;AAC7B,QAAM,aAAa,QAAQ,WAAW,GAAG,IAAI,QAAQ,MAAM,CAAC,IAAI;AAChE,QAAM,QAAQ,SAAS,WAAW,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE;AACzD,SAAO,OAAO,SAAS,KAAK,IAAI,QAAQ;AAC1C;AAyBO,SAAS,0BAA0B,SAAyB;AACjE,QAAM,UAAU,QAAQ,KAAK;AAE7B,QAAM,cAAc,QAAQ,MAAM,uCAAuC;AACzE,MAAI,aAAa;AACf,UAAM,CAAC,EAAE,OAAO,OAAO,MAAM,EAAE,IAAI;AACnC,WAAO,GAAG,KAAK,IAAI,KAAK,GAAG,GAAG;AAAA,EAChC;AAEA,MAAI,+BAA+B,KAAK,OAAO,EAAG,QAAO;AAGzD,SAAO;AACT;","names":[]}
@@ -1,4 +1,4 @@
1
- const LIBRARY_VERSION = "14.0.0-beta.10";
1
+ const LIBRARY_VERSION = "14.0.0-beta.12";
2
2
  const ADCP_VERSION = "3.2.0-beta.6";
3
3
  const ADCP_MAJOR_VERSION = 3;
4
4
  const COMPATIBLE_ADCP_VERSIONS = [
@@ -61,10 +61,10 @@ const COMPATIBLE_ADCP_VERSIONS = [
61
61
  "3.2-beta.6"
62
62
  ];
63
63
  const VERSION_INFO = {
64
- library: "14.0.0-beta.10",
64
+ library: "14.0.0-beta.12",
65
65
  adcp: "3.2.0-beta.6",
66
66
  compatibleVersions: COMPATIBLE_ADCP_VERSIONS,
67
- generatedAt: "2026-08-25T15:24:44.079Z"
67
+ generatedAt: "2026-08-26T11:45:46.555Z"
68
68
  };
69
69
  function getAdcpVersion() {
70
70
  return ADCP_VERSION;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/version.ts"],"sourcesContent":["// Generated version information\n// This file is auto-generated by sync-version.ts\n\n/**\n * AdCP SDK library version\n */\nexport const LIBRARY_VERSION = '14.0.0-beta.10';\n\n/**\n * AdCP specification version this library is built for\n */\nexport const ADCP_VERSION = '3.2.0-beta.6';\n\n/**\n * AdCP major version sent with every request (adcp_major_version field).\n * Sellers validate this against their supported versions and return\n * VERSION_UNSUPPORTED if the version is not in range.\n */\nexport const ADCP_MAJOR_VERSION = 3;\n\n/**\n * AdCP versions this library maintains backward compatibility with.\n *\n * Auto-derived from `ADCP_VERSION` by scripts/sync-version.ts. Do not edit\n * this list by hand; bumping the AdCP pin via `npm run sync-version`\n * extends it.\n */\nexport const COMPATIBLE_ADCP_VERSIONS = [\n 'v2.5',\n 'v2.6',\n 'v3',\n '3.0.0-beta.1',\n '3.0-beta.1',\n '3.0-beta',\n '3.0.0-beta.3',\n '3.0-beta.3',\n '3.0.0',\n '3.0',\n '3.0.1',\n '3.0.2',\n '3.0.3',\n '3.0.4',\n '3.0.5',\n '3.0.6',\n '3.0.7',\n '3.0.8',\n '3.0.9',\n '3.0.10',\n '3.0.11',\n '3.0.12',\n '3.0.13',\n '3.0.14',\n '3.0.15',\n '3.0.16',\n '3.0.17',\n '3.0.18',\n '3.0.19',\n '3.0.20',\n '3.0.21',\n '3.0.22',\n '3.0.23',\n '3.0.24',\n '3.0.25',\n '3.1.0',\n '3.1',\n '3.1.1',\n '3.1.2',\n '3.1.3',\n '3.1.4',\n '3.1.5',\n '3.1.6',\n '3.1.7',\n '3.1.8',\n '3.1.9',\n '3.1.10',\n '3.1.11',\n '3.1.12',\n '3.1.13',\n '3.1.14',\n '3.1.15',\n '3.1.16',\n '3.1.17',\n '3.1.18',\n '3.2.0-beta.6',\n '3.2-beta.6',\n] as const;\n\n/**\n * String literal union of every AdCP version the SDK formally supports.\n *\n * Used by the per-instance `adcpVersion` constructor option to give callers\n * autocomplete in editors. The intersection with `(string & {})` in the\n * config type preserves the escape hatch — any string is still accepted at\n * the type level — while the literal union surfaces canonical values first.\n */\nexport type AdcpVersion = (typeof COMPATIBLE_ADCP_VERSIONS)[number];\n\n/**\n * Full version information\n */\nexport const VERSION_INFO = {\n library: '14.0.0-beta.10',\n adcp: '3.2.0-beta.6',\n compatibleVersions: COMPATIBLE_ADCP_VERSIONS,\n generatedAt: '2026-08-25T15:24:44.079Z',\n} as const;\n\n/**\n * Get the AdCP specification version this library is built for\n */\nexport function getAdcpVersion(): string {\n return ADCP_VERSION;\n}\n\n/**\n * Get the library version\n */\nexport function getLibraryVersion(): string {\n return LIBRARY_VERSION;\n}\n\n/**\n * Check if this library version is compatible with a given AdCP version\n */\nexport function isCompatibleWith(adcpVersion: string): boolean {\n return (COMPATIBLE_ADCP_VERSIONS as readonly string[]).includes(adcpVersion);\n}\n\n/**\n * Get all AdCP versions this library is compatible with\n */\nexport function getCompatibleVersions(): readonly string[] {\n return COMPATIBLE_ADCP_VERSIONS;\n}\n\n/**\n * Extract the major version number from an AdCP version string.\n *\n * Accepts:\n * - Semver: '3.0.0', '3.0.1', '3.1.0-beta.1' → 3\n * - Legacy aliases: 'v3' → 3, 'v2.5' / 'v2.6' → 2\n *\n * Returns NaN for unrecognized strings — callers should validate before passing.\n */\nexport function parseAdcpMajorVersion(version: string): number {\n const trimmed = version.trim();\n const semverLike = trimmed.startsWith('v') ? trimmed.slice(1) : trimmed;\n const major = parseInt(semverLike.split('.')[0] ?? '', 10);\n return Number.isFinite(major) ? major : NaN;\n}\n\n/**\n * Normalize a full-semver AdCP version (`MAJOR.MINOR.PATCH[-prerelease]`) to\n * the release-precision form that AdCP 3.1+ requires on the wire:\n * `MAJOR.MINOR[-prerelease]` — the patch digit is dropped.\n *\n * Per the spec note on `adcp_version`: \"SDKs that read full-semver values\n * from bundle metadata (e.g. `ComplianceIndex.published_version =\n * \"3.1.0-beta.1\"`) MUST normalize to release-precision (`\"3.1-beta.1\"`)\n * before emitting on the wire — meta-field values are NOT valid wire\n * values.\" The wire regex (`^\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?$`) rejects strings\n * with a patch digit.\n *\n * Behavior:\n * - `\"3.1.0-beta.7\"` → `\"3.1-beta.7\"`\n * - `\"3.1.0\"` → `\"3.1\"`\n * - `\"3.0.12\"` → `\"3.0\"`\n * - Already-release-precision input (`\"3.1\"`, `\"3.1-beta.7\"`) passes through\n * - Legacy aliases (`\"v2.5\"`, `\"v3\"`) pass through unchanged — the wire\n * regex doesn't accept them anyway; the v2.5 path uses\n * `adcp_major_version` instead of `adcp_version` for transport.\n * - Unrecognized strings pass through unchanged so callers can detect drift\n * via the wire validator rather than have it masked by this helper.\n */\nexport function toReleasePrecisionVersion(version: string): string {\n const trimmed = version.trim();\n // Pre-release form `MAJOR.MINOR.PATCH-prerelease` → `MAJOR.MINOR-prerelease`\n const semverMatch = trimmed.match(/^(\\d+)\\.(\\d+)\\.\\d+(-[A-Za-z0-9.-]+)?$/);\n if (semverMatch) {\n const [, major, minor, pre = ''] = semverMatch;\n return `${major}.${minor}${pre}`;\n }\n // Already release-precision (no patch digit). Includes `3.1`, `3.1-beta.7`.\n if (/^\\d+\\.\\d+(-[A-Za-z0-9.-]+)?$/.test(trimmed)) return trimmed;\n // Legacy aliases (`v3`, `v2.5`, `v2.6`) and anything we don't recognize —\n // pass through so the wire validator can flag genuine drift.\n return version;\n}\n"],"mappings":"AAMO,MAAM,kBAAkB;AAKxB,MAAM,eAAe;AAOrB,MAAM,qBAAqB;AAS3B,MAAM,2BAA2B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAeO,MAAM,eAAe;AAAA,EAC1B,SAAS;AAAA,EACT,MAAM;AAAA,EACN,oBAAoB;AAAA,EACpB,aAAa;AACf;AAKO,SAAS,iBAAyB;AACvC,SAAO;AACT;AAKO,SAAS,oBAA4B;AAC1C,SAAO;AACT;AAKO,SAAS,iBAAiB,aAA8B;AAC7D,SAAQ,yBAA+C,SAAS,WAAW;AAC7E;AAKO,SAAS,wBAA2C;AACzD,SAAO;AACT;AAWO,SAAS,sBAAsB,SAAyB;AAC7D,QAAM,UAAU,QAAQ,KAAK;AAC7B,QAAM,aAAa,QAAQ,WAAW,GAAG,IAAI,QAAQ,MAAM,CAAC,IAAI;AAChE,QAAM,QAAQ,SAAS,WAAW,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE;AACzD,SAAO,OAAO,SAAS,KAAK,IAAI,QAAQ;AAC1C;AAyBO,SAAS,0BAA0B,SAAyB;AACjE,QAAM,UAAU,QAAQ,KAAK;AAE7B,QAAM,cAAc,QAAQ,MAAM,uCAAuC;AACzE,MAAI,aAAa;AACf,UAAM,CAAC,EAAE,OAAO,OAAO,MAAM,EAAE,IAAI;AACnC,WAAO,GAAG,KAAK,IAAI,KAAK,GAAG,GAAG;AAAA,EAChC;AAEA,MAAI,+BAA+B,KAAK,OAAO,EAAG,QAAO;AAGzD,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../src/lib/version.ts"],"sourcesContent":["// Generated version information\n// This file is auto-generated by sync-version.ts\n\n/**\n * AdCP SDK library version\n */\nexport const LIBRARY_VERSION = '14.0.0-beta.12';\n\n/**\n * AdCP specification version this library is built for\n */\nexport const ADCP_VERSION = '3.2.0-beta.6';\n\n/**\n * AdCP major version sent with every request (adcp_major_version field).\n * Sellers validate this against their supported versions and return\n * VERSION_UNSUPPORTED if the version is not in range.\n */\nexport const ADCP_MAJOR_VERSION = 3;\n\n/**\n * AdCP versions this library maintains backward compatibility with.\n *\n * Auto-derived from `ADCP_VERSION` by scripts/sync-version.ts. Do not edit\n * this list by hand; bumping the AdCP pin via `npm run sync-version`\n * extends it.\n */\nexport const COMPATIBLE_ADCP_VERSIONS = [\n 'v2.5',\n 'v2.6',\n 'v3',\n '3.0.0-beta.1',\n '3.0-beta.1',\n '3.0-beta',\n '3.0.0-beta.3',\n '3.0-beta.3',\n '3.0.0',\n '3.0',\n '3.0.1',\n '3.0.2',\n '3.0.3',\n '3.0.4',\n '3.0.5',\n '3.0.6',\n '3.0.7',\n '3.0.8',\n '3.0.9',\n '3.0.10',\n '3.0.11',\n '3.0.12',\n '3.0.13',\n '3.0.14',\n '3.0.15',\n '3.0.16',\n '3.0.17',\n '3.0.18',\n '3.0.19',\n '3.0.20',\n '3.0.21',\n '3.0.22',\n '3.0.23',\n '3.0.24',\n '3.0.25',\n '3.1.0',\n '3.1',\n '3.1.1',\n '3.1.2',\n '3.1.3',\n '3.1.4',\n '3.1.5',\n '3.1.6',\n '3.1.7',\n '3.1.8',\n '3.1.9',\n '3.1.10',\n '3.1.11',\n '3.1.12',\n '3.1.13',\n '3.1.14',\n '3.1.15',\n '3.1.16',\n '3.1.17',\n '3.1.18',\n '3.2.0-beta.6',\n '3.2-beta.6',\n] as const;\n\n/**\n * String literal union of every AdCP version the SDK formally supports.\n *\n * Used by the per-instance `adcpVersion` constructor option to give callers\n * autocomplete in editors. The intersection with `(string & {})` in the\n * config type preserves the escape hatch — any string is still accepted at\n * the type level — while the literal union surfaces canonical values first.\n */\nexport type AdcpVersion = (typeof COMPATIBLE_ADCP_VERSIONS)[number];\n\n/**\n * Full version information\n */\nexport const VERSION_INFO = {\n library: '14.0.0-beta.12',\n adcp: '3.2.0-beta.6',\n compatibleVersions: COMPATIBLE_ADCP_VERSIONS,\n generatedAt: '2026-08-26T11:45:46.555Z',\n} as const;\n\n/**\n * Get the AdCP specification version this library is built for\n */\nexport function getAdcpVersion(): string {\n return ADCP_VERSION;\n}\n\n/**\n * Get the library version\n */\nexport function getLibraryVersion(): string {\n return LIBRARY_VERSION;\n}\n\n/**\n * Check if this library version is compatible with a given AdCP version\n */\nexport function isCompatibleWith(adcpVersion: string): boolean {\n return (COMPATIBLE_ADCP_VERSIONS as readonly string[]).includes(adcpVersion);\n}\n\n/**\n * Get all AdCP versions this library is compatible with\n */\nexport function getCompatibleVersions(): readonly string[] {\n return COMPATIBLE_ADCP_VERSIONS;\n}\n\n/**\n * Extract the major version number from an AdCP version string.\n *\n * Accepts:\n * - Semver: '3.0.0', '3.0.1', '3.1.0-beta.1' → 3\n * - Legacy aliases: 'v3' → 3, 'v2.5' / 'v2.6' → 2\n *\n * Returns NaN for unrecognized strings — callers should validate before passing.\n */\nexport function parseAdcpMajorVersion(version: string): number {\n const trimmed = version.trim();\n const semverLike = trimmed.startsWith('v') ? trimmed.slice(1) : trimmed;\n const major = parseInt(semverLike.split('.')[0] ?? '', 10);\n return Number.isFinite(major) ? major : NaN;\n}\n\n/**\n * Normalize a full-semver AdCP version (`MAJOR.MINOR.PATCH[-prerelease]`) to\n * the release-precision form that AdCP 3.1+ requires on the wire:\n * `MAJOR.MINOR[-prerelease]` — the patch digit is dropped.\n *\n * Per the spec note on `adcp_version`: \"SDKs that read full-semver values\n * from bundle metadata (e.g. `ComplianceIndex.published_version =\n * \"3.1.0-beta.1\"`) MUST normalize to release-precision (`\"3.1-beta.1\"`)\n * before emitting on the wire — meta-field values are NOT valid wire\n * values.\" The wire regex (`^\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?$`) rejects strings\n * with a patch digit.\n *\n * Behavior:\n * - `\"3.1.0-beta.7\"` → `\"3.1-beta.7\"`\n * - `\"3.1.0\"` → `\"3.1\"`\n * - `\"3.0.12\"` → `\"3.0\"`\n * - Already-release-precision input (`\"3.1\"`, `\"3.1-beta.7\"`) passes through\n * - Legacy aliases (`\"v2.5\"`, `\"v3\"`) pass through unchanged — the wire\n * regex doesn't accept them anyway; the v2.5 path uses\n * `adcp_major_version` instead of `adcp_version` for transport.\n * - Unrecognized strings pass through unchanged so callers can detect drift\n * via the wire validator rather than have it masked by this helper.\n */\nexport function toReleasePrecisionVersion(version: string): string {\n const trimmed = version.trim();\n // Pre-release form `MAJOR.MINOR.PATCH-prerelease` → `MAJOR.MINOR-prerelease`\n const semverMatch = trimmed.match(/^(\\d+)\\.(\\d+)\\.\\d+(-[A-Za-z0-9.-]+)?$/);\n if (semverMatch) {\n const [, major, minor, pre = ''] = semverMatch;\n return `${major}.${minor}${pre}`;\n }\n // Already release-precision (no patch digit). Includes `3.1`, `3.1-beta.7`.\n if (/^\\d+\\.\\d+(-[A-Za-z0-9.-]+)?$/.test(trimmed)) return trimmed;\n // Legacy aliases (`v3`, `v2.5`, `v2.6`) and anything we don't recognize —\n // pass through so the wire validator can flag genuine drift.\n return version;\n}\n"],"mappings":"AAMO,MAAM,kBAAkB;AAKxB,MAAM,eAAe;AAOrB,MAAM,qBAAqB;AAS3B,MAAM,2BAA2B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAeO,MAAM,eAAe;AAAA,EAC1B,SAAS;AAAA,EACT,MAAM;AAAA,EACN,oBAAoB;AAAA,EACpB,aAAa;AACf;AAKO,SAAS,iBAAyB;AACvC,SAAO;AACT;AAKO,SAAS,oBAA4B;AAC1C,SAAO;AACT;AAKO,SAAS,iBAAiB,aAA8B;AAC7D,SAAQ,yBAA+C,SAAS,WAAW;AAC7E;AAKO,SAAS,wBAA2C;AACzD,SAAO;AACT;AAWO,SAAS,sBAAsB,SAAyB;AAC7D,QAAM,UAAU,QAAQ,KAAK;AAC7B,QAAM,aAAa,QAAQ,WAAW,GAAG,IAAI,QAAQ,MAAM,CAAC,IAAI;AAChE,QAAM,QAAQ,SAAS,WAAW,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE;AACzD,SAAO,OAAO,SAAS,KAAK,IAAI,QAAQ;AAC1C;AAyBO,SAAS,0BAA0B,SAAyB;AACjE,QAAM,UAAU,QAAQ,KAAK;AAE7B,QAAM,cAAc,QAAQ,MAAM,uCAAuC;AACzE,MAAI,aAAa;AACf,UAAM,CAAC,EAAE,OAAO,OAAO,MAAM,EAAE,IAAI;AACnC,WAAO,GAAG,KAAK,IAAI,KAAK,GAAG,GAAG;AAAA,EAChC;AAEA,MAAI,+BAA+B,KAAK,OAAO,EAAG,QAAO;AAGzD,SAAO;AACT;","names":[]}
@@ -176,6 +176,35 @@ serve(() => createAdcpServerFromPlatform(platform, { name: 'My Publisher', versi
176
176
  - **Idempotency, signing, async tasks, status normalization, lifecycle state** are framework-owned. Synchronous terminal responses do not emit completion webhooks by default; the inline result is authoritative. Adopters write the business decisions.
177
177
  - **Catches handler errors** — unhandled exceptions return `SERVICE_UNAVAILABLE` instead of crashing. Throw a typed error class (see § "Returning errors from handlers") to surface a structured envelope.
178
178
 
179
+ ### Customizing human-readable MCP response text
180
+
181
+ Native platform handlers normally return only structured domain payloads, and
182
+ the framework writes a default MCP `content[].text` summary. When a disclosure
183
+ or other adopter-authored explanation must remain visible in text-first MCP
184
+ clients, wrap a synchronous `getProducts` result with
185
+ `withResponseSummary(payload, text)`:
186
+
187
+ ```typescript
188
+ import { withResponseSummary } from '@adcp/sdk/server';
189
+
190
+ getProducts: async (req, ctx) =>
191
+ withResponseSummary(
192
+ {
193
+ products: await catalog.search(req),
194
+ cache_scope: 'public',
195
+ ext: { example_vendor: { demo: true } },
196
+ },
197
+ 'Synthetic sample data for demonstration only.'
198
+ ),
199
+ ```
200
+
201
+ The wrapper is not a protocol envelope. The SDK still projects and validates
202
+ the payload, writes only the supplied text to MCP `content[]`, and never copies
203
+ the summary into `structuredContent`. Use it only for synchronous
204
+ `getProducts` payloads and trusted, static disclosures. Summary text is capped
205
+ at 4096 UTF-8 bytes and may be cached; never include credentials, buyer input,
206
+ upstream/LLM output, or other secrets.
207
+
179
208
  ### Identity, multi-tenant, and lifecycle helpers (6.7)
180
209
 
181
210
  Six helper families adopters reach for. Pick what your agent shape needs:
@@ -242,23 +271,30 @@ non-empty bearer is an authentication bypass, not a safe example simplification.
242
271
 
243
272
  Both transports share the same `AdcpServer` — handlers, idempotency store, state store, and `resolveAccount` all run the same pipeline regardless of which transport received the request. Changes to handlers are picked up by both at once.
244
273
 
245
- **Skill addressing.** A2A clients send a `Message` with a single `DataPart`: `{ kind: 'data', data: { skill: 'get_products', input: { brief: '...' } } }`. `skill` matches an AdCP tool name; `input` is the tool arguments. The legacy key `parameters` (shipped by `src/lib/protocols/a2a.ts` before the adapter landed) is accepted as an alias for `input` so same-SDK clients and servers talk cleanly.
274
+ **Skill addressing.** AdCP 3.2 uses A2A 1.0 and requires clients to activate `https://adcontextprotocol.org/extensions/adcp/v3`. Clients send a `Message` with one structured DataPart whose value is `{ skill: 'get_products', input: { brief: '...' } }`. `skill` matches an AdCP tool name; `input` is the tool arguments. The server's A2A 0.3 compatibility path accepts the older `parameters` alias, but 1.0 clients must use `input`.
246
275
 
247
- **Two lifecycles, one response.** A2A's `Task.state` tracks the *transport call* (did the HTTP request complete?). AdCP's `status` inside the artifact tracks the *work* (submitted / completed / failed). Don't conflate them — a `completed` A2A task can carry a `submitted`, `input-required`, or `auth-required` AdCP response. The v0 adapter has no durable, principal-bound continuation dispatcher, so handler-produced pause arms are completed, nonresumable artifact results. Leaving the A2A task live would let continuation-only input re-enter the ordinary mutation pipeline as a fresh request.
276
+ **Two lifecycles, one response.** A2A's `Task.state` tracks the *transport call* (did the request complete?). AdCP's `status` inside the artifact tracks the *work* (submitted / completed / failed). Don't conflate them — a completed A2A task can carry a `submitted`, `input-required`, or `auth-required` AdCP response. The adapter has no durable, principal-bound continuation dispatcher, so handler-produced pause arms are completed, nonresumable artifact results. Leaving the A2A task live would let continuation-only input re-enter the ordinary mutation pipeline as a fresh request.
248
277
 
249
278
  **Handler return → A2A `Task.state` + artifact:**
250
279
 
251
280
  | Handler returned… | A2A `Task.state` | Artifact payload |
252
281
  |---|---|---|
253
282
  | Success arm | `completed` | DataPart with the typed AdCP response |
254
- | Submitted arm (`status:'submitted'`) | `completed` | DataPart with the AdCP response; `adcp_task_id` on `artifact.metadata` |
283
+ | Submitted arm (`status:'submitted'`) | `completed` | DataPart with the typed AdCP response, including its `task_id` |
255
284
  | Pause arm (`status:'input-required'` / `'auth-required'`) | `completed` | DataPart with the nonresumable AdCP pause response |
256
- | Error arm (`errors: [...]`) | `failed` | DataPart with the Error arm payload |
285
+ | Error arm (`errors: [...]`) | `completed` | DataPart with the Error arm payload |
257
286
  | `adcpError('CODE', ...)` | `failed` | DataPart with `adcp_error` |
258
287
 
259
- **A2A `Task.id` vs AdCP `task_id`.** A2A owns its `Task.id` (SDK-generated per `message/send`). The AdCP-level `task_id` — present when the handler returned a Submitted arm — rides on `artifact.metadata.adcp_task_id`, off the DataPart's payload so the `data` still validates cleanly against the AdCP response schema. Buyers resuming the A2A side poll via `tasks/get` using the A2A `Task.id`; buyers reaching for AdCP-side async state use `adcp_task_id`.
288
+ **A2A `Task.id` vs AdCP `task_id`.** A2A owns its transport `Task.id`. The AdCP-level `task_id` is part of the typed Submitted response and identifies the asynchronous ad-tech work. Use A2A `GetTask` only for the A2A transport task; query AdCP work by sending the profile's `get_task_status` invocation with the AdCP `task_id`.
289
+
290
+ **A2A scope.** The adapter exposes A2A 1.0 `SendMessage`, `GetTask`, `CancelTask`, and `GET /.well-known/agent-card.json`. Streaming, push notifications, and resumable mid-flight `input-required` interrupts are not yet implemented by this adapter.
260
291
 
261
- **v0 scope.** `message/send`, `tasks/get`, `tasks/cancel`, `GET /.well-known/agent-card.json`. Streaming (`message/stream`), push notifications, and `input-required` mid-flight interrupts are explicit "not yet" — tracked for v1. Pin a minor version while the surface stabilises.
292
+ **Production task storage.** Pass `taskStore` when creating the A2A adapter in
293
+ production. The SDK's in-memory A2A store is intentionally limited to
294
+ `NODE_ENV=test` or `NODE_ENV=development`; it is not bounded or durable. The
295
+ adapter redacts secret-shaped fields before every task-store write, including
296
+ credentials carried in request history, but the application-owned store must
297
+ still provide capacity limits, retention, and tenant/owner isolation.
262
298
 
263
299
  ### Reading tool results (client side)
264
300
 
package/docs/llms.txt CHANGED
@@ -1,7 +1,7 @@
1
1
  # Ad Context Protocol (AdCP)
2
2
 
3
- > Generated at: 2026-08-25
4
- > Library: @adcp/sdk v14.0.0-beta.10
3
+ > Generated at: 2026-08-26
4
+ > Library: @adcp/sdk v14.0.0-beta.12
5
5
  > AdCP major version: 3
6
6
  > Canonical URL: https://adcontextprotocol.github.io/adcp-client/llms.txt
7
7
  > Note: the `Library` stamp reflects the package.json version at doc-generation time. The narrative below describes the surface that lands on the next-published minor — including any 6.7 helpers documented here ahead of the release tag.
@@ -15,6 +15,23 @@ convergence, webhook retry horizons, and crash-safe continuation generation
15
15
  replacement. Beta.6 adds coordinated placements, seller-rendered stateful
16
16
  display, creative component assets, and A2A 1.0 request-signing method names.
17
17
 
18
+ ### A2A 1.0 peer upgrade
19
+
20
+ SDK 14's AdCP 3.2 transport requires `@a2a-js/sdk` 1.x. Upgrade the peer
21
+ alongside the AdCP SDK:
22
+
23
+ ```bash
24
+ npm install @adcp/sdk@beta @a2a-js/sdk@^1.0.1
25
+ ```
26
+
27
+ The client and server use the official 1.0 Agent Card and JSON-RPC APIs and
28
+ activate the required `https://adcontextprotocol.org/extensions/adcp/v3`
29
+ profile. Wire interoperability with 0.3 agents remains available through the
30
+ 1.x SDK's compatibility layer; applications should not keep the 0.3 package
31
+ installed. Existing `createA2AAdapter()` card options remain accepted, but
32
+ `preferredTransport` and `protocolVersion` are deprecated because the adapter
33
+ now advertises JSON-RPC 1.0 plus its 0.3 compatibility interface.
34
+
18
35
  ### Beta.5 task webhook registration and polling
19
36
 
20
37
  `push_notification_config` is now an AdCP application-layer field across MCP,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adcp/sdk",
3
- "version": "14.0.0-beta.10",
3
+ "version": "14.0.0-beta.12",
4
4
  "description": "AdCP SDK — client, server, and compliance harnesses for the AdContext Protocol (MCP + A2A)",
5
5
  "workspaces": [
6
6
  ".",
@@ -485,13 +485,13 @@
485
485
  "pretest": "npm run schemas:ensure",
486
486
  "test": "npm run test:node && npm test --workspace=packages/eslint-plugin --if-present && npm test --workspace=@adcp/reference-renderers",
487
487
  "test:node": "npm run test:node:fast && npm run test:node:slow",
488
- "test:node:fast": "NODE_ENV=test node --test-timeout=60000 --test-force-exit --test $(find test -maxdepth 1 -name '*.test.js' ! -name 'canonical-creatives-a2a-e2e.test.js' ! -name 'generate-zod-object-intersections.test.js' -print) $(find test/lib -maxdepth 1 -name '*.test.js' ! -name 'cli-auth-scheme.test.js' ! -name 'cli-soft-fail.test.js' ! -name 'cli-webhook-receiver-flag.test.js' ! -name 'conformance-cli.test.js' ! -name 'conformance-seeder.test.js' ! -name 'media-buy-lifecycle-release-gate.test.js' ! -name 'storyboard-notices.test.js' -print)",
489
- "test:node:fast:shard": "test -n \"$TEST_SHARD\" && NODE_ENV=test node --test-timeout=60000 --test-force-exit --test-shard=$TEST_SHARD --test $(find test -maxdepth 1 -name '*.test.js' ! -name 'canonical-creatives-a2a-e2e.test.js' ! -name 'generate-zod-object-intersections.test.js' -print) $(find test/lib -maxdepth 1 -name '*.test.js' ! -name 'cli-auth-scheme.test.js' ! -name 'cli-soft-fail.test.js' ! -name 'cli-webhook-receiver-flag.test.js' ! -name 'conformance-cli.test.js' ! -name 'conformance-seeder.test.js' ! -name 'media-buy-lifecycle-release-gate.test.js' ! -name 'storyboard-notices.test.js' -print)",
490
- "test:node:slow": "NODE_ENV=test node --test-timeout=180000 --test-force-exit --test test/canonical-creatives-a2a-e2e.test.js test/generate-zod-object-intersections.test.js test/lib/cli-auth-scheme.test.js test/lib/cli-soft-fail.test.js test/lib/cli-webhook-receiver-flag.test.js test/lib/conformance-cli.test.js test/lib/conformance-seeder.test.js test/lib/media-buy-lifecycle-release-gate.test.js test/lib/storyboard-notices.test.js",
488
+ "test:node:fast": "NODE_ENV=test node --test-timeout=60000 --test-force-exit --test $(find test -maxdepth 1 -name '*.test.js' ! -name 'canonical-creatives-a2a-e2e.test.js' ! -name 'generate-zod-object-intersections.test.js' -print) $(find test/lib -maxdepth 1 -name '*.test.js' ! -name 'cli-auth-scheme.test.js' ! -name 'cli-soft-fail.test.js' ! -name 'cli-webhook-receiver-flag.test.js' ! -name 'conformance-cli.test.js' ! -name 'conformance-seeder.test.js' ! -name 'media-buy-lifecycle-release-gate.test.js' ! -name 'storyboard-notices.test.js' ! -name 'storyboard-requires-gate.test.js' -print)",
489
+ "test:node:fast:shard": "test -n \"$TEST_SHARD\" && NODE_ENV=test node --test-timeout=60000 --test-force-exit --test-shard=$TEST_SHARD --test $(find test -maxdepth 1 -name '*.test.js' ! -name 'canonical-creatives-a2a-e2e.test.js' ! -name 'generate-zod-object-intersections.test.js' -print) $(find test/lib -maxdepth 1 -name '*.test.js' ! -name 'cli-auth-scheme.test.js' ! -name 'cli-soft-fail.test.js' ! -name 'cli-webhook-receiver-flag.test.js' ! -name 'conformance-cli.test.js' ! -name 'conformance-seeder.test.js' ! -name 'media-buy-lifecycle-release-gate.test.js' ! -name 'storyboard-notices.test.js' ! -name 'storyboard-requires-gate.test.js' -print)",
490
+ "test:node:slow": "NODE_ENV=test node --test-timeout=180000 --test-force-exit --test test/canonical-creatives-a2a-e2e.test.js test/generate-zod-object-intersections.test.js test/lib/cli-auth-scheme.test.js test/lib/cli-soft-fail.test.js test/lib/cli-webhook-receiver-flag.test.js test/lib/conformance-cli.test.js test/lib/conformance-seeder.test.js test/lib/media-buy-lifecycle-release-gate.test.js test/lib/storyboard-notices.test.js test/lib/storyboard-requires-gate.test.js",
491
491
  "pretest:lib": "npm run schemas:ensure",
492
492
  "test:lib": "npm run test:lib:fast && npm run test:lib:slow",
493
- "test:lib:fast": "NODE_ENV=test node --test-timeout=60000 --test-force-exit --test $(find test/lib -maxdepth 1 -name '*.test.js' ! -name 'cli-auth-scheme.test.js' ! -name 'cli-soft-fail.test.js' ! -name 'cli-webhook-receiver-flag.test.js' ! -name 'conformance-cli.test.js' ! -name 'conformance-seeder.test.js' ! -name 'media-buy-lifecycle-release-gate.test.js' ! -name 'storyboard-notices.test.js' -print)",
494
- "test:lib:slow": "NODE_ENV=test node --test-timeout=180000 --test-force-exit --test test/lib/cli-auth-scheme.test.js test/lib/cli-soft-fail.test.js test/lib/cli-webhook-receiver-flag.test.js test/lib/conformance-cli.test.js test/lib/conformance-seeder.test.js test/lib/media-buy-lifecycle-release-gate.test.js test/lib/storyboard-notices.test.js",
493
+ "test:lib:fast": "NODE_ENV=test node --test-timeout=60000 --test-force-exit --test $(find test/lib -maxdepth 1 -name '*.test.js' ! -name 'cli-auth-scheme.test.js' ! -name 'cli-soft-fail.test.js' ! -name 'cli-webhook-receiver-flag.test.js' ! -name 'conformance-cli.test.js' ! -name 'conformance-seeder.test.js' ! -name 'media-buy-lifecycle-release-gate.test.js' ! -name 'storyboard-notices.test.js' ! -name 'storyboard-requires-gate.test.js' -print)",
494
+ "test:lib:slow": "NODE_ENV=test node --test-timeout=180000 --test-force-exit --test test/lib/cli-auth-scheme.test.js test/lib/cli-soft-fail.test.js test/lib/cli-webhook-receiver-flag.test.js test/lib/conformance-cli.test.js test/lib/conformance-seeder.test.js test/lib/media-buy-lifecycle-release-gate.test.js test/lib/storyboard-notices.test.js test/lib/storyboard-requires-gate.test.js",
495
495
  "pretest:examples": "npm run build",
496
496
  "test:examples": "NODE_ENV=test node --test-timeout=180000 --test-force-exit --test-concurrency=1 --test test/examples/*.test.js",
497
497
  "test:e2e": "node --test test/e2e/registry-live.test.js",
@@ -593,24 +593,24 @@
593
593
  "@modelcontextprotocol/node": "2.0.0",
594
594
  "@modelcontextprotocol/server": "2.0.0",
595
595
  "@types/ws": "^8.18.1",
596
- "ajv": "^8.18.0",
596
+ "ajv": "^8.20.0",
597
597
  "ajv-formats": "^3.0.1",
598
- "fast-check": "^3.23.2",
599
- "jose": "^6.2.2",
598
+ "fast-check": "^4.9.0",
599
+ "jose": "^6.2.10",
600
600
  "secure-json-parse": "^4.1.0",
601
601
  "semver": "^7.8.5",
602
- "structured-headers": "2.0.2",
603
- "tldts": "^7.0.29",
604
- "undici": "^6.27.0",
605
- "ws": "^8.21.0",
606
- "yaml": "^2.7.1"
602
+ "structured-headers": "2.0.3",
603
+ "tldts": "^7.0.0",
604
+ "undici": "^6.28.0",
605
+ "ws": "^8.21.3",
606
+ "yaml": "^2.9.0"
607
607
  },
608
608
  "peerDependencies": {
609
- "@a2a-js/sdk": "^0.3.13",
609
+ "@a2a-js/sdk": "^1.0.1",
610
610
  "@modelcontextprotocol/sdk": "^1.24.0",
611
611
  "@opentelemetry/api": "^1.0.0",
612
612
  "pg": "^8.0.0",
613
- "redis": "^4.6.0 || ^5.0.0",
613
+ "redis": "^4.6.0 || ^5.0.0 || ^6.0.0",
614
614
  "zod": "^4.1.5"
615
615
  },
616
616
  "peerDependenciesMeta": {
@@ -625,39 +625,38 @@
625
625
  }
626
626
  },
627
627
  "devDependencies": {
628
- "@a2a-js/sdk": "^0.3.13",
629
- "@apidevtools/json-schema-ref-parser": "^11.9.3",
628
+ "@a2a-js/sdk": "^1.0.1",
629
+ "@apidevtools/json-schema-ref-parser": "^15.5.2",
630
630
  "@arethetypeswrong/cli": "^0.18.5",
631
- "@changesets/cli": "^2.29.7",
632
- "@commitlint/cli": "^19.6.0",
633
- "@commitlint/config-conventional": "^19.6.0",
634
- "@modelcontextprotocol/sdk": "^1.29.0",
635
- "@opentelemetry/api": "^1.9.0",
631
+ "@changesets/cli": "^2.31.1",
632
+ "@commitlint/cli": "^20.5.3",
633
+ "@commitlint/config-conventional": "^20.5.3",
634
+ "@modelcontextprotocol/sdk": "^1.30.0",
635
+ "@opentelemetry/api": "^1.9.1",
636
636
  "@types/express": "4.17.25",
637
- "@types/node": "^20.19.39",
638
- "@types/pg": "^8.20.0",
637
+ "@types/node": "^20.19.43",
638
+ "@types/pg": "^8.23.1",
639
639
  "@types/semver": "^7.8.0",
640
- "@types/tar": "^6.1.13",
641
640
  "actionlint": "^2.0.6",
642
- "esbuild": "^0.28.1",
641
+ "esbuild": "^0.28.2",
643
642
  "esbuild-fix-imports-plugin": "^1.0.23",
644
- "eslint": "^10.0.3",
643
+ "eslint": "^10.9.1",
645
644
  "json-schema-to-typescript": "^15.0.4",
646
- "json-schema-to-zod": "^2.6.1",
645
+ "json-schema-to-zod": "^2.8.1",
647
646
  "openapi-typescript": "^7.13.0",
648
- "pg": "^8.20.0",
649
- "prettier": "^3.6.2",
650
- "publint": "^0.3.21",
651
- "redis": "^4.7.0",
652
- "tar": "^7.5.21",
653
- "ts-to-zod": "^5.0.1",
647
+ "pg": "^8.23.0",
648
+ "prettier": "3.8.3",
649
+ "publint": "^0.3.24",
650
+ "redis": "^6.2.1",
651
+ "tar": "^7.5.22",
652
+ "ts-to-zod": "^5.1.0",
654
653
  "tsup": "^8.5.1",
655
- "tsx": "^4.6.0",
656
- "typedoc": "^0.28.13",
657
- "typedoc-plugin-markdown": "^4.9.0",
658
- "typescript": "^5.3.0",
659
- "typescript-eslint": "^8.57.1",
660
- "zod": "^4.1.12"
654
+ "tsx": "^4.23.12",
655
+ "typedoc": "^0.28.20",
656
+ "typedoc-plugin-markdown": "^4.13.0",
657
+ "typescript": "^5.9.3",
658
+ "typescript-eslint": "^8.68.0",
659
+ "zod": "^4.4.3"
661
660
  },
662
661
  "engines": {
663
662
  "node": ">=20.0.0"
@@ -667,6 +666,10 @@
667
666
  "rollup": ">=4.59.0",
668
667
  "@types/glob": "^8.1.0",
669
668
  "js-yaml": "^4.1.1",
669
+ "@apidevtools/json-schema-ref-parser@^15.0.0": {
670
+ ".": "$@apidevtools/json-schema-ref-parser",
671
+ "js-yaml": "^5.2.2"
672
+ },
670
673
  "@changesets/parse": {
671
674
  "js-yaml": "^3.14.1"
672
675
  },