@adcp/sdk 12.1.1 → 13.0.0-rc.0
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/README.md +19 -3
- package/bin/adcp-fuzz.js +3 -1
- package/dist/lib/adapters/content-standards-adapter.d.mts +9 -9
- package/dist/lib/adapters/content-standards-adapter.d.ts +9 -9
- package/dist/lib/adapters/content-standards-adapter.d.ts.map +1 -1
- package/dist/lib/adapters/content-standards-adapter.js +22 -22
- package/dist/lib/adapters/content-standards-adapter.js.map +1 -1
- package/dist/lib/adapters/content-standards-adapter.mjs +18 -18
- package/dist/lib/adapters/content-standards-adapter.mjs.map +1 -1
- package/dist/lib/adapters/index.d.mts +2 -2
- package/dist/lib/adapters/index.d.ts +2 -2
- package/dist/lib/adapters/index.d.ts.map +1 -1
- package/dist/lib/adapters/index.js +10 -10
- package/dist/lib/adapters/index.js.map +1 -1
- package/dist/lib/adapters/index.mjs +9 -9
- package/dist/lib/adapters/index.mjs.map +1 -1
- package/dist/lib/auth/oauth/provider-cache.d.mts +7 -0
- package/dist/lib/auth/oauth/provider-cache.d.ts +8 -0
- package/dist/lib/auth/oauth/provider-cache.d.ts.map +1 -0
- package/dist/lib/auth/oauth/provider-cache.js +44 -0
- package/dist/lib/auth/oauth/provider-cache.js.map +1 -0
- package/dist/lib/auth/oauth/provider-cache.mjs +19 -0
- package/dist/lib/auth/oauth/provider-cache.mjs.map +1 -0
- package/dist/lib/conformance/invariants/uniformError.js +1 -1
- package/dist/lib/conformance/invariants/uniformError.js.map +1 -1
- package/dist/lib/conformance/invariants/uniformError.mjs +1 -1
- package/dist/lib/conformance/invariants/uniformError.mjs.map +1 -1
- package/dist/lib/conformance/runners.js +1 -1
- package/dist/lib/conformance/runners.js.map +1 -1
- package/dist/lib/conformance/runners.mjs +1 -1
- package/dist/lib/conformance/runners.mjs.map +1 -1
- package/dist/lib/conformance/seeder.js +5 -5
- package/dist/lib/conformance/seeder.js.map +1 -1
- package/dist/lib/conformance/seeder.mjs +5 -5
- package/dist/lib/conformance/seeder.mjs.map +1 -1
- package/dist/lib/core/ADCPMultiAgentClient.d.mts +26 -29
- package/dist/lib/core/ADCPMultiAgentClient.d.ts +26 -29
- package/dist/lib/core/ADCPMultiAgentClient.d.ts.map +1 -1
- package/dist/lib/core/ADCPMultiAgentClient.js +27 -19
- package/dist/lib/core/ADCPMultiAgentClient.js.map +1 -1
- package/dist/lib/core/ADCPMultiAgentClient.mjs +27 -19
- package/dist/lib/core/ADCPMultiAgentClient.mjs.map +1 -1
- package/dist/lib/core/AgentClient.d.mts +148 -138
- package/dist/lib/core/AgentClient.d.ts +148 -138
- package/dist/lib/core/AgentClient.d.ts.map +1 -1
- package/dist/lib/core/AgentClient.js +174 -85
- package/dist/lib/core/AgentClient.js.map +1 -1
- package/dist/lib/core/AgentClient.mjs +174 -85
- package/dist/lib/core/AgentClient.mjs.map +1 -1
- package/dist/lib/core/AsyncHandler.d.mts +18 -16
- package/dist/lib/core/AsyncHandler.d.ts +18 -16
- package/dist/lib/core/AsyncHandler.d.ts.map +1 -1
- package/dist/lib/core/AsyncHandler.js +22 -1
- package/dist/lib/core/AsyncHandler.js.map +1 -1
- package/dist/lib/core/AsyncHandler.mjs +22 -1
- package/dist/lib/core/AsyncHandler.mjs.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/CreativeAgentClient.d.mts +41 -17
- package/dist/lib/core/CreativeAgentClient.d.ts +41 -17
- package/dist/lib/core/CreativeAgentClient.d.ts.map +1 -1
- package/dist/lib/core/CreativeAgentClient.js +39 -12
- package/dist/lib/core/CreativeAgentClient.js.map +1 -1
- package/dist/lib/core/CreativeAgentClient.mjs +39 -12
- package/dist/lib/core/CreativeAgentClient.mjs.map +1 -1
- package/dist/lib/core/SingleAgentClient.d.mts +127 -50
- package/dist/lib/core/SingleAgentClient.d.ts +127 -50
- package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
- package/dist/lib/core/SingleAgentClient.js +1617 -177
- package/dist/lib/core/SingleAgentClient.js.map +1 -1
- package/dist/lib/core/SingleAgentClient.mjs +1627 -177
- package/dist/lib/core/SingleAgentClient.mjs.map +1 -1
- package/dist/lib/core/TaskExecutor.d.mts +9 -0
- package/dist/lib/core/TaskExecutor.d.ts +9 -0
- package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
- package/dist/lib/core/TaskExecutor.js +136 -43
- package/dist/lib/core/TaskExecutor.js.map +1 -1
- package/dist/lib/core/TaskExecutor.mjs +136 -43
- package/dist/lib/core/TaskExecutor.mjs.map +1 -1
- package/dist/lib/index.d.mts +111 -17
- package/dist/lib/index.d.ts +111 -17
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +94 -94
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +93 -94
- package/dist/lib/index.mjs.map +1 -1
- package/dist/lib/protocols/index.d.ts.map +1 -1
- package/dist/lib/protocols/index.js +6 -15
- package/dist/lib/protocols/index.js.map +1 -1
- package/dist/lib/protocols/index.mjs +6 -16
- package/dist/lib/protocols/index.mjs.map +1 -1
- package/dist/lib/protocols/mcp-modern.d.ts.map +1 -1
- package/dist/lib/protocols/mcp-modern.js +87 -12
- package/dist/lib/protocols/mcp-modern.js.map +1 -1
- package/dist/lib/protocols/mcp-modern.mjs +89 -12
- package/dist/lib/protocols/mcp-modern.mjs.map +1 -1
- package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
- package/dist/lib/server/create-adcp-server.d.mts +6 -0
- package/dist/lib/server/create-adcp-server.d.ts +6 -0
- package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
- package/dist/lib/server/create-adcp-server.js +295 -48
- package/dist/lib/server/create-adcp-server.js.map +1 -1
- package/dist/lib/server/create-adcp-server.mjs +301 -50
- package/dist/lib/server/create-adcp-server.mjs.map +1 -1
- package/dist/lib/server/decisioning/assembly-helpers.d.mts +27 -13
- package/dist/lib/server/decisioning/assembly-helpers.d.ts +27 -13
- package/dist/lib/server/decisioning/assembly-helpers.d.ts.map +1 -1
- package/dist/lib/server/decisioning/assembly-helpers.js +136 -14
- package/dist/lib/server/decisioning/assembly-helpers.js.map +1 -1
- package/dist/lib/server/decisioning/assembly-helpers.mjs +134 -13
- package/dist/lib/server/decisioning/assembly-helpers.mjs.map +1 -1
- package/dist/lib/server/decisioning/index.d.mts +13 -12
- package/dist/lib/server/decisioning/index.d.ts +13 -12
- package/dist/lib/server/decisioning/index.d.ts.map +1 -1
- package/dist/lib/server/decisioning/index.js +6 -0
- package/dist/lib/server/decisioning/index.js.map +1 -1
- package/dist/lib/server/decisioning/index.mjs +9 -3
- package/dist/lib/server/decisioning/index.mjs.map +1 -1
- package/dist/lib/server/decisioning/list-helpers.d.mts +13 -3
- package/dist/lib/server/decisioning/list-helpers.d.ts +13 -3
- package/dist/lib/server/decisioning/list-helpers.d.ts.map +1 -1
- package/dist/lib/server/decisioning/list-helpers.js +13 -3
- package/dist/lib/server/decisioning/list-helpers.js.map +1 -1
- package/dist/lib/server/decisioning/list-helpers.mjs +11 -2
- package/dist/lib/server/decisioning/list-helpers.mjs.map +1 -1
- package/dist/lib/server/decisioning/manifest-helpers.d.mts +5 -3
- package/dist/lib/server/decisioning/manifest-helpers.d.ts +5 -3
- package/dist/lib/server/decisioning/manifest-helpers.d.ts.map +1 -1
- package/dist/lib/server/decisioning/manifest-helpers.js.map +1 -1
- package/dist/lib/server/decisioning/manifest-helpers.mjs.map +1 -1
- package/dist/lib/server/decisioning/proposal/dispatch.d.mts +2 -2
- package/dist/lib/server/decisioning/proposal/dispatch.d.ts +2 -2
- package/dist/lib/server/decisioning/proposal/dispatch.d.ts.map +1 -1
- package/dist/lib/server/decisioning/proposal/dispatch.js.map +1 -1
- package/dist/lib/server/decisioning/proposal/dispatch.mjs.map +1 -1
- package/dist/lib/server/decisioning/proposal/index.d.mts +1 -1
- package/dist/lib/server/decisioning/proposal/index.d.ts +1 -1
- package/dist/lib/server/decisioning/proposal/index.d.ts.map +1 -1
- package/dist/lib/server/decisioning/proposal/index.js.map +1 -1
- package/dist/lib/server/decisioning/proposal/index.mjs.map +1 -1
- package/dist/lib/server/decisioning/proposal/lifecycle.d.mts +3 -2
- package/dist/lib/server/decisioning/proposal/lifecycle.d.ts +3 -2
- package/dist/lib/server/decisioning/proposal/lifecycle.d.ts.map +1 -1
- package/dist/lib/server/decisioning/proposal/lifecycle.js.map +1 -1
- package/dist/lib/server/decisioning/proposal/lifecycle.mjs.map +1 -1
- package/dist/lib/server/decisioning/proposal/mock-manager.d.mts +3 -3
- package/dist/lib/server/decisioning/proposal/mock-manager.d.ts +3 -3
- package/dist/lib/server/decisioning/proposal/mock-manager.d.ts.map +1 -1
- package/dist/lib/server/decisioning/proposal/mock-manager.js.map +1 -1
- package/dist/lib/server/decisioning/proposal/mock-manager.mjs.map +1 -1
- package/dist/lib/server/decisioning/proposal/types.d.mts +10 -6
- package/dist/lib/server/decisioning/proposal/types.d.ts +10 -6
- package/dist/lib/server/decisioning/proposal/types.d.ts.map +1 -1
- package/dist/lib/server/decisioning/proposal/types.js.map +1 -1
- package/dist/lib/server/decisioning/proposal/types.mjs.map +1 -1
- package/dist/lib/server/decisioning/runtime/from-platform.d.mts +21 -2
- package/dist/lib/server/decisioning/runtime/from-platform.d.ts +21 -2
- package/dist/lib/server/decisioning/runtime/from-platform.d.ts.map +1 -1
- package/dist/lib/server/decisioning/runtime/from-platform.js +754 -81
- package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
- package/dist/lib/server/decisioning/runtime/from-platform.mjs +763 -81
- package/dist/lib/server/decisioning/runtime/from-platform.mjs.map +1 -1
- package/dist/lib/server/decisioning/specialisms/brand-rights.d.mts +9 -9
- package/dist/lib/server/decisioning/specialisms/brand-rights.d.ts +9 -9
- package/dist/lib/server/decisioning/specialisms/brand-rights.d.ts.map +1 -1
- package/dist/lib/server/decisioning/specialisms/brand-rights.js.map +1 -1
- package/dist/lib/server/decisioning/specialisms/content-standards.d.mts +16 -16
- package/dist/lib/server/decisioning/specialisms/content-standards.d.ts +16 -16
- package/dist/lib/server/decisioning/specialisms/content-standards.d.ts.map +1 -1
- package/dist/lib/server/decisioning/specialisms/content-standards.js.map +1 -1
- package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.mts +15 -13
- package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.ts +15 -13
- package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.ts.map +1 -1
- package/dist/lib/server/decisioning/specialisms/creative-ad-server.js.map +1 -1
- package/dist/lib/server/decisioning/specialisms/creative.d.mts +12 -11
- package/dist/lib/server/decisioning/specialisms/creative.d.ts +12 -11
- package/dist/lib/server/decisioning/specialisms/creative.d.ts.map +1 -1
- package/dist/lib/server/decisioning/specialisms/creative.js.map +1 -1
- package/dist/lib/server/decisioning/specialisms/sales.d.mts +25 -15
- package/dist/lib/server/decisioning/specialisms/sales.d.ts +25 -15
- package/dist/lib/server/decisioning/specialisms/sales.d.ts.map +1 -1
- package/dist/lib/server/decisioning/specialisms/sales.js.map +1 -1
- package/dist/lib/server/index.d.mts +3 -3
- package/dist/lib/server/index.d.ts +3 -3
- package/dist/lib/server/index.d.ts.map +1 -1
- package/dist/lib/server/index.js +72 -72
- package/dist/lib/server/index.js.map +1 -1
- package/dist/lib/server/index.mjs +36 -36
- package/dist/lib/server/index.mjs.map +1 -1
- package/dist/lib/server/legacy/v5/index.d.mts +1 -0
- package/dist/lib/server/legacy/v5/index.d.ts +1 -0
- package/dist/lib/server/legacy/v5/index.d.ts.map +1 -1
- package/dist/lib/server/legacy/v5/index.js +74 -1
- package/dist/lib/server/legacy/v5/index.js.map +1 -1
- package/dist/lib/server/legacy/v5/index.mjs +75 -1
- package/dist/lib/server/legacy/v5/index.mjs.map +1 -1
- package/dist/lib/server/responses.d.mts +2 -2
- package/dist/lib/server/responses.d.ts +2 -2
- package/dist/lib/server/responses.js.map +1 -1
- package/dist/lib/server/responses.mjs.map +1 -1
- package/dist/lib/testing/client.js +1 -1
- package/dist/lib/testing/client.js.map +1 -1
- package/dist/lib/testing/client.mjs +1 -1
- package/dist/lib/testing/client.mjs.map +1 -1
- package/dist/lib/testing/scenarios/brand-rights.js +6 -6
- package/dist/lib/testing/scenarios/brand-rights.js.map +1 -1
- package/dist/lib/testing/scenarios/brand-rights.mjs +6 -6
- package/dist/lib/testing/scenarios/brand-rights.mjs.map +1 -1
- package/dist/lib/testing/scenarios/creative.js +7 -7
- package/dist/lib/testing/scenarios/creative.js.map +1 -1
- package/dist/lib/testing/scenarios/creative.mjs +7 -7
- package/dist/lib/testing/scenarios/creative.mjs.map +1 -1
- package/dist/lib/testing/scenarios/discovery.js +2 -2
- package/dist/lib/testing/scenarios/discovery.js.map +1 -1
- package/dist/lib/testing/scenarios/discovery.mjs +2 -2
- package/dist/lib/testing/scenarios/discovery.mjs.map +1 -1
- package/dist/lib/testing/scenarios/edge-cases.js +11 -11
- package/dist/lib/testing/scenarios/edge-cases.js.map +1 -1
- package/dist/lib/testing/scenarios/edge-cases.mjs +11 -11
- package/dist/lib/testing/scenarios/edge-cases.mjs.map +1 -1
- package/dist/lib/testing/scenarios/governance.d.ts.map +1 -1
- package/dist/lib/testing/scenarios/governance.js +16 -22
- package/dist/lib/testing/scenarios/governance.js.map +1 -1
- package/dist/lib/testing/scenarios/governance.mjs +16 -22
- package/dist/lib/testing/scenarios/governance.mjs.map +1 -1
- package/dist/lib/testing/scenarios/media-buy.js +5 -5
- package/dist/lib/testing/scenarios/media-buy.js.map +1 -1
- package/dist/lib/testing/scenarios/media-buy.mjs +5 -5
- package/dist/lib/testing/scenarios/media-buy.mjs.map +1 -1
- package/dist/lib/testing/scenarios/schema-compliance.js +1 -1
- package/dist/lib/testing/scenarios/schema-compliance.js.map +1 -1
- package/dist/lib/testing/scenarios/schema-compliance.mjs +1 -1
- package/dist/lib/testing/scenarios/schema-compliance.mjs.map +1 -1
- package/dist/lib/testing/scenarios/trusted-match.d.ts.map +1 -1
- package/dist/lib/testing/scenarios/trusted-match.js +4 -3
- package/dist/lib/testing/scenarios/trusted-match.js.map +1 -1
- package/dist/lib/testing/scenarios/trusted-match.mjs +4 -3
- package/dist/lib/testing/scenarios/trusted-match.mjs.map +1 -1
- package/dist/lib/testing/storyboard/shape-drift-hints.d.mts +3 -4
- package/dist/lib/testing/storyboard/shape-drift-hints.d.ts +3 -4
- package/dist/lib/testing/storyboard/shape-drift-hints.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/shape-drift-hints.js +27 -27
- package/dist/lib/testing/storyboard/shape-drift-hints.js.map +1 -1
- package/dist/lib/testing/storyboard/shape-drift-hints.mjs +27 -27
- package/dist/lib/testing/storyboard/shape-drift-hints.mjs.map +1 -1
- package/dist/lib/testing/storyboard/task-map.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/task-map.js +43 -5
- package/dist/lib/testing/storyboard/task-map.js.map +1 -1
- package/dist/lib/testing/storyboard/task-map.mjs +43 -5
- package/dist/lib/testing/storyboard/task-map.mjs.map +1 -1
- package/dist/lib/testing/test-helpers.d.mts +2 -2
- package/dist/lib/testing/test-helpers.d.ts +2 -2
- package/dist/lib/testing/test-helpers.js.map +1 -1
- package/dist/lib/testing/test-helpers.mjs.map +1 -1
- package/dist/lib/types/adcp.d.mts +14 -14
- package/dist/lib/types/adcp.d.ts +14 -14
- package/dist/lib/types/adcp.d.ts.map +1 -1
- package/dist/lib/types/adcp.js.map +1 -1
- package/dist/lib/types/adcp.mjs.map +1 -1
- package/dist/lib/types/index.d.mts +2 -2
- package/dist/lib/types/index.d.ts +2 -2
- package/dist/lib/types/index.d.ts.map +1 -1
- package/dist/lib/types/index.js.map +1 -1
- package/dist/lib/types/index.mjs.map +1 -1
- package/dist/lib/utils/capabilities.d.mts +6 -0
- package/dist/lib/utils/capabilities.d.ts +6 -0
- package/dist/lib/utils/capabilities.d.ts.map +1 -1
- package/dist/lib/utils/capabilities.js +4 -0
- package/dist/lib/utils/capabilities.js.map +1 -1
- package/dist/lib/utils/capabilities.mjs +4 -0
- package/dist/lib/utils/capabilities.mjs.map +1 -1
- package/dist/lib/utils/creative-delivery.d.mts +52 -10
- package/dist/lib/utils/creative-delivery.d.ts +52 -10
- package/dist/lib/utils/creative-delivery.d.ts.map +1 -1
- package/dist/lib/utils/creative-delivery.js +104 -9
- package/dist/lib/utils/creative-delivery.js.map +1 -1
- package/dist/lib/utils/creative-delivery.mjs +104 -8
- package/dist/lib/utils/creative-delivery.mjs.map +1 -1
- package/dist/lib/utils/format-assets.d.mts +41 -38
- package/dist/lib/utils/format-assets.d.ts +41 -38
- package/dist/lib/utils/format-assets.d.ts.map +1 -1
- package/dist/lib/utils/format-assets.js +3 -1
- package/dist/lib/utils/format-assets.js.map +1 -1
- package/dist/lib/utils/format-assets.mjs +3 -1
- package/dist/lib/utils/format-assets.mjs.map +1 -1
- package/dist/lib/utils/index.d.mts +8 -8
- package/dist/lib/utils/index.d.ts +8 -8
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js +11 -9
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/index.mjs +9 -8
- package/dist/lib/utils/index.mjs.map +1 -1
- package/dist/lib/utils/preview-utils.d.mts +11 -8
- package/dist/lib/utils/preview-utils.d.ts +11 -8
- package/dist/lib/utils/preview-utils.d.ts.map +1 -1
- package/dist/lib/utils/preview-utils.js +4 -4
- package/dist/lib/utils/preview-utils.js.map +1 -1
- package/dist/lib/utils/preview-utils.mjs +3 -3
- package/dist/lib/utils/preview-utils.mjs.map +1 -1
- package/dist/lib/utils/tool-request-schemas.d.mts +2 -2
- package/dist/lib/utils/tool-request-schemas.d.ts +2 -2
- package/dist/lib/v2/projection/aao-reference-formats.json +492 -0
- package/dist/lib/v2/projection/augment-response.d.mts +31 -11
- package/dist/lib/v2/projection/augment-response.d.ts +31 -11
- package/dist/lib/v2/projection/augment-response.d.ts.map +1 -1
- package/dist/lib/v2/projection/augment-response.js +233 -27
- package/dist/lib/v2/projection/augment-response.js.map +1 -1
- package/dist/lib/v2/projection/augment-response.mjs +232 -27
- package/dist/lib/v2/projection/augment-response.mjs.map +1 -1
- package/dist/lib/v2/projection/builders.d.mts +7 -6
- package/dist/lib/v2/projection/builders.d.ts +7 -6
- package/dist/lib/v2/projection/builders.d.ts.map +1 -1
- package/dist/lib/v2/projection/builders.js +11 -8
- package/dist/lib/v2/projection/builders.js.map +1 -1
- package/dist/lib/v2/projection/builders.mjs +9 -6
- package/dist/lib/v2/projection/builders.mjs.map +1 -1
- package/dist/lib/v2/projection/catalog-snapshot.d.mts +47 -0
- package/dist/lib/v2/projection/catalog-snapshot.d.ts +48 -0
- package/dist/lib/v2/projection/catalog-snapshot.d.ts.map +1 -0
- package/dist/lib/v2/projection/catalog-snapshot.js +291 -0
- package/dist/lib/v2/projection/catalog-snapshot.js.map +1 -0
- package/dist/lib/v2/projection/catalog-snapshot.mjs +265 -0
- package/dist/lib/v2/projection/catalog-snapshot.mjs.map +1 -0
- package/dist/lib/v2/projection/catalog.d.mts +23 -2
- package/dist/lib/v2/projection/catalog.d.ts +23 -2
- package/dist/lib/v2/projection/catalog.d.ts.map +1 -1
- package/dist/lib/v2/projection/catalog.js +34 -10
- package/dist/lib/v2/projection/catalog.js.map +1 -1
- package/dist/lib/v2/projection/catalog.mjs +33 -10
- package/dist/lib/v2/projection/catalog.mjs.map +1 -1
- package/dist/lib/v2/projection/creative-delivery.d.mts +157 -0
- package/dist/lib/v2/projection/creative-delivery.d.ts +158 -0
- package/dist/lib/v2/projection/creative-delivery.d.ts.map +1 -0
- package/dist/lib/v2/projection/creative-delivery.js +967 -0
- package/dist/lib/v2/projection/creative-delivery.js.map +1 -0
- package/dist/lib/v2/projection/creative-delivery.mjs +941 -0
- package/dist/lib/v2/projection/creative-delivery.mjs.map +1 -0
- package/dist/lib/v2/projection/index.d.mts +8 -6
- package/dist/lib/v2/projection/index.d.ts +8 -6
- package/dist/lib/v2/projection/index.d.ts.map +1 -1
- package/dist/lib/v2/projection/index.js +26 -4
- package/dist/lib/v2/projection/index.js.map +1 -1
- package/dist/lib/v2/projection/index.mjs +28 -4
- package/dist/lib/v2/projection/index.mjs.map +1 -1
- package/dist/lib/v2/projection/legacy-metadata.d.mts +21 -0
- package/dist/lib/v2/projection/legacy-metadata.d.ts +22 -0
- package/dist/lib/v2/projection/legacy-metadata.d.ts.map +1 -0
- package/dist/lib/v2/projection/legacy-metadata.js +73 -0
- package/dist/lib/v2/projection/legacy-metadata.js.map +1 -0
- package/dist/lib/v2/projection/legacy-metadata.mjs +45 -0
- package/dist/lib/v2/projection/legacy-metadata.mjs.map +1 -0
- package/dist/lib/v2/projection/types.d.mts +29 -23
- package/dist/lib/v2/projection/types.d.ts +29 -23
- package/dist/lib/v2/projection/types.d.ts.map +1 -1
- package/dist/lib/v2/projection/types.js.map +1 -1
- package/dist/lib/v2/projection/v1-to-v2.d.mts +29 -6
- package/dist/lib/v2/projection/v1-to-v2.d.ts +29 -6
- package/dist/lib/v2/projection/v1-to-v2.d.ts.map +1 -1
- package/dist/lib/v2/projection/v1-to-v2.js +218 -9
- package/dist/lib/v2/projection/v1-to-v2.js.map +1 -1
- package/dist/lib/v2/projection/v1-to-v2.mjs +219 -10
- package/dist/lib/v2/projection/v1-to-v2.mjs.map +1 -1
- package/dist/lib/v2/projection/v2-to-v1.d.mts +31 -2
- package/dist/lib/v2/projection/v2-to-v1.d.ts +31 -2
- package/dist/lib/v2/projection/v2-to-v1.d.ts.map +1 -1
- package/dist/lib/v2/projection/v2-to-v1.js +138 -7
- package/dist/lib/v2/projection/v2-to-v1.js.map +1 -1
- package/dist/lib/v2/projection/v2-to-v1.mjs +135 -6
- package/dist/lib/v2/projection/v2-to-v1.mjs.map +1 -1
- package/dist/lib/v2/projection/write-side.d.mts +12 -13
- package/dist/lib/v2/projection/write-side.d.ts +12 -13
- package/dist/lib/v2/projection/write-side.d.ts.map +1 -1
- package/dist/lib/v2/projection/write-side.js +16 -12
- package/dist/lib/v2/projection/write-side.js.map +1 -1
- package/dist/lib/v2/projection/write-side.mjs +16 -12
- package/dist/lib/v2/projection/write-side.mjs.map +1 -1
- package/dist/lib/version.d.mts +3 -3
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.d.ts.map +1 -1
- package/dist/lib/version.js +3 -3
- package/dist/lib/version.js.map +1 -1
- package/dist/lib/version.mjs +3 -3
- package/dist/lib/version.mjs.map +1 -1
- package/docs/guides/BUILD-AN-AGENT.md +7 -2
- package/docs/guides/PREVIEW-ASSET-DURABILITY.md +6 -2
- package/docs/llms.txt +1 -0
- package/examples/README.md +1 -1
- package/examples/batch-preview-test.ts +3 -3
- package/examples/conversation-client.ts +2 -2
- package/examples/debug-preview-response.ts +1 -1
- package/examples/decisioning-platform-broadcast-tv.ts +10 -4
- package/examples/decisioning-platform-mock-seller.ts +16 -9
- package/examples/decisioning-platform-programmatic.ts +18 -7
- package/examples/error-compliant-server.ts +26 -16
- package/examples/generative-creative-demo.ts +7 -19
- package/examples/hello_creative_adapter_ad_server.ts +37 -16
- package/examples/hello_creative_adapter_template.ts +12 -10
- package/examples/hello_seller_adapter_guaranteed.ts +52 -23
- package/examples/hello_seller_adapter_multi_tenant.ts +6 -3
- package/examples/hello_seller_adapter_non_guaranteed.ts +54 -26
- package/examples/hello_seller_adapter_proposal_mode.ts +40 -14
- package/examples/hello_seller_adapter_social.ts +2 -7
- package/examples/inspect-card-formats.ts +1 -1
- package/examples/simple-getting-started.ts +1 -1
- package/examples/test-helpers-demo.ts +1 -1
- package/package.json +2 -2
- package/skills/build-decisioning-creative-template/SKILL.md +11 -11
- package/skills/build-decisioning-platform/advanced/REFERENCE.md +8 -2
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
COMPATIBLE_ADCP_VERSIONS,
|
|
4
|
+
parseAdcpMajorVersion,
|
|
5
|
+
toReleasePrecisionVersion
|
|
6
|
+
} from "../version.mjs";
|
|
3
7
|
import { resolveAdcpVersion } from "../utils/adcp-version-config.mjs";
|
|
4
|
-
import { resolveBundleKey } from "../validation/schema-loader.mjs";
|
|
8
|
+
import { getValidator, hasSchemaBundle, resolveBundleKey } from "../validation/schema-loader.mjs";
|
|
5
9
|
import { TOOL_INPUT_SHAPES } from "../schemas/index.mjs";
|
|
6
10
|
import { bundleSupportsAdcpVersionField } from "../protocols/index.mjs";
|
|
7
11
|
import { getToolsWithErrorArm } from "./error-arm-tools.mjs";
|
|
@@ -1134,6 +1138,127 @@ function buildSupportedVersionsList(capConfig, serverPin) {
|
|
|
1134
1138
|
const pinMajor = parseAdcpMajorVersion(serverPin);
|
|
1135
1139
|
return Number.isFinite(pinMajor) ? [String(pinMajor)] : [];
|
|
1136
1140
|
}
|
|
1141
|
+
function isMcpToolResponse(value) {
|
|
1142
|
+
return Array.isArray(value.content);
|
|
1143
|
+
}
|
|
1144
|
+
function parseAdcpRelease(value) {
|
|
1145
|
+
if (typeof value !== "string") return void 0;
|
|
1146
|
+
let wire;
|
|
1147
|
+
try {
|
|
1148
|
+
wire = toReleasePrecisionVersion(value);
|
|
1149
|
+
} catch {
|
|
1150
|
+
return void 0;
|
|
1151
|
+
}
|
|
1152
|
+
const match = /^v?(\d+)\.(\d+)(?:-([a-zA-Z0-9.-]+))?$/.exec(wire);
|
|
1153
|
+
if (!match) return void 0;
|
|
1154
|
+
return {
|
|
1155
|
+
major: Number(match[1]),
|
|
1156
|
+
minor: Number(match[2]),
|
|
1157
|
+
...match[3] !== void 0 && { prerelease: match[3] },
|
|
1158
|
+
value: wire
|
|
1159
|
+
};
|
|
1160
|
+
}
|
|
1161
|
+
function compareAdcpRelease(left, right) {
|
|
1162
|
+
if (left.major !== right.major) return left.major - right.major;
|
|
1163
|
+
if (left.minor !== right.minor) return left.minor - right.minor;
|
|
1164
|
+
if (left.prerelease === right.prerelease) return 0;
|
|
1165
|
+
if (left.prerelease === void 0) return 1;
|
|
1166
|
+
if (right.prerelease === void 0) return -1;
|
|
1167
|
+
const leftParts = left.prerelease.split(".");
|
|
1168
|
+
const rightParts = right.prerelease.split(".");
|
|
1169
|
+
for (let index = 0; index < Math.max(leftParts.length, rightParts.length); index += 1) {
|
|
1170
|
+
const leftPart = leftParts[index];
|
|
1171
|
+
const rightPart = rightParts[index];
|
|
1172
|
+
if (leftPart === void 0) return -1;
|
|
1173
|
+
if (rightPart === void 0) return 1;
|
|
1174
|
+
if (leftPart === rightPart) continue;
|
|
1175
|
+
const leftNumeric = /^\d+$/.test(leftPart);
|
|
1176
|
+
const rightNumeric = /^\d+$/.test(rightPart);
|
|
1177
|
+
if (leftNumeric && rightNumeric) return Number(leftPart) - Number(rightPart);
|
|
1178
|
+
if (leftNumeric !== rightNumeric) return leftNumeric ? -1 : 1;
|
|
1179
|
+
return leftPart.localeCompare(rightPart);
|
|
1180
|
+
}
|
|
1181
|
+
return 0;
|
|
1182
|
+
}
|
|
1183
|
+
let bundledCompatibleReleases;
|
|
1184
|
+
function bundledReleasesForMajors(majors, configured) {
|
|
1185
|
+
const acceptedMajors = new Set(majors);
|
|
1186
|
+
const releases = /* @__PURE__ */ new Map();
|
|
1187
|
+
bundledCompatibleReleases ??= COMPATIBLE_ADCP_VERSIONS.flatMap((version) => {
|
|
1188
|
+
if (!hasSchemaBundle(version)) return [];
|
|
1189
|
+
const parsed = parseAdcpRelease(version);
|
|
1190
|
+
return parsed ? [parsed] : [];
|
|
1191
|
+
});
|
|
1192
|
+
for (const parsed of bundledCompatibleReleases) {
|
|
1193
|
+
if (!acceptedMajors.has(parsed.major) || compareAdcpRelease(parsed, configured) > 0) continue;
|
|
1194
|
+
const key = `${parsed.major}.${parsed.minor}${parsed.prerelease ? `-${parsed.prerelease}` : ""}`;
|
|
1195
|
+
const existing = releases.get(key);
|
|
1196
|
+
if (!existing || parsed.value.startsWith("v")) releases.set(key, parsed);
|
|
1197
|
+
}
|
|
1198
|
+
return [...releases.values()];
|
|
1199
|
+
}
|
|
1200
|
+
function selectServedAdcpRelease(params, capConfig, serverPin) {
|
|
1201
|
+
const configured = parseAdcpRelease(serverPin);
|
|
1202
|
+
if (!configured) {
|
|
1203
|
+
return adcpError("VERSION_UNSUPPORTED", {
|
|
1204
|
+
message: `Configured AdCP release ${JSON.stringify(serverPin)} is invalid.`,
|
|
1205
|
+
details: { supported_versions: buildSupportedVersionsList(capConfig, serverPin) }
|
|
1206
|
+
});
|
|
1207
|
+
}
|
|
1208
|
+
const advertisedValues = capConfig?.supported_versions?.length ? capConfig.supported_versions : void 0;
|
|
1209
|
+
const advertised = advertisedValues ? advertisedValues.map(parseAdcpRelease) : capConfig?.major_versions?.length ? bundledReleasesForMajors(capConfig.major_versions, configured) : [configured];
|
|
1210
|
+
if (advertised.some((value) => value === void 0)) {
|
|
1211
|
+
return adcpError("VERSION_UNSUPPORTED", {
|
|
1212
|
+
message: "Seller capabilities contain an invalid supported_versions release.",
|
|
1213
|
+
details: { supported_versions: buildSupportedVersionsList(capConfig, serverPin) }
|
|
1214
|
+
});
|
|
1215
|
+
}
|
|
1216
|
+
const supported = advertised.filter(
|
|
1217
|
+
(candidate) => compareAdcpRelease(candidate, configured) <= 0
|
|
1218
|
+
);
|
|
1219
|
+
if (supported.length === 0) {
|
|
1220
|
+
return adcpError("VERSION_UNSUPPORTED", {
|
|
1221
|
+
message: "Seller capabilities do not include a release this server can serve.",
|
|
1222
|
+
details: { supported_versions: buildSupportedVersionsList(capConfig, serverPin) }
|
|
1223
|
+
});
|
|
1224
|
+
}
|
|
1225
|
+
const requestedVersion = params.adcp_version;
|
|
1226
|
+
const requestedMajorRaw = params.adcp_major_version;
|
|
1227
|
+
const requestedMajor = typeof requestedMajorRaw === "number" ? requestedMajorRaw : typeof requestedMajorRaw === "string" ? Number.parseInt(requestedMajorRaw, 10) : void 0;
|
|
1228
|
+
let selected;
|
|
1229
|
+
if (requestedVersion !== void 0) {
|
|
1230
|
+
const requested = parseAdcpRelease(requestedVersion);
|
|
1231
|
+
if (!requested) {
|
|
1232
|
+
return adcpError("VERSION_UNSUPPORTED", {
|
|
1233
|
+
message: `Request carries invalid adcp_version=${JSON.stringify(requestedVersion)}.`,
|
|
1234
|
+
details: { supported_versions: buildSupportedVersionsList(capConfig, serverPin) }
|
|
1235
|
+
});
|
|
1236
|
+
}
|
|
1237
|
+
if (requestedMajor !== void 0 && Number.isFinite(requestedMajor) && requestedMajor !== requested.major) {
|
|
1238
|
+
return adcpError("VERSION_UNSUPPORTED", {
|
|
1239
|
+
message: `Request carries adcp_version=${JSON.stringify(requestedVersion)} (major ${requested.major}) and adcp_major_version=${JSON.stringify(requestedMajorRaw)}; majors must agree.`,
|
|
1240
|
+
details: { supported_versions: buildSupportedVersionsList(capConfig, serverPin) }
|
|
1241
|
+
});
|
|
1242
|
+
}
|
|
1243
|
+
selected = supported.filter((candidate) => candidate.major === requested.major && compareAdcpRelease(candidate, requested) <= 0).sort((left, right) => compareAdcpRelease(right, left))[0];
|
|
1244
|
+
} else if (requestedMajor !== void 0 && Number.isFinite(requestedMajor)) {
|
|
1245
|
+
selected = supported.filter((candidate) => candidate.major === requestedMajor).sort(compareAdcpRelease)[0];
|
|
1246
|
+
} else {
|
|
1247
|
+
selected = [...supported].sort((left, right) => compareAdcpRelease(right, left))[0];
|
|
1248
|
+
}
|
|
1249
|
+
if (!selected) {
|
|
1250
|
+
const claim = requestedVersion !== void 0 ? `adcp_version=${JSON.stringify(requestedVersion)}` : requestedMajorRaw !== void 0 ? `adcp_major_version=${JSON.stringify(requestedMajorRaw)} (major ${String(requestedMajor)})` : "no AdCP version";
|
|
1251
|
+
return adcpError("VERSION_UNSUPPORTED", {
|
|
1252
|
+
message: `Request claims ${claim}; no mutually supported AdCP release is available.`,
|
|
1253
|
+
details: { supported_versions: buildSupportedVersionsList(capConfig, serverPin) }
|
|
1254
|
+
});
|
|
1255
|
+
}
|
|
1256
|
+
const validationVersion = selected.value;
|
|
1257
|
+
return {
|
|
1258
|
+
validationVersion,
|
|
1259
|
+
...bundleSupportsAdcpVersionField(resolveBundleKey(validationVersion)) && { wireVersion: validationVersion }
|
|
1260
|
+
};
|
|
1261
|
+
}
|
|
1137
1262
|
function createAdcpServer(config) {
|
|
1138
1263
|
const {
|
|
1139
1264
|
name,
|
|
@@ -1359,43 +1484,42 @@ function createAdcpServer(config) {
|
|
|
1359
1484
|
responseEnhancer?.(response);
|
|
1360
1485
|
return response;
|
|
1361
1486
|
};
|
|
1487
|
+
const requestServedRelease = (params) => {
|
|
1488
|
+
const selected = selectServedAdcpRelease(params, capConfig, adcpVersion);
|
|
1489
|
+
return isMcpToolResponse(selected) ? void 0 : selected;
|
|
1490
|
+
};
|
|
1491
|
+
const releaseDefinesTool = (toolName, release) => {
|
|
1492
|
+
try {
|
|
1493
|
+
return getValidator(toolName, "request", release.validationVersion) !== void 0;
|
|
1494
|
+
} catch {
|
|
1495
|
+
return false;
|
|
1496
|
+
}
|
|
1497
|
+
};
|
|
1362
1498
|
const finalizeProtocolTaskToolResponse = (toolName, params, response, opts = {}) => {
|
|
1499
|
+
const release = requestServedRelease(params) ?? {
|
|
1500
|
+
validationVersion: adcpVersion,
|
|
1501
|
+
...servedAdcpVersion !== void 0 && { wireVersion: servedAdcpVersion }
|
|
1502
|
+
};
|
|
1363
1503
|
sanitizeAdcpErrorEnvelope(response);
|
|
1364
|
-
enrichErrorTwoLayer(response, toolName,
|
|
1504
|
+
enrichErrorTwoLayer(response, toolName, getToolsWithErrorArm(release.validationVersion));
|
|
1365
1505
|
if (!isErrorResponse(response)) {
|
|
1366
1506
|
normalizeMediaBuyStatusCollision(response, toolName);
|
|
1367
1507
|
injectEnvelopeStatusIntoResponse(response);
|
|
1368
|
-
const validationError = protocolTaskResponseValidationError(toolName, response);
|
|
1508
|
+
const validationError = protocolTaskResponseValidationError(toolName, response, params);
|
|
1369
1509
|
if (validationError) return finalizeProtocolTaskToolResponse(toolName, params, validationError, opts);
|
|
1370
1510
|
}
|
|
1371
1511
|
if (opts.echoContext !== false) injectContextIntoResponse(response, params.context);
|
|
1372
|
-
injectVersionIntoResponse(response,
|
|
1512
|
+
injectVersionIntoResponse(response, release.wireVersion);
|
|
1373
1513
|
return applyResponseEnhancer(response);
|
|
1374
1514
|
};
|
|
1375
|
-
const unsupportedVersionResponse = (params) => {
|
|
1376
|
-
const
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
message: `Request carries adcp_version="${reqAdcpVersion}" (major ${stringMajor}) and adcp_major_version=${JSON.stringify(reqAdcpMajorRaw)}; majors must agree.`,
|
|
1384
|
-
details: { supported_versions: buildSupportedVersionsList(capConfig, adcpVersion) }
|
|
1385
|
-
});
|
|
1386
|
-
}
|
|
1387
|
-
}
|
|
1388
|
-
const effectiveReqMajor = reqAdcpMajor !== void 0 && Number.isFinite(reqAdcpMajor) ? reqAdcpMajor : typeof reqAdcpVersion === "string" ? parseAdcpMajorVersion(reqAdcpVersion) : void 0;
|
|
1389
|
-
if (effectiveReqMajor !== void 0 && Number.isFinite(effectiveReqMajor)) {
|
|
1390
|
-
const supportedMajors = getAdvertisedSupportedMajors(capConfig, adcpVersion);
|
|
1391
|
-
if (!supportedMajors.has(effectiveReqMajor)) {
|
|
1392
|
-
const claimed = typeof reqAdcpVersion === "string" ? `adcp_version="${reqAdcpVersion}"` : `adcp_major_version=${JSON.stringify(reqAdcpMajorRaw)}`;
|
|
1393
|
-
const supportedList = [...supportedMajors].sort((a, b) => a - b).join(", ");
|
|
1394
|
-
return adcpError("VERSION_UNSUPPORTED", {
|
|
1395
|
-
message: `Request claims ${claimed} (major ${effectiveReqMajor}); this seller supports major ${supportedList}.`,
|
|
1396
|
-
details: { supported_versions: buildSupportedVersionsList(capConfig, adcpVersion) }
|
|
1397
|
-
});
|
|
1398
|
-
}
|
|
1515
|
+
const unsupportedVersionResponse = (toolName, params) => {
|
|
1516
|
+
const selected = selectServedAdcpRelease(params, capConfig, adcpVersion);
|
|
1517
|
+
if (isMcpToolResponse(selected)) return selected;
|
|
1518
|
+
if (!releaseDefinesTool(toolName, selected)) {
|
|
1519
|
+
return adcpError("VERSION_UNSUPPORTED", {
|
|
1520
|
+
message: `${toolName} is not defined in the selected AdCP release ${selected.validationVersion}.`,
|
|
1521
|
+
details: { supported_versions: buildSupportedVersionsList(capConfig, adcpVersion) }
|
|
1522
|
+
});
|
|
1399
1523
|
}
|
|
1400
1524
|
return void 0;
|
|
1401
1525
|
};
|
|
@@ -1414,7 +1538,7 @@ function createAdcpServer(config) {
|
|
|
1414
1538
|
};
|
|
1415
1539
|
const protocolTaskRequestValidationError = (toolName, params) => {
|
|
1416
1540
|
const accountIssues = protocolTaskAccountExtensionIssues(params);
|
|
1417
|
-
const outcome = requestValidationMode === "off" ? { valid: true, issues: [], schemaId: void 0 } : validateRequest(toolName, params, adcpVersion);
|
|
1541
|
+
const outcome = requestValidationMode === "off" ? { valid: true, issues: [], schemaId: void 0 } : validateRequest(toolName, params, requestServedRelease(params)?.validationVersion ?? adcpVersion);
|
|
1418
1542
|
const issues = [...outcome.valid ? [] : outcome.issues, ...accountIssues];
|
|
1419
1543
|
if (issues.length === 0) return void 0;
|
|
1420
1544
|
if (requestValidationMode === "strict" || accountIssues.length > 0) {
|
|
@@ -1435,9 +1559,13 @@ function createAdcpServer(config) {
|
|
|
1435
1559
|
);
|
|
1436
1560
|
return void 0;
|
|
1437
1561
|
};
|
|
1438
|
-
const protocolTaskResponseValidationError = (toolName, response) => {
|
|
1562
|
+
const protocolTaskResponseValidationError = (toolName, response, params = {}) => {
|
|
1439
1563
|
if (responseValidationMode === "off") return void 0;
|
|
1440
|
-
const outcome = validateResponse(
|
|
1564
|
+
const outcome = validateResponse(
|
|
1565
|
+
toolName,
|
|
1566
|
+
response.structuredContent,
|
|
1567
|
+
requestServedRelease(params)?.validationVersion ?? adcpVersion
|
|
1568
|
+
);
|
|
1441
1569
|
if (outcome.valid) return void 0;
|
|
1442
1570
|
logger.warn(
|
|
1443
1571
|
`Schema validation warning (response) for ${toolName}: ${formatIssues(outcome.issues, 3, { rootSchemaId: outcome.schemaId })}`,
|
|
@@ -1687,7 +1815,23 @@ function createAdcpServer(config) {
|
|
|
1687
1815
|
const hasAccount = "account" in schema.shape;
|
|
1688
1816
|
const wrap = meta?.wrap ?? ((data, summary) => genericResponse(toolName, data, summary));
|
|
1689
1817
|
const toolHandler = async (params, extra) => {
|
|
1690
|
-
const
|
|
1818
|
+
const releaseSelection = selectServedAdcpRelease(params, capConfig, adcpVersion);
|
|
1819
|
+
let releaseError;
|
|
1820
|
+
let requestRelease;
|
|
1821
|
+
if (isMcpToolResponse(releaseSelection)) {
|
|
1822
|
+
releaseError = releaseSelection;
|
|
1823
|
+
requestRelease = {
|
|
1824
|
+
validationVersion: adcpVersion,
|
|
1825
|
+
...servedAdcpVersion !== void 0 && { wireVersion: servedAdcpVersion }
|
|
1826
|
+
};
|
|
1827
|
+
} else {
|
|
1828
|
+
requestRelease = releaseSelection;
|
|
1829
|
+
}
|
|
1830
|
+
const requestErrorArms = getToolsWithErrorArm(requestRelease.validationVersion);
|
|
1831
|
+
const ctx = {
|
|
1832
|
+
store: stateStore,
|
|
1833
|
+
servedAdcpVersion: requestRelease.validationVersion
|
|
1834
|
+
};
|
|
1691
1835
|
if (extra?.authInfo) {
|
|
1692
1836
|
ctx.authInfo = extra.authInfo;
|
|
1693
1837
|
const authInfo = ctx.authInfo;
|
|
@@ -1701,13 +1845,22 @@ function createAdcpServer(config) {
|
|
|
1701
1845
|
if (webhookEmitter) ctx.emitWebhook = webhookEmitter.emit.bind(webhookEmitter);
|
|
1702
1846
|
const finalize = (response) => {
|
|
1703
1847
|
sanitizeAdcpErrorEnvelope(response);
|
|
1704
|
-
enrichErrorTwoLayer(response, toolName,
|
|
1848
|
+
enrichErrorTwoLayer(response, toolName, requestErrorArms);
|
|
1705
1849
|
normalizeMediaBuyStatusCollision(response, toolName);
|
|
1706
1850
|
injectEnvelopeStatusIntoResponse(response);
|
|
1707
1851
|
injectContextIntoResponse(response, params.context);
|
|
1708
|
-
injectVersionIntoResponse(response,
|
|
1852
|
+
injectVersionIntoResponse(response, requestRelease.wireVersion);
|
|
1709
1853
|
return applyResponseEnhancer(response);
|
|
1710
1854
|
};
|
|
1855
|
+
if (releaseError) return finalize(releaseError);
|
|
1856
|
+
if (!releaseDefinesTool(toolName, requestRelease)) {
|
|
1857
|
+
return finalize(
|
|
1858
|
+
adcpError("VERSION_UNSUPPORTED", {
|
|
1859
|
+
message: `${toolName} is not defined in the selected AdCP release ${requestRelease.validationVersion}.`,
|
|
1860
|
+
details: { supported_versions: buildSupportedVersionsList(capConfig, adcpVersion) }
|
|
1861
|
+
})
|
|
1862
|
+
);
|
|
1863
|
+
}
|
|
1711
1864
|
if (agentRegistry !== void 0) {
|
|
1712
1865
|
try {
|
|
1713
1866
|
const resolved = await agentRegistry.resolve({
|
|
@@ -1811,7 +1964,7 @@ function createAdcpServer(config) {
|
|
|
1811
1964
|
}
|
|
1812
1965
|
}
|
|
1813
1966
|
if (requestValidationMode !== "off") {
|
|
1814
|
-
const outcome = validateRequest(toolName, params,
|
|
1967
|
+
const outcome = validateRequest(toolName, params, requestRelease.validationVersion);
|
|
1815
1968
|
if (!outcome.valid) {
|
|
1816
1969
|
const issues = idempotencyDisabled && toolIsMutating ? outcome.issues.filter((i) => !(i.keyword === "required" && i.pointer === "/idempotency_key")) : outcome.issues;
|
|
1817
1970
|
if (issues.length > 0) {
|
|
@@ -2426,7 +2579,7 @@ function createAdcpServer(config) {
|
|
|
2426
2579
|
}
|
|
2427
2580
|
if (responseValidationMode !== "off" && !isErrorResponse(formatted)) {
|
|
2428
2581
|
const payload = formatted.structuredContent;
|
|
2429
|
-
const outcome = validateResponse(toolName, payload,
|
|
2582
|
+
const outcome = validateResponse(toolName, payload, requestRelease.validationVersion);
|
|
2430
2583
|
if (!outcome.valid) {
|
|
2431
2584
|
logger.warn(
|
|
2432
2585
|
`Schema validation warning (response) for ${toolName}: ${formatIssues(outcome.issues, 3, { rootSchemaId: outcome.schemaId })}`,
|
|
@@ -2594,7 +2747,7 @@ function createAdcpServer(config) {
|
|
|
2594
2747
|
if (validationError) return finalizeProtocolTaskToolResponse("get_task_status", params ?? {}, validationError);
|
|
2595
2748
|
const boundsError = protocolTaskBoundsError("get_task_status", params ?? {});
|
|
2596
2749
|
if (boundsError) return finalizeProtocolTaskToolResponse("get_task_status", params ?? {}, boundsError);
|
|
2597
|
-
const versionError = unsupportedVersionResponse(params ?? {});
|
|
2750
|
+
const versionError = unsupportedVersionResponse("get_task_status", params ?? {});
|
|
2598
2751
|
if (versionError) return finalizeProtocolTaskToolResponse("get_task_status", params ?? {}, versionError);
|
|
2599
2752
|
const taskId = typeof params?.task_id === "string" ? params.task_id : "";
|
|
2600
2753
|
const { accountId, ownerScope, error } = await resolveTaskQueryAccountId(
|
|
@@ -2668,7 +2821,7 @@ function createAdcpServer(config) {
|
|
|
2668
2821
|
if (validationError) return finalizeProtocolTaskToolResponse("list_tasks", params ?? {}, validationError);
|
|
2669
2822
|
const boundsError = protocolTaskBoundsError("list_tasks", params ?? {});
|
|
2670
2823
|
if (boundsError) return finalizeProtocolTaskToolResponse("list_tasks", params ?? {}, boundsError);
|
|
2671
|
-
const versionError = unsupportedVersionResponse(params ?? {});
|
|
2824
|
+
const versionError = unsupportedVersionResponse("list_tasks", params ?? {});
|
|
2672
2825
|
if (versionError) return finalizeProtocolTaskToolResponse("list_tasks", params ?? {}, versionError);
|
|
2673
2826
|
const { accountId, ownerScope, error } = await resolveTaskQueryAccountId(params ?? {}, extra, "list_tasks");
|
|
2674
2827
|
if (error) return finalizeProtocolTaskToolResponse("list_tasks", params ?? {}, error);
|
|
@@ -2814,6 +2967,9 @@ function createAdcpServer(config) {
|
|
|
2814
2967
|
if (protocols.includes("media_buy") || capConfig?.features) {
|
|
2815
2968
|
capabilitiesData.media_buy = {
|
|
2816
2969
|
features: {
|
|
2970
|
+
...capConfig?.features?.canonicalCreatives !== void 0 && {
|
|
2971
|
+
canonical_creatives: capConfig.features.canonicalCreatives
|
|
2972
|
+
},
|
|
2817
2973
|
inline_creative_management: capConfig?.features?.inlineCreativeManagement ?? false,
|
|
2818
2974
|
property_list_filtering: capConfig?.features?.propertyListFiltering ?? false,
|
|
2819
2975
|
content_standards: capConfig?.features?.contentStandards ?? false,
|
|
@@ -2869,6 +3025,52 @@ function createAdcpServer(config) {
|
|
|
2869
3025
|
annotations: { readOnlyHint: true }
|
|
2870
3026
|
},
|
|
2871
3027
|
(async (params, extra = {}) => {
|
|
3028
|
+
const requestParams = isPlainObject(params) ? params : {};
|
|
3029
|
+
const releaseSelection = selectServedAdcpRelease(requestParams, capConfig, adcpVersion);
|
|
3030
|
+
const release = isMcpToolResponse(releaseSelection) ? {
|
|
3031
|
+
validationVersion: adcpVersion,
|
|
3032
|
+
...servedAdcpVersion !== void 0 && { wireVersion: servedAdcpVersion }
|
|
3033
|
+
} : releaseSelection;
|
|
3034
|
+
const finalizeCapabilityResponse = (response2) => {
|
|
3035
|
+
sanitizeAdcpErrorEnvelope(response2);
|
|
3036
|
+
injectContextIntoResponse(response2, requestParams.context);
|
|
3037
|
+
injectVersionIntoResponse(response2, release.wireVersion);
|
|
3038
|
+
return applyResponseEnhancer(response2);
|
|
3039
|
+
};
|
|
3040
|
+
if (isMcpToolResponse(releaseSelection)) {
|
|
3041
|
+
return finalizeCapabilityResponse(releaseSelection);
|
|
3042
|
+
}
|
|
3043
|
+
if (!releaseDefinesTool("get_adcp_capabilities", release)) {
|
|
3044
|
+
return finalizeCapabilityResponse(
|
|
3045
|
+
adcpError("VERSION_UNSUPPORTED", {
|
|
3046
|
+
message: `get_adcp_capabilities is not defined in the selected AdCP release ${release.validationVersion}.`,
|
|
3047
|
+
details: { supported_versions: buildSupportedVersionsList(capConfig, adcpVersion) }
|
|
3048
|
+
})
|
|
3049
|
+
);
|
|
3050
|
+
}
|
|
3051
|
+
if (requestValidationMode !== "off") {
|
|
3052
|
+
const requestOutcome = validateRequest("get_adcp_capabilities", requestParams, release.validationVersion);
|
|
3053
|
+
if (!requestOutcome.valid) {
|
|
3054
|
+
logger.warn(
|
|
3055
|
+
`Schema validation warning (request) for get_adcp_capabilities: ${formatIssues(requestOutcome.issues, 3, { rootSchemaId: requestOutcome.schemaId })}`,
|
|
3056
|
+
{
|
|
3057
|
+
tool: "get_adcp_capabilities",
|
|
3058
|
+
issues: requestOutcome.issues
|
|
3059
|
+
}
|
|
3060
|
+
);
|
|
3061
|
+
if (requestValidationMode === "strict") {
|
|
3062
|
+
return finalizeCapabilityResponse(
|
|
3063
|
+
adcpError(
|
|
3064
|
+
"VALIDATION_ERROR",
|
|
3065
|
+
buildAdcpValidationErrorPayload("get_adcp_capabilities", "request", requestOutcome.issues, {
|
|
3066
|
+
exposeSchemaPath: exposeErrorDetails,
|
|
3067
|
+
rootSchemaId: requestOutcome.schemaId
|
|
3068
|
+
})
|
|
3069
|
+
)
|
|
3070
|
+
);
|
|
3071
|
+
}
|
|
3072
|
+
}
|
|
3073
|
+
}
|
|
2872
3074
|
if (agentRegistry !== void 0 && extra.authInfo !== void 0) {
|
|
2873
3075
|
const authInfo = extra.authInfo;
|
|
2874
3076
|
const inboundCredential = authInfo.extra?.credential;
|
|
@@ -2880,28 +3082,77 @@ function createAdcpServer(config) {
|
|
|
2880
3082
|
input: params
|
|
2881
3083
|
});
|
|
2882
3084
|
if (resolved?.status === "suspended" || resolved?.status === "blocked") {
|
|
2883
|
-
return
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
3085
|
+
return finalizeCapabilityResponse(
|
|
3086
|
+
adcpError(resolved.status === "suspended" ? "AGENT_SUSPENDED" : "AGENT_BLOCKED", {
|
|
3087
|
+
message: resolved.status === "suspended" ? "Buyer agent is suspended. Contact the seller to restore access." : "Buyer agent is blocked.",
|
|
3088
|
+
recovery: "terminal"
|
|
3089
|
+
})
|
|
3090
|
+
);
|
|
2887
3091
|
}
|
|
2888
3092
|
} catch (err) {
|
|
2889
3093
|
logger.warn("Buyer-agent registry resolution failed for get_adcp_capabilities", {
|
|
2890
3094
|
error: err instanceof Error ? redactCredentialPatterns(err.message) : redactCredentialPatterns(String(err))
|
|
2891
3095
|
});
|
|
2892
|
-
return
|
|
2893
|
-
|
|
2894
|
-
|
|
2895
|
-
|
|
3096
|
+
return finalizeCapabilityResponse(
|
|
3097
|
+
adcpError("SERVICE_UNAVAILABLE", {
|
|
3098
|
+
message: "Buyer-agent registry is unavailable",
|
|
3099
|
+
recovery: "transient"
|
|
3100
|
+
})
|
|
3101
|
+
);
|
|
2896
3102
|
}
|
|
2897
3103
|
}
|
|
2898
|
-
const data = {
|
|
2899
|
-
|
|
3104
|
+
const data = {
|
|
3105
|
+
...capabilitiesData,
|
|
3106
|
+
adcp: { ...capabilitiesData.adcp },
|
|
3107
|
+
...capabilitiesData.media_buy !== void 0 && {
|
|
3108
|
+
media_buy: {
|
|
3109
|
+
...capabilitiesData.media_buy,
|
|
3110
|
+
features: { ...capabilitiesData.media_buy.features }
|
|
3111
|
+
}
|
|
3112
|
+
}
|
|
3113
|
+
};
|
|
3114
|
+
const selected = parseAdcpRelease(release.validationVersion);
|
|
3115
|
+
if (selected !== void 0 && (selected.major < 3 || selected.major === 3 && selected.minor < 1)) {
|
|
3116
|
+
delete data.adcp.supported_versions;
|
|
3117
|
+
if (data.media_buy?.features !== void 0) {
|
|
3118
|
+
delete data.media_buy.features.canonical_creatives;
|
|
3119
|
+
}
|
|
3120
|
+
delete data.library_version;
|
|
3121
|
+
}
|
|
3122
|
+
const ctx = requestParams.context;
|
|
2900
3123
|
if (ctx !== null && typeof ctx === "object" && !Array.isArray(ctx)) {
|
|
2901
3124
|
data.context = ctx;
|
|
2902
3125
|
}
|
|
2903
3126
|
const response = capabilitiesResponse(data);
|
|
2904
|
-
injectVersionIntoResponse(response,
|
|
3127
|
+
injectVersionIntoResponse(response, release.wireVersion);
|
|
3128
|
+
if (responseValidationMode !== "off" && data.supported_protocols.length > 0) {
|
|
3129
|
+
const responseOutcome = validateResponse(
|
|
3130
|
+
"get_adcp_capabilities",
|
|
3131
|
+
response.structuredContent,
|
|
3132
|
+
release.validationVersion
|
|
3133
|
+
);
|
|
3134
|
+
if (!responseOutcome.valid) {
|
|
3135
|
+
logger.warn(
|
|
3136
|
+
`Schema validation warning (response) for get_adcp_capabilities: ${formatIssues(responseOutcome.issues, 3, { rootSchemaId: responseOutcome.schemaId })}`,
|
|
3137
|
+
{
|
|
3138
|
+
tool: "get_adcp_capabilities",
|
|
3139
|
+
issues: responseOutcome.issues,
|
|
3140
|
+
variant: responseOutcome.variant
|
|
3141
|
+
}
|
|
3142
|
+
);
|
|
3143
|
+
if (responseValidationMode === "strict") {
|
|
3144
|
+
return finalizeCapabilityResponse(
|
|
3145
|
+
adcpError(
|
|
3146
|
+
"VALIDATION_ERROR",
|
|
3147
|
+
buildAdcpValidationErrorPayload("get_adcp_capabilities", "response", responseOutcome.issues, {
|
|
3148
|
+
exposeSchemaPath: exposeErrorDetails,
|
|
3149
|
+
rootSchemaId: responseOutcome.schemaId
|
|
3150
|
+
})
|
|
3151
|
+
)
|
|
3152
|
+
);
|
|
3153
|
+
}
|
|
3154
|
+
}
|
|
3155
|
+
}
|
|
2905
3156
|
return applyResponseEnhancer(response);
|
|
2906
3157
|
})
|
|
2907
3158
|
);
|