@adcp/sdk 5.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +17 -0
- package/.claude-plugin/plugin.json +25 -0
- package/ADCP_VERSION +1 -0
- package/AGENTS.md +282 -0
- package/LICENSE +191 -0
- package/README.md +816 -0
- package/bin/adcp-async-handler.js +275 -0
- package/bin/adcp-config.js +240 -0
- package/bin/adcp-fuzz.js +391 -0
- package/bin/adcp-grade.js +505 -0
- package/bin/adcp-json-stdout.js +36 -0
- package/bin/adcp-registry.js +745 -0
- package/bin/adcp-signing.js +233 -0
- package/bin/adcp-step-hints.js +246 -0
- package/bin/adcp-version-check.js +150 -0
- package/bin/adcp.js +4821 -0
- package/compliance/cache/3.0.0/domains/brand/index.yaml +167 -0
- package/compliance/cache/3.0.0/domains/creative/index.yaml +412 -0
- package/compliance/cache/3.0.0/domains/governance/index.yaml +683 -0
- package/compliance/cache/3.0.0/domains/media-buy/creative-reception.yaml +247 -0
- package/compliance/cache/3.0.0/domains/media-buy/index.yaml +742 -0
- package/compliance/cache/3.0.0/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
- package/compliance/cache/3.0.0/domains/media-buy/scenarios/delivery_reporting.yaml +180 -0
- package/compliance/cache/3.0.0/domains/media-buy/scenarios/governance_approved.yaml +186 -0
- package/compliance/cache/3.0.0/domains/media-buy/scenarios/governance_conditions.yaml +195 -0
- package/compliance/cache/3.0.0/domains/media-buy/scenarios/governance_denied.yaml +189 -0
- package/compliance/cache/3.0.0/domains/media-buy/scenarios/governance_denied_recovery.yaml +243 -0
- package/compliance/cache/3.0.0/domains/media-buy/scenarios/invalid_transitions.yaml +279 -0
- package/compliance/cache/3.0.0/domains/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
- package/compliance/cache/3.0.0/domains/media-buy/scenarios/inventory_list_targeting.yaml +266 -0
- package/compliance/cache/3.0.0/domains/media-buy/scenarios/measurement_terms_rejected.yaml +194 -0
- package/compliance/cache/3.0.0/domains/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
- package/compliance/cache/3.0.0/domains/media-buy/scenarios/proposal_finalize.yaml +242 -0
- package/compliance/cache/3.0.0/domains/media-buy/scenarios/refine_products.yaml +148 -0
- package/compliance/cache/3.0.0/domains/media-buy/state-machine.yaml +437 -0
- package/compliance/cache/3.0.0/domains/signals/index.yaml +266 -0
- package/compliance/cache/3.0.0/domains/sponsored-intelligence/index.yaml +256 -0
- package/compliance/cache/3.0.0/index.json +324 -0
- package/compliance/cache/3.0.0/protocols/brand/index.yaml +167 -0
- package/compliance/cache/3.0.0/protocols/creative/index.yaml +412 -0
- package/compliance/cache/3.0.0/protocols/governance/index.yaml +683 -0
- package/compliance/cache/3.0.0/protocols/media-buy/creative-reception.yaml +247 -0
- package/compliance/cache/3.0.0/protocols/media-buy/index.yaml +742 -0
- package/compliance/cache/3.0.0/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
- package/compliance/cache/3.0.0/protocols/media-buy/scenarios/delivery_reporting.yaml +180 -0
- package/compliance/cache/3.0.0/protocols/media-buy/scenarios/governance_approved.yaml +186 -0
- package/compliance/cache/3.0.0/protocols/media-buy/scenarios/governance_conditions.yaml +195 -0
- package/compliance/cache/3.0.0/protocols/media-buy/scenarios/governance_denied.yaml +189 -0
- package/compliance/cache/3.0.0/protocols/media-buy/scenarios/governance_denied_recovery.yaml +243 -0
- package/compliance/cache/3.0.0/protocols/media-buy/scenarios/invalid_transitions.yaml +279 -0
- package/compliance/cache/3.0.0/protocols/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
- package/compliance/cache/3.0.0/protocols/media-buy/scenarios/inventory_list_targeting.yaml +266 -0
- package/compliance/cache/3.0.0/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +194 -0
- package/compliance/cache/3.0.0/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
- package/compliance/cache/3.0.0/protocols/media-buy/scenarios/proposal_finalize.yaml +242 -0
- package/compliance/cache/3.0.0/protocols/media-buy/scenarios/refine_products.yaml +148 -0
- package/compliance/cache/3.0.0/protocols/media-buy/state-machine.yaml +437 -0
- package/compliance/cache/3.0.0/protocols/signals/index.yaml +266 -0
- package/compliance/cache/3.0.0/protocols/sponsored-intelligence/index.yaml +256 -0
- package/compliance/cache/3.0.0/specialisms/audience-sync/index.yaml +280 -0
- package/compliance/cache/3.0.0/specialisms/brand-rights/index.yaml +346 -0
- package/compliance/cache/3.0.0/specialisms/brand-rights/scenarios/governance_denied.yaml +203 -0
- package/compliance/cache/3.0.0/specialisms/collection-lists/index.yaml +359 -0
- package/compliance/cache/3.0.0/specialisms/content-standards/index.yaml +572 -0
- package/compliance/cache/3.0.0/specialisms/creative-ad-server/index.yaml +383 -0
- package/compliance/cache/3.0.0/specialisms/creative-generative/generative-seller.yaml +733 -0
- package/compliance/cache/3.0.0/specialisms/creative-generative/index.yaml +746 -0
- package/compliance/cache/3.0.0/specialisms/creative-template/index.yaml +413 -0
- package/compliance/cache/3.0.0/specialisms/governance-aware-seller/index.yaml +99 -0
- package/compliance/cache/3.0.0/specialisms/governance-delivery-monitor/index.yaml +419 -0
- package/compliance/cache/3.0.0/specialisms/governance-spend-authority/denied.yaml +221 -0
- package/compliance/cache/3.0.0/specialisms/governance-spend-authority/index.yaml +330 -0
- package/compliance/cache/3.0.0/specialisms/property-lists/index.yaml +482 -0
- package/compliance/cache/3.0.0/specialisms/sales-broadcast-tv/index.yaml +664 -0
- package/compliance/cache/3.0.0/specialisms/sales-catalog-driven/index.yaml +779 -0
- package/compliance/cache/3.0.0/specialisms/sales-guaranteed/index.yaml +479 -0
- package/compliance/cache/3.0.0/specialisms/sales-non-guaranteed/index.yaml +428 -0
- package/compliance/cache/3.0.0/specialisms/sales-proposal-mode/index.yaml +520 -0
- package/compliance/cache/3.0.0/specialisms/sales-social/index.yaml +521 -0
- package/compliance/cache/3.0.0/specialisms/signal-marketplace/index.yaml +415 -0
- package/compliance/cache/3.0.0/specialisms/signal-marketplace/scenarios/governance_denied.yaml +195 -0
- package/compliance/cache/3.0.0/specialisms/signal-owned/index.yaml +316 -0
- package/compliance/cache/3.0.0/specialisms/signed-requests/index.yaml +192 -0
- package/compliance/cache/3.0.0/test-kits/acme-outdoor.yaml +210 -0
- package/compliance/cache/3.0.0/test-kits/bistro-oranje.yaml +126 -0
- package/compliance/cache/3.0.0/test-kits/nova-motors.yaml +262 -0
- package/compliance/cache/3.0.0/test-kits/osei-natural.yaml +126 -0
- package/compliance/cache/3.0.0/test-kits/signed-requests-runner.yaml +153 -0
- package/compliance/cache/3.0.0/test-kits/substitution-observer-runner.yaml +690 -0
- package/compliance/cache/3.0.0/test-kits/summit-foods.yaml +125 -0
- package/compliance/cache/3.0.0/test-kits/webhook-receiver-runner.yaml +265 -0
- package/compliance/cache/3.0.0/test-vectors/plan-hash/001-minimal-plan.json +43 -0
- package/compliance/cache/3.0.0/test-vectors/plan-hash/002-full-plan.json +217 -0
- package/compliance/cache/3.0.0/test-vectors/plan-hash/003-bookkeeping-stripped.json +60 -0
- package/compliance/cache/3.0.0/test-vectors/plan-hash/004a-human-review-omitted.json +43 -0
- package/compliance/cache/3.0.0/test-vectors/plan-hash/004b-human-review-explicit-null.json +49 -0
- package/compliance/cache/3.0.0/test-vectors/plan-hash/005a-policy-categories-order-1.json +53 -0
- package/compliance/cache/3.0.0/test-vectors/plan-hash/005b-policy-categories-order-2.json +57 -0
- package/compliance/cache/3.0.0/test-vectors/plan-hash/006a-ext-trace-v1.json +49 -0
- package/compliance/cache/3.0.0/test-vectors/plan-hash/006b-ext-trace-v2.json +53 -0
- package/compliance/cache/3.0.0/test-vectors/plan-hash/007-unicode-objectives.json +43 -0
- package/compliance/cache/3.0.0/test-vectors/plan-hash/008-numeric-canonicalization.json +65 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/README.md +219 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/canonicalization.json +241 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/keys.json +60 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/001-no-signature-header.json +24 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/002-wrong-tag.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/003-expired-signature.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/004-window-too-long.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/005-alg-not-allowed.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/006-missing-covered-component.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/007-missing-content-digest.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/008-unknown-keyid.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +27 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/010-content-digest-mismatch.json +33 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/011-malformed-header.json +27 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/012-missing-expires-param.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/013-expires-le-created.json +27 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/014-missing-nonce-param.json +27 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/015-signature-invalid.json +28 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/016-replayed-nonce.json +35 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/017-key-revoked.json +38 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +28 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/019-signature-without-signature-input.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/020-rate-abuse.json +34 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +31 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/022-multi-valued-content-type.json +31 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +32 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/024-unquoted-string-param.json +31 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +43 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/026-non-ascii-host.json +31 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +25 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/positive/001-basic-post.json +30 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/positive/002-post-with-content-digest.json +31 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/positive/003-es256-post.json +30 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/positive/004-multiple-signature-labels.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/positive/005-default-port-stripped.json +30 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/positive/006-dot-segment-path.json +30 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/positive/007-query-byte-preserved.json +30 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/positive/008-percent-encoded-path.json +30 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +30 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +30 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/positive/011-ipv6-authority.json +30 -0
- package/compliance/cache/3.0.0/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +30 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/README.md +211 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/keys.json +61 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/001-wrong-tag.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/002-expired-signature.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/003-window-too-long.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/005-missing-authority-component.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/006-missing-content-digest.json +25 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/007-unknown-keyid.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/011-signature-without-input.json +25 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/012-missing-expires-param.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/013-expires-le-created.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/015-signature-invalid.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/016-replayed-nonce.json +37 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/017-key-revoked.json +32 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/018-rate-abuse.json +33 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/019-revocation-stale.json +32 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +41 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +26 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/positive/001-basic-post.json +24 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/positive/002-es256-post.json +24 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +24 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/positive/004-default-port-stripped.json +24 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +24 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +24 -0
- package/compliance/cache/3.0.0/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +25 -0
- package/compliance/cache/3.0.0/universal/capability-discovery.yaml +125 -0
- package/compliance/cache/3.0.0/universal/deterministic-testing.yaml +1318 -0
- package/compliance/cache/3.0.0/universal/error-compliance.yaml +468 -0
- package/compliance/cache/3.0.0/universal/fictional-entities.yaml +307 -0
- package/compliance/cache/3.0.0/universal/idempotency.yaml +577 -0
- package/compliance/cache/3.0.0/universal/runner-output-contract.yaml +335 -0
- package/compliance/cache/3.0.0/universal/schema-validation.yaml +514 -0
- package/compliance/cache/3.0.0/universal/security.yaml +428 -0
- package/compliance/cache/3.0.0/universal/storyboard-schema.yaml +1010 -0
- package/compliance/cache/3.0.0/universal/webhook-emission.yaml +337 -0
- package/compliance/cache/3.0.0.previous/domains/brand/index.yaml +167 -0
- package/compliance/cache/3.0.0.previous/domains/creative/index.yaml +412 -0
- package/compliance/cache/3.0.0.previous/domains/governance/index.yaml +683 -0
- package/compliance/cache/3.0.0.previous/domains/media-buy/creative-reception.yaml +247 -0
- package/compliance/cache/3.0.0.previous/domains/media-buy/index.yaml +742 -0
- package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
- package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/delivery_reporting.yaml +180 -0
- package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/governance_approved.yaml +186 -0
- package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/governance_conditions.yaml +195 -0
- package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/governance_denied.yaml +189 -0
- package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/governance_denied_recovery.yaml +243 -0
- package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/invalid_transitions.yaml +279 -0
- package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
- package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/inventory_list_targeting.yaml +266 -0
- package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/measurement_terms_rejected.yaml +194 -0
- package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
- package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/proposal_finalize.yaml +242 -0
- package/compliance/cache/3.0.0.previous/domains/media-buy/scenarios/refine_products.yaml +148 -0
- package/compliance/cache/3.0.0.previous/domains/media-buy/state-machine.yaml +437 -0
- package/compliance/cache/3.0.0.previous/domains/signals/index.yaml +266 -0
- package/compliance/cache/3.0.0.previous/domains/sponsored-intelligence/index.yaml +256 -0
- package/compliance/cache/3.0.0.previous/index.json +324 -0
- package/compliance/cache/3.0.0.previous/protocols/brand/index.yaml +167 -0
- package/compliance/cache/3.0.0.previous/protocols/creative/index.yaml +412 -0
- package/compliance/cache/3.0.0.previous/protocols/governance/index.yaml +683 -0
- package/compliance/cache/3.0.0.previous/protocols/media-buy/creative-reception.yaml +247 -0
- package/compliance/cache/3.0.0.previous/protocols/media-buy/index.yaml +742 -0
- package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
- package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/delivery_reporting.yaml +180 -0
- package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/governance_approved.yaml +186 -0
- package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/governance_conditions.yaml +195 -0
- package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/governance_denied.yaml +189 -0
- package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/governance_denied_recovery.yaml +243 -0
- package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/invalid_transitions.yaml +279 -0
- package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
- package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/inventory_list_targeting.yaml +266 -0
- package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +194 -0
- package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
- package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/proposal_finalize.yaml +242 -0
- package/compliance/cache/3.0.0.previous/protocols/media-buy/scenarios/refine_products.yaml +148 -0
- package/compliance/cache/3.0.0.previous/protocols/media-buy/state-machine.yaml +437 -0
- package/compliance/cache/3.0.0.previous/protocols/signals/index.yaml +266 -0
- package/compliance/cache/3.0.0.previous/protocols/sponsored-intelligence/index.yaml +256 -0
- package/compliance/cache/3.0.0.previous/specialisms/audience-sync/index.yaml +280 -0
- package/compliance/cache/3.0.0.previous/specialisms/brand-rights/index.yaml +346 -0
- package/compliance/cache/3.0.0.previous/specialisms/brand-rights/scenarios/governance_denied.yaml +203 -0
- package/compliance/cache/3.0.0.previous/specialisms/collection-lists/index.yaml +359 -0
- package/compliance/cache/3.0.0.previous/specialisms/content-standards/index.yaml +572 -0
- package/compliance/cache/3.0.0.previous/specialisms/creative-ad-server/index.yaml +383 -0
- package/compliance/cache/3.0.0.previous/specialisms/creative-generative/generative-seller.yaml +733 -0
- package/compliance/cache/3.0.0.previous/specialisms/creative-generative/index.yaml +746 -0
- package/compliance/cache/3.0.0.previous/specialisms/creative-template/index.yaml +413 -0
- package/compliance/cache/3.0.0.previous/specialisms/governance-aware-seller/index.yaml +99 -0
- package/compliance/cache/3.0.0.previous/specialisms/governance-delivery-monitor/index.yaml +419 -0
- package/compliance/cache/3.0.0.previous/specialisms/governance-spend-authority/denied.yaml +221 -0
- package/compliance/cache/3.0.0.previous/specialisms/governance-spend-authority/index.yaml +330 -0
- package/compliance/cache/3.0.0.previous/specialisms/property-lists/index.yaml +482 -0
- package/compliance/cache/3.0.0.previous/specialisms/sales-broadcast-tv/index.yaml +664 -0
- package/compliance/cache/3.0.0.previous/specialisms/sales-catalog-driven/index.yaml +779 -0
- package/compliance/cache/3.0.0.previous/specialisms/sales-guaranteed/index.yaml +479 -0
- package/compliance/cache/3.0.0.previous/specialisms/sales-non-guaranteed/index.yaml +428 -0
- package/compliance/cache/3.0.0.previous/specialisms/sales-proposal-mode/index.yaml +520 -0
- package/compliance/cache/3.0.0.previous/specialisms/sales-social/index.yaml +521 -0
- package/compliance/cache/3.0.0.previous/specialisms/signal-marketplace/index.yaml +415 -0
- package/compliance/cache/3.0.0.previous/specialisms/signal-marketplace/scenarios/governance_denied.yaml +195 -0
- package/compliance/cache/3.0.0.previous/specialisms/signal-owned/index.yaml +316 -0
- package/compliance/cache/3.0.0.previous/specialisms/signed-requests/index.yaml +192 -0
- package/compliance/cache/3.0.0.previous/test-kits/acme-outdoor.yaml +210 -0
- package/compliance/cache/3.0.0.previous/test-kits/bistro-oranje.yaml +126 -0
- package/compliance/cache/3.0.0.previous/test-kits/nova-motors.yaml +262 -0
- package/compliance/cache/3.0.0.previous/test-kits/osei-natural.yaml +126 -0
- package/compliance/cache/3.0.0.previous/test-kits/signed-requests-runner.yaml +153 -0
- package/compliance/cache/3.0.0.previous/test-kits/substitution-observer-runner.yaml +690 -0
- package/compliance/cache/3.0.0.previous/test-kits/summit-foods.yaml +125 -0
- package/compliance/cache/3.0.0.previous/test-kits/webhook-receiver-runner.yaml +265 -0
- package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/001-minimal-plan.json +43 -0
- package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/002-full-plan.json +217 -0
- package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/003-bookkeeping-stripped.json +60 -0
- package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/004a-human-review-omitted.json +43 -0
- package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/004b-human-review-explicit-null.json +49 -0
- package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/005a-policy-categories-order-1.json +53 -0
- package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/005b-policy-categories-order-2.json +57 -0
- package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/006a-ext-trace-v1.json +49 -0
- package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/006b-ext-trace-v2.json +53 -0
- package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/007-unicode-objectives.json +43 -0
- package/compliance/cache/3.0.0.previous/test-vectors/plan-hash/008-numeric-canonicalization.json +65 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/README.md +219 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/canonicalization.json +241 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/keys.json +60 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/001-no-signature-header.json +24 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/002-wrong-tag.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/003-expired-signature.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/004-window-too-long.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/005-alg-not-allowed.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/006-missing-covered-component.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/007-missing-content-digest.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/008-unknown-keyid.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +27 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/010-content-digest-mismatch.json +33 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/011-malformed-header.json +27 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/012-missing-expires-param.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/013-expires-le-created.json +27 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/014-missing-nonce-param.json +27 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/015-signature-invalid.json +28 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/016-replayed-nonce.json +35 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/017-key-revoked.json +38 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +28 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/019-signature-without-signature-input.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/020-rate-abuse.json +34 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +31 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/022-multi-valued-content-type.json +31 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +32 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/024-unquoted-string-param.json +31 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +43 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/026-non-ascii-host.json +31 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +25 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/001-basic-post.json +30 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/002-post-with-content-digest.json +31 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/003-es256-post.json +30 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/004-multiple-signature-labels.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/005-default-port-stripped.json +30 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/006-dot-segment-path.json +30 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/007-query-byte-preserved.json +30 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/008-percent-encoded-path.json +30 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +30 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +30 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/011-ipv6-authority.json +30 -0
- package/compliance/cache/3.0.0.previous/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +30 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/README.md +211 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/keys.json +61 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/001-wrong-tag.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/002-expired-signature.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/003-window-too-long.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/005-missing-authority-component.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/006-missing-content-digest.json +25 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/007-unknown-keyid.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/011-signature-without-input.json +25 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/012-missing-expires-param.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/013-expires-le-created.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/015-signature-invalid.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/016-replayed-nonce.json +37 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/017-key-revoked.json +32 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/018-rate-abuse.json +33 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/019-revocation-stale.json +32 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +41 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +26 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/positive/001-basic-post.json +24 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/positive/002-es256-post.json +24 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +24 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/positive/004-default-port-stripped.json +24 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +24 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +24 -0
- package/compliance/cache/3.0.0.previous/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +25 -0
- package/compliance/cache/3.0.0.previous/universal/capability-discovery.yaml +125 -0
- package/compliance/cache/3.0.0.previous/universal/deterministic-testing.yaml +1318 -0
- package/compliance/cache/3.0.0.previous/universal/error-compliance.yaml +468 -0
- package/compliance/cache/3.0.0.previous/universal/fictional-entities.yaml +307 -0
- package/compliance/cache/3.0.0.previous/universal/idempotency.yaml +577 -0
- package/compliance/cache/3.0.0.previous/universal/runner-output-contract.yaml +335 -0
- package/compliance/cache/3.0.0.previous/universal/schema-validation.yaml +514 -0
- package/compliance/cache/3.0.0.previous/universal/security.yaml +428 -0
- package/compliance/cache/3.0.0.previous/universal/storyboard-schema.yaml +1010 -0
- package/compliance/cache/3.0.0.previous/universal/webhook-emission.yaml +337 -0
- package/compliance/cache/3.0.1/domains/brand/index.yaml +163 -0
- package/compliance/cache/3.0.1/domains/creative/index.yaml +412 -0
- package/compliance/cache/3.0.1/domains/governance/index.yaml +683 -0
- package/compliance/cache/3.0.1/domains/media-buy/creative-reception.yaml +247 -0
- package/compliance/cache/3.0.1/domains/media-buy/index.yaml +769 -0
- package/compliance/cache/3.0.1/domains/media-buy/scenarios/create_media_buy_async.yaml +232 -0
- package/compliance/cache/3.0.1/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
- package/compliance/cache/3.0.1/domains/media-buy/scenarios/delivery_reporting.yaml +205 -0
- package/compliance/cache/3.0.1/domains/media-buy/scenarios/governance_approved.yaml +211 -0
- package/compliance/cache/3.0.1/domains/media-buy/scenarios/governance_conditions.yaml +196 -0
- package/compliance/cache/3.0.1/domains/media-buy/scenarios/governance_denied.yaml +192 -0
- package/compliance/cache/3.0.1/domains/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
- package/compliance/cache/3.0.1/domains/media-buy/scenarios/invalid_transitions.yaml +284 -0
- package/compliance/cache/3.0.1/domains/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
- package/compliance/cache/3.0.1/domains/media-buy/scenarios/inventory_list_targeting.yaml +266 -0
- package/compliance/cache/3.0.1/domains/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
- package/compliance/cache/3.0.1/domains/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
- package/compliance/cache/3.0.1/domains/media-buy/scenarios/proposal_finalize.yaml +243 -0
- package/compliance/cache/3.0.1/domains/media-buy/scenarios/refine_products.yaml +148 -0
- package/compliance/cache/3.0.1/domains/media-buy/state-machine.yaml +442 -0
- package/compliance/cache/3.0.1/domains/signals/index.yaml +266 -0
- package/compliance/cache/3.0.1/domains/sponsored-intelligence/index.yaml +256 -0
- package/compliance/cache/3.0.1/index.json +324 -0
- package/compliance/cache/3.0.1/protocols/brand/index.yaml +163 -0
- package/compliance/cache/3.0.1/protocols/creative/index.yaml +412 -0
- package/compliance/cache/3.0.1/protocols/governance/index.yaml +683 -0
- package/compliance/cache/3.0.1/protocols/media-buy/creative-reception.yaml +247 -0
- package/compliance/cache/3.0.1/protocols/media-buy/index.yaml +769 -0
- package/compliance/cache/3.0.1/protocols/media-buy/scenarios/create_media_buy_async.yaml +232 -0
- package/compliance/cache/3.0.1/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
- package/compliance/cache/3.0.1/protocols/media-buy/scenarios/delivery_reporting.yaml +205 -0
- package/compliance/cache/3.0.1/protocols/media-buy/scenarios/governance_approved.yaml +211 -0
- package/compliance/cache/3.0.1/protocols/media-buy/scenarios/governance_conditions.yaml +196 -0
- package/compliance/cache/3.0.1/protocols/media-buy/scenarios/governance_denied.yaml +192 -0
- package/compliance/cache/3.0.1/protocols/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
- package/compliance/cache/3.0.1/protocols/media-buy/scenarios/invalid_transitions.yaml +284 -0
- package/compliance/cache/3.0.1/protocols/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
- package/compliance/cache/3.0.1/protocols/media-buy/scenarios/inventory_list_targeting.yaml +266 -0
- package/compliance/cache/3.0.1/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
- package/compliance/cache/3.0.1/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
- package/compliance/cache/3.0.1/protocols/media-buy/scenarios/proposal_finalize.yaml +243 -0
- package/compliance/cache/3.0.1/protocols/media-buy/scenarios/refine_products.yaml +148 -0
- package/compliance/cache/3.0.1/protocols/media-buy/state-machine.yaml +442 -0
- package/compliance/cache/3.0.1/protocols/signals/index.yaml +266 -0
- package/compliance/cache/3.0.1/protocols/sponsored-intelligence/index.yaml +256 -0
- package/compliance/cache/3.0.1/specialisms/audience-sync/index.yaml +280 -0
- package/compliance/cache/3.0.1/specialisms/brand-rights/index.yaml +350 -0
- package/compliance/cache/3.0.1/specialisms/brand-rights/scenarios/governance_denied.yaml +204 -0
- package/compliance/cache/3.0.1/specialisms/collection-lists/index.yaml +359 -0
- package/compliance/cache/3.0.1/specialisms/content-standards/index.yaml +572 -0
- package/compliance/cache/3.0.1/specialisms/creative-ad-server/index.yaml +383 -0
- package/compliance/cache/3.0.1/specialisms/creative-generative/generative-seller.yaml +758 -0
- package/compliance/cache/3.0.1/specialisms/creative-generative/index.yaml +746 -0
- package/compliance/cache/3.0.1/specialisms/creative-template/index.yaml +413 -0
- package/compliance/cache/3.0.1/specialisms/governance-aware-seller/index.yaml +136 -0
- package/compliance/cache/3.0.1/specialisms/governance-delivery-monitor/index.yaml +441 -0
- package/compliance/cache/3.0.1/specialisms/governance-spend-authority/denied.yaml +221 -0
- package/compliance/cache/3.0.1/specialisms/governance-spend-authority/index.yaml +330 -0
- package/compliance/cache/3.0.1/specialisms/property-lists/index.yaml +482 -0
- package/compliance/cache/3.0.1/specialisms/sales-broadcast-tv/index.yaml +689 -0
- package/compliance/cache/3.0.1/specialisms/sales-catalog-driven/index.yaml +779 -0
- package/compliance/cache/3.0.1/specialisms/sales-guaranteed/index.yaml +504 -0
- package/compliance/cache/3.0.1/specialisms/sales-non-guaranteed/index.yaml +428 -0
- package/compliance/cache/3.0.1/specialisms/sales-proposal-mode/index.yaml +520 -0
- package/compliance/cache/3.0.1/specialisms/sales-social/index.yaml +577 -0
- package/compliance/cache/3.0.1/specialisms/signal-marketplace/index.yaml +415 -0
- package/compliance/cache/3.0.1/specialisms/signal-marketplace/scenarios/governance_denied.yaml +207 -0
- package/compliance/cache/3.0.1/specialisms/signal-owned/index.yaml +316 -0
- package/compliance/cache/3.0.1/test-kits/acme-outdoor.yaml +210 -0
- package/compliance/cache/3.0.1/test-kits/bistro-oranje.yaml +126 -0
- package/compliance/cache/3.0.1/test-kits/nova-motors.yaml +262 -0
- package/compliance/cache/3.0.1/test-kits/osei-natural.yaml +126 -0
- package/compliance/cache/3.0.1/test-kits/signed-requests-runner.yaml +155 -0
- package/compliance/cache/3.0.1/test-kits/substitution-observer-runner.yaml +690 -0
- package/compliance/cache/3.0.1/test-kits/summit-foods.yaml +125 -0
- package/compliance/cache/3.0.1/test-kits/webhook-receiver-runner.yaml +265 -0
- package/compliance/cache/3.0.1/test-vectors/plan-hash/001-minimal-plan.json +43 -0
- package/compliance/cache/3.0.1/test-vectors/plan-hash/002-full-plan.json +217 -0
- package/compliance/cache/3.0.1/test-vectors/plan-hash/003-bookkeeping-stripped.json +60 -0
- package/compliance/cache/3.0.1/test-vectors/plan-hash/004a-human-review-omitted.json +43 -0
- package/compliance/cache/3.0.1/test-vectors/plan-hash/004b-human-review-explicit-null.json +49 -0
- package/compliance/cache/3.0.1/test-vectors/plan-hash/005a-policy-categories-order-1.json +53 -0
- package/compliance/cache/3.0.1/test-vectors/plan-hash/005b-policy-categories-order-2.json +57 -0
- package/compliance/cache/3.0.1/test-vectors/plan-hash/006a-ext-trace-v1.json +49 -0
- package/compliance/cache/3.0.1/test-vectors/plan-hash/006b-ext-trace-v2.json +53 -0
- package/compliance/cache/3.0.1/test-vectors/plan-hash/007-unicode-objectives.json +43 -0
- package/compliance/cache/3.0.1/test-vectors/plan-hash/008-numeric-canonicalization.json +65 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/README.md +219 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/canonicalization.json +241 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/keys.json +60 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/001-no-signature-header.json +24 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/002-wrong-tag.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/003-expired-signature.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/004-window-too-long.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/005-alg-not-allowed.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/006-missing-covered-component.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/007-missing-content-digest.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/008-unknown-keyid.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +27 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/010-content-digest-mismatch.json +33 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/011-malformed-header.json +27 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/012-missing-expires-param.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/013-expires-le-created.json +27 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/014-missing-nonce-param.json +27 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/015-signature-invalid.json +28 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/016-replayed-nonce.json +35 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/017-key-revoked.json +38 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +28 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/019-signature-without-signature-input.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/020-rate-abuse.json +34 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +31 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/022-multi-valued-content-type.json +31 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +32 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/024-unquoted-string-param.json +31 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +43 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/026-non-ascii-host.json +31 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +25 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/positive/001-basic-post.json +30 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/positive/002-post-with-content-digest.json +31 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/positive/003-es256-post.json +30 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/positive/004-multiple-signature-labels.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/positive/005-default-port-stripped.json +30 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/positive/006-dot-segment-path.json +30 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/positive/007-query-byte-preserved.json +30 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/positive/008-percent-encoded-path.json +30 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +30 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +30 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/positive/011-ipv6-authority.json +30 -0
- package/compliance/cache/3.0.1/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +30 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/README.md +211 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/keys.json +61 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/001-wrong-tag.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/002-expired-signature.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/003-window-too-long.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/005-missing-authority-component.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/006-missing-content-digest.json +25 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/007-unknown-keyid.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/011-signature-without-input.json +25 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/012-missing-expires-param.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/013-expires-le-created.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/015-signature-invalid.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/016-replayed-nonce.json +37 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/017-key-revoked.json +32 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/018-rate-abuse.json +33 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/019-revocation-stale.json +32 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +41 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +26 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/positive/001-basic-post.json +24 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/positive/002-es256-post.json +24 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +24 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/positive/004-default-port-stripped.json +24 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +24 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +24 -0
- package/compliance/cache/3.0.1/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +25 -0
- package/compliance/cache/3.0.1/universal/capability-discovery.yaml +125 -0
- package/compliance/cache/3.0.1/universal/collection-lists-pagination-integrity.yaml +306 -0
- package/compliance/cache/3.0.1/universal/content-standards-pagination-integrity.yaml +326 -0
- package/compliance/cache/3.0.1/universal/deterministic-testing.yaml +1343 -0
- package/compliance/cache/3.0.1/universal/error-compliance.yaml +474 -0
- package/compliance/cache/3.0.1/universal/fictional-entities.yaml +307 -0
- package/compliance/cache/3.0.1/universal/get-media-buys-pagination-integrity.yaml +160 -0
- package/compliance/cache/3.0.1/universal/get-signals-pagination-integrity.yaml +211 -0
- package/compliance/cache/3.0.1/universal/idempotency.yaml +593 -0
- package/compliance/cache/3.0.1/universal/pagination-integrity-creative-formats.yaml +258 -0
- package/compliance/cache/3.0.1/universal/pagination-integrity-list-accounts.yaml +262 -0
- package/compliance/cache/3.0.1/universal/pagination-integrity.yaml +263 -0
- package/compliance/cache/3.0.1/universal/property-lists-pagination-integrity.yaml +307 -0
- package/compliance/cache/3.0.1/universal/runner-output-contract.yaml +339 -0
- package/compliance/cache/3.0.1/universal/schema-validation.yaml +526 -0
- package/compliance/cache/3.0.1/universal/security.yaml +431 -0
- package/compliance/cache/3.0.1/universal/signed-requests.yaml +205 -0
- package/compliance/cache/3.0.1/universal/storyboard-schema.yaml +1056 -0
- package/compliance/cache/3.0.1/universal/v3-envelope-integrity.yaml +104 -0
- package/compliance/cache/3.0.1/universal/webhook-emission.yaml +337 -0
- package/compliance/cache/3.0.1.previous/domains/brand/index.yaml +163 -0
- package/compliance/cache/3.0.1.previous/domains/creative/index.yaml +412 -0
- package/compliance/cache/3.0.1.previous/domains/governance/index.yaml +683 -0
- package/compliance/cache/3.0.1.previous/domains/media-buy/creative-reception.yaml +247 -0
- package/compliance/cache/3.0.1.previous/domains/media-buy/index.yaml +769 -0
- package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/create_media_buy_async.yaml +232 -0
- package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
- package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/delivery_reporting.yaml +205 -0
- package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/governance_approved.yaml +211 -0
- package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/governance_conditions.yaml +196 -0
- package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/governance_denied.yaml +192 -0
- package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
- package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/invalid_transitions.yaml +284 -0
- package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
- package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/inventory_list_targeting.yaml +266 -0
- package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
- package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
- package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/proposal_finalize.yaml +243 -0
- package/compliance/cache/3.0.1.previous/domains/media-buy/scenarios/refine_products.yaml +148 -0
- package/compliance/cache/3.0.1.previous/domains/media-buy/state-machine.yaml +442 -0
- package/compliance/cache/3.0.1.previous/domains/signals/index.yaml +266 -0
- package/compliance/cache/3.0.1.previous/domains/sponsored-intelligence/index.yaml +256 -0
- package/compliance/cache/3.0.1.previous/index.json +324 -0
- package/compliance/cache/3.0.1.previous/protocols/brand/index.yaml +163 -0
- package/compliance/cache/3.0.1.previous/protocols/creative/index.yaml +412 -0
- package/compliance/cache/3.0.1.previous/protocols/governance/index.yaml +683 -0
- package/compliance/cache/3.0.1.previous/protocols/media-buy/creative-reception.yaml +247 -0
- package/compliance/cache/3.0.1.previous/protocols/media-buy/index.yaml +769 -0
- package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/create_media_buy_async.yaml +232 -0
- package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +414 -0
- package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/delivery_reporting.yaml +205 -0
- package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/governance_approved.yaml +211 -0
- package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/governance_conditions.yaml +196 -0
- package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/governance_denied.yaml +192 -0
- package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/governance_denied_recovery.yaml +244 -0
- package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/invalid_transitions.yaml +284 -0
- package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/inventory_list_no_match.yaml +143 -0
- package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/inventory_list_targeting.yaml +266 -0
- package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +195 -0
- package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +250 -0
- package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/proposal_finalize.yaml +243 -0
- package/compliance/cache/3.0.1.previous/protocols/media-buy/scenarios/refine_products.yaml +148 -0
- package/compliance/cache/3.0.1.previous/protocols/media-buy/state-machine.yaml +442 -0
- package/compliance/cache/3.0.1.previous/protocols/signals/index.yaml +266 -0
- package/compliance/cache/3.0.1.previous/protocols/sponsored-intelligence/index.yaml +256 -0
- package/compliance/cache/3.0.1.previous/specialisms/audience-sync/index.yaml +280 -0
- package/compliance/cache/3.0.1.previous/specialisms/brand-rights/index.yaml +350 -0
- package/compliance/cache/3.0.1.previous/specialisms/brand-rights/scenarios/governance_denied.yaml +204 -0
- package/compliance/cache/3.0.1.previous/specialisms/collection-lists/index.yaml +359 -0
- package/compliance/cache/3.0.1.previous/specialisms/content-standards/index.yaml +572 -0
- package/compliance/cache/3.0.1.previous/specialisms/creative-ad-server/index.yaml +383 -0
- package/compliance/cache/3.0.1.previous/specialisms/creative-generative/generative-seller.yaml +758 -0
- package/compliance/cache/3.0.1.previous/specialisms/creative-generative/index.yaml +746 -0
- package/compliance/cache/3.0.1.previous/specialisms/creative-template/index.yaml +413 -0
- package/compliance/cache/3.0.1.previous/specialisms/governance-aware-seller/index.yaml +136 -0
- package/compliance/cache/3.0.1.previous/specialisms/governance-delivery-monitor/index.yaml +441 -0
- package/compliance/cache/3.0.1.previous/specialisms/governance-spend-authority/denied.yaml +221 -0
- package/compliance/cache/3.0.1.previous/specialisms/governance-spend-authority/index.yaml +330 -0
- package/compliance/cache/3.0.1.previous/specialisms/property-lists/index.yaml +482 -0
- package/compliance/cache/3.0.1.previous/specialisms/sales-broadcast-tv/index.yaml +689 -0
- package/compliance/cache/3.0.1.previous/specialisms/sales-catalog-driven/index.yaml +779 -0
- package/compliance/cache/3.0.1.previous/specialisms/sales-guaranteed/index.yaml +504 -0
- package/compliance/cache/3.0.1.previous/specialisms/sales-non-guaranteed/index.yaml +428 -0
- package/compliance/cache/3.0.1.previous/specialisms/sales-proposal-mode/index.yaml +520 -0
- package/compliance/cache/3.0.1.previous/specialisms/sales-social/index.yaml +577 -0
- package/compliance/cache/3.0.1.previous/specialisms/signal-marketplace/index.yaml +415 -0
- package/compliance/cache/3.0.1.previous/specialisms/signal-marketplace/scenarios/governance_denied.yaml +207 -0
- package/compliance/cache/3.0.1.previous/specialisms/signal-owned/index.yaml +316 -0
- package/compliance/cache/3.0.1.previous/test-kits/acme-outdoor.yaml +210 -0
- package/compliance/cache/3.0.1.previous/test-kits/bistro-oranje.yaml +126 -0
- package/compliance/cache/3.0.1.previous/test-kits/nova-motors.yaml +262 -0
- package/compliance/cache/3.0.1.previous/test-kits/osei-natural.yaml +126 -0
- package/compliance/cache/3.0.1.previous/test-kits/signed-requests-runner.yaml +155 -0
- package/compliance/cache/3.0.1.previous/test-kits/substitution-observer-runner.yaml +690 -0
- package/compliance/cache/3.0.1.previous/test-kits/summit-foods.yaml +125 -0
- package/compliance/cache/3.0.1.previous/test-kits/webhook-receiver-runner.yaml +265 -0
- package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/001-minimal-plan.json +43 -0
- package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/002-full-plan.json +217 -0
- package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/003-bookkeeping-stripped.json +60 -0
- package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/004a-human-review-omitted.json +43 -0
- package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/004b-human-review-explicit-null.json +49 -0
- package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/005a-policy-categories-order-1.json +53 -0
- package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/005b-policy-categories-order-2.json +57 -0
- package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/006a-ext-trace-v1.json +49 -0
- package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/006b-ext-trace-v2.json +53 -0
- package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/007-unicode-objectives.json +43 -0
- package/compliance/cache/3.0.1.previous/test-vectors/plan-hash/008-numeric-canonicalization.json +65 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/README.md +219 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/canonicalization.json +241 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/keys.json +60 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/001-no-signature-header.json +24 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/002-wrong-tag.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/003-expired-signature.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/004-window-too-long.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/005-alg-not-allowed.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/006-missing-covered-component.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/007-missing-content-digest.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/008-unknown-keyid.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +27 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/010-content-digest-mismatch.json +33 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/011-malformed-header.json +27 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/012-missing-expires-param.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/013-expires-le-created.json +27 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/014-missing-nonce-param.json +27 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/015-signature-invalid.json +28 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/016-replayed-nonce.json +35 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/017-key-revoked.json +38 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +28 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/019-signature-without-signature-input.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/020-rate-abuse.json +34 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +31 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/022-multi-valued-content-type.json +31 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +32 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/024-unquoted-string-param.json +31 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +43 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/026-non-ascii-host.json +31 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +25 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/001-basic-post.json +30 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/002-post-with-content-digest.json +31 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/003-es256-post.json +30 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/004-multiple-signature-labels.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/005-default-port-stripped.json +30 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/006-dot-segment-path.json +30 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/007-query-byte-preserved.json +30 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/008-percent-encoded-path.json +30 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +30 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +30 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/011-ipv6-authority.json +30 -0
- package/compliance/cache/3.0.1.previous/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +30 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/README.md +211 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/keys.json +61 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/001-wrong-tag.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/002-expired-signature.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/003-window-too-long.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/005-missing-authority-component.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/006-missing-content-digest.json +25 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/007-unknown-keyid.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/011-signature-without-input.json +25 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/012-missing-expires-param.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/013-expires-le-created.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/015-signature-invalid.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/016-replayed-nonce.json +37 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/017-key-revoked.json +32 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/018-rate-abuse.json +33 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/019-revocation-stale.json +32 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +41 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +26 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/positive/001-basic-post.json +24 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/positive/002-es256-post.json +24 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +24 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/positive/004-default-port-stripped.json +24 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +24 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +24 -0
- package/compliance/cache/3.0.1.previous/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +25 -0
- package/compliance/cache/3.0.1.previous/universal/capability-discovery.yaml +125 -0
- package/compliance/cache/3.0.1.previous/universal/collection-lists-pagination-integrity.yaml +306 -0
- package/compliance/cache/3.0.1.previous/universal/content-standards-pagination-integrity.yaml +326 -0
- package/compliance/cache/3.0.1.previous/universal/deterministic-testing.yaml +1343 -0
- package/compliance/cache/3.0.1.previous/universal/error-compliance.yaml +474 -0
- package/compliance/cache/3.0.1.previous/universal/fictional-entities.yaml +307 -0
- package/compliance/cache/3.0.1.previous/universal/get-media-buys-pagination-integrity.yaml +160 -0
- package/compliance/cache/3.0.1.previous/universal/get-signals-pagination-integrity.yaml +211 -0
- package/compliance/cache/3.0.1.previous/universal/idempotency.yaml +593 -0
- package/compliance/cache/3.0.1.previous/universal/pagination-integrity-creative-formats.yaml +258 -0
- package/compliance/cache/3.0.1.previous/universal/pagination-integrity-list-accounts.yaml +262 -0
- package/compliance/cache/3.0.1.previous/universal/pagination-integrity.yaml +263 -0
- package/compliance/cache/3.0.1.previous/universal/property-lists-pagination-integrity.yaml +307 -0
- package/compliance/cache/3.0.1.previous/universal/runner-output-contract.yaml +339 -0
- package/compliance/cache/3.0.1.previous/universal/schema-validation.yaml +526 -0
- package/compliance/cache/3.0.1.previous/universal/security.yaml +431 -0
- package/compliance/cache/3.0.1.previous/universal/signed-requests.yaml +205 -0
- package/compliance/cache/3.0.1.previous/universal/storyboard-schema.yaml +1056 -0
- package/compliance/cache/3.0.1.previous/universal/v3-envelope-integrity.yaml +104 -0
- package/compliance/cache/3.0.1.previous/universal/webhook-emission.yaml +337 -0
- package/dist/lib/adapters/content-standards-adapter.d.ts +106 -0
- package/dist/lib/adapters/content-standards-adapter.d.ts.map +1 -0
- package/dist/lib/adapters/content-standards-adapter.js +201 -0
- package/dist/lib/adapters/content-standards-adapter.js.map +1 -0
- package/dist/lib/adapters/governance-adapter.d.ts +88 -0
- package/dist/lib/adapters/governance-adapter.d.ts.map +1 -0
- package/dist/lib/adapters/governance-adapter.js +93 -0
- package/dist/lib/adapters/governance-adapter.js.map +1 -0
- package/dist/lib/adapters/index.d.ts +19 -0
- package/dist/lib/adapters/index.d.ts.map +1 -0
- package/dist/lib/adapters/index.js +47 -0
- package/dist/lib/adapters/index.js.map +1 -0
- package/dist/lib/adapters/property-list-adapter.d.ts +123 -0
- package/dist/lib/adapters/property-list-adapter.d.ts.map +1 -0
- package/dist/lib/adapters/property-list-adapter.js +231 -0
- package/dist/lib/adapters/property-list-adapter.js.map +1 -0
- package/dist/lib/adapters/proposal-manager.d.ts +142 -0
- package/dist/lib/adapters/proposal-manager.d.ts.map +1 -0
- package/dist/lib/adapters/proposal-manager.js +184 -0
- package/dist/lib/adapters/proposal-manager.js.map +1 -0
- package/dist/lib/adapters/si-session-manager.d.ts +164 -0
- package/dist/lib/adapters/si-session-manager.d.ts.map +1 -0
- package/dist/lib/adapters/si-session-manager.js +330 -0
- package/dist/lib/adapters/si-session-manager.js.map +1 -0
- package/dist/lib/advanced.d.ts +41 -0
- package/dist/lib/advanced.d.ts.map +1 -0
- package/dist/lib/advanced.js +49 -0
- package/dist/lib/advanced.js.map +1 -0
- package/dist/lib/agents/index.generated.d.ts +397 -0
- package/dist/lib/agents/index.generated.d.ts.map +1 -0
- package/dist/lib/agents/index.generated.js +624 -0
- package/dist/lib/agents/index.generated.js.map +1 -0
- package/dist/lib/auth/index.d.ts +39 -0
- package/dist/lib/auth/index.d.ts.map +1 -0
- package/dist/lib/auth/index.js +100 -0
- package/dist/lib/auth/index.js.map +1 -0
- package/dist/lib/auth/oauth/CLIFlowHandler.d.ts +61 -0
- package/dist/lib/auth/oauth/CLIFlowHandler.d.ts.map +1 -0
- package/dist/lib/auth/oauth/CLIFlowHandler.js +287 -0
- package/dist/lib/auth/oauth/CLIFlowHandler.js.map +1 -0
- package/dist/lib/auth/oauth/ClientCredentialsFlow.d.ts +134 -0
- package/dist/lib/auth/oauth/ClientCredentialsFlow.d.ts.map +1 -0
- package/dist/lib/auth/oauth/ClientCredentialsFlow.js +325 -0
- package/dist/lib/auth/oauth/ClientCredentialsFlow.js.map +1 -0
- package/dist/lib/auth/oauth/MCPOAuthProvider.d.ts +136 -0
- package/dist/lib/auth/oauth/MCPOAuthProvider.d.ts.map +1 -0
- package/dist/lib/auth/oauth/MCPOAuthProvider.js +255 -0
- package/dist/lib/auth/oauth/MCPOAuthProvider.js.map +1 -0
- package/dist/lib/auth/oauth/NonInteractiveFlowHandler.d.ts +37 -0
- package/dist/lib/auth/oauth/NonInteractiveFlowHandler.d.ts.map +1 -0
- package/dist/lib/auth/oauth/NonInteractiveFlowHandler.js +30 -0
- package/dist/lib/auth/oauth/NonInteractiveFlowHandler.js.map +1 -0
- package/dist/lib/auth/oauth/authorization-required.d.ts +112 -0
- package/dist/lib/auth/oauth/authorization-required.d.ts.map +1 -0
- package/dist/lib/auth/oauth/authorization-required.js +363 -0
- package/dist/lib/auth/oauth/authorization-required.js.map +1 -0
- package/dist/lib/auth/oauth/diagnose.d.ts +101 -0
- package/dist/lib/auth/oauth/diagnose.d.ts.map +1 -0
- package/dist/lib/auth/oauth/diagnose.js +630 -0
- package/dist/lib/auth/oauth/diagnose.js.map +1 -0
- package/dist/lib/auth/oauth/diagnostics.d.ts +129 -0
- package/dist/lib/auth/oauth/diagnostics.d.ts.map +1 -0
- package/dist/lib/auth/oauth/diagnostics.js +207 -0
- package/dist/lib/auth/oauth/diagnostics.js.map +1 -0
- package/dist/lib/auth/oauth/discovery.d.ts +96 -0
- package/dist/lib/auth/oauth/discovery.d.ts.map +1 -0
- package/dist/lib/auth/oauth/discovery.js +119 -0
- package/dist/lib/auth/oauth/discovery.js.map +1 -0
- package/dist/lib/auth/oauth/file-storage.d.ts +40 -0
- package/dist/lib/auth/oauth/file-storage.d.ts.map +1 -0
- package/dist/lib/auth/oauth/file-storage.js +112 -0
- package/dist/lib/auth/oauth/file-storage.js.map +1 -0
- package/dist/lib/auth/oauth/index.d.ts +133 -0
- package/dist/lib/auth/oauth/index.d.ts.map +1 -0
- package/dist/lib/auth/oauth/index.js +246 -0
- package/dist/lib/auth/oauth/index.js.map +1 -0
- package/dist/lib/auth/oauth/secret-resolver.d.ts +54 -0
- package/dist/lib/auth/oauth/secret-resolver.d.ts.map +1 -0
- package/dist/lib/auth/oauth/secret-resolver.js +96 -0
- package/dist/lib/auth/oauth/secret-resolver.js.map +1 -0
- package/dist/lib/auth/oauth/storage-registry.d.ts +44 -0
- package/dist/lib/auth/oauth/storage-registry.d.ts.map +1 -0
- package/dist/lib/auth/oauth/storage-registry.js +33 -0
- package/dist/lib/auth/oauth/storage-registry.js.map +1 -0
- package/dist/lib/auth/oauth/types.d.ts +114 -0
- package/dist/lib/auth/oauth/types.d.ts.map +1 -0
- package/dist/lib/auth/oauth/types.js +104 -0
- package/dist/lib/auth/oauth/types.js.map +1 -0
- package/dist/lib/client/index.d.ts +2 -0
- package/dist/lib/client/index.d.ts.map +1 -0
- package/dist/lib/client/index.js +26 -0
- package/dist/lib/client/index.js.map +1 -0
- package/dist/lib/compliance/index.d.ts +5 -0
- package/dist/lib/compliance/index.d.ts.map +1 -0
- package/dist/lib/compliance/index.js +52 -0
- package/dist/lib/compliance/index.js.map +1 -0
- package/dist/lib/compliance-fixtures/index.d.ts +167 -0
- package/dist/lib/compliance-fixtures/index.d.ts.map +1 -0
- package/dist/lib/compliance-fixtures/index.js +218 -0
- package/dist/lib/compliance-fixtures/index.js.map +1 -0
- package/dist/lib/compliance-fixtures/test-authorization-server.d.ts +88 -0
- package/dist/lib/compliance-fixtures/test-authorization-server.d.ts.map +1 -0
- package/dist/lib/compliance-fixtures/test-authorization-server.js +252 -0
- package/dist/lib/compliance-fixtures/test-authorization-server.js.map +1 -0
- package/dist/lib/conformance/index.d.ts +26 -0
- package/dist/lib/conformance/index.d.ts.map +1 -0
- package/dist/lib/conformance/index.js +34 -0
- package/dist/lib/conformance/index.js.map +1 -0
- package/dist/lib/conformance/invariants/uniformError.d.ts +45 -0
- package/dist/lib/conformance/invariants/uniformError.d.ts.map +1 -0
- package/dist/lib/conformance/invariants/uniformError.js +179 -0
- package/dist/lib/conformance/invariants/uniformError.js.map +1 -0
- package/dist/lib/conformance/invariants/uniformErrorComparator.d.ts +8 -0
- package/dist/lib/conformance/invariants/uniformErrorComparator.d.ts.map +1 -0
- package/dist/lib/conformance/invariants/uniformErrorComparator.js +488 -0
- package/dist/lib/conformance/invariants/uniformErrorComparator.js.map +1 -0
- package/dist/lib/conformance/oracle.d.ts +36 -0
- package/dist/lib/conformance/oracle.d.ts.map +1 -0
- package/dist/lib/conformance/oracle.js +267 -0
- package/dist/lib/conformance/oracle.js.map +1 -0
- package/dist/lib/conformance/runConformance.d.ts +17 -0
- package/dist/lib/conformance/runConformance.d.ts.map +1 -0
- package/dist/lib/conformance/runConformance.js +174 -0
- package/dist/lib/conformance/runConformance.js.map +1 -0
- package/dist/lib/conformance/runners.d.ts +27 -0
- package/dist/lib/conformance/runners.d.ts.map +1 -0
- package/dist/lib/conformance/runners.js +159 -0
- package/dist/lib/conformance/runners.js.map +1 -0
- package/dist/lib/conformance/schemaArbitrary.d.ts +39 -0
- package/dist/lib/conformance/schemaArbitrary.d.ts.map +1 -0
- package/dist/lib/conformance/schemaArbitrary.js +382 -0
- package/dist/lib/conformance/schemaArbitrary.js.map +1 -0
- package/dist/lib/conformance/schemaLoader.d.ts +12 -0
- package/dist/lib/conformance/schemaLoader.d.ts.map +1 -0
- package/dist/lib/conformance/schemaLoader.js +122 -0
- package/dist/lib/conformance/schemaLoader.js.map +1 -0
- package/dist/lib/conformance/seeder.d.ts +51 -0
- package/dist/lib/conformance/seeder.d.ts.map +1 -0
- package/dist/lib/conformance/seeder.js +341 -0
- package/dist/lib/conformance/seeder.js.map +1 -0
- package/dist/lib/conformance/types.d.ts +201 -0
- package/dist/lib/conformance/types.d.ts.map +1 -0
- package/dist/lib/conformance/types.js +56 -0
- package/dist/lib/conformance/types.js.map +1 -0
- package/dist/lib/core/ADCPMultiAgentClient.d.ts +624 -0
- package/dist/lib/core/ADCPMultiAgentClient.d.ts.map +1 -0
- package/dist/lib/core/ADCPMultiAgentClient.js +908 -0
- package/dist/lib/core/ADCPMultiAgentClient.js.map +1 -0
- package/dist/lib/core/AgentClient.d.ts +517 -0
- package/dist/lib/core/AgentClient.d.ts.map +1 -0
- package/dist/lib/core/AgentClient.js +784 -0
- package/dist/lib/core/AgentClient.js.map +1 -0
- package/dist/lib/core/AsyncHandler.d.ts +210 -0
- package/dist/lib/core/AsyncHandler.d.ts.map +1 -0
- package/dist/lib/core/AsyncHandler.js +182 -0
- package/dist/lib/core/AsyncHandler.js.map +1 -0
- package/dist/lib/core/ConfigurationManager.d.ts +79 -0
- package/dist/lib/core/ConfigurationManager.d.ts.map +1 -0
- package/dist/lib/core/ConfigurationManager.js +249 -0
- package/dist/lib/core/ConfigurationManager.js.map +1 -0
- package/dist/lib/core/ConversationTypes.d.ts +422 -0
- package/dist/lib/core/ConversationTypes.d.ts.map +1 -0
- package/dist/lib/core/ConversationTypes.js +5 -0
- package/dist/lib/core/ConversationTypes.js.map +1 -0
- package/dist/lib/core/CreativeAgentClient.d.ts +144 -0
- package/dist/lib/core/CreativeAgentClient.d.ts.map +1 -0
- package/dist/lib/core/CreativeAgentClient.js +169 -0
- package/dist/lib/core/CreativeAgentClient.js.map +1 -0
- package/dist/lib/core/GovernanceMiddleware.d.ts +93 -0
- package/dist/lib/core/GovernanceMiddleware.d.ts.map +1 -0
- package/dist/lib/core/GovernanceMiddleware.js +306 -0
- package/dist/lib/core/GovernanceMiddleware.js.map +1 -0
- package/dist/lib/core/GovernanceTypes.d.ts +116 -0
- package/dist/lib/core/GovernanceTypes.d.ts.map +1 -0
- package/dist/lib/core/GovernanceTypes.js +60 -0
- package/dist/lib/core/GovernanceTypes.js.map +1 -0
- package/dist/lib/core/ProtocolResponseParser.d.ts +80 -0
- package/dist/lib/core/ProtocolResponseParser.d.ts.map +1 -0
- package/dist/lib/core/ProtocolResponseParser.js +367 -0
- package/dist/lib/core/ProtocolResponseParser.js.map +1 -0
- package/dist/lib/core/ResponseValidator.d.ts +68 -0
- package/dist/lib/core/ResponseValidator.d.ts.map +1 -0
- package/dist/lib/core/ResponseValidator.js +283 -0
- package/dist/lib/core/ResponseValidator.js.map +1 -0
- package/dist/lib/core/SingleAgentClient.d.ts +1065 -0
- package/dist/lib/core/SingleAgentClient.d.ts.map +1 -0
- package/dist/lib/core/SingleAgentClient.js +2134 -0
- package/dist/lib/core/SingleAgentClient.js.map +1 -0
- package/dist/lib/core/TaskEventTypes.d.ts +220 -0
- package/dist/lib/core/TaskEventTypes.d.ts.map +1 -0
- package/dist/lib/core/TaskEventTypes.js +80 -0
- package/dist/lib/core/TaskEventTypes.js.map +1 -0
- package/dist/lib/core/TaskExecutor.d.ts +245 -0
- package/dist/lib/core/TaskExecutor.d.ts.map +1 -0
- package/dist/lib/core/TaskExecutor.js +1452 -0
- package/dist/lib/core/TaskExecutor.js.map +1 -0
- package/dist/lib/core/match.d.ts +84 -0
- package/dist/lib/core/match.d.ts.map +1 -0
- package/dist/lib/core/match.js +47 -0
- package/dist/lib/core/match.js.map +1 -0
- package/dist/lib/discovery/network-consistency-checker.d.ts +111 -0
- package/dist/lib/discovery/network-consistency-checker.d.ts.map +1 -0
- package/dist/lib/discovery/network-consistency-checker.js +541 -0
- package/dist/lib/discovery/network-consistency-checker.js.map +1 -0
- package/dist/lib/discovery/property-crawler.d.ts +91 -0
- package/dist/lib/discovery/property-crawler.d.ts.map +1 -0
- package/dist/lib/discovery/property-crawler.js +290 -0
- package/dist/lib/discovery/property-crawler.js.map +1 -0
- package/dist/lib/discovery/property-index.d.ts +68 -0
- package/dist/lib/discovery/property-index.d.ts.map +1 -0
- package/dist/lib/discovery/property-index.js +163 -0
- package/dist/lib/discovery/property-index.js.map +1 -0
- package/dist/lib/discovery/types.d.ts +42 -0
- package/dist/lib/discovery/types.d.ts.map +1 -0
- package/dist/lib/discovery/types.js +7 -0
- package/dist/lib/discovery/types.js.map +1 -0
- package/dist/lib/errors/index.d.ts +284 -0
- package/dist/lib/errors/index.d.ts.map +1 -0
- package/dist/lib/errors/index.js +446 -0
- package/dist/lib/errors/index.js.map +1 -0
- package/dist/lib/express-mcp/index.d.ts +62 -0
- package/dist/lib/express-mcp/index.d.ts.map +1 -0
- package/dist/lib/express-mcp/index.js +118 -0
- package/dist/lib/express-mcp/index.js.map +1 -0
- package/dist/lib/governance/index.d.ts +149 -0
- package/dist/lib/governance/index.d.ts.map +1 -0
- package/dist/lib/governance/index.js +171 -0
- package/dist/lib/governance/index.js.map +1 -0
- package/dist/lib/handlers/types.d.ts +119 -0
- package/dist/lib/handlers/types.d.ts.map +1 -0
- package/dist/lib/handlers/types.js +239 -0
- package/dist/lib/handlers/types.js.map +1 -0
- package/dist/lib/index.d.ts +118 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +689 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/net/address-guards.d.ts +34 -0
- package/dist/lib/net/address-guards.d.ts.map +1 -0
- package/dist/lib/net/address-guards.js +132 -0
- package/dist/lib/net/address-guards.js.map +1 -0
- package/dist/lib/net/index.d.ts +8 -0
- package/dist/lib/net/index.d.ts.map +1 -0
- package/dist/lib/net/index.js +17 -0
- package/dist/lib/net/index.js.map +1 -0
- package/dist/lib/net/ssrf-fetch.d.ts +56 -0
- package/dist/lib/net/ssrf-fetch.d.ts.map +1 -0
- package/dist/lib/net/ssrf-fetch.js +199 -0
- package/dist/lib/net/ssrf-fetch.js.map +1 -0
- package/dist/lib/observability/index.d.ts +8 -0
- package/dist/lib/observability/index.d.ts.map +1 -0
- package/dist/lib/observability/index.js +17 -0
- package/dist/lib/observability/index.js.map +1 -0
- package/dist/lib/observability/tracing.d.ts +42 -0
- package/dist/lib/observability/tracing.d.ts.map +1 -0
- package/dist/lib/observability/tracing.js +126 -0
- package/dist/lib/observability/tracing.js.map +1 -0
- package/dist/lib/protocols/a2a.d.ts +23 -0
- package/dist/lib/protocols/a2a.d.ts.map +1 -0
- package/dist/lib/protocols/a2a.js +268 -0
- package/dist/lib/protocols/a2a.js.map +1 -0
- package/dist/lib/protocols/index.d.ts +43 -0
- package/dist/lib/protocols/index.d.ts.map +1 -0
- package/dist/lib/protocols/index.js +264 -0
- package/dist/lib/protocols/index.js.map +1 -0
- package/dist/lib/protocols/mcp-tasks.d.ts +79 -0
- package/dist/lib/protocols/mcp-tasks.d.ts.map +1 -0
- package/dist/lib/protocols/mcp-tasks.js +407 -0
- package/dist/lib/protocols/mcp-tasks.js.map +1 -0
- package/dist/lib/protocols/mcp.d.ts +124 -0
- package/dist/lib/protocols/mcp.d.ts.map +1 -0
- package/dist/lib/protocols/mcp.js +564 -0
- package/dist/lib/protocols/mcp.js.map +1 -0
- package/dist/lib/protocols/rawResponseCapture.d.ts +44 -0
- package/dist/lib/protocols/rawResponseCapture.d.ts.map +1 -0
- package/dist/lib/protocols/rawResponseCapture.js +147 -0
- package/dist/lib/protocols/rawResponseCapture.js.map +1 -0
- package/dist/lib/registry/cursor-store.d.ts +19 -0
- package/dist/lib/registry/cursor-store.d.ts.map +1 -0
- package/dist/lib/registry/cursor-store.js +44 -0
- package/dist/lib/registry/cursor-store.js.map +1 -0
- package/dist/lib/registry/index.d.ts +278 -0
- package/dist/lib/registry/index.d.ts.map +1 -0
- package/dist/lib/registry/index.js +652 -0
- package/dist/lib/registry/index.js.map +1 -0
- package/dist/lib/registry/property-registry.d.ts +57 -0
- package/dist/lib/registry/property-registry.d.ts.map +1 -0
- package/dist/lib/registry/property-registry.js +92 -0
- package/dist/lib/registry/property-registry.js.map +1 -0
- package/dist/lib/registry/sync.d.ts +139 -0
- package/dist/lib/registry/sync.d.ts.map +1 -0
- package/dist/lib/registry/sync.js +390 -0
- package/dist/lib/registry/sync.js.map +1 -0
- package/dist/lib/registry/types.d.ts +112 -0
- package/dist/lib/registry/types.d.ts.map +1 -0
- package/dist/lib/registry/types.generated.d.ts +5680 -0
- package/dist/lib/registry/types.generated.d.ts.map +1 -0
- package/dist/lib/registry/types.generated.js +8 -0
- package/dist/lib/registry/types.generated.js.map +1 -0
- package/dist/lib/registry/types.js +9 -0
- package/dist/lib/registry/types.js.map +1 -0
- package/dist/lib/schemas/index.d.ts +76 -0
- package/dist/lib/schemas/index.d.ts.map +1 -0
- package/dist/lib/schemas/index.js +133 -0
- package/dist/lib/schemas/index.js.map +1 -0
- package/dist/lib/schemas-data/3.0.1/a2ui/bound-value.json +81 -0
- package/dist/lib/schemas-data/3.0.1/a2ui/component.json +32 -0
- package/dist/lib/schemas-data/3.0.1/a2ui/si-catalog.json +427 -0
- package/dist/lib/schemas-data/3.0.1/a2ui/surface.json +39 -0
- package/dist/lib/schemas-data/3.0.1/a2ui/user-action.json +47 -0
- package/dist/lib/schemas-data/3.0.1/account/get-account-financials-request.json +70 -0
- package/dist/lib/schemas-data/3.0.1/account/get-account-financials-response.json +320 -0
- package/dist/lib/schemas-data/3.0.1/account/list-accounts-request.json +42 -0
- package/dist/lib/schemas-data/3.0.1/account/list-accounts-response.json +108 -0
- package/dist/lib/schemas-data/3.0.1/account/report-usage-request.json +168 -0
- package/dist/lib/schemas-data/3.0.1/account/report-usage-response.json +56 -0
- package/dist/lib/schemas-data/3.0.1/account/sync-accounts-request.json +201 -0
- package/dist/lib/schemas-data/3.0.1/account/sync-accounts-response.json +346 -0
- package/dist/lib/schemas-data/3.0.1/account/sync-governance-request.json +170 -0
- package/dist/lib/schemas-data/3.0.1/account/sync-governance-response.json +193 -0
- package/dist/lib/schemas-data/3.0.1/adagents.json +1225 -0
- package/dist/lib/schemas-data/3.0.1/brand/acquire-rights-request.json +114 -0
- package/dist/lib/schemas-data/3.0.1/brand/acquire-rights-response.json +220 -0
- package/dist/lib/schemas-data/3.0.1/brand/creative-approval-request.json +63 -0
- package/dist/lib/schemas-data/3.0.1/brand/creative-approval-response.json +189 -0
- package/dist/lib/schemas-data/3.0.1/brand/get-brand-identity-request.json +56 -0
- package/dist/lib/schemas-data/3.0.1/brand/get-brand-identity-response.json +585 -0
- package/dist/lib/schemas-data/3.0.1/brand/get-rights-request.json +70 -0
- package/dist/lib/schemas-data/3.0.1/brand/get-rights-response.json +220 -0
- package/dist/lib/schemas-data/3.0.1/brand/revocation-notification.json +57 -0
- package/dist/lib/schemas-data/3.0.1/brand/rights-pricing-option.json +65 -0
- package/dist/lib/schemas-data/3.0.1/brand/rights-terms.json +70 -0
- package/dist/lib/schemas-data/3.0.1/brand/update-rights-request.json +63 -0
- package/dist/lib/schemas-data/3.0.1/brand/update-rights-response.json +99 -0
- package/dist/lib/schemas-data/3.0.1/brand.json +2582 -0
- package/dist/lib/schemas-data/3.0.1/bundled/content-standards/calibrate-content-request.json +1712 -0
- package/dist/lib/schemas-data/3.0.1/bundled/content-standards/calibrate-content-response.json +180 -0
- package/dist/lib/schemas-data/3.0.1/bundled/content-standards/create-content-standards-request.json +3622 -0
- package/dist/lib/schemas-data/3.0.1/bundled/content-standards/create-content-standards-response.json +116 -0
- package/dist/lib/schemas-data/3.0.1/bundled/content-standards/get-content-standards-request.json +38 -0
- package/dist/lib/schemas-data/3.0.1/bundled/content-standards/get-content-standards-response.json +3851 -0
- package/dist/lib/schemas-data/3.0.1/bundled/content-standards/get-media-buy-artifacts-request.json +234 -0
- package/dist/lib/schemas-data/3.0.1/bundled/content-standards/get-media-buy-artifacts-response.json +1880 -0
- package/dist/lib/schemas-data/3.0.1/bundled/content-standards/list-content-standards-request.json +121 -0
- package/dist/lib/schemas-data/3.0.1/bundled/content-standards/list-content-standards-response.json +3880 -0
- package/dist/lib/schemas-data/3.0.1/bundled/content-standards/update-content-standards-request.json +3611 -0
- package/dist/lib/schemas-data/3.0.1/bundled/content-standards/update-content-standards-response.json +131 -0
- package/dist/lib/schemas-data/3.0.1/bundled/content-standards/validate-content-delivery-request.json +1766 -0
- package/dist/lib/schemas-data/3.0.1/bundled/content-standards/validate-content-delivery-response.json +208 -0
- package/dist/lib/schemas-data/3.0.1/bundled/core/tasks-get-request.json +60 -0
- package/dist/lib/schemas-data/3.0.1/bundled/core/tasks-get-response.json +264 -0
- package/dist/lib/schemas-data/3.0.1/bundled/core/tasks-list-request.json +318 -0
- package/dist/lib/schemas-data/3.0.1/bundled/core/tasks-list-response.json +258 -0
- package/dist/lib/schemas-data/3.0.1/bundled/creative/get-creative-delivery-request.json +245 -0
- package/dist/lib/schemas-data/3.0.1/bundled/creative/get-creative-delivery-response.json +5967 -0
- package/dist/lib/schemas-data/3.0.1/bundled/creative/get-creative-features-request.json +5091 -0
- package/dist/lib/schemas-data/3.0.1/bundled/creative/get-creative-features-response.json +230 -0
- package/dist/lib/schemas-data/3.0.1/bundled/creative/list-creative-formats-request.json +485 -0
- package/dist/lib/schemas-data/3.0.1/bundled/creative/list-creative-formats-response.json +4076 -0
- package/dist/lib/schemas-data/3.0.1/bundled/creative/list-creatives-request.json +687 -0
- package/dist/lib/schemas-data/3.0.1/bundled/creative/list-creatives-response.json +5977 -0
- package/dist/lib/schemas-data/3.0.1/bundled/creative/preview-creative-request.json +9624 -0
- package/dist/lib/schemas-data/3.0.1/bundled/creative/preview-creative-response.json +5931 -0
- package/dist/lib/schemas-data/3.0.1/bundled/creative/sync-creatives-request.json +5268 -0
- package/dist/lib/schemas-data/3.0.1/bundled/creative/sync-creatives-response.json +1146 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/build-creative-request.json +5369 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/build-creative-response.json +10286 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/create-media-buy-request.json +7893 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/create-media-buy-response.json +4170 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/get-media-buy-delivery-request.json +494 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/get-media-buy-delivery-response.json +4256 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/get-media-buys-request.json +261 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/get-media-buys-response.json +2357 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/get-products-request.json +2046 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/get-products-response.json +6809 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/list-creative-formats-request.json +311 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/list-creative-formats-response.json +4080 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/log-event-request.json +394 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/log-event-response.json +193 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/package-request.json +6923 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/provide-performance-feedback-request.json +119 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/provide-performance-feedback-response.json +142 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/sync-audiences-request.json +454 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/sync-audiences-response.json +335 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/sync-catalogs-request.json +836 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/sync-catalogs-response.json +344 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/sync-event-sources-request.json +299 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/sync-event-sources-response.json +461 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/update-media-buy-request.json +13548 -0
- package/dist/lib/schemas-data/3.0.1/bundled/media-buy/update-media-buy-response.json +2799 -0
- package/dist/lib/schemas-data/3.0.1/bundled/property/create-property-list-request.json +661 -0
- package/dist/lib/schemas-data/3.0.1/bundled/property/create-property-list-response.json +928 -0
- package/dist/lib/schemas-data/3.0.1/bundled/property/delete-property-list-request.json +198 -0
- package/dist/lib/schemas-data/3.0.1/bundled/property/delete-property-list-response.json +44 -0
- package/dist/lib/schemas-data/3.0.1/bundled/property/get-property-list-request.json +212 -0
- package/dist/lib/schemas-data/3.0.1/bundled/property/get-property-list-response.json +1001 -0
- package/dist/lib/schemas-data/3.0.1/bundled/property/list-property-lists-request.json +204 -0
- package/dist/lib/schemas-data/3.0.1/bundled/property/list-property-lists-response.json +946 -0
- package/dist/lib/schemas-data/3.0.1/bundled/property/update-property-list-request.json +670 -0
- package/dist/lib/schemas-data/3.0.1/bundled/property/update-property-list-response.json +923 -0
- package/dist/lib/schemas-data/3.0.1/bundled/property/validate-property-delivery-request.json +308 -0
- package/dist/lib/schemas-data/3.0.1/bundled/property/validate-property-delivery-response.json +418 -0
- package/dist/lib/schemas-data/3.0.1/bundled/protocol/get-adcp-capabilities-request.json +47 -0
- package/dist/lib/schemas-data/3.0.1/bundled/protocol/get-adcp-capabilities-response.json +1729 -0
- package/dist/lib/schemas-data/3.0.1/bundled/signals/activate-signal-request.json +269 -0
- package/dist/lib/schemas-data/3.0.1/bundled/signals/activate-signal-response.json +320 -0
- package/dist/lib/schemas-data/3.0.1/bundled/signals/get-signals-request.json +409 -0
- package/dist/lib/schemas-data/3.0.1/bundled/signals/get-signals-response.json +689 -0
- package/dist/lib/schemas-data/3.0.1/bundled/sponsored-intelligence/si-get-offering-request.json +57 -0
- package/dist/lib/schemas-data/3.0.1/bundled/sponsored-intelligence/si-get-offering-response.json +207 -0
- package/dist/lib/schemas-data/3.0.1/bundled/sponsored-intelligence/si-initiate-session-request.json +322 -0
- package/dist/lib/schemas-data/3.0.1/bundled/sponsored-intelligence/si-initiate-session-response.json +618 -0
- package/dist/lib/schemas-data/3.0.1/bundled/sponsored-intelligence/si-send-message-request.json +81 -0
- package/dist/lib/schemas-data/3.0.1/bundled/sponsored-intelligence/si-send-message-response.json +589 -0
- package/dist/lib/schemas-data/3.0.1/bundled/sponsored-intelligence/si-terminate-session-request.json +87 -0
- package/dist/lib/schemas-data/3.0.1/bundled/sponsored-intelligence/si-terminate-session-response.json +156 -0
- package/dist/lib/schemas-data/3.0.1/collection/base-collection-source.json +118 -0
- package/dist/lib/schemas-data/3.0.1/collection/collection-list-changed-webhook.json +74 -0
- package/dist/lib/schemas-data/3.0.1/collection/collection-list-filters.json +85 -0
- package/dist/lib/schemas-data/3.0.1/collection/collection-list.json +71 -0
- package/dist/lib/schemas-data/3.0.1/collection/create-collection-list-request.json +62 -0
- package/dist/lib/schemas-data/3.0.1/collection/create-collection-list-response.json +33 -0
- package/dist/lib/schemas-data/3.0.1/collection/delete-collection-list-request.json +43 -0
- package/dist/lib/schemas-data/3.0.1/collection/delete-collection-list-response.json +34 -0
- package/dist/lib/schemas-data/3.0.1/collection/get-collection-list-request.json +57 -0
- package/dist/lib/schemas-data/3.0.1/collection/get-collection-list-response.json +122 -0
- package/dist/lib/schemas-data/3.0.1/collection/list-collection-lists-request.json +33 -0
- package/dist/lib/schemas-data/3.0.1/collection/list-collection-lists-response.json +29 -0
- package/dist/lib/schemas-data/3.0.1/collection/update-collection-list-request.json +71 -0
- package/dist/lib/schemas-data/3.0.1/collection/update-collection-list-response.json +28 -0
- package/dist/lib/schemas-data/3.0.1/content-standards/artifact-webhook-payload.json +88 -0
- package/dist/lib/schemas-data/3.0.1/content-standards/artifact.json +407 -0
- package/dist/lib/schemas-data/3.0.1/content-standards/calibrate-content-request.json +42 -0
- package/dist/lib/schemas-data/3.0.1/content-standards/calibrate-content-response.json +93 -0
- package/dist/lib/schemas-data/3.0.1/content-standards/content-standards.json +83 -0
- package/dist/lib/schemas-data/3.0.1/content-standards/create-content-standards-request.json +177 -0
- package/dist/lib/schemas-data/3.0.1/content-standards/create-content-standards-response.json +53 -0
- package/dist/lib/schemas-data/3.0.1/content-standards/get-content-standards-request.json +28 -0
- package/dist/lib/schemas-data/3.0.1/content-standards/get-content-standards-response.json +47 -0
- package/dist/lib/schemas-data/3.0.1/content-standards/get-media-buy-artifacts-request.json +79 -0
- package/dist/lib/schemas-data/3.0.1/content-standards/get-media-buy-artifacts-response.json +136 -0
- package/dist/lib/schemas-data/3.0.1/content-standards/list-content-standards-request.json +49 -0
- package/dist/lib/schemas-data/3.0.1/content-standards/list-content-standards-response.json +55 -0
- package/dist/lib/schemas-data/3.0.1/content-standards/update-content-standards-request.json +166 -0
- package/dist/lib/schemas-data/3.0.1/content-standards/update-content-standards-response.json +68 -0
- package/dist/lib/schemas-data/3.0.1/content-standards/validate-content-delivery-request.json +96 -0
- package/dist/lib/schemas-data/3.0.1/content-standards/validate-content-delivery-response.json +121 -0
- package/dist/lib/schemas-data/3.0.1/core/account-ref.json +71 -0
- package/dist/lib/schemas-data/3.0.1/core/account.json +344 -0
- package/dist/lib/schemas-data/3.0.1/core/activation-key.json +50 -0
- package/dist/lib/schemas-data/3.0.1/core/ad-inventory-config.json +39 -0
- package/dist/lib/schemas-data/3.0.1/core/agent-encryption-key.json +41 -0
- package/dist/lib/schemas-data/3.0.1/core/agent-signing-key.json +55 -0
- package/dist/lib/schemas-data/3.0.1/core/app-item.json +170 -0
- package/dist/lib/schemas-data/3.0.1/core/assets/audio-asset.json +82 -0
- package/dist/lib/schemas-data/3.0.1/core/assets/brief-asset.json +22 -0
- package/dist/lib/schemas-data/3.0.1/core/assets/catalog-asset.json +22 -0
- package/dist/lib/schemas-data/3.0.1/core/assets/css-asset.json +31 -0
- package/dist/lib/schemas-data/3.0.1/core/assets/daast-asset.json +88 -0
- package/dist/lib/schemas-data/3.0.1/core/assets/html-asset.json +54 -0
- package/dist/lib/schemas-data/3.0.1/core/assets/image-asset.json +49 -0
- package/dist/lib/schemas-data/3.0.1/core/assets/javascript-asset.json +54 -0
- package/dist/lib/schemas-data/3.0.1/core/assets/markdown-asset.json +37 -0
- package/dist/lib/schemas-data/3.0.1/core/assets/text-asset.json +31 -0
- package/dist/lib/schemas-data/3.0.1/core/assets/url-asset.json +36 -0
- package/dist/lib/schemas-data/3.0.1/core/assets/vast-asset.json +94 -0
- package/dist/lib/schemas-data/3.0.1/core/assets/video-asset.json +179 -0
- package/dist/lib/schemas-data/3.0.1/core/assets/webhook-asset.json +97 -0
- package/dist/lib/schemas-data/3.0.1/core/async-response-data.json +128 -0
- package/dist/lib/schemas-data/3.0.1/core/attribution-window.json +33 -0
- package/dist/lib/schemas-data/3.0.1/core/audience-member.json +70 -0
- package/dist/lib/schemas-data/3.0.1/core/audience-selector.json +134 -0
- package/dist/lib/schemas-data/3.0.1/core/brand-id.json +16 -0
- package/dist/lib/schemas-data/3.0.1/core/brand-ref.json +76 -0
- package/dist/lib/schemas-data/3.0.1/core/business-entity.json +207 -0
- package/dist/lib/schemas-data/3.0.1/core/cancellation-policy.json +49 -0
- package/dist/lib/schemas-data/3.0.1/core/catalog-field-mapping.json +144 -0
- package/dist/lib/schemas-data/3.0.1/core/catalog.json +222 -0
- package/dist/lib/schemas-data/3.0.1/core/catchment.json +221 -0
- package/dist/lib/schemas-data/3.0.1/core/collection-distribution.json +41 -0
- package/dist/lib/schemas-data/3.0.1/core/collection-list-ref.json +29 -0
- package/dist/lib/schemas-data/3.0.1/core/collection-selector.json +27 -0
- package/dist/lib/schemas-data/3.0.1/core/collection.json +116 -0
- package/dist/lib/schemas-data/3.0.1/core/content-rating.json +22 -0
- package/dist/lib/schemas-data/3.0.1/core/context.json +8 -0
- package/dist/lib/schemas-data/3.0.1/core/creative-asset.json +150 -0
- package/dist/lib/schemas-data/3.0.1/core/creative-assignment.json +32 -0
- package/dist/lib/schemas-data/3.0.1/core/creative-brief.json +136 -0
- package/dist/lib/schemas-data/3.0.1/core/creative-consumption.json +30 -0
- package/dist/lib/schemas-data/3.0.1/core/creative-filters.json +119 -0
- package/dist/lib/schemas-data/3.0.1/core/creative-item.json +79 -0
- package/dist/lib/schemas-data/3.0.1/core/creative-manifest.json +96 -0
- package/dist/lib/schemas-data/3.0.1/core/creative-policy.json +31 -0
- package/dist/lib/schemas-data/3.0.1/core/creative-variable.json +47 -0
- package/dist/lib/schemas-data/3.0.1/core/creative-variant.json +60 -0
- package/dist/lib/schemas-data/3.0.1/core/data-provider-signal-selector.json +94 -0
- package/dist/lib/schemas-data/3.0.1/core/date-range.json +24 -0
- package/dist/lib/schemas-data/3.0.1/core/datetime-range.json +24 -0
- package/dist/lib/schemas-data/3.0.1/core/daypart-target.json +39 -0
- package/dist/lib/schemas-data/3.0.1/core/deadline-policy.json +58 -0
- package/dist/lib/schemas-data/3.0.1/core/delivery-forecast.json +86 -0
- package/dist/lib/schemas-data/3.0.1/core/delivery-metrics.json +327 -0
- package/dist/lib/schemas-data/3.0.1/core/deployment.json +93 -0
- package/dist/lib/schemas-data/3.0.1/core/destination-item.json +168 -0
- package/dist/lib/schemas-data/3.0.1/core/destination.json +53 -0
- package/dist/lib/schemas-data/3.0.1/core/diagnostic-issue.json +27 -0
- package/dist/lib/schemas-data/3.0.1/core/duration.json +30 -0
- package/dist/lib/schemas-data/3.0.1/core/education-item.json +168 -0
- package/dist/lib/schemas-data/3.0.1/core/error.json +52 -0
- package/dist/lib/schemas-data/3.0.1/core/event-custom-data.json +86 -0
- package/dist/lib/schemas-data/3.0.1/core/event-source-health.json +70 -0
- package/dist/lib/schemas-data/3.0.1/core/event.json +54 -0
- package/dist/lib/schemas-data/3.0.1/core/ext.json +8 -0
- package/dist/lib/schemas-data/3.0.1/core/feature-requirement.json +45 -0
- package/dist/lib/schemas-data/3.0.1/core/flight-item.json +159 -0
- package/dist/lib/schemas-data/3.0.1/core/forecast-point.json +85 -0
- package/dist/lib/schemas-data/3.0.1/core/forecast-range.json +38 -0
- package/dist/lib/schemas-data/3.0.1/core/format-id.json +48 -0
- package/dist/lib/schemas-data/3.0.1/core/format.json +904 -0
- package/dist/lib/schemas-data/3.0.1/core/frequency-cap.json +73 -0
- package/dist/lib/schemas-data/3.0.1/core/generation-credential.json +44 -0
- package/dist/lib/schemas-data/3.0.1/core/geo-breakdown-support.json +38 -0
- package/dist/lib/schemas-data/3.0.1/core/hotel-item.json +214 -0
- package/dist/lib/schemas-data/3.0.1/core/identifier.json +22 -0
- package/dist/lib/schemas-data/3.0.1/core/industry-identifier.json +22 -0
- package/dist/lib/schemas-data/3.0.1/core/insertion-order.json +91 -0
- package/dist/lib/schemas-data/3.0.1/core/installment-deadlines.json +29 -0
- package/dist/lib/schemas-data/3.0.1/core/installment.json +108 -0
- package/dist/lib/schemas-data/3.0.1/core/job-item.json +199 -0
- package/dist/lib/schemas-data/3.0.1/core/limited-series.json +28 -0
- package/dist/lib/schemas-data/3.0.1/core/material-deadline.json +31 -0
- package/dist/lib/schemas-data/3.0.1/core/mcp-webhook-payload.json +163 -0
- package/dist/lib/schemas-data/3.0.1/core/measurement-readiness.json +43 -0
- package/dist/lib/schemas-data/3.0.1/core/measurement-terms.json +63 -0
- package/dist/lib/schemas-data/3.0.1/core/measurement-window.json +54 -0
- package/dist/lib/schemas-data/3.0.1/core/media-buy-features.json +24 -0
- package/dist/lib/schemas-data/3.0.1/core/media-buy.json +101 -0
- package/dist/lib/schemas-data/3.0.1/core/offering-asset-group.json +118 -0
- package/dist/lib/schemas-data/3.0.1/core/offering.json +267 -0
- package/dist/lib/schemas-data/3.0.1/core/optimization-goal.json +285 -0
- package/dist/lib/schemas-data/3.0.1/core/outcome-measurement.json +48 -0
- package/dist/lib/schemas-data/3.0.1/core/overlay.json +89 -0
- package/dist/lib/schemas-data/3.0.1/core/package.json +170 -0
- package/dist/lib/schemas-data/3.0.1/core/pagination-request.json +21 -0
- package/dist/lib/schemas-data/3.0.1/core/pagination-response.json +26 -0
- package/dist/lib/schemas-data/3.0.1/core/performance-feedback.json +90 -0
- package/dist/lib/schemas-data/3.0.1/core/performance-standard.json +33 -0
- package/dist/lib/schemas-data/3.0.1/core/placement-definition.json +81 -0
- package/dist/lib/schemas-data/3.0.1/core/placement.json +42 -0
- package/dist/lib/schemas-data/3.0.1/core/planned-delivery.json +84 -0
- package/dist/lib/schemas-data/3.0.1/core/price.json +59 -0
- package/dist/lib/schemas-data/3.0.1/core/pricing-option.json +35 -0
- package/dist/lib/schemas-data/3.0.1/core/product-allocation.json +69 -0
- package/dist/lib/schemas-data/3.0.1/core/product-filters.json +435 -0
- package/dist/lib/schemas-data/3.0.1/core/product.json +493 -0
- package/dist/lib/schemas-data/3.0.1/core/property-id.json +15 -0
- package/dist/lib/schemas-data/3.0.1/core/property-list-ref.json +29 -0
- package/dist/lib/schemas-data/3.0.1/core/property-tag.json +16 -0
- package/dist/lib/schemas-data/3.0.1/core/property.json +70 -0
- package/dist/lib/schemas-data/3.0.1/core/proposal.json +89 -0
- package/dist/lib/schemas-data/3.0.1/core/protocol-envelope.json +186 -0
- package/dist/lib/schemas-data/3.0.1/core/provenance.json +234 -0
- package/dist/lib/schemas-data/3.0.1/core/publisher-property-selector.json +92 -0
- package/dist/lib/schemas-data/3.0.1/core/push-notification-config.json +47 -0
- package/dist/lib/schemas-data/3.0.1/core/real-estate-item.json +241 -0
- package/dist/lib/schemas-data/3.0.1/core/reference-asset.json +36 -0
- package/dist/lib/schemas-data/3.0.1/core/reporting-capabilities.json +118 -0
- package/dist/lib/schemas-data/3.0.1/core/reporting-webhook.json +67 -0
- package/dist/lib/schemas-data/3.0.1/core/requirements/asset-requirements.json +44 -0
- package/dist/lib/schemas-data/3.0.1/core/requirements/audio-asset-requirements.json +68 -0
- package/dist/lib/schemas-data/3.0.1/core/requirements/catalog-field-binding.json +172 -0
- package/dist/lib/schemas-data/3.0.1/core/requirements/catalog-requirements.json +68 -0
- package/dist/lib/schemas-data/3.0.1/core/requirements/css-asset-requirements.json +15 -0
- package/dist/lib/schemas-data/3.0.1/core/requirements/daast-asset-requirements.json +17 -0
- package/dist/lib/schemas-data/3.0.1/core/requirements/html-asset-requirements.json +38 -0
- package/dist/lib/schemas-data/3.0.1/core/requirements/image-asset-requirements.json +151 -0
- package/dist/lib/schemas-data/3.0.1/core/requirements/javascript-asset-requirements.json +40 -0
- package/dist/lib/schemas-data/3.0.1/core/requirements/markdown-asset-requirements.json +15 -0
- package/dist/lib/schemas-data/3.0.1/core/requirements/offering-asset-constraint.json +66 -0
- package/dist/lib/schemas-data/3.0.1/core/requirements/text-asset-requirements.json +41 -0
- package/dist/lib/schemas-data/3.0.1/core/requirements/url-asset-requirements.json +50 -0
- package/dist/lib/schemas-data/3.0.1/core/requirements/vast-asset-requirements.json +21 -0
- package/dist/lib/schemas-data/3.0.1/core/requirements/video-asset-requirements.json +172 -0
- package/dist/lib/schemas-data/3.0.1/core/requirements/webhook-asset-requirements.json +21 -0
- package/dist/lib/schemas-data/3.0.1/core/response.json +24 -0
- package/dist/lib/schemas-data/3.0.1/core/rights-constraint.json +98 -0
- package/dist/lib/schemas-data/3.0.1/core/seller-agent-ref.json +30 -0
- package/dist/lib/schemas-data/3.0.1/core/signal-definition.json +89 -0
- package/dist/lib/schemas-data/3.0.1/core/signal-filters.json +43 -0
- package/dist/lib/schemas-data/3.0.1/core/signal-id.json +66 -0
- package/dist/lib/schemas-data/3.0.1/core/signal-pricing-option.json +7 -0
- package/dist/lib/schemas-data/3.0.1/core/signal-pricing.json +194 -0
- package/dist/lib/schemas-data/3.0.1/core/signal-targeting.json +93 -0
- package/dist/lib/schemas-data/3.0.1/core/special.json +31 -0
- package/dist/lib/schemas-data/3.0.1/core/start-timing.json +18 -0
- package/dist/lib/schemas-data/3.0.1/core/store-item.json +259 -0
- package/dist/lib/schemas-data/3.0.1/core/talent.json +27 -0
- package/dist/lib/schemas-data/3.0.1/core/targeting.json +510 -0
- package/dist/lib/schemas-data/3.0.1/core/tasks-get-request.json +50 -0
- package/dist/lib/schemas-data/3.0.1/core/tasks-get-response.json +159 -0
- package/dist/lib/schemas-data/3.0.1/core/tasks-list-request.json +185 -0
- package/dist/lib/schemas-data/3.0.1/core/tasks-list-response.json +153 -0
- package/dist/lib/schemas-data/3.0.1/core/user-match.json +90 -0
- package/dist/lib/schemas-data/3.0.1/core/vehicle-item.json +231 -0
- package/dist/lib/schemas-data/3.0.1/core/vendor-pricing-option.json +24 -0
- package/dist/lib/schemas-data/3.0.1/core/x-entity-types.json +69 -0
- package/dist/lib/schemas-data/3.0.1/creative/asset-types/index.json +118 -0
- package/dist/lib/schemas-data/3.0.1/creative/creative-feature-result.json +69 -0
- package/dist/lib/schemas-data/3.0.1/creative/get-creative-delivery-request.json +75 -0
- package/dist/lib/schemas-data/3.0.1/creative/get-creative-delivery-response.json +143 -0
- package/dist/lib/schemas-data/3.0.1/creative/get-creative-features-request.json +41 -0
- package/dist/lib/schemas-data/3.0.1/creative/get-creative-features-response.json +76 -0
- package/dist/lib/schemas-data/3.0.1/creative/list-creative-formats-request.json +150 -0
- package/dist/lib/schemas-data/3.0.1/creative/list-creative-formats-response.json +64 -0
- package/dist/lib/schemas-data/3.0.1/creative/list-creatives-request.json +184 -0
- package/dist/lib/schemas-data/3.0.1/creative/list-creatives-response.json +445 -0
- package/dist/lib/schemas-data/3.0.1/creative/preview-creative-request.json +212 -0
- package/dist/lib/schemas-data/3.0.1/creative/preview-creative-response.json +307 -0
- package/dist/lib/schemas-data/3.0.1/creative/preview-render.json +225 -0
- package/dist/lib/schemas-data/3.0.1/creative/sync-creatives-async-response-input-required.json +25 -0
- package/dist/lib/schemas-data/3.0.1/creative/sync-creatives-async-response-submitted.json +16 -0
- package/dist/lib/schemas-data/3.0.1/creative/sync-creatives-async-response-working.json +46 -0
- package/dist/lib/schemas-data/3.0.1/creative/sync-creatives-request.json +242 -0
- package/dist/lib/schemas-data/3.0.1/creative/sync-creatives-response.json +270 -0
- package/dist/lib/schemas-data/3.0.1/enums/account-scope.json +19 -0
- package/dist/lib/schemas-data/3.0.1/enums/account-status.json +23 -0
- package/dist/lib/schemas-data/3.0.1/enums/action-source.json +29 -0
- package/dist/lib/schemas-data/3.0.1/enums/adcp-protocol.json +23 -0
- package/dist/lib/schemas-data/3.0.1/enums/adjustment-kind.json +19 -0
- package/dist/lib/schemas-data/3.0.1/enums/advertiser-industry.json +175 -0
- package/dist/lib/schemas-data/3.0.1/enums/age-verification-method.json +14 -0
- package/dist/lib/schemas-data/3.0.1/enums/assessment-status.json +19 -0
- package/dist/lib/schemas-data/3.0.1/enums/asset-content-type.json +23 -0
- package/dist/lib/schemas-data/3.0.1/enums/attribution-model.json +14 -0
- package/dist/lib/schemas-data/3.0.1/enums/audience-source.json +15 -0
- package/dist/lib/schemas-data/3.0.1/enums/audience-status.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/audio-channel-layout.json +13 -0
- package/dist/lib/schemas-data/3.0.1/enums/auth-scheme.json +11 -0
- package/dist/lib/schemas-data/3.0.1/enums/available-metric.json +31 -0
- package/dist/lib/schemas-data/3.0.1/enums/billing-party.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/binary-verdict.json +15 -0
- package/dist/lib/schemas-data/3.0.1/enums/brand-agent-type.json +27 -0
- package/dist/lib/schemas-data/3.0.1/enums/canceled-by.json +15 -0
- package/dist/lib/schemas-data/3.0.1/enums/catalog-action.json +14 -0
- package/dist/lib/schemas-data/3.0.1/enums/catalog-item-status.json +19 -0
- package/dist/lib/schemas-data/3.0.1/enums/catalog-type.json +22 -0
- package/dist/lib/schemas-data/3.0.1/enums/channels.json +51 -0
- package/dist/lib/schemas-data/3.0.1/enums/cloud-storage-protocol.json +12 -0
- package/dist/lib/schemas-data/3.0.1/enums/co-branding-requirement.json +12 -0
- package/dist/lib/schemas-data/3.0.1/enums/collection-cadence.json +23 -0
- package/dist/lib/schemas-data/3.0.1/enums/collection-kind.json +19 -0
- package/dist/lib/schemas-data/3.0.1/enums/collection-relationship.json +21 -0
- package/dist/lib/schemas-data/3.0.1/enums/collection-status.json +19 -0
- package/dist/lib/schemas-data/3.0.1/enums/consent-basis.json +13 -0
- package/dist/lib/schemas-data/3.0.1/enums/content-id-type.json +21 -0
- package/dist/lib/schemas-data/3.0.1/enums/content-rating-system.json +33 -0
- package/dist/lib/schemas-data/3.0.1/enums/creative-action.json +14 -0
- package/dist/lib/schemas-data/3.0.1/enums/creative-agent-capability.json +14 -0
- package/dist/lib/schemas-data/3.0.1/enums/creative-approval-status.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/creative-identifier-type.json +22 -0
- package/dist/lib/schemas-data/3.0.1/enums/creative-quality.json +15 -0
- package/dist/lib/schemas-data/3.0.1/enums/creative-sort-field.json +14 -0
- package/dist/lib/schemas-data/3.0.1/enums/creative-status.json +21 -0
- package/dist/lib/schemas-data/3.0.1/enums/daast-tracking-event.json +32 -0
- package/dist/lib/schemas-data/3.0.1/enums/daast-version.json +11 -0
- package/dist/lib/schemas-data/3.0.1/enums/day-of-week.json +16 -0
- package/dist/lib/schemas-data/3.0.1/enums/delegation-authority.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/delivery-type.json +15 -0
- package/dist/lib/schemas-data/3.0.1/enums/demographic-system.json +23 -0
- package/dist/lib/schemas-data/3.0.1/enums/derivative-type.json +21 -0
- package/dist/lib/schemas-data/3.0.1/enums/device-platform.json +21 -0
- package/dist/lib/schemas-data/3.0.1/enums/device-type.json +15 -0
- package/dist/lib/schemas-data/3.0.1/enums/digital-source-type.json +29 -0
- package/dist/lib/schemas-data/3.0.1/enums/dimension-unit.json +15 -0
- package/dist/lib/schemas-data/3.0.1/enums/disclosure-persistence.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/disclosure-position.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/distance-unit.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/distribution-identifier-type.json +53 -0
- package/dist/lib/schemas-data/3.0.1/enums/error-code.json +101 -0
- package/dist/lib/schemas-data/3.0.1/enums/escalation-severity.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/event-type.json +67 -0
- package/dist/lib/schemas-data/3.0.1/enums/exclusivity.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/feature-check-status.json +19 -0
- package/dist/lib/schemas-data/3.0.1/enums/feed-format.json +14 -0
- package/dist/lib/schemas-data/3.0.1/enums/feedback-source.json +13 -0
- package/dist/lib/schemas-data/3.0.1/enums/forecast-method.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/forecast-range-unit.json +27 -0
- package/dist/lib/schemas-data/3.0.1/enums/forecastable-metric.json +43 -0
- package/dist/lib/schemas-data/3.0.1/enums/format-id-parameter.json +11 -0
- package/dist/lib/schemas-data/3.0.1/enums/frame-rate-type.json +15 -0
- package/dist/lib/schemas-data/3.0.1/enums/frequency-cap-scope.json +13 -0
- package/dist/lib/schemas-data/3.0.1/enums/genre-taxonomy.json +29 -0
- package/dist/lib/schemas-data/3.0.1/enums/geo-level.json +13 -0
- package/dist/lib/schemas-data/3.0.1/enums/gop-type.json +15 -0
- package/dist/lib/schemas-data/3.0.1/enums/governance-decision.json +18 -0
- package/dist/lib/schemas-data/3.0.1/enums/governance-domain.json +13 -0
- package/dist/lib/schemas-data/3.0.1/enums/governance-mode.json +18 -0
- package/dist/lib/schemas-data/3.0.1/enums/governance-phase.json +12 -0
- package/dist/lib/schemas-data/3.0.1/enums/history-entry-type.json +11 -0
- package/dist/lib/schemas-data/3.0.1/enums/http-method.json +11 -0
- package/dist/lib/schemas-data/3.0.1/enums/identifier-types.json +61 -0
- package/dist/lib/schemas-data/3.0.1/enums/installment-status.json +25 -0
- package/dist/lib/schemas-data/3.0.1/enums/javascript-module-type.json +12 -0
- package/dist/lib/schemas-data/3.0.1/enums/landing-page-requirement.json +12 -0
- package/dist/lib/schemas-data/3.0.1/enums/makegood-remedy.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/markdown-flavor.json +11 -0
- package/dist/lib/schemas-data/3.0.1/enums/match-id-type.json +29 -0
- package/dist/lib/schemas-data/3.0.1/enums/match-type.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/media-buy-status.json +25 -0
- package/dist/lib/schemas-data/3.0.1/enums/media-buy-valid-action.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/metric-type.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/metro-system.json +14 -0
- package/dist/lib/schemas-data/3.0.1/enums/moov-atom-position.json +15 -0
- package/dist/lib/schemas-data/3.0.1/enums/notification-type.json +13 -0
- package/dist/lib/schemas-data/3.0.1/enums/outcome-type.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/pacing.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/payment-terms.json +23 -0
- package/dist/lib/schemas-data/3.0.1/enums/performance-standard-metric.json +21 -0
- package/dist/lib/schemas-data/3.0.1/enums/policy-category.json +15 -0
- package/dist/lib/schemas-data/3.0.1/enums/policy-enforcement.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/postal-system.json +20 -0
- package/dist/lib/schemas-data/3.0.1/enums/preview-output-format.json +11 -0
- package/dist/lib/schemas-data/3.0.1/enums/pricing-model.json +29 -0
- package/dist/lib/schemas-data/3.0.1/enums/production-quality.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/property-type.json +31 -0
- package/dist/lib/schemas-data/3.0.1/enums/proposal-status.json +15 -0
- package/dist/lib/schemas-data/3.0.1/enums/publisher-identifier-types.json +19 -0
- package/dist/lib/schemas-data/3.0.1/enums/purchase-type.json +13 -0
- package/dist/lib/schemas-data/3.0.1/enums/reach-unit.json +23 -0
- package/dist/lib/schemas-data/3.0.1/enums/reporting-frequency.json +12 -0
- package/dist/lib/schemas-data/3.0.1/enums/response-type.json +19 -0
- package/dist/lib/schemas-data/3.0.1/enums/restricted-attribute.json +31 -0
- package/dist/lib/schemas-data/3.0.1/enums/right-type.json +22 -0
- package/dist/lib/schemas-data/3.0.1/enums/right-use.json +36 -0
- package/dist/lib/schemas-data/3.0.1/enums/rights-billing-period.json +15 -0
- package/dist/lib/schemas-data/3.0.1/enums/scan-type.json +15 -0
- package/dist/lib/schemas-data/3.0.1/enums/si-session-status.json +19 -0
- package/dist/lib/schemas-data/3.0.1/enums/signal-catalog-type.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/signal-source.json +15 -0
- package/dist/lib/schemas-data/3.0.1/enums/signal-value-type.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/snapshot-unavailable-reason.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/sort-direction.json +11 -0
- package/dist/lib/schemas-data/3.0.1/enums/sort-metric.json +31 -0
- package/dist/lib/schemas-data/3.0.1/enums/special-category.json +35 -0
- package/dist/lib/schemas-data/3.0.1/enums/specialism.json +55 -0
- package/dist/lib/schemas-data/3.0.1/enums/talent-role.json +29 -0
- package/dist/lib/schemas-data/3.0.1/enums/task-status.json +29 -0
- package/dist/lib/schemas-data/3.0.1/enums/task-type.json +57 -0
- package/dist/lib/schemas-data/3.0.1/enums/transport-mode.json +19 -0
- package/dist/lib/schemas-data/3.0.1/enums/travel-time-unit.json +15 -0
- package/dist/lib/schemas-data/3.0.1/enums/uid-type.json +31 -0
- package/dist/lib/schemas-data/3.0.1/enums/universal-macro.json +149 -0
- package/dist/lib/schemas-data/3.0.1/enums/update-frequency.json +13 -0
- package/dist/lib/schemas-data/3.0.1/enums/url-asset-type.json +12 -0
- package/dist/lib/schemas-data/3.0.1/enums/validation-mode.json +11 -0
- package/dist/lib/schemas-data/3.0.1/enums/vast-tracking-event.json +41 -0
- package/dist/lib/schemas-data/3.0.1/enums/vast-version.json +14 -0
- package/dist/lib/schemas-data/3.0.1/enums/viewability-standard.json +15 -0
- package/dist/lib/schemas-data/3.0.1/enums/wcag-level.json +17 -0
- package/dist/lib/schemas-data/3.0.1/enums/webhook-response-type.json +13 -0
- package/dist/lib/schemas-data/3.0.1/enums/webhook-security-method.json +12 -0
- package/dist/lib/schemas-data/3.0.1/error-details/account-setup-required.json +22 -0
- package/dist/lib/schemas-data/3.0.1/error-details/audience-too-small.json +18 -0
- package/dist/lib/schemas-data/3.0.1/error-details/budget-too-low.json +18 -0
- package/dist/lib/schemas-data/3.0.1/error-details/conflict.json +28 -0
- package/dist/lib/schemas-data/3.0.1/error-details/creative-rejected.json +27 -0
- package/dist/lib/schemas-data/3.0.1/error-details/policy-violation.json +27 -0
- package/dist/lib/schemas-data/3.0.1/error-details/rate-limited.json +31 -0
- package/dist/lib/schemas-data/3.0.1/error-details/vendor-error-codes.json +55 -0
- package/dist/lib/schemas-data/3.0.1/extensions/extension-meta.json +69 -0
- package/dist/lib/schemas-data/3.0.1/extensions/index.json +9 -0
- package/dist/lib/schemas-data/3.0.1/governance/attribute-definition.json +82 -0
- package/dist/lib/schemas-data/3.0.1/governance/audience-constraints.json +27 -0
- package/dist/lib/schemas-data/3.0.1/governance/check-governance-request.json +198 -0
- package/dist/lib/schemas-data/3.0.1/governance/check-governance-response.json +217 -0
- package/dist/lib/schemas-data/3.0.1/governance/get-plan-audit-logs-request.json +79 -0
- package/dist/lib/schemas-data/3.0.1/governance/get-plan-audit-logs-response.json +423 -0
- package/dist/lib/schemas-data/3.0.1/governance/policy-category-definition.json +95 -0
- package/dist/lib/schemas-data/3.0.1/governance/policy-entry.json +165 -0
- package/dist/lib/schemas-data/3.0.1/governance/policy-ref.json +27 -0
- package/dist/lib/schemas-data/3.0.1/governance/report-plan-outcome-request.json +165 -0
- package/dist/lib/schemas-data/3.0.1/governance/report-plan-outcome-response.json +89 -0
- package/dist/lib/schemas-data/3.0.1/governance/sync-plans-request.json +449 -0
- package/dist/lib/schemas-data/3.0.1/governance/sync-plans-response.json +119 -0
- package/dist/lib/schemas-data/3.0.1/index.json +1678 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/build-creative-async-response-input-required.json +32 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/build-creative-async-response-submitted.json +16 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/build-creative-async-response-working.json +36 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/build-creative-request.json +138 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/build-creative-response.json +293 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/create-media-buy-async-response-input-required.json +31 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/create-media-buy-async-response-submitted.json +16 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/create-media-buy-async-response-working.json +36 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/create-media-buy-request.json +221 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/create-media-buy-response.json +194 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/get-media-buy-delivery-request.json +205 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/get-media-buy-delivery-response.json +704 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/get-media-buys-request.json +66 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/get-media-buys-response.json +394 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/get-products-async-response-input-required.json +38 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/get-products-async-response-submitted.json +21 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/get-products-async-response-working.json +34 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/get-products-request.json +229 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/get-products-response.json +195 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/list-creative-formats-request.json +103 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/list-creative-formats-response.json +68 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/log-event-request.json +53 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/log-event-response.json +130 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/package-request.json +133 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/package-update.json +202 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/provide-performance-feedback-request.json +73 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/provide-performance-feedback-response.json +79 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/sync-audiences-request.json +127 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/sync-audiences-response.json +191 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/sync-catalogs-async-response-input-required.json +26 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/sync-catalogs-async-response-submitted.json +16 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/sync-catalogs-async-response-working.json +56 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/sync-catalogs-request.json +162 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/sync-catalogs-response.json +213 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/sync-event-sources-request.json +82 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/sync-event-sources-response.json +167 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/update-media-buy-async-response-input-required.json +24 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/update-media-buy-async-response-submitted.json +16 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/update-media-buy-async-response-working.json +36 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/update-media-buy-request.json +99 -0
- package/dist/lib/schemas-data/3.0.1/media-buy/update-media-buy-response.json +119 -0
- package/dist/lib/schemas-data/3.0.1/pricing-options/cpa-option.json +75 -0
- package/dist/lib/schemas-data/3.0.1/pricing-options/cpc-option.json +71 -0
- package/dist/lib/schemas-data/3.0.1/pricing-options/cpcv-option.json +71 -0
- package/dist/lib/schemas-data/3.0.1/pricing-options/cpm-option.json +71 -0
- package/dist/lib/schemas-data/3.0.1/pricing-options/cpp-option.json +90 -0
- package/dist/lib/schemas-data/3.0.1/pricing-options/cpv-option.json +107 -0
- package/dist/lib/schemas-data/3.0.1/pricing-options/flat-rate-option.json +116 -0
- package/dist/lib/schemas-data/3.0.1/pricing-options/price-breakdown.json +88 -0
- package/dist/lib/schemas-data/3.0.1/pricing-options/price-guidance.json +30 -0
- package/dist/lib/schemas-data/3.0.1/pricing-options/time-option.json +97 -0
- package/dist/lib/schemas-data/3.0.1/pricing-options/vcpm-option.json +71 -0
- package/dist/lib/schemas-data/3.0.1/property/authorization-result.json +50 -0
- package/dist/lib/schemas-data/3.0.1/property/base-property-source.json +98 -0
- package/dist/lib/schemas-data/3.0.1/property/create-property-list-request.json +62 -0
- package/dist/lib/schemas-data/3.0.1/property/create-property-list-response.json +33 -0
- package/dist/lib/schemas-data/3.0.1/property/delete-property-list-request.json +43 -0
- package/dist/lib/schemas-data/3.0.1/property/delete-property-list-response.json +34 -0
- package/dist/lib/schemas-data/3.0.1/property/delivery-record.json +35 -0
- package/dist/lib/schemas-data/3.0.1/property/get-property-list-request.json +57 -0
- package/dist/lib/schemas-data/3.0.1/property/get-property-list-response.json +53 -0
- package/dist/lib/schemas-data/3.0.1/property/list-property-lists-request.json +33 -0
- package/dist/lib/schemas-data/3.0.1/property/list-property-lists-response.json +29 -0
- package/dist/lib/schemas-data/3.0.1/property/property-error.json +34 -0
- package/dist/lib/schemas-data/3.0.1/property/property-feature-definition.json +96 -0
- package/dist/lib/schemas-data/3.0.1/property/property-feature-result.json +50 -0
- package/dist/lib/schemas-data/3.0.1/property/property-feature-value.json +59 -0
- package/dist/lib/schemas-data/3.0.1/property/property-feature.json +26 -0
- package/dist/lib/schemas-data/3.0.1/property/property-list-changed-webhook.json +74 -0
- package/dist/lib/schemas-data/3.0.1/property/property-list-filters.json +51 -0
- package/dist/lib/schemas-data/3.0.1/property/property-list.json +79 -0
- package/dist/lib/schemas-data/3.0.1/property/update-property-list-request.json +71 -0
- package/dist/lib/schemas-data/3.0.1/property/update-property-list-response.json +28 -0
- package/dist/lib/schemas-data/3.0.1/property/validate-property-delivery-request.json +49 -0
- package/dist/lib/schemas-data/3.0.1/property/validate-property-delivery-response.json +180 -0
- package/dist/lib/schemas-data/3.0.1/property/validation-result.json +101 -0
- package/dist/lib/schemas-data/3.0.1/protocol/get-adcp-capabilities-request.json +37 -0
- package/dist/lib/schemas-data/3.0.1/protocol/get-adcp-capabilities-response.json +1108 -0
- package/dist/lib/schemas-data/3.0.1/signals/activate-signal-request.json +66 -0
- package/dist/lib/schemas-data/3.0.1/signals/activate-signal-response.json +81 -0
- package/dist/lib/schemas-data/3.0.1/signals/get-signals-request.json +80 -0
- package/dist/lib/schemas-data/3.0.1/signals/get-signals-response.json +130 -0
- package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-capabilities.json +154 -0
- package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-get-offering-request.json +47 -0
- package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-get-offering-response.json +150 -0
- package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-identity.json +104 -0
- package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-initiate-session-request.json +65 -0
- package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-initiate-session-response.json +64 -0
- package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-send-message-request.json +71 -0
- package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-send-message-response.json +123 -0
- package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-terminate-session-request.json +77 -0
- package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-terminate-session-response.json +86 -0
- package/dist/lib/schemas-data/3.0.1/sponsored-intelligence/si-ui-element.json +341 -0
- package/dist/lib/server/a2a-adapter.d.ts +234 -0
- package/dist/lib/server/a2a-adapter.d.ts.map +1 -0
- package/dist/lib/server/a2a-adapter.js +503 -0
- package/dist/lib/server/a2a-adapter.js.map +1 -0
- package/dist/lib/server/adcp-server.d.ts +265 -0
- package/dist/lib/server/adcp-server.d.ts.map +1 -0
- package/dist/lib/server/adcp-server.js +187 -0
- package/dist/lib/server/adcp-server.js.map +1 -0
- package/dist/lib/server/auth-introspection.d.ts +83 -0
- package/dist/lib/server/auth-introspection.d.ts.map +1 -0
- package/dist/lib/server/auth-introspection.js +297 -0
- package/dist/lib/server/auth-introspection.js.map +1 -0
- package/dist/lib/server/auth-signature.d.ts +322 -0
- package/dist/lib/server/auth-signature.d.ts.map +1 -0
- package/dist/lib/server/auth-signature.js +310 -0
- package/dist/lib/server/auth-signature.js.map +1 -0
- package/dist/lib/server/auth.d.ts +303 -0
- package/dist/lib/server/auth.d.ts.map +1 -0
- package/dist/lib/server/auth.js +387 -0
- package/dist/lib/server/auth.js.map +1 -0
- package/dist/lib/server/create-adcp-server.d.ts +968 -0
- package/dist/lib/server/create-adcp-server.d.ts.map +1 -0
- package/dist/lib/server/create-adcp-server.js +1831 -0
- package/dist/lib/server/create-adcp-server.js.map +1 -0
- package/dist/lib/server/envelope-allowlist.d.ts +109 -0
- package/dist/lib/server/envelope-allowlist.d.ts.map +1 -0
- package/dist/lib/server/envelope-allowlist.js +155 -0
- package/dist/lib/server/envelope-allowlist.js.map +1 -0
- package/dist/lib/server/errors.d.ts +129 -0
- package/dist/lib/server/errors.d.ts.map +1 -0
- package/dist/lib/server/errors.js +85 -0
- package/dist/lib/server/errors.js.map +1 -0
- package/dist/lib/server/express-adapter.d.ts +169 -0
- package/dist/lib/server/express-adapter.d.ts.map +1 -0
- package/dist/lib/server/express-adapter.js +271 -0
- package/dist/lib/server/express-adapter.js.map +1 -0
- package/dist/lib/server/governance.d.ts +122 -0
- package/dist/lib/server/governance.d.ts.map +1 -0
- package/dist/lib/server/governance.js +189 -0
- package/dist/lib/server/governance.js.map +1 -0
- package/dist/lib/server/idempotency/backends/memory.d.ts +22 -0
- package/dist/lib/server/idempotency/backends/memory.d.ts.map +1 -0
- package/dist/lib/server/idempotency/backends/memory.js +78 -0
- package/dist/lib/server/idempotency/backends/memory.js.map +1 -0
- package/dist/lib/server/idempotency/backends/pg.d.ts +76 -0
- package/dist/lib/server/idempotency/backends/pg.d.ts.map +1 -0
- package/dist/lib/server/idempotency/backends/pg.js +163 -0
- package/dist/lib/server/idempotency/backends/pg.js.map +1 -0
- package/dist/lib/server/idempotency/index.d.ts +7 -0
- package/dist/lib/server/idempotency/index.d.ts.map +1 -0
- package/dist/lib/server/idempotency/index.js +15 -0
- package/dist/lib/server/idempotency/index.js.map +1 -0
- package/dist/lib/server/idempotency/store.d.ts +302 -0
- package/dist/lib/server/idempotency/store.d.ts.map +1 -0
- package/dist/lib/server/idempotency/store.js +272 -0
- package/dist/lib/server/idempotency/store.js.map +1 -0
- package/dist/lib/server/index.d.ts +50 -0
- package/dist/lib/server/index.d.ts.map +1 -0
- package/dist/lib/server/index.js +164 -0
- package/dist/lib/server/index.js.map +1 -0
- package/dist/lib/server/media-buy-helpers.d.ts +47 -0
- package/dist/lib/server/media-buy-helpers.d.ts.map +1 -0
- package/dist/lib/server/media-buy-helpers.js +43 -0
- package/dist/lib/server/media-buy-helpers.js.map +1 -0
- package/dist/lib/server/pin-and-bind-fetch.d.ts +115 -0
- package/dist/lib/server/pin-and-bind-fetch.d.ts.map +1 -0
- package/dist/lib/server/pin-and-bind-fetch.js +244 -0
- package/dist/lib/server/pin-and-bind-fetch.js.map +1 -0
- package/dist/lib/server/postgres-state-store.d.ts +76 -0
- package/dist/lib/server/postgres-state-store.d.ts.map +1 -0
- package/dist/lib/server/postgres-state-store.js +218 -0
- package/dist/lib/server/postgres-state-store.js.map +1 -0
- package/dist/lib/server/postgres-task-store.d.ts +121 -0
- package/dist/lib/server/postgres-task-store.d.ts.map +1 -0
- package/dist/lib/server/postgres-task-store.js +298 -0
- package/dist/lib/server/postgres-task-store.js.map +1 -0
- package/dist/lib/server/product-defaults.d.ts +16 -0
- package/dist/lib/server/product-defaults.d.ts.map +1 -0
- package/dist/lib/server/product-defaults.js +25 -0
- package/dist/lib/server/product-defaults.js.map +1 -0
- package/dist/lib/server/responses.d.ts +257 -0
- package/dist/lib/server/responses.d.ts.map +1 -0
- package/dist/lib/server/responses.js +542 -0
- package/dist/lib/server/responses.js.map +1 -0
- package/dist/lib/server/serve.d.ts +308 -0
- package/dist/lib/server/serve.d.ts.map +1 -0
- package/dist/lib/server/serve.js +663 -0
- package/dist/lib/server/serve.js.map +1 -0
- package/dist/lib/server/state-store.d.ts +296 -0
- package/dist/lib/server/state-store.d.ts.map +1 -0
- package/dist/lib/server/state-store.js +459 -0
- package/dist/lib/server/state-store.js.map +1 -0
- package/dist/lib/server/structured-serialize.d.ts +30 -0
- package/dist/lib/server/structured-serialize.d.ts.map +1 -0
- package/dist/lib/server/structured-serialize.js +109 -0
- package/dist/lib/server/structured-serialize.js.map +1 -0
- package/dist/lib/server/targeting-helpers.d.ts +90 -0
- package/dist/lib/server/targeting-helpers.d.ts.map +1 -0
- package/dist/lib/server/targeting-helpers.js +144 -0
- package/dist/lib/server/targeting-helpers.js.map +1 -0
- package/dist/lib/server/tasks.d.ts +91 -0
- package/dist/lib/server/tasks.d.ts.map +1 -0
- package/dist/lib/server/tasks.js +116 -0
- package/dist/lib/server/tasks.js.map +1 -0
- package/dist/lib/server/test-controller-bridge.d.ts +192 -0
- package/dist/lib/server/test-controller-bridge.d.ts.map +1 -0
- package/dist/lib/server/test-controller-bridge.js +207 -0
- package/dist/lib/server/test-controller-bridge.js.map +1 -0
- package/dist/lib/server/test-controller.d.ts +388 -0
- package/dist/lib/server/test-controller.d.ts.map +1 -0
- package/dist/lib/server/test-controller.js +735 -0
- package/dist/lib/server/test-controller.js.map +1 -0
- package/dist/lib/server/webhook-emitter.d.ts +192 -0
- package/dist/lib/server/webhook-emitter.d.ts.map +1 -0
- package/dist/lib/server/webhook-emitter.js +316 -0
- package/dist/lib/server/webhook-emitter.js.map +1 -0
- package/dist/lib/server/wrap-envelope.d.ts +162 -0
- package/dist/lib/server/wrap-envelope.d.ts.map +1 -0
- package/dist/lib/server/wrap-envelope.js +145 -0
- package/dist/lib/server/wrap-envelope.js.map +1 -0
- package/dist/lib/signing/agent-context.d.ts +73 -0
- package/dist/lib/signing/agent-context.d.ts.map +1 -0
- package/dist/lib/signing/agent-context.js +104 -0
- package/dist/lib/signing/agent-context.js.map +1 -0
- package/dist/lib/signing/agent-fetch.d.ts +177 -0
- package/dist/lib/signing/agent-fetch.d.ts.map +1 -0
- package/dist/lib/signing/agent-fetch.js +271 -0
- package/dist/lib/signing/agent-fetch.js.map +1 -0
- package/dist/lib/signing/brand-jwks.d.ts +102 -0
- package/dist/lib/signing/brand-jwks.d.ts.map +1 -0
- package/dist/lib/signing/brand-jwks.js +433 -0
- package/dist/lib/signing/brand-jwks.js.map +1 -0
- package/dist/lib/signing/canonicalize.d.ts +39 -0
- package/dist/lib/signing/canonicalize.d.ts.map +1 -0
- package/dist/lib/signing/canonicalize.js +149 -0
- package/dist/lib/signing/canonicalize.js.map +1 -0
- package/dist/lib/signing/capability-cache.d.ts +70 -0
- package/dist/lib/signing/capability-cache.d.ts.map +1 -0
- package/dist/lib/signing/capability-cache.js +90 -0
- package/dist/lib/signing/capability-cache.js.map +1 -0
- package/dist/lib/signing/capability-priming.d.ts +30 -0
- package/dist/lib/signing/capability-priming.d.ts.map +1 -0
- package/dist/lib/signing/capability-priming.js +145 -0
- package/dist/lib/signing/capability-priming.js.map +1 -0
- package/dist/lib/signing/client.d.ts +25 -0
- package/dist/lib/signing/client.d.ts.map +1 -0
- package/dist/lib/signing/client.js +70 -0
- package/dist/lib/signing/client.js.map +1 -0
- package/dist/lib/signing/content-digest.d.ts +9 -0
- package/dist/lib/signing/content-digest.d.ts.map +1 -0
- package/dist/lib/signing/content-digest.js +48 -0
- package/dist/lib/signing/content-digest.js.map +1 -0
- package/dist/lib/signing/crypto.d.ts +5 -0
- package/dist/lib/signing/crypto.d.ts.map +1 -0
- package/dist/lib/signing/crypto.js +35 -0
- package/dist/lib/signing/crypto.js.map +1 -0
- package/dist/lib/signing/ecdsa-encoding.d.ts +20 -0
- package/dist/lib/signing/ecdsa-encoding.d.ts.map +1 -0
- package/dist/lib/signing/ecdsa-encoding.js +91 -0
- package/dist/lib/signing/ecdsa-encoding.js.map +1 -0
- package/dist/lib/signing/errors.d.ts +49 -0
- package/dist/lib/signing/errors.d.ts.map +1 -0
- package/dist/lib/signing/errors.js +48 -0
- package/dist/lib/signing/errors.js.map +1 -0
- package/dist/lib/signing/fetch-async.d.ts +23 -0
- package/dist/lib/signing/fetch-async.d.ts.map +1 -0
- package/dist/lib/signing/fetch-async.js +96 -0
- package/dist/lib/signing/fetch-async.js.map +1 -0
- package/dist/lib/signing/fetch.d.ts +17 -0
- package/dist/lib/signing/fetch.d.ts.map +1 -0
- package/dist/lib/signing/fetch.js +89 -0
- package/dist/lib/signing/fetch.js.map +1 -0
- package/dist/lib/signing/index.d.ts +16 -0
- package/dist/lib/signing/index.d.ts.map +1 -0
- package/dist/lib/signing/index.js +32 -0
- package/dist/lib/signing/index.js.map +1 -0
- package/dist/lib/signing/jwks-helpers.d.ts +48 -0
- package/dist/lib/signing/jwks-helpers.d.ts.map +1 -0
- package/dist/lib/signing/jwks-helpers.js +87 -0
- package/dist/lib/signing/jwks-helpers.js.map +1 -0
- package/dist/lib/signing/jwks-https.d.ts +61 -0
- package/dist/lib/signing/jwks-https.d.ts.map +1 -0
- package/dist/lib/signing/jwks-https.js +165 -0
- package/dist/lib/signing/jwks-https.js.map +1 -0
- package/dist/lib/signing/jwks.d.ts +10 -0
- package/dist/lib/signing/jwks.d.ts.map +1 -0
- package/dist/lib/signing/jwks.js +15 -0
- package/dist/lib/signing/jwks.js.map +1 -0
- package/dist/lib/signing/middleware.d.ts +77 -0
- package/dist/lib/signing/middleware.d.ts.map +1 -0
- package/dist/lib/signing/middleware.js +77 -0
- package/dist/lib/signing/middleware.js.map +1 -0
- package/dist/lib/signing/parser.d.ts +35 -0
- package/dist/lib/signing/parser.d.ts.map +1 -0
- package/dist/lib/signing/parser.js +244 -0
- package/dist/lib/signing/parser.js.map +1 -0
- package/dist/lib/signing/postgres-replay-store.d.ts +138 -0
- package/dist/lib/signing/postgres-replay-store.d.ts.map +1 -0
- package/dist/lib/signing/postgres-replay-store.js +236 -0
- package/dist/lib/signing/postgres-replay-store.js.map +1 -0
- package/dist/lib/signing/provider.d.ts +81 -0
- package/dist/lib/signing/provider.d.ts.map +1 -0
- package/dist/lib/signing/provider.js +3 -0
- package/dist/lib/signing/provider.js.map +1 -0
- package/dist/lib/signing/replay.d.ts +62 -0
- package/dist/lib/signing/replay.d.ts.map +1 -0
- package/dist/lib/signing/replay.js +106 -0
- package/dist/lib/signing/replay.js.map +1 -0
- package/dist/lib/signing/revocation-https.d.ts +79 -0
- package/dist/lib/signing/revocation-https.d.ts.map +1 -0
- package/dist/lib/signing/revocation-https.js +144 -0
- package/dist/lib/signing/revocation-https.js.map +1 -0
- package/dist/lib/signing/revocation.d.ts +11 -0
- package/dist/lib/signing/revocation.d.ts.map +1 -0
- package/dist/lib/signing/revocation.js +18 -0
- package/dist/lib/signing/revocation.js.map +1 -0
- package/dist/lib/signing/server.d.ts +27 -0
- package/dist/lib/signing/server.d.ts.map +1 -0
- package/dist/lib/signing/server.js +67 -0
- package/dist/lib/signing/server.js.map +1 -0
- package/dist/lib/signing/signer-async.d.ts +24 -0
- package/dist/lib/signing/signer-async.d.ts.map +1 -0
- package/dist/lib/signing/signer-async.js +34 -0
- package/dist/lib/signing/signer-async.js.map +1 -0
- package/dist/lib/signing/signer.d.ts +94 -0
- package/dist/lib/signing/signer.d.ts.map +1 -0
- package/dist/lib/signing/signer.js +131 -0
- package/dist/lib/signing/signer.js.map +1 -0
- package/dist/lib/signing/testing.d.ts +45 -0
- package/dist/lib/signing/testing.d.ts.map +1 -0
- package/dist/lib/signing/testing.js +81 -0
- package/dist/lib/signing/testing.js.map +1 -0
- package/dist/lib/signing/types.d.ts +90 -0
- package/dist/lib/signing/types.d.ts.map +1 -0
- package/dist/lib/signing/types.js +9 -0
- package/dist/lib/signing/types.js.map +1 -0
- package/dist/lib/signing/verifier.d.ts +23 -0
- package/dist/lib/signing/verifier.d.ts.map +1 -0
- package/dist/lib/signing/verifier.js +386 -0
- package/dist/lib/signing/verifier.js.map +1 -0
- package/dist/lib/signing/webhook-verifier.d.ts +119 -0
- package/dist/lib/signing/webhook-verifier.d.ts.map +1 -0
- package/dist/lib/signing/webhook-verifier.js +292 -0
- package/dist/lib/signing/webhook-verifier.js.map +1 -0
- package/dist/lib/storage/MemoryStorage.d.ts +93 -0
- package/dist/lib/storage/MemoryStorage.d.ts.map +1 -0
- package/dist/lib/storage/MemoryStorage.js +219 -0
- package/dist/lib/storage/MemoryStorage.js.map +1 -0
- package/dist/lib/storage/interfaces.d.ts +195 -0
- package/dist/lib/storage/interfaces.d.ts.map +1 -0
- package/dist/lib/storage/interfaces.js +5 -0
- package/dist/lib/storage/interfaces.js.map +1 -0
- package/dist/lib/substitution/encoder/SubstitutionEncoder.d.ts +45 -0
- package/dist/lib/substitution/encoder/SubstitutionEncoder.d.ts.map +1 -0
- package/dist/lib/substitution/encoder/SubstitutionEncoder.js +73 -0
- package/dist/lib/substitution/encoder/SubstitutionEncoder.js.map +1 -0
- package/dist/lib/substitution/encoder/index.d.ts +2 -0
- package/dist/lib/substitution/encoder/index.d.ts.map +1 -0
- package/dist/lib/substitution/encoder/index.js +7 -0
- package/dist/lib/substitution/encoder/index.js.map +1 -0
- package/dist/lib/substitution/index.d.ts +36 -0
- package/dist/lib/substitution/index.d.ts.map +1 -0
- package/dist/lib/substitution/index.js +56 -0
- package/dist/lib/substitution/index.js.map +1 -0
- package/dist/lib/substitution/observer/SubstitutionObserver.d.ts +91 -0
- package/dist/lib/substitution/observer/SubstitutionObserver.d.ts.map +1 -0
- package/dist/lib/substitution/observer/SubstitutionObserver.js +248 -0
- package/dist/lib/substitution/observer/SubstitutionObserver.js.map +1 -0
- package/dist/lib/substitution/observer/alignment.d.ts +24 -0
- package/dist/lib/substitution/observer/alignment.d.ts.map +1 -0
- package/dist/lib/substitution/observer/alignment.js +279 -0
- package/dist/lib/substitution/observer/alignment.js.map +1 -0
- package/dist/lib/substitution/observer/assertions.d.ts +48 -0
- package/dist/lib/substitution/observer/assertions.d.ts.map +1 -0
- package/dist/lib/substitution/observer/assertions.js +145 -0
- package/dist/lib/substitution/observer/assertions.js.map +1 -0
- package/dist/lib/substitution/observer/html-parser.d.ts +29 -0
- package/dist/lib/substitution/observer/html-parser.d.ts.map +1 -0
- package/dist/lib/substitution/observer/html-parser.js +308 -0
- package/dist/lib/substitution/observer/html-parser.js.map +1 -0
- package/dist/lib/substitution/observer/index.d.ts +7 -0
- package/dist/lib/substitution/observer/index.d.ts.map +1 -0
- package/dist/lib/substitution/observer/index.js +21 -0
- package/dist/lib/substitution/observer/index.js.map +1 -0
- package/dist/lib/substitution/observer/ssrf.d.ts +29 -0
- package/dist/lib/substitution/observer/ssrf.d.ts.map +1 -0
- package/dist/lib/substitution/observer/ssrf.js +226 -0
- package/dist/lib/substitution/observer/ssrf.js.map +1 -0
- package/dist/lib/substitution/rfc3986.d.ts +51 -0
- package/dist/lib/substitution/rfc3986.d.ts.map +1 -0
- package/dist/lib/substitution/rfc3986.js +139 -0
- package/dist/lib/substitution/rfc3986.js.map +1 -0
- package/dist/lib/substitution/types.d.ts +147 -0
- package/dist/lib/substitution/types.d.ts.map +1 -0
- package/dist/lib/substitution/types.js +8 -0
- package/dist/lib/substitution/types.js.map +1 -0
- package/dist/lib/substitution/vectors.d.ts +18 -0
- package/dist/lib/substitution/vectors.d.ts.map +1 -0
- package/dist/lib/substitution/vectors.js +79 -0
- package/dist/lib/substitution/vectors.js.map +1 -0
- package/dist/lib/testing/agent-tester.d.ts +34 -0
- package/dist/lib/testing/agent-tester.d.ts.map +1 -0
- package/dist/lib/testing/agent-tester.js +421 -0
- package/dist/lib/testing/agent-tester.js.map +1 -0
- package/dist/lib/testing/client.d.ts +104 -0
- package/dist/lib/testing/client.d.ts.map +1 -0
- package/dist/lib/testing/client.js +487 -0
- package/dist/lib/testing/client.js.map +1 -0
- package/dist/lib/testing/compliance/briefs.d.ts +11 -0
- package/dist/lib/testing/compliance/briefs.d.ts.map +1 -0
- package/dist/lib/testing/compliance/briefs.js +156 -0
- package/dist/lib/testing/compliance/briefs.js.map +1 -0
- package/dist/lib/testing/compliance/comply.d.ts +83 -0
- package/dist/lib/testing/compliance/comply.d.ts.map +1 -0
- package/dist/lib/testing/compliance/comply.js +1275 -0
- package/dist/lib/testing/compliance/comply.js.map +1 -0
- package/dist/lib/testing/compliance/index.d.ts +10 -0
- package/dist/lib/testing/compliance/index.d.ts.map +1 -0
- package/dist/lib/testing/compliance/index.js +18 -0
- package/dist/lib/testing/compliance/index.js.map +1 -0
- package/dist/lib/testing/compliance/storyboard-tracks.d.ts +17 -0
- package/dist/lib/testing/compliance/storyboard-tracks.d.ts.map +1 -0
- package/dist/lib/testing/compliance/storyboard-tracks.js +147 -0
- package/dist/lib/testing/compliance/storyboard-tracks.js.map +1 -0
- package/dist/lib/testing/compliance/types.d.ts +145 -0
- package/dist/lib/testing/compliance/types.d.ts.map +1 -0
- package/dist/lib/testing/compliance/types.js +6 -0
- package/dist/lib/testing/compliance/types.js.map +1 -0
- package/dist/lib/testing/comply-controller.d.ts +193 -0
- package/dist/lib/testing/comply-controller.d.ts.map +1 -0
- package/dist/lib/testing/comply-controller.js +199 -0
- package/dist/lib/testing/comply-controller.js.map +1 -0
- package/dist/lib/testing/controller-assertions.d.ts +67 -0
- package/dist/lib/testing/controller-assertions.d.ts.map +1 -0
- package/dist/lib/testing/controller-assertions.js +60 -0
- package/dist/lib/testing/controller-assertions.js.map +1 -0
- package/dist/lib/testing/formatter.d.ts +17 -0
- package/dist/lib/testing/formatter.d.ts.map +1 -0
- package/dist/lib/testing/formatter.js +92 -0
- package/dist/lib/testing/formatter.js.map +1 -0
- package/dist/lib/testing/index.d.ts +19 -0
- package/dist/lib/testing/index.d.ts.map +1 -0
- package/dist/lib/testing/index.js +185 -0
- package/dist/lib/testing/index.js.map +1 -0
- package/dist/lib/testing/local-agent-runner.d.ts +189 -0
- package/dist/lib/testing/local-agent-runner.d.ts.map +1 -0
- package/dist/lib/testing/local-agent-runner.js +290 -0
- package/dist/lib/testing/local-agent-runner.js.map +1 -0
- package/dist/lib/testing/orchestrator.d.ts +70 -0
- package/dist/lib/testing/orchestrator.d.ts.map +1 -0
- package/dist/lib/testing/orchestrator.js +278 -0
- package/dist/lib/testing/orchestrator.js.map +1 -0
- package/dist/lib/testing/scenarios/brand-rights.d.ts +41 -0
- package/dist/lib/testing/scenarios/brand-rights.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/brand-rights.js +278 -0
- package/dist/lib/testing/scenarios/brand-rights.js.map +1 -0
- package/dist/lib/testing/scenarios/capabilities.d.ts +27 -0
- package/dist/lib/testing/scenarios/capabilities.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/capabilities.js +332 -0
- package/dist/lib/testing/scenarios/capabilities.js.map +1 -0
- package/dist/lib/testing/scenarios/creative.d.ts +38 -0
- package/dist/lib/testing/scenarios/creative.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/creative.js +429 -0
- package/dist/lib/testing/scenarios/creative.js.map +1 -0
- package/dist/lib/testing/scenarios/deterministic.d.ts +37 -0
- package/dist/lib/testing/scenarios/deterministic.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/deterministic.js +705 -0
- package/dist/lib/testing/scenarios/deterministic.js.map +1 -0
- package/dist/lib/testing/scenarios/discovery.d.ts +15 -0
- package/dist/lib/testing/scenarios/discovery.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/discovery.js +68 -0
- package/dist/lib/testing/scenarios/discovery.js.map +1 -0
- package/dist/lib/testing/scenarios/edge-cases.d.ts +64 -0
- package/dist/lib/testing/scenarios/edge-cases.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/edge-cases.js +569 -0
- package/dist/lib/testing/scenarios/edge-cases.js.map +1 -0
- package/dist/lib/testing/scenarios/error-compliance.d.ts +30 -0
- package/dist/lib/testing/scenarios/error-compliance.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/error-compliance.js +372 -0
- package/dist/lib/testing/scenarios/error-compliance.js.map +1 -0
- package/dist/lib/testing/scenarios/governance.d.ts +114 -0
- package/dist/lib/testing/scenarios/governance.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/governance.js +1619 -0
- package/dist/lib/testing/scenarios/governance.js.map +1 -0
- package/dist/lib/testing/scenarios/health.d.ts +12 -0
- package/dist/lib/testing/scenarios/health.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/health.js +21 -0
- package/dist/lib/testing/scenarios/health.js.map +1 -0
- package/dist/lib/testing/scenarios/index.d.ts +20 -0
- package/dist/lib/testing/scenarios/index.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/index.js +96 -0
- package/dist/lib/testing/scenarios/index.js.map +1 -0
- package/dist/lib/testing/scenarios/media-buy.d.ts +128 -0
- package/dist/lib/testing/scenarios/media-buy.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/media-buy.js +1655 -0
- package/dist/lib/testing/scenarios/media-buy.js.map +1 -0
- package/dist/lib/testing/scenarios/schema-compliance.d.ts +17 -0
- package/dist/lib/testing/scenarios/schema-compliance.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/schema-compliance.js +194 -0
- package/dist/lib/testing/scenarios/schema-compliance.js.map +1 -0
- package/dist/lib/testing/scenarios/signals.d.ts +22 -0
- package/dist/lib/testing/scenarios/signals.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/signals.js +221 -0
- package/dist/lib/testing/scenarios/signals.js.map +1 -0
- package/dist/lib/testing/scenarios/sponsored-intelligence.d.ts +45 -0
- package/dist/lib/testing/scenarios/sponsored-intelligence.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/sponsored-intelligence.js +554 -0
- package/dist/lib/testing/scenarios/sponsored-intelligence.js.map +1 -0
- package/dist/lib/testing/scenarios/trusted-match.d.ts +22 -0
- package/dist/lib/testing/scenarios/trusted-match.d.ts.map +1 -0
- package/dist/lib/testing/scenarios/trusted-match.js +128 -0
- package/dist/lib/testing/scenarios/trusted-match.js.map +1 -0
- package/dist/lib/testing/seed-merge.d.ts +150 -0
- package/dist/lib/testing/seed-merge.d.ts.map +1 -0
- package/dist/lib/testing/seed-merge.js +315 -0
- package/dist/lib/testing/seed-merge.js.map +1 -0
- package/dist/lib/testing/storyboard/assertions.d.ts +148 -0
- package/dist/lib/testing/storyboard/assertions.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/assertions.js +270 -0
- package/dist/lib/testing/storyboard/assertions.js.map +1 -0
- package/dist/lib/testing/storyboard/compliance.d.ts +166 -0
- package/dist/lib/testing/storyboard/compliance.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/compliance.js +434 -0
- package/dist/lib/testing/storyboard/compliance.js.map +1 -0
- package/dist/lib/testing/storyboard/context.d.ts +124 -0
- package/dist/lib/testing/storyboard/context.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/context.js +560 -0
- package/dist/lib/testing/storyboard/context.js.map +1 -0
- package/dist/lib/testing/storyboard/default-invariants.d.ts +36 -0
- package/dist/lib/testing/storyboard/default-invariants.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/default-invariants.js +882 -0
- package/dist/lib/testing/storyboard/default-invariants.js.map +1 -0
- package/dist/lib/testing/storyboard/index.d.ts +34 -0
- package/dist/lib/testing/storyboard/index.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/index.js +110 -0
- package/dist/lib/testing/storyboard/index.js.map +1 -0
- package/dist/lib/testing/storyboard/junit.d.ts +2 -0
- package/dist/lib/testing/storyboard/junit.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/junit.js +104 -0
- package/dist/lib/testing/storyboard/junit.js.map +1 -0
- package/dist/lib/testing/storyboard/loader.d.ts +28 -0
- package/dist/lib/testing/storyboard/loader.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/loader.js +194 -0
- package/dist/lib/testing/storyboard/loader.js.map +1 -0
- package/dist/lib/testing/storyboard/path.d.ts +76 -0
- package/dist/lib/testing/storyboard/path.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/path.js +258 -0
- package/dist/lib/testing/storyboard/path.js.map +1 -0
- package/dist/lib/testing/storyboard/probes.d.ts +148 -0
- package/dist/lib/testing/storyboard/probes.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/probes.js +402 -0
- package/dist/lib/testing/storyboard/probes.js.map +1 -0
- package/dist/lib/testing/storyboard/rejection-hints.d.ts +41 -0
- package/dist/lib/testing/storyboard/rejection-hints.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/rejection-hints.js +344 -0
- package/dist/lib/testing/storyboard/rejection-hints.js.map +1 -0
- package/dist/lib/testing/storyboard/request-builder.d.ts +35 -0
- package/dist/lib/testing/storyboard/request-builder.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/request-builder.js +845 -0
- package/dist/lib/testing/storyboard/request-builder.js.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/builder.d.ts +60 -0
- package/dist/lib/testing/storyboard/request-signing/builder.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/builder.js +462 -0
- package/dist/lib/testing/storyboard/request-signing/builder.js.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/grader.d.ts +166 -0
- package/dist/lib/testing/storyboard/request-signing/grader.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/grader.js +517 -0
- package/dist/lib/testing/storyboard/request-signing/grader.js.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/index.d.ts +38 -0
- package/dist/lib/testing/storyboard/request-signing/index.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/index.js +62 -0
- package/dist/lib/testing/storyboard/request-signing/index.js.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.ts +10 -0
- package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/probe-dispatch.js +81 -0
- package/dist/lib/testing/storyboard/request-signing/probe-dispatch.js.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/probe.d.ts +41 -0
- package/dist/lib/testing/storyboard/request-signing/probe.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/probe.js +220 -0
- package/dist/lib/testing/storyboard/request-signing/probe.js.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/synthesize.d.ts +28 -0
- package/dist/lib/testing/storyboard/request-signing/synthesize.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/synthesize.js +79 -0
- package/dist/lib/testing/storyboard/request-signing/synthesize.js.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/test-kit.d.ts +42 -0
- package/dist/lib/testing/storyboard/request-signing/test-kit.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/test-kit.js +101 -0
- package/dist/lib/testing/storyboard/request-signing/test-kit.js.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/types.d.ts +72 -0
- package/dist/lib/testing/storyboard/request-signing/types.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/types.js +6 -0
- package/dist/lib/testing/storyboard/request-signing/types.js.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/vector-loader.d.ts +16 -0
- package/dist/lib/testing/storyboard/request-signing/vector-loader.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/request-signing/vector-loader.js +242 -0
- package/dist/lib/testing/storyboard/request-signing/vector-loader.js.map +1 -0
- package/dist/lib/testing/storyboard/runner.d.ts +141 -0
- package/dist/lib/testing/storyboard/runner.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/runner.js +2349 -0
- package/dist/lib/testing/storyboard/runner.js.map +1 -0
- package/dist/lib/testing/storyboard/sandbox-entities.d.ts +56 -0
- package/dist/lib/testing/storyboard/sandbox-entities.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/sandbox-entities.js +222 -0
- package/dist/lib/testing/storyboard/sandbox-entities.js.map +1 -0
- package/dist/lib/testing/storyboard/seeding.d.ts +72 -0
- package/dist/lib/testing/storyboard/seeding.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/seeding.js +282 -0
- package/dist/lib/testing/storyboard/seeding.js.map +1 -0
- package/dist/lib/testing/storyboard/shape-drift-hints.d.ts +54 -0
- package/dist/lib/testing/storyboard/shape-drift-hints.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/shape-drift-hints.js +200 -0
- package/dist/lib/testing/storyboard/shape-drift-hints.js.map +1 -0
- package/dist/lib/testing/storyboard/signer-grader/grader.d.ts +56 -0
- package/dist/lib/testing/storyboard/signer-grader/grader.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/signer-grader/grader.js +270 -0
- package/dist/lib/testing/storyboard/signer-grader/grader.js.map +1 -0
- package/dist/lib/testing/storyboard/signer-grader/index.d.ts +3 -0
- package/dist/lib/testing/storyboard/signer-grader/index.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/signer-grader/index.js +6 -0
- package/dist/lib/testing/storyboard/signer-grader/index.js.map +1 -0
- package/dist/lib/testing/storyboard/signer-grader/types.d.ts +62 -0
- package/dist/lib/testing/storyboard/signer-grader/types.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/signer-grader/types.js +3 -0
- package/dist/lib/testing/storyboard/signer-grader/types.js.map +1 -0
- package/dist/lib/testing/storyboard/strict-validation-hints.d.ts +28 -0
- package/dist/lib/testing/storyboard/strict-validation-hints.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/strict-validation-hints.js +128 -0
- package/dist/lib/testing/storyboard/strict-validation-hints.js.map +1 -0
- package/dist/lib/testing/storyboard/task-map.d.ts +25 -0
- package/dist/lib/testing/storyboard/task-map.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/task-map.js +130 -0
- package/dist/lib/testing/storyboard/task-map.js.map +1 -0
- package/dist/lib/testing/storyboard/test-kit.d.ts +52 -0
- package/dist/lib/testing/storyboard/test-kit.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/test-kit.js +93 -0
- package/dist/lib/testing/storyboard/test-kit.js.map +1 -0
- package/dist/lib/testing/storyboard/types.d.ts +1404 -0
- package/dist/lib/testing/storyboard/types.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/types.js +35 -0
- package/dist/lib/testing/storyboard/types.js.map +1 -0
- package/dist/lib/testing/storyboard/validations.d.ts +103 -0
- package/dist/lib/testing/storyboard/validations.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/validations.js +1729 -0
- package/dist/lib/testing/storyboard/validations.js.map +1 -0
- package/dist/lib/testing/storyboard/webhook-assertions.d.ts +62 -0
- package/dist/lib/testing/storyboard/webhook-assertions.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/webhook-assertions.js +538 -0
- package/dist/lib/testing/storyboard/webhook-assertions.js.map +1 -0
- package/dist/lib/testing/storyboard/webhook-receiver.d.ts +104 -0
- package/dist/lib/testing/storyboard/webhook-receiver.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/webhook-receiver.js +402 -0
- package/dist/lib/testing/storyboard/webhook-receiver.js.map +1 -0
- package/dist/lib/testing/stubs/governance-agent-stub.d.ts +72 -0
- package/dist/lib/testing/stubs/governance-agent-stub.d.ts.map +1 -0
- package/dist/lib/testing/stubs/governance-agent-stub.js +297 -0
- package/dist/lib/testing/stubs/governance-agent-stub.js.map +1 -0
- package/dist/lib/testing/stubs/index.d.ts +3 -0
- package/dist/lib/testing/stubs/index.d.ts.map +1 -0
- package/dist/lib/testing/stubs/index.js +6 -0
- package/dist/lib/testing/stubs/index.js.map +1 -0
- package/dist/lib/testing/test-controller.d.ts +46 -0
- package/dist/lib/testing/test-controller.d.ts.map +1 -0
- package/dist/lib/testing/test-controller.js +143 -0
- package/dist/lib/testing/test-controller.js.map +1 -0
- package/dist/lib/testing/test-helpers.d.ts +213 -0
- package/dist/lib/testing/test-helpers.d.ts.map +1 -0
- package/dist/lib/testing/test-helpers.js +250 -0
- package/dist/lib/testing/test-helpers.js.map +1 -0
- package/dist/lib/testing/types.d.ts +222 -0
- package/dist/lib/testing/types.d.ts.map +1 -0
- package/dist/lib/testing/types.js +6 -0
- package/dist/lib/testing/types.js.map +1 -0
- package/dist/lib/types/adcp.d.ts +625 -0
- package/dist/lib/types/adcp.d.ts.map +1 -0
- package/dist/lib/types/adcp.js +20 -0
- package/dist/lib/types/adcp.js.map +1 -0
- package/dist/lib/types/asset-instances.d.ts +32 -0
- package/dist/lib/types/asset-instances.d.ts.map +1 -0
- package/dist/lib/types/asset-instances.js +24 -0
- package/dist/lib/types/asset-instances.js.map +1 -0
- package/dist/lib/types/compat.d.ts +105 -0
- package/dist/lib/types/compat.d.ts.map +1 -0
- package/dist/lib/types/compat.js +52 -0
- package/dist/lib/types/compat.js.map +1 -0
- package/dist/lib/types/core.generated.d.ts +15973 -0
- package/dist/lib/types/core.generated.d.ts.map +1 -0
- package/dist/lib/types/core.generated.js +5 -0
- package/dist/lib/types/core.generated.js.map +1 -0
- package/dist/lib/types/enums.generated.d.ts +139 -0
- package/dist/lib/types/enums.generated.d.ts.map +1 -0
- package/dist/lib/types/enums.generated.js +158 -0
- package/dist/lib/types/enums.generated.js.map +1 -0
- package/dist/lib/types/error-codes.d.ts +32 -0
- package/dist/lib/types/error-codes.d.ts.map +1 -0
- package/dist/lib/types/error-codes.js +146 -0
- package/dist/lib/types/error-codes.js.map +1 -0
- package/dist/lib/types/format-asset-slots.d.ts +117 -0
- package/dist/lib/types/format-asset-slots.d.ts.map +1 -0
- package/dist/lib/types/format-asset-slots.js +20 -0
- package/dist/lib/types/format-asset-slots.js.map +1 -0
- package/dist/lib/types/index.d.ts +20 -0
- package/dist/lib/types/index.d.ts.map +1 -0
- package/dist/lib/types/index.js +48 -0
- package/dist/lib/types/index.js.map +1 -0
- package/dist/lib/types/inline-enums.aliases.d.ts +53 -0
- package/dist/lib/types/inline-enums.aliases.d.ts.map +1 -0
- package/dist/lib/types/inline-enums.aliases.js +73 -0
- package/dist/lib/types/inline-enums.aliases.js.map +1 -0
- package/dist/lib/types/inline-enums.generated.d.ts +157 -0
- package/dist/lib/types/inline-enums.generated.d.ts.map +1 -0
- package/dist/lib/types/inline-enums.generated.js +239 -0
- package/dist/lib/types/inline-enums.generated.js.map +1 -0
- package/dist/lib/types/schemas.generated.d.ts +46531 -0
- package/dist/lib/types/schemas.generated.d.ts.map +1 -0
- package/dist/lib/types/schemas.generated.js +5867 -0
- package/dist/lib/types/schemas.generated.js.map +1 -0
- package/dist/lib/types/sync-rows.d.ts +37 -0
- package/dist/lib/types/sync-rows.d.ts.map +1 -0
- package/dist/lib/types/sync-rows.js +21 -0
- package/dist/lib/types/sync-rows.js.map +1 -0
- package/dist/lib/types/tools.generated.d.ts +13423 -0
- package/dist/lib/types/tools.generated.d.ts.map +1 -0
- package/dist/lib/types/tools.generated.js +5 -0
- package/dist/lib/types/tools.generated.js.map +1 -0
- package/dist/lib/types/wellknown-schemas.generated.d.ts +1363 -0
- package/dist/lib/types/wellknown-schemas.generated.d.ts.map +1 -0
- package/dist/lib/types/wellknown-schemas.generated.js +14 -0
- package/dist/lib/types/wellknown-schemas.generated.js.map +1 -0
- package/dist/lib/utils/a2a-discovery.d.ts +42 -0
- package/dist/lib/utils/a2a-discovery.d.ts.map +1 -0
- package/dist/lib/utils/a2a-discovery.js +68 -0
- package/dist/lib/utils/a2a-discovery.js.map +1 -0
- package/dist/lib/utils/adcp-version-config.d.ts +11 -0
- package/dist/lib/utils/adcp-version-config.d.ts.map +1 -0
- package/dist/lib/utils/adcp-version-config.js +44 -0
- package/dist/lib/utils/adcp-version-config.js.map +1 -0
- package/dist/lib/utils/asset-builders.d.ts +44 -0
- package/dist/lib/utils/asset-builders.d.ts.map +1 -0
- package/dist/lib/utils/asset-builders.js +84 -0
- package/dist/lib/utils/asset-builders.js.map +1 -0
- package/dist/lib/utils/capabilities.d.ts +259 -0
- package/dist/lib/utils/capabilities.d.ts.map +1 -0
- package/dist/lib/utils/capabilities.js +463 -0
- package/dist/lib/utils/capabilities.js.map +1 -0
- package/dist/lib/utils/creative-adapter.d.ts +91 -0
- package/dist/lib/utils/creative-adapter.d.ts.map +1 -0
- package/dist/lib/utils/creative-adapter.js +156 -0
- package/dist/lib/utils/creative-adapter.js.map +1 -0
- package/dist/lib/utils/deprecation.d.ts +11 -0
- package/dist/lib/utils/deprecation.d.ts.map +1 -0
- package/dist/lib/utils/deprecation.js +23 -0
- package/dist/lib/utils/deprecation.js.map +1 -0
- package/dist/lib/utils/error-extraction.d.ts +43 -0
- package/dist/lib/utils/error-extraction.d.ts.map +1 -0
- package/dist/lib/utils/error-extraction.js +225 -0
- package/dist/lib/utils/error-extraction.js.map +1 -0
- package/dist/lib/utils/extract-result.d.ts +45 -0
- package/dist/lib/utils/extract-result.d.ts.map +1 -0
- package/dist/lib/utils/extract-result.js +27 -0
- package/dist/lib/utils/extract-result.js.map +1 -0
- package/dist/lib/utils/format-asset-slot-builders.d.ts +76 -0
- package/dist/lib/utils/format-asset-slot-builders.d.ts.map +1 -0
- package/dist/lib/utils/format-asset-slot-builders.js +174 -0
- package/dist/lib/utils/format-asset-slot-builders.js.map +1 -0
- package/dist/lib/utils/format-assets.d.ts +100 -0
- package/dist/lib/utils/format-assets.d.ts.map +1 -0
- package/dist/lib/utils/format-assets.js +147 -0
- package/dist/lib/utils/format-assets.js.map +1 -0
- package/dist/lib/utils/format-render-builders.d.ts +76 -0
- package/dist/lib/utils/format-render-builders.d.ts.map +1 -0
- package/dist/lib/utils/format-render-builders.js +76 -0
- package/dist/lib/utils/format-render-builders.js.map +1 -0
- package/dist/lib/utils/format-renders.d.ts +96 -0
- package/dist/lib/utils/format-renders.d.ts.map +1 -0
- package/dist/lib/utils/format-renders.js +141 -0
- package/dist/lib/utils/format-renders.js.map +1 -0
- package/dist/lib/utils/idempotency.d.ts +96 -0
- package/dist/lib/utils/idempotency.d.ts.map +1 -0
- package/dist/lib/utils/idempotency.js +156 -0
- package/dist/lib/utils/idempotency.js.map +1 -0
- package/dist/lib/utils/index.d.ts +39 -0
- package/dist/lib/utils/index.d.ts.map +1 -0
- package/dist/lib/utils/index.js +196 -0
- package/dist/lib/utils/index.js.map +1 -0
- package/dist/lib/utils/jcs.d.ts +30 -0
- package/dist/lib/utils/jcs.d.ts.map +1 -0
- package/dist/lib/utils/jcs.js +167 -0
- package/dist/lib/utils/jcs.js.map +1 -0
- package/dist/lib/utils/logger.d.ts +55 -0
- package/dist/lib/utils/logger.d.ts.map +1 -0
- package/dist/lib/utils/logger.js +100 -0
- package/dist/lib/utils/logger.js.map +1 -0
- package/dist/lib/utils/pagination.d.ts +31 -0
- package/dist/lib/utils/pagination.d.ts.map +1 -0
- package/dist/lib/utils/pagination.js +51 -0
- package/dist/lib/utils/pagination.js.map +1 -0
- package/dist/lib/utils/preview-normalizer.d.ts +109 -0
- package/dist/lib/utils/preview-normalizer.d.ts.map +1 -0
- package/dist/lib/utils/preview-normalizer.js +122 -0
- package/dist/lib/utils/preview-normalizer.js.map +1 -0
- package/dist/lib/utils/preview-utils.d.ts +87 -0
- package/dist/lib/utils/preview-utils.d.ts.map +1 -0
- package/dist/lib/utils/preview-utils.js +340 -0
- package/dist/lib/utils/preview-utils.js.map +1 -0
- package/dist/lib/utils/pricing-adapter.d.ts +144 -0
- package/dist/lib/utils/pricing-adapter.d.ts.map +1 -0
- package/dist/lib/utils/pricing-adapter.js +322 -0
- package/dist/lib/utils/pricing-adapter.js.map +1 -0
- package/dist/lib/utils/protocol-detection.d.ts +26 -0
- package/dist/lib/utils/protocol-detection.d.ts.map +1 -0
- package/dist/lib/utils/protocol-detection.js +62 -0
- package/dist/lib/utils/protocol-detection.js.map +1 -0
- package/dist/lib/utils/render-builders.d.ts +41 -0
- package/dist/lib/utils/render-builders.d.ts.map +1 -0
- package/dist/lib/utils/render-builders.js +52 -0
- package/dist/lib/utils/render-builders.js.map +1 -0
- package/dist/lib/utils/request-normalizer.d.ts +26 -0
- package/dist/lib/utils/request-normalizer.d.ts.map +1 -0
- package/dist/lib/utils/request-normalizer.js +175 -0
- package/dist/lib/utils/request-normalizer.js.map +1 -0
- package/dist/lib/utils/response-schemas.d.ts +9 -0
- package/dist/lib/utils/response-schemas.d.ts.map +1 -0
- package/dist/lib/utils/response-schemas.js +129 -0
- package/dist/lib/utils/response-schemas.js.map +1 -0
- package/dist/lib/utils/response-unwrapper.d.ts +54 -0
- package/dist/lib/utils/response-unwrapper.d.ts.map +1 -0
- package/dist/lib/utils/response-unwrapper.js +406 -0
- package/dist/lib/utils/response-unwrapper.js.map +1 -0
- package/dist/lib/utils/retry.d.ts +15 -0
- package/dist/lib/utils/retry.d.ts.map +1 -0
- package/dist/lib/utils/retry.js +22 -0
- package/dist/lib/utils/retry.js.map +1 -0
- package/dist/lib/utils/sync-creatives-adapter.d.ts +18 -0
- package/dist/lib/utils/sync-creatives-adapter.d.ts.map +1 -0
- package/dist/lib/utils/sync-creatives-adapter.js +46 -0
- package/dist/lib/utils/sync-creatives-adapter.js.map +1 -0
- package/dist/lib/utils/tool-request-schemas.d.ts +15 -0
- package/dist/lib/utils/tool-request-schemas.d.ts.map +1 -0
- package/dist/lib/utils/tool-request-schemas.js +129 -0
- package/dist/lib/utils/tool-request-schemas.js.map +1 -0
- package/dist/lib/utils/typeGuards.d.ts +147 -0
- package/dist/lib/utils/typeGuards.d.ts.map +1 -0
- package/dist/lib/utils/typeGuards.js +240 -0
- package/dist/lib/utils/typeGuards.js.map +1 -0
- package/dist/lib/utils/union-errors.d.ts +20 -0
- package/dist/lib/utils/union-errors.d.ts.map +1 -0
- package/dist/lib/utils/union-errors.js +38 -0
- package/dist/lib/utils/union-errors.js.map +1 -0
- package/dist/lib/utils/validate-user-agent.d.ts +8 -0
- package/dist/lib/utils/validate-user-agent.d.ts.map +1 -0
- package/dist/lib/utils/validate-user-agent.js +15 -0
- package/dist/lib/utils/validate-user-agent.js.map +1 -0
- package/dist/lib/validation/client-hooks.d.ts +49 -0
- package/dist/lib/validation/client-hooks.d.ts.map +1 -0
- package/dist/lib/validation/client-hooks.js +82 -0
- package/dist/lib/validation/client-hooks.js.map +1 -0
- package/dist/lib/validation/index.d.ts +37 -0
- package/dist/lib/validation/index.d.ts.map +1 -0
- package/dist/lib/validation/index.js +202 -0
- package/dist/lib/validation/index.js.map +1 -0
- package/dist/lib/validation/schema-errors.d.ts +67 -0
- package/dist/lib/validation/schema-errors.d.ts.map +1 -0
- package/dist/lib/validation/schema-errors.js +75 -0
- package/dist/lib/validation/schema-errors.js.map +1 -0
- package/dist/lib/validation/schema-loader.d.ts +24 -0
- package/dist/lib/validation/schema-loader.d.ts.map +1 -0
- package/dist/lib/validation/schema-loader.js +315 -0
- package/dist/lib/validation/schema-loader.js.map +1 -0
- package/dist/lib/validation/schema-validator.d.ts +83 -0
- package/dist/lib/validation/schema-validator.d.ts.map +1 -0
- package/dist/lib/validation/schema-validator.js +142 -0
- package/dist/lib/validation/schema-validator.js.map +1 -0
- package/dist/lib/validation/sync-creatives.d.ts +327 -0
- package/dist/lib/validation/sync-creatives.d.ts.map +1 -0
- package/dist/lib/validation/sync-creatives.js +72 -0
- package/dist/lib/validation/sync-creatives.js.map +1 -0
- package/dist/lib/version.d.ts +63 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +85 -0
- package/dist/lib/version.js.map +1 -0
- package/docs/README.md +42 -0
- package/docs/guides/BUILD-AN-AGENT.md +632 -0
- package/docs/llms.txt +1197 -0
- package/examples/README.md +117 -0
- package/examples/adcp.config.json +30 -0
- package/examples/basic-a2a.ts +76 -0
- package/examples/basic-mcp.ts +50 -0
- package/examples/batch-preview-test.ts +266 -0
- package/examples/comply-controller-seller.ts +146 -0
- package/examples/conversation-client.ts +291 -0
- package/examples/debug-preview-response.ts +73 -0
- package/examples/debug-preview-with-logging.ts +50 -0
- package/examples/easy-config-demo.ts +242 -0
- package/examples/env-config.ts +51 -0
- package/examples/error-compliant-server.ts +241 -0
- package/examples/gcp-kms-signing-provider.ts +281 -0
- package/examples/generative-creative-demo.ts +196 -0
- package/examples/inspect-card-formats.ts +161 -0
- package/examples/logger-usage.ts +165 -0
- package/examples/oauth-cli-example.ts +154 -0
- package/examples/pr78-async-patterns-demo.ts +247 -0
- package/examples/seller-test-controller.ts +320 -0
- package/examples/signals-agent.ts +201 -0
- package/examples/simple-getting-started.ts +225 -0
- package/examples/simple-protocol-demo.ts +75 -0
- package/examples/test-helpers-demo.ts +239 -0
- package/examples/zod-validation-example.ts +126 -0
- package/package.json +313 -0
- package/skills/adcp/SKILL.md +326 -0
- package/skills/adcp-brand/SKILL.md +202 -0
- package/skills/adcp-brand.previous/SKILL.md +202 -0
- package/skills/adcp-creative/SKILL.md +301 -0
- package/skills/adcp-creative.previous/SKILL.md +301 -0
- package/skills/adcp-governance/SKILL.md +566 -0
- package/skills/adcp-governance.previous/SKILL.md +566 -0
- package/skills/adcp-media-buy/SKILL.md +446 -0
- package/skills/adcp-media-buy.previous/SKILL.md +446 -0
- package/skills/adcp-si/SKILL.md +206 -0
- package/skills/adcp-si.previous/SKILL.md +206 -0
- package/skills/adcp-signals/SKILL.md +204 -0
- package/skills/adcp-signals.previous/SKILL.md +204 -0
- package/skills/build-brand-rights-agent/SKILL.md +528 -0
- package/skills/build-creative-agent/SKILL.md +824 -0
- package/skills/build-generative-seller-agent/SKILL.md +579 -0
- package/skills/build-governance-agent/SKILL.md +966 -0
- package/skills/build-retail-media-agent/SKILL.md +488 -0
- package/skills/build-seller-agent/SKILL.md +1407 -0
- package/skills/build-seller-agent/deployment.md +407 -0
- package/skills/build-seller-agent/specialisms/audience-sync.md +63 -0
- package/skills/build-seller-agent/specialisms/sales-broadcast-tv.md +71 -0
- package/skills/build-seller-agent/specialisms/sales-guaranteed.md +67 -0
- package/skills/build-seller-agent/specialisms/sales-non-guaranteed.md +39 -0
- package/skills/build-seller-agent/specialisms/sales-proposal-mode.md +51 -0
- package/skills/build-seller-agent/specialisms/sales-social.md +30 -0
- package/skills/build-seller-agent/specialisms/signed-requests.md +89 -0
- package/skills/build-si-agent/SKILL.md +347 -0
- package/skills/build-signals-agent/SKILL.md +527 -0
- package/skills/call-adcp-agent/SKILL.md +255 -0
- package/skills/call-adcp-agent.previous/SKILL.md +255 -0
|
@@ -0,0 +1,2134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Main ADCP Client - Type-safe conversation-aware client for AdCP agents
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.SingleAgentClient = exports.UnsupportedFeatureError = void 0;
|
|
38
|
+
exports.createSingleAgentClient = createSingleAgentClient;
|
|
39
|
+
const zod_1 = require("zod");
|
|
40
|
+
const schemas = __importStar(require("../types/schemas.generated"));
|
|
41
|
+
const adcp_1 = require("../types/adcp");
|
|
42
|
+
const adcp_version_config_1 = require("../utils/adcp-version-config");
|
|
43
|
+
const idempotency_1 = require("../utils/idempotency");
|
|
44
|
+
const TaskExecutor_1 = require("./TaskExecutor");
|
|
45
|
+
const match_1 = require("./match");
|
|
46
|
+
const auth_1 = require("../auth");
|
|
47
|
+
const errors_1 = require("../errors");
|
|
48
|
+
const net_1 = require("../net");
|
|
49
|
+
const authorization_required_1 = require("../auth/oauth/authorization-required");
|
|
50
|
+
const discovery_1 = require("../auth/oauth/discovery");
|
|
51
|
+
const AsyncHandler_1 = require("./AsyncHandler");
|
|
52
|
+
const response_unwrapper_1 = require("../utils/response-unwrapper");
|
|
53
|
+
const a2a_discovery_1 = require("../utils/a2a-discovery");
|
|
54
|
+
const crypto = __importStar(require("crypto"));
|
|
55
|
+
const capabilities_1 = require("../utils/capabilities");
|
|
56
|
+
const creative_adapter_1 = require("../utils/creative-adapter");
|
|
57
|
+
const sync_creatives_adapter_1 = require("../utils/sync-creatives-adapter");
|
|
58
|
+
const format_renders_1 = require("../utils/format-renders");
|
|
59
|
+
const preview_normalizer_1 = require("../utils/preview-normalizer");
|
|
60
|
+
const pricing_adapter_1 = require("../utils/pricing-adapter");
|
|
61
|
+
const request_normalizer_1 = require("../utils/request-normalizer");
|
|
62
|
+
const validate_user_agent_1 = require("../utils/validate-user-agent");
|
|
63
|
+
/**
|
|
64
|
+
* Error class for v3 feature compatibility issues
|
|
65
|
+
*
|
|
66
|
+
* Note: The library no longer throws this error for get_products calls with
|
|
67
|
+
* unsupported v3 features. Instead, it returns an empty result (semantically
|
|
68
|
+
* "no products match this filter"). This error class is exported for use in
|
|
69
|
+
* custom validation logic or other scenarios.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* // Custom validation before making requests
|
|
74
|
+
* const capabilities = await client.getCapabilities();
|
|
75
|
+
* if (params.property_list && !capabilities.features.propertyListFiltering) {
|
|
76
|
+
* throw new UnsupportedFeatureError('property_list', capabilities.version);
|
|
77
|
+
* }
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
class UnsupportedFeatureError extends Error {
|
|
81
|
+
feature;
|
|
82
|
+
serverVersion;
|
|
83
|
+
constructor(feature, serverVersion, message) {
|
|
84
|
+
super(message || `Feature '${feature}' requires AdCP v3 but server is ${serverVersion}`);
|
|
85
|
+
this.feature = feature;
|
|
86
|
+
this.serverVersion = serverVersion;
|
|
87
|
+
this.name = 'UnsupportedFeatureError';
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.UnsupportedFeatureError = UnsupportedFeatureError;
|
|
91
|
+
/**
|
|
92
|
+
* Internal single-agent client implementation
|
|
93
|
+
*
|
|
94
|
+
* This is an internal implementation detail used by AgentClient and ADCPMultiAgentClient.
|
|
95
|
+
* External users should use AdCPClient (alias for ADCPMultiAgentClient) instead.
|
|
96
|
+
*
|
|
97
|
+
* Key features:
|
|
98
|
+
* - 🔒 Full type safety for all ADCP tasks
|
|
99
|
+
* - 💬 Conversation management with context preservation
|
|
100
|
+
* - 🔄 Input handler pattern for clarifications
|
|
101
|
+
* - ⏱️ Timeout and retry support
|
|
102
|
+
* - 🐛 Debug logging and observability
|
|
103
|
+
* - 🎯 Works with both MCP and A2A protocols
|
|
104
|
+
*/
|
|
105
|
+
class SingleAgentClient {
|
|
106
|
+
agent;
|
|
107
|
+
config;
|
|
108
|
+
executor;
|
|
109
|
+
asyncHandler;
|
|
110
|
+
normalizedAgent;
|
|
111
|
+
discoveredEndpoint; // Cache discovered MCP endpoint
|
|
112
|
+
canonicalBaseUrl; // Cache canonical base URL (from agent card or stripped /mcp)
|
|
113
|
+
cachedCapabilities; // Cache detected server capabilities
|
|
114
|
+
cachedToolSchemas; // inputSchema.properties per tool name
|
|
115
|
+
_v2WarningFired = false; // Gate: emit the v2-sunset warning once per client instance
|
|
116
|
+
resolvedAdcpVersion;
|
|
117
|
+
constructor(agent, config = {}) {
|
|
118
|
+
this.agent = agent;
|
|
119
|
+
this.config = config;
|
|
120
|
+
// Validate the configured adcpVersion at construction time. Throws
|
|
121
|
+
// ConfigurationError if the pin's major differs from ADCP_MAJOR_VERSION
|
|
122
|
+
// — cross-major support lands in Stage 3 of the multi-version refactor.
|
|
123
|
+
this.resolvedAdcpVersion = (0, adcp_version_config_1.resolveAdcpVersion)(config.adcpVersion);
|
|
124
|
+
// Inject userAgent into agent headers so it flows through both MCP and A2A transports
|
|
125
|
+
if (config.userAgent) {
|
|
126
|
+
(0, validate_user_agent_1.validateUserAgent)(config.userAgent);
|
|
127
|
+
this.agent = {
|
|
128
|
+
...this.agent,
|
|
129
|
+
headers: { 'User-Agent': config.userAgent, ...this.agent.headers },
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
// Normalize agent URL for MCP protocol
|
|
133
|
+
this.normalizedAgent = this.normalizeAgentConfig(this.agent);
|
|
134
|
+
this.executor = new TaskExecutor_1.TaskExecutor({
|
|
135
|
+
workingTimeout: config.workingTimeout || 120000, // Max 120s for working status
|
|
136
|
+
defaultMaxClarifications: config.defaultMaxClarifications || 3,
|
|
137
|
+
enableConversationStorage: config.persistConversations !== false,
|
|
138
|
+
webhookUrlTemplate: config.webhookUrlTemplate,
|
|
139
|
+
agentId: agent.id,
|
|
140
|
+
webhookSecret: config.webhookSecret,
|
|
141
|
+
strictSchemaValidation: config.validation?.strictSchemaValidation !== false, // Default: true
|
|
142
|
+
logSchemaViolations: config.validation?.logSchemaViolations !== false, // Default: true
|
|
143
|
+
filterInvalidProducts: config.validation?.filterInvalidProducts === true, // Default: false
|
|
144
|
+
validation: {
|
|
145
|
+
...(config.validation?.requests != null && { requests: config.validation.requests }),
|
|
146
|
+
...(config.validation?.responses != null && { responses: config.validation.responses }),
|
|
147
|
+
},
|
|
148
|
+
onActivity: config.onActivity,
|
|
149
|
+
governance: config.governance,
|
|
150
|
+
});
|
|
151
|
+
// Create async handler if handlers are provided
|
|
152
|
+
if (config.handlers) {
|
|
153
|
+
this.asyncHandler = new AsyncHandler_1.AsyncHandler(config.handlers);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Returns the AdCP protocol version this client is configured to speak.
|
|
158
|
+
*
|
|
159
|
+
* Defaults to {@link ADCP_VERSION} (the GA version the SDK ships against)
|
|
160
|
+
* unless overridden via `new SingleAgentClient(agent, { adcpVersion })`.
|
|
161
|
+
*
|
|
162
|
+
* Plumbing surface — Stage 2 of the multi-version refactor exposes the
|
|
163
|
+
* configured value but does not yet vary validator/schema selection by
|
|
164
|
+
* version. Wire-shape adapters key off this method in subsequent stages.
|
|
165
|
+
*/
|
|
166
|
+
getAdcpVersion() {
|
|
167
|
+
return this.resolvedAdcpVersion;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Ensure MCP endpoint is discovered (lazy initialization)
|
|
171
|
+
*
|
|
172
|
+
* If the agent needs discovery, perform it now and cache the result.
|
|
173
|
+
* Returns the agent config with the discovered endpoint.
|
|
174
|
+
* Also computes the canonical base URL by stripping /mcp suffix.
|
|
175
|
+
*/
|
|
176
|
+
async ensureEndpointDiscovered() {
|
|
177
|
+
const needsDiscovery = this.normalizedAgent._needsDiscovery;
|
|
178
|
+
if (!needsDiscovery) {
|
|
179
|
+
return this.normalizedAgent;
|
|
180
|
+
}
|
|
181
|
+
// Already discovered? Use cached value
|
|
182
|
+
if (this.discoveredEndpoint) {
|
|
183
|
+
return {
|
|
184
|
+
...this.normalizedAgent,
|
|
185
|
+
agent_uri: this.discoveredEndpoint,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
// Perform discovery
|
|
189
|
+
this.discoveredEndpoint = await this.discoverMCPEndpoint(this.normalizedAgent.agent_uri);
|
|
190
|
+
// Compute canonical base URL by stripping /mcp suffix
|
|
191
|
+
this.canonicalBaseUrl = this.computeBaseUrl(this.discoveredEndpoint);
|
|
192
|
+
return {
|
|
193
|
+
...this.normalizedAgent,
|
|
194
|
+
agent_uri: this.discoveredEndpoint,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Ensure A2A canonical URL is resolved (lazy initialization)
|
|
199
|
+
*
|
|
200
|
+
* Fetches the agent card and extracts the canonical URL.
|
|
201
|
+
* Returns the agent config with the canonical URL.
|
|
202
|
+
*/
|
|
203
|
+
async ensureCanonicalUrlResolved() {
|
|
204
|
+
const needsCanonicalUrl = this.normalizedAgent._needsCanonicalUrl;
|
|
205
|
+
if (!needsCanonicalUrl) {
|
|
206
|
+
return this.normalizedAgent;
|
|
207
|
+
}
|
|
208
|
+
// Already resolved? Use cached value
|
|
209
|
+
if (this.canonicalBaseUrl) {
|
|
210
|
+
return {
|
|
211
|
+
...this.normalizedAgent,
|
|
212
|
+
agent_uri: this.canonicalBaseUrl,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
// Fetch agent card to get canonical URL
|
|
216
|
+
const canonicalUrl = await this.fetchA2ACanonicalUrl(this.normalizedAgent.agent_uri);
|
|
217
|
+
this.canonicalBaseUrl = canonicalUrl;
|
|
218
|
+
return {
|
|
219
|
+
...this.normalizedAgent,
|
|
220
|
+
agent_uri: canonicalUrl,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Fetch the canonical URL from an A2A agent card
|
|
225
|
+
*
|
|
226
|
+
* Special handling for authentication errors (401):
|
|
227
|
+
* - If the agent card fetch returns 401, throw AuthenticationRequiredError
|
|
228
|
+
* - Check for OAuth metadata to provide helpful guidance
|
|
229
|
+
*/
|
|
230
|
+
async fetchA2ACanonicalUrl(agentUri) {
|
|
231
|
+
const clientModule = require('@a2a-js/sdk/client');
|
|
232
|
+
const A2AClient = clientModule.A2AClient;
|
|
233
|
+
const authToken = this.normalizedAgent.auth_token;
|
|
234
|
+
let got401 = false;
|
|
235
|
+
const fetchImpl = async (url, options) => {
|
|
236
|
+
const headers = {
|
|
237
|
+
...options?.headers,
|
|
238
|
+
...this.normalizedAgent.headers,
|
|
239
|
+
...(authToken && {
|
|
240
|
+
Authorization: `Bearer ${authToken}`,
|
|
241
|
+
'x-adcp-auth': authToken,
|
|
242
|
+
}),
|
|
243
|
+
};
|
|
244
|
+
const response = await fetch(url, { ...options, headers });
|
|
245
|
+
// Track 401 errors for later handling
|
|
246
|
+
if (response.status === 401) {
|
|
247
|
+
got401 = true;
|
|
248
|
+
}
|
|
249
|
+
return response;
|
|
250
|
+
};
|
|
251
|
+
const cardUrls = (0, a2a_discovery_1.buildCardUrls)(agentUri);
|
|
252
|
+
try {
|
|
253
|
+
let client;
|
|
254
|
+
let lastError = new Error(`A2A agent card not found at ${cardUrls.join(', ')}`);
|
|
255
|
+
for (const cardUrl of cardUrls) {
|
|
256
|
+
try {
|
|
257
|
+
client = await A2AClient.fromCardUrl(cardUrl, { fetchImpl });
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
catch (err) {
|
|
261
|
+
lastError = err;
|
|
262
|
+
if (got401)
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
if (!client) {
|
|
267
|
+
throw lastError;
|
|
268
|
+
}
|
|
269
|
+
const agentCard = client.agentCardPromise ? await client.agentCardPromise : client.agentCard;
|
|
270
|
+
// Use the canonical URL from the agent card, falling back to computed base URL
|
|
271
|
+
if (agentCard?.url) {
|
|
272
|
+
return agentCard.url;
|
|
273
|
+
}
|
|
274
|
+
return this.computeBaseUrl(agentUri);
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
// If we got a 401, throw the richer NeedsAuthorizationError when the
|
|
278
|
+
// full discovery walk succeeds; otherwise fall back to the simpler
|
|
279
|
+
// one-hop AuthenticationRequiredError so behavior degrades gracefully.
|
|
280
|
+
if ((0, errors_1.is401Error)(error, got401)) {
|
|
281
|
+
const requirements = await (0, authorization_required_1.discoverAuthorizationRequirements)(agentUri, {
|
|
282
|
+
allowPrivateIp: (0, net_1.isLikelyPrivateUrl)(agentUri),
|
|
283
|
+
});
|
|
284
|
+
if (requirements) {
|
|
285
|
+
throw new authorization_required_1.NeedsAuthorizationError(requirements);
|
|
286
|
+
}
|
|
287
|
+
const oauthMetadata = await (0, discovery_1.discoverOAuthMetadata)(agentUri);
|
|
288
|
+
throw new errors_1.AuthenticationRequiredError(agentUri, oauthMetadata || undefined);
|
|
289
|
+
}
|
|
290
|
+
// Re-throw other errors
|
|
291
|
+
throw error;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Compute base URL by stripping protocol-specific suffixes
|
|
296
|
+
*
|
|
297
|
+
* - Strips /.well-known/agent.json or /.well-known/agent-card.json for A2A discovery URLs
|
|
298
|
+
* - Strips the protocol transport suffix (/mcp, /a2a, /sse)
|
|
299
|
+
* - Strips trailing slash for consistency
|
|
300
|
+
*/
|
|
301
|
+
computeBaseUrl(url) {
|
|
302
|
+
let baseUrl = (0, a2a_discovery_1.stripAgentCardPath)(url);
|
|
303
|
+
baseUrl = (0, a2a_discovery_1.stripTransportSuffix)(baseUrl);
|
|
304
|
+
baseUrl = baseUrl.replace(/\/$/, '');
|
|
305
|
+
return baseUrl;
|
|
306
|
+
}
|
|
307
|
+
isWellKnownAgentCardUrl(url) {
|
|
308
|
+
return (0, a2a_discovery_1.isWellKnownAgentCardUrl)(url);
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Discover MCP endpoint by testing the provided path, then trying variants
|
|
312
|
+
*
|
|
313
|
+
* Strategy:
|
|
314
|
+
* 1. Test the exact URL provided (preserving trailing slashes)
|
|
315
|
+
* 2. If that fails, try with/without trailing slash
|
|
316
|
+
* 3. If still fails and doesn't end with /mcp, try adding /mcp
|
|
317
|
+
*
|
|
318
|
+
* Special handling for authentication errors (401):
|
|
319
|
+
* - If any endpoint returns 401, we know the server exists but requires auth
|
|
320
|
+
* - We fetch OAuth metadata and throw AuthenticationRequiredError
|
|
321
|
+
* - This gives consumers clear guidance on how to authenticate
|
|
322
|
+
*
|
|
323
|
+
* Note: This is async and called lazily on first agent interaction
|
|
324
|
+
*/
|
|
325
|
+
async discoverMCPEndpoint(providedUri) {
|
|
326
|
+
const { connectMCPWithFallback } = await Promise.resolve().then(() => __importStar(require('../protocols/mcp')));
|
|
327
|
+
const authToken = this.agent.auth_token;
|
|
328
|
+
const agentHeaders = this.agent.headers;
|
|
329
|
+
const authHeaders = { ...agentHeaders, ...(0, auth_1.createMCPAuthHeaders)(authToken) };
|
|
330
|
+
const testEndpoint = async (url) => {
|
|
331
|
+
try {
|
|
332
|
+
const client = await connectMCPWithFallback(new URL(url), authHeaders);
|
|
333
|
+
await client.close();
|
|
334
|
+
return { success: true };
|
|
335
|
+
}
|
|
336
|
+
catch (error) {
|
|
337
|
+
if ((0, errors_1.is401Error)(error)) {
|
|
338
|
+
return { success: false, status: 401, error };
|
|
339
|
+
}
|
|
340
|
+
const errObj = error;
|
|
341
|
+
const status = errObj?.status ||
|
|
342
|
+
errObj?.response?.status ||
|
|
343
|
+
errObj?.cause?.status;
|
|
344
|
+
return { success: false, status, error };
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
const urlsToTry = [];
|
|
348
|
+
// 1. Always try the exact URL provided first
|
|
349
|
+
urlsToTry.push(providedUri);
|
|
350
|
+
// 2. Try the opposite trailing slash variant
|
|
351
|
+
const hasTrailingSlash = providedUri.endsWith('/');
|
|
352
|
+
const alternateSlash = hasTrailingSlash
|
|
353
|
+
? providedUri.slice(0, -1) // Remove trailing slash
|
|
354
|
+
: providedUri + '/'; // Add trailing slash
|
|
355
|
+
urlsToTry.push(alternateSlash);
|
|
356
|
+
// 3. If URL doesn't end with /mcp or /mcp/, try adding /mcp
|
|
357
|
+
const normalizedUri = providedUri.replace(/\/$/, '');
|
|
358
|
+
if (!normalizedUri.endsWith('/mcp')) {
|
|
359
|
+
urlsToTry.push(normalizedUri + '/mcp');
|
|
360
|
+
urlsToTry.push(normalizedUri + '/mcp/');
|
|
361
|
+
}
|
|
362
|
+
// Remove duplicates while preserving order
|
|
363
|
+
const uniqueUrls = [...new Set(urlsToTry)];
|
|
364
|
+
// Track results and whether we got any 401s
|
|
365
|
+
let got401 = false;
|
|
366
|
+
let firstWorkingUrl;
|
|
367
|
+
// Test each URL
|
|
368
|
+
for (const url of uniqueUrls) {
|
|
369
|
+
const result = await testEndpoint(url);
|
|
370
|
+
if (result.success) {
|
|
371
|
+
firstWorkingUrl = url;
|
|
372
|
+
break;
|
|
373
|
+
}
|
|
374
|
+
if (result.status === 401) {
|
|
375
|
+
got401 = true;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
if (firstWorkingUrl) {
|
|
379
|
+
return firstWorkingUrl;
|
|
380
|
+
}
|
|
381
|
+
// If we got 401 from any endpoint, throw an authentication-required error.
|
|
382
|
+
// Prefer the richer NeedsAuthorizationError when we can walk the full
|
|
383
|
+
// RFC 9728 chain (PRM → AS metadata → endpoints + scopes + DCR hint).
|
|
384
|
+
// Fall back to the simpler AuthenticationRequiredError with one-hop AS
|
|
385
|
+
// metadata when the walk doesn't yield enough.
|
|
386
|
+
if (got401) {
|
|
387
|
+
const requirements = await (0, authorization_required_1.discoverAuthorizationRequirements)(providedUri, {
|
|
388
|
+
allowPrivateIp: (0, net_1.isLikelyPrivateUrl)(providedUri),
|
|
389
|
+
});
|
|
390
|
+
if (requirements) {
|
|
391
|
+
throw new authorization_required_1.NeedsAuthorizationError(requirements);
|
|
392
|
+
}
|
|
393
|
+
const oauthMetadata = await (0, discovery_1.discoverOAuthMetadata)(providedUri);
|
|
394
|
+
throw new errors_1.AuthenticationRequiredError(providedUri, oauthMetadata || undefined);
|
|
395
|
+
}
|
|
396
|
+
// None worked and no 401 - generic discovery failure
|
|
397
|
+
throw new Error(`Failed to discover MCP endpoint. Tried:\n` +
|
|
398
|
+
uniqueUrls.map((url, i) => ` ${i + 1}. ${url}`).join('\n') +
|
|
399
|
+
'\n' +
|
|
400
|
+
`None responded to MCP protocol.`);
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Normalize agent config
|
|
404
|
+
*
|
|
405
|
+
* - If URL is a well-known agent card URL, switch to A2A protocol
|
|
406
|
+
* (these are A2A discovery URLs, not MCP endpoints)
|
|
407
|
+
* - A2A agents are marked for canonical URL resolution (from agent card)
|
|
408
|
+
* - MCP agents are marked for endpoint discovery
|
|
409
|
+
*/
|
|
410
|
+
normalizeAgentConfig(agent) {
|
|
411
|
+
// If URL is a well-known agent card URL, use A2A protocol regardless of what was specified
|
|
412
|
+
// Mark for canonical URL resolution - we'll fetch the agent card and use its url field
|
|
413
|
+
if (this.isWellKnownAgentCardUrl(agent.agent_uri)) {
|
|
414
|
+
return {
|
|
415
|
+
...agent,
|
|
416
|
+
protocol: 'a2a',
|
|
417
|
+
_needsCanonicalUrl: true,
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
if (agent.protocol === 'a2a') {
|
|
421
|
+
// A2A agents need canonical URL resolution from agent card
|
|
422
|
+
return {
|
|
423
|
+
...agent,
|
|
424
|
+
_needsCanonicalUrl: true,
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
if (agent.protocol !== 'mcp') {
|
|
428
|
+
return agent;
|
|
429
|
+
}
|
|
430
|
+
// In-process MCP clients have no HTTP endpoint to discover
|
|
431
|
+
if (agent._inProcessMcpClient) {
|
|
432
|
+
return agent;
|
|
433
|
+
}
|
|
434
|
+
// MCP agents need endpoint discovery - we'll test their path, then try adding /mcp
|
|
435
|
+
return {
|
|
436
|
+
...agent,
|
|
437
|
+
_needsDiscovery: true,
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Handle webhook from agent (async task status updates and completions)
|
|
442
|
+
*
|
|
443
|
+
* Accepts webhook payloads from both MCP and A2A protocols:
|
|
444
|
+
* 1. MCP: MCPWebhookPayload envelope with AdCP data in .result field
|
|
445
|
+
* 2. A2A: Native Task/TaskStatusUpdateEvent with AdCP data in either:
|
|
446
|
+
* - status.message.parts[].data (for status updates)
|
|
447
|
+
* - artifacts (for task completion, per A2A spec)
|
|
448
|
+
*
|
|
449
|
+
* The method normalizes both formats so handlers receive the unwrapped
|
|
450
|
+
* AdCP response data (AdCPAsyncResponseData), not the raw protocol structure.
|
|
451
|
+
*
|
|
452
|
+
* @param payload - Protocol-specific webhook payload (MCPWebhookPayload | Task | TaskStatusUpdateEvent)
|
|
453
|
+
* @param taskType - Task type (e.g create_media_buy) from url param or url part of the webhook delivery
|
|
454
|
+
* @param operationId - Operation id (e.g used for client app to track the operation) from the param or url part of the webhook delivery
|
|
455
|
+
* @param signature - X-ADCP-Signature header (format: "sha256=...")
|
|
456
|
+
* @param timestamp - X-ADCP-Timestamp header (Unix timestamp)
|
|
457
|
+
* @returns Whether webhook was handled successfully
|
|
458
|
+
*
|
|
459
|
+
* @example
|
|
460
|
+
* ```typescript
|
|
461
|
+
* app.post('/webhook/:taskType', async (req, res) => {
|
|
462
|
+
* const signature = req.headers['x-adcp-signature'];
|
|
463
|
+
* const timestamp = req.headers['x-adcp-timestamp'];
|
|
464
|
+
*
|
|
465
|
+
* try {
|
|
466
|
+
* const handled = await client.handleWebhook(req.body, signature, timestamp, req.params.taskType);
|
|
467
|
+
* res.status(200).json({ received: handled });
|
|
468
|
+
* } catch (error) {
|
|
469
|
+
* res.status(401).json({ error: error.message });
|
|
470
|
+
* }
|
|
471
|
+
* });
|
|
472
|
+
* ```
|
|
473
|
+
*/
|
|
474
|
+
async handleWebhook(payload, taskType, operationId, signature, timestamp, rawBody) {
|
|
475
|
+
// Verify signature if secret is configured
|
|
476
|
+
if (this.config.webhookSecret) {
|
|
477
|
+
if (!signature || !timestamp) {
|
|
478
|
+
throw new Error('Webhook signature and timestamp required but not provided');
|
|
479
|
+
}
|
|
480
|
+
const isValid = this.verifyWebhookSignature(rawBody ?? payload, signature, timestamp);
|
|
481
|
+
if (!isValid) {
|
|
482
|
+
throw new Error('Invalid webhook signature or timestamp too old');
|
|
483
|
+
}
|
|
484
|
+
console.log('[ADCP Client]: Webhook signature is valid');
|
|
485
|
+
}
|
|
486
|
+
// Transform raw protocol payload to normalized format
|
|
487
|
+
const normalizedPayload = this.normalizeWebhookPayload(payload, taskType, operationId);
|
|
488
|
+
const metadata = {
|
|
489
|
+
operation_id: normalizedPayload.operation_id,
|
|
490
|
+
context_id: normalizedPayload.context_id,
|
|
491
|
+
task_id: normalizedPayload.task_id,
|
|
492
|
+
agent_id: this.agent.id,
|
|
493
|
+
task_type: normalizedPayload.task_type,
|
|
494
|
+
status: normalizedPayload.status,
|
|
495
|
+
message: normalizedPayload.message,
|
|
496
|
+
timestamp: normalizedPayload.timestamp || new Date().toISOString(),
|
|
497
|
+
idempotency_key: normalizedPayload.idempotency_key,
|
|
498
|
+
protocol: normalizedPayload.protocol,
|
|
499
|
+
};
|
|
500
|
+
// Emit activity
|
|
501
|
+
await this.config.onActivity?.({
|
|
502
|
+
type: 'webhook_received',
|
|
503
|
+
operation_id: metadata.operation_id,
|
|
504
|
+
agent_id: metadata.agent_id,
|
|
505
|
+
context_id: metadata.context_id,
|
|
506
|
+
task_id: metadata.task_id,
|
|
507
|
+
task_type: metadata.task_type,
|
|
508
|
+
status: metadata.status,
|
|
509
|
+
payload: normalizedPayload.result,
|
|
510
|
+
timestamp: metadata.timestamp,
|
|
511
|
+
});
|
|
512
|
+
// Handle through async handler if configured
|
|
513
|
+
if (this.asyncHandler) {
|
|
514
|
+
await this.asyncHandler.handleWebhook({ result: normalizedPayload.result, metadata });
|
|
515
|
+
return true;
|
|
516
|
+
}
|
|
517
|
+
return false;
|
|
518
|
+
}
|
|
519
|
+
/**
|
|
520
|
+
* Normalize webhook payload - handles both MCP and A2A webhook formats
|
|
521
|
+
*
|
|
522
|
+
* MCP: Uses MCPWebhookPayload envelope with AdCP data in .result field
|
|
523
|
+
* A2A: Uses native Task/TaskStatusUpdateEvent messages with AdCP data in either:
|
|
524
|
+
* - status.message.parts[].data (for status updates)
|
|
525
|
+
* - artifacts (for task completion responses, per A2A spec)
|
|
526
|
+
*
|
|
527
|
+
* @param payload - Protocol-specific webhook payload (MCPWebhookPayload | Task | TaskStatusUpdateEvent)
|
|
528
|
+
* @param taskType - Task type override
|
|
529
|
+
* @param operationId - Operation id
|
|
530
|
+
* @returns Normalized webhook payload with extracted AdCP response
|
|
531
|
+
*/
|
|
532
|
+
normalizeWebhookPayload(payload, taskType, operationId) {
|
|
533
|
+
// 1. Check for MCP Webhook Payload (has task_id, status, task_type fields)
|
|
534
|
+
if ('task_id' in payload && 'task_type' in payload && 'status' in payload) {
|
|
535
|
+
const mcpPayload = payload;
|
|
536
|
+
return {
|
|
537
|
+
operation_id: operationId || 'unknown',
|
|
538
|
+
context_id: mcpPayload.context_id ?? undefined,
|
|
539
|
+
task_id: mcpPayload.task_id,
|
|
540
|
+
task_type: taskType,
|
|
541
|
+
status: mcpPayload.status,
|
|
542
|
+
result: mcpPayload.result ?? undefined,
|
|
543
|
+
message: mcpPayload.message ?? undefined,
|
|
544
|
+
timestamp: mcpPayload.timestamp,
|
|
545
|
+
idempotency_key: mcpPayload.idempotency_key,
|
|
546
|
+
protocol: 'mcp',
|
|
547
|
+
};
|
|
548
|
+
}
|
|
549
|
+
// 2. Check for A2A Task or TaskStatusUpdateEvent
|
|
550
|
+
if ('kind' in payload && (payload.kind === 'task' || payload.kind === 'status-update')) {
|
|
551
|
+
const a2aPayload = payload;
|
|
552
|
+
const a2aStatus = a2aPayload.status?.state || 'unknown';
|
|
553
|
+
let result = undefined;
|
|
554
|
+
// Try to extract data from status.message.parts first (for status updates)
|
|
555
|
+
const parts = a2aPayload.status?.message?.parts;
|
|
556
|
+
if (parts && Array.isArray(parts)) {
|
|
557
|
+
const dataPart = parts.find(p => 'data' in p && p.kind === 'data');
|
|
558
|
+
if (dataPart && 'data' in dataPart) {
|
|
559
|
+
result = dataPart.data;
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
// If not found in parts, check artifacts (standard A2A task output location)
|
|
563
|
+
if (!result && 'artifacts' in a2aPayload && a2aPayload.artifacts && a2aPayload.artifacts.length > 0) {
|
|
564
|
+
try {
|
|
565
|
+
// Try to unwrap artifacts for all statuses
|
|
566
|
+
result = (0, response_unwrapper_1.unwrapProtocolResponse)({ result: a2aPayload }, taskType, 'a2a');
|
|
567
|
+
}
|
|
568
|
+
catch (error) {
|
|
569
|
+
console.warn('Failed to unwrap A2A webhook payload:', error instanceof Error ? error.message : 'unknown error');
|
|
570
|
+
// Fallback: pass raw artifacts so handler has something to work with
|
|
571
|
+
result = a2aPayload.artifacts;
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
// Extract message part from status.message.parts (A2A Message structure)
|
|
575
|
+
let message = undefined;
|
|
576
|
+
if (a2aPayload.status?.message?.parts) {
|
|
577
|
+
const textParts = a2aPayload.status.message.parts
|
|
578
|
+
.filter(p => p.kind === 'text' && 'text' in p)
|
|
579
|
+
.map(p => ('text' in p ? p.text : ''));
|
|
580
|
+
if (textParts.length > 0) {
|
|
581
|
+
message = textParts.join(' ');
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
// Get task_id ensuring it's a string
|
|
585
|
+
let taskId = 'unknown';
|
|
586
|
+
if ('id' in a2aPayload && a2aPayload.id) {
|
|
587
|
+
taskId = String(a2aPayload.id);
|
|
588
|
+
}
|
|
589
|
+
else if ('taskId' in a2aPayload && a2aPayload.taskId) {
|
|
590
|
+
taskId = String(a2aPayload.taskId);
|
|
591
|
+
}
|
|
592
|
+
return {
|
|
593
|
+
operation_id: operationId,
|
|
594
|
+
context_id: 'contextId' in a2aPayload ? a2aPayload.contextId : undefined,
|
|
595
|
+
task_id: taskId,
|
|
596
|
+
task_type: taskType,
|
|
597
|
+
status: a2aStatus,
|
|
598
|
+
result,
|
|
599
|
+
message: message,
|
|
600
|
+
timestamp: a2aPayload.status?.timestamp || new Date().toISOString(),
|
|
601
|
+
protocol: 'a2a',
|
|
602
|
+
};
|
|
603
|
+
}
|
|
604
|
+
// 3. Unknown payload format
|
|
605
|
+
throw new Error('Unsupported webhook payload format. Expected MCPWebhookPayload, Task, or TaskStatusUpdateEvent. ' +
|
|
606
|
+
`Received: ${JSON.stringify(payload).substring(0, 200)}`);
|
|
607
|
+
}
|
|
608
|
+
/**
|
|
609
|
+
* Generate webhook URL using macro substitution
|
|
610
|
+
*
|
|
611
|
+
* @param taskType - Type of task (e.g., 'get_products', 'media_buy_delivery')
|
|
612
|
+
* @param operationId - Operation ID for this request
|
|
613
|
+
* @returns Full webhook URL with macros replaced
|
|
614
|
+
*
|
|
615
|
+
* @example
|
|
616
|
+
* ```typescript
|
|
617
|
+
* // With template: "https://myapp.com/webhook/{task_type}/{agent_id}/{operation_id}"
|
|
618
|
+
* const webhookUrl = client.getWebhookUrl('sync_creatives', 'op_123');
|
|
619
|
+
* // Returns: https://myapp.com/webhook/sync_creatives/agent_x/op_123
|
|
620
|
+
*
|
|
621
|
+
* // With template: "https://myapp.com/webhook?agent={agent_id}&op={operation_id}"
|
|
622
|
+
* const webhookUrl = client.getWebhookUrl('sync_creatives', 'op_123');
|
|
623
|
+
* // Returns: https://myapp.com/webhook?agent=agent_x&op=op_123
|
|
624
|
+
* ```
|
|
625
|
+
*/
|
|
626
|
+
getWebhookUrl(taskType, operationId) {
|
|
627
|
+
if (!this.config.webhookUrlTemplate) {
|
|
628
|
+
throw new Error('webhookUrlTemplate not configured - cannot generate webhook URL');
|
|
629
|
+
}
|
|
630
|
+
// Macro substitution
|
|
631
|
+
return this.config.webhookUrlTemplate
|
|
632
|
+
.replace(/{agent_id}/g, this.agent.id)
|
|
633
|
+
.replace(/{task_type}/g, taskType)
|
|
634
|
+
.replace(/{operation_id}/g, operationId);
|
|
635
|
+
}
|
|
636
|
+
/**
|
|
637
|
+
* Create an HTTP webhook handler that automatically verifies signatures
|
|
638
|
+
*
|
|
639
|
+
* This helper creates a standard HTTP handler (Express/Next.js/etc.) that:
|
|
640
|
+
* - Extracts X-ADCP-Signature and X-ADCP-Timestamp headers
|
|
641
|
+
* - Verifies HMAC signature (if webhookSecret configured)
|
|
642
|
+
* - Validates timestamp freshness
|
|
643
|
+
* - Calls handleWebhook() with proper error handling
|
|
644
|
+
*
|
|
645
|
+
* @returns HTTP handler function compatible with Express, Next.js, etc.
|
|
646
|
+
*
|
|
647
|
+
* @example Express
|
|
648
|
+
* ```typescript
|
|
649
|
+
* const client = new ADCPClient(agent, {
|
|
650
|
+
* webhookSecret: 'your-secret-key',
|
|
651
|
+
* handlers: {
|
|
652
|
+
* onSyncCreativesStatusChange: async (result) => {
|
|
653
|
+
* console.log('Creative synced:', result);
|
|
654
|
+
* }
|
|
655
|
+
* }
|
|
656
|
+
* });
|
|
657
|
+
*
|
|
658
|
+
* app.post('/webhook', client.createWebhookHandler());
|
|
659
|
+
* ```
|
|
660
|
+
*
|
|
661
|
+
* @example Next.js API Route
|
|
662
|
+
* ```typescript
|
|
663
|
+
* export default client.createWebhookHandler();
|
|
664
|
+
* ```
|
|
665
|
+
*/
|
|
666
|
+
createWebhookHandler() {
|
|
667
|
+
return async (req, res) => {
|
|
668
|
+
try {
|
|
669
|
+
// Extract headers (case-insensitive)
|
|
670
|
+
const signature = req.headers['x-adcp-signature'] || req.headers['X-ADCP-Signature'];
|
|
671
|
+
const timestamp = req.headers['x-adcp-timestamp'] || req.headers['X-ADCP-Timestamp'];
|
|
672
|
+
// Capture raw body for signature verification, then parse
|
|
673
|
+
const rawBody = typeof req.body === 'string' ? req.body : JSON.stringify(req.body);
|
|
674
|
+
const payload = typeof req.body === 'string' ? JSON.parse(req.body) : req.body;
|
|
675
|
+
// Extract routing params if available (e.g., Express route params)
|
|
676
|
+
const taskType = req.params?.task_type || req.params?.taskType || 'unknown';
|
|
677
|
+
const operationId = req.params?.operation_id || req.params?.operationId || 'unknown';
|
|
678
|
+
// Handle webhook with automatic verification using raw body bytes
|
|
679
|
+
const handled = await this.handleWebhook(payload, taskType, operationId, signature, timestamp, rawBody);
|
|
680
|
+
// Return success
|
|
681
|
+
if (res.json) {
|
|
682
|
+
res.status(202).json({ status: 'accepted', received: handled });
|
|
683
|
+
}
|
|
684
|
+
else {
|
|
685
|
+
res.writeHead(202, { 'Content-Type': 'application/json' });
|
|
686
|
+
res.end(JSON.stringify({ status: 'accepted', received: handled }));
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
catch (error) {
|
|
690
|
+
// Return error
|
|
691
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
692
|
+
const statusCode = errorMessage.includes('signature') || errorMessage.includes('timestamp') ? 401 : 500;
|
|
693
|
+
if (res.json) {
|
|
694
|
+
res.status(statusCode).json({ error: errorMessage });
|
|
695
|
+
}
|
|
696
|
+
else {
|
|
697
|
+
res.writeHead(statusCode, { 'Content-Type': 'application/json' });
|
|
698
|
+
res.end(JSON.stringify({ error: errorMessage }));
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
};
|
|
702
|
+
}
|
|
703
|
+
/**
|
|
704
|
+
* Verify webhook signature using HMAC-SHA256 per AdCP spec.
|
|
705
|
+
*
|
|
706
|
+
* HMAC is computed over the **raw HTTP body bytes** — the exact bytes received
|
|
707
|
+
* on the wire, before JSON parsing. This ensures cross-language interop since
|
|
708
|
+
* different JSON serializers may produce different byte representations of the
|
|
709
|
+
* same logical payload.
|
|
710
|
+
*
|
|
711
|
+
* For backward compatibility, a parsed object is still accepted but will be
|
|
712
|
+
* re-serialized with JSON.stringify, which may not match the sender's bytes.
|
|
713
|
+
* Always prefer passing the raw body string.
|
|
714
|
+
*
|
|
715
|
+
* Signature format: sha256={hex_signature}
|
|
716
|
+
* Message format: {timestamp}.{raw_body}
|
|
717
|
+
*
|
|
718
|
+
* @param rawBodyOrPayload - Raw HTTP body string (preferred) or parsed payload object (deprecated)
|
|
719
|
+
* @param signature - X-ADCP-Signature header value (format: "sha256=...")
|
|
720
|
+
* @param timestamp - X-ADCP-Timestamp header value (Unix timestamp)
|
|
721
|
+
* @returns true if signature is valid
|
|
722
|
+
*/
|
|
723
|
+
verifyWebhookSignature(rawBodyOrPayload, signature, timestamp) {
|
|
724
|
+
if (!this.config.webhookSecret) {
|
|
725
|
+
return false;
|
|
726
|
+
}
|
|
727
|
+
// Validate timestamp freshness (reject requests older than 5 minutes)
|
|
728
|
+
const now = Math.floor(Date.now() / 1000);
|
|
729
|
+
const ts = typeof timestamp === 'string' ? parseInt(timestamp) : timestamp;
|
|
730
|
+
if (Math.abs(now - ts) > 300) {
|
|
731
|
+
return false; // Request too old or from future
|
|
732
|
+
}
|
|
733
|
+
// Use raw body bytes when available; fall back to JSON.stringify for backward compat
|
|
734
|
+
const body = typeof rawBodyOrPayload === 'string' ? rawBodyOrPayload : JSON.stringify(rawBodyOrPayload);
|
|
735
|
+
// Build message per AdCP spec: {timestamp}.{raw_body}
|
|
736
|
+
const message = `${ts}.${body}`;
|
|
737
|
+
// Calculate expected signature
|
|
738
|
+
const hmac = crypto.createHmac('sha256', this.config.webhookSecret);
|
|
739
|
+
hmac.update(message);
|
|
740
|
+
const expectedSignature = `sha256=${hmac.digest('hex')}`;
|
|
741
|
+
// Constant-time comparison to prevent timing attacks
|
|
742
|
+
// Check length first to avoid timingSafeEqual error
|
|
743
|
+
if (signature.length !== expectedSignature.length) {
|
|
744
|
+
return false;
|
|
745
|
+
}
|
|
746
|
+
return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expectedSignature));
|
|
747
|
+
}
|
|
748
|
+
/**
|
|
749
|
+
* Execute task and call appropriate handler on completion
|
|
750
|
+
*
|
|
751
|
+
* Automatically adapts requests for v2 servers and normalizes responses.
|
|
752
|
+
*/
|
|
753
|
+
async executeAndHandle(taskType, handlerName, params, inputHandler, options) {
|
|
754
|
+
// Normalize params for backwards compatibility before validation
|
|
755
|
+
let normalizedParams = (0, request_normalizer_1.normalizeRequestParams)(taskType, params, {
|
|
756
|
+
skipIdempotencyAutoInject: options?.skipIdempotencyAutoInject,
|
|
757
|
+
});
|
|
758
|
+
// Inject an idempotency_key for mutating tools before schema validation
|
|
759
|
+
// so callers don't have to supply one. TaskExecutor also guards against
|
|
760
|
+
// missing keys, but validation happens here first — do the injection up
|
|
761
|
+
// front so the request passes the spec's required-field check.
|
|
762
|
+
// `options.skipIdempotencyAutoInject` disables this for compliance
|
|
763
|
+
// testing that needs to exercise server-side missing-key behavior.
|
|
764
|
+
if (!options?.skipIdempotencyAutoInject &&
|
|
765
|
+
(0, idempotency_1.isMutatingTask)(taskType) &&
|
|
766
|
+
normalizedParams &&
|
|
767
|
+
typeof normalizedParams === 'object' &&
|
|
768
|
+
!normalizedParams.idempotency_key) {
|
|
769
|
+
normalizedParams = { ...normalizedParams, idempotency_key: (0, idempotency_1.generateIdempotencyKey)() };
|
|
770
|
+
}
|
|
771
|
+
// Validate request params against schema. When compliance testing has
|
|
772
|
+
// asked us to suppress idempotency auto-injection, also skip the
|
|
773
|
+
// client-side required-field check — the whole point of the test is to
|
|
774
|
+
// send a missing-key request through and observe the server's response.
|
|
775
|
+
if (!options?.skipIdempotencyAutoInject) {
|
|
776
|
+
this.validateRequest(taskType, normalizedParams);
|
|
777
|
+
}
|
|
778
|
+
// Validate required features before sending request
|
|
779
|
+
await this.validateTaskFeatures(taskType);
|
|
780
|
+
// Guard mutating calls against pre-v3 sellers when opted in.
|
|
781
|
+
if (this.config.requireV3ForMutations && (0, idempotency_1.isMutatingTask)(taskType)) {
|
|
782
|
+
await this.requireV3(taskType);
|
|
783
|
+
}
|
|
784
|
+
// Check for v3 features used against v2 servers - return empty result if unsupported
|
|
785
|
+
const earlyResult = await this.getEarlyResultForUnsupportedFeatures(taskType, normalizedParams);
|
|
786
|
+
if (earlyResult) {
|
|
787
|
+
return (0, match_1.attachMatch)(earlyResult);
|
|
788
|
+
}
|
|
789
|
+
const agent = await this.ensureEndpointDiscovered();
|
|
790
|
+
// Adapt request for v2 servers if needed
|
|
791
|
+
const serverVersion = await this.detectServerVersion();
|
|
792
|
+
const adaptedParams = await this.adaptRequestForServerVersion(taskType, normalizedParams);
|
|
793
|
+
const result = await this.executor.executeTask(agent, taskType, adaptedParams, inputHandler, options, serverVersion);
|
|
794
|
+
// Normalize response to v3 format
|
|
795
|
+
if (result.success && result.data) {
|
|
796
|
+
result.data = this.normalizeResponseToV3(taskType, result.data);
|
|
797
|
+
}
|
|
798
|
+
// Call handler if task completed successfully and handler is configured
|
|
799
|
+
if (result.status === 'completed' && result.success && this.asyncHandler) {
|
|
800
|
+
const handler = this.config.handlers?.[handlerName];
|
|
801
|
+
if (handler) {
|
|
802
|
+
const metadata = {
|
|
803
|
+
operation_id: options?.contextId || 'sync',
|
|
804
|
+
context_id: options?.contextId,
|
|
805
|
+
task_id: result.metadata.taskId,
|
|
806
|
+
agent_id: this.agent.id,
|
|
807
|
+
task_type: taskType,
|
|
808
|
+
timestamp: new Date().toISOString(),
|
|
809
|
+
};
|
|
810
|
+
await handler(result.data, metadata);
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
return result;
|
|
814
|
+
}
|
|
815
|
+
/**
|
|
816
|
+
* Adapt request parameters for the detected server version
|
|
817
|
+
*
|
|
818
|
+
* Converts v3-style requests to v2 format when talking to v2 servers.
|
|
819
|
+
*/
|
|
820
|
+
async adaptRequestForServerVersion(taskType, params) {
|
|
821
|
+
// Get server version (cached after first call)
|
|
822
|
+
const version = await this.detectServerVersion();
|
|
823
|
+
let adapted = params;
|
|
824
|
+
if (version !== 'v3') {
|
|
825
|
+
// Adapt v3 requests for v2 servers
|
|
826
|
+
switch (taskType) {
|
|
827
|
+
case 'get_products':
|
|
828
|
+
adapted = (0, pricing_adapter_1.adaptGetProductsRequestForV2)(params);
|
|
829
|
+
break;
|
|
830
|
+
case 'create_media_buy':
|
|
831
|
+
adapted = (0, creative_adapter_1.adaptCreateMediaBuyRequestForV2)(params);
|
|
832
|
+
break;
|
|
833
|
+
case 'update_media_buy':
|
|
834
|
+
adapted = (0, creative_adapter_1.adaptUpdateMediaBuyRequestForV2)(params);
|
|
835
|
+
break;
|
|
836
|
+
case 'sync_creatives':
|
|
837
|
+
adapted = (0, sync_creatives_adapter_1.adaptSyncCreativesRequestForV2)(params);
|
|
838
|
+
break;
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
// Strip any top-level fields not declared in the agent's tool schema.
|
|
842
|
+
// This handles partial implementations (agents that omit some fields)
|
|
843
|
+
// and prevents unknown fields from causing validation errors on the
|
|
844
|
+
// remote server.
|
|
845
|
+
// Fails open when no schema is cached OR when the schema declares no
|
|
846
|
+
// properties (JSON Schema semantics: an object with no properties
|
|
847
|
+
// and no `additionalProperties: false` accepts any shape). Post-#909,
|
|
848
|
+
// framework-registered agents publish `{ type: 'object', properties: {} }`
|
|
849
|
+
// on tools/list — treating that as "strip everything" would silently
|
|
850
|
+
// drop every field the buyer sent.
|
|
851
|
+
// MCP-only in practice: A2A agents don't populate cachedToolSchemas.
|
|
852
|
+
//
|
|
853
|
+
// Note: the empty-properties state from framework agents is intentional
|
|
854
|
+
// (LLM context-window economy — see `PASSTHROUGH_INPUT_SCHEMA` in
|
|
855
|
+
// `create-adcp-server.ts`). Don't try to "fix" it by wiring per-tool
|
|
856
|
+
// schemas into `tools/list`. If you genuinely need to know a tool's
|
|
857
|
+
// shape (gating, validation, version adaptation), read raw JSON from
|
|
858
|
+
// `schemas/cache/{version}/` via `schema-loader.ts`. The right defense
|
|
859
|
+
// against unknown-field errors is to gate at the *injection site*
|
|
860
|
+
// (e.g. `applyBrandInvariant` in the storyboard runner — see #940),
|
|
861
|
+
// not to lean on this strip path as a backstop.
|
|
862
|
+
const toolSchema = this.cachedToolSchemas?.get(taskType);
|
|
863
|
+
if (!toolSchema || Object.keys(toolSchema).length === 0)
|
|
864
|
+
return adapted;
|
|
865
|
+
const declaredFields = new Set(Object.keys(toolSchema));
|
|
866
|
+
// The v2 adapter may rename fields (e.g. brand → brand_manifest) that a
|
|
867
|
+
// v3 server — misdetected as v2 — doesn't declare. Reconcile known
|
|
868
|
+
// adapter mappings so the value isn't silently dropped.
|
|
869
|
+
const adapterAliases = [['brand_manifest', 'brand']];
|
|
870
|
+
for (const [adapterField, schemaField] of adapterAliases) {
|
|
871
|
+
if (adapted[adapterField] !== undefined &&
|
|
872
|
+
!declaredFields.has(adapterField) &&
|
|
873
|
+
declaredFields.has(schemaField) &&
|
|
874
|
+
adapted[schemaField] === undefined) {
|
|
875
|
+
adapted[schemaField] = adapted[adapterField];
|
|
876
|
+
delete adapted[adapterField];
|
|
877
|
+
}
|
|
878
|
+
}
|
|
879
|
+
// Protocol envelope fields are always preserved — they live at the
|
|
880
|
+
// protocol layer, not in individual tool schemas.
|
|
881
|
+
const envelopeFields = adcp_1.ADCP_ENVELOPE_FIELDS;
|
|
882
|
+
const filtered = {};
|
|
883
|
+
const stripped = [];
|
|
884
|
+
for (const [key, value] of Object.entries(adapted)) {
|
|
885
|
+
if (declaredFields.has(key) || envelopeFields.has(key)) {
|
|
886
|
+
filtered[key] = value;
|
|
887
|
+
}
|
|
888
|
+
else {
|
|
889
|
+
stripped.push(key);
|
|
890
|
+
}
|
|
891
|
+
}
|
|
892
|
+
if (stripped.length > 0) {
|
|
893
|
+
console.warn(`[AdCP] Stripping fields not declared in agent "${this.agent.id}" schema for ${taskType}: ${stripped.join(', ')}`);
|
|
894
|
+
}
|
|
895
|
+
return filtered;
|
|
896
|
+
}
|
|
897
|
+
/**
|
|
898
|
+
* Normalize response to v3 format
|
|
899
|
+
*
|
|
900
|
+
* Converts v2 responses to v3 structure for consistent API surface.
|
|
901
|
+
*/
|
|
902
|
+
normalizeResponseToV3(taskType, data) {
|
|
903
|
+
switch (taskType) {
|
|
904
|
+
case 'get_products':
|
|
905
|
+
return (0, pricing_adapter_1.normalizeGetProductsResponse)(data);
|
|
906
|
+
case 'list_creative_formats':
|
|
907
|
+
return (0, format_renders_1.normalizeFormatsResponse)(data);
|
|
908
|
+
case 'preview_creative':
|
|
909
|
+
return (0, preview_normalizer_1.normalizePreviewCreativeResponse)(data);
|
|
910
|
+
case 'create_media_buy':
|
|
911
|
+
case 'update_media_buy':
|
|
912
|
+
return (0, creative_adapter_1.normalizeMediaBuyResponse)(data);
|
|
913
|
+
default:
|
|
914
|
+
return data;
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
/**
|
|
918
|
+
* Check if request uses v3 features that the server doesn't support
|
|
919
|
+
*
|
|
920
|
+
* Returns an early empty result if the request requires v3 features
|
|
921
|
+
* that the server doesn't support. This treats "products matching unsupported
|
|
922
|
+
* capability" as an empty result set rather than an error.
|
|
923
|
+
*
|
|
924
|
+
* @returns TaskResult with empty data if v3 features are unsupported, null to proceed normally
|
|
925
|
+
*/
|
|
926
|
+
async getEarlyResultForUnsupportedFeatures(taskType, params) {
|
|
927
|
+
// Only check for tasks that have v3-specific features
|
|
928
|
+
if (taskType !== 'get_products') {
|
|
929
|
+
return null;
|
|
930
|
+
}
|
|
931
|
+
// Get capabilities to check what the server supports
|
|
932
|
+
const capabilities = await this.getCapabilities();
|
|
933
|
+
// If server is v3, all features are supported - proceed normally
|
|
934
|
+
if (capabilities.version === 'v3') {
|
|
935
|
+
return null;
|
|
936
|
+
}
|
|
937
|
+
// Check for v3-only features that would make this query return empty results.
|
|
938
|
+
//
|
|
939
|
+
// TODO: Once we remove backwards-compatibility stripping in adaptGetProductsRequestForV2,
|
|
940
|
+
// re-enable these guards so v3-only requests fail fast against v2 servers:
|
|
941
|
+
// (params.property_list && !capabilities.features.propertyListFiltering) ||
|
|
942
|
+
// (params.filters?.required_features?.includes('property_list_filtering') &&
|
|
943
|
+
// !capabilities.features.propertyListFiltering) ||
|
|
944
|
+
//
|
|
945
|
+
// TODO: Surface the reason for empty results to the caller (e.g. metadata or a
|
|
946
|
+
// structured warning) so they can distinguish "no products matched" from "server
|
|
947
|
+
// lacks v3 feature support" vs "request failed". Right now empty results from a
|
|
948
|
+
// capability mismatch look identical to a seller that simply has no inventory.
|
|
949
|
+
const usesUnsupportedFeature =
|
|
950
|
+
// required_features: content_standards requires contentStandards
|
|
951
|
+
params.filters?.required_features?.includes('content_standards') && !capabilities.features.contentStandards;
|
|
952
|
+
if (!usesUnsupportedFeature) {
|
|
953
|
+
return null; // Proceed normally
|
|
954
|
+
}
|
|
955
|
+
// Log warning about v2 downgrade
|
|
956
|
+
console.warn(`[AdCP] v3-only features not supported by server "${this.agent.id}" (${capabilities.version}). Returning empty results.`);
|
|
957
|
+
// Return empty result - semantically "no products match this filter"
|
|
958
|
+
const emptyResponse = {
|
|
959
|
+
products: [],
|
|
960
|
+
property_list_applied: false,
|
|
961
|
+
};
|
|
962
|
+
return {
|
|
963
|
+
success: true,
|
|
964
|
+
status: 'completed',
|
|
965
|
+
data: emptyResponse,
|
|
966
|
+
metadata: {
|
|
967
|
+
taskId: `early_${Date.now()}`,
|
|
968
|
+
taskName: taskType,
|
|
969
|
+
agent: {
|
|
970
|
+
id: this.agent.id,
|
|
971
|
+
name: this.agent.name,
|
|
972
|
+
protocol: this.normalizedAgent.protocol,
|
|
973
|
+
},
|
|
974
|
+
responseTimeMs: 0,
|
|
975
|
+
timestamp: new Date().toISOString(),
|
|
976
|
+
clarificationRounds: 0,
|
|
977
|
+
status: 'completed',
|
|
978
|
+
},
|
|
979
|
+
};
|
|
980
|
+
}
|
|
981
|
+
// ====== MEDIA BUY TASKS ======
|
|
982
|
+
/**
|
|
983
|
+
* Discover available advertising products
|
|
984
|
+
*
|
|
985
|
+
* @param params - Product discovery parameters
|
|
986
|
+
* @param inputHandler - Handler for clarification requests
|
|
987
|
+
* @param options - Task execution options
|
|
988
|
+
*
|
|
989
|
+
* @example
|
|
990
|
+
* ```typescript
|
|
991
|
+
* const products = await client.getProducts(
|
|
992
|
+
* {
|
|
993
|
+
* brief: 'Premium coffee brands for millennials',
|
|
994
|
+
* promoted_offering: 'Artisan coffee blends'
|
|
995
|
+
* },
|
|
996
|
+
* (context) => {
|
|
997
|
+
* if (context.inputRequest.field === 'budget') return 50000;
|
|
998
|
+
* return context.deferToHuman();
|
|
999
|
+
* }
|
|
1000
|
+
* );
|
|
1001
|
+
* ```
|
|
1002
|
+
*/
|
|
1003
|
+
async getProducts(params, inputHandler, options) {
|
|
1004
|
+
return this.executeAndHandle('get_products', 'onGetProductsStatusChange', params, inputHandler, options);
|
|
1005
|
+
}
|
|
1006
|
+
/**
|
|
1007
|
+
* List available creative formats
|
|
1008
|
+
*
|
|
1009
|
+
* @param params - Format listing parameters
|
|
1010
|
+
* @param inputHandler - Handler for clarification requests
|
|
1011
|
+
* @param options - Task execution options
|
|
1012
|
+
*/
|
|
1013
|
+
async listCreativeFormats(params, inputHandler, options) {
|
|
1014
|
+
return this.executeAndHandle('list_creative_formats', 'onListCreativeFormatsStatusChange', params, inputHandler, options);
|
|
1015
|
+
}
|
|
1016
|
+
/**
|
|
1017
|
+
* Create a new media buy
|
|
1018
|
+
*
|
|
1019
|
+
* @param params - Media buy creation parameters
|
|
1020
|
+
* @param inputHandler - Handler for clarification requests
|
|
1021
|
+
* @param options - Task execution options
|
|
1022
|
+
*/
|
|
1023
|
+
async createMediaBuy(params, inputHandler, options) {
|
|
1024
|
+
// Merge library defaults with consumer-provided reporting_webhook config
|
|
1025
|
+
// Library provides url/auth/frequency defaults, consumer can override any field
|
|
1026
|
+
// Generates a media_buy_delivery webhook URL using operation_id pattern: delivery_report_{agent_id}_{YYYY-MM}
|
|
1027
|
+
if (this.config.webhookUrlTemplate) {
|
|
1028
|
+
const now = new Date();
|
|
1029
|
+
const year = now.getUTCFullYear();
|
|
1030
|
+
const month = String(now.getUTCMonth() + 1).padStart(2, '0');
|
|
1031
|
+
const operationId = `delivery_report_${this.agent.id}_${year}-${month}`;
|
|
1032
|
+
const deliveryWebhookUrl = this.getWebhookUrl('media_buy_delivery', operationId);
|
|
1033
|
+
// Library defaults
|
|
1034
|
+
const libraryDefaults = {
|
|
1035
|
+
url: deliveryWebhookUrl,
|
|
1036
|
+
authentication: {
|
|
1037
|
+
schemes: ['HMAC-SHA256'],
|
|
1038
|
+
credentials: this.config.webhookSecret || 'placeholder_secret_min_32_characters_required',
|
|
1039
|
+
},
|
|
1040
|
+
reporting_frequency: (this.config.reportingWebhookFrequency || 'daily'),
|
|
1041
|
+
};
|
|
1042
|
+
// Deep merge: consumer overrides library defaults
|
|
1043
|
+
params = {
|
|
1044
|
+
...params,
|
|
1045
|
+
reporting_webhook: {
|
|
1046
|
+
...libraryDefaults,
|
|
1047
|
+
...params.reporting_webhook,
|
|
1048
|
+
authentication: {
|
|
1049
|
+
...libraryDefaults.authentication,
|
|
1050
|
+
...params.reporting_webhook?.authentication,
|
|
1051
|
+
},
|
|
1052
|
+
},
|
|
1053
|
+
};
|
|
1054
|
+
}
|
|
1055
|
+
return this.executeAndHandle('create_media_buy', 'onCreateMediaBuyStatusChange', params, inputHandler, options);
|
|
1056
|
+
}
|
|
1057
|
+
/**
|
|
1058
|
+
* Update an existing media buy
|
|
1059
|
+
*
|
|
1060
|
+
* @param params - Media buy update parameters
|
|
1061
|
+
* @param inputHandler - Handler for clarification requests
|
|
1062
|
+
* @param options - Task execution options
|
|
1063
|
+
*/
|
|
1064
|
+
async updateMediaBuy(params, inputHandler, options) {
|
|
1065
|
+
return this.executeAndHandle('update_media_buy', 'onUpdateMediaBuyStatusChange', params, inputHandler, options);
|
|
1066
|
+
}
|
|
1067
|
+
/**
|
|
1068
|
+
* Sync creative assets
|
|
1069
|
+
*
|
|
1070
|
+
* @param params - Creative sync parameters
|
|
1071
|
+
* @param inputHandler - Handler for clarification requests
|
|
1072
|
+
* @param options - Task execution options
|
|
1073
|
+
*/
|
|
1074
|
+
async syncCreatives(params, inputHandler, options) {
|
|
1075
|
+
return this.executeAndHandle('sync_creatives', 'onSyncCreativesStatusChange', params, inputHandler, options);
|
|
1076
|
+
}
|
|
1077
|
+
/**
|
|
1078
|
+
* List creative assets
|
|
1079
|
+
*
|
|
1080
|
+
* @param params - Creative listing parameters
|
|
1081
|
+
* @param inputHandler - Handler for clarification requests
|
|
1082
|
+
* @param options - Task execution options
|
|
1083
|
+
*/
|
|
1084
|
+
async listCreatives(params, inputHandler, options) {
|
|
1085
|
+
return this.executeAndHandle('list_creatives', 'onListCreativesStatusChange', params, inputHandler, options);
|
|
1086
|
+
}
|
|
1087
|
+
/**
|
|
1088
|
+
* Preview a creative
|
|
1089
|
+
*
|
|
1090
|
+
* @param params - Preview creative parameters
|
|
1091
|
+
* @param inputHandler - Handler for clarification requests
|
|
1092
|
+
* @param options - Task execution options
|
|
1093
|
+
*/
|
|
1094
|
+
async previewCreative(params, inputHandler, options) {
|
|
1095
|
+
return this.executeAndHandle('preview_creative', 'onPreviewCreativeStatusChange', params, inputHandler, options);
|
|
1096
|
+
}
|
|
1097
|
+
/**
|
|
1098
|
+
* Get media buy status, creative approvals, and optional delivery snapshots
|
|
1099
|
+
*
|
|
1100
|
+
* @param params - Request parameters
|
|
1101
|
+
* @param inputHandler - Handler for clarification requests
|
|
1102
|
+
* @param options - Task execution options
|
|
1103
|
+
*/
|
|
1104
|
+
async getMediaBuys(params, inputHandler, options) {
|
|
1105
|
+
return this.executeAndHandle('get_media_buys', 'onGetMediaBuysStatusChange', params, inputHandler, options);
|
|
1106
|
+
}
|
|
1107
|
+
/**
|
|
1108
|
+
* Get media buy delivery information
|
|
1109
|
+
*
|
|
1110
|
+
* @param params - Delivery information parameters
|
|
1111
|
+
* @param inputHandler - Handler for clarification requests
|
|
1112
|
+
* @param options - Task execution options
|
|
1113
|
+
*/
|
|
1114
|
+
async getMediaBuyDelivery(params, inputHandler, options) {
|
|
1115
|
+
return this.executeAndHandle('get_media_buy_delivery', 'onGetMediaBuyDeliveryStatusChange', params, inputHandler, options);
|
|
1116
|
+
}
|
|
1117
|
+
/**
|
|
1118
|
+
* Provide performance feedback
|
|
1119
|
+
*
|
|
1120
|
+
* @param params - Performance feedback parameters
|
|
1121
|
+
* @param inputHandler - Handler for clarification requests
|
|
1122
|
+
* @param options - Task execution options
|
|
1123
|
+
*/
|
|
1124
|
+
async providePerformanceFeedback(params, inputHandler, options) {
|
|
1125
|
+
return this.executeAndHandle('provide_performance_feedback', 'onProvidePerformanceFeedbackStatusChange', params, inputHandler, options);
|
|
1126
|
+
}
|
|
1127
|
+
// ====== SIGNALS TASKS ======
|
|
1128
|
+
/**
|
|
1129
|
+
* Get audience signals
|
|
1130
|
+
*
|
|
1131
|
+
* @param params - Signals request parameters
|
|
1132
|
+
* @param inputHandler - Handler for clarification requests
|
|
1133
|
+
* @param options - Task execution options
|
|
1134
|
+
*/
|
|
1135
|
+
async getSignals(params, inputHandler, options) {
|
|
1136
|
+
return this.executeAndHandle('get_signals', 'onGetSignalsStatusChange', params, inputHandler, options);
|
|
1137
|
+
}
|
|
1138
|
+
/**
|
|
1139
|
+
* Activate audience signals
|
|
1140
|
+
*
|
|
1141
|
+
* @param params - Signal activation parameters
|
|
1142
|
+
* @param inputHandler - Handler for clarification requests
|
|
1143
|
+
* @param options - Task execution options
|
|
1144
|
+
*/
|
|
1145
|
+
async activateSignal(params, inputHandler, options) {
|
|
1146
|
+
return this.executeAndHandle('activate_signal', 'onActivateSignalStatusChange', params, inputHandler, options);
|
|
1147
|
+
}
|
|
1148
|
+
// ====== GOVERNANCE TASKS ======
|
|
1149
|
+
/**
|
|
1150
|
+
* Sync campaign plans to a governance agent.
|
|
1151
|
+
* Plans define authorized parameters: budget, channels, flight dates, markets, policies, delegations.
|
|
1152
|
+
*
|
|
1153
|
+
* Uses the governance agent from config.governance.campaign.agent by default.
|
|
1154
|
+
* Pass an explicit agent via options.agent to override.
|
|
1155
|
+
*/
|
|
1156
|
+
async syncPlans(params, inputHandler, options) {
|
|
1157
|
+
const agent = options?.agent ?? this.getGovernanceAgent();
|
|
1158
|
+
return this.executor.executeTask(agent, 'sync_plans', params, inputHandler, options);
|
|
1159
|
+
}
|
|
1160
|
+
/**
|
|
1161
|
+
* Get governance audit logs for one or more plans.
|
|
1162
|
+
* Returns budget state, channel allocation, per-campaign breakdown, and audit trail.
|
|
1163
|
+
*
|
|
1164
|
+
* Uses the governance agent from config.governance.campaign.agent by default.
|
|
1165
|
+
* Pass an explicit agent via options.agent to override.
|
|
1166
|
+
*/
|
|
1167
|
+
async getPlanAuditLogs(params, options) {
|
|
1168
|
+
const agent = options?.agent ?? this.getGovernanceAgent();
|
|
1169
|
+
return this.executor.executeTask(agent, 'get_plan_audit_logs', params, undefined, options);
|
|
1170
|
+
}
|
|
1171
|
+
/**
|
|
1172
|
+
* Report a governance outcome for an async task that has resolved.
|
|
1173
|
+
*
|
|
1174
|
+
* Use this when a task returned status 'submitted' or 'working' and
|
|
1175
|
+
* later resolves via polling or webhooks. The checkId is available
|
|
1176
|
+
* on the original TaskResult at result.governance.checkId.
|
|
1177
|
+
*/
|
|
1178
|
+
async reportGovernanceOutcome(checkId, outcome, governanceContext, sellerResponse, error) {
|
|
1179
|
+
const middleware = this.executor.getGovernanceMiddleware();
|
|
1180
|
+
if (!middleware) {
|
|
1181
|
+
throw new Error('No governance middleware configured. Set config.governance.campaign to enable governance.');
|
|
1182
|
+
}
|
|
1183
|
+
return middleware.reportOutcome(checkId, outcome, sellerResponse, error, [], governanceContext);
|
|
1184
|
+
}
|
|
1185
|
+
getGovernanceAgent() {
|
|
1186
|
+
const agent = this.config.governance?.campaign?.agent;
|
|
1187
|
+
if (!agent) {
|
|
1188
|
+
throw new Error('No governance agent configured. Either pass an explicit agent via options.agent or set config.governance.campaign.agent.');
|
|
1189
|
+
}
|
|
1190
|
+
return agent;
|
|
1191
|
+
}
|
|
1192
|
+
// ====== PROTOCOL TASKS ======
|
|
1193
|
+
/**
|
|
1194
|
+
* Get AdCP capabilities
|
|
1195
|
+
*
|
|
1196
|
+
* @param params - Capabilities request parameters
|
|
1197
|
+
* @param inputHandler - Handler for clarification requests
|
|
1198
|
+
* @param options - Task execution options
|
|
1199
|
+
*/
|
|
1200
|
+
async getAdcpCapabilities(params, inputHandler, options) {
|
|
1201
|
+
const agent = await this.ensureEndpointDiscovered();
|
|
1202
|
+
return this.executor.executeTask(agent, 'get_adcp_capabilities', params, inputHandler, options);
|
|
1203
|
+
}
|
|
1204
|
+
// ====== CREATIVE BUILD TASKS ======
|
|
1205
|
+
/**
|
|
1206
|
+
* Build a creative from a format and brand context
|
|
1207
|
+
*/
|
|
1208
|
+
async buildCreative(params, inputHandler, options) {
|
|
1209
|
+
return this.executeAndHandle('build_creative', 'onBuildCreativeStatusChange', params, inputHandler, options);
|
|
1210
|
+
}
|
|
1211
|
+
// ====== ACCOUNT & AUDIENCE TASKS ======
|
|
1212
|
+
/**
|
|
1213
|
+
* List accounts
|
|
1214
|
+
*/
|
|
1215
|
+
async listAccounts(params, inputHandler, options) {
|
|
1216
|
+
return this.executeAndHandle('list_accounts', 'onListAccountsStatusChange', params, inputHandler, options);
|
|
1217
|
+
}
|
|
1218
|
+
/**
|
|
1219
|
+
* Sync accounts
|
|
1220
|
+
*/
|
|
1221
|
+
async syncAccounts(params, inputHandler, options) {
|
|
1222
|
+
return this.executeAndHandle('sync_accounts', 'onSyncAccountsStatusChange', params, inputHandler, options);
|
|
1223
|
+
}
|
|
1224
|
+
/**
|
|
1225
|
+
* Sync audiences
|
|
1226
|
+
*/
|
|
1227
|
+
async syncAudiences(params, inputHandler, options) {
|
|
1228
|
+
return this.executeAndHandle('sync_audiences', 'onSyncAudiencesStatusChange', params, inputHandler, options);
|
|
1229
|
+
}
|
|
1230
|
+
// ====== GOVERNANCE TASKS ======
|
|
1231
|
+
/**
|
|
1232
|
+
* Create a property list
|
|
1233
|
+
*/
|
|
1234
|
+
async createPropertyList(params, inputHandler, options) {
|
|
1235
|
+
return this.executeAndHandle('create_property_list', 'onCreatePropertyListStatusChange', params, inputHandler, options);
|
|
1236
|
+
}
|
|
1237
|
+
/**
|
|
1238
|
+
* Get a property list
|
|
1239
|
+
*/
|
|
1240
|
+
async getPropertyList(params, inputHandler, options) {
|
|
1241
|
+
return this.executeAndHandle('get_property_list', 'onGetPropertyListStatusChange', params, inputHandler, options);
|
|
1242
|
+
}
|
|
1243
|
+
/**
|
|
1244
|
+
* Update a property list
|
|
1245
|
+
*/
|
|
1246
|
+
async updatePropertyList(params, inputHandler, options) {
|
|
1247
|
+
return this.executeAndHandle('update_property_list', 'onUpdatePropertyListStatusChange', params, inputHandler, options);
|
|
1248
|
+
}
|
|
1249
|
+
/**
|
|
1250
|
+
* List property lists
|
|
1251
|
+
*/
|
|
1252
|
+
async listPropertyLists(params, inputHandler, options) {
|
|
1253
|
+
return this.executeAndHandle('list_property_lists', 'onListPropertyListsStatusChange', params, inputHandler, options);
|
|
1254
|
+
}
|
|
1255
|
+
/**
|
|
1256
|
+
* Delete a property list
|
|
1257
|
+
*/
|
|
1258
|
+
async deletePropertyList(params, inputHandler, options) {
|
|
1259
|
+
return this.executeAndHandle('delete_property_list', 'onDeletePropertyListStatusChange', params, inputHandler, options);
|
|
1260
|
+
}
|
|
1261
|
+
/**
|
|
1262
|
+
* List content standards
|
|
1263
|
+
*/
|
|
1264
|
+
async listContentStandards(params, inputHandler, options) {
|
|
1265
|
+
return this.executeAndHandle('list_content_standards', 'onListContentStandardsStatusChange', params, inputHandler, options);
|
|
1266
|
+
}
|
|
1267
|
+
/**
|
|
1268
|
+
* Get content standards
|
|
1269
|
+
*/
|
|
1270
|
+
async getContentStandards(params, inputHandler, options) {
|
|
1271
|
+
return this.executeAndHandle('get_content_standards', 'onGetContentStandardsStatusChange', params, inputHandler, options);
|
|
1272
|
+
}
|
|
1273
|
+
/**
|
|
1274
|
+
* Calibrate content against standards
|
|
1275
|
+
*/
|
|
1276
|
+
async calibrateContent(params, inputHandler, options) {
|
|
1277
|
+
return this.executeAndHandle('calibrate_content', 'onCalibrateContentStatusChange', params, inputHandler, options);
|
|
1278
|
+
}
|
|
1279
|
+
/**
|
|
1280
|
+
* Validate content delivery
|
|
1281
|
+
*/
|
|
1282
|
+
async validateContentDelivery(params, inputHandler, options) {
|
|
1283
|
+
return this.executeAndHandle('validate_content_delivery', 'onValidateContentDeliveryStatusChange', params, inputHandler, options);
|
|
1284
|
+
}
|
|
1285
|
+
// ====== SPONSORED INTELLIGENCE TASKS ======
|
|
1286
|
+
/**
|
|
1287
|
+
* Get an SI offering
|
|
1288
|
+
*/
|
|
1289
|
+
async siGetOffering(params, inputHandler, options) {
|
|
1290
|
+
return this.executeAndHandle('si_get_offering', 'onSIGetOfferingStatusChange', params, inputHandler, options);
|
|
1291
|
+
}
|
|
1292
|
+
/**
|
|
1293
|
+
* Initiate an SI session
|
|
1294
|
+
*/
|
|
1295
|
+
async siInitiateSession(params, inputHandler, options) {
|
|
1296
|
+
return this.executeAndHandle('si_initiate_session', 'onSIInitiateSessionStatusChange', params, inputHandler, options);
|
|
1297
|
+
}
|
|
1298
|
+
/**
|
|
1299
|
+
* Send a message in an SI session
|
|
1300
|
+
*/
|
|
1301
|
+
async siSendMessage(params, inputHandler, options) {
|
|
1302
|
+
return this.executeAndHandle('si_send_message', 'onSISendMessageStatusChange', params, inputHandler, options);
|
|
1303
|
+
}
|
|
1304
|
+
/**
|
|
1305
|
+
* Terminate an SI session
|
|
1306
|
+
*/
|
|
1307
|
+
async siTerminateSession(params, inputHandler, options) {
|
|
1308
|
+
return this.executeAndHandle('si_terminate_session', 'onSITerminateSessionStatusChange', params, inputHandler, options);
|
|
1309
|
+
}
|
|
1310
|
+
// ====== GENERIC TASK EXECUTION ======
|
|
1311
|
+
/**
|
|
1312
|
+
* Execute any task by name with type safety
|
|
1313
|
+
*
|
|
1314
|
+
* @param taskName - Name of the task to execute
|
|
1315
|
+
* @param params - Task parameters
|
|
1316
|
+
* @param inputHandler - Handler for clarification requests
|
|
1317
|
+
* @param options - Task execution options
|
|
1318
|
+
*
|
|
1319
|
+
* @example
|
|
1320
|
+
* ```typescript
|
|
1321
|
+
* const result = await client.executeTask(
|
|
1322
|
+
* 'get_products',
|
|
1323
|
+
* { brief: 'Coffee brands' },
|
|
1324
|
+
* handler
|
|
1325
|
+
* );
|
|
1326
|
+
* ```
|
|
1327
|
+
*/
|
|
1328
|
+
async executeTask(taskName, params, inputHandler, options) {
|
|
1329
|
+
const normalizedParams = (0, request_normalizer_1.normalizeRequestParams)(taskName, params, {
|
|
1330
|
+
skipIdempotencyAutoInject: options?.skipIdempotencyAutoInject,
|
|
1331
|
+
});
|
|
1332
|
+
await this.validateTaskFeatures(taskName);
|
|
1333
|
+
if (this.config.requireV3ForMutations && (0, idempotency_1.isMutatingTask)(taskName)) {
|
|
1334
|
+
await this.requireV3(taskName);
|
|
1335
|
+
}
|
|
1336
|
+
const agent = await this.ensureEndpointDiscovered();
|
|
1337
|
+
// Adapt request for the server's protocol version (e.g. strip v3-only
|
|
1338
|
+
// fields like buying_mode when talking to v2 agents).
|
|
1339
|
+
const serverVersion = await this.detectServerVersion();
|
|
1340
|
+
const adaptedParams = await this.adaptRequestForServerVersion(taskName, normalizedParams);
|
|
1341
|
+
const result = await this.executor.executeTask(agent, taskName, adaptedParams, inputHandler, options, serverVersion);
|
|
1342
|
+
// Normalize response to v3 format for consistent API surface
|
|
1343
|
+
if (result.success && result.data) {
|
|
1344
|
+
result.data = this.normalizeResponseToV3(taskName, result.data);
|
|
1345
|
+
}
|
|
1346
|
+
return result;
|
|
1347
|
+
}
|
|
1348
|
+
// ====== DEFERRED TASK MANAGEMENT ======
|
|
1349
|
+
/**
|
|
1350
|
+
* Resume a deferred task using its token
|
|
1351
|
+
*
|
|
1352
|
+
* @param token - Deferred task token
|
|
1353
|
+
* @param inputHandler - Handler to provide the missing input
|
|
1354
|
+
*
|
|
1355
|
+
* @example
|
|
1356
|
+
* ```typescript
|
|
1357
|
+
* try {
|
|
1358
|
+
* await client.createMediaBuy(params, handler);
|
|
1359
|
+
* } catch (error) {
|
|
1360
|
+
* if (error instanceof DeferredTaskError) {
|
|
1361
|
+
* // Get human input and resume
|
|
1362
|
+
* const result = await client.resumeDeferredTask(
|
|
1363
|
+
* error.token,
|
|
1364
|
+
* (context) => humanProvidedValue
|
|
1365
|
+
* );
|
|
1366
|
+
* }
|
|
1367
|
+
* }
|
|
1368
|
+
* ```
|
|
1369
|
+
*/
|
|
1370
|
+
async resumeDeferredTask(token, inputHandler) {
|
|
1371
|
+
// This is a simplified implementation
|
|
1372
|
+
// In a full implementation, you'd need to store deferred task state
|
|
1373
|
+
// and restore it here
|
|
1374
|
+
throw new Error('Deferred task resumption requires storage configuration');
|
|
1375
|
+
}
|
|
1376
|
+
// ====== CONVERSATION MANAGEMENT ======
|
|
1377
|
+
/**
|
|
1378
|
+
* Continue an existing conversation with the agent
|
|
1379
|
+
*
|
|
1380
|
+
* @param message - Message to send to the agent
|
|
1381
|
+
* @param contextId - Conversation context ID to continue
|
|
1382
|
+
* @param inputHandler - Handler for any clarification requests
|
|
1383
|
+
*
|
|
1384
|
+
* @example
|
|
1385
|
+
* ```typescript
|
|
1386
|
+
* const agent = new ADCPClient(config);
|
|
1387
|
+
* const initial = await agent.getProducts({ brief: 'Tech products' });
|
|
1388
|
+
*
|
|
1389
|
+
* // Continue the conversation — use the server-returned contextId, not
|
|
1390
|
+
* // the client-minted correlation taskId.
|
|
1391
|
+
* const refined = await agent.continueConversation(
|
|
1392
|
+
* 'Focus only on laptops under $1000',
|
|
1393
|
+
* initial.metadata.contextId!
|
|
1394
|
+
* );
|
|
1395
|
+
* ```
|
|
1396
|
+
*/
|
|
1397
|
+
async continueConversation(message, contextId, inputHandler) {
|
|
1398
|
+
const agent = await this.ensureEndpointDiscovered();
|
|
1399
|
+
return this.executor.executeTask(agent, 'continue_conversation', { message }, inputHandler, { contextId });
|
|
1400
|
+
}
|
|
1401
|
+
/**
|
|
1402
|
+
* Get conversation history for a task
|
|
1403
|
+
*/
|
|
1404
|
+
getConversationHistory(taskId) {
|
|
1405
|
+
return this.executor.getConversationHistory(taskId);
|
|
1406
|
+
}
|
|
1407
|
+
/**
|
|
1408
|
+
* Clear conversation history for a task
|
|
1409
|
+
*/
|
|
1410
|
+
clearConversationHistory(taskId) {
|
|
1411
|
+
this.executor.clearConversationHistory(taskId);
|
|
1412
|
+
}
|
|
1413
|
+
// ====== AGENT INFORMATION ======
|
|
1414
|
+
/**
|
|
1415
|
+
* Get the agent configuration with normalized protocol
|
|
1416
|
+
*
|
|
1417
|
+
* Returns the agent config with:
|
|
1418
|
+
* - Protocol normalized (e.g., .well-known URLs switch to A2A)
|
|
1419
|
+
* - If canonical URL has been resolved, agent_uri will be the canonical URL
|
|
1420
|
+
*
|
|
1421
|
+
* For guaranteed canonical URL, use getResolvedAgent() instead.
|
|
1422
|
+
*/
|
|
1423
|
+
getAgent() {
|
|
1424
|
+
// If we have resolved the canonical URL, return config with it
|
|
1425
|
+
if (this.canonicalBaseUrl) {
|
|
1426
|
+
const { _needsDiscovery, _needsCanonicalUrl, ...cleanAgent } = this.normalizedAgent;
|
|
1427
|
+
return {
|
|
1428
|
+
...cleanAgent,
|
|
1429
|
+
agent_uri: this.canonicalBaseUrl,
|
|
1430
|
+
};
|
|
1431
|
+
}
|
|
1432
|
+
// Return normalized agent without internal flags
|
|
1433
|
+
const { _needsDiscovery, _needsCanonicalUrl, ...cleanAgent } = this.normalizedAgent;
|
|
1434
|
+
return { ...cleanAgent };
|
|
1435
|
+
}
|
|
1436
|
+
/**
|
|
1437
|
+
* Get the fully resolved agent configuration
|
|
1438
|
+
*
|
|
1439
|
+
* This async method ensures the agent config has the canonical URL resolved:
|
|
1440
|
+
* - For A2A: Fetches the agent card and uses its 'url' field
|
|
1441
|
+
* - For MCP: Performs endpoint discovery
|
|
1442
|
+
*
|
|
1443
|
+
* @returns Promise resolving to agent config with canonical URL
|
|
1444
|
+
*/
|
|
1445
|
+
async getResolvedAgent() {
|
|
1446
|
+
await this.resolveCanonicalUrl();
|
|
1447
|
+
return this.getAgent();
|
|
1448
|
+
}
|
|
1449
|
+
/**
|
|
1450
|
+
* Get the agent ID
|
|
1451
|
+
*/
|
|
1452
|
+
getAgentId() {
|
|
1453
|
+
return this.agent.id;
|
|
1454
|
+
}
|
|
1455
|
+
/**
|
|
1456
|
+
* Get the agent name
|
|
1457
|
+
*/
|
|
1458
|
+
getAgentName() {
|
|
1459
|
+
return this.agent.name;
|
|
1460
|
+
}
|
|
1461
|
+
/**
|
|
1462
|
+
* Get the agent protocol (may be normalized from original config)
|
|
1463
|
+
*/
|
|
1464
|
+
getProtocol() {
|
|
1465
|
+
return this.normalizedAgent.protocol;
|
|
1466
|
+
}
|
|
1467
|
+
/**
|
|
1468
|
+
* Get the canonical base URL for this agent
|
|
1469
|
+
*
|
|
1470
|
+
* Returns the canonical URL if already resolved, or computes it synchronously
|
|
1471
|
+
* from the configured URL. For the most accurate canonical URL (especially for A2A
|
|
1472
|
+
* where the agent card contains the authoritative URL), use resolveCanonicalUrl() first.
|
|
1473
|
+
*
|
|
1474
|
+
* The canonical URL is:
|
|
1475
|
+
* - For A2A: The 'url' field from the agent card (if resolved), or base URL with
|
|
1476
|
+
* the well-known agent card path stripped
|
|
1477
|
+
* - For MCP: The discovered endpoint with /mcp stripped
|
|
1478
|
+
*
|
|
1479
|
+
* @returns The canonical base URL (synchronous, may not be fully resolved)
|
|
1480
|
+
*/
|
|
1481
|
+
getCanonicalUrl() {
|
|
1482
|
+
// Return cached canonical URL if available
|
|
1483
|
+
if (this.canonicalBaseUrl) {
|
|
1484
|
+
return this.canonicalBaseUrl;
|
|
1485
|
+
}
|
|
1486
|
+
// Compute from configured URL (best effort without network call)
|
|
1487
|
+
return this.computeBaseUrl(this.normalizedAgent.agent_uri);
|
|
1488
|
+
}
|
|
1489
|
+
/**
|
|
1490
|
+
* Resolve and return the canonical base URL for this agent
|
|
1491
|
+
*
|
|
1492
|
+
* This async method ensures the canonical URL is properly resolved:
|
|
1493
|
+
* - For A2A: Fetches the agent card and uses its 'url' field
|
|
1494
|
+
* - For MCP: Performs endpoint discovery and strips /mcp suffix
|
|
1495
|
+
*
|
|
1496
|
+
* The result is cached, so subsequent calls are fast.
|
|
1497
|
+
*
|
|
1498
|
+
* @returns Promise resolving to the canonical base URL
|
|
1499
|
+
*/
|
|
1500
|
+
async resolveCanonicalUrl() {
|
|
1501
|
+
if (this.canonicalBaseUrl) {
|
|
1502
|
+
return this.canonicalBaseUrl;
|
|
1503
|
+
}
|
|
1504
|
+
if (this.normalizedAgent.protocol === 'a2a') {
|
|
1505
|
+
await this.ensureCanonicalUrlResolved();
|
|
1506
|
+
}
|
|
1507
|
+
else if (this.normalizedAgent.protocol === 'mcp') {
|
|
1508
|
+
await this.ensureEndpointDiscovered();
|
|
1509
|
+
}
|
|
1510
|
+
return this.canonicalBaseUrl || this.computeBaseUrl(this.normalizedAgent.agent_uri);
|
|
1511
|
+
}
|
|
1512
|
+
/**
|
|
1513
|
+
* Check if this agent is the same as another agent
|
|
1514
|
+
*
|
|
1515
|
+
* Compares agents by their canonical base URLs. Two agents are considered
|
|
1516
|
+
* the same if they have the same canonical URL, regardless of:
|
|
1517
|
+
* - Protocol (MCP vs A2A)
|
|
1518
|
+
* - URL format (with/without /mcp, with/without well-known agent card path)
|
|
1519
|
+
* - Trailing slashes
|
|
1520
|
+
*
|
|
1521
|
+
* @param other - Another agent configuration or SingleAgentClient to compare
|
|
1522
|
+
* @returns true if agents have the same canonical URL
|
|
1523
|
+
*/
|
|
1524
|
+
isSameAgent(other) {
|
|
1525
|
+
const thisUrl = this.getCanonicalUrl().toLowerCase();
|
|
1526
|
+
let otherUrl;
|
|
1527
|
+
if (other instanceof SingleAgentClient) {
|
|
1528
|
+
otherUrl = other.getCanonicalUrl().toLowerCase();
|
|
1529
|
+
}
|
|
1530
|
+
else {
|
|
1531
|
+
otherUrl = this.computeBaseUrl(other.agent_uri).toLowerCase();
|
|
1532
|
+
}
|
|
1533
|
+
return thisUrl === otherUrl;
|
|
1534
|
+
}
|
|
1535
|
+
/**
|
|
1536
|
+
* Async version of isSameAgent that resolves canonical URLs first
|
|
1537
|
+
*
|
|
1538
|
+
* This provides more accurate comparison for A2A agents since it fetches
|
|
1539
|
+
* the agent card to get the authoritative canonical URL.
|
|
1540
|
+
*
|
|
1541
|
+
* @param other - Another agent configuration or SingleAgentClient to compare
|
|
1542
|
+
* @returns Promise resolving to true if agents have the same canonical URL
|
|
1543
|
+
*/
|
|
1544
|
+
async isSameAgentResolved(other) {
|
|
1545
|
+
const thisUrl = (await this.resolveCanonicalUrl()).toLowerCase();
|
|
1546
|
+
let otherUrl;
|
|
1547
|
+
if (other instanceof SingleAgentClient) {
|
|
1548
|
+
otherUrl = (await other.resolveCanonicalUrl()).toLowerCase();
|
|
1549
|
+
}
|
|
1550
|
+
else {
|
|
1551
|
+
// For raw AgentConfig, we can only compute from the URL
|
|
1552
|
+
otherUrl = this.computeBaseUrl(other.agent_uri).toLowerCase();
|
|
1553
|
+
}
|
|
1554
|
+
return thisUrl === otherUrl;
|
|
1555
|
+
}
|
|
1556
|
+
/**
|
|
1557
|
+
* Get active tasks for this agent
|
|
1558
|
+
*/
|
|
1559
|
+
getActiveTasks() {
|
|
1560
|
+
return this.executor.getActiveTasks().filter(task => task.agent.id === this.agent.id);
|
|
1561
|
+
}
|
|
1562
|
+
// ====== TASK MANAGEMENT & NOTIFICATIONS ======
|
|
1563
|
+
/**
|
|
1564
|
+
* List all tasks for this agent with detailed information
|
|
1565
|
+
*
|
|
1566
|
+
* @returns Promise resolving to array of task information
|
|
1567
|
+
*
|
|
1568
|
+
* @example
|
|
1569
|
+
* ```typescript
|
|
1570
|
+
* const tasks = await client.listTasks();
|
|
1571
|
+
* tasks.forEach(task => {
|
|
1572
|
+
* console.log(`${task.taskName}: ${task.status}`);
|
|
1573
|
+
* });
|
|
1574
|
+
* ```
|
|
1575
|
+
*/
|
|
1576
|
+
async listTasks() {
|
|
1577
|
+
return this.executor.getTaskList(this.agent.id);
|
|
1578
|
+
}
|
|
1579
|
+
/**
|
|
1580
|
+
* Get detailed information about a specific task
|
|
1581
|
+
*
|
|
1582
|
+
* @param taskId - ID of the task to get information for
|
|
1583
|
+
* @returns Promise resolving to task information
|
|
1584
|
+
*/
|
|
1585
|
+
async getTaskInfo(taskId) {
|
|
1586
|
+
return this.executor.getTaskInfo(taskId);
|
|
1587
|
+
}
|
|
1588
|
+
/**
|
|
1589
|
+
* Subscribe to task notifications for this agent
|
|
1590
|
+
*
|
|
1591
|
+
* @param callback - Function to call when task status changes
|
|
1592
|
+
* @returns Unsubscribe function
|
|
1593
|
+
*
|
|
1594
|
+
* @example
|
|
1595
|
+
* ```typescript
|
|
1596
|
+
* const unsubscribe = client.onTaskUpdate((task) => {
|
|
1597
|
+
* console.log(`Task ${task.taskName} is now ${task.status}`);
|
|
1598
|
+
* if (task.status === 'completed') {
|
|
1599
|
+
* // Handle completion
|
|
1600
|
+
* }
|
|
1601
|
+
* });
|
|
1602
|
+
*
|
|
1603
|
+
* // Later, stop listening
|
|
1604
|
+
* unsubscribe();
|
|
1605
|
+
* ```
|
|
1606
|
+
*/
|
|
1607
|
+
onTaskUpdate(callback) {
|
|
1608
|
+
return this.executor.onTaskUpdate(this.agent.id, callback);
|
|
1609
|
+
}
|
|
1610
|
+
/**
|
|
1611
|
+
* Subscribe to all task events (create, update, complete, error)
|
|
1612
|
+
*
|
|
1613
|
+
* @param callbacks - Event callbacks for different task events
|
|
1614
|
+
* @returns Unsubscribe function
|
|
1615
|
+
*/
|
|
1616
|
+
onTaskEvents(callbacks) {
|
|
1617
|
+
return this.executor.onTaskEvents(this.agent.id, callbacks);
|
|
1618
|
+
}
|
|
1619
|
+
/**
|
|
1620
|
+
* Register webhook URL for receiving task notifications
|
|
1621
|
+
*
|
|
1622
|
+
* @param webhookUrl - URL to receive webhook notifications
|
|
1623
|
+
* @param taskTypes - Optional array of task types to watch (defaults to all)
|
|
1624
|
+
*
|
|
1625
|
+
* @example
|
|
1626
|
+
* ```typescript
|
|
1627
|
+
* await client.registerWebhook('https://myapp.com/webhook', ['create_media_buy']);
|
|
1628
|
+
* ```
|
|
1629
|
+
*/
|
|
1630
|
+
async registerWebhook(webhookUrl, taskTypes) {
|
|
1631
|
+
const agent = await this.ensureEndpointDiscovered();
|
|
1632
|
+
return this.executor.registerWebhook(agent, webhookUrl, taskTypes);
|
|
1633
|
+
}
|
|
1634
|
+
/**
|
|
1635
|
+
* Unregister webhook notifications
|
|
1636
|
+
*/
|
|
1637
|
+
async unregisterWebhook() {
|
|
1638
|
+
const agent = await this.ensureEndpointDiscovered();
|
|
1639
|
+
return this.executor.unregisterWebhook(agent);
|
|
1640
|
+
}
|
|
1641
|
+
// ====== AGENT DISCOVERY METHODS ======
|
|
1642
|
+
/**
|
|
1643
|
+
* Get comprehensive agent information including name, description, and available tools/skills
|
|
1644
|
+
*
|
|
1645
|
+
* Works with both MCP (tools) and A2A (skills) protocols to discover what the agent can do.
|
|
1646
|
+
*
|
|
1647
|
+
* @returns Promise resolving to agent information including tools
|
|
1648
|
+
*
|
|
1649
|
+
* @example
|
|
1650
|
+
* ```typescript
|
|
1651
|
+
* const client = new ADCPClient(agentConfig);
|
|
1652
|
+
* const info = await client.getAgentInfo();
|
|
1653
|
+
*
|
|
1654
|
+
* console.log(`${info.name}: ${info.description}`);
|
|
1655
|
+
* console.log(`Supports ${info.tools.length} tools`);
|
|
1656
|
+
*
|
|
1657
|
+
* info.tools.forEach(tool => {
|
|
1658
|
+
* console.log(` - ${tool.name}: ${tool.description}`);
|
|
1659
|
+
* });
|
|
1660
|
+
* ```
|
|
1661
|
+
*/
|
|
1662
|
+
async getAgentInfo() {
|
|
1663
|
+
if (this.normalizedAgent.protocol === 'mcp') {
|
|
1664
|
+
// In-process: use the pre-connected client instead of opening a new HTTP connection
|
|
1665
|
+
if (this.normalizedAgent._inProcessMcpClient) {
|
|
1666
|
+
const mcpClient = this.normalizedAgent._inProcessMcpClient;
|
|
1667
|
+
const toolsList = await mcpClient.listTools();
|
|
1668
|
+
const tools = toolsList.tools.map(tool => ({
|
|
1669
|
+
name: tool.name,
|
|
1670
|
+
description: tool.description,
|
|
1671
|
+
inputSchema: tool.inputSchema,
|
|
1672
|
+
parameters: tool.inputSchema?.properties ? Object.keys(tool.inputSchema.properties) : [],
|
|
1673
|
+
}));
|
|
1674
|
+
return {
|
|
1675
|
+
name: this.normalizedAgent.name,
|
|
1676
|
+
description: undefined,
|
|
1677
|
+
protocol: this.normalizedAgent.protocol,
|
|
1678
|
+
url: this.normalizedAgent.agent_uri,
|
|
1679
|
+
tools,
|
|
1680
|
+
};
|
|
1681
|
+
}
|
|
1682
|
+
// Discover endpoint if needed
|
|
1683
|
+
const agent = await this.ensureEndpointDiscovered();
|
|
1684
|
+
// Use the shared connectMCP path so both static bearer AND saved OAuth
|
|
1685
|
+
// tokens work. OAuth takes the refresh-capable authProvider branch.
|
|
1686
|
+
const { connectMCP } = await Promise.resolve().then(() => __importStar(require('../protocols/mcp')));
|
|
1687
|
+
const connectOptions = { agentUrl: agent.agent_uri };
|
|
1688
|
+
if (this.normalizedAgent.oauth_tokens) {
|
|
1689
|
+
const { createNonInteractiveOAuthProvider } = await Promise.resolve().then(() => __importStar(require('../auth/oauth')));
|
|
1690
|
+
connectOptions.authProvider = createNonInteractiveOAuthProvider(this.normalizedAgent, {
|
|
1691
|
+
agentHint: this.normalizedAgent.id,
|
|
1692
|
+
});
|
|
1693
|
+
}
|
|
1694
|
+
else if (this.normalizedAgent.auth_token) {
|
|
1695
|
+
connectOptions.authToken = this.normalizedAgent.auth_token;
|
|
1696
|
+
}
|
|
1697
|
+
const { client: mcpClient } = await connectMCP(connectOptions);
|
|
1698
|
+
try {
|
|
1699
|
+
const toolsList = await mcpClient.listTools();
|
|
1700
|
+
const tools = toolsList.tools.map(tool => ({
|
|
1701
|
+
name: tool.name,
|
|
1702
|
+
description: tool.description,
|
|
1703
|
+
inputSchema: tool.inputSchema,
|
|
1704
|
+
parameters: tool.inputSchema?.properties ? Object.keys(tool.inputSchema.properties) : [],
|
|
1705
|
+
}));
|
|
1706
|
+
return {
|
|
1707
|
+
name: this.normalizedAgent.name,
|
|
1708
|
+
description: undefined,
|
|
1709
|
+
protocol: this.normalizedAgent.protocol,
|
|
1710
|
+
url: agent.agent_uri,
|
|
1711
|
+
tools,
|
|
1712
|
+
};
|
|
1713
|
+
}
|
|
1714
|
+
finally {
|
|
1715
|
+
try {
|
|
1716
|
+
await mcpClient.close();
|
|
1717
|
+
}
|
|
1718
|
+
catch {
|
|
1719
|
+
/* ignore */
|
|
1720
|
+
}
|
|
1721
|
+
}
|
|
1722
|
+
}
|
|
1723
|
+
else if (this.normalizedAgent.protocol === 'a2a') {
|
|
1724
|
+
// Use A2A SDK to get agent card
|
|
1725
|
+
const clientModule = require('@a2a-js/sdk/client');
|
|
1726
|
+
const A2AClient = clientModule.A2AClient;
|
|
1727
|
+
const authToken = this.normalizedAgent.auth_token;
|
|
1728
|
+
const fetchImpl = authToken
|
|
1729
|
+
? async (url, options) => {
|
|
1730
|
+
const headers = {
|
|
1731
|
+
...options?.headers,
|
|
1732
|
+
Authorization: `Bearer ${authToken}`,
|
|
1733
|
+
'x-adcp-auth': authToken,
|
|
1734
|
+
};
|
|
1735
|
+
return fetch(url, { ...options, headers });
|
|
1736
|
+
}
|
|
1737
|
+
: undefined;
|
|
1738
|
+
const cardUrls = (0, a2a_discovery_1.buildCardUrls)(this.normalizedAgent.agent_uri);
|
|
1739
|
+
let client;
|
|
1740
|
+
let lastCardError = new Error(`A2A agent card not found at ${cardUrls.join(', ')}`);
|
|
1741
|
+
for (const cardUrl of cardUrls) {
|
|
1742
|
+
try {
|
|
1743
|
+
client = await A2AClient.fromCardUrl(cardUrl, fetchImpl ? { fetchImpl } : {});
|
|
1744
|
+
break;
|
|
1745
|
+
}
|
|
1746
|
+
catch (err) {
|
|
1747
|
+
lastCardError = err;
|
|
1748
|
+
}
|
|
1749
|
+
}
|
|
1750
|
+
if (!client) {
|
|
1751
|
+
throw lastCardError;
|
|
1752
|
+
}
|
|
1753
|
+
const agentCard = client.agentCardPromise ? await client.agentCardPromise : client.agentCard;
|
|
1754
|
+
const tools = agentCard?.skills
|
|
1755
|
+
? agentCard.skills.map((skill) => ({
|
|
1756
|
+
name: skill.id || skill.name,
|
|
1757
|
+
description: skill.description,
|
|
1758
|
+
inputSchema: skill.inputSchema,
|
|
1759
|
+
parameters: skill.inputFormats || [],
|
|
1760
|
+
}))
|
|
1761
|
+
: [];
|
|
1762
|
+
return {
|
|
1763
|
+
name: agentCard?.displayName || agentCard?.name || this.normalizedAgent.name,
|
|
1764
|
+
description: agentCard?.description,
|
|
1765
|
+
protocol: this.normalizedAgent.protocol,
|
|
1766
|
+
url: this.normalizedAgent.agent_uri,
|
|
1767
|
+
tools,
|
|
1768
|
+
};
|
|
1769
|
+
}
|
|
1770
|
+
throw new Error(`Unsupported protocol: ${this.normalizedAgent.protocol}`);
|
|
1771
|
+
}
|
|
1772
|
+
/**
|
|
1773
|
+
* Get agent capabilities, including AdCP version support
|
|
1774
|
+
*
|
|
1775
|
+
* For v3 servers, calls get_adcp_capabilities tool.
|
|
1776
|
+
* For v2 servers, builds synthetic capabilities from available tools.
|
|
1777
|
+
*
|
|
1778
|
+
* @returns Promise resolving to normalized capabilities object
|
|
1779
|
+
*
|
|
1780
|
+
* @example
|
|
1781
|
+
* ```typescript
|
|
1782
|
+
* const capabilities = await client.getCapabilities();
|
|
1783
|
+
*
|
|
1784
|
+
* console.log(`Server version: ${capabilities.version}`);
|
|
1785
|
+
* console.log(`Protocols: ${capabilities.protocols.join(', ')}`);
|
|
1786
|
+
*
|
|
1787
|
+
* if (capabilities.features.propertyListFiltering) {
|
|
1788
|
+
* // Use v3 property list features
|
|
1789
|
+
* }
|
|
1790
|
+
* ```
|
|
1791
|
+
*/
|
|
1792
|
+
async getCapabilities() {
|
|
1793
|
+
// Return cached if available
|
|
1794
|
+
if (this.cachedCapabilities) {
|
|
1795
|
+
this.maybeWarnV2Sunset(this.cachedCapabilities);
|
|
1796
|
+
return this.cachedCapabilities;
|
|
1797
|
+
}
|
|
1798
|
+
// First get tool list to support both detection methods
|
|
1799
|
+
const agentInfo = await this.getAgentInfo();
|
|
1800
|
+
const tools = agentInfo.tools.map(t => ({
|
|
1801
|
+
name: t.name,
|
|
1802
|
+
description: t.description,
|
|
1803
|
+
}));
|
|
1804
|
+
// Cache raw tool schemas for field-level compatibility checks (e.g. buying_mode on get_products).
|
|
1805
|
+
// INVARIANT: must be assigned before cachedCapabilities below so that any code path
|
|
1806
|
+
// reaching adaptRequestForServerVersion always finds the schemas populated.
|
|
1807
|
+
this.cachedToolSchemas = new Map(agentInfo.tools
|
|
1808
|
+
.filter(t => t.inputSchema?.properties)
|
|
1809
|
+
.map(t => [t.name, t.inputSchema.properties]));
|
|
1810
|
+
// Check if agent supports get_adcp_capabilities (v3)
|
|
1811
|
+
const hasCapabilitiesTool = tools.some(t => t.name === 'get_adcp_capabilities');
|
|
1812
|
+
if (hasCapabilitiesTool) {
|
|
1813
|
+
try {
|
|
1814
|
+
// ensureEndpointDiscovered is a no-op for in-process agents (_needsDiscovery is false
|
|
1815
|
+
// because normalizeAgentConfig returns early when _inProcessMcpClient is set). The
|
|
1816
|
+
// executor then hits ProtocolClient.callTool which reads _inProcessMcpClient directly,
|
|
1817
|
+
// so the sentinel adcp-in-process:// URI never reaches validateAgentUrl.
|
|
1818
|
+
const agent = await this.ensureEndpointDiscovered();
|
|
1819
|
+
const result = await this.executor.executeTask(agent, 'get_adcp_capabilities', {}, undefined);
|
|
1820
|
+
if (result.success && result.data) {
|
|
1821
|
+
this.cachedCapabilities = (0, capabilities_1.augmentCapabilitiesFromTools)((0, capabilities_1.parseCapabilitiesResponse)(result.data), tools);
|
|
1822
|
+
this.maybeWarnV2Sunset(this.cachedCapabilities);
|
|
1823
|
+
return this.cachedCapabilities;
|
|
1824
|
+
}
|
|
1825
|
+
// Log when executeTask returns but success is false — this causes
|
|
1826
|
+
// the server to be treated as v2 even though it advertises
|
|
1827
|
+
// get_adcp_capabilities, which will trigger v2 field adapters.
|
|
1828
|
+
// We deliberately omit `result.data` from the log: it can carry
|
|
1829
|
+
// OAuth metadata that flowed through `agent.oauth_client_credentials`,
|
|
1830
|
+
// and CodeQL traces clear-text logging when it appears here. The
|
|
1831
|
+
// shape booleans + status are enough to triage the v2 fallback.
|
|
1832
|
+
console.warn(`[AdCP] Agent "${this.agent.id}" advertises get_adcp_capabilities but the call ` +
|
|
1833
|
+
`returned non-success — falling back to v2 synthetic capabilities. ` +
|
|
1834
|
+
`This may cause v2 field adapters to run against a v3 server.`, {
|
|
1835
|
+
success: result.success,
|
|
1836
|
+
// result.error is a string error message; we don't include its full
|
|
1837
|
+
// text because it can carry agent identifiers from transport-level
|
|
1838
|
+
// failures, but presence/absence is useful for triage.
|
|
1839
|
+
hasError: !!result.error,
|
|
1840
|
+
hasData: !!result.data,
|
|
1841
|
+
});
|
|
1842
|
+
}
|
|
1843
|
+
catch (error) {
|
|
1844
|
+
// Re-throw errors that indicate real infrastructure problems —
|
|
1845
|
+
// only fall through for tool-execution failures (the agent
|
|
1846
|
+
// advertises get_adcp_capabilities but can't actually serve it).
|
|
1847
|
+
if (error instanceof errors_1.AuthenticationRequiredError || error instanceof errors_1.TaskTimeoutError) {
|
|
1848
|
+
throw error;
|
|
1849
|
+
}
|
|
1850
|
+
console.warn(`[AdCP] Agent "${this.agent.id}" advertises get_adcp_capabilities but the call ` +
|
|
1851
|
+
`threw — falling back to v2 synthetic capabilities. ` +
|
|
1852
|
+
`This may cause v2 field adapters to run against a v3 server. ` +
|
|
1853
|
+
`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
1854
|
+
}
|
|
1855
|
+
}
|
|
1856
|
+
// Build synthetic capabilities from tool list (v2)
|
|
1857
|
+
console.warn(`[AdCP] Agent "${this.agent.id}" detected as v2` +
|
|
1858
|
+
(hasCapabilitiesTool ? ' (has get_adcp_capabilities tool but call failed)' : '') +
|
|
1859
|
+
`. Tools: [${tools.map(t => t.name).join(', ')}]`);
|
|
1860
|
+
this.cachedCapabilities = (0, capabilities_1.buildSyntheticCapabilities)(tools);
|
|
1861
|
+
return this.cachedCapabilities;
|
|
1862
|
+
}
|
|
1863
|
+
/**
|
|
1864
|
+
* Emit a one-time warning when the agent reports v2 capabilities.
|
|
1865
|
+
*
|
|
1866
|
+
* v2 went unsupported on 2026-04-20 (AdCP 3.0 GA — adcp#2220). We still
|
|
1867
|
+
* execute v2 code paths (no behaviour change), but clients integrating
|
|
1868
|
+
* against an unsupported agent should hear about it loudly.
|
|
1869
|
+
*
|
|
1870
|
+
* Synthetic capabilities (no `get_adcp_capabilities` tool available) don't
|
|
1871
|
+
* trigger the warning — we don't actually know the agent's version, and
|
|
1872
|
+
* shouting at legitimately-unversioned agents would be noise.
|
|
1873
|
+
*
|
|
1874
|
+
* Suppression: `process.env.ADCP_ALLOW_V2 === '1'`.
|
|
1875
|
+
*/
|
|
1876
|
+
maybeWarnV2Sunset(capabilities) {
|
|
1877
|
+
if (this._v2WarningFired)
|
|
1878
|
+
return;
|
|
1879
|
+
if (capabilities.version === 'v3')
|
|
1880
|
+
return;
|
|
1881
|
+
if (capabilities._synthetic)
|
|
1882
|
+
return;
|
|
1883
|
+
if (process.env.ADCP_ALLOW_V2 === '1')
|
|
1884
|
+
return;
|
|
1885
|
+
this._v2WarningFired = true;
|
|
1886
|
+
console.warn(`[adcp] Warning: agent ${this.agent.agent_uri} reports v2 capabilities. ` +
|
|
1887
|
+
`v2 went unsupported on 2026-04-20 (AdCP 3.0 GA). ` +
|
|
1888
|
+
`Upgrade the agent to v3 or set ADCP_ALLOW_V2=1 to suppress this warning. ` +
|
|
1889
|
+
`See https://github.com/adcontextprotocol/adcp/issues/2220`);
|
|
1890
|
+
}
|
|
1891
|
+
/**
|
|
1892
|
+
* Detect server AdCP version
|
|
1893
|
+
*
|
|
1894
|
+
* @returns 'v2' or 'v3' based on server capabilities
|
|
1895
|
+
*/
|
|
1896
|
+
async detectServerVersion() {
|
|
1897
|
+
const capabilities = await this.getCapabilities();
|
|
1898
|
+
return capabilities.version;
|
|
1899
|
+
}
|
|
1900
|
+
/**
|
|
1901
|
+
* Check if server supports a specific AdCP major version
|
|
1902
|
+
*/
|
|
1903
|
+
async supportsVersion(version) {
|
|
1904
|
+
const capabilities = await this.getCapabilities();
|
|
1905
|
+
return capabilities.majorVersions.includes(version);
|
|
1906
|
+
}
|
|
1907
|
+
/**
|
|
1908
|
+
* Return the seller's declared `adcp.idempotency.replay_ttl_seconds`.
|
|
1909
|
+
*
|
|
1910
|
+
* BYOK callers use this to compare the age of persisted keys against the
|
|
1911
|
+
* seller's replay window — past the window, the safe recovery is a
|
|
1912
|
+
* natural-key lookup rather than reusing the key.
|
|
1913
|
+
*
|
|
1914
|
+
* Fails closed when the seller is v3 but does not declare the field: the
|
|
1915
|
+
* spec makes the declaration REQUIRED, and silently defaulting to 24h
|
|
1916
|
+
* would mislead buyers about retry safety. Callers on v2 servers get
|
|
1917
|
+
* `undefined` instead of a throw — v2 pre-dates the idempotency envelope.
|
|
1918
|
+
*/
|
|
1919
|
+
async getIdempotencyReplayTtlSeconds() {
|
|
1920
|
+
const capabilities = await this.getCapabilities();
|
|
1921
|
+
if (capabilities.idempotency)
|
|
1922
|
+
return capabilities.idempotency.replayTtlSeconds;
|
|
1923
|
+
if (capabilities.version !== 'v3')
|
|
1924
|
+
return undefined;
|
|
1925
|
+
throw new errors_1.ConfigurationError(`Agent "${this.agent.id}" is v3 but does not declare adcp.idempotency.replay_ttl_seconds. ` +
|
|
1926
|
+
`The spec requires this for v3 sellers — treating the agent as non-compliant rather than ` +
|
|
1927
|
+
`defaulting to 24h, which would silently mislead retry-sensitive flows.`, 'adcp.idempotency.replay_ttl_seconds');
|
|
1928
|
+
}
|
|
1929
|
+
/**
|
|
1930
|
+
* Check if the seller supports a feature.
|
|
1931
|
+
*
|
|
1932
|
+
* Feature names resolve as follows:
|
|
1933
|
+
* - Protocol names ('media_buy', 'signals', etc.) check supported_protocols
|
|
1934
|
+
* - 'ext:<name>' checks extensions_supported
|
|
1935
|
+
* - 'targeting.<name>' checks media_buy.execution.targeting
|
|
1936
|
+
* - Other names check media_buy.features (e.g., 'audience_targeting', 'conversion_tracking')
|
|
1937
|
+
*
|
|
1938
|
+
* Absent features return false.
|
|
1939
|
+
*/
|
|
1940
|
+
async supports(feature) {
|
|
1941
|
+
const capabilities = await this.getCapabilities();
|
|
1942
|
+
return (0, capabilities_1.resolveFeature)(capabilities, feature);
|
|
1943
|
+
}
|
|
1944
|
+
/**
|
|
1945
|
+
* Require that the seller supports all listed features.
|
|
1946
|
+
* Throws FeatureUnsupportedError if any are missing.
|
|
1947
|
+
*
|
|
1948
|
+
* Call this before making feature-dependent task calls to fail fast
|
|
1949
|
+
* with an actionable error message.
|
|
1950
|
+
*/
|
|
1951
|
+
async require(...features) {
|
|
1952
|
+
const capabilities = await this.getCapabilities();
|
|
1953
|
+
const missing = features.filter(f => !(0, capabilities_1.resolveFeature)(capabilities, f));
|
|
1954
|
+
if (missing.length > 0) {
|
|
1955
|
+
throw new errors_1.FeatureUnsupportedError(missing, (0, capabilities_1.listDeclaredFeatures)(capabilities), this.agent.agent_uri);
|
|
1956
|
+
}
|
|
1957
|
+
}
|
|
1958
|
+
/**
|
|
1959
|
+
* Force-refresh cached capabilities from the server.
|
|
1960
|
+
* Useful when seller capabilities may have changed.
|
|
1961
|
+
*/
|
|
1962
|
+
async refreshCapabilities() {
|
|
1963
|
+
this.cachedCapabilities = undefined;
|
|
1964
|
+
return this.getCapabilities();
|
|
1965
|
+
}
|
|
1966
|
+
/**
|
|
1967
|
+
* Validate that the seller supports all features required by a task.
|
|
1968
|
+
* Throws FeatureUnsupportedError if any required features are missing.
|
|
1969
|
+
*
|
|
1970
|
+
* Skipped when validateFeatures is false or the task has no feature requirements.
|
|
1971
|
+
*/
|
|
1972
|
+
async validateTaskFeatures(taskName) {
|
|
1973
|
+
if (this.config.validateFeatures === false)
|
|
1974
|
+
return;
|
|
1975
|
+
const requiredFeatures = capabilities_1.TASK_FEATURE_MAP[taskName];
|
|
1976
|
+
if (!requiredFeatures || requiredFeatures.length === 0)
|
|
1977
|
+
return;
|
|
1978
|
+
await this.require(...requiredFeatures);
|
|
1979
|
+
}
|
|
1980
|
+
/**
|
|
1981
|
+
* Assert that the seller's capabilities corroborate AdCP v3.
|
|
1982
|
+
*
|
|
1983
|
+
* A self-reported `version: 'v3'` is not enough — a hostile or
|
|
1984
|
+
* misconfigured seller can just string-claim the version. The guard
|
|
1985
|
+
* requires:
|
|
1986
|
+
*
|
|
1987
|
+
* 1. `capabilities.majorVersions.includes(3)` (multi-version aware)
|
|
1988
|
+
* 2. `capabilities.idempotency.replayTtlSeconds` present (spec-required
|
|
1989
|
+
* for real v3 sellers; synthetic capabilities don't get this free)
|
|
1990
|
+
* 3. capabilities were not synthesized from a tool list
|
|
1991
|
+
*
|
|
1992
|
+
* Per-client `allowV2: true` or, when that's undefined,
|
|
1993
|
+
* `ADCP_ALLOW_V2=1` in the environment bypasses the check.
|
|
1994
|
+
*
|
|
1995
|
+
* Throws `VersionUnsupportedError` with the specific reason on failure.
|
|
1996
|
+
*/
|
|
1997
|
+
async requireV3(taskType = 'request') {
|
|
1998
|
+
if (this.isV2Allowed())
|
|
1999
|
+
return;
|
|
2000
|
+
const capabilities = await this.getCapabilities();
|
|
2001
|
+
if (capabilities._synthetic) {
|
|
2002
|
+
throw new errors_1.VersionUnsupportedError(taskType, 'synthetic', capabilities.version, this.agent.agent_uri);
|
|
2003
|
+
}
|
|
2004
|
+
if (!capabilities.majorVersions.includes(3)) {
|
|
2005
|
+
throw new errors_1.VersionUnsupportedError(taskType, 'version', capabilities.version, this.agent.agent_uri);
|
|
2006
|
+
}
|
|
2007
|
+
if (!capabilities.idempotency?.replayTtlSeconds) {
|
|
2008
|
+
throw new errors_1.VersionUnsupportedError(taskType, 'idempotency', capabilities.version, this.agent.agent_uri);
|
|
2009
|
+
}
|
|
2010
|
+
}
|
|
2011
|
+
isV2Allowed() {
|
|
2012
|
+
if (this.config.allowV2 !== undefined)
|
|
2013
|
+
return this.config.allowV2 === true;
|
|
2014
|
+
return process.env.ADCP_ALLOW_V2 === '1';
|
|
2015
|
+
}
|
|
2016
|
+
// ====== STATIC HELPER METHODS ======
|
|
2017
|
+
/**
|
|
2018
|
+
* Query a creative agent to discover available creative formats
|
|
2019
|
+
*
|
|
2020
|
+
* This is a static utility method that allows you to query any creative agent
|
|
2021
|
+
* (like creative.adcontextprotocol.org) to discover what formats are available
|
|
2022
|
+
* before creating a media buy.
|
|
2023
|
+
*
|
|
2024
|
+
* @param creativeAgentUrl - URL of the creative agent (e.g., 'https://creative.adcontextprotocol.org/mcp')
|
|
2025
|
+
* @param protocol - Protocol to use ('mcp' or 'a2a'), defaults to 'mcp'
|
|
2026
|
+
* @returns Promise resolving to the list of available formats
|
|
2027
|
+
*
|
|
2028
|
+
* @example
|
|
2029
|
+
* ```typescript
|
|
2030
|
+
* // Discover formats from the standard creative agent
|
|
2031
|
+
* const formats = await SingleAgentClient.discoverCreativeFormats(
|
|
2032
|
+
* 'https://creative.adcontextprotocol.org/mcp'
|
|
2033
|
+
* );
|
|
2034
|
+
*
|
|
2035
|
+
* // Find a specific format
|
|
2036
|
+
* const banner = formats.find(f => f.format_id.id === 'display_300x250_image');
|
|
2037
|
+
*
|
|
2038
|
+
* // Use the format in a media buy
|
|
2039
|
+
* await salesAgent.createMediaBuy({
|
|
2040
|
+
* packages: [{
|
|
2041
|
+
* format_ids: [{
|
|
2042
|
+
* agent_url: banner.format_id.agent_url,
|
|
2043
|
+
* id: banner.format_id.id
|
|
2044
|
+
* }]
|
|
2045
|
+
* }]
|
|
2046
|
+
* });
|
|
2047
|
+
* ```
|
|
2048
|
+
*/
|
|
2049
|
+
static async discoverCreativeFormats(creativeAgentUrl, protocol = 'mcp') {
|
|
2050
|
+
const client = new SingleAgentClient({
|
|
2051
|
+
id: 'creative_agent_discovery',
|
|
2052
|
+
name: 'Creative Agent',
|
|
2053
|
+
agent_uri: creativeAgentUrl,
|
|
2054
|
+
protocol,
|
|
2055
|
+
}, {});
|
|
2056
|
+
const result = await client.listCreativeFormats({});
|
|
2057
|
+
if (!result.success || !result.data) {
|
|
2058
|
+
throw new Error(`Failed to discover creative formats: ${result.error || 'Unknown error'}`);
|
|
2059
|
+
}
|
|
2060
|
+
return result.data.formats || [];
|
|
2061
|
+
}
|
|
2062
|
+
/**
|
|
2063
|
+
* Validate request parameters against AdCP schema.
|
|
2064
|
+
*
|
|
2065
|
+
* Uses default (non-strict) parsing so required fields are still enforced
|
|
2066
|
+
* but unknown top-level keys pass through. This matters because callers —
|
|
2067
|
+
* including the storyboard runner's `applyBrandInvariant` — inject
|
|
2068
|
+
* scoping fields (`brand`, `account`) onto every outgoing request, and
|
|
2069
|
+
* `adaptRequestForServerVersion` strips those fields downstream for tools
|
|
2070
|
+
* whose schema doesn't declare them. A strict parse here rejects the
|
|
2071
|
+
* injected fields before the adapter gets a chance to clean them up, so
|
|
2072
|
+
* the two passes have to agree on "extra keys are fine."
|
|
2073
|
+
*/
|
|
2074
|
+
validateRequest(taskType, params) {
|
|
2075
|
+
const schema = this.getRequestSchema(taskType);
|
|
2076
|
+
if (!schema) {
|
|
2077
|
+
return; // No schema available for this task type
|
|
2078
|
+
}
|
|
2079
|
+
try {
|
|
2080
|
+
schema.parse(params);
|
|
2081
|
+
}
|
|
2082
|
+
catch (error) {
|
|
2083
|
+
if (error instanceof zod_1.z.ZodError) {
|
|
2084
|
+
const issues = error.issues.map(i => `${i.path.join('.')}: ${i.message}`).join('; ');
|
|
2085
|
+
throw new Error(`Request validation failed for ${taskType}: ${issues}`);
|
|
2086
|
+
}
|
|
2087
|
+
throw error;
|
|
2088
|
+
}
|
|
2089
|
+
}
|
|
2090
|
+
/**
|
|
2091
|
+
* Get request schema for a given task type.
|
|
2092
|
+
*
|
|
2093
|
+
* Note: Schema validation is not available for all task types. The following
|
|
2094
|
+
* tasks use complex discriminated unions that cannot be represented in Zod
|
|
2095
|
+
* without significant runtime overhead:
|
|
2096
|
+
*
|
|
2097
|
+
* - `update_media_buy`: Uses conditional package update operations
|
|
2098
|
+
*
|
|
2099
|
+
* For these tasks, TypeScript compile-time checking is still enforced via
|
|
2100
|
+
* the generated types, but runtime validation falls back to basic type checks.
|
|
2101
|
+
* Invalid requests will still be rejected by the server with descriptive errors.
|
|
2102
|
+
*
|
|
2103
|
+
* @internal
|
|
2104
|
+
*/
|
|
2105
|
+
getRequestSchema(taskType) {
|
|
2106
|
+
const schemaMap = {
|
|
2107
|
+
get_products: schemas.GetProductsRequestSchema,
|
|
2108
|
+
list_creative_formats: schemas.ListCreativeFormatsRequestSchema,
|
|
2109
|
+
create_media_buy: schemas.CreateMediaBuyRequestSchema,
|
|
2110
|
+
// update_media_buy: excluded - complex discriminated unions (package operations)
|
|
2111
|
+
sync_creatives: schemas.SyncCreativesRequestSchema,
|
|
2112
|
+
list_creatives: schemas.ListCreativesRequestSchema,
|
|
2113
|
+
get_media_buys: schemas.GetMediaBuysRequestSchema,
|
|
2114
|
+
get_creative_features: schemas.GetCreativeFeaturesRequestSchema,
|
|
2115
|
+
get_media_buy_delivery: schemas.GetMediaBuyDeliveryRequestSchema,
|
|
2116
|
+
get_signals: schemas.GetSignalsRequestSchema,
|
|
2117
|
+
activate_signal: schemas.ActivateSignalRequestSchema,
|
|
2118
|
+
};
|
|
2119
|
+
return schemaMap[taskType] || null;
|
|
2120
|
+
}
|
|
2121
|
+
}
|
|
2122
|
+
exports.SingleAgentClient = SingleAgentClient;
|
|
2123
|
+
/**
|
|
2124
|
+
* Factory function to create a single-agent client (internal use)
|
|
2125
|
+
*
|
|
2126
|
+
* @param agent - Agent configuration
|
|
2127
|
+
* @param config - Client configuration
|
|
2128
|
+
* @returns Configured SingleAgentClient instance
|
|
2129
|
+
* @internal
|
|
2130
|
+
*/
|
|
2131
|
+
function createSingleAgentClient(agent, config) {
|
|
2132
|
+
return new SingleAgentClient(agent, config);
|
|
2133
|
+
}
|
|
2134
|
+
//# sourceMappingURL=SingleAgentClient.js.map
|