@adcp/sdk 14.0.0-rc.52 → 14.0.0-rc.53

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 (39) hide show
  1. package/dist/lib/registry/types.generated.d.mts +12 -0
  2. package/dist/lib/registry/types.generated.d.ts +12 -0
  3. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  4. package/dist/lib/server/auth-signature.d.mts +5 -2
  5. package/dist/lib/server/auth-signature.d.ts +5 -2
  6. package/dist/lib/signing/content-digest.d.mts +8 -0
  7. package/dist/lib/signing/content-digest.d.ts +8 -0
  8. package/dist/lib/signing/content-digest.js +13 -4
  9. package/dist/lib/signing/content-digest.mjs +11 -4
  10. package/dist/lib/signing/parser.d.mts +1 -1
  11. package/dist/lib/signing/parser.d.ts +1 -1
  12. package/dist/lib/signing/parser.js +3 -2
  13. package/dist/lib/signing/parser.mjs +3 -2
  14. package/dist/lib/signing/verifier.d.mts +6 -2
  15. package/dist/lib/signing/verifier.d.ts +6 -2
  16. package/dist/lib/signing/verifier.js +14 -10
  17. package/dist/lib/signing/verifier.mjs +15 -10
  18. package/dist/lib/testing/compliance/comply.d.mts +107 -1
  19. package/dist/lib/testing/compliance/comply.d.ts +107 -1
  20. package/dist/lib/testing/compliance/comply.js +313 -1
  21. package/dist/lib/testing/compliance/comply.mjs +320 -2
  22. package/dist/lib/testing/compliance/index.d.mts +1 -1
  23. package/dist/lib/testing/compliance/index.d.ts +1 -1
  24. package/dist/lib/testing/index.d.mts +1 -1
  25. package/dist/lib/testing/index.d.ts +1 -1
  26. package/dist/lib/testing/storyboard/runner.js +10 -0
  27. package/dist/lib/testing/storyboard/runner.mjs +8 -0
  28. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  29. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  30. package/dist/lib/version.d.mts +3 -3
  31. package/dist/lib/version.d.ts +3 -3
  32. package/dist/lib/version.js +3 -3
  33. package/dist/lib/version.mjs +3 -3
  34. package/docs/TYPE-SUMMARY.md +1 -1
  35. package/docs/guides/VALIDATE-YOUR-AGENT.md +49 -0
  36. package/docs/llms.txt +1 -1
  37. package/docs/migration-13-to-14.md +14 -7
  38. package/docs/migration-14.x-rc-worksheet.md +4 -4
  39. package/package.json +1 -1
@@ -4,7 +4,7 @@
4
4
  * comply → "Your agent works" (deterministic, per-track)
5
5
  */
6
6
  export { comply, collectObservations, buildComplianceBundleResults, computeOverallStatus, formatComplianceResults, formatComplianceResultsJSON, rotateStoryboardsForOffset, } from './comply.mjs';
7
- export type { ComplyOptions, ComplianceBundleAssessmentOptions } from './comply.mjs';
7
+ export type { ComplyOptions, ComplianceBundleAssessmentOptions, ComplyRouteStoryboardContext, ComplyStoryboardRoute, ComplyStoryboardRouting, ComplyStoryboardSkip, } from './comply.mjs';
8
8
  export { buildComplianceSummary, buildCrashSummary, formatComplianceSummaryText, formatComplianceSummaryMarkdown, } from './summary.mjs';
9
9
  export type { ComplianceSummaryArtifact, ComplianceSummaryFailure, ComplianceSummaryFailureKind, BuildSummaryOptions, BuildCrashSummaryOptions, } from './summary.mjs';
10
10
  export { SAMPLE_BRIEFS, getBriefById, getBriefsByVertical } from './briefs.mjs';
@@ -4,7 +4,7 @@
4
4
  * comply → "Your agent works" (deterministic, per-track)
5
5
  */
6
6
  export { comply, collectObservations, buildComplianceBundleResults, computeOverallStatus, formatComplianceResults, formatComplianceResultsJSON, rotateStoryboardsForOffset, } from './comply';
