@adcp/sdk 14.2.0 → 14.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/reporting/inspection.d.mts +3 -3
- package/dist/lib/reporting/inspection.d.ts +3 -3
- package/dist/lib/reporting/inspection.js +229 -84
- package/dist/lib/reporting/inspection.mjs +229 -84
- package/dist/lib/reporting/ledger/status-ingest.js +3 -19
- package/dist/lib/reporting/ledger/status-ingest.mjs +2 -18
- package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
- package/dist/lib/server/create-adcp-server.js +5 -2
- package/dist/lib/server/create-adcp-server.mjs +5 -2
- package/dist/lib/signing/canonicalize.d.mts +2 -0
- package/dist/lib/signing/canonicalize.d.ts +2 -0
- package/dist/lib/signing/canonicalize.js +1 -1
- package/dist/lib/signing/canonicalize.mjs +1 -1
- package/dist/lib/signing/verifier.js +1 -1
- package/dist/lib/signing/verifier.mjs +1 -1
- package/dist/lib/testing/storyboard/request-signing/builder.js +13 -1
- package/dist/lib/testing/storyboard/request-signing/builder.mjs +13 -1
- package/dist/lib/testing/storyboard/request-signing/grader.js +1 -0
- package/dist/lib/testing/storyboard/request-signing/grader.mjs +1 -0
- package/dist/lib/testing/storyboard/request-signing/vector-loader.js +1 -1
- package/dist/lib/testing/storyboard/request-signing/vector-loader.mjs +1 -1
- package/dist/lib/testing/storyboard/validations.d.mts +1 -1
- package/dist/lib/testing/storyboard/validations.d.ts +1 -1
- package/dist/lib/utils/pointer-utils.d.mts +2 -0
- package/dist/lib/utils/pointer-utils.d.ts +2 -0
- package/dist/lib/utils/pointer-utils.js +43 -0
- package/dist/lib/utils/pointer-utils.mjs +19 -0
- package/dist/lib/validation/diagnostic-limits.d.mts +4 -0
- package/dist/lib/validation/diagnostic-limits.d.ts +4 -0
- package/dist/lib/validation/diagnostic-limits.js +57 -0
- package/dist/lib/validation/diagnostic-limits.mjs +32 -0
- package/dist/lib/validation/schema-errors.d.mts +3 -1
- package/dist/lib/validation/schema-errors.d.ts +3 -1
- package/dist/lib/validation/schema-errors.js +18 -3
- package/dist/lib/validation/schema-errors.mjs +18 -3
- package/dist/lib/validation/schema-validator.js +56 -4
- package/dist/lib/validation/schema-validator.mjs +56 -4
- package/dist/lib/version.d.mts +3 -3
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.js +3 -3
- package/dist/lib/version.mjs +3 -3
- package/docs/TYPE-SUMMARY.md +2 -2
- package/docs/llms.txt +2 -2
- package/docs/migration-14.x-rc-worksheet.md +4 -4
- package/package.json +2 -2
- package/skills/call-adcp-agent/SKILL.md +4 -1
|
@@ -29,6 +29,7 @@ var import_schema_loader = require('./schema-loader.js');
|
|
|
29
29
|
var import_version = require('../version.js');
|
|
30
30
|
var import_hints = require('./hints.js');
|
|
31
31
|
var import_envelope_status_compat = require('../utils/envelope-status-compat.js');
|
|
32
|
+
var import_diagnostic_limits = require('./diagnostic-limits.js');
|
|
32
33
|
const OK = Object.freeze({ valid: true, issues: [], variant: "skipped" });
|
|
33
34
|
function extractSchemaId(schemaPath, rootSchema, registeredIds) {
|
|
34
35
|
if (schemaPath.startsWith("#") || schemaPath === "") {
|
|
@@ -80,6 +81,59 @@ function resolveSchemaPath(rootSchema, schemaPath) {
|
|
|
80
81
|
}
|
|
81
82
|
return cursor;
|
|
82
83
|
}
|
|
84
|
+
function* expandNotErrors(errors, rootSchema, payload) {
|
|
85
|
+
for (const error of errors) {
|
|
86
|
+
const rule = error.keyword === "not" ? resolveSchemaPath(rootSchema, error.schemaPath) : void 0;
|
|
87
|
+
const branches = rule && typeof rule === "object" ? rule.anyOf : void 0;
|
|
88
|
+
if (!Array.isArray(branches) || branches.length === 0 || Object.keys(rule).length !== 1) {
|
|
89
|
+
yield error;
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
let instance = payload;
|
|
93
|
+
if (error.instancePath) {
|
|
94
|
+
for (const encoded of error.instancePath.slice(1).split("/")) {
|
|
95
|
+
const key = encoded.replace(/~1/g, "/").replace(/~0/g, "~");
|
|
96
|
+
if (instance == null || typeof instance !== "object" || !Object.hasOwn(instance, key)) {
|
|
97
|
+
instance = void 0;
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
instance = instance[key];
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const keys = /* @__PURE__ */ new Set();
|
|
104
|
+
let opaqueBranch = false;
|
|
105
|
+
if (instance != null && typeof instance === "object" && !Array.isArray(instance)) {
|
|
106
|
+
for (const branch of branches) {
|
|
107
|
+
if (branch == null || typeof branch !== "object" || Object.keys(branch).length !== 1 || !Array.isArray(branch.required) || branch.required.length !== 1 || typeof branch.required[0] !== "string") {
|
|
108
|
+
opaqueBranch = true;
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
const key = branch.required[0];
|
|
112
|
+
if (Object.hasOwn(instance, key) && instance[key] !== void 0) keys.add(key);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (keys.size === 0) {
|
|
116
|
+
yield error;
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
for (const key of keys) {
|
|
120
|
+
yield {
|
|
121
|
+
...error,
|
|
122
|
+
instancePath: `${error.instancePath}/${key.replace(/~/g, "~0").replace(/\//g, "~1")}`,
|
|
123
|
+
message: `${key} cannot be set here`
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
if (opaqueBranch) yield error;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
function formatValidationIssues(errors, ctx, payload) {
|
|
130
|
+
function* formatted() {
|
|
131
|
+
for (const error of expandNotErrors(compactUnionErrors(errors, ctx.rootSchema), ctx.rootSchema, payload)) {
|
|
132
|
+
yield enrichWithVariants(formatIssue(error, ctx), ctx.rootSchema);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return ctx.toolName === "sync_accounts" ? [...formatted()] : (0, import_diagnostic_limits.boundValidationIssues)(formatted());
|
|
136
|
+
}
|
|
83
137
|
function compactUnionErrors(errors, rootSchema) {
|
|
84
138
|
if (errors.length === 0) return [...errors];
|
|
85
139
|
const errorsByOneOfPath = /* @__PURE__ */ new Map();
|
|
@@ -249,10 +303,9 @@ function validateRequest(toolName, payload, version) {
|
|
|
249
303
|
if (valid) return { valid: true, issues: [], variant: "request", ...rootSchemaId && { schemaId: rootSchemaId } };
|
|
250
304
|
const registeredIds = (0, import_schema_loader.getRegisteredSchemaIds)(version);
|
|
251
305
|
const ctx = { rootSchema, registeredIds, toolName };
|
|
252
|
-
const compacted = compactUnionErrors(validator.errors ?? [], rootSchema);
|
|
253
306
|
return {
|
|
254
307
|
valid: false,
|
|
255
|
-
issues:
|
|
308
|
+
issues: formatValidationIssues(validator.errors ?? [], ctx, payload),
|
|
256
309
|
variant: "request",
|
|
257
310
|
...rootSchemaId && { schemaId: rootSchemaId }
|
|
258
311
|
};
|
|
@@ -314,10 +367,9 @@ function validateResponse(toolName, payload, version) {
|
|
|
314
367
|
}
|
|
315
368
|
const registeredIds = (0, import_schema_loader.getRegisteredSchemaIds)(version);
|
|
316
369
|
const ctx = { rootSchema, registeredIds, toolName };
|
|
317
|
-
const compacted = compactUnionErrors(effective.errors ?? [], rootSchema);
|
|
318
370
|
return {
|
|
319
371
|
valid: false,
|
|
320
|
-
issues:
|
|
372
|
+
issues: formatValidationIssues(effective.errors ?? [], ctx, normalizedPayload),
|
|
321
373
|
variant: usedVariant,
|
|
322
374
|
...rootSchemaId && { schemaId: rootSchemaId },
|
|
323
375
|
...fallbackFields
|
|
@@ -2,6 +2,7 @@ import { getValidator, getRegisteredSchemaIds } from "./schema-loader.mjs";
|
|
|
2
2
|
import { parseAdcpMajorVersion } from "../version.mjs";
|
|
3
3
|
import { findHint } from "./hints.mjs";
|
|
4
4
|
import { injectLegacyEnvelopeStatus } from "../utils/envelope-status-compat.mjs";
|
|
5
|
+
import { boundValidationIssues } from "./diagnostic-limits.mjs";
|
|
5
6
|
const OK = Object.freeze({ valid: true, issues: [], variant: "skipped" });
|
|
6
7
|
function extractSchemaId(schemaPath, rootSchema, registeredIds) {
|
|
7
8
|
if (schemaPath.startsWith("#") || schemaPath === "") {
|
|
@@ -53,6 +54,59 @@ function resolveSchemaPath(rootSchema, schemaPath) {
|
|
|
53
54
|
}
|
|
54
55
|
return cursor;
|
|
55
56
|
}
|
|
57
|
+
function* expandNotErrors(errors, rootSchema, payload) {
|
|
58
|
+
for (const error of errors) {
|
|
59
|
+
const rule = error.keyword === "not" ? resolveSchemaPath(rootSchema, error.schemaPath) : void 0;
|
|
60
|
+
const branches = rule && typeof rule === "object" ? rule.anyOf : void 0;
|
|
61
|
+
if (!Array.isArray(branches) || branches.length === 0 || Object.keys(rule).length !== 1) {
|
|
62
|
+
yield error;
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
let instance = payload;
|
|
66
|
+
if (error.instancePath) {
|
|
67
|
+
for (const encoded of error.instancePath.slice(1).split("/")) {
|
|
68
|
+
const key = encoded.replace(/~1/g, "/").replace(/~0/g, "~");
|
|
69
|
+
if (instance == null || typeof instance !== "object" || !Object.hasOwn(instance, key)) {
|
|
70
|
+
instance = void 0;
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
instance = instance[key];
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const keys = /* @__PURE__ */ new Set();
|
|
77
|
+
let opaqueBranch = false;
|
|
78
|
+
if (instance != null && typeof instance === "object" && !Array.isArray(instance)) {
|
|
79
|
+
for (const branch of branches) {
|
|
80
|
+
if (branch == null || typeof branch !== "object" || Object.keys(branch).length !== 1 || !Array.isArray(branch.required) || branch.required.length !== 1 || typeof branch.required[0] !== "string") {
|
|
81
|
+
opaqueBranch = true;
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
const key = branch.required[0];
|
|
85
|
+
if (Object.hasOwn(instance, key) && instance[key] !== void 0) keys.add(key);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (keys.size === 0) {
|
|
89
|
+
yield error;
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
for (const key of keys) {
|
|
93
|
+
yield {
|
|
94
|
+
...error,
|
|
95
|
+
instancePath: `${error.instancePath}/${key.replace(/~/g, "~0").replace(/\//g, "~1")}`,
|
|
96
|
+
message: `${key} cannot be set here`
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
if (opaqueBranch) yield error;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function formatValidationIssues(errors, ctx, payload) {
|
|
103
|
+
function* formatted() {
|
|
104
|
+
for (const error of expandNotErrors(compactUnionErrors(errors, ctx.rootSchema), ctx.rootSchema, payload)) {
|
|
105
|
+
yield enrichWithVariants(formatIssue(error, ctx), ctx.rootSchema);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return ctx.toolName === "sync_accounts" ? [...formatted()] : boundValidationIssues(formatted());
|
|
109
|
+
}
|
|
56
110
|
function compactUnionErrors(errors, rootSchema) {
|
|
57
111
|
if (errors.length === 0) return [...errors];
|
|
58
112
|
const errorsByOneOfPath = /* @__PURE__ */ new Map();
|
|
@@ -222,10 +276,9 @@ function validateRequest(toolName, payload, version) {
|
|
|
222
276
|
if (valid) return { valid: true, issues: [], variant: "request", ...rootSchemaId && { schemaId: rootSchemaId } };
|
|
223
277
|
const registeredIds = getRegisteredSchemaIds(version);
|
|
224
278
|
const ctx = { rootSchema, registeredIds, toolName };
|
|
225
|
-
const compacted = compactUnionErrors(validator.errors ?? [], rootSchema);
|
|
226
279
|
return {
|
|
227
280
|
valid: false,
|
|
228
|
-
issues:
|
|
281
|
+
issues: formatValidationIssues(validator.errors ?? [], ctx, payload),
|
|
229
282
|
variant: "request",
|
|
230
283
|
...rootSchemaId && { schemaId: rootSchemaId }
|
|
231
284
|
};
|
|
@@ -287,10 +340,9 @@ function validateResponse(toolName, payload, version) {
|
|
|
287
340
|
}
|
|
288
341
|
const registeredIds = getRegisteredSchemaIds(version);
|
|
289
342
|
const ctx = { rootSchema, registeredIds, toolName };
|
|
290
|
-
const compacted = compactUnionErrors(effective.errors ?? [], rootSchema);
|
|
291
343
|
return {
|
|
292
344
|
valid: false,
|
|
293
|
-
issues:
|
|
345
|
+
issues: formatValidationIssues(effective.errors ?? [], ctx, normalizedPayload),
|
|
294
346
|
variant: usedVariant,
|
|
295
347
|
...rootSchemaId && { schemaId: rootSchemaId },
|
|
296
348
|
...fallbackFields
|
package/dist/lib/version.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* AdCP SDK library version
|
|
3
3
|
*/
|
|
4
|
-
export declare const LIBRARY_VERSION = "14.
|
|
4
|
+
export declare const LIBRARY_VERSION = "14.3.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: "14.
|
|
36
|
+
readonly library: "14.3.0";
|
|
37
37
|
readonly adcp: "3.2.1";
|
|
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"];
|
|
39
|
-
readonly generatedAt: "2026-10-
|
|
39
|
+
readonly generatedAt: "2026-10-06T16:34:47.947Z";
|
|
40
40
|
};
|
|
41
41
|
/**
|
|
42
42
|
* Get the AdCP specification version this library is built for
|
package/dist/lib/version.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* AdCP SDK library version
|
|
3
3
|
*/
|
|
4
|
-
export declare const LIBRARY_VERSION = "14.
|
|
4
|
+
export declare const LIBRARY_VERSION = "14.3.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: "14.
|
|
36
|
+
readonly library: "14.3.0";
|
|
37
37
|
readonly adcp: "3.2.1";
|
|
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"];
|
|
39
|
-
readonly generatedAt: "2026-10-
|
|
39
|
+
readonly generatedAt: "2026-10-06T16:34:47.947Z";
|
|
40
40
|
};
|
|
41
41
|
/**
|
|
42
42
|
* Get the AdCP specification version this library is built for
|
package/dist/lib/version.js
CHANGED
|
@@ -31,7 +31,7 @@ __export(version_exports, {
|
|
|
31
31
|
toReleasePrecisionVersion: () => toReleasePrecisionVersion
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(version_exports);
|
|
34
|
-
const LIBRARY_VERSION = "14.
|
|
34
|
+
const LIBRARY_VERSION = "14.3.0";
|
|
35
35
|
const ADCP_VERSION = "3.2.1";
|
|
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"
|
|
96
96
|
];
|
|
97
97
|
const VERSION_INFO = {
|
|
98
|
-
library: "14.
|
|
98
|
+
library: "14.3.0",
|
|
99
99
|
adcp: "3.2.1",
|
|
100
100
|
compatibleVersions: COMPATIBLE_ADCP_VERSIONS,
|
|
101
|
-
generatedAt: "2026-10-
|
|
101
|
+
generatedAt: "2026-10-06T16:34:47.947Z"
|
|
102
102
|
};
|
|
103
103
|
function getAdcpVersion() {
|
|
104
104
|
return ADCP_VERSION;
|
package/dist/lib/version.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const LIBRARY_VERSION = "14.
|
|
1
|
+
const LIBRARY_VERSION = "14.3.0";
|
|
2
2
|
const ADCP_VERSION = "3.2.1";
|
|
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"
|
|
63
63
|
];
|
|
64
64
|
const VERSION_INFO = {
|
|
65
|
-
library: "14.
|
|
65
|
+
library: "14.3.0",
|
|
66
66
|
adcp: "3.2.1",
|
|
67
67
|
compatibleVersions: COMPATIBLE_ADCP_VERSIONS,
|
|
68
|
-
generatedAt: "2026-10-
|
|
68
|
+
generatedAt: "2026-10-06T16:34:47.947Z"
|
|
69
69
|
};
|
|
70
70
|
function getAdcpVersion() {
|
|
71
71
|
return ADCP_VERSION;
|
package/docs/TYPE-SUMMARY.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# AdCP Type Summary
|
|
2
2
|
|
|
3
|
-
> Generated at: 2026-10-
|
|
4
|
-
> @adcp/sdk v14.
|
|
3
|
+
> Generated at: 2026-10-06
|
|
4
|
+
> @adcp/sdk v14.3.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-
|
|
4
|
-
> Library: @adcp/sdk v14.
|
|
3
|
+
> Generated at: 2026-10-06
|
|
4
|
+
> Library: @adcp/sdk v14.3.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.
|
|
@@ -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.
|
|
15
|
-
| npm integrity | registry-derived after publication; run `npm view @adcp/sdk@14.
|
|
14
|
+
| Exact npm package | `@adcp/sdk@14.3.0` |
|
|
15
|
+
| npm integrity | registry-derived after publication; run `npm view @adcp/sdk@14.3.0 dist.integrity` |
|
|
16
16
|
| Node.js runtime | `^20.19.0 || >=22.12.0` |
|
|
17
17
|
| Default AdCP wire release | `3.2.1` |
|
|
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` |
|
|
@@ -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@14.
|
|
25
|
-
npm view '@adcp/sdk@14.
|
|
24
|
+
npm install --save-exact '@adcp/sdk@14.3.0'
|
|
25
|
+
npm view '@adcp/sdk@14.3.0' 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.
|
|
3
|
+
"version": "14.3.0",
|
|
4
4
|
"description": "AdCP SDK — client, server, and compliance harnesses for the AdContext Protocol (MCP + A2A)",
|
|
5
5
|
"workspaces": [
|
|
6
6
|
".",
|
|
@@ -790,7 +790,7 @@
|
|
|
790
790
|
"js-yaml": "^4.1.1",
|
|
791
791
|
"@apidevtools/json-schema-ref-parser@^15.0.0": {
|
|
792
792
|
".": "$@apidevtools/json-schema-ref-parser",
|
|
793
|
-
"js-yaml": "^5.
|
|
793
|
+
"js-yaml": "^5.4.3"
|
|
794
794
|
},
|
|
795
795
|
"@changesets/parse": {
|
|
796
796
|
"js-yaml": "^3.15.2"
|
|
@@ -112,7 +112,7 @@ Every validation failure produces:
|
|
|
112
112
|
"adcp_error": {
|
|
113
113
|
"code": "VALIDATION_ERROR",
|
|
114
114
|
"recovery": "correctable",
|
|
115
|
-
"field": "
|
|
115
|
+
"field": "account",
|
|
116
116
|
"issues": [
|
|
117
117
|
{
|
|
118
118
|
"pointer": "/account",
|
|
@@ -130,7 +130,10 @@ Every validation failure produces:
|
|
|
130
130
|
```
|
|
131
131
|
|
|
132
132
|
- `issues[].pointer` — RFC 6901 JSON Pointer to the field.
|
|
133
|
+
- `field` — the first issue's pointer translated to JSONPath-lite (for example, `packages[0].targeting`). Parse `issues[].pointer` when you need JSON Pointer notation.
|
|
133
134
|
- `issues[].keyword` — AJV keyword (`required`, `type`, `oneOf`, `anyOf`, `additionalProperties`, `format`, `enum`).
|
|
135
|
+
- `not` presence guards name individually forbidden fields (for example, `product_id cannot be set here`). Compound guards retain their original diagnostic.
|
|
136
|
+
- `adcp_error.details.issues_truncated` — when true, the diagnostic list reached its count or byte limit. Fix the displayed failures and retry to see any remaining failures.
|
|
134
137
|
- `issues[].variants` — when the keyword is `oneOf` or `anyOf`, each entry lists one variant's `required` + declared `properties`. **Pick ONE variant**, send only its `required` fields. This is the fastest recovery path when you didn't know the field was a union.
|
|
135
138
|
- `issues[].discriminator` — when an SDK ≥6.7 picks a "best surviving variant" of a const-discriminated union, this is the `[{field, value}, …]` pairs that variant requires. Reads as the validator's verdict on which branch you were inferred to be targeting. Example: `discriminator: [{field: 'type', value: 'key_value'}]` plus `pointer: '/deployments/0/activation_key/key'` and `keyword: 'required'` means "you picked the `key_value` activation_key variant and it requires top-level `key` and `value`." Compound discriminators like `audience-selector`'s `(type, value_type)` produce two-entry arrays.
|
|
136
139
|
- `issues[].schemaId` — `$id` of the rejecting schema. For tools served from the bundled tree this is usually the response root; for flat-tree tools it can land on the deeper sub-schema. Diagnostic only; the actionable lever is `discriminator` + `variants` + `pointer`.
|