diff --git a/.changeset/pre.json b/.changeset/pre.json index 79e8a5858..f93d11f1d 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -61,6 +61,7 @@ "curvy-hounds-validate", "declared-test-kit-resolution", "durable-webhook-registrations", + "expose-buyer-reason-on-adcp-error-info", "fail-closed-task-webhook-handoffs", "fair-dragons-settle", "fair-hosts-listen", @@ -118,6 +119,7 @@ "smart-otters-repair-beta", "steady-bundles-generate", "steady-hooks-authorize", + "strict-brand-domains", "strict-reporting-file-manifest", "strict-storyboards-open-scenarios", "strong-tasks-cut-over", diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ccfd2f62..86ca2262b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## 14.0.0-rc.34 + +### Minor Changes + +- a8960a5: Expose the AdCP 3.2 `error.buyer_reason` sub-object on the client-facing error surfaces. + - `AdcpErrorInfo.buyer_reason` and `ExtractedAdcpError.buyer_reason` now carry the buyer-safe `{ code, message }` when the producer populated it. `buildExtracted`, `extractAdcpErrorInfo`, and `extractAdcpErrorFromMcp` / `extractAdcpErrorFromTransport` all forward it; partial payloads (missing `code` or `message`, empty strings, non-object values) are dropped rather than surfaced as half-typed values a caller might render to a buyer. + - `AdcpStructuredError.buyer_reason` and `AdcpError` constructor option added so seller-side adopters can throw a coarse top-level code with a specific buyer-actionable classification. `adcpError()` (via `AdcpErrorOptions`) now accepts and emits `buyer_reason`; the framework's sync-throw projection (`projectThrownAdcpError`) and the two-layer error dispatcher (`sanitizePayloadError`, `PAYLOAD_ERROR_FIELDS`) both carry the field through to the wire. `BuyerRetryPolicy` overrides receive the field on the `error` argument and can key retry decisions on `error.buyer_reason?.code`; the default policy is unchanged — routing on `buyer_reason` is opt-in via override. + - `NormalizedError` and `normalizeError()` (`@adcp/sdk/server`) now carry `buyer_reason` too, so adopters projecting per-row batch errors through `normalizeErrors()` (`sync_creatives`, `sync_audiences`, `sync_accounts`, `report_usage`, `acquire_rights`) don't silently lose the field between their row objects and the wire. + - The `IDEMPOTENCY_CONFLICT` / `IDEMPOTENCY_IN_FLIGHT` envelope allowlists still strip `buyer_reason` — those wire-shape-restricted codes intentionally never carry a buyer-actionable classification. + +- 15c8ee8: Add Public Suffix List-backed BrandRef domain validation with explicit, narrow development-domain exceptions. + ## 14.0.0-rc.33 ### Minor Changes diff --git a/docs/TYPE-SUMMARY.md b/docs/TYPE-SUMMARY.md index d604b1ff3..89f8155ce 100644 --- a/docs/TYPE-SUMMARY.md +++ b/docs/TYPE-SUMMARY.md @@ -1,7 +1,7 @@ # AdCP Type Summary -> Generated at: 2026-09-07 -> @adcp/sdk v14.0.0-rc.33 +> Generated at: 2026-09-08 +> @adcp/sdk v14.0.0-rc.34 Curated reference of the types that matter for using the AdCP client. For full generated types see `src/lib/types/tools.generated.ts` and `src/lib/types/core.generated.ts`. diff --git a/docs/llms.txt b/docs/llms.txt index c45ece1de..7a78ee49f 100644 --- a/docs/llms.txt +++ b/docs/llms.txt @@ -1,7 +1,7 @@ # Ad Context Protocol (AdCP) -> Generated at: 2026-09-07 -> Library: @adcp/sdk v14.0.0-rc.33 +> Generated at: 2026-09-08 +> Library: @adcp/sdk v14.0.0-rc.34 > AdCP major version: 3 > Canonical URL: https://adcontextprotocol.github.io/adcp-client/llms.txt > 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. diff --git a/package-lock.json b/package-lock.json index 73a6395d7..ec485e9fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@adcp/sdk", - "version": "14.0.0-rc.33", + "version": "14.0.0-rc.34", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@adcp/sdk", - "version": "14.0.0-rc.33", + "version": "14.0.0-rc.34", "license": "Apache-2.0", "workspaces": [ ".", @@ -8666,7 +8666,7 @@ "version": "6.0.0", "license": "Apache-2.0", "dependencies": { - "@adcp/sdk": "^14.0.0-rc.33" + "@adcp/sdk": "^14.0.0-rc.34" }, "bin": { "adcp": "bin/adcp.js" diff --git a/package.json b/package.json index 1bd4bf47c..bb1602b76 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@adcp/sdk", - "version": "14.0.0-rc.33", + "version": "14.0.0-rc.34", "description": "AdCP SDK — client, server, and compliance harnesses for the AdContext Protocol (MCP + A2A)", "workspaces": [ ".", diff --git a/packages/client-shim/package.json b/packages/client-shim/package.json index 00f3082a5..14149d9af 100644 --- a/packages/client-shim/package.json +++ b/packages/client-shim/package.json @@ -106,7 +106,7 @@ "LICENSE" ], "dependencies": { - "@adcp/sdk": "^14.0.0-rc.33" + "@adcp/sdk": "^14.0.0-rc.34" }, "keywords": [ "adcp", diff --git a/src/lib/version.ts b/src/lib/version.ts index 5218aced8..30e3e5473 100644 --- a/src/lib/version.ts +++ b/src/lib/version.ts @@ -4,7 +4,7 @@ /** * AdCP SDK library version */ -export const LIBRARY_VERSION = '14.0.0-rc.33'; +export const LIBRARY_VERSION = '14.0.0-rc.34'; /** * AdCP specification version this library is built for @@ -99,10 +99,10 @@ export type AdcpVersion = (typeof COMPATIBLE_ADCP_VERSIONS)[number]; * Full version information */ export const VERSION_INFO = { - library: '14.0.0-rc.33', + library: '14.0.0-rc.34', adcp: '3.2.0-rc.1', compatibleVersions: COMPATIBLE_ADCP_VERSIONS, - generatedAt: '2026-09-07T02:06:48.151Z', + generatedAt: '2026-09-08T11:31:49.294Z', } as const; /**