7
- export type { ComplyOptions, ComplianceBundleAssessmentOptions } from './comply';
7
+ export type { ComplyOptions, ComplianceBundleAssessmentOptions, ComplyRouteStoryboardContext, ComplyStoryboardRoute, ComplyStoryboardRouting, ComplyStoryboardSkip, } from './comply';
8
8
  export { buildComplianceSummary, buildCrashSummary, formatComplianceSummaryText, formatComplianceSummaryMarkdown, } from './summary';
9
9
  export type { ComplianceSummaryArtifact, ComplianceSummaryFailure, ComplianceSummaryFailureKind, BuildSummaryOptions, BuildCrashSummaryOptions, } from './summary';
10
10
  export { SAMPLE_BRIEFS, getBriefById, getBriefsByVertical } from './briefs';
@@ -1,6 +1,6 @@
1
1
  export { testAgent, testAgentA2A, testAgentClient, createTestAgent, TEST_AGENT_TOKEN, TEST_AGENT_MCP_CONFIG, TEST_AGENT_A2A_CONFIG, testAgentNoAuth, testAgentNoAuthA2A, TEST_AGENT_NO_AUTH_MCP_CONFIG, TEST_AGENT_NO_AUTH_A2A_CONFIG, creativeAgent, } from './test-helpers.mjs';
2
2
  export { testAgent as runAgentTests, formatTestResults, formatTestResultsJSON, formatTestResultsSummary, setAgentTesterLogger, getLogger, createTestClient, runStep, testHealthCheck, testDiscovery, testCreateMediaBuy, testFullSalesFlow, testReportingFlow, testCreativeSync, testCreativeInline, testCreativeFlow, testSignalsFlow, testErrorHandling, testValidation, testPricingEdgeCases, testTemporalValidation, testBehaviorAnalysis, testResponseConsistency, testGovernancePropertyLists, testGovernanceContentStandards, testPropertyListFilters, testSISessionLifecycle, testSIAvailability, testSIHandoff, testCapabilityDiscovery, testSyncAudiences, resolveAccountForMediaBuy, resolveAccountForAudiences, testSchemaCompliance, testMediaBuyLifecycle, testTerminalStateEnforcement, testPackageLifecycle, testCreativeStateMachine, testMediaBuyStateMachine, testAccountStateMachine, testSessionStateMachine, testDeliverySimulation, testBudgetSimulation, testControllerValidation, testBrandRightsFlow, hasBrandRightsTools, hasGovernanceTools, hasSITools, likelySupportsV3, testAllScenarios, getApplicableScenarios, SCENARIO_REQUIREMENTS, DEFAULT_SCENARIOS, formatSuiteResults, formatSuiteResultsJSON, type TestScenario, type TestOptions, type OrchestratorOptions, type TestResult, type SuiteResult, type TestStepResult, type AgentProfile, type TaskResult, type TestClient, type Logger, } from './agent-tester.mjs';
3
- export { comply, buildComplianceBundleResults, formatComplianceResults, formatComplianceResultsJSON, buildComplianceSummary, SAMPLE_BRIEFS, getBriefById, getBriefsByVertical, type ComplyOptions, type ComplianceBundleAssessmentOptions, type ComplianceTrack, type TrackResult, type TestedTrackEntry, type TrackStatus, type ComplianceBundleResult, type ComplianceBundleStatus, type ComplianceResult, type ComplianceSummary, type ComplianceSummaryArtifact, type BuildSummaryOptions, type AdvisoryObservation, type ObservationSource, type SampleBrief, } from './compliance/index.mjs';
3
+ export { comply, buildComplianceBundleResults, formatComplianceResults, formatComplianceResultsJSON, buildComplianceSummary, SAMPLE_BRIEFS, getBriefById, getBriefsByVertical, type ComplyOptions, type ComplianceBundleAssessmentOptions, type ComplyRouteStoryboardContext, type ComplyStoryboardRoute, type ComplyStoryboardRouting, type ComplyStoryboardSkip, type ComplianceTrack, type TrackResult, type TestedTrackEntry, type TrackStatus, type ComplianceBundleResult, type ComplianceBundleStatus, type ComplianceResult, type ComplianceSummary, type ComplianceSummaryArtifact, type BuildSummaryOptions, type AdvisoryObservation, type ObservationSource, type SampleBrief, } from './compliance/index.mjs';
4
4
  export { GovernanceAgentStub } from './stubs/index.mjs';
