@adcp/sdk 16.0.0 → 16.2.0
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.
- package/README.md +52 -0
- package/bin/adcp-identity.js +3 -2
- package/dist/lib/client/core.d.mts +1 -1
- package/dist/lib/client/core.d.ts +1 -1
- package/dist/lib/core/AgentClient.d.mts +8 -1
- package/dist/lib/core/AgentClient.d.ts +8 -1
- package/dist/lib/core/AgentClient.js +10 -0
- package/dist/lib/core/AgentClient.mjs +10 -0
- package/dist/lib/core/AsyncHandler.d.mts +2 -0
- package/dist/lib/core/AsyncHandler.d.ts +2 -0
- package/dist/lib/core/AsyncHandler.js +1 -1
- package/dist/lib/core/AsyncHandler.mjs +1 -1
- package/dist/lib/core/ConversationTypes.d.mts +32 -0
- package/dist/lib/core/ConversationTypes.d.ts +32 -0
- package/dist/lib/core/SingleAgentClient.d.mts +11 -1
- package/dist/lib/core/SingleAgentClient.d.ts +11 -1
- package/dist/lib/core/SingleAgentClient.js +25 -6
- package/dist/lib/core/SingleAgentClient.mjs +26 -7
- package/dist/lib/core/TaskExecutor.d.mts +3 -1
- package/dist/lib/core/TaskExecutor.d.ts +3 -1
- package/dist/lib/core/TaskExecutor.js +127 -34
- package/dist/lib/core/TaskExecutor.mjs +127 -34
- package/dist/lib/core/task-deadline.d.mts +2 -0
- package/dist/lib/core/task-deadline.d.ts +2 -0
- package/dist/lib/core/task-deadline.js +20 -2
- package/dist/lib/core/task-deadline.mjs +19 -2
- package/dist/lib/governance/authorization.d.mts +66 -0
- package/dist/lib/governance/authorization.d.ts +66 -0
- package/dist/lib/governance/authorization.js +181 -37
- package/dist/lib/governance/authorization.mjs +183 -36
- package/dist/lib/governance/index.d.mts +2 -2
- package/dist/lib/governance/index.d.ts +2 -2
- package/dist/lib/governance/index.js +4 -2
- package/dist/lib/governance/index.mjs +3 -1
- package/dist/lib/identity-3.3/index.d.mts +1 -0
- package/dist/lib/identity-3.3/index.d.ts +1 -0
- package/dist/lib/identity-3.3/index.js +3 -1
- package/dist/lib/identity-3.3/index.mjs +1 -0
- package/dist/lib/identity-3.3/jws-artifacts.d.mts +147 -0
- package/dist/lib/identity-3.3/jws-artifacts.d.ts +147 -0
- package/dist/lib/identity-3.3/jws-artifacts.js +258 -0
- package/dist/lib/identity-3.3/jws-artifacts.mjs +234 -0
- package/dist/lib/identity-3.3/revocation.d.mts +7 -0
- package/dist/lib/identity-3.3/revocation.d.ts +7 -0
- package/dist/lib/identity-3.3/revocation.js +13 -0
- package/dist/lib/identity-3.3/revocation.mjs +13 -0
- package/dist/lib/identity-3.3/schemas.draft.js +1 -1
- package/dist/lib/identity-3.3/schemas.draft.mjs +1 -1
- package/dist/lib/identity-3.3/trust.d.mts +8 -0
- package/dist/lib/identity-3.3/trust.d.ts +8 -0
- package/dist/lib/identity-3.3/trust.js +41 -12
- package/dist/lib/identity-3.3/trust.mjs +40 -12
- package/dist/lib/index.d.mts +3 -3
- package/dist/lib/index.d.ts +3 -3
- package/dist/lib/index.js +2 -0
- package/dist/lib/index.mjs +2 -0
- package/dist/lib/registry/types.generated.d.mts +24 -1
- package/dist/lib/registry/types.generated.d.ts +24 -1
- package/dist/lib/server/account-sync-contract.js +4 -1
- package/dist/lib/server/account-sync-contract.mjs +4 -1
- package/dist/lib/server/decisioning/runtime/from-platform.js +22 -17
- package/dist/lib/server/decisioning/runtime/from-platform.mjs +22 -17
- package/dist/lib/server/index.d.mts +2 -2
- package/dist/lib/server/index.d.ts +2 -2
- package/dist/lib/server/index.js +2 -0
- package/dist/lib/server/index.mjs +2 -0
- package/dist/lib/signing/web-bot-auth.js +25 -5
- package/dist/lib/signing/web-bot-auth.mjs +25 -6
- package/dist/lib/testing/storyboard/validations.d.mts +1 -1
- package/dist/lib/testing/storyboard/validations.d.ts +1 -1
- package/dist/lib/v2/projection/catalog.d.mts +6 -0
- package/dist/lib/v2/projection/catalog.d.ts +6 -0
- package/dist/lib/v2/projection/catalog.js +5 -0
- package/dist/lib/v2/projection/catalog.mjs +4 -0
- package/dist/lib/v2/projection/v1-to-v2.js +3 -2
- package/dist/lib/v2/projection/v1-to-v2.mjs +4 -3
- package/dist/lib/version.d.mts +3 -3
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.js +3 -3
- package/dist/lib/version.mjs +3 -3
- package/docs/TYPE-SUMMARY.md +12 -2
- package/docs/llms.txt +3 -3
- package/docs/migration-14.x-rc-worksheet.md +4 -4
- package/docs/migration-agent-identity-3.3.md +72 -19
- package/package.json +6 -4
package/dist/lib/version.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* AdCP SDK library version
|
|
3
3
|
*/
|
|
4
|
-
export declare const LIBRARY_VERSION = "16.
|
|
4
|
+
export declare const LIBRARY_VERSION = "16.2.0";
|
|
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: "16.
|
|
36
|
+
readonly library: "16.2.0";
|
|
37
37
|
readonly adcp: "3.2.5";
|
|
38
38
|
readonly compatibleVersions: readonly ["v3", "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.1.19", "3.1.20", "3.1.21", "3.1.22", "3.1.23", "3.1.24", "3.1.25", "3.1.26", "3.1.27", "3.1.28", "3.1.29", "3.2.1", "3.2", "3.2.2", "3.2.3", "3.2.4", "3.2.5"];
|
|
39
|
-
readonly generatedAt: "2026-10-
|
|
39
|
+
readonly generatedAt: "2026-10-22T00:56:23.729Z";
|
|
40
40
|
};
|
|
41
41
|
/**
|
|
42
42
|
* Get the AdCP specification version this library is built for
|
package/dist/lib/version.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* AdCP SDK library version
|
|
3
3
|
*/
|
|
4
|
-
export declare const LIBRARY_VERSION = "16.
|
|
4
|
+
export declare const LIBRARY_VERSION = "16.2.0";
|
|
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: "16.
|
|
36
|
+
readonly library: "16.2.0";
|
|
37
37
|
readonly adcp: "3.2.5";
|
|
38
38
|
readonly compatibleVersions: readonly ["v3", "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.1.19", "3.1.20", "3.1.21", "3.1.22", "3.1.23", "3.1.24", "3.1.25", "3.1.26", "3.1.27", "3.1.28", "3.1.29", "3.2.1", "3.2", "3.2.2", "3.2.3", "3.2.4", "3.2.5"];
|
|
39
|
-
readonly generatedAt: "2026-10-
|
|
39
|
+
readonly generatedAt: "2026-10-22T00:56:23.729Z";
|
|
40
40
|
};
|
|
41
41
|
/**
|
|
42
42
|
* Get the AdCP specification version this library is built for
|
package/dist/lib/version.js
CHANGED
|
@@ -31,7 +31,7 @@ __export(version_exports, {
|
|
|
31
31
|
toReleasePrecisionVersion: () => toReleasePrecisionVersion
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(version_exports);
|
|
34
|
-
const LIBRARY_VERSION = "16.
|
|
34
|
+
const LIBRARY_VERSION = "16.2.0";
|
|
35
35
|
const ADCP_VERSION = "3.2.5";
|
|
36
36
|
const ADCP_MAJOR_VERSION = 3;
|
|
37
37
|
const COMPATIBLE_ADCP_VERSIONS = [
|
|
@@ -102,10 +102,10 @@ const COMPATIBLE_ADCP_VERSIONS = [
|
|
|
102
102
|
"3.2.5"
|
|
103
103
|
];
|
|
104
104
|
const VERSION_INFO = {
|
|
105
|
-
library: "16.
|
|
105
|
+
library: "16.2.0",
|
|
106
106
|
adcp: "3.2.5",
|
|
107
107
|
compatibleVersions: COMPATIBLE_ADCP_VERSIONS,
|
|
108
|
-
generatedAt: "2026-10-
|
|
108
|
+
generatedAt: "2026-10-22T00:56:23.729Z"
|
|
109
109
|
};
|
|
110
110
|
function getAdcpVersion() {
|
|
111
111
|
return ADCP_VERSION;
|
package/dist/lib/version.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const LIBRARY_VERSION = "16.
|
|
1
|
+
const LIBRARY_VERSION = "16.2.0";
|
|
2
2
|
const ADCP_VERSION = "3.2.5";
|
|
3
3
|
const ADCP_MAJOR_VERSION = 3;
|
|
4
4
|
const COMPATIBLE_ADCP_VERSIONS = [
|
|
@@ -69,10 +69,10 @@ const COMPATIBLE_ADCP_VERSIONS = [
|
|
|
69
69
|
"3.2.5"
|
|
70
70
|
];
|
|
71
71
|
const VERSION_INFO = {
|
|
72
|
-
library: "16.
|
|
72
|
+
library: "16.2.0",
|
|
73
73
|
adcp: "3.2.5",
|
|
74
74
|
compatibleVersions: COMPATIBLE_ADCP_VERSIONS,
|
|
75
|
-
generatedAt: "2026-10-
|
|
75
|
+
generatedAt: "2026-10-22T00:56:23.729Z"
|
|
76
76
|
};
|
|
77
77
|
function getAdcpVersion() {
|
|
78
78
|
return ADCP_VERSION;
|
package/docs/TYPE-SUMMARY.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# AdCP Type Summary
|
|
2
2
|
|
|
3
|
-
> Generated at: 2026-10-
|
|
4
|
-
> @adcp/sdk v16.
|
|
3
|
+
> Generated at: 2026-10-22
|
|
4
|
+
> @adcp/sdk v16.2.0
|
|
5
5
|
|
|
6
6
|
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`.
|
|
7
7
|
|
|
@@ -95,6 +95,7 @@ interface AgentDiscoverySeed {
|
|
|
95
95
|
// client.invalidateDiscoveryCache(): Promise<void>; refresh after a seller change.
|
|
96
96
|
|
|
97
97
|
interface TaskOptions {
|
|
98
|
+
operationId?: string; // Stable caller correlation id (otherwise a UUID); not an idempotency key
|
|
98
99
|
skipStatusHandlers?: boolean; // Skip inline completion handlers, including continuations
|
|
99
100
|
timeout?: number; // Absolute whole-task deadline
|
|
100
101
|
signal?: AbortSignal; // Caller cancellation
|
|
@@ -106,6 +107,15 @@ interface TaskOptions {
|
|
|
106
107
|
// ...deadline, cancellation, transport, and conversation options...
|
|
107
108
|
}
|
|
108
109
|
|
|
110
|
+
// Resume observation of persisted seller work (SingleAgentClient or AgentClient).
|
|
111
|
+
// Save metadata.serverTaskId, metadata.taskName as taskType, and metadata.taskId as operationId.
|
|
112
|
+
const tracked = await agent.trackTask({ taskId: saved.serverTaskId, taskType: saved.taskType, operationId: saved.operationId });
|
|
113
|
+
await tracked.track(); // One status read; TaskInfo includes operationId and serverTaskId
|
|
114
|
+
await tracked.waitForCompletion(1000, signal); // Same polling path as submitted continuations
|
|
115
|
+
// No per-poll protocol activity. Terminal status_change carries operation_id and server_task_id.
|
|
116
|
+
// Local observation errors do not terminalize seller work. Matching identities can reattach on the same client.
|
|
117
|
+
// Results retain seller tool response shapes; tracking does not restore prior request context or handlers.
|
|
118
|
+
|
|
109
119
|
interface DeferredContinuation<T> {
|
|
110
120
|
token: string;
|
|
111
121
|
question?: string;
|
package/docs/llms.txt
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Ad Context Protocol (AdCP)
|
|
2
2
|
|
|
3
|
-
> Generated at: 2026-10-
|
|
4
|
-
> Library: @adcp/sdk v16.
|
|
3
|
+
> Generated at: 2026-10-22
|
|
4
|
+
> Library: @adcp/sdk v16.2.0
|
|
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.
|
|
@@ -13,7 +13,7 @@ AdCP is an open protocol for AI agents to buy, manage, and optimize advertising
|
|
|
13
13
|
|
|
14
14
|
## Start here: AdCP 3.2
|
|
15
15
|
|
|
16
|
-
The SDK requires Node.js `^20.19.0 || >=22.12.0`. Install this reference's release train with `npm install @adcp/sdk@16.
|
|
16
|
+
The SDK requires Node.js `^20.19.0 || >=22.12.0`. Install this reference's release train with `npm install @adcp/sdk@16.2`; use the documentation from the exact published SDK version you install. For reproducible CLI runs, pin that exact SDK version. After installation, `node -p "require('@adcp/sdk').ADCP_VERSION"` reports its protocol pin; `ls node_modules/@adcp/sdk/compliance/cache` lists its packaged compliance versions. The legacy `adcp-3.2` npm tag selects SDK 14 and does not receive the refreshed compliance caches.
|
|
17
17
|
|
|
18
18
|
The SDK is compact-lifecycle first: `list_products → buy_products → control_media_buy`, with `request_proposals → refine_proposals → accept_proposal` when terms need negotiation.
|
|
19
19
|
|
|
@@ -16,8 +16,8 @@ pin using `ADCP_VERSION` inside that tarball.
|
|
|
16
16
|
|
|
17
17
|
| Fact | Value |
|
|
18
18
|
| --- | --- |
|
|
19
|
-
| Checkout `package.json` version | `@adcp/sdk@16.
|
|
20
|
-
| npm integrity | registry-derived after publication; run `npm view @adcp/sdk@16.
|
|
19
|
+
| Checkout `package.json` version | `@adcp/sdk@16.2.0` |
|
|
20
|
+
| npm integrity | registry-derived after publication; run `npm view @adcp/sdk@16.2.0 dist.integrity` |
|
|
21
21
|
| Node.js runtime | `^20.19.0 || >=22.12.0` |
|
|
22
22
|
| Default AdCP wire release | `3.2.5` |
|
|
23
23
|
| Maintained wire releases | `v3`, `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.1.19`, `3.1.20`, `3.1.21`, `3.1.22`, `3.1.23`, `3.1.24`, `3.1.25`, `3.1.26`, `3.1.27`, `3.1.28`, `3.1.29`, `3.2.1`, `3.2`, `3.2.2`, `3.2.3`, `3.2.4`, `3.2.5` |
|
|
@@ -26,8 +26,8 @@ pin using `ADCP_VERSION` inside that tarball.
|
|
|
26
26
|
For a checkout at the published release commit, install the exact package version:
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
npm install --save-exact '@adcp/sdk@16.
|
|
30
|
-
npm view '@adcp/sdk@16.
|
|
29
|
+
npm install --save-exact '@adcp/sdk@16.2.0'
|
|
30
|
+
npm view '@adcp/sdk@16.2.0' dist.integrity
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
### Required and optional peers
|
|
@@ -155,12 +155,14 @@ parameter is a Token (WBA section 5.2.1), and the verifier accepts
|
|
|
155
155
|
type, which leaves no member to resolve (403).
|
|
156
156
|
|
|
157
157
|
`SignatureDirectoryResolver` derives the directory from the covered canonical
|
|
158
|
-
origin. Directories must be signed (WBA Appendix B.1): it
|
|
159
|
-
|
|
160
|
-
`
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
158
|
+
origin. Directories must be signed (WBA Appendix B.1): it uses each Ed25519
|
|
159
|
+
key that has a valid possession signature, covering `"@authority";req` and
|
|
160
|
+
`content-digest`, and validates the exact body digest before caching keys. It
|
|
161
|
+
ignores every other key and any signature it made: a key the profile cannot
|
|
162
|
+
use, such as a P-256 key, a key it cannot import, such as an Ed25519 key with
|
|
163
|
+
no `x` (RFC 7517 section 5), and a key without a valid signature (WBA Appendix
|
|
164
|
+
B.1; directory draft section 5). An unsigned directory, one with no validly
|
|
165
|
+
signed Ed25519 key, or one that publishes private key material for any key,
|
|
164
166
|
usable or not, is a discovery failure. Its audit proof retains the signed body and
|
|
165
167
|
headers. Verification requires this resolver so context-free JWKS adapters cannot
|
|
166
168
|
attribute a key to an arbitrary origin. Discovery uses HTTPS, DNS pinning, no redirects, a 256 KiB cap, a
|
|
@@ -359,7 +361,12 @@ operator) to the signer's operator, or a two-link chain through the account
|
|
|
359
361
|
operator, is accepted. The
|
|
360
362
|
intersection must cover the actual brand IDs, countries, scope, signer-origin
|
|
361
363
|
narrowing and temporal window. A restrictive published grant cannot be
|
|
362
|
-
superseded by seller fallback. A
|
|
364
|
+
superseded by seller fallback. A grant's `grantee` must be a registrable domain
|
|
365
|
+
under the pinned PSL snapshot (`alice.github.io` is one; `github.io` and
|
|
366
|
+
`media.agency.com` are not). A grant whose `grantee` is not one covers no claim
|
|
367
|
+
and does not block seller fallback, but its scopes still count for
|
|
368
|
+
`exclusive_grants`. `createTrustRecord` and `adcp identity trust-validate` refuse
|
|
369
|
+
such grantees. A trust 200 disables brand.json authority;
|
|
363
370
|
authoritative absence alone permits explicit legacy policy. An established
|
|
364
371
|
identity lacking a grant gets `PERMISSION_DENIED` with
|
|
365
372
|
`{ scope: 'agent', reason: 'grant_absent' }`. No account or live buy is changed.
|
|
@@ -368,12 +375,57 @@ included) never falls back to brand.json `authorized_operators[]`, and it is
|
|
|
368
375
|
not a grant removal: spend gets a retryable `SERVICE_UNAVAILABLE`.
|
|
369
376
|
|
|
370
377
|
Origin key revocations use `/.well-known/governance-revocations.json`, signed
|
|
371
|
-
with `typ: adcp-gov-revocation+jws`, as ratified R3 specifies.
|
|
372
|
-
|
|
373
|
-
JWS
|
|
378
|
+
with `typ: adcp-gov-revocation+jws`, as ratified R3 specifies. The same list
|
|
379
|
+
revokes the keys a WBA identity signs its JWS artifacts with (see
|
|
380
|
+
[JWS artifacts](#jws-artifacts)). Polling fails closed, revoked
|
|
374
381
|
keys remain revoked forever, `keyCompromise` cannot be weakened, and the earliest
|
|
375
382
|
`invalidity_date` is retained. Revocation never pauses or cancels committed buys.
|
|
376
383
|
|
|
384
|
+
### JWS artifacts
|
|
385
|
+
|
|
386
|
+
Governance contexts, designated-task responses and rights attestations from a
|
|
387
|
+
WBA identity are signed with keys from that identity's key directory (R4 as
|
|
388
|
+
amended by adcontextprotocol/adcp#8299). `O` is the canonical origin of the
|
|
389
|
+
signing agent's URL: `iss` for a governance context, `agent_url` for a
|
|
390
|
+
designated-task response, `rights_agent.url` for a rights attestation. Pass it
|
|
391
|
+
from your own context, never from the unverified token.
|
|
392
|
+
|
|
393
|
+
- `selectJwsArtifactProfile(agentUrl, trust)` derives the trust record from
|
|
394
|
+
`O`. When it lists `O`, the artifact is verified on the WBA path; when the
|
|
395
|
+
operator has not published a record, or the record does not list `O`, it
|
|
396
|
+
stays on the 3.2 profile. A trust-record fetch failure throws
|
|
397
|
+
`JwsArtifactError` (`jws_key_unavailable`): it is never absence and never
|
|
398
|
+
selects 3.2. A 404/410 from an operator that once served a record is an
|
|
399
|
+
outage too, but the evaluator remembers that 200 only in process unless you
|
|
400
|
+
give it durable `authorityHistory` (`createIdentity33StateStores`). Public,
|
|
401
|
+
multi-replica and serverless verifiers must, as for grants.
|
|
402
|
+
- `verifyWebBotAuthJwsArtifact(token, origin, { typ, directory, revocation })`
|
|
403
|
+
requires the `typ` the surface accepts, `alg` `EdDSA` and a `kid` equal to the
|
|
404
|
+
key's JWK thumbprint, applies no `use`/`key_ops`/`adcp_use` check, and checks
|
|
405
|
+
`O`'s revocation list. Purpose separation is by origin, so one key at `O` may
|
|
406
|
+
sign every artifact `O` issues and `typ` tells them apart. `revocation` is
|
|
407
|
+
required; pass `false` only if you check the returned `kid` yourself. It
|
|
408
|
+
verifies key and signature only; the surface keeps its own claim checks.
|
|
409
|
+
- `verifyGovernanceAuthorization({ ..., webBotAuth: { trust, directory,
|
|
410
|
+
revocation } })` applies the rule to governance contexts. Every other check is
|
|
411
|
+
unchanged, including the `buyerIdentity` cross-check that `iss` is the buyer's
|
|
412
|
+
governance agent; only the key source moves. `revocation` is required, and an
|
|
413
|
+
origin that serves no list fails closed, since a governance context
|
|
414
|
+
authorizes spend. Outages (trust record, directory, revocation list) set
|
|
415
|
+
`retryable: true` on the failure. Without `webBotAuth` the verifier is 3.2
|
|
416
|
+
only, as before.
|
|
417
|
+
- `verifyHistoricalGovernanceContext({ token, expectedIssuer, webBotAuth: {
|
|
418
|
+
..., archive } })` verifies a retained governance context for audit. A key
|
|
419
|
+
rotated out of the directory is read from the governance key archive at `O`
|
|
420
|
+
(`/.well-known/jwks-archive.json`, `GovernanceKeyArchiveResolver`), on the
|
|
421
|
+
same `EdDSA` and thumbprint rules. A revoked key still verifies here: the
|
|
422
|
+
result reports `revocation: 'revoked'` and the stored R9 detail (`reason`,
|
|
423
|
+
`invalidity_date`) for the audit to weigh. Expiry, audience, replay and the
|
|
424
|
+
request binding are not checked.
|
|
425
|
+
|
|
426
|
+
The SDK has no designated-task response or rights-attestation verifier of its
|
|
427
|
+
own; a verifier for either uses the two primitives above.
|
|
428
|
+
|
|
377
429
|
Permanent revocation storage reserves separate bounded capacity for audited bound
|
|
378
430
|
origins and anonymous/self-service origins, so first-contact traffic cannot exhaust the bound
|
|
379
431
|
pool. Storage failures deny reads and mutations without outage grace; inspect the
|
|
@@ -402,18 +454,19 @@ released schemas:
|
|
|
402
454
|
|
|
403
455
|
| PR | Pinned head | Surface |
|
|
404
456
|
| --- | --- | --- |
|
|
405
|
-
| [7894](https://github.com/adcontextprotocol/adcp/pull/7894) | `
|
|
457
|
+
| [7894](https://github.com/adcontextprotocol/adcp/pull/7894) | `9f472d63900b99efcd9ed05b5d0bb75552c3b9d6` | WBA wire profile (`wba-profile.mdx`), profile selectors |
|
|
406
458
|
| [8121](https://github.com/adcontextprotocol/adcp/pull/8121) | `f5973ac0267b1b94d714c55fc4e3ad8fc2511350` | Origin identity and key-free trust v1 |
|
|
407
459
|
| [8162](https://github.com/adcontextprotocol/adcp/pull/8162) | `5c9914c5c382cc32f3d2ad7842942e548c414705` | Ratified identity, coexistence, revocation |
|
|
408
460
|
| [8168](https://github.com/adcontextprotocol/adcp/pull/8168) | `45540941dfd61e80ab8a463f780cb147c82a32f0` | Relationship and principal response arms |
|
|
409
|
-
| [8169](https://github.com/adcontextprotocol/adcp/pull/8169) | `3ce6a14d7afaa71fa78ddf2223ed0421e01205ae` | Grants, trust schema, grant_absent |
|
|
461
|
+
| [8169](https://github.com/adcontextprotocol/adcp/pull/8169) | `3ce6a14d7afaa71fa78ddf2223ed0421e01205ae` | Grants, trust schema, grant_absent; the registrable-domain `grantee` rule and its schema description from `eabe46048530c08a34e6eee6e4d15d7848e01c57` |
|
|
410
462
|
| [8170](https://github.com/adcontextprotocol/adcp/pull/8170) | `8d3591e70e9a717c7fdfb513360a796fba24ca9a` | Onboarding additions only; its old trust key fields are excluded |
|
|
411
463
|
| [8177](https://github.com/adcontextprotocol/adcp/pull/8177) | `b663f8e4235fe4276c73fb9bac6db491b2252bbf` | Reporting authentication omission |
|
|
464
|
+
| [8298](https://github.com/adcontextprotocol/adcp/pull/8298) | `f44785a5b65db93988f30ad3d23ba5849f1a1d5e` | WBA interop harness, directory and request vectors |
|
|
412
465
|
|
|
413
|
-
The vectors in `test/fixtures/wba-profile/` are byte-identical to #
|
|
414
|
-
head (see `PINNED.json`)
|
|
415
|
-
graded, and the interop harness
|
|
416
|
-
`scenarios.json`.
|
|
466
|
+
The vectors in `test/fixtures/wba-profile/` are byte-identical to #8298 at that
|
|
467
|
+
head (see `PINNED.json`), which carries the #7894 profile and vectors. Every
|
|
468
|
+
vendored request and directory vector is graded, and the interop harness
|
|
469
|
+
(adcontextprotocol/adcp#8298) grades `scenarios.json`.
|
|
417
470
|
|
|
418
471
|
Verification runs in Cloudflare's `http-message-sig` (signature base, coverage,
|
|
419
472
|
window, algorithm and cryptographic checks); the SDK adds the profile rules in
|
|
@@ -484,9 +537,9 @@ so verification can run in a CDN or middleware in front of the AdCP server.
|
|
|
484
537
|
Cloudflare's `web-bot-auth`; they already used signed directories and are
|
|
485
538
|
unchanged.
|
|
486
539
|
#7894 drops the governance-token checks and the `governance/` vectors from the
|
|
487
|
-
WBA profile. Governance moves to the AdCP layer under a separate R4 erratum
|
|
488
|
-
which moves JWS artifacts, governance included,
|
|
489
|
-
|
|
540
|
+
WBA profile. Governance moves to the AdCP layer under a separate R4 erratum
|
|
541
|
+
(adcontextprotocol/adcp#8299), which moves JWS artifacts, governance included,
|
|
542
|
+
to the identity's WBA key directory in 3.3; see [JWS artifacts](#jws-artifacts).
|
|
490
543
|
The buyer default onboarding field is `profiles.adcp.onboarding`, matching the
|
|
491
544
|
schema; the design's `record_profiles` wording names the schema definition.
|
|
492
545
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adcp/sdk",
|
|
3
|
-
"version": "16.
|
|
3
|
+
"version": "16.2.0",
|
|
4
4
|
"description": "AdCP SDK — client, server, and compliance harnesses for the AdContext Protocol (MCP + A2A)",
|
|
5
5
|
"workspaces": [
|
|
6
6
|
".",
|
|
@@ -729,10 +729,10 @@
|
|
|
729
729
|
"email": "bugs@adcontextprotocol.org"
|
|
730
730
|
},
|
|
731
731
|
"dependencies": {
|
|
732
|
-
"@modelcontextprotocol/client": "2.
|
|
732
|
+
"@modelcontextprotocol/client": "2.3.1",
|
|
733
733
|
"@modelcontextprotocol/ext-apps": "2.0.0",
|
|
734
734
|
"@modelcontextprotocol/node": "2.0.0",
|
|
735
|
-
"@modelcontextprotocol/server": "2.
|
|
735
|
+
"@modelcontextprotocol/server": "2.3.1",
|
|
736
736
|
"@types/ws": "^8.18.1",
|
|
737
737
|
"ajv": "^8.20.0",
|
|
738
738
|
"ajv-formats": "^3.0.1",
|
|
@@ -814,7 +814,9 @@
|
|
|
814
814
|
"@changesets/parse": {
|
|
815
815
|
"js-yaml": "^3.15.2"
|
|
816
816
|
},
|
|
817
|
-
"minimatch": "^10.2.1"
|
|
817
|
+
"minimatch": "^10.2.1",
|
|
818
|
+
"launch-editor": "^2.14.2",
|
|
819
|
+
"markdown-it": "^14.3.3"
|
|
818
820
|
},
|
|
819
821
|
"adcp_version": "3.2.5",
|
|
820
822
|
"sideEffects": [
|