@adcp/sdk 12.0.0 → 12.0.1
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/dist/lib/adapters/content-standards-adapter.mjs +0 -6
- package/dist/lib/adapters/content-standards-adapter.mjs.map +1 -1
- package/dist/lib/adapters/derived-account-store.mjs +0 -6
- package/dist/lib/adapters/derived-account-store.mjs.map +1 -1
- package/dist/lib/adapters/governance-adapter.mjs +0 -6
- package/dist/lib/adapters/governance-adapter.mjs.map +1 -1
- package/dist/lib/adapters/implicit-account-store.mjs +0 -6
- package/dist/lib/adapters/implicit-account-store.mjs.map +1 -1
- package/dist/lib/adapters/index.mjs +0 -6
- package/dist/lib/adapters/index.mjs.map +1 -1
- package/dist/lib/adapters/legacy/v2-5/create_media_buy.mjs +0 -6
- package/dist/lib/adapters/legacy/v2-5/create_media_buy.mjs.map +1 -1
- package/dist/lib/adapters/legacy/v2-5/get_products.mjs +0 -6
- package/dist/lib/adapters/legacy/v2-5/get_products.mjs.map +1 -1
- package/dist/lib/adapters/legacy/v2-5/index.mjs +0 -6
- package/dist/lib/adapters/legacy/v2-5/index.mjs.map +1 -1
- package/dist/lib/adapters/legacy/v2-5/list_creative_formats.mjs +0 -6
- package/dist/lib/adapters/legacy/v2-5/list_creative_formats.mjs.map +1 -1
- package/dist/lib/adapters/legacy/v2-5/preview_creative.mjs +0 -6
- package/dist/lib/adapters/legacy/v2-5/preview_creative.mjs.map +1 -1
- package/dist/lib/adapters/legacy/v2-5/sync_creatives.mjs +0 -6
- package/dist/lib/adapters/legacy/v2-5/sync_creatives.mjs.map +1 -1
- package/dist/lib/adapters/legacy/v2-5/types.mjs +0 -6
- package/dist/lib/adapters/legacy/v2-5/update_media_buy.mjs +0 -6
- package/dist/lib/adapters/legacy/v2-5/update_media_buy.mjs.map +1 -1
- package/dist/lib/adapters/oauth-passthrough-resolver.mjs +0 -6
- package/dist/lib/adapters/oauth-passthrough-resolver.mjs.map +1 -1
- package/dist/lib/adapters/property-list-adapter.mjs +0 -6
- package/dist/lib/adapters/property-list-adapter.mjs.map +1 -1
- package/dist/lib/adapters/roster-account-store.mjs +0 -6
- package/dist/lib/adapters/roster-account-store.mjs.map +1 -1
- package/dist/lib/adapters/si-session-manager.mjs +0 -6
- package/dist/lib/adapters/si-session-manager.mjs.map +1 -1
- package/dist/lib/adapters/version/3.0/brand-fields.mjs +0 -6
- package/dist/lib/adapters/version/3.0/brand-fields.mjs.map +1 -1
- package/dist/lib/adapters/version/3.0/get-products.mjs +0 -6
- package/dist/lib/adapters/version/3.0/get-products.mjs.map +1 -1
- package/dist/lib/adapters/version/3.0/index.mjs +0 -6
- package/dist/lib/adapters/version/3.0/index.mjs.map +1 -1
- package/dist/lib/adapters/version/3.0/sync-accounts.mjs +0 -6
- package/dist/lib/adapters/version/3.0/sync-accounts.mjs.map +1 -1
- package/dist/lib/adapters/version/index.mjs +0 -6
- package/dist/lib/adapters/version/index.mjs.map +1 -1
- package/dist/lib/adapters/version/types.mjs +0 -6
- package/dist/lib/advanced.mjs +0 -6
- package/dist/lib/advanced.mjs.map +1 -1
- package/dist/lib/agents/index.generated.mjs +0 -6
- package/dist/lib/agents/index.generated.mjs.map +1 -1
- package/dist/lib/auth/index.mjs +0 -6
- package/dist/lib/auth/index.mjs.map +1 -1
- package/dist/lib/auth/oauth/CLIFlowHandler.mjs +0 -6
- package/dist/lib/auth/oauth/CLIFlowHandler.mjs.map +1 -1
- package/dist/lib/auth/oauth/ClientCredentialsFlow.mjs +0 -6
- package/dist/lib/auth/oauth/ClientCredentialsFlow.mjs.map +1 -1
- package/dist/lib/auth/oauth/MCPOAuthProvider.mjs +0 -6
- package/dist/lib/auth/oauth/MCPOAuthProvider.mjs.map +1 -1
- package/dist/lib/auth/oauth/NonInteractiveFlowHandler.mjs +0 -6
- package/dist/lib/auth/oauth/NonInteractiveFlowHandler.mjs.map +1 -1
- package/dist/lib/auth/oauth/authorization-required.mjs +0 -6
- package/dist/lib/auth/oauth/authorization-required.mjs.map +1 -1
- package/dist/lib/auth/oauth/diagnose.mjs +0 -6
- package/dist/lib/auth/oauth/diagnose.mjs.map +1 -1
- package/dist/lib/auth/oauth/diagnostics.mjs +0 -6
- package/dist/lib/auth/oauth/diagnostics.mjs.map +1 -1
- package/dist/lib/auth/oauth/discovery.mjs +0 -6
- package/dist/lib/auth/oauth/discovery.mjs.map +1 -1
- package/dist/lib/auth/oauth/file-storage.mjs +0 -6
- package/dist/lib/auth/oauth/file-storage.mjs.map +1 -1
- package/dist/lib/auth/oauth/index.mjs +0 -6
- package/dist/lib/auth/oauth/index.mjs.map +1 -1
- package/dist/lib/auth/oauth/secret-resolver.mjs +0 -6
- package/dist/lib/auth/oauth/secret-resolver.mjs.map +1 -1
- package/dist/lib/auth/oauth/storage-registry.mjs +0 -6
- package/dist/lib/auth/oauth/storage-registry.mjs.map +1 -1
- package/dist/lib/auth/oauth/types.mjs +0 -6
- package/dist/lib/auth/oauth/types.mjs.map +1 -1
- package/dist/lib/auth/oauth/web-flow.mjs +0 -6
- package/dist/lib/auth/oauth/web-flow.mjs.map +1 -1
- package/dist/lib/brand/index.mjs +0 -6
- package/dist/lib/brand/index.mjs.map +1 -1
- package/dist/lib/canonical-references/index.mjs +6 -7
- package/dist/lib/canonical-references/index.mjs.map +1 -1
- package/dist/lib/client/index.mjs +0 -6
- package/dist/lib/client/index.mjs.map +1 -1
- package/dist/lib/compliance/index.mjs +0 -6
- package/dist/lib/compliance/index.mjs.map +1 -1
- package/dist/lib/compliance-fixtures/index.mjs +0 -6
- package/dist/lib/compliance-fixtures/index.mjs.map +1 -1
- package/dist/lib/compliance-fixtures/test-authorization-server.mjs +0 -6
- package/dist/lib/compliance-fixtures/test-authorization-server.mjs.map +1 -1
- package/dist/lib/conformance/index.mjs +0 -6
- package/dist/lib/conformance/index.mjs.map +1 -1
- package/dist/lib/conformance/invariants/uniformError.mjs +0 -6
- package/dist/lib/conformance/invariants/uniformError.mjs.map +1 -1
- package/dist/lib/conformance/invariants/uniformErrorComparator.mjs +0 -6
- package/dist/lib/conformance/invariants/uniformErrorComparator.mjs.map +1 -1
- package/dist/lib/conformance/oracle.mjs +0 -6
- package/dist/lib/conformance/oracle.mjs.map +1 -1
- package/dist/lib/conformance/runConformance.mjs +0 -6
- package/dist/lib/conformance/runConformance.mjs.map +1 -1
- package/dist/lib/conformance/runners.mjs +0 -6
- package/dist/lib/conformance/runners.mjs.map +1 -1
- package/dist/lib/conformance/schemaArbitrary.mjs +0 -6
- package/dist/lib/conformance/schemaArbitrary.mjs.map +1 -1
- package/dist/lib/conformance/schemaLoader.mjs +5 -6
- package/dist/lib/conformance/schemaLoader.mjs.map +1 -1
- package/dist/lib/conformance/seeder.mjs +0 -6
- package/dist/lib/conformance/seeder.mjs.map +1 -1
- package/dist/lib/conformance/types.mjs +0 -6
- package/dist/lib/conformance/types.mjs.map +1 -1
- package/dist/lib/conformance/webhook.mjs +0 -6
- package/dist/lib/conformance/webhook.mjs.map +1 -1
- package/dist/lib/core/ADCPMultiAgentClient.mjs +0 -6
- package/dist/lib/core/ADCPMultiAgentClient.mjs.map +1 -1
- package/dist/lib/core/AgentClient.mjs +0 -6
- package/dist/lib/core/AgentClient.mjs.map +1 -1
- package/dist/lib/core/AsyncHandler.mjs +0 -6
- package/dist/lib/core/AsyncHandler.mjs.map +1 -1
- package/dist/lib/core/ConfigurationManager.mjs +0 -6
- package/dist/lib/core/ConfigurationManager.mjs.map +1 -1
- package/dist/lib/core/ConversationTypes.mjs +0 -6
- package/dist/lib/core/CreativeAgentClient.mjs +0 -6
- package/dist/lib/core/CreativeAgentClient.mjs.map +1 -1
- package/dist/lib/core/GovernanceMiddleware.mjs +0 -6
- package/dist/lib/core/GovernanceMiddleware.mjs.map +1 -1
- package/dist/lib/core/GovernanceTypes.mjs +0 -6
- package/dist/lib/core/GovernanceTypes.mjs.map +1 -1
- package/dist/lib/core/ProtocolResponseParser.mjs +0 -6
- package/dist/lib/core/ProtocolResponseParser.mjs.map +1 -1
- package/dist/lib/core/ResponseValidator.mjs +0 -6
- package/dist/lib/core/ResponseValidator.mjs.map +1 -1
- package/dist/lib/core/SingleAgentClient.mjs +0 -6
- package/dist/lib/core/SingleAgentClient.mjs.map +1 -1
- package/dist/lib/core/TaskEventTypes.mjs +0 -6
- package/dist/lib/core/TaskEventTypes.mjs.map +1 -1
- package/dist/lib/core/TaskExecutor.mjs +0 -6
- package/dist/lib/core/TaskExecutor.mjs.map +1 -1
- package/dist/lib/core/match.mjs +0 -6
- package/dist/lib/core/match.mjs.map +1 -1
- package/dist/lib/core/task-status.mjs +0 -6
- package/dist/lib/core/task-status.mjs.map +1 -1
- package/dist/lib/core/webhook-url.mjs +0 -6
- package/dist/lib/core/webhook-url.mjs.map +1 -1
- package/dist/lib/discovery/adagents-redirects.mjs +0 -6
- package/dist/lib/discovery/adagents-redirects.mjs.map +1 -1
- package/dist/lib/discovery/agent-directory.mjs +0 -6
- package/dist/lib/discovery/agent-directory.mjs.map +1 -1
- package/dist/lib/discovery/inline-publisher-properties.mjs +0 -6
- package/dist/lib/discovery/inline-publisher-properties.mjs.map +1 -1
- package/dist/lib/discovery/network-consistency-checker.mjs +0 -6
- package/dist/lib/discovery/network-consistency-checker.mjs.map +1 -1
- package/dist/lib/discovery/property-crawler.mjs +0 -6
- package/dist/lib/discovery/property-crawler.mjs.map +1 -1
- package/dist/lib/discovery/property-index.mjs +0 -6
- package/dist/lib/discovery/property-index.mjs.map +1 -1
- package/dist/lib/discovery/publisher-property-selector.mjs +0 -6
- package/dist/lib/discovery/publisher-property-selector.mjs.map +1 -1
- package/dist/lib/discovery/resolve-agent-properties.mjs +0 -6
- package/dist/lib/discovery/resolve-agent-properties.mjs.map +1 -1
- package/dist/lib/discovery/types.mjs +0 -6
- package/dist/lib/discovery/validate-adagents.mjs +0 -6
- package/dist/lib/discovery/validate-adagents.mjs.map +1 -1
- package/dist/lib/enums.mjs +0 -6
- package/dist/lib/enums.mjs.map +1 -1
- package/dist/lib/errors/index.mjs +0 -6
- package/dist/lib/errors/index.mjs.map +1 -1
- package/dist/lib/express-mcp/index.mjs +0 -6
- package/dist/lib/express-mcp/index.mjs.map +1 -1
- package/dist/lib/governance/index.mjs +0 -6
- package/dist/lib/governance/index.mjs.map +1 -1
- package/dist/lib/handlers/types.mjs +0 -6
- package/dist/lib/handlers/types.mjs.map +1 -1
- package/dist/lib/index.mjs +0 -6
- package/dist/lib/index.mjs.map +1 -1
- package/dist/lib/media-buy/available-actions.mjs +0 -6
- package/dist/lib/media-buy/available-actions.mjs.map +1 -1
- package/dist/lib/media-buy/index.mjs +0 -6
- package/dist/lib/media-buy/index.mjs.map +1 -1
- package/dist/lib/media-buy/preflight.mjs +0 -6
- package/dist/lib/media-buy/preflight.mjs.map +1 -1
- package/dist/lib/media-buy/property-policy.mjs +0 -6
- package/dist/lib/media-buy/property-policy.mjs.map +1 -1
- package/dist/lib/media-buy/types.mjs +0 -6
- package/dist/lib/media-buy/types.mjs.map +1 -1
- package/dist/lib/media-buy/update-fields.generated.mjs +0 -6
- package/dist/lib/media-buy/update-fields.generated.mjs.map +1 -1
- package/dist/lib/mock-server/creative-ad-server/seed-data.mjs +0 -6
- package/dist/lib/mock-server/creative-ad-server/seed-data.mjs.map +1 -1
- package/dist/lib/mock-server/creative-ad-server/server.mjs +0 -6
- package/dist/lib/mock-server/creative-ad-server/server.mjs.map +1 -1
- package/dist/lib/mock-server/creative-template/seed-data.mjs +0 -6
- package/dist/lib/mock-server/creative-template/seed-data.mjs.map +1 -1
- package/dist/lib/mock-server/creative-template/server.mjs +0 -6
- package/dist/lib/mock-server/creative-template/server.mjs.map +1 -1
- package/dist/lib/mock-server/index.mjs +0 -6
- package/dist/lib/mock-server/index.mjs.map +1 -1
- package/dist/lib/mock-server/sales-guaranteed/recipe.mjs +0 -6
- package/dist/lib/mock-server/sales-guaranteed/recipe.mjs.map +1 -1
- package/dist/lib/mock-server/sales-guaranteed/seed-data.mjs +0 -6
- package/dist/lib/mock-server/sales-guaranteed/seed-data.mjs.map +1 -1
- package/dist/lib/mock-server/sales-guaranteed/server.mjs +0 -6
- package/dist/lib/mock-server/sales-guaranteed/server.mjs.map +1 -1
- package/dist/lib/mock-server/sales-non-guaranteed/recipe.mjs +0 -6
- package/dist/lib/mock-server/sales-non-guaranteed/recipe.mjs.map +1 -1
- package/dist/lib/mock-server/sales-non-guaranteed/seed-data.mjs +0 -6
- package/dist/lib/mock-server/sales-non-guaranteed/seed-data.mjs.map +1 -1
- package/dist/lib/mock-server/sales-non-guaranteed/server.mjs +0 -6
- package/dist/lib/mock-server/sales-non-guaranteed/server.mjs.map +1 -1
- package/dist/lib/mock-server/sales-social/seed-data.mjs +0 -6
- package/dist/lib/mock-server/sales-social/seed-data.mjs.map +1 -1
- package/dist/lib/mock-server/sales-social/server.mjs +0 -6
- package/dist/lib/mock-server/sales-social/server.mjs.map +1 -1
- package/dist/lib/mock-server/scenario.mjs +0 -6
- package/dist/lib/mock-server/scenario.mjs.map +1 -1
- package/dist/lib/mock-server/signal-marketplace/seed-data.mjs +0 -6
- package/dist/lib/mock-server/signal-marketplace/seed-data.mjs.map +1 -1
- package/dist/lib/mock-server/signal-marketplace/server.mjs +0 -6
- package/dist/lib/mock-server/signal-marketplace/server.mjs.map +1 -1
- package/dist/lib/mock-server/sponsored-intelligence/seed-data.mjs +0 -6
- package/dist/lib/mock-server/sponsored-intelligence/seed-data.mjs.map +1 -1
- package/dist/lib/mock-server/sponsored-intelligence/server.mjs +0 -6
- package/dist/lib/mock-server/sponsored-intelligence/server.mjs.map +1 -1
- package/dist/lib/net/address-guards.mjs +0 -6
- package/dist/lib/net/address-guards.mjs.map +1 -1
- package/dist/lib/net/index.mjs +0 -6
- package/dist/lib/net/index.mjs.map +1 -1
- package/dist/lib/net/ssrf-fetch.mjs +0 -6
- package/dist/lib/net/ssrf-fetch.mjs.map +1 -1
- package/dist/lib/observability/index.mjs +0 -6
- package/dist/lib/observability/index.mjs.map +1 -1
- package/dist/lib/observability/tracing.mjs +6 -7
- package/dist/lib/observability/tracing.mjs.map +1 -1
- package/dist/lib/protocols/a2a.mjs +0 -6
- package/dist/lib/protocols/a2a.mjs.map +1 -1
- package/dist/lib/protocols/abort.mjs +0 -6
- package/dist/lib/protocols/abort.mjs.map +1 -1
- package/dist/lib/protocols/index.mjs +0 -6
- package/dist/lib/protocols/index.mjs.map +1 -1
- package/dist/lib/protocols/mcp-modern.mjs +0 -6
- package/dist/lib/protocols/mcp-modern.mjs.map +1 -1
- package/dist/lib/protocols/mcp-tasks.mjs +0 -6
- package/dist/lib/protocols/mcp-tasks.mjs.map +1 -1
- package/dist/lib/protocols/mcp.mjs +0 -6
- package/dist/lib/protocols/mcp.mjs.map +1 -1
- package/dist/lib/protocols/rawResponseCapture.mjs +0 -6
- package/dist/lib/protocols/rawResponseCapture.mjs.map +1 -1
- package/dist/lib/protocols/responseSizeLimit.mjs +0 -6
- package/dist/lib/protocols/responseSizeLimit.mjs.map +1 -1
- package/dist/lib/protocols/transportDiagnostics.mjs +0 -6
- package/dist/lib/protocols/transportDiagnostics.mjs.map +1 -1
- package/dist/lib/registry/cursor-store.mjs +0 -6
- package/dist/lib/registry/cursor-store.mjs.map +1 -1
- package/dist/lib/registry/feed-stream.mjs +0 -6
- package/dist/lib/registry/feed-stream.mjs.map +1 -1
- package/dist/lib/registry/index.mjs +0 -6
- package/dist/lib/registry/index.mjs.map +1 -1
- package/dist/lib/registry/property-registry.mjs +0 -6
- package/dist/lib/registry/property-registry.mjs.map +1 -1
- package/dist/lib/registry/sync.mjs +0 -6
- package/dist/lib/registry/sync.mjs.map +1 -1
- package/dist/lib/registry/types.generated.mjs +0 -6
- package/dist/lib/registry/types.mjs +0 -6
- package/dist/lib/schemas/index.mjs +0 -6
- package/dist/lib/schemas/index.mjs.map +1 -1
- package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
- package/dist/lib/server/a2a-adapter.mjs +0 -6
- package/dist/lib/server/a2a-adapter.mjs.map +1 -1
- package/dist/lib/server/account-mode.mjs +0 -6
- package/dist/lib/server/account-mode.mjs.map +1 -1
- package/dist/lib/server/adcp-server.mjs +0 -6
- package/dist/lib/server/adcp-server.mjs.map +1 -1
- package/dist/lib/server/auth-introspection.mjs +0 -6
- package/dist/lib/server/auth-introspection.mjs.map +1 -1
- package/dist/lib/server/auth-signature.mjs +0 -6
- package/dist/lib/server/auth-signature.mjs.map +1 -1
- package/dist/lib/server/auth.mjs +0 -6
- package/dist/lib/server/auth.mjs.map +1 -1
- package/dist/lib/server/create-adcp-server.mjs +0 -6
- package/dist/lib/server/create-adcp-server.mjs.map +1 -1
- package/dist/lib/server/credential-policy.mjs +0 -6
- package/dist/lib/server/credential-policy.mjs.map +1 -1
- package/dist/lib/server/ctx-metadata/backends/memory.mjs +0 -6
- package/dist/lib/server/ctx-metadata/backends/memory.mjs.map +1 -1
- package/dist/lib/server/ctx-metadata/backends/pg.mjs +0 -6
- package/dist/lib/server/ctx-metadata/backends/pg.mjs.map +1 -1
- package/dist/lib/server/ctx-metadata/backends/redis.mjs +0 -6
- package/dist/lib/server/ctx-metadata/backends/redis.mjs.map +1 -1
- package/dist/lib/server/ctx-metadata/index.mjs +0 -6
- package/dist/lib/server/ctx-metadata/index.mjs.map +1 -1
- package/dist/lib/server/ctx-metadata/store.mjs +0 -6
- package/dist/lib/server/ctx-metadata/store.mjs.map +1 -1
- package/dist/lib/server/ctx-metadata/wire-shape.mjs +0 -6
- package/dist/lib/server/ctx-metadata/wire-shape.mjs.map +1 -1
- package/dist/lib/server/decisioning/account.mjs +0 -6
- package/dist/lib/server/decisioning/account.mjs.map +1 -1
- package/dist/lib/server/decisioning/admin-router.mjs +0 -6
- package/dist/lib/server/decisioning/admin-router.mjs.map +1 -1
- package/dist/lib/server/decisioning/assembly-helpers.mjs +0 -6
- package/dist/lib/server/decisioning/assembly-helpers.mjs.map +1 -1
- package/dist/lib/server/decisioning/async-outcome.mjs +0 -6
- package/dist/lib/server/decisioning/async-outcome.mjs.map +1 -1
- package/dist/lib/server/decisioning/buyer-agent.mjs +0 -6
- package/dist/lib/server/decisioning/buyer-agent.mjs.map +1 -1
- package/dist/lib/server/decisioning/capabilities.mjs +0 -6
- package/dist/lib/server/decisioning/capabilities.mjs.map +1 -1
- package/dist/lib/server/decisioning/compose.mjs +0 -6
- package/dist/lib/server/decisioning/compose.mjs.map +1 -1
- package/dist/lib/server/decisioning/context.mjs +0 -6
- package/dist/lib/server/decisioning/errors-typed.mjs +0 -6
- package/dist/lib/server/decisioning/errors-typed.mjs.map +1 -1
- package/dist/lib/server/decisioning/helpers.mjs +0 -6
- package/dist/lib/server/decisioning/helpers.mjs.map +1 -1
- package/dist/lib/server/decisioning/index.mjs +0 -6
- package/dist/lib/server/decisioning/index.mjs.map +1 -1
- package/dist/lib/server/decisioning/list-helpers.mjs +0 -6
- package/dist/lib/server/decisioning/list-helpers.mjs.map +1 -1
- package/dist/lib/server/decisioning/manifest-helpers.mjs +0 -6
- package/dist/lib/server/decisioning/manifest-helpers.mjs.map +1 -1
- package/dist/lib/server/decisioning/pagination.mjs +0 -6
- package/dist/lib/server/decisioning/platform-helpers.mjs +0 -6
- package/dist/lib/server/decisioning/platform-helpers.mjs.map +1 -1
- package/dist/lib/server/decisioning/platform.mjs +0 -6
- package/dist/lib/server/decisioning/proposal/dispatch.mjs +0 -6
- package/dist/lib/server/decisioning/proposal/dispatch.mjs.map +1 -1
- package/dist/lib/server/decisioning/proposal/index.mjs +0 -6
- package/dist/lib/server/decisioning/proposal/index.mjs.map +1 -1
- package/dist/lib/server/decisioning/proposal/lifecycle.mjs +0 -6
- package/dist/lib/server/decisioning/proposal/lifecycle.mjs.map +1 -1
- package/dist/lib/server/decisioning/proposal/mock-manager.mjs +0 -6
- package/dist/lib/server/decisioning/proposal/mock-manager.mjs.map +1 -1
- package/dist/lib/server/decisioning/proposal/store.mjs +0 -6
- package/dist/lib/server/decisioning/proposal/store.mjs.map +1 -1
- package/dist/lib/server/decisioning/proposal/types.mjs +0 -6
- package/dist/lib/server/decisioning/proposal/types.mjs.map +1 -1
- package/dist/lib/server/decisioning/resolve-presets.mjs +0 -6
- package/dist/lib/server/decisioning/resolve-presets.mjs.map +1 -1
- package/dist/lib/server/decisioning/runtime/entity-hydration.generated.mjs +0 -6
- package/dist/lib/server/decisioning/runtime/entity-hydration.generated.mjs.map +1 -1
- package/dist/lib/server/decisioning/runtime/from-platform.mjs +0 -6
- package/dist/lib/server/decisioning/runtime/from-platform.mjs.map +1 -1
- package/dist/lib/server/decisioning/runtime/observed-modes.mjs +0 -6
- package/dist/lib/server/decisioning/runtime/observed-modes.mjs.map +1 -1
- package/dist/lib/server/decisioning/runtime/postgres-task-registry.mjs +0 -6
- package/dist/lib/server/decisioning/runtime/postgres-task-registry.mjs.map +1 -1
- package/dist/lib/server/decisioning/runtime/protocol-for-tool.mjs +0 -6
- package/dist/lib/server/decisioning/runtime/protocol-for-tool.mjs.map +1 -1
- package/dist/lib/server/decisioning/runtime/task-registry.mjs +0 -6
- package/dist/lib/server/decisioning/runtime/task-registry.mjs.map +1 -1
- package/dist/lib/server/decisioning/runtime/to-context.mjs +0 -6
- package/dist/lib/server/decisioning/runtime/to-context.mjs.map +1 -1
- package/dist/lib/server/decisioning/runtime/validate-platform.mjs +0 -6
- package/dist/lib/server/decisioning/runtime/validate-platform.mjs.map +1 -1
- package/dist/lib/server/decisioning/specialisms/audiences.mjs +0 -6
- package/dist/lib/server/decisioning/specialisms/brand-rights.mjs +0 -6
- package/dist/lib/server/decisioning/specialisms/campaign-governance.mjs +0 -6
- package/dist/lib/server/decisioning/specialisms/content-standards.mjs +0 -6
- package/dist/lib/server/decisioning/specialisms/creative-ad-server.mjs +0 -6
- package/dist/lib/server/decisioning/specialisms/creative.mjs +0 -6
- package/dist/lib/server/decisioning/specialisms/lists.mjs +0 -6
- package/dist/lib/server/decisioning/specialisms/sales.mjs +0 -6
- package/dist/lib/server/decisioning/specialisms/signals.mjs +0 -6
- package/dist/lib/server/decisioning/specialisms/sponsored-intelligence.mjs +0 -6
- package/dist/lib/server/decisioning/start-time.mjs +0 -6
- package/dist/lib/server/decisioning/start-time.mjs.map +1 -1
- package/dist/lib/server/decisioning/status-changes.mjs +0 -6
- package/dist/lib/server/decisioning/status-changes.mjs.map +1 -1
- package/dist/lib/server/decisioning/status-mappers.mjs +0 -6
- package/dist/lib/server/decisioning/status-mappers.mjs.map +1 -1
- package/dist/lib/server/decisioning/tenant-registry.mjs +0 -6
- package/dist/lib/server/decisioning/tenant-registry.mjs.map +1 -1
- package/dist/lib/server/decisioning/tenant-store.mjs +0 -6
- package/dist/lib/server/decisioning/tenant-store.mjs.map +1 -1
- package/dist/lib/server/decisioning/validate-specialisms.mjs +0 -6
- package/dist/lib/server/decisioning/validate-specialisms.mjs.map +1 -1
- package/dist/lib/server/dynamic-registry.mjs +0 -6
- package/dist/lib/server/dynamic-registry.mjs.map +1 -1
- package/dist/lib/server/envelope-allowlist.mjs +0 -6
- package/dist/lib/server/envelope-allowlist.mjs.map +1 -1
- package/dist/lib/server/error-arm-tools.mjs +5 -6
- package/dist/lib/server/error-arm-tools.mjs.map +1 -1
- package/dist/lib/server/errors.mjs +0 -6
- package/dist/lib/server/errors.mjs.map +1 -1
- package/dist/lib/server/example-tld-guard.mjs +0 -6
- package/dist/lib/server/example-tld-guard.mjs.map +1 -1
- package/dist/lib/server/express-adapter.mjs +0 -6
- package/dist/lib/server/express-adapter.mjs.map +1 -1
- package/dist/lib/server/governance.mjs +0 -6
- package/dist/lib/server/governance.mjs.map +1 -1
- package/dist/lib/server/idempotency/backends/lazy.mjs +0 -6
- package/dist/lib/server/idempotency/backends/lazy.mjs.map +1 -1
- package/dist/lib/server/idempotency/backends/memory.mjs +0 -6
- package/dist/lib/server/idempotency/backends/memory.mjs.map +1 -1
- package/dist/lib/server/idempotency/backends/pg.mjs +0 -6
- package/dist/lib/server/idempotency/backends/pg.mjs.map +1 -1
- package/dist/lib/server/idempotency/backends/redis.mjs +0 -6
- package/dist/lib/server/idempotency/backends/redis.mjs.map +1 -1
- package/dist/lib/server/idempotency/index.mjs +0 -6
- package/dist/lib/server/idempotency/index.mjs.map +1 -1
- package/dist/lib/server/idempotency/store.mjs +0 -6
- package/dist/lib/server/idempotency/store.mjs.map +1 -1
- package/dist/lib/server/index.mjs +0 -6
- package/dist/lib/server/index.mjs.map +1 -1
- package/dist/lib/server/legacy/v5/index.mjs +0 -6
- package/dist/lib/server/legacy/v5/index.mjs.map +1 -1
- package/dist/lib/server/mcp-modern-server.mjs +0 -6
- package/dist/lib/server/mcp-modern-server.mjs.map +1 -1
- package/dist/lib/server/media-buy-actions.mjs +0 -6
- package/dist/lib/server/media-buy-actions.mjs.map +1 -1
- package/dist/lib/server/media-buy-helpers.mjs +0 -6
- package/dist/lib/server/media-buy-helpers.mjs.map +1 -1
- package/dist/lib/server/media-buy-store.mjs +0 -6
- package/dist/lib/server/media-buy-store.mjs.map +1 -1
- package/dist/lib/server/normalize-errors.mjs +0 -6
- package/dist/lib/server/normalize-errors.mjs.map +1 -1
- package/dist/lib/server/operational-platform.mjs +0 -6
- package/dist/lib/server/operational-platform.mjs.map +1 -1
- package/dist/lib/server/pick-safe-details.mjs +0 -6
- package/dist/lib/server/pick-safe-details.mjs.map +1 -1
- package/dist/lib/server/pin-and-bind-fetch.mjs +0 -6
- package/dist/lib/server/pin-and-bind-fetch.mjs.map +1 -1
- package/dist/lib/server/postgres-state-store.mjs +0 -6
- package/dist/lib/server/postgres-state-store.mjs.map +1 -1
- package/dist/lib/server/postgres-task-store.mjs +0 -6
- package/dist/lib/server/postgres-task-store.mjs.map +1 -1
- package/dist/lib/server/product-defaults.mjs +0 -6
- package/dist/lib/server/product-defaults.mjs.map +1 -1
- package/dist/lib/server/redact.mjs +0 -6
- package/dist/lib/server/redact.mjs.map +1 -1
- package/dist/lib/server/responses.mjs +0 -6
- package/dist/lib/server/responses.mjs.map +1 -1
- package/dist/lib/server/serve.mjs +0 -6
- package/dist/lib/server/serve.mjs.map +1 -1
- package/dist/lib/server/socket-mode/conformance-client.mjs +0 -6
- package/dist/lib/server/socket-mode/conformance-client.mjs.map +1 -1
- package/dist/lib/server/socket-mode/index.mjs +0 -6
- package/dist/lib/server/socket-mode/index.mjs.map +1 -1
- package/dist/lib/server/socket-mode/ws-transport.mjs +0 -6
- package/dist/lib/server/socket-mode/ws-transport.mjs.map +1 -1
- package/dist/lib/server/state-machine.mjs +0 -6
- package/dist/lib/server/state-machine.mjs.map +1 -1
- package/dist/lib/server/state-store.mjs +0 -6
- package/dist/lib/server/state-store.mjs.map +1 -1
- package/dist/lib/server/structured-serialize.mjs +0 -6
- package/dist/lib/server/structured-serialize.mjs.map +1 -1
- package/dist/lib/server/targeting-helpers.mjs +0 -6
- package/dist/lib/server/targeting-helpers.mjs.map +1 -1
- package/dist/lib/server/tasks.mjs +0 -6
- package/dist/lib/server/tasks.mjs.map +1 -1
- package/dist/lib/server/test-controller-bridge.mjs +0 -6
- package/dist/lib/server/test-controller-bridge.mjs.map +1 -1
- package/dist/lib/server/test-controller.mjs +0 -6
- package/dist/lib/server/test-controller.mjs.map +1 -1
- package/dist/lib/server/upstream-helpers.mjs +0 -6
- package/dist/lib/server/upstream-helpers.mjs.map +1 -1
- package/dist/lib/server/webhook-emitter.mjs +0 -6
- package/dist/lib/server/webhook-emitter.mjs.map +1 -1
- package/dist/lib/server/wire-safe.mjs +0 -6
- package/dist/lib/server/wire-safe.mjs.map +1 -1
- package/dist/lib/server/wire-spec-fields.generated.mjs +0 -6
- package/dist/lib/server/wire-spec-fields.generated.mjs.map +1 -1
- package/dist/lib/server/wrap-envelope.mjs +0 -6
- package/dist/lib/server/wrap-envelope.mjs.map +1 -1
- package/dist/lib/signing/agent-context.mjs +0 -6
- package/dist/lib/signing/agent-context.mjs.map +1 -1
- package/dist/lib/signing/agent-fetch.mjs +0 -6
- package/dist/lib/signing/agent-fetch.mjs.map +1 -1
- package/dist/lib/signing/agent-resolver/canonicalize.mjs +0 -6
- package/dist/lib/signing/agent-resolver/canonicalize.mjs.map +1 -1
- package/dist/lib/signing/agent-resolver/capabilities-types.mjs +0 -6
- package/dist/lib/signing/agent-resolver/capabilities-types.mjs.map +1 -1
- package/dist/lib/signing/agent-resolver/consistency.mjs +0 -6
- package/dist/lib/signing/agent-resolver/consistency.mjs.map +1 -1
- package/dist/lib/signing/agent-resolver/errors.mjs +0 -6
- package/dist/lib/signing/agent-resolver/errors.mjs.map +1 -1
- package/dist/lib/signing/agent-resolver/etld.mjs +0 -6
- package/dist/lib/signing/agent-resolver/etld.mjs.map +1 -1
- package/dist/lib/signing/agent-resolver/fetch-helpers.mjs +0 -6
- package/dist/lib/signing/agent-resolver/fetch-helpers.mjs.map +1 -1
- package/dist/lib/signing/agent-resolver/index.mjs +0 -6
- package/dist/lib/signing/agent-resolver/index.mjs.map +1 -1
- package/dist/lib/signing/agent-resolver/jwks-set.mjs +0 -6
- package/dist/lib/signing/agent-resolver/jwks-set.mjs.map +1 -1
- package/dist/lib/signing/agent-resolver/resolve-agent.mjs +0 -6
- package/dist/lib/signing/agent-resolver/resolve-agent.mjs.map +1 -1
- package/dist/lib/signing/agent-resolver/select-agent.mjs +0 -6
- package/dist/lib/signing/agent-resolver/select-agent.mjs.map +1 -1
- package/dist/lib/signing/agent-resolver/strict-json.mjs +0 -6
- package/dist/lib/signing/agent-resolver/strict-json.mjs.map +1 -1
- package/dist/lib/signing/brand-jwks.mjs +0 -6
- package/dist/lib/signing/brand-jwks.mjs.map +1 -1
- package/dist/lib/signing/canonicalize.mjs +0 -6
- package/dist/lib/signing/canonicalize.mjs.map +1 -1
- package/dist/lib/signing/capability-cache.mjs +0 -6
- package/dist/lib/signing/capability-cache.mjs.map +1 -1
- package/dist/lib/signing/capability-priming.mjs +0 -6
- package/dist/lib/signing/capability-priming.mjs.map +1 -1
- package/dist/lib/signing/client.mjs +0 -6
- package/dist/lib/signing/client.mjs.map +1 -1
- package/dist/lib/signing/content-digest.mjs +0 -6
- package/dist/lib/signing/content-digest.mjs.map +1 -1
- package/dist/lib/signing/crypto.mjs +0 -6
- package/dist/lib/signing/crypto.mjs.map +1 -1
- package/dist/lib/signing/ecdsa-encoding.mjs +0 -6
- package/dist/lib/signing/ecdsa-encoding.mjs.map +1 -1
- package/dist/lib/signing/errors.mjs +0 -6
- package/dist/lib/signing/errors.mjs.map +1 -1
- package/dist/lib/signing/fetch-async.mjs +0 -6
- package/dist/lib/signing/fetch-async.mjs.map +1 -1
- package/dist/lib/signing/fetch.mjs +0 -6
- package/dist/lib/signing/fetch.mjs.map +1 -1
- package/dist/lib/signing/index.mjs +0 -6
- package/dist/lib/signing/index.mjs.map +1 -1
- package/dist/lib/signing/jwks-helpers.mjs +0 -6
- package/dist/lib/signing/jwks-helpers.mjs.map +1 -1
- package/dist/lib/signing/jwks-https.mjs +0 -6
- package/dist/lib/signing/jwks-https.mjs.map +1 -1
- package/dist/lib/signing/jwks.mjs +0 -6
- package/dist/lib/signing/jwks.mjs.map +1 -1
- package/dist/lib/signing/middleware.mjs +0 -6
- package/dist/lib/signing/middleware.mjs.map +1 -1
- package/dist/lib/signing/parser.mjs +0 -6
- package/dist/lib/signing/parser.mjs.map +1 -1
- package/dist/lib/signing/postgres-replay-store.mjs +0 -6
- package/dist/lib/signing/postgres-replay-store.mjs.map +1 -1
- package/dist/lib/signing/protocol-response.mjs +0 -6
- package/dist/lib/signing/protocol-response.mjs.map +1 -1
- package/dist/lib/signing/provider.mjs +0 -6
- package/dist/lib/signing/redis-replay-store.mjs +0 -6
- package/dist/lib/signing/redis-replay-store.mjs.map +1 -1
- package/dist/lib/signing/replay.mjs +0 -6
- package/dist/lib/signing/replay.mjs.map +1 -1
- package/dist/lib/signing/request-context.mjs +0 -6
- package/dist/lib/signing/request-context.mjs.map +1 -1
- package/dist/lib/signing/revocation-https.mjs +0 -6
- package/dist/lib/signing/revocation-https.mjs.map +1 -1
- package/dist/lib/signing/revocation.mjs +0 -6
- package/dist/lib/signing/revocation.mjs.map +1 -1
- package/dist/lib/signing/server.mjs +0 -6
- package/dist/lib/signing/server.mjs.map +1 -1
- package/dist/lib/signing/signer-async.mjs +0 -6
- package/dist/lib/signing/signer-async.mjs.map +1 -1
- package/dist/lib/signing/signer.mjs +0 -6
- package/dist/lib/signing/signer.mjs.map +1 -1
- package/dist/lib/signing/testing.mjs +0 -6
- package/dist/lib/signing/testing.mjs.map +1 -1
- package/dist/lib/signing/types.mjs +0 -6
- package/dist/lib/signing/types.mjs.map +1 -1
- package/dist/lib/signing/verifier.mjs +0 -6
- package/dist/lib/signing/verifier.mjs.map +1 -1
- package/dist/lib/signing/webhook-auth-detection.mjs +0 -6
- package/dist/lib/signing/webhook-auth-detection.mjs.map +1 -1
- package/dist/lib/signing/webhook-verifier.mjs +0 -6
- package/dist/lib/signing/webhook-verifier.mjs.map +1 -1
- package/dist/lib/storage/MemoryStorage.mjs +0 -6
- package/dist/lib/storage/MemoryStorage.mjs.map +1 -1
- package/dist/lib/storage/interfaces.mjs +0 -6
- package/dist/lib/substitution/encoder/SubstitutionEncoder.mjs +0 -6
- package/dist/lib/substitution/encoder/SubstitutionEncoder.mjs.map +1 -1
- package/dist/lib/substitution/encoder/index.mjs +0 -6
- package/dist/lib/substitution/encoder/index.mjs.map +1 -1
- package/dist/lib/substitution/index.mjs +0 -6
- package/dist/lib/substitution/index.mjs.map +1 -1
- package/dist/lib/substitution/observer/SubstitutionObserver.mjs +0 -6
- package/dist/lib/substitution/observer/SubstitutionObserver.mjs.map +1 -1
- package/dist/lib/substitution/observer/alignment.mjs +0 -6
- package/dist/lib/substitution/observer/alignment.mjs.map +1 -1
- package/dist/lib/substitution/observer/assertions.mjs +0 -6
- package/dist/lib/substitution/observer/assertions.mjs.map +1 -1
- package/dist/lib/substitution/observer/html-parser.mjs +0 -6
- package/dist/lib/substitution/observer/html-parser.mjs.map +1 -1
- package/dist/lib/substitution/observer/index.mjs +0 -6
- package/dist/lib/substitution/observer/index.mjs.map +1 -1
- package/dist/lib/substitution/observer/ssrf.mjs +0 -6
- package/dist/lib/substitution/observer/ssrf.mjs.map +1 -1
- package/dist/lib/substitution/rfc3986.mjs +0 -6
- package/dist/lib/substitution/rfc3986.mjs.map +1 -1
- package/dist/lib/substitution/translate.mjs +0 -6
- package/dist/lib/substitution/translate.mjs.map +1 -1
- package/dist/lib/substitution/types.mjs +0 -6
- package/dist/lib/substitution/vectors.mjs +0 -6
- package/dist/lib/substitution/vectors.mjs.map +1 -1
- package/dist/lib/testing/agent-tester.mjs +0 -6
- package/dist/lib/testing/agent-tester.mjs.map +1 -1
- package/dist/lib/testing/client.mjs +0 -6
- package/dist/lib/testing/client.mjs.map +1 -1
- package/dist/lib/testing/compliance/briefs.mjs +0 -6
- package/dist/lib/testing/compliance/briefs.mjs.map +1 -1
- package/dist/lib/testing/compliance/comply.mjs +0 -6
- package/dist/lib/testing/compliance/comply.mjs.map +1 -1
- package/dist/lib/testing/compliance/index.mjs +0 -6
- package/dist/lib/testing/compliance/index.mjs.map +1 -1
- package/dist/lib/testing/compliance/spec-conformance.mjs +0 -6
- package/dist/lib/testing/compliance/spec-conformance.mjs.map +1 -1
- package/dist/lib/testing/compliance/storyboard-tracks.mjs +0 -6
- package/dist/lib/testing/compliance/storyboard-tracks.mjs.map +1 -1
- package/dist/lib/testing/compliance/summary.mjs +0 -6
- package/dist/lib/testing/compliance/summary.mjs.map +1 -1
- package/dist/lib/testing/compliance/types.mjs +0 -6
- package/dist/lib/testing/comply-controller.mjs +0 -6
- package/dist/lib/testing/comply-controller.mjs.map +1 -1
- package/dist/lib/testing/controller-assertions.mjs +0 -6
- package/dist/lib/testing/controller-assertions.mjs.map +1 -1
- package/dist/lib/testing/formatter.mjs +0 -6
- package/dist/lib/testing/formatter.mjs.map +1 -1
- package/dist/lib/testing/index.mjs +0 -6
- package/dist/lib/testing/index.mjs.map +1 -1
- package/dist/lib/testing/local-agent-runner.mjs +0 -6
- package/dist/lib/testing/local-agent-runner.mjs.map +1 -1
- package/dist/lib/testing/orchestrator.mjs +0 -6
- package/dist/lib/testing/orchestrator.mjs.map +1 -1
- package/dist/lib/testing/personas/index.mjs +0 -6
- package/dist/lib/testing/personas/index.mjs.map +1 -1
- package/dist/lib/testing/scenarios/brand-rights.mjs +0 -6
- package/dist/lib/testing/scenarios/brand-rights.mjs.map +1 -1
- package/dist/lib/testing/scenarios/capabilities.mjs +0 -6
- package/dist/lib/testing/scenarios/capabilities.mjs.map +1 -1
- package/dist/lib/testing/scenarios/creative.mjs +0 -6
- package/dist/lib/testing/scenarios/creative.mjs.map +1 -1
- package/dist/lib/testing/scenarios/deterministic.mjs +0 -6
- package/dist/lib/testing/scenarios/deterministic.mjs.map +1 -1
- package/dist/lib/testing/scenarios/discovery.mjs +0 -6
- package/dist/lib/testing/scenarios/discovery.mjs.map +1 -1
- package/dist/lib/testing/scenarios/edge-cases.mjs +0 -6
- package/dist/lib/testing/scenarios/edge-cases.mjs.map +1 -1
- package/dist/lib/testing/scenarios/error-compliance.mjs +0 -6
- package/dist/lib/testing/scenarios/error-compliance.mjs.map +1 -1
- package/dist/lib/testing/scenarios/governance.mjs +0 -6
- package/dist/lib/testing/scenarios/governance.mjs.map +1 -1
- package/dist/lib/testing/scenarios/health.mjs +0 -6
- package/dist/lib/testing/scenarios/health.mjs.map +1 -1
- package/dist/lib/testing/scenarios/index.mjs +0 -6
- package/dist/lib/testing/scenarios/index.mjs.map +1 -1
- package/dist/lib/testing/scenarios/media-buy.mjs +0 -6
- package/dist/lib/testing/scenarios/media-buy.mjs.map +1 -1
- package/dist/lib/testing/scenarios/schema-compliance.mjs +0 -6
- package/dist/lib/testing/scenarios/schema-compliance.mjs.map +1 -1
- package/dist/lib/testing/scenarios/signals.mjs +0 -6
- package/dist/lib/testing/scenarios/signals.mjs.map +1 -1
- package/dist/lib/testing/scenarios/sponsored-intelligence.mjs +0 -6
- package/dist/lib/testing/scenarios/sponsored-intelligence.mjs.map +1 -1
- package/dist/lib/testing/scenarios/trusted-match.mjs +0 -6
- package/dist/lib/testing/scenarios/trusted-match.mjs.map +1 -1
- package/dist/lib/testing/seed-merge.mjs +0 -6
- package/dist/lib/testing/seed-merge.mjs.map +1 -1
- package/dist/lib/testing/storyboard/agent-routing.mjs +0 -6
- package/dist/lib/testing/storyboard/agent-routing.mjs.map +1 -1
- package/dist/lib/testing/storyboard/assertions.mjs +0 -6
- package/dist/lib/testing/storyboard/assertions.mjs.map +1 -1
- package/dist/lib/testing/storyboard/canonical-format-satisfaction.mjs +0 -6
- package/dist/lib/testing/storyboard/canonical-format-satisfaction.mjs.map +1 -1
- package/dist/lib/testing/storyboard/compliance.mjs +5 -6
- package/dist/lib/testing/storyboard/compliance.mjs.map +1 -1
- package/dist/lib/testing/storyboard/context.mjs +0 -6
- package/dist/lib/testing/storyboard/context.mjs.map +1 -1
- package/dist/lib/testing/storyboard/default-invariants.mjs +0 -6
- package/dist/lib/testing/storyboard/default-invariants.mjs.map +1 -1
- package/dist/lib/testing/storyboard/index.mjs +0 -6
- package/dist/lib/testing/storyboard/index.mjs.map +1 -1
- package/dist/lib/testing/storyboard/junit.mjs +0 -6
- package/dist/lib/testing/storyboard/junit.mjs.map +1 -1
- package/dist/lib/testing/storyboard/loader.mjs +0 -6
- package/dist/lib/testing/storyboard/loader.mjs.map +1 -1
- package/dist/lib/testing/storyboard/parallel-dispatch.mjs +0 -6
- package/dist/lib/testing/storyboard/parallel-dispatch.mjs.map +1 -1
- package/dist/lib/testing/storyboard/path.mjs +0 -6
- package/dist/lib/testing/storyboard/path.mjs.map +1 -1
- package/dist/lib/testing/storyboard/probes.mjs +0 -6
- package/dist/lib/testing/storyboard/probes.mjs.map +1 -1
- package/dist/lib/testing/storyboard/rate-limit-trip.mjs +0 -6
- package/dist/lib/testing/storyboard/rate-limit-trip.mjs.map +1 -1
- package/dist/lib/testing/storyboard/rejection-hints.mjs +0 -6
- package/dist/lib/testing/storyboard/rejection-hints.mjs.map +1 -1
- package/dist/lib/testing/storyboard/request-builder.mjs +0 -6
- package/dist/lib/testing/storyboard/request-builder.mjs.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/builder.mjs +0 -6
- package/dist/lib/testing/storyboard/request-signing/builder.mjs.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/grader.mjs +0 -6
- package/dist/lib/testing/storyboard/request-signing/grader.mjs.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/index.mjs +0 -6
- package/dist/lib/testing/storyboard/request-signing/index.mjs.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/probe-dispatch.mjs +0 -6
- package/dist/lib/testing/storyboard/request-signing/probe-dispatch.mjs.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/probe.mjs +0 -6
- package/dist/lib/testing/storyboard/request-signing/probe.mjs.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/synthesize.mjs +0 -6
- package/dist/lib/testing/storyboard/request-signing/synthesize.mjs.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/test-kit.mjs +0 -6
- package/dist/lib/testing/storyboard/request-signing/test-kit.mjs.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/types.mjs +0 -6
- package/dist/lib/testing/storyboard/request-signing/types.mjs.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/vector-loader.mjs +0 -6
- package/dist/lib/testing/storyboard/request-signing/vector-loader.mjs.map +1 -1
- package/dist/lib/testing/storyboard/runner.mjs +0 -6
- package/dist/lib/testing/storyboard/runner.mjs.map +1 -1
- package/dist/lib/testing/storyboard/sandbox-entities.mjs +0 -6
- package/dist/lib/testing/storyboard/sandbox-entities.mjs.map +1 -1
- package/dist/lib/testing/storyboard/seeding.mjs +0 -6
- package/dist/lib/testing/storyboard/seeding.mjs.map +1 -1
- package/dist/lib/testing/storyboard/shape-drift-hints.mjs +0 -6
- package/dist/lib/testing/storyboard/shape-drift-hints.mjs.map +1 -1
- package/dist/lib/testing/storyboard/signer-grader/grader.mjs +0 -6
- package/dist/lib/testing/storyboard/signer-grader/grader.mjs.map +1 -1
- package/dist/lib/testing/storyboard/signer-grader/index.mjs +0 -6
- package/dist/lib/testing/storyboard/signer-grader/index.mjs.map +1 -1
- package/dist/lib/testing/storyboard/signer-grader/types.mjs +0 -6
- package/dist/lib/testing/storyboard/strict-validation-hints.mjs +0 -6
- package/dist/lib/testing/storyboard/strict-validation-hints.mjs.map +1 -1
- package/dist/lib/testing/storyboard/task-map.mjs +0 -6
- package/dist/lib/testing/storyboard/task-map.mjs.map +1 -1
- package/dist/lib/testing/storyboard/test-kit.mjs +0 -6
- package/dist/lib/testing/storyboard/test-kit.mjs.map +1 -1
- package/dist/lib/testing/storyboard/types.mjs +0 -6
- package/dist/lib/testing/storyboard/types.mjs.map +1 -1
- package/dist/lib/testing/storyboard/validations.mjs +0 -6
- package/dist/lib/testing/storyboard/validations.mjs.map +1 -1
- package/dist/lib/testing/storyboard/webhook-assertions.mjs +0 -6
- package/dist/lib/testing/storyboard/webhook-assertions.mjs.map +1 -1
- package/dist/lib/testing/storyboard/webhook-receiver.mjs +0 -6
- package/dist/lib/testing/storyboard/webhook-receiver.mjs.map +1 -1
- package/dist/lib/testing/stubs/governance-agent-stub.mjs +0 -6
- package/dist/lib/testing/stubs/governance-agent-stub.mjs.map +1 -1
- package/dist/lib/testing/stubs/index.mjs +0 -6
- package/dist/lib/testing/stubs/index.mjs.map +1 -1
- package/dist/lib/testing/test-controller.mjs +0 -6
- package/dist/lib/testing/test-controller.mjs.map +1 -1
- package/dist/lib/testing/test-helpers.mjs +0 -6
- package/dist/lib/testing/test-helpers.mjs.map +1 -1
- package/dist/lib/testing/types.mjs +0 -6
- package/dist/lib/types/adcp.mjs +0 -6
- package/dist/lib/types/adcp.mjs.map +1 -1
- package/dist/lib/types/asset-instances.mjs +0 -6
- package/dist/lib/types/compat.mjs +0 -6
- package/dist/lib/types/compat.mjs.map +1 -1
- package/dist/lib/types/core.generated.mjs +0 -6
- package/dist/lib/types/enums.generated.mjs +0 -6
- package/dist/lib/types/enums.generated.mjs.map +1 -1
- package/dist/lib/types/error-codes.mjs +0 -6
- package/dist/lib/types/error-codes.mjs.map +1 -1
- package/dist/lib/types/error-details.aliases.mjs +0 -6
- package/dist/lib/types/error-details.aliases.mjs.map +1 -1
- package/dist/lib/types/format-asset-slots.mjs +0 -6
- package/dist/lib/types/forward-compat-error-codes.mjs +0 -6
- package/dist/lib/types/forward-compat-error-codes.mjs.map +1 -1
- package/dist/lib/types/index.mjs +0 -6
- package/dist/lib/types/index.mjs.map +1 -1
- package/dist/lib/types/inline-enums.aliases.mjs +0 -6
- package/dist/lib/types/inline-enums.aliases.mjs.map +1 -1
- package/dist/lib/types/inline-enums.generated.mjs +0 -6
- package/dist/lib/types/inline-enums.generated.mjs.map +1 -1
- package/dist/lib/types/manifest.generated.mjs +0 -6
- package/dist/lib/types/manifest.generated.mjs.map +1 -1
- package/dist/lib/types/schemas.generated.mjs +0 -6
- package/dist/lib/types/schemas.generated.mjs.map +1 -1
- package/dist/lib/types/server-payload-aliases.mjs +0 -6
- package/dist/lib/types/server-payload.mjs +0 -6
- package/dist/lib/types/sync-rows.mjs +0 -6
- package/dist/lib/types/tools.generated.mjs +0 -6
- package/dist/lib/types/v2-5/index.mjs +0 -6
- package/dist/lib/types/v2-5/index.mjs.map +1 -1
- package/dist/lib/types/v2-5/tools.generated.mjs +0 -6
- package/dist/lib/types/v3-1-beta/index.mjs +0 -6
- package/dist/lib/types/v3-1-beta/index.mjs.map +1 -1
- package/dist/lib/types/v3-1-beta/tools.generated.mjs +0 -6
- package/dist/lib/types/wellknown-schemas.generated.mjs +0 -6
- package/dist/lib/types/wellknown-schemas.generated.mjs.map +1 -1
- package/dist/lib/upstream-recorder/constants.mjs +0 -6
- package/dist/lib/upstream-recorder/constants.mjs.map +1 -1
- package/dist/lib/upstream-recorder/index.mjs +0 -6
- package/dist/lib/upstream-recorder/index.mjs.map +1 -1
- package/dist/lib/upstream-recorder/recorder.mjs +0 -6
- package/dist/lib/upstream-recorder/recorder.mjs.map +1 -1
- package/dist/lib/upstream-recorder/types.mjs +0 -6
- package/dist/lib/upstream-recorder/types.mjs.map +1 -1
- package/dist/lib/utils/a2a-artifacts.mjs +0 -6
- package/dist/lib/utils/a2a-artifacts.mjs.map +1 -1
- package/dist/lib/utils/a2a-discovery.mjs +0 -6
- package/dist/lib/utils/a2a-discovery.mjs.map +1 -1
- package/dist/lib/utils/activation-key-builders.mjs +0 -6
- package/dist/lib/utils/activation-key-builders.mjs.map +1 -1
- package/dist/lib/utils/adcp-version-config.mjs +0 -6
- package/dist/lib/utils/adcp-version-config.mjs.map +1 -1
- package/dist/lib/utils/asset-builders.mjs +0 -6
- package/dist/lib/utils/asset-builders.mjs.map +1 -1
- package/dist/lib/utils/build-creative-return-builders.mjs +0 -6
- package/dist/lib/utils/build-creative-return-builders.mjs.map +1 -1
- package/dist/lib/utils/buyer-retry-policy.mjs +0 -6
- package/dist/lib/utils/buyer-retry-policy.mjs.map +1 -1
- package/dist/lib/utils/capabilities.mjs +0 -6
- package/dist/lib/utils/capabilities.mjs.map +1 -1
- package/dist/lib/utils/capability-rollups.mjs +0 -6
- package/dist/lib/utils/capability-rollups.mjs.map +1 -1
- package/dist/lib/utils/creative-adapter.mjs +0 -6
- package/dist/lib/utils/creative-adapter.mjs.map +1 -1
- package/dist/lib/utils/creative-delivery.mjs +0 -6
- package/dist/lib/utils/creative-delivery.mjs.map +1 -1
- package/dist/lib/utils/deprecation.mjs +0 -6
- package/dist/lib/utils/deprecation.mjs.map +1 -1
- package/dist/lib/utils/envelope-status-compat.mjs +0 -6
- package/dist/lib/utils/envelope-status-compat.mjs.map +1 -1
- package/dist/lib/utils/error-extraction.mjs +0 -6
- package/dist/lib/utils/error-extraction.mjs.map +1 -1
- package/dist/lib/utils/extract-result.mjs +0 -6
- package/dist/lib/utils/extract-result.mjs.map +1 -1
- package/dist/lib/utils/format-asset-slot-builders.mjs +0 -6
- package/dist/lib/utils/format-asset-slot-builders.mjs.map +1 -1
- package/dist/lib/utils/format-assets.mjs +0 -6
- package/dist/lib/utils/format-assets.mjs.map +1 -1
- package/dist/lib/utils/format-render-builders.mjs +0 -6
- package/dist/lib/utils/format-render-builders.mjs.map +1 -1
- package/dist/lib/utils/format-renders.mjs +0 -6
- package/dist/lib/utils/format-renders.mjs.map +1 -1
- package/dist/lib/utils/get-products-cache-scope.mjs +0 -6
- package/dist/lib/utils/get-products-cache-scope.mjs.map +1 -1
- package/dist/lib/utils/glob.mjs +0 -6
- package/dist/lib/utils/glob.mjs.map +1 -1
- package/dist/lib/utils/global-async-local-storage.mjs +0 -6
- package/dist/lib/utils/global-async-local-storage.mjs.map +1 -1
- package/dist/lib/utils/idempotency.mjs +0 -6
- package/dist/lib/utils/idempotency.mjs.map +1 -1
- package/dist/lib/utils/index.mjs +0 -6
- package/dist/lib/utils/index.mjs.map +1 -1
- package/dist/lib/utils/jcs.mjs +0 -6
- package/dist/lib/utils/jcs.mjs.map +1 -1
- package/dist/lib/utils/json-depth.mjs +0 -6
- package/dist/lib/utils/json-depth.mjs.map +1 -1
- package/dist/lib/utils/logger.mjs +0 -6
- package/dist/lib/utils/logger.mjs.map +1 -1
- package/dist/lib/utils/media-buy-delivery-notification-builders.mjs +0 -6
- package/dist/lib/utils/media-buy-delivery-notification-builders.mjs.map +1 -1
- package/dist/lib/utils/media-buy-status.mjs +0 -6
- package/dist/lib/utils/media-buy-status.mjs.map +1 -1
- package/dist/lib/utils/pagination.mjs +0 -6
- package/dist/lib/utils/pagination.mjs.map +1 -1
- package/dist/lib/utils/preview-creative-builders.mjs +0 -6
- package/dist/lib/utils/preview-creative-builders.mjs.map +1 -1
- package/dist/lib/utils/preview-normalizer.mjs +0 -6
- package/dist/lib/utils/preview-normalizer.mjs.map +1 -1
- package/dist/lib/utils/preview-utils.mjs +0 -6
- package/dist/lib/utils/preview-utils.mjs.map +1 -1
- package/dist/lib/utils/pricing-adapter.mjs +0 -6
- package/dist/lib/utils/pricing-adapter.mjs.map +1 -1
- package/dist/lib/utils/probe-policy.mjs +0 -6
- package/dist/lib/utils/probe-policy.mjs.map +1 -1
- package/dist/lib/utils/protocol-detection.mjs +0 -6
- package/dist/lib/utils/protocol-detection.mjs.map +1 -1
- package/dist/lib/utils/redact-secrets.mjs +0 -6
- package/dist/lib/utils/redact-secrets.mjs.map +1 -1
- package/dist/lib/utils/redis-default-prefix-warn.mjs +0 -6
- package/dist/lib/utils/redis-default-prefix-warn.mjs.map +1 -1
- package/dist/lib/utils/render-builders.mjs +0 -6
- package/dist/lib/utils/render-builders.mjs.map +1 -1
- package/dist/lib/utils/request-normalizer.mjs +0 -6
- package/dist/lib/utils/request-normalizer.mjs.map +1 -1
- package/dist/lib/utils/response-schemas.mjs +0 -6
- package/dist/lib/utils/response-schemas.mjs.map +1 -1
- package/dist/lib/utils/response-unwrapper.mjs +0 -6
- package/dist/lib/utils/response-unwrapper.mjs.map +1 -1
- package/dist/lib/utils/retry.mjs +0 -6
- package/dist/lib/utils/retry.mjs.map +1 -1
- package/dist/lib/utils/signal-discovery-helpers.mjs +0 -6
- package/dist/lib/utils/signal-discovery-helpers.mjs.map +1 -1
- package/dist/lib/utils/signal-id-builders.mjs +0 -6
- package/dist/lib/utils/signal-id-builders.mjs.map +1 -1
- package/dist/lib/utils/sync-creatives-adapter.mjs +0 -6
- package/dist/lib/utils/sync-creatives-adapter.mjs.map +1 -1
- package/dist/lib/utils/task-state.mjs +0 -6
- package/dist/lib/utils/task-state.mjs.map +1 -1
- package/dist/lib/utils/tool-request-schemas.mjs +0 -6
- package/dist/lib/utils/tool-request-schemas.mjs.map +1 -1
- package/dist/lib/utils/typeGuards.mjs +0 -6
- package/dist/lib/utils/typeGuards.mjs.map +1 -1
- package/dist/lib/utils/union-errors.mjs +0 -6
- package/dist/lib/utils/union-errors.mjs.map +1 -1
- package/dist/lib/utils/validate-user-agent.mjs +0 -6
- package/dist/lib/utils/validate-user-agent.mjs.map +1 -1
- package/dist/lib/v2/format-schema/fetch.mjs +0 -6
- package/dist/lib/v2/format-schema/fetch.mjs.map +1 -1
- package/dist/lib/v2/format-schema/index.mjs +0 -6
- package/dist/lib/v2/format-schema/index.mjs.map +1 -1
- package/dist/lib/v2/format-schema/regex-safety.mjs +0 -6
- package/dist/lib/v2/format-schema/regex-safety.mjs.map +1 -1
- package/dist/lib/v2/format-schema/resolver.mjs +7 -8
- package/dist/lib/v2/format-schema/resolver.mjs.map +1 -1
- package/dist/lib/v2/format-schema/sandbox-refs.mjs +0 -6
- package/dist/lib/v2/format-schema/sandbox-refs.mjs.map +1 -1
- package/dist/lib/v2/projection/augment-response.mjs +0 -6
- package/dist/lib/v2/projection/augment-response.mjs.map +1 -1
- package/dist/lib/v2/projection/builders.mjs +0 -6
- package/dist/lib/v2/projection/builders.mjs.map +1 -1
- package/dist/lib/v2/projection/cache-versions.mjs +0 -6
- package/dist/lib/v2/projection/cache-versions.mjs.map +1 -1
- package/dist/lib/v2/projection/canonical-properties.mjs +5 -6
- package/dist/lib/v2/projection/canonical-properties.mjs.map +1 -1
- package/dist/lib/v2/projection/catalog.mjs +5 -6
- package/dist/lib/v2/projection/catalog.mjs.map +1 -1
- package/dist/lib/v2/projection/constants.mjs +0 -6
- package/dist/lib/v2/projection/constants.mjs.map +1 -1
- package/dist/lib/v2/projection/index.mjs +0 -6
- package/dist/lib/v2/projection/index.mjs.map +1 -1
- package/dist/lib/v2/projection/registry.mjs +5 -6
- package/dist/lib/v2/projection/registry.mjs.map +1 -1
- package/dist/lib/v2/projection/types.mjs +0 -6
- package/dist/lib/v2/projection/v1-to-v2.mjs +0 -6
- package/dist/lib/v2/projection/v1-to-v2.mjs.map +1 -1
- package/dist/lib/v2/projection/v2-to-v1.mjs +0 -6
- package/dist/lib/v2/projection/v2-to-v1.mjs.map +1 -1
- package/dist/lib/v2/projection/write-side.mjs +0 -6
- package/dist/lib/v2/projection/write-side.mjs.map +1 -1
- package/dist/lib/v2/publisher-catalog/formats.mjs +0 -6
- package/dist/lib/v2/publisher-catalog/formats.mjs.map +1 -1
- package/dist/lib/v2/publisher-catalog/index.mjs +0 -6
- package/dist/lib/v2/publisher-catalog/index.mjs.map +1 -1
- package/dist/lib/validation/client-hooks.mjs +0 -6
- package/dist/lib/validation/client-hooks.mjs.map +1 -1
- package/dist/lib/validation/hints.mjs +0 -6
- package/dist/lib/validation/hints.mjs.map +1 -1
- package/dist/lib/validation/index.mjs +0 -6
- package/dist/lib/validation/index.mjs.map +1 -1
- package/dist/lib/validation/schema-errors.mjs +0 -6
- package/dist/lib/validation/schema-errors.mjs.map +1 -1
- package/dist/lib/validation/schema-loader.mjs +5 -6
- package/dist/lib/validation/schema-loader.mjs.map +1 -1
- package/dist/lib/validation/schema-validator.mjs +0 -6
- package/dist/lib/validation/schema-validator.mjs.map +1 -1
- package/dist/lib/validation/sync-creatives.mjs +0 -6
- package/dist/lib/validation/sync-creatives.mjs.map +1 -1
- package/dist/lib/version.d.mts +3 -3
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.js +3 -3
- package/dist/lib/version.js.map +1 -1
- package/dist/lib/version.mjs +3 -9
- package/dist/lib/version.mjs.map +1 -1
- package/dist/lib/webhooks/index.mjs +0 -6
- package/dist/lib/webhooks/index.mjs.map +1 -1
- package/dist/lib/wholesale-feed-sync/index.mjs +0 -6
- package/dist/lib/wholesale-feed-sync/index.mjs.map +1 -1
- package/dist/lib/wholesale-feed-sync/sync.mjs +0 -6
- package/dist/lib/wholesale-feed-sync/sync.mjs.map +1 -1
- package/dist/lib/wholesale-feed-sync/types.mjs +0 -6
- package/dist/lib/wholesale-feed-sync/webhook-notification.mjs +0 -6
- package/dist/lib/wholesale-feed-sync/webhook-notification.mjs.map +1 -1
- package/package.json +2 -1
package/dist/lib/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/index.ts"],"sourcesContent":["// AdCP Client Library - Main Exports\n// A comprehensive type-safe client library for the AdContext Protocol\n\n// ====== REGISTRY LOOKUPS ======\nexport {\n RegistryClient,\n RegistrySync,\n PropertyRegistry,\n InMemoryCursorStore,\n FileCursorStore,\n buildCommunityMirrorAdagents,\n} from './registry';\nexport type {\n RegistrySyncConfig,\n RegistrySyncState,\n RegistrySyncTransport,\n RegistrySyncEvents,\n AgentFilter,\n RegistrySyncProperty,\n CursorStore,\n PropertyRegistryConfig,\n FeedStreamQuery,\n FeedStreamMessage,\n FeedHeartbeat,\n FeedStreamErrorData,\n OpenFeedStreamOptions,\n FeedFreshness,\n} from './registry';\nexport {\n openFeedStream,\n parseSseStream,\n sanitizeStreamText,\n DEFAULT_MAX_SSE_FRAME_BYTES,\n FeedStreamError,\n FeedStreamUnsupportedError,\n FeedStreamCursorExpiredError,\n FeedStreamHttpError,\n FeedStreamParseError,\n} from './registry';\nexport type {\n ResolvedBrand,\n BrandHierarchyResolution,\n BrandHierarchyBulkResolution,\n ResolveBrandHierarchyOptions,\n ResolvedProperty as ResolvedRegistryProperty,\n PropertyInfo,\n RegistryClientConfig,\n SaveBrandRequest,\n SaveBrandResponse,\n BrandLogoReviewStatus,\n ApprovedBrandLogoAsset,\n PendingBrandLogoAsset,\n ReviewedBrandLogoAsset,\n BrandLogoAsset,\n ListBrandLogosOptions,\n ListBrandLogosResponse,\n SaveBrandLogoInput,\n SaveBrandLogoResponse,\n UploadBrandLogoInput,\n UploadBrandLogoResponse,\n SavePropertyIdentity,\n RegistryPropertyIdentity,\n SavePropertyRequest,\n SavePropertyResponse,\n ResolveIdentifiersRequest,\n ResolveIdentifiersResponse,\n FileCatalogDisputeRequest,\n FileCatalogDisputeResponse,\n GetCatalogDisputeResponse,\n BrandRegistryItem,\n PropertyRegistryItem,\n ValidationResult as RegistryValidationResult,\n FederatedAgentWithDetails,\n FederatedPublisher,\n DomainLookupResult,\n ListBrandsOptions,\n ListBrandsResponse,\n GetBrandJsonResponse,\n ListOptions,\n ListAgentsOptions,\n ListAgentsResponse,\n ListPublishersResponse,\n ValidateAdagentsRequest,\n ValidateAdagentsResponse,\n CreateAdagentsRequest,\n CreateAdagentsResponse,\n AdagentsAuthorizedAgent,\n AdagentsCatalogFormat,\n AdagentsPlacementDefinition,\n AdagentsPlacementFormatReference,\n AdagentsPlacementFormatOption,\n AdagentsPlacementTag,\n CreatedAdagentsJson,\n CommunityMirrorAdagentsConfig,\n CreateCommunityMirrorAdagentsConfig,\n CommunityMirrorAdagentsCatalog,\n PublishCommunityMirrorAdagentsResponse,\n CommunityMirrorAdagentsSummary,\n ListCommunityMirrorAdagentsResponse,\n GetCommunityMirrorAdagentsResponse,\n PublishCommunityMirrorAdagentsRequest,\n PublishCommunityMirrorAdagentsError,\n DeleteCommunityMirrorAdagentsResponse,\n PublisherPropertySelector,\n CompanySearchResult,\n FindCompanyResult,\n ManagerRevalidationRequest,\n ManagerRevalidationResponse,\n ListPoliciesQuery,\n ListPoliciesResponse,\n ResolvePolicyQuery,\n ResolvePolicyResponse,\n ResolvePoliciesBulkRequest,\n ResolvePoliciesBulkResponse,\n GetPolicyHistoryQuery,\n GetPolicyHistoryResponse,\n SavePolicyRequest,\n SavePolicyResponse,\n GetBrandHistoryQuery,\n GetBrandHistoryResponse,\n GetPropertyHistoryQuery,\n GetPropertyHistoryResponse,\n RegistryFeedEvent,\n AgentEventPayload,\n PropertyEventPayload,\n CollectionEventPayload,\n AuthorizationEventPayload,\n PublisherEventPayload,\n BrandEventPayload,\n CatalogBrowseResponse,\n CatalogBrowseEntry,\n CatalogSyncResponse,\n CatalogSyncEntry,\n AgentCompliance,\n AgentComplianceDetail,\n StoryboardStatus,\n OperatorLookupResult,\n PublisherLookupResult,\n ComplianceChangedPayload,\n GetAgentStoryboardStatusResponse,\n GetAgentStoryboardStatusBulkResponse,\n} from './registry';\n\n// ====== BRAND JSON HELPERS ======\nexport {\n COMMON_LOGO_SLOTS,\n applyBrandAssetMappings,\n checkLogoSlotCoverage,\n extractBrandWebsiteAliasDomains,\n extractBrandWebsiteAliases,\n selectLogoForSlot,\n updateBrandJsonFromMappings,\n validateBrandAssetMappings,\n} from './brand';\nexport type {\n AppliedBrandAssetMapping,\n ApplyBrandAssetMappingsOptions,\n ApplyBrandAssetMappingsResult,\n BrandAssetCandidate,\n BrandAssetCropBox,\n BrandAssetExtractionMethod,\n BrandAssetMapping,\n BrandAssetMappingIssue,\n BrandAssetMappingTarget,\n BrandAssetMappingValidationResult,\n BrandAssetReviewStatus,\n BrandWebsiteAlias,\n BrandWebsiteAliasRelationship,\n BrandWebsiteAliasSource,\n BrandJsonRecord,\n BrandLogoBackground,\n BrandLogoOrientation,\n BrandLogoProposal,\n BrandLogoVariant,\n ExtractBrandWebsiteAliasesOptions,\n LogoSelectionOptions,\n LogoSlotCoverage,\n LogoSlotCoverageOptions,\n ResolveBrandAssetUrl,\n SkippedBrandAssetMapping,\n UpdateBrandJsonFromMappingsOptions,\n UpdateBrandJsonFromMappingsResult,\n} from './brand';\n\n// ====== PROPERTY DISCOVERY (AdCP v2.2.0) ======\nexport {\n PropertyIndex,\n getPropertyIndex,\n resetPropertyIndex,\n type PropertyMatch,\n type AgentAuthorization,\n} from './discovery/property-index';\nexport {\n PropertyCrawler,\n type AgentInfo,\n type CrawlResult,\n type PropertyCrawlerConfig,\n} from './discovery/property-crawler';\nexport {\n NetworkConsistencyChecker,\n type NetworkConsistencyCheckerConfig,\n type NetworkCheckReport,\n type CheckSummary,\n type CheckProgress,\n type OrphanedPointer,\n type StalePointer,\n type MissingPointer,\n type SchemaError,\n type AgentHealthResult,\n type DomainDetail,\n type DomainStatus,\n} from './discovery/network-consistency-checker';\nexport type {\n Property,\n PropertyIdentifier,\n PropertyIdentifierType,\n PropertyType,\n AdAgentsJson,\n AuthorizedAgent,\n AuthorizationType,\n // Aliased: the registry types also export a `PublisherPropertySelector`\n // (registry-flat shape with no `selection_type` discriminator). The\n // adagents.json schema's variant is a discriminated union, so we\n // expose it under a distinct name to avoid clobbering the registry\n // type that's been part of the public API longer.\n PublisherPropertySelector as AdAgentsPublisherPropertySelector,\n SinglePublisherPropertySelector,\n CompactPublisherPropertySelector,\n} from './discovery/types';\nexport {\n parsePublisherPropertySelector,\n expandPublisherPropertySelector,\n expandPublisherPropertySelectors,\n isCompactPublisherPropertySelector,\n publisherDomainsCoveredBySelectors,\n PublisherPropertySelectorParseError,\n type PublisherPropertySelectorError,\n} from './discovery/publisher-property-selector';\nexport {\n resolveAgentProperties,\n listAgentPropertyMap,\n getAllProperties,\n canonicalizeAgentUrl,\n type ResolvedAgentScope,\n type ResolveUnresolvableReason,\n} from './discovery/resolve-agent-properties';\nexport {\n resolveInlinePublisherProperties,\n resolveSingularInline,\n detectInlineFederatedDivergence,\n type InlineResolutionResult,\n type InlineFederatedDivergence,\n} from './discovery/inline-publisher-properties';\nexport {\n fetchAgentAuthorizationsFromDirectory,\n type AgentAuthorizationsIterator,\n type FetchAgentAuthorizationsOptions,\n type DirectoryLookupPage,\n type DirectoryPublisherEntry,\n type DirectoryDiscoveryMethod,\n type DirectoryPublisherStatus,\n} from './discovery/agent-directory';\nexport {\n validateAdAgents,\n parseManagerDomain,\n type DiscoveryMethod,\n type AdAgentsValidationResult,\n type ValidateAdAgentsOptions,\n} from './discovery/validate-adagents';\n\n// ====== CORE CONVERSATION-AWARE CLIENTS ======\n// New conversation-aware clients with input handler pattern\nexport {\n SingleAgentClient,\n WebhookDispatchError,\n createSingleAgentClient,\n UnsupportedFeatureError,\n} from './core/SingleAgentClient';\nexport type {\n ClientProductPropertyPolicy,\n SingleAgentClientConfig,\n VerifyAndParseWebhookOptions,\n WebhookParseErrorCode,\n WebhookParseFailure,\n WebhookParseResult,\n WebhookParseSuccess,\n} from './core/SingleAgentClient';\nexport {\n AgentClient,\n type TaskResponseTypeMap,\n type AdcpTaskName,\n type InProcessAgentClientConfig,\n} from './core/AgentClient';\nexport { ADCPMultiAgentClient, createADCPMultiAgentClient } from './core/ADCPMultiAgentClient';\nexport { ConfigurationManager } from './core/ConfigurationManager';\nexport {\n CreativeAgentClient,\n createCreativeAgentClient,\n STANDARD_CREATIVE_AGENTS,\n type CreativeFormat,\n type CreativeAgentClientConfig,\n} from './core/CreativeAgentClient';\nexport { TaskExecutor } from './core/TaskExecutor';\nexport { match, attachMatch } from './core/match';\nexport type { MatchHandlers, PartialMatchHandlers } from './core/match';\nexport { ProtocolResponseParser, responseParser, ADCP_STATUS, type ADCPStatus } from './core/ProtocolResponseParser';\nexport {\n ResponseValidator,\n responseValidator,\n type ValidationResult,\n type ValidationOptions,\n} from './core/ResponseValidator';\n// ====== CONVERSATION TYPES ======\nexport type {\n Message,\n InputRequest,\n InputHandler,\n InputHandlerResponse,\n ConversationContext,\n TaskOptions,\n WebhookToolPredicate,\n WebhookUrlTemplate,\n TaskResult,\n TaskResultCompleted,\n TaskResultIntermediate,\n TaskResultFailure,\n TaskResultMetadata,\n TaskState,\n TaskStatus,\n ConversationConfig,\n AdcpErrorInfo,\n AdcpValidationIssue,\n} from './core/ConversationTypes';\n\n// ====== GOVERNANCE ======\n// Buyer-side: GovernanceConfig + GovernanceMiddleware handle check → execute → report automatically.\n// Seller-side: GovernanceAdapter runs committed checks before executing media buys.\n// Types: GovernanceCheckResult, GovernanceOutcome are attached to TaskResult when governance is active.\n\n// Buyer-side middleware types\nexport type {\n GovernanceConfig,\n CampaignGovernanceConfig,\n GovernanceCheckResult,\n GovernanceOutcome,\n GovernanceFinding,\n GovernanceCondition,\n GovernanceEscalation,\n} from './core/GovernanceTypes';\nexport { GovernanceMiddleware } from './core/GovernanceMiddleware';\nexport type { GovernanceDebugEntry } from './core/GovernanceMiddleware';\n\n// ====== GOVERNANCE PLAN HELPERS ======\n// Invariants the schema encodes via if/then / oneOf that generated types\n// typically drop: budget reallocation autonomy and regulated-vertical\n// human review under GDPR Art 22 / EU AI Act Annex III.\nexport {\n buildHumanReviewPlan,\n buildHumanOverride,\n validateGovernancePlan,\n REGULATED_HUMAN_REVIEW_CATEGORIES,\n ANNEX_III_POLICY_IDS,\n} from './governance';\n\n// ====== NETWORKING / SSRF GUARDS ======\n// Public so adopters can converge on the SDK's DNS-pinning and address\n// classification behavior instead of copying partial guards. Use\n// `ssrfSafeFetch` as the security boundary; address classifiers are advisory\n// helpers and do not protect raw fetches from DNS rebinding.\nexport {\n ssrfSafeFetch,\n decodeBodyAsJsonOrText,\n SSRF_TRANSIENT_CODES,\n SsrfRefusedError,\n isPrivateIp,\n isAlwaysBlocked,\n isLikelyPrivateUrl,\n type SsrfRefusedCode,\n type SsrfFetchOptions,\n type SsrfFetchResult,\n} from './net';\n\n// ====== CANONICAL REFERENCE RESOLUTION ======\n// Safe, structured resolver for AdCP 3.1 `format_schema` and\n// `platform_extensions` URI+SHA-256 references.\nexport {\n createCanonicalReferenceCache,\n createCanonicalReferenceResolver,\n canonicalReferenceCacheKey,\n resolveCanonicalReference,\n resolveFormatSchemaReference,\n resolvePlatformExtensionsReference,\n type CanonicalReference,\n type CanonicalReferenceCache,\n type CanonicalReferenceError,\n type CanonicalReferenceErrorCode,\n type CanonicalReferenceFailureResult,\n type CanonicalReferenceKind,\n type CanonicalReferenceResolveOptions,\n type CanonicalReferenceResolvedResult,\n type CanonicalReferenceResolver,\n type CanonicalReferenceResolverOptions,\n type CanonicalReferenceResult,\n type CanonicalReferenceStatus,\n type ExternalRefDigestMap,\n type FormatSchemaReferenceResolvedResult,\n type FormatSchemaReferenceResult,\n type PlatformExtensionsReferenceResult,\n} from './canonical-references';\nexport type {\n BuildHumanReviewPlanInput,\n BuildHumanOverrideInput,\n DataSubjectContestation,\n GovernancePlan,\n GovernanceValidationIssue,\n HumanOverride,\n PlanBudget,\n ReallocationAutonomy,\n} from './governance';\n\n// ====== TASK EVENT TYPES ======\nexport type {\n BaseTaskEvent,\n ProtocolRequestEvent,\n ProtocolResponseEvent,\n TaskStatusEvent,\n ObjectEvent,\n TaskEvent,\n TaskEventCallbacks,\n} from './core/TaskEventTypes';\nexport { createOperationId } from './core/TaskEventTypes';\n\n// ====== ASYNC HANDLER ======\nexport type {\n AsyncHandlerConfig,\n WebhookMetadata,\n Activity,\n NotificationMetadata,\n MediaBuyDeliveryNotification,\n CreateMediaBuyStatusChangeHandler,\n UpdateMediaBuyStatusChangeHandler,\n SyncCreativesStatusChangeHandler,\n GetProductsStatusChangeHandler,\n} from './core/AsyncHandler';\nexport { AsyncHandler, createAsyncHandler } from './core/AsyncHandler';\n\n// ====== WHOLESALE FEED WEBHOOKS ======\nexport {\n normalizeWholesaleFeedWebhookNotification,\n parseWholesaleFeedWebhookNotification,\n WholesaleFeedWebhookNotificationError,\n} from './wholesale-feed-sync/webhook-notification';\nexport type {\n NormalizedWholesaleFeedWebhookNotification,\n WholesaleFeedWebhookAffectedEntityType,\n WholesaleFeedWebhookCacheScope,\n WholesaleFeedWebhookNotificationErrorCode,\n WholesaleFeedWebhookNotificationErrorDetails,\n WholesaleFeedWebhookNotificationType,\n} from './wholesale-feed-sync/webhook-notification';\n\n// ====== INPUT HANDLERS ======\nexport * from './handlers/types';\n\n// ====== STORAGE INTERFACES ======\nexport type {\n Storage,\n BatchStorage,\n PatternStorage,\n AgentCapabilities,\n ConversationState,\n DeferredTaskState,\n StorageConfig,\n StorageFactory,\n StorageMiddleware,\n} from './storage/interfaces';\nexport { MemoryStorage, createMemoryStorage, createMemoryStorageConfig } from './storage/MemoryStorage';\n\n// ====== ERROR CLASSES ======\nexport {\n ADCPError,\n TaskTimeoutError,\n MaxClarificationError,\n DeferredTaskError,\n TaskAbortedError,\n AgentNotFoundError,\n UnsupportedTaskError,\n ProtocolError,\n ValidationError as ADCPValidationError, // Rename to avoid conflict\n MissingInputHandlerError,\n InvalidContextError,\n ConfigurationError,\n AuthenticationRequiredError,\n FeatureUnsupportedError,\n ProtocolFeatureUnsupportedError,\n SDK_ERROR_TO_PROTOCOL_ERROR_CODE,\n VersionUnsupportedError,\n IdempotencyConflictError,\n IdempotencyExpiredError,\n ResponseTooLargeError,\n ActionNotAllowedError,\n adcpErrorToTypedError,\n getClientPreflightAdcpError,\n isADCPError,\n isErrorOfType,\n extractErrorInfo,\n is401Error,\n mapSdkErrorCodeToProtocolErrorCode,\n} from './errors';\nexport type {\n OAuthMetadataInfo,\n ClientPreflightAdcpErrorInfo,\n ClientPreflightAdcpErrorRecovery,\n FeatureUnsupportedErrorOptions,\n ProtocolFeatureUnsupportedErrorOptions,\n ActionNotAllowedErrorDetails,\n ActionNotAllowedReasonValue,\n ActionNotAllowedAttemptedAction,\n ActionNotAllowedAvailableAction,\n ActionNotAllowedRecovery,\n} from './errors';\n\n// ====== MEDIA BUY ACTIONS (AdCP 3.1 / RFC #4480) ======\n// Wire-shape action types are generated; helper result/context types live in\n// the media-buy helper module.\nexport type {\n ActionNotAllowedDetails,\n ActionNotAllowedReason,\n AvailableActionsResult,\n AvailableActionsSource,\n DecomposedUpdateMediaBuy,\n DecomposedUpdateMediaBuyMutation,\n LegacyCoarseAction,\n MediaBuyActionContext,\n MediaBuyActionMode,\n MediaBuyAvailableAction,\n MediaBuyMutationDirection,\n MediaBuyMutationScope,\n MediaBuyValidAction,\n ModeMismatchRecovery,\n PreflightAllowed,\n PreflightDenial,\n PreflightDenied,\n BuyerPropertyPolicy,\n NormalizedPolicyDomain,\n ProductPolicyProductLike,\n ProductPropertyPolicyDiagnostic,\n ProductPropertyPolicyDiagnosticCode,\n ProductPropertyPolicyDiagnosticSeverity,\n ProductPropertyPolicyMode,\n ProductPropertyPolicySelectorBehavior,\n ProductPropertyPolicyValidationResult,\n PreflightResult,\n ResolvedAction,\n SLAWindow,\n SlaWindow,\n ValidateProductsAgainstPropertyPolicyOptions,\n UpdateFieldEntry,\n UpdateMediaBuyRequestLike,\n} from './media-buy';\nexport {\n ACTIONS_BY_FIELD,\n LEGACY_COARSE_ACTIONS,\n UPDATE_FIELDS_BY_ACTION,\n canAddPackages,\n canCancel,\n canDecreaseBudget,\n canExtendFlight,\n canIncreaseBudget,\n canPause,\n canReallocateBudget,\n canRemoveCreative,\n canRemovePackages,\n canReplaceCreative,\n canResume,\n canShortenFlight,\n canUpdateCreativeAssignments,\n canUpdateFlightDates,\n canUpdateFrequencyCaps,\n canUpdatePacing,\n canUpdateTargeting,\n decomposeUpdateMediaBuy,\n findAvailableAction,\n getActionForMutation,\n getAvailableActions,\n getRollupParent,\n ProductPropertyPolicyError,\n normalizeDomainForPropertyPolicy,\n preflightUpdateMediaBuy,\n recoveryForModeMismatch,\n validateProductsAgainstPropertyPolicy,\n} from './media-buy';\nexport { InputRequiredError } from './core/TaskExecutor';\n\n// ====== IDEMPOTENCY ======\nexport {\n generateIdempotencyKey,\n isMutatingTask,\n isValidIdempotencyKey,\n useIdempotencyKey,\n redactIdempotencyKey,\n IDEMPOTENCY_KEY_PATTERN,\n MUTATING_TASKS,\n} from './utils/idempotency';\nexport type { IdempotencyCapabilities } from './utils/capabilities';\nexport type { MutatingRequestInput } from './utils/idempotency';\nexport { canonicalize, canonicalJsonSha256 } from './utils/jcs';\nexport { rollupOptimizationMetricsFromProducts } from './utils/capability-rollups';\n\n// ====== CORE TYPES ======\nexport * from './types';\n\n// ====== TOOL TYPES ======\n// Request and response types for each AdCP tool.\n//\n// Naming convention:\n// {ToolName}Request -- parameters for a tool call (e.g., CreateMediaBuyRequest)\n// {ToolName}Response -- return value; often a union of {ToolName}Success | {ToolName}Error\n//\n// Nested domain types within requests use a Request suffix when the shape\n// differs from the response version:\n// PackageRequest -- creation-shaped (required: buyer_ref, product_id, budget, pricing_option_id)\n// Package -- response-shaped from core.generated (has package_id, most fields optional)\n//\n// Platform implementors: use Request types to type incoming tool calls,\n// Response types to shape your return values.\n// Runtime Zod schemas live at `@adcp/sdk/schemas` to keep ordinary root\n// imports from loading the generated schema declaration bundle.\nexport type {\n // Media Buy Domain\n GetProductsRequest,\n GetProductsResponse,\n ListCreativeFormatsRequest,\n ListCreativeFormatsResponse,\n CreateMediaBuyRequest,\n CreateMediaBuyResponse,\n CreateMediaBuySuccess,\n CreateMediaBuyError,\n CreateMediaBuySubmitted,\n UpdateMediaBuyRequest,\n UpdateMediaBuyResponse,\n UpdateMediaBuySuccess,\n UpdateMediaBuyError,\n SyncCreativesRequest,\n SyncCreativesResponse,\n SyncCreativesSuccess,\n SyncCreativesError,\n SyncCreativesSubmitted,\n SyncAudiencesRequest,\n SyncAudiencesResponse,\n SyncAudiencesSuccess,\n SyncAudiencesError,\n ListCreativesRequest,\n ListCreativesResponse,\n CreativeFilters,\n GetMediaBuyDeliveryRequest,\n GetMediaBuyDeliveryResponse,\n ProvidePerformanceFeedbackRequest,\n ProvidePerformanceFeedbackResponse,\n ProvidePerformanceFeedbackSuccess,\n ProvidePerformanceFeedbackError,\n // Signals Domain\n GetSignalsRequest,\n GetSignalsResponse,\n ActivateSignalRequest,\n ActivateSignalResponse,\n ActivateSignalSuccess,\n ActivateSignalError,\n CpmPricing,\n PercentOfMediaPricing,\n FlatFeePricing,\n PerUnitPricing,\n CustomPricing,\n VendorPricing,\n VendorPricingOption,\n // Pricing variants for products (publisher rate cards in get_products etc.)\n // PricingOption + CPAPricingOption are exported below near the other tool types.\n CPMPricingOption,\n VCPMPricingOption,\n CPCPricingOption,\n CPCVPricingOption,\n CPVPricingOption,\n CPPPricingOption,\n FlatRatePricingOption,\n TimeBasedPricingOption,\n // Governance Domain - Property Lists\n CreatePropertyListRequest,\n CreatePropertyListResponse,\n UpdatePropertyListRequest,\n UpdatePropertyListResponse,\n GetPropertyListRequest,\n GetPropertyListResponse,\n ListPropertyListsRequest,\n ListPropertyListsResponse,\n DeletePropertyListRequest,\n DeletePropertyListResponse,\n PropertyList,\n PropertyListFilters,\n // Governance Domain - Content Standards\n ListContentStandardsRequest,\n ListContentStandardsResponse,\n GetContentStandardsRequest,\n GetContentStandardsResponse,\n CreateContentStandardsRequest,\n CreateContentStandardsResponse,\n UpdateContentStandardsRequest,\n UpdateContentStandardsResponse,\n UpdateContentStandardsSuccess,\n UpdateContentStandardsError,\n CalibrateContentRequest,\n CalibrateContentResponse,\n ValidateContentDeliveryRequest,\n ValidateContentDeliveryResponse,\n ContentStandards,\n Artifact,\n // Governance Domain - Campaign Governance\n SyncPlansRequest,\n SyncPlansResponse,\n SyncGovernanceRequest,\n SyncGovernanceResponse,\n SyncGovernanceSuccess,\n SyncGovernanceError,\n CheckGovernanceRequest,\n CheckGovernanceResponse,\n ReportPlanOutcomeRequest,\n ReportPlanOutcomeResponse,\n GetPlanAuditLogsRequest,\n GetPlanAuditLogsResponse,\n // Governance Domain - Types & Enums\n PlannedDelivery,\n GovernancePhase,\n EscalationSeverity,\n PolicyEnforcementLevel,\n OutcomeType,\n // Governance Domain - Creative Features\n GetCreativeFeaturesRequest,\n GetCreativeFeaturesResponse,\n // Sponsored Intelligence Domain\n SIGetOfferingRequest,\n SIGetOfferingResponse,\n SIInitiateSessionRequest,\n SIInitiateSessionResponse,\n SISendMessageRequest,\n SISendMessageResponse,\n SITerminateSessionRequest,\n SITerminateSessionResponse,\n SICapabilities,\n SIIdentity,\n // Protocol Domain\n GetAdCPCapabilitiesRequest,\n GetAdCPCapabilitiesResponse,\n // Event Tracking Domain\n SyncEventSourcesRequest,\n SyncEventSourcesResponse,\n SyncEventSourcesSuccess,\n SyncEventSourcesError,\n LogEventRequest,\n LogEventResponse,\n LogEventSuccess,\n LogEventError,\n // Enums\n CanceledBy,\n // Core data structures used within requests and responses\n Format,\n Product,\n Proposal,\n ProductAllocation,\n PackageRequest, // Creation params for packages — not Package (response-shaped, from core.generated)\n CreativeAsset,\n CreativePolicy,\n BrandReference,\n BrandID,\n AccountReference,\n CPAPricingOption,\n EventType,\n ActionSource,\n OptimizationGoal,\n ReachUnit,\n TargetingOverlay,\n // 3.1.0-beta.2 renamed `OutcomeMeasurement` → `OutcomeMeasurementDeprecated`\n // to signal the surface is on the 4.0 removal track. Re-export under both\n // names so adopters' existing `import { OutcomeMeasurement }` keeps working.\n OutcomeMeasurementDeprecated,\n OutcomeMeasurementDeprecated as OutcomeMeasurement,\n Duration,\n DeviceType,\n DigitalSourceType,\n FrequencyCap,\n GeographicBreakdownSupport,\n // Catalog Domain\n Catalog,\n CatalogType,\n FeedFormat,\n UpdateFrequency,\n ContentIDType,\n CatalogFieldMapping,\n SyncCatalogsRequest,\n SyncCatalogsResponse,\n SyncCatalogsSuccess,\n SyncCatalogsError,\n // Format Assets\n Overlay,\n Placement,\n // Creative Agent Domain\n CreativeManifest,\n CreativeVariable,\n BuildCreativeRequest,\n BuildCreativeResponse,\n BuildCreativeSuccess,\n BuildCreativeMultiSuccess,\n BuildCreativeError,\n PreviewCreativeRequest,\n PreviewCreativeResponse,\n GetMediaBuysRequest,\n GetMediaBuysResponse,\n ImageAsset,\n VideoAsset,\n AudioAsset,\n TextAsset,\n URLAsset,\n HTMLAsset,\n VASTAsset,\n DAASTAsset,\n JavaScriptAsset,\n WebhookAsset,\n CSSAsset,\n MarkdownAsset,\n CatalogAsset,\n BriefAsset,\n ReferenceAsset,\n Provenance,\n PreviewOutputFormat,\n DisclosurePosition,\n // Event Tracking\n EventCustomData,\n // Creative Delivery Domain\n GetCreativeDeliveryRequest,\n GetCreativeDeliveryResponse,\n // Account Domain\n Account,\n ListAccountsRequest,\n ListAccountsResponse,\n SyncAccountsRequest,\n SyncAccountsResponse,\n SyncAccountsSuccess,\n SyncAccountsError,\n GetAccountFinancialsRequest,\n GetAccountFinancialsResponse,\n GetAccountFinancialsSuccess,\n GetAccountFinancialsError,\n // Pagination\n PaginationRequest,\n PaginationResponse,\n // Nested domain types used as fields within request/response objects\n PackageUpdate,\n Package,\n Destination,\n SignalFilters,\n PricingOption,\n PriceGuidance,\n} from './types/tools.generated';\nexport type {\n AccountStatus,\n CreativeStatus,\n DelegationAuthority,\n CatalogAction,\n CatalogItemStatus,\n MediaBuyStatus,\n // CreativeBrief is its own top-level schema (creative-brief.json) — emitted\n // in core.generated, no longer transitively pulled into tools.generated now\n // that BriefAsset merges its allOf[$ref] base inline.\n CreativeBrief,\n} from './types/core.generated';\n\n// ====== WELL-KNOWN FILE TYPES ======\n// brand.json / adagents.json shapes inferred from the canonical Zod schemas.\n// Re-exported explicitly here (in addition to the transitive `export * from\n// './types'` above) so the top-level public API contract is visible at the\n// main barrel and not dependent on the sub-barrel's wildcard re-export.\n// Source of truth: schemas/cache/{version}/{brand,adagents}.json — regenerate\n// with `npm run generate-wellknown-schemas` when the spec bumps.\nexport type { BrandJson, AdagentsJson } from './types/wellknown-schemas.generated';\nexport { BrandJsonSchema, AdagentsJsonSchema } from './types/wellknown-schemas.generated';\n\n// ====== ERROR CODES ======\n// Standard error code vocabulary for programmatic error handling\nexport type { Error as TaskErrorDetail } from './types/core.generated';\nexport { STANDARD_ERROR_CODES, isStandardErrorCode, getErrorRecovery } from './types/error-codes';\nexport type { StandardErrorCode, ErrorRecovery } from './types/error-codes';\n\n// ====== SERVER-SIDE HELPERS ======\n// Helpers for building AdCP-compliant MCP servers\nexport {\n adcpError,\n capabilitiesResponse,\n productsResponse,\n mediaBuyResponse,\n deliveryResponse,\n listAccountsResponse,\n listCreativeFormatsResponse,\n updateMediaBuyResponse,\n getMediaBuysResponse,\n performanceFeedbackResponse,\n buildCreativeResponse,\n buildCreativeMultiResponse,\n previewCreativeResponse,\n creativeDeliveryResponse,\n listCreativesResponse,\n listPropertyListsResponse,\n listCollectionListsResponse,\n listContentStandardsResponse,\n getPlanAuditLogsResponse,\n syncCreativesResponse,\n getSignalsResponse,\n activateSignalResponse,\n cancelMediaBuyResponse,\n acquireRightsResponse,\n acquireRightsAcquired,\n acquireRightsPendingApproval,\n acquireRightsRejected,\n syncAccountsResponse,\n syncGovernanceResponse,\n reportUsageResponse,\n validActionsForStatus,\n MEDIA_BUY_TRANSITIONS,\n CREATIVE_ASSET_TRANSITIONS,\n isLegalMediaBuyTransition,\n isLegalCreativeTransition,\n assertMediaBuyTransition,\n assertCreativeTransition,\n getAccountMode,\n isSandboxOrMockAccount,\n assertSandboxAccount,\n taskToolResponse,\n registerAdcpTaskTool,\n createTaskCapableServer,\n InMemoryTaskStore,\n isTerminal,\n serve,\n UnknownHostError,\n hostname,\n resolveHost,\n verifyIntrospection,\n registerTestController,\n handleTestControllerRequest,\n TestControllerError,\n toMcpResponse,\n TOOL_INPUT_SHAPE,\n CONTROLLER_SCENARIOS,\n DISCOVERY_ARM_SCENARIOS,\n SEED_SCENARIOS,\n SESSION_ENTRY_CAP,\n enforceMapCap,\n createSeedFixtureCache,\n PostgresTaskStore,\n cleanupExpiredTasks,\n getMcpTasksMigration,\n MCP_TASKS_MIGRATION,\n ADCP_PRE_TRANSPORT,\n checkGovernance,\n governanceDeniedError,\n DEFAULT_REPORTING_CAPABILITIES,\n InMemoryStateStore,\n PostgresStateStore,\n getAdcpStateMigration,\n ADCP_STATE_MIGRATION,\n StateError,\n PatchConflictError,\n SESSION_KEY_FIELD,\n createSessionedStore,\n scopedStore,\n patchWithRetry,\n isPutIfMatchConflict,\n requireSessionKey,\n structuredSerialize,\n structuredDeserialize,\n createIdempotencyStore,\n memoryBackend,\n pgBackend,\n getIdempotencyMigration,\n IDEMPOTENCY_MIGRATION,\n cleanupExpiredIdempotency,\n redisBackend,\n createLazyBackend,\n hashPayload,\n getServeRequestContext,\n ADCP_SERVE_REQUEST_CONTEXT,\n createA2AAdapter,\n A2AInvocationError,\n} from './server';\nexport type {\n AdcpErrorOptions,\n AdcpErrorResponse,\n McpToolResponse,\n ValidAction,\n CancelMediaBuyInput,\n AdcpTaskToolConfig,\n TaskStore,\n TaskMessageQueue,\n CreateTaskOptions,\n ToolTaskHandler,\n CreateTaskRequestHandlerExtra,\n TaskRequestHandlerExtra,\n CreateTaskResult,\n GetTaskResult,\n Task,\n ServeContext,\n ServeOptions,\n PgQueryable,\n PostgresTaskStoreOptions,\n TestControllerStore,\n TestControllerStoreFactory,\n TestControllerStoreOrFactory,\n ControllerScenario,\n SeedScenario,\n SeedFixtureCache,\n SessionContext,\n OnInstructionsError,\n MaybePromise,\n AdcpServerConfig,\n AdcpToolMap,\n AdcpServerToolName,\n AdcpCapabilitiesConfig,\n AdcpCustomToolConfig,\n AdcpLogger,\n HandlerContext,\n MediaBuyHandlers,\n SignalsHandlers,\n CreativeHandlers,\n GovernanceHandlers,\n AccountHandlers,\n EventTrackingHandlers,\n SponsoredIntelligenceHandlers,\n SignedRequestsConfig,\n AdcpPreTransport,\n AdcpServer,\n AdcpServerTransport,\n AdcpTestRequest,\n AdcpTestToolsCallRequest,\n AdcpTestResponse,\n CheckGovernanceOptions,\n GovernanceCallResult,\n GovernanceApproved,\n GovernanceDenied,\n GovernanceConditions,\n AdcpStateStore,\n ListOptions as StateListOptions,\n ListResult as StateListResult,\n PostgresStateStoreOptions,\n InMemoryStateStoreOptions,\n VersionedDocument,\n PutIfMatchResult,\n PatchWithRetryOptions,\n StateErrorCode,\n SessionKeyContext,\n IdempotencyStore,\n IdempotencyStoreConfig,\n IdempotencyBackend,\n IdempotencyCacheEntry,\n IdempotencyCheckResult,\n MemoryBackendOptions,\n PgBackendOptions,\n RedisBackendOptions,\n RedisBackendClient,\n RedisLikeClient,\n LazyBackendFactory,\n LazyBackendOptions,\n A2AAdapter,\n A2AAdapterOptions,\n A2AAgentCardOverrides,\n A2AMountOptions,\n ExpressAppLike,\n AccountMode,\n RequireCacheScopeWhenProducts,\n ServerPayload,\n ListCreativeFormatsPayload,\n ListCreativeFormatsResponsePayload,\n ListCreativeFormatsServerPayload,\n SyncCreativesPayload,\n SyncCreativesSuccessPayload,\n SyncCreativesErrorPayload,\n} from './server';\n\n// ====== ERROR HANDLING & RETRY ======\nexport { isRetryable, getRetryDelay } from './utils/retry';\nexport { decideRetry, BuyerRetryPolicy } from './utils/buyer-retry-policy';\nexport type { RetryDecision, RetryContext, RetryDecisionOverride } from './utils/buyer-retry-policy';\n\n// Public API: use these for programmatic error handling\nexport {\n extractAdcpErrorInfo,\n extractCorrelationId,\n resolveRecovery,\n getExpectedAction,\n} from './utils/error-extraction';\n\n// Internal: transport-level extraction (used by SDK internals; prefer result.adcpError instead)\nexport { extractAdcpErrorFromMcp, extractAdcpErrorFromTransport } from './utils/error-extraction';\nexport type { ExtractedAdcpError } from './utils/error-extraction';\nexport { extractVersionUnsupportedDetails } from './utils/error-extraction';\nexport type { VersionUnsupportedDetails } from './utils/error-extraction';\n\n// ====== BACKWARDS COMPATIBILITY ======\n// Deprecated types from past protocol migrations\nexport type {\n BrandManifest,\n BrandManifestReference,\n AssetContentType,\n PromotedProducts,\n PromotedOfferings,\n Measurement,\n} from './types/compat';\nexport { brandManifestToBrandReference, promotedProductsToCatalog, promotedOfferingsToCatalog } from './types/compat';\n\n// Request parameter normalization (deprecated field auto-conversion)\nexport { normalizeRequestParams, normalizePackageParams } from './utils/request-normalizer';\n\n// get_products response cache-scope helpers\nexport {\n ensureGetProductsCacheScope,\n validateGetProductsCacheScope,\n type EnsureGetProductsCacheScopeOptions,\n type GetProductsCacheScope,\n type GetProductsResponseWithCacheScope,\n type GetProductsCacheScopeValidation,\n} from './utils/get-products-cache-scope';\n\n// ====== ENUM VALUE ARRAYS ======\n// `${TypeName}Values` const arrays for every named string-literal union in\n// the spec. Consumers can enumerate or validate against these without\n// duplicating literal lists from the Zod unions.\nexport * from './types/enums.generated';\n\n// `${ParentSchema}_${PropertyName}Values` const arrays for inline\n// anonymous unions inside named schemas — e.g.\n// `ImageAssetRequirements_FormatsValues`,\n// `VideoAssetRequirements_ContainersValues`. Companion to enums.generated;\n// see scripts/generate-inline-enum-arrays.ts for naming + scoping rules.\nexport * from './types/inline-enums.generated';\n\n// PreviewCreativeRequestSchema is now a flat z.object() with request_type discriminant.\n// The old variant exports (PreviewCreativeSingleRequestSchema, etc.) are no longer needed —\n// use PreviewCreativeRequestSchema.shape directly with server.registerTool().\n\n// ====== AUTHENTICATION ======\n// Auth utilities for custom integrations\nexport { getAuthToken, createAdCPHeaders, createMCPAuthHeaders, createAuthenticatedFetch } from './auth';\n\n// OAuth diagnostics utilities (see src/lib/auth/oauth/diagnostics.ts)\nexport {\n parseWWWAuthenticate,\n decodeAccessTokenClaims,\n validateTokenAudience,\n type WWWAuthenticateChallenge,\n type DecodedJWTHeader,\n type DecodedJWTClaims,\n type DecodedAccessToken,\n type TokenAudienceResult,\n InvalidTokenError,\n InsufficientScopeError,\n} from './auth/oauth';\n\n// End-to-end OAuth handshake diagnosis — powers `adcp diagnose-auth`\nexport {\n runAuthDiagnosis,\n AUTH_DIAGNOSIS_SCHEMA_VERSION,\n type DiagnoseOptions,\n type HttpCapture as DiagnosisHttpCapture,\n type DiagnosisStep,\n type Hypothesis as DiagnosisHypothesis,\n type HypothesisVerdict as DiagnosisHypothesisVerdict,\n type AuthDiagnosisReport,\n} from './auth/oauth';\n\n// Zero-config OAuth: actionable error + discovery + file storage + per-agent binding\nexport {\n NeedsAuthorizationError,\n discoverAuthorizationRequirements,\n createFileOAuthStorage,\n bindAgentStorage,\n getAgentStorage,\n unbindAgentStorage,\n type AuthorizationRequirements,\n type DiscoverAuthorizationOptions,\n type FileOAuthStorageOptions,\n} from './auth/oauth';\n\n// OAuth 2.0 client credentials (RFC 6749 §4.4) — machine-to-machine token\n// exchange used by programmatic CC consumers and by the CLI's `--save-auth\n// --oauth-token-url ...` flow. The library call path pre-refreshes before\n// every request automatically when `AgentConfig.oauth_client_credentials`\n// is set; these symbols are exposed for consumers that need explicit\n// control (building custom AgentConfigs, testing, or implementing\n// server-side `save_agent` endpoints like Addie's).\nexport {\n exchangeClientCredentials,\n ensureClientCredentialsTokens,\n ClientCredentialsExchangeError,\n MissingEnvSecretError,\n resolveSecret,\n isEnvSecretReference,\n toEnvSecretReference,\n extractEnvSecretName,\n type ExchangeClientCredentialsOptions,\n type EnsureClientCredentialsOptions,\n type AgentOAuthClientCredentials,\n} from './auth/oauth';\n\n// ====== VALIDATION ======\n// Schema validation for requests/responses\nexport { validateAgentUrl, validateAdCPResponse, getExpectedSchema, handleAdCPResponse } from './validation';\n\n// ====== PROTOCOL CLIENTS ======\n// Low-level protocol clients for MCP and A2A (primarily for testing)\nexport {\n ProtocolClient,\n callMCPTool,\n callA2ATool,\n createMCPClient,\n createA2AClient,\n closeMCPConnections,\n closeOAuthConnections,\n bundleSupportsAdcpVersionField,\n sanitizeTransportHeaders,\n sanitizeTransportUrl,\n} from './protocols';\nexport { toReleasePrecisionWire, validateAdcpVersionWire } from './validation/schema-loader';\nexport type {\n CallToolOptions,\n TransportActivity,\n TransportActivityContext,\n TransportActivityHandler,\n TransportOptions,\n} from './protocols';\n\n// ====== WIRE VERSION HELPERS (NAMESPACE) ======\n// Grouped re-exports of the three AdCP `adcp_version` envelope helpers\n// (spec PR adcontextprotocol/adcp#3493). Prefer this surface over the\n// individual top-level exports — the namespace stays stable as helpers\n// are added (a fourth helper drops in here without churning the barrel).\n// The top-level exports are kept for back-compat and aren't deprecated.\nimport { bundleSupportsAdcpVersionField as _isSupported } from './protocols';\nimport { toReleasePrecisionWire as _normalize, validateAdcpVersionWire as _validate } from './validation/schema-loader';\nexport const wireVersion = {\n isSupported: _isSupported,\n normalize: _normalize,\n validate: _validate,\n} as const;\n\n// ====== RESPONSE UTILITIES ======\n// Public utilities for working with AdCP responses\nexport {\n getStandardFormats,\n unwrapProtocolResponse,\n isAdcpError,\n isAdcpSuccess,\n isTerminalAdcpError,\n hasAdvisorySuccessPayload,\n getAuthoritativeMediaBuyStatus,\n isMediaBuyStatus,\n resolveTaskState,\n} from './utils';\nexport type { EffectiveTaskState, ResolvedTaskState, ResolveTaskStateOptions } from './utils';\nexport { injectLegacyEnvelopeStatus } from './utils/envelope-status-compat';\nexport { extractResult, type ToolCallResultLike } from './utils';\nexport { REQUEST_TIMEOUT, MAX_CONCURRENT, STANDARD_FORMATS } from './utils';\nexport {\n batchPreviewProducts,\n batchPreviewFormats,\n clearPreviewCache,\n type PreviewResult,\n type BatchPreviewOptions,\n type PreviewCacheBackend,\n type PreviewCacheEntry,\n} from './utils';\nexport { detectProtocol, detectProtocolWithTimeout } from './utils';\nexport { A2A_CARD_PATHS, isAgentCardPath, isWellKnownAgentCardUrl, buildCardUrls, stripAgentCardPath } from './utils';\n\n// ====== PRICING UTILITIES ======\n// Pricing adapter for v2/v3 compatibility and CPA detection\nexport { isCPAPricing } from './utils';\n\n// ====== PAGINATION UTILITIES ======\n// Auto-pagination helpers for cursor-based AdCP endpoints\nexport { paginate, paginatePages, type PaginateOptions } from './utils';\n\n// ====== FORMAT ASSET UTILITIES ======\n// Access to format assets (v3 `assets` field)\nexport {\n getFormatAssets,\n getRequiredAssets,\n getOptionalAssets,\n getIndividualAssets,\n getRepeatableGroups,\n usesDeprecatedAssetsField,\n getAssetCount,\n hasAssets,\n} from './utils/format-assets';\n\n// ====== CREATIVE ASSET BUILDERS ======\n// Typed factories that inject the `asset_type` discriminator.\n// `imageAsset({ url, width, height })` returns a valid `ImageAsset`\n// without repeating `asset_type: 'image'` at every call site.\n// Prefer the named exports; use `Asset.image({...})` when constructing\n// several asset types together (assets-by-role manifests).\nexport {\n Asset,\n imageAsset,\n videoAsset,\n audioAsset,\n textAsset,\n urlAsset,\n htmlAsset,\n javascriptAsset,\n cssAsset,\n markdownAsset,\n webhookAsset,\n} from './utils/asset-builders';\n\n// ====== FORMAT ASSET SLOT BUILDERS ======\n// Typed factories for the slot definitions inside `Format.assets[]` — what a\n// seller/publisher declares it accepts. Each builder injects the `item_type`\n// and `asset_type` discriminators, and the `requirements` object is strictly\n// typed per asset_type: misnamed fields (`file_types` vs `formats`) and wrong\n// units (`min_duration_seconds` vs `min_duration_ms`) fail type-check.\n// Use `repeatableGroup({...})` (or `FormatAsset.group(...)`) to wrap assets\n// that repeat — that's the correct home for `min_count` / `max_count`.\nexport {\n FormatAsset,\n imageAssetSlot,\n videoAssetSlot,\n audioAssetSlot,\n textAssetSlot,\n markdownAssetSlot,\n htmlAssetSlot,\n cssAssetSlot,\n javascriptAssetSlot,\n vastAssetSlot,\n daastAssetSlot,\n urlAssetSlot,\n webhookAssetSlot,\n briefAssetSlot,\n catalogAssetSlot,\n repeatableGroup,\n imageGroupAsset,\n videoGroupAsset,\n audioGroupAsset,\n textGroupAsset,\n markdownGroupAsset,\n htmlGroupAsset,\n cssGroupAsset,\n javascriptGroupAsset,\n vastGroupAsset,\n daastGroupAsset,\n urlGroupAsset,\n webhookGroupAsset,\n} from './utils/format-asset-slot-builders';\n\n// ====== PREVIEW RENDER BUILDERS ======\n// Typed factories that inject the `output_format` discriminator on\n// `PreviewRender` objects. `urlRender({ render_id, preview_url, role })`\n// returns a valid url-variant render without repeating\n// `output_format: 'url'` at every call site. Matrix runs consistently\n// saw this drift: Claude emitted renders that omitted the discriminator\n// or its required sibling field.\nexport { Render, urlRender, htmlRender, bothRender } from './utils/render-builders';\n\n// ====== FORMAT RENDER BUILDERS ======\n// Typed factories for `Format.renders[]` entries on format declarations.\n// The item schema's `oneOf` forces a render to satisfy exactly one branch —\n// either `dimensions` (display/video) OR `parameters_from_format_id: true`\n// (audio, template formats). A render with only `{ role }` fails validation.\n// Audio specifically cannot use `{ role, duration_seconds }` — duration is\n// not a recognized `renders[]` field and wouldn't satisfy the oneOf anyway.\n// Use `parameterizedRender({ role })` (or the alias `templateRender`) so\n// format_id parameters carry duration.\n//\n// `FormatRender` below is the grouped namespace (value export). The v3\n// structural interface by the same name is re-exported from\n// `utils/format-renders` further down — TypeScript keeps type and value\n// namespaces separate, so both are available under the single import.\nexport {\n FormatRender,\n displayRender,\n parameterizedRender,\n templateRender,\n type DimensionsRender,\n type ParameterizedRender,\n type RenderItem,\n} from './utils/format-render-builders';\n\n// ====== CANONICAL CREATIVE FORMAT MIGRATION HELPERS ======\n// Author `Product.format_options[]`, v1 `format_id` references, and product\n// cards from one obvious namespace while migrating away from local Format.type\n// and product_card.format_id conventions.\nexport {\n CanonicalFormat,\n type CanonicalFormatDeclaration,\n type CanonicalFormatDeclarationFields,\n type CanonicalFormatKind,\n type CanonicalFormatParams,\n type FormatReferenceInput,\n type ProductCardDetailedFields,\n type ProductCardFields,\n} from './v2/projection';\n\nexport {\n augmentProductWithFormatOptions,\n withFormatOptions,\n toCanonicalOnlyProduct,\n toCanonicalOnlyResponse,\n packageRefsForCapabilities,\n legacyFormatIdsFromOptions,\n tryLegacyFormatIdsFromOptions,\n legacyFormatIdsForCapability,\n canonicalDeclarationFromBareId,\n resolveCanonicalFormatKind,\n CapabilityIdsLookupError,\n type BareFormatIdResolveOptions,\n type CanonicalOnlyProduct,\n type CapabilityIdsLookupErrorCode,\n type PackageFormatRefs,\n type ProjectionDiagnostic,\n type V1FormatId,\n type V1Product,\n type V2AugmentedProduct,\n type V2Product,\n type V2ProductFormatDeclaration,\n} from './v2/projection';\n\n// ====== ACTIVATION KEY BUILDERS ======\n// Typed factories that inject the `type` discriminator on `ActivationKey`.\n// SHAPE-GOTCHAS §1 — `key`/`value` flatten on the activation key itself.\nexport { activationKey, segmentIdActivationKey, keyValueActivationKey } from './utils/activation-key-builders';\n\n// ====== SIGNAL ID BUILDERS AND ACCESSORS ======\n// Typed factories that inject the `source` discriminator on `SignalID`.\n// Used in `signal_ids` filter arrays and as the `signal_id` provenance\n// field on every `Signal` returned by `get_signals`. SHAPE-GOTCHAS §2.\n// To read fields from a received `SignalID`, use `getSignalId` (segment id)\n// and `getSignalIssuer` (data_provider_domain or agent_url).\nexport { signalId, catalogSignalId, agentSignalId, getSignalId, getSignalIssuer } from './utils/signal-id-builders';\nexport {\n buildActivateSignalRequest,\n getSignalActivationId,\n getSignalPricingOptionIds,\n normalizeDiscoveredSignal,\n} from './utils/signal-discovery-helpers';\nexport type {\n BuildActivateSignalRequestOptions,\n DiscoveredSignal,\n NormalizedDiscoveredSignal,\n} from './utils/signal-discovery-helpers';\n\n// ====== BUILD CREATIVE RETURN BUILDERS ======\n// Typed factories for the four return shapes accepted by the framework\n// from `build_creative` handlers. `.single` / `.multi` emit bare manifests\n// the framework auto-wraps; `.singleEnveloped` / `.multiEnveloped` emit\n// the shaped envelope when the handler needs to attach `sandbox` /\n// `expires_at` / `preview`. SHAPE-GOTCHAS §5.\nexport {\n buildCreativeReturn,\n singleBuildCreativeReturn,\n multiBuildCreativeReturn,\n singleEnvelopedBuildCreativeReturn,\n multiEnvelopedBuildCreativeReturn,\n} from './utils/build-creative-return-builders';\n\n// ====== PREVIEW CREATIVE BUILDERS ======\n// Typed factories that inject the `response_type` discriminator on\n// `PreviewCreativeResponse`. Three-way oneOf — `single | batch | variant`.\n// Pair with `urlRender` / `htmlRender` / `bothRender` for the per-render\n// `output_format`. SHAPE-GOTCHAS §4.\nexport {\n previewCreative,\n singlePreviewCreativeResponse,\n batchPreviewCreativeResponse,\n variantPreviewCreativeResponse,\n} from './utils/preview-creative-builders';\n\n// ====== MEDIA BUY DELIVERY NOTIFICATION BUILDERS ======\n// Typed factories that inject the `notification_type` discriminator on\n// `GetMediaBuyDeliveryResponse` for webhook deliveries. Five variants:\n// `scheduled` / `final` / `delayed` / `adjusted` / `window_update`.\nexport {\n mediaBuyDeliveryNotification,\n scheduledMediaBuyDeliveryNotification,\n finalMediaBuyDeliveryNotification,\n delayedMediaBuyDeliveryNotification,\n adjustedMediaBuyDeliveryNotification,\n windowUpdateMediaBuyDeliveryNotification,\n} from './utils/media-buy-delivery-notification-builders';\n\n// ====== V3.0 COMPATIBILITY UTILITIES ======\n// Capabilities detection, version negotiation, and v3 enforcement.\n// See also:\n// - `VersionUnsupportedError` in errors — thrown by requireV3()/requireV3ForMutations\n// - `SyncCreativesItemSchema` in validation — per-item sync_creatives validator\n// - `ADCP_MAJOR_VERSION` / `COMPATIBLE_ADCP_VERSIONS` in version information\n// - `SingleAgentClient#requireV3()` / `AgentClient#requireV3()` — runtime gate\nexport {\n buildSyntheticCapabilities,\n buildSyntheticV3Capabilities,\n parseCapabilitiesResponse,\n supportsV3,\n supportsProtocol,\n supportsPropertyListFiltering,\n supportsContentStandards,\n supportsSyncCreatives,\n requiresOperatorAuth,\n requiresAccountForProducts,\n supportsSandbox,\n supportsExperimentalFeature,\n resolveFeature,\n listDeclaredFeatures,\n MEDIA_BUY_TOOLS,\n SIGNALS_TOOLS,\n GOVERNANCE_TOOLS,\n CREATIVE_TOOLS,\n EVENT_TRACKING_TOOLS,\n ACCOUNT_TOOLS,\n PROTOCOL_TOOLS,\n BRAND_RIGHTS_TOOLS,\n TASK_FEATURE_MAP,\n} from './utils/capabilities';\nexport type {\n AdcpCapabilities,\n AdcpMajorVersion,\n AdcpProtocol,\n AccountCapabilities,\n MediaBuyFeatures,\n ToolInfo,\n FeatureName,\n} from './utils/capabilities';\n\n// Buyer-side creative delivery helpers\nexport { inlineCreativesForPackages } from './utils/creative-delivery';\nexport type {\n InlineCreativeAssignment,\n InlineCreativePackage,\n InlineCreativePackagePatch,\n InlineCreativesForPackagesOptions,\n} from './utils/creative-delivery';\n\n// Creative assignment adapter (v2 creative_ids ↔ v3 creative_assignments)\nexport {\n adaptPackageRequestForV2,\n adaptCreateMediaBuyRequestForV2,\n adaptUpdateMediaBuyRequestForV2,\n normalizePackageResponse,\n normalizeMediaBuyResponse,\n usesV2CreativeIds,\n usesV3CreativeAssignments,\n getCreativeIds,\n getCreativeAssignments,\n} from './utils/creative-adapter';\nexport type { CreativeAssignment } from './utils/creative-adapter';\n\n// Format renders normalizer (v2 dimensions ↔ v3 renders)\nexport {\n normalizeFormatRenders,\n normalizeFormatsResponse,\n getFormatRenders,\n getPrimaryRender,\n getCompanionRenders,\n isMultiRenderFormat,\n usesV2Dimensions,\n usesV3Renders,\n getFormatDimensions,\n} from './utils/format-renders';\n// FormatRender (the v3 structural interface) was renamed to FormatRenderEntry\n// so the `FormatRender` name at the barrel becomes the factory namespace\n// exported from `./utils/format-render-builders` above. The deprecated type\n// alias `FormatRender = FormatRenderEntry` still lives in `utils/format-renders`\n// for callers importing the sub-module directly; it's not re-exported here.\nexport type { FormatRenderEntry, RenderDimensions } from './utils/format-renders';\n\n// Preview response normalizer (v2 output_id ↔ v3 render_id)\nexport {\n normalizePreviewRender,\n normalizePreview,\n normalizePreviewCreativeResponse,\n usesV2RenderFields,\n usesV3RenderFields,\n getRenderId,\n getRenderRole,\n getPrimaryPreviewRender,\n getPreviewUrl,\n getPreviewHtml,\n} from './utils/preview-normalizer';\nexport type { PreviewRenderV3 } from './utils/preview-normalizer';\n\n// ====== TYPE GUARD UTILITIES ======\n// Type guards for automatic TypeScript type narrowing in webhook handlers\nexport {\n // Generic status checks\n isStatusCompleted,\n isStatusWorking,\n isStatusInputRequired,\n isStatusSubmitted,\n isStatusFailed,\n isStatusRejected,\n // GetProducts type guards\n isGetProductsCompleted,\n isGetProductsWorking,\n isGetProductsInputRequired,\n isGetProductsSubmitted,\n isGetProductsFailed,\n // CreateMediaBuy type guards\n isCreateMediaBuyCompleted,\n isCreateMediaBuyWorking,\n isCreateMediaBuyInputRequired,\n isCreateMediaBuySubmitted,\n isCreateMediaBuyFailed,\n // UpdateMediaBuy type guards\n isUpdateMediaBuyCompleted,\n isUpdateMediaBuyWorking,\n isUpdateMediaBuyInputRequired,\n isUpdateMediaBuySubmitted,\n isUpdateMediaBuyFailed,\n // SyncCreatives type guards\n isSyncCreativesCompleted,\n isSyncCreativesWorking,\n isSyncCreativesInputRequired,\n isSyncCreativesSubmitted,\n isSyncCreativesFailed,\n} from './utils/typeGuards';\n\n// ====== VERSION INFORMATION ======\nexport {\n getAdcpVersion,\n getLibraryVersion,\n isCompatibleWith,\n getCompatibleVersions,\n parseAdcpMajorVersion,\n ADCP_VERSION,\n ADCP_MAJOR_VERSION,\n LIBRARY_VERSION,\n COMPATIBLE_ADCP_VERSIONS,\n VERSION_INFO,\n} from './version';\nexport type { AdcpVersion } from './version';\nexport { resolveAdcpVersion } from './utils/adcp-version-config';\n\n// ====== OBSERVABILITY ======\n// OpenTelemetry tracing utilities (no-op if @opentelemetry/api not installed)\nexport {\n getTracer,\n isTracingEnabled,\n injectTraceHeaders,\n withSpan,\n addSpanAttributes,\n recordSpanException,\n} from './observability';\n\n// ====== AGENT CLASSES ======\n// Primary agent interface - returns raw AdCP responses\nexport { Agent, AgentCollection } from './agents/index.generated';\n\n// ====== SERVER-SIDE ADAPTERS ======\n// Adapters for building AdCP servers with customizable business logic\nexport {\n // Content Standards\n ContentStandardsAdapter,\n type IContentStandardsAdapter,\n type ContentEvaluationResult,\n ContentStandardsErrorCodes,\n isContentStandardsError,\n defaultContentStandardsAdapter,\n // Property Lists\n PropertyListAdapter,\n type IPropertyListAdapter,\n type ResolvedProperty,\n PropertyListErrorCodes,\n isPropertyListError,\n defaultPropertyListAdapter,\n // Sponsored Intelligence Sessions\n SISessionManager,\n AISISessionManager,\n type ISISessionManager,\n type SISession,\n SIErrorCodes,\n defaultSISessionManager,\n // Governance (seller-side committed checks)\n GovernanceAdapter,\n defaultGovernanceAdapter,\n type IGovernanceAdapter,\n type GovernanceAdapterConfig,\n type GovernanceAdapterErrorCode,\n type CommittedCheckRequest,\n GovernanceAdapterErrorCodes,\n isGovernanceAdapterError,\n // Implicit Account Store (resolution: 'implicit') — Shape A reference adapter\n InMemoryImplicitAccountStore,\n defaultImplicitKeyFn,\n type ImplicitAccountStoreOptions,\n // OAuth pass-through resolver — Shape B accounts.resolve factory\n createOAuthPassthroughResolver,\n type OAuthPassthroughResolverOptions,\n // Roster-backed AccountStore — Shape C factory for publisher-curated explicit platforms\n createRosterAccountStore,\n type RosterAccountStoreOptions,\n // Derived AccountStore — Shape D factory for single-tenant `resolution: 'derived'` agents\n createDerivedAccountStore,\n type DerivedAccountStoreOptions,\n} from './adapters';\n\n// ====== BACKWARD COMPATIBILITY & ENVIRONMENT LOADING ======\n\nimport type { AgentConfig } from './types';\nimport { ADCPMultiAgentClient } from './core/ADCPMultiAgentClient';\n\n/**\n * Legacy AdCPClient alias for backward compatibility\n * @deprecated Use ADCPMultiAgentClient instead for new code\n */\nexport const AdCPClient = ADCPMultiAgentClient;\n\n// Legacy configuration manager maintained for backward compatibility\n// The enhanced ConfigurationManager is exported above\n\n/**\n * Legacy createAdCPClient function for backward compatibility\n * @deprecated Use new ADCPMultiAgentClient constructor instead\n */\nexport function createAdCPClient(agents?: AgentConfig[]): ADCPMultiAgentClient {\n return new AdCPClient(agents);\n}\n\n/**\n * Load agents from environment and create multi-agent client\n * @deprecated Use ADCPMultiAgentClient.fromEnv() instead\n */\nexport function createAdCPClientFromEnv(): ADCPMultiAgentClient {\n return ADCPMultiAgentClient.fromEnv();\n}\n\n// ====== SUBSTITUTION OBSERVER / ENCODER ======\n// Primitives backing the `substitution-observer-runner` test-kit contract.\n// Runners (conformance graders) import the observer side; sales/retail-\n// media agents implementing the #2620 catalog-item macro encoding rule\n// import `SubstitutionEncoder`. Re-exported here for discoverability;\n// the full surface is also available via `@adcp/sdk/substitution`.\nexport {\n SubstitutionObserver,\n SubstitutionEncoder,\n PreviewFetchError,\n MacroInRawValueError,\n CATALOG_MACRO_VECTORS,\n getCatalogMacroVector,\n extractTrackerUrls,\n matchBindings,\n assertRfc3986Safe,\n assertUnreservedOnly,\n assertNoNestedExpansion,\n assertSchemePreserved,\n DEFAULT_MACRO_PROHIBITED_PATTERN,\n enforceSsrfPolicy,\n enforceSsrfPolicyResolved,\n DEFAULT_SSRF_POLICY,\n encodeUnreserved,\n equalUnderHexCasePolicy,\n isUnreservedOnly,\n divergenceOffset,\n translateUniversalMacros,\n} from './substitution';\nexport type {\n ObserverFetchOptions,\n ObserverDispatcher,\n CatalogMacroVectorName,\n AssertionOptions as SubstitutionAssertionOptions,\n AssertionResult as SubstitutionAssertionResult,\n BindingMatch,\n CatalogBinding,\n CatalogMacroVector,\n PolicyResult as SubstitutionPolicyResult,\n SsrfPolicy,\n TrackerUrlRecord,\n MacroMapping,\n TranslateResult,\n} from './substitution';\n\n// ====== TEST HELPERS ======\n// Re-export test helpers for convenience (also available via @adcp/sdk/testing)\nexport {\n testAgent,\n testAgentA2A,\n testAgentClient,\n createTestAgent,\n TEST_AGENT_TOKEN,\n TEST_AGENT_MCP_CONFIG,\n TEST_AGENT_A2A_CONFIG,\n testAgentNoAuth,\n testAgentNoAuthA2A,\n TEST_AGENT_NO_AUTH_MCP_CONFIG,\n TEST_AGENT_NO_AUTH_A2A_CONFIG,\n creativeAgent,\n testBrandRightsFlow,\n hasBrandRightsTools,\n expectControllerError,\n expectControllerSuccess,\n RateLimitTripObserver,\n RATE_LIMIT_TRIP_CONTRACT,\n RATE_LIMIT_TRIP_DEFAULT_REPLAY_MAX_WAIT_SECONDS,\n RATE_LIMIT_TRIP_MAX_ATTEMPTS_MAX,\n RATE_LIMIT_TRIP_MAX_ATTEMPTS_MIN,\n validateRateLimitTripSpec,\n} from './testing/index';\nexport type {\n ControllerErrorWithDetail,\n TestClient,\n RateLimitTripSpec,\n RateLimitTripClient,\n RateLimitTripFailureCode,\n RateLimitTripObservation,\n RateLimitTripObserverOptions,\n RateLimitTripResponseSnapshot,\n RateLimitTripStructuredResult,\n RateLimitTripTaskOptions,\n} from './testing/index';\n"],"mappings":";;;;;;AAIA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAiBP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AA0GP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAgCP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP;AAAA,EACE;AAAA,OAIK;AACP;AAAA,EACE;AAAA,OAYK;AAkBP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP;AAAA,EACE;AAAA,OAOK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAIK;AAIP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAUP;AAAA,EACE;AAAA,OAIK;AACP,SAAS,sBAAsB,kCAAkC;AACjE,SAAS,4BAA4B;AACrC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,oBAAoB;AAC7B,SAAS,OAAO,mBAAmB;AAEnC,SAAS,wBAAwB,gBAAgB,mBAAoC;AACrF;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AAsCP,SAAS,4BAA4B;AAOrC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAOP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAKP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAiBK;AAsBP,SAAS,yBAAyB;AAclC,SAAS,cAAc,0BAA0B;AAGjD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAWP,cAAc;AAcd,SAAS,eAAe,qBAAqB,iCAAiC;AAG9E;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACmB;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAoDP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,0BAA0B;AAGnC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,cAAc,2BAA2B;AAClD,SAAS,6CAA6C;AAGtD,cAAc;AAgRd,SAAS,iBAAiB,0BAA0B;AAKpD,SAAS,sBAAsB,qBAAqB,wBAAwB;AAK5E;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AA+FP,SAAS,aAAa,qBAAqB;AAC3C,SAAS,aAAa,wBAAwB;AAI9C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,yBAAyB,qCAAqC;AAEvE,SAAS,wCAAwC;AAajD,SAAS,+BAA+B,2BAA2B,kCAAkC;AAGrG,SAAS,wBAAwB,8BAA8B;AAG/D;AAAA,EACE;AAAA,EACA;AAAA,OAKK;AAMP,cAAc;AAOd,cAAc;AAQd,SAAS,cAAc,mBAAmB,sBAAsB,gCAAgC;AAGhG;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EAMA;AAAA,EACA;AAAA,OACK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,OAOK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AASP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAIP,SAAS,kBAAkB,sBAAsB,mBAAmB,0BAA0B;AAI9F;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,wBAAwB,+BAA+B;AAehE,SAAS,kCAAkC,oBAAoB;AAC/D,SAAS,0BAA0B,YAAY,2BAA2B,iBAAiB;AACpF,MAAM,cAAc;AAAA,EACzB,aAAa;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AACZ;AAIA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,kCAAkC;AAC3C,SAAS,qBAA8C;AACvD,SAAS,iBAAiB,gBAAgB,wBAAwB;AAClE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AACP,SAAS,gBAAgB,iCAAiC;AAC1D,SAAS,gBAAgB,iBAAiB,yBAAyB,eAAe,0BAA0B;AAI5G,SAAS,oBAAoB;AAI7B,SAAS,UAAU,qBAA2C;AAI9D;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAQP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAUP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AASP,SAAS,QAAQ,WAAW,YAAY,kBAAkB;AAgB1D;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAMP;AAAA,EACE;AAAA,OAQK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAWK;AAKP,SAAS,eAAe,wBAAwB,6BAA6B;AAQ7E,SAAS,UAAU,iBAAiB,eAAe,aAAa,uBAAuB;AACvF;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAaP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAOP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAMP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AASP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAYP,SAAS,kCAAkC;AAS3C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAIP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AASP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAKP;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,0BAA0B;AAInC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAIP,SAAS,OAAO,uBAAuB;AAIvC;AAAA,EAEE;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAKA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAGA;AAAA,EAGA;AAAA,EAGA;AAAA,OAEK;AAKP,SAAS,wBAAAA,6BAA4B;AAM9B,MAAM,aAAaA;AASnB,SAAS,iBAAiB,QAA8C;AAC7E,SAAO,IAAI,WAAW,MAAM;AAC9B;AAMO,SAAS,0BAAgD;AAC9D,SAAOA,sBAAqB,QAAQ;AACtC;AAQA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAmBP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":["ADCPMultiAgentClient"]}
|
|
1
|
+
{"version":3,"sources":["../../src/lib/index.ts"],"sourcesContent":["// AdCP Client Library - Main Exports\n// A comprehensive type-safe client library for the AdContext Protocol\n\n// ====== REGISTRY LOOKUPS ======\nexport {\n RegistryClient,\n RegistrySync,\n PropertyRegistry,\n InMemoryCursorStore,\n FileCursorStore,\n buildCommunityMirrorAdagents,\n} from './registry';\nexport type {\n RegistrySyncConfig,\n RegistrySyncState,\n RegistrySyncTransport,\n RegistrySyncEvents,\n AgentFilter,\n RegistrySyncProperty,\n CursorStore,\n PropertyRegistryConfig,\n FeedStreamQuery,\n FeedStreamMessage,\n FeedHeartbeat,\n FeedStreamErrorData,\n OpenFeedStreamOptions,\n FeedFreshness,\n} from './registry';\nexport {\n openFeedStream,\n parseSseStream,\n sanitizeStreamText,\n DEFAULT_MAX_SSE_FRAME_BYTES,\n FeedStreamError,\n FeedStreamUnsupportedError,\n FeedStreamCursorExpiredError,\n FeedStreamHttpError,\n FeedStreamParseError,\n} from './registry';\nexport type {\n ResolvedBrand,\n BrandHierarchyResolution,\n BrandHierarchyBulkResolution,\n ResolveBrandHierarchyOptions,\n ResolvedProperty as ResolvedRegistryProperty,\n PropertyInfo,\n RegistryClientConfig,\n SaveBrandRequest,\n SaveBrandResponse,\n BrandLogoReviewStatus,\n ApprovedBrandLogoAsset,\n PendingBrandLogoAsset,\n ReviewedBrandLogoAsset,\n BrandLogoAsset,\n ListBrandLogosOptions,\n ListBrandLogosResponse,\n SaveBrandLogoInput,\n SaveBrandLogoResponse,\n UploadBrandLogoInput,\n UploadBrandLogoResponse,\n SavePropertyIdentity,\n RegistryPropertyIdentity,\n SavePropertyRequest,\n SavePropertyResponse,\n ResolveIdentifiersRequest,\n ResolveIdentifiersResponse,\n FileCatalogDisputeRequest,\n FileCatalogDisputeResponse,\n GetCatalogDisputeResponse,\n BrandRegistryItem,\n PropertyRegistryItem,\n ValidationResult as RegistryValidationResult,\n FederatedAgentWithDetails,\n FederatedPublisher,\n DomainLookupResult,\n ListBrandsOptions,\n ListBrandsResponse,\n GetBrandJsonResponse,\n ListOptions,\n ListAgentsOptions,\n ListAgentsResponse,\n ListPublishersResponse,\n ValidateAdagentsRequest,\n ValidateAdagentsResponse,\n CreateAdagentsRequest,\n CreateAdagentsResponse,\n AdagentsAuthorizedAgent,\n AdagentsCatalogFormat,\n AdagentsPlacementDefinition,\n AdagentsPlacementFormatReference,\n AdagentsPlacementFormatOption,\n AdagentsPlacementTag,\n CreatedAdagentsJson,\n CommunityMirrorAdagentsConfig,\n CreateCommunityMirrorAdagentsConfig,\n CommunityMirrorAdagentsCatalog,\n PublishCommunityMirrorAdagentsResponse,\n CommunityMirrorAdagentsSummary,\n ListCommunityMirrorAdagentsResponse,\n GetCommunityMirrorAdagentsResponse,\n PublishCommunityMirrorAdagentsRequest,\n PublishCommunityMirrorAdagentsError,\n DeleteCommunityMirrorAdagentsResponse,\n PublisherPropertySelector,\n CompanySearchResult,\n FindCompanyResult,\n ManagerRevalidationRequest,\n ManagerRevalidationResponse,\n ListPoliciesQuery,\n ListPoliciesResponse,\n ResolvePolicyQuery,\n ResolvePolicyResponse,\n ResolvePoliciesBulkRequest,\n ResolvePoliciesBulkResponse,\n GetPolicyHistoryQuery,\n GetPolicyHistoryResponse,\n SavePolicyRequest,\n SavePolicyResponse,\n GetBrandHistoryQuery,\n GetBrandHistoryResponse,\n GetPropertyHistoryQuery,\n GetPropertyHistoryResponse,\n RegistryFeedEvent,\n AgentEventPayload,\n PropertyEventPayload,\n CollectionEventPayload,\n AuthorizationEventPayload,\n PublisherEventPayload,\n BrandEventPayload,\n CatalogBrowseResponse,\n CatalogBrowseEntry,\n CatalogSyncResponse,\n CatalogSyncEntry,\n AgentCompliance,\n AgentComplianceDetail,\n StoryboardStatus,\n OperatorLookupResult,\n PublisherLookupResult,\n ComplianceChangedPayload,\n GetAgentStoryboardStatusResponse,\n GetAgentStoryboardStatusBulkResponse,\n} from './registry';\n\n// ====== BRAND JSON HELPERS ======\nexport {\n COMMON_LOGO_SLOTS,\n applyBrandAssetMappings,\n checkLogoSlotCoverage,\n extractBrandWebsiteAliasDomains,\n extractBrandWebsiteAliases,\n selectLogoForSlot,\n updateBrandJsonFromMappings,\n validateBrandAssetMappings,\n} from './brand';\nexport type {\n AppliedBrandAssetMapping,\n ApplyBrandAssetMappingsOptions,\n ApplyBrandAssetMappingsResult,\n BrandAssetCandidate,\n BrandAssetCropBox,\n BrandAssetExtractionMethod,\n BrandAssetMapping,\n BrandAssetMappingIssue,\n BrandAssetMappingTarget,\n BrandAssetMappingValidationResult,\n BrandAssetReviewStatus,\n BrandWebsiteAlias,\n BrandWebsiteAliasRelationship,\n BrandWebsiteAliasSource,\n BrandJsonRecord,\n BrandLogoBackground,\n BrandLogoOrientation,\n BrandLogoProposal,\n BrandLogoVariant,\n ExtractBrandWebsiteAliasesOptions,\n LogoSelectionOptions,\n LogoSlotCoverage,\n LogoSlotCoverageOptions,\n ResolveBrandAssetUrl,\n SkippedBrandAssetMapping,\n UpdateBrandJsonFromMappingsOptions,\n UpdateBrandJsonFromMappingsResult,\n} from './brand';\n\n// ====== PROPERTY DISCOVERY (AdCP v2.2.0) ======\nexport {\n PropertyIndex,\n getPropertyIndex,\n resetPropertyIndex,\n type PropertyMatch,\n type AgentAuthorization,\n} from './discovery/property-index';\nexport {\n PropertyCrawler,\n type AgentInfo,\n type CrawlResult,\n type PropertyCrawlerConfig,\n} from './discovery/property-crawler';\nexport {\n NetworkConsistencyChecker,\n type NetworkConsistencyCheckerConfig,\n type NetworkCheckReport,\n type CheckSummary,\n type CheckProgress,\n type OrphanedPointer,\n type StalePointer,\n type MissingPointer,\n type SchemaError,\n type AgentHealthResult,\n type DomainDetail,\n type DomainStatus,\n} from './discovery/network-consistency-checker';\nexport type {\n Property,\n PropertyIdentifier,\n PropertyIdentifierType,\n PropertyType,\n AdAgentsJson,\n AuthorizedAgent,\n AuthorizationType,\n // Aliased: the registry types also export a `PublisherPropertySelector`\n // (registry-flat shape with no `selection_type` discriminator). The\n // adagents.json schema's variant is a discriminated union, so we\n // expose it under a distinct name to avoid clobbering the registry\n // type that's been part of the public API longer.\n PublisherPropertySelector as AdAgentsPublisherPropertySelector,\n SinglePublisherPropertySelector,\n CompactPublisherPropertySelector,\n} from './discovery/types';\nexport {\n parsePublisherPropertySelector,\n expandPublisherPropertySelector,\n expandPublisherPropertySelectors,\n isCompactPublisherPropertySelector,\n publisherDomainsCoveredBySelectors,\n PublisherPropertySelectorParseError,\n type PublisherPropertySelectorError,\n} from './discovery/publisher-property-selector';\nexport {\n resolveAgentProperties,\n listAgentPropertyMap,\n getAllProperties,\n canonicalizeAgentUrl,\n type ResolvedAgentScope,\n type ResolveUnresolvableReason,\n} from './discovery/resolve-agent-properties';\nexport {\n resolveInlinePublisherProperties,\n resolveSingularInline,\n detectInlineFederatedDivergence,\n type InlineResolutionResult,\n type InlineFederatedDivergence,\n} from './discovery/inline-publisher-properties';\nexport {\n fetchAgentAuthorizationsFromDirectory,\n type AgentAuthorizationsIterator,\n type FetchAgentAuthorizationsOptions,\n type DirectoryLookupPage,\n type DirectoryPublisherEntry,\n type DirectoryDiscoveryMethod,\n type DirectoryPublisherStatus,\n} from './discovery/agent-directory';\nexport {\n validateAdAgents,\n parseManagerDomain,\n type DiscoveryMethod,\n type AdAgentsValidationResult,\n type ValidateAdAgentsOptions,\n} from './discovery/validate-adagents';\n\n// ====== CORE CONVERSATION-AWARE CLIENTS ======\n// New conversation-aware clients with input handler pattern\nexport {\n SingleAgentClient,\n WebhookDispatchError,\n createSingleAgentClient,\n UnsupportedFeatureError,\n} from './core/SingleAgentClient';\nexport type {\n ClientProductPropertyPolicy,\n SingleAgentClientConfig,\n VerifyAndParseWebhookOptions,\n WebhookParseErrorCode,\n WebhookParseFailure,\n WebhookParseResult,\n WebhookParseSuccess,\n} from './core/SingleAgentClient';\nexport {\n AgentClient,\n type TaskResponseTypeMap,\n type AdcpTaskName,\n type InProcessAgentClientConfig,\n} from './core/AgentClient';\nexport { ADCPMultiAgentClient, createADCPMultiAgentClient } from './core/ADCPMultiAgentClient';\nexport { ConfigurationManager } from './core/ConfigurationManager';\nexport {\n CreativeAgentClient,\n createCreativeAgentClient,\n STANDARD_CREATIVE_AGENTS,\n type CreativeFormat,\n type CreativeAgentClientConfig,\n} from './core/CreativeAgentClient';\nexport { TaskExecutor } from './core/TaskExecutor';\nexport { match, attachMatch } from './core/match';\nexport type { MatchHandlers, PartialMatchHandlers } from './core/match';\nexport { ProtocolResponseParser, responseParser, ADCP_STATUS, type ADCPStatus } from './core/ProtocolResponseParser';\nexport {\n ResponseValidator,\n responseValidator,\n type ValidationResult,\n type ValidationOptions,\n} from './core/ResponseValidator';\n// ====== CONVERSATION TYPES ======\nexport type {\n Message,\n InputRequest,\n InputHandler,\n InputHandlerResponse,\n ConversationContext,\n TaskOptions,\n WebhookToolPredicate,\n WebhookUrlTemplate,\n TaskResult,\n TaskResultCompleted,\n TaskResultIntermediate,\n TaskResultFailure,\n TaskResultMetadata,\n TaskState,\n TaskStatus,\n ConversationConfig,\n AdcpErrorInfo,\n AdcpValidationIssue,\n} from './core/ConversationTypes';\n\n// ====== GOVERNANCE ======\n// Buyer-side: GovernanceConfig + GovernanceMiddleware handle check → execute → report automatically.\n// Seller-side: GovernanceAdapter runs committed checks before executing media buys.\n// Types: GovernanceCheckResult, GovernanceOutcome are attached to TaskResult when governance is active.\n\n// Buyer-side middleware types\nexport type {\n GovernanceConfig,\n CampaignGovernanceConfig,\n GovernanceCheckResult,\n GovernanceOutcome,\n GovernanceFinding,\n GovernanceCondition,\n GovernanceEscalation,\n} from './core/GovernanceTypes';\nexport { GovernanceMiddleware } from './core/GovernanceMiddleware';\nexport type { GovernanceDebugEntry } from './core/GovernanceMiddleware';\n\n// ====== GOVERNANCE PLAN HELPERS ======\n// Invariants the schema encodes via if/then / oneOf that generated types\n// typically drop: budget reallocation autonomy and regulated-vertical\n// human review under GDPR Art 22 / EU AI Act Annex III.\nexport {\n buildHumanReviewPlan,\n buildHumanOverride,\n validateGovernancePlan,\n REGULATED_HUMAN_REVIEW_CATEGORIES,\n ANNEX_III_POLICY_IDS,\n} from './governance';\n\n// ====== NETWORKING / SSRF GUARDS ======\n// Public so adopters can converge on the SDK's DNS-pinning and address\n// classification behavior instead of copying partial guards. Use\n// `ssrfSafeFetch` as the security boundary; address classifiers are advisory\n// helpers and do not protect raw fetches from DNS rebinding.\nexport {\n ssrfSafeFetch,\n decodeBodyAsJsonOrText,\n SSRF_TRANSIENT_CODES,\n SsrfRefusedError,\n isPrivateIp,\n isAlwaysBlocked,\n isLikelyPrivateUrl,\n type SsrfRefusedCode,\n type SsrfFetchOptions,\n type SsrfFetchResult,\n} from './net';\n\n// ====== CANONICAL REFERENCE RESOLUTION ======\n// Safe, structured resolver for AdCP 3.1 `format_schema` and\n// `platform_extensions` URI+SHA-256 references.\nexport {\n createCanonicalReferenceCache,\n createCanonicalReferenceResolver,\n canonicalReferenceCacheKey,\n resolveCanonicalReference,\n resolveFormatSchemaReference,\n resolvePlatformExtensionsReference,\n type CanonicalReference,\n type CanonicalReferenceCache,\n type CanonicalReferenceError,\n type CanonicalReferenceErrorCode,\n type CanonicalReferenceFailureResult,\n type CanonicalReferenceKind,\n type CanonicalReferenceResolveOptions,\n type CanonicalReferenceResolvedResult,\n type CanonicalReferenceResolver,\n type CanonicalReferenceResolverOptions,\n type CanonicalReferenceResult,\n type CanonicalReferenceStatus,\n type ExternalRefDigestMap,\n type FormatSchemaReferenceResolvedResult,\n type FormatSchemaReferenceResult,\n type PlatformExtensionsReferenceResult,\n} from './canonical-references';\nexport type {\n BuildHumanReviewPlanInput,\n BuildHumanOverrideInput,\n DataSubjectContestation,\n GovernancePlan,\n GovernanceValidationIssue,\n HumanOverride,\n PlanBudget,\n ReallocationAutonomy,\n} from './governance';\n\n// ====== TASK EVENT TYPES ======\nexport type {\n BaseTaskEvent,\n ProtocolRequestEvent,\n ProtocolResponseEvent,\n TaskStatusEvent,\n ObjectEvent,\n TaskEvent,\n TaskEventCallbacks,\n} from './core/TaskEventTypes';\nexport { createOperationId } from './core/TaskEventTypes';\n\n// ====== ASYNC HANDLER ======\nexport type {\n AsyncHandlerConfig,\n WebhookMetadata,\n Activity,\n NotificationMetadata,\n MediaBuyDeliveryNotification,\n CreateMediaBuyStatusChangeHandler,\n UpdateMediaBuyStatusChangeHandler,\n SyncCreativesStatusChangeHandler,\n GetProductsStatusChangeHandler,\n} from './core/AsyncHandler';\nexport { AsyncHandler, createAsyncHandler } from './core/AsyncHandler';\n\n// ====== WHOLESALE FEED WEBHOOKS ======\nexport {\n normalizeWholesaleFeedWebhookNotification,\n parseWholesaleFeedWebhookNotification,\n WholesaleFeedWebhookNotificationError,\n} from './wholesale-feed-sync/webhook-notification';\nexport type {\n NormalizedWholesaleFeedWebhookNotification,\n WholesaleFeedWebhookAffectedEntityType,\n WholesaleFeedWebhookCacheScope,\n WholesaleFeedWebhookNotificationErrorCode,\n WholesaleFeedWebhookNotificationErrorDetails,\n WholesaleFeedWebhookNotificationType,\n} from './wholesale-feed-sync/webhook-notification';\n\n// ====== INPUT HANDLERS ======\nexport * from './handlers/types';\n\n// ====== STORAGE INTERFACES ======\nexport type {\n Storage,\n BatchStorage,\n PatternStorage,\n AgentCapabilities,\n ConversationState,\n DeferredTaskState,\n StorageConfig,\n StorageFactory,\n StorageMiddleware,\n} from './storage/interfaces';\nexport { MemoryStorage, createMemoryStorage, createMemoryStorageConfig } from './storage/MemoryStorage';\n\n// ====== ERROR CLASSES ======\nexport {\n ADCPError,\n TaskTimeoutError,\n MaxClarificationError,\n DeferredTaskError,\n TaskAbortedError,\n AgentNotFoundError,\n UnsupportedTaskError,\n ProtocolError,\n ValidationError as ADCPValidationError, // Rename to avoid conflict\n MissingInputHandlerError,\n InvalidContextError,\n ConfigurationError,\n AuthenticationRequiredError,\n FeatureUnsupportedError,\n ProtocolFeatureUnsupportedError,\n SDK_ERROR_TO_PROTOCOL_ERROR_CODE,\n VersionUnsupportedError,\n IdempotencyConflictError,\n IdempotencyExpiredError,\n ResponseTooLargeError,\n ActionNotAllowedError,\n adcpErrorToTypedError,\n getClientPreflightAdcpError,\n isADCPError,\n isErrorOfType,\n extractErrorInfo,\n is401Error,\n mapSdkErrorCodeToProtocolErrorCode,\n} from './errors';\nexport type {\n OAuthMetadataInfo,\n ClientPreflightAdcpErrorInfo,\n ClientPreflightAdcpErrorRecovery,\n FeatureUnsupportedErrorOptions,\n ProtocolFeatureUnsupportedErrorOptions,\n ActionNotAllowedErrorDetails,\n ActionNotAllowedReasonValue,\n ActionNotAllowedAttemptedAction,\n ActionNotAllowedAvailableAction,\n ActionNotAllowedRecovery,\n} from './errors';\n\n// ====== MEDIA BUY ACTIONS (AdCP 3.1 / RFC #4480) ======\n// Wire-shape action types are generated; helper result/context types live in\n// the media-buy helper module.\nexport type {\n ActionNotAllowedDetails,\n ActionNotAllowedReason,\n AvailableActionsResult,\n AvailableActionsSource,\n DecomposedUpdateMediaBuy,\n DecomposedUpdateMediaBuyMutation,\n LegacyCoarseAction,\n MediaBuyActionContext,\n MediaBuyActionMode,\n MediaBuyAvailableAction,\n MediaBuyMutationDirection,\n MediaBuyMutationScope,\n MediaBuyValidAction,\n ModeMismatchRecovery,\n PreflightAllowed,\n PreflightDenial,\n PreflightDenied,\n BuyerPropertyPolicy,\n NormalizedPolicyDomain,\n ProductPolicyProductLike,\n ProductPropertyPolicyDiagnostic,\n ProductPropertyPolicyDiagnosticCode,\n ProductPropertyPolicyDiagnosticSeverity,\n ProductPropertyPolicyMode,\n ProductPropertyPolicySelectorBehavior,\n ProductPropertyPolicyValidationResult,\n PreflightResult,\n ResolvedAction,\n SLAWindow,\n SlaWindow,\n ValidateProductsAgainstPropertyPolicyOptions,\n UpdateFieldEntry,\n UpdateMediaBuyRequestLike,\n} from './media-buy';\nexport {\n ACTIONS_BY_FIELD,\n LEGACY_COARSE_ACTIONS,\n UPDATE_FIELDS_BY_ACTION,\n canAddPackages,\n canCancel,\n canDecreaseBudget,\n canExtendFlight,\n canIncreaseBudget,\n canPause,\n canReallocateBudget,\n canRemoveCreative,\n canRemovePackages,\n canReplaceCreative,\n canResume,\n canShortenFlight,\n canUpdateCreativeAssignments,\n canUpdateFlightDates,\n canUpdateFrequencyCaps,\n canUpdatePacing,\n canUpdateTargeting,\n decomposeUpdateMediaBuy,\n findAvailableAction,\n getActionForMutation,\n getAvailableActions,\n getRollupParent,\n ProductPropertyPolicyError,\n normalizeDomainForPropertyPolicy,\n preflightUpdateMediaBuy,\n recoveryForModeMismatch,\n validateProductsAgainstPropertyPolicy,\n} from './media-buy';\nexport { InputRequiredError } from './core/TaskExecutor';\n\n// ====== IDEMPOTENCY ======\nexport {\n generateIdempotencyKey,\n isMutatingTask,\n isValidIdempotencyKey,\n useIdempotencyKey,\n redactIdempotencyKey,\n IDEMPOTENCY_KEY_PATTERN,\n MUTATING_TASKS,\n} from './utils/idempotency';\nexport type { IdempotencyCapabilities } from './utils/capabilities';\nexport type { MutatingRequestInput } from './utils/idempotency';\nexport { canonicalize, canonicalJsonSha256 } from './utils/jcs';\nexport { rollupOptimizationMetricsFromProducts } from './utils/capability-rollups';\n\n// ====== CORE TYPES ======\nexport * from './types';\n\n// ====== TOOL TYPES ======\n// Request and response types for each AdCP tool.\n//\n// Naming convention:\n// {ToolName}Request -- parameters for a tool call (e.g., CreateMediaBuyRequest)\n// {ToolName}Response -- return value; often a union of {ToolName}Success | {ToolName}Error\n//\n// Nested domain types within requests use a Request suffix when the shape\n// differs from the response version:\n// PackageRequest -- creation-shaped (required: buyer_ref, product_id, budget, pricing_option_id)\n// Package -- response-shaped from core.generated (has package_id, most fields optional)\n//\n// Platform implementors: use Request types to type incoming tool calls,\n// Response types to shape your return values.\n// Runtime Zod schemas live at `@adcp/sdk/schemas` to keep ordinary root\n// imports from loading the generated schema declaration bundle.\nexport type {\n // Media Buy Domain\n GetProductsRequest,\n GetProductsResponse,\n ListCreativeFormatsRequest,\n ListCreativeFormatsResponse,\n CreateMediaBuyRequest,\n CreateMediaBuyResponse,\n CreateMediaBuySuccess,\n CreateMediaBuyError,\n CreateMediaBuySubmitted,\n UpdateMediaBuyRequest,\n UpdateMediaBuyResponse,\n UpdateMediaBuySuccess,\n UpdateMediaBuyError,\n SyncCreativesRequest,\n SyncCreativesResponse,\n SyncCreativesSuccess,\n SyncCreativesError,\n SyncCreativesSubmitted,\n SyncAudiencesRequest,\n SyncAudiencesResponse,\n SyncAudiencesSuccess,\n SyncAudiencesError,\n ListCreativesRequest,\n ListCreativesResponse,\n CreativeFilters,\n GetMediaBuyDeliveryRequest,\n GetMediaBuyDeliveryResponse,\n ProvidePerformanceFeedbackRequest,\n ProvidePerformanceFeedbackResponse,\n ProvidePerformanceFeedbackSuccess,\n ProvidePerformanceFeedbackError,\n // Signals Domain\n GetSignalsRequest,\n GetSignalsResponse,\n ActivateSignalRequest,\n ActivateSignalResponse,\n ActivateSignalSuccess,\n ActivateSignalError,\n CpmPricing,\n PercentOfMediaPricing,\n FlatFeePricing,\n PerUnitPricing,\n CustomPricing,\n VendorPricing,\n VendorPricingOption,\n // Pricing variants for products (publisher rate cards in get_products etc.)\n // PricingOption + CPAPricingOption are exported below near the other tool types.\n CPMPricingOption,\n VCPMPricingOption,\n CPCPricingOption,\n CPCVPricingOption,\n CPVPricingOption,\n CPPPricingOption,\n FlatRatePricingOption,\n TimeBasedPricingOption,\n // Governance Domain - Property Lists\n CreatePropertyListRequest,\n CreatePropertyListResponse,\n UpdatePropertyListRequest,\n UpdatePropertyListResponse,\n GetPropertyListRequest,\n GetPropertyListResponse,\n ListPropertyListsRequest,\n ListPropertyListsResponse,\n DeletePropertyListRequest,\n DeletePropertyListResponse,\n PropertyList,\n PropertyListFilters,\n // Governance Domain - Content Standards\n ListContentStandardsRequest,\n ListContentStandardsResponse,\n GetContentStandardsRequest,\n GetContentStandardsResponse,\n CreateContentStandardsRequest,\n CreateContentStandardsResponse,\n UpdateContentStandardsRequest,\n UpdateContentStandardsResponse,\n UpdateContentStandardsSuccess,\n UpdateContentStandardsError,\n CalibrateContentRequest,\n CalibrateContentResponse,\n ValidateContentDeliveryRequest,\n ValidateContentDeliveryResponse,\n ContentStandards,\n Artifact,\n // Governance Domain - Campaign Governance\n SyncPlansRequest,\n SyncPlansResponse,\n SyncGovernanceRequest,\n SyncGovernanceResponse,\n SyncGovernanceSuccess,\n SyncGovernanceError,\n CheckGovernanceRequest,\n CheckGovernanceResponse,\n ReportPlanOutcomeRequest,\n ReportPlanOutcomeResponse,\n GetPlanAuditLogsRequest,\n GetPlanAuditLogsResponse,\n // Governance Domain - Types & Enums\n PlannedDelivery,\n GovernancePhase,\n EscalationSeverity,\n PolicyEnforcementLevel,\n OutcomeType,\n // Governance Domain - Creative Features\n GetCreativeFeaturesRequest,\n GetCreativeFeaturesResponse,\n // Sponsored Intelligence Domain\n SIGetOfferingRequest,\n SIGetOfferingResponse,\n SIInitiateSessionRequest,\n SIInitiateSessionResponse,\n SISendMessageRequest,\n SISendMessageResponse,\n SITerminateSessionRequest,\n SITerminateSessionResponse,\n SICapabilities,\n SIIdentity,\n // Protocol Domain\n GetAdCPCapabilitiesRequest,\n GetAdCPCapabilitiesResponse,\n // Event Tracking Domain\n SyncEventSourcesRequest,\n SyncEventSourcesResponse,\n SyncEventSourcesSuccess,\n SyncEventSourcesError,\n LogEventRequest,\n LogEventResponse,\n LogEventSuccess,\n LogEventError,\n // Enums\n CanceledBy,\n // Core data structures used within requests and responses\n Format,\n Product,\n Proposal,\n ProductAllocation,\n PackageRequest, // Creation params for packages — not Package (response-shaped, from core.generated)\n CreativeAsset,\n CreativePolicy,\n BrandReference,\n BrandID,\n AccountReference,\n CPAPricingOption,\n EventType,\n ActionSource,\n OptimizationGoal,\n ReachUnit,\n TargetingOverlay,\n // 3.1.0-beta.2 renamed `OutcomeMeasurement` → `OutcomeMeasurementDeprecated`\n // to signal the surface is on the 4.0 removal track. Re-export under both\n // names so adopters' existing `import { OutcomeMeasurement }` keeps working.\n OutcomeMeasurementDeprecated,\n OutcomeMeasurementDeprecated as OutcomeMeasurement,\n Duration,\n DeviceType,\n DigitalSourceType,\n FrequencyCap,\n GeographicBreakdownSupport,\n // Catalog Domain\n Catalog,\n CatalogType,\n FeedFormat,\n UpdateFrequency,\n ContentIDType,\n CatalogFieldMapping,\n SyncCatalogsRequest,\n SyncCatalogsResponse,\n SyncCatalogsSuccess,\n SyncCatalogsError,\n // Format Assets\n Overlay,\n Placement,\n // Creative Agent Domain\n CreativeManifest,\n CreativeVariable,\n BuildCreativeRequest,\n BuildCreativeResponse,\n BuildCreativeSuccess,\n BuildCreativeMultiSuccess,\n BuildCreativeError,\n PreviewCreativeRequest,\n PreviewCreativeResponse,\n GetMediaBuysRequest,\n GetMediaBuysResponse,\n ImageAsset,\n VideoAsset,\n AudioAsset,\n TextAsset,\n URLAsset,\n HTMLAsset,\n VASTAsset,\n DAASTAsset,\n JavaScriptAsset,\n WebhookAsset,\n CSSAsset,\n MarkdownAsset,\n CatalogAsset,\n BriefAsset,\n ReferenceAsset,\n Provenance,\n PreviewOutputFormat,\n DisclosurePosition,\n // Event Tracking\n EventCustomData,\n // Creative Delivery Domain\n GetCreativeDeliveryRequest,\n GetCreativeDeliveryResponse,\n // Account Domain\n Account,\n ListAccountsRequest,\n ListAccountsResponse,\n SyncAccountsRequest,\n SyncAccountsResponse,\n SyncAccountsSuccess,\n SyncAccountsError,\n GetAccountFinancialsRequest,\n GetAccountFinancialsResponse,\n GetAccountFinancialsSuccess,\n GetAccountFinancialsError,\n // Pagination\n PaginationRequest,\n PaginationResponse,\n // Nested domain types used as fields within request/response objects\n PackageUpdate,\n Package,\n Destination,\n SignalFilters,\n PricingOption,\n PriceGuidance,\n} from './types/tools.generated';\nexport type {\n AccountStatus,\n CreativeStatus,\n DelegationAuthority,\n CatalogAction,\n CatalogItemStatus,\n MediaBuyStatus,\n // CreativeBrief is its own top-level schema (creative-brief.json) — emitted\n // in core.generated, no longer transitively pulled into tools.generated now\n // that BriefAsset merges its allOf[$ref] base inline.\n CreativeBrief,\n} from './types/core.generated';\n\n// ====== WELL-KNOWN FILE TYPES ======\n// brand.json / adagents.json shapes inferred from the canonical Zod schemas.\n// Re-exported explicitly here (in addition to the transitive `export * from\n// './types'` above) so the top-level public API contract is visible at the\n// main barrel and not dependent on the sub-barrel's wildcard re-export.\n// Source of truth: schemas/cache/{version}/{brand,adagents}.json — regenerate\n// with `npm run generate-wellknown-schemas` when the spec bumps.\nexport type { BrandJson, AdagentsJson } from './types/wellknown-schemas.generated';\nexport { BrandJsonSchema, AdagentsJsonSchema } from './types/wellknown-schemas.generated';\n\n// ====== ERROR CODES ======\n// Standard error code vocabulary for programmatic error handling\nexport type { Error as TaskErrorDetail } from './types/core.generated';\nexport { STANDARD_ERROR_CODES, isStandardErrorCode, getErrorRecovery } from './types/error-codes';\nexport type { StandardErrorCode, ErrorRecovery } from './types/error-codes';\n\n// ====== SERVER-SIDE HELPERS ======\n// Helpers for building AdCP-compliant MCP servers\nexport {\n adcpError,\n capabilitiesResponse,\n productsResponse,\n mediaBuyResponse,\n deliveryResponse,\n listAccountsResponse,\n listCreativeFormatsResponse,\n updateMediaBuyResponse,\n getMediaBuysResponse,\n performanceFeedbackResponse,\n buildCreativeResponse,\n buildCreativeMultiResponse,\n previewCreativeResponse,\n creativeDeliveryResponse,\n listCreativesResponse,\n listPropertyListsResponse,\n listCollectionListsResponse,\n listContentStandardsResponse,\n getPlanAuditLogsResponse,\n syncCreativesResponse,\n getSignalsResponse,\n activateSignalResponse,\n cancelMediaBuyResponse,\n acquireRightsResponse,\n acquireRightsAcquired,\n acquireRightsPendingApproval,\n acquireRightsRejected,\n syncAccountsResponse,\n syncGovernanceResponse,\n reportUsageResponse,\n validActionsForStatus,\n MEDIA_BUY_TRANSITIONS,\n CREATIVE_ASSET_TRANSITIONS,\n isLegalMediaBuyTransition,\n isLegalCreativeTransition,\n assertMediaBuyTransition,\n assertCreativeTransition,\n getAccountMode,\n isSandboxOrMockAccount,\n assertSandboxAccount,\n taskToolResponse,\n registerAdcpTaskTool,\n createTaskCapableServer,\n InMemoryTaskStore,\n isTerminal,\n serve,\n UnknownHostError,\n hostname,\n resolveHost,\n verifyIntrospection,\n registerTestController,\n handleTestControllerRequest,\n TestControllerError,\n toMcpResponse,\n TOOL_INPUT_SHAPE,\n CONTROLLER_SCENARIOS,\n DISCOVERY_ARM_SCENARIOS,\n SEED_SCENARIOS,\n SESSION_ENTRY_CAP,\n enforceMapCap,\n createSeedFixtureCache,\n PostgresTaskStore,\n cleanupExpiredTasks,\n getMcpTasksMigration,\n MCP_TASKS_MIGRATION,\n ADCP_PRE_TRANSPORT,\n checkGovernance,\n governanceDeniedError,\n DEFAULT_REPORTING_CAPABILITIES,\n InMemoryStateStore,\n PostgresStateStore,\n getAdcpStateMigration,\n ADCP_STATE_MIGRATION,\n StateError,\n PatchConflictError,\n SESSION_KEY_FIELD,\n createSessionedStore,\n scopedStore,\n patchWithRetry,\n isPutIfMatchConflict,\n requireSessionKey,\n structuredSerialize,\n structuredDeserialize,\n createIdempotencyStore,\n memoryBackend,\n pgBackend,\n getIdempotencyMigration,\n IDEMPOTENCY_MIGRATION,\n cleanupExpiredIdempotency,\n redisBackend,\n createLazyBackend,\n hashPayload,\n getServeRequestContext,\n ADCP_SERVE_REQUEST_CONTEXT,\n createA2AAdapter,\n A2AInvocationError,\n} from './server';\nexport type {\n AdcpErrorOptions,\n AdcpErrorResponse,\n McpToolResponse,\n ValidAction,\n CancelMediaBuyInput,\n AdcpTaskToolConfig,\n TaskStore,\n TaskMessageQueue,\n CreateTaskOptions,\n ToolTaskHandler,\n CreateTaskRequestHandlerExtra,\n TaskRequestHandlerExtra,\n CreateTaskResult,\n GetTaskResult,\n Task,\n ServeContext,\n ServeOptions,\n PgQueryable,\n PostgresTaskStoreOptions,\n TestControllerStore,\n TestControllerStoreFactory,\n TestControllerStoreOrFactory,\n ControllerScenario,\n SeedScenario,\n SeedFixtureCache,\n SessionContext,\n OnInstructionsError,\n MaybePromise,\n AdcpServerConfig,\n AdcpToolMap,\n AdcpServerToolName,\n AdcpCapabilitiesConfig,\n AdcpCustomToolConfig,\n AdcpLogger,\n HandlerContext,\n MediaBuyHandlers,\n SignalsHandlers,\n CreativeHandlers,\n GovernanceHandlers,\n AccountHandlers,\n EventTrackingHandlers,\n SponsoredIntelligenceHandlers,\n SignedRequestsConfig,\n AdcpPreTransport,\n AdcpServer,\n AdcpServerTransport,\n AdcpTestRequest,\n AdcpTestToolsCallRequest,\n AdcpTestResponse,\n CheckGovernanceOptions,\n GovernanceCallResult,\n GovernanceApproved,\n GovernanceDenied,\n GovernanceConditions,\n AdcpStateStore,\n ListOptions as StateListOptions,\n ListResult as StateListResult,\n PostgresStateStoreOptions,\n InMemoryStateStoreOptions,\n VersionedDocument,\n PutIfMatchResult,\n PatchWithRetryOptions,\n StateErrorCode,\n SessionKeyContext,\n IdempotencyStore,\n IdempotencyStoreConfig,\n IdempotencyBackend,\n IdempotencyCacheEntry,\n IdempotencyCheckResult,\n MemoryBackendOptions,\n PgBackendOptions,\n RedisBackendOptions,\n RedisBackendClient,\n RedisLikeClient,\n LazyBackendFactory,\n LazyBackendOptions,\n A2AAdapter,\n A2AAdapterOptions,\n A2AAgentCardOverrides,\n A2AMountOptions,\n ExpressAppLike,\n AccountMode,\n RequireCacheScopeWhenProducts,\n ServerPayload,\n ListCreativeFormatsPayload,\n ListCreativeFormatsResponsePayload,\n ListCreativeFormatsServerPayload,\n SyncCreativesPayload,\n SyncCreativesSuccessPayload,\n SyncCreativesErrorPayload,\n} from './server';\n\n// ====== ERROR HANDLING & RETRY ======\nexport { isRetryable, getRetryDelay } from './utils/retry';\nexport { decideRetry, BuyerRetryPolicy } from './utils/buyer-retry-policy';\nexport type { RetryDecision, RetryContext, RetryDecisionOverride } from './utils/buyer-retry-policy';\n\n// Public API: use these for programmatic error handling\nexport {\n extractAdcpErrorInfo,\n extractCorrelationId,\n resolveRecovery,\n getExpectedAction,\n} from './utils/error-extraction';\n\n// Internal: transport-level extraction (used by SDK internals; prefer result.adcpError instead)\nexport { extractAdcpErrorFromMcp, extractAdcpErrorFromTransport } from './utils/error-extraction';\nexport type { ExtractedAdcpError } from './utils/error-extraction';\nexport { extractVersionUnsupportedDetails } from './utils/error-extraction';\nexport type { VersionUnsupportedDetails } from './utils/error-extraction';\n\n// ====== BACKWARDS COMPATIBILITY ======\n// Deprecated types from past protocol migrations\nexport type {\n BrandManifest,\n BrandManifestReference,\n AssetContentType,\n PromotedProducts,\n PromotedOfferings,\n Measurement,\n} from './types/compat';\nexport { brandManifestToBrandReference, promotedProductsToCatalog, promotedOfferingsToCatalog } from './types/compat';\n\n// Request parameter normalization (deprecated field auto-conversion)\nexport { normalizeRequestParams, normalizePackageParams } from './utils/request-normalizer';\n\n// get_products response cache-scope helpers\nexport {\n ensureGetProductsCacheScope,\n validateGetProductsCacheScope,\n type EnsureGetProductsCacheScopeOptions,\n type GetProductsCacheScope,\n type GetProductsResponseWithCacheScope,\n type GetProductsCacheScopeValidation,\n} from './utils/get-products-cache-scope';\n\n// ====== ENUM VALUE ARRAYS ======\n// `${TypeName}Values` const arrays for every named string-literal union in\n// the spec. Consumers can enumerate or validate against these without\n// duplicating literal lists from the Zod unions.\nexport * from './types/enums.generated';\n\n// `${ParentSchema}_${PropertyName}Values` const arrays for inline\n// anonymous unions inside named schemas — e.g.\n// `ImageAssetRequirements_FormatsValues`,\n// `VideoAssetRequirements_ContainersValues`. Companion to enums.generated;\n// see scripts/generate-inline-enum-arrays.ts for naming + scoping rules.\nexport * from './types/inline-enums.generated';\n\n// PreviewCreativeRequestSchema is now a flat z.object() with request_type discriminant.\n// The old variant exports (PreviewCreativeSingleRequestSchema, etc.) are no longer needed —\n// use PreviewCreativeRequestSchema.shape directly with server.registerTool().\n\n// ====== AUTHENTICATION ======\n// Auth utilities for custom integrations\nexport { getAuthToken, createAdCPHeaders, createMCPAuthHeaders, createAuthenticatedFetch } from './auth';\n\n// OAuth diagnostics utilities (see src/lib/auth/oauth/diagnostics.ts)\nexport {\n parseWWWAuthenticate,\n decodeAccessTokenClaims,\n validateTokenAudience,\n type WWWAuthenticateChallenge,\n type DecodedJWTHeader,\n type DecodedJWTClaims,\n type DecodedAccessToken,\n type TokenAudienceResult,\n InvalidTokenError,\n InsufficientScopeError,\n} from './auth/oauth';\n\n// End-to-end OAuth handshake diagnosis — powers `adcp diagnose-auth`\nexport {\n runAuthDiagnosis,\n AUTH_DIAGNOSIS_SCHEMA_VERSION,\n type DiagnoseOptions,\n type HttpCapture as DiagnosisHttpCapture,\n type DiagnosisStep,\n type Hypothesis as DiagnosisHypothesis,\n type HypothesisVerdict as DiagnosisHypothesisVerdict,\n type AuthDiagnosisReport,\n} from './auth/oauth';\n\n// Zero-config OAuth: actionable error + discovery + file storage + per-agent binding\nexport {\n NeedsAuthorizationError,\n discoverAuthorizationRequirements,\n createFileOAuthStorage,\n bindAgentStorage,\n getAgentStorage,\n unbindAgentStorage,\n type AuthorizationRequirements,\n type DiscoverAuthorizationOptions,\n type FileOAuthStorageOptions,\n} from './auth/oauth';\n\n// OAuth 2.0 client credentials (RFC 6749 §4.4) — machine-to-machine token\n// exchange used by programmatic CC consumers and by the CLI's `--save-auth\n// --oauth-token-url ...` flow. The library call path pre-refreshes before\n// every request automatically when `AgentConfig.oauth_client_credentials`\n// is set; these symbols are exposed for consumers that need explicit\n// control (building custom AgentConfigs, testing, or implementing\n// server-side `save_agent` endpoints like Addie's).\nexport {\n exchangeClientCredentials,\n ensureClientCredentialsTokens,\n ClientCredentialsExchangeError,\n MissingEnvSecretError,\n resolveSecret,\n isEnvSecretReference,\n toEnvSecretReference,\n extractEnvSecretName,\n type ExchangeClientCredentialsOptions,\n type EnsureClientCredentialsOptions,\n type AgentOAuthClientCredentials,\n} from './auth/oauth';\n\n// ====== VALIDATION ======\n// Schema validation for requests/responses\nexport { validateAgentUrl, validateAdCPResponse, getExpectedSchema, handleAdCPResponse } from './validation';\n\n// ====== PROTOCOL CLIENTS ======\n// Low-level protocol clients for MCP and A2A (primarily for testing)\nexport {\n ProtocolClient,\n callMCPTool,\n callA2ATool,\n createMCPClient,\n createA2AClient,\n closeMCPConnections,\n closeOAuthConnections,\n bundleSupportsAdcpVersionField,\n sanitizeTransportHeaders,\n sanitizeTransportUrl,\n} from './protocols';\nexport { toReleasePrecisionWire, validateAdcpVersionWire } from './validation/schema-loader';\nexport type {\n CallToolOptions,\n TransportActivity,\n TransportActivityContext,\n TransportActivityHandler,\n TransportOptions,\n} from './protocols';\n\n// ====== WIRE VERSION HELPERS (NAMESPACE) ======\n// Grouped re-exports of the three AdCP `adcp_version` envelope helpers\n// (spec PR adcontextprotocol/adcp#3493). Prefer this surface over the\n// individual top-level exports — the namespace stays stable as helpers\n// are added (a fourth helper drops in here without churning the barrel).\n// The top-level exports are kept for back-compat and aren't deprecated.\nimport { bundleSupportsAdcpVersionField as _isSupported } from './protocols';\nimport { toReleasePrecisionWire as _normalize, validateAdcpVersionWire as _validate } from './validation/schema-loader';\nexport const wireVersion = {\n isSupported: _isSupported,\n normalize: _normalize,\n validate: _validate,\n} as const;\n\n// ====== RESPONSE UTILITIES ======\n// Public utilities for working with AdCP responses\nexport {\n getStandardFormats,\n unwrapProtocolResponse,\n isAdcpError,\n isAdcpSuccess,\n isTerminalAdcpError,\n hasAdvisorySuccessPayload,\n getAuthoritativeMediaBuyStatus,\n isMediaBuyStatus,\n resolveTaskState,\n} from './utils';\nexport type { EffectiveTaskState, ResolvedTaskState, ResolveTaskStateOptions } from './utils';\nexport { injectLegacyEnvelopeStatus } from './utils/envelope-status-compat';\nexport { extractResult, type ToolCallResultLike } from './utils';\nexport { REQUEST_TIMEOUT, MAX_CONCURRENT, STANDARD_FORMATS } from './utils';\nexport {\n batchPreviewProducts,\n batchPreviewFormats,\n clearPreviewCache,\n type PreviewResult,\n type BatchPreviewOptions,\n type PreviewCacheBackend,\n type PreviewCacheEntry,\n} from './utils';\nexport { detectProtocol, detectProtocolWithTimeout } from './utils';\nexport { A2A_CARD_PATHS, isAgentCardPath, isWellKnownAgentCardUrl, buildCardUrls, stripAgentCardPath } from './utils';\n\n// ====== PRICING UTILITIES ======\n// Pricing adapter for v2/v3 compatibility and CPA detection\nexport { isCPAPricing } from './utils';\n\n// ====== PAGINATION UTILITIES ======\n// Auto-pagination helpers for cursor-based AdCP endpoints\nexport { paginate, paginatePages, type PaginateOptions } from './utils';\n\n// ====== FORMAT ASSET UTILITIES ======\n// Access to format assets (v3 `assets` field)\nexport {\n getFormatAssets,\n getRequiredAssets,\n getOptionalAssets,\n getIndividualAssets,\n getRepeatableGroups,\n usesDeprecatedAssetsField,\n getAssetCount,\n hasAssets,\n} from './utils/format-assets';\n\n// ====== CREATIVE ASSET BUILDERS ======\n// Typed factories that inject the `asset_type` discriminator.\n// `imageAsset({ url, width, height })` returns a valid `ImageAsset`\n// without repeating `asset_type: 'image'` at every call site.\n// Prefer the named exports; use `Asset.image({...})` when constructing\n// several asset types together (assets-by-role manifests).\nexport {\n Asset,\n imageAsset,\n videoAsset,\n audioAsset,\n textAsset,\n urlAsset,\n htmlAsset,\n javascriptAsset,\n cssAsset,\n markdownAsset,\n webhookAsset,\n} from './utils/asset-builders';\n\n// ====== FORMAT ASSET SLOT BUILDERS ======\n// Typed factories for the slot definitions inside `Format.assets[]` — what a\n// seller/publisher declares it accepts. Each builder injects the `item_type`\n// and `asset_type` discriminators, and the `requirements` object is strictly\n// typed per asset_type: misnamed fields (`file_types` vs `formats`) and wrong\n// units (`min_duration_seconds` vs `min_duration_ms`) fail type-check.\n// Use `repeatableGroup({...})` (or `FormatAsset.group(...)`) to wrap assets\n// that repeat — that's the correct home for `min_count` / `max_count`.\nexport {\n FormatAsset,\n imageAssetSlot,\n videoAssetSlot,\n audioAssetSlot,\n textAssetSlot,\n markdownAssetSlot,\n htmlAssetSlot,\n cssAssetSlot,\n javascriptAssetSlot,\n vastAssetSlot,\n daastAssetSlot,\n urlAssetSlot,\n webhookAssetSlot,\n briefAssetSlot,\n catalogAssetSlot,\n repeatableGroup,\n imageGroupAsset,\n videoGroupAsset,\n audioGroupAsset,\n textGroupAsset,\n markdownGroupAsset,\n htmlGroupAsset,\n cssGroupAsset,\n javascriptGroupAsset,\n vastGroupAsset,\n daastGroupAsset,\n urlGroupAsset,\n webhookGroupAsset,\n} from './utils/format-asset-slot-builders';\n\n// ====== PREVIEW RENDER BUILDERS ======\n// Typed factories that inject the `output_format` discriminator on\n// `PreviewRender` objects. `urlRender({ render_id, preview_url, role })`\n// returns a valid url-variant render without repeating\n// `output_format: 'url'` at every call site. Matrix runs consistently\n// saw this drift: Claude emitted renders that omitted the discriminator\n// or its required sibling field.\nexport { Render, urlRender, htmlRender, bothRender } from './utils/render-builders';\n\n// ====== FORMAT RENDER BUILDERS ======\n// Typed factories for `Format.renders[]` entries on format declarations.\n// The item schema's `oneOf` forces a render to satisfy exactly one branch —\n// either `dimensions` (display/video) OR `parameters_from_format_id: true`\n// (audio, template formats). A render with only `{ role }` fails validation.\n// Audio specifically cannot use `{ role, duration_seconds }` — duration is\n// not a recognized `renders[]` field and wouldn't satisfy the oneOf anyway.\n// Use `parameterizedRender({ role })` (or the alias `templateRender`) so\n// format_id parameters carry duration.\n//\n// `FormatRender` below is the grouped namespace (value export). The v3\n// structural interface by the same name is re-exported from\n// `utils/format-renders` further down — TypeScript keeps type and value\n// namespaces separate, so both are available under the single import.\nexport {\n FormatRender,\n displayRender,\n parameterizedRender,\n templateRender,\n type DimensionsRender,\n type ParameterizedRender,\n type RenderItem,\n} from './utils/format-render-builders';\n\n// ====== CANONICAL CREATIVE FORMAT MIGRATION HELPERS ======\n// Author `Product.format_options[]`, v1 `format_id` references, and product\n// cards from one obvious namespace while migrating away from local Format.type\n// and product_card.format_id conventions.\nexport {\n CanonicalFormat,\n type CanonicalFormatDeclaration,\n type CanonicalFormatDeclarationFields,\n type CanonicalFormatKind,\n type CanonicalFormatParams,\n type FormatReferenceInput,\n type ProductCardDetailedFields,\n type ProductCardFields,\n} from './v2/projection';\n\nexport {\n augmentProductWithFormatOptions,\n withFormatOptions,\n toCanonicalOnlyProduct,\n toCanonicalOnlyResponse,\n packageRefsForCapabilities,\n legacyFormatIdsFromOptions,\n tryLegacyFormatIdsFromOptions,\n legacyFormatIdsForCapability,\n canonicalDeclarationFromBareId,\n resolveCanonicalFormatKind,\n CapabilityIdsLookupError,\n type BareFormatIdResolveOptions,\n type CanonicalOnlyProduct,\n type CapabilityIdsLookupErrorCode,\n type PackageFormatRefs,\n type ProjectionDiagnostic,\n type V1FormatId,\n type V1Product,\n type V2AugmentedProduct,\n type V2Product,\n type V2ProductFormatDeclaration,\n} from './v2/projection';\n\n// ====== ACTIVATION KEY BUILDERS ======\n// Typed factories that inject the `type` discriminator on `ActivationKey`.\n// SHAPE-GOTCHAS §1 — `key`/`value` flatten on the activation key itself.\nexport { activationKey, segmentIdActivationKey, keyValueActivationKey } from './utils/activation-key-builders';\n\n// ====== SIGNAL ID BUILDERS AND ACCESSORS ======\n// Typed factories that inject the `source` discriminator on `SignalID`.\n// Used in `signal_ids` filter arrays and as the `signal_id` provenance\n// field on every `Signal` returned by `get_signals`. SHAPE-GOTCHAS §2.\n// To read fields from a received `SignalID`, use `getSignalId` (segment id)\n// and `getSignalIssuer` (data_provider_domain or agent_url).\nexport { signalId, catalogSignalId, agentSignalId, getSignalId, getSignalIssuer } from './utils/signal-id-builders';\nexport {\n buildActivateSignalRequest,\n getSignalActivationId,\n getSignalPricingOptionIds,\n normalizeDiscoveredSignal,\n} from './utils/signal-discovery-helpers';\nexport type {\n BuildActivateSignalRequestOptions,\n DiscoveredSignal,\n NormalizedDiscoveredSignal,\n} from './utils/signal-discovery-helpers';\n\n// ====== BUILD CREATIVE RETURN BUILDERS ======\n// Typed factories for the four return shapes accepted by the framework\n// from `build_creative` handlers. `.single` / `.multi` emit bare manifests\n// the framework auto-wraps; `.singleEnveloped` / `.multiEnveloped` emit\n// the shaped envelope when the handler needs to attach `sandbox` /\n// `expires_at` / `preview`. SHAPE-GOTCHAS §5.\nexport {\n buildCreativeReturn,\n singleBuildCreativeReturn,\n multiBuildCreativeReturn,\n singleEnvelopedBuildCreativeReturn,\n multiEnvelopedBuildCreativeReturn,\n} from './utils/build-creative-return-builders';\n\n// ====== PREVIEW CREATIVE BUILDERS ======\n// Typed factories that inject the `response_type` discriminator on\n// `PreviewCreativeResponse`. Three-way oneOf — `single | batch | variant`.\n// Pair with `urlRender` / `htmlRender` / `bothRender` for the per-render\n// `output_format`. SHAPE-GOTCHAS §4.\nexport {\n previewCreative,\n singlePreviewCreativeResponse,\n batchPreviewCreativeResponse,\n variantPreviewCreativeResponse,\n} from './utils/preview-creative-builders';\n\n// ====== MEDIA BUY DELIVERY NOTIFICATION BUILDERS ======\n// Typed factories that inject the `notification_type` discriminator on\n// `GetMediaBuyDeliveryResponse` for webhook deliveries. Five variants:\n// `scheduled` / `final` / `delayed` / `adjusted` / `window_update`.\nexport {\n mediaBuyDeliveryNotification,\n scheduledMediaBuyDeliveryNotification,\n finalMediaBuyDeliveryNotification,\n delayedMediaBuyDeliveryNotification,\n adjustedMediaBuyDeliveryNotification,\n windowUpdateMediaBuyDeliveryNotification,\n} from './utils/media-buy-delivery-notification-builders';\n\n// ====== V3.0 COMPATIBILITY UTILITIES ======\n// Capabilities detection, version negotiation, and v3 enforcement.\n// See also:\n// - `VersionUnsupportedError` in errors — thrown by requireV3()/requireV3ForMutations\n// - `SyncCreativesItemSchema` in validation — per-item sync_creatives validator\n// - `ADCP_MAJOR_VERSION` / `COMPATIBLE_ADCP_VERSIONS` in version information\n// - `SingleAgentClient#requireV3()` / `AgentClient#requireV3()` — runtime gate\nexport {\n buildSyntheticCapabilities,\n buildSyntheticV3Capabilities,\n parseCapabilitiesResponse,\n supportsV3,\n supportsProtocol,\n supportsPropertyListFiltering,\n supportsContentStandards,\n supportsSyncCreatives,\n requiresOperatorAuth,\n requiresAccountForProducts,\n supportsSandbox,\n supportsExperimentalFeature,\n resolveFeature,\n listDeclaredFeatures,\n MEDIA_BUY_TOOLS,\n SIGNALS_TOOLS,\n GOVERNANCE_TOOLS,\n CREATIVE_TOOLS,\n EVENT_TRACKING_TOOLS,\n ACCOUNT_TOOLS,\n PROTOCOL_TOOLS,\n BRAND_RIGHTS_TOOLS,\n TASK_FEATURE_MAP,\n} from './utils/capabilities';\nexport type {\n AdcpCapabilities,\n AdcpMajorVersion,\n AdcpProtocol,\n AccountCapabilities,\n MediaBuyFeatures,\n ToolInfo,\n FeatureName,\n} from './utils/capabilities';\n\n// Buyer-side creative delivery helpers\nexport { inlineCreativesForPackages } from './utils/creative-delivery';\nexport type {\n InlineCreativeAssignment,\n InlineCreativePackage,\n InlineCreativePackagePatch,\n InlineCreativesForPackagesOptions,\n} from './utils/creative-delivery';\n\n// Creative assignment adapter (v2 creative_ids ↔ v3 creative_assignments)\nexport {\n adaptPackageRequestForV2,\n adaptCreateMediaBuyRequestForV2,\n adaptUpdateMediaBuyRequestForV2,\n normalizePackageResponse,\n normalizeMediaBuyResponse,\n usesV2CreativeIds,\n usesV3CreativeAssignments,\n getCreativeIds,\n getCreativeAssignments,\n} from './utils/creative-adapter';\nexport type { CreativeAssignment } from './utils/creative-adapter';\n\n// Format renders normalizer (v2 dimensions ↔ v3 renders)\nexport {\n normalizeFormatRenders,\n normalizeFormatsResponse,\n getFormatRenders,\n getPrimaryRender,\n getCompanionRenders,\n isMultiRenderFormat,\n usesV2Dimensions,\n usesV3Renders,\n getFormatDimensions,\n} from './utils/format-renders';\n// FormatRender (the v3 structural interface) was renamed to FormatRenderEntry\n// so the `FormatRender` name at the barrel becomes the factory namespace\n// exported from `./utils/format-render-builders` above. The deprecated type\n// alias `FormatRender = FormatRenderEntry` still lives in `utils/format-renders`\n// for callers importing the sub-module directly; it's not re-exported here.\nexport type { FormatRenderEntry, RenderDimensions } from './utils/format-renders';\n\n// Preview response normalizer (v2 output_id ↔ v3 render_id)\nexport {\n normalizePreviewRender,\n normalizePreview,\n normalizePreviewCreativeResponse,\n usesV2RenderFields,\n usesV3RenderFields,\n getRenderId,\n getRenderRole,\n getPrimaryPreviewRender,\n getPreviewUrl,\n getPreviewHtml,\n} from './utils/preview-normalizer';\nexport type { PreviewRenderV3 } from './utils/preview-normalizer';\n\n// ====== TYPE GUARD UTILITIES ======\n// Type guards for automatic TypeScript type narrowing in webhook handlers\nexport {\n // Generic status checks\n isStatusCompleted,\n isStatusWorking,\n isStatusInputRequired,\n isStatusSubmitted,\n isStatusFailed,\n isStatusRejected,\n // GetProducts type guards\n isGetProductsCompleted,\n isGetProductsWorking,\n isGetProductsInputRequired,\n isGetProductsSubmitted,\n isGetProductsFailed,\n // CreateMediaBuy type guards\n isCreateMediaBuyCompleted,\n isCreateMediaBuyWorking,\n isCreateMediaBuyInputRequired,\n isCreateMediaBuySubmitted,\n isCreateMediaBuyFailed,\n // UpdateMediaBuy type guards\n isUpdateMediaBuyCompleted,\n isUpdateMediaBuyWorking,\n isUpdateMediaBuyInputRequired,\n isUpdateMediaBuySubmitted,\n isUpdateMediaBuyFailed,\n // SyncCreatives type guards\n isSyncCreativesCompleted,\n isSyncCreativesWorking,\n isSyncCreativesInputRequired,\n isSyncCreativesSubmitted,\n isSyncCreativesFailed,\n} from './utils/typeGuards';\n\n// ====== VERSION INFORMATION ======\nexport {\n getAdcpVersion,\n getLibraryVersion,\n isCompatibleWith,\n getCompatibleVersions,\n parseAdcpMajorVersion,\n ADCP_VERSION,\n ADCP_MAJOR_VERSION,\n LIBRARY_VERSION,\n COMPATIBLE_ADCP_VERSIONS,\n VERSION_INFO,\n} from './version';\nexport type { AdcpVersion } from './version';\nexport { resolveAdcpVersion } from './utils/adcp-version-config';\n\n// ====== OBSERVABILITY ======\n// OpenTelemetry tracing utilities (no-op if @opentelemetry/api not installed)\nexport {\n getTracer,\n isTracingEnabled,\n injectTraceHeaders,\n withSpan,\n addSpanAttributes,\n recordSpanException,\n} from './observability';\n\n// ====== AGENT CLASSES ======\n// Primary agent interface - returns raw AdCP responses\nexport { Agent, AgentCollection } from './agents/index.generated';\n\n// ====== SERVER-SIDE ADAPTERS ======\n// Adapters for building AdCP servers with customizable business logic\nexport {\n // Content Standards\n ContentStandardsAdapter,\n type IContentStandardsAdapter,\n type ContentEvaluationResult,\n ContentStandardsErrorCodes,\n isContentStandardsError,\n defaultContentStandardsAdapter,\n // Property Lists\n PropertyListAdapter,\n type IPropertyListAdapter,\n type ResolvedProperty,\n PropertyListErrorCodes,\n isPropertyListError,\n defaultPropertyListAdapter,\n // Sponsored Intelligence Sessions\n SISessionManager,\n AISISessionManager,\n type ISISessionManager,\n type SISession,\n SIErrorCodes,\n defaultSISessionManager,\n // Governance (seller-side committed checks)\n GovernanceAdapter,\n defaultGovernanceAdapter,\n type IGovernanceAdapter,\n type GovernanceAdapterConfig,\n type GovernanceAdapterErrorCode,\n type CommittedCheckRequest,\n GovernanceAdapterErrorCodes,\n isGovernanceAdapterError,\n // Implicit Account Store (resolution: 'implicit') — Shape A reference adapter\n InMemoryImplicitAccountStore,\n defaultImplicitKeyFn,\n type ImplicitAccountStoreOptions,\n // OAuth pass-through resolver — Shape B accounts.resolve factory\n createOAuthPassthroughResolver,\n type OAuthPassthroughResolverOptions,\n // Roster-backed AccountStore — Shape C factory for publisher-curated explicit platforms\n createRosterAccountStore,\n type RosterAccountStoreOptions,\n // Derived AccountStore — Shape D factory for single-tenant `resolution: 'derived'` agents\n createDerivedAccountStore,\n type DerivedAccountStoreOptions,\n} from './adapters';\n\n// ====== BACKWARD COMPATIBILITY & ENVIRONMENT LOADING ======\n\nimport type { AgentConfig } from './types';\nimport { ADCPMultiAgentClient } from './core/ADCPMultiAgentClient';\n\n/**\n * Legacy AdCPClient alias for backward compatibility\n * @deprecated Use ADCPMultiAgentClient instead for new code\n */\nexport const AdCPClient = ADCPMultiAgentClient;\n\n// Legacy configuration manager maintained for backward compatibility\n// The enhanced ConfigurationManager is exported above\n\n/**\n * Legacy createAdCPClient function for backward compatibility\n * @deprecated Use new ADCPMultiAgentClient constructor instead\n */\nexport function createAdCPClient(agents?: AgentConfig[]): ADCPMultiAgentClient {\n return new AdCPClient(agents);\n}\n\n/**\n * Load agents from environment and create multi-agent client\n * @deprecated Use ADCPMultiAgentClient.fromEnv() instead\n */\nexport function createAdCPClientFromEnv(): ADCPMultiAgentClient {\n return ADCPMultiAgentClient.fromEnv();\n}\n\n// ====== SUBSTITUTION OBSERVER / ENCODER ======\n// Primitives backing the `substitution-observer-runner` test-kit contract.\n// Runners (conformance graders) import the observer side; sales/retail-\n// media agents implementing the #2620 catalog-item macro encoding rule\n// import `SubstitutionEncoder`. Re-exported here for discoverability;\n// the full surface is also available via `@adcp/sdk/substitution`.\nexport {\n SubstitutionObserver,\n SubstitutionEncoder,\n PreviewFetchError,\n MacroInRawValueError,\n CATALOG_MACRO_VECTORS,\n getCatalogMacroVector,\n extractTrackerUrls,\n matchBindings,\n assertRfc3986Safe,\n assertUnreservedOnly,\n assertNoNestedExpansion,\n assertSchemePreserved,\n DEFAULT_MACRO_PROHIBITED_PATTERN,\n enforceSsrfPolicy,\n enforceSsrfPolicyResolved,\n DEFAULT_SSRF_POLICY,\n encodeUnreserved,\n equalUnderHexCasePolicy,\n isUnreservedOnly,\n divergenceOffset,\n translateUniversalMacros,\n} from './substitution';\nexport type {\n ObserverFetchOptions,\n ObserverDispatcher,\n CatalogMacroVectorName,\n AssertionOptions as SubstitutionAssertionOptions,\n AssertionResult as SubstitutionAssertionResult,\n BindingMatch,\n CatalogBinding,\n CatalogMacroVector,\n PolicyResult as SubstitutionPolicyResult,\n SsrfPolicy,\n TrackerUrlRecord,\n MacroMapping,\n TranslateResult,\n} from './substitution';\n\n// ====== TEST HELPERS ======\n// Re-export test helpers for convenience (also available via @adcp/sdk/testing)\nexport {\n testAgent,\n testAgentA2A,\n testAgentClient,\n createTestAgent,\n TEST_AGENT_TOKEN,\n TEST_AGENT_MCP_CONFIG,\n TEST_AGENT_A2A_CONFIG,\n testAgentNoAuth,\n testAgentNoAuthA2A,\n TEST_AGENT_NO_AUTH_MCP_CONFIG,\n TEST_AGENT_NO_AUTH_A2A_CONFIG,\n creativeAgent,\n testBrandRightsFlow,\n hasBrandRightsTools,\n expectControllerError,\n expectControllerSuccess,\n RateLimitTripObserver,\n RATE_LIMIT_TRIP_CONTRACT,\n RATE_LIMIT_TRIP_DEFAULT_REPLAY_MAX_WAIT_SECONDS,\n RATE_LIMIT_TRIP_MAX_ATTEMPTS_MAX,\n RATE_LIMIT_TRIP_MAX_ATTEMPTS_MIN,\n validateRateLimitTripSpec,\n} from './testing/index';\nexport type {\n ControllerErrorWithDetail,\n TestClient,\n RateLimitTripSpec,\n RateLimitTripClient,\n RateLimitTripFailureCode,\n RateLimitTripObservation,\n RateLimitTripObserverOptions,\n RateLimitTripResponseSnapshot,\n RateLimitTripStructuredResult,\n RateLimitTripTaskOptions,\n} from './testing/index';\n"],"mappings":"AAIA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAiBP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AA0GP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAgCP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP;AAAA,EACE;AAAA,OAIK;AACP;AAAA,EACE;AAAA,OAYK;AAkBP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP;AAAA,EACE;AAAA,OAOK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAIK;AAIP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAUP;AAAA,EACE;AAAA,OAIK;AACP,SAAS,sBAAsB,kCAAkC;AACjE,SAAS,4BAA4B;AACrC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,oBAAoB;AAC7B,SAAS,OAAO,mBAAmB;AAEnC,SAAS,wBAAwB,gBAAgB,mBAAoC;AACrF;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AAsCP,SAAS,4BAA4B;AAOrC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAOP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAKP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAiBK;AAsBP,SAAS,yBAAyB;AAclC,SAAS,cAAc,0BAA0B;AAGjD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAWP,cAAc;AAcd,SAAS,eAAe,qBAAqB,iCAAiC;AAG9E;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACmB;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAoDP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,0BAA0B;AAGnC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,cAAc,2BAA2B;AAClD,SAAS,6CAA6C;AAGtD,cAAc;AAgRd,SAAS,iBAAiB,0BAA0B;AAKpD,SAAS,sBAAsB,qBAAqB,wBAAwB;AAK5E;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AA+FP,SAAS,aAAa,qBAAqB;AAC3C,SAAS,aAAa,wBAAwB;AAI9C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,yBAAyB,qCAAqC;AAEvE,SAAS,wCAAwC;AAajD,SAAS,+BAA+B,2BAA2B,kCAAkC;AAGrG,SAAS,wBAAwB,8BAA8B;AAG/D;AAAA,EACE;AAAA,EACA;AAAA,OAKK;AAMP,cAAc;AAOd,cAAc;AAQd,SAAS,cAAc,mBAAmB,sBAAsB,gCAAgC;AAGhG;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EAMA;AAAA,EACA;AAAA,OACK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,OAOK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AASP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAIP,SAAS,kBAAkB,sBAAsB,mBAAmB,0BAA0B;AAI9F;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,wBAAwB,+BAA+B;AAehE,SAAS,kCAAkC,oBAAoB;AAC/D,SAAS,0BAA0B,YAAY,2BAA2B,iBAAiB;AACpF,MAAM,cAAc;AAAA,EACzB,aAAa;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AACZ;AAIA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,kCAAkC;AAC3C,SAAS,qBAA8C;AACvD,SAAS,iBAAiB,gBAAgB,wBAAwB;AAClE;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AACP,SAAS,gBAAgB,iCAAiC;AAC1D,SAAS,gBAAgB,iBAAiB,yBAAyB,eAAe,0BAA0B;AAI5G,SAAS,oBAAoB;AAI7B,SAAS,UAAU,qBAA2C;AAI9D;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAQP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAUP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AASP,SAAS,QAAQ,WAAW,YAAY,kBAAkB;AAgB1D;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAMP;AAAA,EACE;AAAA,OAQK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAWK;AAKP,SAAS,eAAe,wBAAwB,6BAA6B;AAQ7E,SAAS,UAAU,iBAAiB,eAAe,aAAa,uBAAuB;AACvF;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAaP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAOP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAMP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AASP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAYP,SAAS,kCAAkC;AAS3C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAIP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AASP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAKP;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,0BAA0B;AAInC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAIP,SAAS,OAAO,uBAAuB;AAIvC;AAAA,EAEE;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAKA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAGA;AAAA,EAGA;AAAA,EAGA;AAAA,OAEK;AAKP,SAAS,wBAAAA,6BAA4B;AAM9B,MAAM,aAAaA;AASnB,SAAS,iBAAiB,QAA8C;AAC7E,SAAO,IAAI,WAAW,MAAM;AAC9B;AAMO,SAAS,0BAAgD;AAC9D,SAAOA,sBAAqB,QAAQ;AACtC;AAQA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAmBP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":["ADCPMultiAgentClient"]}
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
import { fileURLToPath as __adcpFileURLToPath } from 'node:url';
|
|
2
|
-
import { dirname as __adcpDirname } from 'node:path';
|
|
3
|
-
import { createRequire as __adcpCreateRequire } from 'node:module';
|
|
4
|
-
const __filename = __adcpFileURLToPath(import.meta.url);
|
|
5
|
-
const __dirname = __adcpDirname(__filename);
|
|
6
|
-
const require = __adcpCreateRequire(import.meta.url);
|
|
7
1
|
const DEPRECATION_HINT = "seller emitted `valid_actions[]` only (legacy 3.0). mode and sla unknown; preflight assumes self_serve. sellers SHOULD populate `available_actions[]` during 3.x.";
|
|
8
2
|
let warnedOnce = false;
|
|
9
3
|
function emitDeprecationWarning() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/media-buy/available-actions.ts"],"sourcesContent":["// Compat shim between the legacy `valid_actions[]` flat shape and the\n// 3.1 `available_actions[]` structured shape (RFC #4480).\n//\n// Buyer-side code should always read through `getAvailableActions(buy)`\n// rather than reaching for either field directly - the shim picks the\n// authoritative source and surfaces a deprecation hint when only the\n// legacy field is populated.\n\nimport type { MediaBuyActionContext, MediaBuyAvailableAction, MediaBuyValidAction } from './types';\n\n/**\n * Source the normalized `available_actions[]` came from. Callers branch on\n * this to decide whether to enforce mode constraints (`available_actions`)\n * or treat the result as a best-effort hint (`valid_actions`, no mode info).\n */\nexport type AvailableActionsSource = 'available_actions' | 'valid_actions' | 'absent';\n\nexport interface AvailableActionsResult {\n /** Normalized available actions. Empty array when the source is `'absent'`. */\n actions: MediaBuyAvailableAction[];\n source: AvailableActionsSource;\n /**\n * One-line hint when the buy carries only the legacy `valid_actions[]`\n * field. Helpers surface this on their results so callers can render it\n * to the developer.\n */\n deprecationHint?: string;\n}\n\nconst DEPRECATION_HINT =\n 'seller emitted `valid_actions[]` only (legacy 3.0). mode and sla unknown; preflight assumes self_serve. ' +\n 'sellers SHOULD populate `available_actions[]` during 3.x.';\n\n// One-shot log gate. Module-scoped so a buyer process that hits the same\n// shape on every poll doesn't drown its logs. Tests reset via\n// `__resetValidActionsWarningForTests`.\nlet warnedOnce = false;\n\nfunction emitDeprecationWarning(): void {\n if (warnedOnce) return;\n warnedOnce = true;\n console.warn(`[@adcp/sdk] ${DEPRECATION_HINT}`);\n}\n\n/**\n * Hook for tests (this repo's and downstream adopters') to reset the\n * one-shot warning gate. Underscore-prefixed name signals it's not part\n * of the buyer-facing API surface; it's exported so test files can call\n * it through the built `dist/`.\n */\nexport function __resetValidActionsWarningForTests(): void {\n warnedOnce = false;\n}\n\n/**\n * Normalize the buy's available actions. Reads `available_actions[]` when\n * present; falls back to synthesizing entries from `valid_actions[]` with\n * `mode: 'self_serve'` (best-effort - legacy callers had no mode info).\n *\n * `options.silent` suppresses the one-shot console warning so libraries\n * that surface their own diagnostics don't double-log.\n */\nexport function getAvailableActions(\n buy: MediaBuyActionContext,\n options: { silent?: boolean } = {}\n): AvailableActionsResult {\n if (buy.available_actions && buy.available_actions.length > 0) {\n return { actions: [...buy.available_actions], source: 'available_actions' };\n }\n if (buy.valid_actions && buy.valid_actions.length > 0) {\n if (!options.silent) emitDeprecationWarning();\n const seen = new Set<MediaBuyValidAction>();\n const actions: MediaBuyAvailableAction[] = [];\n for (const action of buy.valid_actions) {\n if (seen.has(action)) continue;\n seen.add(action);\n actions.push({ action, mode: 'self_serve' });\n }\n return { actions, source: 'valid_actions', deprecationHint: DEPRECATION_HINT };\n }\n return { actions: [], source: 'absent' };\n}\n\n/**\n * Look up the available-action entry for a given action ID. Returns the\n * entry as emitted by the seller (so callers can read `mode`, `sla`,\n * `terms_ref`) or `undefined` if the action isn't currently available.\n *\n * Honors rollup: when only a legacy coarse action is emitted by the seller\n * (`valid_actions[]` flat list or `available_actions[]` with coarse keys)\n * and the caller asks for a fine-grained child action, the lookup falls\n * through to the rollup parent. The returned entry carries the seller's\n * emitted action ID, not the caller's requested ID.\n */\nexport function findAvailableAction(\n buy: MediaBuyActionContext,\n action: MediaBuyValidAction,\n options: { silent?: boolean } = {}\n): { entry: MediaBuyAvailableAction; result: AvailableActionsResult } | undefined {\n const result = getAvailableActions(buy, options);\n const direct = result.actions.find(a => a.action === action);\n if (direct) return { entry: direct, result };\n\n const rollupParent = ROLLUP_PARENT_OF[action];\n if (rollupParent) {\n const parent = result.actions.find(a => a.action === rollupParent);\n if (parent) return { entry: parent, result };\n }\n return undefined;\n}\n\n// Inverse of `enumMetadata[<legacy>].rollup`: given a fine-grained action,\n// the legacy coarse action that subsumes it. Built from the schema's\n// rollup mapping but inverted here for O(1) child -> parent lookup.\nconst ROLLUP_PARENT_OF: Partial<Record<MediaBuyValidAction, MediaBuyValidAction>> = {\n increase_budget: 'update_budget',\n decrease_budget: 'update_budget',\n reallocate_budget: 'update_budget',\n extend_flight: 'update_dates',\n shorten_flight: 'update_dates',\n update_flight_dates: 'update_dates',\n update_targeting: 'update_packages',\n update_pacing: 'update_packages',\n update_frequency_caps: 'update_packages',\n remove_packages: 'update_packages',\n replace_creative: 'sync_creatives',\n update_creative_assignments: 'sync_creatives',\n remove_creative: 'sync_creatives',\n};\n\n/**\n * Public read of the rollup table for callers that need to walk legacy\n * coarse vocabulary themselves (e.g. UI rendering that wants to group\n * fine-grained actions under their coarse parent).\n */\nexport function getRollupParent(action: MediaBuyValidAction): MediaBuyValidAction | undefined {\n return ROLLUP_PARENT_OF[action];\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/media-buy/available-actions.ts"],"sourcesContent":["// Compat shim between the legacy `valid_actions[]` flat shape and the\n// 3.1 `available_actions[]` structured shape (RFC #4480).\n//\n// Buyer-side code should always read through `getAvailableActions(buy)`\n// rather than reaching for either field directly - the shim picks the\n// authoritative source and surfaces a deprecation hint when only the\n// legacy field is populated.\n\nimport type { MediaBuyActionContext, MediaBuyAvailableAction, MediaBuyValidAction } from './types';\n\n/**\n * Source the normalized `available_actions[]` came from. Callers branch on\n * this to decide whether to enforce mode constraints (`available_actions`)\n * or treat the result as a best-effort hint (`valid_actions`, no mode info).\n */\nexport type AvailableActionsSource = 'available_actions' | 'valid_actions' | 'absent';\n\nexport interface AvailableActionsResult {\n /** Normalized available actions. Empty array when the source is `'absent'`. */\n actions: MediaBuyAvailableAction[];\n source: AvailableActionsSource;\n /**\n * One-line hint when the buy carries only the legacy `valid_actions[]`\n * field. Helpers surface this on their results so callers can render it\n * to the developer.\n */\n deprecationHint?: string;\n}\n\nconst DEPRECATION_HINT =\n 'seller emitted `valid_actions[]` only (legacy 3.0). mode and sla unknown; preflight assumes self_serve. ' +\n 'sellers SHOULD populate `available_actions[]` during 3.x.';\n\n// One-shot log gate. Module-scoped so a buyer process that hits the same\n// shape on every poll doesn't drown its logs. Tests reset via\n// `__resetValidActionsWarningForTests`.\nlet warnedOnce = false;\n\nfunction emitDeprecationWarning(): void {\n if (warnedOnce) return;\n warnedOnce = true;\n console.warn(`[@adcp/sdk] ${DEPRECATION_HINT}`);\n}\n\n/**\n * Hook for tests (this repo's and downstream adopters') to reset the\n * one-shot warning gate. Underscore-prefixed name signals it's not part\n * of the buyer-facing API surface; it's exported so test files can call\n * it through the built `dist/`.\n */\nexport function __resetValidActionsWarningForTests(): void {\n warnedOnce = false;\n}\n\n/**\n * Normalize the buy's available actions. Reads `available_actions[]` when\n * present; falls back to synthesizing entries from `valid_actions[]` with\n * `mode: 'self_serve'` (best-effort - legacy callers had no mode info).\n *\n * `options.silent` suppresses the one-shot console warning so libraries\n * that surface their own diagnostics don't double-log.\n */\nexport function getAvailableActions(\n buy: MediaBuyActionContext,\n options: { silent?: boolean } = {}\n): AvailableActionsResult {\n if (buy.available_actions && buy.available_actions.length > 0) {\n return { actions: [...buy.available_actions], source: 'available_actions' };\n }\n if (buy.valid_actions && buy.valid_actions.length > 0) {\n if (!options.silent) emitDeprecationWarning();\n const seen = new Set<MediaBuyValidAction>();\n const actions: MediaBuyAvailableAction[] = [];\n for (const action of buy.valid_actions) {\n if (seen.has(action)) continue;\n seen.add(action);\n actions.push({ action, mode: 'self_serve' });\n }\n return { actions, source: 'valid_actions', deprecationHint: DEPRECATION_HINT };\n }\n return { actions: [], source: 'absent' };\n}\n\n/**\n * Look up the available-action entry for a given action ID. Returns the\n * entry as emitted by the seller (so callers can read `mode`, `sla`,\n * `terms_ref`) or `undefined` if the action isn't currently available.\n *\n * Honors rollup: when only a legacy coarse action is emitted by the seller\n * (`valid_actions[]` flat list or `available_actions[]` with coarse keys)\n * and the caller asks for a fine-grained child action, the lookup falls\n * through to the rollup parent. The returned entry carries the seller's\n * emitted action ID, not the caller's requested ID.\n */\nexport function findAvailableAction(\n buy: MediaBuyActionContext,\n action: MediaBuyValidAction,\n options: { silent?: boolean } = {}\n): { entry: MediaBuyAvailableAction; result: AvailableActionsResult } | undefined {\n const result = getAvailableActions(buy, options);\n const direct = result.actions.find(a => a.action === action);\n if (direct) return { entry: direct, result };\n\n const rollupParent = ROLLUP_PARENT_OF[action];\n if (rollupParent) {\n const parent = result.actions.find(a => a.action === rollupParent);\n if (parent) return { entry: parent, result };\n }\n return undefined;\n}\n\n// Inverse of `enumMetadata[<legacy>].rollup`: given a fine-grained action,\n// the legacy coarse action that subsumes it. Built from the schema's\n// rollup mapping but inverted here for O(1) child -> parent lookup.\nconst ROLLUP_PARENT_OF: Partial<Record<MediaBuyValidAction, MediaBuyValidAction>> = {\n increase_budget: 'update_budget',\n decrease_budget: 'update_budget',\n reallocate_budget: 'update_budget',\n extend_flight: 'update_dates',\n shorten_flight: 'update_dates',\n update_flight_dates: 'update_dates',\n update_targeting: 'update_packages',\n update_pacing: 'update_packages',\n update_frequency_caps: 'update_packages',\n remove_packages: 'update_packages',\n replace_creative: 'sync_creatives',\n update_creative_assignments: 'sync_creatives',\n remove_creative: 'sync_creatives',\n};\n\n/**\n * Public read of the rollup table for callers that need to walk legacy\n * coarse vocabulary themselves (e.g. UI rendering that wants to group\n * fine-grained actions under their coarse parent).\n */\nexport function getRollupParent(action: MediaBuyValidAction): MediaBuyValidAction | undefined {\n return ROLLUP_PARENT_OF[action];\n}\n"],"mappings":"AA6BA,MAAM,mBACJ;AAMF,IAAI,aAAa;AAEjB,SAAS,yBAA+B;AACtC,MAAI,WAAY;AAChB,eAAa;AACb,UAAQ,KAAK,eAAe,gBAAgB,EAAE;AAChD;AAQO,SAAS,qCAA2C;AACzD,eAAa;AACf;AAUO,SAAS,oBACd,KACA,UAAgC,CAAC,GACT;AACxB,MAAI,IAAI,qBAAqB,IAAI,kBAAkB,SAAS,GAAG;AAC7D,WAAO,EAAE,SAAS,CAAC,GAAG,IAAI,iBAAiB,GAAG,QAAQ,oBAAoB;AAAA,EAC5E;AACA,MAAI,IAAI,iBAAiB,IAAI,cAAc,SAAS,GAAG;AACrD,QAAI,CAAC,QAAQ,OAAQ,wBAAuB;AAC5C,UAAM,OAAO,oBAAI,IAAyB;AAC1C,UAAM,UAAqC,CAAC;AAC5C,eAAW,UAAU,IAAI,eAAe;AACtC,UAAI,KAAK,IAAI,MAAM,EAAG;AACtB,WAAK,IAAI,MAAM;AACf,cAAQ,KAAK,EAAE,QAAQ,MAAM,aAAa,CAAC;AAAA,IAC7C;AACA,WAAO,EAAE,SAAS,QAAQ,iBAAiB,iBAAiB,iBAAiB;AAAA,EAC/E;AACA,SAAO,EAAE,SAAS,CAAC,GAAG,QAAQ,SAAS;AACzC;AAaO,SAAS,oBACd,KACA,QACA,UAAgC,CAAC,GAC+C;AAChF,QAAM,SAAS,oBAAoB,KAAK,OAAO;AAC/C,QAAM,SAAS,OAAO,QAAQ,KAAK,OAAK,EAAE,WAAW,MAAM;AAC3D,MAAI,OAAQ,QAAO,EAAE,OAAO,QAAQ,OAAO;AAE3C,QAAM,eAAe,iBAAiB,MAAM;AAC5C,MAAI,cAAc;AAChB,UAAM,SAAS,OAAO,QAAQ,KAAK,OAAK,EAAE,WAAW,YAAY;AACjE,QAAI,OAAQ,QAAO,EAAE,OAAO,QAAQ,OAAO;AAAA,EAC7C;AACA,SAAO;AACT;AAKA,MAAM,mBAA8E;AAAA,EAClF,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,qBAAqB;AAAA,EACrB,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,uBAAuB;AAAA,EACvB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,6BAA6B;AAAA,EAC7B,iBAAiB;AACnB;AAOO,SAAS,gBAAgB,QAA8D;AAC5F,SAAO,iBAAiB,MAAM;AAChC;","names":[]}
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
import { fileURLToPath as __adcpFileURLToPath } from 'node:url';
|
|
2
|
-
import { dirname as __adcpDirname } from 'node:path';
|
|
3
|
-
import { createRequire as __adcpCreateRequire } from 'node:module';
|
|
4
|
-
const __filename = __adcpFileURLToPath(import.meta.url);
|
|
5
|
-
const __dirname = __adcpDirname(__filename);
|
|
6
|
-
const require = __adcpCreateRequire(import.meta.url);
|
|
7
1
|
import { LEGACY_COARSE_ACTIONS } from "./types.mjs";
|
|
8
2
|
import {
|
|
9
3
|
findAvailableAction,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/media-buy/index.ts"],"sourcesContent":["// Public barrel for buyer-side media-buy action helpers (AdCP 3.1 / #4480).\n\nexport type {\n ActionNotAllowedDetails,\n ActionNotAllowedReason,\n LegacyCoarseAction,\n MediaBuyActionContext,\n MediaBuyActionMode,\n MediaBuyAvailableAction,\n MediaBuyValidAction,\n SLAWindow,\n SlaWindow,\n UpdateMediaBuyRequestLike,\n} from './types';\nexport { LEGACY_COARSE_ACTIONS } from './types';\n\nexport type { AvailableActionsResult, AvailableActionsSource } from './available-actions';\nexport {\n findAvailableAction,\n getAvailableActions,\n getRollupParent,\n __resetValidActionsWarningForTests,\n} from './available-actions';\n\nexport type {\n BuyerPropertyPolicy,\n NormalizedPolicyDomain,\n ProductPolicyProductLike,\n ProductPropertyPolicyDiagnostic,\n ProductPropertyPolicyDiagnosticCode,\n ProductPropertyPolicyDiagnosticSeverity,\n ProductPropertyPolicyMode,\n ProductPropertyPolicySelectorBehavior,\n ProductPropertyPolicyValidationResult,\n ValidateProductsAgainstPropertyPolicyOptions,\n} from './property-policy';\nexport {\n ProductPropertyPolicyError,\n normalizeDomainForPropertyPolicy,\n validateProductsAgainstPropertyPolicy,\n} from './property-policy';\n\nexport type {\n DecomposedUpdateMediaBuy,\n DecomposedUpdateMediaBuyMutation,\n MediaBuyMutationDirection,\n MediaBuyMutationScope,\n ModeMismatchRecovery,\n PreflightAllowed,\n PreflightDenial,\n PreflightDenied,\n PreflightResult,\n ResolvedAction,\n} from './preflight';\nexport {\n canAddPackages,\n canCancel,\n canDecreaseBudget,\n canExtendFlight,\n canIncreaseBudget,\n canPause,\n canReallocateBudget,\n canRemoveCreative,\n canRemovePackages,\n canReplaceCreative,\n canResume,\n canShortenFlight,\n canUpdateCreativeAssignments,\n canUpdateFlightDates,\n canUpdateFrequencyCaps,\n canUpdatePacing,\n canUpdateTargeting,\n decomposeUpdateMediaBuy,\n getActionForMutation,\n preflightUpdateMediaBuy,\n recoveryForModeMismatch,\n} from './preflight';\n\nexport type { UpdateFieldEntry } from './update-fields.generated';\nexport { ACTIONS_BY_FIELD, UPDATE_FIELDS_BY_ACTION } from './update-fields.generated';\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/media-buy/index.ts"],"sourcesContent":["// Public barrel for buyer-side media-buy action helpers (AdCP 3.1 / #4480).\n\nexport type {\n ActionNotAllowedDetails,\n ActionNotAllowedReason,\n LegacyCoarseAction,\n MediaBuyActionContext,\n MediaBuyActionMode,\n MediaBuyAvailableAction,\n MediaBuyValidAction,\n SLAWindow,\n SlaWindow,\n UpdateMediaBuyRequestLike,\n} from './types';\nexport { LEGACY_COARSE_ACTIONS } from './types';\n\nexport type { AvailableActionsResult, AvailableActionsSource } from './available-actions';\nexport {\n findAvailableAction,\n getAvailableActions,\n getRollupParent,\n __resetValidActionsWarningForTests,\n} from './available-actions';\n\nexport type {\n BuyerPropertyPolicy,\n NormalizedPolicyDomain,\n ProductPolicyProductLike,\n ProductPropertyPolicyDiagnostic,\n ProductPropertyPolicyDiagnosticCode,\n ProductPropertyPolicyDiagnosticSeverity,\n ProductPropertyPolicyMode,\n ProductPropertyPolicySelectorBehavior,\n ProductPropertyPolicyValidationResult,\n ValidateProductsAgainstPropertyPolicyOptions,\n} from './property-policy';\nexport {\n ProductPropertyPolicyError,\n normalizeDomainForPropertyPolicy,\n validateProductsAgainstPropertyPolicy,\n} from './property-policy';\n\nexport type {\n DecomposedUpdateMediaBuy,\n DecomposedUpdateMediaBuyMutation,\n MediaBuyMutationDirection,\n MediaBuyMutationScope,\n ModeMismatchRecovery,\n PreflightAllowed,\n PreflightDenial,\n PreflightDenied,\n PreflightResult,\n ResolvedAction,\n} from './preflight';\nexport {\n canAddPackages,\n canCancel,\n canDecreaseBudget,\n canExtendFlight,\n canIncreaseBudget,\n canPause,\n canReallocateBudget,\n canRemoveCreative,\n canRemovePackages,\n canReplaceCreative,\n canResume,\n canShortenFlight,\n canUpdateCreativeAssignments,\n canUpdateFlightDates,\n canUpdateFrequencyCaps,\n canUpdatePacing,\n canUpdateTargeting,\n decomposeUpdateMediaBuy,\n getActionForMutation,\n preflightUpdateMediaBuy,\n recoveryForModeMismatch,\n} from './preflight';\n\nexport type { UpdateFieldEntry } from './update-fields.generated';\nexport { ACTIONS_BY_FIELD, UPDATE_FIELDS_BY_ACTION } from './update-fields.generated';\n"],"mappings":"AAcA,SAAS,6BAA6B;AAGtC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAcP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAcP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,kBAAkB,+BAA+B;","names":[]}
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
import { fileURLToPath as __adcpFileURLToPath } from 'node:url';
|
|
2
|
-
import { dirname as __adcpDirname } from 'node:path';
|
|
3
|
-
import { createRequire as __adcpCreateRequire } from 'node:module';
|
|
4
|
-
const __filename = __adcpFileURLToPath(import.meta.url);
|
|
5
|
-
const __dirname = __adcpDirname(__filename);
|
|
6
|
-
const require = __adcpCreateRequire(import.meta.url);
|
|
7
1
|
import { ValidationError } from "../errors/index.mjs";
|
|
8
2
|
import { findAvailableAction, getAvailableActions } from "./available-actions.mjs";
|
|
9
3
|
function isAvailable(buy, action) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/media-buy/preflight.ts"],"sourcesContent":["// Buyer-side preflight helpers for `update_media_buy`. See RFC #4480.\n//\n// Three layers, each usable on its own:\n// 1. Boolean gates: `canPause(buy)`, `canExtendFlight(buy)`, ... - single\n// question, single answer. Drives UI affordances.\n// 2. Decomposer: `decomposeUpdateMediaBuy(buy, request)` - turns a patch\n// into concrete requested mutations plus the actions they cover.\n// 3. Resolver: `getActionForMutation(buy, request)` - compatibility wrapper\n// returning just the fine-grained actions. Drives dispatch.\n// 4. Preflight: `preflightUpdateMediaBuy(buy, request)` - composes\n// resolver + gate checks into a single ok/not-ok decision.\n\nimport { ValidationError } from '../errors';\nimport { findAvailableAction, getAvailableActions, type AvailableActionsResult } from './available-actions';\nimport type {\n ActionNotAllowedReason,\n MediaBuyActionContext,\n MediaBuyActionMode,\n MediaBuyAvailableAction,\n MediaBuyValidAction,\n UpdateMediaBuyRequestLike,\n} from './types';\n\n// ---------------------------------------------------------------------------\n// Boolean gates\n// ---------------------------------------------------------------------------\n\nfunction isAvailable(buy: MediaBuyActionContext, action: MediaBuyValidAction): boolean {\n return findAvailableAction(buy, action, { silent: true }) !== undefined;\n}\n\nexport const canPause = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'pause');\nexport const canResume = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'resume');\nexport const canCancel = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'cancel');\nexport const canExtendFlight = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'extend_flight');\nexport const canShortenFlight = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'shorten_flight');\nexport const canUpdateFlightDates = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'update_flight_dates');\nexport const canIncreaseBudget = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'increase_budget');\nexport const canDecreaseBudget = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'decrease_budget');\nexport const canReallocateBudget = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'reallocate_budget');\nexport const canUpdateTargeting = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'update_targeting');\nexport const canUpdatePacing = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'update_pacing');\nexport const canUpdateFrequencyCaps = (buy: MediaBuyActionContext): boolean =>\n isAvailable(buy, 'update_frequency_caps');\nexport const canReplaceCreative = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'replace_creative');\nexport const canUpdateCreativeAssignments = (buy: MediaBuyActionContext): boolean =>\n isAvailable(buy, 'update_creative_assignments');\nexport const canAddPackages = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'add_packages');\nexport const canRemovePackages = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'remove_packages');\n\nexport const canRemoveCreative = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'remove_creative');\n\n// Float tolerance for comparing summed budgets across packages. Below this\n// difference, two totals are treated as equal (absorbs cent-rounding from\n// per-package decimal math). Half a cent is the smallest representable\n// difference any current AdCP currency cares about. If a future spec\n// extension allows sub-cent / micro-amount pricing (e.g. programmatic\n// auction-side bidding) this tolerance would mask real reallocations and\n// should be tightened or made currency-aware.\nconst BUDGET_EQUAL_TOLERANCE = 0.005;\n\n// ---------------------------------------------------------------------------\n// Resolver\n// ---------------------------------------------------------------------------\n\nexport type MediaBuyMutationDirection = 'increase' | 'decrease' | 'reallocate' | 'extend' | 'shorten' | 'shift';\n\n/**\n * One action a request body covers, plus the direction inference where the\n * fine-grained vocabulary distinguishes increase/decrease or\n * extend/shorten. `touched_fields` lists the normalized dotted paths that\n * triggered this entry (useful for debugging).\n */\nexport interface ResolvedAction {\n action: MediaBuyValidAction;\n /**\n * Direction tag. Present when the resolver picked between fine-grained\n * siblings (e.g. `increase_budget` vs `decrease_budget`).\n */\n direction?: MediaBuyMutationDirection;\n touched_fields: string[];\n}\n\nexport type MediaBuyMutationScope = 'buy' | 'package' | 'packages';\n\n/**\n * One concrete requested mutation inside an `update_media_buy` patch.\n *\n * `field` is the normalized schema path used for action mapping\n * (`packages[].budget`), while `path` is the concrete request path\n * (`packages[0].budget`) that adopter code can use for diagnostics or\n * dispatch. `from` is best-effort and only populated for fields the helper can\n * read from the supplied current buy snapshot.\n */\nexport interface DecomposedUpdateMediaBuyMutation {\n action: MediaBuyValidAction;\n direction?: MediaBuyMutationDirection;\n field: string;\n path: string;\n scope: MediaBuyMutationScope;\n package_id?: string;\n package_index?: number;\n from?: unknown;\n to?: unknown;\n}\n\nexport interface DecomposedUpdateMediaBuy {\n /** Concrete mutations requested by the patch. Empty when no known fields were touched. */\n mutations: DecomposedUpdateMediaBuyMutation[];\n /** Aggregated action view, preserving the legacy `getActionForMutation()` shape. */\n actions: ResolvedAction[];\n /** Unique normalized fields touched by this patch, in request traversal order. */\n touched_fields: string[];\n}\n\n/**\n * Walk the request body and return the set of fine-grained actions it\n * covers. Compatibility wrapper over `decomposeUpdateMediaBuy()` for callers\n * that only need the action-level view.\n *\n * Returns an empty array when the request touches no recognized field\n * (e.g. only `idempotency_key` / `revision` / `account` were set).\n */\nexport function getActionForMutation(\n currentBuy: MediaBuyActionContext,\n request: UpdateMediaBuyRequestLike\n): ResolvedAction[] {\n return decomposeUpdateMediaBuy(currentBuy, request).actions;\n}\n\n/**\n * Decompose an `update_media_buy` patch into the concrete mutations it\n * requests plus the fine-grained actions those mutations require.\n *\n * This is intentionally read-only: it does not validate availability or\n * mutate the request. Buyer code can use it for previews and preflight;\n * seller/adopter code can use it to dispatch individual patch operations\n * without re-walking the raw request.\n */\nexport function decomposeUpdateMediaBuy(\n currentBuy: MediaBuyActionContext,\n request: UpdateMediaBuyRequestLike\n): DecomposedUpdateMediaBuy {\n const mutations: DecomposedUpdateMediaBuyMutation[] = [];\n const currentPackages = new Map<string, NonNullable<MediaBuyActionContext['packages']>[number]>();\n\n for (const pkg of currentBuy.packages ?? []) {\n if (pkg.package_id) currentPackages.set(pkg.package_id, pkg);\n }\n\n const push = (mutation: DecomposedUpdateMediaBuyMutation): void => {\n mutations.push(mutation);\n };\n\n if (request.paused !== undefined) {\n push({\n action: request.paused === false ? 'resume' : 'pause',\n field: 'paused',\n path: 'paused',\n scope: 'buy',\n to: request.paused,\n });\n }\n\n if (request.canceled !== undefined) {\n push({\n action: 'cancel',\n field: 'canceled',\n path: 'canceled',\n scope: 'buy',\n to: request.canceled,\n });\n }\n\n if (request.cancellation_reason !== undefined) {\n push({\n action: 'cancel',\n field: 'cancellation_reason',\n path: 'cancellation_reason',\n scope: 'buy',\n to: request.cancellation_reason,\n });\n }\n\n if (request.start_time !== undefined) {\n push({\n action: 'update_flight_dates',\n direction: 'shift',\n field: 'start_time',\n path: 'start_time',\n scope: 'buy',\n from: currentBuy.start_time,\n to: request.start_time,\n });\n }\n\n if (request.end_time !== undefined) {\n const pick = resolveFlightEndDirection(currentBuy, request, 'end_time');\n push({\n ...pick,\n field: 'end_time',\n path: 'end_time',\n scope: 'buy',\n from: currentBuy.end_time,\n to: request.end_time,\n });\n }\n\n if (request.new_packages !== undefined && request.new_packages.length > 0) {\n push({\n action: 'add_packages',\n field: 'new_packages',\n path: 'new_packages',\n scope: 'packages',\n to: request.new_packages,\n });\n }\n\n if (request.packages) {\n const budgetPick = resolveBudgetDirection(currentBuy, request);\n const packageEndPick = resolveFlightEndDirection(currentBuy, request, 'packages[].end_time');\n\n request.packages.forEach((pkg, index) => {\n const currentPkg = currentPackages.get(pkg.package_id);\n const base = {\n scope: 'package' as const,\n package_id: pkg.package_id,\n package_index: index,\n };\n\n if (pkg.canceled !== undefined) {\n push({\n action: 'remove_packages',\n field: 'packages[].canceled',\n path: `packages[${index}].canceled`,\n ...base,\n to: pkg.canceled,\n });\n }\n // `pkg.paused` has no entry in the generated action mapping - the\n // spec keys pause/resume at the buy level only. Drop silently so the\n // resolver doesn't conflate it with the top-level `paused` action.\n\n if (pkg.budget !== undefined) {\n push({\n ...budgetPick,\n field: 'packages[].budget',\n path: `packages[${index}].budget`,\n ...base,\n from: currentPkg?.budget,\n to: pkg.budget,\n });\n }\n\n if (pkg.pacing !== undefined) {\n push({\n action: 'update_pacing',\n field: 'packages[].pacing',\n path: `packages[${index}].pacing`,\n ...base,\n to: pkg.pacing,\n });\n }\n\n if (pkg.start_time !== undefined) {\n push({\n action: 'update_flight_dates',\n direction: 'shift',\n field: 'packages[].start_time',\n path: `packages[${index}].start_time`,\n ...base,\n from: currentPkg?.start_time,\n to: pkg.start_time,\n });\n }\n\n if (pkg.end_time !== undefined) {\n push({\n ...packageEndPick,\n field: 'packages[].end_time',\n path: `packages[${index}].end_time`,\n ...base,\n from: currentPkg?.end_time,\n to: pkg.end_time,\n });\n }\n\n if (pkg.creative_assignments !== undefined) {\n push({\n action: 'update_creative_assignments',\n field: 'packages[].creative_assignments',\n path: `packages[${index}].creative_assignments`,\n ...base,\n to: pkg.creative_assignments,\n });\n }\n\n if (pkg.creatives !== undefined) {\n push({\n action: 'replace_creative',\n field: 'packages[].creatives',\n path: `packages[${index}].creatives`,\n ...base,\n to: pkg.creatives,\n });\n }\n\n if (pkg.keyword_targets_add !== undefined) {\n push({\n action: 'update_targeting',\n field: 'packages[].keyword_targets_add',\n path: `packages[${index}].keyword_targets_add`,\n ...base,\n to: pkg.keyword_targets_add,\n });\n }\n\n if (pkg.keyword_targets_remove !== undefined) {\n push({\n action: 'update_targeting',\n field: 'packages[].keyword_targets_remove',\n path: `packages[${index}].keyword_targets_remove`,\n ...base,\n to: pkg.keyword_targets_remove,\n });\n }\n\n if (pkg.negative_keywords_add !== undefined) {\n push({\n action: 'update_targeting',\n field: 'packages[].negative_keywords_add',\n path: `packages[${index}].negative_keywords_add`,\n ...base,\n to: pkg.negative_keywords_add,\n });\n }\n\n if (pkg.negative_keywords_remove !== undefined) {\n push({\n action: 'update_targeting',\n field: 'packages[].negative_keywords_remove',\n path: `packages[${index}].negative_keywords_remove`,\n ...base,\n to: pkg.negative_keywords_remove,\n });\n }\n\n if (pkg.targeting_overlay !== undefined) {\n // `frequency_cap` is the only nested field with its own action.\n // Touching the whole overlay falls through to update_targeting.\n const overlayKeys = Object.keys(pkg.targeting_overlay);\n if (overlayKeys.length === 1 && overlayKeys[0] === 'frequency_cap') {\n push({\n action: 'update_frequency_caps',\n field: 'packages[].targeting_overlay.frequency_cap',\n path: `packages[${index}].targeting_overlay.frequency_cap`,\n ...base,\n to: pkg.targeting_overlay.frequency_cap,\n });\n } else {\n push({\n action: 'update_targeting',\n field: 'packages[].targeting_overlay',\n path: `packages[${index}].targeting_overlay`,\n ...base,\n to: pkg.targeting_overlay,\n });\n }\n }\n });\n }\n\n return {\n mutations,\n actions: aggregateResolvedActions(mutations),\n touched_fields: uniqueFields(mutations),\n };\n}\n\nfunction aggregateResolvedActions(mutations: ReadonlyArray<DecomposedUpdateMediaBuyMutation>): ResolvedAction[] {\n const resolved = new Map<MediaBuyValidAction, ResolvedAction>();\n\n for (const mutation of mutations) {\n const existing = resolved.get(mutation.action);\n if (existing) {\n if (existing.direction === undefined && mutation.direction !== undefined) {\n existing.direction = mutation.direction;\n }\n if (!existing.touched_fields.includes(mutation.field)) {\n existing.touched_fields.push(mutation.field);\n }\n continue;\n }\n\n resolved.set(mutation.action, {\n action: mutation.action,\n direction: mutation.direction,\n touched_fields: [mutation.field],\n });\n }\n\n return [...resolved.values()];\n}\n\nfunction uniqueFields(mutations: ReadonlyArray<DecomposedUpdateMediaBuyMutation>): string[] {\n const fields: string[] = [];\n for (const mutation of mutations) {\n if (!fields.includes(mutation.field)) fields.push(mutation.field);\n }\n return fields;\n}\n\nfunction resolveBudgetDirection(\n currentBuy: MediaBuyActionContext,\n request: UpdateMediaBuyRequestLike\n): { action: MediaBuyValidAction; direction: MediaBuyMutationDirection } {\n const currentByPkg = new Map<string, number>();\n for (const pkg of currentBuy.packages ?? []) {\n if (pkg.package_id && typeof pkg.budget === 'number') {\n currentByPkg.set(pkg.package_id, pkg.budget);\n }\n }\n\n let currentTotal = 0;\n let proposedTotal = 0;\n let sawIncrease = false;\n let sawDecrease = false;\n\n for (const pkg of request.packages ?? []) {\n if (typeof pkg.budget !== 'number') continue;\n const prev = currentByPkg.get(pkg.package_id);\n if (prev === undefined) {\n // No baseline - treat as increase (mirrors how sellers see a new\n // budget on a previously-zero line).\n sawIncrease = true;\n proposedTotal += pkg.budget;\n continue;\n }\n currentTotal += prev;\n proposedTotal += pkg.budget;\n if (pkg.budget > prev) sawIncrease = true;\n if (pkg.budget < prev) sawDecrease = true;\n }\n\n // Reallocate: per-package movement in both directions but total\n // unchanged (within float tolerance to absorb cent rounding).\n if (sawIncrease && sawDecrease && Math.abs(proposedTotal - currentTotal) < BUDGET_EQUAL_TOLERANCE) {\n return { action: 'reallocate_budget', direction: 'reallocate' };\n }\n if (proposedTotal > currentTotal) return { action: 'increase_budget', direction: 'increase' };\n if (proposedTotal < currentTotal) return { action: 'decrease_budget', direction: 'decrease' };\n\n // Equal totals with no per-package movement (e.g. budget set to same\n // value) - defaults to reallocate so the request still has *some*\n // action attached for the preflight to check against.\n return { action: 'reallocate_budget', direction: 'reallocate' };\n}\n\nfunction resolveFlightEndDirection(\n currentBuy: MediaBuyActionContext,\n request: UpdateMediaBuyRequestLike,\n field: 'end_time' | 'packages[].end_time'\n): { action: MediaBuyValidAction; direction: MediaBuyMutationDirection } {\n // If start_time is being touched at the same time, the action is\n // update_flight_dates regardless of end direction (shift semantics).\n if (request.start_time !== undefined) {\n return { action: 'update_flight_dates', direction: 'shift' };\n }\n const packageStartTouched = (request.packages ?? []).some(pkg => pkg.start_time !== undefined);\n if (packageStartTouched) {\n return { action: 'update_flight_dates', direction: 'shift' };\n }\n\n if (field === 'end_time') {\n const currentEnd = currentBuy.end_time;\n const proposedEnd = request.end_time;\n if (currentEnd && proposedEnd) {\n const cur = Date.parse(currentEnd);\n const next = Date.parse(proposedEnd);\n if (!Number.isNaN(cur) && !Number.isNaN(next)) {\n if (next > cur) return { action: 'extend_flight', direction: 'extend' };\n if (next < cur) return { action: 'shorten_flight', direction: 'shorten' };\n }\n }\n // Indeterminate (missing baseline or unparseable dates). Fall through\n // to the generic vocabulary; sellers that advertise either of the\n // direction-specific actions usually also advertise update_flight_dates.\n return { action: 'update_flight_dates', direction: 'shift' };\n }\n\n // packages[].end_time\n let extending = false;\n let shortening = false;\n const currentByPkg = new Map<string, string | undefined>();\n for (const pkg of currentBuy.packages ?? []) {\n if (pkg.package_id) currentByPkg.set(pkg.package_id, pkg.end_time);\n }\n for (const pkg of request.packages ?? []) {\n if (!pkg.end_time) continue;\n const prev = currentByPkg.get(pkg.package_id);\n if (!prev) {\n extending = true;\n continue;\n }\n const cur = Date.parse(prev);\n const next = Date.parse(pkg.end_time);\n if (Number.isNaN(cur) || Number.isNaN(next)) continue;\n if (next > cur) extending = true;\n if (next < cur) shortening = true;\n }\n if (extending && !shortening) return { action: 'extend_flight', direction: 'extend' };\n if (shortening && !extending) return { action: 'shorten_flight', direction: 'shorten' };\n // Mixed or indeterminate - fall through to update_flight_dates.\n return { action: 'update_flight_dates', direction: 'shift' };\n}\n\n// ---------------------------------------------------------------------------\n// Preflight\n// ---------------------------------------------------------------------------\n\nexport interface PreflightAllowed {\n ok: true;\n /** Every action the request body covers. Multi-entry for mixed mutations. */\n actions: ResolvedAction[];\n /** Concrete requested mutations backing `actions`. */\n mutations: DecomposedUpdateMediaBuyMutation[];\n /** Per-action mode resolved from `available_actions[]`. Same order as `actions`. */\n modes: MediaBuyActionMode[];\n /** Echo of the buy's available_actions[] entries the preflight matched. */\n matched: MediaBuyAvailableAction[];\n /** True when any matched action carries a non-`self_serve` mode. */\n requiresAsyncFlow: boolean;\n /** Set when only `valid_actions[]` (legacy 3.0) was available. */\n compat?: { source: AvailableActionsResult['source']; message: string };\n}\n\n/**\n * One blocked action in a denied preflight. Multi-action requests can\n * accumulate several denials in a single result so callers can render\n * every blocker in one pass.\n */\nexport interface PreflightDenial {\n action: MediaBuyValidAction;\n reason: ActionNotAllowedReason;\n /** Structured recovery hint when `reason: 'mode_mismatch'`. */\n recovery?: ModeMismatchRecovery;\n}\n\nexport interface PreflightDenied {\n ok: false;\n /** Concrete requested mutations backing the denied action checks. */\n mutations: DecomposedUpdateMediaBuyMutation[];\n /** Every action the request mapped to that the buy doesn't currently allow. */\n denials: PreflightDenial[];\n /** Snapshot of the buy's available_actions[] for caller-side recovery UI. */\n currently_available_actions: MediaBuyAvailableAction[];\n compat?: { source: AvailableActionsResult['source']; message: string };\n}\n\nexport type PreflightResult = PreflightAllowed | PreflightDenied;\n\nexport type ModeMismatchRecovery =\n | { kind: 'createProposal'; message: string }\n | { kind: 'waitForApproval'; message: string }\n | { kind: 'reissueAsDirect'; message: string };\n\n/**\n * Decide whether an `update_media_buy` request is reachable against the\n * current buy state. When the buy carries only legacy `valid_actions[]`,\n * the preflight passes (with `compat.source: 'valid_actions'`) for any\n * matching action - mode is not knowable, so it's reported as `self_serve`\n * but flagged as a compat fallback.\n *\n * Multi-action requests: every resolved action must be present in\n * `available_actions[]`. All missing actions are reported in `denials[]`\n * so callers can render every blocker in a single pass.\n *\n * Throws `ValidationError` when the request touches no recognized\n * `update_media_buy` field. This is a buyer-side bug (the SDK was asked to\n * dispatch a no-op), not a seller-side denial.\n */\nexport function preflightUpdateMediaBuy(\n currentBuy: MediaBuyActionContext,\n request: UpdateMediaBuyRequestLike\n): PreflightResult {\n const decomposition = decomposeUpdateMediaBuy(currentBuy, request);\n const resolved = decomposition.actions;\n\n if (resolved.length === 0) {\n throw new ValidationError(\n 'request',\n request,\n 'update_media_buy request must touch at least one mutating field (paused, canceled, start_time, end_time, packages[*], or new_packages)'\n );\n }\n\n const result = getAvailableActions(currentBuy, { silent: true });\n const compat =\n result.source === 'valid_actions' ? { source: result.source, message: result.deprecationHint ?? '' } : undefined;\n\n const matched: MediaBuyAvailableAction[] = [];\n const modes: MediaBuyActionMode[] = [];\n const denials: PreflightDenial[] = [];\n\n for (const resolvedAction of resolved) {\n const lookup = findAvailableAction(currentBuy, resolvedAction.action, { silent: true });\n if (!lookup) {\n // Without product allowed_actions on the buy we can't distinguish\n // not_supported_on_product vs not_supported_on_buy. wrong_status\n // is server-side. Default to not_supported_on_buy: the most common\n // preflight failure when a seller doesn't advertise the action on\n // this specific buy.\n denials.push({ action: resolvedAction.action, reason: 'not_supported_on_buy' });\n continue;\n }\n matched.push(lookup.entry);\n modes.push(lookup.entry.mode);\n }\n\n if (denials.length > 0) {\n return {\n ok: false,\n mutations: decomposition.mutations,\n denials,\n currently_available_actions: result.actions,\n compat,\n };\n }\n\n return {\n ok: true,\n actions: resolved,\n mutations: decomposition.mutations,\n modes,\n matched,\n requiresAsyncFlow: modes.some(m => m !== 'self_serve'),\n compat,\n };\n}\n\n/**\n * Build a typed recovery hint from a `mode_mismatch` rejection. Exported\n * so callers handling `ActionNotAllowedError` outside of the preflight\n * surface (e.g. when an in-flight mutation races a buy state change) get\n * the same structured recovery path.\n */\nexport function recoveryForModeMismatch(\n attemptedAction: MediaBuyValidAction,\n currentlyAvailable: ReadonlyArray<MediaBuyAvailableAction>\n): ModeMismatchRecovery | undefined {\n const entry = currentlyAvailable.find(a => a.action === attemptedAction);\n if (!entry) return undefined;\n // `requires_proposal` was removed from the rc4+ mode enum in favor of\n // REQUOTE_REQUIRED, but older 3.1 prerelease sellers can still emit it.\n switch (entry.mode as MediaBuyActionMode | 'requires_proposal') {\n case 'requires_proposal':\n return {\n kind: 'createProposal',\n message:\n `seller now resolves \\`${attemptedAction}\\` as requires_proposal. ` +\n 'reissue via the proposal lifecycle (`create_proposal` / `finalize_proposal`).',\n };\n case 'requires_approval':\n return {\n kind: 'waitForApproval',\n message:\n `seller now resolves \\`${attemptedAction}\\` as requires_approval. ` +\n 'expect an async approval callback rather than a direct response.',\n };\n case 'conditional_self_serve':\n return {\n kind: 'reissueAsDirect',\n message:\n `seller resolves \\`${attemptedAction}\\` as conditional_self_serve: ` +\n 'small mutations clear automatically, larger ones queue. retry; expect a possible async escalation.',\n };\n case 'self_serve':\n return {\n kind: 'reissueAsDirect',\n message: `seller resolves \\`${attemptedAction}\\` as self_serve. retry the same request.`,\n };\n default:\n return undefined;\n }\n}\n\n// Re-export shared types so consumers can import a single module.\nexport type {\n ActionNotAllowedReason,\n MediaBuyAvailableAction,\n MediaBuyActionMode,\n MediaBuyValidAction,\n MediaBuyActionContext,\n UpdateMediaBuyRequestLike,\n} from './types';\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/media-buy/preflight.ts"],"sourcesContent":["// Buyer-side preflight helpers for `update_media_buy`. See RFC #4480.\n//\n// Three layers, each usable on its own:\n// 1. Boolean gates: `canPause(buy)`, `canExtendFlight(buy)`, ... - single\n// question, single answer. Drives UI affordances.\n// 2. Decomposer: `decomposeUpdateMediaBuy(buy, request)` - turns a patch\n// into concrete requested mutations plus the actions they cover.\n// 3. Resolver: `getActionForMutation(buy, request)` - compatibility wrapper\n// returning just the fine-grained actions. Drives dispatch.\n// 4. Preflight: `preflightUpdateMediaBuy(buy, request)` - composes\n// resolver + gate checks into a single ok/not-ok decision.\n\nimport { ValidationError } from '../errors';\nimport { findAvailableAction, getAvailableActions, type AvailableActionsResult } from './available-actions';\nimport type {\n ActionNotAllowedReason,\n MediaBuyActionContext,\n MediaBuyActionMode,\n MediaBuyAvailableAction,\n MediaBuyValidAction,\n UpdateMediaBuyRequestLike,\n} from './types';\n\n// ---------------------------------------------------------------------------\n// Boolean gates\n// ---------------------------------------------------------------------------\n\nfunction isAvailable(buy: MediaBuyActionContext, action: MediaBuyValidAction): boolean {\n return findAvailableAction(buy, action, { silent: true }) !== undefined;\n}\n\nexport const canPause = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'pause');\nexport const canResume = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'resume');\nexport const canCancel = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'cancel');\nexport const canExtendFlight = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'extend_flight');\nexport const canShortenFlight = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'shorten_flight');\nexport const canUpdateFlightDates = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'update_flight_dates');\nexport const canIncreaseBudget = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'increase_budget');\nexport const canDecreaseBudget = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'decrease_budget');\nexport const canReallocateBudget = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'reallocate_budget');\nexport const canUpdateTargeting = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'update_targeting');\nexport const canUpdatePacing = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'update_pacing');\nexport const canUpdateFrequencyCaps = (buy: MediaBuyActionContext): boolean =>\n isAvailable(buy, 'update_frequency_caps');\nexport const canReplaceCreative = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'replace_creative');\nexport const canUpdateCreativeAssignments = (buy: MediaBuyActionContext): boolean =>\n isAvailable(buy, 'update_creative_assignments');\nexport const canAddPackages = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'add_packages');\nexport const canRemovePackages = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'remove_packages');\n\nexport const canRemoveCreative = (buy: MediaBuyActionContext): boolean => isAvailable(buy, 'remove_creative');\n\n// Float tolerance for comparing summed budgets across packages. Below this\n// difference, two totals are treated as equal (absorbs cent-rounding from\n// per-package decimal math). Half a cent is the smallest representable\n// difference any current AdCP currency cares about. If a future spec\n// extension allows sub-cent / micro-amount pricing (e.g. programmatic\n// auction-side bidding) this tolerance would mask real reallocations and\n// should be tightened or made currency-aware.\nconst BUDGET_EQUAL_TOLERANCE = 0.005;\n\n// ---------------------------------------------------------------------------\n// Resolver\n// ---------------------------------------------------------------------------\n\nexport type MediaBuyMutationDirection = 'increase' | 'decrease' | 'reallocate' | 'extend' | 'shorten' | 'shift';\n\n/**\n * One action a request body covers, plus the direction inference where the\n * fine-grained vocabulary distinguishes increase/decrease or\n * extend/shorten. `touched_fields` lists the normalized dotted paths that\n * triggered this entry (useful for debugging).\n */\nexport interface ResolvedAction {\n action: MediaBuyValidAction;\n /**\n * Direction tag. Present when the resolver picked between fine-grained\n * siblings (e.g. `increase_budget` vs `decrease_budget`).\n */\n direction?: MediaBuyMutationDirection;\n touched_fields: string[];\n}\n\nexport type MediaBuyMutationScope = 'buy' | 'package' | 'packages';\n\n/**\n * One concrete requested mutation inside an `update_media_buy` patch.\n *\n * `field` is the normalized schema path used for action mapping\n * (`packages[].budget`), while `path` is the concrete request path\n * (`packages[0].budget`) that adopter code can use for diagnostics or\n * dispatch. `from` is best-effort and only populated for fields the helper can\n * read from the supplied current buy snapshot.\n */\nexport interface DecomposedUpdateMediaBuyMutation {\n action: MediaBuyValidAction;\n direction?: MediaBuyMutationDirection;\n field: string;\n path: string;\n scope: MediaBuyMutationScope;\n package_id?: string;\n package_index?: number;\n from?: unknown;\n to?: unknown;\n}\n\nexport interface DecomposedUpdateMediaBuy {\n /** Concrete mutations requested by the patch. Empty when no known fields were touched. */\n mutations: DecomposedUpdateMediaBuyMutation[];\n /** Aggregated action view, preserving the legacy `getActionForMutation()` shape. */\n actions: ResolvedAction[];\n /** Unique normalized fields touched by this patch, in request traversal order. */\n touched_fields: string[];\n}\n\n/**\n * Walk the request body and return the set of fine-grained actions it\n * covers. Compatibility wrapper over `decomposeUpdateMediaBuy()` for callers\n * that only need the action-level view.\n *\n * Returns an empty array when the request touches no recognized field\n * (e.g. only `idempotency_key` / `revision` / `account` were set).\n */\nexport function getActionForMutation(\n currentBuy: MediaBuyActionContext,\n request: UpdateMediaBuyRequestLike\n): ResolvedAction[] {\n return decomposeUpdateMediaBuy(currentBuy, request).actions;\n}\n\n/**\n * Decompose an `update_media_buy` patch into the concrete mutations it\n * requests plus the fine-grained actions those mutations require.\n *\n * This is intentionally read-only: it does not validate availability or\n * mutate the request. Buyer code can use it for previews and preflight;\n * seller/adopter code can use it to dispatch individual patch operations\n * without re-walking the raw request.\n */\nexport function decomposeUpdateMediaBuy(\n currentBuy: MediaBuyActionContext,\n request: UpdateMediaBuyRequestLike\n): DecomposedUpdateMediaBuy {\n const mutations: DecomposedUpdateMediaBuyMutation[] = [];\n const currentPackages = new Map<string, NonNullable<MediaBuyActionContext['packages']>[number]>();\n\n for (const pkg of currentBuy.packages ?? []) {\n if (pkg.package_id) currentPackages.set(pkg.package_id, pkg);\n }\n\n const push = (mutation: DecomposedUpdateMediaBuyMutation): void => {\n mutations.push(mutation);\n };\n\n if (request.paused !== undefined) {\n push({\n action: request.paused === false ? 'resume' : 'pause',\n field: 'paused',\n path: 'paused',\n scope: 'buy',\n to: request.paused,\n });\n }\n\n if (request.canceled !== undefined) {\n push({\n action: 'cancel',\n field: 'canceled',\n path: 'canceled',\n scope: 'buy',\n to: request.canceled,\n });\n }\n\n if (request.cancellation_reason !== undefined) {\n push({\n action: 'cancel',\n field: 'cancellation_reason',\n path: 'cancellation_reason',\n scope: 'buy',\n to: request.cancellation_reason,\n });\n }\n\n if (request.start_time !== undefined) {\n push({\n action: 'update_flight_dates',\n direction: 'shift',\n field: 'start_time',\n path: 'start_time',\n scope: 'buy',\n from: currentBuy.start_time,\n to: request.start_time,\n });\n }\n\n if (request.end_time !== undefined) {\n const pick = resolveFlightEndDirection(currentBuy, request, 'end_time');\n push({\n ...pick,\n field: 'end_time',\n path: 'end_time',\n scope: 'buy',\n from: currentBuy.end_time,\n to: request.end_time,\n });\n }\n\n if (request.new_packages !== undefined && request.new_packages.length > 0) {\n push({\n action: 'add_packages',\n field: 'new_packages',\n path: 'new_packages',\n scope: 'packages',\n to: request.new_packages,\n });\n }\n\n if (request.packages) {\n const budgetPick = resolveBudgetDirection(currentBuy, request);\n const packageEndPick = resolveFlightEndDirection(currentBuy, request, 'packages[].end_time');\n\n request.packages.forEach((pkg, index) => {\n const currentPkg = currentPackages.get(pkg.package_id);\n const base = {\n scope: 'package' as const,\n package_id: pkg.package_id,\n package_index: index,\n };\n\n if (pkg.canceled !== undefined) {\n push({\n action: 'remove_packages',\n field: 'packages[].canceled',\n path: `packages[${index}].canceled`,\n ...base,\n to: pkg.canceled,\n });\n }\n // `pkg.paused` has no entry in the generated action mapping - the\n // spec keys pause/resume at the buy level only. Drop silently so the\n // resolver doesn't conflate it with the top-level `paused` action.\n\n if (pkg.budget !== undefined) {\n push({\n ...budgetPick,\n field: 'packages[].budget',\n path: `packages[${index}].budget`,\n ...base,\n from: currentPkg?.budget,\n to: pkg.budget,\n });\n }\n\n if (pkg.pacing !== undefined) {\n push({\n action: 'update_pacing',\n field: 'packages[].pacing',\n path: `packages[${index}].pacing`,\n ...base,\n to: pkg.pacing,\n });\n }\n\n if (pkg.start_time !== undefined) {\n push({\n action: 'update_flight_dates',\n direction: 'shift',\n field: 'packages[].start_time',\n path: `packages[${index}].start_time`,\n ...base,\n from: currentPkg?.start_time,\n to: pkg.start_time,\n });\n }\n\n if (pkg.end_time !== undefined) {\n push({\n ...packageEndPick,\n field: 'packages[].end_time',\n path: `packages[${index}].end_time`,\n ...base,\n from: currentPkg?.end_time,\n to: pkg.end_time,\n });\n }\n\n if (pkg.creative_assignments !== undefined) {\n push({\n action: 'update_creative_assignments',\n field: 'packages[].creative_assignments',\n path: `packages[${index}].creative_assignments`,\n ...base,\n to: pkg.creative_assignments,\n });\n }\n\n if (pkg.creatives !== undefined) {\n push({\n action: 'replace_creative',\n field: 'packages[].creatives',\n path: `packages[${index}].creatives`,\n ...base,\n to: pkg.creatives,\n });\n }\n\n if (pkg.keyword_targets_add !== undefined) {\n push({\n action: 'update_targeting',\n field: 'packages[].keyword_targets_add',\n path: `packages[${index}].keyword_targets_add`,\n ...base,\n to: pkg.keyword_targets_add,\n });\n }\n\n if (pkg.keyword_targets_remove !== undefined) {\n push({\n action: 'update_targeting',\n field: 'packages[].keyword_targets_remove',\n path: `packages[${index}].keyword_targets_remove`,\n ...base,\n to: pkg.keyword_targets_remove,\n });\n }\n\n if (pkg.negative_keywords_add !== undefined) {\n push({\n action: 'update_targeting',\n field: 'packages[].negative_keywords_add',\n path: `packages[${index}].negative_keywords_add`,\n ...base,\n to: pkg.negative_keywords_add,\n });\n }\n\n if (pkg.negative_keywords_remove !== undefined) {\n push({\n action: 'update_targeting',\n field: 'packages[].negative_keywords_remove',\n path: `packages[${index}].negative_keywords_remove`,\n ...base,\n to: pkg.negative_keywords_remove,\n });\n }\n\n if (pkg.targeting_overlay !== undefined) {\n // `frequency_cap` is the only nested field with its own action.\n // Touching the whole overlay falls through to update_targeting.\n const overlayKeys = Object.keys(pkg.targeting_overlay);\n if (overlayKeys.length === 1 && overlayKeys[0] === 'frequency_cap') {\n push({\n action: 'update_frequency_caps',\n field: 'packages[].targeting_overlay.frequency_cap',\n path: `packages[${index}].targeting_overlay.frequency_cap`,\n ...base,\n to: pkg.targeting_overlay.frequency_cap,\n });\n } else {\n push({\n action: 'update_targeting',\n field: 'packages[].targeting_overlay',\n path: `packages[${index}].targeting_overlay`,\n ...base,\n to: pkg.targeting_overlay,\n });\n }\n }\n });\n }\n\n return {\n mutations,\n actions: aggregateResolvedActions(mutations),\n touched_fields: uniqueFields(mutations),\n };\n}\n\nfunction aggregateResolvedActions(mutations: ReadonlyArray<DecomposedUpdateMediaBuyMutation>): ResolvedAction[] {\n const resolved = new Map<MediaBuyValidAction, ResolvedAction>();\n\n for (const mutation of mutations) {\n const existing = resolved.get(mutation.action);\n if (existing) {\n if (existing.direction === undefined && mutation.direction !== undefined) {\n existing.direction = mutation.direction;\n }\n if (!existing.touched_fields.includes(mutation.field)) {\n existing.touched_fields.push(mutation.field);\n }\n continue;\n }\n\n resolved.set(mutation.action, {\n action: mutation.action,\n direction: mutation.direction,\n touched_fields: [mutation.field],\n });\n }\n\n return [...resolved.values()];\n}\n\nfunction uniqueFields(mutations: ReadonlyArray<DecomposedUpdateMediaBuyMutation>): string[] {\n const fields: string[] = [];\n for (const mutation of mutations) {\n if (!fields.includes(mutation.field)) fields.push(mutation.field);\n }\n return fields;\n}\n\nfunction resolveBudgetDirection(\n currentBuy: MediaBuyActionContext,\n request: UpdateMediaBuyRequestLike\n): { action: MediaBuyValidAction; direction: MediaBuyMutationDirection } {\n const currentByPkg = new Map<string, number>();\n for (const pkg of currentBuy.packages ?? []) {\n if (pkg.package_id && typeof pkg.budget === 'number') {\n currentByPkg.set(pkg.package_id, pkg.budget);\n }\n }\n\n let currentTotal = 0;\n let proposedTotal = 0;\n let sawIncrease = false;\n let sawDecrease = false;\n\n for (const pkg of request.packages ?? []) {\n if (typeof pkg.budget !== 'number') continue;\n const prev = currentByPkg.get(pkg.package_id);\n if (prev === undefined) {\n // No baseline - treat as increase (mirrors how sellers see a new\n // budget on a previously-zero line).\n sawIncrease = true;\n proposedTotal += pkg.budget;\n continue;\n }\n currentTotal += prev;\n proposedTotal += pkg.budget;\n if (pkg.budget > prev) sawIncrease = true;\n if (pkg.budget < prev) sawDecrease = true;\n }\n\n // Reallocate: per-package movement in both directions but total\n // unchanged (within float tolerance to absorb cent rounding).\n if (sawIncrease && sawDecrease && Math.abs(proposedTotal - currentTotal) < BUDGET_EQUAL_TOLERANCE) {\n return { action: 'reallocate_budget', direction: 'reallocate' };\n }\n if (proposedTotal > currentTotal) return { action: 'increase_budget', direction: 'increase' };\n if (proposedTotal < currentTotal) return { action: 'decrease_budget', direction: 'decrease' };\n\n // Equal totals with no per-package movement (e.g. budget set to same\n // value) - defaults to reallocate so the request still has *some*\n // action attached for the preflight to check against.\n return { action: 'reallocate_budget', direction: 'reallocate' };\n}\n\nfunction resolveFlightEndDirection(\n currentBuy: MediaBuyActionContext,\n request: UpdateMediaBuyRequestLike,\n field: 'end_time' | 'packages[].end_time'\n): { action: MediaBuyValidAction; direction: MediaBuyMutationDirection } {\n // If start_time is being touched at the same time, the action is\n // update_flight_dates regardless of end direction (shift semantics).\n if (request.start_time !== undefined) {\n return { action: 'update_flight_dates', direction: 'shift' };\n }\n const packageStartTouched = (request.packages ?? []).some(pkg => pkg.start_time !== undefined);\n if (packageStartTouched) {\n return { action: 'update_flight_dates', direction: 'shift' };\n }\n\n if (field === 'end_time') {\n const currentEnd = currentBuy.end_time;\n const proposedEnd = request.end_time;\n if (currentEnd && proposedEnd) {\n const cur = Date.parse(currentEnd);\n const next = Date.parse(proposedEnd);\n if (!Number.isNaN(cur) && !Number.isNaN(next)) {\n if (next > cur) return { action: 'extend_flight', direction: 'extend' };\n if (next < cur) return { action: 'shorten_flight', direction: 'shorten' };\n }\n }\n // Indeterminate (missing baseline or unparseable dates). Fall through\n // to the generic vocabulary; sellers that advertise either of the\n // direction-specific actions usually also advertise update_flight_dates.\n return { action: 'update_flight_dates', direction: 'shift' };\n }\n\n // packages[].end_time\n let extending = false;\n let shortening = false;\n const currentByPkg = new Map<string, string | undefined>();\n for (const pkg of currentBuy.packages ?? []) {\n if (pkg.package_id) currentByPkg.set(pkg.package_id, pkg.end_time);\n }\n for (const pkg of request.packages ?? []) {\n if (!pkg.end_time) continue;\n const prev = currentByPkg.get(pkg.package_id);\n if (!prev) {\n extending = true;\n continue;\n }\n const cur = Date.parse(prev);\n const next = Date.parse(pkg.end_time);\n if (Number.isNaN(cur) || Number.isNaN(next)) continue;\n if (next > cur) extending = true;\n if (next < cur) shortening = true;\n }\n if (extending && !shortening) return { action: 'extend_flight', direction: 'extend' };\n if (shortening && !extending) return { action: 'shorten_flight', direction: 'shorten' };\n // Mixed or indeterminate - fall through to update_flight_dates.\n return { action: 'update_flight_dates', direction: 'shift' };\n}\n\n// ---------------------------------------------------------------------------\n// Preflight\n// ---------------------------------------------------------------------------\n\nexport interface PreflightAllowed {\n ok: true;\n /** Every action the request body covers. Multi-entry for mixed mutations. */\n actions: ResolvedAction[];\n /** Concrete requested mutations backing `actions`. */\n mutations: DecomposedUpdateMediaBuyMutation[];\n /** Per-action mode resolved from `available_actions[]`. Same order as `actions`. */\n modes: MediaBuyActionMode[];\n /** Echo of the buy's available_actions[] entries the preflight matched. */\n matched: MediaBuyAvailableAction[];\n /** True when any matched action carries a non-`self_serve` mode. */\n requiresAsyncFlow: boolean;\n /** Set when only `valid_actions[]` (legacy 3.0) was available. */\n compat?: { source: AvailableActionsResult['source']; message: string };\n}\n\n/**\n * One blocked action in a denied preflight. Multi-action requests can\n * accumulate several denials in a single result so callers can render\n * every blocker in one pass.\n */\nexport interface PreflightDenial {\n action: MediaBuyValidAction;\n reason: ActionNotAllowedReason;\n /** Structured recovery hint when `reason: 'mode_mismatch'`. */\n recovery?: ModeMismatchRecovery;\n}\n\nexport interface PreflightDenied {\n ok: false;\n /** Concrete requested mutations backing the denied action checks. */\n mutations: DecomposedUpdateMediaBuyMutation[];\n /** Every action the request mapped to that the buy doesn't currently allow. */\n denials: PreflightDenial[];\n /** Snapshot of the buy's available_actions[] for caller-side recovery UI. */\n currently_available_actions: MediaBuyAvailableAction[];\n compat?: { source: AvailableActionsResult['source']; message: string };\n}\n\nexport type PreflightResult = PreflightAllowed | PreflightDenied;\n\nexport type ModeMismatchRecovery =\n | { kind: 'createProposal'; message: string }\n | { kind: 'waitForApproval'; message: string }\n | { kind: 'reissueAsDirect'; message: string };\n\n/**\n * Decide whether an `update_media_buy` request is reachable against the\n * current buy state. When the buy carries only legacy `valid_actions[]`,\n * the preflight passes (with `compat.source: 'valid_actions'`) for any\n * matching action - mode is not knowable, so it's reported as `self_serve`\n * but flagged as a compat fallback.\n *\n * Multi-action requests: every resolved action must be present in\n * `available_actions[]`. All missing actions are reported in `denials[]`\n * so callers can render every blocker in a single pass.\n *\n * Throws `ValidationError` when the request touches no recognized\n * `update_media_buy` field. This is a buyer-side bug (the SDK was asked to\n * dispatch a no-op), not a seller-side denial.\n */\nexport function preflightUpdateMediaBuy(\n currentBuy: MediaBuyActionContext,\n request: UpdateMediaBuyRequestLike\n): PreflightResult {\n const decomposition = decomposeUpdateMediaBuy(currentBuy, request);\n const resolved = decomposition.actions;\n\n if (resolved.length === 0) {\n throw new ValidationError(\n 'request',\n request,\n 'update_media_buy request must touch at least one mutating field (paused, canceled, start_time, end_time, packages[*], or new_packages)'\n );\n }\n\n const result = getAvailableActions(currentBuy, { silent: true });\n const compat =\n result.source === 'valid_actions' ? { source: result.source, message: result.deprecationHint ?? '' } : undefined;\n\n const matched: MediaBuyAvailableAction[] = [];\n const modes: MediaBuyActionMode[] = [];\n const denials: PreflightDenial[] = [];\n\n for (const resolvedAction of resolved) {\n const lookup = findAvailableAction(currentBuy, resolvedAction.action, { silent: true });\n if (!lookup) {\n // Without product allowed_actions on the buy we can't distinguish\n // not_supported_on_product vs not_supported_on_buy. wrong_status\n // is server-side. Default to not_supported_on_buy: the most common\n // preflight failure when a seller doesn't advertise the action on\n // this specific buy.\n denials.push({ action: resolvedAction.action, reason: 'not_supported_on_buy' });\n continue;\n }\n matched.push(lookup.entry);\n modes.push(lookup.entry.mode);\n }\n\n if (denials.length > 0) {\n return {\n ok: false,\n mutations: decomposition.mutations,\n denials,\n currently_available_actions: result.actions,\n compat,\n };\n }\n\n return {\n ok: true,\n actions: resolved,\n mutations: decomposition.mutations,\n modes,\n matched,\n requiresAsyncFlow: modes.some(m => m !== 'self_serve'),\n compat,\n };\n}\n\n/**\n * Build a typed recovery hint from a `mode_mismatch` rejection. Exported\n * so callers handling `ActionNotAllowedError` outside of the preflight\n * surface (e.g. when an in-flight mutation races a buy state change) get\n * the same structured recovery path.\n */\nexport function recoveryForModeMismatch(\n attemptedAction: MediaBuyValidAction,\n currentlyAvailable: ReadonlyArray<MediaBuyAvailableAction>\n): ModeMismatchRecovery | undefined {\n const entry = currentlyAvailable.find(a => a.action === attemptedAction);\n if (!entry) return undefined;\n // `requires_proposal` was removed from the rc4+ mode enum in favor of\n // REQUOTE_REQUIRED, but older 3.1 prerelease sellers can still emit it.\n switch (entry.mode as MediaBuyActionMode | 'requires_proposal') {\n case 'requires_proposal':\n return {\n kind: 'createProposal',\n message:\n `seller now resolves \\`${attemptedAction}\\` as requires_proposal. ` +\n 'reissue via the proposal lifecycle (`create_proposal` / `finalize_proposal`).',\n };\n case 'requires_approval':\n return {\n kind: 'waitForApproval',\n message:\n `seller now resolves \\`${attemptedAction}\\` as requires_approval. ` +\n 'expect an async approval callback rather than a direct response.',\n };\n case 'conditional_self_serve':\n return {\n kind: 'reissueAsDirect',\n message:\n `seller resolves \\`${attemptedAction}\\` as conditional_self_serve: ` +\n 'small mutations clear automatically, larger ones queue. retry; expect a possible async escalation.',\n };\n case 'self_serve':\n return {\n kind: 'reissueAsDirect',\n message: `seller resolves \\`${attemptedAction}\\` as self_serve. retry the same request.`,\n };\n default:\n return undefined;\n }\n}\n\n// Re-export shared types so consumers can import a single module.\nexport type {\n ActionNotAllowedReason,\n MediaBuyAvailableAction,\n MediaBuyActionMode,\n MediaBuyValidAction,\n MediaBuyActionContext,\n UpdateMediaBuyRequestLike,\n} from './types';\n"],"mappings":"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","names":[]}
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
import { fileURLToPath as __adcpFileURLToPath } from 'node:url';
|
|
2
|
-
import { dirname as __adcpDirname } from 'node:path';
|
|
3
|
-
import { createRequire as __adcpCreateRequire } from 'node:module';
|
|
4
|
-
const __filename = __adcpFileURLToPath(import.meta.url);
|
|
5
|
-
const __dirname = __adcpDirname(__filename);
|
|
6
|
-
const require = __adcpCreateRequire(import.meta.url);
|
|
7
1
|
class ProductPropertyPolicyError extends Error {
|
|
8
2
|
constructor(result) {
|
|
9
3
|
super(
|