@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
|
@@ -74,13 +74,18 @@ const METRIC_NAME = /^[A-Za-z][A-Za-z0-9_.:-]{0,127}$/;
|
|
|
74
74
|
const REASON = /^[A-Za-z0-9](?:[A-Za-z0-9 !#$%&'()*+,./:;<=>?@^_{}|~-]{0,510}[A-Za-z0-9])?$/;
|
|
75
75
|
const ReportingSha256V1Schema = import_zod.z.string().regex(SHA256);
|
|
76
76
|
const ReportingFingerprintV1Schema = import_zod.z.string().regex(/^sha256:[a-f0-9]{64}$/);
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
);
|
|
77
|
+
const EXTERNAL_ID_MAX_CHARS = 255;
|
|
78
|
+
function isUnpaddedControlFreeIdentifier(value) {
|
|
79
|
+
if (value.length > EXTERNAL_ID_MAX_CHARS) return false;
|
|
80
|
+
if (value.length === 0) return false;
|
|
81
|
+
if (/^\s/.test(value) || /\s$/.test(value)) return false;
|
|
82
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
83
|
+
const unit = value.charCodeAt(index);
|
|
84
|
+
if (unit <= 31 || unit === 127) return false;
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
const ReportingExternalIdV1Schema = import_zod.z.string().min(1).max(EXTERNAL_ID_MAX_CHARS).refine(isUnpaddedControlFreeIdentifier, "Identifier must not contain whitespace padding or control characters");
|
|
84
89
|
const ReportingOpaqueReferenceV1Schema = import_zod.z.string().regex(OPAQUE_REF);
|
|
85
90
|
const ReportingEvidenceReasonV1Schema = import_zod.z.string().min(1).max(512).regex(REASON);
|
|
86
91
|
const ReportingInstantV1Schema = import_zod.z.iso.datetime({ offset: true }).refine((value) => {
|
|
@@ -12,13 +12,18 @@ const METRIC_NAME = /^[A-Za-z][A-Za-z0-9_.:-]{0,127}$/;
|
|
|
12
12
|
const REASON = /^[A-Za-z0-9](?:[A-Za-z0-9 !#$%&'()*+,./:;<=>?@^_{}|~-]{0,510}[A-Za-z0-9])?$/;
|
|
13
13
|
const ReportingSha256V1Schema = z.string().regex(SHA256);
|
|
14
14
|
const ReportingFingerprintV1Schema = z.string().regex(/^sha256:[a-f0-9]{64}$/);
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
);
|
|
15
|
+
const EXTERNAL_ID_MAX_CHARS = 255;
|
|
16
|
+
function isUnpaddedControlFreeIdentifier(value) {
|
|
17
|
+
if (value.length > EXTERNAL_ID_MAX_CHARS) return false;
|
|
18
|
+
if (value.length === 0) return false;
|
|
19
|
+
if (/^\s/.test(value) || /\s$/.test(value)) return false;
|
|
20
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
21
|
+
const unit = value.charCodeAt(index);
|
|
22
|
+
if (unit <= 31 || unit === 127) return false;
|
|
23
|
+
}
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
const ReportingExternalIdV1Schema = z.string().min(1).max(EXTERNAL_ID_MAX_CHARS).refine(isUnpaddedControlFreeIdentifier, "Identifier must not contain whitespace padding or control characters");
|
|
22
27
|
const ReportingOpaqueReferenceV1Schema = z.string().regex(OPAQUE_REF);
|
|
23
28
|
const ReportingEvidenceReasonV1Schema = z.string().min(1).max(512).regex(REASON);
|
|
24
29
|
const ReportingInstantV1Schema = z.iso.datetime({ offset: true }).refine((value) => {
|
|
@@ -1545,3 +1545,29 @@ export declare function completedReportingSourceResponseV1(input: {
|
|
|
1545
1545
|
request: ReportingSourceSliceRequestV1;
|
|
1546
1546
|
manifest: SourceBatchManifestReferenceV1;
|
|
1547
1547
|
}): ReportingSourceExecutionResponseV1;
|
|
1548
|
+
/**
|
|
1549
|
+
* Normative period-boundary origins from `core/reporting-schedule.json`.
|
|
1550
|
+
*
|
|
1551
|
+
* `utc` uses 1970-01-01T00:00:00Z as interval zero; `source_timezone` uses
|
|
1552
|
+
* local midnight on that date in the explicit period timezone. Every boundary
|
|
1553
|
+
* is the origin plus an interval ordinal, so an adopter that follows the spec
|
|
1554
|
+
* anchors its generation on that origin rather than on a recent date.
|
|
1555
|
+
*/
|
|
1556
|
+
export declare const REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1: number;
|
|
1557
|
+
/** Minutes east of UTC that `timeZone` observes at `instantMs`. */
|
|
1558
|
+
export declare function reportingUtcOffsetMinutesV1(timeZone: string, instantMs: number): number;
|
|
1559
|
+
/**
|
|
1560
|
+
* True when `timeZone` does not hold one UTC offset across `[startMs, endMs]`.
|
|
1561
|
+
*
|
|
1562
|
+
* Fixed-millisecond period arithmetic only agrees with the spec's civil-time
|
|
1563
|
+
* boundary generation while the offset holds still, so any change in the span
|
|
1564
|
+
* means boundaries drift off source-local midnight.
|
|
1565
|
+
*/
|
|
1566
|
+
export declare function reportingUtcOffsetChangesV1(timeZone: string, startMs: number, endMs: number): boolean;
|
|
1567
|
+
/** True when `instantMs` is exactly 00:00:00.000 local time in `timeZone`. */
|
|
1568
|
+
export declare function reportingIsSourceLocalMidnightV1(instantMs: number, timeZone: string): boolean;
|
|
1569
|
+
/**
|
|
1570
|
+
* Interval zero for an alignment, per `reporting-schedule.json` §period_generation.
|
|
1571
|
+
* `billing_cycle` has no derivable origin — it carries an explicit anchor.
|
|
1572
|
+
*/
|
|
1573
|
+
export declare function reportingScheduleOriginV1(alignment: 'utc' | 'source_timezone', timeZone: string): number;
|
|
@@ -1545,3 +1545,29 @@ export declare function completedReportingSourceResponseV1(input: {
|
|
|
1545
1545
|
request: ReportingSourceSliceRequestV1;
|
|
1546
1546
|
manifest: SourceBatchManifestReferenceV1;
|
|
1547
1547
|
}): ReportingSourceExecutionResponseV1;
|
|
1548
|
+
/**
|
|
1549
|
+
* Normative period-boundary origins from `core/reporting-schedule.json`.
|
|
1550
|
+
*
|
|
1551
|
+
* `utc` uses 1970-01-01T00:00:00Z as interval zero; `source_timezone` uses
|
|
1552
|
+
* local midnight on that date in the explicit period timezone. Every boundary
|
|
1553
|
+
* is the origin plus an interval ordinal, so an adopter that follows the spec
|
|
1554
|
+
* anchors its generation on that origin rather than on a recent date.
|
|
1555
|
+
*/
|
|
1556
|
+
export declare const REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1: number;
|
|
1557
|
+
/** Minutes east of UTC that `timeZone` observes at `instantMs`. */
|
|
1558
|
+
export declare function reportingUtcOffsetMinutesV1(timeZone: string, instantMs: number): number;
|
|
1559
|
+
/**
|
|
1560
|
+
* True when `timeZone` does not hold one UTC offset across `[startMs, endMs]`.
|
|
1561
|
+
*
|
|
1562
|
+
* Fixed-millisecond period arithmetic only agrees with the spec's civil-time
|
|
1563
|
+
* boundary generation while the offset holds still, so any change in the span
|
|
1564
|
+
* means boundaries drift off source-local midnight.
|
|
1565
|
+
*/
|
|
1566
|
+
export declare function reportingUtcOffsetChangesV1(timeZone: string, startMs: number, endMs: number): boolean;
|
|
1567
|
+
/** True when `instantMs` is exactly 00:00:00.000 local time in `timeZone`. */
|
|
1568
|
+
export declare function reportingIsSourceLocalMidnightV1(instantMs: number, timeZone: string): boolean;
|
|
1569
|
+
/**
|
|
1570
|
+
* Interval zero for an alignment, per `reporting-schedule.json` §period_generation.
|
|
1571
|
+
* `billing_cycle` has no derivable origin — it carries an explicit anchor.
|
|
1572
|
+
*/
|
|
1573
|
+
export declare function reportingScheduleOriginV1(alignment: 'utc' | 'source_timezone', timeZone: string): number;
|
|
@@ -19,6 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var source_exports = {};
|
|
20
20
|
__export(source_exports, {
|
|
21
21
|
REPORTING_MAX_SOURCE_WINDOW_DAYS_V1: () => REPORTING_MAX_SOURCE_WINDOW_DAYS_V1,
|
|
22
|
+
REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1: () => REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1,
|
|
22
23
|
ReportingIsoDurationV1Schema: () => ReportingIsoDurationV1Schema,
|
|
23
24
|
ReportingMetricOrDimensionNameV1Schema: () => ReportingMetricOrDimensionNameV1Schema,
|
|
24
25
|
ReportingSourceCapabilitiesV1JsonSchema: () => ReportingSourceCapabilitiesV1JsonSchema,
|
|
@@ -33,9 +34,13 @@ __export(source_exports, {
|
|
|
33
34
|
ReportingSourceSliceRequestV1Schema: () => ReportingSourceSliceRequestV1Schema,
|
|
34
35
|
ReportingSourceWindowingV1Schema: () => ReportingSourceWindowingV1Schema,
|
|
35
36
|
completedReportingSourceResponseV1: () => completedReportingSourceResponseV1,
|
|
37
|
+
reportingIsSourceLocalMidnightV1: () => reportingIsSourceLocalMidnightV1,
|
|
36
38
|
reportingIsoDurationMillisecondsV1: () => reportingIsoDurationMillisecondsV1,
|
|
39
|
+
reportingScheduleOriginV1: () => reportingScheduleOriginV1,
|
|
37
40
|
reportingSourceCapabilitiesSha256V1: () => reportingSourceCapabilitiesSha256V1,
|
|
38
|
-
reportingSourceCapabilitiesV1: () => reportingSourceCapabilitiesV1
|
|
41
|
+
reportingSourceCapabilitiesV1: () => reportingSourceCapabilitiesV1,
|
|
42
|
+
reportingUtcOffsetChangesV1: () => reportingUtcOffsetChangesV1,
|
|
43
|
+
reportingUtcOffsetMinutesV1: () => reportingUtcOffsetMinutesV1
|
|
39
44
|
});
|
|
40
45
|
module.exports = __toCommonJS(source_exports);
|
|
41
46
|
var import_node_crypto = require("node:crypto");
|
|
@@ -524,9 +529,69 @@ function sourceLocalDate(instant, timezone) {
|
|
|
524
529
|
const values = Object.fromEntries(parts.map((part) => [part.type, part.value]));
|
|
525
530
|
return `${values.year}-${values.month}-${values.day}`;
|
|
526
531
|
}
|
|
532
|
+
const REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1 = Date.UTC(1970, 0, 1);
|
|
533
|
+
const zonedFormatters = /* @__PURE__ */ new Map();
|
|
534
|
+
function zonedFormatter(timeZone) {
|
|
535
|
+
let formatter = zonedFormatters.get(timeZone);
|
|
536
|
+
if (!formatter) {
|
|
537
|
+
formatter = new Intl.DateTimeFormat("en-US", {
|
|
538
|
+
timeZone,
|
|
539
|
+
hourCycle: "h23",
|
|
540
|
+
year: "numeric",
|
|
541
|
+
month: "2-digit",
|
|
542
|
+
day: "2-digit",
|
|
543
|
+
hour: "2-digit",
|
|
544
|
+
minute: "2-digit",
|
|
545
|
+
second: "2-digit"
|
|
546
|
+
});
|
|
547
|
+
zonedFormatters.set(timeZone, formatter);
|
|
548
|
+
}
|
|
549
|
+
return formatter;
|
|
550
|
+
}
|
|
551
|
+
function zonedParts(timeZone, instantMs) {
|
|
552
|
+
const parts = zonedFormatter(timeZone).formatToParts(new Date(instantMs));
|
|
553
|
+
const field = (type) => Number(parts.find((part) => part.type === type)?.value);
|
|
554
|
+
return {
|
|
555
|
+
year: field("year"),
|
|
556
|
+
month: field("month"),
|
|
557
|
+
day: field("day"),
|
|
558
|
+
hour: field("hour"),
|
|
559
|
+
minute: field("minute"),
|
|
560
|
+
second: field("second")
|
|
561
|
+
};
|
|
562
|
+
}
|
|
563
|
+
function reportingUtcOffsetMinutesV1(timeZone, instantMs) {
|
|
564
|
+
const parts = zonedParts(timeZone, instantMs);
|
|
565
|
+
const asUtc = Date.UTC(parts.year, parts.month - 1, parts.day, parts.hour, parts.minute, parts.second);
|
|
566
|
+
return Math.round((asUtc - (instantMs - instantMs % 1e3)) / 6e4);
|
|
567
|
+
}
|
|
568
|
+
const REPORTING_OFFSET_PROBE_STEP_MS_V1 = 10 * 864e5;
|
|
569
|
+
function reportingUtcOffsetChangesV1(timeZone, startMs, endMs) {
|
|
570
|
+
const baseline = reportingUtcOffsetMinutesV1(timeZone, startMs);
|
|
571
|
+
for (let instant = startMs; instant < endMs; instant += REPORTING_OFFSET_PROBE_STEP_MS_V1) {
|
|
572
|
+
if (reportingUtcOffsetMinutesV1(timeZone, instant) !== baseline) return true;
|
|
573
|
+
}
|
|
574
|
+
return reportingUtcOffsetMinutesV1(timeZone, endMs) !== baseline;
|
|
575
|
+
}
|
|
576
|
+
function reportingIsSourceLocalMidnightV1(instantMs, timeZone) {
|
|
577
|
+
if (instantMs % 1e3 !== 0) return false;
|
|
578
|
+
const parts = zonedParts(timeZone, instantMs);
|
|
579
|
+
return parts.hour === 0 && parts.minute === 0 && parts.second === 0;
|
|
580
|
+
}
|
|
581
|
+
function reportingScheduleOriginV1(alignment, timeZone) {
|
|
582
|
+
if (alignment === "utc") return REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1;
|
|
583
|
+
let instant = REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1;
|
|
584
|
+
for (let pass = 0; pass < 3; pass += 1) {
|
|
585
|
+
const candidate = REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1 - reportingUtcOffsetMinutesV1(timeZone, instant) * 6e4;
|
|
586
|
+
if (candidate === instant) break;
|
|
587
|
+
instant = candidate;
|
|
588
|
+
}
|
|
589
|
+
return instant;
|
|
590
|
+
}
|
|
527
591
|
// Annotate the CommonJS export names for ESM import in node:
|
|
528
592
|
0 && (module.exports = {
|
|
529
593
|
REPORTING_MAX_SOURCE_WINDOW_DAYS_V1,
|
|
594
|
+
REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1,
|
|
530
595
|
ReportingIsoDurationV1Schema,
|
|
531
596
|
ReportingMetricOrDimensionNameV1Schema,
|
|
532
597
|
ReportingSourceCapabilitiesV1JsonSchema,
|
|
@@ -541,7 +606,11 @@ function sourceLocalDate(instant, timezone) {
|
|
|
541
606
|
ReportingSourceSliceRequestV1Schema,
|
|
542
607
|
ReportingSourceWindowingV1Schema,
|
|
543
608
|
completedReportingSourceResponseV1,
|
|
609
|
+
reportingIsSourceLocalMidnightV1,
|
|
544
610
|
reportingIsoDurationMillisecondsV1,
|
|
611
|
+
reportingScheduleOriginV1,
|
|
545
612
|
reportingSourceCapabilitiesSha256V1,
|
|
546
|
-
reportingSourceCapabilitiesV1
|
|
613
|
+
reportingSourceCapabilitiesV1,
|
|
614
|
+
reportingUtcOffsetChangesV1,
|
|
615
|
+
reportingUtcOffsetMinutesV1
|
|
547
616
|
});
|
|
@@ -500,8 +500,68 @@ function sourceLocalDate(instant, timezone) {
|
|
|
500
500
|
const values = Object.fromEntries(parts.map((part) => [part.type, part.value]));
|
|
501
501
|
return `${values.year}-${values.month}-${values.day}`;
|
|
502
502
|
}
|
|
503
|
+
const REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1 = Date.UTC(1970, 0, 1);
|
|
504
|
+
const zonedFormatters = /* @__PURE__ */ new Map();
|
|
505
|
+
function zonedFormatter(timeZone) {
|
|
506
|
+
let formatter = zonedFormatters.get(timeZone);
|
|
507
|
+
if (!formatter) {
|
|
508
|
+
formatter = new Intl.DateTimeFormat("en-US", {
|
|
509
|
+
timeZone,
|
|
510
|
+
hourCycle: "h23",
|
|
511
|
+
year: "numeric",
|
|
512
|
+
month: "2-digit",
|
|
513
|
+
day: "2-digit",
|
|
514
|
+
hour: "2-digit",
|
|
515
|
+
minute: "2-digit",
|
|
516
|
+
second: "2-digit"
|
|
517
|
+
});
|
|
518
|
+
zonedFormatters.set(timeZone, formatter);
|
|
519
|
+
}
|
|
520
|
+
return formatter;
|
|
521
|
+
}
|
|
522
|
+
function zonedParts(timeZone, instantMs) {
|
|
523
|
+
const parts = zonedFormatter(timeZone).formatToParts(new Date(instantMs));
|
|
524
|
+
const field = (type) => Number(parts.find((part) => part.type === type)?.value);
|
|
525
|
+
return {
|
|
526
|
+
year: field("year"),
|
|
527
|
+
month: field("month"),
|
|
528
|
+
day: field("day"),
|
|
529
|
+
hour: field("hour"),
|
|
530
|
+
minute: field("minute"),
|
|
531
|
+
second: field("second")
|
|
532
|
+
};
|
|
533
|
+
}
|
|
534
|
+
function reportingUtcOffsetMinutesV1(timeZone, instantMs) {
|
|
535
|
+
const parts = zonedParts(timeZone, instantMs);
|
|
536
|
+
const asUtc = Date.UTC(parts.year, parts.month - 1, parts.day, parts.hour, parts.minute, parts.second);
|
|
537
|
+
return Math.round((asUtc - (instantMs - instantMs % 1e3)) / 6e4);
|
|
538
|
+
}
|
|
539
|
+
const REPORTING_OFFSET_PROBE_STEP_MS_V1 = 10 * 864e5;
|
|
540
|
+
function reportingUtcOffsetChangesV1(timeZone, startMs, endMs) {
|
|
541
|
+
const baseline = reportingUtcOffsetMinutesV1(timeZone, startMs);
|
|
542
|
+
for (let instant = startMs; instant < endMs; instant += REPORTING_OFFSET_PROBE_STEP_MS_V1) {
|
|
543
|
+
if (reportingUtcOffsetMinutesV1(timeZone, instant) !== baseline) return true;
|
|
544
|
+
}
|
|
545
|
+
return reportingUtcOffsetMinutesV1(timeZone, endMs) !== baseline;
|
|
546
|
+
}
|
|
547
|
+
function reportingIsSourceLocalMidnightV1(instantMs, timeZone) {
|
|
548
|
+
if (instantMs % 1e3 !== 0) return false;
|
|
549
|
+
const parts = zonedParts(timeZone, instantMs);
|
|
550
|
+
return parts.hour === 0 && parts.minute === 0 && parts.second === 0;
|
|
551
|
+
}
|
|
552
|
+
function reportingScheduleOriginV1(alignment, timeZone) {
|
|
553
|
+
if (alignment === "utc") return REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1;
|
|
554
|
+
let instant = REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1;
|
|
555
|
+
for (let pass = 0; pass < 3; pass += 1) {
|
|
556
|
+
const candidate = REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1 - reportingUtcOffsetMinutesV1(timeZone, instant) * 6e4;
|
|
557
|
+
if (candidate === instant) break;
|
|
558
|
+
instant = candidate;
|
|
559
|
+
}
|
|
560
|
+
return instant;
|
|
561
|
+
}
|
|
503
562
|
export {
|
|
504
563
|
REPORTING_MAX_SOURCE_WINDOW_DAYS_V1,
|
|
564
|
+
REPORTING_SCHEDULE_ORIGIN_UTC_DATE_V1,
|
|
505
565
|
ReportingIsoDurationV1Schema,
|
|
506
566
|
ReportingMetricOrDimensionNameV1Schema,
|
|
507
567
|
ReportingSourceCapabilitiesV1JsonSchema,
|
|
@@ -516,7 +576,11 @@ export {
|
|
|
516
576
|
ReportingSourceSliceRequestV1Schema,
|
|
517
577
|
ReportingSourceWindowingV1Schema,
|
|
518
578
|
completedReportingSourceResponseV1,
|
|
579
|
+
reportingIsSourceLocalMidnightV1,
|
|
519
580
|
reportingIsoDurationMillisecondsV1,
|
|
581
|
+
reportingScheduleOriginV1,
|
|
520
582
|
reportingSourceCapabilitiesSha256V1,
|
|
521
|
-
reportingSourceCapabilitiesV1
|
|
583
|
+
reportingSourceCapabilitiesV1,
|
|
584
|
+
reportingUtcOffsetChangesV1,
|
|
585
|
+
reportingUtcOffsetMinutesV1
|
|
522
586
|
};
|
|
@@ -43,7 +43,8 @@ import { z } from 'zod';
|
|
|
43
43
|
import * as schemas from '../types/schemas.generated.mjs';
|
|
44
44
|
import type { CanonicalGetProductsRequest } from '../v2/projection/creative-delivery.mjs';
|
|
45
45
|
import type { KnownToolRequestSchemas } from '../utils/tool-request-schemas.mjs';
|
|
46
|
-
import { type ResolvedToolSchemaDocument, type ResponseVariant } from '../validation/schema-loader.mjs';
|
|
46
|
+
import { getSchemaDocumentByRef, type Direction, type ResolvedToolSchemaDocument, type ResponseVariant } from '../validation/schema-loader.mjs';
|
|
47
|
+
import type { ValidateFunction } from 'ajv';
|
|
47
48
|
export * from '../types/schemas.generated.mjs';
|
|
48
49
|
export type { PlacementPresentationDocument, PlacementPresentationReference } from '../types/core.generated.mjs';
|
|
49
50
|
type LooseObjectShapeFor<T extends object> = {
|
|
@@ -180,10 +181,30 @@ export interface ToolResponseSchemaLookupOptions extends ToolSchemaLookupOptions
|
|
|
180
181
|
variant?: ResponseVariant;
|
|
181
182
|
}
|
|
182
183
|
export type VersionedToolSchema = ResolvedToolSchemaDocument;
|
|
184
|
+
/**
|
|
185
|
+
* Retrieve one immutable protocol-authored JSON Schema document by its path
|
|
186
|
+
* within a selected AdCP bundle. This exposes the authored `$ref` graph as a
|
|
187
|
+
* separate surface from the self-contained bundled documents returned by
|
|
188
|
+
* {@link getToolInputSchema} and {@link getToolResponseSchema}. Validation
|
|
189
|
+
* callers should normally prefer {@link getCanonicalToolValidator} so
|
|
190
|
+
* reference registration stays internal.
|
|
191
|
+
*/
|
|
192
|
+
export { getSchemaDocumentByRef };
|
|
183
193
|
/** Retrieve the protocol-authored request JSON Schema for a specific AdCP release. */
|
|
184
194
|
export declare function getToolInputSchema(toolName: string, options?: ToolSchemaLookupOptions): VersionedToolSchema | undefined;
|
|
185
195
|
/** Retrieve a protocol-authored response JSON Schema for a specific AdCP release. */
|
|
186
196
|
export declare function getToolResponseSchema(toolName: string, options?: ToolResponseSchemaLookupOptions): VersionedToolSchema | undefined;
|
|
197
|
+
/**
|
|
198
|
+
* Compile the exact protocol-authored JSON Schema for offline conformance and
|
|
199
|
+
* CI validation. Unlike the SDK's live-wire response validation, this does not
|
|
200
|
+
* apply `relaxResponseRoot`, so extensible envelope fields can be rejected when
|
|
201
|
+
* the selected normative schema does not declare them.
|
|
202
|
+
*
|
|
203
|
+
* This validator is not intended for validating live wire responses, whose
|
|
204
|
+
* transport envelope can carry extension fields. It uses `allErrors: true`, so
|
|
205
|
+
* every call reports all violations collected by AJV in `validator.errors`.
|
|
206
|
+
*/
|
|
207
|
+
export declare function getCanonicalToolValidator(toolName: string, direction: Direction, options?: ToolSchemaLookupOptions): ValidateFunction | undefined;
|
|
187
208
|
type InputShape = Record<string, z.ZodType>;
|
|
188
209
|
type InputSchema = z.ZodType;
|
|
189
210
|
type ShapeOf<T> = T extends {
|
|
@@ -43,7 +43,8 @@ import { z } from 'zod';
|
|
|
43
43
|
import * as schemas from '../types/schemas.generated';
|
|
44
44
|
import type { CanonicalGetProductsRequest } from '../v2/projection/creative-delivery';
|
|
45
45
|
import type { KnownToolRequestSchemas } from '../utils/tool-request-schemas';
|
|
46
|
-
import { type ResolvedToolSchemaDocument, type ResponseVariant } from '../validation/schema-loader';
|
|
46
|
+
import { getSchemaDocumentByRef, type Direction, type ResolvedToolSchemaDocument, type ResponseVariant } from '../validation/schema-loader';
|
|
47
|
+
import type { ValidateFunction } from 'ajv';
|
|
47
48
|
export * from '../types/schemas.generated';
|
|
48
49
|
export type { PlacementPresentationDocument, PlacementPresentationReference } from '../types/core.generated';
|
|
49
50
|
type LooseObjectShapeFor<T extends object> = {
|
|
@@ -180,10 +181,30 @@ export interface ToolResponseSchemaLookupOptions extends ToolSchemaLookupOptions
|
|
|
180
181
|
variant?: ResponseVariant;
|
|
181
182
|
}
|
|
182
183
|
export type VersionedToolSchema = ResolvedToolSchemaDocument;
|
|
184
|
+
/**
|
|
185
|
+
* Retrieve one immutable protocol-authored JSON Schema document by its path
|
|
186
|
+
* within a selected AdCP bundle. This exposes the authored `$ref` graph as a
|
|
187
|
+
* separate surface from the self-contained bundled documents returned by
|
|
188
|
+
* {@link getToolInputSchema} and {@link getToolResponseSchema}. Validation
|
|
189
|
+
* callers should normally prefer {@link getCanonicalToolValidator} so
|
|
190
|
+
* reference registration stays internal.
|
|
191
|
+
*/
|
|
192
|
+
export { getSchemaDocumentByRef };
|
|
183
193
|
/** Retrieve the protocol-authored request JSON Schema for a specific AdCP release. */
|
|
184
194
|
export declare function getToolInputSchema(toolName: string, options?: ToolSchemaLookupOptions): VersionedToolSchema | undefined;
|
|
185
195
|
/** Retrieve a protocol-authored response JSON Schema for a specific AdCP release. */
|
|
186
196
|
export declare function getToolResponseSchema(toolName: string, options?: ToolResponseSchemaLookupOptions): VersionedToolSchema | undefined;
|
|
197
|
+
/**
|
|
198
|
+
* Compile the exact protocol-authored JSON Schema for offline conformance and
|
|
199
|
+
* CI validation. Unlike the SDK's live-wire response validation, this does not
|
|
200
|
+
* apply `relaxResponseRoot`, so extensible envelope fields can be rejected when
|
|
201
|
+
* the selected normative schema does not declare them.
|
|
202
|
+
*
|
|
203
|
+
* This validator is not intended for validating live wire responses, whose
|
|
204
|
+
* transport envelope can carry extension fields. It uses `allErrors: true`, so
|
|
205
|
+
* every call reports all violations collected by AJV in `validator.errors`.
|
|
206
|
+
*/
|
|
207
|
+
export declare function getCanonicalToolValidator(toolName: string, direction: Direction, options?: ToolSchemaLookupOptions): ValidateFunction | undefined;
|
|
187
208
|
type InputShape = Record<string, z.ZodType>;
|
|
188
209
|
type InputSchema = z.ZodType;
|
|
189
210
|
type ShapeOf<T> = T extends {
|
|
@@ -43,6 +43,8 @@ __export(schemas_exports, {
|
|
|
43
43
|
TOOL_RESPONSE_SCHEMAS: () => import_response_schemas.TOOL_RESPONSE_SCHEMAS,
|
|
44
44
|
customToolFor: () => customToolFor,
|
|
45
45
|
customToolForSchema: () => customToolForSchema,
|
|
46
|
+
getCanonicalToolValidator: () => getCanonicalToolValidator,
|
|
47
|
+
getSchemaDocumentByRef: () => import_schema_loader.getSchemaDocumentByRef,
|
|
46
48
|
getToolInputSchema: () => getToolInputSchema,
|
|
47
49
|
getToolResponseSchema: () => getToolResponseSchema
|
|
48
50
|
});
|
|
@@ -72,6 +74,9 @@ function getToolInputSchema(toolName, options = {}) {
|
|
|
72
74
|
function getToolResponseSchema(toolName, options = {}) {
|
|
73
75
|
return (0, import_schema_loader.getToolSchemaDocument)(toolName, options.variant ?? "sync", (0, import_adcp_version_config.resolveAdcpVersion)(options.adcpVersion));
|
|
74
76
|
}
|
|
77
|
+
function getCanonicalToolValidator(toolName, direction, options = {}) {
|
|
78
|
+
return (0, import_schema_loader.getCanonicalToolValidatorForVersion)(toolName, direction, (0, import_adcp_version_config.resolveAdcpVersion)(options.adcpVersion));
|
|
79
|
+
}
|
|
75
80
|
function shapeOf(s) {
|
|
76
81
|
const candidate = s?.shape;
|
|
77
82
|
return candidate && typeof candidate === "object" ? candidate : void 0;
|
|
@@ -123,6 +128,8 @@ function customToolForSchema(name, description, inputSchema, handler) {
|
|
|
123
128
|
TOOL_RESPONSE_SCHEMAS,
|
|
124
129
|
customToolFor,
|
|
125
130
|
customToolForSchema,
|
|
131
|
+
getCanonicalToolValidator,
|
|
132
|
+
getSchemaDocumentByRef,
|
|
126
133
|
getToolInputSchema,
|
|
127
134
|
getToolResponseSchema,
|
|
128
135
|
...require('../types/schemas.generated.js')
|
|
@@ -3,6 +3,8 @@ import * as schemas from "../types/schemas.generated.mjs";
|
|
|
3
3
|
import { GetProductsRequest_FieldsValues } from "../types/inline-enums.generated.mjs";
|
|
4
4
|
import { TOOL_REQUEST_SCHEMAS } from "../utils/tool-request-schemas.mjs";
|
|
5
5
|
import {
|
|
6
|
+
getCanonicalToolValidatorForVersion,
|
|
7
|
+
getSchemaDocumentByRef,
|
|
6
8
|
getToolSchemaDocument
|
|
7
9
|
} from "../validation/schema-loader.mjs";
|
|
8
10
|
import { resolveAdcpVersion } from "../utils/adcp-version-config.mjs";
|
|
@@ -30,6 +32,9 @@ function getToolInputSchema(toolName, options = {}) {
|
|
|
30
32
|
function getToolResponseSchema(toolName, options = {}) {
|
|
31
33
|
return getToolSchemaDocument(toolName, options.variant ?? "sync", resolveAdcpVersion(options.adcpVersion));
|
|
32
34
|
}
|
|
35
|
+
function getCanonicalToolValidator(toolName, direction, options = {}) {
|
|
36
|
+
return getCanonicalToolValidatorForVersion(toolName, direction, resolveAdcpVersion(options.adcpVersion));
|
|
37
|
+
}
|
|
33
38
|
function shapeOf(s) {
|
|
34
39
|
const candidate = s?.shape;
|
|
35
40
|
return candidate && typeof candidate === "object" ? candidate : void 0;
|
|
@@ -80,6 +85,8 @@ export {
|
|
|
80
85
|
TOOL_RESPONSE_SCHEMAS,
|
|
81
86
|
customToolFor,
|
|
82
87
|
customToolForSchema,
|
|
88
|
+
getCanonicalToolValidator,
|
|
89
|
+
getSchemaDocumentByRef,
|
|
83
90
|
getToolInputSchema,
|
|
84
91
|
getToolResponseSchema
|
|
85
92
|
};
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
"source_sha": "4e553ad955f83b49c7d221ab5c3ff78237ad02e3",
|
|
5
5
|
"source_tarball_sha256": "580656d6466ef9f0d1119985e6726c2efea718dc671e2ad30957fcb2fd54af0f",
|
|
6
6
|
"upstream_adcp_version": "2.5.3",
|
|
7
|
-
"synced_at": "2026-09-
|
|
7
|
+
"synced_at": "2026-09-18T20:08:01.998Z"
|
|
8
8
|
}
|
|
@@ -1398,6 +1398,24 @@ export interface AdcpServerConfig<TAccount = unknown> {
|
|
|
1398
1398
|
* the principal is still the authenticated buyer.
|
|
1399
1399
|
*/
|
|
1400
1400
|
resolveIdempotencyPrincipal?: (ctx: HandlerContext<TAccount>, params: IdempotencyPrincipalParams, toolName: AdcpServerToolName) => string | undefined;
|
|
1401
|
+
/**
|
|
1402
|
+
* Resolve the reporting consumer identity a `sync_reporting_status` receipt
|
|
1403
|
+
* is deposited for — the same identity the receipt handler records under.
|
|
1404
|
+
*
|
|
1405
|
+
* When present it is the replay namespace for that tool. The credential is
|
|
1406
|
+
* not a safe substitute: an adopter may map two operator seats sharing one
|
|
1407
|
+
* OAuth `client_id` to different reporting consumers, and keying replay by
|
|
1408
|
+
* `oauth:<client_id>` then let the second seat be served the first's cached
|
|
1409
|
+
* response and never record its own receipt. Absent this resolver the
|
|
1410
|
+
* framework falls back to the canonical credential identity, which is
|
|
1411
|
+
* correct exactly when the credential *is* the consumer.
|
|
1412
|
+
*
|
|
1413
|
+
* `createAdcpServerFromPlatform` wires this from the reporting platform's
|
|
1414
|
+
* own `resolveConsumerId`, so a service-installed deployment gets it for
|
|
1415
|
+
* free. Called once per dispatched `sync_reporting_status`, in addition to
|
|
1416
|
+
* the receipt handler's own call.
|
|
1417
|
+
*/
|
|
1418
|
+
resolveReportingConsumerId?: (ctx: HandlerContext<TAccount>, params: Record<string, unknown>) => string | Promise<string>;
|
|
1401
1419
|
/**
|
|
1402
1420
|
* Server-level prose surfaced on MCP `initialize`. Two forms:
|
|
1403
1421
|
*
|
|
@@ -1398,6 +1398,24 @@ export interface AdcpServerConfig<TAccount = unknown> {
|
|
|
1398
1398
|
* the principal is still the authenticated buyer.
|
|
1399
1399
|
*/
|
|
1400
1400
|
resolveIdempotencyPrincipal?: (ctx: HandlerContext<TAccount>, params: IdempotencyPrincipalParams, toolName: AdcpServerToolName) => string | undefined;
|
|
1401
|
+
/**
|
|
1402
|
+
* Resolve the reporting consumer identity a `sync_reporting_status` receipt
|
|
1403
|
+
* is deposited for — the same identity the receipt handler records under.
|
|
1404
|
+
*
|
|
1405
|
+
* When present it is the replay namespace for that tool. The credential is
|
|
1406
|
+
* not a safe substitute: an adopter may map two operator seats sharing one
|
|
1407
|
+
* OAuth `client_id` to different reporting consumers, and keying replay by
|
|
1408
|
+
* `oauth:<client_id>` then let the second seat be served the first's cached
|
|
1409
|
+
* response and never record its own receipt. Absent this resolver the
|
|
1410
|
+
* framework falls back to the canonical credential identity, which is
|
|
1411
|
+
* correct exactly when the credential *is* the consumer.
|
|
1412
|
+
*
|
|
1413
|
+
* `createAdcpServerFromPlatform` wires this from the reporting platform's
|
|
1414
|
+
* own `resolveConsumerId`, so a service-installed deployment gets it for
|
|
1415
|
+
* free. Called once per dispatched `sync_reporting_status`, in addition to
|
|
1416
|
+
* the receipt handler's own call.
|
|
1417
|
+
*/
|
|
1418
|
+
resolveReportingConsumerId?: (ctx: HandlerContext<TAccount>, params: Record<string, unknown>) => string | Promise<string>;
|
|
1401
1419
|
/**
|
|
1402
1420
|
* Server-level prose surfaced on MCP `initialize`. Two forms:
|
|
1403
1421
|
*
|
|
@@ -298,7 +298,7 @@ function thrownAdcpErrorRecovery(response) {
|
|
|
298
298
|
}
|
|
299
299
|
return import_error_codes.DEFAULT_UNKNOWN_ERROR_RECOVERY;
|
|
300
300
|
}
|
|
301
|
-
function resolveExtraScope(toolName, params, account, sessionKey, proposalScope, callerMutationScope) {
|
|
301
|
+
function resolveExtraScope(toolName, params, account, sessionKey, proposalScope, callerMutationScope, callerPrincipal) {
|
|
302
302
|
const accountLike = account;
|
|
303
303
|
const accountId = typeof accountLike?.id === "string" ? accountLike.id : typeof accountLike?.account_id === "string" ? accountLike.account_id : void 0;
|
|
304
304
|
const tenantId = typeof accountLike?.tenant_id === "string" ? accountLike.tenant_id : typeof accountLike?.tenantId === "string" ? accountLike.tenantId : void 0;
|
|
@@ -309,6 +309,10 @@ function resolveExtraScope(toolName, params, account, sessionKey, proposalScope,
|
|
|
309
309
|
callerMutationScope.account_id ?? null
|
|
310
310
|
]);
|
|
311
311
|
}
|
|
312
|
+
if (toolName === "sync_reporting_status") {
|
|
313
|
+
if (callerPrincipal === void 0) return void 0;
|
|
314
|
+
return JSON.stringify([tenantId ?? null, accountId ?? null, callerPrincipal]);
|
|
315
|
+
}
|
|
312
316
|
if (toolName === "si_send_message") {
|
|
313
317
|
const sessionId = params.session_id;
|
|
314
318
|
return typeof sessionId === "string" && sessionId.length > 0 ? sessionId : void 0;
|
|
@@ -467,6 +471,15 @@ function authenticatedPrincipalForContext(authInfo, agent) {
|
|
|
467
471
|
if (typeof authInfo?.clientId === "string" && authInfo.clientId.length > 0) return `client:${authInfo.clientId}`;
|
|
468
472
|
return void 0;
|
|
469
473
|
}
|
|
474
|
+
function reportingConsumerPrincipalForContext(authInfo, agent) {
|
|
475
|
+
const credential = authInfo?.credential;
|
|
476
|
+
if (credential?.kind === "http_sig") return `http_sig:${credential.agent_url}`;
|
|
477
|
+
if (credential?.kind === "oauth") return `oauth:${credential.client_id}`;
|
|
478
|
+
if (credential?.kind === "api_key") return `api_key:${credential.key_id}`;
|
|
479
|
+
if (typeof authInfo?.clientId === "string" && authInfo.clientId.length > 0) return `client:${authInfo.clientId}`;
|
|
480
|
+
if (agent?.agent_url) return `agent:${agent.agent_url}`;
|
|
481
|
+
return void 0;
|
|
482
|
+
}
|
|
470
483
|
function taskOwnerScopeForContext(authInfo, sessionKey, agent, accountId) {
|
|
471
484
|
if (sessionKey !== void 0) return `session:${sessionKey}`;
|
|
472
485
|
if (agent?.agent_url) return `agent:${agent.agent_url}`;
|
|
@@ -1768,6 +1781,7 @@ function createAdcpServer(config) {
|
|
|
1768
1781
|
capabilities: capConfig,
|
|
1769
1782
|
idempotency: idempotencyConfig,
|
|
1770
1783
|
resolveIdempotencyPrincipal,
|
|
1784
|
+
resolveReportingConsumerId,
|
|
1771
1785
|
instructions: instructionsOption,
|
|
1772
1786
|
onInstructionsError = "skip",
|
|
1773
1787
|
taskStore,
|
|
@@ -2842,6 +2856,37 @@ function createAdcpServer(config) {
|
|
|
2842
2856
|
);
|
|
2843
2857
|
}
|
|
2844
2858
|
}
|
|
2859
|
+
if (toolName === "sync_reporting_status" && idempotency !== void 0) {
|
|
2860
|
+
const namedByResolver = resolveReportingConsumerId !== void 0;
|
|
2861
|
+
const unidentified = namedByResolver ? ctx.authInfo === void 0 && ctx.agent === void 0 : reportingConsumerPrincipalForContext(ctx.authInfo, ctx.agent) === void 0;
|
|
2862
|
+
if (unidentified) {
|
|
2863
|
+
return finalize(
|
|
2864
|
+
(0, import_errors2.adcpError)("AUTH_MISSING", {
|
|
2865
|
+
message: "sync_reporting_status requires an authenticated caller principal"
|
|
2866
|
+
})
|
|
2867
|
+
);
|
|
2868
|
+
}
|
|
2869
|
+
}
|
|
2870
|
+
let reportingConsumerIdentity;
|
|
2871
|
+
if (toolName === "sync_reporting_status" && idempotency !== void 0 && resolveReportingConsumerId) {
|
|
2872
|
+
try {
|
|
2873
|
+
const resolved = await resolveReportingConsumerId(ctx, params);
|
|
2874
|
+
if (typeof resolved !== "string" || resolved.length === 0 || resolved.length > 255) {
|
|
2875
|
+
throw new Error("resolveReportingConsumerId must return a durable id of 1-255 characters");
|
|
2876
|
+
}
|
|
2877
|
+
reportingConsumerIdentity = resolved;
|
|
2878
|
+
} catch (err) {
|
|
2879
|
+
if (err instanceof import_async_outcome.AdcpError) return finalize(projectThrownAdcpError(err));
|
|
2880
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
2881
|
+
logger.error("Reporting consumer resolution failed", { tool: toolName, error: reason });
|
|
2882
|
+
return finalize(
|
|
2883
|
+
(0, import_errors2.adcpError)("SERVICE_UNAVAILABLE", {
|
|
2884
|
+
message: "Reporting consumer resolution failed",
|
|
2885
|
+
...exposeErrorDetails && { details: { reason: (0, import_redact.redactCredentialPatterns)(reason) } }
|
|
2886
|
+
})
|
|
2887
|
+
);
|
|
2888
|
+
}
|
|
2889
|
+
}
|
|
2845
2890
|
if (CALLER_SCOPED_MUTATION_TOOLS.has(toolName)) {
|
|
2846
2891
|
if (ctx.authInfo === void 0 && ctx.agent === void 0) {
|
|
2847
2892
|
return finalize(
|
|
@@ -2955,7 +3000,12 @@ function createAdcpServer(config) {
|
|
|
2955
3000
|
ctx.account,
|
|
2956
3001
|
ctx.sessionKey,
|
|
2957
3002
|
ctx.proposalRefinementScope,
|
|
2958
|
-
ctx.callerMutationScope
|
|
3003
|
+
ctx.callerMutationScope,
|
|
3004
|
+
// The resolved reporting consumer when the deployment can name it,
|
|
3005
|
+
// and otherwise the canonical credential identity, so callers
|
|
3006
|
+
// differing only by credential -- including two behind one
|
|
3007
|
+
// registered buyer agent -- do not share a replay namespace.
|
|
3008
|
+
reportingConsumerIdentity !== void 0 ? `consumer:${reportingConsumerIdentity}` : reportingConsumerPrincipalForContext(ctx.authInfo, ctx.agent)
|
|
2959
3009
|
);
|
|
2960
3010
|
const idempotencyPayload = buildIdempotencyPayload(toolName, params, ctx.account, ctx.sessionKey);
|
|
2961
3011
|
try {
|