@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
|
@@ -32,6 +32,7 @@ function parseWholesaleFeedWebhookNotification(input) {
|
|
|
32
32
|
const wholesaleFeedVersion = readRequiredString(webhook, "wholesale_feed_version");
|
|
33
33
|
const previousWholesaleFeedVersion = readOptionalString(webhook, "previous_wholesale_feed_version");
|
|
34
34
|
const cacheScope = readCacheScope(readRequiredString(webhook, "cache_scope"), "cache_scope");
|
|
35
|
+
assertLegacyWholesaleFeedRepresentation(webhook);
|
|
35
36
|
const eventId = readRequiredString(event, "event.event_id");
|
|
36
37
|
if (notificationId !== eventId) {
|
|
37
38
|
throw new WholesaleFeedWebhookNotificationError(
|
|
@@ -200,11 +201,13 @@ function validatePayloadForEvent(notificationType, entityId, payload) {
|
|
|
200
201
|
case "product.created":
|
|
201
202
|
case "product.updated": {
|
|
202
203
|
assertEntityIdMatchesPayload(entityId, readRequiredString(payload, "event.payload.product_id"), "product_id");
|
|
204
|
+
rejectCanonicalPayloadField(payload, "canonical_product");
|
|
203
205
|
readRequiredRecord(payload, "event.payload.product");
|
|
204
206
|
return void 0;
|
|
205
207
|
}
|
|
206
208
|
case "product.priced": {
|
|
207
209
|
assertEntityIdMatchesPayload(entityId, readRequiredString(payload, "event.payload.product_id"), "product_id");
|
|
210
|
+
rejectCanonicalPayloadField(payload, "canonical_pricing_options");
|
|
208
211
|
readRequiredNonEmptyArray(payload, "event.payload.pricing_options");
|
|
209
212
|
return void 0;
|
|
210
213
|
}
|
|
@@ -245,6 +248,46 @@ function validatePayloadForEvent(notificationType, entityId, payload) {
|
|
|
245
248
|
return readBulkChangeAffectedEntityType(payload);
|
|
246
249
|
}
|
|
247
250
|
}
|
|
251
|
+
function assertLegacyProductPayloadView(notificationType, productPayloadView) {
|
|
252
|
+
const isProductEvent = notificationType.startsWith("product.");
|
|
253
|
+
if (isProductEvent && (productPayloadView === void 0 || productPayloadView === "legacy")) return;
|
|
254
|
+
if (!isProductEvent && productPayloadView === void 0) return;
|
|
255
|
+
throw new WholesaleFeedWebhookNotificationError(
|
|
256
|
+
"wholesale_feed_webhook_field_invalid",
|
|
257
|
+
isProductEvent ? 'WholesaleFeedSync supports only product_payload_view "legacy".' : "Non-product wholesale-feed webhooks must omit product_payload_view.",
|
|
258
|
+
{
|
|
259
|
+
field: "product_payload_view",
|
|
260
|
+
expected: isProductEvent ? ["legacy"] : ["absent"],
|
|
261
|
+
actual: productPayloadView
|
|
262
|
+
}
|
|
263
|
+
);
|
|
264
|
+
}
|
|
265
|
+
function assertLegacyWholesaleFeedRepresentation(webhook) {
|
|
266
|
+
const notificationType = webhook.notification_type;
|
|
267
|
+
if (typeof notificationType !== "string" || !WHOLESALE_FEED_NOTIFICATION_TYPES.has(notificationType))
|
|
268
|
+
return;
|
|
269
|
+
const productPayloadView = readOptionalString(webhook, "product_payload_view");
|
|
270
|
+
assertLegacyProductPayloadView(notificationType, productPayloadView);
|
|
271
|
+
if (!notificationType.startsWith("product.")) return;
|
|
272
|
+
const event = webhook.event;
|
|
273
|
+
if (!event || typeof event !== "object" || Array.isArray(event)) return;
|
|
274
|
+
const payload = event.payload;
|
|
275
|
+
if (!payload || typeof payload !== "object" || Array.isArray(payload)) return;
|
|
276
|
+
const payloadRecord = payload;
|
|
277
|
+
if (notificationType === "product.created" || notificationType === "product.updated") {
|
|
278
|
+
rejectCanonicalPayloadField(payloadRecord, "canonical_product");
|
|
279
|
+
} else if (notificationType === "product.priced") {
|
|
280
|
+
rejectCanonicalPayloadField(payloadRecord, "canonical_pricing_options");
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
function rejectCanonicalPayloadField(payload, field) {
|
|
284
|
+
if (!Object.prototype.hasOwnProperty.call(payload, field)) return;
|
|
285
|
+
throw new WholesaleFeedWebhookNotificationError(
|
|
286
|
+
"wholesale_feed_webhook_field_invalid",
|
|
287
|
+
`WholesaleFeedSync legacy product view does not accept event.payload.${field}.`,
|
|
288
|
+
{ field: `event.payload.${field}`, expected: "absent", actual: payload[field] }
|
|
289
|
+
);
|
|
290
|
+
}
|
|
248
291
|
function assertEntityIdMatchesPayload(entityId, payloadEntityId, payloadField) {
|
|
249
292
|
if (entityId === payloadEntityId) return;
|
|
250
293
|
throw new WholesaleFeedWebhookNotificationError(
|
|
@@ -276,6 +319,7 @@ function describeValue(value) {
|
|
|
276
319
|
}
|
|
277
320
|
export {
|
|
278
321
|
WholesaleFeedWebhookNotificationError,
|
|
322
|
+
assertLegacyWholesaleFeedRepresentation,
|
|
279
323
|
normalizeWholesaleFeedWebhookNotification,
|
|
280
324
|
parseWholesaleFeedWebhookNotification
|
|
281
325
|
};
|
package/docs/CLI.md
CHANGED
|
@@ -320,7 +320,7 @@ Useful flags:
|
|
|
320
320
|
|
|
321
321
|
- `--storyboards ID,...`: Run specific storyboard or bundle IDs instead of capability-driven selection
|
|
322
322
|
- `--tracks core,products,...`: Restrict the run to specific tracks
|
|
323
|
-
- `--compliance-version VERSION`: Select
|
|
323
|
+
- `--compliance-version VERSION`: Select a packaged compliance cache/spec line, for example `3.1.18` or `3.2.0-rc.3`; use the same flag with `storyboard list`, `show`, and `step` when reproducing a pinned run
|
|
324
324
|
- `--compliance-dir PATH`: Use a specific compliance cache directory, mainly for local protocol/cache development
|
|
325
325
|
- `--brief TEXT`: Override the default sample discovery brief
|
|
326
326
|
- `--dry-run`: Preview steps without executing
|
package/docs/TYPE-SUMMARY.md
CHANGED
|
@@ -1,10 +1,24 @@
|
|
|
1
1
|
# AdCP Type Summary
|
|
2
2
|
|
|
3
|
-
> Generated at: 2026-09-
|
|
4
|
-
> @adcp/sdk v14.0.0-rc.
|
|
3
|
+
> Generated at: 2026-09-18
|
|
4
|
+
> @adcp/sdk v14.0.0-rc.39
|
|
5
5
|
|
|
6
6
|
Curated reference of the types that matter for using the AdCP client. For full generated types see `src/lib/types/tools.generated.ts` and `src/lib/types/core.generated.ts`.
|
|
7
7
|
|
|
8
|
+
## MediaBuy Action Assessment Types
|
|
9
|
+
|
|
10
|
+
Use `@adcp/sdk/media-buy/actions` for pure buyer assessment and `@adcp/sdk/server` for `mediaBuyActionResolver`. See [action assessment guide](guides/MEDIA-BUY-ACTION-ASSESSMENT.md).
|
|
11
|
+
|
|
12
|
+
| Type | Use |
|
|
13
|
+
| --- | --- |
|
|
14
|
+
| `MediaBuyTask` | Narrow routing union: `update_media_buy`, `control_media_buy`, `refine_proposals`, `sync_creatives`. |
|
|
15
|
+
| `ActionAvailability` | `available_now` with optional `nonDefaultRoute`, mode and authority; or `currently_unavailable` with reason, certainty and optional compatibility/constraint detail. |
|
|
16
|
+
| `ActionBuy`, `ActionProduct`, `ActionProposal` | Structural inputs for joining current accepted terms with live actions and advisory products. |
|
|
17
|
+
| `LiveMediaBuyAction` | Readable canonical or legacy entry for assessment, projection and existing preflight helpers, including rc.3 package scope. |
|
|
18
|
+
| `MediaBuyAvailableAction`, `MediaBuyValidAction` | Generated legacy wire entry / deprecated flat vocabulary; distinct from canonical helper entries. |
|
|
19
|
+
| `MediaBuyAction`, `MediaBuyActionId` | Action identifiers accepted by assessment / mutation helpers; runtime validation preserves unknown future data. |
|
|
20
|
+
| `ProposalChangeTerm`, `ChangeTermConstraints` | Negotiated term view and portable discriminated budget / flight / package-count / effective-timing constraints. |
|
|
21
|
+
|
|
8
22
|
## Client Types
|
|
9
23
|
|
|
10
24
|
```typescript
|
|
@@ -41,12 +55,24 @@ interface TransportOptions {
|
|
|
41
55
|
interface TaskOptions {
|
|
42
56
|
timeout?: number; // Absolute whole-task deadline
|
|
43
57
|
signal?: AbortSignal; // Caller cancellation
|
|
58
|
+
// Direct A2A mutation route, bound to authenticated principal + account scope.
|
|
59
|
+
durableContinuationRecovery?: { ownerScope: string };
|
|
44
60
|
// Trusted local receiver policy; snapshotted and persisted with generated
|
|
45
61
|
// webhook registrations, never inferred from or sent in task arguments.
|
|
46
62
|
delegatedOperatorAuthorization?: DelegatedOperatorAuthorizationContext;
|
|
47
63
|
// ...deadline, cancellation, transport, and conversation options...
|
|
48
64
|
}
|
|
49
65
|
|
|
66
|
+
interface DeferredContinuation<T> {
|
|
67
|
+
token: string;
|
|
68
|
+
question?: string;
|
|
69
|
+
resume(input: unknown): Promise<TaskResult<T>>;
|
|
70
|
+
recovery?: { operationId: string; recoveryKey: string }; // Host-only, persist once
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// AgentClient public direct-mutation route recovery
|
|
74
|
+
agent.recoverDirectPauseContinuation<T>({ operationId, recoveryKey, ownerScope });
|
|
75
|
+
|
|
50
76
|
interface ValidateAdAgentsOptions {
|
|
51
77
|
timeoutMs?: number; // Per-request ceiling
|
|
52
78
|
signal?: AbortSignal; // One signal/deadline across the complete discovery flow
|
|
@@ -2799,6 +2825,14 @@ interface ReportingSourceStagedObjectReaderV1 {
|
|
|
2799
2825
|
type ReportingSourceExecutorResultV1 =
|
|
2800
2826
|
| { ok: true; response: ReportingSourceExecutionResponseV1; manifestBytes: Uint8Array }
|
|
2801
2827
|
| { ok: false; error: ReportingSourceErrorV1 };
|
|
2828
|
+
type InlineReportingMetricEvidenceV1 =
|
|
2829
|
+
| { constituent_id: string; metric: string; status: 'present' | 'explicit_zero'; data_through: string }
|
|
2830
|
+
| { constituent_id: string; metric: string; status: 'unsupported' | 'delayed' | 'partial' | 'stale' | 'missing'; reason: string; data_through?: string };
|
|
2831
|
+
interface InlineReportingAvailabilityEvidenceV1 {
|
|
2832
|
+
version: '1.0';
|
|
2833
|
+
cells: readonly InlineReportingMetricEvidenceV1[];
|
|
2834
|
+
}
|
|
2835
|
+
// Inline callback requests include constituents: { constituent_id, media_buy_id }[]; evidence-bearing responses add availability_evidence.
|
|
2802
2836
|
// validateReportingSourceExecutionV1({ level, capabilities, request, result, objectReader })
|
|
2803
2837
|
// runReportingSourceReplayConformanceV1({ level, executor, request, objectReader })
|
|
2804
2838
|
// validateReportingRevisionSequenceV1(manifests, { crossFinalityBridge })
|
|
@@ -2809,11 +2843,41 @@ type ReportingSourceExecutorResultV1 =
|
|
|
2809
2843
|
|
|
2810
2844
|
## Seller Reporting Ledger
|
|
2811
2845
|
|
|
2812
|
-
|
|
2846
|
+
Ledger symbols import from `@adcp/sdk/reporting/ledger`; `createPostgresPersistentNotificationRuntime` is a server symbol and imports from `@adcp/sdk/server`.
|
|
2813
2847
|
|
|
2814
2848
|
```typescript
|
|
2815
|
-
|
|
2849
|
+
// Build the notification path first: the store must be constructed with the
|
|
2850
|
+
// activity port, or lifecycle transitions record no activity and notify nobody.
|
|
2851
|
+
const attemptCheckpoint = createPostgresReportingNotificationAttemptCheckpoint({
|
|
2852
|
+
db: pool,
|
|
2853
|
+
namespace: 'seller-production',
|
|
2854
|
+
});
|
|
2855
|
+
const notifications = createPostgresPersistentNotificationRuntime({
|
|
2856
|
+
db: pool,
|
|
2857
|
+
publisherScope: 'seller-production',
|
|
2858
|
+
checkpointDeliveryAttempt: attemptCheckpoint,
|
|
2859
|
+
subscriptions: { acknowledgeIsolatedDatabase: true },
|
|
2860
|
+
...notificationOptions,
|
|
2861
|
+
});
|
|
2862
|
+
const reportingActivity = createPostgresReportingNotificationActivityRuntime({
|
|
2863
|
+
db: pool,
|
|
2864
|
+
notifications,
|
|
2865
|
+
namespace: 'seller-production',
|
|
2866
|
+
attemptCheckpoint,
|
|
2867
|
+
tenantScopeForAccount: accountId => trustedTenantDirectory.tenantFor(accountId),
|
|
2868
|
+
});
|
|
2869
|
+
|
|
2870
|
+
// One store, wired to the activity port, used by every participant below.
|
|
2871
|
+
const store = new PostgresReportingLedgerStore(pool, {
|
|
2872
|
+
acknowledgeIsolatedDatabase: true,
|
|
2873
|
+
notificationActivityPort: reportingActivity.port,
|
|
2874
|
+
});
|
|
2875
|
+
|
|
2876
|
+
// Every migration this wiring needs, before probing.
|
|
2816
2877
|
await pool.query(REPORTING_LEDGER_MIGRATION);
|
|
2878
|
+
for (const sql of notifications.migrations.all) await pool.query(sql);
|
|
2879
|
+
for (const sql of reportingActivity.migrations.all) await pool.query(sql);
|
|
2880
|
+
|
|
2817
2881
|
const producer = createReportingProducer({ store, source, offerings, contact });
|
|
2818
2882
|
await producer.planObligations();
|
|
2819
2883
|
await producer.runWorker();
|
|
@@ -2824,10 +2888,60 @@ const getMediaBuyDelivery = createReportingDeliveryHandler(store); // exact repo
|
|
|
2824
2888
|
const syncReportingStatus = createSyncReportingStatusHandler(store, {
|
|
2825
2889
|
resolveConsumerId: context => context.agent.agent_url,
|
|
2826
2890
|
});
|
|
2891
|
+
|
|
2892
|
+
await reportingActivity.probe();
|
|
2893
|
+
// Run repeatedly from a durable scheduler; this call is bounded.
|
|
2894
|
+
await reportingActivity.recoverOnce({ ownerToken: stableWorkerId });
|
|
2895
|
+
const activityPage = await reportingActivity.listActivity({
|
|
2896
|
+
tenantId: trustedTenant,
|
|
2897
|
+
accountId: resolvedAccountId,
|
|
2898
|
+
limit: 100,
|
|
2899
|
+
});
|
|
2827
2900
|
```
|
|
2828
2901
|
|
|
2829
2902
|
The store freezes configuration lineage and period-end denominators, retains immutable RFC 8785 JCS/SHA-256-bound revisions, atomically fences lifecycle projections against their revision evidence, and provides leased production plus snapshot-stable status pagination. `projectReportingObligationHealthV1` implements waiting, healthy, delayed, action_required, and complete without I/O.
|
|
2830
2903
|
|
|
2904
|
+
`ReportingLedgerNotificationActivityPortV1<TTransaction>` is the custom-store seam. Invoke it inside the authoritative transition transaction and fence both predecessor health and finality. The bundled PostgreSQL runtime persists exactly-once intent plus paginatable account activity, then projects health changes through `PersistentNotificationRuntime`; finality-only changes remain internal activity. It never owns subscriber credentials or sends webhooks itself. `listActivity()` is adopter-facing only because no public AdCP account-activity read task exists.
|
|
2905
|
+
|
|
2906
|
+
## Reliable Reporting Service
|
|
2907
|
+
|
|
2908
|
+
Import from `@adcp/sdk/reporting/service`. This is the adapter-first lifecycle owner over the source and ledger primitives; it does not introduce another store or transport.
|
|
2909
|
+
|
|
2910
|
+
```typescript
|
|
2911
|
+
interface ReliableReportingAdapterV1 {
|
|
2912
|
+
readonly sourceOffering: ReportingSourceOfferingV1;
|
|
2913
|
+
readonly deliveryOffering: ReportingDeliveryOffering;
|
|
2914
|
+
// Exactly one of fetchSlice or executor.
|
|
2915
|
+
readonly fetchSlice?: InlineReportingDeliveryFetchV1;
|
|
2916
|
+
readonly executor?: ReportingSourceWithReaderV1;
|
|
2917
|
+
// Opt-in bounded replay window for the inline executor; never applied
|
|
2918
|
+
// silently. A feed that outlives its replay ceiling needs this or a
|
|
2919
|
+
// durable executor.
|
|
2920
|
+
readonly inlineReplayRetention?: InlineReportingReplayRetentionV1;
|
|
2921
|
+
}
|
|
2922
|
+
|
|
2923
|
+
const reporting = createReliableReportingService({
|
|
2924
|
+
store,
|
|
2925
|
+
adapters,
|
|
2926
|
+
contact,
|
|
2927
|
+
automatedRecoveryWindowSeconds,
|
|
2928
|
+
statusRetentionDays, // enforce this commitment in the ledger database
|
|
2929
|
+
resolveSource: account => ({ adapterId, sourceScope, sourceTimezone }),
|
|
2930
|
+
resolveCurrency: account => currency,
|
|
2931
|
+
resolveCoverage: account => ({ constituents }), // authorized media-buy/package denominator
|
|
2932
|
+
resolveConsumerId, // optional; controls consumer-status handler/capability
|
|
2933
|
+
});
|
|
2934
|
+
|
|
2935
|
+
await pool.query(reporting.setup.migrations[0]);
|
|
2936
|
+
const installedPlatform = reporting.install(platform);
|
|
2937
|
+
await reporting.installConfiguration(configuration, { account: ctx.account });
|
|
2938
|
+
await reporting.runCycle({ accountId }); // tenant-partitioned
|
|
2939
|
+
reporting.start({ intervalMilliseconds, deploymentWide: true }); // explicit full-ledger scan
|
|
2940
|
+
await reporting.stop();
|
|
2941
|
+
```
|
|
2942
|
+
|
|
2943
|
+
Account identity comes only from the framework-resolved context. Trusted host callbacks derive adapter routing, credential-free `sourceScope`, source timezone, currency, and the authorized constituent denominator. A declaration cannot supply `account`, `sourceScope`, `sourceTimezone`, `contract`, `currency`, `constituents`, or `mediaBuyIds`; `mediaBuyIds` is derived from `resolveCoverage`, so a buyer cannot name another buyer's media buys on a shared upstream network. Currency is frozen into configuration and obligation lineage. Capabilities are Core-only and derived from installed adapters and handlers; managed delivery, reconciled billing, receipts, webhook activity, and notifications are not advertised. Installation requires `platform.accounts.upsert`, which owns the advertised `sync_accounts` configuration path.
|
|
2944
|
+
|
|
2831
2945
|
## Key Enums
|
|
2832
2946
|
|
|
2833
2947
|
| Enum | Values |
|
|
@@ -251,6 +251,11 @@ interface TaskOptions {
|
|
|
251
251
|
contextId?: string;
|
|
252
252
|
/** Enable debug logging for this task */
|
|
253
253
|
debug?: boolean;
|
|
254
|
+
/** Operation-routed crash recovery for direct A2A mutations */
|
|
255
|
+
durableContinuationRecovery?: {
|
|
256
|
+
/** Stable host authorization scope for the authenticated principal + account */
|
|
257
|
+
ownerScope: string;
|
|
258
|
+
};
|
|
254
259
|
/** Additional metadata to include */
|
|
255
260
|
metadata?: Record<string, any>;
|
|
256
261
|
}
|
|
@@ -571,6 +576,11 @@ interface DeferredContinuation<T> {
|
|
|
571
576
|
question?: string;
|
|
572
577
|
/** Resume the task with user input */
|
|
573
578
|
resume: (input: any) => Promise<TaskResult<T>>;
|
|
579
|
+
/** Host-only route capability; present for opted-in direct mutations */
|
|
580
|
+
recovery?: {
|
|
581
|
+
operationId: string;
|
|
582
|
+
recoveryKey: string;
|
|
583
|
+
};
|
|
574
584
|
}
|
|
575
585
|
```
|
|
576
586
|
|
|
@@ -878,6 +888,9 @@ interface DeferredTaskState {
|
|
|
878
888
|
clientContext?: unknown; // Opaque SDK context; round-trip unchanged
|
|
879
889
|
settlementOperationId?: string; // Trusted committed-mutation recovery route
|
|
880
890
|
settlementOperationRouteRequired?: true; // New-format routed record; preserve on every successor
|
|
891
|
+
directContinuationRecovery?: true; // Routed direct pause, not committed settlement
|
|
892
|
+
directContinuationRecoveryKeyDigest?: string; // SHA-256; raw capability is never stored
|
|
893
|
+
directContinuationOwnerBindingDigest?: string; // Authenticated owner/account + trusted seller binding
|
|
881
894
|
settlementResumeAuthorizationRequired?: boolean; // Owning coordinator must authorize seller-input dispatch
|
|
882
895
|
settlementServerTaskId?: string; // Durably bound seller work handle
|
|
883
896
|
settlementPendingTaskId?: string; // Nonterminal seller work retained for restart polling
|
|
@@ -919,6 +932,12 @@ interface DeferredTaskStorage extends Storage<DeferredTaskState> {
|
|
|
919
932
|
```
|
|
920
933
|
|
|
921
934
|
`putIfAbsent()` must atomically reject an existing unexpired key.
|
|
935
|
+
Custom adapters MUST round-trip every `DeferredTaskState` field opaquely,
|
|
936
|
+
including fields introduced by newer SDK versions. When A→B moves an
|
|
937
|
+
operation route but retains A as a dispatch fence, later deletion or expiry of
|
|
938
|
+
A MUST clear the route only if it still points at A; it must never delete the
|
|
939
|
+
route that now points at B. Deploy readers that preserve new fields before
|
|
940
|
+
enabling new routed writers in a shared store.
|
|
922
941
|
For ordinary and marker-absent legacy records, `replaceIfVersion()` is the
|
|
923
942
|
exclusive seller-dispatch claim: it must replace only the exact generation and
|
|
924
943
|
keep the key present under the SDK-supplied internal safety TTL. New
|
|
@@ -939,7 +958,7 @@ dispatch, the SDK generation-conditionally restores the original state with
|
|
|
939
958
|
its remaining human-input TTL.
|
|
940
959
|
|
|
941
960
|
The three settlement-operation methods form a second atomic index over
|
|
942
|
-
committed continuations. Initial pause creation writes the opaque token and
|
|
961
|
+
committed continuations and opted-in direct mutation pauses. Initial pause creation writes the opaque token and
|
|
943
962
|
operation route together. A nested pause writes B and moves the route from the
|
|
944
963
|
exact dispatch-committed generation A in one transaction while retaining A as
|
|
945
964
|
a dispatch fence. `getBySettlementOperationId()` returns that exact current
|
|
@@ -959,6 +978,48 @@ trusted settlement operation identity. A terminal restart resume is returned
|
|
|
959
978
|
only after a reconstructed durable coordinator settles it; without a matching
|
|
960
979
|
recoverer, the resume fails closed.
|
|
961
980
|
|
|
981
|
+
Direct A2A mutations opt in per call with an authenticated owner/account scope:
|
|
982
|
+
|
|
983
|
+
```typescript
|
|
984
|
+
const paused = await agent.buyProducts(request, undefined, {
|
|
985
|
+
durableContinuationRecovery: {
|
|
986
|
+
ownerScope: `principal:${principalId}/account:${accountId}`,
|
|
987
|
+
},
|
|
988
|
+
});
|
|
989
|
+
|
|
990
|
+
// Persist this pair once in host-only storage. The recovery key is distinct
|
|
991
|
+
// from the human-facing resume token and must never be sent to the seller.
|
|
992
|
+
const route = paused.deferred?.recovery;
|
|
993
|
+
if (!route) throw new Error('Seller did not return a recoverable A2A pause');
|
|
994
|
+
|
|
995
|
+
const recovered = await restartedAgent.recoverDirectPauseContinuation({
|
|
996
|
+
operationId: route.operationId,
|
|
997
|
+
recoveryKey: route.recoveryKey,
|
|
998
|
+
ownerScope: `principal:${principalId}/account:${accountId}`,
|
|
999
|
+
});
|
|
1000
|
+
```
|
|
1001
|
+
|
|
1002
|
+
The SDK stores only the recovery-key digest, binds it to the supplied stable
|
|
1003
|
+
principal/account owner scope and trusted seller ID/origin, and validates the route
|
|
1004
|
+
store before seller dispatch. Unknown routes, wrong capabilities, owner drift,
|
|
1005
|
+
and seller drift fail without revealing a token. The host must authenticate
|
|
1006
|
+
the caller before constructing `ownerScope`; request fields are not an
|
|
1007
|
+
authentication source. Keep the scope byte-stable for the operation lifetime;
|
|
1008
|
+
do not use a mutable display name, seller-supplied value, seller task ID, or
|
|
1009
|
+
request idempotency key. Custom stores must round-trip all three
|
|
1010
|
+
`directContinuation*` fields and implement the operation-route methods as one
|
|
1011
|
+
linearizable index. Direct routes do not enter committed-settlement recovery,
|
|
1012
|
+
so the existing callback and terminal settlement fences remain unchanged.
|
|
1013
|
+
The operation route covers resumable pause generations. If resume instead
|
|
1014
|
+
reaches `submitted` or a terminal result, persist the returned seller task ID
|
|
1015
|
+
and result through the normal host operation record; terminal uncertainty is
|
|
1016
|
+
reconciled by polling that seller task ID, never by redispatching the mutation.
|
|
1017
|
+
Persist the first returned recovery pair before considering the initial pause
|
|
1018
|
+
restart-safe. After any possible continuation dispatch, an absent pause route
|
|
1019
|
+
does not authorize redispatch.
|
|
1020
|
+
|
|
1021
|
+
### Committed coordinator checkpoints
|
|
1022
|
+
|
|
962
1023
|
If seller continuation reaches a terminal result, the SDK replaces the human
|
|
963
1024
|
input record with an opaque terminal checkpoint using the same independent
|
|
964
1025
|
safety horizon. Recovery and application completion handlers retry from that
|
|
@@ -412,6 +412,31 @@ async function manageTaskLifecycle() {
|
|
|
412
412
|
}
|
|
413
413
|
```
|
|
414
414
|
|
|
415
|
+
For a direct A2A mutation that may pause more than once, opt into an atomic
|
|
416
|
+
operation route and persist the returned host-only capability once:
|
|
417
|
+
|
|
418
|
+
```typescript
|
|
419
|
+
const paused = await agent.buyProducts(request, undefined, {
|
|
420
|
+
durableContinuationRecovery: {
|
|
421
|
+
ownerScope: `principal:${principalId}/account:${accountId}`,
|
|
422
|
+
},
|
|
423
|
+
});
|
|
424
|
+
|
|
425
|
+
const savedRecovery = paused.deferred?.recovery;
|
|
426
|
+
if (!savedRecovery) throw new Error('Seller did not return a recoverable A2A pause');
|
|
427
|
+
await saveHostOnly(savedRecovery);
|
|
428
|
+
|
|
429
|
+
const current = await restartedAgent.recoverDirectPauseContinuation({
|
|
430
|
+
...savedRecovery,
|
|
431
|
+
ownerScope: `principal:${principalId}/account:${accountId}`,
|
|
432
|
+
});
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
`ownerScope` must come from authenticated host context. The recovery key is
|
|
436
|
+
separate from the resume token and must not be placed in approval links or
|
|
437
|
+
sent to the seller. Recovery returns the current nested pause without a seller
|
|
438
|
+
call; its `deferred.resume()` remains generation-fenced.
|
|
439
|
+
|
|
415
440
|
Durable snapshots redact entire secret-shaped containers and truncate
|
|
416
441
|
over-depth subtrees. `SingleAgentClient.getProducts()` rejects an authenticated
|
|
417
442
|
request `property_list` before seller dispatch when durable storage also needs
|
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
Complete documentation for the ADCP TypeScript client library's new async execution model introduced in PR #78. This documentation covers migration from old patterns, comprehensive developer guidance, and production-ready implementation strategies.
|
|
6
6
|
|
|
7
|
+
Deploying request-scoped callers across multiple processes? Start with
|
|
8
|
+
[Durable buyer writes across processes](./DURABLE-BUYER-WRITES.md).
|
|
9
|
+
|
|
7
10
|
## 📚 Documentation Structure
|
|
8
11
|
|
|
9
12
|
### 1. [Migration Guide](./ASYNC-MIGRATION-GUIDE.md)
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
# Call a seller with AdCP 3.2
|
|
2
2
|
|
|
3
|
+
For product possibility, accepted change rights, and current execution routes, use the [MediaBuy action assessment helpers](./MEDIA-BUY-ACTION-ASSESSMENT.md).
|
|
4
|
+
|
|
3
5
|
Requires Node.js `^20.19.0 || >=22.12.0`. Install the SDK 14 prerelease
|
|
4
6
|
and create one client:
|
|
5
7
|
|
|
8
|
+
For request-scoped callers whose callback or poll may run on another process,
|
|
9
|
+
use the [durable buyer writes recipe](./DURABLE-BUYER-WRITES.md).
|
|
10
|
+
|
|
6
11
|
```bash
|
|
7
12
|
npm install '@adcp/sdk@^14.0.0-0'
|
|
8
13
|
```
|