@adcp/sdk 14.0.0-rc.37 → 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/content-mismatch.d.mts +126 -0
- package/dist/lib/reporting/content-mismatch.d.ts +126 -0
- package/dist/lib/reporting/content-mismatch.js +90 -0
- package/dist/lib/reporting/content-mismatch.mjs +66 -0
- 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/index.d.mts +3 -1
- package/dist/lib/reporting/index.d.ts +3 -1
- package/dist/lib/reporting/index.js +3 -0
- package/dist/lib/reporting/index.mjs +2 -0
- 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/reconciliation.d.mts +362 -2
- package/dist/lib/reporting/reconciliation.d.ts +362 -2
- package/dist/lib/reporting/reconciliation.js +1051 -7
- package/dist/lib/reporting/reconciliation.mjs +1053 -7
- 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/index.d.mts +22 -1
- package/dist/lib/schemas/index.d.ts +22 -1
- package/dist/lib/schemas/index.js +7 -0
- package/dist/lib/schemas/index.mjs +7 -0
- 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/validation/schema-loader.d.mts +9 -1
- package/dist/lib/validation/schema-loader.d.ts +9 -1
- package/dist/lib/validation/schema-loader.js +65 -8
- package/dist/lib/validation/schema-loader.mjs +64 -8
- 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 +80 -1
- package/docs/guides/MEDIA-BUY-3.2-COMPATIBILITY.md +57 -0
- package/docs/guides/MEDIA-BUY-ACTION-ASSESSMENT.md +300 -0
- package/docs/guides/REPORTING-LEDGER.md +654 -3
- package/docs/guides/REPORTING-RECONCILIATION.md +50 -0
- 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 +60 -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/SKILL.md +2 -0
- package/skills/build-seller-agent/specialisms/signed-requests.md +11 -1
- package/skills/cross-cutting.md +28 -11
- package/compliance/cache/3.1.0-beta.7/domains/brand/index.yaml +0 -160
- package/compliance/cache/3.1.0-beta.7/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -415
- package/compliance/cache/3.1.0-beta.7/domains/brand/scenarios/single_side_trust_extension.yaml +0 -454
- package/compliance/cache/3.1.0-beta.7/domains/creative/index.yaml +0 -339
- package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/billing_out_of_band.yaml +0 -153
- package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -389
- package/compliance/cache/3.1.0-beta.7/domains/creative/scenarios/native_in_feed.yaml +0 -543
- package/compliance/cache/3.1.0-beta.7/domains/governance/index.yaml +0 -682
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/index.yaml +0 -781
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -380
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/available_actions.yaml +0 -565
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/billing_finality_delivery.yaml +0 -354
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/canonical_formats.yaml +0 -711
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -264
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -344
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -234
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -419
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/creative_reception.yaml +0 -247
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/delivery_reporting.yaml +0 -357
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/dependency_impairment.yaml +0 -633
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -800
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -399
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -309
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_approved.yaml +0 -214
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_conditions.yaml +0 -199
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_denied.yaml +0 -204
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -252
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/invalid_transitions.yaml +0 -289
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/inventory_list_targeting.yaml +0 -276
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/measurement_accountability.yaml +0 -244
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/measurement_terms_rejected.yaml +0 -203
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/pending_creatives_to_start.yaml +0 -274
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -500
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -428
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -470
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -373
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_finalize.yaml +0 -399
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -264
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -257
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_audit_observation.yaml +0 -333
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_enforcement.yaml +0 -517
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -294
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -823
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -360
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/refine_products.yaml +0 -148
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_accountability.yaml +0 -293
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -307
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -576
- package/compliance/cache/3.1.0-beta.7/domains/media-buy/state-machine.yaml +0 -442
- package/compliance/cache/3.1.0-beta.7/domains/signals/index.yaml +0 -266
- package/compliance/cache/3.1.0-beta.7/domains/sponsored-intelligence/index.yaml +0 -256
- package/compliance/cache/3.1.0-beta.7/index.json +0 -356
- package/compliance/cache/3.1.0-beta.7/protocols/brand/index.yaml +0 -160
- package/compliance/cache/3.1.0-beta.7/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -415
- package/compliance/cache/3.1.0-beta.7/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -454
- package/compliance/cache/3.1.0-beta.7/protocols/creative/index.yaml +0 -339
- package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/billing_out_of_band.yaml +0 -153
- package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -389
- package/compliance/cache/3.1.0-beta.7/protocols/creative/scenarios/native_in_feed.yaml +0 -543
- package/compliance/cache/3.1.0-beta.7/protocols/governance/index.yaml +0 -682
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/index.yaml +0 -781
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -380
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/available_actions.yaml +0 -565
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/billing_finality_delivery.yaml +0 -354
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/canonical_formats.yaml +0 -711
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -264
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -344
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -234
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +0 -419
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/creative_reception.yaml +0 -247
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -357
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/dependency_impairment.yaml +0 -633
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -800
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -399
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -309
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_approved.yaml +0 -214
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_conditions.yaml +0 -199
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_denied.yaml +0 -204
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -252
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/invalid_transitions.yaml +0 -289
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -148
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/inventory_list_targeting.yaml +0 -276
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/measurement_accountability.yaml +0 -244
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +0 -203
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +0 -274
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -500
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -428
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -470
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -373
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -399
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -264
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -257
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_audit_observation.yaml +0 -333
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_enforcement.yaml +0 -517
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -294
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -823
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -360
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/refine_products.yaml +0 -148
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +0 -293
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -307
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -576
- package/compliance/cache/3.1.0-beta.7/protocols/media-buy/state-machine.yaml +0 -442
- package/compliance/cache/3.1.0-beta.7/protocols/signals/index.yaml +0 -266
- package/compliance/cache/3.1.0-beta.7/protocols/sponsored-intelligence/index.yaml +0 -256
- package/compliance/cache/3.1.0-beta.7/specialisms/audience-sync/index.yaml +0 -313
- package/compliance/cache/3.1.0-beta.7/specialisms/brand-rights/index.yaml +0 -350
- package/compliance/cache/3.1.0-beta.7/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -226
- package/compliance/cache/3.1.0-beta.7/specialisms/collection-lists/index.yaml +0 -359
- package/compliance/cache/3.1.0-beta.7/specialisms/content-standards/index.yaml +0 -572
- package/compliance/cache/3.1.0-beta.7/specialisms/creative-ad-server/index.yaml +0 -409
- package/compliance/cache/3.1.0-beta.7/specialisms/creative-generative/generative-seller.yaml +0 -807
- package/compliance/cache/3.1.0-beta.7/specialisms/creative-generative/index.yaml +0 -758
- package/compliance/cache/3.1.0-beta.7/specialisms/creative-template/index.yaml +0 -510
- package/compliance/cache/3.1.0-beta.7/specialisms/governance-aware-seller/index.yaml +0 -143
- package/compliance/cache/3.1.0-beta.7/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -117
- package/compliance/cache/3.1.0-beta.7/specialisms/governance-delivery-monitor/index.yaml +0 -441
- package/compliance/cache/3.1.0-beta.7/specialisms/governance-spend-authority/denied.yaml +0 -221
- package/compliance/cache/3.1.0-beta.7/specialisms/governance-spend-authority/index.yaml +0 -330
- package/compliance/cache/3.1.0-beta.7/specialisms/property-lists/index.yaml +0 -482
- package/compliance/cache/3.1.0-beta.7/specialisms/sales-broadcast-tv/index.yaml +0 -738
- package/compliance/cache/3.1.0-beta.7/specialisms/sales-catalog-driven/index.yaml +0 -840
- package/compliance/cache/3.1.0-beta.7/specialisms/sales-guaranteed/index.yaml +0 -601
- package/compliance/cache/3.1.0-beta.7/specialisms/sales-non-guaranteed/index.yaml +0 -546
- package/compliance/cache/3.1.0-beta.7/specialisms/sales-proposal-mode/index.yaml +0 -586
- package/compliance/cache/3.1.0-beta.7/specialisms/sales-social/index.yaml +0 -919
- package/compliance/cache/3.1.0-beta.7/specialisms/signal-marketplace/index.yaml +0 -424
- package/compliance/cache/3.1.0-beta.7/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -211
- package/compliance/cache/3.1.0-beta.7/specialisms/signal-owned/index.yaml +0 -317
- package/compliance/cache/3.1.0-beta.7/specialisms/sponsored-intelligence/index.yaml +0 -59
- package/compliance/cache/3.1.0-beta.7/test-kits/acme-outdoor-live.yaml +0 -78
- package/compliance/cache/3.1.0-beta.7/test-kits/acme-outdoor.yaml +0 -223
- package/compliance/cache/3.1.0-beta.7/test-kits/billing-gate-runner.yaml +0 -115
- package/compliance/cache/3.1.0-beta.7/test-kits/bistro-oranje.yaml +0 -126
- package/compliance/cache/3.1.0-beta.7/test-kits/distributed-brand-runner.yaml +0 -281
- package/compliance/cache/3.1.0-beta.7/test-kits/nova-motors.yaml +0 -262
- package/compliance/cache/3.1.0-beta.7/test-kits/osei-natural.yaml +0 -126
- package/compliance/cache/3.1.0-beta.7/test-kits/parallel-dispatch-runner.yaml +0 -196
- package/compliance/cache/3.1.0-beta.7/test-kits/rate-limit-trip-runner.yaml +0 -172
- package/compliance/cache/3.1.0-beta.7/test-kits/signed-requests-runner.yaml +0 -155
- package/compliance/cache/3.1.0-beta.7/test-kits/single-side-trust-runner.yaml +0 -294
- package/compliance/cache/3.1.0-beta.7/test-kits/substitution-observer-runner.yaml +0 -688
- package/compliance/cache/3.1.0-beta.7/test-kits/summit-foods.yaml +0 -125
- package/compliance/cache/3.1.0-beta.7/test-kits/webhook-receiver-runner.yaml +0 -265
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/001-minimal-plan.json +0 -43
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/002-full-plan.json +0 -217
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -60
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/004a-human-review-omitted.json +0 -43
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -49
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -53
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -57
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -49
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -53
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/007-unicode-objectives.json +0 -43
- package/compliance/cache/3.1.0-beta.7/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -65
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/README.md +0 -220
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/canonicalization.json +0 -241
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/keys.json +0 -60
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/001-no-signature-header.json +0 -24
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/002-wrong-tag.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/003-expired-signature.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/004-window-too-long.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -27
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -33
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/011-malformed-header.json +0 -27
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/013-expires-le-created.json +0 -27
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -27
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/015-signature-invalid.json +0 -28
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -35
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/017-key-revoked.json +0 -38
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -28
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/020-rate-abuse.json +0 -34
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -31
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -31
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -32
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -31
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -43
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -31
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -25
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/001-basic-post.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -31
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/003-es256-post.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -30
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/README.md +0 -211
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/keys.json +0 -61
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -25
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -25
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -37
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -32
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -33
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -32
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -41
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -26
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/001-basic-post.json +0 -24
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/002-es256-post.json +0 -24
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -24
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -24
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -24
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -24
- package/compliance/cache/3.1.0-beta.7/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -25
- package/compliance/cache/3.1.0-beta.7/universal/billing-gate-dispatch.yaml +0 -450
- package/compliance/cache/3.1.0-beta.7/universal/canonical-format-validate-input.yaml +0 -640
- package/compliance/cache/3.1.0-beta.7/universal/capability-discovery.yaml +0 -125
- package/compliance/cache/3.1.0-beta.7/universal/collection-lists-pagination-integrity.yaml +0 -306
- package/compliance/cache/3.1.0-beta.7/universal/comply-controller-mode-gate.yaml +0 -141
- package/compliance/cache/3.1.0-beta.7/universal/content-standards-pagination-integrity.yaml +0 -326
- package/compliance/cache/3.1.0-beta.7/universal/deterministic-testing.yaml +0 -1430
- package/compliance/cache/3.1.0-beta.7/universal/error-compliance-signals.yaml +0 -377
- package/compliance/cache/3.1.0-beta.7/universal/error-compliance.yaml +0 -528
- package/compliance/cache/3.1.0-beta.7/universal/fictional-entities.yaml +0 -307
- package/compliance/cache/3.1.0-beta.7/universal/get-media-buys-pagination-integrity.yaml +0 -160
- package/compliance/cache/3.1.0-beta.7/universal/get-signals-pagination-integrity.yaml +0 -211
- package/compliance/cache/3.1.0-beta.7/universal/idempotency.yaml +0 -861
- package/compliance/cache/3.1.0-beta.7/universal/notification-config-event-scope.yaml +0 -119
- package/compliance/cache/3.1.0-beta.7/universal/notification-config-lifecycle.yaml +0 -337
- package/compliance/cache/3.1.0-beta.7/universal/notification-config-rejections.yaml +0 -107
- package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity-creative-formats.yaml +0 -265
- package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity-list-accounts.yaml +0 -245
- package/compliance/cache/3.1.0-beta.7/universal/pagination-integrity.yaml +0 -263
- package/compliance/cache/3.1.0-beta.7/universal/property-lists-pagination-integrity.yaml +0 -307
- package/compliance/cache/3.1.0-beta.7/universal/read-tool-idempotency.yaml +0 -405
- package/compliance/cache/3.1.0-beta.7/universal/runner-output-contract.yaml +0 -1266
- package/compliance/cache/3.1.0-beta.7/universal/schema-validation-signals.yaml +0 -181
- package/compliance/cache/3.1.0-beta.7/universal/schema-validation.yaml +0 -548
- package/compliance/cache/3.1.0-beta.7/universal/security.yaml +0 -539
- package/compliance/cache/3.1.0-beta.7/universal/signed-requests.yaml +0 -217
- package/compliance/cache/3.1.0-beta.7/universal/stale-response-advisory.yaml +0 -295
- package/compliance/cache/3.1.0-beta.7/universal/storyboard-schema.yaml +0 -2136
- package/compliance/cache/3.1.0-beta.7/universal/v3-envelope-integrity.yaml +0 -117
- package/compliance/cache/3.1.0-beta.7/universal/version-negotiation.yaml +0 -130
- package/compliance/cache/3.1.0-beta.7/universal/webhook-emission.yaml +0 -411
- package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-bulk-webhooks.yaml +0 -82
- package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-product-webhooks.yaml +0 -83
- package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-products.yaml +0 -151
- package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-signal-webhooks.yaml +0 -83
- package/compliance/cache/3.1.0-beta.7/universal/wholesale-feed-signals.yaml +0 -149
- package/dist/lib/types/v3-1-beta/index.d.mts +0 -1
- package/dist/lib/types/v3-1-beta/index.d.ts +0 -1
- package/dist/lib/types/v3-1-beta/index.mjs +0 -1
- package/dist/lib/types/v3-1-beta/tools.generated.d.mts +0 -26788
- package/dist/lib/types/v3-1-beta/tools.generated.d.ts +0 -26788
- /package/dist/lib/{types/v3-1-beta/tools.generated.mjs → media-buy/action-types.mjs} +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { REPORTING_LEDGER_AUTHORITY } from './types.mjs';
|
|
2
|
+
import type { ReportingLedgerConfigurationV1, ReportingLedgerAdjustmentV1, ReportingLedgerConsumerStatusV1, ReportingLedgerIssueV1, ReportingLedgerLeaseV1, ReportingLedgerObligationV1, ReportingLedgerPageV1, ReportingLedgerRevisionV1, ReportingLedgerSnapshotQueryV1, ReportingLedgerSnapshotV1, ReportingLedgerStatusTransitionV1, ReportingLedgerNotificationActivityPortV1, ReportingLedgerTransactionV1, ReportingObservedFinalityV1, ReportingLedgerStore, ReportingConsumerStatusBatchInputV1, ReportingConsumerStatusBatchResultV1, ReportingConsumerStatusReplayInputV1, ReportingLedgerRevisionMetadataV1, ReportingManagedLifecycleProjectionV1, ReportingLedgerAuthorityV1 } from './types.mjs';
|
|
2
3
|
import type { ReportingConsumerMismatchEscalationV1 } from './types.mjs';
|
|
3
4
|
type QueryResultRow = Record<string, unknown>;
|
|
4
5
|
interface ReportingPgResult<Row extends QueryResultRow> {
|
|
@@ -14,6 +15,30 @@ export interface ReportingPgPool {
|
|
|
14
15
|
connect(): Promise<ReportingPgClient>;
|
|
15
16
|
}
|
|
16
17
|
export declare const REPORTING_LEDGER_MIGRATION: string;
|
|
18
|
+
/** Constraint installed by {@link REPORTING_LEDGER_FINALITY_WRITER_FENCE_MIGRATION}. */
|
|
19
|
+
export declare const REPORTING_LEDGER_FINALITY_FENCE_CONSTRAINT = "adcp_reporting_transitions_finality_recorded";
|
|
20
|
+
/**
|
|
21
|
+
* Cutover migration that fences pre-SDK-14 writers out of the transition log.
|
|
22
|
+
*
|
|
23
|
+
* A pre-SDK-14 writer appends transitions with no `finality`. Each one becomes
|
|
24
|
+
* the latest row, gets its baseline committed as `none`, and can therefore
|
|
25
|
+
* produce another redundant finality-only transition — so "at most one per
|
|
26
|
+
* obligation at upgrade" only holds once no such writer remains. Wall clocks
|
|
27
|
+
* and deploy ordering cannot establish that; a database constraint can.
|
|
28
|
+
*
|
|
29
|
+
* The constraint is added `NOT VALID`, which enforces it for every INSERT and
|
|
30
|
+
* UPDATE while leaving historical rows untouched and unvalidated. Existing
|
|
31
|
+
* finality-less rows keep working — the baseline resolver and
|
|
32
|
+
* `markTransitionNotified` both write `finality` as part of their update, so the
|
|
33
|
+
* new row version satisfies the check.
|
|
34
|
+
*
|
|
35
|
+
* Run it as part of the cutover, **after** legacy writers are drained. A legacy
|
|
36
|
+
* writer that is still running will fail closed on append rather than silently
|
|
37
|
+
* multiply finality-only events, which is the intended trade: loud rejection
|
|
38
|
+
* beats a quietly broken invariant. Idempotent and re-runnable; it takes no lock
|
|
39
|
+
* once installed.
|
|
40
|
+
*/
|
|
41
|
+
export declare const REPORTING_LEDGER_FINALITY_WRITER_FENCE_MIGRATION: string;
|
|
17
42
|
export interface PostgresReportingLedgerStoreOptions {
|
|
18
43
|
/** Assert that the supplied PostgreSQL database/schema is isolated to this deployment. */
|
|
19
44
|
acknowledgeIsolatedDatabase?: boolean;
|
|
@@ -26,6 +51,41 @@ export interface PostgresReportingLedgerStoreOptions {
|
|
|
26
51
|
* the unfiltered read shows.
|
|
27
52
|
*/
|
|
28
53
|
consumerMismatchEscalation?: ReportingConsumerMismatchEscalationV1;
|
|
54
|
+
/** Explicitly opt this Core store into projecting the additive #2944 tables. */
|
|
55
|
+
managedDelivery?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Supplies the principals that owe a receipt for one obligation.
|
|
58
|
+
*
|
|
59
|
+
* Nothing durable in the managed tables enumerates them — destination
|
|
60
|
+
* authorizations and bindings are keyed by
|
|
61
|
+
* `(account_id, destination_ref, generation)` with no consumer dimension — so
|
|
62
|
+
* without this the store can only report who has already submitted, and must
|
|
63
|
+
* stay conservative: a `consumer_receipt` obligation is then never reported
|
|
64
|
+
* reconciled on a lifecycle transition. Wire this to whatever your
|
|
65
|
+
* authorization layer knows and return `complete: true` to get accurate
|
|
66
|
+
* reconciled transitions and webhooks.
|
|
67
|
+
*
|
|
68
|
+
* `complete: true` is taken at your word, and this is the only place in the
|
|
69
|
+
* subsystem where an adopter assertion can mark billing reconciled: a roster
|
|
70
|
+
* omitting a principal that owes a receipt makes that duty vanish from the
|
|
71
|
+
* fold, so the obligation can be persisted and notified reconciled while
|
|
72
|
+
* that principal never accepted. It is invoked outside the store's
|
|
73
|
+
* transaction and under a deadline, so it may do I/O — but it must not be
|
|
74
|
+
* slower than that deadline.
|
|
75
|
+
*/
|
|
76
|
+
obligatedConsumers?: (input: {
|
|
77
|
+
reporting_obligation_id: string;
|
|
78
|
+
account_id: string;
|
|
79
|
+
}) => Promise<{
|
|
80
|
+
ids: readonly string[];
|
|
81
|
+
complete: boolean;
|
|
82
|
+
version?: string;
|
|
83
|
+
}>;
|
|
84
|
+
/**
|
|
85
|
+
* Durable notification/activity port invoked inside the authoritative
|
|
86
|
+
* lifecycle transaction. Its tables must be migrated before transitions run.
|
|
87
|
+
*/
|
|
88
|
+
notificationActivityPort?: ReportingLedgerNotificationActivityPortV1<ReportingLedgerTransactionV1>;
|
|
29
89
|
}
|
|
30
90
|
export declare class ReportingLedgerLeaseLostError extends Error {
|
|
31
91
|
constructor(message?: string);
|
|
@@ -48,6 +108,11 @@ export declare class PostgresReportingLedgerStore implements ReportingLedgerStor
|
|
|
48
108
|
* contradict the summary.
|
|
49
109
|
*/
|
|
50
110
|
readonly consumerMismatchEscalation?: ReportingConsumerMismatchEscalationV1;
|
|
111
|
+
readonly [REPORTING_LEDGER_AUTHORITY]: ReportingLedgerAuthorityV1;
|
|
112
|
+
private readonly managedDelivery;
|
|
113
|
+
private readonly obligatedConsumers;
|
|
114
|
+
readonly transactionalNotificationActivity: boolean;
|
|
115
|
+
private readonly notificationActivityPort?;
|
|
51
116
|
constructor(pool: ReportingPgPool, options?: PostgresReportingLedgerStoreOptions);
|
|
52
117
|
putConfiguration(configuration: ReportingLedgerConfigurationV1): Promise<{
|
|
53
118
|
inserted: boolean;
|
|
@@ -95,22 +160,35 @@ export declare class PostgresReportingLedgerStore implements ReportingLedgerStor
|
|
|
95
160
|
putIssue(issue: ReportingLedgerIssueV1): Promise<void>;
|
|
96
161
|
resolveIssue(issueId: string, resolvedAt: string): Promise<void>;
|
|
97
162
|
listIssues(obligationId: string): Promise<ReportingLedgerIssueV1[]>;
|
|
163
|
+
/**
|
|
164
|
+
* Resolves — and for pre-SDK-14 rows persists — the observed finality baseline
|
|
165
|
+
* of the obligation's latest transition, so the lifecycle decision and this
|
|
166
|
+
* store's compare-and-set read one committed value.
|
|
167
|
+
*/
|
|
168
|
+
resolveTransitionFinalityBaseline(obligationId: string): Promise<ReportingObservedFinalityV1>;
|
|
98
169
|
appendTransition(transition: ReportingLedgerStatusTransitionV1): Promise<{
|
|
99
170
|
inserted: boolean;
|
|
100
171
|
}>;
|
|
172
|
+
private appendTransitionWithinLock;
|
|
101
173
|
applyLifecycleProjection(input: {
|
|
102
174
|
reporting_obligation_id: string;
|
|
103
175
|
expectedRevisionIds: string[];
|
|
104
176
|
expectedPreviousHealth: import('./types.mjs').ReportingHealthV1;
|
|
177
|
+
expectedPreviousFinality?: ReportingObservedFinalityV1;
|
|
105
178
|
expectedObligationState: ReportingLedgerObligationV1['state'];
|
|
106
179
|
expectedAttemptCount: number;
|
|
107
180
|
projectedIssues: ReportingLedgerIssueV1[];
|
|
108
181
|
ledgerAsOf: string;
|
|
109
182
|
transition?: ReportingLedgerStatusTransitionV1;
|
|
183
|
+
expectedManagedStateVersion?: string;
|
|
184
|
+
processedManagedStateVersion?: string;
|
|
185
|
+
processedObligatedConsumerRosterVersion?: string;
|
|
186
|
+
expectedObligatedConsumerRosterVersion?: string;
|
|
110
187
|
}): Promise<{
|
|
111
188
|
applied: boolean;
|
|
112
189
|
transitionInserted: boolean;
|
|
113
190
|
}>;
|
|
191
|
+
private applyLifecycleProjectionWithinLock;
|
|
114
192
|
markTransitionNotified(transitionId: string, notifiedAt: string): Promise<void>;
|
|
115
193
|
listTransitions(obligationId: string): Promise<ReportingLedgerStatusTransitionV1[]>;
|
|
116
194
|
listPendingTransitions(input?: {
|
|
@@ -126,6 +204,88 @@ export declare class PostgresReportingLedgerStore implements ReportingLedgerStor
|
|
|
126
204
|
private listSnapshotRevisions;
|
|
127
205
|
private listSnapshotIssues;
|
|
128
206
|
private listSnapshotAdjustments;
|
|
207
|
+
/**
|
|
208
|
+
* Managed Delivery projection inputs for one obligation, grouped per consumer.
|
|
209
|
+
*
|
|
210
|
+
* The lifecycle reconciler folds these through the same
|
|
211
|
+
* `projectManagedDelivery` the read path uses, so a persisted transition and
|
|
212
|
+
* its webhook report the health a read of the same obligation would return.
|
|
213
|
+
* Returns `null` when Managed Delivery is not installed or the obligation's
|
|
214
|
+
* configuration has no binding, which keeps a Core-only ledger unchanged.
|
|
215
|
+
*/
|
|
216
|
+
getManagedLifecycleProjection(input: {
|
|
217
|
+
reporting_obligation_id: string;
|
|
218
|
+
ledgerAsOf?: string;
|
|
219
|
+
}): Promise<ReportingManagedLifecycleProjectionV1 | null>;
|
|
220
|
+
/**
|
|
221
|
+
* Digest over every managed row that can change this obligation's projected
|
|
222
|
+
* health: materialization status, receipt existence and current-leaf flag,
|
|
223
|
+
* adjustments, and the destination authorization's revocation/cleanup state.
|
|
224
|
+
*
|
|
225
|
+
* `is_current` is included because superseding a receipt flips it with no
|
|
226
|
+
* timestamp of its own, and the authorization's `cleanup_completed_at` is
|
|
227
|
+
* included because `completeRevocation` does not touch `changed_at`.
|
|
228
|
+
*/
|
|
229
|
+
private readManagedStateVersion;
|
|
230
|
+
/**
|
|
231
|
+
* Current external roster version, read outside any transaction so the
|
|
232
|
+
* reconciler can re-check it immediately before an apply.
|
|
233
|
+
*/
|
|
234
|
+
/**
|
|
235
|
+
* Publishes the roster version currently observed for an obligation.
|
|
236
|
+
*
|
|
237
|
+
* The roster is external, so nothing in this database changes when it does.
|
|
238
|
+
* Recording what a reader saw is what lets the due query notice drift from
|
|
239
|
+
* the version last reconciled. Never lowers a watermark; it only reports.
|
|
240
|
+
*/
|
|
241
|
+
recordObligatedConsumerRosterVersion(input: {
|
|
242
|
+
reporting_obligation_id: string;
|
|
243
|
+
version: string;
|
|
244
|
+
}): Promise<void>;
|
|
245
|
+
/**
|
|
246
|
+
* Re-reads the external roster for managed obligations and publishes what
|
|
247
|
+
* it saw, so a change made while nothing was scheduled can re-arm.
|
|
248
|
+
*
|
|
249
|
+
* Ordered by least-recently-refreshed and bounded, so a large account is
|
|
250
|
+
* swept over successive passes rather than in one burst of callbacks.
|
|
251
|
+
*/
|
|
252
|
+
refreshObligatedConsumerRosterVersions(input: {
|
|
253
|
+
account_id?: string;
|
|
254
|
+
limit: number;
|
|
255
|
+
}): Promise<number>;
|
|
256
|
+
/**
|
|
257
|
+
* Records a failed reconcile so the obligation backs off instead of
|
|
258
|
+
* re-occupying the head of every sweep, without ever hiding it: the
|
|
259
|
+
* watermark is untouched, so it stays unresolved work.
|
|
260
|
+
*/
|
|
261
|
+
recordLifecycleFailure(input: {
|
|
262
|
+
reporting_obligation_id: string;
|
|
263
|
+
}): Promise<void>;
|
|
264
|
+
/** Authoritative instant from the database clock, at microsecond precision. */
|
|
265
|
+
readLedgerInstant(): Promise<string>;
|
|
266
|
+
readObligatedConsumerRosterVersion(input: {
|
|
267
|
+
reporting_obligation_id: string;
|
|
268
|
+
}): Promise<string | undefined>;
|
|
269
|
+
/** Principals that have engaged with this obligation, as the projection sees them. */
|
|
270
|
+
private observedConsumerIds;
|
|
271
|
+
private managedDueTablesReadyCache;
|
|
272
|
+
/** Whether the managed schema exists, resolved once per store instance. */
|
|
273
|
+
private managedDueTablesReady;
|
|
274
|
+
/**
|
|
275
|
+
* Terminal receipt subjects whose bodies have been pruned.
|
|
276
|
+
*
|
|
277
|
+
* The projection decides reconciliation from the receipt rows it can see,
|
|
278
|
+
* so once an accepted leaf ages out the subject looks unreconciled again
|
|
279
|
+
* and a settled billing period reopens. The tombstone is the only remaining
|
|
280
|
+
* proof, so the projection has to consult it.
|
|
281
|
+
*/
|
|
282
|
+
private listTombstonedAcceptedSubjects;
|
|
283
|
+
private managedTablesInstalled;
|
|
284
|
+
private listManagedChangedObligationIds;
|
|
285
|
+
private listSnapshotManagedBindings;
|
|
286
|
+
private listSnapshotMaterializations;
|
|
287
|
+
private listSnapshotMaterializationProjection;
|
|
288
|
+
private listSnapshotReceipts;
|
|
129
289
|
private one;
|
|
130
290
|
private putImmutable;
|
|
131
291
|
private accountLockForObligation;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { REPORTING_LEDGER_AUTHORITY } from './types';
|
|
2
|
+
import type { ReportingLedgerConfigurationV1, ReportingLedgerAdjustmentV1, ReportingLedgerConsumerStatusV1, ReportingLedgerIssueV1, ReportingLedgerLeaseV1, ReportingLedgerObligationV1, ReportingLedgerPageV1, ReportingLedgerRevisionV1, ReportingLedgerSnapshotQueryV1, ReportingLedgerSnapshotV1, ReportingLedgerStatusTransitionV1, ReportingLedgerNotificationActivityPortV1, ReportingLedgerTransactionV1, ReportingObservedFinalityV1, ReportingLedgerStore, ReportingConsumerStatusBatchInputV1, ReportingConsumerStatusBatchResultV1, ReportingConsumerStatusReplayInputV1, ReportingLedgerRevisionMetadataV1, ReportingManagedLifecycleProjectionV1, ReportingLedgerAuthorityV1 } from './types';
|
|
2
3
|
import type { ReportingConsumerMismatchEscalationV1 } from './types';
|
|
3
4
|
type QueryResultRow = Record<string, unknown>;
|
|
4
5
|
interface ReportingPgResult<Row extends QueryResultRow> {
|
|
@@ -14,6 +15,30 @@ export interface ReportingPgPool {
|
|
|
14
15
|
connect(): Promise<ReportingPgClient>;
|
|
15
16
|
}
|
|
16
17
|
export declare const REPORTING_LEDGER_MIGRATION: string;
|
|
18
|
+
/** Constraint installed by {@link REPORTING_LEDGER_FINALITY_WRITER_FENCE_MIGRATION}. */
|
|
19
|
+
export declare const REPORTING_LEDGER_FINALITY_FENCE_CONSTRAINT = "adcp_reporting_transitions_finality_recorded";
|
|
20
|
+
/**
|
|
21
|
+
* Cutover migration that fences pre-SDK-14 writers out of the transition log.
|
|
22
|
+
*
|
|
23
|
+
* A pre-SDK-14 writer appends transitions with no `finality`. Each one becomes
|
|
24
|
+
* the latest row, gets its baseline committed as `none`, and can therefore
|
|
25
|
+
* produce another redundant finality-only transition — so "at most one per
|
|
26
|
+
* obligation at upgrade" only holds once no such writer remains. Wall clocks
|
|
27
|
+
* and deploy ordering cannot establish that; a database constraint can.
|
|
28
|
+
*
|
|
29
|
+
* The constraint is added `NOT VALID`, which enforces it for every INSERT and
|
|
30
|
+
* UPDATE while leaving historical rows untouched and unvalidated. Existing
|
|
31
|
+
* finality-less rows keep working — the baseline resolver and
|
|
32
|
+
* `markTransitionNotified` both write `finality` as part of their update, so the
|
|
33
|
+
* new row version satisfies the check.
|
|
34
|
+
*
|
|
35
|
+
* Run it as part of the cutover, **after** legacy writers are drained. A legacy
|
|
36
|
+
* writer that is still running will fail closed on append rather than silently
|
|
37
|
+
* multiply finality-only events, which is the intended trade: loud rejection
|
|
38
|
+
* beats a quietly broken invariant. Idempotent and re-runnable; it takes no lock
|
|
39
|
+
* once installed.
|
|
40
|
+
*/
|
|
41
|
+
export declare const REPORTING_LEDGER_FINALITY_WRITER_FENCE_MIGRATION: string;
|
|
17
42
|
export interface PostgresReportingLedgerStoreOptions {
|
|
18
43
|
/** Assert that the supplied PostgreSQL database/schema is isolated to this deployment. */
|
|
19
44
|
acknowledgeIsolatedDatabase?: boolean;
|
|
@@ -26,6 +51,41 @@ export interface PostgresReportingLedgerStoreOptions {
|
|
|
26
51
|
* the unfiltered read shows.
|
|
27
52
|
*/
|
|
28
53
|
consumerMismatchEscalation?: ReportingConsumerMismatchEscalationV1;
|
|
54
|
+
/** Explicitly opt this Core store into projecting the additive #2944 tables. */
|
|
55
|
+
managedDelivery?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Supplies the principals that owe a receipt for one obligation.
|
|
58
|
+
*
|
|
59
|
+
* Nothing durable in the managed tables enumerates them — destination
|
|
60
|
+
* authorizations and bindings are keyed by
|
|
61
|
+
* `(account_id, destination_ref, generation)` with no consumer dimension — so
|
|
62
|
+
* without this the store can only report who has already submitted, and must
|
|
63
|
+
* stay conservative: a `consumer_receipt` obligation is then never reported
|
|
64
|
+
* reconciled on a lifecycle transition. Wire this to whatever your
|
|
65
|
+
* authorization layer knows and return `complete: true` to get accurate
|
|
66
|
+
* reconciled transitions and webhooks.
|
|
67
|
+
*
|
|
68
|
+
* `complete: true` is taken at your word, and this is the only place in the
|
|
69
|
+
* subsystem where an adopter assertion can mark billing reconciled: a roster
|
|
70
|
+
* omitting a principal that owes a receipt makes that duty vanish from the
|
|
71
|
+
* fold, so the obligation can be persisted and notified reconciled while
|
|
72
|
+
* that principal never accepted. It is invoked outside the store's
|
|
73
|
+
* transaction and under a deadline, so it may do I/O — but it must not be
|
|
74
|
+
* slower than that deadline.
|
|
75
|
+
*/
|
|
76
|
+
obligatedConsumers?: (input: {
|
|
77
|
+
reporting_obligation_id: string;
|
|
78
|
+
account_id: string;
|
|
79
|
+
}) => Promise<{
|
|
80
|
+
ids: readonly string[];
|
|
81
|
+
complete: boolean;
|
|
82
|
+
version?: string;
|
|
83
|
+
}>;
|
|
84
|
+
/**
|
|
85
|
+
* Durable notification/activity port invoked inside the authoritative
|
|
86
|
+
* lifecycle transaction. Its tables must be migrated before transitions run.
|
|
87
|
+
*/
|
|
88
|
+
notificationActivityPort?: ReportingLedgerNotificationActivityPortV1<ReportingLedgerTransactionV1>;
|
|
29
89
|
}
|
|
30
90
|
export declare class ReportingLedgerLeaseLostError extends Error {
|
|
31
91
|
constructor(message?: string);
|
|
@@ -48,6 +108,11 @@ export declare class PostgresReportingLedgerStore implements ReportingLedgerStor
|
|
|
48
108
|
* contradict the summary.
|
|
49
109
|
*/
|
|
50
110
|
readonly consumerMismatchEscalation?: ReportingConsumerMismatchEscalationV1;
|
|
111
|
+
readonly [REPORTING_LEDGER_AUTHORITY]: ReportingLedgerAuthorityV1;
|
|
112
|
+
private readonly managedDelivery;
|
|
113
|
+
private readonly obligatedConsumers;
|
|
114
|
+
readonly transactionalNotificationActivity: boolean;
|
|
115
|
+
private readonly notificationActivityPort?;
|
|
51
116
|
constructor(pool: ReportingPgPool, options?: PostgresReportingLedgerStoreOptions);
|
|
52
117
|
putConfiguration(configuration: ReportingLedgerConfigurationV1): Promise<{
|
|
53
118
|
inserted: boolean;
|
|
@@ -95,22 +160,35 @@ export declare class PostgresReportingLedgerStore implements ReportingLedgerStor
|
|
|
95
160
|
putIssue(issue: ReportingLedgerIssueV1): Promise<void>;
|
|
96
161
|
resolveIssue(issueId: string, resolvedAt: string): Promise<void>;
|
|
97
162
|
listIssues(obligationId: string): Promise<ReportingLedgerIssueV1[]>;
|
|
163
|
+
/**
|
|
164
|
+
* Resolves — and for pre-SDK-14 rows persists — the observed finality baseline
|
|
165
|
+
* of the obligation's latest transition, so the lifecycle decision and this
|
|
166
|
+
* store's compare-and-set read one committed value.
|
|
167
|
+
*/
|
|
168
|
+
resolveTransitionFinalityBaseline(obligationId: string): Promise<ReportingObservedFinalityV1>;
|
|
98
169
|
appendTransition(transition: ReportingLedgerStatusTransitionV1): Promise<{
|
|
99
170
|
inserted: boolean;
|
|
100
171
|
}>;
|
|
172
|
+
private appendTransitionWithinLock;
|
|
101
173
|
applyLifecycleProjection(input: {
|
|
102
174
|
reporting_obligation_id: string;
|
|
103
175
|
expectedRevisionIds: string[];
|
|
104
176
|
expectedPreviousHealth: import('./types').ReportingHealthV1;
|
|
177
|
+
expectedPreviousFinality?: ReportingObservedFinalityV1;
|
|
105
178
|
expectedObligationState: ReportingLedgerObligationV1['state'];
|
|
106
179
|
expectedAttemptCount: number;
|
|
107
180
|
projectedIssues: ReportingLedgerIssueV1[];
|
|
108
181
|
ledgerAsOf: string;
|
|
109
182
|
transition?: ReportingLedgerStatusTransitionV1;
|
|
183
|
+
expectedManagedStateVersion?: string;
|
|
184
|
+
processedManagedStateVersion?: string;
|
|
185
|
+
processedObligatedConsumerRosterVersion?: string;
|
|
186
|
+
expectedObligatedConsumerRosterVersion?: string;
|
|
110
187
|
}): Promise<{
|
|
111
188
|
applied: boolean;
|
|
112
189
|
transitionInserted: boolean;
|
|
113
190
|
}>;
|
|
191
|
+
private applyLifecycleProjectionWithinLock;
|
|
114
192
|
markTransitionNotified(transitionId: string, notifiedAt: string): Promise<void>;
|
|
115
193
|
listTransitions(obligationId: string): Promise<ReportingLedgerStatusTransitionV1[]>;
|
|
116
194
|
listPendingTransitions(input?: {
|
|
@@ -126,6 +204,88 @@ export declare class PostgresReportingLedgerStore implements ReportingLedgerStor
|
|
|
126
204
|
private listSnapshotRevisions;
|
|
127
205
|
private listSnapshotIssues;
|
|
128
206
|
private listSnapshotAdjustments;
|
|
207
|
+
/**
|
|
208
|
+
* Managed Delivery projection inputs for one obligation, grouped per consumer.
|
|
209
|
+
*
|
|
210
|
+
* The lifecycle reconciler folds these through the same
|
|
211
|
+
* `projectManagedDelivery` the read path uses, so a persisted transition and
|
|
212
|
+
* its webhook report the health a read of the same obligation would return.
|
|
213
|
+
* Returns `null` when Managed Delivery is not installed or the obligation's
|
|
214
|
+
* configuration has no binding, which keeps a Core-only ledger unchanged.
|
|
215
|
+
*/
|
|
216
|
+
getManagedLifecycleProjection(input: {
|
|
217
|
+
reporting_obligation_id: string;
|
|
218
|
+
ledgerAsOf?: string;
|
|
219
|
+
}): Promise<ReportingManagedLifecycleProjectionV1 | null>;
|
|
220
|
+
/**
|
|
221
|
+
* Digest over every managed row that can change this obligation's projected
|
|
222
|
+
* health: materialization status, receipt existence and current-leaf flag,
|
|
223
|
+
* adjustments, and the destination authorization's revocation/cleanup state.
|
|
224
|
+
*
|
|
225
|
+
* `is_current` is included because superseding a receipt flips it with no
|
|
226
|
+
* timestamp of its own, and the authorization's `cleanup_completed_at` is
|
|
227
|
+
* included because `completeRevocation` does not touch `changed_at`.
|
|
228
|
+
*/
|
|
229
|
+
private readManagedStateVersion;
|
|
230
|
+
/**
|
|
231
|
+
* Current external roster version, read outside any transaction so the
|
|
232
|
+
* reconciler can re-check it immediately before an apply.
|
|
233
|
+
*/
|
|
234
|
+
/**
|
|
235
|
+
* Publishes the roster version currently observed for an obligation.
|
|
236
|
+
*
|
|
237
|
+
* The roster is external, so nothing in this database changes when it does.
|
|
238
|
+
* Recording what a reader saw is what lets the due query notice drift from
|
|
239
|
+
* the version last reconciled. Never lowers a watermark; it only reports.
|
|
240
|
+
*/
|
|
241
|
+
recordObligatedConsumerRosterVersion(input: {
|
|
242
|
+
reporting_obligation_id: string;
|
|
243
|
+
version: string;
|
|
244
|
+
}): Promise<void>;
|
|
245
|
+
/**
|
|
246
|
+
* Re-reads the external roster for managed obligations and publishes what
|
|
247
|
+
* it saw, so a change made while nothing was scheduled can re-arm.
|
|
248
|
+
*
|
|
249
|
+
* Ordered by least-recently-refreshed and bounded, so a large account is
|
|
250
|
+
* swept over successive passes rather than in one burst of callbacks.
|
|
251
|
+
*/
|
|
252
|
+
refreshObligatedConsumerRosterVersions(input: {
|
|
253
|
+
account_id?: string;
|
|
254
|
+
limit: number;
|
|
255
|
+
}): Promise<number>;
|
|
256
|
+
/**
|
|
257
|
+
* Records a failed reconcile so the obligation backs off instead of
|
|
258
|
+
* re-occupying the head of every sweep, without ever hiding it: the
|
|
259
|
+
* watermark is untouched, so it stays unresolved work.
|
|
260
|
+
*/
|
|
261
|
+
recordLifecycleFailure(input: {
|
|
262
|
+
reporting_obligation_id: string;
|
|
263
|
+
}): Promise<void>;
|
|
264
|
+
/** Authoritative instant from the database clock, at microsecond precision. */
|
|
265
|
+
readLedgerInstant(): Promise<string>;
|
|
266
|
+
readObligatedConsumerRosterVersion(input: {
|
|
267
|
+
reporting_obligation_id: string;
|
|
268
|
+
}): Promise<string | undefined>;
|
|
269
|
+
/** Principals that have engaged with this obligation, as the projection sees them. */
|
|
270
|
+
private observedConsumerIds;
|
|
271
|
+
private managedDueTablesReadyCache;
|
|
272
|
+
/** Whether the managed schema exists, resolved once per store instance. */
|
|
273
|
+
private managedDueTablesReady;
|
|
274
|
+
/**
|
|
275
|
+
* Terminal receipt subjects whose bodies have been pruned.
|
|
276
|
+
*
|
|
277
|
+
* The projection decides reconciliation from the receipt rows it can see,
|
|
278
|
+
* so once an accepted leaf ages out the subject looks unreconciled again
|
|
279
|
+
* and a settled billing period reopens. The tombstone is the only remaining
|
|
280
|
+
* proof, so the projection has to consult it.
|
|
281
|
+
*/
|
|
282
|
+
private listTombstonedAcceptedSubjects;
|
|
283
|
+
private managedTablesInstalled;
|
|
284
|
+
private listManagedChangedObligationIds;
|
|
285
|
+
private listSnapshotManagedBindings;
|
|
286
|
+
private listSnapshotMaterializations;
|
|
287
|
+
private listSnapshotMaterializationProjection;
|
|
288
|
+
private listSnapshotReceipts;
|
|
129
289
|
private one;
|
|
130
290
|
private putImmutable;
|
|
131
291
|
private accountLockForObligation;
|