@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
|
@@ -74,13 +74,18 @@ const METRIC_NAME = /^[A-Za-z][A-Za-z0-9_.:-]{0,127}$/;
|
|
|
74
74
|
const REASON = /^[A-Za-z0-9](?:[A-Za-z0-9 !#$%&'()*+,./:;<=>?@^_{}|~-]{0,510}[A-Za-z0-9])?$/;
|
|
75
75
|
const ReportingSha256V1Schema = import_zod.z.string().regex(SHA256);
|
|
76
76
|
const ReportingFingerprintV1Schema = import_zod.z.string().regex(/^sha256:[a-f0-9]{64}$/);
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
);
|
|
77
|
+
const EXTERNAL_ID_MAX_CHARS = 255;
|
|
78
|
+
function isUnpaddedControlFreeIdentifier(value) {
|
|
79
|
+
if (value.length > EXTERNAL_ID_MAX_CHARS) return false;
|
|
80
|
+
if (value.length === 0) return false;
|
|
81
|
+
if (/^\s/.test(value) || /\s$/.test(value)) return false;
|
|
82
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
83
|
+
const unit = value.charCodeAt(index);
|
|
84
|
+
if (unit <= 31 || unit === 127) return false;
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
const ReportingExternalIdV1Schema = import_zod.z.string().min(1).max(EXTERNAL_ID_MAX_CHARS).refine(isUnpaddedControlFreeIdentifier, "Identifier must not contain whitespace padding or control characters");
|
|
84
89
|
const ReportingOpaqueReferenceV1Schema = import_zod.z.string().regex(OPAQUE_REF);
|
|
85
90
|
const ReportingEvidenceReasonV1Schema = import_zod.z.string().min(1).max(512).regex(REASON);
|
|
86
91
|
const ReportingInstantV1Schema = import_zod.z.iso.datetime({ offset: true }).refine((value) => {
|
|
@@ -12,13 +12,18 @@ const METRIC_NAME = /^[A-Za-z][A-Za-z0-9_.:-]{0,127}$/;
|
|
|
12
12
|
const REASON = /^[A-Za-z0-9](?:[A-Za-z0-9 !#$%&'()*+,./:;<=>?@^_{}|~-]{0,510}[A-Za-z0-9])?$/;
|
|
13
13
|
const ReportingSha256V1Schema = z.string().regex(SHA256);
|
|
14
14
|
const ReportingFingerprintV1Schema = z.string().regex(/^sha256:[a-f0-9]{64}$/);
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
);
|
|
15
|
+
const EXTERNAL_ID_MAX_CHARS = 255;
|
|
16
|
+
function isUnpaddedControlFreeIdentifier(value) {
|
|
17
|
+
if (value.length > EXTERNAL_ID_MAX_CHARS) return false;
|
|
18
|
+
if (value.length === 0) return false;
|
|
19
|
+
if (/^\s/.test(value) || /\s$/.test(value)) return false;
|
|
20
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
21
|
+
const unit = value.charCodeAt(index);
|
|
22
|
+
if (unit <= 31 || unit === 127) return false;
|
|
23
|
+
}
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
const ReportingExternalIdV1Schema = z.string().min(1).max(EXTERNAL_ID_MAX_CHARS).refine(isUnpaddedControlFreeIdentifier, "Identifier must not contain whitespace padding or control characters");
|
|
22
27
|
const ReportingOpaqueReferenceV1Schema = z.string().regex(OPAQUE_REF);
|
|
23
28
|
const ReportingEvidenceReasonV1Schema = z.string().min(1).max(512).regex(REASON);
|
|
24
29
|
const ReportingInstantV1Schema = z.iso.datetime({ offset: true }).refine((value) => {
|
|
@@ -1545,3 +1545,29 @@ export declare function completedReportingSourceResponseV1(input: {
|
|
|
1545
1545
|
request: ReportingSourceSliceRequestV1;
|
|
1546
1546
|
manifest: SourceBatchManifestReferenceV1;
|
|
1547
1547
|
}): ReportingSourceExecutionResponseV1;
|
|
1548
|
+
/**
|
|
1549
|
+
* Normative period-boundary origins from `core/reporting-schedule.json`.
|
|
1550
|
+
*
|
|
1551
|
+
* `utc` uses 1970-01-01T00:00:00Z as interval zero; `source_timezone` uses
|
|
1552
|
+
* local midnight on that date in the explicit period timezone. Every boundary
|
|
1553
|
+
* is the origin plus an interval ordinal, so an adopter that follows the spec
|
|
1554
|
+
* anchors its generation on that origin rather than on a recent date.
|
|
1555
|
+
*/
|
|
1556
|
+
export declare const REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1: number;
|
|
1557
|
+
/** Minutes east of UTC that `timeZone` observes at `instantMs`. */
|
|
1558
|
+
export declare function reportingUtcOffsetMinutesV1(timeZone: string, instantMs: number): number;
|
|
1559
|
+
/**
|
|
1560
|
+
* True when `timeZone` does not hold one UTC offset across `[startMs, endMs]`.
|
|
1561
|
+
*
|
|
1562
|
+
* Fixed-millisecond period arithmetic only agrees with the spec's civil-time
|
|
1563
|
+
* boundary generation while the offset holds still, so any change in the span
|
|
1564
|
+
* means boundaries drift off source-local midnight.
|
|
1565
|
+
*/
|
|
1566
|
+
export declare function reportingUtcOffsetChangesV1(timeZone: string, startMs: number, endMs: number): boolean;
|
|
1567
|
+
/** True when `instantMs` is exactly 00:00:00.000 local time in `timeZone`. */
|
|
1568
|
+
export declare function reportingIsSourceLocalMidnightV1(instantMs: number, timeZone: string): boolean;
|
|
1569
|
+
/**
|
|
1570
|
+
* Interval zero for an alignment, per `reporting-schedule.json` §period_generation.
|
|
1571
|
+
* `billing_cycle` has no derivable origin — it carries an explicit anchor.
|
|
1572
|
+
*/
|
|
1573
|
+
export declare function reportingScheduleOriginV1(alignment: 'utc' | 'source_timezone', timeZone: string): number;
|
|
@@ -1545,3 +1545,29 @@ export declare function completedReportingSourceResponseV1(input: {
|
|
|
1545
1545
|
request: ReportingSourceSliceRequestV1;
|
|
1546
1546
|
manifest: SourceBatchManifestReferenceV1;
|
|
1547
1547
|
}): ReportingSourceExecutionResponseV1;
|
|
1548
|
+
/**
|
|
1549
|
+
* Normative period-boundary origins from `core/reporting-schedule.json`.
|
|
1550
|
+
*
|
|
1551
|
+
* `utc` uses 1970-01-01T00:00:00Z as interval zero; `source_timezone` uses
|
|
1552
|
+
* local midnight on that date in the explicit period timezone. Every boundary
|
|
1553
|
+
* is the origin plus an interval ordinal, so an adopter that follows the spec
|
|
1554
|
+
* anchors its generation on that origin rather than on a recent date.
|
|
1555
|
+
*/
|
|
1556
|
+
export declare const REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1: number;
|
|
1557
|
+
/** Minutes east of UTC that `timeZone` observes at `instantMs`. */
|
|
1558
|
+
export declare function reportingUtcOffsetMinutesV1(timeZone: string, instantMs: number): number;
|
|
1559
|
+
/**
|
|
1560
|
+
* True when `timeZone` does not hold one UTC offset across `[startMs, endMs]`.
|
|
1561
|
+
*
|
|
1562
|
+
* Fixed-millisecond period arithmetic only agrees with the spec's civil-time
|
|
1563
|
+
* boundary generation while the offset holds still, so any change in the span
|
|
1564
|
+
* means boundaries drift off source-local midnight.
|
|
1565
|
+
*/
|
|
1566
|
+
export declare function reportingUtcOffsetChangesV1(timeZone: string, startMs: number, endMs: number): boolean;
|
|
1567
|
+
/** True when `instantMs` is exactly 00:00:00.000 local time in `timeZone`. */
|
|
1568
|
+
export declare function reportingIsSourceLocalMidnightV1(instantMs: number, timeZone: string): boolean;
|
|
1569
|
+
/**
|
|
1570
|
+
* Interval zero for an alignment, per `reporting-schedule.json` §period_generation.
|
|
1571
|
+
* `billing_cycle` has no derivable origin — it carries an explicit anchor.
|
|
1572
|
+
*/
|
|
1573
|
+
export declare function reportingScheduleOriginV1(alignment: 'utc' | 'source_timezone', timeZone: string): number;
|
|
@@ -19,6 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var source_exports = {};
|
|
20
20
|
__export(source_exports, {
|
|
21
21
|
REPORTING_MAX_SOURCE_WINDOW_DAYS_V1: () => REPORTING_MAX_SOURCE_WINDOW_DAYS_V1,
|
|
22
|
+
REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1: () => REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1,
|
|
22
23
|
ReportingIsoDurationV1Schema: () => ReportingIsoDurationV1Schema,
|
|
23
24
|
ReportingMetricOrDimensionNameV1Schema: () => ReportingMetricOrDimensionNameV1Schema,
|
|
24
25
|
ReportingSourceCapabilitiesV1JsonSchema: () => ReportingSourceCapabilitiesV1JsonSchema,
|
|
@@ -33,9 +34,13 @@ __export(source_exports, {
|
|
|
33
34
|
ReportingSourceSliceRequestV1Schema: () => ReportingSourceSliceRequestV1Schema,
|
|
34
35
|
ReportingSourceWindowingV1Schema: () => ReportingSourceWindowingV1Schema,
|
|
35
36
|
completedReportingSourceResponseV1: () => completedReportingSourceResponseV1,
|
|
37
|
+
reportingIsSourceLocalMidnightV1: () => reportingIsSourceLocalMidnightV1,
|
|
36
38
|
reportingIsoDurationMillisecondsV1: () => reportingIsoDurationMillisecondsV1,
|
|
39
|
+
reportingScheduleOriginV1: () => reportingScheduleOriginV1,
|
|
37
40
|
reportingSourceCapabilitiesSha256V1: () => reportingSourceCapabilitiesSha256V1,
|
|
38
|
-
reportingSourceCapabilitiesV1: () => reportingSourceCapabilitiesV1
|
|
41
|
+
reportingSourceCapabilitiesV1: () => reportingSourceCapabilitiesV1,
|
|
42
|
+
reportingUtcOffsetChangesV1: () => reportingUtcOffsetChangesV1,
|
|
43
|
+
reportingUtcOffsetMinutesV1: () => reportingUtcOffsetMinutesV1
|
|
39
44
|
});
|
|
40
45
|
module.exports = __toCommonJS(source_exports);
|
|
41
46
|
var import_node_crypto = require("node:crypto");
|
|
@@ -524,9 +529,69 @@ function sourceLocalDate(instant, timezone) {
|
|
|
524
529
|
const values = Object.fromEntries(parts.map((part) => [part.type, part.value]));
|
|
525
530
|
return `${values.year}-${values.month}-${values.day}`;
|
|
526
531
|
}
|
|
532
|
+
const REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1 = Date.UTC(1970, 0, 1);
|
|
533
|
+
const zonedFormatters = /* @__PURE__ */ new Map();
|
|
534
|
+
function zonedFormatter(timeZone) {
|
|
535
|
+
let formatter = zonedFormatters.get(timeZone);
|
|
536
|
+
if (!formatter) {
|
|
537
|
+
formatter = new Intl.DateTimeFormat("en-US", {
|
|
538
|
+
timeZone,
|
|
539
|
+
hourCycle: "h23",
|
|
540
|
+
year: "numeric",
|
|
541
|
+
month: "2-digit",
|
|
542
|
+
day: "2-digit",
|
|
543
|
+
hour: "2-digit",
|
|
544
|
+
minute: "2-digit",
|
|
545
|
+
second: "2-digit"
|
|
546
|
+
});
|
|
547
|
+
zonedFormatters.set(timeZone, formatter);
|
|
548
|
+
}
|
|
549
|
+
return formatter;
|
|
550
|
+
}
|
|
551
|
+
function zonedParts(timeZone, instantMs) {
|
|
552
|
+
const parts = zonedFormatter(timeZone).formatToParts(new Date(instantMs));
|
|
553
|
+
const field = (type) => Number(parts.find((part) => part.type === type)?.value);
|
|
554
|
+
return {
|
|
555
|
+
year: field("year"),
|
|
556
|
+
month: field("month"),
|
|
557
|
+
day: field("day"),
|
|
558
|
+
hour: field("hour"),
|
|
559
|
+
minute: field("minute"),
|
|
560
|
+
second: field("second")
|
|
561
|
+
};
|
|
562
|
+
}
|
|
563
|
+
function reportingUtcOffsetMinutesV1(timeZone, instantMs) {
|
|
564
|
+
const parts = zonedParts(timeZone, instantMs);
|
|
565
|
+
const asUtc = Date.UTC(parts.year, parts.month - 1, parts.day, parts.hour, parts.minute, parts.second);
|
|
566
|
+
return Math.round((asUtc - (instantMs - instantMs % 1e3)) / 6e4);
|
|
567
|
+
}
|
|
568
|
+
const REPORTING_OFFSET_PROBE_STEP_MS_V1 = 10 * 864e5;
|
|
569
|
+
function reportingUtcOffsetChangesV1(timeZone, startMs, endMs) {
|
|
570
|
+
const baseline = reportingUtcOffsetMinutesV1(timeZone, startMs);
|
|
571
|
+
for (let instant = startMs; instant < endMs; instant += REPORTING_OFFSET_PROBE_STEP_MS_V1) {
|
|
572
|
+
if (reportingUtcOffsetMinutesV1(timeZone, instant) !== baseline) return true;
|
|
573
|
+
}
|
|
574
|
+
return reportingUtcOffsetMinutesV1(timeZone, endMs) !== baseline;
|
|
575
|
+
}
|
|
576
|
+
function reportingIsSourceLocalMidnightV1(instantMs, timeZone) {
|
|
577
|
+
if (instantMs % 1e3 !== 0) return false;
|
|
578
|
+
const parts = zonedParts(timeZone, instantMs);
|
|
579
|
+
return parts.hour === 0 && parts.minute === 0 && parts.second === 0;
|
|
580
|
+
}
|
|
581
|
+
function reportingScheduleOriginV1(alignment, timeZone) {
|
|
582
|
+
if (alignment === "utc") return REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1;
|
|
583
|
+
let instant = REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1;
|
|
584
|
+
for (let pass = 0; pass < 3; pass += 1) {
|
|
585
|
+
const candidate = REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1 - reportingUtcOffsetMinutesV1(timeZone, instant) * 6e4;
|
|
586
|
+
if (candidate === instant) break;
|
|
587
|
+
instant = candidate;
|
|
588
|
+
}
|
|
589
|
+
return instant;
|
|
590
|
+
}
|
|
527
591
|
// Annotate the CommonJS export names for ESM import in node:
|
|
528
592
|
0 && (module.exports = {
|
|
529
593
|
REPORTING_MAX_SOURCE_WINDOW_DAYS_V1,
|
|
594
|
+
REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1,
|
|
530
595
|
ReportingIsoDurationV1Schema,
|
|
531
596
|
ReportingMetricOrDimensionNameV1Schema,
|
|
532
597
|
ReportingSourceCapabilitiesV1JsonSchema,
|
|
@@ -541,7 +606,11 @@ function sourceLocalDate(instant, timezone) {
|
|
|
541
606
|
ReportingSourceSliceRequestV1Schema,
|
|
542
607
|
ReportingSourceWindowingV1Schema,
|
|
543
608
|
completedReportingSourceResponseV1,
|
|
609
|
+
reportingIsSourceLocalMidnightV1,
|
|
544
610
|
reportingIsoDurationMillisecondsV1,
|
|
611
|
+
reportingScheduleOriginV1,
|
|
545
612
|
reportingSourceCapabilitiesSha256V1,
|
|
546
|
-
reportingSourceCapabilitiesV1
|
|
613
|
+
reportingSourceCapabilitiesV1,
|
|
614
|
+
reportingUtcOffsetChangesV1,
|
|
615
|
+
reportingUtcOffsetMinutesV1
|
|
547
616
|
});
|
|
@@ -500,8 +500,68 @@ function sourceLocalDate(instant, timezone) {
|
|
|
500
500
|
const values = Object.fromEntries(parts.map((part) => [part.type, part.value]));
|
|
501
501
|
return `${values.year}-${values.month}-${values.day}`;
|
|
502
502
|
}
|
|
503
|
+
const REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1 = Date.UTC(1970, 0, 1);
|
|
504
|
+
const zonedFormatters = /* @__PURE__ */ new Map();
|
|
505
|
+
function zonedFormatter(timeZone) {
|
|
506
|
+
let formatter = zonedFormatters.get(timeZone);
|
|
507
|
+
if (!formatter) {
|
|
508
|
+
formatter = new Intl.DateTimeFormat("en-US", {
|
|
509
|
+
timeZone,
|
|
510
|
+
hourCycle: "h23",
|
|
511
|
+
year: "numeric",
|
|
512
|
+
month: "2-digit",
|
|
513
|
+
day: "2-digit",
|
|
514
|
+
hour: "2-digit",
|
|
515
|
+
minute: "2-digit",
|
|
516
|
+
second: "2-digit"
|
|
517
|
+
});
|
|
518
|
+
zonedFormatters.set(timeZone, formatter);
|
|
519
|
+
}
|
|
520
|
+
return formatter;
|
|
521
|
+
}
|
|
522
|
+
function zonedParts(timeZone, instantMs) {
|
|
523
|
+
const parts = zonedFormatter(timeZone).formatToParts(new Date(instantMs));
|
|
524
|
+
const field = (type) => Number(parts.find((part) => part.type === type)?.value);
|
|
525
|
+
return {
|
|
526
|
+
year: field("year"),
|
|
527
|
+
month: field("month"),
|
|
528
|
+
day: field("day"),
|
|
529
|
+
hour: field("hour"),
|
|
530
|
+
minute: field("minute"),
|
|
531
|
+
second: field("second")
|
|
532
|
+
};
|
|
533
|
+
}
|
|
534
|
+
function reportingUtcOffsetMinutesV1(timeZone, instantMs) {
|
|
535
|
+
const parts = zonedParts(timeZone, instantMs);
|
|
536
|
+
const asUtc = Date.UTC(parts.year, parts.month - 1, parts.day, parts.hour, parts.minute, parts.second);
|
|
537
|
+
return Math.round((asUtc - (instantMs - instantMs % 1e3)) / 6e4);
|
|
538
|
+
}
|
|
539
|
+
const REPORTING_OFFSET_PROBE_STEP_MS_V1 = 10 * 864e5;
|
|
540
|
+
function reportingUtcOffsetChangesV1(timeZone, startMs, endMs) {
|
|
541
|
+
const baseline = reportingUtcOffsetMinutesV1(timeZone, startMs);
|
|
542
|
+
for (let instant = startMs; instant < endMs; instant += REPORTING_OFFSET_PROBE_STEP_MS_V1) {
|
|
543
|
+
if (reportingUtcOffsetMinutesV1(timeZone, instant) !== baseline) return true;
|
|
544
|
+
}
|
|
545
|
+
return reportingUtcOffsetMinutesV1(timeZone, endMs) !== baseline;
|
|
546
|
+
}
|
|
547
|
+
function reportingIsSourceLocalMidnightV1(instantMs, timeZone) {
|
|
548
|
+
if (instantMs % 1e3 !== 0) return false;
|
|
549
|
+
const parts = zonedParts(timeZone, instantMs);
|
|
550
|
+
return parts.hour === 0 && parts.minute === 0 && parts.second === 0;
|
|
551
|
+
}
|
|
552
|
+
function reportingScheduleOriginV1(alignment, timeZone) {
|
|
553
|
+
if (alignment === "utc") return REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1;
|
|
554
|
+
let instant = REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1;
|
|
555
|
+
for (let pass = 0; pass < 3; pass += 1) {
|
|
556
|
+
const candidate = REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1 - reportingUtcOffsetMinutesV1(timeZone, instant) * 6e4;
|
|
557
|
+
if (candidate === instant) break;
|
|
558
|
+
instant = candidate;
|
|
559
|
+
}
|
|
560
|
+
return instant;
|
|
561
|
+
}
|
|
503
562
|
export {
|
|
504
563
|
REPORTING_MAX_SOURCE_WINDOW_DAYS_V1,
|
|
564
|
+
REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1,
|
|
505
565
|
ReportingIsoDurationV1Schema,
|
|
506
566
|
ReportingMetricOrDimensionNameV1Schema,
|
|
507
567
|
ReportingSourceCapabilitiesV1JsonSchema,
|
|
@@ -516,7 +576,11 @@ export {
|
|
|
516
576
|
ReportingSourceSliceRequestV1Schema,
|
|
517
577
|
ReportingSourceWindowingV1Schema,
|
|
518
578
|
completedReportingSourceResponseV1,
|
|
579
|
+
reportingIsSourceLocalMidnightV1,
|
|
519
580
|
reportingIsoDurationMillisecondsV1,
|
|
581
|
+
reportingScheduleOriginV1,
|
|
520
582
|
reportingSourceCapabilitiesSha256V1,
|
|
521
|
-
reportingSourceCapabilitiesV1
|
|
583
|
+
reportingSourceCapabilitiesV1,
|
|
584
|
+
reportingUtcOffsetChangesV1,
|
|
585
|
+
reportingUtcOffsetMinutesV1
|
|
522
586
|
};
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
"source_sha": "4e553ad955f83b49c7d221ab5c3ff78237ad02e3",
|
|
5
5
|
"source_tarball_sha256": "580656d6466ef9f0d1119985e6726c2efea718dc671e2ad30957fcb2fd54af0f",
|
|
6
6
|
"upstream_adcp_version": "2.5.3",
|
|
7
|
-
"synced_at": "2026-09-
|
|
7
|
+
"synced_at": "2026-09-18T20:08:01.998Z"
|
|
8
8
|
}
|
|
@@ -1398,6 +1398,24 @@ export interface AdcpServerConfig<TAccount = unknown> {
|
|
|
1398
1398
|
* the principal is still the authenticated buyer.
|
|
1399
1399
|
*/
|
|
1400
1400
|
resolveIdempotencyPrincipal?: (ctx: HandlerContext<TAccount>, params: IdempotencyPrincipalParams, toolName: AdcpServerToolName) => string | undefined;
|
|
1401
|
+
/**
|
|
1402
|
+
* Resolve the reporting consumer identity a `sync_reporting_status` receipt
|
|
1403
|
+
* is deposited for — the same identity the receipt handler records under.
|
|
1404
|
+
*
|
|
1405
|
+
* When present it is the replay namespace for that tool. The credential is
|
|
1406
|
+
* not a safe substitute: an adopter may map two operator seats sharing one
|
|
1407
|
+
* OAuth `client_id` to different reporting consumers, and keying replay by
|
|
1408
|
+
* `oauth:<client_id>` then let the second seat be served the first's cached
|
|
1409
|
+
* response and never record its own receipt. Absent this resolver the
|
|
1410
|
+
* framework falls back to the canonical credential identity, which is
|
|
1411
|
+
* correct exactly when the credential *is* the consumer.
|
|
1412
|
+
*
|
|
1413
|
+
* `createAdcpServerFromPlatform` wires this from the reporting platform's
|
|
1414
|
+
* own `resolveConsumerId`, so a service-installed deployment gets it for
|
|
1415
|
+
* free. Called once per dispatched `sync_reporting_status`, in addition to
|
|
1416
|
+
* the receipt handler's own call.
|
|
1417
|
+
*/
|
|
1418
|
+
resolveReportingConsumerId?: (ctx: HandlerContext<TAccount>, params: Record<string, unknown>) => string | Promise<string>;
|
|
1401
1419
|
/**
|
|
1402
1420
|
* Server-level prose surfaced on MCP `initialize`. Two forms:
|
|
1403
1421
|
*
|
|
@@ -1398,6 +1398,24 @@ export interface AdcpServerConfig<TAccount = unknown> {
|
|
|
1398
1398
|
* the principal is still the authenticated buyer.
|
|
1399
1399
|
*/
|
|
1400
1400
|
resolveIdempotencyPrincipal?: (ctx: HandlerContext<TAccount>, params: IdempotencyPrincipalParams, toolName: AdcpServerToolName) => string | undefined;
|
|
1401
|
+
/**
|
|
1402
|
+
* Resolve the reporting consumer identity a `sync_reporting_status` receipt
|
|
1403
|
+
* is deposited for — the same identity the receipt handler records under.
|
|
1404
|
+
*
|
|
1405
|
+
* When present it is the replay namespace for that tool. The credential is
|
|
1406
|
+
* not a safe substitute: an adopter may map two operator seats sharing one
|
|
1407
|
+
* OAuth `client_id` to different reporting consumers, and keying replay by
|
|
1408
|
+
* `oauth:<client_id>` then let the second seat be served the first's cached
|
|
1409
|
+
* response and never record its own receipt. Absent this resolver the
|
|
1410
|
+
* framework falls back to the canonical credential identity, which is
|
|
1411
|
+
* correct exactly when the credential *is* the consumer.
|
|
1412
|
+
*
|
|
1413
|
+
* `createAdcpServerFromPlatform` wires this from the reporting platform's
|
|
1414
|
+
* own `resolveConsumerId`, so a service-installed deployment gets it for
|
|
1415
|
+
* free. Called once per dispatched `sync_reporting_status`, in addition to
|
|
1416
|
+
* the receipt handler's own call.
|
|
1417
|
+
*/
|
|
1418
|
+
resolveReportingConsumerId?: (ctx: HandlerContext<TAccount>, params: Record<string, unknown>) => string | Promise<string>;
|
|
1401
1419
|
/**
|
|
1402
1420
|
* Server-level prose surfaced on MCP `initialize`. Two forms:
|
|
1403
1421
|
*
|
|
@@ -298,7 +298,7 @@ function thrownAdcpErrorRecovery(response) {
|
|
|
298
298
|
}
|
|
299
299
|
return import_error_codes.DEFAULT_UNKNOWN_ERROR_RECOVERY;
|
|
300
300
|
}
|
|
301
|
-
function resolveExtraScope(toolName, params, account, sessionKey, proposalScope, callerMutationScope) {
|
|
301
|
+
function resolveExtraScope(toolName, params, account, sessionKey, proposalScope, callerMutationScope, callerPrincipal) {
|
|
302
302
|
const accountLike = account;
|
|
303
303
|
const accountId = typeof accountLike?.id === "string" ? accountLike.id : typeof accountLike?.account_id === "string" ? accountLike.account_id : void 0;
|
|
304
304
|
const tenantId = typeof accountLike?.tenant_id === "string" ? accountLike.tenant_id : typeof accountLike?.tenantId === "string" ? accountLike.tenantId : void 0;
|
|
@@ -309,6 +309,10 @@ function resolveExtraScope(toolName, params, account, sessionKey, proposalScope,
|
|
|
309
309
|
callerMutationScope.account_id ?? null
|
|
310
310
|
]);
|
|
311
311
|
}
|
|
312
|
+
if (toolName === "sync_reporting_status") {
|
|
313
|
+
if (callerPrincipal === void 0) return void 0;
|
|
314
|
+
return JSON.stringify([tenantId ?? null, accountId ?? null, callerPrincipal]);
|
|
315
|
+
}
|
|
312
316
|
if (toolName === "si_send_message") {
|
|
313
317
|
const sessionId = params.session_id;
|
|
314
318
|
return typeof sessionId === "string" && sessionId.length > 0 ? sessionId : void 0;
|
|
@@ -467,6 +471,15 @@ function authenticatedPrincipalForContext(authInfo, agent) {
|
|
|
467
471
|
if (typeof authInfo?.clientId === "string" && authInfo.clientId.length > 0) return `client:${authInfo.clientId}`;
|
|
468
472
|
return void 0;
|
|
469
473
|
}
|
|
474
|
+
function reportingConsumerPrincipalForContext(authInfo, agent) {
|
|
475
|
+
const credential = authInfo?.credential;
|
|
476
|
+
if (credential?.kind === "http_sig") return `http_sig:${credential.agent_url}`;
|
|
477
|
+
if (credential?.kind === "oauth") return `oauth:${credential.client_id}`;
|
|
478
|
+
if (credential?.kind === "api_key") return `api_key:${credential.key_id}`;
|
|
479
|
+
if (typeof authInfo?.clientId === "string" && authInfo.clientId.length > 0) return `client:${authInfo.clientId}`;
|
|
480
|
+
if (agent?.agent_url) return `agent:${agent.agent_url}`;
|
|
481
|
+
return void 0;
|
|
482
|
+
}
|
|
470
483
|
function taskOwnerScopeForContext(authInfo, sessionKey, agent, accountId) {
|
|
471
484
|
if (sessionKey !== void 0) return `session:${sessionKey}`;
|
|
472
485
|
if (agent?.agent_url) return `agent:${agent.agent_url}`;
|
|
@@ -1768,6 +1781,7 @@ function createAdcpServer(config) {
|
|
|
1768
1781
|
capabilities: capConfig,
|
|
1769
1782
|
idempotency: idempotencyConfig,
|
|
1770
1783
|
resolveIdempotencyPrincipal,
|
|
1784
|
+
resolveReportingConsumerId,
|
|
1771
1785
|
instructions: instructionsOption,
|
|
1772
1786
|
onInstructionsError = "skip",
|
|
1773
1787
|
taskStore,
|
|
@@ -2842,6 +2856,37 @@ function createAdcpServer(config) {
|
|
|
2842
2856
|
);
|
|
2843
2857
|
}
|
|
2844
2858
|
}
|
|
2859
|
+
if (toolName === "sync_reporting_status" && idempotency !== void 0) {
|
|
2860
|
+
const namedByResolver = resolveReportingConsumerId !== void 0;
|
|
2861
|
+
const unidentified = namedByResolver ? ctx.authInfo === void 0 && ctx.agent === void 0 : reportingConsumerPrincipalForContext(ctx.authInfo, ctx.agent) === void 0;
|
|
2862
|
+
if (unidentified) {
|
|
2863
|
+
return finalize(
|
|
2864
|
+
(0, import_errors2.adcpError)("AUTH_MISSING", {
|
|
2865
|
+
message: "sync_reporting_status requires an authenticated caller principal"
|
|
2866
|
+
})
|
|
2867
|
+
);
|
|
2868
|
+
}
|
|
2869
|
+
}
|
|
2870
|
+
let reportingConsumerIdentity;
|
|
2871
|
+
if (toolName === "sync_reporting_status" && idempotency !== void 0 && resolveReportingConsumerId) {
|
|
2872
|
+
try {
|
|
2873
|
+
const resolved = await resolveReportingConsumerId(ctx, params);
|
|
2874
|
+
if (typeof resolved !== "string" || resolved.length === 0 || resolved.length > 255) {
|
|
2875
|
+
throw new Error("resolveReportingConsumerId must return a durable id of 1-255 characters");
|
|
2876
|
+
}
|
|
2877
|
+
reportingConsumerIdentity = resolved;
|
|
2878
|
+
} catch (err) {
|
|
2879
|
+
if (err instanceof import_async_outcome.AdcpError) return finalize(projectThrownAdcpError(err));
|
|
2880
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
2881
|
+
logger.error("Reporting consumer resolution failed", { tool: toolName, error: reason });
|
|
2882
|
+
return finalize(
|
|
2883
|
+
(0, import_errors2.adcpError)("SERVICE_UNAVAILABLE", {
|
|
2884
|
+
message: "Reporting consumer resolution failed",
|
|
2885
|
+
...exposeErrorDetails && { details: { reason: (0, import_redact.redactCredentialPatterns)(reason) } }
|
|
2886
|
+
})
|
|
2887
|
+
);
|
|
2888
|
+
}
|
|
2889
|
+
}
|
|
2845
2890
|
if (CALLER_SCOPED_MUTATION_TOOLS.has(toolName)) {
|
|
2846
2891
|
if (ctx.authInfo === void 0 && ctx.agent === void 0) {
|
|
2847
2892
|
return finalize(
|
|
@@ -2955,7 +3000,12 @@ function createAdcpServer(config) {
|
|
|
2955
3000
|
ctx.account,
|
|
2956
3001
|
ctx.sessionKey,
|
|
2957
3002
|
ctx.proposalRefinementScope,
|
|
2958
|
-
ctx.callerMutationScope
|
|
3003
|
+
ctx.callerMutationScope,
|
|
3004
|
+
// The resolved reporting consumer when the deployment can name it,
|
|
3005
|
+
// and otherwise the canonical credential identity, so callers
|
|
3006
|
+
// differing only by credential -- including two behind one
|
|
3007
|
+
// registered buyer agent -- do not share a replay namespace.
|
|
3008
|
+
reportingConsumerIdentity !== void 0 ? `consumer:${reportingConsumerIdentity}` : reportingConsumerPrincipalForContext(ctx.authInfo, ctx.agent)
|
|
2959
3009
|
);
|
|
2960
3010
|
const idempotencyPayload = buildIdempotencyPayload(toolName, params, ctx.account, ctx.sessionKey);
|
|
2961
3011
|
try {
|
|
@@ -367,7 +367,7 @@ function thrownAdcpErrorRecovery(response) {
|
|
|
367
367
|
}
|
|
368
368
|
return DEFAULT_UNKNOWN_ERROR_RECOVERY;
|
|
369
369
|
}
|
|
370
|
-
function resolveExtraScope(toolName, params, account, sessionKey, proposalScope, callerMutationScope) {
|
|
370
|
+
function resolveExtraScope(toolName, params, account, sessionKey, proposalScope, callerMutationScope, callerPrincipal) {
|
|
371
371
|
const accountLike = account;
|
|
372
372
|
const accountId = typeof accountLike?.id === "string" ? accountLike.id : typeof accountLike?.account_id === "string" ? accountLike.account_id : void 0;
|
|
373
373
|
const tenantId = typeof accountLike?.tenant_id === "string" ? accountLike.tenant_id : typeof accountLike?.tenantId === "string" ? accountLike.tenantId : void 0;
|
|
@@ -378,6 +378,10 @@ function resolveExtraScope(toolName, params, account, sessionKey, proposalScope,
|
|
|
378
378
|
callerMutationScope.account_id ?? null
|
|
379
379
|
]);
|
|
380
380
|
}
|
|
381
|
+
if (toolName === "sync_reporting_status") {
|
|
382
|
+
if (callerPrincipal === void 0) return void 0;
|
|
383
|
+
return JSON.stringify([tenantId ?? null, accountId ?? null, callerPrincipal]);
|
|
384
|
+
}
|
|
381
385
|
if (toolName === "si_send_message") {
|
|
382
386
|
const sessionId = params.session_id;
|
|
383
387
|
return typeof sessionId === "string" && sessionId.length > 0 ? sessionId : void 0;
|
|
@@ -536,6 +540,15 @@ function authenticatedPrincipalForContext(authInfo, agent) {
|
|
|
536
540
|
if (typeof authInfo?.clientId === "string" && authInfo.clientId.length > 0) return `client:${authInfo.clientId}`;
|
|
537
541
|
return void 0;
|
|
538
542
|
}
|
|
543
|
+
function reportingConsumerPrincipalForContext(authInfo, agent) {
|
|
544
|
+
const credential = authInfo?.credential;
|
|
545
|
+
if (credential?.kind === "http_sig") return `http_sig:${credential.agent_url}`;
|
|
546
|
+
if (credential?.kind === "oauth") return `oauth:${credential.client_id}`;
|
|
547
|
+
if (credential?.kind === "api_key") return `api_key:${credential.key_id}`;
|
|
548
|
+
if (typeof authInfo?.clientId === "string" && authInfo.clientId.length > 0) return `client:${authInfo.clientId}`;
|
|
549
|
+
if (agent?.agent_url) return `agent:${agent.agent_url}`;
|
|
550
|
+
return void 0;
|
|
551
|
+
}
|
|
539
552
|
function taskOwnerScopeForContext(authInfo, sessionKey, agent, accountId) {
|
|
540
553
|
if (sessionKey !== void 0) return `session:${sessionKey}`;
|
|
541
554
|
if (agent?.agent_url) return `agent:${agent.agent_url}`;
|
|
@@ -1837,6 +1850,7 @@ function createAdcpServer(config) {
|
|
|
1837
1850
|
capabilities: capConfig,
|
|
1838
1851
|
idempotency: idempotencyConfig,
|
|
1839
1852
|
resolveIdempotencyPrincipal,
|
|
1853
|
+
resolveReportingConsumerId,
|
|
1840
1854
|
instructions: instructionsOption,
|
|
1841
1855
|
onInstructionsError = "skip",
|
|
1842
1856
|
taskStore,
|
|
@@ -2911,6 +2925,37 @@ function createAdcpServer(config) {
|
|
|
2911
2925
|
);
|
|
2912
2926
|
}
|
|
2913
2927
|
}
|
|
2928
|
+
if (toolName === "sync_reporting_status" && idempotency !== void 0) {
|
|
2929
|
+
const namedByResolver = resolveReportingConsumerId !== void 0;
|
|
2930
|
+
const unidentified = namedByResolver ? ctx.authInfo === void 0 && ctx.agent === void 0 : reportingConsumerPrincipalForContext(ctx.authInfo, ctx.agent) === void 0;
|
|
2931
|
+
if (unidentified) {
|
|
2932
|
+
return finalize(
|
|
2933
|
+
adcpError("AUTH_MISSING", {
|
|
2934
|
+
message: "sync_reporting_status requires an authenticated caller principal"
|
|
2935
|
+
})
|
|
2936
|
+
);
|
|
2937
|
+
}
|
|
2938
|
+
}
|
|
2939
|
+
let reportingConsumerIdentity;
|
|
2940
|
+
if (toolName === "sync_reporting_status" && idempotency !== void 0 && resolveReportingConsumerId) {
|
|
2941
|
+
try {
|
|
2942
|
+
const resolved = await resolveReportingConsumerId(ctx, params);
|
|
2943
|
+
if (typeof resolved !== "string" || resolved.length === 0 || resolved.length > 255) {
|
|
2944
|
+
throw new Error("resolveReportingConsumerId must return a durable id of 1-255 characters");
|
|
2945
|
+
}
|
|
2946
|
+
reportingConsumerIdentity = resolved;
|
|
2947
|
+
} catch (err) {
|
|
2948
|
+
if (err instanceof AdcpError) return finalize(projectThrownAdcpError(err));
|
|
2949
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
2950
|
+
logger.error("Reporting consumer resolution failed", { tool: toolName, error: reason });
|
|
2951
|
+
return finalize(
|
|
2952
|
+
adcpError("SERVICE_UNAVAILABLE", {
|
|
2953
|
+
message: "Reporting consumer resolution failed",
|
|
2954
|
+
...exposeErrorDetails && { details: { reason: redactCredentialPatterns(reason) } }
|
|
2955
|
+
})
|
|
2956
|
+
);
|
|
2957
|
+
}
|
|
2958
|
+
}
|
|
2914
2959
|
if (CALLER_SCOPED_MUTATION_TOOLS.has(toolName)) {
|
|
2915
2960
|
if (ctx.authInfo === void 0 && ctx.agent === void 0) {
|
|
2916
2961
|
return finalize(
|
|
@@ -3024,7 +3069,12 @@ function createAdcpServer(config) {
|
|
|
3024
3069
|
ctx.account,
|
|
3025
3070
|
ctx.sessionKey,
|
|
3026
3071
|
ctx.proposalRefinementScope,
|
|
3027
|
-
ctx.callerMutationScope
|
|
3072
|
+
ctx.callerMutationScope,
|
|
3073
|
+
// The resolved reporting consumer when the deployment can name it,
|
|
3074
|
+
// and otherwise the canonical credential identity, so callers
|
|
3075
|
+
// differing only by credential -- including two behind one
|
|
3076
|
+
// registered buyer agent -- do not share a replay namespace.
|
|
3077
|
+
reportingConsumerIdentity !== void 0 ? `consumer:${reportingConsumerIdentity}` : reportingConsumerPrincipalForContext(ctx.authInfo, ctx.agent)
|
|
3028
3078
|
);
|
|
3029
3079
|
const idempotencyPayload = buildIdempotencyPayload(toolName, params, ctx.account, ctx.sessionKey);
|
|
3030
3080
|
try {
|
|
@@ -151,7 +151,7 @@ export interface Account<TCtxMeta = Record<string, unknown>> {
|
|
|
151
151
|
reporting_delivery_configs?: ReportingDeliveryConfigurationState[];
|
|
152
152
|
/**
|
|
153
153
|
* Account-level webhook subscriptions registered through `sync_accounts`.
|
|
154
|
-
*
|
|
154
|
+
* Wholesale product/signal feed webhooks are registered here. The framework
|
|
155
155
|
* strips legacy `authentication.credentials` before emitting accounts on
|
|
156
156
|
* `list_accounts`; adopters must still persist credentials server-side if
|
|
157
157
|
* they accept legacy webhook auth.
|
|
@@ -151,7 +151,7 @@ export interface Account<TCtxMeta = Record<string, unknown>> {
|
|
|
151
151
|
reporting_delivery_configs?: ReportingDeliveryConfigurationState[];
|
|
152
152
|
/**
|
|
153
153
|
* Account-level webhook subscriptions registered through `sync_accounts`.
|
|
154
|
-
*
|
|
154
|
+
* Wholesale product/signal feed webhooks are registered here. The framework
|
|
155
155
|
* strips legacy `authentication.credentials` before emitting accounts on
|
|
156
156
|
* `list_accounts`; adopters must still persist credentials server-side if
|
|
157
157
|
* they accept legacy webhook auth.
|
|
@@ -29,6 +29,7 @@ export type { StatusMappers, AdcpMediaBuyStatus, AdcpCreativeStatus, AdcpPlanSta
|
|
|
29
29
|
export { identityStatusMappers } from './status-mappers.mjs';
|
|
30
30
|
export type { RequestContext, WorkflowStateReader, ResourceResolver, WorkflowObjectType, WorkflowStep, Proposal, GovernanceContextJWS, } from './context.mjs';
|
|
31
31
|
export type { DecisioningPlatform, RequiredPlatformsFor, RequiredCapabilitiesFor } from './platform.mjs';
|
|
32
|
+
export type { ReliableReportingPlatform } from './specialisms/reporting.mjs';
|
|
32
33
|
export { composeMethod } from './compose.mjs';
|
|
33
34
|
export type { ComposeHooks, ComposeShortCircuit } from './compose.mjs';
|
|
34
35
|
export { requireAccountMatch, requireAdvertiserMatch, requireOrgScope } from './resolve-presets.mjs';
|
|
@@ -29,6 +29,7 @@ export type { StatusMappers, AdcpMediaBuyStatus, AdcpCreativeStatus, AdcpPlanSta
|
|
|
29
29
|
export { identityStatusMappers } from './status-mappers';
|
|
30
30
|
export type { RequestContext, WorkflowStateReader, ResourceResolver, WorkflowObjectType, WorkflowStep, Proposal, GovernanceContextJWS, } from './context';
|
|
31
31
|
export type { DecisioningPlatform, RequiredPlatformsFor, RequiredCapabilitiesFor } from './platform';
|
|
32
|
+
export type { ReliableReportingPlatform } from './specialisms/reporting';
|
|
32
33
|
export { composeMethod } from './compose';
|
|
33
34
|
export type { ComposeHooks, ComposeShortCircuit } from './compose';
|
|
34
35
|
export { requireAccountMatch, requireAdvertiserMatch, requireOrgScope } from './resolve-presets';
|
|
@@ -25,6 +25,7 @@ import type { CampaignGovernancePlatform } from './specialisms/campaign-governan
|
|
|
25
25
|
import type { ContentStandardsPlatform } from './specialisms/content-standards.mjs';
|
|
26
26
|
import type { BrandRightsPlatform } from './specialisms/brand-rights.mjs';
|
|
27
27
|
import type { PropertyListsPlatform, CollectionListsPlatform } from './specialisms/lists.mjs';
|
|
28
|
+
import type { ReliableReportingPlatform } from './specialisms/reporting.mjs';
|
|
28
29
|
import type { AdCPSpecialism } from '../../types/tools.generated.mjs';
|
|
29
30
|
/**
|
|
30
31
|
* Top-level platform interface. Adopters implement this; framework wires
|
|
@@ -214,6 +215,8 @@ export interface DecisioningPlatform<TConfig = unknown, TCtxMeta = Record<string
|
|
|
214
215
|
creative?: CreativeBuilderPlatform<TCtxMeta> | CreativeAdServerPlatform<TCtxMeta>;
|
|
215
216
|
audiences?: AudiencePlatform<TCtxMeta>;
|
|
216
217
|
signals?: SignalsPlatform<TCtxMeta>;
|
|
218
|
+
/** Reliable Reporting Core lifecycle, normally installed by `createReliableReportingService`. */
|
|
219
|
+
reporting?: ReliableReportingPlatform<TCtxMeta>;
|
|
217
220
|
/**
|
|
218
221
|
* Sponsored Intelligence implementation. In AdCP 3.1 this field is required
|
|
219
222
|
* when the agent claims the `sponsored-intelligence` specialism. The
|
|
@@ -25,6 +25,7 @@ import type { CampaignGovernancePlatform } from './specialisms/campaign-governan
|
|
|
25
25
|
import type { ContentStandardsPlatform } from './specialisms/content-standards';
|
|
26
26
|
import type { BrandRightsPlatform } from './specialisms/brand-rights';
|
|
27
27
|
import type { PropertyListsPlatform, CollectionListsPlatform } from './specialisms/lists';
|
|
28
|
+
import type { ReliableReportingPlatform } from './specialisms/reporting';
|
|
28
29
|
import type { AdCPSpecialism } from '../../types/tools.generated';
|
|
29
30
|
/**
|
|
30
31
|
* Top-level platform interface. Adopters implement this; framework wires
|
|
@@ -214,6 +215,8 @@ export interface DecisioningPlatform<TConfig = unknown, TCtxMeta = Record<string
|
|
|
214
215
|
creative?: CreativeBuilderPlatform<TCtxMeta> | CreativeAdServerPlatform<TCtxMeta>;
|
|
215
216
|
audiences?: AudiencePlatform<TCtxMeta>;
|
|
216
217
|
signals?: SignalsPlatform<TCtxMeta>;
|
|
218
|
+
/** Reliable Reporting Core lifecycle, normally installed by `createReliableReportingService`. */
|
|
219
|
+
reporting?: ReliableReportingPlatform<TCtxMeta>;
|
|
217
220
|
/**
|
|
218
221
|
* Sponsored Intelligence implementation. In AdCP 3.1 this field is required
|
|
219
222
|
* when the agent claims the `sponsored-intelligence` specialism. The
|