@adcp/sdk 15.9.1 → 15.9.2

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.
@@ -47,6 +47,7 @@ var import_signedRequestRejection = require('../protocols/signedRequestRejection
47
47
  var import_errors = require('../errors/index.js');
48
48
  var import_client_hooks = require('../validation/client-hooks.js');
49
49
  var import_schema_validator = require('../validation/schema-validator.js');
50
+ var import_schema_loader = require('../validation/schema-loader.js');
50
51
  var import_version = require('../version.js');
51
52
  var import_response_unwrapper = require('../utils/response-unwrapper.js');
52
53
  var import_error_extraction = require('../utils/error-extraction.js');
@@ -4397,7 +4398,10 @@ class TaskExecutor {
4397
4398
  const mode = this.responseValidationMode;
4398
4399
  const logViolations = this.config.logSchemaViolations !== false;
4399
4400
  try {
4400
- const validationVersion = (serverVersion ?? this.lastKnownServerVersion) === "v2" ? "v2.5" : this.responseAdcpVersionForValidation() ?? this.config.adcpVersion ?? import_version.ADCP_VERSION;
4401
+ let validationVersion = (serverVersion ?? this.lastKnownServerVersion) === "v2" ? "v2.5" : this.responseAdcpVersionForValidation() ?? this.config.adcpVersion ?? import_version.ADCP_VERSION;
4402
+ if (taskName === "get_adcp_capabilities" && validationVersion !== "v2.5") {
4403
+ validationVersion = (0, import_schema_loader.resolveServedValidationVersion)(response, validationVersion);
4404
+ }
4401
4405
  const normalizedResponse = this.normalizeResponseForValidation(response, taskName, validationVersion === "v2.5");
4402
4406
  const outcome = (0, import_client_hooks.validateIncomingResponse)(taskName, normalizedResponse, mode, void 0, validationVersion);
4403
4407
  if (outcome.valid) return { valid: true, errors: [] };
@@ -15,6 +15,7 @@ import {
15
15
  resolveValidationModes
16
16
  } from "../validation/client-hooks.mjs";
17
17
  import { formatIssues } from "../validation/schema-validator.mjs";
18
+ import { resolveServedValidationVersion } from "../validation/schema-loader.mjs";
18
19
  import { ADCP_VERSION } from "../version.mjs";
19
20
  import { unwrapProtocolResponse, isAdcpOperationSuccess } from "../utils/response-unwrapper.mjs";
20
21
  import { extractAdcpErrorInfo, extractCorrelationId } from "../utils/error-extraction.mjs";
@@ -4370,7 +4371,10 @@ class TaskExecutor {
4370
4371
  const mode = this.responseValidationMode;
4371
4372
  const logViolations = this.config.logSchemaViolations !== false;
4372
4373
  try {
4373
- const validationVersion = (serverVersion ?? this.lastKnownServerVersion) === "v2" ? "v2.5" : this.responseAdcpVersionForValidation() ?? this.config.adcpVersion ?? ADCP_VERSION;
4374
+ let validationVersion = (serverVersion ?? this.lastKnownServerVersion) === "v2" ? "v2.5" : this.responseAdcpVersionForValidation() ?? this.config.adcpVersion ?? ADCP_VERSION;
4375
+ if (taskName === "get_adcp_capabilities" && validationVersion !== "v2.5") {
4376
+ validationVersion = resolveServedValidationVersion(response, validationVersion);
4377
+ }
4374
4378
  const normalizedResponse = this.normalizeResponseForValidation(response, taskName, validationVersion === "v2.5");
4375
4379
  const outcome = validateIncomingResponse(taskName, normalizedResponse, mode, void 0, validationVersion);
4376
4380
  if (outcome.valid) return { valid: true, errors: [] };
@@ -4,5 +4,5 @@
4
4
  "source_sha": "4e553ad955f83b49c7d221ab5c3ff78237ad02e3",
5
5
  "source_tarball_sha256": "580656d6466ef9f0d1119985e6726c2efea718dc671e2ad30957fcb2fd54af0f",
6
6
  "upstream_adcp_version": "2.5.3",
7
- "synced_at": "2026-10-14T11:39:27.882Z"
7
+ "synced_at": "2026-10-15T19:50:31.412Z"
8
8
  }
@@ -50,6 +50,7 @@ var import_ssrf_fetch = require('../net/ssrf-fetch.js');
50
50
  var import_version = require('../version.js');
51
51
  var import_node_crypto = require("node:crypto");
52
52
  var import_client_hooks = require('../validation/client-hooks.js');
53
+ var import_schema_loader = require('../validation/schema-loader.js');
53
54
  var import_error_extraction = require('../utils/error-extraction.js');
54
55
  var import_client = require('../signing/client.js');
55
56
  var import_storage_registry = require('../auth/oauth/storage-registry.js');
@@ -418,7 +419,7 @@ async function discoverAgentProfile(client, signal, schemaAdcpVersion) {
418
419
  caps.data,
419
420
  "strict",
420
421
  void 0,
421
- schemaAdcpVersion ?? client.getAdcpVersion()
422
+ (0, import_schema_loader.resolveServedValidationVersion)(caps.data, schemaAdcpVersion ?? client.getAdcpVersion())
422
423
  );
423
424
  if (!validation.valid) {
424
425
  profile.capabilities_schema_issues = validation.issues.map((issue) => ({
@@ -10,6 +10,7 @@ import { SsrfRefusedError } from "../net/ssrf-fetch.mjs";
10
10
  import { ADCP_VERSION, toReleasePrecisionVersion } from "../version.mjs";
11
11
  import { createHmac, hkdfSync, randomBytes } from "node:crypto";
12
12
  import { validateIncomingResponse } from "../validation/client-hooks.mjs";
13
+ import { resolveServedValidationVersion } from "../validation/schema-loader.mjs";
13
14
  import { extractVersionUnsupportedDetails } from "../utils/error-extraction.mjs";
14
15
  import { buildAgentSigningContext } from "../signing/client.mjs";
15
16
  import { bindAgentStorage } from "../auth/oauth/storage-registry.mjs";
@@ -378,7 +379,7 @@ async function discoverAgentProfile(client, signal, schemaAdcpVersion) {
378
379
  caps.data,
379
380
  "strict",
380
381
  void 0,
381
- schemaAdcpVersion ?? client.getAdcpVersion()
382
+ resolveServedValidationVersion(caps.data, schemaAdcpVersion ?? client.getAdcpVersion())
382
383
  );
383
384
  if (!validation.valid) {
384
385
  profile.capabilities_schema_issues = validation.issues.map((issue) => ({
@@ -239,7 +239,7 @@ function crossValidateProtocolsAndTools(capabilities, tools) {
239
239
  creative: import_capabilities.CREATIVE_TOOLS,
240
240
  sponsored_intelligence: import_capabilities.SPONSORED_INTELLIGENCE_TOOLS,
241
241
  trusted_match: import_capabilities.TRUSTED_MATCH_TOOLS,
242
- compliance: import_capabilities.COMPLIANCE_TOOLS
242
+ compliance_testing: import_capabilities.COMPLIANCE_TOOLS
243
243
  };
244
244
  const perProtocolDiffs = {};
245
245
  for (const protocol of capabilities.protocols) {
@@ -225,7 +225,7 @@ function crossValidateProtocolsAndTools(capabilities, tools) {
225
225
  creative: CREATIVE_TOOLS,
226
226
  sponsored_intelligence: SPONSORED_INTELLIGENCE_TOOLS,
227
227
  trusted_match: TRUSTED_MATCH_TOOLS,
228
- compliance: COMPLIANCE_TOOLS
228
+ compliance_testing: COMPLIANCE_TOOLS
229
229
  };
230
230
  const perProtocolDiffs = {};
231
231
  for (const protocol of capabilities.protocols) {
@@ -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 = "15.9.1";
200
+ export declare const RUNNER_CAPABILITY_VERSION = "15.9.2";
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 = "15.9.1";
200
+ export declare const RUNNER_CAPABILITY_VERSION = "15.9.2";
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
  /**
@@ -46,6 +46,7 @@ __export(schema_loader_exports, {
46
46
  listValidatorKeys: () => listValidatorKeys,
47
47
  registerExternalSchemaRoot: () => registerExternalSchemaRoot,
48
48
  resolveBundleKey: () => resolveBundleKey,
49
+ resolveServedValidationVersion: () => resolveServedValidationVersion,
49
50
  schemaAllowsTopLevelField: () => schemaAllowsTopLevelField,
50
51
  toReleasePrecisionWire: () => toReleasePrecisionWire,
51
52
  unregisterExternalSchemaRoot: () => unregisterExternalSchemaRoot,
@@ -718,6 +719,29 @@ function hasSchemaBundle(version) {
718
719
  return false;
719
720
  }
720
721
  }
722
+ const SERVED_RELEASE_MAJOR = /^(\d+)\.\d+(?:-[a-zA-Z0-9.-]+)?$/;
723
+ const NUMERIC_PIN_MAJOR = /^(\d+)\.\d+/;
724
+ function resolveServedValidationVersion(response, pinnedVersion) {
725
+ const pinMajor = NUMERIC_PIN_MAJOR.exec(pinnedVersion)?.[1];
726
+ if (pinMajor === void 0) return pinnedVersion;
727
+ try {
728
+ if (isExternalSchemaRootActive(pinnedVersion)) return pinnedVersion;
729
+ } catch {
730
+ return pinnedVersion;
731
+ }
732
+ const echoed = response !== null && typeof response === "object" ? response.adcp_version : void 0;
733
+ if (typeof echoed !== "string") return pinnedVersion;
734
+ const echoMajor = SERVED_RELEASE_MAJOR.exec(echoed)?.[1];
735
+ if (echoMajor === void 0 || echoMajor !== pinMajor) return pinnedVersion;
736
+ let pinnedRelease;
737
+ try {
738
+ pinnedRelease = toReleasePrecisionWire(pinnedVersion);
739
+ } catch {
740
+ return pinnedVersion;
741
+ }
742
+ if (echoed === pinnedRelease) return pinnedVersion;
743
+ return hasSchemaBundle(echoed) ? echoed : pinnedVersion;
744
+ }
721
745
  const mcpToolSchemaCache = /* @__PURE__ */ new Map();
722
746
  const mcpToolSummaryCache = /* @__PURE__ */ new Map();
723
747
  function boundedMcpToolSummary(value) {
@@ -981,6 +1005,7 @@ function cloneJsonValue(value) {
981
1005
  listValidatorKeys,
982
1006
  registerExternalSchemaRoot,
983
1007
  resolveBundleKey,
1008
+ resolveServedValidationVersion,
984
1009
  schemaAllowsTopLevelField,
985
1010
  toReleasePrecisionWire,
986
1011
  unregisterExternalSchemaRoot,
@@ -668,6 +668,29 @@ function hasSchemaBundle(version) {
668
668
  return false;
669
669
  }
670
670
  }
671
+ const SERVED_RELEASE_MAJOR = /^(\d+)\.\d+(?:-[a-zA-Z0-9.-]+)?$/;
672
+ const NUMERIC_PIN_MAJOR = /^(\d+)\.\d+/;
673
+ function resolveServedValidationVersion(response, pinnedVersion) {
674
+ const pinMajor = NUMERIC_PIN_MAJOR.exec(pinnedVersion)?.[1];
675
+ if (pinMajor === void 0) return pinnedVersion;
676
+ try {
677
+ if (isExternalSchemaRootActive(pinnedVersion)) return pinnedVersion;
678
+ } catch {
679
+ return pinnedVersion;
680
+ }
681
+ const echoed = response !== null && typeof response === "object" ? response.adcp_version : void 0;
682
+ if (typeof echoed !== "string") return pinnedVersion;
683
+ const echoMajor = SERVED_RELEASE_MAJOR.exec(echoed)?.[1];
684
+ if (echoMajor === void 0 || echoMajor !== pinMajor) return pinnedVersion;
685
+ let pinnedRelease;
686
+ try {
687
+ pinnedRelease = toReleasePrecisionWire(pinnedVersion);
688
+ } catch {
689
+ return pinnedVersion;
690
+ }
691
+ if (echoed === pinnedRelease) return pinnedVersion;
692
+ return hasSchemaBundle(echoed) ? echoed : pinnedVersion;
693
+ }
671
694
  const mcpToolSchemaCache = /* @__PURE__ */ new Map();
672
695
  const mcpToolSummaryCache = /* @__PURE__ */ new Map();
673
696
  function boundedMcpToolSummary(value) {
@@ -930,6 +953,7 @@ export {
930
953
  listValidatorKeys,
931
954
  registerExternalSchemaRoot,
932
955
  resolveBundleKey,
956
+ resolveServedValidationVersion,
933
957
  schemaAllowsTopLevelField,
934
958
  toReleasePrecisionWire,
935
959
  unregisterExternalSchemaRoot,
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * AdCP SDK library version
3
3
  */
4
- export declare const LIBRARY_VERSION = "15.9.1";
4
+ export declare const LIBRARY_VERSION = "15.9.2";
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: "15.9.1";
36
+ readonly library: "15.9.2";
37
37
  readonly adcp: "3.2.4";
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.1", "3.2", "3.2.2", "3.2.3", "3.2.4"];
39
- readonly generatedAt: "2026-10-14T11:09:46.080Z";
39
+ readonly generatedAt: "2026-10-15T19:20:29.059Z";
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 = "15.9.1";
4
+ export declare const LIBRARY_VERSION = "15.9.2";
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: "15.9.1";
36
+ readonly library: "15.9.2";
37
37
  readonly adcp: "3.2.4";
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.1", "3.2", "3.2.2", "3.2.3", "3.2.4"];
39
- readonly generatedAt: "2026-10-14T11:09:46.080Z";
39
+ readonly generatedAt: "2026-10-15T19:20:29.059Z";
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 = "15.9.1";
34
+ const LIBRARY_VERSION = "15.9.2";
35
35
  const ADCP_VERSION = "3.2.4";
36
36
  const ADCP_MAJOR_VERSION = 3;
37
37
  const COMPATIBLE_ADCP_VERSIONS = [
@@ -98,10 +98,10 @@ const COMPATIBLE_ADCP_VERSIONS = [
98
98
  "3.2.4"
99
99
  ];
100
100
  const VERSION_INFO = {
101
- library: "15.9.1",
101
+ library: "15.9.2",
102
102
  adcp: "3.2.4",
103
103
  compatibleVersions: COMPATIBLE_ADCP_VERSIONS,
104
- generatedAt: "2026-10-14T11:09:46.080Z"
104
+ generatedAt: "2026-10-15T19:20:29.059Z"
105
105
  };
106
106
  function getAdcpVersion() {
107
107
  return ADCP_VERSION;
@@ -1,4 +1,4 @@
1
- const LIBRARY_VERSION = "15.9.1";
1
+ const LIBRARY_VERSION = "15.9.2";
2
2
  const ADCP_VERSION = "3.2.4";
3
3
  const ADCP_MAJOR_VERSION = 3;
4
4
  const COMPATIBLE_ADCP_VERSIONS = [
@@ -65,10 +65,10 @@ const COMPATIBLE_ADCP_VERSIONS = [
65
65
  "3.2.4"
66
66
  ];
67
67
  const VERSION_INFO = {
68
- library: "15.9.1",
68
+ library: "15.9.2",
69
69
  adcp: "3.2.4",
70
70
  compatibleVersions: COMPATIBLE_ADCP_VERSIONS,
71
- generatedAt: "2026-10-14T11:09:46.080Z"
71
+ generatedAt: "2026-10-15T19:20:29.059Z"
72
72
  };
73
73
  function getAdcpVersion() {
74
74
  return ADCP_VERSION;
@@ -1,7 +1,7 @@
1
1
  # AdCP Type Summary
2
2
 
3
- > Generated at: 2026-10-14
4
- > @adcp/sdk v15.9.1
3
+ > Generated at: 2026-10-15
4
+ > @adcp/sdk v15.9.2
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-14
4
- > Library: @adcp/sdk v15.9.1
3
+ > Generated at: 2026-10-15
4
+ > Library: @adcp/sdk v15.9.2
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.
@@ -11,8 +11,8 @@ below as the publication/deployment gate.
11
11
 
12
12
  | Fact | Value |
13
13
  | --- | --- |
14
- | Exact npm package | `@adcp/sdk@15.9.1` |
15
- | npm integrity | registry-derived after publication; run `npm view @adcp/sdk@15.9.1 dist.integrity` |
14
+ | Exact npm package | `@adcp/sdk@15.9.2` |
15
+ | npm integrity | registry-derived after publication; run `npm view @adcp/sdk@15.9.2 dist.integrity` |
16
16
  | Node.js runtime | `^20.19.0 || >=22.12.0` |
17
17
  | Default AdCP wire release | `3.2.4` |
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.1`, `3.2`, `3.2.2`, `3.2.3`, `3.2.4` |
@@ -21,8 +21,8 @@ below as the publication/deployment gate.
21
21
  Install exact production inputs rather than a moving range or dist-tag:
22
22
 
23
23
  ```bash
24
- npm install --save-exact '@adcp/sdk@15.9.1'
25
- npm view '@adcp/sdk@15.9.1' dist.integrity
24
+ npm install --save-exact '@adcp/sdk@15.9.2'
25
+ npm view '@adcp/sdk@15.9.2' 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": "15.9.1",
3
+ "version": "15.9.2",
4
4
  "description": "AdCP SDK — client, server, and compliance harnesses for the AdContext Protocol (MCP + A2A)",
5
5
  "workspaces": [
6
6
  ".",