@adcp/sdk 14.0.0-rc.33 → 14.0.0-rc.35

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 (51) hide show
  1. package/dist/lib/brand/domain.d.mts +30 -0
  2. package/dist/lib/brand/domain.d.ts +30 -0
  3. package/dist/lib/brand/domain.js +109 -0
  4. package/dist/lib/brand/domain.mjs +82 -0
  5. package/dist/lib/brand/index.d.mts +2 -1
  6. package/dist/lib/brand/index.d.ts +2 -1
  7. package/dist/lib/brand/index.js +9 -2
  8. package/dist/lib/brand/index.mjs +5 -1
  9. package/dist/lib/core/ConversationTypes.d.mts +14 -0
  10. package/dist/lib/core/ConversationTypes.d.ts +14 -0
  11. package/dist/lib/core/SingleAgentClient.js +19 -13
  12. package/dist/lib/core/SingleAgentClient.mjs +19 -13
  13. package/dist/lib/index.d.mts +2 -2
  14. package/dist/lib/index.d.ts +2 -2
  15. package/dist/lib/index.js +6 -0
  16. package/dist/lib/index.mjs +7 -1
  17. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  18. package/dist/lib/server/create-adcp-server.js +10 -3
  19. package/dist/lib/server/create-adcp-server.mjs +9 -3
  20. package/dist/lib/server/decisioning/async-outcome.d.mts +30 -0
  21. package/dist/lib/server/decisioning/async-outcome.d.ts +30 -0
  22. package/dist/lib/server/decisioning/async-outcome.js +4 -1
  23. package/dist/lib/server/decisioning/async-outcome.mjs +4 -1
  24. package/dist/lib/server/errors.d.mts +23 -0
  25. package/dist/lib/server/errors.d.ts +23 -0
  26. package/dist/lib/server/errors.js +2 -1
  27. package/dist/lib/server/errors.mjs +2 -1
  28. package/dist/lib/server/normalize-errors.d.mts +15 -3
  29. package/dist/lib/server/normalize-errors.d.ts +15 -3
  30. package/dist/lib/server/normalize-errors.js +6 -0
  31. package/dist/lib/server/normalize-errors.mjs +6 -0
  32. package/dist/lib/signing/agent-resolver/etld.js +7 -2
  33. package/dist/lib/signing/agent-resolver/etld.mjs +7 -2
  34. package/dist/lib/signing/agent-resolver/resolve-agent.js +21 -4
  35. package/dist/lib/signing/agent-resolver/resolve-agent.mjs +21 -4
  36. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  37. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  38. package/dist/lib/utils/buyer-retry-policy.d.mts +11 -0
  39. package/dist/lib/utils/buyer-retry-policy.d.ts +11 -0
  40. package/dist/lib/utils/error-extraction.d.mts +8 -0
  41. package/dist/lib/utils/error-extraction.d.ts +8 -0
  42. package/dist/lib/utils/error-extraction.js +15 -0
  43. package/dist/lib/utils/error-extraction.mjs +15 -0
  44. package/dist/lib/version.d.mts +3 -3
  45. package/dist/lib/version.d.ts +3 -3
  46. package/dist/lib/version.js +3 -3
  47. package/dist/lib/version.mjs +3 -3
  48. package/docs/TYPE-SUMMARY.md +2 -2
  49. package/docs/guides/CONFORMANCE.md +6 -0
  50. package/docs/llms.txt +2 -2
  51. package/package.json +2 -2
