@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,35 @@
|
|
|
1
|
+
import { type ReportingSourceManifestV1, type ReportingSourceSliceRequestV1 } from '../source/index.mjs';
|
|
2
|
+
import type { ReliableReportingAdapterV1, ReliableReportingConfigurationInputV1, ReliableReportingInstallContextV1, ReliableReportingServiceV1 } from './index.mjs';
|
|
3
|
+
export interface ReliableReportingServiceConformanceOptionsV1<TCtxMeta = Record<string, unknown>> {
|
|
4
|
+
service: ReliableReportingServiceV1<TCtxMeta>;
|
|
5
|
+
adapter: ReliableReportingAdapterV1;
|
|
6
|
+
replayRequest: ReportingSourceSliceRequestV1;
|
|
7
|
+
primary: {
|
|
8
|
+
context: ReliableReportingInstallContextV1<TCtxMeta>;
|
|
9
|
+
configuration: ReliableReportingConfigurationInputV1 & {
|
|
10
|
+
expectedCurrency: string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
isolated: {
|
|
14
|
+
context: ReliableReportingInstallContextV1<TCtxMeta>;
|
|
15
|
+
configuration: ReliableReportingConfigurationInputV1 & {
|
|
16
|
+
expectedCurrency: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export interface ReliableReportingServiceConformanceResultV1 {
|
|
21
|
+
checks: readonly [
|
|
22
|
+
'adapter_replay',
|
|
23
|
+
'account_isolation',
|
|
24
|
+
'frozen_currency',
|
|
25
|
+
'lifecycle_start_stop',
|
|
26
|
+
'capability_truthfulness'
|
|
27
|
+
];
|
|
28
|
+
manifest: ReportingSourceManifestV1;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Exercise the invariants every Core installation must preserve. Use an
|
|
32
|
+
* isolated conformance ledger: the helper intentionally installs two durable
|
|
33
|
+
* configurations and starts the lifecycle once.
|
|
34
|
+
*/
|
|
35
|
+
export declare function runReliableReportingServiceConformanceV1<TCtxMeta = Record<string, unknown>>(options: ReliableReportingServiceConformanceOptionsV1<TCtxMeta>): Promise<ReliableReportingServiceConformanceResultV1>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type ReportingSourceManifestV1, type ReportingSourceSliceRequestV1 } from '../source';
|
|
2
|
+
import type { ReliableReportingAdapterV1, ReliableReportingConfigurationInputV1, ReliableReportingInstallContextV1, ReliableReportingServiceV1 } from './index';
|
|
3
|
+
export interface ReliableReportingServiceConformanceOptionsV1<TCtxMeta = Record<string, unknown>> {
|
|
4
|
+
service: ReliableReportingServiceV1<TCtxMeta>;
|
|
5
|
+
adapter: ReliableReportingAdapterV1;
|
|
6
|
+
replayRequest: ReportingSourceSliceRequestV1;
|
|
7
|
+
primary: {
|
|
8
|
+
context: ReliableReportingInstallContextV1<TCtxMeta>;
|
|
9
|
+
configuration: ReliableReportingConfigurationInputV1 & {
|
|
10
|
+
expectedCurrency: string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
isolated: {
|
|
14
|
+
context: ReliableReportingInstallContextV1<TCtxMeta>;
|
|
15
|
+
configuration: ReliableReportingConfigurationInputV1 & {
|
|
16
|
+
expectedCurrency: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export interface ReliableReportingServiceConformanceResultV1 {
|
|
21
|
+
checks: readonly [
|
|
22
|
+
'adapter_replay',
|
|
23
|
+
'account_isolation',
|
|
24
|
+
'frozen_currency',
|
|
25
|
+
'lifecycle_start_stop',
|
|
26
|
+
'capability_truthfulness'
|
|
27
|
+
];
|
|
28
|
+
manifest: ReportingSourceManifestV1;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Exercise the invariants every Core installation must preserve. Use an
|
|
32
|
+
* isolated conformance ledger: the helper intentionally installs two durable
|
|
33
|
+
* configurations and starts the lifecycle once.
|
|
34
|
+
*/
|
|
35
|
+
export declare function runReliableReportingServiceConformanceV1<TCtxMeta = Record<string, unknown>>(options: ReliableReportingServiceConformanceOptionsV1<TCtxMeta>): Promise<ReliableReportingServiceConformanceResultV1>;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var conformance_exports = {};
|
|
20
|
+
__export(conformance_exports, {
|
|
21
|
+
runReliableReportingServiceConformanceV1: () => runReliableReportingServiceConformanceV1
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(conformance_exports);
|
|
24
|
+
var import_source = require('../source/index.js');
|
|
25
|
+
async function runReliableReportingServiceConformanceV1(options) {
|
|
26
|
+
const source = options.adapter.executor ?? (0, import_source.createInlineReportingSourceExecutor)(options.adapter.fetchSlice, options.adapter.sourceOffering);
|
|
27
|
+
const manifest = await (0, import_source.runReportingSourceReplayConformanceV1)({
|
|
28
|
+
level: "basic",
|
|
29
|
+
executor: source,
|
|
30
|
+
objectReader: source,
|
|
31
|
+
request: structuredClone(options.replayRequest)
|
|
32
|
+
});
|
|
33
|
+
const first = await options.service.installConfiguration(options.primary.configuration, options.primary.context);
|
|
34
|
+
const replay = await options.service.installConfiguration(options.primary.configuration, options.primary.context);
|
|
35
|
+
const isolated = await options.service.installConfiguration(options.isolated.configuration, options.isolated.context);
|
|
36
|
+
if (first.configurationId !== replay.configurationId || first.semanticFingerprint !== replay.semanticFingerprint) {
|
|
37
|
+
throw new Error("Reliable reporting configuration replay was not idempotent");
|
|
38
|
+
}
|
|
39
|
+
if (first.account.account_id === isolated.account.account_id || first.configurationId === isolated.configurationId || first.account.account_id !== options.primary.context.account.id || isolated.account.account_id !== options.isolated.context.account.id) {
|
|
40
|
+
throw new Error("Reliable reporting configuration identity is not account isolated");
|
|
41
|
+
}
|
|
42
|
+
if (first.sourceSettings.currency !== options.primary.configuration.expectedCurrency || isolated.sourceSettings.currency !== options.isolated.configuration.expectedCurrency) {
|
|
43
|
+
throw new Error("Reliable reporting configuration did not freeze trusted currency");
|
|
44
|
+
}
|
|
45
|
+
assertTruthfulCoreCapabilities(options.service);
|
|
46
|
+
options.service.start({ intervalMilliseconds: 6e4, accountIds: [] });
|
|
47
|
+
if (!options.service.running) throw new Error("Reliable reporting lifecycle did not start");
|
|
48
|
+
await options.service.stop();
|
|
49
|
+
if (options.service.running) throw new Error("Reliable reporting lifecycle did not stop");
|
|
50
|
+
return {
|
|
51
|
+
checks: [
|
|
52
|
+
"adapter_replay",
|
|
53
|
+
"account_isolation",
|
|
54
|
+
"frozen_currency",
|
|
55
|
+
"lifecycle_start_stop",
|
|
56
|
+
"capability_truthfulness"
|
|
57
|
+
],
|
|
58
|
+
manifest
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function assertTruthfulCoreCapabilities(service) {
|
|
62
|
+
const capabilities = service.capabilities;
|
|
63
|
+
for (const forbidden of [
|
|
64
|
+
"managed_delivery",
|
|
65
|
+
"reconciled_billing",
|
|
66
|
+
"receipt_task",
|
|
67
|
+
"readiness_notification",
|
|
68
|
+
"status_notification",
|
|
69
|
+
"ledger_notification",
|
|
70
|
+
"supports_webhook_activity"
|
|
71
|
+
]) {
|
|
72
|
+
if (capabilities[forbidden] !== void 0) {
|
|
73
|
+
throw new Error(`Reliable Reporting Core must not advertise ${forbidden}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (capabilities.consumer_status_task !== void 0 !== (service.platform.syncReportingStatus !== void 0)) {
|
|
77
|
+
throw new Error("Reliable reporting consumer-status capability does not match its installed handler");
|
|
78
|
+
}
|
|
79
|
+
if (capabilities.consumer_mismatch_escalation_seconds !== void 0 && capabilities.consumer_status_task !== "sync_reporting_status") {
|
|
80
|
+
throw new Error("Reliable reporting mismatch escalation requires the consumer-status task");
|
|
81
|
+
}
|
|
82
|
+
if (capabilities.status_task !== "get_reporting_status" || capabilities.revision_content_task !== "get_media_buy_delivery") {
|
|
83
|
+
throw new Error("Reliable reporting capability does not match its installed read handlers");
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
87
|
+
0 && (module.exports = {
|
|
88
|
+
runReliableReportingServiceConformanceV1
|
|
89
|
+
});
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createInlineReportingSourceExecutor,
|
|
3
|
+
runReportingSourceReplayConformanceV1
|
|
4
|
+
} from "../source/index.mjs";
|
|
5
|
+
async function runReliableReportingServiceConformanceV1(options) {
|
|
6
|
+
const source = options.adapter.executor ?? createInlineReportingSourceExecutor(options.adapter.fetchSlice, options.adapter.sourceOffering);
|
|
7
|
+
const manifest = await runReportingSourceReplayConformanceV1({
|
|
8
|
+
level: "basic",
|
|
9
|
+
executor: source,
|
|
10
|
+
objectReader: source,
|
|
11
|
+
request: structuredClone(options.replayRequest)
|
|
12
|
+
});
|
|
13
|
+
const first = await options.service.installConfiguration(options.primary.configuration, options.primary.context);
|
|
14
|
+
const replay = await options.service.installConfiguration(options.primary.configuration, options.primary.context);
|
|
15
|
+
const isolated = await options.service.installConfiguration(options.isolated.configuration, options.isolated.context);
|
|
16
|
+
if (first.configurationId !== replay.configurationId || first.semanticFingerprint !== replay.semanticFingerprint) {
|
|
17
|
+
throw new Error("Reliable reporting configuration replay was not idempotent");
|
|
18
|
+
}
|
|
19
|
+
if (first.account.account_id === isolated.account.account_id || first.configurationId === isolated.configurationId || first.account.account_id !== options.primary.context.account.id || isolated.account.account_id !== options.isolated.context.account.id) {
|
|
20
|
+
throw new Error("Reliable reporting configuration identity is not account isolated");
|
|
21
|
+
}
|
|
22
|
+
if (first.sourceSettings.currency !== options.primary.configuration.expectedCurrency || isolated.sourceSettings.currency !== options.isolated.configuration.expectedCurrency) {
|
|
23
|
+
throw new Error("Reliable reporting configuration did not freeze trusted currency");
|
|
24
|
+
}
|
|
25
|
+
assertTruthfulCoreCapabilities(options.service);
|
|
26
|
+
options.service.start({ intervalMilliseconds: 6e4, accountIds: [] });
|
|
27
|
+
if (!options.service.running) throw new Error("Reliable reporting lifecycle did not start");
|
|
28
|
+
await options.service.stop();
|
|
29
|
+
if (options.service.running) throw new Error("Reliable reporting lifecycle did not stop");
|
|
30
|
+
return {
|
|
31
|
+
checks: [
|
|
32
|
+
"adapter_replay",
|
|
33
|
+
"account_isolation",
|
|
34
|
+
"frozen_currency",
|
|
35
|
+
"lifecycle_start_stop",
|
|
36
|
+
"capability_truthfulness"
|
|
37
|
+
],
|
|
38
|
+
manifest
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function assertTruthfulCoreCapabilities(service) {
|
|
42
|
+
const capabilities = service.capabilities;
|
|
43
|
+
for (const forbidden of [
|
|
44
|
+
"managed_delivery",
|
|
45
|
+
"reconciled_billing",
|
|
46
|
+
"receipt_task",
|
|
47
|
+
"readiness_notification",
|
|
48
|
+
"status_notification",
|
|
49
|
+
"ledger_notification",
|
|
50
|
+
"supports_webhook_activity"
|
|
51
|
+
]) {
|
|
52
|
+
if (capabilities[forbidden] !== void 0) {
|
|
53
|
+
throw new Error(`Reliable Reporting Core must not advertise ${forbidden}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (capabilities.consumer_status_task !== void 0 !== (service.platform.syncReportingStatus !== void 0)) {
|
|
57
|
+
throw new Error("Reliable reporting consumer-status capability does not match its installed handler");
|
|
58
|
+
}
|
|
59
|
+
if (capabilities.consumer_mismatch_escalation_seconds !== void 0 && capabilities.consumer_status_task !== "sync_reporting_status") {
|
|
60
|
+
throw new Error("Reliable reporting mismatch escalation requires the consumer-status task");
|
|
61
|
+
}
|
|
62
|
+
if (capabilities.status_task !== "get_reporting_status" || capabilities.revision_content_task !== "get_media_buy_delivery") {
|
|
63
|
+
throw new Error("Reliable reporting capability does not match its installed read handlers");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
export {
|
|
67
|
+
runReliableReportingServiceConformanceV1
|
|
68
|
+
};
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import type { Account } from '../../server/decisioning/account.mjs';
|
|
2
|
+
import type { RequestContext } from '../../server/decisioning/context.mjs';
|
|
3
|
+
import type { DecisioningPlatform } from '../../server/decisioning/platform.mjs';
|
|
4
|
+
import type { ReliableReportingPlatform } from '../../server/decisioning/specialisms/reporting.mjs';
|
|
5
|
+
import type { ReportingDeliveryCapabilities, ReportingDeliveryOffering } from '../../types/tools.generated.mjs';
|
|
6
|
+
import { REPORTING_LEDGER_MIGRATION, type CreateReportingProducerOptionsV1, type ReportingConsumerMismatchEscalationV1, type ReportingLedgerConfigurationV1, type ReportingLedgerStore, type ReportingProducerContactV1, type ReportingProducerV1, type ReportingSourceWithReaderV1 } from '../ledger/index.mjs';
|
|
7
|
+
import type { InlineReportingReplayRetentionV1 } from '../source/index.mjs';
|
|
8
|
+
import { type InlineReportingDeliveryFetchV1, type ReportingSourceOfferingV1 } from '../source/index.mjs';
|
|
9
|
+
/** The intentionally small provider boundary: one bounded slice fetch plus immutable metadata. */
|
|
10
|
+
export interface ReliableReportingAdapterV1 {
|
|
11
|
+
readonly sourceOffering: ReportingSourceOfferingV1;
|
|
12
|
+
readonly deliveryOffering: ReportingDeliveryOffering;
|
|
13
|
+
/**
|
|
14
|
+
* Adapted through the bounded inline executor, which retains every admitted
|
|
15
|
+
* execution so an admitted key stays replayable — and therefore caps a scope
|
|
16
|
+
* at 100 slices. A scheduled feed that outlives that ceiling must supply
|
|
17
|
+
* `executor`, or opt in to `inlineReplayRetention`; without one of those it
|
|
18
|
+
* terminalizes with QUOTA_EXHAUSTED and does not recover.
|
|
19
|
+
*/
|
|
20
|
+
readonly fetchSlice?: InlineReportingDeliveryFetchV1;
|
|
21
|
+
/**
|
|
22
|
+
* Explicit bounded replay window for the inline executor. Trades the lifetime
|
|
23
|
+
* replay guarantee for a feed that keeps producing; never applied silently.
|
|
24
|
+
*/
|
|
25
|
+
readonly inlineReplayRetention?: InlineReportingReplayRetentionV1;
|
|
26
|
+
/**
|
|
27
|
+
* Escape hatch for feeds the inline executor cannot serve: pagination,
|
|
28
|
+
* durable staged objects, or replay that must survive process restarts.
|
|
29
|
+
* Mutually exclusive with `fetchSlice`.
|
|
30
|
+
*/
|
|
31
|
+
readonly executor?: ReportingSourceWithReaderV1;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The media-buy/package denominator this account's credential is authorized to
|
|
35
|
+
* report on. `mediaBuyIds` is always derived from `constituents`, so the two
|
|
36
|
+
* can never disagree.
|
|
37
|
+
*/
|
|
38
|
+
export interface ReliableReportingCoverageV1 {
|
|
39
|
+
constituents: ReportingLedgerConfigurationV1['constituents'];
|
|
40
|
+
}
|
|
41
|
+
export interface ReliableReportingSourceRouteV1 {
|
|
42
|
+
/** Key in `adapters`; selected by trusted host code, never by buyer input. */
|
|
43
|
+
adapterId: string;
|
|
44
|
+
/** Durable non-secret upstream identifiers used to re-derive authorization per request. */
|
|
45
|
+
sourceScope: Record<string, unknown>;
|
|
46
|
+
/** Trusted upstream reporting clock for this account/scope. */
|
|
47
|
+
sourceTimezone: string;
|
|
48
|
+
}
|
|
49
|
+
type LedgerInstallInput = Omit<ReportingLedgerConfigurationV1, 'configurationId' | 'installedAt' | 'semanticFingerprint' | 'account' | 'sourceScope' | 'sourceTimezone' | 'sourceSettings' | 'contract' | 'constituents' | 'mediaBuyIds'>;
|
|
50
|
+
/**
|
|
51
|
+
* Seller-resolved configuration facts. `currency`, account identity, source
|
|
52
|
+
* scope, timezone, and source contract are deliberately absent.
|
|
53
|
+
*/
|
|
54
|
+
export interface ReliableReportingConfigurationInputV1 extends LedgerInstallInput {
|
|
55
|
+
sourceSettings: Omit<ReportingLedgerConfigurationV1['sourceSettings'], 'currency'>;
|
|
56
|
+
/** Optional assertion from the commercial flow; disagreement fails closed. */
|
|
57
|
+
expectedCurrency?: string;
|
|
58
|
+
/** Optional assertion from account setup; disagreement fails closed. */
|
|
59
|
+
expectedSourceTimezone?: string;
|
|
60
|
+
/** Optional assertion of the requested media-buy scope; disagreement fails closed. */
|
|
61
|
+
expectedMediaBuyIds?: readonly string[];
|
|
62
|
+
}
|
|
63
|
+
export interface ReliableReportingInstallContextV1<TCtxMeta = Record<string, unknown>> {
|
|
64
|
+
/** Must be the framework-resolved account from RequestContext. */
|
|
65
|
+
account: Pick<Account<TCtxMeta>, 'id' | 'ctx_metadata'>;
|
|
66
|
+
}
|
|
67
|
+
interface ReliableReportingSchedulerBaseOptionsV1 {
|
|
68
|
+
intervalMilliseconds: number;
|
|
69
|
+
maxObligationsPerAccount?: number;
|
|
70
|
+
maxWorkerIterationsPerAccount?: number;
|
|
71
|
+
retryDelayMilliseconds?: number;
|
|
72
|
+
executionDeadlineMilliseconds?: number;
|
|
73
|
+
settlementGraceMilliseconds?: number;
|
|
74
|
+
onError?: (error: unknown) => void | Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Destination for the scheduler's own warn-level diagnostics. Defaults to
|
|
77
|
+
* `console.warn`.
|
|
78
|
+
*
|
|
79
|
+
* The scheduler is a durable background loop: a roster resolver that keeps
|
|
80
|
+
* throwing runs zero tenants every interval, and a tenant whose cycle keeps
|
|
81
|
+
* failing produces nothing, in both cases indefinitely and by design — the
|
|
82
|
+
* loop must not die. That makes silence the dangerous outcome, so a failure
|
|
83
|
+
* no `onError` was configured to observe is warned here instead of dropped.
|
|
84
|
+
*
|
|
85
|
+
* A configured `onError` owns reporting and nothing is warned alongside it,
|
|
86
|
+
* so an adopter's own pipeline is never duplicated. The one exception is an
|
|
87
|
+
* `onError` that itself throws: it would otherwise take both its own failure
|
|
88
|
+
* and the one it was handed down with it.
|
|
89
|
+
*
|
|
90
|
+
* Messages carry the failure phase, the account when there is one, and the
|
|
91
|
+
* error's `message` passed through credential redaction — never a stack,
|
|
92
|
+
* never the error object. Pass `{ warn: () => {} }` to opt out entirely.
|
|
93
|
+
*/
|
|
94
|
+
logger?: {
|
|
95
|
+
warn: (message: string) => void;
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export type ReliableReportingSchedulerOptionsV1 = ReliableReportingSchedulerBaseOptionsV1 & ({
|
|
99
|
+
deploymentWide: true;
|
|
100
|
+
accountIds?: never;
|
|
101
|
+
} | {
|
|
102
|
+
deploymentWide?: false;
|
|
103
|
+
accountIds: readonly string[] | (() => readonly string[] | Promise<readonly string[]>);
|
|
104
|
+
});
|
|
105
|
+
interface ReliableReportingCycleBaseOptionsV1 {
|
|
106
|
+
now?: Date;
|
|
107
|
+
maxObligations?: number;
|
|
108
|
+
maxWorkerIterations?: number;
|
|
109
|
+
retryDelayMilliseconds?: number;
|
|
110
|
+
executionDeadlineMilliseconds?: number;
|
|
111
|
+
settlementGraceMilliseconds?: number;
|
|
112
|
+
signal?: AbortSignal;
|
|
113
|
+
}
|
|
114
|
+
export type ReliableReportingCycleOptionsV1 = ReliableReportingCycleBaseOptionsV1 & ({
|
|
115
|
+
deploymentWide: true;
|
|
116
|
+
accountId?: never;
|
|
117
|
+
} | {
|
|
118
|
+
deploymentWide?: false;
|
|
119
|
+
accountId: string;
|
|
120
|
+
});
|
|
121
|
+
export interface CreateReliableReportingServiceOptionsV1<TCtxMeta = Record<string, unknown>> {
|
|
122
|
+
store: ReportingLedgerStore;
|
|
123
|
+
adapters: Readonly<Record<string, ReliableReportingAdapterV1>>;
|
|
124
|
+
contact: ReportingProducerContactV1;
|
|
125
|
+
resolveSource(account: Pick<Account<TCtxMeta>, 'id' | 'ctx_metadata'>, configuration: Readonly<ReliableReportingConfigurationInputV1>): ReliableReportingSourceRouteV1 | Promise<ReliableReportingSourceRouteV1>;
|
|
126
|
+
resolveCurrency(account: Pick<Account<TCtxMeta>, 'id' | 'ctx_metadata'>, configuration: Readonly<ReliableReportingConfigurationInputV1>): string | Promise<string>;
|
|
127
|
+
/**
|
|
128
|
+
* Authorize and derive the media-buy/package denominator for this account.
|
|
129
|
+
*
|
|
130
|
+
* This is an authorization boundary, not a convenience: `sourceScope` may
|
|
131
|
+
* legitimately resolve to a shared upstream network, so the constituent list
|
|
132
|
+
* is the only thing separating one buyer's orders from another's on that
|
|
133
|
+
* network. It must be derived from the resolved account, never echoed from
|
|
134
|
+
* the buyer's declaration.
|
|
135
|
+
*/
|
|
136
|
+
resolveCoverage(account: Pick<Account<TCtxMeta>, 'id' | 'ctx_metadata'>, configuration: Readonly<ReliableReportingConfigurationInputV1>): ReliableReportingCoverageV1 | Promise<ReliableReportingCoverageV1>;
|
|
137
|
+
/** Enables authenticated consumer-scoped status reads and sync_reporting_status. */
|
|
138
|
+
resolveConsumerId?: (context: RequestContext<Account<TCtxMeta>>) => string | Promise<string>;
|
|
139
|
+
consumerMismatchEscalation?: ReportingConsumerMismatchEscalationV1;
|
|
140
|
+
automatedRecoveryWindowSeconds: number;
|
|
141
|
+
/** Ledger metadata retention commitment advertised to buyers. */
|
|
142
|
+
statusRetentionDays: number;
|
|
143
|
+
subscribers?: CreateReportingProducerOptionsV1['subscribers'];
|
|
144
|
+
}
|
|
145
|
+
export interface ReliableReportingSetupV1 {
|
|
146
|
+
readonly component: 'reliable-reporting-core';
|
|
147
|
+
readonly migrations: readonly [typeof REPORTING_LEDGER_MIGRATION];
|
|
148
|
+
readonly requiresIsolatedLedgerDatabaseAcknowledgement: true;
|
|
149
|
+
}
|
|
150
|
+
export interface ReliableReportingServiceV1<TCtxMeta = Record<string, unknown>> {
|
|
151
|
+
readonly setup: ReliableReportingSetupV1;
|
|
152
|
+
readonly capabilities: ReportingDeliveryCapabilities;
|
|
153
|
+
readonly producer: ReportingProducerV1;
|
|
154
|
+
readonly platform: ReliableReportingPlatform<TCtxMeta>;
|
|
155
|
+
readonly running: boolean;
|
|
156
|
+
installConfiguration(configuration: ReliableReportingConfigurationInputV1, context: ReliableReportingInstallContextV1<TCtxMeta>): Promise<ReportingLedgerConfigurationV1>;
|
|
157
|
+
/**
|
|
158
|
+
* Returns the same platform object, narrowed to also carry `reporting`.
|
|
159
|
+
* The input type is preserved: widening to `DecisioningPlatform` would erase
|
|
160
|
+
* literal `capabilities.specialisms` and adopter-declared members, and
|
|
161
|
+
* `createAdcpServerFromPlatform` enforces specialism-required tools off
|
|
162
|
+
* exactly those types.
|
|
163
|
+
*/
|
|
164
|
+
install<TPlatform extends DecisioningPlatform<any, TCtxMeta>>(platform: TPlatform): TPlatform & {
|
|
165
|
+
reporting: ReliableReportingPlatform<TCtxMeta>;
|
|
166
|
+
};
|
|
167
|
+
runCycle(options: ReliableReportingCycleOptionsV1): Promise<{
|
|
168
|
+
planned: number;
|
|
169
|
+
claimed: number;
|
|
170
|
+
revisionsCommitted: number;
|
|
171
|
+
notReady: number;
|
|
172
|
+
failed: number;
|
|
173
|
+
}>;
|
|
174
|
+
start(options: ReliableReportingSchedulerOptionsV1): void;
|
|
175
|
+
stop(): Promise<void>;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Compose the existing source executor, ledger producer, protocol handlers,
|
|
179
|
+
* and scheduler into one Reliable Reporting Core lifecycle owner.
|
|
180
|
+
*/
|
|
181
|
+
export declare function createReliableReportingService<TCtxMeta = Record<string, unknown>>(options: CreateReliableReportingServiceOptionsV1<TCtxMeta>): ReliableReportingServiceV1<TCtxMeta>;
|
|
182
|
+
export * from './conformance.mjs';
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import type { Account } from '../../server/decisioning/account';
|
|
2
|
+
import type { RequestContext } from '../../server/decisioning/context';
|
|
3
|
+
import type { DecisioningPlatform } from '../../server/decisioning/platform';
|
|
4
|
+
import type { ReliableReportingPlatform } from '../../server/decisioning/specialisms/reporting';
|
|
5
|
+
import type { ReportingDeliveryCapabilities, ReportingDeliveryOffering } from '../../types/tools.generated';
|
|
6
|
+
import { REPORTING_LEDGER_MIGRATION, type CreateReportingProducerOptionsV1, type ReportingConsumerMismatchEscalationV1, type ReportingLedgerConfigurationV1, type ReportingLedgerStore, type ReportingProducerContactV1, type ReportingProducerV1, type ReportingSourceWithReaderV1 } from '../ledger';
|
|
7
|
+
import type { InlineReportingReplayRetentionV1 } from '../source';
|
|
8
|
+
import { type InlineReportingDeliveryFetchV1, type ReportingSourceOfferingV1 } from '../source';
|
|
9
|
+
/** The intentionally small provider boundary: one bounded slice fetch plus immutable metadata. */
|
|
10
|
+
export interface ReliableReportingAdapterV1 {
|
|
11
|
+
readonly sourceOffering: ReportingSourceOfferingV1;
|
|
12
|
+
readonly deliveryOffering: ReportingDeliveryOffering;
|
|
13
|
+
/**
|
|
14
|
+
* Adapted through the bounded inline executor, which retains every admitted
|
|
15
|
+
* execution so an admitted key stays replayable — and therefore caps a scope
|
|
16
|
+
* at 100 slices. A scheduled feed that outlives that ceiling must supply
|
|
17
|
+
* `executor`, or opt in to `inlineReplayRetention`; without one of those it
|
|
18
|
+
* terminalizes with QUOTA_EXHAUSTED and does not recover.
|
|
19
|
+
*/
|
|
20
|
+
readonly fetchSlice?: InlineReportingDeliveryFetchV1;
|
|
21
|
+
/**
|
|
22
|
+
* Explicit bounded replay window for the inline executor. Trades the lifetime
|
|
23
|
+
* replay guarantee for a feed that keeps producing; never applied silently.
|
|
24
|
+
*/
|
|
25
|
+
readonly inlineReplayRetention?: InlineReportingReplayRetentionV1;
|
|
26
|
+
/**
|
|
27
|
+
* Escape hatch for feeds the inline executor cannot serve: pagination,
|
|
28
|
+
* durable staged objects, or replay that must survive process restarts.
|
|
29
|
+
* Mutually exclusive with `fetchSlice`.
|
|
30
|
+
*/
|
|
31
|
+
readonly executor?: ReportingSourceWithReaderV1;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The media-buy/package denominator this account's credential is authorized to
|
|
35
|
+
* report on. `mediaBuyIds` is always derived from `constituents`, so the two
|
|
36
|
+
* can never disagree.
|
|
37
|
+
*/
|
|
38
|
+
export interface ReliableReportingCoverageV1 {
|
|
39
|
+
constituents: ReportingLedgerConfigurationV1['constituents'];
|
|
40
|
+
}
|
|
41
|
+
export interface ReliableReportingSourceRouteV1 {
|
|
42
|
+
/** Key in `adapters`; selected by trusted host code, never by buyer input. */
|
|
43
|
+
adapterId: string;
|
|
44
|
+
/** Durable non-secret upstream identifiers used to re-derive authorization per request. */
|
|
45
|
+
sourceScope: Record<string, unknown>;
|
|
46
|
+
/** Trusted upstream reporting clock for this account/scope. */
|
|
47
|
+
sourceTimezone: string;
|
|
48
|
+
}
|
|
49
|
+
type LedgerInstallInput = Omit<ReportingLedgerConfigurationV1, 'configurationId' | 'installedAt' | 'semanticFingerprint' | 'account' | 'sourceScope' | 'sourceTimezone' | 'sourceSettings' | 'contract' | 'constituents' | 'mediaBuyIds'>;
|
|
50
|
+
/**
|
|
51
|
+
* Seller-resolved configuration facts. `currency`, account identity, source
|
|
52
|
+
* scope, timezone, and source contract are deliberately absent.
|
|
53
|
+
*/
|
|
54
|
+
export interface ReliableReportingConfigurationInputV1 extends LedgerInstallInput {
|
|
55
|
+
sourceSettings: Omit<ReportingLedgerConfigurationV1['sourceSettings'], 'currency'>;
|
|
56
|
+
/** Optional assertion from the commercial flow; disagreement fails closed. */
|
|
57
|
+
expectedCurrency?: string;
|
|
58
|
+
/** Optional assertion from account setup; disagreement fails closed. */
|
|
59
|
+
expectedSourceTimezone?: string;
|
|
60
|
+
/** Optional assertion of the requested media-buy scope; disagreement fails closed. */
|
|
61
|
+
expectedMediaBuyIds?: readonly string[];
|
|
62
|
+
}
|
|
63
|
+
export interface ReliableReportingInstallContextV1<TCtxMeta = Record<string, unknown>> {
|
|
64
|
+
/** Must be the framework-resolved account from RequestContext. */
|
|
65
|
+
account: Pick<Account<TCtxMeta>, 'id' | 'ctx_metadata'>;
|
|
66
|
+
}
|
|
67
|
+
interface ReliableReportingSchedulerBaseOptionsV1 {
|
|
68
|
+
intervalMilliseconds: number;
|
|
69
|
+
maxObligationsPerAccount?: number;
|
|
70
|
+
maxWorkerIterationsPerAccount?: number;
|
|
71
|
+
retryDelayMilliseconds?: number;
|
|
72
|
+
executionDeadlineMilliseconds?: number;
|
|
73
|
+
settlementGraceMilliseconds?: number;
|
|
74
|
+
onError?: (error: unknown) => void | Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Destination for the scheduler's own warn-level diagnostics. Defaults to
|
|
77
|
+
* `console.warn`.
|
|
78
|
+
*
|
|
79
|
+
* The scheduler is a durable background loop: a roster resolver that keeps
|
|
80
|
+
* throwing runs zero tenants every interval, and a tenant whose cycle keeps
|
|
81
|
+
* failing produces nothing, in both cases indefinitely and by design — the
|
|
82
|
+
* loop must not die. That makes silence the dangerous outcome, so a failure
|
|
83
|
+
* no `onError` was configured to observe is warned here instead of dropped.
|
|
84
|
+
*
|
|
85
|
+
* A configured `onError` owns reporting and nothing is warned alongside it,
|
|
86
|
+
* so an adopter's own pipeline is never duplicated. The one exception is an
|
|
87
|
+
* `onError` that itself throws: it would otherwise take both its own failure
|
|
88
|
+
* and the one it was handed down with it.
|
|
89
|
+
*
|
|
90
|
+
* Messages carry the failure phase, the account when there is one, and the
|
|
91
|
+
* error's `message` passed through credential redaction — never a stack,
|
|
92
|
+
* never the error object. Pass `{ warn: () => {} }` to opt out entirely.
|
|
93
|
+
*/
|
|
94
|
+
logger?: {
|
|
95
|
+
warn: (message: string) => void;
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export type ReliableReportingSchedulerOptionsV1 = ReliableReportingSchedulerBaseOptionsV1 & ({
|
|
99
|
+
deploymentWide: true;
|
|
100
|
+
accountIds?: never;
|
|
101
|
+
} | {
|
|
102
|
+
deploymentWide?: false;
|
|
103
|
+
accountIds: readonly string[] | (() => readonly string[] | Promise<readonly string[]>);
|
|
104
|
+
});
|
|
105
|
+
interface ReliableReportingCycleBaseOptionsV1 {
|
|
106
|
+
now?: Date;
|
|
107
|
+
maxObligations?: number;
|
|
108
|
+
maxWorkerIterations?: number;
|
|
109
|
+
retryDelayMilliseconds?: number;
|
|
110
|
+
executionDeadlineMilliseconds?: number;
|
|
111
|
+
settlementGraceMilliseconds?: number;
|
|
112
|
+
signal?: AbortSignal;
|
|
113
|
+
}
|
|
114
|
+
export type ReliableReportingCycleOptionsV1 = ReliableReportingCycleBaseOptionsV1 & ({
|
|
115
|
+
deploymentWide: true;
|
|
116
|
+
accountId?: never;
|
|
117
|
+
} | {
|
|
118
|
+
deploymentWide?: false;
|
|
119
|
+
accountId: string;
|
|
120
|
+
});
|
|
121
|
+
export interface CreateReliableReportingServiceOptionsV1<TCtxMeta = Record<string, unknown>> {
|
|
122
|
+
store: ReportingLedgerStore;
|
|
123
|
+
adapters: Readonly<Record<string, ReliableReportingAdapterV1>>;
|
|
124
|
+
contact: ReportingProducerContactV1;
|
|
125
|
+
resolveSource(account: Pick<Account<TCtxMeta>, 'id' | 'ctx_metadata'>, configuration: Readonly<ReliableReportingConfigurationInputV1>): ReliableReportingSourceRouteV1 | Promise<ReliableReportingSourceRouteV1>;
|
|
126
|
+
resolveCurrency(account: Pick<Account<TCtxMeta>, 'id' | 'ctx_metadata'>, configuration: Readonly<ReliableReportingConfigurationInputV1>): string | Promise<string>;
|
|
127
|
+
/**
|
|
128
|
+
* Authorize and derive the media-buy/package denominator for this account.
|
|
129
|
+
*
|
|
130
|
+
* This is an authorization boundary, not a convenience: `sourceScope` may
|
|
131
|
+
* legitimately resolve to a shared upstream network, so the constituent list
|
|
132
|
+
* is the only thing separating one buyer's orders from another's on that
|
|
133
|
+
* network. It must be derived from the resolved account, never echoed from
|
|
134
|
+
* the buyer's declaration.
|
|
135
|
+
*/
|
|
136
|
+
resolveCoverage(account: Pick<Account<TCtxMeta>, 'id' | 'ctx_metadata'>, configuration: Readonly<ReliableReportingConfigurationInputV1>): ReliableReportingCoverageV1 | Promise<ReliableReportingCoverageV1>;
|
|
137
|
+
/** Enables authenticated consumer-scoped status reads and sync_reporting_status. */
|
|
138
|
+
resolveConsumerId?: (context: RequestContext<Account<TCtxMeta>>) => string | Promise<string>;
|
|
139
|
+
consumerMismatchEscalation?: ReportingConsumerMismatchEscalationV1;
|
|
140
|
+
automatedRecoveryWindowSeconds: number;
|
|
141
|
+
/** Ledger metadata retention commitment advertised to buyers. */
|
|
142
|
+
statusRetentionDays: number;
|
|
143
|
+
subscribers?: CreateReportingProducerOptionsV1['subscribers'];
|
|
144
|
+
}
|
|
145
|
+
export interface ReliableReportingSetupV1 {
|
|
146
|
+
readonly component: 'reliable-reporting-core';
|
|
147
|
+
readonly migrations: readonly [typeof REPORTING_LEDGER_MIGRATION];
|
|
148
|
+
readonly requiresIsolatedLedgerDatabaseAcknowledgement: true;
|
|
149
|
+
}
|
|
150
|
+
export interface ReliableReportingServiceV1<TCtxMeta = Record<string, unknown>> {
|
|
151
|
+
readonly setup: ReliableReportingSetupV1;
|
|
152
|
+
readonly capabilities: ReportingDeliveryCapabilities;
|
|
153
|
+
readonly producer: ReportingProducerV1;
|
|
154
|
+
readonly platform: ReliableReportingPlatform<TCtxMeta>;
|
|
155
|
+
readonly running: boolean;
|
|
156
|
+
installConfiguration(configuration: ReliableReportingConfigurationInputV1, context: ReliableReportingInstallContextV1<TCtxMeta>): Promise<ReportingLedgerConfigurationV1>;
|
|
157
|
+
/**
|
|
158
|
+
* Returns the same platform object, narrowed to also carry `reporting`.
|
|
159
|
+
* The input type is preserved: widening to `DecisioningPlatform` would erase
|
|
160
|
+
* literal `capabilities.specialisms` and adopter-declared members, and
|
|
161
|
+
* `createAdcpServerFromPlatform` enforces specialism-required tools off
|
|
162
|
+
* exactly those types.
|
|
163
|
+
*/
|
|
164
|
+
install<TPlatform extends DecisioningPlatform<any, TCtxMeta>>(platform: TPlatform): TPlatform & {
|
|
165
|
+
reporting: ReliableReportingPlatform<TCtxMeta>;
|
|
166
|
+
};
|
|
167
|
+
runCycle(options: ReliableReportingCycleOptionsV1): Promise<{
|
|
168
|
+
planned: number;
|
|
169
|
+
claimed: number;
|
|
170
|
+
revisionsCommitted: number;
|
|
171
|
+
notReady: number;
|
|
172
|
+
failed: number;
|
|
173
|
+
}>;
|
|
174
|
+
start(options: ReliableReportingSchedulerOptionsV1): void;
|
|
175
|
+
stop(): Promise<void>;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Compose the existing source executor, ledger producer, protocol handlers,
|
|
179
|
+
* and scheduler into one Reliable Reporting Core lifecycle owner.
|
|
180
|
+
*/
|
|
181
|
+
export declare function createReliableReportingService<TCtxMeta = Record<string, unknown>>(options: CreateReliableReportingServiceOptionsV1<TCtxMeta>): ReliableReportingServiceV1<TCtxMeta>;
|
|
182
|
+
export * from './conformance';
|