@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
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import type { NotificationDeliveryAttemptCheckpointInput, PersistentNotificationRuntime } from '../../server/notification-subscriptions/index.mjs';
|
|
2
|
+
import type { WebhookAttemptSuppressionReason } from '../../server/webhook-emitter.mjs';
|
|
3
|
+
import type { ReportingHealthV1, ReportingLedgerNotificationActivityPortV1, ReportingLedgerObligationV1, ReportingLedgerTransactionV1, ReportingObservedFinalityV1 } from './types.mjs';
|
|
4
|
+
export interface ReportingAccountActivityV1 {
|
|
5
|
+
activityId: string;
|
|
6
|
+
transitionId: string;
|
|
7
|
+
activityType: 'reporting.lifecycle_changed';
|
|
8
|
+
notificationType?: 'reporting.status_changed';
|
|
9
|
+
tenantId: string;
|
|
10
|
+
accountId: string;
|
|
11
|
+
reporting_obligation_id: string;
|
|
12
|
+
previousHealth: ReportingHealthV1;
|
|
13
|
+
health: ReportingHealthV1;
|
|
14
|
+
previousFinality: ReportingObservedFinalityV1;
|
|
15
|
+
finality: ReportingObservedFinalityV1;
|
|
16
|
+
issueIds: string[];
|
|
17
|
+
occurredAt: string;
|
|
18
|
+
correlation: {
|
|
19
|
+
delivery_config_id: string;
|
|
20
|
+
delivery_config_version: number;
|
|
21
|
+
report_definition_id: string;
|
|
22
|
+
feed_purpose: ReportingLedgerObligationV1['feedPurpose'];
|
|
23
|
+
period: {
|
|
24
|
+
start: string;
|
|
25
|
+
end: string;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export interface ReportingAccountActivityRecordV1 extends ReportingAccountActivityV1 {
|
|
30
|
+
recordedAt: string;
|
|
31
|
+
notificationProjectedAt?: string;
|
|
32
|
+
/** Set when the claim was bounded out of the pending set without delivering. */
|
|
33
|
+
notificationAbandonedAt?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface ReportingAccountActivityPageV1 {
|
|
36
|
+
activities: ReportingAccountActivityRecordV1[];
|
|
37
|
+
hasMore: boolean;
|
|
38
|
+
nextCursor?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface ReportingNotificationRecoveryMetricsV1 {
|
|
41
|
+
claimed: number;
|
|
42
|
+
matched: number;
|
|
43
|
+
projected: number;
|
|
44
|
+
retried: number;
|
|
45
|
+
leaseLost: number;
|
|
46
|
+
/** Claims bounded out of the pending set after `maxAttempts`; never delivered. */
|
|
47
|
+
abandoned: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Raised when live delivery authority failed closed for an operational reason
|
|
51
|
+
* rather than a deliberate one. The claim is released and retried; the activity
|
|
52
|
+
* is never projected as delivered.
|
|
53
|
+
*/
|
|
54
|
+
export declare class ReportingNotificationRetryableSuppressionError extends Error {
|
|
55
|
+
readonly reason: WebhookAttemptSuppressionReason;
|
|
56
|
+
readonly name = "ReportingNotificationRetryableSuppressionError";
|
|
57
|
+
constructor(reason: WebhookAttemptSuppressionReason);
|
|
58
|
+
}
|
|
59
|
+
export interface ReportingNotificationProjectionErrorV1 {
|
|
60
|
+
transitionId: string;
|
|
61
|
+
tenantId: string;
|
|
62
|
+
accountId: string;
|
|
63
|
+
attemptCount: number;
|
|
64
|
+
}
|
|
65
|
+
export interface PostgresReportingNotificationActivityOptions {
|
|
66
|
+
db: ReportingLedgerTransactionV1;
|
|
67
|
+
/**
|
|
68
|
+
* Notification port. A custom `{ emit }` must also set
|
|
69
|
+
* `hasDeliveryAttemptCheckpoint: true`, which asserts that it forwards the
|
|
70
|
+
* event it is handed to a runtime that runs the durable pre-POST checkpoint.
|
|
71
|
+
*/
|
|
72
|
+
notifications: Pick<PersistentNotificationRuntime, 'emit'> & Partial<Pick<PersistentNotificationRuntime, 'hasDeliveryAttemptCheckpoint' | 'deliveryAttemptCheckpoint'>>;
|
|
73
|
+
/** Stable deployment namespace. Defaults to `adcp-reporting`. */
|
|
74
|
+
namespace?: string;
|
|
75
|
+
/** Assert that the supplied database/schema is isolated to this deployment. */
|
|
76
|
+
acknowledgeIsolatedDatabase?: boolean;
|
|
77
|
+
/** Defaults to `adcp_reporting_notification_activity`. */
|
|
78
|
+
tableName?: string;
|
|
79
|
+
/**
|
|
80
|
+
* Pure trusted mapping from the authoritative internal ledger account to a
|
|
81
|
+
* tenant. It runs while the ledger transaction is open and must not perform
|
|
82
|
+
* I/O or consult caller-controlled transition data.
|
|
83
|
+
*/
|
|
84
|
+
tenantScopeForAccount(accountId: string): string;
|
|
85
|
+
/** Retention for projected operator activity. Defaults to 90 days. */
|
|
86
|
+
retentionMs?: number;
|
|
87
|
+
/** Atomic pending-intent backpressure per tenant. Defaults to 100,000. */
|
|
88
|
+
maxPendingPerTenant?: number;
|
|
89
|
+
/**
|
|
90
|
+
* Acknowledge a notification port that cannot prove it runs the durable
|
|
91
|
+
* pre-POST checkpoint. Without it a crash plus a destination replacement
|
|
92
|
+
* re-addresses the same notification under a second generation and a second
|
|
93
|
+
* idempotency key, so this is refused by default and exists only for tests
|
|
94
|
+
* that deliberately demonstrate that hazard.
|
|
95
|
+
*/
|
|
96
|
+
acknowledgeMissingAttemptCheckpoint?: boolean;
|
|
97
|
+
/**
|
|
98
|
+
* The very checkpoint wired into the notification runtime.
|
|
99
|
+
*
|
|
100
|
+
* Required, because the checkpoint writes to a `(queryable, namespace,
|
|
101
|
+
* table)` triple of its own and a mismatch is otherwise undetectable at
|
|
102
|
+
* runtime: its update would match no row, every attempt would be suppressed
|
|
103
|
+
* as retryable, the delivery binding would eventually retire, the recipient
|
|
104
|
+
* would settle terminal and the activity would project — losing the
|
|
105
|
+
* notification silently. Passing the same object lets that be refused at
|
|
106
|
+
* construction instead.
|
|
107
|
+
*/
|
|
108
|
+
attemptCheckpoint?: ReportingNotificationAttemptCheckpointV1;
|
|
109
|
+
/**
|
|
110
|
+
* Largest recipient fanout whose frozen intent this runtime will store.
|
|
111
|
+
*
|
|
112
|
+
* Must be **at least** the notification runtime's `maxFanoutCandidates`, plus
|
|
113
|
+
* headroom for the distinct subscribers one notification can accumulate as
|
|
114
|
+
* destinations churn. Defaults to 10,000 — the ceiling that runtime enforces
|
|
115
|
+
* on `maxFanoutCandidates` — so the default can never be exceeded by a valid
|
|
116
|
+
* fanout. Setting it *below* `maxFanoutCandidates` is a misconfiguration: a
|
|
117
|
+
* legitimate fanout then cannot be committed and the claim retries until
|
|
118
|
+
* `maxAttempts` abandons it.
|
|
119
|
+
*/
|
|
120
|
+
maxRecipients?: number;
|
|
121
|
+
/**
|
|
122
|
+
* Total recipient rows one notification may retain: the current fanout plus
|
|
123
|
+
* the pinned identities of subscribers that were addressed and then replaced
|
|
124
|
+
* or removed.
|
|
125
|
+
*
|
|
126
|
+
* Separate from `maxRecipients` because they bound different things. A
|
|
127
|
+
* maximum fanout of 10,000 that also has one former subscriber pinned needs
|
|
128
|
+
* 10,001 rows, which a single bound capped at the fanout ceiling could never
|
|
129
|
+
* express — the claim would be unsatisfiable and abandon undelivered.
|
|
130
|
+
* Defaults to twice `maxRecipients`, and must be at least `maxRecipients`.
|
|
131
|
+
*/
|
|
132
|
+
maxRetainedRecipients?: number;
|
|
133
|
+
/**
|
|
134
|
+
* Attempts after which a claim that keeps failing is abandoned rather than
|
|
135
|
+
* retried forever. Defaults to 100.
|
|
136
|
+
*
|
|
137
|
+
* Without a bound, a claim that can never succeed — an over-fanout
|
|
138
|
+
* configuration, a permanently unreachable dependency — stays pending
|
|
139
|
+
* indefinitely, and enough of them reach `maxPendingPerTenant` and start
|
|
140
|
+
* refusing new activity writes for the whole tenant. An abandoned claim stops
|
|
141
|
+
* consuming that capacity while staying visible for operators; it is never
|
|
142
|
+
* recorded as delivered.
|
|
143
|
+
*/
|
|
144
|
+
maxAttempts?: number;
|
|
145
|
+
}
|
|
146
|
+
export interface PostgresReportingNotificationActivityRuntime {
|
|
147
|
+
readonly port: ReportingLedgerNotificationActivityPortV1<ReportingLedgerTransactionV1>;
|
|
148
|
+
readonly migrations: {
|
|
149
|
+
activity: string;
|
|
150
|
+
all: readonly string[];
|
|
151
|
+
};
|
|
152
|
+
probe(): Promise<void>;
|
|
153
|
+
recoverOnce(options?: {
|
|
154
|
+
ownerToken?: string;
|
|
155
|
+
leaseMs?: number;
|
|
156
|
+
limit?: number;
|
|
157
|
+
retryAfterMs?: number;
|
|
158
|
+
/** Operational observer; hook failures never change durable lease semantics. */
|
|
159
|
+
onError?: (error: unknown, claim: Readonly<ReportingNotificationProjectionErrorV1>) => void | Promise<void>;
|
|
160
|
+
}): Promise<ReportingNotificationRecoveryMetricsV1>;
|
|
161
|
+
listActivity(input: {
|
|
162
|
+
/** Trusted authenticated scope; never copy these values from an event payload. */
|
|
163
|
+
tenantId: string;
|
|
164
|
+
accountId: string;
|
|
165
|
+
cursor?: string;
|
|
166
|
+
limit?: number;
|
|
167
|
+
}): Promise<ReportingAccountActivityPageV1>;
|
|
168
|
+
pruneProjected(options?: {
|
|
169
|
+
limit?: number;
|
|
170
|
+
}): Promise<number>;
|
|
171
|
+
}
|
|
172
|
+
export declare function getReportingNotificationActivityMigration(options?: {
|
|
173
|
+
tableName?: string;
|
|
174
|
+
}): string;
|
|
175
|
+
/** Child table holding one row per frozen recipient. */
|
|
176
|
+
export declare function recipientTableName(tableName?: string): string;
|
|
177
|
+
export declare const REPORTING_NOTIFICATION_ACTIVITY_MIGRATION: string;
|
|
178
|
+
/**
|
|
179
|
+
* Builds the durable pre-POST attempt checkpoint for the reporting activity
|
|
180
|
+
* recipient table.
|
|
181
|
+
*
|
|
182
|
+
* Pass the result to `createPostgresPersistentNotificationRuntime`'s
|
|
183
|
+
* `checkpointDeliveryAttempt`. It is a standalone factory rather than a method
|
|
184
|
+
* on the activity runtime so it can be constructed before the notification
|
|
185
|
+
* runtime it has to be wired into, and it is keyed purely on the durable attempt
|
|
186
|
+
* context so a recovered outbox attempt — the path most likely to produce an
|
|
187
|
+
* ambiguous send — records the same checkpoint as the original emission.
|
|
188
|
+
*
|
|
189
|
+
* The write is monotonic and idempotent and deliberately takes no recovery
|
|
190
|
+
* lease: a checkpoint only ever makes a recipient less revisable, which is the
|
|
191
|
+
* safe direction, and an outbox worker legitimately holds no activity lease.
|
|
192
|
+
*/
|
|
193
|
+
/** Durable store a checkpoint is bound to, so a mismatched pairing cannot be silent. */
|
|
194
|
+
export interface ReportingNotificationAttemptCheckpointV1 {
|
|
195
|
+
(input: Readonly<NotificationDeliveryAttemptCheckpointInput>): Promise<void>;
|
|
196
|
+
/**
|
|
197
|
+
* Exact `(queryable, namespace, table)` this checkpoint writes to. Present on
|
|
198
|
+
* anything this module builds; absent on an adopter's own forwarder, which is
|
|
199
|
+
* then only acceptable when the runtime it is wired into exposes the
|
|
200
|
+
* checkpoint it invokes so identity can be compared directly.
|
|
201
|
+
*/
|
|
202
|
+
readonly activityStore?: Readonly<{
|
|
203
|
+
db: ReportingLedgerTransactionV1;
|
|
204
|
+
namespace: string;
|
|
205
|
+
tableName: string;
|
|
206
|
+
}>;
|
|
207
|
+
}
|
|
208
|
+
export declare function createPostgresReportingNotificationAttemptCheckpoint(options: {
|
|
209
|
+
db: ReportingLedgerTransactionV1;
|
|
210
|
+
namespace?: string;
|
|
211
|
+
tableName?: string;
|
|
212
|
+
/**
|
|
213
|
+
* Additional event types this checkpoint owns, on top of the mandatory
|
|
214
|
+
* `reporting.status_changed`. Anything it does not own is another
|
|
215
|
+
* subsystem's notification and is passed through untouched — the runtime hook
|
|
216
|
+
* is global, and failing closed on an event that was never frozen here would
|
|
217
|
+
* suppress every attempt of that event until its retry horizon expired. This
|
|
218
|
+
* extends the owned set; it can never remove the reporting event.
|
|
219
|
+
*/
|
|
220
|
+
eventTypes?: readonly string[];
|
|
221
|
+
}): ReportingNotificationAttemptCheckpointV1;
|
|
222
|
+
export declare function createPostgresReportingNotificationActivityRuntime(options: PostgresReportingNotificationActivityOptions): PostgresReportingNotificationActivityRuntime;
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import type { NotificationDeliveryAttemptCheckpointInput, PersistentNotificationRuntime } from '../../server/notification-subscriptions';
|
|
2
|
+
import type { WebhookAttemptSuppressionReason } from '../../server/webhook-emitter';
|
|
3
|
+
import type { ReportingHealthV1, ReportingLedgerNotificationActivityPortV1, ReportingLedgerObligationV1, ReportingLedgerTransactionV1, ReportingObservedFinalityV1 } from './types';
|
|
4
|
+
export interface ReportingAccountActivityV1 {
|
|
5
|
+
activityId: string;
|
|
6
|
+
transitionId: string;
|
|
7
|
+
activityType: 'reporting.lifecycle_changed';
|
|
8
|
+
notificationType?: 'reporting.status_changed';
|
|
9
|
+
tenantId: string;
|
|
10
|
+
accountId: string;
|
|
11
|
+
reporting_obligation_id: string;
|
|
12
|
+
previousHealth: ReportingHealthV1;
|
|
13
|
+
health: ReportingHealthV1;
|
|
14
|
+
previousFinality: ReportingObservedFinalityV1;
|
|
15
|
+
finality: ReportingObservedFinalityV1;
|
|
16
|
+
issueIds: string[];
|
|
17
|
+
occurredAt: string;
|
|
18
|
+
correlation: {
|
|
19
|
+
delivery_config_id: string;
|
|
20
|
+
delivery_config_version: number;
|
|
21
|
+
report_definition_id: string;
|
|
22
|
+
feed_purpose: ReportingLedgerObligationV1['feedPurpose'];
|
|
23
|
+
period: {
|
|
24
|
+
start: string;
|
|
25
|
+
end: string;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export interface ReportingAccountActivityRecordV1 extends ReportingAccountActivityV1 {
|
|
30
|
+
recordedAt: string;
|
|
31
|
+
notificationProjectedAt?: string;
|
|
32
|
+
/** Set when the claim was bounded out of the pending set without delivering. */
|
|
33
|
+
notificationAbandonedAt?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface ReportingAccountActivityPageV1 {
|
|
36
|
+
activities: ReportingAccountActivityRecordV1[];
|
|
37
|
+
hasMore: boolean;
|
|
38
|
+
nextCursor?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface ReportingNotificationRecoveryMetricsV1 {
|
|
41
|
+
claimed: number;
|
|
42
|
+
matched: number;
|
|
43
|
+
projected: number;
|
|
44
|
+
retried: number;
|
|
45
|
+
leaseLost: number;
|
|
46
|
+
/** Claims bounded out of the pending set after `maxAttempts`; never delivered. */
|
|
47
|
+
abandoned: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Raised when live delivery authority failed closed for an operational reason
|
|
51
|
+
* rather than a deliberate one. The claim is released and retried; the activity
|
|
52
|
+
* is never projected as delivered.
|
|
53
|
+
*/
|
|
54
|
+
export declare class ReportingNotificationRetryableSuppressionError extends Error {
|
|
55
|
+
readonly reason: WebhookAttemptSuppressionReason;
|
|
56
|
+
readonly name = "ReportingNotificationRetryableSuppressionError";
|
|
57
|
+
constructor(reason: WebhookAttemptSuppressionReason);
|
|
58
|
+
}
|
|
59
|
+
export interface ReportingNotificationProjectionErrorV1 {
|
|
60
|
+
transitionId: string;
|
|
61
|
+
tenantId: string;
|
|
62
|
+
accountId: string;
|
|
63
|
+
attemptCount: number;
|
|
64
|
+
}
|
|
65
|
+
export interface PostgresReportingNotificationActivityOptions {
|
|
66
|
+
db: ReportingLedgerTransactionV1;
|
|
67
|
+
/**
|
|
68
|
+
* Notification port. A custom `{ emit }` must also set
|
|
69
|
+
* `hasDeliveryAttemptCheckpoint: true`, which asserts that it forwards the
|
|
70
|
+
* event it is handed to a runtime that runs the durable pre-POST checkpoint.
|
|
71
|
+
*/
|
|
72
|
+
notifications: Pick<PersistentNotificationRuntime, 'emit'> & Partial<Pick<PersistentNotificationRuntime, 'hasDeliveryAttemptCheckpoint' | 'deliveryAttemptCheckpoint'>>;
|
|
73
|
+
/** Stable deployment namespace. Defaults to `adcp-reporting`. */
|
|
74
|
+
namespace?: string;
|
|
75
|
+
/** Assert that the supplied database/schema is isolated to this deployment. */
|
|
76
|
+
acknowledgeIsolatedDatabase?: boolean;
|
|
77
|
+
/** Defaults to `adcp_reporting_notification_activity`. */
|
|
78
|
+
tableName?: string;
|
|
79
|
+
/**
|
|
80
|
+
* Pure trusted mapping from the authoritative internal ledger account to a
|
|
81
|
+
* tenant. It runs while the ledger transaction is open and must not perform
|
|
82
|
+
* I/O or consult caller-controlled transition data.
|
|
83
|
+
*/
|
|
84
|
+
tenantScopeForAccount(accountId: string): string;
|
|
85
|
+
/** Retention for projected operator activity. Defaults to 90 days. */
|
|
86
|
+
retentionMs?: number;
|
|
87
|
+
/** Atomic pending-intent backpressure per tenant. Defaults to 100,000. */
|
|
88
|
+
maxPendingPerTenant?: number;
|
|
89
|
+
/**
|
|
90
|
+
* Acknowledge a notification port that cannot prove it runs the durable
|
|
91
|
+
* pre-POST checkpoint. Without it a crash plus a destination replacement
|
|
92
|
+
* re-addresses the same notification under a second generation and a second
|
|
93
|
+
* idempotency key, so this is refused by default and exists only for tests
|
|
94
|
+
* that deliberately demonstrate that hazard.
|
|
95
|
+
*/
|
|
96
|
+
acknowledgeMissingAttemptCheckpoint?: boolean;
|
|
97
|
+
/**
|
|
98
|
+
* The very checkpoint wired into the notification runtime.
|
|
99
|
+
*
|
|
100
|
+
* Required, because the checkpoint writes to a `(queryable, namespace,
|
|
101
|
+
* table)` triple of its own and a mismatch is otherwise undetectable at
|
|
102
|
+
* runtime: its update would match no row, every attempt would be suppressed
|
|
103
|
+
* as retryable, the delivery binding would eventually retire, the recipient
|
|
104
|
+
* would settle terminal and the activity would project — losing the
|
|
105
|
+
* notification silently. Passing the same object lets that be refused at
|
|
106
|
+
* construction instead.
|
|
107
|
+
*/
|
|
108
|
+
attemptCheckpoint?: ReportingNotificationAttemptCheckpointV1;
|
|
109
|
+
/**
|
|
110
|
+
* Largest recipient fanout whose frozen intent this runtime will store.
|
|
111
|
+
*
|
|
112
|
+
* Must be **at least** the notification runtime's `maxFanoutCandidates`, plus
|
|
113
|
+
* headroom for the distinct subscribers one notification can accumulate as
|
|
114
|
+
* destinations churn. Defaults to 10,000 — the ceiling that runtime enforces
|
|
115
|
+
* on `maxFanoutCandidates` — so the default can never be exceeded by a valid
|
|
116
|
+
* fanout. Setting it *below* `maxFanoutCandidates` is a misconfiguration: a
|
|
117
|
+
* legitimate fanout then cannot be committed and the claim retries until
|
|
118
|
+
* `maxAttempts` abandons it.
|
|
119
|
+
*/
|
|
120
|
+
maxRecipients?: number;
|
|
121
|
+
/**
|
|
122
|
+
* Total recipient rows one notification may retain: the current fanout plus
|
|
123
|
+
* the pinned identities of subscribers that were addressed and then replaced
|
|
124
|
+
* or removed.
|
|
125
|
+
*
|
|
126
|
+
* Separate from `maxRecipients` because they bound different things. A
|
|
127
|
+
* maximum fanout of 10,000 that also has one former subscriber pinned needs
|
|
128
|
+
* 10,001 rows, which a single bound capped at the fanout ceiling could never
|
|
129
|
+
* express — the claim would be unsatisfiable and abandon undelivered.
|
|
130
|
+
* Defaults to twice `maxRecipients`, and must be at least `maxRecipients`.
|
|
131
|
+
*/
|
|
132
|
+
maxRetainedRecipients?: number;
|
|
133
|
+
/**
|
|
134
|
+
* Attempts after which a claim that keeps failing is abandoned rather than
|
|
135
|
+
* retried forever. Defaults to 100.
|
|
136
|
+
*
|
|
137
|
+
* Without a bound, a claim that can never succeed — an over-fanout
|
|
138
|
+
* configuration, a permanently unreachable dependency — stays pending
|
|
139
|
+
* indefinitely, and enough of them reach `maxPendingPerTenant` and start
|
|
140
|
+
* refusing new activity writes for the whole tenant. An abandoned claim stops
|
|
141
|
+
* consuming that capacity while staying visible for operators; it is never
|
|
142
|
+
* recorded as delivered.
|
|
143
|
+
*/
|
|
144
|
+
maxAttempts?: number;
|
|
145
|
+
}
|
|
146
|
+
export interface PostgresReportingNotificationActivityRuntime {
|
|
147
|
+
readonly port: ReportingLedgerNotificationActivityPortV1<ReportingLedgerTransactionV1>;
|
|
148
|
+
readonly migrations: {
|
|
149
|
+
activity: string;
|
|
150
|
+
all: readonly string[];
|
|
151
|
+
};
|
|
152
|
+
probe(): Promise<void>;
|
|
153
|
+
recoverOnce(options?: {
|
|
154
|
+
ownerToken?: string;
|
|
155
|
+
leaseMs?: number;
|
|
156
|
+
limit?: number;
|
|
157
|
+
retryAfterMs?: number;
|
|
158
|
+
/** Operational observer; hook failures never change durable lease semantics. */
|
|
159
|
+
onError?: (error: unknown, claim: Readonly<ReportingNotificationProjectionErrorV1>) => void | Promise<void>;
|
|
160
|
+
}): Promise<ReportingNotificationRecoveryMetricsV1>;
|
|
161
|
+
listActivity(input: {
|
|
162
|
+
/** Trusted authenticated scope; never copy these values from an event payload. */
|
|
163
|
+
tenantId: string;
|
|
164
|
+
accountId: string;
|
|
165
|
+
cursor?: string;
|
|
166
|
+
limit?: number;
|
|
167
|
+
}): Promise<ReportingAccountActivityPageV1>;
|
|
168
|
+
pruneProjected(options?: {
|
|
169
|
+
limit?: number;
|
|
170
|
+
}): Promise<number>;
|
|
171
|
+
}
|
|
172
|
+
export declare function getReportingNotificationActivityMigration(options?: {
|
|
173
|
+
tableName?: string;
|
|
174
|
+
}): string;
|
|
175
|
+
/** Child table holding one row per frozen recipient. */
|
|
176
|
+
export declare function recipientTableName(tableName?: string): string;
|
|
177
|
+
export declare const REPORTING_NOTIFICATION_ACTIVITY_MIGRATION: string;
|
|
178
|
+
/**
|
|
179
|
+
* Builds the durable pre-POST attempt checkpoint for the reporting activity
|
|
180
|
+
* recipient table.
|
|
181
|
+
*
|
|
182
|
+
* Pass the result to `createPostgresPersistentNotificationRuntime`'s
|
|
183
|
+
* `checkpointDeliveryAttempt`. It is a standalone factory rather than a method
|
|
184
|
+
* on the activity runtime so it can be constructed before the notification
|
|
185
|
+
* runtime it has to be wired into, and it is keyed purely on the durable attempt
|
|
186
|
+
* context so a recovered outbox attempt — the path most likely to produce an
|
|
187
|
+
* ambiguous send — records the same checkpoint as the original emission.
|
|
188
|
+
*
|
|
189
|
+
* The write is monotonic and idempotent and deliberately takes no recovery
|
|
190
|
+
* lease: a checkpoint only ever makes a recipient less revisable, which is the
|
|
191
|
+
* safe direction, and an outbox worker legitimately holds no activity lease.
|
|
192
|
+
*/
|
|
193
|
+
/** Durable store a checkpoint is bound to, so a mismatched pairing cannot be silent. */
|
|
194
|
+
export interface ReportingNotificationAttemptCheckpointV1 {
|
|
195
|
+
(input: Readonly<NotificationDeliveryAttemptCheckpointInput>): Promise<void>;
|
|
196
|
+
/**
|
|
197
|
+
* Exact `(queryable, namespace, table)` this checkpoint writes to. Present on
|
|
198
|
+
* anything this module builds; absent on an adopter's own forwarder, which is
|
|
199
|
+
* then only acceptable when the runtime it is wired into exposes the
|
|
200
|
+
* checkpoint it invokes so identity can be compared directly.
|
|
201
|
+
*/
|
|
202
|
+
readonly activityStore?: Readonly<{
|
|
203
|
+
db: ReportingLedgerTransactionV1;
|
|
204
|
+
namespace: string;
|
|
205
|
+
tableName: string;
|
|
206
|
+
}>;
|
|
207
|
+
}
|
|
208
|
+
export declare function createPostgresReportingNotificationAttemptCheckpoint(options: {
|
|
209
|
+
db: ReportingLedgerTransactionV1;
|
|
210
|
+
namespace?: string;
|
|
211
|
+
tableName?: string;
|
|
212
|
+
/**
|
|
213
|
+
* Additional event types this checkpoint owns, on top of the mandatory
|
|
214
|
+
* `reporting.status_changed`. Anything it does not own is another
|
|
215
|
+
* subsystem's notification and is passed through untouched — the runtime hook
|
|
216
|
+
* is global, and failing closed on an event that was never frozen here would
|
|
217
|
+
* suppress every attempt of that event until its retry horizon expired. This
|
|
218
|
+
* extends the owned set; it can never remove the reporting event.
|
|
219
|
+
*/
|
|
220
|
+
eventTypes?: readonly string[];
|
|
221
|
+
}): ReportingNotificationAttemptCheckpointV1;
|
|
222
|
+
export declare function createPostgresReportingNotificationActivityRuntime(options: PostgresReportingNotificationActivityOptions): PostgresReportingNotificationActivityRuntime;
|