@adcp/sdk 16.1.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.
Files changed (43) hide show
  1. package/dist/lib/governance/authorization.d.mts +66 -0
  2. package/dist/lib/governance/authorization.d.ts +66 -0
  3. package/dist/lib/governance/authorization.js +181 -37
  4. package/dist/lib/governance/authorization.mjs +183 -36
  5. package/dist/lib/governance/index.d.mts +2 -2
  6. package/dist/lib/governance/index.d.ts +2 -2
  7. package/dist/lib/governance/index.js +4 -2
  8. package/dist/lib/governance/index.mjs +3 -1
  9. package/dist/lib/identity-3.3/index.d.mts +1 -0
  10. package/dist/lib/identity-3.3/index.d.ts +1 -0
  11. package/dist/lib/identity-3.3/index.js +3 -1
  12. package/dist/lib/identity-3.3/index.mjs +1 -0
  13. package/dist/lib/identity-3.3/jws-artifacts.d.mts +147 -0
  14. package/dist/lib/identity-3.3/jws-artifacts.d.ts +147 -0
  15. package/dist/lib/identity-3.3/jws-artifacts.js +258 -0
  16. package/dist/lib/identity-3.3/jws-artifacts.mjs +234 -0
  17. package/dist/lib/identity-3.3/revocation.d.mts +7 -0
  18. package/dist/lib/identity-3.3/revocation.d.ts +7 -0
  19. package/dist/lib/identity-3.3/revocation.js +13 -0
  20. package/dist/lib/identity-3.3/revocation.mjs +13 -0
  21. package/dist/lib/index.d.mts +2 -2
  22. package/dist/lib/index.d.ts +2 -2
  23. package/dist/lib/index.js +2 -0
  24. package/dist/lib/index.mjs +2 -0
  25. package/dist/lib/registry/types.generated.d.mts +24 -1
  26. package/dist/lib/registry/types.generated.d.ts +24 -1
  27. package/dist/lib/server/index.d.mts +2 -2
  28. package/dist/lib/server/index.d.ts +2 -2
  29. package/dist/lib/server/index.js +2 -0
  30. package/dist/lib/server/index.mjs +2 -0
  31. package/dist/lib/signing/web-bot-auth.js +5 -0
  32. package/dist/lib/signing/web-bot-auth.mjs +4 -0
  33. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  34. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  35. package/dist/lib/version.d.mts +3 -3
  36. package/dist/lib/version.d.ts +3 -3
  37. package/dist/lib/version.js +3 -3
  38. package/dist/lib/version.mjs +3 -3
  39. package/docs/TYPE-SUMMARY.md +2 -2
  40. package/docs/llms.txt +3 -3
  41. package/docs/migration-14.x-rc-worksheet.md +4 -4
  42. package/docs/migration-agent-identity-3.3.md +51 -6
  43. package/package.json +6 -4
@@ -186,6 +186,19 @@ class OriginRevocationResolver {
186
186
  }
187
187
  return settled();
188
188
  }
