@adcp/sdk 14.0.0-rc.38 → 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/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/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/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-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/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 +35 -0
- package/docs/guides/MEDIA-BUY-3.2-COMPATIBILITY.md +7 -3
- package/docs/guides/MEDIA-BUY-ACTION-ASSESSMENT.md +300 -0
- package/docs/guides/REPORTING-LEDGER.md +654 -3
- 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 +5 -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/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
package/bin/adcp.js
CHANGED
|
@@ -48,7 +48,14 @@ const {
|
|
|
48
48
|
writeSummaryFile,
|
|
49
49
|
printSoftFailBlock,
|
|
50
50
|
defaultComplianceTimeoutSeconds,
|
|
51
|
+
escapeTerminalControlChars,
|
|
52
|
+
formatStepSkipLines,
|
|
53
|
+
formatStepVerdictLines,
|
|
54
|
+
isCoverageUnavailableStep,
|
|
55
|
+
unverifiedSigningCoverage,
|
|
56
|
+
parseRequestSigningFlags,
|
|
51
57
|
} = require('./adcp-storyboard-summary.js');
|
|
58
|
+
|
|
52
59
|
const { scheduleVersionCheck } = require('./adcp-version-check.js');
|
|
53
60
|
const { formatStoryboardResultsAsJUnit } = require('../dist/lib/testing/storyboard/junit.js');
|
|
54
61
|
const { ADCP_VERSION, LIBRARY_VERSION } = require('../dist/lib/version.js');
|
|
@@ -1166,6 +1173,12 @@ function parseAgentOptions(args) {
|
|
|
1166
1173
|
? args[invariantsIdx + 1]
|
|
1167
1174
|
: null;
|
|
1168
1175
|
|
|
1176
|
+
// Request-signing vector knobs are captured here solely so their values are
|
|
1177
|
+
// excluded from `positionalArgs`. The authoritative parse (validation +
|
|
1178
|
+
// error exits) lives in `extractRequestSigningOptions(args)`.
|
|
1179
|
+
const signingTransportValue = readFlagValue(args, '--signing-transport');
|
|
1180
|
+
const signingSkipVectorsValue = readFlagValue(args, '--signing-skip-vectors');
|
|
1181
|
+
|
|
1169
1182
|
const localAgentIdx = args.indexOf('--local-agent');
|
|
1170
1183
|
const localAgentValue =
|
|
1171
1184
|
localAgentIdx !== -1 && localAgentIdx + 1 < args.length && !args[localAgentIdx + 1].startsWith('--')
|
|
@@ -1239,6 +1252,8 @@ function parseAgentOptions(args) {
|
|
|
1239
1252
|
webhookReceiverTlsCertValue,
|
|
1240
1253
|
webhookReceiverTlsKeyValue,
|
|
1241
1254
|
invariantsValue,
|
|
1255
|
+
signingTransportValue,
|
|
1256
|
+
signingSkipVectorsValue,
|
|
1242
1257
|
localAgentValue,
|
|
1243
1258
|
formatValue,
|
|
1244
1259
|
summaryOutputValue,
|
|
@@ -2164,6 +2179,35 @@ WEBHOOK OPTIONS:
|
|
|
2164
2179
|
direct child only).
|
|
2165
2180
|
HTTP-on-the-wire — spec-compliant.
|
|
2166
2181
|
|
|
2182
|
+
REQUEST-SIGNING VECTOR OPTIONS (signed_requests storyboard):
|
|
2183
|
+
--signing-transport raw|mcp How the RFC 9421 conformance vectors are
|
|
2184
|
+
framed on the wire. NOT the same as
|
|
2185
|
+
--transport/--protocol, which selects how the
|
|
2186
|
+
storyboard itself talks to the agent. Default:
|
|
2187
|
+
inferred from the resolved protocol — an MCP
|
|
2188
|
+
run wraps each vector in a tools/call envelope
|
|
2189
|
+
(mcp); an A2A run reports the vectors
|
|
2190
|
+
signing_transport_unavailable (COVERAGE
|
|
2191
|
+
UNAVAILABLE; the track cannot pass) because
|
|
2192
|
+
the fixtures have no A2A framing. Pass raw for
|
|
2193
|
+
agents that
|
|
2194
|
+
expose AdCP tools as per-operation HTTP
|
|
2195
|
+
endpoints. Mirrors
|
|
2196
|
+
\`adcp grade request-signing --transport\`.
|
|
2197
|
+
--signing-skip-vectors IDS Comma-separated vector ids to skip (graded
|
|
2198
|
+
operator_skip), e.g.
|
|
2199
|
+
025-jwk-alg-crv-mismatch. Unknown ids are
|
|
2200
|
+
rejected — a typo would otherwise skip
|
|
2201
|
+
nothing, silently.
|
|
2202
|
+
--signing-skip-rate-abuse Skip the rate-abuse vector, which floods
|
|
2203
|
+
cap+1 requests at the agent. Boolean: pass
|
|
2204
|
+
the bare flag (=false is rejected, not read
|
|
2205
|
+
as "off").
|
|
2206
|
+
|
|
2207
|
+
A run whose signing vectors were never dispatched exits 3 even though its
|
|
2208
|
+
steps are skip-shaped: nothing about the verifier was graded. --soft-fail
|
|
2209
|
+
reports it and exits 0.
|
|
2210
|
+
|
|
2167
2211
|
PARALLEL DISPATCH OPTIONS:
|
|
2168
2212
|
--parallel-dispatch Enable process-local concurrent dispatches
|
|
2169
2213
|
for storyboards that require the
|
|
@@ -2762,6 +2806,42 @@ async function resolveFileComplianceRunOptions(args, opts) {
|
|
|
2762
2806
|
return { adcpVersion, complianceDir, schemaRoot };
|
|
2763
2807
|
}
|
|
2764
2808
|
|
|
2809
|
+
// Only render runner-authored capability dependency details here. Other skip
|
|
2810
|
+
// details can contain raw seller diagnostics and retain their existing surface.
|
|
2811
|
+
function printCapabilityPrerequisiteSkip(step) {
|
|
2812
|
+
if (!step.skipped || step.skip_reason !== 'capability_prerequisite_unavailable' || !step.skip?.detail || step.error)
|
|
2813
|
+
return;
|
|
2814
|
+
console.log(` Skipped: ${escapeTerminalControlChars(step.skip.detail)}`);
|
|
2815
|
+
}
|
|
2816
|
+
|
|
2817
|
+
// `printCapabilityPrerequisiteSkip` already phrases this one.
|
|
2818
|
+
const SKIP_REASONS_PRINTED_ELSEWHERE = new Set(['capability_prerequisite_unavailable']);
|
|
2819
|
+
|
|
2820
|
+
/**
|
|
2821
|
+
* Print why a step was skipped, naming runner-owned coverage gaps as gaps
|
|
2822
|
+
* and echoing the remedy the runner supplied. Without this a skipped-only
|
|
2823
|
+
* run prints a green-looking `0 passed` line and nothing else.
|
|
2824
|
+
*/
|
|
2825
|
+
// Remedy strings already printed in this invocation. A whole-storyboard
|
|
2826
|
+
// coverage gap repeats one ~550-character remedy per vector; on a routed run
|
|
2827
|
+
// that is ~38 identical copies, which buries the rest of the report.
|
|
2828
|
+
const PRINTED_SKIP_REMEDIES = new Set();
|
|
2829
|
+
|
|
2830
|
+
function printStepSkipDetail(step) {
|
|
2831
|
+
const lines = formatStepSkipLines(step, { handledReasons: SKIP_REASONS_PRINTED_ELSEWHERE });
|
|
2832
|
+
for (const [index, line] of lines.entries()) {
|
|
2833
|
+
// Line 0 is the reason; any line after it is the detail/remedy.
|
|
2834
|
+
if (index > 0 && line.length > 200) {
|
|
2835
|
+
if (PRINTED_SKIP_REMEDIES.has(line)) {
|
|
2836
|
+
console.log(' (same remedy as above)');
|
|
2837
|
+
continue;
|
|
2838
|
+
}
|
|
2839
|
+
PRINTED_SKIP_REMEDIES.add(line);
|
|
2840
|
+
}
|
|
2841
|
+
console.log(line);
|
|
2842
|
+
}
|
|
2843
|
+
}
|
|
2844
|
+
|
|
2765
2845
|
async function handleStoryboardRun(args) {
|
|
2766
2846
|
let opts = parseAgentOptions(args);
|
|
2767
2847
|
let {
|
|
@@ -2849,6 +2929,12 @@ async function handleStoryboardRun(args) {
|
|
|
2849
2929
|
process.exit(2);
|
|
2850
2930
|
}
|
|
2851
2931
|
|
|
2932
|
+
// Usage gate before any network work: a mistyped signing flag should exit 2
|
|
2933
|
+
// without protocol autodetection, and certainly without the inline OAuth
|
|
2934
|
+
// browser flow below. The authoritative parse runs again downstream, on the
|
|
2935
|
+
// path that actually consumes the options.
|
|
2936
|
+
extractRequestSigningOptions(args);
|
|
2937
|
+
|
|
2852
2938
|
// Inline OAuth: if --oauth is set and the agent is a saved alias that
|
|
2853
2939
|
// doesn't have valid tokens, run the browser flow now so the downstream
|
|
2854
2940
|
// runner sees freshly-saved tokens via getAgent().
|
|
@@ -2903,6 +2989,7 @@ async function handleStoryboardRun(args) {
|
|
|
2903
2989
|
const webhookAutoTunnel = args.includes('--webhook-receiver-auto-tunnel');
|
|
2904
2990
|
const webhookReceiverBase = extractWebhookReceiverOptions(args);
|
|
2905
2991
|
const parallelDispatchOpts = extractParallelDispatchOptions(args);
|
|
2992
|
+
const requestSigningOpts = extractRequestSigningOptions(args);
|
|
2906
2993
|
validateAutoTunnelArgs(args, webhookReceiverBase);
|
|
2907
2994
|
|
|
2908
2995
|
// Load invariants before the dry-run gate so `--dry-run --invariants` fails
|
|
@@ -2977,6 +3064,7 @@ async function handleStoryboardRun(args) {
|
|
|
2977
3064
|
}),
|
|
2978
3065
|
...(mergedRunHeaders && { headers: mergedRunHeaders }),
|
|
2979
3066
|
...(opts.loadedTestKit !== undefined && { test_kit: opts.loadedTestKit }),
|
|
3067
|
+
...(requestSigningOpts ?? {}),
|
|
2980
3068
|
};
|
|
2981
3069
|
|
|
2982
3070
|
const restoreLogs = jsonOutput ? captureStdoutLogs() : null;
|
|
@@ -3020,6 +3108,7 @@ async function handleStoryboardRun(args) {
|
|
|
3020
3108
|
not_applicable: ' [not applicable]',
|
|
3021
3109
|
no_phases: ' [no phases]',
|
|
3022
3110
|
prerequisite_failed: ' [prerequisite failed]',
|
|
3111
|
+
capability_prerequisite_unavailable: ' [capability prerequisite unavailable]',
|
|
3023
3112
|
unsatisfied_contract: ' [contract out of scope]',
|
|
3024
3113
|
};
|
|
3025
3114
|
for (const step of phase.steps) {
|
|
@@ -3027,8 +3116,10 @@ async function handleStoryboardRun(args) {
|
|
|
3027
3116
|
const skipLabel = SKIP_LABELS[step.skip_reason] ?? '';
|
|
3028
3117
|
console.log(`\n${icon} ${step.title}${skipLabel} (${step.duration_ms}ms)`);
|
|
3029
3118
|
console.log(` Task: ${step.task}`);
|
|
3119
|
+
printCapabilityPrerequisiteSkip(step);
|
|
3120
|
+
printStepSkipDetail(step);
|
|
3030
3121
|
if (step.error) {
|
|
3031
|
-
console.log(` Error: ${step.error}`);
|
|
3122
|
+
console.log(` Error: ${escapeTerminalControlChars(step.error)}`);
|
|
3032
3123
|
}
|
|
3033
3124
|
for (const v of step.validations) {
|
|
3034
3125
|
const vIcon = v.passed ? '✅' : '❌';
|
|
@@ -3254,6 +3345,54 @@ function extractParallelDispatchOptions(args) {
|
|
|
3254
3345
|
return args.includes('--parallel-dispatch') ? { contracts: ['parallel_dispatch_runner'] } : null;
|
|
3255
3346
|
}
|
|
3256
3347
|
|
|
3348
|
+
/**
|
|
3349
|
+
* CLI wrapper over `parseRequestSigningFlags`: turn a rejected flag into a
|
|
3350
|
+
* usage message and exit 2 rather than silently falling back — a mistyped
|
|
3351
|
+
* transport would otherwise surface as 38 unexplained vector failures.
|
|
3352
|
+
*/
|
|
3353
|
+
function extractRequestSigningOptions(args) {
|
|
3354
|
+
const parsed = parseRequestSigningFlags(
|
|
3355
|
+
flag => readFlagValue(args, flag),
|
|
3356
|
+
flag => args.includes(flag) || args.some(a => a.startsWith(`${flag}=`)),
|
|
3357
|
+
{
|
|
3358
|
+
readInlineValue: flag => {
|
|
3359
|
+
const eqArg = args.find(a => a.startsWith(`${flag}=`));
|
|
3360
|
+
return eqArg ? eqArg.slice(flag.length + 1) : null;
|
|
3361
|
+
},
|
|
3362
|
+
knownVectorIds: args.some(a => a === '--signing-skip-vectors' || a.startsWith('--signing-skip-vectors='))
|
|
3363
|
+
? knownSigningVectorIds(args)
|
|
3364
|
+
: null,
|
|
3365
|
+
}
|
|
3366
|
+
);
|
|
3367
|
+
if (!parsed.ok) {
|
|
3368
|
+
console.error(`ERROR: ${parsed.error}`);
|
|
3369
|
+
process.exit(2);
|
|
3370
|
+
}
|
|
3371
|
+
return parsed.options;
|
|
3372
|
+
}
|
|
3373
|
+
|
|
3374
|
+
/**
|
|
3375
|
+
* Vector ids from the compliance cache this run will actually grade against,
|
|
3376
|
+
* for validating `--signing-skip-vectors`.
|
|
3377
|
+
*
|
|
3378
|
+
* Returns `null` when the cache can't be read: a missing cache is the run's
|
|
3379
|
+
* problem to report where it matters (the runner says so with a remedy), not
|
|
3380
|
+
* a reason to refuse an otherwise valid flag.
|
|
3381
|
+
*/
|
|
3382
|
+
function knownSigningVectorIds(args) {
|
|
3383
|
+
try {
|
|
3384
|
+
const { loadRequestSigningVectors } = require('../dist/lib/testing/storyboard/request-signing/index.js');
|
|
3385
|
+
const { complianceVersion, complianceDir } = parseComplianceSelection(args);
|
|
3386
|
+
const loaded = loadRequestSigningVectors({
|
|
3387
|
+
...(complianceVersion && { version: complianceVersion }),
|
|
3388
|
+
...(complianceDir && { complianceDir }),
|
|
3389
|
+
});
|
|
3390
|
+
return [...loaded.positive, ...loaded.negative].map(v => v.id);
|
|
3391
|
+
} catch {
|
|
3392
|
+
return null;
|
|
3393
|
+
}
|
|
3394
|
+
}
|
|
3395
|
+
|
|
3257
3396
|
/**
|
|
3258
3397
|
* Combine independently requested storyboard-runner contracts. Both webhook
|
|
3259
3398
|
* receiver and parallel dispatch are opt-ins, so a run that requests both
|
|
@@ -3939,6 +4078,7 @@ async function handleLocalAgentStoryboardRun(modulePath, args, opts) {
|
|
|
3939
4078
|
|
|
3940
4079
|
const storyboardsSpec = storyboardId ? [storyboardId] : 'all';
|
|
3941
4080
|
const parallelDispatchOpts = extractParallelDispatchOptions(args);
|
|
4081
|
+
const requestSigningOpts = extractRequestSigningOptions(args);
|
|
3942
4082
|
const restoreLogs = jsonOutput ? captureStdoutLogs() : null;
|
|
3943
4083
|
let result;
|
|
3944
4084
|
try {
|
|
@@ -3957,6 +4097,7 @@ async function handleLocalAgentStoryboardRun(modulePath, args, opts) {
|
|
|
3957
4097
|
}),
|
|
3958
4098
|
...(opts.loadedTestKit !== undefined && { test_kit: opts.loadedTestKit }),
|
|
3959
4099
|
...mergeStoryboardContracts(parallelDispatchOpts),
|
|
4100
|
+
...(requestSigningOpts ?? {}),
|
|
3960
4101
|
},
|
|
3961
4102
|
onStoryboardComplete:
|
|
3962
4103
|
jsonOutput || format === 'junit'
|
|
@@ -4168,6 +4309,7 @@ async function handleMultiInstanceStoryboardRun(args, opts, urls) {
|
|
|
4168
4309
|
const webhookAutoTunnel = args.includes('--webhook-receiver-auto-tunnel');
|
|
4169
4310
|
const webhookReceiverBase = extractWebhookReceiverOptions(args);
|
|
4170
4311
|
const parallelDispatchOpts = extractParallelDispatchOptions(args);
|
|
4312
|
+
const requestSigningOpts = extractRequestSigningOptions(args);
|
|
4171
4313
|
validateAutoTunnelArgs(args, webhookReceiverBase);
|
|
4172
4314
|
if ((webhookReceiverBase || webhookAutoTunnel) && strategy === 'multi-pass') {
|
|
4173
4315
|
// The runner throws on this combination (each pass binds a fresh receiver
|
|
@@ -4394,6 +4536,7 @@ async function handleMultiInstanceStoryboardRun(args, opts, urls) {
|
|
|
4394
4536
|
mediaBuyLifecycleCompatibility: opts.mediaBuyLifecycleCompatibility,
|
|
4395
4537
|
}),
|
|
4396
4538
|
...(opts.loadedTestKit !== undefined && { test_kit: opts.loadedTestKit }),
|
|
4539
|
+
...(requestSigningOpts ?? {}),
|
|
4397
4540
|
};
|
|
4398
4541
|
|
|
4399
4542
|
const restoreLogs = jsonOutput ? captureStdoutLogs() : null;
|
|
@@ -4439,8 +4582,10 @@ async function handleMultiInstanceStoryboardRun(args, opts, urls) {
|
|
|
4439
4582
|
const instTag = step.agent_index ? `[#${step.agent_index}] ` : '';
|
|
4440
4583
|
console.log(`\n${icon} ${instTag}${step.title}${skipLabel} (${step.duration_ms}ms)`);
|
|
4441
4584
|
console.log(` Task: ${step.task}`);
|
|
4585
|
+
printCapabilityPrerequisiteSkip(step);
|
|
4586
|
+
printStepSkipDetail(step);
|
|
4442
4587
|
if (step.error) {
|
|
4443
|
-
console.log(` Error: ${step.error}`);
|
|
4588
|
+
console.log(` Error: ${escapeTerminalControlChars(step.error)}`);
|
|
4444
4589
|
}
|
|
4445
4590
|
for (const v of step.validations) {
|
|
4446
4591
|
const vIcon = v.passed ? '✅' : '❌';
|
|
@@ -4506,6 +4651,7 @@ async function handleAgentsRoutedStoryboardRun(args, opts, routing) {
|
|
|
4506
4651
|
const webhookAutoTunnel = args.includes('--webhook-receiver-auto-tunnel');
|
|
4507
4652
|
const webhookReceiverBase = extractWebhookReceiverOptions(args);
|
|
4508
4653
|
const parallelDispatchOpts = extractParallelDispatchOptions(args);
|
|
4654
|
+
const requestSigningOpts = extractRequestSigningOptions(args);
|
|
4509
4655
|
validateAutoTunnelArgs(args, webhookReceiverBase);
|
|
4510
4656
|
|
|
4511
4657
|
// Strip per-flag values that may have leaked into positionals via parseAgentOptions.
|
|
@@ -4680,6 +4826,7 @@ async function handleAgentsRoutedStoryboardRun(args, opts, routing) {
|
|
|
4680
4826
|
mediaBuyLifecycleCompatibility: opts.mediaBuyLifecycleCompatibility,
|
|
4681
4827
|
}),
|
|
4682
4828
|
...(opts.loadedTestKit !== undefined && { test_kit: opts.loadedTestKit }),
|
|
4829
|
+
...(requestSigningOpts ?? {}),
|
|
4683
4830
|
};
|
|
4684
4831
|
|
|
4685
4832
|
const restoreLogs = jsonOutput ? captureStdoutLogs() : null;
|
|
@@ -4733,6 +4880,7 @@ async function handleAgentsRoutedStoryboardRun(args, opts, routing) {
|
|
|
4733
4880
|
not_applicable: ' [not applicable]',
|
|
4734
4881
|
no_phases: ' [no phases]',
|
|
4735
4882
|
prerequisite_failed: ' [prerequisite failed]',
|
|
4883
|
+
capability_prerequisite_unavailable: ' [capability prerequisite unavailable]',
|
|
4736
4884
|
unsatisfied_contract: ' [contract out of scope]',
|
|
4737
4885
|
};
|
|
4738
4886
|
for (const result of results) {
|
|
@@ -4748,12 +4896,15 @@ async function handleAgentsRoutedStoryboardRun(args, opts, routing) {
|
|
|
4748
4896
|
// routing decisions are visible in the human-readable output.
|
|
4749
4897
|
let agentTag = '';
|
|
4750
4898
|
if (step.agent_url && result.agent_map) {
|
|
4751
|
-
const
|
|
4899
|
+
const entries = Object.entries(result.agent_map);
|
|
4900
|
+
const key = entries[step.agent_index - 1]?.[0] ?? entries.find(([, url]) => url === step.agent_url)?.[0];
|
|
4752
4901
|
if (key) agentTag = `[${key}] `;
|
|
4753
4902
|
}
|
|
4754
4903
|
console.log(`\n${icon} ${agentTag}${step.title}${skipLabel} (${step.duration_ms}ms)`);
|
|
4755
4904
|
console.log(` Task: ${step.task}`);
|
|
4756
|
-
|
|
4905
|
+
printCapabilityPrerequisiteSkip(step);
|
|
4906
|
+
printStepSkipDetail(step);
|
|
4907
|
+
if (step.error) console.log(` Error: ${escapeTerminalControlChars(step.error)}`);
|
|
4757
4908
|
for (const v of step.validations) {
|
|
4758
4909
|
const vIcon = v.passed ? '✅' : '❌';
|
|
4759
4910
|
console.log(` ${vIcon} ${v.description}`);
|
|
@@ -4795,6 +4946,22 @@ async function handleAgentsRoutedStoryboardRun(args, opts, routing) {
|
|
|
4795
4946
|
}
|
|
4796
4947
|
|
|
4797
4948
|
// Shared implementation: run all matching storyboards against an agent
|
|
4949
|
+
// One remedy per way a run can end with no graded vector. Keeping them
|
|
4950
|
+
// distinct matters: an unreachable agent and an over-broad
|
|
4951
|
+
// `--signing-skip-vectors` need opposite actions from the operator.
|
|
4952
|
+
const SIGNING_COVERAGE_REMEDIES = {
|
|
4953
|
+
probe_errored: 'the probes could not complete — fix the transport or auth failure reported above, then re-run',
|
|
4954
|
+
transport_unverified:
|
|
4955
|
+
'this runner has no request-signing dispatch for the run protocol — grade the MCP or REST binding, ' +
|
|
4956
|
+
'or set --signing-transport when that binding answers at the same URL',
|
|
4957
|
+
scope_excluded:
|
|
4958
|
+
"every vector was excluded by this run's own selection — drop the --signing-skip-vectors entries you did " +
|
|
4959
|
+
'not mean to exclude',
|
|
4960
|
+
self_check_only:
|
|
4961
|
+
'only the in-library SDK self-check ran, and it never contacts your agent — widen the selection so a wire ' +
|
|
4962
|
+
'vector is graded',
|
|
4963
|
+
};
|
|
4964
|
+
|
|
4798
4965
|
async function runFullAssessment(agentArg, rawArgs, parsedOpts) {
|
|
4799
4966
|
const opts = parsedOpts || parseAgentOptions(rawArgs);
|
|
4800
4967
|
|
|
@@ -4875,6 +5042,10 @@ async function runFullAssessment(agentArg, rawArgs, parsedOpts) {
|
|
|
4875
5042
|
resolvedOauthClientCredentials: oauthClientCredentials,
|
|
4876
5043
|
});
|
|
4877
5044
|
|
|
5045
|
+
// Validate the signing flags before `resolveWebhookReceiverOptions`, which
|
|
5046
|
+
// may spawn a tunnel child process: a bad flag value should exit 2 without
|
|
5047
|
+
// standing infrastructure up first.
|
|
5048
|
+
const requestSigningOpts = extractRequestSigningOptions(rawArgs);
|
|
4878
5049
|
const webhookReceiverOpts = await resolveWebhookReceiverOptions(rawArgs, { jsonOutput: opts.jsonOutput });
|
|
4879
5050
|
const parallelDispatchOpts = extractParallelDispatchOptions(rawArgs);
|
|
4880
5051
|
|
|
@@ -4904,6 +5075,7 @@ async function runFullAssessment(agentArg, rawArgs, parsedOpts) {
|
|
|
4904
5075
|
...(opts.schemaRoot && { schemaRoot: opts.schemaRoot }),
|
|
4905
5076
|
...(!opts.strictResponseSchemaValidation && { strictResponseSchemaValidation: false }),
|
|
4906
5077
|
...(opts.hostedStableLineAlias && { hostedStableLineAlias: opts.hostedStableLineAlias }),
|
|
5078
|
+
...(requestSigningOpts ?? {}),
|
|
4907
5079
|
};
|
|
4908
5080
|
|
|
4909
5081
|
if (!opts.jsonOutput) {
|
|
@@ -5007,14 +5179,34 @@ async function runFullAssessment(agentArg, rawArgs, parsedOpts) {
|
|
|
5007
5179
|
// exercised its tracks and they passed" is a CI failure. `partial`
|
|
5008
5180
|
// is preserved as exit 0 because some tracks were silent (wired but
|
|
5009
5181
|
// unexercised) — that's a reportable observation, not a hard failure.
|
|
5182
|
+
//
|
|
5183
|
+
// One narrow exception (adcp-client#2954): a run whose request-signing
|
|
5184
|
+
// vectors were never dispatched verified nothing about the verifier, and
|
|
5185
|
+
// its steps are skip-shaped, so every count above reads clean. That is
|
|
5186
|
+
// the case #2956 exists to make visible in CI, so it exits nonzero — on
|
|
5187
|
+
// its own signal, without touching how any other `partial` run exits.
|
|
5188
|
+
const unverifiedSigning = unverifiedSigningCoverage(result);
|
|
5010
5189
|
const isFailingExit =
|
|
5011
5190
|
result.overall_status === 'failing' ||
|
|
5012
5191
|
result.overall_status === 'unreachable' ||
|
|
5013
|
-
result.overall_status === 'auth_required'
|
|
5192
|
+
result.overall_status === 'auth_required' ||
|
|
5193
|
+
unverifiedSigning.length > 0;
|
|
5014
5194
|
|
|
5195
|
+
if (unverifiedSigning.length > 0 && !opts.jsonOutput) {
|
|
5196
|
+
for (const gap of unverifiedSigning) {
|
|
5197
|
+
console.error(
|
|
5198
|
+
`\n❌ ${escapeTerminalControlChars(gap.storyboard_id)}: no request-signing vector reached the agent. ` +
|
|
5199
|
+
`${SIGNING_COVERAGE_REMEDIES[gap.coverage] ?? 'no vector was graded'}.`
|
|
5200
|
+
);
|
|
5201
|
+
}
|
|
5202
|
+
if (!opts.softFail) {
|
|
5203
|
+
console.error(' Pass --soft-fail to report this without failing the job.');
|
|
5204
|
+
}
|
|
5205
|
+
}
|
|
5015
5206
|
if (opts.softFail && isFailingExit) {
|
|
5016
5207
|
const failedNames = result.failures?.map(f => f.storyboard_id).filter((v, i, a) => a.indexOf(v) === i) ?? [];
|
|
5017
|
-
|
|
5208
|
+
const unverifiedNames = unverifiedSigning.map(gap => gap.storyboard_id);
|
|
5209
|
+
printSoftFailBlock([...new Set([...failedNames, ...unverifiedNames])], opts.jsonOutput);
|
|
5018
5210
|
}
|
|
5019
5211
|
process.exit(opts.softFail ? 0 : isFailingExit ? 3 : 0);
|
|
5020
5212
|
} catch (error) {
|
|
@@ -5095,6 +5287,10 @@ async function handleStoryboardStepCmd(args) {
|
|
|
5095
5287
|
process.exit(2);
|
|
5096
5288
|
}
|
|
5097
5289
|
|
|
5290
|
+
// Same usage gate as `storyboard run`: fail a bad signing flag before the
|
|
5291
|
+
// OAuth browser flow and agent resolution.
|
|
5292
|
+
extractRequestSigningOptions(args);
|
|
5293
|
+
|
|
5098
5294
|
await maybeRunInlineOAuth(agentArg, args, { jsonOutput });
|
|
5099
5295
|
|
|
5100
5296
|
const {
|
|
@@ -5145,6 +5341,7 @@ async function handleStoryboardStepCmd(args) {
|
|
|
5145
5341
|
resolvedOauthClient,
|
|
5146
5342
|
resolvedOauthClientCredentials,
|
|
5147
5343
|
}),
|
|
5344
|
+
...(extractRequestSigningOptions(args) ?? {}),
|
|
5148
5345
|
};
|
|
5149
5346
|
|
|
5150
5347
|
const restoreLogs = jsonOutput ? captureStdoutLogs() : null;
|
|
@@ -5158,10 +5355,12 @@ async function handleStoryboardStepCmd(args) {
|
|
|
5158
5355
|
if (jsonOutput) {
|
|
5159
5356
|
await writeJsonOutput(result);
|
|
5160
5357
|
} else {
|
|
5161
|
-
const icon = result.passed ? '✅' : '❌';
|
|
5162
5358
|
console.log(`\n── Step: ${result.title} ──────────────────────────────`);
|
|
5163
5359
|
console.log(`Task: ${result.task}`);
|
|
5164
|
-
console.log(
|
|
5360
|
+
console.log('');
|
|
5361
|
+
for (const line of formatStepVerdictLines(result, { durationMs: result.duration_ms })) {
|
|
5362
|
+
console.log(line);
|
|
5363
|
+
}
|
|
5165
5364
|
|
|
5166
5365
|
if (result.error) {
|
|
5167
5366
|
console.log(`Error: ${result.error}`);
|
|
@@ -5196,7 +5395,19 @@ async function handleStoryboardStepCmd(args) {
|
|
|
5196
5395
|
}
|
|
5197
5396
|
}
|
|
5198
5397
|
|
|
5199
|
-
|
|
5398
|
+
// A skipped step is `passed: true` — skip is not failure. That is right for
|
|
5399
|
+
// a step the agent opted out of, and wrong for one the runner could not
|
|
5400
|
+
// grade: `adcp storyboard step … && echo ok` would print ok for a vector
|
|
5401
|
+
// nothing verified. Exit 3 on that gap, matching what the verdict lines
|
|
5402
|
+
// above already say (adcp-client#2954) — and honour `--soft-fail` here as
|
|
5403
|
+
// every other exit site in this file does, because the help text and the
|
|
5404
|
+
// guide both offer it as the opt-out for exactly this.
|
|
5405
|
+
const stepFailed = !result.passed || isCoverageUnavailableStep(result);
|
|
5406
|
+
if (stepFailed && opts.softFail) {
|
|
5407
|
+
printSoftFailBlock([`${storyboardId}/${stepId}`], jsonOutput);
|
|
5408
|
+
process.exit(0);
|
|
5409
|
+
}
|
|
5410
|
+
process.exit(stepFailed ? 3 : 0);
|
|
5200
5411
|
}
|
|
5201
5412
|
|
|
5202
5413
|
async function handleCheckNetworkCommand(args) {
|
|
@@ -5493,7 +5704,7 @@ function renderDiagnosisReport(report) {
|
|
|
5493
5704
|
const label = STEP_LABELS[step.name] || step.name;
|
|
5494
5705
|
const prefix = ` • ${label}`;
|
|
5495
5706
|
if (step.error) {
|
|
5496
|
-
console.log(`${prefix} ↳ skipped: ${step.error}`);
|
|
5707
|
+
console.log(`${prefix} ↳ skipped: ${escapeTerminalControlChars(step.error)}`);
|
|
5497
5708
|
continue;
|
|
5498
5709
|
}
|
|
5499
5710
|
if (step.http) {
|
|
@@ -3,7 +3,7 @@ type JsonSchema = Record<string, unknown>;
|
|
|
3
3
|
export interface ConformanceSchemaOptions {
|
|
4
4
|
/** AdCP schema/cache version to load. Defaults to the SDK-pinned version. */
|
|
5
5
|
version?: string;
|
|
6
|
-
/** External schema-data root, e.g. `dist/schemas/latest` or `dist/lib/schemas-data/3.
|
|
6
|
+
/** External schema-data root, e.g. `dist/schemas/latest` or `dist/lib/schemas-data/3.2.0-rc.3`. */
|
|
7
7
|
schemaRoot?: string;
|
|
8
8
|
}
|
|
9
9
|
export declare function loadRequestSchema(tool: ConformanceToolName, options?: ConformanceSchemaOptions): JsonSchema;
|
|
@@ -3,7 +3,7 @@ type JsonSchema = Record<string, unknown>;
|
|
|
3
3
|
export interface ConformanceSchemaOptions {
|
|
4
4
|
/** AdCP schema/cache version to load. Defaults to the SDK-pinned version. */
|
|
5
5
|
version?: string;
|
|
6
|
-
/** External schema-data root, e.g. `dist/schemas/latest` or `dist/lib/schemas-data/3.
|
|
6
|
+
/** External schema-data root, e.g. `dist/schemas/latest` or `dist/lib/schemas-data/3.2.0-rc.3`. */
|
|
7
7
|
schemaRoot?: string;
|
|
8
8
|
}
|
|
9
9
|
export declare function loadRequestSchema(tool: ConformanceToolName, options?: ConformanceSchemaOptions): JsonSchema;
|
|
@@ -3,7 +3,7 @@ import type { AgentConfig } from '../types/index.mjs';
|
|
|
3
3
|
import type { MCPWebhookPayload, GetBrandIdentityRequest, GetBrandIdentityResponse, ContextMatchRequest, ContextMatchResponse, IdentityMatchRequest, IdentityMatchResponseRouterPublisher } from '../types/core.generated.mjs';
|
|
4
4
|
import type { Task as A2ATask, TaskStatusUpdateEvent } from '@a2a-js/sdk';
|
|
5
5
|
import { type CanonicalReadTaskOptions, type CreativeDeliveryTaskOptions, type SingleAgentClientConfig, type SyncCreativesTaskOptions, type VerifyAndParseWebhookOptions, type WebhookHandlerAdapter, type WebhookParseResult, type WebhookRequestContext } from './SingleAgentClient.mjs';
|
|
6
|
-
import type { InputHandler, TaskOptions, TaskResult, TaskInfo, Message } from './ConversationTypes.mjs';
|
|
6
|
+
import type { InputHandler, TaskOptions, TaskResult, TaskInfo, Message, DirectPauseRecoveryRequest } from './ConversationTypes.mjs';
|
|
7
7
|
import type { AdcpCapabilities } from '../utils/capabilities.mjs';
|
|
8
8
|
import type { WebhookHeaderValue } from '../webhooks/index.mjs';
|
|
9
9
|
import type { GetProductsRequest, GetProductsResponse, ListProductsRequest, ListProductsResponse, RequestProposalsRequest, RequestProposalsResponse, DeclineProposalsRequest, DeclineProposalsResponse, BuyProductsRequest, BuyProductsResponse, AcceptProposalRequest, AcceptProposalResponse, ControlMediaBuyRequest, ControlMediaBuyResponse, ListCreativeFormatsRequest, ListCreativeFormatsResponse, CreateMediaBuyRequest, CreateMediaBuyResponse, UpdateMediaBuyRequest, UpdateMediaBuyResponse, SyncCreativesRequest, SyncCreativesResponse, ListCreativesRequest, ListCreativesResponse, GetMediaBuysRequest, GetMediaBuysResponse, GetMediaBuyDeliveryRequest, GetMediaBuyDeliveryResponse, GetReportingStatusRequest, GetReportingStatusResponse, SyncReportingStatusRequest, SyncReportingStatusResponse, SyncReportingReceiptsRequest, SyncReportingReceiptsResponse, GetCreativeDeliveryRequest, GetCreativeDeliveryResponse, ProvidePerformanceFeedbackRequest, ProvidePerformanceFeedbackResponse, GetSignalsRequest, GetSignalsResponse, ActivateSignalRequest, ActivateSignalResponse, GetAdCPCapabilitiesRequest, GetAdCPCapabilitiesResponse, PreviewCreativeRequest, PreviewCreativeResponse, BuildCreativeRequest, BuildCreativeResponse, ListAccountChangesRequest, ListAccountChangesResponse, ListAccountsRequest, ListAccountsResponse, SyncAccountsRequest, SyncAccountsResponse, SyncAudiencesRequest, SyncAudiencesResponse, CreatePropertyListRequest, CreatePropertyListResponse, GetPropertyListRequest, GetPropertyListResponse, UpdatePropertyListRequest, UpdatePropertyListResponse, ListPropertyListsRequest, ListPropertyListsResponse, DeletePropertyListRequest, DeletePropertyListResponse, ListContentStandardsRequest, ListContentStandardsResponse, GetContentStandardsRequest, GetContentStandardsResponse, CalibrateContentRequest, CalibrateContentResponse, ValidateContentDeliveryRequest, ValidateContentDeliveryResponse, SIGetOfferingRequest, SIGetOfferingResponse, SIInitiateSessionRequest, SIInitiateSessionResponse, SISendMessageRequest, SISendMessageResponse, SITerminateSessionRequest, SITerminateSessionResponse, SyncPlansRequest, SyncPlansResponse, CheckGovernanceRequest, CheckGovernanceResponse, ReportPlanOutcomeRequest, ReportPlanOutcomeResponse, ReportPlanAdjustmentRequest, ReportPlanAdjustmentResponse, GetPlanAuditLogsRequest, GetPlanAuditLogsResponse, ListTransformersRequest, ListTransformersResponse, SyncAgentNotificationConfigsRequest, SyncAgentNotificationConfigsResponse } from '../types/tools.generated.mjs';
|
|
@@ -175,6 +175,11 @@ export declare class AgentClient {
|
|
|
175
175
|
private readonly sessionTrackedDeferredContinuations;
|
|
176
176
|
private readonly _isInProcess;
|
|
177
177
|
constructor(agent: AgentConfig, config?: SingleAgentClientConfig);
|
|
178
|
+
/**
|
|
179
|
+
* Recover the current A2A pause generation for a direct mutation that opted
|
|
180
|
+
* into `TaskOptions.durableContinuationRecovery`.
|
|
181
|
+
*/
|
|
182
|
+
recoverDirectPauseContinuation<T>(request: DirectPauseRecoveryRequest): Promise<TaskResult<T>>;
|
|
178
183
|
/**
|
|
179
184
|
* Returns the AdCP protocol version this client speaks. Mirrors
|
|
180
185
|
* `SingleAgentClient.getAdcpVersion()`. See {@link SingleAgentClientConfig.adcpVersion}.
|
|
@@ -3,7 +3,7 @@ import type { AgentConfig } from '../types';
|
|
|
3
3
|
import type { MCPWebhookPayload, GetBrandIdentityRequest, GetBrandIdentityResponse, ContextMatchRequest, ContextMatchResponse, IdentityMatchRequest, IdentityMatchResponseRouterPublisher } from '../types/core.generated';
|
|
4
4
|
import type { Task as A2ATask, TaskStatusUpdateEvent } from '@a2a-js/sdk';
|
|
5
5
|
import { type CanonicalReadTaskOptions, type CreativeDeliveryTaskOptions, type SingleAgentClientConfig, type SyncCreativesTaskOptions, type VerifyAndParseWebhookOptions, type WebhookHandlerAdapter, type WebhookParseResult, type WebhookRequestContext } from './SingleAgentClient';
|
|
6
|
-
import type { InputHandler, TaskOptions, TaskResult, TaskInfo, Message } from './ConversationTypes';
|
|
6
|
+
import type { InputHandler, TaskOptions, TaskResult, TaskInfo, Message, DirectPauseRecoveryRequest } from './ConversationTypes';
|
|
7
7
|
import type { AdcpCapabilities } from '../utils/capabilities';
|
|
8
8
|
import type { WebhookHeaderValue } from '../webhooks';
|
|
9
9
|
import type { GetProductsRequest, GetProductsResponse, ListProductsRequest, ListProductsResponse, RequestProposalsRequest, RequestProposalsResponse, DeclineProposalsRequest, DeclineProposalsResponse, BuyProductsRequest, BuyProductsResponse, AcceptProposalRequest, AcceptProposalResponse, ControlMediaBuyRequest, ControlMediaBuyResponse, ListCreativeFormatsRequest, ListCreativeFormatsResponse, CreateMediaBuyRequest, CreateMediaBuyResponse, UpdateMediaBuyRequest, UpdateMediaBuyResponse, SyncCreativesRequest, SyncCreativesResponse, ListCreativesRequest, ListCreativesResponse, GetMediaBuysRequest, GetMediaBuysResponse, GetMediaBuyDeliveryRequest, GetMediaBuyDeliveryResponse, GetReportingStatusRequest, GetReportingStatusResponse, SyncReportingStatusRequest, SyncReportingStatusResponse, SyncReportingReceiptsRequest, SyncReportingReceiptsResponse, GetCreativeDeliveryRequest, GetCreativeDeliveryResponse, ProvidePerformanceFeedbackRequest, ProvidePerformanceFeedbackResponse, GetSignalsRequest, GetSignalsResponse, ActivateSignalRequest, ActivateSignalResponse, GetAdCPCapabilitiesRequest, GetAdCPCapabilitiesResponse, PreviewCreativeRequest, PreviewCreativeResponse, BuildCreativeRequest, BuildCreativeResponse, ListAccountChangesRequest, ListAccountChangesResponse, ListAccountsRequest, ListAccountsResponse, SyncAccountsRequest, SyncAccountsResponse, SyncAudiencesRequest, SyncAudiencesResponse, CreatePropertyListRequest, CreatePropertyListResponse, GetPropertyListRequest, GetPropertyListResponse, UpdatePropertyListRequest, UpdatePropertyListResponse, ListPropertyListsRequest, ListPropertyListsResponse, DeletePropertyListRequest, DeletePropertyListResponse, ListContentStandardsRequest, ListContentStandardsResponse, GetContentStandardsRequest, GetContentStandardsResponse, CalibrateContentRequest, CalibrateContentResponse, ValidateContentDeliveryRequest, ValidateContentDeliveryResponse, SIGetOfferingRequest, SIGetOfferingResponse, SIInitiateSessionRequest, SIInitiateSessionResponse, SISendMessageRequest, SISendMessageResponse, SITerminateSessionRequest, SITerminateSessionResponse, SyncPlansRequest, SyncPlansResponse, CheckGovernanceRequest, CheckGovernanceResponse, ReportPlanOutcomeRequest, ReportPlanOutcomeResponse, ReportPlanAdjustmentRequest, ReportPlanAdjustmentResponse, GetPlanAuditLogsRequest, GetPlanAuditLogsResponse, ListTransformersRequest, ListTransformersResponse, SyncAgentNotificationConfigsRequest, SyncAgentNotificationConfigsResponse } from '../types/tools.generated';
|
|
@@ -175,6 +175,11 @@ export declare class AgentClient {
|
|
|
175
175
|
private readonly sessionTrackedDeferredContinuations;
|
|
176
176
|
private readonly _isInProcess;
|
|
177
177
|
constructor(agent: AgentConfig, config?: SingleAgentClientConfig);
|
|
178
|
+
/**
|
|
179
|
+
* Recover the current A2A pause generation for a direct mutation that opted
|
|
180
|
+
* into `TaskOptions.durableContinuationRecovery`.
|
|
181
|
+
*/
|
|
182
|
+
recoverDirectPauseContinuation<T>(request: DirectPauseRecoveryRequest): Promise<TaskResult<T>>;
|
|
178
183
|
/**
|
|
179
184
|
* Returns the AdCP protocol version this client speaks. Mirrors
|
|
180
185
|
* `SingleAgentClient.getAdcpVersion()`. See {@link SingleAgentClientConfig.adcpVersion}.
|
|
@@ -101,6 +101,15 @@ class AgentClient {
|
|
|
101
101
|
recoverDeferredTaskForOperation(operationId, recoveryKey, publishTerminalTaskStatus = true) {
|
|
102
102
|
return this.client.recoverDeferredTaskForOperation(operationId, recoveryKey, publishTerminalTaskStatus);
|
|
103
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Recover the current A2A pause generation for a direct mutation that opted
|
|
106
|
+
* into `TaskOptions.durableContinuationRecovery`.
|
|
107
|
+
*/
|
|
108
|
+
async recoverDirectPauseContinuation(request) {
|
|
109
|
+
const result = await this.client.recoverDirectPauseContinuation(request);
|
|
110
|
+
this.retainSession(result);
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
104
113
|
/** Bridge a store-recovered callback into the deferred terminal checkpoint. @internal */
|
|
105
114
|
checkpointExternalDeferredSettlement(token, operationId, terminalResult) {
|
|
106
115
|
return this.client.checkpointExternalDeferredSettlement(token, operationId, terminalResult);
|
|
@@ -80,6 +80,15 @@ class AgentClient {
|
|
|
80
80
|
recoverDeferredTaskForOperation(operationId, recoveryKey, publishTerminalTaskStatus = true) {
|
|
81
81
|
return this.client.recoverDeferredTaskForOperation(operationId, recoveryKey, publishTerminalTaskStatus);
|
|
82
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Recover the current A2A pause generation for a direct mutation that opted
|
|
85
|
+
* into `TaskOptions.durableContinuationRecovery`.
|
|
86
|
+
*/
|
|
87
|
+
async recoverDirectPauseContinuation(request) {
|
|
88
|
+
const result = await this.client.recoverDirectPauseContinuation(request);
|
|
89
|
+
this.retainSession(result);
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
83
92
|
/** Bridge a store-recovered callback into the deferred terminal checkpoint. @internal */
|
|
84
93
|
checkpointExternalDeferredSettlement(token, operationId, terminalResult) {
|
|
85
94
|
return this.client.checkpointExternalDeferredSettlement(token, operationId, terminalResult);
|
|
@@ -153,6 +153,20 @@ export interface TaskOptions {
|
|
|
153
153
|
debug?: boolean;
|
|
154
154
|
/** Suppress automatic webhook URL generation for this call. */
|
|
155
155
|
disableWebhook?: boolean;
|
|
156
|
+
/**
|
|
157
|
+
* Opt a direct mutating A2A call into operation-routed pause recovery.
|
|
158
|
+
*
|
|
159
|
+
* `ownerScope` must identify the authenticated buyer principal and account
|
|
160
|
+
* in the host's authorization model. It is hashed together with the trusted
|
|
161
|
+
* seller binding and must be supplied again during recovery.
|
|
162
|
+
*
|
|
163
|
+
* Requires a `DeferredTaskStorage` implementation with the operation-route
|
|
164
|
+
* methods. The SDK returns a distinct, host-only recovery capability in
|
|
165
|
+
* `result.deferred.recovery` when the seller first pauses.
|
|
166
|
+
*/
|
|
167
|
+
durableContinuationRecovery?: {
|
|
168
|
+
ownerScope: string;
|
|
169
|
+
};
|
|
156
170
|
/**
|
|
157
171
|
* Trusted local authorization tuple for a delegated, cross-origin seller.
|
|
158
172
|
* The SDK snapshots this before dispatch and persists it with any generated
|
|
@@ -252,6 +266,21 @@ export interface DeferredContinuation<T> {
|
|
|
252
266
|
question?: string;
|
|
253
267
|
/** Resume the same seller task with user input or after refreshing auth. */
|
|
254
268
|
resume: (input: any) => Promise<TaskResult<T>>;
|
|
269
|
+
/**
|
|
270
|
+
* Stable operation route and host-only recovery capability. Present only
|
|
271
|
+
* when the call opted into durable operation-routed recovery. Persist this
|
|
272
|
+
* once; never expose `recoveryKey` to the seller or a human approver.
|
|
273
|
+
*/
|
|
274
|
+
recovery?: {
|
|
275
|
+
operationId: string;
|
|
276
|
+
recoveryKey: string;
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
/** Authenticated owner input for direct pause route recovery. */
|
|
280
|
+
export interface DirectPauseRecoveryRequest {
|
|
281
|
+
operationId: string;
|
|
282
|
+
recoveryKey: string;
|
|
283
|
+
ownerScope: string;
|
|
255
284
|
}
|
|
256
285
|
/**
|
|
257
286
|
* Continuation for submitted server tasks (server needs time).
|
|
@@ -153,6 +153,20 @@ export interface TaskOptions {
|
|
|
153
153
|
debug?: boolean;
|
|
154
154
|
/** Suppress automatic webhook URL generation for this call. */
|
|
155
155
|
disableWebhook?: boolean;
|
|
156
|
+
/**
|
|
157
|
+
* Opt a direct mutating A2A call into operation-routed pause recovery.
|
|
158
|
+
*
|
|
159
|
+
* `ownerScope` must identify the authenticated buyer principal and account
|
|
160
|
+
* in the host's authorization model. It is hashed together with the trusted
|
|
161
|
+
* seller binding and must be supplied again during recovery.
|
|
162
|
+
*
|
|
163
|
+
* Requires a `DeferredTaskStorage` implementation with the operation-route
|
|
164
|
+
* methods. The SDK returns a distinct, host-only recovery capability in
|
|
165
|
+
* `result.deferred.recovery` when the seller first pauses.
|
|
166
|
+
*/
|
|
167
|
+
durableContinuationRecovery?: {
|
|
168
|
+
ownerScope: string;
|
|
169
|
+
};
|
|
156
170
|
/**
|
|
157
171
|
* Trusted local authorization tuple for a delegated, cross-origin seller.
|
|
158
172
|
* The SDK snapshots this before dispatch and persists it with any generated
|
|
@@ -252,6 +266,21 @@ export interface DeferredContinuation<T> {
|
|
|
252
266
|
question?: string;
|
|
253
267
|
/** Resume the same seller task with user input or after refreshing auth. */
|
|
254
268
|
resume: (input: any) => Promise<TaskResult<T>>;
|
|
269
|
+
/**
|
|
270
|
+
* Stable operation route and host-only recovery capability. Present only
|
|
271
|
+
* when the call opted into durable operation-routed recovery. Persist this
|
|
272
|
+
* once; never expose `recoveryKey` to the seller or a human approver.
|
|
273
|
+
*/
|
|
274
|
+
recovery?: {
|
|
275
|
+
operationId: string;
|
|
276
|
+
recoveryKey: string;
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
/** Authenticated owner input for direct pause route recovery. */
|
|
280
|
+
export interface DirectPauseRecoveryRequest {
|
|
281
|
+
operationId: string;
|
|
282
|
+
recoveryKey: string;
|
|
283
|
+
ownerScope: string;
|
|
255
284
|
}
|
|
256
285
|
/**
|
|
257
286
|
* Continuation for submitted server tasks (server needs time).
|
|
@@ -5,7 +5,7 @@ import { type MutatingRequestInput } from '../utils/idempotency.mjs';
|
|
|
5
5
|
import type { MCPWebhookPayload, TaskStatus } from '../types/core.generated.mjs';
|
|
6
6
|
type A2ATask = Record<string, any>;
|
|
7
7
|
type TaskStatusUpdateEvent = Record<string, any>;
|
|
8
|
-
import type { InputHandler, Message, TaskOptions, TaskResult, ConversationConfig, TaskInfo, TaskState, WebhookUrlTemplate } from './ConversationTypes.mjs';
|
|
8
|
+
import type { InputHandler, Message, TaskOptions, TaskResult, ConversationConfig, TaskInfo, TaskState, WebhookUrlTemplate, DirectPauseRecoveryRequest } from './ConversationTypes.mjs';
|
|
9
9
|
import type { AdcpTaskName, TaskRequestFor, TaskResponseTypeMap } from './AgentClient.mjs';
|
|
10
10
|
import type { DeferredTaskStorage } from '../storage/interfaces.mjs';
|
|
11
11
|
import type { Activity, AsyncHandlerConfig } from './AsyncHandler.mjs';
|
|
@@ -523,6 +523,8 @@ export declare class SingleAgentClient {
|
|
|
523
523
|
* version. Wire-shape adapters key off this method in subsequent stages.
|
|
524
524
|
*/
|
|
525
525
|
getAdcpVersion(): string;
|
|
526
|
+
/** Recover the current generation of an opt-in direct mutation pause. */
|
|
527
|
+
recoverDirectPauseContinuation<T>(request: DirectPauseRecoveryRequest): Promise<TaskResult<T>>;
|
|
526
528
|
private recoverDurableSettlement;
|
|
527
529
|
private recoverPersistedDeferredTerminal;
|
|
528
530
|
private taskResultFromRecoveredSettlement;
|