@@ -0,0 +1,30 @@
1
+ export type BrandDomainValidationCode = 'invalid_syntax' | 'not_registrable' | 'special_use_not_allowed';
2
+ export declare class BrandDomainValidationError extends Error {
3
+ readonly code: BrandDomainValidationCode;
4
+ readonly domain: string;
5
+ constructor(code: BrandDomainValidationCode, domain: string);
6
+ }
7
+ export interface ValidateBrandDomainOptions {
8
+ /**
9
+ * Admit the protocol's narrow development-name set: subdomains of
10
+ * `.localhost`, `.test`, `.example`, or `.invalid`, plus the reserved
11
+ * `example.com`, `example.net`, and `example.org` names. Default false.
12
+ *
13
+ * This option is deliberately explicit and is never inferred from
14
+ * `NODE_ENV`. Bare `localhost` remains invalid because BrandRef wire syntax
15
+ * always requires a dotted domain. `.local` remains forbidden because it
16
+ * participates in multicast DNS.
17
+ */
18
+ allowDevelopmentDomains?: boolean;
19
+ }
20
+ /**
21
+ * Validate and canonicalize a BrandRef/BrandKey domain.
22
+ *
23
+ * The JSON Schema enforces portable dotted wire syntax. This helper adds the
24
+ * runtime policy needed before brand discovery: a production name must have a
25
+ * registrable domain in the pinned ICANN+PRIVATE Public Suffix List and must
26
+ * not be an IANA special-use name.
27
+ */
28
+ export declare function validateBrandDomain(domain: string, options?: ValidateBrandDomainOptions): string;
29
+ export declare function isDevelopmentBrandDomain(domain: string): boolean;
30
+ export declare function isSpecialUseBrandDomain(domain: string): boolean;
@@ -0,0 +1,30 @@
1
+ export type BrandDomainValidationCode = 'invalid_syntax' | 'not_registrable' | 'special_use_not_allowed';
2
+ export declare class BrandDomainValidationError extends Error {
3
+ readonly code: BrandDomainValidationCode;
4
+ readonly domain: string;
5
+ constructor(code: BrandDomainValidationCode, domain: string);
6
+ }
7
+ export interface ValidateBrandDomainOptions {
8
+ /**
9
+ * Admit the protocol's narrow development-name set: subdomains of
10
+ * `.localhost`, `.test`, `.example`, or `.invalid`, plus the reserved
11
+ * `example.com`, `example.net`, and `example.org` names. Default false.
12
+ *
13
+ * This option is deliberately explicit and is never inferred from
14
+ * `NODE_ENV`. Bare `localhost` remains invalid because BrandRef wire syntax
15
+ * always requires a dotted domain. `.local` remains forbidden because it
16
+ * participates in multicast DNS.
17
+ */
18
+ allowDevelopmentDomains?: boolean;
19
+ }
20
+ /**
21
+ * Validate and canonicalize a BrandRef/BrandKey domain.
22
+ *
23
+ * The JSON Schema enforces portable dotted wire syntax. This helper adds the
24
+ * runtime policy needed before brand discovery: a production name must have a
25
+ * registrable domain in the pinned ICANN+PRIVATE Public Suffix List and must
26
+ * not be an IANA special-use name.
27
+ */
28
+ export declare function validateBrandDomain(domain: string, options?: ValidateBrandDomainOptions): string;
29
+ export declare function isDevelopmentBrandDomain(domain: string): boolean;
30
+ export declare function isSpecialUseBrandDomain(domain: string): boolean;
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var domain_exports = {};
20
+ __export(domain_exports, {
21
+ BrandDomainValidationError: () => BrandDomainValidationError,
22
+ isDevelopmentBrandDomain: () => isDevelopmentBrandDomain,
23
+ isSpecialUseBrandDomain: () => isSpecialUseBrandDomain,
24
+ validateBrandDomain: () => validateBrandDomain
25
+ });
26
+ module.exports = __toCommonJS(domain_exports);
27
+ var import_tldts = require("tldts");
28
+ var import_canonicalize = require('../signing/agent-resolver/canonicalize.js');
29
+ const DOTTED_WIRE_DOMAIN = /^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/;
30
+ const DEVELOPMENT_SUFFIXES = ["localhost", "test", "example", "invalid"];
31
+ const DEVELOPMENT_EXACT_NAMES = /* @__PURE__ */ new Set(["example.com", "example.net", "example.org"]);
32
+ const SPECIAL_USE_SUFFIXES = [
33
+ "alt",
34
+ "6tisch.arpa",
35
+ "eap.arpa",
36
+ "eap-noob.arpa",
37
+ "home.arpa",
38
+ "in-addr.arpa",
39
+ "ip6.arpa",
40
+ "ipv4only.arpa",
41
+ "resolver.arpa",
42
+ "service.arpa",
43
+ "example",
44
+ "example.com",
45
+ "example.net",
46
+ "example.org",
47
+ "invalid",
48
+ "local",
49
+ "localhost",
50
+ "onion",
51
+ "test"
52
+ ];
53
+ class BrandDomainValidationError extends Error {
54
+ constructor(code, domain) {
55
+ const messages = {
56
+ invalid_syntax: "Brand domain must be a bare, lowercase-compatible dotted hostname",
57
+ not_registrable: "Brand domain must have a registrable public or private-suffix domain",
58
+ special_use_not_allowed: "IANA special-use brand domain is not allowed in production"
59
+ };
60
+ super(messages[code]);
61
+ this.code = code;
62
+ this.domain = domain;
63
+ this.name = "BrandDomainValidationError";
64
+ }
65
+ code;
66
+ domain;
67
+ }
68
+ function validateBrandDomain(domain, options = {}) {
69
+ if (typeof domain !== "string" || domain.length === 0 || /[\s/:@?#]/.test(domain)) {
70
+ throw new BrandDomainValidationError("invalid_syntax", domain);
71
+ }
72
+ let canonical;
73
+ try {
74
+ canonical = (0, import_canonicalize.canonicalizeHost)(domain);
75
+ } catch {
76
+ throw new BrandDomainValidationError("invalid_syntax", domain);
77
+ }
78
+ if (!DOTTED_WIRE_DOMAIN.test(canonical)) {
79
+ throw new BrandDomainValidationError("invalid_syntax", domain);
80
+ }
81
+ const developmentName = isDevelopmentBrandDomain(canonical);
82
+ if (developmentName && options.allowDevelopmentDomains === true) return canonical;
83
+ const parsed = (0, import_tldts.parse)(canonical, {
84
+ allowPrivateDomains: true,
85
+ detectSpecialUse: true,
86
+ extractHostname: false
87
+ });
88
+ if (parsed.isSpecialUse || developmentName || isSpecialUseBrandDomain(canonical)) {
89
+ throw new BrandDomainValidationError("special_use_not_allowed", domain);
90
+ }
91
+ if (parsed.isIp || !parsed.domain || !parsed.isIcann && !parsed.isPrivate) {
92
+ throw new BrandDomainValidationError("not_registrable", domain);
93
+ }
94
+ return canonical;
95
+ }
96
+ function isDevelopmentBrandDomain(domain) {
97
+ if (DEVELOPMENT_EXACT_NAMES.has(domain)) return true;
98
+ return DEVELOPMENT_SUFFIXES.some((suffix) => domain.endsWith(`.${suffix}`));
99
+ }
100
+ function isSpecialUseBrandDomain(domain) {
101
+ return SPECIAL_USE_SUFFIXES.some((suffix) => domain === suffix || domain.endsWith(`.${suffix}`));
102
+ }
103
+ // Annotate the CommonJS export names for ESM import in node:
104
+ 0 && (module.exports = {
105
+ BrandDomainValidationError,
106
+ isDevelopmentBrandDomain,
107
+ isSpecialUseBrandDomain,
108
+ validateBrandDomain
109
+ });
@@ -0,0 +1,82 @@
1
+ import { parse as parseTld } from "tldts";
2
+ import { canonicalizeHost } from "../signing/agent-resolver/canonicalize.mjs";
3
+ const DOTTED_WIRE_DOMAIN = /^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/;
4
+ const DEVELOPMENT_SUFFIXES = ["localhost", "test", "example", "invalid"];
5
+ const DEVELOPMENT_EXACT_NAMES = /* @__PURE__ */ new Set(["example.com", "example.net", "example.org"]);
6
+ const SPECIAL_USE_SUFFIXES = [
7
+ "alt",
8
+ "6tisch.arpa",
9
+ "eap.arpa",
10
+ "eap-noob.arpa",
11
+ "home.arpa",
12
+ "in-addr.arpa",
13
+ "ip6.arpa",
14
+ "ipv4only.arpa",
15
+ "resolver.arpa",
16
+ "service.arpa",
17
+ "example",
18
+ "example.com",
19
+ "example.net",
20
+ "example.org",
21
+ "invalid",
22
+ "local",
23
+ "localhost",
24
+ "onion",
25
+ "test"
26
+ ];
27
+ class BrandDomainValidationError extends Error {
28
+ constructor(code, domain) {
29
+ const messages = {
30
+ invalid_syntax: "Brand domain must be a bare, lowercase-compatible dotted hostname",
31
+ not_registrable: "Brand domain must have a registrable public or private-suffix domain",
32
+ special_use_not_allowed: "IANA special-use brand domain is not allowed in production"
33
+ };
34
+ super(messages[code]);
35
+ this.code = code;
36
+ this.domain = domain;
37
+ this.name = "BrandDomainValidationError";
38
+ }
39
+ code;
40
+ domain;
41
+ }
42
+ function validateBrandDomain(domain, options = {}) {
43
+ if (typeof domain !== "string" || domain.length === 0 || /[\s/:@?#]/.test(domain)) {
44
+ throw new BrandDomainValidationError("invalid_syntax", domain);
45
+ }
46
+ let canonical;
47
+ try {
48
+ canonical = canonicalizeHost(domain);
49
+ } catch {
50
+ throw new BrandDomainValidationError("invalid_syntax", domain);
51
+ }
52
+ if (!DOTTED_WIRE_DOMAIN.test(canonical)) {
53
+ throw new BrandDomainValidationError("invalid_syntax", domain);
54
+ }
55
+ const developmentName = isDevelopmentBrandDomain(canonical);
56
+ if (developmentName && options.allowDevelopmentDomains === true) return canonical;
57
+ const parsed = parseTld(canonical, {
58
+ allowPrivateDomains: true,
59
+ detectSpecialUse: true,
60
+ extractHostname: false
61
+ });
62
+ if (parsed.isSpecialUse || developmentName || isSpecialUseBrandDomain(canonical)) {
63
+ throw new BrandDomainValidationError("special_use_not_allowed", domain);
64
+ }
65
+ if (parsed.isIp || !parsed.domain || !parsed.isIcann && !parsed.isPrivate) {
66
+ throw new BrandDomainValidationError("not_registrable", domain);
67
+ }
68
+ return canonical;
69
+ }
70
+ function isDevelopmentBrandDomain(domain) {
71
+ if (DEVELOPMENT_EXACT_NAMES.has(domain)) return true;
72
+ return DEVELOPMENT_SUFFIXES.some((suffix) => domain.endsWith(`.${suffix}`));
73
+ }
74
+ function isSpecialUseBrandDomain(domain) {
75
+ return SPECIAL_USE_SUFFIXES.some((suffix) => domain === suffix || domain.endsWith(`.${suffix}`));
76
+ }
77
+ export {
78
+ BrandDomainValidationError,
79
+ isDevelopmentBrandDomain,
80
+ isSpecialUseBrandDomain,
81
+ validateBrandDomain
82
+ };
@@ -1,5 +1,7 @@
1
1
  import type { RegistryClient, SaveBrandResponse } from '../registry/index.mjs';
2
2
  import type { GetBrandIdentitySuccess } from '../types/core.generated.mjs';
3
+ export { BrandDomainValidationError, isDevelopmentBrandDomain, validateBrandDomain } from './domain.mjs';
4
+ export type { BrandDomainValidationCode, ValidateBrandDomainOptions } from './domain.mjs';
3
5
  export type BrandJsonRecord = Record<string, unknown>;
4
6
  type ProtocolBrandLogo = NonNullable<GetBrandIdentitySuccess['logos']>[number];
5
7
  export type BrandWebsiteAliasRelationship = 'owned';
@@ -148,4 +150,3 @@ export declare function checkLogoSlotCoverage(brandJsonOrBrand: BrandJsonRecord,
148
150
  export declare function updateBrandJsonFromMappings(options: UpdateBrandJsonFromMappingsOptions): Promise<UpdateBrandJsonFromMappingsResult>;
149
151
  export declare function extractBrandWebsiteAliases(brandJsonOrBrand: BrandJsonRecord, options?: ExtractBrandWebsiteAliasesOptions): BrandWebsiteAlias[];
150
152
  export declare function extractBrandWebsiteAliasDomains(brandJsonOrBrand: BrandJsonRecord, options?: ExtractBrandWebsiteAliasesOptions): string[];
151
- export {};
@@ -1,5 +1,7 @@
1
1
  import type { RegistryClient, SaveBrandResponse } from '../registry';
2
2
  import type { GetBrandIdentitySuccess } from '../types/core.generated';
3
+ export { BrandDomainValidationError, isDevelopmentBrandDomain, validateBrandDomain } from './domain';
4
+ export type { BrandDomainValidationCode, ValidateBrandDomainOptions } from './domain';
3
5
  export type BrandJsonRecord = Record<string, unknown>;
4
6
  type ProtocolBrandLogo = NonNullable<GetBrandIdentitySuccess['logos']>[number];
5
7
  export type BrandWebsiteAliasRelationship = 'owned';
@@ -148,4 +150,3 @@ export declare function checkLogoSlotCoverage(brandJsonOrBrand: BrandJsonRecord,
148
150
  export declare function updateBrandJsonFromMappings(options: UpdateBrandJsonFromMappingsOptions): Promise<UpdateBrandJsonFromMappingsResult>;
149
151
  export declare function extractBrandWebsiteAliases(brandJsonOrBrand: BrandJsonRecord, options?: ExtractBrandWebsiteAliasesOptions): BrandWebsiteAlias[];
150
152
  export declare function extractBrandWebsiteAliasDomains(brandJsonOrBrand: BrandJsonRecord, options?: ExtractBrandWebsiteAliasesOptions): string[];
151
- export {};
@@ -18,16 +18,20 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var brand_exports = {};
20
20
  __export(brand_exports, {
21
+ BrandDomainValidationError: () => import_domain.BrandDomainValidationError,
21
22
  COMMON_LOGO_SLOTS: () => COMMON_LOGO_SLOTS,
22
23
  applyBrandAssetMappings: () => applyBrandAssetMappings,
23
24
  checkLogoSlotCoverage: () => checkLogoSlotCoverage,
24
25
  extractBrandWebsiteAliasDomains: () => extractBrandWebsiteAliasDomains,
25
26
  extractBrandWebsiteAliases: () => extractBrandWebsiteAliases,
27
+ isDevelopmentBrandDomain: () => import_domain.isDevelopmentBrandDomain,
26
28
  selectLogoForSlot: () => selectLogoForSlot,
27
29
  updateBrandJsonFromMappings: () => updateBrandJsonFromMappings,
28
- validateBrandAssetMappings: () => validateBrandAssetMappings
30
+ validateBrandAssetMappings: () => validateBrandAssetMappings,
31
+ validateBrandDomain: () => import_domain.validateBrandDomain
29
32
  });
30
33
  module.exports = __toCommonJS(brand_exports);
34
+ var import_domain = require('./domain.js');
31
35
  const COMMON_LOGO_SLOTS = [
32
36
  "logo_card_light",
33
37
  "logo_card_dark",
@@ -464,12 +468,15 @@ function readLocalizedName(value) {
464
468
  }
465
469
  // Annotate the CommonJS export names for ESM import in node:
466
470
  0 && (module.exports = {
471
+ BrandDomainValidationError,
467
472
  COMMON_LOGO_SLOTS,
468
473
  applyBrandAssetMappings,
469
474
  checkLogoSlotCoverage,
470
475
  extractBrandWebsiteAliasDomains,
471
476
  extractBrandWebsiteAliases,
477
+ isDevelopmentBrandDomain,
472
478
  selectLogoForSlot,
473
479
  updateBrandJsonFromMappings,
474
- validateBrandAssetMappings
480
+ validateBrandAssetMappings,
481
+ validateBrandDomain
475
482
  });
@@ -1,3 +1,4 @@
1
+ import { BrandDomainValidationError, isDevelopmentBrandDomain, validateBrandDomain } from "./domain.mjs";
1
2
  const COMMON_LOGO_SLOTS = [
2
3
  "logo_card_light",
3
4
  "logo_card_dark",
@@ -433,12 +434,15 @@ function readLocalizedName(value) {
433
434
  return void 0;
434
435
  }
435
436
  export {
437
+ BrandDomainValidationError,
436
438
  COMMON_LOGO_SLOTS,
437
439
  applyBrandAssetMappings,
438
440
  checkLogoSlotCoverage,
439
441
  extractBrandWebsiteAliasDomains,
440
442
  extractBrandWebsiteAliases,
443
+ isDevelopmentBrandDomain,
441
444
  selectLogoForSlot,
442
445
  updateBrandJsonFromMappings,
443
- validateBrandAssetMappings
446
+ validateBrandAssetMappings,
447
+ validateBrandDomain
444
448
  };
@@ -345,6 +345,20 @@ export interface AdcpErrorInfo {
345
345
  * the field, `'enum'` → pick a valid value, `'type'` → fix the value type.
346
346
  */
347
347
  issues?: AdcpValidationIssue[];
348
+ /**
349
+ * Buyer-actionable classification of the failure. Present when the enclosing
350
+ * `code`/`message` is too coarse or carries producer-internal context that
351
+ * must not cross the buyer trust boundary. `code` reuses the standard error
352
+ * vocabulary; `message` is buyer-safe by spec — no vendor identifiers,
353
+ * ad-server type names, internal object names, internal IDs, or stack traces
354
+ * — so it may be rendered directly to a buyer UI. When present, the
355
+ * enclosing `recovery` classifies the buyer-actionable reason. See
356
+ * `core/error.json`'s `buyer_reason` field for the normative contract.
357
+ */
358
+ buyer_reason?: {
359
+ code: string;
360
+ message: string;
361
+ };
348
362
  /** True when the SDK inferred this error from unstructured text (L1 compliance) */
349
363
  synthetic?: boolean;
350
364
  }
@@ -345,6 +345,20 @@ export interface AdcpErrorInfo {
345
345
  * the field, `'enum'` → pick a valid value, `'type'` → fix the value type.
346
346
  */
347
347
  issues?: AdcpValidationIssue[];
348
+ /**
349
+ * Buyer-actionable classification of the failure. Present when the enclosing
350
+ * `code`/`message` is too coarse or carries producer-internal context that
351
+ * must not cross the buyer trust boundary. `code` reuses the standard error
352
+ * vocabulary; `message` is buyer-safe by spec — no vendor identifiers,
353
+ * ad-server type names, internal object names, internal IDs, or stack traces
354
+ * — so it may be rendered directly to a buyer UI. When present, the
355
+ * enclosing `recovery` classifies the buyer-actionable reason. See
356
+ * `core/error.json`'s `buyer_reason` field for the normative contract.
357
+ */
358
+ buyer_reason?: {
359
+ code: string;
360
+ message: string;
361
+ };
348
362
  /** True when the SDK inferred this error from unstructured text (L1 compliance) */
349
363
  synthetic?: boolean;
350
364
  }
@@ -4077,10 +4077,7 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
4077
4077
  if (hasCreativeFormatData) {
4078
4078
  this.validateBeforeCreativeCapabilityProbe("create_media_buy", params, taskOptions);
4079
4079
  }
4080
- const wireMode = hasCreativeFormatData ? this.resolveCreativeFormatWireMode(
4081
- "create_media_buy",
4082
- await this.getCapabilities({ signal: taskOptions.signal, transport: taskOptions.transport })
4083
- ) : "canonical";
4080
+ const wireMode = hasCreativeFormatData ? this.resolveCreativeFormatWireMode("create_media_buy", await this.getCapabilities(taskOptions)) : "canonical";
4084
4081
  if (this.config.webhookUrlTemplate && !options?.disableWebhook) {
4085
4082
  const now = /* @__PURE__ */ new Date();
4086
4083
  const year = now.getUTCFullYear();
@@ -4198,10 +4195,7 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
4198
4195
  if (hasCreativeFormatData) {
4199
4196
  this.validateBeforeCreativeCapabilityProbe("update_media_buy", params, taskOptions);
4200
4197
  }
4201
- const wireMode = hasCreativeFormatData ? this.resolveCreativeFormatWireMode(
4202
- "update_media_buy",
4203
- await this.getCapabilities({ signal: taskOptions.signal, transport: taskOptions.transport })
4204
- ) : "canonical";
4198
+ const wireMode = hasCreativeFormatData ? this.resolveCreativeFormatWireMode("update_media_buy", await this.getCapabilities(taskOptions)) : "canonical";
4205
4199
  const result = await this.executeAndHandle(
4206
4200
  "update_media_buy",
4207
4201
  "onUpdateMediaBuyStatusChange",
@@ -4283,10 +4277,7 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
4283
4277
  projectionCatalogs ?? this.config.projectionCatalogs
4284
4278
  );
4285
4279
  this.validateBeforeCreativeCapabilityProbe("sync_creatives", params, taskOptions);
4286
- const wireMode = this.resolveCreativeFormatWireMode(
4287
- "sync_creatives",
4288
- await this.getCapabilities({ signal: taskOptions.signal, transport: taskOptions.transport })
4289
- );
4280
+ const wireMode = this.resolveCreativeFormatWireMode("sync_creatives", await this.getCapabilities(taskOptions));
4290
4281
  const configuredSelectorContainers = [
4291
4282
  ...creativeFormatProjection?.selectorContainers ?? []
4292
4283
  ];
@@ -5709,7 +5700,22 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
5709
5700
  if (hasCapabilitiesTool) {
5710
5701
  try {
5711
5702
  const agent = await this.ensureEndpointDiscovered(options);
5712
- const result = await this.executor.executeTask(agent, "get_adcp_capabilities", {}, void 0, options);
5703
+ const callerOptions = options;
5704
+ const probeOptions = {
5705
+ ...options?.signal !== void 0 && { signal: options.signal },
5706
+ ...options?.transport !== void 0 && { transport: options.transport },
5707
+ ...callerOptions?.disableWebhook !== void 0 && { disableWebhook: callerOptions.disableWebhook },
5708
+ ...callerOptions?.delegatedOperatorAuthorization !== void 0 && {
5709
+ delegatedOperatorAuthorization: { ...callerOptions.delegatedOperatorAuthorization }
5710
+ }
5711
+ };
5712
+ const result = await this.executor.executeTask(
5713
+ agent,
5714
+ "get_adcp_capabilities",
5715
+ {},
5716
+ void 0,
5717
+ probeOptions
5718
+ );
5713
5719
  (0, import_abort2.throwIfAborted)(options?.signal);
5714
5720
  const requestTimeoutMs = (0, import_abort2.resolveRequestTimeoutMs)(
5715
5721
  options?.transport?.requestTimeoutMs ?? this.config.transport?.requestTimeoutMs
@@ -4131,10 +4131,7 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
4131
4131
  if (hasCreativeFormatData) {
4132
4132
  this.validateBeforeCreativeCapabilityProbe("create_media_buy", params, taskOptions);
4133
4133
  }
4134
- const wireMode = hasCreativeFormatData ? this.resolveCreativeFormatWireMode(
4135
- "create_media_buy",
4136
- await this.getCapabilities({ signal: taskOptions.signal, transport: taskOptions.transport })
4137
- ) : "canonical";
4134
+ const wireMode = hasCreativeFormatData ? this.resolveCreativeFormatWireMode("create_media_buy", await this.getCapabilities(taskOptions)) : "canonical";
4138
4135
  if (this.config.webhookUrlTemplate && !options?.disableWebhook) {
4139
4136
  const now = /* @__PURE__ */ new Date();
4140
4137
  const year = now.getUTCFullYear();
@@ -4252,10 +4249,7 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
4252
4249
  if (hasCreativeFormatData) {
4253
4250
  this.validateBeforeCreativeCapabilityProbe("update_media_buy", params, taskOptions);
4254
4251
  }
4255
- const wireMode = hasCreativeFormatData ? this.resolveCreativeFormatWireMode(
4256
- "update_media_buy",
4257
- await this.getCapabilities({ signal: taskOptions.signal, transport: taskOptions.transport })
4258
- ) : "canonical";
4252
+ const wireMode = hasCreativeFormatData ? this.resolveCreativeFormatWireMode("update_media_buy", await this.getCapabilities(taskOptions)) : "canonical";
4259
4253
  const result = await this.executeAndHandle(
4260
4254
  "update_media_buy",
4261
4255
  "onUpdateMediaBuyStatusChange",
@@ -4337,10 +4331,7 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
4337
4331
  projectionCatalogs ?? this.config.projectionCatalogs
4338
4332
  );
4339
4333
  this.validateBeforeCreativeCapabilityProbe("sync_creatives", params, taskOptions);
4340
- const wireMode = this.resolveCreativeFormatWireMode(
4341
- "sync_creatives",
4342
- await this.getCapabilities({ signal: taskOptions.signal, transport: taskOptions.transport })
4343
- );
4334
+ const wireMode = this.resolveCreativeFormatWireMode("sync_creatives", await this.getCapabilities(taskOptions));
4344
4335
  const configuredSelectorContainers = [
4345
4336
  ...creativeFormatProjection?.selectorContainers ?? []
4346
4337
  ];
@@ -5763,7 +5754,22 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
5763
5754
  if (hasCapabilitiesTool) {
5764
5755
  try {
5765
5756
  const agent = await this.ensureEndpointDiscovered(options);
5766
- const result = await this.executor.executeTask(agent, "get_adcp_capabilities", {}, void 0, options);
5757
+ const callerOptions = options;
5758
+ const probeOptions = {
5759
+ ...options?.signal !== void 0 && { signal: options.signal },
5760
+ ...options?.transport !== void 0 && { transport: options.transport },
5761
+ ...callerOptions?.disableWebhook !== void 0 && { disableWebhook: callerOptions.disableWebhook },
5762
+ ...callerOptions?.delegatedOperatorAuthorization !== void 0 && {
5763
+ delegatedOperatorAuthorization: { ...callerOptions.delegatedOperatorAuthorization }
5764
+ }
5765
+ };
5766
+ const result = await this.executor.executeTask(
5767
+ agent,
5768
+ "get_adcp_capabilities",
5769
+ {},
5770
+ void 0,
5771
+ probeOptions
5772
+ );
5767
5773
  throwIfAborted(options?.signal);
5768
5774
  const requestTimeoutMs = resolveRequestTimeoutMs(
5769
5775
  options?.transport?.requestTimeoutMs ?? this.config.transport?.requestTimeoutMs
@@ -2,8 +2,8 @@ export { RegistryClient, RegistryRequestError, isRegistryRequestError, RegistryS
2
2
  export type { RegistrySyncConfig, RegistrySyncState, RegistrySyncTransport, RegistrySyncEvents, AgentFilter, RegistrySyncProperty, CursorStore, PropertyRegistryConfig, FeedStreamQuery, FeedStreamMessage, FeedHeartbeat, FeedStreamErrorData, OpenFeedStreamOptions, FeedFreshness, } from './registry/index.mjs';
3
3
  export { openFeedStream, parseSseStream, sanitizeStreamText, DEFAULT_MAX_SSE_FRAME_BYTES, FeedStreamError, FeedStreamUnsupportedError, FeedStreamCursorExpiredError, FeedStreamHttpError, FeedStreamParseError, } from './registry/index.mjs';
4
4
  export type { ResolvedBrand, LookupBrandOptions, ResolvedProperty as ResolvedRegistryProperty, PropertyInfo, RegistryClientConfig, SaveBrandRequest, SaveBrandResponse, BrandLogoReviewStatus, ApprovedBrandLogoAsset, PendingBrandLogoAsset, ReviewedBrandLogoAsset, BrandLogoAsset, ListBrandLogosOptions, ListBrandLogosResponse, SaveBrandLogoInput, SaveBrandLogoResponse, UploadBrandLogoInput, UploadBrandLogoResponse, SavePropertyIdentity, RegistryPropertyIdentity, SavePropertyRequest, SavePropertyResponse, ResolveIdentifiersRequest, ResolveIdentifiersResponse, FileCatalogDisputeRequest, FileCatalogDisputeResponse, GetCatalogDisputeResponse, BrandRegistryItem, PropertyRegistryItem, ValidationResult as RegistryValidationResult, FederatedAgentWithDetails, FederatedPublisher, DomainLookupResult, ListBrandsOptions, ListBrandsResponse, GetBrandJsonResponse, ListOptions, ListAgentsOptions, ListAgentsResponse, ListPublishersResponse, ValidateAdagentsRequest, ValidateAdagentsResponse, CreateAdagentsRequest, CreateAdagentsResponse, AdagentsAuthorizedAgent, AdagentsCatalogFormat, AdagentsPlacementDefinition, AdagentsPlacementFormatReference, AdagentsPlacementFormatOption, AdagentsPlacementTag, CreatedAdagentsJson, CommunityMirrorAdagentsConfig, CreateCommunityMirrorAdagentsConfig, CommunityMirrorAdagentsCatalog, PublishCommunityMirrorAdagentsResponse, CommunityMirrorAdagentsSummary, ListCommunityMirrorAdagentsResponse, GetCommunityMirrorAdagentsResponse, PublishCommunityMirrorAdagentsRequest, PublishCommunityMirrorAdagentsError, DeleteCommunityMirrorAdagentsResponse, PublisherPropertySelector, CompanySearchResult, FindCompanyResult, ManagerRevalidationRequest, ManagerRevalidationResponse, ListPoliciesQuery, ListPoliciesResponse, ResolvePolicyQuery, ResolvePolicyResponse, ResolvePoliciesBulkRequest, ResolvePoliciesBulkResponse, GetPolicyHistoryQuery, GetPolicyHistoryResponse, SavePolicyRequest, SavePolicyResponse, GetBrandHistoryQuery, GetBrandHistoryResponse, GetPropertyHistoryQuery, GetPropertyHistoryResponse, RegistryFeedEvent, AgentEventPayload, PropertyEventPayload, CollectionEventPayload, AuthorizationEventPayload, PublisherEventPayload, BrandEventPayload, CatalogBrowseResponse, CatalogBrowseEntry, CatalogSyncResponse, CatalogSyncEntry, AgentCompliance, AgentComplianceDetail, StoryboardStatus, OperatorLookupResult, PublisherLookupResult, ComplianceChangedPayload, GetAgentStoryboardStatusResponse, GetAgentStoryboardStatusBulkResponse, } from './registry/index.mjs';
5
- export { COMMON_LOGO_SLOTS, applyBrandAssetMappings, checkLogoSlotCoverage, extractBrandWebsiteAliasDomains, extractBrandWebsiteAliases, selectLogoForSlot, updateBrandJsonFromMappings, validateBrandAssetMappings, } from './brand/index.mjs';
6
- export type { AppliedBrandAssetMapping, ApplyBrandAssetMappingsOptions, ApplyBrandAssetMappingsResult, BrandAssetCandidate, BrandAssetCropBox, BrandAssetExtractionMethod, BrandAssetMapping, BrandAssetMappingIssue, BrandAssetMappingTarget, BrandAssetMappingValidationResult, BrandAssetReviewStatus, BrandWebsiteAlias, BrandWebsiteAliasRelationship, BrandWebsiteAliasSource, BrandJsonRecord, BrandLogoBackground, BrandLogoOrientation, BrandLogoProposal, BrandLogoVariant, ExtractBrandWebsiteAliasesOptions, LogoSelectionOptions, LogoSlotCoverage, LogoSlotCoverageOptions, ResolveBrandAssetUrl, SkippedBrandAssetMapping, UpdateBrandJsonFromMappingsOptions, UpdateBrandJsonFromMappingsResult, } from './brand/index.mjs';
5
+ export { COMMON_LOGO_SLOTS, BrandDomainValidationError, applyBrandAssetMappings, checkLogoSlotCoverage, extractBrandWebsiteAliasDomains, extractBrandWebsiteAliases, isDevelopmentBrandDomain, selectLogoForSlot, updateBrandJsonFromMappings, validateBrandAssetMappings, validateBrandDomain, } from './brand/index.mjs';
6
+ export type { AppliedBrandAssetMapping, ApplyBrandAssetMappingsOptions, ApplyBrandAssetMappingsResult, BrandAssetCandidate, BrandAssetCropBox, BrandAssetExtractionMethod, BrandAssetMapping, BrandAssetMappingIssue, BrandAssetMappingTarget, BrandAssetMappingValidationResult, BrandAssetReviewStatus, BrandWebsiteAlias, BrandWebsiteAliasRelationship, BrandWebsiteAliasSource, BrandJsonRecord, BrandDomainValidationCode, BrandLogoBackground, BrandLogoOrientation, BrandLogoProposal, BrandLogoVariant, ExtractBrandWebsiteAliasesOptions, LogoSelectionOptions, LogoSlotCoverage, LogoSlotCoverageOptions, ResolveBrandAssetUrl, SkippedBrandAssetMapping, UpdateBrandJsonFromMappingsOptions, UpdateBrandJsonFromMappingsResult, ValidateBrandDomainOptions, } from './brand/index.mjs';
7
7
  export { PropertyIndex, getPropertyIndex, resetPropertyIndex, type PropertyMatch, type AgentAuthorization, } from './discovery/property-index.mjs';
8
8
  export { PropertyCrawler, type AgentInfo, type CrawlResult, type PropertyCrawlerConfig, } from './discovery/property-crawler.mjs';
9
9
  export { NetworkConsistencyChecker, type NetworkConsistencyCheckerConfig, type NetworkCheckReport, type CheckSummary, type CheckProgress, type OrphanedPointer, type StalePointer, type MissingPointer, type SchemaError, type AgentHealthResult, type DomainDetail, type DomainStatus, } from './discovery/network-consistency-checker.mjs';
@@ -2,8 +2,8 @@ export { RegistryClient, RegistryRequestError, isRegistryRequestError, RegistryS
2
2
  export type { RegistrySyncConfig, RegistrySyncState, RegistrySyncTransport, RegistrySyncEvents, AgentFilter, RegistrySyncProperty, CursorStore, PropertyRegistryConfig, FeedStreamQuery, FeedStreamMessage, FeedHeartbeat, FeedStreamErrorData, OpenFeedStreamOptions, FeedFreshness, } from './registry';
3
3
  export { openFeedStream, parseSseStream, sanitizeStreamText, DEFAULT_MAX_SSE_FRAME_BYTES, FeedStreamError, FeedStreamUnsupportedError, FeedStreamCursorExpiredError, FeedStreamHttpError, FeedStreamParseError, } from './registry';
4
4
  export type { ResolvedBrand, LookupBrandOptions, ResolvedProperty as ResolvedRegistryProperty, PropertyInfo, RegistryClientConfig, SaveBrandRequest, SaveBrandResponse, BrandLogoReviewStatus, ApprovedBrandLogoAsset, PendingBrandLogoAsset, ReviewedBrandLogoAsset, BrandLogoAsset, ListBrandLogosOptions, ListBrandLogosResponse, SaveBrandLogoInput, SaveBrandLogoResponse, UploadBrandLogoInput, UploadBrandLogoResponse, SavePropertyIdentity, RegistryPropertyIdentity, SavePropertyRequest, SavePropertyResponse, ResolveIdentifiersRequest, ResolveIdentifiersResponse, FileCatalogDisputeRequest, FileCatalogDisputeResponse, GetCatalogDisputeResponse, BrandRegistryItem, PropertyRegistryItem, ValidationResult as RegistryValidationResult, FederatedAgentWithDetails, FederatedPublisher, DomainLookupResult, ListBrandsOptions, ListBrandsResponse, GetBrandJsonResponse, ListOptions, ListAgentsOptions, ListAgentsResponse, ListPublishersResponse, ValidateAdagentsRequest, ValidateAdagentsResponse, CreateAdagentsRequest, CreateAdagentsResponse, AdagentsAuthorizedAgent, AdagentsCatalogFormat, AdagentsPlacementDefinition, AdagentsPlacementFormatReference, AdagentsPlacementFormatOption, AdagentsPlacementTag, CreatedAdagentsJson, CommunityMirrorAdagentsConfig, CreateCommunityMirrorAdagentsConfig, CommunityMirrorAdagentsCatalog, PublishCommunityMirrorAdagentsResponse, CommunityMirrorAdagentsSummary, ListCommunityMirrorAdagentsResponse, GetCommunityMirrorAdagentsResponse, PublishCommunityMirrorAdagentsRequest, PublishCommunityMirrorAdagentsError, DeleteCommunityMirrorAdagentsResponse, PublisherPropertySelector, CompanySearchResult, FindCompanyResult, ManagerRevalidationRequest, ManagerRevalidationResponse, ListPoliciesQuery, ListPoliciesResponse, ResolvePolicyQuery, ResolvePolicyResponse, ResolvePoliciesBulkRequest, ResolvePoliciesBulkResponse, GetPolicyHistoryQuery, GetPolicyHistoryResponse, SavePolicyRequest, SavePolicyResponse, GetBrandHistoryQuery, GetBrandHistoryResponse, GetPropertyHistoryQuery, GetPropertyHistoryResponse, RegistryFeedEvent, AgentEventPayload, PropertyEventPayload, CollectionEventPayload, AuthorizationEventPayload, PublisherEventPayload, BrandEventPayload, CatalogBrowseResponse, CatalogBrowseEntry, CatalogSyncResponse, CatalogSyncEntry, AgentCompliance, AgentComplianceDetail, StoryboardStatus, OperatorLookupResult, PublisherLookupResult, ComplianceChangedPayload, GetAgentStoryboardStatusResponse, GetAgentStoryboardStatusBulkResponse, } from './registry';
5
- export { COMMON_LOGO_SLOTS, applyBrandAssetMappings, checkLogoSlotCoverage, extractBrandWebsiteAliasDomains, extractBrandWebsiteAliases, selectLogoForSlot, updateBrandJsonFromMappings, validateBrandAssetMappings, } from './brand';
6
- export type { AppliedBrandAssetMapping, ApplyBrandAssetMappingsOptions, ApplyBrandAssetMappingsResult, BrandAssetCandidate, BrandAssetCropBox, BrandAssetExtractionMethod, BrandAssetMapping, BrandAssetMappingIssue, BrandAssetMappingTarget, BrandAssetMappingValidationResult, BrandAssetReviewStatus, BrandWebsiteAlias, BrandWebsiteAliasRelationship, BrandWebsiteAliasSource, BrandJsonRecord, BrandLogoBackground, BrandLogoOrientation, BrandLogoProposal, BrandLogoVariant, ExtractBrandWebsiteAliasesOptions, LogoSelectionOptions, LogoSlotCoverage, LogoSlotCoverageOptions, ResolveBrandAssetUrl, SkippedBrandAssetMapping, UpdateBrandJsonFromMappingsOptions, UpdateBrandJsonFromMappingsResult, } from './brand';
5
+ export { COMMON_LOGO_SLOTS, BrandDomainValidationError, applyBrandAssetMappings, checkLogoSlotCoverage, extractBrandWebsiteAliasDomains, extractBrandWebsiteAliases, isDevelopmentBrandDomain, selectLogoForSlot, updateBrandJsonFromMappings, validateBrandAssetMappings, validateBrandDomain, } from './brand';
6
+ export type { AppliedBrandAssetMapping, ApplyBrandAssetMappingsOptions, ApplyBrandAssetMappingsResult, BrandAssetCandidate, BrandAssetCropBox, BrandAssetExtractionMethod, BrandAssetMapping, BrandAssetMappingIssue, BrandAssetMappingTarget, BrandAssetMappingValidationResult, BrandAssetReviewStatus, BrandWebsiteAlias, BrandWebsiteAliasRelationship, BrandWebsiteAliasSource, BrandJsonRecord, BrandDomainValidationCode, BrandLogoBackground, BrandLogoOrientation, BrandLogoProposal, BrandLogoVariant, ExtractBrandWebsiteAliasesOptions, LogoSelectionOptions, LogoSlotCoverage, LogoSlotCoverageOptions, ResolveBrandAssetUrl, SkippedBrandAssetMapping, UpdateBrandJsonFromMappingsOptions, UpdateBrandJsonFromMappingsResult, ValidateBrandDomainOptions, } from './brand';
7
7
  export { PropertyIndex, getPropertyIndex, resetPropertyIndex, type PropertyMatch, type AgentAuthorization, } from './discovery/property-index';
8
8
  export { PropertyCrawler, type AgentInfo, type CrawlResult, type PropertyCrawlerConfig, } from './discovery/property-crawler';
9
9
  export { NetworkConsistencyChecker, type NetworkConsistencyCheckerConfig, type NetworkCheckReport, type CheckSummary, type CheckProgress, type OrphanedPointer, type StalePointer, type MissingPointer, type SchemaError, type AgentHealthResult, type DomainDetail, type DomainStatus, } from './discovery/network-consistency-checker';
package/dist/lib/index.js CHANGED
@@ -46,6 +46,7 @@ __export(index_exports, {
46
46
  AuthenticationCredentialsRejectedError: () => import_errors.AuthenticationCredentialsRejectedError,
47
47
  AuthenticationRequiredError: () => import_errors.AuthenticationRequiredError,
48
48
  BRAND_RIGHTS_TOOLS: () => import_capabilities.BRAND_RIGHTS_TOOLS,
49
+ BrandDomainValidationError: () => import_brand.BrandDomainValidationError,
49
50
  BrandJsonSchema: () => import_wellknown_schemas.BrandJsonSchema,
50
51
  BuyerRetryPolicy: () => import_buyer_retry_policy.BuyerRetryPolicy,
51
52
  CATALOG_MACRO_VECTORS: () => import_substitution.CATALOG_MACRO_VECTORS,
@@ -438,6 +439,7 @@ __export(index_exports, {
438
439
  isCreateMediaBuyInputRequired: () => import_typeGuards.isCreateMediaBuyInputRequired,
439
440
  isCreateMediaBuySubmitted: () => import_typeGuards.isCreateMediaBuySubmitted,
440
441
  isCreateMediaBuyWorking: () => import_typeGuards.isCreateMediaBuyWorking,
442
+ isDevelopmentBrandDomain: () => import_brand.isDevelopmentBrandDomain,
441
443
  isEnvSecretReference: () => import_oauth4.isEnvSecretReference,
442
444
  isErrorOfType: () => import_errors.isErrorOfType,
443
445
  isGetProductsCompleted: () => import_typeGuards.isGetProductsCompleted,
@@ -666,6 +668,7 @@ __export(index_exports, {
666
668
  validateAdcpVersionWire: () => import_schema_loader.validateAdcpVersionWire,
667
669
  validateAgentUrl: () => import_validation.validateAgentUrl,
668
670
  validateBrandAssetMappings: () => import_brand.validateBrandAssetMappings,
671
+ validateBrandDomain: () => import_brand.validateBrandDomain,
669
672
  validateGetProductsCacheScope: () => import_get_products_cache_scope.validateGetProductsCacheScope,
670
673
  validateGovernancePlan: () => import_governance.validateGovernancePlan,
671
674
  validateProductsAgainstPropertyPolicy: () => import_media_buy.validateProductsAgainstPropertyPolicy,
@@ -837,6 +840,7 @@ function createAdCPClientFromEnv() {
837
840
  AuthenticationCredentialsRejectedError,
838
841
  AuthenticationRequiredError,
839
842
  BRAND_RIGHTS_TOOLS,
843
+ BrandDomainValidationError,
840
844
  BrandJsonSchema,
841
845
  BuyerRetryPolicy,
842
846
  CATALOG_MACRO_VECTORS,
@@ -1229,6 +1233,7 @@ function createAdCPClientFromEnv() {
1229
1233
  isCreateMediaBuyInputRequired,
1230
1234
  isCreateMediaBuySubmitted,
1231
1235
  isCreateMediaBuyWorking,
1236
+ isDevelopmentBrandDomain,
1232
1237
  isEnvSecretReference,
1233
1238
  isErrorOfType,
1234
1239
  isGetProductsCompleted,
@@ -1457,6 +1462,7 @@ function createAdCPClientFromEnv() {
1457
1462
  validateAdcpVersionWire,
1458
1463
  validateAgentUrl,
1459
1464
  validateBrandAssetMappings,
1465
+ validateBrandDomain,
1460
1466
  validateGetProductsCacheScope,
1461
1467
  validateGovernancePlan,
1462
1468
  validateProductsAgainstPropertyPolicy,
@@ -21,13 +21,16 @@ import {
21
21
  } from "./registry/index.mjs";
22
22
  import {
23
23
  COMMON_LOGO_SLOTS,
24
+ BrandDomainValidationError,
24
25
  applyBrandAssetMappings,
25
26
  checkLogoSlotCoverage,
26
27
  extractBrandWebsiteAliasDomains,
27
28
  extractBrandWebsiteAliases,
29
+ isDevelopmentBrandDomain,
28
30
  selectLogoForSlot,
29
31
  updateBrandJsonFromMappings,
30
- validateBrandAssetMappings
32
+ validateBrandAssetMappings,
33
+ validateBrandDomain
31
34
  } from "./brand/index.mjs";
32
35
  import {
33
36
  PropertyIndex,
@@ -793,6 +796,7 @@ export {
793
796
  AuthenticationCredentialsRejectedError,
794
797
  AuthenticationRequiredError,
795
798
  BRAND_RIGHTS_TOOLS,
799
+ BrandDomainValidationError,
796
800
  BrandJsonSchema,
797
801
  BuyerRetryPolicy,
798
802
  CATALOG_MACRO_VECTORS,
@@ -1185,6 +1189,7 @@ export {
1185
1189
  isCreateMediaBuyInputRequired,
1186
1190
  isCreateMediaBuySubmitted,
1187
1191
  isCreateMediaBuyWorking,
1192
+ isDevelopmentBrandDomain,
1188
1193
  isEnvSecretReference,
1189
1194
  isErrorOfType,
1190
1195
  isGetProductsCompleted,
@@ -1413,6 +1418,7 @@ export {
1413
1418
  validateAdcpVersionWire,
1414
1419
  validateAgentUrl,
1415
1420
  validateBrandAssetMappings,
1421
+ validateBrandDomain,
1416
1422
  validateGetProductsCacheScope,
1417
1423
  validateGovernancePlan,
1418
1424
  validateProductsAgainstPropertyPolicy,
@@ -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-09-07T02:22:39.478Z"
7
+ "synced_at": "2026-09-09T11:59:36.565Z"
8
8
  }