@adcp/sdk 13.0.0-rc.7 → 13.0.0-rc.8
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/ADCP_VERSION +1 -1
- package/bin/adcp.js +29 -0
- package/compliance/cache/{3.1.10.previous/protocols → 3.1.11/domains}/media-buy/scenarios/creative_fate_after_cancellation.yaml +46 -24
- package/compliance/cache/{3.1.10 → 3.1.11}/index.json +3 -3
- package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/creative_fate_after_cancellation.yaml +46 -24
- package/compliance/cache/{3.1.10 → 3.1.11}/universal/storyboard-schema.yaml +19 -6
- package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/creative_fate_after_cancellation.yaml +46 -24
- package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/index.json +3 -3
- package/compliance/cache/{3.1.10/domains → 3.1.11.previous/protocols}/media-buy/scenarios/creative_fate_after_cancellation.yaml +46 -24
- package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/storyboard-schema.yaml +19 -6
- package/dist/lib/auth/oauth/ClientCredentialsFlow.d.mts +2 -0
- package/dist/lib/auth/oauth/ClientCredentialsFlow.d.ts +2 -0
- package/dist/lib/auth/oauth/ClientCredentialsFlow.d.ts.map +1 -1
- package/dist/lib/auth/oauth/ClientCredentialsFlow.js +69 -24
- package/dist/lib/auth/oauth/ClientCredentialsFlow.js.map +1 -1
- package/dist/lib/auth/oauth/ClientCredentialsFlow.mjs +69 -24
- package/dist/lib/auth/oauth/ClientCredentialsFlow.mjs.map +1 -1
- package/dist/lib/auth/oauth/authorization-required.d.mts +3 -0
- package/dist/lib/auth/oauth/authorization-required.d.ts +3 -0
- package/dist/lib/auth/oauth/authorization-required.d.ts.map +1 -1
- package/dist/lib/auth/oauth/authorization-required.js +37 -7
- package/dist/lib/auth/oauth/authorization-required.js.map +1 -1
- package/dist/lib/auth/oauth/authorization-required.mjs +37 -7
- package/dist/lib/auth/oauth/authorization-required.mjs.map +1 -1
- package/dist/lib/auth/oauth/discovery.d.mts +2 -0
- package/dist/lib/auth/oauth/discovery.d.ts +2 -0
- package/dist/lib/auth/oauth/discovery.d.ts.map +1 -1
- package/dist/lib/auth/oauth/discovery.js +7 -5
- package/dist/lib/auth/oauth/discovery.js.map +1 -1
- package/dist/lib/auth/oauth/discovery.mjs +7 -5
- package/dist/lib/auth/oauth/discovery.mjs.map +1 -1
- package/dist/lib/core/AgentClient.d.ts.map +1 -1
- package/dist/lib/core/ConversationTypes.d.mts +6 -2
- package/dist/lib/core/ConversationTypes.d.ts +6 -2
- package/dist/lib/core/ConversationTypes.d.ts.map +1 -1
- package/dist/lib/core/ConversationTypes.js.map +1 -1
- package/dist/lib/core/GovernanceMiddleware.d.mts +3 -3
- package/dist/lib/core/GovernanceMiddleware.d.ts +3 -3
- package/dist/lib/core/GovernanceMiddleware.d.ts.map +1 -1
- package/dist/lib/core/GovernanceMiddleware.js +8 -4
- package/dist/lib/core/GovernanceMiddleware.js.map +1 -1
- package/dist/lib/core/GovernanceMiddleware.mjs +8 -4
- package/dist/lib/core/GovernanceMiddleware.mjs.map +1 -1
- package/dist/lib/core/SingleAgentClient.d.mts +12 -1
- package/dist/lib/core/SingleAgentClient.d.ts +12 -1
- package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
- package/dist/lib/core/SingleAgentClient.js +89 -12
- package/dist/lib/core/SingleAgentClient.js.map +1 -1
- package/dist/lib/core/SingleAgentClient.mjs +89 -12
- package/dist/lib/core/SingleAgentClient.mjs.map +1 -1
- package/dist/lib/core/TaskExecutor.d.mts +2 -4
- package/dist/lib/core/TaskExecutor.d.ts +2 -4
- package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
- package/dist/lib/core/TaskExecutor.js +90 -14
- package/dist/lib/core/TaskExecutor.js.map +1 -1
- package/dist/lib/core/TaskExecutor.mjs +95 -14
- package/dist/lib/core/TaskExecutor.mjs.map +1 -1
- package/dist/lib/core/task-deadline.d.mts +20 -0
- package/dist/lib/core/task-deadline.d.ts +21 -0
- package/dist/lib/core/task-deadline.d.ts.map +1 -0
- package/dist/lib/core/task-deadline.js +74 -0
- package/dist/lib/core/task-deadline.js.map +1 -0
- package/dist/lib/core/task-deadline.mjs +47 -0
- package/dist/lib/core/task-deadline.mjs.map +1 -0
- package/dist/lib/errors/index.d.mts +11 -0
- package/dist/lib/errors/index.d.ts +11 -0
- package/dist/lib/errors/index.d.ts.map +1 -1
- package/dist/lib/errors/index.js +6 -0
- package/dist/lib/errors/index.js.map +1 -1
- package/dist/lib/errors/index.mjs +6 -0
- package/dist/lib/errors/index.mjs.map +1 -1
- package/dist/lib/net/ssrf-fetch.d.ts.map +1 -1
- package/dist/lib/net/ssrf-fetch.js +11 -0
- package/dist/lib/net/ssrf-fetch.js.map +1 -1
- package/dist/lib/net/ssrf-fetch.mjs +11 -0
- package/dist/lib/net/ssrf-fetch.mjs.map +1 -1
- package/dist/lib/protocols/abort.d.mts +3 -1
- package/dist/lib/protocols/abort.d.ts +3 -1
- package/dist/lib/protocols/abort.d.ts.map +1 -1
- package/dist/lib/protocols/abort.js +19 -17
- package/dist/lib/protocols/abort.js.map +1 -1
- package/dist/lib/protocols/abort.mjs +19 -17
- package/dist/lib/protocols/abort.mjs.map +1 -1
- package/dist/lib/protocols/index.d.ts.map +1 -1
- package/dist/lib/protocols/index.js +13 -10
- package/dist/lib/protocols/index.js.map +1 -1
- package/dist/lib/protocols/index.mjs +13 -10
- package/dist/lib/protocols/index.mjs.map +1 -1
- package/dist/lib/protocols/mcp.d.ts.map +1 -1
- package/dist/lib/protocols/mcp.js +8 -7
- package/dist/lib/protocols/mcp.js.map +1 -1
- package/dist/lib/protocols/mcp.mjs +8 -7
- package/dist/lib/protocols/mcp.mjs.map +1 -1
- package/dist/lib/schemas-data/3.1/a2ui/bound-value.json +1 -1
- package/dist/lib/schemas-data/3.1/a2ui/component.json +1 -1
- package/dist/lib/schemas-data/3.1/a2ui/si-catalog.json +25 -25
- package/dist/lib/schemas-data/3.1/a2ui/surface.json +2 -2
- package/dist/lib/schemas-data/3.1/a2ui/user-action.json +1 -1
- package/dist/lib/schemas-data/3.1/aao/agent-publishers.json +1 -1
- package/dist/lib/schemas-data/3.1/account/get-account-financials-request.json +6 -6
- package/dist/lib/schemas-data/3.1/account/get-account-financials-response.json +12 -12
- package/dist/lib/schemas-data/3.1/account/list-accounts-request.json +6 -6
- package/dist/lib/schemas-data/3.1/account/list-accounts-response.json +8 -8
- package/dist/lib/schemas-data/3.1/account/report-usage-request.json +6 -6
- package/dist/lib/schemas-data/3.1/account/report-usage-response.json +6 -6
- package/dist/lib/schemas-data/3.1/account/sync-accounts-request.json +12 -12
- package/dist/lib/schemas-data/3.1/account/sync-accounts-response.json +16 -16
- package/dist/lib/schemas-data/3.1/account/sync-governance-request.json +6 -6
- package/dist/lib/schemas-data/3.1/account/sync-governance-response.json +10 -10
- package/dist/lib/schemas-data/3.1/adagents.json +29 -29
- package/dist/lib/schemas-data/3.1/brand/acquire-rights-request.json +10 -10
- package/dist/lib/schemas-data/3.1/brand/acquire-rights-response.json +16 -16
- package/dist/lib/schemas-data/3.1/brand/creative-approval-request.json +5 -5
- package/dist/lib/schemas-data/3.1/brand/creative-approval-response.json +12 -12
- package/dist/lib/schemas-data/3.1/brand/get-brand-identity-request.json +4 -4
- package/dist/lib/schemas-data/3.1/brand/get-brand-identity-response.json +10 -10
- package/dist/lib/schemas-data/3.1/brand/get-rights-request.json +8 -8
- package/dist/lib/schemas-data/3.1/brand/get-rights-response.json +11 -11
- package/dist/lib/schemas-data/3.1/brand/revocation-notification.json +4 -4
- package/dist/lib/schemas-data/3.1/brand/rights-pricing-option.json +5 -5
- package/dist/lib/schemas-data/3.1/brand/rights-terms.json +3 -3
- package/dist/lib/schemas-data/3.1/brand/search-brands-request.json +6 -6
- package/dist/lib/schemas-data/3.1/brand/search-brands-response.json +11 -11
- package/dist/lib/schemas-data/3.1/brand/update-rights-request.json +6 -6
- package/dist/lib/schemas-data/3.1/brand/update-rights-response.json +11 -11
- package/dist/lib/schemas-data/3.1/brand/verification-status.json +1 -1
- package/dist/lib/schemas-data/3.1/brand/verify-brand-claim-request.json +2 -2
- package/dist/lib/schemas-data/3.1/brand/verify-brand-claim-response.json +13 -13
- package/dist/lib/schemas-data/3.1/brand/verify-brand-claims-request.json +2 -2
- package/dist/lib/schemas-data/3.1/brand/verify-brand-claims-response.json +13 -13
- package/dist/lib/schemas-data/3.1/brand.json +21 -21
- package/dist/lib/schemas-data/3.1/bundled/content-standards/calibrate-content-request.json +12 -12
- package/dist/lib/schemas-data/3.1/bundled/content-standards/calibrate-content-response.json +12 -12
- package/dist/lib/schemas-data/3.1/bundled/content-standards/create-content-standards-request.json +16 -16
- package/dist/lib/schemas-data/3.1/bundled/content-standards/create-content-standards-response.json +10 -10
- package/dist/lib/schemas-data/3.1/bundled/content-standards/get-content-standards-request.json +5 -5
- package/dist/lib/schemas-data/3.1/bundled/content-standards/get-content-standards-response.json +23 -23
- package/dist/lib/schemas-data/3.1/bundled/content-standards/get-media-buy-artifacts-request.json +16 -16
- package/dist/lib/schemas-data/3.1/bundled/content-standards/get-media-buy-artifacts-response.json +18 -18
- package/dist/lib/schemas-data/3.1/bundled/content-standards/list-content-standards-request.json +7 -7
- package/dist/lib/schemas-data/3.1/bundled/content-standards/list-content-standards-response.json +24 -24
- package/dist/lib/schemas-data/3.1/bundled/content-standards/update-content-standards-request.json +16 -16
- package/dist/lib/schemas-data/3.1/bundled/content-standards/update-content-standards-response.json +10 -10
- package/dist/lib/schemas-data/3.1/bundled/content-standards/validate-content-delivery-request.json +12 -12
- package/dist/lib/schemas-data/3.1/bundled/content-standards/validate-content-delivery-response.json +12 -12
- package/dist/lib/schemas-data/3.1/bundled/core/tasks-get-request.json +16 -16
- package/dist/lib/schemas-data/3.1/bundled/core/tasks-get-response.json +181 -181
- package/dist/lib/schemas-data/3.1/bundled/core/tasks-list-request.json +21 -21
- package/dist/lib/schemas-data/3.1/bundled/core/tasks-list-response.json +11 -11
- package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-delivery-request.json +17 -17
- package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-delivery-response.json +56 -56
- package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-features-request.json +44 -44
- package/dist/lib/schemas-data/3.1/bundled/creative/get-creative-features-response.json +13 -13
- package/dist/lib/schemas-data/3.1/bundled/creative/list-creative-formats-request.json +16 -16
- package/dist/lib/schemas-data/3.1/bundled/creative/list-creative-formats-response.json +48 -48
- package/dist/lib/schemas-data/3.1/bundled/creative/list-creatives-request.json +17 -17
- package/dist/lib/schemas-data/3.1/bundled/creative/list-creatives-response.json +58 -58
- package/dist/lib/schemas-data/3.1/bundled/creative/list-transformers-request.json +18 -18
- package/dist/lib/schemas-data/3.1/bundled/creative/list-transformers-response.json +16 -16
- package/dist/lib/schemas-data/3.1/bundled/creative/preview-creative-request.json +44 -44
- package/dist/lib/schemas-data/3.1/bundled/creative/preview-creative-response.json +50 -50
- package/dist/lib/schemas-data/3.1/bundled/creative/sync-creatives-request.json +46 -46
- package/dist/lib/schemas-data/3.1/bundled/creative/sync-creatives-response.json +27 -27
- package/dist/lib/schemas-data/3.1/bundled/creative/validate-input-request.json +42 -42
- package/dist/lib/schemas-data/3.1/bundled/creative/validate-input-response.json +10 -10
- package/dist/lib/schemas-data/3.1/bundled/media-buy/build-creative-request.json +53 -53
- package/dist/lib/schemas-data/3.1/bundled/media-buy/build-creative-response.json +54 -54
- package/dist/lib/schemas-data/3.1/bundled/media-buy/create-media-buy-request.json +83 -83
- package/dist/lib/schemas-data/3.1/bundled/media-buy/create-media-buy-response.json +77 -77
- package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buy-delivery-request.json +25 -25
- package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buy-delivery-response.json +40 -40
- package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buys-request.json +18 -18
- package/dist/lib/schemas-data/3.1/bundled/media-buy/get-media-buys-response.json +65 -65
- package/dist/lib/schemas-data/3.1/bundled/media-buy/get-products-request.json +49 -49
- package/dist/lib/schemas-data/3.1/bundled/media-buy/get-products-response.json +99 -99
- package/dist/lib/schemas-data/3.1/bundled/media-buy/list-creative-formats-request.json +12 -12
- package/dist/lib/schemas-data/3.1/bundled/media-buy/list-creative-formats-response.json +48 -48
- package/dist/lib/schemas-data/3.1/bundled/media-buy/log-event-request.json +12 -12
- package/dist/lib/schemas-data/3.1/bundled/media-buy/log-event-response.json +10 -10
- package/dist/lib/schemas-data/3.1/bundled/media-buy/package-request.json +79 -79
- package/dist/lib/schemas-data/3.1/bundled/media-buy/provide-performance-feedback-request.json +8 -8
- package/dist/lib/schemas-data/3.1/bundled/media-buy/provide-performance-feedback-response.json +10 -10
- package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-audiences-request.json +18 -18
- package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-audiences-response.json +12 -12
- package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-catalogs-request.json +26 -26
- package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-catalogs-response.json +12 -12
- package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-event-sources-request.json +19 -19
- package/dist/lib/schemas-data/3.1/bundled/media-buy/sync-event-sources-response.json +16 -16
- package/dist/lib/schemas-data/3.1/bundled/media-buy/update-media-buy-request.json +79 -79
- package/dist/lib/schemas-data/3.1/bundled/media-buy/update-media-buy-response.json +71 -71
- package/dist/lib/schemas-data/3.1/bundled/property/create-property-list-request.json +18 -18
- package/dist/lib/schemas-data/3.1/bundled/property/create-property-list-response.json +26 -26
- package/dist/lib/schemas-data/3.1/bundled/property/delete-property-list-request.json +16 -16
- package/dist/lib/schemas-data/3.1/bundled/property/delete-property-list-response.json +10 -10
- package/dist/lib/schemas-data/3.1/bundled/property/get-property-list-request.json +16 -16
- package/dist/lib/schemas-data/3.1/bundled/property/get-property-list-response.json +27 -27
- package/dist/lib/schemas-data/3.1/bundled/property/list-property-lists-request.json +17 -17
- package/dist/lib/schemas-data/3.1/bundled/property/list-property-lists-response.json +27 -27
- package/dist/lib/schemas-data/3.1/bundled/property/update-property-list-request.json +18 -18
- package/dist/lib/schemas-data/3.1/bundled/property/update-property-list-response.json +26 -26
- package/dist/lib/schemas-data/3.1/bundled/property/validate-property-delivery-request.json +19 -19
- package/dist/lib/schemas-data/3.1/bundled/property/validate-property-delivery-response.json +15 -15
- package/dist/lib/schemas-data/3.1/bundled/protocol/get-adcp-capabilities-request.json +5 -5
- package/dist/lib/schemas-data/3.1/bundled/protocol/get-adcp-capabilities-response.json +35 -35
- package/dist/lib/schemas-data/3.1/bundled/protocol/get-task-status-request.json +16 -16
- package/dist/lib/schemas-data/3.1/bundled/protocol/get-task-status-response.json +181 -181
- package/dist/lib/schemas-data/3.1/bundled/protocol/list-tasks-request.json +21 -21
- package/dist/lib/schemas-data/3.1/bundled/protocol/list-tasks-response.json +11 -11
- package/dist/lib/schemas-data/3.1/bundled/signals/activate-signal-request.json +17 -17
- package/dist/lib/schemas-data/3.1/bundled/signals/activate-signal-response.json +12 -12
- package/dist/lib/schemas-data/3.1/bundled/signals/get-signals-request.json +24 -24
- package/dist/lib/schemas-data/3.1/bundled/signals/get-signals-response.json +53 -53
- package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-get-offering-request.json +5 -5
- package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-get-offering-response.json +23 -23
- package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-initiate-session-request.json +18 -18
- package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-initiate-session-response.json +25 -25
- package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-send-message-request.json +16 -16
- package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-send-message-response.json +26 -26
- package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-terminate-session-request.json +5 -5
- package/dist/lib/schemas-data/3.1/bundled/sponsored-intelligence/si-terminate-session-response.json +11 -11
- package/dist/lib/schemas-data/3.1/collection/base-collection-source.json +3 -3
- package/dist/lib/schemas-data/3.1/collection/collection-list-changed-webhook.json +2 -2
- package/dist/lib/schemas-data/3.1/collection/collection-list-filters.json +7 -7
- package/dist/lib/schemas-data/3.1/collection/collection-list.json +5 -5
- package/dist/lib/schemas-data/3.1/collection/create-collection-list-request.json +8 -8
- package/dist/lib/schemas-data/3.1/collection/create-collection-list-response.json +6 -6
- package/dist/lib/schemas-data/3.1/collection/delete-collection-list-request.json +5 -5
- package/dist/lib/schemas-data/3.1/collection/delete-collection-list-response.json +5 -5
- package/dist/lib/schemas-data/3.1/collection/get-collection-list-request.json +5 -5
- package/dist/lib/schemas-data/3.1/collection/get-collection-list-response.json +12 -12
- package/dist/lib/schemas-data/3.1/collection/list-collection-lists-request.json +6 -6
- package/dist/lib/schemas-data/3.1/collection/list-collection-lists-response.json +7 -7
- package/dist/lib/schemas-data/3.1/collection/update-collection-list-request.json +8 -8
- package/dist/lib/schemas-data/3.1/collection/update-collection-list-response.json +6 -6
- package/dist/lib/schemas-data/3.1/content-standards/artifact-webhook-payload.json +3 -3
- package/dist/lib/schemas-data/3.1/content-standards/artifact.json +7 -7
- package/dist/lib/schemas-data/3.1/content-standards/calibrate-content-request.json +5 -5
- package/dist/lib/schemas-data/3.1/content-standards/calibrate-content-response.json +10 -10
- package/dist/lib/schemas-data/3.1/content-standards/content-standards.json +7 -7
- package/dist/lib/schemas-data/3.1/content-standards/create-content-standards-request.json +8 -8
- package/dist/lib/schemas-data/3.1/content-standards/create-content-standards-response.json +8 -8
- package/dist/lib/schemas-data/3.1/content-standards/get-content-standards-request.json +4 -4
- package/dist/lib/schemas-data/3.1/content-standards/get-content-standards-response.json +9 -9
- package/dist/lib/schemas-data/3.1/content-standards/get-media-buy-artifacts-request.json +5 -5
- package/dist/lib/schemas-data/3.1/content-standards/get-media-buy-artifacts-response.json +10 -10
- package/dist/lib/schemas-data/3.1/content-standards/list-content-standards-request.json +6 -6
- package/dist/lib/schemas-data/3.1/content-standards/list-content-standards-response.json +10 -10
- package/dist/lib/schemas-data/3.1/content-standards/update-content-standards-request.json +8 -8
- package/dist/lib/schemas-data/3.1/content-standards/update-content-standards-response.json +8 -8
- package/dist/lib/schemas-data/3.1/content-standards/validate-content-delivery-request.json +5 -5
- package/dist/lib/schemas-data/3.1/content-standards/validate-content-delivery-response.json +10 -10
- package/dist/lib/schemas-data/3.1/core/account-authorization.json +1 -1
- package/dist/lib/schemas-data/3.1/core/account-ref.json +2 -2
- package/dist/lib/schemas-data/3.1/core/account-with-authorization.json +3 -3
- package/dist/lib/schemas-data/3.1/core/account.json +10 -10
- package/dist/lib/schemas-data/3.1/core/activation-key.json +1 -1
- package/dist/lib/schemas-data/3.1/core/ad-inventory-config.json +1 -1
- package/dist/lib/schemas-data/3.1/core/agent-encryption-key.json +1 -1
- package/dist/lib/schemas-data/3.1/core/agent-signing-key.json +1 -1
- package/dist/lib/schemas-data/3.1/core/app-item.json +4 -4
- package/dist/lib/schemas-data/3.1/core/asset-group-vocabulary.json +1 -1
- package/dist/lib/schemas-data/3.1/core/assets/asset-union.json +21 -21
- package/dist/lib/schemas-data/3.1/core/assets/audio-asset.json +3 -3
- package/dist/lib/schemas-data/3.1/core/assets/brief-asset.json +2 -2
- package/dist/lib/schemas-data/3.1/core/assets/card-asset.json +6 -6
- package/dist/lib/schemas-data/3.1/core/assets/catalog-asset.json +2 -2
- package/dist/lib/schemas-data/3.1/core/assets/css-asset.json +2 -2
- package/dist/lib/schemas-data/3.1/core/assets/daast-asset.json +4 -4
- package/dist/lib/schemas-data/3.1/core/assets/daast-tracker-asset.json +3 -3
- package/dist/lib/schemas-data/3.1/core/assets/html-asset.json +2 -2
- package/dist/lib/schemas-data/3.1/core/assets/image-asset.json +2 -2
- package/dist/lib/schemas-data/3.1/core/assets/javascript-asset.json +3 -3
- package/dist/lib/schemas-data/3.1/core/assets/markdown-asset.json +2 -2
- package/dist/lib/schemas-data/3.1/core/assets/pixel-tracker-asset.json +2 -2
- package/dist/lib/schemas-data/3.1/core/assets/published-post-asset.json +2 -2
- package/dist/lib/schemas-data/3.1/core/assets/text-asset.json +2 -2
- package/dist/lib/schemas-data/3.1/core/assets/url-asset.json +3 -3
- package/dist/lib/schemas-data/3.1/core/assets/vast-asset.json +4 -4
- package/dist/lib/schemas-data/3.1/core/assets/vast-tracker-asset.json +3 -3
- package/dist/lib/schemas-data/3.1/core/assets/video-asset.json +7 -7
- package/dist/lib/schemas-data/3.1/core/assets/webhook-asset.json +7 -7
- package/dist/lib/schemas-data/3.1/core/assets/zip-asset.json +2 -2
- package/dist/lib/schemas-data/3.1/core/async-response-data.json +29 -29
- package/dist/lib/schemas-data/3.1/core/async-response-refs/creative/sync-creatives-async-response-input-required.json +3 -3
- package/dist/lib/schemas-data/3.1/core/async-response-refs/creative/sync-creatives-async-response-submitted.json +4 -4
- package/dist/lib/schemas-data/3.1/core/async-response-refs/creative/sync-creatives-async-response-working.json +3 -3
- package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/build-creative-async-response-input-required.json +4 -4
- package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/build-creative-async-response-submitted.json +4 -4
- package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/build-creative-async-response-working.json +3 -3
- package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/create-media-buy-async-response-input-required.json +4 -4
- package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/create-media-buy-async-response-submitted.json +4 -4
- package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/create-media-buy-async-response-working.json +3 -3
- package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/get-products-async-response-input-required.json +4 -4
- package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/get-products-async-response-submitted.json +4 -4
- package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/get-products-async-response-working.json +3 -3
- package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/sync-catalogs-async-response-input-required.json +3 -3
- package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/sync-catalogs-async-response-submitted.json +4 -4
- package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/sync-catalogs-async-response-working.json +3 -3
- package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/update-media-buy-async-response-input-required.json +3 -3
- package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/update-media-buy-async-response-submitted.json +4 -4
- package/dist/lib/schemas-data/3.1/core/async-response-refs/media-buy/update-media-buy-async-response-working.json +3 -3
- package/dist/lib/schemas-data/3.1/core/async-response-refs/signals/get-signals-async-response-submitted.json +4 -4
- package/dist/lib/schemas-data/3.1/core/async-response-refs/signals/get-signals-async-response-working.json +3 -3
- package/dist/lib/schemas-data/3.1/core/attribution-window.json +4 -4
- package/dist/lib/schemas-data/3.1/core/audience-member.json +3 -3
- package/dist/lib/schemas-data/3.1/core/audience-selector.json +7 -7
- package/dist/lib/schemas-data/3.1/core/authorized-agent-base.json +3 -3
- package/dist/lib/schemas-data/3.1/core/brand-id.json +1 -1
- package/dist/lib/schemas-data/3.1/core/brand-ref.json +3 -3
- package/dist/lib/schemas-data/3.1/core/business-entity.json +2 -2
- package/dist/lib/schemas-data/3.1/core/cancellation-policy.json +2 -2
- package/dist/lib/schemas-data/3.1/core/canonical-format-kind.json +1 -1
- package/dist/lib/schemas-data/3.1/core/canonical-projection-ref.json +3 -3
- package/dist/lib/schemas-data/3.1/core/canonical-projection-slot-override.json +1 -1
- package/dist/lib/schemas-data/3.1/core/catalog-field-mapping.json +2 -2
- package/dist/lib/schemas-data/3.1/core/catalog-item-delivery-metrics.json +3 -3
- package/dist/lib/schemas-data/3.1/core/catalog.json +7 -7
- package/dist/lib/schemas-data/3.1/core/catchment.json +5 -5
- package/dist/lib/schemas-data/3.1/core/collection-distribution.json +2 -2
- package/dist/lib/schemas-data/3.1/core/collection-list-ref.json +1 -1
- package/dist/lib/schemas-data/3.1/core/collection-selector.json +1 -1
- package/dist/lib/schemas-data/3.1/core/collection.json +13 -13
- package/dist/lib/schemas-data/3.1/core/committed-metric.json +9 -9
- package/dist/lib/schemas-data/3.1/core/content-rating.json +2 -2
- package/dist/lib/schemas-data/3.1/core/context.json +1 -1
- package/dist/lib/schemas-data/3.1/core/creative-asset.json +10 -10
- package/dist/lib/schemas-data/3.1/core/creative-assignment.json +2 -2
- package/dist/lib/schemas-data/3.1/core/creative-brief.json +4 -4
- package/dist/lib/schemas-data/3.1/core/creative-consumption.json +1 -1
- package/dist/lib/schemas-data/3.1/core/creative-delivery-metrics.json +2 -2
- package/dist/lib/schemas-data/3.1/core/creative-filters.json +5 -5
- package/dist/lib/schemas-data/3.1/core/creative-item.json +1 -1
- package/dist/lib/schemas-data/3.1/core/creative-manifest.json +11 -11
- package/dist/lib/schemas-data/3.1/core/creative-policy.json +3 -3
- package/dist/lib/schemas-data/3.1/core/creative-variable.json +1 -1
- package/dist/lib/schemas-data/3.1/core/creative-variant.json +5 -5
- package/dist/lib/schemas-data/3.1/core/data-provider-signal-selector.json +1 -1
- package/dist/lib/schemas-data/3.1/core/date-range.json +1 -1
- package/dist/lib/schemas-data/3.1/core/datetime-range.json +1 -1
- package/dist/lib/schemas-data/3.1/core/daypart-target.json +2 -2
- package/dist/lib/schemas-data/3.1/core/deadline-policy.json +1 -1
- package/dist/lib/schemas-data/3.1/core/delivery-forecast.json +7 -7
- package/dist/lib/schemas-data/3.1/core/delivery-metric-aggregate.json +9 -9
- package/dist/lib/schemas-data/3.1/core/delivery-metrics.json +8 -8
- package/dist/lib/schemas-data/3.1/core/deployment.json +3 -3
- package/dist/lib/schemas-data/3.1/core/destination-item.json +4 -4
- package/dist/lib/schemas-data/3.1/core/destination.json +1 -1
- package/dist/lib/schemas-data/3.1/core/diagnostic-issue.json +1 -1
- package/dist/lib/schemas-data/3.1/core/downstream-connection-requirement.json +1 -1
- package/dist/lib/schemas-data/3.1/core/duration.json +1 -1
- package/dist/lib/schemas-data/3.1/core/education-item.json +4 -4
- package/dist/lib/schemas-data/3.1/core/error.json +1 -1
- package/dist/lib/schemas-data/3.1/core/evaluator-spec.json +5 -5
- package/dist/lib/schemas-data/3.1/core/event-custom-data.json +2 -2
- package/dist/lib/schemas-data/3.1/core/event-source-health.json +3 -3
- package/dist/lib/schemas-data/3.1/core/event-surface.json +2 -2
- package/dist/lib/schemas-data/3.1/core/event.json +8 -8
- package/dist/lib/schemas-data/3.1/core/ext.json +1 -1
- package/dist/lib/schemas-data/3.1/core/feature-requirement.json +1 -1
- package/dist/lib/schemas-data/3.1/core/flight-item.json +4 -4
- package/dist/lib/schemas-data/3.1/core/forecast-dimension-audience.json +2 -2
- package/dist/lib/schemas-data/3.1/core/forecast-dimension-device-platform.json +2 -2
- package/dist/lib/schemas-data/3.1/core/forecast-dimension-device-type.json +2 -2
- package/dist/lib/schemas-data/3.1/core/forecast-dimension-geo.json +5 -5
- package/dist/lib/schemas-data/3.1/core/forecast-dimension-placement.json +2 -2
- package/dist/lib/schemas-data/3.1/core/forecast-dimension-signal.json +2 -2
- package/dist/lib/schemas-data/3.1/core/forecast-point-dimensions.json +7 -7
- package/dist/lib/schemas-data/3.1/core/forecast-point.json +27 -27
- package/dist/lib/schemas-data/3.1/core/forecast-range.json +1 -1
- package/dist/lib/schemas-data/3.1/core/forecast-vendor-metric-value.json +5 -5
- package/dist/lib/schemas-data/3.1/core/format-id.json +1 -1
- package/dist/lib/schemas-data/3.1/core/format-option-ref.json +1 -1
- package/dist/lib/schemas-data/3.1/core/format-shape-vocabulary.json +1 -1
- package/dist/lib/schemas-data/3.1/core/format.json +44 -44
- package/dist/lib/schemas-data/3.1/core/frequency-cap.json +4 -4
- package/dist/lib/schemas-data/3.1/core/generation-credential.json +3 -3
- package/dist/lib/schemas-data/3.1/core/geo-breakdown-support.json +3 -3
- package/dist/lib/schemas-data/3.1/core/geo-delivery-metrics.json +6 -6
- package/dist/lib/schemas-data/3.1/core/hotel-item.json +4 -4
- package/dist/lib/schemas-data/3.1/core/identifier.json +2 -2
- package/dist/lib/schemas-data/3.1/core/impairment.json +3 -3
- package/dist/lib/schemas-data/3.1/core/industry-identifier.json +2 -2
- package/dist/lib/schemas-data/3.1/core/insertion-order.json +1 -1
- package/dist/lib/schemas-data/3.1/core/installment-deadlines.json +2 -2
- package/dist/lib/schemas-data/3.1/core/installment.json +9 -9
- package/dist/lib/schemas-data/3.1/core/job-item.json +3 -3
- package/dist/lib/schemas-data/3.1/core/keyword-delivery-metrics.json +3 -3
- package/dist/lib/schemas-data/3.1/core/limited-series.json +1 -1
- package/dist/lib/schemas-data/3.1/core/material-deadline.json +1 -1
- package/dist/lib/schemas-data/3.1/core/mcp-webhook-payload.json +5 -5
- package/dist/lib/schemas-data/3.1/core/measurement-readiness.json +5 -5
- package/dist/lib/schemas-data/3.1/core/measurement-terms.json +3 -3
- package/dist/lib/schemas-data/3.1/core/measurement-window.json +1 -1
- package/dist/lib/schemas-data/3.1/core/media-buy-available-action.json +4 -4
- package/dist/lib/schemas-data/3.1/core/media-buy-features.json +1 -1
- package/dist/lib/schemas-data/3.1/core/media-buy.json +10 -10
- package/dist/lib/schemas-data/3.1/core/missing-metric.json +9 -9
- package/dist/lib/schemas-data/3.1/core/notification-config.json +4 -4
- package/dist/lib/schemas-data/3.1/core/offering-asset-group.json +16 -16
- package/dist/lib/schemas-data/3.1/core/offering.json +5 -5
- package/dist/lib/schemas-data/3.1/core/optimization-goal.json +7 -7
- package/dist/lib/schemas-data/3.1/core/outcome-measurement.json +2 -2
- package/dist/lib/schemas-data/3.1/core/overlay.json +1 -1
- package/dist/lib/schemas-data/3.1/core/package-signal-targeting-group.json +2 -2
- package/dist/lib/schemas-data/3.1/core/package-signal-targeting-groups.json +2 -2
- package/dist/lib/schemas-data/3.1/core/package-signal-targeting.json +3 -3
- package/dist/lib/schemas-data/3.1/core/package.json +17 -17
- package/dist/lib/schemas-data/3.1/core/pagination-request.json +1 -1
- package/dist/lib/schemas-data/3.1/core/pagination-response.json +1 -1
- package/dist/lib/schemas-data/3.1/core/performance-feedback.json +12 -12
- package/dist/lib/schemas-data/3.1/core/performance-standard.json +4 -4
- package/dist/lib/schemas-data/3.1/core/placement-definition.json +10 -10
- package/dist/lib/schemas-data/3.1/core/placement-ref.json +1 -1
- package/dist/lib/schemas-data/3.1/core/placement.json +7 -7
- package/dist/lib/schemas-data/3.1/core/planned-delivery.json +5 -5
- package/dist/lib/schemas-data/3.1/core/platform-extension-ref.json +1 -1
- package/dist/lib/schemas-data/3.1/core/postal-area-support.json +2 -2
- package/dist/lib/schemas-data/3.1/core/postal-area.json +4 -4
- package/dist/lib/schemas-data/3.1/core/postal-country-system.json +2 -2
- package/dist/lib/schemas-data/3.1/core/price.json +1 -1
- package/dist/lib/schemas-data/3.1/core/pricing-option.json +10 -10
- package/dist/lib/schemas-data/3.1/core/product-allocation.json +4 -4
- package/dist/lib/schemas-data/3.1/core/product-allowed-action.json +5 -5
- package/dist/lib/schemas-data/3.1/core/product-filters.json +27 -27
- package/dist/lib/schemas-data/3.1/core/product-format-declaration.json +16 -16
- package/dist/lib/schemas-data/3.1/core/product-signal-targeting-option.json +3 -3
- package/dist/lib/schemas-data/3.1/core/product.json +40 -40
- package/dist/lib/schemas-data/3.1/core/property-id.json +1 -1
- package/dist/lib/schemas-data/3.1/core/property-list-ref.json +1 -1
- package/dist/lib/schemas-data/3.1/core/property-tag.json +1 -1
- package/dist/lib/schemas-data/3.1/core/property.json +6 -6
- package/dist/lib/schemas-data/3.1/core/proposal.json +6 -6
- package/dist/lib/schemas-data/3.1/core/protocol-envelope.json +5 -5
- package/dist/lib/schemas-data/3.1/core/provenance.json +9 -9
- package/dist/lib/schemas-data/3.1/core/publisher-property-selector.json +3 -3
- package/dist/lib/schemas-data/3.1/core/push-notification-config.json +2 -2
- package/dist/lib/schemas-data/3.1/core/real-estate-item.json +4 -4
- package/dist/lib/schemas-data/3.1/core/reference-asset.json +1 -1
- package/dist/lib/schemas-data/3.1/core/registry-event.json +13 -13
- package/dist/lib/schemas-data/3.1/core/registry-feed-response.json +2 -2
- package/dist/lib/schemas-data/3.1/core/reporting-capabilities.json +8 -8
- package/dist/lib/schemas-data/3.1/core/reporting-webhook.json +3 -3
- package/dist/lib/schemas-data/3.1/core/requirements/asset-requirements.json +13 -13
- package/dist/lib/schemas-data/3.1/core/requirements/audio-asset-requirements.json +1 -1
- package/dist/lib/schemas-data/3.1/core/requirements/catalog-field-binding.json +4 -4
- package/dist/lib/schemas-data/3.1/core/requirements/catalog-requirements.json +5 -5
- package/dist/lib/schemas-data/3.1/core/requirements/css-asset-requirements.json +1 -1
- package/dist/lib/schemas-data/3.1/core/requirements/daast-asset-requirements.json +1 -1
- package/dist/lib/schemas-data/3.1/core/requirements/html-asset-requirements.json +1 -1
- package/dist/lib/schemas-data/3.1/core/requirements/image-asset-requirements.json +2 -2
- package/dist/lib/schemas-data/3.1/core/requirements/javascript-asset-requirements.json +1 -1
- package/dist/lib/schemas-data/3.1/core/requirements/markdown-asset-requirements.json +1 -1
- package/dist/lib/schemas-data/3.1/core/requirements/offering-asset-constraint.json +4 -4
- package/dist/lib/schemas-data/3.1/core/requirements/text-asset-requirements.json +1 -1
- package/dist/lib/schemas-data/3.1/core/requirements/url-asset-requirements.json +1 -1
- package/dist/lib/schemas-data/3.1/core/requirements/vast-asset-requirements.json +1 -1
- package/dist/lib/schemas-data/3.1/core/requirements/video-asset-requirements.json +6 -6
- package/dist/lib/schemas-data/3.1/core/requirements/webhook-asset-requirements.json +1 -1
- package/dist/lib/schemas-data/3.1/core/response-payload-jws-envelope.json +1 -1
- package/dist/lib/schemas-data/3.1/core/response.json +1 -1
- package/dist/lib/schemas-data/3.1/core/rights-constraint.json +4 -4
- package/dist/lib/schemas-data/3.1/core/seller-agent-ref.json +1 -1
- package/dist/lib/schemas-data/3.1/core/signal-coverage-forecast.json +5 -5
- package/dist/lib/schemas-data/3.1/core/signal-definition-enrichment.json +4 -4
- package/dist/lib/schemas-data/3.1/core/signal-definition.json +5 -5
- package/dist/lib/schemas-data/3.1/core/signal-filters.json +3 -3
- package/dist/lib/schemas-data/3.1/core/signal-id.json +1 -1
- package/dist/lib/schemas-data/3.1/core/signal-listing.json +4 -4
- package/dist/lib/schemas-data/3.1/core/signal-modeling-disclosure.json +1 -1
- package/dist/lib/schemas-data/3.1/core/signal-pricing-option.json +2 -2
- package/dist/lib/schemas-data/3.1/core/signal-pricing.json +6 -6
- package/dist/lib/schemas-data/3.1/core/signal-ref.json +1 -1
- package/dist/lib/schemas-data/3.1/core/signal-selection-group-rule.json +1 -1
- package/dist/lib/schemas-data/3.1/core/signal-targeting-expression.json +4 -4
- package/dist/lib/schemas-data/3.1/core/signal-targeting-rules.json +2 -2
- package/dist/lib/schemas-data/3.1/core/signal-targeting.json +7 -7
- package/dist/lib/schemas-data/3.1/core/sla-window.json +1 -1
- package/dist/lib/schemas-data/3.1/core/special.json +2 -2
- package/dist/lib/schemas-data/3.1/core/start-timing.json +1 -1
- package/dist/lib/schemas-data/3.1/core/store-item.json +3 -3
- package/dist/lib/schemas-data/3.1/core/talent.json +2 -2
- package/dist/lib/schemas-data/3.1/core/targeting.json +22 -22
- package/dist/lib/schemas-data/3.1/core/tasks-get-request.json +5 -5
- package/dist/lib/schemas-data/3.1/core/tasks-get-response.json +10 -10
- package/dist/lib/schemas-data/3.1/core/tasks-list-request.json +13 -13
- package/dist/lib/schemas-data/3.1/core/tasks-list-response.json +8 -8
- package/dist/lib/schemas-data/3.1/core/transformer-param.json +1 -1
- package/dist/lib/schemas-data/3.1/core/transformer.json +5 -5
- package/dist/lib/schemas-data/3.1/core/truncation-sentinel.json +1 -1
- package/dist/lib/schemas-data/3.1/core/user-match.json +3 -3
- package/dist/lib/schemas-data/3.1/core/vehicle-item.json +4 -4
- package/dist/lib/schemas-data/3.1/core/vendor-metric-id.json +1 -1
- package/dist/lib/schemas-data/3.1/core/vendor-metric-optimization-supported-metric.json +3 -3
- package/dist/lib/schemas-data/3.1/core/vendor-metric-optimization.json +2 -2
- package/dist/lib/schemas-data/3.1/core/vendor-metric-value.json +3 -3
- package/dist/lib/schemas-data/3.1/core/vendor-pricing-option.json +3 -3
- package/dist/lib/schemas-data/3.1/core/version-envelope.json +1 -1
- package/dist/lib/schemas-data/3.1/core/webhook-activity-record.json +3 -3
- package/dist/lib/schemas-data/3.1/core/webhook-challenge-response.json +1 -1
- package/dist/lib/schemas-data/3.1/core/webhook-challenge.json +2 -2
- package/dist/lib/schemas-data/3.1/core/wholesale-feed-event.json +17 -17
- package/dist/lib/schemas-data/3.1/core/wholesale-feed-webhook.json +3 -3
- package/dist/lib/schemas-data/3.1/core/x-entity-types.json +1 -1
- package/dist/lib/schemas-data/3.1/creative/asset-types/index.json +6 -6
- package/dist/lib/schemas-data/3.1/creative/audit-observation.json +2 -2
- package/dist/lib/schemas-data/3.1/creative/creative-feature-result.json +2 -2
- package/dist/lib/schemas-data/3.1/creative/creative-purged-webhook.json +3 -3
- package/dist/lib/schemas-data/3.1/creative/creative-status-changed-webhook.json +4 -4
- package/dist/lib/schemas-data/3.1/creative/get-creative-delivery-request.json +6 -6
- package/dist/lib/schemas-data/3.1/creative/get-creative-delivery-response.json +9 -9
- package/dist/lib/schemas-data/3.1/creative/get-creative-features-request.json +6 -6
- package/dist/lib/schemas-data/3.1/creative/get-creative-features-response.json +11 -11
- package/dist/lib/schemas-data/3.1/creative/list-creative-formats-request.json +13 -13
- package/dist/lib/schemas-data/3.1/creative/list-creative-formats-response.json +9 -9
- package/dist/lib/schemas-data/3.1/creative/list-creatives-request.json +9 -9
- package/dist/lib/schemas-data/3.1/creative/list-creatives-response.json +21 -21
- package/dist/lib/schemas-data/3.1/creative/list-transformers-request.json +8 -8
- package/dist/lib/schemas-data/3.1/creative/list-transformers-response.json +8 -8
- package/dist/lib/schemas-data/3.1/creative/preview-creative-request.json +12 -12
- package/dist/lib/schemas-data/3.1/creative/preview-creative-response.json +14 -14
- package/dist/lib/schemas-data/3.1/creative/preview-render.json +1 -1
- package/dist/lib/schemas-data/3.1/creative/sync-creatives-async-response-input-required.json +3 -3
- package/dist/lib/schemas-data/3.1/creative/sync-creatives-async-response-submitted.json +4 -4
- package/dist/lib/schemas-data/3.1/creative/sync-creatives-async-response-working.json +3 -3
- package/dist/lib/schemas-data/3.1/creative/sync-creatives-request.json +8 -8
- package/dist/lib/schemas-data/3.1/creative/sync-creatives-response.json +15 -15
- package/dist/lib/schemas-data/3.1/creative/validate-input-request.json +4 -4
- package/dist/lib/schemas-data/3.1/creative/validate-input-response.json +4 -4
- package/dist/lib/schemas-data/3.1/creative/validate-input-result.json +1 -1
- package/dist/lib/schemas-data/3.1/creative/video-brief.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/account-scope.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/account-status.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/action-not-allowed-reason.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/action-source.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/adcp-protocol.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/adjustment-kind.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/advertiser-industry.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/age-verification-method.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/assessment-status.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/asset-content-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/attestation-claim.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/attribution-methodology.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/attribution-model.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/audience-source.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/audience-status.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/audio-channel-layout.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/audio-distribution-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/auth-scheme.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/available-metric.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/billing-party.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/binary-verdict.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/brand-agent-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/c2pa-watermark-action.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/canceled-by.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/catalog-action.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/catalog-item-status.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/catalog-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/channels.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/cloud-storage-protocol.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/co-branding-requirement.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/collection-cadence.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/collection-kind.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/collection-relationship.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/collection-status.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/completion-source.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/consent-basis.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/content-id-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/content-rating-system.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/creative-action.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/creative-agent-capability.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/creative-approval-status.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/creative-event-reason-code.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/creative-identifier-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/creative-quality.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/creative-selection-strategy.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/creative-sort-field.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/creative-status.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/daast-tracking-event.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/daast-version.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/day-of-week.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/delegation-authority.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/delivery-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/demographic-system.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/derivative-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/device-platform.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/device-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/digital-source-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/dimension-unit.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/disclosure-persistence.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/disclosure-position.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/distance-unit.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/distribution-identifier-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/embedded-provenance-method.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/error-code.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/error-scope.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/escalation-severity.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/event-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/exclusivity.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/feature-check-status.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/feed-format.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/feedback-source.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/forecast-method.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/forecast-range-unit.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/forecastable-metric.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/format-id-parameter.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/frame-rate-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/frequency-cap-scope.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/genre-taxonomy.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/geo-level.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/gop-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/governance-decision.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/governance-domain.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/governance-mode.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/governance-phase.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/history-entry-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/http-method.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/identifier-types.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/impairment-offline-state.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/impairment-reason-code.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/installment-status.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/javascript-module-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/landing-page-requirement.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/legacy-postal-system.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/lift-dimension.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/logo-slot.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/makegood-remedy.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/markdown-flavor.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/match-id-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/match-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/media-buy-action-mode.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/media-buy-health.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/media-buy-status.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/media-buy-valid-action.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/metric-scope.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/metric-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/metro-system.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/moov-atom-position.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/notification-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/offering-availability-status.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/outcome-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/pacing.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/payment-terms.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/performance-standard-metric.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/policy-category.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/policy-enforcement.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/postal-system.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/preview-output-format.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/pricing-model.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/production-quality.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/property-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/proposal-status.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/publisher-identifier-types.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/purchase-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/reach-unit.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/reporting-frequency.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/response-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/restricted-attribute.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/right-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/right-use.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/rights-billing-period.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/scan-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/si-session-status.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/signal-catalog-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/signal-source.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/signal-value-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/snapshot-unavailable-reason.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/social-placement-surface.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/sort-direction.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/sort-metric.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/special-category.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/specialism.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/sponsored-placement-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/talent-role.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/task-status.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/task-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/transport-mode.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/travel-time-unit.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/uid-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/universal-macro.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/update-frequency.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/url-asset-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/validation-mode.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/vast-tracking-event.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/vast-version.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/video-placement-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/viewability-standard.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/watermark-media-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/wcag-level.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/webhook-response-type.json +1 -1
- package/dist/lib/schemas-data/3.1/enums/webhook-security-method.json +1 -1
- package/dist/lib/schemas-data/3.1/error-details/account-setup-required.json +1 -1
- package/dist/lib/schemas-data/3.1/error-details/action-not-allowed.json +4 -4
- package/dist/lib/schemas-data/3.1/error-details/agent-permission-denied.json +1 -1
- package/dist/lib/schemas-data/3.1/error-details/audience-too-small.json +1 -1
- package/dist/lib/schemas-data/3.1/error-details/authorization-required.json +3 -3
- package/dist/lib/schemas-data/3.1/error-details/billing-not-permitted-for-agent.json +3 -3
- package/dist/lib/schemas-data/3.1/error-details/billing-not-supported.json +2 -2
- package/dist/lib/schemas-data/3.1/error-details/budget-too-low.json +1 -1
- package/dist/lib/schemas-data/3.1/error-details/conflict.json +1 -1
- package/dist/lib/schemas-data/3.1/error-details/creative-rejected.json +1 -1
- package/dist/lib/schemas-data/3.1/error-details/policy-violation.json +1 -1
- package/dist/lib/schemas-data/3.1/error-details/rate-limited.json +1 -1
- package/dist/lib/schemas-data/3.1/error-details/stale-response.json +1 -1
- package/dist/lib/schemas-data/3.1/error-details/vendor-error-codes.json +1 -1
- package/dist/lib/schemas-data/3.1/error-details/version-unsupported.json +2 -2
- package/dist/lib/schemas-data/3.1/extensions/extension-meta.json +1 -1
- package/dist/lib/schemas-data/3.1/extensions/index.json +2 -2
- package/dist/lib/schemas-data/3.1/formats/canonical/_base.json +5 -5
- package/dist/lib/schemas-data/3.1/formats/canonical/agent_placement.json +2 -2
- package/dist/lib/schemas-data/3.1/formats/canonical/audio_daast.json +2 -2
- package/dist/lib/schemas-data/3.1/formats/canonical/audio_hosted.json +2 -2
- package/dist/lib/schemas-data/3.1/formats/canonical/display_tag.json +2 -2
- package/dist/lib/schemas-data/3.1/formats/canonical/html5.json +2 -2
- package/dist/lib/schemas-data/3.1/formats/canonical/image.json +2 -2
- package/dist/lib/schemas-data/3.1/formats/canonical/image_carousel.json +2 -2
- package/dist/lib/schemas-data/3.1/formats/canonical/native_in_feed.json +2 -2
- package/dist/lib/schemas-data/3.1/formats/canonical/responsive_creative.json +2 -2
- package/dist/lib/schemas-data/3.1/formats/canonical/sponsored_placement.json +2 -2
- package/dist/lib/schemas-data/3.1/formats/canonical/video_hosted.json +2 -2
- package/dist/lib/schemas-data/3.1/formats/canonical/video_vast.json +2 -2
- package/dist/lib/schemas-data/3.1/governance/attribute-definition.json +1 -1
- package/dist/lib/schemas-data/3.1/governance/audience-constraints.json +3 -3
- package/dist/lib/schemas-data/3.1/governance/check-governance-request.json +8 -8
- package/dist/lib/schemas-data/3.1/governance/check-governance-response.json +7 -7
- package/dist/lib/schemas-data/3.1/governance/get-plan-audit-logs-request.json +5 -5
- package/dist/lib/schemas-data/3.1/governance/get-plan-audit-logs-response.json +11 -11
- package/dist/lib/schemas-data/3.1/governance/policy-category-definition.json +2 -2
- package/dist/lib/schemas-data/3.1/governance/policy-entry.json +6 -6
- package/dist/lib/schemas-data/3.1/governance/policy-ref.json +1 -1
- package/dist/lib/schemas-data/3.1/governance/report-plan-outcome-request.json +7 -7
- package/dist/lib/schemas-data/3.1/governance/report-plan-outcome-response.json +5 -5
- package/dist/lib/schemas-data/3.1/governance/sync-plans-request.json +14 -14
- package/dist/lib/schemas-data/3.1/governance/sync-plans-response.json +6 -6
- package/dist/lib/schemas-data/3.1/index.json +443 -443
- package/dist/lib/schemas-data/3.1/manifest.json +3 -3
- package/dist/lib/schemas-data/3.1/manifest.schema.json +1 -1
- package/dist/lib/schemas-data/3.1/media-buy/build-creative-async-response-input-required.json +4 -4
- package/dist/lib/schemas-data/3.1/media-buy/build-creative-async-response-submitted.json +4 -4
- package/dist/lib/schemas-data/3.1/media-buy/build-creative-async-response-working.json +3 -3
- package/dist/lib/schemas-data/3.1/media-buy/build-creative-request.json +16 -16
- package/dist/lib/schemas-data/3.1/media-buy/build-creative-response.json +35 -35
- package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-async-response-input-required.json +4 -4
- package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-async-response-submitted.json +4 -4
- package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-async-response-working.json +3 -3
- package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-request.json +13 -13
- package/dist/lib/schemas-data/3.1/media-buy/create-media-buy-response.json +19 -19
- package/dist/lib/schemas-data/3.1/media-buy/get-media-buy-delivery-request.json +23 -23
- package/dist/lib/schemas-data/3.1/media-buy/get-media-buy-delivery-response.json +27 -27
- package/dist/lib/schemas-data/3.1/media-buy/get-media-buys-request.json +8 -8
- package/dist/lib/schemas-data/3.1/media-buy/get-media-buys-response.json +30 -30
- package/dist/lib/schemas-data/3.1/media-buy/get-products-async-response-input-required.json +4 -4
- package/dist/lib/schemas-data/3.1/media-buy/get-products-async-response-submitted.json +4 -4
- package/dist/lib/schemas-data/3.1/media-buy/get-products-async-response-working.json +3 -3
- package/dist/lib/schemas-data/3.1/media-buy/get-products-request.json +13 -13
- package/dist/lib/schemas-data/3.1/media-buy/get-products-response.json +10 -10
- package/dist/lib/schemas-data/3.1/media-buy/list-creative-formats-request.json +13 -13
- package/dist/lib/schemas-data/3.1/media-buy/list-creative-formats-response.json +9 -9
- package/dist/lib/schemas-data/3.1/media-buy/log-event-request.json +5 -5
- package/dist/lib/schemas-data/3.1/media-buy/log-event-response.json +8 -8
- package/dist/lib/schemas-data/3.1/media-buy/media-buy-delivery-webhook-result.json +9 -9
- package/dist/lib/schemas-data/3.1/media-buy/package-request.json +23 -23
- package/dist/lib/schemas-data/3.1/media-buy/package-update.json +13 -13
- package/dist/lib/schemas-data/3.1/media-buy/provide-performance-feedback-request.json +7 -7
- package/dist/lib/schemas-data/3.1/media-buy/provide-performance-feedback-response.json +8 -8
- package/dist/lib/schemas-data/3.1/media-buy/sync-audiences-request.json +8 -8
- package/dist/lib/schemas-data/3.1/media-buy/sync-audiences-response.json +14 -14
- package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-async-response-input-required.json +3 -3
- package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-async-response-submitted.json +4 -4
- package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-async-response-working.json +3 -3
- package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-request.json +8 -8
- package/dist/lib/schemas-data/3.1/media-buy/sync-catalogs-response.json +14 -14
- package/dist/lib/schemas-data/3.1/media-buy/sync-event-sources-request.json +8 -8
- package/dist/lib/schemas-data/3.1/media-buy/sync-event-sources-response.json +14 -14
- package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-async-response-input-required.json +3 -3
- package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-async-response-submitted.json +4 -4
- package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-async-response-working.json +3 -3
- package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-request.json +11 -11
- package/dist/lib/schemas-data/3.1/media-buy/update-media-buy-response.json +17 -17
- package/dist/lib/schemas-data/3.1/pricing-options/cpa-option.json +4 -4
- package/dist/lib/schemas-data/3.1/pricing-options/cpc-option.json +4 -4
- package/dist/lib/schemas-data/3.1/pricing-options/cpcv-option.json +4 -4
- package/dist/lib/schemas-data/3.1/pricing-options/cpm-option.json +4 -4
- package/dist/lib/schemas-data/3.1/pricing-options/cpp-option.json +5 -5
- package/dist/lib/schemas-data/3.1/pricing-options/cpv-option.json +4 -4
- package/dist/lib/schemas-data/3.1/pricing-options/flat-rate-option.json +4 -4
- package/dist/lib/schemas-data/3.1/pricing-options/price-breakdown.json +2 -2
- package/dist/lib/schemas-data/3.1/pricing-options/price-guidance.json +1 -1
- package/dist/lib/schemas-data/3.1/pricing-options/time-option.json +4 -4
- package/dist/lib/schemas-data/3.1/pricing-options/vcpm-option.json +4 -4
- package/dist/lib/schemas-data/3.1/property/authorization-result.json +1 -1
- package/dist/lib/schemas-data/3.1/property/base-property-source.json +4 -4
- package/dist/lib/schemas-data/3.1/property/create-property-list-request.json +8 -8
- package/dist/lib/schemas-data/3.1/property/create-property-list-response.json +6 -6
- package/dist/lib/schemas-data/3.1/property/delete-property-list-request.json +5 -5
- package/dist/lib/schemas-data/3.1/property/delete-property-list-response.json +5 -5
- package/dist/lib/schemas-data/3.1/property/delivery-record.json +3 -3
- package/dist/lib/schemas-data/3.1/property/get-property-list-request.json +5 -5
- package/dist/lib/schemas-data/3.1/property/get-property-list-response.json +9 -9
- package/dist/lib/schemas-data/3.1/property/list-property-lists-request.json +6 -6
- package/dist/lib/schemas-data/3.1/property/list-property-lists-response.json +7 -7
- package/dist/lib/schemas-data/3.1/property/property-error.json +2 -2
- package/dist/lib/schemas-data/3.1/property/property-feature-definition.json +2 -2
- package/dist/lib/schemas-data/3.1/property/property-feature-result.json +4 -4
- package/dist/lib/schemas-data/3.1/property/property-feature-value.json +2 -2
- package/dist/lib/schemas-data/3.1/property/property-feature.json +1 -1
- package/dist/lib/schemas-data/3.1/property/property-list-changed-webhook.json +2 -2
- package/dist/lib/schemas-data/3.1/property/property-list-filters.json +5 -5
- package/dist/lib/schemas-data/3.1/property/property-list.json +6 -6
- package/dist/lib/schemas-data/3.1/property/update-property-list-request.json +8 -8
- package/dist/lib/schemas-data/3.1/property/update-property-list-response.json +6 -6
- package/dist/lib/schemas-data/3.1/property/validate-property-delivery-request.json +6 -6
- package/dist/lib/schemas-data/3.1/property/validate-property-delivery-response.json +6 -6
- package/dist/lib/schemas-data/3.1/property/validation-result.json +5 -5
- package/dist/lib/schemas-data/3.1/protocol/get-adcp-capabilities-request.json +4 -4
- package/dist/lib/schemas-data/3.1/protocol/get-adcp-capabilities-response.json +33 -33
- package/dist/lib/schemas-data/3.1/protocol/get-task-status-request.json +5 -5
- package/dist/lib/schemas-data/3.1/protocol/get-task-status-response.json +10 -10
- package/dist/lib/schemas-data/3.1/protocol/list-tasks-request.json +13 -13
- package/dist/lib/schemas-data/3.1/protocol/list-tasks-response.json +8 -8
- package/dist/lib/schemas-data/3.1/registries/v1-canonical-mapping.json +5 -5
- package/dist/lib/schemas-data/3.1/signals/activate-signal-request.json +6 -6
- package/dist/lib/schemas-data/3.1/signals/activate-signal-response.json +9 -9
- package/dist/lib/schemas-data/3.1/signals/get-signals-async-response-submitted.json +4 -4
- package/dist/lib/schemas-data/3.1/signals/get-signals-async-response-working.json +3 -3
- package/dist/lib/schemas-data/3.1/signals/get-signals-request.json +11 -11
- package/dist/lib/schemas-data/3.1/signals/get-signals-response.json +17 -17
- package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-capabilities.json +1 -1
- package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-context-use.json +1 -1
- package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-get-offering-request.json +4 -4
- package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-get-offering-response.json +9 -9
- package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-identity.json +1 -1
- package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-initiate-session-request.json +7 -7
- package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-initiate-session-response.json +10 -10
- package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-send-message-request.json +5 -5
- package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-send-message-response.json +10 -10
- package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-sponsored-context-receipt.json +4 -4
- package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-sponsored-context.json +4 -4
- package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-terminate-session-request.json +4 -4
- package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-terminate-session-response.json +7 -7
- package/dist/lib/schemas-data/3.1/sponsored-intelligence/si-ui-element.json +1 -1
- package/dist/lib/schemas-data/3.1/trusted-match/available-package.json +4 -4
- package/dist/lib/schemas-data/3.1/trusted-match/context-match-request.json +5 -5
- package/dist/lib/schemas-data/3.1/trusted-match/context-match-response.json +4 -4
- package/dist/lib/schemas-data/3.1/trusted-match/error.json +1 -1
- package/dist/lib/schemas-data/3.1/trusted-match/identity-match-request.json +4 -4
- package/dist/lib/schemas-data/3.1/trusted-match/identity-match-response.json +4 -4
- package/dist/lib/schemas-data/3.1/trusted-match/offer-price.json +1 -1
- package/dist/lib/schemas-data/3.1/trusted-match/offer.json +5 -5
- package/dist/lib/schemas-data/3.1/trusted-match/provider-identity-match-response.json +4 -4
- package/dist/lib/schemas-data/3.1/trusted-match/provider-registration.json +2 -2
- package/dist/lib/schemas-data/3.1/trusted-match/publisher-tmpx-config.json +1 -1
- package/dist/lib/schemas-data/3.1/trusted-match/tmpx-chunk.json +1 -1
- package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
- package/dist/lib/server/decisioning/runtime/entity-hydration.generated.js.map +1 -1
- package/dist/lib/server/decisioning/runtime/entity-hydration.generated.mjs.map +1 -1
- package/dist/lib/server/wire-spec-fields.generated.d.mts +29 -29
- package/dist/lib/server/wire-spec-fields.generated.d.ts +29 -29
- package/dist/lib/server/wire-spec-fields.generated.js +29 -29
- package/dist/lib/server/wire-spec-fields.generated.js.map +1 -1
- package/dist/lib/server/wire-spec-fields.generated.mjs +29 -29
- package/dist/lib/server/wire-spec-fields.generated.mjs.map +1 -1
- package/dist/lib/testing/index.d.mts +1 -1
- package/dist/lib/testing/index.d.ts +1 -1
- package/dist/lib/testing/index.d.ts.map +1 -1
- package/dist/lib/testing/index.js +12 -0
- package/dist/lib/testing/index.js.map +1 -1
- package/dist/lib/testing/index.mjs +12 -0
- package/dist/lib/testing/index.mjs.map +1 -1
- package/dist/lib/testing/storyboard/canonical-format-satisfaction.d.mts +6 -0
- package/dist/lib/testing/storyboard/canonical-format-satisfaction.d.ts +6 -0
- package/dist/lib/testing/storyboard/canonical-format-satisfaction.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/canonical-format-satisfaction.js +11 -0
- package/dist/lib/testing/storyboard/canonical-format-satisfaction.js.map +1 -1
- package/dist/lib/testing/storyboard/canonical-format-satisfaction.mjs +10 -0
- package/dist/lib/testing/storyboard/canonical-format-satisfaction.mjs.map +1 -1
- package/dist/lib/testing/storyboard/creative-assets.d.mts +5 -0
- package/dist/lib/testing/storyboard/creative-assets.d.ts +6 -0
- package/dist/lib/testing/storyboard/creative-assets.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/creative-assets.js +180 -0
- package/dist/lib/testing/storyboard/creative-assets.js.map +1 -0
- package/dist/lib/testing/storyboard/creative-assets.mjs +154 -0
- package/dist/lib/testing/storyboard/creative-assets.mjs.map +1 -0
- package/dist/lib/testing/storyboard/fixture-resolution.d.mts +37 -0
- package/dist/lib/testing/storyboard/fixture-resolution.d.ts +38 -0
- package/dist/lib/testing/storyboard/fixture-resolution.d.ts.map +1 -0
- package/dist/lib/testing/storyboard/fixture-resolution.js +424 -0
- package/dist/lib/testing/storyboard/fixture-resolution.js.map +1 -0
- package/dist/lib/testing/storyboard/fixture-resolution.mjs +395 -0
- package/dist/lib/testing/storyboard/fixture-resolution.mjs.map +1 -0
- package/dist/lib/testing/storyboard/index.d.mts +2 -1
- package/dist/lib/testing/storyboard/index.d.ts +2 -1
- package/dist/lib/testing/storyboard/index.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/index.js +13 -0
- package/dist/lib/testing/storyboard/index.js.map +1 -1
- package/dist/lib/testing/storyboard/index.mjs +14 -0
- package/dist/lib/testing/storyboard/index.mjs.map +1 -1
- package/dist/lib/testing/storyboard/junit.js +14 -1
- package/dist/lib/testing/storyboard/junit.js.map +1 -1
- package/dist/lib/testing/storyboard/junit.mjs +14 -1
- package/dist/lib/testing/storyboard/junit.mjs.map +1 -1
- package/dist/lib/testing/storyboard/loader.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/loader.js +2 -0
- package/dist/lib/testing/storyboard/loader.js.map +1 -1
- package/dist/lib/testing/storyboard/loader.mjs +2 -0
- package/dist/lib/testing/storyboard/loader.mjs.map +1 -1
- package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/runner.js +170 -12
- package/dist/lib/testing/storyboard/runner.js.map +1 -1
- package/dist/lib/testing/storyboard/runner.mjs +175 -13
- package/dist/lib/testing/storyboard/runner.mjs.map +1 -1
- package/dist/lib/testing/storyboard/seeding.d.mts +10 -3
- package/dist/lib/testing/storyboard/seeding.d.ts +10 -3
- package/dist/lib/testing/storyboard/seeding.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/seeding.js +550 -2
- package/dist/lib/testing/storyboard/seeding.js.map +1 -1
- package/dist/lib/testing/storyboard/seeding.mjs +555 -2
- package/dist/lib/testing/storyboard/seeding.mjs.map +1 -1
- package/dist/lib/testing/storyboard/types.d.mts +106 -0
- package/dist/lib/testing/storyboard/types.d.ts +106 -0
- package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/types.js +1 -0
- package/dist/lib/testing/storyboard/types.js.map +1 -1
- package/dist/lib/testing/storyboard/types.mjs +1 -0
- package/dist/lib/testing/storyboard/types.mjs.map +1 -1
- package/dist/lib/testing/stubs/governance-agent-stub.d.ts.map +1 -1
- package/dist/lib/testing/stubs/governance-agent-stub.js +4 -1
- package/dist/lib/testing/stubs/governance-agent-stub.js.map +1 -1
- package/dist/lib/testing/stubs/governance-agent-stub.mjs +4 -1
- package/dist/lib/testing/stubs/governance-agent-stub.mjs.map +1 -1
- package/dist/lib/types/core.generated.d.mts +3 -1
- package/dist/lib/types/core.generated.d.ts +3 -1
- package/dist/lib/types/core.generated.d.ts.map +1 -1
- package/dist/lib/types/core.generated.js.map +1 -1
- package/dist/lib/types/inline-enums.generated.d.mts +2 -0
- package/dist/lib/types/inline-enums.generated.d.ts +2 -0
- package/dist/lib/types/inline-enums.generated.d.ts.map +1 -1
- package/dist/lib/types/inline-enums.generated.js +3 -0
- package/dist/lib/types/inline-enums.generated.js.map +1 -1
- package/dist/lib/types/inline-enums.generated.mjs +2 -0
- package/dist/lib/types/inline-enums.generated.mjs.map +1 -1
- package/dist/lib/types/manifest.generated.d.mts +3 -3
- package/dist/lib/types/manifest.generated.d.ts +3 -3
- package/dist/lib/types/manifest.generated.js.map +1 -1
- package/dist/lib/types/manifest.generated.mjs.map +1 -1
- package/dist/lib/types/per-tool-index.json +1 -1
- package/dist/lib/validation/schema-loader.d.mts +16 -0
- package/dist/lib/validation/schema-loader.d.ts +16 -0
- package/dist/lib/validation/schema-loader.d.ts.map +1 -1
- package/dist/lib/validation/schema-loader.js +116 -0
- package/dist/lib/validation/schema-loader.js.map +1 -1
- package/dist/lib/validation/schema-loader.mjs +115 -0
- package/dist/lib/validation/schema-loader.mjs.map +1 -1
- package/dist/lib/version.d.mts +7 -7
- package/dist/lib/version.d.ts +7 -7
- package/dist/lib/version.d.ts.map +1 -1
- package/dist/lib/version.js +7 -6
- package/dist/lib/version.js.map +1 -1
- package/dist/lib/version.mjs +7 -6
- package/dist/lib/version.mjs.map +1 -1
- package/docs/llms.txt +3 -3
- package/package.json +2 -2
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/brand/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/brand/scenarios/single_side_trust_extension.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/creative/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/creative/scenarios/billing_out_of_band.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/creative/scenarios/canonical_supported_formats.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/creative/scenarios/evaluator_auth.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/creative/scenarios/native_in_feed.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/governance/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/available_actions.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/canonical_formats.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/creative_reception.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/delivery_reporting.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/dependency_impairment.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/get_products_async.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/governance_approved.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/governance_conditions.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/governance_denied.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/invalid_transitions.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/inventory_list_targeting.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/measurement_accountability.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/measurement_terms_rejected.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/pending_creatives_to_start.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/proposal_finalize.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/provenance_audit_observation.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/provenance_enforcement.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/refine_products.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/media-buy/state-machine.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/signals/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/signals/scenarios/get_signals_async.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/sponsored-intelligence/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/domains/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/brand/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/creative/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/creative/scenarios/billing_out_of_band.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/creative/scenarios/canonical_supported_formats.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/creative/scenarios/evaluator_auth.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/creative/scenarios/native_in_feed.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/governance/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/available_actions.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/canonical_formats.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/creative_reception.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/dependency_impairment.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/get_products_async.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/governance_approved.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/governance_conditions.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/governance_denied.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/invalid_transitions.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/inventory_list_targeting.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/measurement_accountability.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/provenance_audit_observation.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/provenance_enforcement.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/refine_products.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/media-buy/state-machine.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/signals/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/signals/scenarios/get_signals_async.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/sponsored-intelligence/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/protocols/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/audience-sync/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/brand-rights/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/collection-lists/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/content-standards/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/creative-ad-server/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/creative-generative/generative-seller.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/creative-generative/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/creative-template/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/creative-transformers/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/governance-aware-seller/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/governance-delivery-monitor/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/governance-spend-authority/denied.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/governance-spend-authority/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/property-lists/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/sales-broadcast-tv/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/sales-catalog-driven/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/sales-guaranteed/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/sales-non-guaranteed/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/sales-proposal-mode/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/sales-social/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/signal-marketplace/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/signal-owned/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/specialisms/sponsored-intelligence/index.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/acme-outdoor-live.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/acme-outdoor.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/billing-gate-runner.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/bistro-oranje.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/distributed-brand-runner.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/nova-motors.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/osei-natural.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/parallel-dispatch-runner.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/rate-limit-trip-runner.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/signed-requests-runner.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/single-side-trust-runner.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/substitution-observer-runner.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/summit-foods.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-kits/webhook-receiver-runner.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/catalog-macro-substitution.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/001-minimal-plan.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/002-full-plan.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/004a-human-review-omitted.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/007-unicode-objectives.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/README.md +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/canonicalization.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/keys.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/001-no-signature-header.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/002-wrong-tag.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/003-expired-signature.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/004-window-too-long.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/011-malformed-header.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/013-expires-le-created.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/015-signature-invalid.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/017-key-revoked.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/020-rate-abuse.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/001-basic-post.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/003-es256-post.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-receiver-envelope.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/README.md +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/keys.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/positive/001-basic-post.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/positive/002-es256-post.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/test-vectors/webhook-signing/positive/008-request-signing-key-reuse.json +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/billing-gate-dispatch.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/canonical-format-validate-input.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/capability-discovery.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/collection-lists-pagination-integrity.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/comply-controller-mode-gate.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/content-standards-pagination-integrity.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/deterministic-testing.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/error-compliance-signals.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/error-compliance.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/fictional-entities.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/get-media-buys-pagination-integrity.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/get-products-pagination-integrity.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/get-signals-pagination-integrity.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/idempotency.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/notification-config-event-scope.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/notification-config-lifecycle.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/notification-config-rejections.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/pagination-integrity-creative-formats.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/pagination-integrity-list-accounts.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/pagination-integrity.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/property-lists-pagination-integrity.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/read-tool-idempotency.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/runner-output-contract.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/schema-validation-signals.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/schema-validation.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/security.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/signed-requests.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/stale-response-advisory.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/v3-envelope-integrity.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/version-negotiation.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/webhook-emission.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/webhook-receiver-envelope.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/wholesale-feed-bulk-webhooks.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/wholesale-feed-product-webhooks.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/wholesale-feed-products.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/wholesale-feed-signal-webhooks.yaml +0 -0
- /package/compliance/cache/{3.1.10 → 3.1.11}/universal/wholesale-feed-signals.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/brand/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/brand/scenarios/distributed_brand_resolution.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/brand/scenarios/single_side_trust_extension.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/creative/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/creative/scenarios/billing_out_of_band.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/creative/scenarios/canonical_supported_formats.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/creative/scenarios/evaluator_auth.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/creative/scenarios/native_in_feed.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/governance/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/audience_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/available_actions.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/canonical_formats.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/create_media_buy_async.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/creative_reception.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/delivery_reporting.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/dependency_impairment.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/event_dedup_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/get_products_async.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/governance_approved.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/governance_conditions.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/governance_denied.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/invalid_transitions.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/inventory_list_no_match.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/inventory_list_targeting.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/measurement_accountability.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/measurement_terms_rejected.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/pending_creatives_to_start.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/performance_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/product_signal_targeting.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/proposal_finalize.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/provenance_audit_observation.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/provenance_enforcement.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/reach_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/refine_products.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/media-buy/state-machine.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/signals/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/signals/scenarios/get_signals_async.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/sponsored-intelligence/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/domains/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/brand/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/brand/scenarios/distributed_brand_resolution.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/brand/scenarios/single_side_trust_extension.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/creative/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/creative/scenarios/billing_out_of_band.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/creative/scenarios/canonical_supported_formats.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/creative/scenarios/creative_lifecycle_webhooks.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/creative/scenarios/evaluator_auth.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/creative/scenarios/native_in_feed.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/governance/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/audience_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/available_actions.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/billing_finality_delivery.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/canonical_formats.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/clicks_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/completed_views_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/create_media_buy_async.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/creative_reception.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/delivery_reporting.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/dependency_impairment.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/dependency_impairment_audience.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/dependency_impairment_cardinality.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/event_dedup_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/frequency_cap_enforcement.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/get_products_async.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/governance_approved.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/governance_conditions.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/governance_denied.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/governance_denied_recovery.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/inline_creatives_without_sync.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/invalid_transitions.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/inventory_list_no_match.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/inventory_list_targeting.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/measurement_accountability.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/measurement_terms_rejected.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/package_correlation_legacy_fallback.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/pending_creatives_to_start.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/per_creative_conversion_attribution.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/performance_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/performance_buy_flow_roas.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/pricing_currency_filter.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/product_signal_targeting.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/proposal_finalize.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/proposal_finalize_asap_timing.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/proposal_not_found_errors.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/provenance_audit_observation.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/provenance_enforcement.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/provenance_truth_of_claim.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/reach_buy_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/refine_finalize_exclusivity.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/refine_products.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/vendor_metric_accountability.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/vendor_metric_catalog_precondition.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/scenarios/vendor_metric_optimization_flow.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/media-buy/state-machine.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/signals/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/signals/scenarios/get_signals_async.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/sponsored-intelligence/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/protocols/sponsored-intelligence/sponsored-context-accountability.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/audience-sync/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/brand-rights/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/brand-rights/scenarios/governance_denied.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/collection-lists/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/content-standards/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/creative-ad-server/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/creative-generative/generative-seller.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/creative-generative/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/creative-template/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/creative-transformers/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/governance-aware-seller/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/governance-aware-seller/scenarios/governance_multi_agent_rejected.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/governance-delivery-monitor/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/governance-spend-authority/denied.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/governance-spend-authority/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/property-lists/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/sales-broadcast-tv/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/sales-catalog-driven/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/sales-guaranteed/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/sales-non-guaranteed/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/sales-proposal-mode/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/sales-social/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/signal-marketplace/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/signal-marketplace/scenarios/governance_denied.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/signal-owned/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/specialisms/sponsored-intelligence/index.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/acme-outdoor-live.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/acme-outdoor.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/billing-gate-runner.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/bistro-oranje.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/distributed-brand-runner.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/nova-motors.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/osei-natural.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/parallel-dispatch-runner.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/rate-limit-trip-runner.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/signed-requests-runner.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/single-side-trust-runner.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/substitution-observer-runner.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/summit-foods.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-kits/webhook-receiver-runner.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/catalog-macro-substitution.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/001-minimal-plan.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/002-full-plan.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/003-bookkeeping-stripped.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/004a-human-review-omitted.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/004b-human-review-explicit-null.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/005a-policy-categories-order-1.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/005b-policy-categories-order-2.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/006a-ext-trace-v1.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/006b-ext-trace-v2.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/007-unicode-objectives.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/plan-hash/008-numeric-canonicalization.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/README.md +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/canonicalization.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/keys.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/001-no-signature-header.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/002-wrong-tag.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/003-expired-signature.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/004-window-too-long.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/005-alg-not-allowed.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/006-missing-covered-component.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/007-missing-content-digest.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/008-unknown-keyid.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/009-key-ops-missing-verify.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/010-content-digest-mismatch.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/011-malformed-header.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/012-missing-expires-param.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/013-expires-le-created.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/014-missing-nonce-param.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/015-signature-invalid.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/016-replayed-nonce.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/017-key-revoked.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/018-digest-covered-when-forbidden.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/019-signature-without-signature-input.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/020-rate-abuse.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/021-duplicate-signature-input-label.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/022-multi-valued-content-type.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/023-multi-valued-content-digest.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/024-unquoted-string-param.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/025-jwk-alg-crv-mismatch.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/026-non-ascii-host.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/027-webhook-registration-authentication-unsigned.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/negative/028-unsigned-protocol-method-required.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/001-basic-post.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/002-post-with-content-digest.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/003-es256-post.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/004-multiple-signature-labels.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/005-default-port-stripped.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/006-dot-segment-path.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/007-query-byte-preserved.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/008-percent-encoded-path.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/009-percent-encoded-unreserved-decoded.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/010-percent-encoded-slash-preserved.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/011-ipv6-authority.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/request-signing/positive/012-ipv6-authority-default-port-stripped.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-receiver-envelope.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/README.md +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/keys.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/001-wrong-tag.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/002-expired-signature.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/003-window-too-long.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/004-alg-not-allowed.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/005-missing-authority-component.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/006-missing-content-digest.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/007-unknown-keyid.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/008-wrong-adcp-use.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/009-content-digest-mismatch.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/010-malformed-signature-input.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/011-signature-without-input.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/012-missing-expires-param.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/013-expires-le-created.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/014-missing-nonce-param.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/015-signature-invalid.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/016-replayed-nonce.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/017-key-revoked.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/018-rate-abuse.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/019-revocation-stale.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/020-key-ops-missing-verify.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/negative/021-base64-alphabet-mixing.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/positive/001-basic-post.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/positive/002-es256-post.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/positive/003-multiple-signature-labels.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/positive/004-default-port-stripped.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/positive/005-percent-encoded-path.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/positive/006-query-byte-preserved.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/positive/007-body-without-idempotency-key.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/test-vectors/webhook-signing/positive/008-request-signing-key-reuse.json +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/billing-gate-dispatch.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/canonical-format-validate-input.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/capability-discovery.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/collection-lists-pagination-integrity.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/comply-controller-mode-gate.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/content-standards-pagination-integrity.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/deterministic-testing.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/error-compliance-signals.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/error-compliance.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/fictional-entities.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/get-media-buys-pagination-integrity.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/get-products-pagination-integrity.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/get-signals-pagination-integrity.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/idempotency.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/notification-config-event-scope.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/notification-config-lifecycle.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/notification-config-rejections.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/pagination-integrity-creative-formats.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/pagination-integrity-list-accounts.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/pagination-integrity.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/property-lists-pagination-integrity.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/read-tool-idempotency.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/runner-output-contract.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/schema-validation-signals.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/schema-validation.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/security.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/signed-requests.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/stale-response-advisory.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/v3-envelope-integrity.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/version-negotiation.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/webhook-emission.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/webhook-receiver-envelope.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/wholesale-feed-bulk-webhooks.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/wholesale-feed-product-webhooks.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/wholesale-feed-products.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/wholesale-feed-signal-webhooks.yaml +0 -0
- /package/compliance/cache/{3.1.10.previous → 3.1.11.previous}/universal/wholesale-feed-signals.yaml +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/testing/storyboard/loader.ts"],"sourcesContent":["/**\n * Storyboard YAML parser.\n *\n * Storyboards are pulled from the compliance cache populated by\n * `npm run sync-schemas`. See `./compliance.ts` for capability-driven\n * resolution and bundle loading.\n */\n\nimport { readFileSync } from 'fs';\nimport { parse } from 'yaml';\nimport type { Storyboard } from './types';\nimport { MUTATING_TASKS } from '../../utils/idempotency';\n\n/**\n * Supported `branch_set.semantics` values. Extend when AdCP adds `all_of`,\n * `at_least_n`, etc. Exported so the runner can enforce the same whitelist\n * on programmatically-constructed storyboards that bypass the YAML parser.\n */\nexport const BRANCH_SET_SEMANTICS = ['any_of'] as const;\n\nconst IDENTIFIER_PATH_SEGMENT = String.raw`[A-Za-z_][A-Za-z0-9_-]*(?:\\[\\*\\])*`;\nconst IDENTIFIER_PATH_PATTERN = new RegExp(`^${IDENTIFIER_PATH_SEGMENT}(?:\\\\.${IDENTIFIER_PATH_SEGMENT})*$`);\n\n/** Parse a YAML string into a Storyboard. Throws if required fields are missing. */\nexport function parseStoryboard(yamlContent: string): Storyboard {\n const parsed = parse(yamlContent) as Storyboard;\n if (!parsed?.id || !parsed?.phases) {\n throw new Error('Invalid storyboard YAML: missing required fields (id, phases)');\n }\n for (const phase of parsed.phases) {\n // Specialism YAMLs may declare a phase with no `steps:` — the steps are\n // synthesized at runtime from fixtures (see request-signing/synthesize.ts).\n // Treat missing steps as an empty list so the parser stays phase-agnostic.\n if (!phase.steps) phase.steps = [];\n // YAML uses `name:` for context outputs but our runtime expects `key:`.\n for (const step of phase.steps) {\n if (!step.context_outputs) continue;\n for (const output of step.context_outputs) {\n const raw = output as unknown as Record<string, unknown>;\n if (raw.name && !raw.key) {\n output.key = raw.name as string;\n }\n }\n }\n }\n validateStoryboardShape(parsed);\n return parsed;\n}\n\n/** Load and parse a single storyboard file. Useful for ad-hoc testing of in-development YAMLs. */\nexport function loadStoryboardFile(filePath: string): Storyboard {\n return parseStoryboard(readFileSync(filePath, 'utf-8'));\n}\n\n/**\n * Enforce authoring-time invariants on a Storyboard. Called by\n * `parseStoryboard`, and should also be called by any runner entry point\n * that accepts a programmatically-built `Storyboard` object so the same\n * loud-fail-on-drift guarantee holds regardless of how the storyboard was\n * constructed. Mutates only legacy shorthand fields (resolves\n * `contributes: true` to `contributes_to`) and is idempotent on\n * already-validated inputs.\n */\nexport function validateStoryboardShape(storyboard: Storyboard): void {\n validateRequires(storyboard);\n validateRequiredAnyOfTools(storyboard);\n validatePhaseDependsOn(storyboard);\n for (const phase of storyboard.phases) {\n validateBranchSet(storyboard.id, phase);\n if (!phase.steps) continue;\n for (const step of phase.steps) {\n resolveContributesShorthand(storyboard.id, phase, step);\n validateFixtureForMutatingStep(storyboard.id, phase, step);\n validateOmitFlagCoherence(storyboard.id, phase, step);\n validateContextOutputs(storyboard.id, phase, step);\n validateUpstreamAttestationMode(storyboard.id, phase, step);\n validateUpstreamIdentifierPaths(storyboard.id, phase, step);\n validatePeerSubstitutesFor(storyboard.id, phase, step);\n }\n }\n}\n\nfunction validateUpstreamAttestationMode(\n storyboardId: string,\n phase: { id?: string },\n step: { id?: string; validations?: any[] }\n): void {\n const validations = step.validations ?? [];\n for (let validationIndex = 0; validationIndex < validations.length; validationIndex++) {\n const validation = validations[validationIndex];\n if (validation?.check !== 'upstream_traffic') continue;\n const mode = validation.preferred_attestation_mode;\n if (mode !== undefined && mode !== 'raw' && mode !== 'digest') {\n throw new Error(\n `[${storyboardId}] ${phase.id ?? '?'}.${step.id ?? '?'}.validations[${validationIndex}].preferred_attestation_mode: must be \"raw\" or \"digest\"`\n );\n }\n }\n}\n\nfunction validateUpstreamIdentifierPaths(\n storyboardId: string,\n phase: { id?: string },\n step: { id?: string; validations?: any[] }\n): void {\n const validations = step.validations ?? [];\n for (let validationIndex = 0; validationIndex < validations.length; validationIndex++) {\n const validation = validations[validationIndex];\n if (validation?.check !== 'upstream_traffic' || validation.identifier_paths === undefined) continue;\n if (!Array.isArray(validation.identifier_paths)) {\n throw new Error(\n `[${storyboardId}] ${phase.id ?? '?'}.${\n step.id ?? '?'\n }.validations[${validationIndex}].identifier_paths: must be an array of request-payload paths`\n );\n }\n for (let pathIndex = 0; pathIndex < validation.identifier_paths.length; pathIndex++) {\n const path = validation.identifier_paths[pathIndex];\n if (typeof path !== 'string' || path.length === 0) {\n throw new Error(\n `[${storyboardId}] ${phase.id ?? '?'}.${step.id ?? '?'}.validations[${validationIndex}].identifier_paths[${pathIndex}]: must be a non-empty string`\n );\n }\n const pathErrorPrefix = `[${storyboardId}] ${phase.id ?? '?'}.${step.id ?? '?'}.validations[${validationIndex}].identifier_paths[${pathIndex}]`;\n let firstSegment: string;\n try {\n const validated = validateIdentifierPathSyntax(path);\n firstSegment = validated.firstSegment;\n } catch {\n throw new Error(\n `${pathErrorPrefix}: \"${path}\" is unsupported; identifier_paths resolve only against the request payload or sample_request using dotted paths with [*] array selectors`\n );\n }\n const root = firstSegment.toLowerCase();\n if (root === 'request' || root === 'response' || root === 'context') {\n throw new Error(\n `${pathErrorPrefix}: \"${path}\" is unsupported; identifier_paths resolve only against the request payload or sample_request`\n );\n }\n }\n }\n}\n\nfunction validateIdentifierPathSyntax(path: string): { normalized: string; firstSegment: string } {\n const trimmed = path.trim();\n const normalized = trimmed.startsWith('$.') ? trimmed.slice(2) : trimmed;\n if (!IDENTIFIER_PATH_PATTERN.test(normalized)) {\n throw new Error('unsupported identifier path syntax');\n }\n return { normalized, firstSegment: normalized.split(/[.[\\]]/, 1)[0] ?? '' };\n}\n\nfunction validateRequiredAnyOfTools(storyboard: Storyboard): void {\n if (storyboard.required_any_of_tools === undefined) return;\n if (!Array.isArray(storyboard.required_any_of_tools)) {\n throw new Error(`[${storyboard.id}] required_any_of_tools: must be an array of tool-family objects`);\n }\n if (storyboard.required_any_of_tools.length === 0) {\n throw new Error(`[${storyboard.id}] required_any_of_tools: [] is not allowed — omit the field to use no gate`);\n }\n for (let i = 0; i < storyboard.required_any_of_tools.length; i++) {\n const family = storyboard.required_any_of_tools[i] as unknown;\n if (family === null || typeof family !== 'object' || Array.isArray(family)) {\n throw new Error(`[${storyboard.id}] required_any_of_tools[${i}]: must be an object`);\n }\n const { tools, rationale } = family as { tools?: unknown; rationale?: unknown };\n if (!Array.isArray(tools) || tools.length < 2) {\n throw new Error(`[${storyboard.id}] required_any_of_tools[${i}].tools: must list at least two tool names`);\n }\n for (const tool of tools) {\n if (typeof tool !== 'string' || tool.length === 0) {\n throw new Error(`[${storyboard.id}] required_any_of_tools[${i}].tools: entries must be non-empty strings`);\n }\n }\n if (rationale !== undefined && typeof rationale !== 'string') {\n throw new Error(`[${storyboard.id}] required_any_of_tools[${i}].rationale: must be a string`);\n }\n }\n}\n\n/**\n * Authoring-time validation for `phase.depends_on` (#1161). Each entry\n * must reference a phase declared earlier in the storyboard. Forward\n * references and self-references fail loud at parse time so authoring\n * mistakes (typos, reorderings) don't degrade silently into \"phase\n * always runs\" / \"phase always cascades.\"\n *\n * Rules:\n * - Empty list (`depends_on: []`) is legal — it declares an\n * independent phase. No further validation needed.\n * - Each non-empty entry must be a non-empty string.\n * - Each entry must reference a phase that appears EARLIER in the\n * `storyboard.phases[]` array (forward references are rejected).\n * - A phase cannot depend on itself.\n */\nfunction validatePhaseDependsOn(storyboard: Storyboard): void {\n const phaseIdsSeen = new Set<string>();\n for (const phase of storyboard.phases) {\n if (phase.depends_on !== undefined) {\n if (!Array.isArray(phase.depends_on)) {\n throw new Error(`[${storyboard.id}] phase '${phase.id}': depends_on must be an array of phase ids`);\n }\n for (const dep of phase.depends_on) {\n if (typeof dep !== 'string' || dep.length === 0) {\n throw new Error(`[${storyboard.id}] phase '${phase.id}': depends_on entries must be non-empty strings`);\n }\n if (dep === phase.id) {\n throw new Error(`[${storyboard.id}] phase '${phase.id}': depends_on cannot reference itself`);\n }\n if (!phaseIdsSeen.has(dep)) {\n throw new Error(\n `[${storyboard.id}] phase '${phase.id}': depends_on '${dep}' is not a phase declared earlier in this storyboard (forward and unknown references are rejected)`\n );\n }\n }\n }\n phaseIdsSeen.add(phase.id);\n }\n}\n\n/**\n * Authoring-time validation for `Storyboard.requires` (#1626). The field is\n * an array of non-empty requirement names:\n *\n * - `requires: []` is rejected — an empty array reads as \"no\n * requirements,\" which is the same as omitting the field; failing\n * load forces the author to omit it explicitly.\n * - Each entry must be a non-empty string.\n *\n * Unknown string values are allowed for forward compatibility. Runners that\n * don't know how to satisfy a future requirement skip at runtime with\n * `skip_reason: 'requirement_unmet'` and the authored value in\n * `skip.requirement`.\n */\nfunction validateRequires(storyboard: Storyboard): void {\n if (storyboard.requires === undefined) return;\n if (!Array.isArray(storyboard.requires)) {\n throw new Error(\n `[${storyboard.id}] requires: must be an array of requirement names (got ${typeof storyboard.requires})`\n );\n }\n if (storyboard.requires.length === 0) {\n throw new Error(`[${storyboard.id}] requires: [] is not allowed — omit the field to use the default ([real_wire])`);\n }\n for (let i = 0; i < storyboard.requires.length; i++) {\n const name = storyboard.requires[i];\n if (typeof name !== 'string' || name.length === 0) {\n throw new Error(`[${storyboard.id}] requires[${i}]: entries must be non-empty strings`);\n }\n }\n}\n\n/**\n * Issue #820: mutating tasks (per {@link MUTATING_TASKS}) must have a\n * `sample_request` authored. The fixture is authoritative at run time —\n * there's no sane default payload for a write, and silently fabricating\n * one was the bug factory that produced #780 / #792 / #793 / #802 / #805.\n *\n * Error messages point at the task name, the step id, the storyboard, and\n * suggest the concrete author action.\n *\n * Opt-out: steps with `expect_error: true` that deliberately exercise\n * missing-fixture / malformed-payload seller behavior skip this check —\n * the author is signaling the payload is the test condition.\n *\n * Synthesized phases (`request-signing/synthesize.ts`, controller seeding)\n * start with `phase.steps = []` in YAML and the loader doesn't see the\n * runtime-generated steps, so those paths are not affected.\n */\nfunction validateFixtureForMutatingStep(\n storyboardId: string,\n phase: Storyboard['phases'][number],\n step: Storyboard['phases'][number]['steps'][number]\n): void {\n if (!MUTATING_TASKS.has(step.task)) return;\n if (step.sample_request !== undefined) return;\n if (step.expect_error === true) return;\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}' (task=${step.task}): ` +\n `mutating tasks require a sample_request fixture — the runner no longer fabricates ` +\n `write payloads. Author sample_request in the step or, for intentionally malformed ` +\n `payloads, set expect_error: true.`\n );\n}\n\n/**\n * `omit_account: true` must be paired with `expect_error: true`.\n *\n * An accountless `create_media_buy` will always be rejected by a spec-compliant\n * seller; a step that sets `omit_account` without `expect_error` will be graded\n * as a failure (not a controlled negative test), producing a misleading\n * compliance result. Fail loud at parse time so the author sees the problem\n * during storyboard load, not at run time.\n */\nfunction validateOmitFlagCoherence(\n storyboardId: string,\n phase: Storyboard['phases'][number],\n step: Storyboard['phases'][number]['steps'][number]\n): void {\n if (step.omit_account && step.expect_error !== true) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': ` +\n `omit_account: true requires expect_error: true — an accountless ` +\n `create_media_buy will always be rejected by a spec-compliant seller.`\n );\n }\n}\n\n/**\n * Each `context_outputs` entry must declare exactly one source: either\n * `path` (extract from response) or `generate` (mint at run time). An entry\n * with neither is a silent no-op; one with both would silently pick `generate`\n * and ignore `path`. Both are authoring foot-guns that should fail loud.\n */\nfunction validateContextOutputs(\n storyboardId: string,\n phase: Storyboard['phases'][number],\n step: Storyboard['phases'][number]['steps'][number]\n): void {\n if (!step.context_outputs?.length) return;\n for (const output of step.context_outputs) {\n const hasPath = output.path !== undefined;\n const hasGenerate = output.generate !== undefined;\n if (!hasPath && !hasGenerate) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': context_outputs entry ` +\n `'${output.key}' must set exactly one of 'path' or 'generate'.`\n );\n }\n if (hasPath && hasGenerate) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': context_outputs entry ` +\n `'${output.key}' sets both 'path' and 'generate' — they are mutually exclusive.`\n );\n }\n // Validate generator name. The runtime resolver also checks but the loader\n // catches typos at storyboard-load time so authors see the failure on\n // build, not on the first run.\n if (hasGenerate && output.generate !== 'uuid_v4' && output.generate !== 'opaque_id') {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': context_outputs entry ` +\n `'${output.key}' has unknown generate value '${output.generate}'. ` +\n `Supported: 'uuid_v4', 'opaque_id'.`\n );\n }\n }\n}\n\n/**\n * Authoring-time validation for `provides_state_for` (the AdCP 3.0.3 spec\n * field — adcp#3734) and the legacy `peer_substitutes_for` synonym. The\n * runner treats the field as same-phase-only and substitution-only-when-\n * stateful; surface those constraints at parse time so storyboard authors\n * see typos and cross-phase references on build, not as a silent no-rescue\n * at run time.\n *\n * Both field names parse to the same canonical normalized form on the step\n * object (the spec name `provides_state_for` is preferred when both are\n * declared). The deprecation alias is documented in `types.ts`.\n *\n * Rules:\n * - Each target must reference a step that exists in the same phase.\n * - A step cannot substitute for itself.\n * - The substitute step itself must be `stateful: true` — non-stateful\n * passes don't establish state per the cascade contract.\n * - The target step must be `stateful: true` — non-stateful targets\n * don't participate in cascade gating, so a substitution declaration\n * would be a no-op.\n * - When both fields are declared on the same step, they must match\n * element-for-element (the deprecation contract is \"synonym for\", not\n * \"additive with\").\n */\nfunction validatePeerSubstitutesFor(\n storyboardId: string,\n phase: Storyboard['phases'][number],\n step: Storyboard['phases'][number]['steps'][number]\n): void {\n const newField = step.provides_state_for;\n const legacyField = step.peer_substitutes_for;\n if (newField === undefined && legacyField === undefined) return;\n\n if (newField !== undefined && legacyField !== undefined) {\n // Order-sensitive equality: `[A, B]` vs `[B, A]` would throw despite being\n // semantically equivalent. Authors mid-migration should write the same list\n // in both fields; the deprecation alias is a literal synonym, not a\n // same-set restatement.\n const a = JSON.stringify(Array.isArray(newField) ? newField : [newField]);\n const b = JSON.stringify(Array.isArray(legacyField) ? legacyField : [legacyField]);\n if (a !== b) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': both provides_state_for and ` +\n `peer_substitutes_for declared with different values — pick one (provides_state_for is the ` +\n `spec field; peer_substitutes_for is a deprecated synonym)`\n );\n }\n }\n\n // Normalize onto provides_state_for so the runner can read a single field.\n // peer_substitutes_for stays for back-compat with any consumer code that\n // already reads it.\n if (newField === undefined && legacyField !== undefined) {\n step.provides_state_for = legacyField;\n } else if (newField !== undefined && legacyField === undefined) {\n step.peer_substitutes_for = newField;\n }\n\n const sourceFieldName = newField !== undefined ? 'provides_state_for' : 'peer_substitutes_for';\n const declared = step.provides_state_for!;\n const targets = Array.isArray(declared) ? declared : [declared];\n if (!step.stateful) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': ${sourceFieldName} is only legal on stateful steps`\n );\n }\n const phaseStepIds = new Map(phase.steps.map(s => [s.id, s]));\n for (const target of targets) {\n if (typeof target !== 'string' || target.length === 0) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': ${sourceFieldName} entries must be non-empty strings`\n );\n }\n if (target === step.id) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': ${sourceFieldName} cannot reference itself`\n );\n }\n const targetStep = phaseStepIds.get(target);\n if (!targetStep) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': ${sourceFieldName} target '${target}' is not a step in this phase (same-phase only)`\n );\n }\n if (!targetStep.stateful) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': ${sourceFieldName} target '${target}' must be stateful`\n );\n }\n }\n}\n\nfunction validateBranchSet(storyboardId: string, phase: Storyboard['phases'][number]): void {\n if (phase.branch_set === undefined) return;\n const bs = phase.branch_set as unknown;\n if (!bs || typeof bs !== 'object') {\n throw new Error(`[${storyboardId}] phase '${phase.id}': branch_set must be an object with { id, semantics }`);\n }\n const { id, semantics } = bs as Record<string, unknown>;\n if (typeof id !== 'string' || id.length === 0) {\n throw new Error(`[${storyboardId}] phase '${phase.id}': branch_set.id must be a non-empty string`);\n }\n if (typeof semantics !== 'string' || semantics.length === 0) {\n throw new Error(`[${storyboardId}] phase '${phase.id}': branch_set.semantics must be a non-empty string`);\n }\n // Only `any_of` is defined in AdCP today (adcp#2646 lint rule 2 —\n // `at_least_n` and `all_of` are reserved but not defined). Reject unknown\n // values at parse rather than silently skipping grading at runtime, so\n // spec-drift typos fail loud instead of degrading to raw `failed` peers.\n if (!(BRANCH_SET_SEMANTICS as readonly string[]).includes(semantics)) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}': branch_set.semantics='${semantics}' is not supported (valid: ${BRANCH_SET_SEMANTICS.join(', ')})`\n );\n }\n // Schema constraint: every phase in a branch set MUST be optional. A\n // non-optional branch-set phase would fail the storyboard on any step\n // failure regardless of peer contribution, defeating the any_of gate.\n if (phase.optional !== true) {\n throw new Error(`[${storyboardId}] phase '${phase.id}': phases declaring branch_set must set 'optional: true'`);\n }\n}\n\n/**\n * Resolve the `contributes: true` boolean shorthand introduced alongside the\n * first-class `branch_set:` phase field (adcp-client#693, adcp#2646).\n *\n * Rules:\n * - `contributes: true` is legal only inside a phase that declares `branch_set:`.\n * - A step MUST NOT set both `contributes` and `contributes_to` (ambiguous).\n * - A string `contributes_to` inside a branch_set phase MUST equal `branch_set.id`\n * (otherwise the aggregation target drifts — same invariant the spec lint enforces).\n *\n * After resolution, `step.contributes_to` carries the flag name and `step.contributes`\n * is cleared, so the runner reads a single field regardless of authoring form.\n */\nfunction resolveContributesShorthand(\n storyboardId: string,\n phase: Storyboard['phases'][number],\n step: Storyboard['phases'][number]['steps'][number]\n): void {\n const hasBoolean = step.contributes !== undefined;\n const hasString = step.contributes_to !== undefined;\n\n if (hasBoolean && hasString) {\n throw new Error(`[${storyboardId}] step '${step.id}' declares both 'contributes' and 'contributes_to' — pick one`);\n }\n\n if (hasBoolean) {\n if (step.contributes === true) {\n if (!phase.branch_set) {\n throw new Error(\n `[${storyboardId}] step '${step.id}': 'contributes: true' is only legal inside a phase that declares branch_set`\n );\n }\n step.contributes_to = phase.branch_set.id;\n }\n delete step.contributes;\n return;\n }\n\n if (hasString && phase.branch_set && step.contributes_to !== phase.branch_set.id) {\n throw new Error(\n `[${storyboardId}] step '${step.id}': contributes_to='${step.contributes_to}' must equal enclosing phase's branch_set.id='${phase.branch_set.id}'`\n );\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/testing/storyboard/loader.ts"],"sourcesContent":["/**\n * Storyboard YAML parser.\n *\n * Storyboards are pulled from the compliance cache populated by\n * `npm run sync-schemas`. See `./compliance.ts` for capability-driven\n * resolution and bundle loading.\n */\n\nimport { readFileSync } from 'fs';\nimport { parse } from 'yaml';\nimport type { Storyboard } from './types';\nimport { MUTATING_TASKS } from '../../utils/idempotency';\nimport { validateFixtureResolutionDeclarations } from './fixture-resolution';\n\n/**\n * Supported `branch_set.semantics` values. Extend when AdCP adds `all_of`,\n * `at_least_n`, etc. Exported so the runner can enforce the same whitelist\n * on programmatically-constructed storyboards that bypass the YAML parser.\n */\nexport const BRANCH_SET_SEMANTICS = ['any_of'] as const;\n\nconst IDENTIFIER_PATH_SEGMENT = String.raw`[A-Za-z_][A-Za-z0-9_-]*(?:\\[\\*\\])*`;\nconst IDENTIFIER_PATH_PATTERN = new RegExp(`^${IDENTIFIER_PATH_SEGMENT}(?:\\\\.${IDENTIFIER_PATH_SEGMENT})*$`);\n\n/** Parse a YAML string into a Storyboard. Throws if required fields are missing. */\nexport function parseStoryboard(yamlContent: string): Storyboard {\n const parsed = parse(yamlContent) as Storyboard;\n if (!parsed?.id || !parsed?.phases) {\n throw new Error('Invalid storyboard YAML: missing required fields (id, phases)');\n }\n for (const phase of parsed.phases) {\n // Specialism YAMLs may declare a phase with no `steps:` — the steps are\n // synthesized at runtime from fixtures (see request-signing/synthesize.ts).\n // Treat missing steps as an empty list so the parser stays phase-agnostic.\n if (!phase.steps) phase.steps = [];\n // YAML uses `name:` for context outputs but our runtime expects `key:`.\n for (const step of phase.steps) {\n if (!step.context_outputs) continue;\n for (const output of step.context_outputs) {\n const raw = output as unknown as Record<string, unknown>;\n if (raw.name && !raw.key) {\n output.key = raw.name as string;\n }\n }\n }\n }\n validateStoryboardShape(parsed);\n return parsed;\n}\n\n/** Load and parse a single storyboard file. Useful for ad-hoc testing of in-development YAMLs. */\nexport function loadStoryboardFile(filePath: string): Storyboard {\n return parseStoryboard(readFileSync(filePath, 'utf-8'));\n}\n\n/**\n * Enforce authoring-time invariants on a Storyboard. Called by\n * `parseStoryboard`, and should also be called by any runner entry point\n * that accepts a programmatically-built `Storyboard` object so the same\n * loud-fail-on-drift guarantee holds regardless of how the storyboard was\n * constructed. Mutates only legacy shorthand fields (resolves\n * `contributes: true` to `contributes_to`) and is idempotent on\n * already-validated inputs.\n */\nexport function validateStoryboardShape(storyboard: Storyboard): void {\n validateRequires(storyboard);\n validateFixtureResolutionDeclarations(storyboard);\n validateRequiredAnyOfTools(storyboard);\n validatePhaseDependsOn(storyboard);\n for (const phase of storyboard.phases) {\n validateBranchSet(storyboard.id, phase);\n if (!phase.steps) continue;\n for (const step of phase.steps) {\n resolveContributesShorthand(storyboard.id, phase, step);\n validateFixtureForMutatingStep(storyboard.id, phase, step);\n validateOmitFlagCoherence(storyboard.id, phase, step);\n validateContextOutputs(storyboard.id, phase, step);\n validateUpstreamAttestationMode(storyboard.id, phase, step);\n validateUpstreamIdentifierPaths(storyboard.id, phase, step);\n validatePeerSubstitutesFor(storyboard.id, phase, step);\n }\n }\n}\n\nfunction validateUpstreamAttestationMode(\n storyboardId: string,\n phase: { id?: string },\n step: { id?: string; validations?: any[] }\n): void {\n const validations = step.validations ?? [];\n for (let validationIndex = 0; validationIndex < validations.length; validationIndex++) {\n const validation = validations[validationIndex];\n if (validation?.check !== 'upstream_traffic') continue;\n const mode = validation.preferred_attestation_mode;\n if (mode !== undefined && mode !== 'raw' && mode !== 'digest') {\n throw new Error(\n `[${storyboardId}] ${phase.id ?? '?'}.${step.id ?? '?'}.validations[${validationIndex}].preferred_attestation_mode: must be \"raw\" or \"digest\"`\n );\n }\n }\n}\n\nfunction validateUpstreamIdentifierPaths(\n storyboardId: string,\n phase: { id?: string },\n step: { id?: string; validations?: any[] }\n): void {\n const validations = step.validations ?? [];\n for (let validationIndex = 0; validationIndex < validations.length; validationIndex++) {\n const validation = validations[validationIndex];\n if (validation?.check !== 'upstream_traffic' || validation.identifier_paths === undefined) continue;\n if (!Array.isArray(validation.identifier_paths)) {\n throw new Error(\n `[${storyboardId}] ${phase.id ?? '?'}.${\n step.id ?? '?'\n }.validations[${validationIndex}].identifier_paths: must be an array of request-payload paths`\n );\n }\n for (let pathIndex = 0; pathIndex < validation.identifier_paths.length; pathIndex++) {\n const path = validation.identifier_paths[pathIndex];\n if (typeof path !== 'string' || path.length === 0) {\n throw new Error(\n `[${storyboardId}] ${phase.id ?? '?'}.${step.id ?? '?'}.validations[${validationIndex}].identifier_paths[${pathIndex}]: must be a non-empty string`\n );\n }\n const pathErrorPrefix = `[${storyboardId}] ${phase.id ?? '?'}.${step.id ?? '?'}.validations[${validationIndex}].identifier_paths[${pathIndex}]`;\n let firstSegment: string;\n try {\n const validated = validateIdentifierPathSyntax(path);\n firstSegment = validated.firstSegment;\n } catch {\n throw new Error(\n `${pathErrorPrefix}: \"${path}\" is unsupported; identifier_paths resolve only against the request payload or sample_request using dotted paths with [*] array selectors`\n );\n }\n const root = firstSegment.toLowerCase();\n if (root === 'request' || root === 'response' || root === 'context') {\n throw new Error(\n `${pathErrorPrefix}: \"${path}\" is unsupported; identifier_paths resolve only against the request payload or sample_request`\n );\n }\n }\n }\n}\n\nfunction validateIdentifierPathSyntax(path: string): { normalized: string; firstSegment: string } {\n const trimmed = path.trim();\n const normalized = trimmed.startsWith('$.') ? trimmed.slice(2) : trimmed;\n if (!IDENTIFIER_PATH_PATTERN.test(normalized)) {\n throw new Error('unsupported identifier path syntax');\n }\n return { normalized, firstSegment: normalized.split(/[.[\\]]/, 1)[0] ?? '' };\n}\n\nfunction validateRequiredAnyOfTools(storyboard: Storyboard): void {\n if (storyboard.required_any_of_tools === undefined) return;\n if (!Array.isArray(storyboard.required_any_of_tools)) {\n throw new Error(`[${storyboard.id}] required_any_of_tools: must be an array of tool-family objects`);\n }\n if (storyboard.required_any_of_tools.length === 0) {\n throw new Error(`[${storyboard.id}] required_any_of_tools: [] is not allowed — omit the field to use no gate`);\n }\n for (let i = 0; i < storyboard.required_any_of_tools.length; i++) {\n const family = storyboard.required_any_of_tools[i] as unknown;\n if (family === null || typeof family !== 'object' || Array.isArray(family)) {\n throw new Error(`[${storyboard.id}] required_any_of_tools[${i}]: must be an object`);\n }\n const { tools, rationale } = family as { tools?: unknown; rationale?: unknown };\n if (!Array.isArray(tools) || tools.length < 2) {\n throw new Error(`[${storyboard.id}] required_any_of_tools[${i}].tools: must list at least two tool names`);\n }\n for (const tool of tools) {\n if (typeof tool !== 'string' || tool.length === 0) {\n throw new Error(`[${storyboard.id}] required_any_of_tools[${i}].tools: entries must be non-empty strings`);\n }\n }\n if (rationale !== undefined && typeof rationale !== 'string') {\n throw new Error(`[${storyboard.id}] required_any_of_tools[${i}].rationale: must be a string`);\n }\n }\n}\n\n/**\n * Authoring-time validation for `phase.depends_on` (#1161). Each entry\n * must reference a phase declared earlier in the storyboard. Forward\n * references and self-references fail loud at parse time so authoring\n * mistakes (typos, reorderings) don't degrade silently into \"phase\n * always runs\" / \"phase always cascades.\"\n *\n * Rules:\n * - Empty list (`depends_on: []`) is legal — it declares an\n * independent phase. No further validation needed.\n * - Each non-empty entry must be a non-empty string.\n * - Each entry must reference a phase that appears EARLIER in the\n * `storyboard.phases[]` array (forward references are rejected).\n * - A phase cannot depend on itself.\n */\nfunction validatePhaseDependsOn(storyboard: Storyboard): void {\n const phaseIdsSeen = new Set<string>();\n for (const phase of storyboard.phases) {\n if (phase.depends_on !== undefined) {\n if (!Array.isArray(phase.depends_on)) {\n throw new Error(`[${storyboard.id}] phase '${phase.id}': depends_on must be an array of phase ids`);\n }\n for (const dep of phase.depends_on) {\n if (typeof dep !== 'string' || dep.length === 0) {\n throw new Error(`[${storyboard.id}] phase '${phase.id}': depends_on entries must be non-empty strings`);\n }\n if (dep === phase.id) {\n throw new Error(`[${storyboard.id}] phase '${phase.id}': depends_on cannot reference itself`);\n }\n if (!phaseIdsSeen.has(dep)) {\n throw new Error(\n `[${storyboard.id}] phase '${phase.id}': depends_on '${dep}' is not a phase declared earlier in this storyboard (forward and unknown references are rejected)`\n );\n }\n }\n }\n phaseIdsSeen.add(phase.id);\n }\n}\n\n/**\n * Authoring-time validation for `Storyboard.requires` (#1626). The field is\n * an array of non-empty requirement names:\n *\n * - `requires: []` is rejected — an empty array reads as \"no\n * requirements,\" which is the same as omitting the field; failing\n * load forces the author to omit it explicitly.\n * - Each entry must be a non-empty string.\n *\n * Unknown string values are allowed for forward compatibility. Runners that\n * don't know how to satisfy a future requirement skip at runtime with\n * `skip_reason: 'requirement_unmet'` and the authored value in\n * `skip.requirement`.\n */\nfunction validateRequires(storyboard: Storyboard): void {\n if (storyboard.requires === undefined) return;\n if (!Array.isArray(storyboard.requires)) {\n throw new Error(\n `[${storyboard.id}] requires: must be an array of requirement names (got ${typeof storyboard.requires})`\n );\n }\n if (storyboard.requires.length === 0) {\n throw new Error(`[${storyboard.id}] requires: [] is not allowed — omit the field to use the default ([real_wire])`);\n }\n for (let i = 0; i < storyboard.requires.length; i++) {\n const name = storyboard.requires[i];\n if (typeof name !== 'string' || name.length === 0) {\n throw new Error(`[${storyboard.id}] requires[${i}]: entries must be non-empty strings`);\n }\n }\n}\n\n/**\n * Issue #820: mutating tasks (per {@link MUTATING_TASKS}) must have a\n * `sample_request` authored. The fixture is authoritative at run time —\n * there's no sane default payload for a write, and silently fabricating\n * one was the bug factory that produced #780 / #792 / #793 / #802 / #805.\n *\n * Error messages point at the task name, the step id, the storyboard, and\n * suggest the concrete author action.\n *\n * Opt-out: steps with `expect_error: true` that deliberately exercise\n * missing-fixture / malformed-payload seller behavior skip this check —\n * the author is signaling the payload is the test condition.\n *\n * Synthesized phases (`request-signing/synthesize.ts`, controller seeding)\n * start with `phase.steps = []` in YAML and the loader doesn't see the\n * runtime-generated steps, so those paths are not affected.\n */\nfunction validateFixtureForMutatingStep(\n storyboardId: string,\n phase: Storyboard['phases'][number],\n step: Storyboard['phases'][number]['steps'][number]\n): void {\n if (!MUTATING_TASKS.has(step.task)) return;\n if (step.sample_request !== undefined) return;\n if (step.expect_error === true) return;\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}' (task=${step.task}): ` +\n `mutating tasks require a sample_request fixture — the runner no longer fabricates ` +\n `write payloads. Author sample_request in the step or, for intentionally malformed ` +\n `payloads, set expect_error: true.`\n );\n}\n\n/**\n * `omit_account: true` must be paired with `expect_error: true`.\n *\n * An accountless `create_media_buy` will always be rejected by a spec-compliant\n * seller; a step that sets `omit_account` without `expect_error` will be graded\n * as a failure (not a controlled negative test), producing a misleading\n * compliance result. Fail loud at parse time so the author sees the problem\n * during storyboard load, not at run time.\n */\nfunction validateOmitFlagCoherence(\n storyboardId: string,\n phase: Storyboard['phases'][number],\n step: Storyboard['phases'][number]['steps'][number]\n): void {\n if (step.omit_account && step.expect_error !== true) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': ` +\n `omit_account: true requires expect_error: true — an accountless ` +\n `create_media_buy will always be rejected by a spec-compliant seller.`\n );\n }\n}\n\n/**\n * Each `context_outputs` entry must declare exactly one source: either\n * `path` (extract from response) or `generate` (mint at run time). An entry\n * with neither is a silent no-op; one with both would silently pick `generate`\n * and ignore `path`. Both are authoring foot-guns that should fail loud.\n */\nfunction validateContextOutputs(\n storyboardId: string,\n phase: Storyboard['phases'][number],\n step: Storyboard['phases'][number]['steps'][number]\n): void {\n if (!step.context_outputs?.length) return;\n for (const output of step.context_outputs) {\n const hasPath = output.path !== undefined;\n const hasGenerate = output.generate !== undefined;\n if (!hasPath && !hasGenerate) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': context_outputs entry ` +\n `'${output.key}' must set exactly one of 'path' or 'generate'.`\n );\n }\n if (hasPath && hasGenerate) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': context_outputs entry ` +\n `'${output.key}' sets both 'path' and 'generate' — they are mutually exclusive.`\n );\n }\n // Validate generator name. The runtime resolver also checks but the loader\n // catches typos at storyboard-load time so authors see the failure on\n // build, not on the first run.\n if (hasGenerate && output.generate !== 'uuid_v4' && output.generate !== 'opaque_id') {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': context_outputs entry ` +\n `'${output.key}' has unknown generate value '${output.generate}'. ` +\n `Supported: 'uuid_v4', 'opaque_id'.`\n );\n }\n }\n}\n\n/**\n * Authoring-time validation for `provides_state_for` (the AdCP 3.0.3 spec\n * field — adcp#3734) and the legacy `peer_substitutes_for` synonym. The\n * runner treats the field as same-phase-only and substitution-only-when-\n * stateful; surface those constraints at parse time so storyboard authors\n * see typos and cross-phase references on build, not as a silent no-rescue\n * at run time.\n *\n * Both field names parse to the same canonical normalized form on the step\n * object (the spec name `provides_state_for` is preferred when both are\n * declared). The deprecation alias is documented in `types.ts`.\n *\n * Rules:\n * - Each target must reference a step that exists in the same phase.\n * - A step cannot substitute for itself.\n * - The substitute step itself must be `stateful: true` — non-stateful\n * passes don't establish state per the cascade contract.\n * - The target step must be `stateful: true` — non-stateful targets\n * don't participate in cascade gating, so a substitution declaration\n * would be a no-op.\n * - When both fields are declared on the same step, they must match\n * element-for-element (the deprecation contract is \"synonym for\", not\n * \"additive with\").\n */\nfunction validatePeerSubstitutesFor(\n storyboardId: string,\n phase: Storyboard['phases'][number],\n step: Storyboard['phases'][number]['steps'][number]\n): void {\n const newField = step.provides_state_for;\n const legacyField = step.peer_substitutes_for;\n if (newField === undefined && legacyField === undefined) return;\n\n if (newField !== undefined && legacyField !== undefined) {\n // Order-sensitive equality: `[A, B]` vs `[B, A]` would throw despite being\n // semantically equivalent. Authors mid-migration should write the same list\n // in both fields; the deprecation alias is a literal synonym, not a\n // same-set restatement.\n const a = JSON.stringify(Array.isArray(newField) ? newField : [newField]);\n const b = JSON.stringify(Array.isArray(legacyField) ? legacyField : [legacyField]);\n if (a !== b) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': both provides_state_for and ` +\n `peer_substitutes_for declared with different values — pick one (provides_state_for is the ` +\n `spec field; peer_substitutes_for is a deprecated synonym)`\n );\n }\n }\n\n // Normalize onto provides_state_for so the runner can read a single field.\n // peer_substitutes_for stays for back-compat with any consumer code that\n // already reads it.\n if (newField === undefined && legacyField !== undefined) {\n step.provides_state_for = legacyField;\n } else if (newField !== undefined && legacyField === undefined) {\n step.peer_substitutes_for = newField;\n }\n\n const sourceFieldName = newField !== undefined ? 'provides_state_for' : 'peer_substitutes_for';\n const declared = step.provides_state_for!;\n const targets = Array.isArray(declared) ? declared : [declared];\n if (!step.stateful) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': ${sourceFieldName} is only legal on stateful steps`\n );\n }\n const phaseStepIds = new Map(phase.steps.map(s => [s.id, s]));\n for (const target of targets) {\n if (typeof target !== 'string' || target.length === 0) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': ${sourceFieldName} entries must be non-empty strings`\n );\n }\n if (target === step.id) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': ${sourceFieldName} cannot reference itself`\n );\n }\n const targetStep = phaseStepIds.get(target);\n if (!targetStep) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': ${sourceFieldName} target '${target}' is not a step in this phase (same-phase only)`\n );\n }\n if (!targetStep.stateful) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}' step '${step.id}': ${sourceFieldName} target '${target}' must be stateful`\n );\n }\n }\n}\n\nfunction validateBranchSet(storyboardId: string, phase: Storyboard['phases'][number]): void {\n if (phase.branch_set === undefined) return;\n const bs = phase.branch_set as unknown;\n if (!bs || typeof bs !== 'object') {\n throw new Error(`[${storyboardId}] phase '${phase.id}': branch_set must be an object with { id, semantics }`);\n }\n const { id, semantics } = bs as Record<string, unknown>;\n if (typeof id !== 'string' || id.length === 0) {\n throw new Error(`[${storyboardId}] phase '${phase.id}': branch_set.id must be a non-empty string`);\n }\n if (typeof semantics !== 'string' || semantics.length === 0) {\n throw new Error(`[${storyboardId}] phase '${phase.id}': branch_set.semantics must be a non-empty string`);\n }\n // Only `any_of` is defined in AdCP today (adcp#2646 lint rule 2 —\n // `at_least_n` and `all_of` are reserved but not defined). Reject unknown\n // values at parse rather than silently skipping grading at runtime, so\n // spec-drift typos fail loud instead of degrading to raw `failed` peers.\n if (!(BRANCH_SET_SEMANTICS as readonly string[]).includes(semantics)) {\n throw new Error(\n `[${storyboardId}] phase '${phase.id}': branch_set.semantics='${semantics}' is not supported (valid: ${BRANCH_SET_SEMANTICS.join(', ')})`\n );\n }\n // Schema constraint: every phase in a branch set MUST be optional. A\n // non-optional branch-set phase would fail the storyboard on any step\n // failure regardless of peer contribution, defeating the any_of gate.\n if (phase.optional !== true) {\n throw new Error(`[${storyboardId}] phase '${phase.id}': phases declaring branch_set must set 'optional: true'`);\n }\n}\n\n/**\n * Resolve the `contributes: true` boolean shorthand introduced alongside the\n * first-class `branch_set:` phase field (adcp-client#693, adcp#2646).\n *\n * Rules:\n * - `contributes: true` is legal only inside a phase that declares `branch_set:`.\n * - A step MUST NOT set both `contributes` and `contributes_to` (ambiguous).\n * - A string `contributes_to` inside a branch_set phase MUST equal `branch_set.id`\n * (otherwise the aggregation target drifts — same invariant the spec lint enforces).\n *\n * After resolution, `step.contributes_to` carries the flag name and `step.contributes`\n * is cleared, so the runner reads a single field regardless of authoring form.\n */\nfunction resolveContributesShorthand(\n storyboardId: string,\n phase: Storyboard['phases'][number],\n step: Storyboard['phases'][number]['steps'][number]\n): void {\n const hasBoolean = step.contributes !== undefined;\n const hasString = step.contributes_to !== undefined;\n\n if (hasBoolean && hasString) {\n throw new Error(`[${storyboardId}] step '${step.id}' declares both 'contributes' and 'contributes_to' — pick one`);\n }\n\n if (hasBoolean) {\n if (step.contributes === true) {\n if (!phase.branch_set) {\n throw new Error(\n `[${storyboardId}] step '${step.id}': 'contributes: true' is only legal inside a phase that declares branch_set`\n );\n }\n step.contributes_to = phase.branch_set.id;\n }\n delete step.contributes;\n return;\n }\n\n if (hasString && phase.branch_set && step.contributes_to !== phase.branch_set.id) {\n throw new Error(\n `[${storyboardId}] step '${step.id}': contributes_to='${step.contributes_to}' must equal enclosing phase's branch_set.id='${phase.branch_set.id}'`\n );\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../src/lib/testing/storyboard/runner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../src/lib/testing/storyboard/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,6 +57,7 @@ var import_envelope_status_compat = require('../../utils/envelope-status-compat.
|
|
|
57
57
|
var import_test_controller = require('../test-controller.js');
|
|
58
58
|
var import_constants = require('../../upstream-recorder/constants.js');
|
|
59
59
|
var import_request_builder = require('./request-builder.js');
|
|
60
|
+
var import_creative_assets = require('./creative-assets.js');
|
|
60
61
|
var import_client2 = require('../client.js');
|
|
61
62
|
var import_idempotency = require('../../utils/idempotency.js');
|
|
62
63
|
var import_schema_loader = require('../../validation/schema-loader.js');
|
|
@@ -69,6 +70,7 @@ var import_probe_dispatch = require('./request-signing/probe-dispatch.js');
|
|
|
69
70
|
var import_webhook_receiver = require('./webhook-receiver.js');
|
|
70
71
|
var import_webhook_assertions = require('./webhook-assertions.js');
|
|
71
72
|
var import_seeding = require('./seeding.js');
|
|
73
|
+
var import_fixture_resolution = require('./fixture-resolution.js');
|
|
72
74
|
var import_compliance = require('./compliance.js');
|
|
73
75
|
var import_client3 = require('../../signing/client.js');
|
|
74
76
|
var import_agent_routing = require('./agent-routing.js');
|
|
@@ -1367,15 +1369,64 @@ async function executeStoryboardPass(agentUrls, storyboard, options, dispatchOff
|
|
|
1367
1369
|
let seedingFailed = false;
|
|
1368
1370
|
let seedingMissingController = false;
|
|
1369
1371
|
let seedingUnsupported = false;
|
|
1372
|
+
let fixtureUnsatisfied = false;
|
|
1373
|
+
let fixtureBindings;
|
|
1374
|
+
let fixtureResolutionRecords;
|
|
1375
|
+
let fixtureCoverageGap;
|
|
1370
1376
|
{
|
|
1371
|
-
|
|
1377
|
+
let fixtureSeedClient = clients[0];
|
|
1378
|
+
let fixtureDiscoveryClient = clients[0];
|
|
1379
|
+
if (routingContext && options.agents) {
|
|
1380
|
+
const fixtureStep = (task) => ({
|
|
1381
|
+
id: `__fixture_resolution_${task}__`,
|
|
1382
|
+
title: `Fixture resolution via ${task}`,
|
|
1383
|
+
task
|
|
1384
|
+
});
|
|
1385
|
+
if (options.agentTools?.includes("comply_test_controller")) {
|
|
1386
|
+
fixtureSeedClient = dispatch.nextFor(fixtureStep("comply_test_controller")).client;
|
|
1387
|
+
}
|
|
1388
|
+
if (options.agentTools?.includes("get_products")) {
|
|
1389
|
+
fixtureDiscoveryClient = dispatch.nextFor(fixtureStep("get_products")).client;
|
|
1390
|
+
}
|
|
1391
|
+
}
|
|
1392
|
+
const seeding = skipControllerSeedingForPhaseGates ? null : preSeeded !== void 0 ? preSeeded.result : await (0, import_seeding.runControllerSeeding)(fixtureSeedClient, storyboard, options, context, fixtureDiscoveryClient);
|
|
1372
1393
|
if (seeding) {
|
|
1373
1394
|
const attach = preSeeded === void 0 || preSeeded.attach;
|
|
1374
1395
|
if (attach) {
|
|
1375
1396
|
seedingPhaseResult = seeding.phase;
|
|
1376
1397
|
passedCount += seeding.passedCount;
|
|
1377
1398
|
failedCount += seeding.failedCount;
|
|
1378
|
-
if (seeding.missingController || seeding.seedUnsupported
|
|
1399
|
+
if (seeding.missingController || seeding.seedUnsupported || seeding.fixtureUnsatisfied) {
|
|
1400
|
+
skippedCount += seeding.phase.steps.filter((step) => step.skipped).length;
|
|
1401
|
+
}
|
|
1402
|
+
}
|
|
1403
|
+
fixtureBindings = seeding.bindings;
|
|
1404
|
+
fixtureResolutionRecords = seeding.resolutionRecords;
|
|
1405
|
+
fixtureUnsatisfied = seeding.fixtureUnsatisfied === true && seeding.failedCount === 0;
|
|
1406
|
+
if (fixtureUnsatisfied) {
|
|
1407
|
+
const noPhasesIndex = phaseResults.findIndex((phase) => phase.phase_id === "no_phases");
|
|
1408
|
+
if (noPhasesIndex >= 0) {
|
|
1409
|
+
skippedCount -= phaseResults[noPhasesIndex].steps.filter((step) => step.skipped).length;
|
|
1410
|
+
phaseResults.splice(noPhasesIndex, 1);
|
|
1411
|
+
}
|
|
1412
|
+
if (attach) skippedCount += 1;
|
|
1413
|
+
}
|
|
1414
|
+
const hasUnsatisfiedFixtures = fixtureResolutionRecords?.some((record) => record.status === "unsatisfied") === true;
|
|
1415
|
+
if (hasUnsatisfiedFixtures && fixtureResolutionRecords) {
|
|
1416
|
+
const fixtures = fixtureResolutionRecords.filter((record) => record.status === "unsatisfied").map((record) => ({
|
|
1417
|
+
fixture_type: record.fixture_type,
|
|
1418
|
+
handle: record.handle,
|
|
1419
|
+
...record.product_handle && { product_handle: record.product_handle },
|
|
1420
|
+
requirements: record.requirements
|
|
1421
|
+
}));
|
|
1422
|
+
const names = fixtures.map(
|
|
1423
|
+
(fixture) => fixture.fixture_type === "pricing_option" ? `pricing_option "${fixture.product_handle}/${fixture.handle}"` : `product "${fixture.handle}"`
|
|
1424
|
+
);
|
|
1425
|
+
fixtureCoverageGap = {
|
|
1426
|
+
reason: "fixture_unsatisfied",
|
|
1427
|
+
detail: `fixture_unsatisfied: no seller fixture satisfied ${names.join(", ")}`,
|
|
1428
|
+
fixtures
|
|
1429
|
+
};
|
|
1379
1430
|
}
|
|
1380
1431
|
if (seeding.missingController) {
|
|
1381
1432
|
seedingMissingController = true;
|
|
@@ -1389,6 +1440,16 @@ async function executeStoryboardPass(agentUrls, storyboard, options, dispatchOff
|
|
|
1389
1440
|
for (const phase of storyboard.phases) {
|
|
1390
1441
|
options.signal?.throwIfAborted();
|
|
1391
1442
|
const phaseStart = Date.now();
|
|
1443
|
+
if (fixtureUnsatisfied) {
|
|
1444
|
+
phaseResults.push({
|
|
1445
|
+
phase_id: phase.id,
|
|
1446
|
+
phase_title: phase.title,
|
|
1447
|
+
passed: true,
|
|
1448
|
+
steps: [],
|
|
1449
|
+
duration_ms: 0
|
|
1450
|
+
});
|
|
1451
|
+
continue;
|
|
1452
|
+
}
|
|
1392
1453
|
const phaseCapabilitySkipDetail = phaseCapabilitySkipDetails.get(phase.id);
|
|
1393
1454
|
if (phaseCapabilitySkipDetail !== void 0) {
|
|
1394
1455
|
const skippedSteps = buildPhaseCapabilitySkippedSteps(storyboard, phase, phaseCapabilitySkipDetail, context);
|
|
@@ -1447,6 +1508,9 @@ async function executeStoryboardPass(agentUrls, storyboard, options, dispatchOff
|
|
|
1447
1508
|
} : seedingUnsupported ? {
|
|
1448
1509
|
skip_reason: "fixture_seed_unsupported",
|
|
1449
1510
|
skip: { reason: "not_applicable", detail: FIXTURE_SEED_UNSUPPORTED_DETAIL }
|
|
1511
|
+
} : seedingFailed ? {
|
|
1512
|
+
skip_reason: "controller_seeding_failed",
|
|
1513
|
+
skip: { reason: "prerequisite_failed", detail: CONTROLLER_SEEDING_FAILED_DETAIL }
|
|
1450
1514
|
} : {
|
|
1451
1515
|
skip_reason: "controller_seeding_failed",
|
|
1452
1516
|
skip: { reason: "prerequisite_failed", detail: CONTROLLER_SEEDING_FAILED_DETAIL }
|
|
@@ -1590,7 +1654,8 @@ async function executeStoryboardPass(agentUrls, storyboard, options, dispatchOff
|
|
|
1590
1654
|
responseDerivedNotApplicableContextKeys,
|
|
1591
1655
|
agentProfile: assignment.profile,
|
|
1592
1656
|
agentLibraryVersion: assignment.profile?.library_version,
|
|
1593
|
-
storyboardRequiresRequestSigner: allRequires.includes("request_signer")
|
|
1657
|
+
storyboardRequiresRequestSigner: allRequires.includes("request_signer"),
|
|
1658
|
+
fixtureBindings
|
|
1594
1659
|
}
|
|
1595
1660
|
);
|
|
1596
1661
|
const result2 = { ...rawResult, storyboard_id: storyboard.id };
|
|
@@ -1786,7 +1851,7 @@ async function executeStoryboardPass(agentUrls, storyboard, options, dispatchOff
|
|
|
1786
1851
|
return !!phaseResult && phaseResult.passed && phaseResult.steps.some((s) => !s.skipped && s.passed);
|
|
1787
1852
|
});
|
|
1788
1853
|
const requiredPhasesPassed = !hasExecutableSteps || requiredPhaseHasExecutedPass || failedCount === 0 && requiredPhasesCoveredByCapabilityGates;
|
|
1789
|
-
const
|
|
1854
|
+
const storyboardWideFixtureUnavailable = (seedingUnsupported || fixtureUnsatisfied) && failedCount === 0;
|
|
1790
1855
|
if (seedingPhaseResult) phaseResults.unshift(seedingPhaseResult);
|
|
1791
1856
|
const schemasUsed = collectSchemasUsed(phaseResults);
|
|
1792
1857
|
const strictSummary = summarizeStrictValidation(phaseResults);
|
|
@@ -1805,7 +1870,7 @@ async function executeStoryboardPass(agentUrls, storyboard, options, dispatchOff
|
|
|
1805
1870
|
// `multi-pass`.
|
|
1806
1871
|
...isMultiInstance && { multi_instance_strategy: "round-robin" },
|
|
1807
1872
|
...routingContext && { agent_map: { ...routingContext.agentMap } },
|
|
1808
|
-
overall_passed: failedCount === 0 && (requiredPhasesPassed ||
|
|
1873
|
+
overall_passed: failedCount === 0 && (requiredPhasesPassed || storyboardWideFixtureUnavailable) && !assertionsFailed,
|
|
1809
1874
|
phases: phaseResults,
|
|
1810
1875
|
context,
|
|
1811
1876
|
total_duration_ms: Date.now() - start,
|
|
@@ -1818,6 +1883,8 @@ async function executeStoryboardPass(agentUrls, storyboard, options, dispatchOff
|
|
|
1818
1883
|
...assertionResults.length > 0 ? { assertions: assertionResults } : {},
|
|
1819
1884
|
strict_validation_summary: strictSummary,
|
|
1820
1885
|
notices,
|
|
1886
|
+
...fixtureResolutionRecords && { fixture_resolutions: fixtureResolutionRecords },
|
|
1887
|
+
...fixtureCoverageGap && { coverage_gaps: [fixtureCoverageGap] },
|
|
1821
1888
|
...routingContext && routingContext.discoveryFailures.length > 0 ? {
|
|
1822
1889
|
discovery_failures: routingContext.discoveryFailures.map((f) => ({
|
|
1823
1890
|
agent_key: f.agentKey,
|
|
@@ -1911,6 +1978,8 @@ async function runMultiPass(agentUrls, storyboard, options) {
|
|
|
1911
1978
|
tested_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
1912
1979
|
...schemasDedup.length > 0 ? { schemas_used: schemasDedup } : {},
|
|
1913
1980
|
...assertionsAgg.length > 0 ? { assertions: assertionsAgg } : {},
|
|
1981
|
+
...first.fixture_resolutions ? { fixture_resolutions: first.fixture_resolutions } : {},
|
|
1982
|
+
...first.coverage_gaps ? { coverage_gaps: first.coverage_gaps } : {},
|
|
1914
1983
|
notices: noticesDedup
|
|
1915
1984
|
};
|
|
1916
1985
|
}
|
|
@@ -2191,8 +2260,43 @@ async function executeStep(client, step, storyboardId, phaseId, context, allStep
|
|
|
2191
2260
|
request = applyDisableSandboxHint(request, effectiveStep.task);
|
|
2192
2261
|
}
|
|
2193
2262
|
request = applyIdempotencyInvariant(request, effectiveStep.task, step);
|
|
2194
|
-
const
|
|
2195
|
-
if (
|
|
2263
|
+
const fixtureBinding = applyFixtureBindingsSafely(request, effectiveStep.task, options, runState);
|
|
2264
|
+
if (!fixtureBinding.ok) {
|
|
2265
|
+
const next2 = getNextStepPreview(step.id, allSteps, context, runState.runnerVars);
|
|
2266
|
+
return {
|
|
2267
|
+
step_id: step.id,
|
|
2268
|
+
phase_id: phaseId,
|
|
2269
|
+
title: step.title,
|
|
2270
|
+
task: effectiveStep.task,
|
|
2271
|
+
passed: false,
|
|
2272
|
+
duration_ms: 0,
|
|
2273
|
+
validations: [
|
|
2274
|
+
{
|
|
2275
|
+
check: "unresolved_substitution",
|
|
2276
|
+
passed: false,
|
|
2277
|
+
description: `Fixture handle substitution failed: ${fixtureBinding.error}`,
|
|
2278
|
+
json_pointer: null,
|
|
2279
|
+
expected: "an unambiguous fixture handle binding",
|
|
2280
|
+
actual: fixtureBinding.error,
|
|
2281
|
+
schema_id: null,
|
|
2282
|
+
schema_url: null
|
|
2283
|
+
}
|
|
2284
|
+
],
|
|
2285
|
+
context,
|
|
2286
|
+
error: fixtureBinding.error,
|
|
2287
|
+
next: next2,
|
|
2288
|
+
extraction: { path: "none" }
|
|
2289
|
+
};
|
|
2290
|
+
}
|
|
2291
|
+
request = fixtureBinding.request;
|
|
2292
|
+
request = (0, import_creative_assets.expandCreativeAssetDirectives)(request, context, options.test_kit);
|
|
2293
|
+
const unresolvedContextVars = findUnresolvedContextVars(request);
|
|
2294
|
+
const unresolvedAssetDirectives = (0, import_creative_assets.findUnresolvedCreativeAssetDirectives)(request).map((path) => ({
|
|
2295
|
+
key: path,
|
|
2296
|
+
token: import_creative_assets.BUILD_ASSETS_FROM_FORMAT_DIRECTIVE
|
|
2297
|
+
}));
|
|
2298
|
+
const unresolvedVars = [...unresolvedContextVars, ...unresolvedAssetDirectives];
|
|
2299
|
+
if (unresolvedAssetDirectives.length > 0 || unresolvedContextVars.length > 0 && !step.expect_error) {
|
|
2196
2300
|
const next2 = getNextStepPreview(step.id, allSteps, context, runState.runnerVars);
|
|
2197
2301
|
const responseDerivedDetails = unresolvedVars.map((v) => runState.responseDerivedNotApplicableContextKeys?.get(v.key)).filter((d) => typeof d === "string");
|
|
2198
2302
|
const allResponseDerived = responseDerivedDetails.length === unresolvedVars.length && responseDerivedDetails.length > 0;
|
|
@@ -2206,7 +2310,7 @@ async function executeStep(client, step, storyboardId, phaseId, context, allStep
|
|
|
2206
2310
|
synthesized.push({
|
|
2207
2311
|
check: "unresolved_substitution",
|
|
2208
2312
|
passed: false,
|
|
2209
|
-
description: `request token "${v.token}" did not resolve \u2014 prior step did not populate context.${v.key}`,
|
|
2313
|
+
description: v.token === import_creative_assets.BUILD_ASSETS_FROM_FORMAT_DIRECTIVE ? `request directive "${v.token}" did not resolve \u2014 the test kit could not populate every seller-required asset at ${v.key}` : `request token "${v.token}" did not resolve \u2014 prior step did not populate context.${v.key}`,
|
|
2210
2314
|
json_pointer: null,
|
|
2211
2315
|
expected: v.token,
|
|
2212
2316
|
actual: null,
|
|
@@ -2866,9 +2970,42 @@ async function executeProbeStep(client, step, phaseId, context, allSteps, option
|
|
|
2866
2970
|
sample_request: rateLimitTrip.trip_target_sample_request,
|
|
2867
2971
|
omit_idempotency_key: true
|
|
2868
2972
|
};
|
|
2869
|
-
const
|
|
2870
|
-
|
|
2871
|
-
|
|
2973
|
+
const targetRequestResult = buildEffectiveStepRequest(targetStep, context, options, runState);
|
|
2974
|
+
if (!targetRequestResult.ok) {
|
|
2975
|
+
const next = getNextStepPreview(step.id, allSteps, context, runState.runnerVars);
|
|
2976
|
+
return {
|
|
2977
|
+
step_id: step.id,
|
|
2978
|
+
phase_id: phaseId,
|
|
2979
|
+
title: step.title,
|
|
2980
|
+
task: step.task,
|
|
2981
|
+
passed: false,
|
|
2982
|
+
duration_ms: Date.now() - start,
|
|
2983
|
+
validations: [
|
|
2984
|
+
{
|
|
2985
|
+
check: "unresolved_substitution",
|
|
2986
|
+
passed: false,
|
|
2987
|
+
description: `Fixture handle substitution failed: ${targetRequestResult.error}`,
|
|
2988
|
+
json_pointer: null,
|
|
2989
|
+
expected: "an unambiguous fixture handle binding",
|
|
2990
|
+
actual: targetRequestResult.error,
|
|
2991
|
+
schema_id: null,
|
|
2992
|
+
schema_url: null
|
|
2993
|
+
}
|
|
2994
|
+
],
|
|
2995
|
+
context,
|
|
2996
|
+
next,
|
|
2997
|
+
extraction: { path: "none" },
|
|
2998
|
+
error: targetRequestResult.error
|
|
2999
|
+
};
|
|
3000
|
+
}
|
|
3001
|
+
const resolvedTargetRequest = targetRequestResult.request;
|
|
3002
|
+
const unresolvedContextVars = findUnresolvedContextVars(resolvedTargetRequest);
|
|
3003
|
+
const unresolvedAssetDirectives = (0, import_creative_assets.findUnresolvedCreativeAssetDirectives)(resolvedTargetRequest).map((path) => ({
|
|
3004
|
+
key: path,
|
|
3005
|
+
token: import_creative_assets.BUILD_ASSETS_FROM_FORMAT_DIRECTIVE
|
|
3006
|
+
}));
|
|
3007
|
+
const unresolvedVars = [...unresolvedContextVars, ...unresolvedAssetDirectives];
|
|
3008
|
+
if (unresolvedAssetDirectives.length > 0 || unresolvedContextVars.length > 0 && !targetStep.expect_error) {
|
|
2872
3009
|
const next = getNextStepPreview(step.id, allSteps, context, runState.runnerVars);
|
|
2873
3010
|
const detail = `Skipped: unresolved context variables from rate_limit_trip.trip_target_sample_request: ${unresolvedVars.map((v) => v.key).join(", ")}.`;
|
|
2874
3011
|
return {
|
|
@@ -3032,6 +3169,21 @@ async function executeProbeStep(client, step, phaseId, context, allSteps, option
|
|
|
3032
3169
|
extraction
|
|
3033
3170
|
};
|
|
3034
3171
|
}
|
|
3172
|
+
function applyFixtureBindingsSafely(request, task, options, runState) {
|
|
3173
|
+
try {
|
|
3174
|
+
return {
|
|
3175
|
+
ok: true,
|
|
3176
|
+
request: (0, import_fixture_resolution.applyFixtureBindingsToRequest)(
|
|
3177
|
+
request,
|
|
3178
|
+
task,
|
|
3179
|
+
runState.fixtureBindings,
|
|
3180
|
+
options.adcpVersion ?? import_version.ADCP_VERSION
|
|
3181
|
+
)
|
|
3182
|
+
};
|
|
3183
|
+
} catch (error) {
|
|
3184
|
+
return { ok: false, error: error instanceof Error ? error.message : String(error) };
|
|
3185
|
+
}
|
|
3186
|
+
}
|
|
3035
3187
|
function buildEffectiveStepRequest(step, context, options, runState) {
|
|
3036
3188
|
let request;
|
|
3037
3189
|
if (options.request) {
|
|
@@ -3052,7 +3204,13 @@ function buildEffectiveStepRequest(step, context, options, runState) {
|
|
|
3052
3204
|
if (options.disable_sandbox === true) {
|
|
3053
3205
|
request = applyDisableSandboxHint(request, step.task);
|
|
3054
3206
|
}
|
|
3055
|
-
|
|
3207
|
+
request = applyIdempotencyInvariant(request, step.task, step);
|
|
3208
|
+
const fixtureBinding = applyFixtureBindingsSafely(request, step.task, options, runState);
|
|
3209
|
+
if (!fixtureBinding.ok) return fixtureBinding;
|
|
3210
|
+
return {
|
|
3211
|
+
ok: true,
|
|
3212
|
+
request: (0, import_creative_assets.expandCreativeAssetDirectives)(fixtureBinding.request, context, options.test_kit)
|
|
3213
|
+
};
|
|
3056
3214
|
}
|
|
3057
3215
|
async function executeReplayWebhookVectorStep(step, phaseId, context, allSteps, options, runState) {
|
|
3058
3216
|
const start = Date.now();
|