Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .changeset/pre.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
4 changes: 2 additions & 2 deletions docs/TYPE-SUMMARY.md
Original file line number Diff line number Diff line change
@@ -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`.

Expand Down
4 changes: 2 additions & 2 deletions docs/llms.txt
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
6 changes: 3 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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": [
".",
Expand Down
2 changes: 1 addition & 1 deletion packages/client-shim/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@
"LICENSE"
],
"dependencies": {
"@adcp/sdk": "^14.0.0-rc.33"
"@adcp/sdk": "^14.0.0-rc.34"
},
"keywords": [
"adcp",
Expand Down
6 changes: 3 additions & 3 deletions src/lib/version.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;

/**
Expand Down
Loading