5
5
  export type { StubCallRecord } from './stubs/index.mjs';
6
6
  export { expectControllerError, expectControllerSuccess } from './controller-assertions.mjs';
@@ -1,6 +1,6 @@
1
1
  export { testAgent, testAgentA2A, testAgentClient, createTestAgent, TEST_AGENT_TOKEN, TEST_AGENT_MCP_CONFIG, TEST_AGENT_A2A_CONFIG, testAgentNoAuth, testAgentNoAuthA2A, TEST_AGENT_NO_AUTH_MCP_CONFIG, TEST_AGENT_NO_AUTH_A2A_CONFIG, creativeAgent, } from './test-helpers';
2
2
  export { testAgent as runAgentTests, formatTestResults, formatTestResultsJSON, formatTestResultsSummary, setAgentTesterLogger, getLogger, createTestClient, runStep, testHealthCheck, testDiscovery, testCreateMediaBuy, testFullSalesFlow, testReportingFlow, testCreativeSync, testCreativeInline, testCreativeFlow, testSignalsFlow, testErrorHandling, testValidation, testPricingEdgeCases, testTemporalValidation, testBehaviorAnalysis, testResponseConsistency, testGovernancePropertyLists, testGovernanceContentStandards, testPropertyListFilters, testSISessionLifecycle, testSIAvailability, testSIHandoff, testCapabilityDiscovery, testSyncAudiences, resolveAccountForMediaBuy, resolveAccountForAudiences, testSchemaCompliance, testMediaBuyLifecycle, testTerminalStateEnforcement, testPackageLifecycle, testCreativeStateMachine, testMediaBuyStateMachine, testAccountStateMachine, testSessionStateMachine, testDeliverySimulation, testBudgetSimulation, testControllerValidation, testBrandRightsFlow, hasBrandRightsTools, hasGovernanceTools, hasSITools, likelySupportsV3, testAllScenarios, getApplicableScenarios, SCENARIO_REQUIREMENTS, DEFAULT_SCENARIOS, formatSuiteResults, formatSuiteResultsJSON, type TestScenario, type TestOptions, type OrchestratorOptions, type TestResult, type SuiteResult, type TestStepResult, type AgentProfile, type TaskResult, type TestClient, type Logger, } from './agent-tester';
3
- export { comply, buildComplianceBundleResults, formatComplianceResults, formatComplianceResultsJSON, buildComplianceSummary, SAMPLE_BRIEFS, getBriefById, getBriefsByVertical, type ComplyOptions, type ComplianceBundleAssessmentOptions, type ComplianceTrack, type TrackResult, type TestedTrackEntry, type TrackStatus, type ComplianceBundleResult, type ComplianceBundleStatus, type ComplianceResult, type ComplianceSummary, type ComplianceSummaryArtifact, type BuildSummaryOptions, type AdvisoryObservation, type ObservationSource, type SampleBrief, } from './compliance';
3
+ export { comply, buildComplianceBundleResults, formatComplianceResults, formatComplianceResultsJSON, buildComplianceSummary, SAMPLE_BRIEFS, getBriefById, getBriefsByVertical, type ComplyOptions, type ComplianceBundleAssessmentOptions, type ComplyRouteStoryboardContext, type ComplyStoryboardRoute, type ComplyStoryboardRouting, type ComplyStoryboardSkip, type ComplianceTrack, type TrackResult, type TestedTrackEntry, type TrackStatus, type ComplianceBundleResult, type ComplianceBundleStatus, type ComplianceResult, type ComplianceSummary, type ComplianceSummaryArtifact, type BuildSummaryOptions, type AdvisoryObservation, type ObservationSource, type SampleBrief, } from './compliance';
4
4
  export { GovernanceAgentStub } from './stubs';
5
5
  export type { StubCallRecord } from './stubs';
6
6
  export { expectControllerError, expectControllerSuccess } from './controller-assertions';
