@adcp/sdk 14.0.0-rc.32 → 14.0.0-rc.34
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/bin/adcp-storyboard-summary.js +1 -0
- package/dist/lib/brand/domain.d.mts +30 -0
- package/dist/lib/brand/domain.d.ts +30 -0
- package/dist/lib/brand/domain.js +109 -0
- package/dist/lib/brand/domain.mjs +82 -0
- package/dist/lib/brand/index.d.mts +2 -1
- package/dist/lib/brand/index.d.ts +2 -1
- package/dist/lib/brand/index.js +9 -2
- package/dist/lib/brand/index.mjs +5 -1
- package/dist/lib/conformance/oracle.js +26 -6
- package/dist/lib/conformance/oracle.mjs +26 -6
- package/dist/lib/core/ConversationTypes.d.mts +14 -0
- package/dist/lib/core/ConversationTypes.d.ts +14 -0
- package/dist/lib/core/SingleAgentClient.js +7 -2
- package/dist/lib/core/SingleAgentClient.mjs +8 -3
- package/dist/lib/core/TaskExecutor.js +3 -0
- package/dist/lib/core/TaskExecutor.mjs +3 -0
- package/dist/lib/index.d.mts +3 -3
- package/dist/lib/index.d.ts +3 -3
- package/dist/lib/index.js +6 -0
- package/dist/lib/index.mjs +7 -1
- package/dist/lib/protocols/mcp-modern.d.mts +2 -0
- package/dist/lib/protocols/mcp-modern.d.ts +2 -0
- package/dist/lib/protocols/mcp-modern.js +7 -4
- package/dist/lib/protocols/mcp-modern.mjs +7 -4
- package/dist/lib/protocols/mcp.js +2 -1
- package/dist/lib/protocols/mcp.mjs +3 -2
- package/dist/lib/registry/types.generated.d.mts +1 -1
- package/dist/lib/registry/types.generated.d.ts +1 -1
- package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
- package/dist/lib/server/a2a-adapter.js +2 -3
- package/dist/lib/server/a2a-adapter.mjs +4 -4
- package/dist/lib/server/adcp-server.d.mts +11 -2
- package/dist/lib/server/adcp-server.d.ts +11 -2
- package/dist/lib/server/adcp-server.js +3 -2
- package/dist/lib/server/adcp-server.mjs +3 -2
- package/dist/lib/server/create-adcp-server.d.mts +43 -17
- package/dist/lib/server/create-adcp-server.d.ts +43 -17
- package/dist/lib/server/create-adcp-server.js +288 -164
- package/dist/lib/server/create-adcp-server.mjs +200 -77
- package/dist/lib/server/decisioning/account.d.mts +2 -0
- package/dist/lib/server/decisioning/account.d.ts +2 -0
- package/dist/lib/server/decisioning/async-outcome.d.mts +34 -0
- package/dist/lib/server/decisioning/async-outcome.d.ts +34 -0
- package/dist/lib/server/decisioning/async-outcome.js +4 -1
- package/dist/lib/server/decisioning/async-outcome.mjs +4 -1
- package/dist/lib/server/decisioning/context.d.mts +2 -0
- package/dist/lib/server/decisioning/context.d.ts +2 -0
- package/dist/lib/server/decisioning/runtime/from-platform.js +77 -41
- package/dist/lib/server/decisioning/runtime/from-platform.mjs +77 -41
- package/dist/lib/server/decisioning/runtime/to-context.d.mts +1 -1
- package/dist/lib/server/decisioning/runtime/to-context.d.ts +1 -1
- package/dist/lib/server/decisioning/runtime/to-context.js +24 -7
- package/dist/lib/server/decisioning/runtime/to-context.mjs +24 -7
- package/dist/lib/server/errors.d.mts +23 -0
- package/dist/lib/server/errors.d.ts +23 -0
- package/dist/lib/server/errors.js +2 -1
- package/dist/lib/server/errors.mjs +2 -1
- package/dist/lib/server/index.d.mts +4 -2
- package/dist/lib/server/index.d.ts +4 -2
- package/dist/lib/server/index.js +25 -0
- package/dist/lib/server/index.mjs +26 -0
- package/dist/lib/server/legacy/v5/index.d.mts +1 -1
- package/dist/lib/server/legacy/v5/index.d.ts +1 -1
- package/dist/lib/server/normalize-errors.d.mts +15 -3
- package/dist/lib/server/normalize-errors.d.ts +15 -3
- package/dist/lib/server/normalize-errors.js +6 -0
- package/dist/lib/server/normalize-errors.mjs +6 -0
- package/dist/lib/server/notification-subscriptions/index.d.mts +9 -0
- package/dist/lib/server/notification-subscriptions/index.d.ts +9 -0
- package/dist/lib/server/notification-subscriptions/index.js +55 -0
- package/dist/lib/server/notification-subscriptions/index.mjs +30 -0
- package/dist/lib/server/notification-subscriptions/memory-store.d.mts +3 -0
- package/dist/lib/server/notification-subscriptions/memory-store.d.ts +3 -0
- package/dist/lib/server/notification-subscriptions/memory-store.js +95 -0
- package/dist/lib/server/notification-subscriptions/memory-store.mjs +71 -0
- package/dist/lib/server/notification-subscriptions/postgres-runtime.d.mts +42 -0
- package/dist/lib/server/notification-subscriptions/postgres-runtime.d.ts +42 -0
- package/dist/lib/server/notification-subscriptions/postgres-runtime.js +84 -0
- package/dist/lib/server/notification-subscriptions/postgres-runtime.mjs +65 -0
- package/dist/lib/server/notification-subscriptions/postgres-store.d.mts +10 -0
- package/dist/lib/server/notification-subscriptions/postgres-store.d.ts +10 -0
- package/dist/lib/server/notification-subscriptions/postgres-store.js +232 -0
- package/dist/lib/server/notification-subscriptions/postgres-store.mjs +206 -0
- package/dist/lib/server/notification-subscriptions/protocol-handlers.d.mts +14 -0
- package/dist/lib/server/notification-subscriptions/protocol-handlers.d.ts +14 -0
- package/dist/lib/server/notification-subscriptions/protocol-handlers.js +102 -0
- package/dist/lib/server/notification-subscriptions/protocol-handlers.mjs +78 -0
- package/dist/lib/server/notification-subscriptions/runtime.d.mts +20 -0
- package/dist/lib/server/notification-subscriptions/runtime.d.ts +20 -0
- package/dist/lib/server/notification-subscriptions/runtime.js +849 -0
- package/dist/lib/server/notification-subscriptions/runtime.mjs +821 -0
- package/dist/lib/server/notification-subscriptions/types.d.mts +330 -0
- package/dist/lib/server/notification-subscriptions/types.d.ts +330 -0
- package/dist/lib/server/notification-subscriptions/types.js +35 -0
- package/dist/lib/server/notification-subscriptions/types.mjs +11 -0
- package/dist/lib/server/redact.d.mts +1 -51
- package/dist/lib/server/redact.d.ts +1 -51
- package/dist/lib/server/redact.js +2 -9
- package/dist/lib/server/redact.mjs +1 -8
- package/dist/lib/server/webhook-delivery/recovery.d.mts +2 -0
- package/dist/lib/server/webhook-delivery/recovery.d.ts +2 -0
- package/dist/lib/server/webhook-delivery/recovery.js +9 -4
- package/dist/lib/server/webhook-delivery/recovery.mjs +9 -4
- package/dist/lib/server/webhook-emitter.d.mts +41 -0
- package/dist/lib/server/webhook-emitter.d.ts +41 -0
- package/dist/lib/server/webhook-emitter.js +76 -4
- package/dist/lib/server/webhook-emitter.mjs +76 -4
- package/dist/lib/signing/agent-resolver/etld.js +7 -2
- package/dist/lib/signing/agent-resolver/etld.mjs +7 -2
- package/dist/lib/signing/agent-resolver/resolve-agent.js +21 -4
- package/dist/lib/signing/agent-resolver/resolve-agent.mjs +21 -4
- package/dist/lib/testing/compliance/summary.js +34 -6
- package/dist/lib/testing/compliance/summary.mjs +34 -6
- package/dist/lib/testing/storyboard/validations.d.mts +1 -1
- package/dist/lib/testing/storyboard/validations.d.ts +1 -1
- package/dist/lib/types/accept-proposal.d.ts +6 -3
- package/dist/lib/types/acquire-rights.d.ts +6 -3
- package/dist/lib/types/activate-signal.d.ts +6 -3
- package/dist/lib/types/build-creative.d.ts +11 -8
- package/dist/lib/types/buy-products.d.ts +6 -3
- package/dist/lib/types/calibrate-content.d.ts +6 -3
- package/dist/lib/types/comply-test-controller.d.ts +8 -5
- package/dist/lib/types/control-media-buy.d.ts +6 -3
- package/dist/lib/types/create-collection-list.d.ts +5 -2
- package/dist/lib/types/create-content-standards.d.ts +6 -3
- package/dist/lib/types/create-media-buy.d.ts +7 -4
- package/dist/lib/types/create-property-list.d.ts +5 -2
- package/dist/lib/types/decline-proposals.d.ts +6 -3
- package/dist/lib/types/delete-collection-list.d.ts +5 -2
- package/dist/lib/types/delete-property-list.d.ts +5 -2
- package/dist/lib/types/get-account-financials.d.ts +6 -3
- package/dist/lib/types/get-adcp-capabilities.d.ts +6 -3
- package/dist/lib/types/get-brand-identity.d.ts +6 -3
- package/dist/lib/types/get-collection-list.d.ts +5 -2
- package/dist/lib/types/get-content-standards.d.ts +6 -3
- package/dist/lib/types/get-creative-delivery.d.ts +6 -3
- package/dist/lib/types/get-creative-features.d.ts +6 -3
- package/dist/lib/types/get-media-buy-artifacts.d.ts +6 -3
- package/dist/lib/types/get-media-buy-delivery.d.ts +6 -3
- package/dist/lib/types/get-media-buys.d.ts +6 -3
- package/dist/lib/types/get-plan-audit-logs.d.ts +5 -2
- package/dist/lib/types/get-principal.d.ts +7 -4
- package/dist/lib/types/get-products.d.ts +7 -4
- package/dist/lib/types/get-property-list.d.ts +5 -2
- package/dist/lib/types/get-reporting-status.d.ts +8 -5
- package/dist/lib/types/get-rights.d.ts +6 -3
- package/dist/lib/types/get-signals.d.ts +7 -4
- package/dist/lib/types/get-task-status.d.ts +5 -2
- package/dist/lib/types/list-account-changes.d.ts +8 -5
- package/dist/lib/types/list-accounts.d.ts +6 -3
- package/dist/lib/types/list-collection-lists.d.ts +5 -2
- package/dist/lib/types/list-content-standards.d.ts +6 -3
- package/dist/lib/types/list-creative-formats.d.ts +6 -3
- package/dist/lib/types/list-creatives.d.ts +8 -5
- package/dist/lib/types/list-property-lists.d.ts +5 -2
- package/dist/lib/types/list-tasks.d.ts +5 -2
- package/dist/lib/types/list-transformers.d.ts +6 -3
- package/dist/lib/types/log-event.d.ts +6 -3
- package/dist/lib/types/preview-creative.d.ts +5 -2
- package/dist/lib/types/provide-performance-feedback.d.ts +6 -3
- package/dist/lib/types/refine-proposals.d.ts +8 -5
- package/dist/lib/types/report-usage.d.ts +6 -3
- package/dist/lib/types/request-proposals.d.ts +8 -5
- package/dist/lib/types/schemas.generated.d.ts +4 -4
- package/dist/lib/types/schemas.generated.js +3 -3
- package/dist/lib/types/schemas.generated.mjs +3 -3
- package/dist/lib/types/search-brands.d.ts +6 -3
- package/dist/lib/types/si-get-offering.d.ts +6 -3
- package/dist/lib/types/si-initiate-session.d.ts +6 -3
- package/dist/lib/types/si-send-message.d.ts +6 -3
- package/dist/lib/types/si-terminate-session.d.ts +6 -3
- package/dist/lib/types/sync-accounts.d.ts +7 -4
- package/dist/lib/types/sync-agent-notification-configs.d.ts +6 -3
- package/dist/lib/types/sync-audiences.d.ts +8 -5
- package/dist/lib/types/sync-catalogs.d.ts +9 -6
- package/dist/lib/types/sync-creatives.d.ts +8 -5
- package/dist/lib/types/sync-event-sources.d.ts +7 -4
- package/dist/lib/types/sync-governance.d.ts +7 -4
- package/dist/lib/types/sync-plans.d.ts +5 -2
- package/dist/lib/types/sync-principal.d.ts +9 -6
- package/dist/lib/types/sync-reporting-receipts.d.ts +6 -3
- package/dist/lib/types/update-collection-list.d.ts +5 -2
- package/dist/lib/types/update-content-standards.d.ts +6 -3
- package/dist/lib/types/update-media-buy.d.ts +7 -4
- package/dist/lib/types/update-property-list.d.ts +5 -2
- package/dist/lib/types/update-rights.d.ts +6 -3
- package/dist/lib/types/validate-content-delivery.d.ts +6 -3
- package/dist/lib/types/validate-input.d.ts +5 -2
- package/dist/lib/types/validate-property-delivery.d.ts +5 -2
- package/dist/lib/types/verify-brand-claim.d.ts +6 -3
- package/dist/lib/types/verify-brand-claims.d.ts +6 -3
- package/dist/lib/utils/adcp-version-config.d.mts +1 -1
- package/dist/lib/utils/adcp-version-config.d.ts +1 -1
- package/dist/lib/utils/adcp-version-config.js +7 -7
- package/dist/lib/utils/adcp-version-config.mjs +7 -7
- package/dist/lib/utils/buyer-retry-policy.d.mts +11 -0
- package/dist/lib/utils/buyer-retry-policy.d.ts +11 -0
- package/dist/lib/utils/error-extraction.d.mts +8 -0
- package/dist/lib/utils/error-extraction.d.ts +8 -0
- package/dist/lib/utils/error-extraction.js +15 -0
- package/dist/lib/utils/error-extraction.mjs +15 -0
- package/dist/lib/utils/logger.d.mts +10 -1
- package/dist/lib/utils/logger.d.ts +10 -1
- package/dist/lib/utils/logger.js +193 -8
- package/dist/lib/utils/logger.mjs +193 -8
- package/dist/lib/utils/redact-credential-patterns.d.mts +2 -0
- package/dist/lib/utils/redact-credential-patterns.d.ts +2 -0
- package/dist/lib/utils/redact-credential-patterns.js +66 -0
- package/dist/lib/utils/redact-credential-patterns.mjs +42 -0
- 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 +25 -2
- package/docs/guides/BUILD-AN-AGENT.md +7 -0
- package/docs/guides/MEDIA-BUY-3.2-COMPATIBILITY.md +17 -1
- package/docs/guides/PERSISTENT-NOTIFICATION-RUNTIME.md +214 -0
- package/docs/guides/PRODUCTION-DURABILITY.md +5 -0
- package/docs/llms.txt +5 -2
- package/docs/migration-13-to-14.md +22 -0
- package/package.json +1 -1
|
@@ -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 {};
|
package/dist/lib/brand/index.js
CHANGED
|
@@ -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
|
});
|
package/dist/lib/brand/index.mjs
CHANGED
|
@@ -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
|
};
|
|
@@ -56,17 +56,33 @@ const STACK_TRACE_REGEXES = [
|
|
|
56
56
|
/\.go:\d+ \+0x[0-9a-f]+/,
|
|
57
57
|
// PHP: `#7 /var/www/foo.php(42): Bar->baz()` — numbered frame with file:line
|
|
58
58
|
/#\d+ [^\s]+\.php\(\d+\):/,
|
|
59
|
-
// JVM: `\n\tat com.foo.Bar.method(Bar.java:42)` — fully-qualified
|
|
60
|
-
// method with source:line. Anchored to whitespace/newline so an
|
|
61
|
-
// echoed Javadoc reference in prose (`"at com.foo.Bar(Bar.java:42)"`)
|
|
62
|
-
// doesn't trigger the detector — real stack frames sit on their own
|
|
63
|
-
// indented line.
|
|
64
|
-
/(?:\\n\s*|^\s+|\n\s+)at [\w$.]+\.[\w$]+\([\w$]+\.(?:java|kt|kts|scala|groovy):\d+\)/,
|
|
65
59
|
// .NET: `at Foo.Bar.Baz() in /path/to/X.cs:line 42` — method invocation
|
|
66
60
|
// followed by ` in ` and a file:line marker. The method-name charset
|
|
67
61
|
// includes parens/brackets for generic and overloaded signatures.
|
|
68
62
|
/at [\w.<>`,()[\]]+ in [^:\s]+\.(?:cs|vb|fs):line \d+/
|
|
69
63
|
];
|
|
64
|
+
const JVM_STACK_FRAME = /^at [\w$.]+\.[\w$]+\([\w$]+\.(?:java|kt|kts|scala|groovy):\d+\)\s*/;
|
|
65
|
+
function isJsonFramingSuffix(value) {
|
|
66
|
+
if (!value.startsWith('"')) return false;
|
|
67
|
+
for (let index = 1; index < value.length; index++) {
|
|
68
|
+
const char = value[index];
|
|
69
|
+
if (char !== "}" && char !== "]" && char !== "," && char !== " " && char !== " ") return false;
|
|
70
|
+
}
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
function hasJvmStackFrame(haystack) {
|
|
74
|
+
const lines = haystack.replaceAll("\\n", "\n").split("\n");
|
|
75
|
+
for (const [index, line] of lines.entries()) {
|
|
76
|
+
const candidate = line.trimStart();
|
|
77
|
+
if (index > 0 || candidate !== line) {
|
|
78
|
+
const match = JVM_STACK_FRAME.exec(candidate);
|
|
79
|
+
if (match && (match[0].length === candidate.length || isJsonFramingSuffix(candidate.slice(match[0].length)))) {
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
70
86
|
const FS_PATH_SIGNATURES = [/\/Users\/[^ "']+/, /\/home\/[^ "']+/, /[A-Z]:\\\\Users\\\\/];
|
|
71
87
|
let cachedAjv = null;
|
|
72
88
|
function getAjv() {
|
|
@@ -160,6 +176,10 @@ function checkNoStackLeak(result, failures) {
|
|
|
160
176
|
return;
|
|
161
177
|
}
|
|
162
178
|
}
|
|
179
|
+
if (hasJvmStackFrame(haystack)) {
|
|
180
|
+
failures.push(`stack trace leak (matched ${JVM_STACK_FRAME.source})`);
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
163
183
|
for (const rx of STACK_TRACE_REGEXES) {
|
|
164
184
|
if (rx.test(haystack)) {
|
|
165
185
|
failures.push(`stack trace leak (matched ${rx.source})`);
|
|
@@ -22,17 +22,33 @@ const STACK_TRACE_REGEXES = [
|
|
|
22
22
|
/\.go:\d+ \+0x[0-9a-f]+/,
|
|
23
23
|
// PHP: `#7 /var/www/foo.php(42): Bar->baz()` — numbered frame with file:line
|
|
24
24
|
/#\d+ [^\s]+\.php\(\d+\):/,
|
|
25
|
-
// JVM: `\n\tat com.foo.Bar.method(Bar.java:42)` — fully-qualified
|
|
26
|
-
// method with source:line. Anchored to whitespace/newline so an
|
|
27
|
-
// echoed Javadoc reference in prose (`"at com.foo.Bar(Bar.java:42)"`)
|
|
28
|
-
// doesn't trigger the detector — real stack frames sit on their own
|
|
29
|
-
// indented line.
|
|
30
|
-
/(?:\\n\s*|^\s+|\n\s+)at [\w$.]+\.[\w$]+\([\w$]+\.(?:java|kt|kts|scala|groovy):\d+\)/,
|
|
31
25
|
// .NET: `at Foo.Bar.Baz() in /path/to/X.cs:line 42` — method invocation
|
|
32
26
|
// followed by ` in ` and a file:line marker. The method-name charset
|
|
33
27
|
// includes parens/brackets for generic and overloaded signatures.
|
|
34
28
|
/at [\w.<>`,()[\]]+ in [^:\s]+\.(?:cs|vb|fs):line \d+/
|
|
35
29
|
];
|
|
30
|
+
const JVM_STACK_FRAME = /^at [\w$.]+\.[\w$]+\([\w$]+\.(?:java|kt|kts|scala|groovy):\d+\)\s*/;
|
|
31
|
+
function isJsonFramingSuffix(value) {
|
|
32
|
+
if (!value.startsWith('"')) return false;
|
|
33
|
+
for (let index = 1; index < value.length; index++) {
|
|
34
|
+
const char = value[index];
|
|
35
|
+
if (char !== "}" && char !== "]" && char !== "," && char !== " " && char !== " ") return false;
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
function hasJvmStackFrame(haystack) {
|
|
40
|
+
const lines = haystack.replaceAll("\\n", "\n").split("\n");
|
|
41
|
+
for (const [index, line] of lines.entries()) {
|
|
42
|
+
const candidate = line.trimStart();
|
|
43
|
+
if (index > 0 || candidate !== line) {
|
|
44
|
+
const match = JVM_STACK_FRAME.exec(candidate);
|
|
45
|
+
if (match && (match[0].length === candidate.length || isJsonFramingSuffix(candidate.slice(match[0].length)))) {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
36
52
|
const FS_PATH_SIGNATURES = [/\/Users\/[^ "']+/, /\/home\/[^ "']+/, /[A-Z]:\\\\Users\\\\/];
|
|
37
53
|
let cachedAjv = null;
|
|
38
54
|
function getAjv() {
|
|
@@ -126,6 +142,10 @@ function checkNoStackLeak(result, failures) {
|
|
|
126
142
|
return;
|
|
127
143
|
}
|
|
128
144
|
}
|
|
145
|
+
if (hasJvmStackFrame(haystack)) {
|
|
146
|
+
failures.push(`stack trace leak (matched ${JVM_STACK_FRAME.source})`);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
129
149
|
for (const rx of STACK_TRACE_REGEXES) {
|
|
130
150
|
if (rx.test(haystack)) {
|
|
131
151
|
failures.push(`stack trace leak (matched ${rx.source})`);
|
|
@@ -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
|
}
|
|
@@ -5488,6 +5488,8 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
|
|
|
5488
5488
|
...options?.signal && { signal: options.signal },
|
|
5489
5489
|
...clientRequestTimeoutMs !== void 0 && { timeout: clientRequestTimeoutMs }
|
|
5490
5490
|
};
|
|
5491
|
+
const discoveryAdcpVersion = this.getWireAdcpVersion();
|
|
5492
|
+
const mcpListParams = (0, import_version.parseAdcpMajorVersion)(discoveryAdcpVersion) >= 3 ? { _meta: { adcp_version: (0, import_version.toReleasePrecisionVersion)(discoveryAdcpVersion) } } : void 0;
|
|
5491
5493
|
const ensureReadAuthToken = async () => {
|
|
5492
5494
|
if (!this.normalizedAgent.oauth_client_credentials) return this.normalizedAgent.auth_token;
|
|
5493
5495
|
const { ensureClientCredentialsTokens, getAgentStorage } = await import("../auth/oauth/index.js");
|
|
@@ -5504,7 +5506,7 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
|
|
|
5504
5506
|
const mcpClient2 = this.normalizedAgent._inProcessMcpClient;
|
|
5505
5507
|
const toolsList = await withResponseSizeLimit(
|
|
5506
5508
|
maxResponseBytes,
|
|
5507
|
-
() => mcpClient2.listTools(
|
|
5509
|
+
() => mcpClient2.listTools(mcpListParams, mcpRequestOptions)
|
|
5508
5510
|
);
|
|
5509
5511
|
const tools = toolsList.tools.map((tool) => ({
|
|
5510
5512
|
name: tool.name,
|
|
@@ -5557,6 +5559,9 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
|
|
|
5557
5559
|
maxResponseBytes,
|
|
5558
5560
|
() => tryListModernMCPTools(agent.agent_uri, readAuthToken, this.normalizedAgent.headers, {
|
|
5559
5561
|
authProvider,
|
|
5562
|
+
...mcpListParams?._meta.adcp_version !== void 0 && {
|
|
5563
|
+
adcpVersion: mcpListParams._meta.adcp_version
|
|
5564
|
+
},
|
|
5560
5565
|
signal: options?.signal,
|
|
5561
5566
|
requestTimeoutMs: transport?.requestTimeoutMs,
|
|
5562
5567
|
fetchFn: transport?.trustedFetchFn,
|
|
@@ -5582,7 +5587,7 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
|
|
|
5582
5587
|
try {
|
|
5583
5588
|
const toolsList = await withResponseSizeLimit(
|
|
5584
5589
|
maxResponseBytes,
|
|
5585
|
-
() => mcpClient.listTools(
|
|
5590
|
+
() => mcpClient.listTools(mcpListParams, mcpRequestOptions)
|
|
5586
5591
|
);
|
|
5587
5592
|
const tools = toolsList.tools.map((tool) => ({
|
|
5588
5593
|
name: tool.name,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import * as schemas from "../types/schemas.generated.mjs";
|
|
3
3
|
import { ADCP_ENVELOPE_FIELDS } from "../types/adcp.mjs";
|
|
4
|
-
import { parseAdcpMajorVersion } from "../version.mjs";
|
|
4
|
+
import { parseAdcpMajorVersion, toReleasePrecisionVersion } from "../version.mjs";
|
|
5
5
|
import {
|
|
6
6
|
isAdcpVersionSupported,
|
|
7
7
|
isAdcpVersionAtLeast,
|
|
@@ -5542,6 +5542,8 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
|
|
|
5542
5542
|
...options?.signal && { signal: options.signal },
|
|
5543
5543
|
...clientRequestTimeoutMs !== void 0 && { timeout: clientRequestTimeoutMs }
|
|
5544
5544
|
};
|
|
5545
|
+
const discoveryAdcpVersion = this.getWireAdcpVersion();
|
|
5546
|
+
const mcpListParams = parseAdcpMajorVersion(discoveryAdcpVersion) >= 3 ? { _meta: { adcp_version: toReleasePrecisionVersion(discoveryAdcpVersion) } } : void 0;
|
|
5545
5547
|
const ensureReadAuthToken = async () => {
|
|
5546
5548
|
if (!this.normalizedAgent.oauth_client_credentials) return this.normalizedAgent.auth_token;
|
|
5547
5549
|
const { ensureClientCredentialsTokens, getAgentStorage } = await import("../auth/oauth/index.mjs");
|
|
@@ -5558,7 +5560,7 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
|
|
|
5558
5560
|
const mcpClient2 = this.normalizedAgent._inProcessMcpClient;
|
|
5559
5561
|
const toolsList = await withResponseSizeLimit(
|
|
5560
5562
|
maxResponseBytes,
|
|
5561
|
-
() => mcpClient2.listTools(
|
|
5563
|
+
() => mcpClient2.listTools(mcpListParams, mcpRequestOptions)
|
|
5562
5564
|
);
|
|
5563
5565
|
const tools = toolsList.tools.map((tool) => ({
|
|
5564
5566
|
name: tool.name,
|
|
@@ -5611,6 +5613,9 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
|
|
|
5611
5613
|
maxResponseBytes,
|
|
5612
5614
|
() => tryListModernMCPTools(agent.agent_uri, readAuthToken, this.normalizedAgent.headers, {
|
|
5613
5615
|
authProvider,
|
|
5616
|
+
...mcpListParams?._meta.adcp_version !== void 0 && {
|
|
5617
|
+
adcpVersion: mcpListParams._meta.adcp_version
|
|
5618
|
+
},
|
|
5614
5619
|
signal: options?.signal,
|
|
5615
5620
|
requestTimeoutMs: transport?.requestTimeoutMs,
|
|
5616
5621
|
fetchFn: transport?.trustedFetchFn,
|
|
@@ -5636,7 +5641,7 @@ Hint: this usually means agent_uri does not include the MCP endpoint path. The S
|
|
|
5636
5641
|
try {
|
|
5637
5642
|
const toolsList = await withResponseSizeLimit(
|
|
5638
5643
|
maxResponseBytes,
|
|
5639
|
-
() => mcpClient.listTools(
|
|
5644
|
+
() => mcpClient.listTools(mcpListParams, mcpRequestOptions)
|
|
5640
5645
|
);
|
|
5641
5646
|
const tools = toolsList.tools.map((tool) => ({
|
|
5642
5647
|
name: tool.name,
|
|
@@ -1673,6 +1673,9 @@ class TaskExecutor {
|
|
|
1673
1673
|
}
|
|
1674
1674
|
externalTaskObservationKey(observation) {
|
|
1675
1675
|
return (0, import_crypto.createHmac)("sha256", EXTERNAL_TASK_OBSERVATION_HMAC_KEY).update(
|
|
1676
|
+
// This keyed digest deduplicates canonical task observations; it does
|
|
1677
|
+
// not store or verify passwords. Agent responses are over-tainted.
|
|
1678
|
+
// codeql[js/insufficient-password-hash]
|
|
1676
1679
|
(0, import_jcs.canonicalize)({
|
|
1677
1680
|
status: observation.status,
|
|
1678
1681
|
serverTaskId: observation.serverTaskId ?? null,
|
|
@@ -1647,6 +1647,9 @@ class TaskExecutor {
|
|
|
1647
1647
|
}
|
|
1648
1648
|
externalTaskObservationKey(observation) {
|
|
1649
1649
|
return createHmac("sha256", EXTERNAL_TASK_OBSERVATION_HMAC_KEY).update(
|
|
1650
|
+
// This keyed digest deduplicates canonical task observations; it does
|
|
1651
|
+
// not store or verify passwords. Agent responses are over-tainted.
|
|
1652
|
+
// codeql[js/insufficient-password-hash]
|
|
1650
1653
|
canonicalize({
|
|
1651
1654
|
status: observation.status,
|
|
1652
1655
|
serverTaskId: observation.serverTaskId ?? null,
|
package/dist/lib/index.d.mts
CHANGED
|
@@ -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';
|
|
@@ -163,7 +163,7 @@ export type { Error as TaskErrorDetail } from './types/core.generated.mjs';
|
|
|
163
163
|
export { STANDARD_ERROR_CODES, isStandardErrorCode, getErrorRecovery } from './types/error-codes.mjs';
|
|
164
164
|
export type { StandardErrorCode, ErrorRecovery } from './types/error-codes.mjs';
|
|
165
165
|
export { adcpError, legacyCapabilitiesResponse, legacyProductsResponse, legacyMediaBuyResponse, legacyDeliveryResponse, legacyListAccountsResponse, legacyListCreativeFormatsResponse, legacyUpdateMediaBuyResponse, legacyGetMediaBuysResponse, legacyPerformanceFeedbackResponse, legacyBuildCreativeResponse, legacyBuildCreativeMultiResponse, legacyPreviewCreativeResponse, legacyCreativeDeliveryResponse, legacyListCreativesResponse, legacyListPropertyListsResponse, legacyListCollectionListsResponse, legacyListContentStandardsResponse, legacyGetPlanAuditLogsResponse, legacySyncCreativesResponse, legacyGetSignalsResponse, legacyActivateSignalResponse, legacyCancelMediaBuyResponse, legacyAcquireRightsResponse, legacyAcquireRightsAcquired, legacyAcquireRightsPendingApproval, legacyAcquireRightsRejected, legacySyncAccountsResponse, legacySyncGovernanceResponse, legacyReportUsageResponse, validActionsForStatus, MEDIA_BUY_TRANSITIONS, CREATIVE_ASSET_TRANSITIONS, isLegalMediaBuyTransition, isLegalCreativeTransition, assertMediaBuyTransition, assertCreativeTransition, getAccountMode, isSandboxOrMockAccount, assertSandboxAccount, taskToolResponse, registerAdcpTaskTool, createTaskCapableServer, InMemoryTaskStore, isTerminal, serve, taskScopeFromPrincipal, UnknownHostError, hostname, resolveHost, verifyIntrospection, registerTestController, handleTestControllerRequest, TestControllerError, toMcpResponse, TOOL_INPUT_SHAPE, CONTROLLER_SCENARIOS, DISCOVERY_ARM_SCENARIOS, SEED_SCENARIOS, SESSION_ENTRY_CAP, enforceMapCap, createSeedFixtureCache, PostgresTaskStore, cleanupExpiredTasks, getMcpTasksMigration, MCP_TASKS_MIGRATION, ADCP_PRE_TRANSPORT, checkGovernance, governanceDeniedError, DEFAULT_REPORTING_CAPABILITIES, InMemoryStateStore, PostgresStateStore, getAdcpStateMigration, ADCP_STATE_MIGRATION, StateError, PatchConflictError, SESSION_KEY_FIELD, createSessionedStore, scopedStore, patchWithRetry, isPutIfMatchConflict, requireSessionKey, structuredSerialize, structuredDeserialize, createIdempotencyStore, memoryBackend, pgBackend, getIdempotencyMigration, IDEMPOTENCY_MIGRATION, cleanupExpiredIdempotency, redisBackend, createLazyBackend, hashPayload, IdempotencyClaimOwnershipError, getServeRequestContext, ADCP_SERVE_REQUEST_CONTEXT, createA2AAdapter, A2AInvocationError, MCP_APP_RESOURCE_MIME_TYPE, ADCP_MIRRORED_STRUCTURED_CONTENT_META_KEY, } from './server/index.mjs';
|
|
166
|
-
export type { AdcpErrorOptions, AdcpErrorResponse, McpToolResponse, ValidAction, CancelMediaBuyInput, AdcpTaskToolConfig, TaskStore, TaskMessageQueue, CreateTaskOptions, ToolTaskHandler, CreateTaskRequestHandlerExtra, TaskRequestHandlerExtra, CreateTaskResult, GetTaskResult, Task, ServeContext, ServeOptions, PgQueryable, PostgresTaskStoreOptions, TestControllerStore, TestControllerStoreFactory, TestControllerStoreOrFactory, ControllerScenario, SeedScenario, SeedFixtureCache, SessionContext, OnInstructionsError, MaybePromise, LegacyAdcpServerConfig, LegacyAdcpToolMap, AdcpServerToolName, AdcpCapabilitiesConfig, LegacyAdcpCustomToolConfig, McpAppUiMeta, McpAppMeta, AdcpMcpResourceDefinition, McpAppResourceCsp, McpAppResourcePermissions, McpAppResourceUiMeta, McpAppResourceMeta, McpAppResourceReadContext, AdcpLogger, LegacyHandlerContext, LegacyMediaBuyHandlers, LegacySignalsHandlers, LegacyCreativeHandlers, LegacyGovernanceHandlers, LegacyAccountHandlers, LegacyEventTrackingHandlers, LegacySponsoredIntelligenceHandlers, SignedRequestsConfig, AdcpPreTransport, AdcpServer, AdcpServerTransport, AdcpTestRequest, AdcpTestToolsCallRequest, AdcpTestResponse, AdcpInvokeOptions, StructuredContentFallbackTransport, StructuredContentTextFallback, StructuredContentTextFallbackContext, CheckGovernanceOptions, GovernanceCallResult, GovernanceApproved, GovernanceDenied, GovernanceConditions, AdcpStateStore, ListOptions as StateListOptions, ListResult as StateListResult, PostgresStateStoreOptions, InMemoryStateStoreOptions, VersionedDocument, PutIfMatchResult, PatchWithRetryOptions, StateErrorCode, SessionKeyContext, IdempotencyStore, IdempotencyStoreConfig, IdempotencyBackend, IdempotencyCacheEntry, IdempotencyCheckResult, MemoryBackendOptions, PgBackendOptions, RedisBackendOptions, RedisBackendClient, RedisLikeClient, LazyBackendFactory, LazyBackendOptions, A2AAdapter, A2AAdapterOptions, A2AAgentCardOverrides, A2AAgentCapabilitiesOverride, A2AAgentSkillOverride, A2AMountOptions, ExpressAppLike, LegacyHttpSecurityScheme, LegacySecurityScheme, AccountMode, RequireCacheScopeWhenProducts, ServerPayload, GetProductsPayload, CreateMediaBuyPayload, UpdateMediaBuyPayload, GetMediaBuysPayload, GetMediaBuyDeliveryPayload, ListCreativesPayload, GetCreativeDeliveryPayload, CanonicalPreviewCreativePayload, PreviewCreativePayload, LegacyGetProductsPayload, LegacyCreateMediaBuyPayload, LegacyUpdateMediaBuyPayload, LegacyGetMediaBuysPayload, LegacyGetMediaBuyDeliveryPayload, LegacyListCreativesPayload, LegacyGetCreativeDeliveryPayload, LegacyListCreativeFormatsPayload, LegacyListCreativeFormatsResponsePayload, LegacyListCreativeFormatsServerPayload, LegacyBuildCreativePayload, LegacyBuildCreativeMultiPayload, LegacyBuildCreativeVariantPayload, LegacyPreviewCreativePayload, SyncCreativesPayload, SyncCreativesSuccessPayload, SyncCreativesErrorPayload, } from './server/index.mjs';
|
|
166
|
+
export type { AdcpErrorOptions, AdcpErrorResponse, McpToolResponse, ValidAction, CancelMediaBuyInput, AdcpTaskToolConfig, TaskStore, TaskMessageQueue, CreateTaskOptions, ToolTaskHandler, CreateTaskRequestHandlerExtra, TaskRequestHandlerExtra, CreateTaskResult, GetTaskResult, Task, ServeContext, ServeOptions, PgQueryable, PostgresTaskStoreOptions, TestControllerStore, TestControllerStoreFactory, TestControllerStoreOrFactory, ControllerScenario, SeedScenario, SeedFixtureCache, SessionContext, OnInstructionsError, MaybePromise, LegacyAdcpServerConfig, LegacyAdcpToolMap, AdcpServerToolName, AdcpCapabilitiesConfig, LegacyAdcpCustomToolConfig, LegacyAdcpCustomToolHandler, LegacyAdcpCustomToolHandlerExtra, McpAppUiMeta, McpAppMeta, AdcpMcpResourceDefinition, McpAppResourceCsp, McpAppResourcePermissions, McpAppResourceUiMeta, McpAppResourceMeta, McpAppResourceReadContext, AdcpLogger, LegacyHandlerContext, LegacyMediaBuyHandlers, LegacySignalsHandlers, LegacyCreativeHandlers, LegacyGovernanceHandlers, LegacyAccountHandlers, LegacyEventTrackingHandlers, LegacySponsoredIntelligenceHandlers, SignedRequestsConfig, AdcpPreTransport, AdcpServer, AdcpServerTransport, AdcpTestRequest, AdcpTestToolsCallRequest, AdcpTestResponse, AdcpInvokeOptions, StructuredContentFallbackTransport, StructuredContentTextFallback, StructuredContentTextFallbackContext, CheckGovernanceOptions, GovernanceCallResult, GovernanceApproved, GovernanceDenied, GovernanceConditions, AdcpStateStore, ListOptions as StateListOptions, ListResult as StateListResult, PostgresStateStoreOptions, InMemoryStateStoreOptions, VersionedDocument, PutIfMatchResult, PatchWithRetryOptions, StateErrorCode, SessionKeyContext, IdempotencyStore, IdempotencyStoreConfig, IdempotencyBackend, IdempotencyCacheEntry, IdempotencyCheckResult, MemoryBackendOptions, PgBackendOptions, RedisBackendOptions, RedisBackendClient, RedisLikeClient, LazyBackendFactory, LazyBackendOptions, A2AAdapter, A2AAdapterOptions, A2AAgentCardOverrides, A2AAgentCapabilitiesOverride, A2AAgentSkillOverride, A2AMountOptions, ExpressAppLike, LegacyHttpSecurityScheme, LegacySecurityScheme, AccountMode, RequireCacheScopeWhenProducts, ServerPayload, GetProductsPayload, CreateMediaBuyPayload, UpdateMediaBuyPayload, GetMediaBuysPayload, GetMediaBuyDeliveryPayload, ListCreativesPayload, GetCreativeDeliveryPayload, CanonicalPreviewCreativePayload, PreviewCreativePayload, LegacyGetProductsPayload, LegacyCreateMediaBuyPayload, LegacyUpdateMediaBuyPayload, LegacyGetMediaBuysPayload, LegacyGetMediaBuyDeliveryPayload, LegacyListCreativesPayload, LegacyGetCreativeDeliveryPayload, LegacyListCreativeFormatsPayload, LegacyListCreativeFormatsResponsePayload, LegacyListCreativeFormatsServerPayload, LegacyBuildCreativePayload, LegacyBuildCreativeMultiPayload, LegacyBuildCreativeVariantPayload, LegacyPreviewCreativePayload, SyncCreativesPayload, SyncCreativesSuccessPayload, SyncCreativesErrorPayload, } from './server/index.mjs';
|
|
167
167
|
export { isRetryable, getRetryDelay } from './utils/retry.mjs';
|
|
168
168
|
export { decideRetry, BuyerRetryPolicy } from './utils/buyer-retry-policy.mjs';
|
|
169
169
|
export type { RetryDecision, RetryContext, RetryDecisionOverride } from './utils/buyer-retry-policy.mjs';
|