@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
|
@@ -81,5 +81,8 @@ export interface ControllerSeedingResult {
|
|
|
81
81
|
* not applicable (opt-out, no declaration, empty fixtures) so the runner can
|
|
82
82
|
* treat a no-op identically to a non-seeding storyboard.
|
|
83
83
|
*/
|
|
84
|
-
export declare function runControllerSeeding(client: TestClient, storyboard: Storyboard, options: StoryboardRunOptions, context: StoryboardContext, discoveryClient?: TestClient
|
|
84
|
+
export declare function runControllerSeeding(client: TestClient, storyboard: Storyboard, options: StoryboardRunOptions, context: StoryboardContext, discoveryClient?: TestClient, resolveFixtureAgent?: (task: 'comply_test_controller' | 'get_products') => {
|
|
85
|
+
client: TestClient;
|
|
86
|
+
options: StoryboardRunOptions;
|
|
87
|
+
}): Promise<ControllerSeedingResult | null>;
|
|
85
88
|
export {};
|
|
@@ -81,5 +81,8 @@ export interface ControllerSeedingResult {
|
|
|
81
81
|
* not applicable (opt-out, no declaration, empty fixtures) so the runner can
|
|
82
82
|
* treat a no-op identically to a non-seeding storyboard.
|
|
83
83
|
*/
|
|
84
|
-
export declare function runControllerSeeding(client: TestClient, storyboard: Storyboard, options: StoryboardRunOptions, context: StoryboardContext, discoveryClient?: TestClient
|
|
84
|
+
export declare function runControllerSeeding(client: TestClient, storyboard: Storyboard, options: StoryboardRunOptions, context: StoryboardContext, discoveryClient?: TestClient, resolveFixtureAgent?: (task: 'comply_test_controller' | 'get_products') => {
|
|
85
|
+
client: TestClient;
|
|
86
|
+
options: StoryboardRunOptions;
|
|
87
|
+
}): Promise<ControllerSeedingResult | null>;
|
|
85
88
|
export {};
|
|
@@ -205,17 +205,26 @@ function seedFixtureFromFields(fields) {
|
|
|
205
205
|
}
|
|
206
206
|
return fields;
|
|
207
207
|
}
|
|
208
|
-
async function runControllerSeeding(client, storyboard, options, context, discoveryClient = client) {
|
|
208
|
+
async function runControllerSeeding(client, storyboard, options, context, discoveryClient = client, resolveFixtureAgent) {
|
|
209
209
|
if (options.skip_controller_seeding === true) return null;
|
|
210
210
|
const calls = buildSeedCalls(storyboard.fixtures);
|
|
211
211
|
if (calls.length === 0) return null;
|
|
212
212
|
if (storyboard.fixture_resolution !== void 0) {
|
|
213
213
|
const resolutionCalls = storyboard.prerequisites?.controller_seeding === true ? calls : calls.filter((call) => call.scenario === "seed_product" || call.scenario === "seed_pricing_option");
|
|
214
214
|
if (resolutionCalls.length === 0) return null;
|
|
215
|
-
return runDeclaredFixtureResolution(
|
|
215
|
+
return runDeclaredFixtureResolution(
|
|
216
|
+
client,
|
|
217
|
+
discoveryClient,
|
|
218
|
+
storyboard,
|
|
219
|
+
options,
|
|
220
|
+
context,
|
|
221
|
+
resolutionCalls,
|
|
222
|
+
resolveFixtureAgent
|
|
223
|
+
);
|
|
216
224
|
}
|
|
217
225
|
if (storyboard.prerequisites?.controller_seeding !== true) return null;
|
|
218
|
-
|
|
226
|
+
const controllerRouteTools = resolveFixtureAgent ? resolveFixtureAgent("comply_test_controller").options.agentTools : options.agentTools;
|
|
227
|
+
if (controllerRouteTools && !controllerRouteTools.includes("comply_test_controller")) {
|
|
219
228
|
return buildMissingControllerResult(storyboard, calls, context);
|
|
220
229
|
}
|
|
221
230
|
const start = Date.now();
|
|
@@ -295,7 +304,7 @@ async function runControllerSeeding(client, storyboard, options, context, discov
|
|
|
295
304
|
failedCount
|
|
296
305
|
};
|
|
297
306
|
}
|
|
298
|
-
async function runDeclaredFixtureResolution(seedClient, discoveryClient, storyboard, options, context, calls) {
|
|
307
|
+
async function runDeclaredFixtureResolution(seedClient, discoveryClient, storyboard, options, context, calls, resolveFixtureAgent) {
|
|
299
308
|
const start = Date.now();
|
|
300
309
|
const authoringErrorResult = buildAuthoringErrorResult(storyboard, calls, context, start);
|
|
301
310
|
if (authoringErrorResult) return authoringErrorResult;
|
|
@@ -324,18 +333,40 @@ async function runDeclaredFixtureResolution(seedClient, discoveryClient, storybo
|
|
|
324
333
|
const claimedPricingOptions = /* @__PURE__ */ new Map();
|
|
325
334
|
const productStatuses = /* @__PURE__ */ new Map();
|
|
326
335
|
const seedContext = { correlation_id: `${storyboardCorrelationPrefix(storyboard)}--__seeding__` };
|
|
327
|
-
|
|
328
|
-
let
|
|
329
|
-
let
|
|
336
|
+
let seedOptions = options;
|
|
337
|
+
let discoveryOptions = options;
|
|
338
|
+
let seedPrepared = false;
|
|
339
|
+
let discoveryPrepared = false;
|
|
340
|
+
const controller = { missing: false, scenarios: null };
|
|
341
|
+
const prepareSeedAgent = async () => {
|
|
342
|
+
if (seedPrepared) return;
|
|
343
|
+
const selected = resolveFixtureAgent?.("comply_test_controller");
|
|
344
|
+
if (selected) {
|
|
345
|
+
seedClient = selected.client;
|
|
346
|
+
seedOptions = selected.options;
|
|
347
|
+
}
|
|
348
|
+
controller.missing = seedOptions.agentTools?.includes("comply_test_controller") === false;
|
|
349
|
+
controller.scenarios = controller.missing ? /* @__PURE__ */ new Set() : controllerScenarioSetFromOptions(seedOptions);
|
|
350
|
+
if (!controller.missing && !controller.scenarios) {
|
|
351
|
+
controller.scenarios = await fetchControllerScenarioSet(seedClient, seedOptions, seedContext);
|
|
352
|
+
}
|
|
353
|
+
seedPrepared = true;
|
|
354
|
+
};
|
|
355
|
+
const prepareDiscoveryAgent = () => {
|
|
356
|
+
if (discoveryPrepared) return;
|
|
357
|
+
const selected = resolveFixtureAgent?.("get_products");
|
|
358
|
+
if (selected) {
|
|
359
|
+
discoveryClient = selected.client;
|
|
360
|
+
discoveryOptions = selected.options;
|
|
361
|
+
}
|
|
362
|
+
discoveryPrepared = true;
|
|
363
|
+
};
|
|
330
364
|
const legacyCalls = calls.filter((call) => resolutionSpecForCall(call, specByKey) === void 0);
|
|
331
365
|
if (legacyCalls.length > 0) {
|
|
332
|
-
|
|
333
|
-
if (
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
}
|
|
337
|
-
if (advertisedScenarios) {
|
|
338
|
-
const unsupported = legacyCalls.find((call) => !call.authoring_error && !advertisedScenarios.has(call.scenario));
|
|
366
|
+
await prepareSeedAgent();
|
|
367
|
+
if (controller.missing) return buildMissingControllerResult(storyboard, legacyCalls, context);
|
|
368
|
+
if (controller.scenarios) {
|
|
369
|
+
const unsupported = legacyCalls.find((call) => !call.authoring_error && !controller.scenarios.has(call.scenario));
|
|
339
370
|
if (unsupported) {
|
|
340
371
|
return buildUnsupportedSeedResult(
|
|
341
372
|
storyboard,
|
|
@@ -351,18 +382,16 @@ async function runDeclaredFixtureResolution(seedClient, discoveryClient, storybo
|
|
|
351
382
|
const spec = resolutionSpecForCall(call, specByKey);
|
|
352
383
|
return !spec || spec.strategies.includes("seed");
|
|
353
384
|
});
|
|
354
|
-
if (
|
|
355
|
-
advertisedScenarios = await fetchControllerScenarioSet(seedClient, options, seedContext);
|
|
356
|
-
}
|
|
385
|
+
if (!resolveFixtureAgent && needsSeedStrategy && !seedPrepared) await prepareSeedAgent();
|
|
357
386
|
let catalogPromise;
|
|
358
|
-
const catalog = () => catalogPromise ??= discoverProductCatalog(discoveryClient,
|
|
387
|
+
const catalog = () => catalogPromise ??= discoverProductCatalog(discoveryClient, discoveryOptions, context);
|
|
359
388
|
let passedCount = 0;
|
|
360
389
|
let failedCount = 0;
|
|
361
390
|
let fixtureUnsatisfied = false;
|
|
362
391
|
for (const call of orderedCalls) {
|
|
363
392
|
const spec = resolutionSpecForCall(call, specByKey);
|
|
364
393
|
if (!spec) {
|
|
365
|
-
const legacy = await executeLegacySeedCall(seedClient, storyboard, call,
|
|
394
|
+
const legacy = await executeLegacySeedCall(seedClient, storyboard, call, seedOptions, context, seedContext);
|
|
366
395
|
if (legacy.step.skip_reason === "fixture_unsatisfied") {
|
|
367
396
|
return buildUnsupportedSeedResult(storyboard, legacyCalls, context, call.scenario, legacy.step.skip?.detail);
|
|
368
397
|
}
|
|
@@ -386,12 +415,13 @@ async function runDeclaredFixtureResolution(seedClient, discoveryClient, storybo
|
|
|
386
415
|
}
|
|
387
416
|
for (const strategy of parentUnavailable ? [] : spec.strategies) {
|
|
388
417
|
if (strategy === "seed") {
|
|
389
|
-
|
|
390
|
-
|
|
418
|
+
await prepareSeedAgent();
|
|
419
|
+
const advertised = controller.scenarios?.has(call.scenario);
|
|
420
|
+
if (controller.missing || advertised === false) {
|
|
391
421
|
attempts.push({
|
|
392
422
|
strategy,
|
|
393
423
|
disposition: "unavailable",
|
|
394
|
-
detail:
|
|
424
|
+
detail: controller.missing ? "comply_test_controller is not advertised" : `list_scenarios did not advertise ${call.scenario}`
|
|
395
425
|
});
|
|
396
426
|
continue;
|
|
397
427
|
}
|
|
@@ -409,7 +439,7 @@ async function runDeclaredFixtureResolution(seedClient, discoveryClient, storybo
|
|
|
409
439
|
params: isPlainRecord(controllerRequest.params) ? controllerRequest.params : call.params,
|
|
410
440
|
context: seedContext
|
|
411
441
|
},
|
|
412
|
-
|
|
442
|
+
seedOptions
|
|
413
443
|
);
|
|
414
444
|
const data = raw.data;
|
|
415
445
|
if (raw.success && data?.success === true) {
|
|
@@ -449,7 +479,8 @@ async function runDeclaredFixtureResolution(seedClient, discoveryClient, storybo
|
|
|
449
479
|
}
|
|
450
480
|
}
|
|
451
481
|
if (strategy === "discover") {
|
|
452
|
-
|
|
482
|
+
prepareDiscoveryAgent();
|
|
483
|
+
if (discoveryOptions.agentTools && !discoveryOptions.agentTools.includes("get_products")) {
|
|
453
484
|
attempts.push({
|
|
454
485
|
strategy,
|
|
455
486
|
disposition: "unavailable",
|
|
@@ -185,17 +185,26 @@ function seedFixtureFromFields(fields) {
|
|
|
185
185
|
}
|
|
186
186
|
return fields;
|
|
187
187
|
}
|
|
188
|
-
async function runControllerSeeding(client, storyboard, options, context, discoveryClient = client) {
|
|
188
|
+
async function runControllerSeeding(client, storyboard, options, context, discoveryClient = client, resolveFixtureAgent) {
|
|
189
189
|
if (options.skip_controller_seeding === true) return null;
|
|
190
190
|
const calls = buildSeedCalls(storyboard.fixtures);
|
|
191
191
|
if (calls.length === 0) return null;
|
|
192
192
|
if (storyboard.fixture_resolution !== void 0) {
|
|
193
193
|
const resolutionCalls = storyboard.prerequisites?.controller_seeding === true ? calls : calls.filter((call) => call.scenario === "seed_product" || call.scenario === "seed_pricing_option");
|
|
194
194
|
if (resolutionCalls.length === 0) return null;
|
|
195
|
-
return runDeclaredFixtureResolution(
|
|
195
|
+
return runDeclaredFixtureResolution(
|
|
196
|
+
client,
|
|
197
|
+
discoveryClient,
|
|
198
|
+
storyboard,
|
|
199
|
+
options,
|
|
200
|
+
context,
|
|
201
|
+
resolutionCalls,
|
|
202
|
+
resolveFixtureAgent
|
|
203
|
+
);
|
|
196
204
|
}
|
|
197
205
|
if (storyboard.prerequisites?.controller_seeding !== true) return null;
|
|
198
|
-
|
|
206
|
+
const controllerRouteTools = resolveFixtureAgent ? resolveFixtureAgent("comply_test_controller").options.agentTools : options.agentTools;
|
|
207
|
+
if (controllerRouteTools && !controllerRouteTools.includes("comply_test_controller")) {
|
|
199
208
|
return buildMissingControllerResult(storyboard, calls, context);
|
|
200
209
|
}
|
|
201
210
|
const start = Date.now();
|
|
@@ -275,7 +284,7 @@ async function runControllerSeeding(client, storyboard, options, context, discov
|
|
|
275
284
|
failedCount
|
|
276
285
|
};
|
|
277
286
|
}
|
|
278
|
-
async function runDeclaredFixtureResolution(seedClient, discoveryClient, storyboard, options, context, calls) {
|
|
287
|
+
async function runDeclaredFixtureResolution(seedClient, discoveryClient, storyboard, options, context, calls, resolveFixtureAgent) {
|
|
279
288
|
const start = Date.now();
|
|
280
289
|
const authoringErrorResult = buildAuthoringErrorResult(storyboard, calls, context, start);
|
|
281
290
|
if (authoringErrorResult) return authoringErrorResult;
|
|
@@ -304,18 +313,40 @@ async function runDeclaredFixtureResolution(seedClient, discoveryClient, storybo
|
|
|
304
313
|
const claimedPricingOptions = /* @__PURE__ */ new Map();
|
|
305
314
|
const productStatuses = /* @__PURE__ */ new Map();
|
|
306
315
|
const seedContext = { correlation_id: `${storyboardCorrelationPrefix(storyboard)}--__seeding__` };
|
|
307
|
-
|
|
308
|
-
let
|
|
309
|
-
let
|
|
316
|
+
let seedOptions = options;
|
|
317
|
+
let discoveryOptions = options;
|
|
318
|
+
let seedPrepared = false;
|
|
319
|
+
let discoveryPrepared = false;
|
|
320
|
+
const controller = { missing: false, scenarios: null };
|
|
321
|
+
const prepareSeedAgent = async () => {
|
|
322
|
+
if (seedPrepared) return;
|
|
323
|
+
const selected = resolveFixtureAgent?.("comply_test_controller");
|
|
324
|
+
if (selected) {
|
|
325
|
+
seedClient = selected.client;
|
|
326
|
+
seedOptions = selected.options;
|
|
327
|
+
}
|
|
328
|
+
controller.missing = seedOptions.agentTools?.includes("comply_test_controller") === false;
|
|
329
|
+
controller.scenarios = controller.missing ? /* @__PURE__ */ new Set() : controllerScenarioSetFromOptions(seedOptions);
|
|
330
|
+
if (!controller.missing && !controller.scenarios) {
|
|
331
|
+
controller.scenarios = await fetchControllerScenarioSet(seedClient, seedOptions, seedContext);
|
|
332
|
+
}
|
|
333
|
+
seedPrepared = true;
|
|
334
|
+
};
|
|
335
|
+
const prepareDiscoveryAgent = () => {
|
|
336
|
+
if (discoveryPrepared) return;
|
|
337
|
+
const selected = resolveFixtureAgent?.("get_products");
|
|
338
|
+
if (selected) {
|
|
339
|
+
discoveryClient = selected.client;
|
|
340
|
+
discoveryOptions = selected.options;
|
|
341
|
+
}
|
|
342
|
+
discoveryPrepared = true;
|
|
343
|
+
};
|
|
310
344
|
const legacyCalls = calls.filter((call) => resolutionSpecForCall(call, specByKey) === void 0);
|
|
311
345
|
if (legacyCalls.length > 0) {
|
|
312
|
-
|
|
313
|
-
if (
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
}
|
|
317
|
-
if (advertisedScenarios) {
|
|
318
|
-
const unsupported = legacyCalls.find((call) => !call.authoring_error && !advertisedScenarios.has(call.scenario));
|
|
346
|
+
await prepareSeedAgent();
|
|
347
|
+
if (controller.missing) return buildMissingControllerResult(storyboard, legacyCalls, context);
|
|
348
|
+
if (controller.scenarios) {
|
|
349
|
+
const unsupported = legacyCalls.find((call) => !call.authoring_error && !controller.scenarios.has(call.scenario));
|
|
319
350
|
if (unsupported) {
|
|
320
351
|
return buildUnsupportedSeedResult(
|
|
321
352
|
storyboard,
|
|
@@ -331,18 +362,16 @@ async function runDeclaredFixtureResolution(seedClient, discoveryClient, storybo
|
|
|
331
362
|
const spec = resolutionSpecForCall(call, specByKey);
|
|
332
363
|
return !spec || spec.strategies.includes("seed");
|
|
333
364
|
});
|
|
334
|
-
if (
|
|
335
|
-
advertisedScenarios = await fetchControllerScenarioSet(seedClient, options, seedContext);
|
|
336
|
-
}
|
|
365
|
+
if (!resolveFixtureAgent && needsSeedStrategy && !seedPrepared) await prepareSeedAgent();
|
|
337
366
|
let catalogPromise;
|
|
338
|
-
const catalog = () => catalogPromise ??= discoverProductCatalog(discoveryClient,
|
|
367
|
+
const catalog = () => catalogPromise ??= discoverProductCatalog(discoveryClient, discoveryOptions, context);
|
|
339
368
|
let passedCount = 0;
|
|
340
369
|
let failedCount = 0;
|
|
341
370
|
let fixtureUnsatisfied = false;
|
|
342
371
|
for (const call of orderedCalls) {
|
|
343
372
|
const spec = resolutionSpecForCall(call, specByKey);
|
|
344
373
|
if (!spec) {
|
|
345
|
-
const legacy = await executeLegacySeedCall(seedClient, storyboard, call,
|
|
374
|
+
const legacy = await executeLegacySeedCall(seedClient, storyboard, call, seedOptions, context, seedContext);
|
|
346
375
|
if (legacy.step.skip_reason === "fixture_unsatisfied") {
|
|
347
376
|
return buildUnsupportedSeedResult(storyboard, legacyCalls, context, call.scenario, legacy.step.skip?.detail);
|
|
348
377
|
}
|
|
@@ -366,12 +395,13 @@ async function runDeclaredFixtureResolution(seedClient, discoveryClient, storybo
|
|
|
366
395
|
}
|
|
367
396
|
for (const strategy of parentUnavailable ? [] : spec.strategies) {
|
|
368
397
|
if (strategy === "seed") {
|
|
369
|
-
|
|
370
|
-
|
|
398
|
+
await prepareSeedAgent();
|
|
399
|
+
const advertised = controller.scenarios?.has(call.scenario);
|
|
400
|
+
if (controller.missing || advertised === false) {
|
|
371
401
|
attempts.push({
|
|
372
402
|
strategy,
|
|
373
403
|
disposition: "unavailable",
|
|
374
|
-
detail:
|
|
404
|
+
detail: controller.missing ? "comply_test_controller is not advertised" : `list_scenarios did not advertise ${call.scenario}`
|
|
375
405
|
});
|
|
376
406
|
continue;
|
|
377
407
|
}
|
|
@@ -389,7 +419,7 @@ async function runDeclaredFixtureResolution(seedClient, discoveryClient, storybo
|
|
|
389
419
|
params: isPlainRecord(controllerRequest.params) ? controllerRequest.params : call.params,
|
|
390
420
|
context: seedContext
|
|
391
421
|
},
|
|
392
|
-
|
|
422
|
+
seedOptions
|
|
393
423
|
);
|
|
394
424
|
const data = raw.data;
|
|
395
425
|
if (raw.success && data?.success === true) {
|
|
@@ -429,7 +459,8 @@ async function runDeclaredFixtureResolution(seedClient, discoveryClient, storybo
|
|
|
429
459
|
}
|
|
430
460
|
}
|
|
431
461
|
if (strategy === "discover") {
|
|
432
|
-
|
|
462
|
+
prepareDiscoveryAgent();
|
|
463
|
+
if (discoveryOptions.agentTools && !discoveryOptions.agentTools.includes("get_products")) {
|
|
433
464
|
attempts.push({
|
|
434
465
|
strategy,
|
|
435
466
|
disposition: "unavailable",
|
|
@@ -15,6 +15,17 @@
|
|
|
15
15
|
* a task with required parameters would make the security_baseline
|
|
16
16
|
* runner misreport "agent failed auth" when the root cause is that
|
|
17
17
|
* schema validation rejected the probe before the auth layer ran.
|
|
18
|
+
*
|
|
19
|
+
* An agent that advertises none of the allowlist can still have its auth
|
|
20
|
+
* verified: {@link selectProbeTask} falls back to the MCP session probe, which
|
|
21
|
+
* calls a *canonical* AdCP read task the agent does advertise. An agent whose
|
|
22
|
+
* whole surface is its own invented tool names has nothing the runner will
|
|
23
|
+
* trust as a protected AdCP operation, and is reported
|
|
24
|
+
* `session_probe_ungradable` with a remedy rather than certified. That sentinel
|
|
25
|
+
* is intentionally absent from {@link PROBE_TASK_ALLOWLIST} so a kit cannot
|
|
26
|
+
* name it via `probe_task`; the runner resolves it, or a storyboard may name it
|
|
27
|
+
* directly, and either way `planMcpSessionSentinel` grades it honestly — and
|
|
28
|
+
* only on an explicit `protocol: 'mcp'`.
|
|
18
29
|
*/
|
|
19
30
|
import type { TestOptions } from '../types.mjs';
|
|
20
31
|
/**
|
|
@@ -34,10 +45,33 @@ export declare const PROBE_TASK_ALLOWLIST: readonly string[];
|
|
|
34
45
|
/**
|
|
35
46
|
* Select an advertised auth probe without dispatching an inapplicable tool.
|
|
36
47
|
* The configured task is a preference, not permission to call a tool the
|
|
37
|
-
* agent did not advertise.
|
|
38
|
-
*
|
|
48
|
+
* agent did not advertise.
|
|
49
|
+
*
|
|
50
|
+
* Resolution order:
|
|
51
|
+
* 1. Discovery unavailable (`advertisedTools === undefined`) → the caller's
|
|
52
|
+
* preference, unchanged. The runner has no tool list to vet it against.
|
|
53
|
+
* 2. The preference, when it is allowlisted AND advertised.
|
|
54
|
+
* 3. The first allowlisted task the agent advertises.
|
|
55
|
+
* 4. **MCP only**: the {@link MCP_SESSION_PROBE_TASK} sentinel
|
|
56
|
+
* (adcp-client#2940). An agent whose entire read surface sits outside the
|
|
57
|
+
* allowlist may still expose a canonical protected read
|
|
58
|
+
* (`get_principal`, `list_tasks`, …), and the sentinel drives a complete
|
|
59
|
+
* session lifecycle (`initialize` → `notifications/initialized` →
|
|
60
|
+
* `tools/call`) against one — so `security_baseline` can verify a
|
|
61
|
+
* correctly configured agent instead of reporting
|
|
62
|
+
* `auth_mechanism_verified: []`. The chosen tool is called with empty
|
|
63
|
+
* arguments; when the agent refuses that shape the probe reports
|
|
64
|
+
* *inconclusive* rather than guessing, which is the hazard the allowlist
|
|
65
|
+
* exists to avoid.
|
|
66
|
+
* 5. Anything other than an explicit `protocol: 'mcp'` → `undefined`
|
|
67
|
+
* (unchanged). A2A's `message/send` requires `params.message` and has no
|
|
68
|
+
* equivalent parameter-free protected operation, and an unset protocol
|
|
69
|
+
* means the caller never declared a transport — neither is a safe place
|
|
70
|
+
* to substitute an MCP probe.
|
|
39
71
|
*/
|
|
40
|
-
export declare function selectProbeTask(preferred: string | undefined, advertisedTools: readonly string[] | undefined
|
|
72
|
+
export declare function selectProbeTask(preferred: string | undefined, advertisedTools: readonly string[] | undefined, options?: {
|
|
73
|
+
protocol?: 'mcp' | 'a2a';
|
|
74
|
+
}): string | undefined;
|
|
41
75
|
/**
|
|
42
76
|
* Raised when a test kit violates the schema invariants above. Carries the
|
|
43
77
|
* field name so upstream loaders can render a YAML-friendly error.
|
|
@@ -15,6 +15,17 @@
|
|
|
15
15
|
* a task with required parameters would make the security_baseline
|
|
16
16
|
* runner misreport "agent failed auth" when the root cause is that
|
|
17
17
|
* schema validation rejected the probe before the auth layer ran.
|
|
18
|
+
*
|
|
19
|
+
* An agent that advertises none of the allowlist can still have its auth
|
|
20
|
+
* verified: {@link selectProbeTask} falls back to the MCP session probe, which
|
|
21
|
+
* calls a *canonical* AdCP read task the agent does advertise. An agent whose
|
|
22
|
+
* whole surface is its own invented tool names has nothing the runner will
|
|
23
|
+
* trust as a protected AdCP operation, and is reported
|
|
24
|
+
* `session_probe_ungradable` with a remedy rather than certified. That sentinel
|
|
25
|
+
* is intentionally absent from {@link PROBE_TASK_ALLOWLIST} so a kit cannot
|
|
26
|
+
* name it via `probe_task`; the runner resolves it, or a storyboard may name it
|
|
27
|
+
* directly, and either way `planMcpSessionSentinel` grades it honestly — and
|
|
28
|
+
* only on an explicit `protocol: 'mcp'`.
|
|
18
29
|
*/
|
|
19
30
|
import type { TestOptions } from '../types';
|
|
20
31
|
/**
|
|
@@ -34,10 +45,33 @@ export declare const PROBE_TASK_ALLOWLIST: readonly string[];
|
|
|
34
45
|
/**
|
|
35
46
|
* Select an advertised auth probe without dispatching an inapplicable tool.
|
|
36
47
|
* The configured task is a preference, not permission to call a tool the
|
|
37
|
-
* agent did not advertise.
|
|
38
|
-
*
|
|
48
|
+
* agent did not advertise.
|
|
49
|
+
*
|
|
50
|
+
* Resolution order:
|
|
51
|
+
* 1. Discovery unavailable (`advertisedTools === undefined`) → the caller's
|
|
52
|
+
* preference, unchanged. The runner has no tool list to vet it against.
|
|
53
|
+
* 2. The preference, when it is allowlisted AND advertised.
|
|
54
|
+
* 3. The first allowlisted task the agent advertises.
|
|
55
|
+
* 4. **MCP only**: the {@link MCP_SESSION_PROBE_TASK} sentinel
|
|
56
|
+
* (adcp-client#2940). An agent whose entire read surface sits outside the
|
|
57
|
+
* allowlist may still expose a canonical protected read
|
|
58
|
+
* (`get_principal`, `list_tasks`, …), and the sentinel drives a complete
|
|
59
|
+
* session lifecycle (`initialize` → `notifications/initialized` →
|
|
60
|
+
* `tools/call`) against one — so `security_baseline` can verify a
|
|
61
|
+
* correctly configured agent instead of reporting
|
|
62
|
+
* `auth_mechanism_verified: []`. The chosen tool is called with empty
|
|
63
|
+
* arguments; when the agent refuses that shape the probe reports
|
|
64
|
+
* *inconclusive* rather than guessing, which is the hazard the allowlist
|
|
65
|
+
* exists to avoid.
|
|
66
|
+
* 5. Anything other than an explicit `protocol: 'mcp'` → `undefined`
|
|
67
|
+
* (unchanged). A2A's `message/send` requires `params.message` and has no
|
|
68
|
+
* equivalent parameter-free protected operation, and an unset protocol
|
|
69
|
+
* means the caller never declared a transport — neither is a safe place
|
|
70
|
+
* to substitute an MCP probe.
|
|
39
71
|
*/
|
|
40
|
-
export declare function selectProbeTask(preferred: string | undefined, advertisedTools: readonly string[] | undefined
|
|
72
|
+
export declare function selectProbeTask(preferred: string | undefined, advertisedTools: readonly string[] | undefined, options?: {
|
|
73
|
+
protocol?: 'mcp' | 'a2a';
|
|
74
|
+
}): string | undefined;
|
|
41
75
|
/**
|
|
42
76
|
* Raised when a test kit violates the schema invariants above. Carries the
|
|
43
77
|
* field name so upstream loaders can render a YAML-friendly error.
|
|
@@ -19,12 +19,14 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var test_kit_exports = {};
|
|
20
20
|
__export(test_kit_exports, {
|
|
21
21
|
PROBE_TASK_ALLOWLIST: () => PROBE_TASK_ALLOWLIST,
|
|
22
|
+
PROBE_TASK_ALLOWLIST_SUMMARY: () => PROBE_TASK_ALLOWLIST_SUMMARY,
|
|
22
23
|
TestKitValidationError: () => TestKitValidationError,
|
|
23
24
|
resolveDeclaredTestKit: () => resolveDeclaredTestKit,
|
|
24
25
|
selectProbeTask: () => selectProbeTask,
|
|
25
26
|
validateTestKit: () => validateTestKit
|
|
26
27
|
});
|
|
27
28
|
module.exports = __toCommonJS(test_kit_exports);
|
|
29
|
+
var import_types = require('./types.js');
|
|
28
30
|
var import_node_fs = require("node:fs");
|
|
29
31
|
var import_node_path = require("node:path");
|
|
30
32
|
var import_yaml = require("yaml");
|
|
@@ -39,11 +41,14 @@ const PROBE_TASK_ALLOWLIST = Object.freeze([
|
|
|
39
41
|
"list_content_standards",
|
|
40
42
|
"list_accounts"
|
|
41
43
|
]);
|
|
42
|
-
|
|
44
|
+
const PROBE_TASK_ALLOWLIST_SUMMARY = PROBE_TASK_ALLOWLIST.join(", ");
|
|
45
|
+
function selectProbeTask(preferred, advertisedTools, options = {}) {
|
|
43
46
|
if (!advertisedTools) return preferred;
|
|
44
47
|
const advertised = new Set(advertisedTools);
|
|
45
48
|
if (preferred && PROBE_TASK_ALLOWLIST.includes(preferred) && advertised.has(preferred)) return preferred;
|
|
46
|
-
|
|
49
|
+
const advertisedProbe = PROBE_TASK_ALLOWLIST.find((task) => advertised.has(task));
|
|
50
|
+
if (advertisedProbe !== void 0) return advertisedProbe;
|
|
51
|
+
return options.protocol === "mcp" ? import_types.MCP_SESSION_PROBE_TASK : void 0;
|
|
47
52
|
}
|
|
48
53
|
class TestKitValidationError extends Error {
|
|
49
54
|
field;
|
|
@@ -171,6 +176,7 @@ function resolveDeclaredTestKit(storyboard, options) {
|
|
|
171
176
|
// Annotate the CommonJS export names for ESM import in node:
|
|
172
177
|
0 && (module.exports = {
|
|
173
178
|
PROBE_TASK_ALLOWLIST,
|
|
179
|
+
PROBE_TASK_ALLOWLIST_SUMMARY,
|
|
174
180
|
TestKitValidationError,
|
|
175
181
|
resolveDeclaredTestKit,
|
|
176
182
|
selectProbeTask,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { MCP_SESSION_PROBE_TASK } from "./types.mjs";
|
|
1
2
|
import { readFileSync, realpathSync, statSync } from "node:fs";
|
|
2
3
|
import { join, resolve, sep } from "node:path";
|
|
3
4
|
import { parse } from "yaml";
|
|
@@ -12,11 +13,14 @@ const PROBE_TASK_ALLOWLIST = Object.freeze([
|
|
|
12
13
|
"list_content_standards",
|
|
13
14
|
"list_accounts"
|
|
14
15
|
]);
|
|
15
|
-
|
|
16
|
+
const PROBE_TASK_ALLOWLIST_SUMMARY = PROBE_TASK_ALLOWLIST.join(", ");
|
|
17
|
+
function selectProbeTask(preferred, advertisedTools, options = {}) {
|
|
16
18
|
if (!advertisedTools) return preferred;
|
|
17
19
|
const advertised = new Set(advertisedTools);
|
|
18
20
|
if (preferred && PROBE_TASK_ALLOWLIST.includes(preferred) && advertised.has(preferred)) return preferred;
|
|
19
|
-
|
|
21
|
+
const advertisedProbe = PROBE_TASK_ALLOWLIST.find((task) => advertised.has(task));
|
|
22
|
+
if (advertisedProbe !== void 0) return advertisedProbe;
|
|
23
|
+
return options.protocol === "mcp" ? MCP_SESSION_PROBE_TASK : void 0;
|
|
20
24
|
}
|
|
21
25
|
class TestKitValidationError extends Error {
|
|
22
26
|
field;
|
|
@@ -143,6 +147,7 @@ function resolveDeclaredTestKit(storyboard, options) {
|
|
|
143
147
|
}
|
|
144
148
|
export {
|
|
145
149
|
PROBE_TASK_ALLOWLIST,
|
|
150
|
+
PROBE_TASK_ALLOWLIST_SUMMARY,
|
|
146
151
|
TestKitValidationError,
|
|
147
152
|
resolveDeclaredTestKit,
|
|
148
153
|
selectProbeTask,
|