@@ -42,6 +42,7 @@ __export(runner_exports, {
42
42
  applyStoryboardVersionOptions: () => applyStoryboardVersionOptions,
43
43
  buildDiscoveryFailedResult: () => buildDiscoveryFailedResult,
44
44
  buildStepRequest: () => buildStepRequest,
45
+ collectCapabilityNotices: () => collectCapabilityNotices,
45
46
  describeStoryboardCapabilityGates: () => describeStoryboardCapabilityGates,
46
47
  evaluateCapabilityPredicate: () => evaluateCapabilityPredicate,
47
48
  getFirstStepPreview: () => getFirstStepPreview,
@@ -52,6 +53,7 @@ __export(runner_exports, {
52
53
  runStoryboardStep: () => runStoryboardStep,
53
54
  signingCoverage: () => signingCoverage,
54
55
  signingCoverageUnverified: () => signingCoverageUnverified,
56
+ storyboardCapabilityGateUnmet: () => storyboardCapabilityGateUnmet,
55
57
  storyboardCapabilityPredicates: () => storyboardCapabilityPredicates,
56
58
  summarizeStrictValidation: () => summarizeStrictValidation
57
59
  });
@@ -377,6 +379,12 @@ function evaluateStoryboardCapabilityGates(storyboard, profile, agentTools, adcp
377
379
  return `Capability predicates not satisfied:
378
380
  ${failures.map((detail) => `- ${detail}`).join("\n")}`;
379
381
  }
382
+ function storyboardCapabilityGateUnmet(storyboard, options) {
383
+ if (storyboardCapabilityPredicates(storyboard).length === 0) return null;
384
+ const versioned = applyStoryboardVersionOptions(storyboard, applyReusableProfileOptions(options));
385
+ if (versioned._profile === void 0) return null;
386
+ return evaluateStoryboardCapabilityGates(storyboard, versioned._profile, versioned.agentTools, versioned.adcpVersion);
387
+ }
380
388
  function collectPhaseCapabilitySkipDetails(storyboard, profile, agentTools, adcpVersion) {
381
389
  const skipDetails = /* @__PURE__ */ new Map();
382
390
  for (const phase of storyboard.phases) {
@@ -6562,6 +6570,7 @@ function getFirstStepPreview(storyboard, context = {}) {
6562
6570
  applyStoryboardVersionOptions,
6563
6571
  buildDiscoveryFailedResult,
6564
6572
  buildStepRequest,
6573
+ collectCapabilityNotices,
6565
6574
  describeStoryboardCapabilityGates,
6566
6575
  evaluateCapabilityPredicate,
6567
6576
  getFirstStepPreview,
@@ -6572,6 +6581,7 @@ function getFirstStepPreview(storyboard, context = {}) {
6572
6581
  runStoryboardStep,
6573
6582
  signingCoverage,
6574
6583
  signingCoverageUnverified,
6584
+ storyboardCapabilityGateUnmet,
6575
6585
  storyboardCapabilityPredicates,
6576
6586
  summarizeStrictValidation
6577
6587
  });
@@ -401,6 +401,12 @@ function evaluateStoryboardCapabilityGates(storyboard, profile, agentTools, adcp
401
401
  return `Capability predicates not satisfied:
402
402
  ${failures.map((detail) => `- ${detail}`).join("\n")}`;
403
403
  }
404
+ function storyboardCapabilityGateUnmet(storyboard, options) {
405
+ if (storyboardCapabilityPredicates(storyboard).length === 0) return null;
406
+ const versioned = applyStoryboardVersionOptions(storyboard, applyReusableProfileOptions(options));
407
+ if (versioned._profile === void 0) return null;
408
+ return evaluateStoryboardCapabilityGates(storyboard, versioned._profile, versioned.agentTools, versioned.adcpVersion);
409
+ }
404
410
  function collectPhaseCapabilitySkipDetails(storyboard, profile, agentTools, adcpVersion) {
405
411
  const skipDetails = /* @__PURE__ */ new Map();
406
412
  for (const phase of storyboard.phases) {
@@ -6585,6 +6591,7 @@ export {
6585
6591
  applyStoryboardVersionOptions,
6586
6592
  buildDiscoveryFailedResult,
6587
6593
  buildStepRequest,
6594
+ collectCapabilityNotices,
6588
6595
  describeStoryboardCapabilityGates,
6589
6596
  evaluateCapabilityPredicate,
6590
6597
  getFirstStepPreview,
@@ -6595,6 +6602,7 @@ export {
6595
6602
  runStoryboardStep,
6596
6603
  signingCoverage,
6597
6604
  signingCoverageUnverified,
6605
+ storyboardCapabilityGateUnmet,
6598
6606
  storyboardCapabilityPredicates,
6599
6607
  summarizeStrictValidation
6600
6608
  };
@@ -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 = "14.0.0-rc.52";
200
+ export declare const RUNNER_CAPABILITY_VERSION = "14.0.0-rc.53";
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 = "14.0.0-rc.52";
200
+ export declare const RUNNER_CAPABILITY_VERSION = "14.0.0-rc.53";
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 = "14.0.0-rc.52";
4
+ export declare const LIBRARY_VERSION = "14.0.0-rc.53";
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-rc.52";
36
+ readonly library: "14.0.0-rc.53";
37
37
  readonly adcp: "3.2.0-rc.7";
38
38
  readonly compatibleVersions: readonly ["v2.5", "v2.6", "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.2.0-rc.7", "3.2-rc.7"];
39
- readonly generatedAt: "2026-09-30T05:16:13.982Z";
39
+ readonly generatedAt: "2026-09-30T09:24:27.054Z";
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-rc.52";
4
+ export declare const LIBRARY_VERSION = "14.0.0-rc.53";
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-rc.52";
36
+ readonly library: "14.0.0-rc.53";
37
37
  readonly adcp: "3.2.0-rc.7";
38
38
  readonly compatibleVersions: readonly ["v2.5", "v2.6", "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.2.0-rc.7", "3.2-rc.7"];
39
- readonly generatedAt: "2026-09-30T05:16:13.982Z";
39
+ readonly generatedAt: "2026-09-30T09:24:27.054Z";
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-rc.52";
34
+ const LIBRARY_VERSION = "14.0.0-rc.53";
35
35
  const ADCP_VERSION = "3.2.0-rc.7";
36
36
  const ADCP_MAJOR_VERSION = 3;
37
37
  const COMPATIBLE_ADCP_VERSIONS = [
@@ -95,10 +95,10 @@ const COMPATIBLE_ADCP_VERSIONS = [
95
95
  "3.2-rc.7"
96
96
  ];
97
97
  const VERSION_INFO = {
98
- library: "14.0.0-rc.52",
98
+ library: "14.0.0-rc.53",
99
99
  adcp: "3.2.0-rc.7",
100
100
  compatibleVersions: COMPATIBLE_ADCP_VERSIONS,
101
- generatedAt: "2026-09-30T05:16:13.982Z"
101
+ generatedAt: "2026-09-30T09:24:27.054Z"
102
102
  };
103
103
  function getAdcpVersion() {
104
104
  return ADCP_VERSION;
@@ -1,4 +1,4 @@
1
- const LIBRARY_VERSION = "14.0.0-rc.52";
1
+ const LIBRARY_VERSION = "14.0.0-rc.53";
2
2
  const ADCP_VERSION = "3.2.0-rc.7";
3
3
  const ADCP_MAJOR_VERSION = 3;
4
4
  const COMPATIBLE_ADCP_VERSIONS = [
@@ -62,10 +62,10 @@ const COMPATIBLE_ADCP_VERSIONS = [
62
62
  "3.2-rc.7"
63
63
  ];
64
64
  const VERSION_INFO = {
65
- library: "14.0.0-rc.52",
65
+ library: "14.0.0-rc.53",
66
66
  adcp: "3.2.0-rc.7",
67
67
  compatibleVersions: COMPATIBLE_ADCP_VERSIONS,
68
- generatedAt: "2026-09-30T05:16:13.982Z"
68
+ generatedAt: "2026-09-30T09:24:27.054Z"
69
69
  };
70
70
  function getAdcpVersion() {
71
71
  return ADCP_VERSION;
@@ -1,7 +1,7 @@
1
1
  # AdCP Type Summary
2
2
 
3
3
  > Generated at: 2026-09-30
4
- > @adcp/sdk v14.0.0-rc.52
4
+ > @adcp/sdk v14.0.0-rc.53
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
 
@@ -187,6 +187,55 @@ await comply(agentUrl, {
187
187
  });
188
188
  ```
189
189
 
190
+ **Multi-agent storyboards under `comply()`.** `comply()` grades one agent, so
191
+ storyboards that declare `requires: [multi_agent]` (for example the
192
+ governance-aware seller scenarios) skip with `requirement_unmet` and cap their
193
+ bundle at `partial`. A grader that can supply the other agents can route them
194
+ per storyboard with `routeStoryboard`; every other storyboard keeps the
195
+ ordinary single-URL run:
196
+
197
+ ```ts
198
+ await comply(agentUrl, {
199
+ auth: { type: 'bearer', token: ownerToken },
200
+ routeStoryboard: storyboard => {
201
+ if (!storyboard.requires?.includes('multi_agent')) return undefined; // unchanged run
202
+ if (!canRoute(storyboard)) return { skip: `${storyboard.id}: no governance agent for this topology` };
203
+ return {
204
+ agents: {
205
+ seller: { url: agentUrl }, // agent under test: inherits the run-level auth
206
+ governance: { url: governanceUrl, auth: { type: 'bearer', token: governanceToken } },
207
+ },
208
+ default_agent: 'seller',
209
+ context: { seller_agent_url: agentUrl },
210
+ };
211
+ },
212
+ });
213
+ ```
214
+
215
+ A routed result lands in `tracks`, `failures`, `storyboards_executed` and
216
+ `bundle_results` like any other run, graded against the agent under test
217
+ only. A failed step, or a discovery failure, on another routed agent becomes a
218
+ `prerequisite_failed` coverage gap (`partial`, never `failing`). A routed
219
+ storyboard in which no step served by the agent under test passed cannot reach
220
+ `passing`. `{ skip }` records the same `requirement_unmet` row an unrouted
221
+ `multi_agent` storyboard gets, with your reason (control characters stripped)
222
+ as `skip.detail`, so the bundle stays `partial`. Storyboards whose root
223
+ capability predicate the agent under test does not satisfy are never passed to
224
+ the hook and stay `not_applicable`. The hook's `profile` argument is the
225
+ agent's own capability answer, so treat it as untrusted.
226
+
227
+ `comply()` throws on caller misconfiguration. That covers a `default_agent`
228
+ that is not the agent under test, an entry whose `auth` is not a real
229
+ credential object (only the agent-under-test entry may omit it; it then keeps
230
+ the run-level credential, which is dropped from the shared routed options), run-level
231
+ `headers` (they are sent to every routed agent), and a replacement
232
+ `storyboard` that changes phases, steps, validations or gates. A storyboard that
233
+ would send `$test_kit.auth` or `from_test_kit` credentials through a step not
234
+ pinned to the agent under test is recorded as a skip instead of being routed.
235
+ Run-level `transport`, including a `trustedFetchFn` egress guard, applies to
236
+ every routed agent. Version negotiation is done once, against the agent under
237
+ test, and shared by the routed agents.
238
+
190
239
  **OAuth-protected agents.** Storyboard runs reuse tokens saved under an alias. Two supported flows:
191
240
 
192
241
  ```bash
package/docs/llms.txt CHANGED
@@ -1,7 +1,7 @@
1
1
  # Ad Context Protocol (AdCP)
2
2
 
3
3
  > Generated at: 2026-09-30
4
- > Library: @adcp/sdk v14.0.0-rc.52
4
+ > Library: @adcp/sdk v14.0.0-rc.53
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.
@@ -975,12 +975,16 @@ SDK 13 used the legacy AdCP 3.0/3.1 representation. SDK 14 selects between two p
975
975
 
976
976
  High-level A2A/MCP clients carry the configured agent version automatically. Low-level signing integrations should pass their trusted version context and can inspect the signature encoding with `requestSigningEncodingForVersion()`. For SDK 13 source compatibility, a low-level verifier with no `adcpVersion` accepts either signature encoding and applies its configured digest-coverage policy; an explicit trusted 3.2 pin keeps mandatory digest coverage.
977
977
 
978
- For a staged server rollout, set the internal verifier option
979
- `signedRequests.covers_content_digest: 'either'` to accept SDK 13 Base64URL
980
- signatures and SDK 14's 3.2 encoding on the same endpoint. Continue advertising
981
- `covers_content_digest: 'required'` in the 3.2 capability document; SDK 14
982
- projects that strict public contract automatically. Move the internal verifier
983
- to `required` after legacy callers are gone.
978
+ A verifier pinned to AdCP 3.2 parses `Signature` and `Content-Digest` only as
979
+ RFC 8941 padded standard Base64. It rejects an SDK 13 Base64URL token with
980
+ `request_signature_header_malformed` at parse time (checklist step 1 for
981
+ `Signature`), even when the internal verifier policy is
982
+ `signedRequests.covers_content_digest: 'either'`; the spec forbids a 3.2
983
+ verifier from retrying a legacy token through a second decoder. To keep
984
+ accepting SDK 13 signers, serve them from a separately configured endpoint
985
+ pinned to 3.0/3.1, or coordinate the cutover before the shared endpoint
986
+ advertises 3.2. A 3.0/3.1-pinned endpoint in `'either'` mode still accepts both
987
+ serializations.
984
988
 
985
989
  Do not select a signing profile from a version value inside an unverified request body or header. On the server, bind the version to the endpoint, tenant, or authenticated agent configuration. Webhook signatures do not move to the 3.2 request profile.
986
990
 
@@ -988,7 +992,10 @@ Low-level `verifyRequestSignature()` calls that omit `adcpVersion` tolerate both
988
992
  the legacy Base64URL and 3.2 RFC 8941 Base64 serialization so frozen 3.0/3.1
989
993
  integrations do not inherit the SDK's own protocol pin. This does not relax
990
994
  digest policy: `capability.covers_content_digest` remains authoritative. Pass a
991
- trusted `adcpVersion` whenever one is available for deterministic diagnostics.
995
+ trusted `adcpVersion` whenever one is available. An endpoint that advertises
996
+ 3.2 must pass `adcpVersion: '3.2'` (or its exact 3.2 release): an unpinned
997
+ verifier accepts a Base64URL token that a 3.2 verifier must reject, so it fails
998
+ the `profile-3.2/negative/001-base64url-sf-binary` conformance vector.
992
999
 
993
1000
  ## Cross-role governance is capability-gated
994
1001
 
@@ -11,8 +11,8 @@ below as the publication/deployment gate.
11
11
 
12
12
  | Fact | Value |
13
13
  | --- | --- |
14
- | Exact npm package | `@adcp/sdk@14.0.0-rc.52` |
15
- | npm integrity | registry-derived after publication; run `npm view @adcp/sdk@14.0.0-rc.52 dist.integrity` |
14
+ | Exact npm package | `@adcp/sdk@14.0.0-rc.53` |
15
+ | npm integrity | registry-derived after publication; run `npm view @adcp/sdk@14.0.0-rc.53 dist.integrity` |
16
16
  | Node.js runtime | `^20.19.0 || >=22.12.0` |
17
17
  | Default AdCP wire release | `3.2.0-rc.7` |
18
18
  | Maintained wire releases | `v2.5`, `v2.6`, `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.2.0-rc.7`, `3.2-rc.7` |
@@ -21,8 +21,8 @@ below as the publication/deployment gate.
21
21
  Install exact production inputs rather than a moving prerelease range:
22
22
 
23
23
  ```bash
24
- npm install --save-exact '@adcp/sdk@14.0.0-rc.52'
25
- npm view '@adcp/sdk@14.0.0-rc.52' dist.integrity
24
+ npm install --save-exact '@adcp/sdk@14.0.0-rc.53'
25
+ npm view '@adcp/sdk@14.0.0-rc.53' dist.integrity
26
26
  ```
27
27
 
28
28
  ### Required and optional peers
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adcp/sdk",
3
- "version": "14.0.0-rc.52",
3
+ "version": "14.0.0-rc.53",
4
4
  "description": "AdCP SDK — client, server, and compliance harnesses for the AdContext Protocol (MCP + A2A)",
5
5
  "workspaces": [
6
6
  ".",