@adcp/sdk 14.0.0-rc.38 → 14.0.0-rc.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/adcp-storyboard-summary.js +286 -0
- package/bin/adcp.js +221 -10
- package/dist/lib/conformance/schemaLoader.d.mts +1 -1
- package/dist/lib/conformance/schemaLoader.d.ts +1 -1
- package/dist/lib/core/AgentClient.d.mts +6 -1
- package/dist/lib/core/AgentClient.d.ts +6 -1
- package/dist/lib/core/AgentClient.js +9 -0
- package/dist/lib/core/AgentClient.mjs +9 -0
- package/dist/lib/core/ConversationTypes.d.mts +29 -0
- package/dist/lib/core/ConversationTypes.d.ts +29 -0
- package/dist/lib/core/SingleAgentClient.d.mts +3 -1
- package/dist/lib/core/SingleAgentClient.d.ts +3 -1
- package/dist/lib/core/SingleAgentClient.js +9 -1
- package/dist/lib/core/SingleAgentClient.mjs +9 -1
- package/dist/lib/core/TaskExecutor.d.mts +13 -1
- package/dist/lib/core/TaskExecutor.d.ts +13 -1
- package/dist/lib/core/TaskExecutor.js +216 -18
- package/dist/lib/core/TaskExecutor.mjs +216 -19
- package/dist/lib/index.d.mts +5 -2
- package/dist/lib/index.d.ts +5 -2
- package/dist/lib/index.js +10 -1
- package/dist/lib/index.mjs +10 -1
- package/dist/lib/media-buy/action-assessment.d.mts +77 -0
- package/dist/lib/media-buy/action-assessment.d.ts +77 -0
- package/dist/lib/media-buy/action-assessment.js +300 -0
- package/dist/lib/media-buy/action-assessment.mjs +284 -0
- package/dist/lib/media-buy/action-constraints.d.mts +9 -0
- package/dist/lib/media-buy/action-constraints.d.ts +9 -0
- package/dist/lib/media-buy/action-constraints.js +170 -0
- package/dist/lib/media-buy/action-constraints.mjs +146 -0
- package/dist/lib/media-buy/action-contracts.d.mts +40 -0
- package/dist/lib/media-buy/action-contracts.d.ts +40 -0
- package/dist/lib/media-buy/action-contracts.js +304 -0
- package/dist/lib/media-buy/action-contracts.mjs +267 -0
- package/dist/lib/media-buy/action-metadata.generated.d.mts +37 -0
- package/dist/lib/media-buy/action-metadata.generated.d.ts +37 -0
- package/dist/lib/media-buy/action-metadata.generated.js +128 -0
- package/dist/lib/media-buy/action-metadata.generated.mjs +101 -0
- package/dist/lib/media-buy/action-types.d.mts +106 -0
- package/dist/lib/media-buy/action-types.d.ts +106 -0
- package/dist/lib/{types/v3-1-beta/tools.generated.js → media-buy/action-types.js} +2 -2
- package/dist/lib/media-buy/actions.d.mts +6 -0
- package/dist/lib/media-buy/actions.d.ts +6 -0
- package/dist/lib/media-buy/actions.js +38 -0
- package/dist/lib/media-buy/actions.mjs +9 -0
- package/dist/lib/media-buy/available-actions.d.mts +2 -1
- package/dist/lib/media-buy/available-actions.d.ts +2 -1
- package/dist/lib/media-buy/available-actions.js +4 -3
- package/dist/lib/media-buy/available-actions.mjs +4 -3
- package/dist/lib/media-buy/compatibility.js +3 -0
- package/dist/lib/media-buy/compatibility.mjs +3 -0
- package/dist/lib/media-buy/index.d.mts +4 -0
- package/dist/lib/media-buy/index.d.ts +4 -0
- package/dist/lib/media-buy/index.js +3 -1
- package/dist/lib/media-buy/index.mjs +1 -0
- package/dist/lib/media-buy/legacy-action-ids.d.mts +1 -0
- package/dist/lib/media-buy/legacy-action-ids.d.ts +1 -0
- package/dist/lib/media-buy/legacy-action-ids.js +50 -0
- package/dist/lib/media-buy/legacy-action-ids.mjs +26 -0
- package/dist/lib/media-buy/mutations.d.mts +70 -0
- package/dist/lib/media-buy/mutations.d.ts +70 -0
- package/dist/lib/media-buy/mutations.js +525 -0
- package/dist/lib/media-buy/mutations.mjs +498 -0
- package/dist/lib/media-buy/preflight.d.mts +20 -69
- package/dist/lib/media-buy/preflight.d.ts +20 -69
- package/dist/lib/media-buy/preflight.js +100 -336
- package/dist/lib/media-buy/preflight.mjs +111 -333
- package/dist/lib/media-buy/targeting-input.d.mts +7 -4
- package/dist/lib/media-buy/targeting-input.d.ts +7 -4
- package/dist/lib/media-buy/types.d.mts +55 -7
- package/dist/lib/media-buy/types.d.ts +55 -7
- package/dist/lib/protocols/rawResponseCapture.d.mts +12 -0
- package/dist/lib/protocols/rawResponseCapture.d.ts +12 -0
- package/dist/lib/protocols/rawResponseCapture.js +33 -3
- package/dist/lib/protocols/rawResponseCapture.mjs +32 -3
- package/dist/lib/registry/types.generated.d.mts +377 -9
- package/dist/lib/registry/types.generated.d.ts +377 -9
- package/dist/lib/reporting/evidence.d.mts +1 -0
- package/dist/lib/reporting/evidence.d.ts +1 -0
- package/dist/lib/reporting/evidence.js +32 -3
- package/dist/lib/reporting/evidence.mjs +31 -3
- package/dist/lib/reporting/ledger/handler.d.mts +51 -1
- package/dist/lib/reporting/ledger/handler.d.ts +51 -1
- package/dist/lib/reporting/ledger/handler.js +306 -38
- package/dist/lib/reporting/ledger/handler.mjs +304 -37
- package/dist/lib/reporting/ledger/health.d.mts +12 -0
- package/dist/lib/reporting/ledger/health.d.ts +12 -0
- package/dist/lib/reporting/ledger/health.js +15 -2
- package/dist/lib/reporting/ledger/health.mjs +13 -1
- package/dist/lib/reporting/ledger/index.d.mts +3 -0
- package/dist/lib/reporting/ledger/index.d.ts +3 -0
- package/dist/lib/reporting/ledger/index.js +7 -1
- package/dist/lib/reporting/ledger/index.mjs +3 -0
- package/dist/lib/reporting/ledger/lifecycle.d.mts +31 -4
- package/dist/lib/reporting/ledger/lifecycle.d.ts +31 -4
- package/dist/lib/reporting/ledger/lifecycle.js +244 -37
- package/dist/lib/reporting/ledger/lifecycle.mjs +244 -37
- package/dist/lib/reporting/ledger/managed-postgres.d.mts +231 -0
- package/dist/lib/reporting/ledger/managed-postgres.d.ts +231 -0
- package/dist/lib/reporting/ledger/managed-postgres.js +1797 -0
- package/dist/lib/reporting/ledger/managed-postgres.mjs +1776 -0
- package/dist/lib/reporting/ledger/managed.d.mts +355 -0
- package/dist/lib/reporting/ledger/managed.d.ts +355 -0
- package/dist/lib/reporting/ledger/managed.js +661 -0
- package/dist/lib/reporting/ledger/managed.mjs +633 -0
- package/dist/lib/reporting/ledger/notification-activity.d.mts +222 -0
- package/dist/lib/reporting/ledger/notification-activity.d.ts +222 -0
- package/dist/lib/reporting/ledger/notification-activity.js +1139 -0
- package/dist/lib/reporting/ledger/notification-activity.mjs +1110 -0
- package/dist/lib/reporting/ledger/postgres.d.mts +161 -1
- package/dist/lib/reporting/ledger/postgres.d.ts +161 -1
- package/dist/lib/reporting/ledger/postgres.js +1153 -21
- package/dist/lib/reporting/ledger/postgres.mjs +1152 -21
- package/dist/lib/reporting/ledger/producer.d.mts +8 -0
- package/dist/lib/reporting/ledger/producer.d.ts +8 -0
- package/dist/lib/reporting/ledger/producer.js +146 -52
- package/dist/lib/reporting/ledger/producer.mjs +146 -51
- package/dist/lib/reporting/ledger/types.d.mts +358 -1
- package/dist/lib/reporting/ledger/types.d.ts +358 -1
- package/dist/lib/reporting/ledger/types.js +3 -0
- package/dist/lib/reporting/ledger/types.mjs +2 -0
- package/dist/lib/reporting/service/conformance.d.mts +35 -0
- package/dist/lib/reporting/service/conformance.d.ts +35 -0
- package/dist/lib/reporting/service/conformance.js +89 -0
- package/dist/lib/reporting/service/conformance.mjs +68 -0
- package/dist/lib/reporting/service/index.d.mts +182 -0
- package/dist/lib/reporting/service/index.d.ts +182 -0
- package/dist/lib/reporting/service/index.js +793 -0
- package/dist/lib/reporting/service/index.mjs +787 -0
- package/dist/lib/reporting/source/index.d.mts +2 -1
- package/dist/lib/reporting/source/index.d.ts +2 -1
- package/dist/lib/reporting/source/index.js +16 -3
- package/dist/lib/reporting/source/index.mjs +12 -1
- package/dist/lib/reporting/source/inline.d.mts +88 -1
- package/dist/lib/reporting/source/inline.d.ts +88 -1
- package/dist/lib/reporting/source/inline.js +1161 -163
- package/dist/lib/reporting/source/inline.mjs +1166 -163
- package/dist/lib/reporting/source/manifest.js +12 -7
- package/dist/lib/reporting/source/manifest.mjs +12 -7
- package/dist/lib/reporting/source/source.d.mts +26 -0
- package/dist/lib/reporting/source/source.d.ts +26 -0
- package/dist/lib/reporting/source/source.js +71 -2
- package/dist/lib/reporting/source/source.mjs +65 -1
- package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
- package/dist/lib/server/create-adcp-server.d.mts +18 -0
- package/dist/lib/server/create-adcp-server.d.ts +18 -0
- package/dist/lib/server/create-adcp-server.js +52 -2
- package/dist/lib/server/create-adcp-server.mjs +52 -2
- package/dist/lib/server/decisioning/account.d.mts +1 -1
- package/dist/lib/server/decisioning/account.d.ts +1 -1
- package/dist/lib/server/decisioning/index.d.mts +1 -0
- package/dist/lib/server/decisioning/index.d.ts +1 -0
- package/dist/lib/server/decisioning/platform.d.mts +3 -0
- package/dist/lib/server/decisioning/platform.d.ts +3 -0
- package/dist/lib/server/decisioning/runtime/from-platform.js +88 -10
- package/dist/lib/server/decisioning/runtime/from-platform.mjs +88 -10
- package/dist/lib/server/decisioning/specialisms/reporting.d.mts +38 -0
- package/dist/lib/server/decisioning/specialisms/reporting.d.ts +38 -0
- package/dist/lib/{types/v3-1-beta/index.js → server/decisioning/specialisms/reporting.js} +2 -8
- package/dist/lib/server/decisioning/specialisms/reporting.mjs +0 -0
- package/dist/lib/server/index.d.mts +4 -2
- package/dist/lib/server/index.d.ts +4 -2
- package/dist/lib/server/index.js +5 -0
- package/dist/lib/server/index.mjs +4 -0
- package/dist/lib/server/media-buy-action-resolver.d.mts +63 -0
- package/dist/lib/server/media-buy-action-resolver.d.ts +63 -0
- package/dist/lib/server/media-buy-action-resolver.js +297 -0
- package/dist/lib/server/media-buy-action-resolver.mjs +285 -0
- package/dist/lib/server/media-buy-actions.d.mts +7 -8
- package/dist/lib/server/media-buy-actions.d.ts +7 -8
- package/dist/lib/server/media-buy-actions.js +57 -14
- package/dist/lib/server/media-buy-actions.mjs +63 -14
- package/dist/lib/server/notification-subscriptions/index.d.mts +2 -2
- package/dist/lib/server/notification-subscriptions/index.d.ts +2 -2
- package/dist/lib/server/notification-subscriptions/index.js +2 -0
- package/dist/lib/server/notification-subscriptions/index.mjs +2 -0
- package/dist/lib/server/notification-subscriptions/postgres-runtime.d.mts +3 -1
- package/dist/lib/server/notification-subscriptions/postgres-runtime.d.ts +3 -1
- package/dist/lib/server/notification-subscriptions/postgres-runtime.js +1 -0
- package/dist/lib/server/notification-subscriptions/postgres-runtime.mjs +1 -0
- package/dist/lib/server/notification-subscriptions/runtime.d.mts +12 -1
- package/dist/lib/server/notification-subscriptions/runtime.d.ts +12 -1
- package/dist/lib/server/notification-subscriptions/runtime.js +102 -16
- package/dist/lib/server/notification-subscriptions/runtime.mjs +101 -16
- package/dist/lib/server/notification-subscriptions/types.d.mts +104 -1
- package/dist/lib/server/notification-subscriptions/types.d.ts +104 -1
- package/dist/lib/server/webhook-emitter.d.mts +40 -5
- package/dist/lib/server/webhook-emitter.d.ts +40 -5
- package/dist/lib/server/webhook-emitter.js +23 -12
- package/dist/lib/server/webhook-emitter.mjs +23 -12
- package/dist/lib/storage/interfaces.d.mts +14 -2
- package/dist/lib/storage/interfaces.d.ts +14 -2
- package/dist/lib/testing/compliance/comply.d.mts +9 -3
- package/dist/lib/testing/compliance/comply.d.ts +9 -3
- package/dist/lib/testing/compliance/comply.js +158 -3
- package/dist/lib/testing/compliance/comply.mjs +159 -4
- package/dist/lib/testing/compliance/storyboard-tracks.js +7 -5
- package/dist/lib/testing/compliance/storyboard-tracks.mjs +7 -5
- package/dist/lib/testing/compliance/summary.js +10 -1
- package/dist/lib/testing/compliance/summary.mjs +10 -1
- package/dist/lib/testing/index.d.mts +1 -1
- package/dist/lib/testing/index.d.ts +1 -1
- package/dist/lib/testing/index.js +2 -0
- package/dist/lib/testing/index.mjs +3 -1
- package/dist/lib/testing/storyboard/agent-routing.d.mts +12 -43
- package/dist/lib/testing/storyboard/agent-routing.d.ts +12 -43
- package/dist/lib/testing/storyboard/agent-routing.js +75 -13
- package/dist/lib/testing/storyboard/agent-routing.mjs +70 -12
- package/dist/lib/testing/storyboard/index.d.mts +1 -0
- package/dist/lib/testing/storyboard/index.d.ts +1 -0
- package/dist/lib/testing/storyboard/index.js +3 -0
- package/dist/lib/testing/storyboard/index.mjs +2 -0
- package/dist/lib/testing/storyboard/junit.d.mts +1 -1
- package/dist/lib/testing/storyboard/junit.d.ts +1 -1
- package/dist/lib/testing/storyboard/junit.js +21 -2
- package/dist/lib/testing/storyboard/junit.mjs +21 -2
- package/dist/lib/testing/storyboard/probes.d.mts +130 -0
- package/dist/lib/testing/storyboard/probes.d.ts +130 -0
- package/dist/lib/testing/storyboard/probes.js +682 -10
- package/dist/lib/testing/storyboard/probes.mjs +683 -3
- package/dist/lib/testing/storyboard/request-signing/builder.d.mts +16 -5
- package/dist/lib/testing/storyboard/request-signing/builder.d.ts +16 -5
- package/dist/lib/testing/storyboard/request-signing/grader.d.mts +44 -1
- package/dist/lib/testing/storyboard/request-signing/grader.d.ts +44 -1
- package/dist/lib/testing/storyboard/request-signing/grader.js +46 -22
- package/dist/lib/testing/storyboard/request-signing/grader.mjs +43 -21
- package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.mts +86 -11
- package/dist/lib/testing/storyboard/request-signing/probe-dispatch.d.ts +86 -11
- package/dist/lib/testing/storyboard/request-signing/probe-dispatch.js +119 -25
- package/dist/lib/testing/storyboard/request-signing/probe-dispatch.mjs +117 -26
- package/dist/lib/testing/storyboard/request-signing/synthesize.js +22 -2
- package/dist/lib/testing/storyboard/request-signing/synthesize.mjs +22 -2
- package/dist/lib/testing/storyboard/runner.d.mts +103 -0
- package/dist/lib/testing/storyboard/runner.d.ts +103 -0
- package/dist/lib/testing/storyboard/runner.js +1090 -268
- package/dist/lib/testing/storyboard/runner.mjs +1096 -261
- package/dist/lib/testing/storyboard/seeding.d.mts +4 -1
- package/dist/lib/testing/storyboard/seeding.d.ts +4 -1
- package/dist/lib/testing/storyboard/seeding.js +55 -24
- package/dist/lib/testing/storyboard/seeding.mjs +55 -24
- package/dist/lib/testing/storyboard/test-kit.d.mts +37 -3
- package/dist/lib/testing/storyboard/test-kit.d.ts +37 -3
- package/dist/lib/testing/storyboard/test-kit.js +8 -2
- package/dist/lib/testing/storyboard/test-kit.mjs +7 -2
- package/dist/lib/testing/storyboard/types.d.mts +132 -10
- package/dist/lib/testing/storyboard/types.d.ts +132 -10
- package/dist/lib/testing/storyboard/types.js +17 -0
- package/dist/lib/testing/storyboard/types.mjs +16 -0
- package/dist/lib/testing/storyboard/validations.d.mts +1 -1
- package/dist/lib/testing/storyboard/validations.d.ts +1 -1
- package/dist/lib/testing/storyboard/validations.js +16 -0
- package/dist/lib/testing/storyboard/validations.mjs +16 -0
- package/dist/lib/testing/test-controller.d.mts +1 -1
- package/dist/lib/testing/test-controller.d.ts +1 -1
- package/dist/lib/types/buy-products.d.ts +71 -6
- package/dist/lib/types/control-media-buy.d.ts +25 -11
- package/dist/lib/types/core.generated.d.mts +69 -10
- package/dist/lib/types/core.generated.d.ts +69 -10
- package/dist/lib/types/create-media-buy.d.ts +71 -6
- package/dist/lib/types/forward-compat-error-codes.d.mts +7 -6
- package/dist/lib/types/forward-compat-error-codes.d.ts +7 -6
- package/dist/lib/types/index.d.mts +2 -2
- package/dist/lib/types/index.d.ts +2 -2
- package/dist/lib/types/schemas.generated.d.ts +8040 -8116
- package/dist/lib/types/schemas.generated.js +1074 -309
- package/dist/lib/types/schemas.generated.mjs +1068 -309
- package/dist/lib/types/tools.generated.d.mts +65 -6
- package/dist/lib/types/tools.generated.d.ts +65 -6
- package/dist/lib/types/update-media-buy.d.ts +71 -6
- package/dist/lib/utils/redact-secrets.d.mts +1 -1
- package/dist/lib/utils/redact-secrets.d.ts +1 -1
- package/dist/lib/utils/redact-secrets.js +1 -1
- package/dist/lib/utils/redact-secrets.mjs +1 -1
- package/dist/lib/v2/projection/cache-versions.d.mts +0 -1
- package/dist/lib/v2/projection/cache-versions.d.ts +0 -1
- package/dist/lib/v2/projection/cache-versions.js +1 -15
- package/dist/lib/v2/projection/cache-versions.mjs +1 -14
- package/dist/lib/v2/projection/canonical-properties.js +2 -2
- package/dist/lib/v2/projection/canonical-properties.mjs +3 -3
- package/dist/lib/v2/projection/registry.d.mts +1 -1
- package/dist/lib/v2/projection/registry.d.ts +1 -1
- package/dist/lib/v2/projection/registry.js +2 -2
- package/dist/lib/v2/projection/registry.mjs +3 -3
- package/dist/lib/version.d.mts +5 -5
- package/dist/lib/version.d.ts +5 -5
- package/dist/lib/version.js +3 -8
- package/dist/lib/version.mjs +3 -8
- package/dist/lib/wholesale-feed-sync/index.d.mts +1 -0
- package/dist/lib/wholesale-feed-sync/index.d.ts +1 -0
- package/dist/lib/wholesale-feed-sync/protocol-types.d.mts +42 -0
- package/dist/lib/wholesale-feed-sync/protocol-types.d.ts +42 -0
- package/dist/lib/wholesale-feed-sync/protocol-types.js +16 -0
- package/dist/lib/wholesale-feed-sync/protocol-types.mjs +0 -0
- package/dist/lib/wholesale-feed-sync/sync.d.mts +6 -6
- package/dist/lib/wholesale-feed-sync/sync.d.ts +6 -6
- package/dist/lib/wholesale-feed-sync/sync.js +3 -1
- package/dist/lib/wholesale-feed-sync/sync.mjs +3 -1
- package/dist/lib/wholesale-feed-sync/types.d.mts +15 -14
- package/dist/lib/wholesale-feed-sync/types.d.ts +15 -14
- package/dist/lib/wholesale-feed-sync/webhook-notification.d.mts +7 -5
- package/dist/lib/wholesale-feed-sync/webhook-notification.d.ts +7 -5
- package/dist/lib/wholesale-feed-sync/webhook-notification.js +45 -0
- package/dist/lib/wholesale-feed-sync/webhook-notification.mjs +44 -0
- package/docs/CLI.md +1 -1
- package/docs/TYPE-SUMMARY.md +118 -4
- package/docs/guides/ASYNC-API-REFERENCE.md +62 -1
- package/docs/guides/ASYNC-DEVELOPER-GUIDE.md +25 -0
- package/docs/guides/ASYNC-DOCUMENTATION-INDEX.md +3 -0
- package/docs/guides/BUYER-QUICKSTART-3.2.md +5 -0
- package/docs/guides/DURABLE-BUYER-WRITES.md +337 -0
- package/docs/guides/EXISTING-PLATFORM.md +35 -0
- package/docs/guides/MEDIA-BUY-3.2-COMPATIBILITY.md +7 -3
- package/docs/guides/MEDIA-BUY-ACTION-ASSESSMENT.md +300 -0
- package/docs/guides/REPORTING-LEDGER.md +654 -3
- package/docs/guides/REPORTING-SOURCE-EXECUTOR.md +63 -1
- package/docs/guides/SELLER-QUICKSTART-3.2.md +2 -0
- package/docs/guides/VALIDATE-YOUR-AGENT.md +35 -0
- package/docs/guides/idempotency-crash-recovery.md +4 -0
- package/docs/llms.txt +4 -2
- package/docs/migration-14.x-rc-worksheet.md +5 -5
- package/docs/migration-7.9-to-7.10.md +7 -5
- package/examples/README.md +17 -0
- package/examples/durable-buyer-writes/caller.ts +745 -0
- package/examples/durable-buyer-writes/worker.ts +240 -0
- package/examples/reliable-reporting-service/README.md +100 -0
- package/examples/seller-3.2-starter.ts +7 -8
- package/examples/targeting-input-existing-platform.ts +153 -0
- package/package.json +41 -29
- package/skills/build-seller-agent/specialisms/signed-requests.md +11 -1
- package/skills/cross-cutting.md +28 -11
- package/compliance/cache/3.1.0-beta.7/domains/brand/index.yaml +0 -160
- package/compliance/cache/3.1.0-beta.7/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -415
- package/compliance/cache/3.1.0-beta.7/domains/brand/scenarios/single_side_trust_extension.yaml +0 -454
- package/compliance/cache/3.1.0-beta.7/domains/creative/index.yaml +0 -339
- package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/billing_out_of_band.yaml +0 -153
- package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -389
- package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/native_in_feed.yaml +0 -543
- package/compliance/cache/3.1.0-beta.7/domains/governance/index.yaml +0 -682
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/index.yaml +0 -781
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -380
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/available_actions.yaml +0 -565
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/billing_finality_delivery.yaml +0 -354
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/canonical_formats.yaml +0 -711
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -264
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -344
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -234
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -419
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/creative_reception.yaml +0 -247
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/delivery_reporting.yaml +0 -357
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/dependency_impairment.yaml +0 -633
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -800
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -399
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -309
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_approved.yaml +0 -214
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_conditions.yaml +0 -199
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_denied.yaml +0 -204
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -252
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/invalid_transitions.yaml +0 -289
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/inventory_list_targeting.yaml +0 -276
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/measurement_accountability.yaml +0 -244
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/measurement_terms_rejected.yaml +0 -203
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/pending_creatives_to_start.yaml +0 -274
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -500
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -428
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -470
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -373
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_finalize.yaml +0 -399
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -264
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -257
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_audit_observation.yaml +0 -333
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_enforcement.yaml +0 -517
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -294
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -823
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -360
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/refine_products.yaml +0 -148
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_accountability.yaml +0 -293
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -307
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -576
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/state-machine.yaml +0 -442
- package/compliance/cache/3.1.0-beta.7/domains/signals/index.yaml +0 -266
- package/compliance/cache/3.1.0-beta.7/domains/sponsored-intelligence/index.yaml +0 -256
- package/compliance/cache/3.1.0-beta.7/index.json +0 -356
- package/compliance/cache/3.1.0-beta.7/protocols/brand/index.yaml +0 -160
- package/compliance/cache/3.1.0-beta.7/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -415
- package/compliance/cache/3.1.0-beta.7/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -454
- package/compliance/cache/3.1.0-beta.7/protocols/creative/index.yaml +0 -339
- package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/billing_out_of_band.yaml +0 -153
- package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -389
- package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/native_in_feed.yaml +0 -543
- package/compliance/cache/3.1.0-beta.7/protocols/governance/index.yaml +0 -682
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/index.yaml +0 -781
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -380
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/available_actions.yaml +0 -565
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/billing_finality_delivery.yaml +0 -354
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/canonical_formats.yaml +0 -711
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -264
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -344
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -234
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -419
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/creative_reception.yaml +0 -247
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -357
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/dependency_impairment.yaml +0 -633
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -800
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -399
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -309
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_approved.yaml +0 -214
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_conditions.yaml +0 -199
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_denied.yaml +0 -204
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -252
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/invalid_transitions.yaml +0 -289
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/inventory_list_targeting.yaml +0 -276
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/measurement_accountability.yaml +0 -244
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +0 -203
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +0 -274
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -500
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -428
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -470
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -373
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -399
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -264
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -257
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_audit_observation.yaml +0 -333
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_enforcement.yaml +0 -517
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -294
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -823
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -360
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/refine_products.yaml +0 -148
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +0 -293
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -307
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -576
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/state-machine.yaml +0 -442
- package/compliance/cache/3.1.0-beta.7/protocols/signals/index.yaml +0 -266
- package/compliance/cache/3.1.0-beta.7/protocols/sponsored-intelligence/index.yaml +0 -256
- package/compliance/cache/3.1.0-beta.7/specialisms/audience-sync/index.yaml +0 -313
- package/compliance/cache/3.1.0-beta.7/specialisms/brand-rights/index.yaml +0 -350
- package/compliance/cache/3.1.0-beta.7/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -226
- package/compliance/cache/3.1.0-beta.7/specialisms/collection-lists/index.yaml +0 -359
- package/compliance/cache/3.1.0-beta.7/specialisms/content-standards/index.yaml +0 -572
- package/compliance/cache/3.1.0-beta.7/specialisms/creative-ad-server/index.yaml +0 -409
- package/compliance/cache/3.1.0-beta.7/specialisms/creative-generative/generative-seller.yaml +0 -807
- package/compliance/cache/3.1.0-beta.7/specialisms/creative-generative/index.yaml +0 -758
- package/compliance/cache/3.1.0-beta.7/specialisms/creative-template/index.yaml +0 -510
- package/compliance/cache/3.1.0-beta.7/specialisms/governance-aware-seller/index.yaml +0 -143
- package/compliance/cache/3.1.0-beta.7/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -117
- package/compliance/cache/3.1.0-beta.7/specialisms/governance-delivery-monitor/index.yaml +0 -441
- package/compliance/cache/3.1.0-beta.7/specialisms/governance-spend-authority/denied.yaml +0 -221
- package/compliance/cache/3.1.0-beta.7/specialisms/governance-spend-authority/index.yaml +0 -330
- package/compliance/cache/3.1.0-beta.7/specialisms/property-lists/index.yaml +0 -482
- package/compliance/cache/3.1.0-beta.7/specialisms/sales-broadcast-tv/index.yaml +0 -738
- package/compliance/cache/3.1.0-beta.7/specialisms/sales-catalog-driven/index.yaml +0 -840
- package/compliance/cache/3.1.0-beta.7/specialisms/sales-guaranteed/index.yaml +0 -601
- package/compliance/cache/3.1.0-beta.7/specialisms/sales-non-guaranteed/index.yaml +0 -546
- package/compliance/cache/3.1.0-beta.7/specialisms/sales-proposal-mode/index.yaml +0 -586
- package/compliance/cache/3.1.0-beta.7/specialisms/sales-social/index.yaml +0 -919
- package/compliance/cache/3.1.0-beta.7/specialisms/signal-marketplace/index.yaml +0 -424
- package/compliance/cache/3.1.0-beta.7/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -211
- package/compliance/cache/3.1.0-beta.7/specialisms/signal-owned/index.yaml +0 -317
- package/compliance/cache/3.1.0-beta.7/specialisms/sponsored-intelligence/index.yaml +0 -59
- package/compliance/cache/3.1.0-beta.7/test-kits/acme-outdoor-live.yaml +0 -78
- package/compliance/cache/3.1.0-beta.7/test-kits/acme-outdoor.yaml +0 -223
- package/compliance/cache/3.1.0-beta.7/test-kits/billing-gate-runner.yaml +0 -115
- package/compliance/cache/3.1.0-beta.7/test-kits/bistro-oranje.yaml +0 -126
- package/compliance/cache/3.1.0-beta.7/test-kits/distributed-brand-runner.yaml +0 -281
- package/compliance/cache/3.1.0-beta.7/test-kits/nova-motors.yaml +0 -262
- package/compliance/cache/3.1.0-beta.7/test-kits/osei-natural.yaml +0 -126
- package/compliance/cache/3.1.0-beta.7/test-kits/parallel-dispatch-runner.yaml +0 -196
- package/compliance/cache/3.1.0-beta.7/test-kits/rate-limit-trip-runner.yaml +0 -172
- package/compliance/cache/3.1.0-beta.7/test-kits/signed-requests-runner.yaml +0 -155
- package/compliance/cache/3.1.0-beta.7/test-kits/single-side-trust-runner.yaml +0 -294
- package/compliance/cache/3.1.0-beta.7/test-kits/substitution-observer-runner.yaml +0 -688
- package/compliance/cache/3.1.0-beta.7/test-kits/summit-foods.yaml +0 -125
- package/compliance/cache/3.1.0-beta.7/test-kits/webhook-receiver-runner.yaml +0 -265
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/001-minimal-plan.json +0 -43
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/002-full-plan.json +0 -217
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -60
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/004a-human-review-omitted.json +0 -43
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -49
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -53
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -57
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -49
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -53
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/007-unicode-objectives.json +0 -43
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -65
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/README.md +0 -220
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/canonicalization.json +0 -241
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/keys.json +0 -60
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/001-no-signature-header.json +0 -24
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/002-wrong-tag.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/003-expired-signature.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/004-window-too-long.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -27
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -33
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/011-malformed-header.json +0 -27
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/013-expires-le-created.json +0 -27
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -27
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/015-signature-invalid.json +0 -28
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -35
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/017-key-revoked.json +0 -38
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -28
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/020-rate-abuse.json +0 -34
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -31
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -31
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -32
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -31
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -43
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -31
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -25
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/001-basic-post.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -31
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/003-es256-post.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/README.md +0 -211
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/keys.json +0 -61
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -25
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -25
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -37
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -32
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -33
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -32
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -41
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/001-basic-post.json +0 -24
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/002-es256-post.json +0 -24
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -24
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -24
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -24
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -24
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -25
- package/compliance/cache/3.1.0-beta.7/universal/billing-gate-dispatch.yaml +0 -450
- package/compliance/cache/3.1.0-beta.7/universal/canonical-format-validate-input.yaml +0 -640
- package/compliance/cache/3.1.0-beta.7/universal/capability-discovery.yaml +0 -125
- package/compliance/cache/3.1.0-beta.7/universal/collection-lists-pagination-integrity.yaml +0 -306
- package/compliance/cache/3.1.0-beta.7/universal/comply-controller-mode-gate.yaml +0 -141
- package/compliance/cache/3.1.0-beta.7/universal/content-standards-pagination-integrity.yaml +0 -326
- package/compliance/cache/3.1.0-beta.7/universal/deterministic-testing.yaml +0 -1430
- package/compliance/cache/3.1.0-beta.7/universal/error-compliance-signals.yaml +0 -377
- package/compliance/cache/3.1.0-beta.7/universal/error-compliance.yaml +0 -528
- package/compliance/cache/3.1.0-beta.7/universal/fictional-entities.yaml +0 -307
- package/compliance/cache/3.1.0-beta.7/universal/get-media-buys-pagination-integrity.yaml +0 -160
- package/compliance/cache/3.1.0-beta.7/universal/get-signals-pagination-integrity.yaml +0 -211
- package/compliance/cache/3.1.0-beta.7/universal/idempotency.yaml +0 -861
- package/compliance/cache/3.1.0-beta.7/universal/notification-config-event-scope.yaml +0 -119
- package/compliance/cache/3.1.0-beta.7/universal/notification-config-lifecycle.yaml +0 -337
- package/compliance/cache/3.1.0-beta.7/universal/notification-config-rejections.yaml +0 -107
- package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity-creative-formats.yaml +0 -265
- package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity-list-accounts.yaml +0 -245
- package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity.yaml +0 -263
- package/compliance/cache/3.1.0-beta.7/universal/property-lists-pagination-integrity.yaml +0 -307
- package/compliance/cache/3.1.0-beta.7/universal/read-tool-idempotency.yaml +0 -405
- package/compliance/cache/3.1.0-beta.7/universal/runner-output-contract.yaml +0 -1266
- package/compliance/cache/3.1.0-beta.7/universal/schema-validation-signals.yaml +0 -181
- package/compliance/cache/3.1.0-beta.7/universal/schema-validation.yaml +0 -548
- package/compliance/cache/3.1.0-beta.7/universal/security.yaml +0 -539
- package/compliance/cache/3.1.0-beta.7/universal/signed-requests.yaml +0 -217
- package/compliance/cache/3.1.0-beta.7/universal/stale-response-advisory.yaml +0 -295
- package/compliance/cache/3.1.0-beta.7/universal/storyboard-schema.yaml +0 -2136
- package/compliance/cache/3.1.0-beta.7/universal/v3-envelope-integrity.yaml +0 -117
- package/compliance/cache/3.1.0-beta.7/universal/version-negotiation.yaml +0 -130
- package/compliance/cache/3.1.0-beta.7/universal/webhook-emission.yaml +0 -411
- package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-bulk-webhooks.yaml +0 -82
- package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-product-webhooks.yaml +0 -83
- package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-products.yaml +0 -151
- package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-signal-webhooks.yaml +0 -83
- package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-signals.yaml +0 -149
- package/dist/lib/types/v3-1-beta/index.d.mts +0 -1
- package/dist/lib/types/v3-1-beta/index.d.ts +0 -1
- package/dist/lib/types/v3-1-beta/index.mjs +0 -1
- package/dist/lib/types/v3-1-beta/tools.generated.d.mts +0 -26788
- package/dist/lib/types/v3-1-beta/tools.generated.d.ts +0 -26788
- /package/dist/lib/{types/v3-1-beta/tools.generated.mjs → media-buy/action-types.mjs} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createHmac, randomBytes, randomUUID } from "crypto";
|
|
1
|
+
import { createHash, createHmac, randomBytes, randomUUID, timingSafeEqual } from "crypto";
|
|
2
2
|
import {
|
|
3
3
|
ProtocolClient,
|
|
4
4
|
normalizeTransportOptions,
|
|
@@ -76,6 +76,14 @@ class DeferredSettlementOwnershipError extends Error {
|
|
|
76
76
|
this.name = "DeferredSettlementOwnershipError";
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
|
+
class DirectContinuationRecoveryError extends DeferredSettlementOwnershipError {
|
|
80
|
+
constructor(message, reason) {
|
|
81
|
+
super(message);
|
|
82
|
+
this.reason = reason;
|
|
83
|
+
this.name = "DirectContinuationRecoveryError";
|
|
84
|
+
}
|
|
85
|
+
reason;
|
|
86
|
+
}
|
|
79
87
|
function transferDeferredSettlementAcknowledgement(source, target) {
|
|
80
88
|
for (const symbol of [DEFERRED_SETTLEMENT_ACK, DEFERRED_SETTLEMENT_NACK]) {
|
|
81
89
|
const descriptor = Object.getOwnPropertyDescriptor(source, symbol);
|
|
@@ -349,9 +357,63 @@ function snapshotTaskOptions(options) {
|
|
|
349
357
|
...options.metadata !== void 0 && { metadata: structuredClone(options.metadata) },
|
|
350
358
|
...options.delegatedOperatorAuthorization !== void 0 && {
|
|
351
359
|
delegatedOperatorAuthorization: { ...options.delegatedOperatorAuthorization }
|
|
360
|
+
},
|
|
361
|
+
...options.durableContinuationRecovery !== void 0 && {
|
|
362
|
+
durableContinuationRecovery: { ...options.durableContinuationRecovery }
|
|
352
363
|
}
|
|
353
364
|
};
|
|
354
365
|
}
|
|
366
|
+
const DIRECT_CONTINUATION_RECOVERY_KEY_PATTERN = /^[A-Za-z0-9_-]{43}$/;
|
|
367
|
+
const MAX_DIRECT_CONTINUATION_OWNER_SCOPE_BYTES = 1024;
|
|
368
|
+
function directContinuationRecoveryDigest(key) {
|
|
369
|
+
return createHash("sha256").update(key, "utf8").digest("base64url");
|
|
370
|
+
}
|
|
371
|
+
function directContinuationDigestMatches(expectedDigest, actualDigest) {
|
|
372
|
+
try {
|
|
373
|
+
const expected = Buffer.from(expectedDigest, "base64url");
|
|
374
|
+
const actual = Buffer.from(actualDigest, "base64url");
|
|
375
|
+
return expected.length === actual.length && timingSafeEqual(expected, actual);
|
|
376
|
+
} catch {
|
|
377
|
+
return false;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
function directContinuationRecoveryKeyMatches(expectedDigest, recoveryKey) {
|
|
381
|
+
return directContinuationDigestMatches(expectedDigest, directContinuationRecoveryDigest(recoveryKey));
|
|
382
|
+
}
|
|
383
|
+
function assertDirectContinuationOwnerScope(ownerScope) {
|
|
384
|
+
if (typeof ownerScope !== "string" || ownerScope.trim().length === 0 || /[\p{Cc}\p{Cf}\p{Zl}\p{Zp}]/u.test(ownerScope) || Buffer.byteLength(ownerScope, "utf8") > MAX_DIRECT_CONTINUATION_OWNER_SCOPE_BYTES) {
|
|
385
|
+
throw new ConfigurationError(
|
|
386
|
+
"durableContinuationRecovery.ownerScope must be a non-empty authenticated owner/account scope of at most 1024 UTF-8 bytes."
|
|
387
|
+
);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
function directContinuationSellerOrigin(agent) {
|
|
391
|
+
let sellerOrigin = agent.agent_uri;
|
|
392
|
+
try {
|
|
393
|
+
sellerOrigin = new URL(agent.agent_uri).origin;
|
|
394
|
+
} catch {
|
|
395
|
+
}
|
|
396
|
+
return sellerOrigin;
|
|
397
|
+
}
|
|
398
|
+
function directContinuationOwnerBindingDigest(agent, ownerScope) {
|
|
399
|
+
return directContinuationRecoveryDigest(
|
|
400
|
+
canonicalize({
|
|
401
|
+
ownerScope,
|
|
402
|
+
seller: { id: agent.id, origin: directContinuationSellerOrigin(agent), protocol: agent.protocol }
|
|
403
|
+
})
|
|
404
|
+
);
|
|
405
|
+
}
|
|
406
|
+
function directContinuationRecoveryDenied() {
|
|
407
|
+
return new DirectContinuationRecoveryError("Direct continuation recovery is not authorized.", "not_authorized");
|
|
408
|
+
}
|
|
409
|
+
function attachDirectContinuationRecovery(result, recovery) {
|
|
410
|
+
const deferred = result.deferred;
|
|
411
|
+
if (!deferred) return result;
|
|
412
|
+
const resume = deferred.resume;
|
|
413
|
+
deferred.recovery = { ...recovery };
|
|
414
|
+
deferred.resume = async (input) => attachDirectContinuationRecovery(await resume(input), recovery);
|
|
415
|
+
return result;
|
|
416
|
+
}
|
|
355
417
|
function snapshotTransportOptions(transport) {
|
|
356
418
|
return transport === void 0 ? void 0 : { ...transport };
|
|
357
419
|
}
|
|
@@ -682,6 +744,19 @@ class TaskExecutor {
|
|
|
682
744
|
const effectiveServerVersion = serverVersion ?? "v3";
|
|
683
745
|
this.lastKnownServerVersion = effectiveServerVersion;
|
|
684
746
|
params = structuredClone(params);
|
|
747
|
+
if (options.durableContinuationRecovery !== void 0) {
|
|
748
|
+
assertDirectContinuationOwnerScope(options.durableContinuationRecovery.ownerScope);
|
|
749
|
+
if (agent.protocol !== "a2a") {
|
|
750
|
+
throw new ConfigurationError("durableContinuationRecovery is supported only for resumable A2A mutations.");
|
|
751
|
+
}
|
|
752
|
+
if (!requestUsesIdempotency(taskName, params)) {
|
|
753
|
+
throw new ConfigurationError("durableContinuationRecovery is supported only for mutating AdCP requests.");
|
|
754
|
+
}
|
|
755
|
+
if (!this.config.deferredStorage) {
|
|
756
|
+
throw new ConfigurationError("durableContinuationRecovery requires deferredStorage.");
|
|
757
|
+
}
|
|
758
|
+
this.requireDeferredSettlementOperationRouting(this.config.deferredStorage, true);
|
|
759
|
+
}
|
|
685
760
|
const taskId = getTaskOperationId(options) ?? randomUUID();
|
|
686
761
|
const startTime = Date.now();
|
|
687
762
|
const workingTimeout = this.config.workingTimeout || 12e4;
|
|
@@ -1771,7 +1846,9 @@ class TaskExecutor {
|
|
|
1771
1846
|
const inputRequest = this.responseParser.parseInputRequest(response);
|
|
1772
1847
|
const serverContextId = this.responseParser.getContextId(response) ?? response.contextId;
|
|
1773
1848
|
const a2aTaskId = this.responseParser.getA2AContinuationTaskId(response);
|
|
1774
|
-
const
|
|
1849
|
+
const directContinuationRecovery = !deferTerminalTaskStatus && options.durableContinuationRecovery !== void 0;
|
|
1850
|
+
const operationRoutedContinuation = deferTerminalTaskStatus || directContinuationRecovery;
|
|
1851
|
+
const settlementServerTaskId = operationRoutedContinuation ? this.responseParser.getTaskId(response) : void 0;
|
|
1775
1852
|
if (agent.protocol === "mcp" || !a2aTaskId) {
|
|
1776
1853
|
const partialData = this.extractResponseData(response, debugLogs, taskName, serverVersion);
|
|
1777
1854
|
const metadata = this.buildMetadata({
|
|
@@ -1808,6 +1885,7 @@ class TaskExecutor {
|
|
|
1808
1885
|
const token = randomUUID();
|
|
1809
1886
|
const deferredStorage = this.config.deferredStorage;
|
|
1810
1887
|
const usesDurableStorage = deferredStorage !== void 0 && persistPausedContinuation;
|
|
1888
|
+
const directRecoveryKey = directContinuationRecovery && usesDurableStorage ? randomBytes(32).toString("base64url") : void 0;
|
|
1811
1889
|
if (usesDurableStorage) {
|
|
1812
1890
|
const createdAt = Date.now();
|
|
1813
1891
|
const ttlSeconds = this.config.deferredTaskTtlSeconds ?? DEFAULT_DEFERRED_TASK_TTL_SECONDS;
|
|
@@ -1831,10 +1909,18 @@ class TaskExecutor {
|
|
|
1831
1909
|
...deferredClientContext !== void 0 && {
|
|
1832
1910
|
clientContext: durableDeferredSnapshot(deferredClientContext)
|
|
1833
1911
|
},
|
|
1834
|
-
...
|
|
1912
|
+
...operationRoutedContinuation && {
|
|
1835
1913
|
settlementOperationId: taskId,
|
|
1836
1914
|
settlementOperationRouteRequired: true
|
|
1837
1915
|
},
|
|
1916
|
+
...directContinuationRecovery && {
|
|
1917
|
+
directContinuationRecovery: true,
|
|
1918
|
+
directContinuationRecoveryKeyDigest: directContinuationRecoveryDigest(directRecoveryKey),
|
|
1919
|
+
directContinuationOwnerBindingDigest: directContinuationOwnerBindingDigest(
|
|
1920
|
+
agent,
|
|
1921
|
+
options.durableContinuationRecovery.ownerScope
|
|
1922
|
+
)
|
|
1923
|
+
},
|
|
1838
1924
|
...deferTerminalTaskStatus && requireDeferredSettlementResumeAuthorization && {
|
|
1839
1925
|
settlementResumeAuthorizationRequired: true
|
|
1840
1926
|
},
|
|
@@ -1842,8 +1928,10 @@ class TaskExecutor {
|
|
|
1842
1928
|
createdAt,
|
|
1843
1929
|
expiresAt: createdAt + ttlSeconds * 1e3
|
|
1844
1930
|
};
|
|
1845
|
-
if (
|
|
1846
|
-
|
|
1931
|
+
if (operationRoutedContinuation) {
|
|
1932
|
+
this.requireDeferredSettlementOperationRouting(deferredStorage, directContinuationRecovery);
|
|
1933
|
+
}
|
|
1934
|
+
const stored = operationRoutedContinuation ? await deferredStorage.putForSettlementOperationIfAbsent(taskId, token, deferredState, ttlSeconds) : await deferredStorage.putIfAbsent(token, deferredState, ttlSeconds);
|
|
1847
1935
|
if (!stored) {
|
|
1848
1936
|
throw new Error("Deferred continuation token already exists; refusing to replace another task.");
|
|
1849
1937
|
}
|
|
@@ -1884,6 +1972,12 @@ class TaskExecutor {
|
|
|
1884
1972
|
question: inputRequest.question,
|
|
1885
1973
|
resume: usesDurableStorage ? (input) => this.resumeDeferredTaskFromLiveClosure(token, input, !deferTerminalTaskStatus) : resumeInProcess
|
|
1886
1974
|
};
|
|
1975
|
+
if (directRecoveryKey !== void 0) {
|
|
1976
|
+
const recovery = { operationId: taskId, recoveryKey: directRecoveryKey };
|
|
1977
|
+
deferred.recovery = recovery;
|
|
1978
|
+
const resume = deferred.resume;
|
|
1979
|
+
deferred.resume = async (input) => attachDirectContinuationRecovery(await resume(input), recovery);
|
|
1980
|
+
}
|
|
1887
1981
|
return {
|
|
1888
1982
|
success: true,
|
|
1889
1983
|
// The task is progressing, not failed
|
|
@@ -1932,6 +2026,7 @@ class TaskExecutor {
|
|
|
1932
2026
|
const token = handlerResponse.token;
|
|
1933
2027
|
const deferredStorage = this.config.deferredStorage;
|
|
1934
2028
|
const usesDurableStorage = deferredStorage !== void 0 && persistPausedContinuation;
|
|
2029
|
+
const directRecoveryKey = directContinuationRecovery && usesDurableStorage ? randomBytes(32).toString("base64url") : void 0;
|
|
1935
2030
|
if (usesDurableStorage) {
|
|
1936
2031
|
assertDeferredContinuationToken(token);
|
|
1937
2032
|
const createdAt = Date.now();
|
|
@@ -1956,10 +2051,18 @@ class TaskExecutor {
|
|
|
1956
2051
|
...deferredClientContext !== void 0 && {
|
|
1957
2052
|
clientContext: durableDeferredSnapshot(deferredClientContext)
|
|
1958
2053
|
},
|
|
1959
|
-
...
|
|
2054
|
+
...operationRoutedContinuation && {
|
|
1960
2055
|
settlementOperationId: taskId,
|
|
1961
2056
|
settlementOperationRouteRequired: true
|
|
1962
2057
|
},
|
|
2058
|
+
...directContinuationRecovery && {
|
|
2059
|
+
directContinuationRecovery: true,
|
|
2060
|
+
directContinuationRecoveryKeyDigest: directContinuationRecoveryDigest(directRecoveryKey),
|
|
2061
|
+
directContinuationOwnerBindingDigest: directContinuationOwnerBindingDigest(
|
|
2062
|
+
agent,
|
|
2063
|
+
options.durableContinuationRecovery.ownerScope
|
|
2064
|
+
)
|
|
2065
|
+
},
|
|
1963
2066
|
...deferTerminalTaskStatus && requireDeferredSettlementResumeAuthorization && {
|
|
1964
2067
|
settlementResumeAuthorizationRequired: true
|
|
1965
2068
|
},
|
|
@@ -1967,8 +2070,10 @@ class TaskExecutor {
|
|
|
1967
2070
|
createdAt,
|
|
1968
2071
|
expiresAt: createdAt + ttlSeconds * 1e3
|
|
1969
2072
|
};
|
|
1970
|
-
if (
|
|
1971
|
-
|
|
2073
|
+
if (operationRoutedContinuation) {
|
|
2074
|
+
this.requireDeferredSettlementOperationRouting(deferredStorage, directContinuationRecovery);
|
|
2075
|
+
}
|
|
2076
|
+
const stored = operationRoutedContinuation ? await deferredStorage.putForSettlementOperationIfAbsent(taskId, token, deferredState, ttlSeconds) : await deferredStorage.putIfAbsent(token, deferredState, ttlSeconds);
|
|
1972
2077
|
if (!stored) {
|
|
1973
2078
|
throw new Error("Deferred continuation token already exists; refusing to replace another task.");
|
|
1974
2079
|
}
|
|
@@ -2010,6 +2115,12 @@ class TaskExecutor {
|
|
|
2010
2115
|
question: inputRequest.question,
|
|
2011
2116
|
resume: usesDurableStorage ? (input) => this.resumeDeferredTaskFromLiveClosure(token, input, !deferTerminalTaskStatus) : resumeInProcess
|
|
2012
2117
|
};
|
|
2118
|
+
if (directRecoveryKey !== void 0) {
|
|
2119
|
+
const recovery = { operationId: taskId, recoveryKey: directRecoveryKey };
|
|
2120
|
+
deferred.recovery = recovery;
|
|
2121
|
+
const resume = deferred.resume;
|
|
2122
|
+
deferred.resume = async (input) => attachDirectContinuationRecovery(await resume(input), recovery);
|
|
2123
|
+
}
|
|
2013
2124
|
return {
|
|
2014
2125
|
success: true,
|
|
2015
2126
|
// The task is progressing, not failed
|
|
@@ -2374,10 +2485,10 @@ class TaskExecutor {
|
|
|
2374
2485
|
assertDeferredContinuationToken(token);
|
|
2375
2486
|
return await this.config.deferredStorage.has(token) === true;
|
|
2376
2487
|
}
|
|
2377
|
-
requireDeferredSettlementOperationRouting(storage) {
|
|
2488
|
+
requireDeferredSettlementOperationRouting(storage, direct = false) {
|
|
2378
2489
|
if (typeof storage.putForSettlementOperationIfAbsent !== "function" || typeof storage.getBySettlementOperationId !== "function" || typeof storage.replaceForSettlementOperationIfVersion !== "function") {
|
|
2379
2490
|
throw new ConfigurationError(
|
|
2380
|
-
"Committed deferred settlement requires atomic operation routing so paused mutations remain discoverable across crashes. Use MemoryStorage or implement the DeferredTaskStorage operation-route contract."
|
|
2491
|
+
direct ? "durableContinuationRecovery requires atomic DeferredTaskStorage operation routing. Use MemoryStorage or implement putForSettlementOperationIfAbsent(), getBySettlementOperationId(), and replaceForSettlementOperationIfVersion()." : "Committed deferred settlement requires atomic operation routing so paused mutations remain discoverable across crashes. Use MemoryStorage or implement the DeferredTaskStorage operation-route contract."
|
|
2381
2492
|
);
|
|
2382
2493
|
}
|
|
2383
2494
|
}
|
|
@@ -2395,7 +2506,7 @@ class TaskExecutor {
|
|
|
2395
2506
|
if (state.settlementOperationId === void 0 || state.settlementOperationRouteRequired !== true) {
|
|
2396
2507
|
return storage.replaceIfVersion(token, expectedVersion, state, ttlSeconds);
|
|
2397
2508
|
}
|
|
2398
|
-
this.requireDeferredSettlementOperationRouting(storage);
|
|
2509
|
+
this.requireDeferredSettlementOperationRouting(storage, state.directContinuationRecovery === true);
|
|
2399
2510
|
return storage.replaceForSettlementOperationIfVersion(
|
|
2400
2511
|
state.settlementOperationId,
|
|
2401
2512
|
token,
|
|
@@ -2428,8 +2539,58 @@ class TaskExecutor {
|
|
|
2428
2539
|
}
|
|
2429
2540
|
const routed = await this.loadDeferredSettlementOperationRoute(storage, operationId);
|
|
2430
2541
|
if (!routed) return void 0;
|
|
2542
|
+
if (routed.state.directContinuationRecovery === true) {
|
|
2543
|
+
throw new DeferredSettlementOwnershipError(
|
|
2544
|
+
"A direct continuation route cannot be recovered through committed settlement authorization."
|
|
2545
|
+
);
|
|
2546
|
+
}
|
|
2431
2547
|
return this.recoverRoutedDeferredTask(operationId, routed, publishTerminalTaskStatus);
|
|
2432
2548
|
}
|
|
2549
|
+
/** Recover an opt-in direct continuation through its secret operation capability. */
|
|
2550
|
+
async recoverDirectPauseContinuation(request, publishTerminalTaskStatus = true) {
|
|
2551
|
+
const storage = this.config.deferredStorage;
|
|
2552
|
+
if (!storage) throw new ConfigurationError("Direct continuation recovery requires deferredStorage.");
|
|
2553
|
+
this.requireDeferredSettlementOperationRouting(storage, true);
|
|
2554
|
+
const operationId = typeof request?.operationId === "string" ? request.operationId : "";
|
|
2555
|
+
const recoveryKey = typeof request?.recoveryKey === "string" ? request.recoveryKey : "";
|
|
2556
|
+
const ownerScope = typeof request?.ownerScope === "string" ? request.ownerScope : "";
|
|
2557
|
+
if (!operationId || !DIRECT_CONTINUATION_RECOVERY_KEY_PATTERN.test(recoveryKey) || ownerScope.trim().length === 0 || /[\p{Cc}\p{Cf}\p{Zl}\p{Zp}]/u.test(ownerScope) || Buffer.byteLength(ownerScope, "utf8") > MAX_DIRECT_CONTINUATION_OWNER_SCOPE_BYTES) {
|
|
2558
|
+
throw directContinuationRecoveryDenied();
|
|
2559
|
+
}
|
|
2560
|
+
const routed = await this.loadDeferredSettlementOperationRoute(storage, operationId);
|
|
2561
|
+
const digest = routed?.state.directContinuationRecoveryKeyDigest;
|
|
2562
|
+
if (!routed || routed.state.directContinuationRecovery !== true || typeof digest !== "string" || !directContinuationRecoveryKeyMatches(digest, recoveryKey)) {
|
|
2563
|
+
throw directContinuationRecoveryDenied();
|
|
2564
|
+
}
|
|
2565
|
+
let agent;
|
|
2566
|
+
try {
|
|
2567
|
+
agent = this.deferredAgents.get(routed.state.agentId) ?? await this.config.resolveDeferredAgent?.(routed.state.agentId);
|
|
2568
|
+
} catch {
|
|
2569
|
+
throw directContinuationRecoveryDenied();
|
|
2570
|
+
}
|
|
2571
|
+
const expectedOwnerBinding = routed.state.directContinuationOwnerBindingDigest;
|
|
2572
|
+
if (!agent || agent.id !== routed.state.agentId || agent.protocol !== "a2a" || typeof expectedOwnerBinding !== "string" || !directContinuationDigestMatches(expectedOwnerBinding, directContinuationOwnerBindingDigest(agent, ownerScope))) {
|
|
2573
|
+
throw directContinuationRecoveryDenied();
|
|
2574
|
+
}
|
|
2575
|
+
this.deferredAgents.set(agent.id, agent);
|
|
2576
|
+
const recovered = await this.recoverRoutedDeferredTask(operationId, routed, publishTerminalTaskStatus);
|
|
2577
|
+
if (!recovered) {
|
|
2578
|
+
if (routed.state.continuationClaimed === true) {
|
|
2579
|
+
throw new DirectContinuationRecoveryError(
|
|
2580
|
+
"The direct continuation is already being resumed; do not redispatch the mutation.",
|
|
2581
|
+
"in_progress"
|
|
2582
|
+
);
|
|
2583
|
+
}
|
|
2584
|
+
throw directContinuationRecoveryDenied();
|
|
2585
|
+
}
|
|
2586
|
+
return {
|
|
2587
|
+
...recovered,
|
|
2588
|
+
result: attachDirectContinuationRecovery(recovered.result, { operationId, recoveryKey }),
|
|
2589
|
+
...routed.state.clientContext !== void 0 && {
|
|
2590
|
+
clientContext: structuredClone(routed.state.clientContext)
|
|
2591
|
+
}
|
|
2592
|
+
};
|
|
2593
|
+
}
|
|
2433
2594
|
async recoverRoutedDeferredTask(operationId, routed, publishTerminalTaskStatus) {
|
|
2434
2595
|
const { token, state } = routed;
|
|
2435
2596
|
if (state.settlementOperationId !== operationId || state.settlementOperationRouteRequired !== true || state.expiresAt <= Date.now()) {
|
|
@@ -2442,7 +2603,9 @@ class TaskExecutor {
|
|
|
2442
2603
|
};
|
|
2443
2604
|
}
|
|
2444
2605
|
if (state.continuationClaimed) {
|
|
2445
|
-
|
|
2606
|
+
const lease = state.settlementResumeDispatchLease;
|
|
2607
|
+
const reclaimableAdmission = state.directContinuationRecovery === true && lease?.phase === "admission" && Number.isFinite(lease.expiresAt) && lease.expiresAt <= Date.now();
|
|
2608
|
+
if (!reclaimableAdmission) return void 0;
|
|
2446
2609
|
}
|
|
2447
2610
|
if (!state.pauseStatus || !state.pauseQuestion) {
|
|
2448
2611
|
throw new DeferredSettlementOwnershipError(
|
|
@@ -2499,6 +2662,11 @@ class TaskExecutor {
|
|
|
2499
2662
|
});
|
|
2500
2663
|
}
|
|
2501
2664
|
if (!state) throw new Error("The linked deferred callback checkpoint is unavailable.");
|
|
2665
|
+
if (state.directContinuationRecovery === true) {
|
|
2666
|
+
throw new DeferredSettlementOwnershipError(
|
|
2667
|
+
"A direct continuation route cannot be checkpointed through committed settlement authorization."
|
|
2668
|
+
);
|
|
2669
|
+
}
|
|
2502
2670
|
if (state.settlementOperationId !== operationId) {
|
|
2503
2671
|
throw new Error("The deferred callback token is bound to a different committed operation.");
|
|
2504
2672
|
}
|
|
@@ -2571,6 +2739,11 @@ class TaskExecutor {
|
|
|
2571
2739
|
}
|
|
2572
2740
|
const currentRoute = await this.loadDeferredSettlementOperationRoute(storage, operationId);
|
|
2573
2741
|
if (!currentRoute) return void 0;
|
|
2742
|
+
if (currentRoute.state.directContinuationRecovery === true) {
|
|
2743
|
+
throw new DeferredSettlementOwnershipError(
|
|
2744
|
+
"A direct continuation route cannot be checkpointed through committed settlement authorization."
|
|
2745
|
+
);
|
|
2746
|
+
}
|
|
2574
2747
|
if (currentRoute.state.settlementOperationRouteRequired !== true) {
|
|
2575
2748
|
throw new DeferredSettlementOwnershipError("The callback operation route is not a current-format checkpoint.");
|
|
2576
2749
|
}
|
|
@@ -2610,9 +2783,21 @@ class TaskExecutor {
|
|
|
2610
2783
|
throw new Error("Deferred task expired.");
|
|
2611
2784
|
}
|
|
2612
2785
|
const committedOperationId = state.settlementOperationId;
|
|
2613
|
-
const
|
|
2786
|
+
const operationRouteRequired = committedOperationId !== void 0 && state.settlementOperationRouteRequired === true;
|
|
2787
|
+
const requiresSettlement = committedOperationId !== void 0 && state.directContinuationRecovery !== true;
|
|
2788
|
+
const requiresRoutedAdmission = requiresSettlement || operationRouteRequired;
|
|
2614
2789
|
const requiresRecoveredSettlement = requiresSettlement && !liveSettlementOwner;
|
|
2615
|
-
if (
|
|
2790
|
+
if (operationRouteRequired && state.directContinuationRecovery !== true && (state.directContinuationRecoveryKeyDigest !== void 0 || state.directContinuationOwnerBindingDigest !== void 0)) {
|
|
2791
|
+
throw new DeferredSettlementOwnershipError(
|
|
2792
|
+
"The direct continuation route lost its route-kind discriminator in durable storage."
|
|
2793
|
+
);
|
|
2794
|
+
}
|
|
2795
|
+
if (state.directContinuationRecovery === true && (typeof state.directContinuationRecoveryKeyDigest !== "string" || typeof state.directContinuationOwnerBindingDigest !== "string")) {
|
|
2796
|
+
throw new DeferredSettlementOwnershipError(
|
|
2797
|
+
"The direct continuation route is missing its recovery ownership binding."
|
|
2798
|
+
);
|
|
2799
|
+
}
|
|
2800
|
+
if (operationRouteRequired) {
|
|
2616
2801
|
this.requireDeferredSettlementOperationRouting(this.config.deferredStorage);
|
|
2617
2802
|
}
|
|
2618
2803
|
if (requiresSettlement && state.settlementFinalizedResult !== void 0) {
|
|
@@ -2648,7 +2833,7 @@ class TaskExecutor {
|
|
|
2648
2833
|
);
|
|
2649
2834
|
}
|
|
2650
2835
|
}
|
|
2651
|
-
if (
|
|
2836
|
+
if (operationRouteRequired) {
|
|
2652
2837
|
const currentRoute = await this.loadDeferredSettlementOperationRoute(
|
|
2653
2838
|
this.config.deferredStorage,
|
|
2654
2839
|
committedOperationId
|
|
@@ -2659,6 +2844,12 @@ class TaskExecutor {
|
|
|
2659
2844
|
"The committed continuation operation route does not match its stored generation."
|
|
2660
2845
|
);
|
|
2661
2846
|
}
|
|
2847
|
+
if (state.directContinuationRecovery === true) {
|
|
2848
|
+
throw new DirectContinuationRecoveryError(
|
|
2849
|
+
"The direct continuation advanced to a newer generation; use owner-bound operation recovery.",
|
|
2850
|
+
"superseded"
|
|
2851
|
+
);
|
|
2852
|
+
}
|
|
2662
2853
|
if (state.settlementResumeAuthorizationRequired === true) {
|
|
2663
2854
|
let replacementAuthorized = await this.config.authorizeDeferredSettlementResume?.(committedOperationId, currentRoute.token) === true;
|
|
2664
2855
|
if (!replacementAuthorized) {
|
|
@@ -2789,7 +2980,7 @@ class TaskExecutor {
|
|
|
2789
2980
|
}
|
|
2790
2981
|
if (state.continuationClaimed) {
|
|
2791
2982
|
const dispatchLease = state.settlementResumeDispatchLease;
|
|
2792
|
-
const reclaimableAdmission =
|
|
2983
|
+
const reclaimableAdmission = requiresRoutedAdmission && dispatchLease?.phase === "admission" && Number.isFinite(dispatchLease.expiresAt) && dispatchLease.expiresAt <= Date.now();
|
|
2793
2984
|
if (!reclaimableAdmission) {
|
|
2794
2985
|
throw new DeferredSettlementOwnershipError("Deferred task is already being resumed.");
|
|
2795
2986
|
}
|
|
@@ -2802,7 +2993,7 @@ class TaskExecutor {
|
|
|
2802
2993
|
const claimTtlSeconds = this.deferredSafetyRetentionSeconds();
|
|
2803
2994
|
const claimedVersion = randomUUID();
|
|
2804
2995
|
const claimedAt = Date.now();
|
|
2805
|
-
const dispatchOwnerId =
|
|
2996
|
+
const dispatchOwnerId = requiresRoutedAdmission ? randomUUID() : void 0;
|
|
2806
2997
|
const claimedMessages = durableDeferredSnapshot(state.messages);
|
|
2807
2998
|
const resumedMessages = durableDeferredSnapshot(state.messages);
|
|
2808
2999
|
const claimedState = {
|
|
@@ -2973,7 +3164,7 @@ class TaskExecutor {
|
|
|
2973
3164
|
}
|
|
2974
3165
|
const nextToken = resumed.deferred.token;
|
|
2975
3166
|
assertDeferredContinuationToken(nextToken);
|
|
2976
|
-
const replacementServerTaskId = requiresSettlement ? reconcileDeferredServerTaskId(trustedDeferredServerTaskId(state), [resumed.metadata.serverTaskId]) : resumed.metadata.serverTaskId;
|
|
3167
|
+
const replacementServerTaskId = requiresSettlement ? reconcileDeferredServerTaskId(trustedDeferredServerTaskId(state), [resumed.metadata.serverTaskId]) : resumed.metadata.serverTaskId ?? state.settlementServerTaskId;
|
|
2977
3168
|
const createdAt = Date.now();
|
|
2978
3169
|
const ttlSeconds = this.config.deferredTaskTtlSeconds ?? DEFAULT_DEFERRED_TASK_TTL_SECONDS;
|
|
2979
3170
|
const replacementState = {
|
|
@@ -3002,6 +3193,11 @@ class TaskExecutor {
|
|
|
3002
3193
|
...state.settlementOperationRouteRequired === true && {
|
|
3003
3194
|
settlementOperationRouteRequired: true
|
|
3004
3195
|
},
|
|
3196
|
+
...state.directContinuationRecovery === true && {
|
|
3197
|
+
directContinuationRecovery: true,
|
|
3198
|
+
directContinuationRecoveryKeyDigest: state.directContinuationRecoveryKeyDigest,
|
|
3199
|
+
directContinuationOwnerBindingDigest: state.directContinuationOwnerBindingDigest
|
|
3200
|
+
},
|
|
3005
3201
|
...state.settlementResumeAuthorizationRequired === true && {
|
|
3006
3202
|
settlementResumeAuthorizationRequired: true
|
|
3007
3203
|
},
|
|
@@ -3011,7 +3207,7 @@ class TaskExecutor {
|
|
|
3011
3207
|
createdAt,
|
|
3012
3208
|
expiresAt: createdAt + ttlSeconds * 1e3
|
|
3013
3209
|
};
|
|
3014
|
-
const stored =
|
|
3210
|
+
const stored = operationRouteRequired ? await this.config.deferredStorage.replaceForSettlementOperationIfVersion(
|
|
3015
3211
|
committedOperationId,
|
|
3016
3212
|
token,
|
|
3017
3213
|
dispatchVersion,
|
|
@@ -4275,6 +4471,7 @@ export {
|
|
|
4275
4471
|
DEFERRED_SETTLEMENT_ACK,
|
|
4276
4472
|
DeferredSettlementOwnershipError,
|
|
4277
4473
|
DeferredTaskError,
|
|
4474
|
+
DirectContinuationRecoveryError,
|
|
4278
4475
|
InputRequiredError,
|
|
4279
4476
|
MaxClarificationError,
|
|
4280
4477
|
TaskExecutor,
|
package/dist/lib/index.d.mts
CHANGED
|
@@ -26,12 +26,12 @@ export { InMemoryEstablishedProposalStore, createInMemoryEstablishedProposalStor
|
|
|
26
26
|
export { ADCPMultiAgentClient, createADCPMultiAgentClient, type MultiAgentWebhookHandlerAdapter, } from './core/ADCPMultiAgentClient.mjs';
|
|
27
27
|
export { ConfigurationManager } from './core/ConfigurationManager.mjs';
|
|
28
28
|
export { CreativeAgentClient, createCreativeAgentClient, STANDARD_CREATIVE_AGENTS, type CreativeAgentListTaskOptions, type CreativeAgentClientConfig, type LegacyCreativeFormat, } from './core/CreativeAgentClient.mjs';
|
|
29
|
-
export { TaskExecutor } from './core/TaskExecutor.mjs';
|
|
29
|
+
export { TaskExecutor, DeferredSettlementOwnershipError, DirectContinuationRecoveryError, type DirectContinuationRecoveryFailure, } from './core/TaskExecutor.mjs';
|
|
30
30
|
export { match, attachMatch } from './core/match.mjs';
|
|
31
31
|
export type { MatchHandlers, PartialMatchHandlers } from './core/match.mjs';
|
|
32
32
|
export { ProtocolResponseParser, responseParser, ADCP_STATUS, type ADCPStatus } from './core/ProtocolResponseParser.mjs';
|
|
33
33
|
export { ResponseValidator, responseValidator, type ValidationResult, type ValidationOptions, } from './core/ResponseValidator.mjs';
|
|
34
|
-
export type { Message, InputRequest, InputHandler, InputHandlerResponse, ConversationContext, TaskOptions, WebhookToolPredicate, WebhookUrlTemplate, TaskResult, TaskResultCompleted, TaskResultIntermediate, TaskResultFailure, TaskResultMetadata, TaskState, TaskStatus, ConversationConfig, AdcpErrorInfo, AdcpValidationIssue, } from './core/ConversationTypes.mjs';
|
|
34
|
+
export type { Message, InputRequest, InputHandler, InputHandlerResponse, ConversationContext, TaskOptions, WebhookToolPredicate, WebhookUrlTemplate, TaskResult, TaskResultCompleted, TaskResultIntermediate, TaskResultFailure, TaskResultMetadata, DeferredContinuation, DirectPauseRecoveryRequest, TaskState, TaskStatus, ConversationConfig, AdcpErrorInfo, AdcpValidationIssue, } from './core/ConversationTypes.mjs';
|
|
35
35
|
export type { GovernanceConfig, CampaignGovernanceConfig, GovernanceCheckResult, GovernanceOutcome, GovernanceFinding, GovernanceIntentDetails, GovernanceCondition, GovernanceEscalation, NormalizedGovernanceApproved, NormalizedGovernanceConditions, NormalizedGovernanceDenied, NormalizedGovernanceVerdict, } from './core/GovernanceTypes.mjs';
|
|
36
36
|
export { GovernanceMiddleware } from './core/GovernanceMiddleware.mjs';
|
|
37
37
|
export { isGovernanceApproved, isGovernanceConditions, isGovernanceDenied, normalizeGovernanceVerdict, } from './core/GovernanceTypes.mjs';
|
|
@@ -263,3 +263,6 @@ export * from './client/account-changes.mjs';
|
|
|
263
263
|
export * from './client/account-change-subscription.mjs';
|
|
264
264
|
export * from './notifications/account-change-recorded.mjs';
|
|
265
265
|
export type { AccountChangeFeedCapabilities } from './utils/capabilities.mjs';
|
|
266
|
+
export * from './media-buy/actions.mjs';
|
|
267
|
+
export { mediaBuyActionResolver } from './server/media-buy-action-resolver.mjs';
|
|
268
|
+
export type { SellerActionDecision, SellerActionResolutionOptions, SellerActionResolution, } from './server/media-buy-action-resolver.mjs';
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -26,12 +26,12 @@ export { InMemoryEstablishedProposalStore, createInMemoryEstablishedProposalStor
|
|
|
26
26
|
export { ADCPMultiAgentClient, createADCPMultiAgentClient, type MultiAgentWebhookHandlerAdapter, } from './core/ADCPMultiAgentClient';
|
|
27
27
|
export { ConfigurationManager } from './core/ConfigurationManager';
|
|
28
28
|
export { CreativeAgentClient, createCreativeAgentClient, STANDARD_CREATIVE_AGENTS, type CreativeAgentListTaskOptions, type CreativeAgentClientConfig, type LegacyCreativeFormat, } from './core/CreativeAgentClient';
|
|
29
|
-
export { TaskExecutor } from './core/TaskExecutor';
|
|
29
|
+
export { TaskExecutor, DeferredSettlementOwnershipError, DirectContinuationRecoveryError, type DirectContinuationRecoveryFailure, } from './core/TaskExecutor';
|
|
30
30
|
export { match, attachMatch } from './core/match';
|
|
31
31
|
export type { MatchHandlers, PartialMatchHandlers } from './core/match';
|
|
32
32
|
export { ProtocolResponseParser, responseParser, ADCP_STATUS, type ADCPStatus } from './core/ProtocolResponseParser';
|
|
33
33
|
export { ResponseValidator, responseValidator, type ValidationResult, type ValidationOptions, } from './core/ResponseValidator';
|
|
34
|
-
export type { Message, InputRequest, InputHandler, InputHandlerResponse, ConversationContext, TaskOptions, WebhookToolPredicate, WebhookUrlTemplate, TaskResult, TaskResultCompleted, TaskResultIntermediate, TaskResultFailure, TaskResultMetadata, TaskState, TaskStatus, ConversationConfig, AdcpErrorInfo, AdcpValidationIssue, } from './core/ConversationTypes';
|
|
34
|
+
export type { Message, InputRequest, InputHandler, InputHandlerResponse, ConversationContext, TaskOptions, WebhookToolPredicate, WebhookUrlTemplate, TaskResult, TaskResultCompleted, TaskResultIntermediate, TaskResultFailure, TaskResultMetadata, DeferredContinuation, DirectPauseRecoveryRequest, TaskState, TaskStatus, ConversationConfig, AdcpErrorInfo, AdcpValidationIssue, } from './core/ConversationTypes';
|
|
35
35
|
export type { GovernanceConfig, CampaignGovernanceConfig, GovernanceCheckResult, GovernanceOutcome, GovernanceFinding, GovernanceIntentDetails, GovernanceCondition, GovernanceEscalation, NormalizedGovernanceApproved, NormalizedGovernanceConditions, NormalizedGovernanceDenied, NormalizedGovernanceVerdict, } from './core/GovernanceTypes';
|
|
36
36
|
export { GovernanceMiddleware } from './core/GovernanceMiddleware';
|
|
37
37
|
export { isGovernanceApproved, isGovernanceConditions, isGovernanceDenied, normalizeGovernanceVerdict, } from './core/GovernanceTypes';
|
|
@@ -263,3 +263,6 @@ export * from './client/account-changes';
|
|
|
263
263
|
export * from './client/account-change-subscription';
|
|
264
264
|
export * from './notifications/account-change-recorded';
|
|
265
265
|
export type { AccountChangeFeedCapabilities } from './utils/capabilities';
|
|
266
|
+
export * from './media-buy/actions';
|
|
267
|
+
export { mediaBuyActionResolver } from './server/media-buy-action-resolver';
|
|
268
|
+
export type { SellerActionDecision, SellerActionResolutionOptions, SellerActionResolution, } from './server/media-buy-action-resolver';
|
package/dist/lib/index.js
CHANGED
|
@@ -68,7 +68,9 @@ __export(index_exports, {
|
|
|
68
68
|
DEFAULT_REPORTING_CAPABILITIES: () => import_server.DEFAULT_REPORTING_CAPABILITIES,
|
|
69
69
|
DEFAULT_SSRF_POLICY: () => import_substitution.DEFAULT_SSRF_POLICY,
|
|
70
70
|
DISCOVERY_ARM_SCENARIOS: () => import_server.DISCOVERY_ARM_SCENARIOS,
|
|
71
|
+
DeferredSettlementOwnershipError: () => import_TaskExecutor.DeferredSettlementOwnershipError,
|
|
71
72
|
DeferredTaskError: () => import_errors.DeferredTaskError,
|
|
73
|
+
DirectContinuationRecoveryError: () => import_TaskExecutor.DirectContinuationRecoveryError,
|
|
72
74
|
ESTABLISHED_PROPOSAL_COMPLETION_TOMBSTONE_RETENTION_MS: () => import_established_proposal_store.ESTABLISHED_PROPOSAL_COMPLETION_TOMBSTONE_RETENTION_MS,
|
|
73
75
|
EVENT_TRACKING_TOOLS: () => import_capabilities.EVENT_TRACKING_TOOLS,
|
|
74
76
|
FeatureUnsupportedError: () => import_errors.FeatureUnsupportedError,
|
|
@@ -539,6 +541,7 @@ __export(index_exports, {
|
|
|
539
541
|
markdownGroupAsset: () => import_format_asset_slot_builders.markdownGroupAsset,
|
|
540
542
|
match: () => import_match.match,
|
|
541
543
|
matchBindings: () => import_substitution.matchBindings,
|
|
544
|
+
mediaBuyActionResolver: () => import_media_buy_action_resolver.mediaBuyActionResolver,
|
|
542
545
|
mediaBuyDeliveryNotification: () => import_media_buy_delivery_notification_builders.mediaBuyDeliveryNotification,
|
|
543
546
|
memoryBackend: () => import_server.memoryBackend,
|
|
544
547
|
multiBuildCreativeReturn: () => import_build_creative_return_builders.multiBuildCreativeReturn,
|
|
@@ -810,6 +813,8 @@ __reExport(index_exports, require('./client/account-change-cursor.js'), module.e
|
|
|
810
813
|
__reExport(index_exports, require('./client/account-changes.js'), module.exports);
|
|
811
814
|
__reExport(index_exports, require('./client/account-change-subscription.js'), module.exports);
|
|
812
815
|
__reExport(index_exports, require('./notifications/account-change-recorded.js'), module.exports);
|
|
816
|
+
__reExport(index_exports, require('./media-buy/actions.js'), module.exports);
|
|
817
|
+
var import_media_buy_action_resolver = require('./server/media-buy-action-resolver.js');
|
|
813
818
|
const wireVersion = {
|
|
814
819
|
isSupported: import_protocols2.bundleSupportsAdcpVersionField,
|
|
815
820
|
normalize: import_schema_loader2.toReleasePrecisionWire,
|
|
@@ -873,7 +878,9 @@ function createAdCPClientFromEnv() {
|
|
|
873
878
|
DEFAULT_REPORTING_CAPABILITIES,
|
|
874
879
|
DEFAULT_SSRF_POLICY,
|
|
875
880
|
DISCOVERY_ARM_SCENARIOS,
|
|
881
|
+
DeferredSettlementOwnershipError,
|
|
876
882
|
DeferredTaskError,
|
|
883
|
+
DirectContinuationRecoveryError,
|
|
877
884
|
ESTABLISHED_PROPOSAL_COMPLETION_TOMBSTONE_RETENTION_MS,
|
|
878
885
|
EVENT_TRACKING_TOOLS,
|
|
879
886
|
FeatureUnsupportedError,
|
|
@@ -1344,6 +1351,7 @@ function createAdCPClientFromEnv() {
|
|
|
1344
1351
|
markdownGroupAsset,
|
|
1345
1352
|
match,
|
|
1346
1353
|
matchBindings,
|
|
1354
|
+
mediaBuyActionResolver,
|
|
1347
1355
|
mediaBuyDeliveryNotification,
|
|
1348
1356
|
memoryBackend,
|
|
1349
1357
|
multiBuildCreativeReturn,
|
|
@@ -1512,5 +1520,6 @@ function createAdCPClientFromEnv() {
|
|
|
1512
1520
|
...require('./client/account-change-cursor.js'),
|
|
1513
1521
|
...require('./client/account-changes.js'),
|
|
1514
1522
|
...require('./client/account-change-subscription.js'),
|
|
1515
|
-
...require('./notifications/account-change-recorded.js')
|
|
1523
|
+
...require('./notifications/account-change-recorded.js'),
|
|
1524
|
+
...require('./media-buy/actions.js')
|
|
1516
1525
|
});
|
package/dist/lib/index.mjs
CHANGED
|
@@ -117,7 +117,11 @@ import {
|
|
|
117
117
|
createCreativeAgentClient,
|
|
118
118
|
STANDARD_CREATIVE_AGENTS
|
|
119
119
|
} from "./core/CreativeAgentClient.mjs";
|
|
120
|
-
import {
|
|
120
|
+
import {
|
|
121
|
+
TaskExecutor,
|
|
122
|
+
DeferredSettlementOwnershipError,
|
|
123
|
+
DirectContinuationRecoveryError
|
|
124
|
+
} from "./core/TaskExecutor.mjs";
|
|
121
125
|
import { match, attachMatch } from "./core/match.mjs";
|
|
122
126
|
import { ProtocolResponseParser, responseParser, ADCP_STATUS } from "./core/ProtocolResponseParser.mjs";
|
|
123
127
|
import {
|
|
@@ -779,6 +783,8 @@ export * from "./client/account-change-cursor.mjs";
|
|
|
779
783
|
export * from "./client/account-changes.mjs";
|
|
780
784
|
export * from "./client/account-change-subscription.mjs";
|
|
781
785
|
export * from "./notifications/account-change-recorded.mjs";
|
|
786
|
+
export * from "./media-buy/actions.mjs";
|
|
787
|
+
import { mediaBuyActionResolver } from "./server/media-buy-action-resolver.mjs";
|
|
782
788
|
export {
|
|
783
789
|
A2AInvocationError,
|
|
784
790
|
A2A_CARD_PATHS,
|
|
@@ -829,7 +835,9 @@ export {
|
|
|
829
835
|
DEFAULT_REPORTING_CAPABILITIES,
|
|
830
836
|
DEFAULT_SSRF_POLICY,
|
|
831
837
|
DISCOVERY_ARM_SCENARIOS,
|
|
838
|
+
DeferredSettlementOwnershipError,
|
|
832
839
|
DeferredTaskError,
|
|
840
|
+
DirectContinuationRecoveryError,
|
|
833
841
|
ESTABLISHED_PROPOSAL_COMPLETION_TOMBSTONE_RETENTION_MS,
|
|
834
842
|
EVENT_TRACKING_TOOLS,
|
|
835
843
|
FeatureUnsupportedError,
|
|
@@ -1300,6 +1308,7 @@ export {
|
|
|
1300
1308
|
markdownGroupAsset,
|
|
1301
1309
|
match,
|
|
1302
1310
|
matchBindings,
|
|
1311
|
+
mediaBuyActionResolver,
|
|
1303
1312
|
mediaBuyDeliveryNotification,
|
|
1304
1313
|
memoryBackend,
|
|
1305
1314
|
multiBuildCreativeReturn,
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { ActionNotAllowedReason, UpdateMediaBuyRequestLike } from './types.mjs';
|
|
2
|
+
import type { ActionBuy, ActionProduct, ActionProposal, ConstraintAssessment, LiveMediaBuyAction, MediaBuyAction, MediaBuyStatus, MediaBuyTask, ProductActionAssessment, ProposalActionAssessment, ProposalChangeTerm } from './action-types.mjs';
|
|
3
|
+
import { type ConstraintEvaluationOptions } from './action-constraints.mjs';
|
|
4
|
+
export interface ActionAssessmentOptions extends ConstraintEvaluationOptions {
|
|
5
|
+
/** Seller-served wire version. 3.1 term references are always opaque. Defaults to the current 3.2 shape. */
|
|
6
|
+
adcpVersion?: string;
|
|
7
|
+
/** Explicit 3.2 compatibility projection declaring terms_ref an alias for change_term_id. */
|
|
8
|
+
termsRefIsAlias?: boolean;
|
|
9
|
+
/** Current accepted snapshot when it is stored separately from the buy. An embedded snapshot takes precedence. */
|
|
10
|
+
proposal?: ActionProposal;
|
|
11
|
+
/** Optional route being attempted. update_media_buy can subsume compact tasks as a compatibility facade. */
|
|
12
|
+
task?: MediaBuyTask;
|
|
13
|
+
request?: UpdateMediaBuyRequestLike;
|
|
14
|
+
}
|
|
15
|
+
export type ActionAvailability = {
|
|
16
|
+
status: 'available_now';
|
|
17
|
+
action: MediaBuyAction;
|
|
18
|
+
mode: LiveMediaBuyAction['mode'];
|
|
19
|
+
nonDefaultRoute?: MediaBuyTask;
|
|
20
|
+
/** Metadata changes have live seller authority and no commercial promise. */
|
|
21
|
+
authority: 'accepted_term' | 'live_metadata';
|
|
22
|
+
term?: ProposalChangeTerm;
|
|
23
|
+
entry: LiveMediaBuyAction;
|
|
24
|
+
revision?: number;
|
|
25
|
+
constraints?: ConstraintAssessment;
|
|
26
|
+
} | {
|
|
27
|
+
status: 'currently_unavailable';
|
|
28
|
+
action: MediaBuyAction;
|
|
29
|
+
reason: ActionNotAllowedReason;
|
|
30
|
+
message: string;
|
|
31
|
+
certainty: 'blocked' | 'unknown';
|
|
32
|
+
allowedStatuses?: MediaBuyStatus[];
|
|
33
|
+
nonDefaultRoute?: MediaBuyTask;
|
|
34
|
+
constraints?: ConstraintAssessment;
|
|
35
|
+
code?: 'REQUOTE_REQUIRED' | 'CONFLICT';
|
|
36
|
+
compat?: {
|
|
37
|
+
reason: 'no_change_terms';
|
|
38
|
+
message: string;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export interface MediaBuyActionAssessment {
|
|
42
|
+
action: MediaBuyAction;
|
|
43
|
+
possibility: ProductActionAssessment;
|
|
44
|
+
promise: ProposalActionAssessment;
|
|
45
|
+
availability: ActionAvailability;
|
|
46
|
+
}
|
|
47
|
+
/** Product templates are possibility, including their advisory bounds, never acceptance. */
|
|
48
|
+
export declare function assessProductAction(product: ActionProduct | undefined, action: MediaBuyAction): ProductActionAssessment;
|
|
49
|
+
/** Reports what the proposal promises; it does not verify a digest or accept the proposal. */
|
|
50
|
+
export declare function assessProposalAction(proposal: ActionProposal | undefined, action: MediaBuyAction): ProposalActionAssessment;
|
|
51
|
+
/**
|
|
52
|
+
* Join the current accepted snapshot and action projection. Pure, synchronous,
|
|
53
|
+
* browser-safe, and read-only. This is preflight evidence, not authorization or
|
|
54
|
+
* an atomic revision check. Submit with the existing client lifecycle safeguards.
|
|
55
|
+
*/
|
|
56
|
+
export declare function assessActionAvailability(buy: ActionBuy | undefined, action: MediaBuyAction, options?: ActionAssessmentOptions): ActionAvailability;
|
|
57
|
+
/** Render possible / promised / available-now from one call. Product data never creates a promise. */
|
|
58
|
+
export declare function assessMediaBuyAction(input: {
|
|
59
|
+
action: MediaBuyAction;
|
|
60
|
+
product?: ActionProduct;
|
|
61
|
+
proposal?: ActionProposal;
|
|
62
|
+
buy?: ActionBuy;
|
|
63
|
+
} & ActionAssessmentOptions): MediaBuyActionAssessment;
|
|
64
|
+
/** ACTION_NOT_ALLOWED echoes replace the action set, including an explicit empty set. They never update revision or accepted terms. */
|
|
65
|
+
export declare function refreshMediaBuyActions<T extends ActionBuy>(buy: T, details: unknown): T;
|
|
66
|
+
export type MediaBuyActionsPreflight = {
|
|
67
|
+
ok: true;
|
|
68
|
+
assessments: Extract<ActionAvailability, {
|
|
69
|
+
status: 'available_now';
|
|
70
|
+
}>[];
|
|
71
|
+
} | {
|
|
72
|
+
ok: false;
|
|
73
|
+
assessments: ActionAvailability[];
|
|
74
|
+
message?: string;
|
|
75
|
+
};
|
|
76
|
+
/** Assess every decomposed action atomically; never send a partial multi-action request. */
|
|
77
|
+
export declare function preflightMediaBuyActions(buy: ActionBuy, request: UpdateMediaBuyRequestLike, options?: Omit<ActionAssessmentOptions, 'request'>): MediaBuyActionsPreflight;
|