189
+ /**
190
+ * The most severe detail stored for a revoked key (R9: `keyCompromise` and
191
+ * the earliest `invalidity_date` win), or undefined when the key is not
192
+ * revoked. Reads the history store only; call {@link status} first to refresh.
193
+ * Throws {@link WebBotAuthUnavailableError} when the store fails.
194
+ */
195
+ async detail(originUrl, keyid) {
196
+ try {
197
+ return await this.readStored((0, import_canonicalize.canonicalAgentOrigin)(originUrl), keyid);
198
+ } catch (error) {
199
+ throw new import_web_bot_auth.WebBotAuthUnavailableError("revocation_persistence_failed", error);
200
+ }
201
+ }
189
202
  async readStored(origin, keyid) {
190
203
  try {
191
204
  return await this.options.store.get(origin, keyid);
@@ -165,6 +165,19 @@ class OriginRevocationResolver {
165
165
  }
166
166
  return settled();
167
167
  }
168
+ /**
169
+ * The most severe detail stored for a revoked key (R9: `keyCompromise` and
170
+ * the earliest `invalidity_date` win), or undefined when the key is not
171
+ * revoked. Reads the history store only; call {@link status} first to refresh.
172
+ * Throws {@link WebBotAuthUnavailableError} when the store fails.
173
+ */
174
+ async detail(originUrl, keyid) {
175
+ try {
176
+ return await this.readStored(canonicalAgentOrigin(originUrl), keyid);
177
+ } catch (error) {
178
+ throw new WebBotAuthUnavailableError("revocation_persistence_failed", error);
179
+ }
180
+ }
168
181
  async readStored(origin, keyid) {
169
182
  try {
170
183
  return await this.options.store.get(origin, keyid);
@@ -41,12 +41,12 @@ export type { GovernanceConfig, CampaignGovernanceConfig, GovernanceCheckResult,
41
41
  export { GovernanceMiddleware } from './core/GovernanceMiddleware.mjs';
42
42
  export { isGovernanceApproved, isGovernanceConditions, isGovernanceDenied, normalizeGovernanceVerdict, } from './core/GovernanceTypes.mjs';
43
43
  export type { GovernanceDebugEntry } from './core/GovernanceMiddleware.mjs';
44
- export { GOVERNANCE_AUTHORIZATION_CRITICAL_CLAIMS, GovernanceAuthorizationError, GovernanceReplayStoreAdapter, InMemoryGovernanceReplayStore, buildGovernanceCommitment, buildGovernanceExecutionCommitment, buildGovernanceExecutionRequest, buildGovernanceIntentRequest, buildGovernanceProposedCommitment, buildHumanReviewPlan, buildHumanOverride, computeGovernedPayloadHash, createGovernanceEnforcementMiddleware, getGovernanceEnforcementTasks, governancePurchaseTypeForTask, governanceTaskRequiresProposedCommitment, targetDeclaresGovernanceEnforcement, targetDeclaresLegacyGovernanceAwareness, validateGovernancePlan, verifyGovernanceAuthorization, createGovernanceAgentJwksResolver, REGULATED_HUMAN_REVIEW_CATEGORIES, ANNEX_III_POLICY_IDS, } from './governance/index.mjs';
44
+ export { GOVERNANCE_AUTHORIZATION_CRITICAL_CLAIMS, GovernanceAuthorizationError, GovernanceReplayStoreAdapter, InMemoryGovernanceReplayStore, buildGovernanceCommitment, buildGovernanceExecutionCommitment, buildGovernanceExecutionRequest, buildGovernanceIntentRequest, buildGovernanceProposedCommitment, buildHumanReviewPlan, buildHumanOverride, computeGovernedPayloadHash, createGovernanceEnforcementMiddleware, getGovernanceEnforcementTasks, governancePurchaseTypeForTask, governanceTaskRequiresProposedCommitment, targetDeclaresGovernanceEnforcement, targetDeclaresLegacyGovernanceAwareness, validateGovernancePlan, verifyGovernanceAuthorization, verifyHistoricalGovernanceContext, createGovernanceAgentJwksResolver, REGULATED_HUMAN_REVIEW_CATEGORIES, ANNEX_III_POLICY_IDS, } from './governance/index.mjs';
45
45
  export { ssrfSafeFetch, decodeBodyAsJsonOrText, SSRF_TRANSIENT_CODES, SsrfRefusedError, isPrivateIp, isAlwaysBlocked, isLikelyPrivateUrl, type SsrfRefusedCode, type SsrfDnsLookup, type SsrfFetchOptions, type SsrfFetchResult, } from './net/index.mjs';
46
46
  export { createCanonicalReferenceCache, createCanonicalReferenceResolver, canonicalReferenceCacheKey, resolveCanonicalReference, resolveFormatSchemaReference, resolvePlatformExtensionsReference, type CanonicalReference, type CanonicalReferenceCache, type CanonicalReferenceCacheOptions, type CanonicalReferenceError, type CanonicalReferenceErrorCode, type CanonicalReferenceFailureResult, type CanonicalReferenceKind, type CanonicalReferenceResolveOptions, type CanonicalReferenceResolvedResult, type CanonicalReferenceResolver, type CanonicalReferenceResolverOptions, type CanonicalReferenceResult, type CanonicalReferenceStatus, type ExternalRefDigestMap, type FormatSchemaReferenceResolvedResult, type FormatSchemaReferenceResult, type PlatformExtensionsReferenceResult, } from './canonical-references/index.mjs';
47
47
  export { assessAcceptancePolicy, createAcceptancePolicyCatalogResolver, resolveAcceptancePolicyCatalog, resolveAcceptancePolicyProfiles, resolveVerifiedAcceptancePolicyProfiles, type AcceptancePolicyCatalog, type AcceptancePolicyCatalogErrorCode, type AcceptancePolicyCatalogFailure, type AcceptancePolicyCatalogIssue, type AcceptancePolicyCatalogResolver, type AcceptancePolicyCatalogResult, type AcceptancePolicyCatalogSuccess, type AcceptancePolicyDiscoveryCapability, type AcceptancePolicyProfile, type AcceptancePolicyProfileResolution, type AcceptancePolicyRegistryPolicy, type AcceptancePolicyRegistryResolver, type AcceptancePolicyReference, type AcceptancePolicyRequirement, type AcceptancePolicyRule, type AcceptancePolicySurface, type RegistryAcceptancePolicyProfileReference, type ResolveAcceptancePolicyCatalogOptions, type ResolveVerifiedAcceptancePolicyProfilesOptions, type ResolvedAcceptancePolicyDefault, type VerifiedAcceptancePolicyProfilesResult, type VerifiedAcceptancePolicyProfilesSuccess, } from './acceptance-policy/index.mjs';
48
48
  export { type AcceptancePolicyAssessment, type AcceptancePolicyAssessmentDiagnostic, type AcceptancePolicyAssessmentDiagnosticCode, type AcceptancePolicyMatchedRule, type AcceptancePolicyOutcome, type AssessAcceptancePolicyInput, } from './acceptance-policy/evaluator.mjs';
49
- export type { BuildGovernanceExecutionRequestInput, BuildGovernanceIntentRequestInput, BuildHumanReviewPlanInput, BuildHumanOverrideInput, DataSubjectContestation, GovernanceAuthorizationClaims, GovernanceAuthorizationCriticalClaim, GovernanceAuthorizationErrorCode, GovernanceAuthorizationFailure, GovernanceAuthorizationResult, GovernanceAuthorizationSuccess, GovernanceCommitment, GovernanceEnforcementMiddleware, GovernanceEnforcementMiddlewareConfig, GovernanceEnforcementMiddlewareInput, GovernanceEnforcementMode, GovernanceEnforcementTask, GovernancePlan, GovernanceReplayStore, GovernanceReplayBinding, GovernanceRevocationResolver, GovernanceRevocationStatus, GovernanceValidationIssue, HumanOverride, InMemoryGovernanceReplayStoreOptions, PlanBudget, ReallocationAutonomy, VerifyGovernanceAuthorizationOptions, GovernanceBuyerIdentity, } from './governance/index.mjs';
49
+ export type { BuildGovernanceExecutionRequestInput, BuildGovernanceIntentRequestInput, BuildHumanReviewPlanInput, BuildHumanOverrideInput, DataSubjectContestation, GovernanceAuthorizationClaims, GovernanceAuthorizationCriticalClaim, GovernanceAuthorizationErrorCode, GovernanceAuthorizationFailure, GovernanceAuthorizationResult, GovernanceAuthorizationSuccess, GovernanceCommitment, GovernanceEnforcementMiddleware, GovernanceEnforcementMiddlewareConfig, GovernanceEnforcementMiddlewareInput, GovernanceEnforcementMode, GovernanceEnforcementTask, GovernancePlan, GovernanceReplayStore, GovernanceReplayBinding, GovernanceRevocationResolver, GovernanceRevocationStatus, GovernanceValidationIssue, HumanOverride, InMemoryGovernanceReplayStoreOptions, PlanBudget, ReallocationAutonomy, VerifyGovernanceAuthorizationOptions, VerifyHistoricalGovernanceContextOptions, HistoricalGovernanceContextResult, GovernanceBuyerIdentity, } from './governance/index.mjs';
50
50
  export type { BaseTaskEvent, ProtocolRequestEvent, ProtocolResponseEvent, TaskStatusEvent, ObjectEvent, TaskEvent, TaskEventCallbacks, } from './core/TaskEventTypes.mjs';
51
51
  export { createOperationId } from './core/TaskEventTypes.mjs';
52
52
  export type { AsyncHandlerConfig, WebhookMetadata, Activity, NotificationMetadata, MediaBuyDeliveryNotification, CreateMediaBuyStatusChangeHandler, UpdateMediaBuyStatusChangeHandler, SyncCreativesStatusChangeHandler, GetProductsStatusChangeHandler, ListProductsStatusChangeHandler, } from './core/AsyncHandler.mjs';
@@ -41,12 +41,12 @@ export type { GovernanceConfig, CampaignGovernanceConfig, GovernanceCheckResult,
41
41
  export { GovernanceMiddleware } from './core/GovernanceMiddleware';
42
42
  export { isGovernanceApproved, isGovernanceConditions, isGovernanceDenied, normalizeGovernanceVerdict, } from './core/GovernanceTypes';
43
43
  export type { GovernanceDebugEntry } from './core/GovernanceMiddleware';
44
- export { GOVERNANCE_AUTHORIZATION_CRITICAL_CLAIMS, GovernanceAuthorizationError, GovernanceReplayStoreAdapter, InMemoryGovernanceReplayStore, buildGovernanceCommitment, buildGovernanceExecutionCommitment, buildGovernanceExecutionRequest, buildGovernanceIntentRequest, buildGovernanceProposedCommitment, buildHumanReviewPlan, buildHumanOverride, computeGovernedPayloadHash, createGovernanceEnforcementMiddleware, getGovernanceEnforcementTasks, governancePurchaseTypeForTask, governanceTaskRequiresProposedCommitment, targetDeclaresGovernanceEnforcement, targetDeclaresLegacyGovernanceAwareness, validateGovernancePlan, verifyGovernanceAuthorization, createGovernanceAgentJwksResolver, REGULATED_HUMAN_REVIEW_CATEGORIES, ANNEX_III_POLICY_IDS, } from './governance';
44
+ export { GOVERNANCE_AUTHORIZATION_CRITICAL_CLAIMS, GovernanceAuthorizationError, GovernanceReplayStoreAdapter, InMemoryGovernanceReplayStore, buildGovernanceCommitment, buildGovernanceExecutionCommitment, buildGovernanceExecutionRequest, buildGovernanceIntentRequest, buildGovernanceProposedCommitment, buildHumanReviewPlan, buildHumanOverride, computeGovernedPayloadHash, createGovernanceEnforcementMiddleware, getGovernanceEnforcementTasks, governancePurchaseTypeForTask, governanceTaskRequiresProposedCommitment, targetDeclaresGovernanceEnforcement, targetDeclaresLegacyGovernanceAwareness, validateGovernancePlan, verifyGovernanceAuthorization, verifyHistoricalGovernanceContext, createGovernanceAgentJwksResolver, REGULATED_HUMAN_REVIEW_CATEGORIES, ANNEX_III_POLICY_IDS, } from './governance';
45
45
  export { ssrfSafeFetch, decodeBodyAsJsonOrText, SSRF_TRANSIENT_CODES, SsrfRefusedError, isPrivateIp, isAlwaysBlocked, isLikelyPrivateUrl, type SsrfRefusedCode, type SsrfDnsLookup, type SsrfFetchOptions, type SsrfFetchResult, } from './net';
46
46
  export { createCanonicalReferenceCache, createCanonicalReferenceResolver, canonicalReferenceCacheKey, resolveCanonicalReference, resolveFormatSchemaReference, resolvePlatformExtensionsReference, type CanonicalReference, type CanonicalReferenceCache, type CanonicalReferenceCacheOptions, type CanonicalReferenceError, type CanonicalReferenceErrorCode, type CanonicalReferenceFailureResult, type CanonicalReferenceKind, type CanonicalReferenceResolveOptions, type CanonicalReferenceResolvedResult, type CanonicalReferenceResolver, type CanonicalReferenceResolverOptions, type CanonicalReferenceResult, type CanonicalReferenceStatus, type ExternalRefDigestMap, type FormatSchemaReferenceResolvedResult, type FormatSchemaReferenceResult, type PlatformExtensionsReferenceResult, } from './canonical-references';
47
47
  export { assessAcceptancePolicy, createAcceptancePolicyCatalogResolver, resolveAcceptancePolicyCatalog, resolveAcceptancePolicyProfiles, resolveVerifiedAcceptancePolicyProfiles, type AcceptancePolicyCatalog, type AcceptancePolicyCatalogErrorCode, type AcceptancePolicyCatalogFailure, type AcceptancePolicyCatalogIssue, type AcceptancePolicyCatalogResolver, type AcceptancePolicyCatalogResult, type AcceptancePolicyCatalogSuccess, type AcceptancePolicyDiscoveryCapability, type AcceptancePolicyProfile, type AcceptancePolicyProfileResolution, type AcceptancePolicyRegistryPolicy, type AcceptancePolicyRegistryResolver, type AcceptancePolicyReference, type AcceptancePolicyRequirement, type AcceptancePolicyRule, type AcceptancePolicySurface, type RegistryAcceptancePolicyProfileReference, type ResolveAcceptancePolicyCatalogOptions, type ResolveVerifiedAcceptancePolicyProfilesOptions, type ResolvedAcceptancePolicyDefault, type VerifiedAcceptancePolicyProfilesResult, type VerifiedAcceptancePolicyProfilesSuccess, } from './acceptance-policy';
48
48
  export { type AcceptancePolicyAssessment, type AcceptancePolicyAssessmentDiagnostic, type AcceptancePolicyAssessmentDiagnosticCode, type AcceptancePolicyMatchedRule, type AcceptancePolicyOutcome, type AssessAcceptancePolicyInput, } from './acceptance-policy/evaluator';
49
- export type { BuildGovernanceExecutionRequestInput, BuildGovernanceIntentRequestInput, BuildHumanReviewPlanInput, BuildHumanOverrideInput, DataSubjectContestation, GovernanceAuthorizationClaims, GovernanceAuthorizationCriticalClaim, GovernanceAuthorizationErrorCode, GovernanceAuthorizationFailure, GovernanceAuthorizationResult, GovernanceAuthorizationSuccess, GovernanceCommitment, GovernanceEnforcementMiddleware, GovernanceEnforcementMiddlewareConfig, GovernanceEnforcementMiddlewareInput, GovernanceEnforcementMode, GovernanceEnforcementTask, GovernancePlan, GovernanceReplayStore, GovernanceReplayBinding, GovernanceRevocationResolver, GovernanceRevocationStatus, GovernanceValidationIssue, HumanOverride, InMemoryGovernanceReplayStoreOptions, PlanBudget, ReallocationAutonomy, VerifyGovernanceAuthorizationOptions, GovernanceBuyerIdentity, } from './governance';
49
+ export type { BuildGovernanceExecutionRequestInput, BuildGovernanceIntentRequestInput, BuildHumanReviewPlanInput, BuildHumanOverrideInput, DataSubjectContestation, GovernanceAuthorizationClaims, GovernanceAuthorizationCriticalClaim, GovernanceAuthorizationErrorCode, GovernanceAuthorizationFailure, GovernanceAuthorizationResult, GovernanceAuthorizationSuccess, GovernanceCommitment, GovernanceEnforcementMiddleware, GovernanceEnforcementMiddlewareConfig, GovernanceEnforcementMiddlewareInput, GovernanceEnforcementMode, GovernanceEnforcementTask, GovernancePlan, GovernanceReplayStore, GovernanceReplayBinding, GovernanceRevocationResolver, GovernanceRevocationStatus, GovernanceValidationIssue, HumanOverride, InMemoryGovernanceReplayStoreOptions, PlanBudget, ReallocationAutonomy, VerifyGovernanceAuthorizationOptions, VerifyHistoricalGovernanceContextOptions, HistoricalGovernanceContextResult, GovernanceBuyerIdentity, } from './governance';
50
50
  export type { BaseTaskEvent, ProtocolRequestEvent, ProtocolResponseEvent, TaskStatusEvent, ObjectEvent, TaskEvent, TaskEventCallbacks, } from './core/TaskEventTypes';
51
51
  export { createOperationId } from './core/TaskEventTypes';
52
52
  export type { AsyncHandlerConfig, WebhookMetadata, Activity, NotificationMetadata, MediaBuyDeliveryNotification, CreateMediaBuyStatusChangeHandler, UpdateMediaBuyStatusChangeHandler, SyncCreativesStatusChangeHandler, GetProductsStatusChangeHandler, ListProductsStatusChangeHandler, } from './core/AsyncHandler';
package/dist/lib/index.js CHANGED
@@ -714,6 +714,7 @@ __export(index_exports, {
714
714
  vastAssetSlot: () => import_format_asset_slot_builders.vastAssetSlot,
715
715
  vastGroupAsset: () => import_format_asset_slot_builders.vastGroupAsset,
716
716
  verifyGovernanceAuthorization: () => import_governance.verifyGovernanceAuthorization,
717
+ verifyHistoricalGovernanceContext: () => import_governance.verifyHistoricalGovernanceContext,
717
718
  verifyIntrospection: () => import_server.verifyIntrospection,
718
719
  videoAsset: () => import_asset_builders.videoAsset,
719
720
  videoAssetSlot: () => import_format_asset_slot_builders.videoAssetSlot,
@@ -1558,6 +1559,7 @@ function createAdCPClientFromEnv() {
1558
1559
  vastAssetSlot,
1559
1560
  vastGroupAsset,
1560
1561
  verifyGovernanceAuthorization,
1562
+ verifyHistoricalGovernanceContext,
1561
1563
  verifyIntrospection,
1562
1564
  videoAsset,
1563
1565
  videoAssetSlot,
@@ -160,6 +160,7 @@ import {
160
160
  targetDeclaresLegacyGovernanceAwareness,
161
161
  validateGovernancePlan,
162
162
  verifyGovernanceAuthorization,
163
+ verifyHistoricalGovernanceContext,
163
164
  createGovernanceAgentJwksResolver,
164
165
  REGULATED_HUMAN_REVIEW_CATEGORIES,
165
166
  ANNEX_III_POLICY_IDS
@@ -1520,6 +1521,7 @@ export {
1520
1521
  vastAssetSlot,
1521
1522
  vastGroupAsset,
1522
1523
  verifyGovernanceAuthorization,
1524
+ verifyHistoricalGovernanceContext,
1523
1525
  verifyIntrospection,
1524
1526
  videoAsset,
1525
1527
  videoAssetSlot,
@@ -4314,6 +4314,12 @@ export interface components {
4314
4314
  severity: string;
4315
4315
  message: string;
4316
4316
  }[];
4317
+ /** @description Advisory AdCP 4.0 readiness from the latest non-dry-run compliance run, graded against universal/v4-compatibility.yaml. Does not affect 3.x verification or conformance. Null when the latest run predates the report. */
4318
+ v4_readiness?: {
4319
+ registry_version: string;
4320
+ target_version: string;
4321
+ checks: components["schemas"]["V4ReadinessCheck"][];
4322
+ } | null;
4317
4323
  /** @description Owner-scoped: the agent owner's membership tier. Populated only when the authenticated viewer owns the agent; null otherwise. Field is always present so response shape doesn't reveal ownership. */
4318
4324
  membership_tier?: string | null;
4319
4325
  /** @description Owner-scoped: human-readable label for membership_tier (e.g. 'Builder'). Null for non-owners. */
@@ -4388,6 +4394,23 @@ export interface components {
4388
4394
  /** Format: uri */
4389
4395
  reference_url?: string;
4390
4396
  };
4397
+ V4ReadinessCheck: {
4398
+ /** @description Stable check id from universal/v4-compatibility.yaml. */
4399
+ id: string;
4400
+ /** @enum {string} */
4401
+ status: "passed" | "failing" | "not_observable";
4402
+ /**
4403
+ * @description Why a not_observable check could not be graded. Null for passed and failing.
4404
+ * @enum {string|null}
4405
+ */
4406
+ reason: "storyboard_not_run" | "step_not_run" | "step_skipped" | "not_graded" | "notice_absent" | "not_observed_by_suite" | null;
4407
+ issue: number | null;
4408
+ change: string | null;
4409
+ detection: string;
4410
+ fix: string;
4411
+ /** @description Migration guide anchor for the check. */
4412
+ guide_url: string | null;
4413
+ };
4391
4414
  /** @description Owner-scoped membership leg of badge eligibility. Non-owners receive eligible: null and an empty blocker list. */
4392
4415
  OwnerComplianceEligibility: {
4393
4416
  criteria_version: string;
@@ -4405,7 +4428,7 @@ export interface components {
4405
4428
  adcp_version: string;
4406
4429
  verified_at: string;
4407
4430
  /** @description Specialisms demonstrably passed (enums/specialism.json). Preview specialisms are excluded from stable badges. */
4408
- verified_specialisms: ("audience-sync" | "brand-rights" | "buyer-activation" | "buyer-discovery" | "buyer-monitoring" | "buyer-negotiation" | "buyer-recovery" | "collection-lists" | "content-standards" | "creative-ad-server" | "creative-generative" | "creative-template" | "creative-transformers" | "governance-aware-seller" | "governance-delivery-monitor" | "governance-spend-authority" | "property-lists" | "sales-broadcast-tv" | "sales-catalog-driven" | "sales-dooh" | "sales-exchange" | "sales-guaranteed" | "sales-non-guaranteed" | "sales-proposal-mode" | "sales-retail-media" | "sales-streaming-tv" | "sales-social" | "signal-marketplace" | "orchestrator-multi-agent" | "signal-owned" | "signed-requests" | "sponsored-intelligence")[];
4431
+ verified_specialisms: ("audience-sync" | "brand-rights" | "buyer-activation" | "buyer-discovery" | "buyer-monitoring" | "buyer-negotiation" | "buyer-recovery" | "collection-lists" | "content-standards" | "creative-ad-server" | "creative-generative" | "creative-template" | "creative-transformers" | "governance-aware-seller" | "governance-delivery-monitor" | "governance-spend-authority" | "property-lists" | "sales-broadcast-tv" | "sales-catalog-driven" | "sales-dooh" | "sales-exchange" | "sales-fixed-rate" | "sales-guaranteed" | "sales-non-guaranteed" | "sales-proposal-mode" | "sales-retail-media" | "sales-streaming-tv" | "sales-social" | "signal-marketplace" | "orchestrator-multi-agent" | "signal-owned" | "signed-requests" | "sponsored-intelligence")[];
4409
4432
  /** @description Evidence modes earned. 'spec' = AdCP storyboards were exercised; 'live' = production traffic was observed. Independent of grading_profile and always non-empty when a badge is present. */
4410
4433
  verification_modes: ("spec" | "live")[];
4411
4434
  /**
@@ -4314,6 +4314,12 @@ export interface components {
4314
4314
  severity: string;
4315
4315
  message: string;
4316
4316
  }[];
4317
+ /** @description Advisory AdCP 4.0 readiness from the latest non-dry-run compliance run, graded against universal/v4-compatibility.yaml. Does not affect 3.x verification or conformance. Null when the latest run predates the report. */
4318
+ v4_readiness?: {
4319
+ registry_version: string;
4320
+ target_version: string;
4321
+ checks: components["schemas"]["V4ReadinessCheck"][];
4322
+ } | null;
4317
4323
  /** @description Owner-scoped: the agent owner's membership tier. Populated only when the authenticated viewer owns the agent; null otherwise. Field is always present so response shape doesn't reveal ownership. */
4318
4324
  membership_tier?: string | null;
4319
4325
  /** @description Owner-scoped: human-readable label for membership_tier (e.g. 'Builder'). Null for non-owners. */
@@ -4388,6 +4394,23 @@ export interface components {
4388
4394
  /** Format: uri */
4389
4395
  reference_url?: string;
4390
4396
  };
4397
+ V4ReadinessCheck: {
4398
+ /** @description Stable check id from universal/v4-compatibility.yaml. */
4399
+ id: string;
4400
+ /** @enum {string} */
4401
+ status: "passed" | "failing" | "not_observable";
4402
+ /**
4403
+ * @description Why a not_observable check could not be graded. Null for passed and failing.
4404
+ * @enum {string|null}
4405
+ */
4406
+ reason: "storyboard_not_run" | "step_not_run" | "step_skipped" | "not_graded" | "notice_absent" | "not_observed_by_suite" | null;
4407
+ issue: number | null;
4408
+ change: string | null;
4409
+ detection: string;
4410
+ fix: string;
4411
+ /** @description Migration guide anchor for the check. */
4412
+ guide_url: string | null;
4413
+ };
4391
4414
  /** @description Owner-scoped membership leg of badge eligibility. Non-owners receive eligible: null and an empty blocker list. */
4392
4415
  OwnerComplianceEligibility: {
4393
4416
  criteria_version: string;
@@ -4405,7 +4428,7 @@ export interface components {
4405
4428
  adcp_version: string;
4406
4429
  verified_at: string;
4407
4430
  /** @description Specialisms demonstrably passed (enums/specialism.json). Preview specialisms are excluded from stable badges. */
4408
- verified_specialisms: ("audience-sync" | "brand-rights" | "buyer-activation" | "buyer-discovery" | "buyer-monitoring" | "buyer-negotiation" | "buyer-recovery" | "collection-lists" | "content-standards" | "creative-ad-server" | "creative-generative" | "creative-template" | "creative-transformers" | "governance-aware-seller" | "governance-delivery-monitor" | "governance-spend-authority" | "property-lists" | "sales-broadcast-tv" | "sales-catalog-driven" | "sales-dooh" | "sales-exchange" | "sales-guaranteed" | "sales-non-guaranteed" | "sales-proposal-mode" | "sales-retail-media" | "sales-streaming-tv" | "sales-social" | "signal-marketplace" | "orchestrator-multi-agent" | "signal-owned" | "signed-requests" | "sponsored-intelligence")[];
4431
+ verified_specialisms: ("audience-sync" | "brand-rights" | "buyer-activation" | "buyer-discovery" | "buyer-monitoring" | "buyer-negotiation" | "buyer-recovery" | "collection-lists" | "content-standards" | "creative-ad-server" | "creative-generative" | "creative-template" | "creative-transformers" | "governance-aware-seller" | "governance-delivery-monitor" | "governance-spend-authority" | "property-lists" | "sales-broadcast-tv" | "sales-catalog-driven" | "sales-dooh" | "sales-exchange" | "sales-fixed-rate" | "sales-guaranteed" | "sales-non-guaranteed" | "sales-proposal-mode" | "sales-retail-media" | "sales-streaming-tv" | "sales-social" | "signal-marketplace" | "orchestrator-multi-agent" | "signal-owned" | "signed-requests" | "sponsored-intelligence")[];
4409
4432
  /** @description Evidence modes earned. 'spec' = AdCP storyboards were exercised; 'live' = production traffic was observed. Independent of grading_profile and always non-empty when a badge is present. */
4410
4433
  verification_modes: ("spec" | "live")[];
4411
4434
  /**
@@ -83,8 +83,8 @@ export { createPinAndBindFetch, WEBHOOK_SSRF_POLICY, LOOPBACK_OK_WEBHOOK_SSRF_PO
83
83
  export type { PinAndBindFetchOptions, DnsLookupAll } from './pin-and-bind-fetch.mjs';
84
84
  export { checkGovernance, createAdcpGovernanceEnforcementMiddleware, governanceDeniedError, governanceUnavailableError, } from './governance.mjs';
85
85
  export type { AdcpGovernanceEnforcementMiddleware, CheckGovernanceOptions, GovernanceCallResult, GovernanceApproved, GovernanceDenied, GovernanceConditions, } from './governance.mjs';
86
- export { GovernanceAuthorizationError, GovernanceReplayStoreAdapter, InMemoryGovernanceReplayStore, buildGovernanceExecutionCommitment, buildGovernanceExecutionRequest, computeGovernedPayloadHash, createGovernanceEnforcementMiddleware, verifyGovernanceAuthorization, createGovernanceAgentJwksResolver, } from '../governance/index.mjs';
87
- export type { BuildGovernanceExecutionRequestInput, GovernanceAuthorizationClaims, GovernanceAuthorizationErrorCode, GovernanceAuthorizationResult, GovernanceAuthorizationSuccess, GovernanceCommitment, GovernanceEnforcementMiddleware, GovernanceEnforcementMiddlewareConfig, GovernanceEnforcementMiddlewareInput, GovernanceReplayStore, GovernanceReplayBinding, GovernanceRevocationResolver, GovernanceRevocationStatus, VerifyGovernanceAuthorizationOptions, GovernanceBuyerIdentity, } from '../governance/index.mjs';
86
+ export { GovernanceAuthorizationError, GovernanceReplayStoreAdapter, InMemoryGovernanceReplayStore, buildGovernanceExecutionCommitment, buildGovernanceExecutionRequest, computeGovernedPayloadHash, createGovernanceEnforcementMiddleware, verifyGovernanceAuthorization, verifyHistoricalGovernanceContext, createGovernanceAgentJwksResolver, } from '../governance/index.mjs';
87
+ export type { BuildGovernanceExecutionRequestInput, GovernanceAuthorizationClaims, GovernanceAuthorizationErrorCode, GovernanceAuthorizationResult, GovernanceAuthorizationSuccess, GovernanceCommitment, GovernanceEnforcementMiddleware, GovernanceEnforcementMiddlewareConfig, GovernanceEnforcementMiddlewareInput, GovernanceReplayStore, GovernanceReplayBinding, GovernanceRevocationResolver, GovernanceRevocationStatus, VerifyGovernanceAuthorizationOptions, VerifyHistoricalGovernanceContextOptions, HistoricalGovernanceContextResult, GovernanceBuyerIdentity, } from '../governance/index.mjs';
88
88
  export { clearDefaultResolvedListCache, createResolvedListCache, DEFAULT_RESOLVE_LIST_PAGE_SIZE, defaultResolvedListCache, resolvePropertyList, resolveCollectionList, resolvedListCacheKey, matchesPropertyList, matchesCollectionList, } from './targeting-helpers.mjs';
89
89
  export type { ResolvedListCache, ResolvedListCacheEntry, ResolvedListCacheValue, ResolvedListKind, ResolvedPropertyList, ResolvedCollectionList, ResolvedCollection, ResolveListCallTool, ResolveListOptions, } from './targeting-helpers.mjs';
90
90
  export * from './decisioning/index.mjs';
@@ -83,8 +83,8 @@ export { createPinAndBindFetch, WEBHOOK_SSRF_POLICY, LOOPBACK_OK_WEBHOOK_SSRF_PO
83
83
  export type { PinAndBindFetchOptions, DnsLookupAll } from './pin-and-bind-fetch';
84
84
  export { checkGovernance, createAdcpGovernanceEnforcementMiddleware, governanceDeniedError, governanceUnavailableError, } from './governance';
85
85
  export type { AdcpGovernanceEnforcementMiddleware, CheckGovernanceOptions, GovernanceCallResult, GovernanceApproved, GovernanceDenied, GovernanceConditions, } from './governance';
86
- export { GovernanceAuthorizationError, GovernanceReplayStoreAdapter, InMemoryGovernanceReplayStore, buildGovernanceExecutionCommitment, buildGovernanceExecutionRequest, computeGovernedPayloadHash, createGovernanceEnforcementMiddleware, verifyGovernanceAuthorization, createGovernanceAgentJwksResolver, } from '../governance';
87
- export type { BuildGovernanceExecutionRequestInput, GovernanceAuthorizationClaims, GovernanceAuthorizationErrorCode, GovernanceAuthorizationResult, GovernanceAuthorizationSuccess, GovernanceCommitment, GovernanceEnforcementMiddleware, GovernanceEnforcementMiddlewareConfig, GovernanceEnforcementMiddlewareInput, GovernanceReplayStore, GovernanceReplayBinding, GovernanceRevocationResolver, GovernanceRevocationStatus, VerifyGovernanceAuthorizationOptions, GovernanceBuyerIdentity, } from '../governance';
86
+ export { GovernanceAuthorizationError, GovernanceReplayStoreAdapter, InMemoryGovernanceReplayStore, buildGovernanceExecutionCommitment, buildGovernanceExecutionRequest, computeGovernedPayloadHash, createGovernanceEnforcementMiddleware, verifyGovernanceAuthorization, verifyHistoricalGovernanceContext, createGovernanceAgentJwksResolver, } from '../governance';
87
+ export type { BuildGovernanceExecutionRequestInput, GovernanceAuthorizationClaims, GovernanceAuthorizationErrorCode, GovernanceAuthorizationResult, GovernanceAuthorizationSuccess, GovernanceCommitment, GovernanceEnforcementMiddleware, GovernanceEnforcementMiddlewareConfig, GovernanceEnforcementMiddlewareInput, GovernanceReplayStore, GovernanceReplayBinding, GovernanceRevocationResolver, GovernanceRevocationStatus, VerifyGovernanceAuthorizationOptions, VerifyHistoricalGovernanceContextOptions, HistoricalGovernanceContextResult, GovernanceBuyerIdentity, } from '../governance';
88
88
  export { clearDefaultResolvedListCache, createResolvedListCache, DEFAULT_RESOLVE_LIST_PAGE_SIZE, defaultResolvedListCache, resolvePropertyList, resolveCollectionList, resolvedListCacheKey, matchesPropertyList, matchesCollectionList, } from './targeting-helpers';
89
89
  export type { ResolvedListCache, ResolvedListCacheEntry, ResolvedListCacheValue, ResolvedListKind, ResolvedPropertyList, ResolvedCollectionList, ResolvedCollection, ResolveListCallTool, ResolveListOptions, } from './targeting-helpers';
90
90
  export * from './decisioning';
@@ -293,6 +293,7 @@ __export(server_exports, {
293
293
  verifyApiKey: () => import_auth.verifyApiKey,
294
294
  verifyBearer: () => import_auth.verifyBearer,
295
295
  verifyGovernanceAuthorization: () => import_governance2.verifyGovernanceAuthorization,
296
+ verifyHistoricalGovernanceContext: () => import_governance2.verifyHistoricalGovernanceContext,
296
297
  verifyIntrospection: () => import_auth_introspection.verifyIntrospection,
297
298
  verifyProposalTermsDigest: () => import_verification.verifyProposalTermsDigest,
298
299
  verifySignatureAsAuthenticator: () => import_auth_signature.verifySignatureAsAuthenticator,
@@ -633,6 +634,7 @@ var import_property_lists = require('./property-lists.js');
633
634
  verifyApiKey,
634
635
  verifyBearer,
635
636
  verifyGovernanceAuthorization,
637
+ verifyHistoricalGovernanceContext,
636
638
  verifyIntrospection,
637
639
  verifyProposalTermsDigest,
638
640
  verifySignatureAsAuthenticator,
@@ -236,6 +236,7 @@ import {
236
236
  computeGovernedPayloadHash,
237
237
  createGovernanceEnforcementMiddleware,
238
238
  verifyGovernanceAuthorization,
239
+ verifyHistoricalGovernanceContext,
239
240
  createGovernanceAgentJwksResolver
240
241
  } from "../governance/index.mjs";
241
242
  import {
@@ -579,6 +580,7 @@ export {
579
580
  verifyApiKey,
580
581
  verifyBearer,
581
582
  verifyGovernanceAuthorization,
583
+ verifyHistoricalGovernanceContext,
582
584
  verifyIntrospection,
583
585
  verifyProposalTermsDigest,
584
586
  verifySignatureAsAuthenticator,
@@ -35,6 +35,7 @@ __export(web_bot_auth_exports, {
35
35
  deferWebBotAuthPrincipalFailure: () => deferWebBotAuthPrincipalFailure,
36
36
  getWebBotAuthAuthorizationFailure: () => getWebBotAuthAuthorizationFailure,
37
37
  getWebBotAuthLegacyOriginGate: () => getWebBotAuthLegacyOriginGate,
38
+ isRefusedWebBotAuthTestKey: () => isRefusedWebBotAuthTestKey,
38
39
  isVerifiedWebBotSigner: () => isVerifiedWebBotSigner,
39
40
  isWebBotAuthRevocationChecked: () => isWebBotAuthRevocationChecked,
40
41
  jwkThumbprint: () => jwkThumbprint,
@@ -570,6 +571,9 @@ async function legacyRevocationCheck(options, origin, keyid) {
570
571
  function testKeysAllowed(allowTestKeys) {
571
572
  return allowTestKeys === true && ["test", "development"].includes(process.env.NODE_ENV ?? "");
572
573
  }
574
+ function isRefusedWebBotAuthTestKey(kid, allowTestKeys) {
575
+ return TEST_KIDS.has(kid) && !testKeysAllowed(allowTestKeys);
576
+ }
573
577
  async function verifyKeyDirectory(response, now = Date.now() / 1e3, options = {}) {
574
578
  try {
575
579
  if (!Number.isFinite(now)) denied("directory_invalid");
@@ -937,6 +941,7 @@ function createWebBotAuthFetch(upstream, key, options) {
937
941
  deferWebBotAuthPrincipalFailure,
938
942
  getWebBotAuthAuthorizationFailure,
939
943
  getWebBotAuthLegacyOriginGate,
944
+ isRefusedWebBotAuthTestKey,
940
945
  isVerifiedWebBotSigner,
941
946
  isWebBotAuthRevocationChecked,
942
947
  jwkThumbprint,
@@ -526,6 +526,9 @@ async function legacyRevocationCheck(options, origin, keyid) {
526
526
  function testKeysAllowed(allowTestKeys) {
527
527
  return allowTestKeys === true && ["test", "development"].includes(process.env.NODE_ENV ?? "");
528
528
  }
529
+ function isRefusedWebBotAuthTestKey(kid, allowTestKeys) {
530
+ return TEST_KIDS.has(kid) && !testKeysAllowed(allowTestKeys);
531
+ }
529
532
  async function verifyKeyDirectory(response, now = Date.now() / 1e3, options = {}) {
530
533
  try {
531
534
  if (!Number.isFinite(now)) denied("directory_invalid");
@@ -892,6 +895,7 @@ export {
892
895
  deferWebBotAuthPrincipalFailure,
893
896
  getWebBotAuthAuthorizationFailure,
894
897
  getWebBotAuthLegacyOriginGate,
898
+ isRefusedWebBotAuthTestKey,
895
899
  isVerifiedWebBotSigner,
896
900
  isWebBotAuthRevocationChecked,
897
901
  jwkThumbprint,
@@ -197,7 +197,7 @@ export interface UpstreamTrafficQueryResult {
197
197
  */
198
198
  export declare function runValidations(validations: StoryboardValidation[], context: ValidationContext): ValidationResult[];
199
199
  /** Capability semver emitted in run summaries and used for advisory expiry. */
200
- export declare const RUNNER_CAPABILITY_VERSION = "16.1.0";
200
+ export declare const RUNNER_CAPABILITY_VERSION = "16.2.0";
201
201
  /** True when a failed validation contributes to the owning step's grade. */
202
202
  export declare function validationFailsStep(result: ValidationResult): boolean;
203
203
  /**
@@ -197,7 +197,7 @@ export interface UpstreamTrafficQueryResult {
197
197
  */
198
198
  export declare function runValidations(validations: StoryboardValidation[], context: ValidationContext): ValidationResult[];
199
199
  /** Capability semver emitted in run summaries and used for advisory expiry. */
200
- export declare const RUNNER_CAPABILITY_VERSION = "16.1.0";
200
+ export declare const RUNNER_CAPABILITY_VERSION = "16.2.0";
201
201
  /** True when a failed validation contributes to the owning step's grade. */
202
202
  export declare function validationFailsStep(result: ValidationResult): boolean;
203
203
  /**
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * AdCP SDK library version
3
3
  */
4
- export declare const LIBRARY_VERSION = "16.1.0";
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.1.0";
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-20T17:31:57.242Z";
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
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * AdCP SDK library version
3
3
  */
4
- export declare const LIBRARY_VERSION = "16.1.0";
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.1.0";
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-20T17:31:57.242Z";
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
@@ -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.1.0";
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.1.0",
105
+ library: "16.2.0",
106
106
  adcp: "3.2.5",
107
107
  compatibleVersions: COMPATIBLE_ADCP_VERSIONS,
108
- generatedAt: "2026-10-20T17:31:57.242Z"
108
+ generatedAt: "2026-10-22T00:56:23.729Z"
109
109
  };
110
110
  function getAdcpVersion() {
111
111
  return ADCP_VERSION;
@@ -1,4 +1,4 @@
1
- const LIBRARY_VERSION = "16.1.0";
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.1.0",
72
+ library: "16.2.0",
73
73
  adcp: "3.2.5",
74
74
  compatibleVersions: COMPATIBLE_ADCP_VERSIONS,
75
- generatedAt: "2026-10-20T17:31:57.242Z"
75
+ generatedAt: "2026-10-22T00:56:23.729Z"
76
76
  };
77
77
  function getAdcpVersion() {
78
78
  return ADCP_VERSION;
@@ -1,7 +1,7 @@
1
1
  # AdCP Type Summary
2
2
 
3
- > Generated at: 2026-10-20
4
- > @adcp/sdk v16.1.0
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
 
package/docs/llms.txt CHANGED
@@ -1,7 +1,7 @@
1
1
  # Ad Context Protocol (AdCP)
2
2
 
3
- > Generated at: 2026-10-20
4
- > Library: @adcp/sdk v16.1.0
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.1`; 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.
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.1.0` |
20
- | npm integrity | registry-derived after publication; run `npm view @adcp/sdk@16.1.0 dist.integrity` |
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.1.0'
30
- npm view '@adcp/sdk@16.1.0' dist.integrity
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
@@ -375,12 +375,57 @@ included) never falls back to brand.json `authorized_operators[]`, and it is
375
375
  not a grant removal: spend gets a retryable `SERVICE_UNAVAILABLE`.
376
376
 
377
377
  Origin key revocations use `/.well-known/governance-revocations.json`, signed
378
- with `typ: adcp-gov-revocation+jws`, as ratified R3 specifies. This origin key
379
- list does not migrate governance-context, designated-task response or rights
380
- JWS discovery: those retain the RFC chain in 3.3. Polling fails closed, revoked
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
381
381
  keys remain revoked forever, `keyCompromise` cannot be weakened, and the earliest
382
382
  `invalidity_date` is retained. Revocation never pauses or cancels committed buys.
383
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
+
384
429
  Permanent revocation storage reserves separate bounded capacity for audited bound
385
430
  origins and anonymous/self-service origins, so first-contact traffic cannot exhaust the bound
386
431
  pool. Storage failures deny reads and mutations without outage grace; inspect the
@@ -492,9 +537,9 @@ so verification can run in a CDN or middleware in front of the AdCP server.
492
537
  Cloudflare's `web-bot-auth`; they already used signed directories and are
493
538
  unchanged.
494
539
  #7894 drops the governance-token checks and the `governance/` vectors from the
495
- WBA profile. Governance moves to the AdCP layer under a separate R4 erratum,
496
- which moves JWS artifacts, governance included, to the identity's WBA key
497
- directory in 3.3. This change leaves the SDK's governance code as it is.
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).
498
543
  The buyer default onboarding field is `profiles.adcp.onboarding`, matching the
499
544
  schema; the design's `record_profiles` wording names the schema definition.
500
545
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adcp/sdk",
3
- "version": "16.1.0",
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.2.0",
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.2.0",
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": [