@adcp/sdk 12.0.0 → 12.0.2
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.d.mts +1 -1
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js.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.d.mts +13 -0
- package/dist/lib/server/create-adcp-server.d.ts +13 -0
- package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
- package/dist/lib/server/create-adcp-server.js +3 -2
- package/dist/lib/server/create-adcp-server.js.map +1 -1
- package/dist/lib/server/create-adcp-server.mjs +3 -8
- 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.d.mts +1 -1
- package/dist/lib/server/index.d.ts +1 -1
- package/dist/lib/server/index.d.ts.map +1 -1
- package/dist/lib/server/index.js.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.d.mts +1 -1
- package/dist/lib/server/legacy/v5/index.d.ts +1 -1
- package/dist/lib/server/legacy/v5/index.d.ts.map +1 -1
- package/dist/lib/server/legacy/v5/index.js.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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/registry/index.ts"],"sourcesContent":["import type {\n ResolvedBrand,\n BrandHierarchyResolution,\n BrandHierarchyBulkResolution,\n ResolveBrandHierarchyOptions,\n ResolvedProperty,\n PropertyInfo,\n RegistryClientConfig,\n SaveBrandRequest,\n SaveBrandResponse,\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 ClaimHostedPropertyDomainResponse,\n VerifyHostedPropertyOriginResponse,\n BrandRegistryItem,\n PropertyRegistryItem,\n ValidationResult,\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 CommunityMirrorAdagentsConfig,\n CreateCommunityMirrorAdagentsConfig,\n CommunityMirrorAdagentsCatalog,\n PublishCommunityMirrorAdagentsResponse,\n ListCommunityMirrorAdagentsResponse,\n DeleteCommunityMirrorAdagentsResponse,\n ValidateProductAuthorizationRequest,\n ExpandProductIdentifiersRequest,\n PublisherPropertySelector,\n CompanySearchResult,\n FindCompanyResult,\n FeedQuery,\n FeedResponse,\n AgentSearchQuery,\n AgentSearchResponse,\n CrawlRequest,\n CrawlRequestResponse,\n ManagerRevalidationRequest,\n ManagerRevalidationResponse,\n BrandActivity,\n PropertyActivity,\n PolicySummary,\n Policy,\n PolicyHistory,\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 AgentCompliance,\n AgentComplianceDetail,\n StoryboardStatus,\n OperatorLookupResult,\n PublisherLookupResult,\n ComplianceChangedPayload,\n GetAgentStoryboardStatusResponse,\n GetAgentStoryboardStatusBulkResponse,\n} from './types';\n\nimport { openFeedStream } from './feed-stream';\nimport type { FeedStreamQuery, FeedStreamMessage } from './feed-stream';\nimport type { PropertyType } from '../discovery/types';\n\nexport type {\n ResolvedBrand,\n BrandHierarchyResolution,\n BrandHierarchyBulkResolution,\n ResolveBrandHierarchyOptions,\n ResolvedProperty,\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 ClaimHostedPropertyDomainResponse,\n VerifyHostedPropertyOriginResponse,\n BrandRegistryItem,\n PropertyRegistryItem,\n ValidationResult,\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 ValidateProductAuthorizationRequest,\n ExpandProductIdentifiersRequest,\n PublisherPropertySelector,\n CompanySearchResult,\n FindCompanyResult,\n FeedQuery,\n AgentSearchQuery,\n CrawlRequest,\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 AgentComplianceDetail,\n StoryboardStatus,\n OperatorLookupResult,\n PublisherLookupResult,\n ComplianceChangedPayload,\n GetAgentStoryboardStatusResponse,\n GetAgentStoryboardStatusBulkResponse,\n} from './types';\n\n// Re-export all generated types for advanced usage\nexport type {\n paths,\n operations,\n components,\n LocalizedName,\n PropertyIdentifier,\n RegistryError,\n AgentCompliance,\n AgentHealth,\n AgentStats,\n AgentCapabilities,\n PropertySummary,\n CatalogEvent,\n FeedResponse,\n AgentInventoryProfile,\n AgentSearchResult,\n AgentSearchResponse,\n CrawlRequestResponse,\n AuthorizationEntry,\n BrandActivity,\n PropertyActivity,\n PolicySummary,\n Policy,\n PolicyHistory,\n RegistryFeedEvent,\n AgentEventPayload,\n PropertyEventPayload,\n CollectionEventPayload,\n AuthorizationEventPayload,\n PublisherEventPayload,\n BrandEventPayload,\n CatalogBrowseResponse,\n CatalogBrowseEntry,\n CatalogSyncResponse,\n CatalogSyncEntry,\n CommunityMirrorListResponse,\n CommunityMirrorSummary,\n CommunityMirrorGetResponse,\n CommunityMirrorAdagentsJson,\n CommunityMirrorPublishResponse,\n CommunityMirrorPublishError,\n CommunityMirrorPublishRequest,\n CommunityMirrorDeleteResponse,\n} from './types';\n\n// Re-export RegistrySync\nexport { RegistrySync } from './sync';\nexport type {\n RegistrySyncConfig,\n RegistrySyncState,\n RegistrySyncTransport,\n RegistrySyncEvents,\n AgentFilter,\n RegistrySyncProperty,\n} from './sync';\n\n// Re-export the feed SSE transport\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 './feed-stream';\nexport type {\n FeedStreamQuery,\n FeedStreamMessage,\n FeedHeartbeat,\n FeedStreamErrorData,\n OpenFeedStreamOptions,\n} from './feed-stream';\nexport type { FeedFreshness } from './types.generated';\n\n// Re-export CursorStore\nexport { InMemoryCursorStore, FileCursorStore } from './cursor-store';\nexport type { CursorStore } from './cursor-store';\n\n// Re-export PropertyRegistry\nexport { PropertyRegistry } from './property-registry';\nexport type { PropertyRegistryConfig } from './property-registry';\n\nconst DEFAULT_BASE_URL = 'https://agenticadvertising.org';\nconst DEFAULT_TIMEOUT_MS = 10_000;\nconst DEFAULT_MAX_BODY_BYTES = 256 * 1024;\nconst DEFAULT_LARGE_RESPONSE_MAX_BODY_BYTES = 2 * 1024 * 1024;\nconst ERROR_BODY_PREVIEW_CHARS = 200;\nconst MAX_BULK_DOMAINS = 100;\nconst MAX_BRAND_HIERARCHY_CACHE_ENTRIES = 1000;\nconst MAX_CHECK_DOMAINS = 10000; // per OpenAPI spec maxItems\nconst COMMUNITY_MIRROR_PLATFORM_RE = /^[a-z0-9_-]{1,64}$/;\n\n/**\n * Build a catalog-only community mirror adagents.json descriptor.\n *\n * Community mirrors are for format, placement, and property discovery when a\n * platform has not published its own seller-authorized file yet. This helper\n * always emits `authorized_agents: []` and rejects caller-supplied\n * authorization claims so the resulting descriptor cannot accidentally imply\n * platform adoption or seller authorization.\n */\nexport function buildCommunityMirrorAdagents(config: CommunityMirrorAdagentsConfig): CommunityMirrorAdagentsCatalog {\n const maybeConfig = config as CommunityMirrorAdagentsConfig & {\n authorized_agents?: unknown;\n include_schema?: unknown;\n include_timestamp?: unknown;\n platform?: unknown;\n };\n if ('authorized_agents' in maybeConfig) {\n throw new Error('authorized_agents is not accepted for community mirror adagents catalogs');\n }\n if ('include_schema' in maybeConfig || 'include_timestamp' in maybeConfig) {\n throw new Error('include_schema and include_timestamp are not accepted for community mirror adagents catalogs');\n }\n const contentKeys = ['formats', 'properties', 'placements', 'collections', 'signals'] as const;\n const hasCatalogContent = contentKeys.some(key => {\n const value = (config as Record<string, unknown>)[key];\n return Array.isArray(value) && value.length > 0;\n });\n if (!hasCatalogContent) {\n throw new Error('community mirror catalogs require at least one non-empty catalog collection');\n }\n\n const { platform: _platform, ...catalogConfig } = maybeConfig;\n\n return {\n ...catalogConfig,\n authorized_agents: [],\n };\n}\n\n/**\n * Client for the AdCP Registry API.\n *\n * Covers brand resolution, property resolution, agent discovery,\n * authorization lookups, validation tools, and search.\n *\n * @example\n * ```ts\n * const registry = new RegistryClient({ apiKey: 'sk_...' });\n * const brand = await registry.lookupBrand('nike.com');\n * const agents = await registry.listAgents({ type: 'sales' });\n * const results = await registry.search('nike');\n * ```\n */\nexport class RegistryClient {\n private readonly baseUrl: string;\n private readonly apiKey: string | undefined;\n private readonly timeoutMs: number;\n private readonly maxBodyBytes: number;\n private readonly hasCustomMaxBodyBytes: boolean;\n private readonly redirect: 'follow' | 'error';\n private readonly fetchImpl: typeof globalThis.fetch;\n private readonly brandHierarchyCache = new Map<\n string,\n { expiresAt: number; value: BrandHierarchyResolution | null }\n >();\n\n constructor(config?: RegistryClientConfig) {\n this.baseUrl = (config?.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, '');\n this.apiKey = config?.apiKey ?? process.env.ADCP_REGISTRY_API_KEY;\n this.timeoutMs = config?.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n this.maxBodyBytes = config?.maxBodyBytes ?? DEFAULT_MAX_BODY_BYTES;\n this.hasCustomMaxBodyBytes = config?.maxBodyBytes != null;\n this.redirect = config?.redirect ?? 'error';\n this.fetchImpl = config?.fetch ?? globalThis.fetch;\n }\n\n // ====== Brand Resolution ======\n\n /**\n * Resolve a single domain to its canonical brand identity.\n *\n * @remarks\n * Resolved registry data may include `brand_manifest` and `source` fields\n * suitable for downstream request construction. Treat all registry-supplied\n * strings as untrusted input and sanitize before injecting them into LLM\n * prompts, instructions, or tool-planning context.\n */\n async lookupBrand(domain: string): Promise<ResolvedBrand | null> {\n if (!domain?.trim()) throw new Error('domain is required');\n const url = `${this.baseUrl}/api/brands/resolve?domain=${encodeURIComponent(domain)}`;\n return this.get(url, { nullOn404: true });\n }\n\n /** Search for companies by name or keyword, resolving colloquial names to canonical brand forms. */\n async findCompany(query: string, options?: { limit?: number }): Promise<FindCompanyResult> {\n if (!query?.trim()) throw new Error('query is required');\n let url = `${this.baseUrl}/api/brands/find?q=${encodeURIComponent(query)}`;\n if (options?.limit != null) url += `&limit=${options.limit}`;\n return this.get(url);\n }\n\n /** Bulk resolve domains to their canonical brand identities (max 100). */\n async lookupBrands(domains: string[]): Promise<Record<string, ResolvedBrand | null>> {\n if (domains.length === 0) return {};\n if (domains.length > MAX_BULK_DOMAINS) {\n throw new Error(`Cannot resolve more than ${MAX_BULK_DOMAINS} domains at once (got ${domains.length})`);\n }\n const data = await this.post(`${this.baseUrl}/api/brands/resolve/bulk`, { domains });\n return data.results;\n }\n\n /**\n * Resolve a domain to its ordered corporate brand hierarchy.\n *\n * The returned `chain` is ordered from the resolved brand itself through each\n * parent to the house brand. A 404 from the registry returns `null`.\n */\n async resolveBrandHierarchy(\n domain: string,\n options?: ResolveBrandHierarchyOptions\n ): Promise<BrandHierarchyResolution | null> {\n const normalizedDomain = this.normalizeBrandHierarchyDomain(domain);\n const ttlMs = this.resolveBrandHierarchyCacheTtlMs(options);\n const cacheKey = this.brandHierarchyCacheKey(normalizedDomain);\n const cached = this.getCachedBrandHierarchy(cacheKey, options, ttlMs);\n if (cached !== undefined) return cached;\n\n const params = new URLSearchParams({ domain: normalizedDomain });\n if (options?.fresh) params.set('fresh', 'true');\n const value = await this.get<BrandHierarchyResolution | null>(`${this.baseUrl}/api/brands/hierarchy?${params}`, {\n nullOn404: true,\n });\n this.setCachedBrandHierarchy(cacheKey, value, options, ttlMs);\n return this.cloneBrandHierarchy(value);\n }\n\n /**\n * Resolve up to 100 domains to ordered corporate brand hierarchies.\n *\n * Results are keyed by the caller-supplied domain. Unknown domains map to\n * `null`, matching `lookupBrands()`.\n */\n async resolveBrandHierarchies(\n domains: string[],\n options?: ResolveBrandHierarchyOptions\n ): Promise<Record<string, BrandHierarchyResolution | null>> {\n if (domains.length === 0) return {};\n if (domains.length > MAX_BULK_DOMAINS) {\n throw new Error(`Cannot resolve more than ${MAX_BULK_DOMAINS} domains at once (got ${domains.length})`);\n }\n const normalizedDomains = domains.map(domain => this.normalizeBrandHierarchyDomain(domain));\n const ttlMs = this.resolveBrandHierarchyCacheTtlMs(options);\n\n const results: Record<string, BrandHierarchyResolution | null> = Object.create(null);\n const unresolved: string[] = [];\n const unresolvedInputsByKey = new Map<string, string[]>();\n\n for (let i = 0; i < domains.length; i++) {\n const domain = domains[i]!;\n const normalizedDomain = normalizedDomains[i]!;\n const cacheKey = this.brandHierarchyCacheKey(normalizedDomain);\n const cached = this.getCachedBrandHierarchy(cacheKey, options, ttlMs);\n if (cached !== undefined) {\n results[domain] = cached;\n continue;\n }\n const inputs = unresolvedInputsByKey.get(cacheKey);\n if (inputs) {\n inputs.push(domain);\n } else {\n unresolved.push(normalizedDomain);\n unresolvedInputsByKey.set(cacheKey, [domain]);\n }\n }\n\n if (unresolved.length > 0) {\n const body: { domains: string[]; fresh?: boolean } = { domains: unresolved };\n if (options?.fresh) body.fresh = true;\n const data = await this.post<BrandHierarchyBulkResolution>(`${this.baseUrl}/api/brands/hierarchy/bulk`, body);\n if (!data || typeof data !== 'object' || !data.results || typeof data.results !== 'object') {\n throw new Error('Registry hierarchy bulk response missing results');\n }\n const matchedKeys = new Set<string>();\n for (const [domain, value] of Object.entries(data.results)) {\n const cacheKey = this.brandHierarchyCacheKey(domain);\n const inputs = unresolvedInputsByKey.get(cacheKey);\n if (!inputs) continue;\n matchedKeys.add(cacheKey);\n for (const input of inputs) {\n results[input] = this.cloneBrandHierarchy(value);\n }\n this.setCachedBrandHierarchy(cacheKey, value, options, ttlMs);\n }\n for (const [cacheKey, inputs] of unresolvedInputsByKey.entries()) {\n if (matchedKeys.has(cacheKey)) continue;\n throw new Error(`Registry hierarchy bulk response missing result for ${inputs[0]}`);\n }\n }\n\n return results;\n }\n\n /** List brands in the registry with optional search and pagination. */\n async listBrands(options?: ListBrandsOptions): Promise<ListBrandsResponse> {\n const params = this.buildParams(options);\n return this.get(`${this.baseUrl}/api/brands/registry${params}`);\n }\n\n /**\n * Fetch raw brand.json data for a domain.\n *\n * @remarks\n * This returns registry-supplied manifest content. Sanitize strings before\n * using them in LLM prompts, instructions, or other executable context.\n */\n async getBrandJson(domain: string): Promise<GetBrandJsonResponse | null> {\n if (!domain?.trim()) throw new Error('domain is required');\n const url = `${this.baseUrl}/api/brands/brand-json?domain=${encodeURIComponent(domain)}`;\n return this.get(url, { nullOn404: true });\n }\n\n /** Enrich a brand with Brandfetch data. */\n async enrichBrand(domain: string): Promise<Record<string, unknown>> {\n if (!domain?.trim()) throw new Error('domain is required');\n return this.get(`${this.baseUrl}/api/brands/enrich?domain=${encodeURIComponent(domain)}`);\n }\n\n /**\n * List AAO brand logo assets for a domain, optionally filtered by tags.\n *\n * @remarks\n * Passing a raw `string[]` as the second argument is deprecated; pass\n * `{ tags }` instead.\n */\n async listBrandLogos(domain: string, options?: ListBrandLogosOptions | string[]): Promise<ListBrandLogosResponse> {\n if (!domain?.trim()) throw new Error('domain is required');\n const params = new URLSearchParams();\n const tags = Array.isArray(options) ? options : options?.tags;\n if (tags?.length) params.set('tags', tags.join(','));\n const qs = params.toString();\n const response = await this.get<Record<string, unknown>>(\n `${this.baseUrl}/api/brands/${encodeURIComponent(domain)}/logos${qs ? `?${qs}` : ''}`\n );\n return this.normalizeBrandLogoList(response);\n }\n\n /** Save an AAO brand logo asset for review. Requires authentication. */\n async saveBrandLogo(input: SaveBrandLogoInput): Promise<SaveBrandLogoResponse> {\n if (!input?.domain?.trim()) throw new Error('domain is required');\n if (!input?.filename?.trim()) throw new Error('filename is required');\n if (!input?.mimeType?.trim()) throw new Error('mimeType is required');\n if (input.data == null) throw new Error('data is required');\n if (!input.tags?.length) throw new Error('tags are required');\n if (!this.apiKey) throw new Error('apiKey is required for save operations');\n\n const form = new FormData();\n form.append('file', this.toBrandLogoBlob(input.data, input.mimeType), input.filename);\n if (input.note) form.append('note', input.note);\n form.append('tags', input.tags.join(','));\n\n return this.postFormData(`${this.baseUrl}/api/brands/${encodeURIComponent(input.domain)}/logos`, form);\n }\n\n /** @deprecated Use `saveBrandLogo()`. */\n async uploadBrandLogo(input: UploadBrandLogoInput): Promise<UploadBrandLogoResponse> {\n return this.saveBrandLogo(input);\n }\n\n /** Save or update a community brand. Requires authentication. */\n async saveBrand(brand: SaveBrandRequest): Promise<SaveBrandResponse> {\n if (!brand?.domain?.trim()) throw new Error('domain is required');\n if (!brand?.brand_name?.trim()) throw new Error('brand_name is required');\n if (!this.apiKey) throw new Error('apiKey is required for save operations');\n return this.post(`${this.baseUrl}/api/brands/save`, brand);\n }\n\n // ====== Property Resolution ======\n\n /** Resolve a single domain to its property information. */\n async lookupProperty(domain: string): Promise<ResolvedProperty | null> {\n if (!domain?.trim()) throw new Error('domain is required');\n const url = `${this.baseUrl}/api/properties/resolve?domain=${encodeURIComponent(domain)}`;\n return this.get(url, { nullOn404: true });\n }\n\n /** Bulk resolve domains to their property information (max 100). */\n async lookupProperties(domains: string[]): Promise<Record<string, ResolvedProperty | null>> {\n if (domains.length === 0) return {};\n if (domains.length > MAX_BULK_DOMAINS) {\n throw new Error(`Cannot resolve more than ${MAX_BULK_DOMAINS} domains at once (got ${domains.length})`);\n }\n const data = await this.post(`${this.baseUrl}/api/properties/resolve/bulk`, { domains });\n return data.results;\n }\n\n /**\n * Bulk resolve any number of domains to property information.\n * Automatically paginates in batches of 100, running up to `concurrency`\n * batches in parallel (default 5).\n */\n async lookupPropertiesAll(\n domains: string[],\n options?: { concurrency?: number }\n ): Promise<Record<string, ResolvedProperty | null>> {\n const unique = [...new Set(domains)];\n const concurrency = options?.concurrency ?? 5;\n const batches: string[][] = [];\n for (let i = 0; i < unique.length; i += MAX_BULK_DOMAINS) {\n batches.push(unique.slice(i, i + MAX_BULK_DOMAINS));\n }\n const results: Record<string, ResolvedProperty | null> = {};\n for (let i = 0; i < batches.length; i += concurrency) {\n const chunk = batches.slice(i, i + concurrency);\n const settled = await Promise.all(chunk.map(b => this.lookupProperties(b)));\n for (const r of settled) Object.assign(results, r);\n }\n return results;\n }\n\n /**\n * Check which domains exist in the registry.\n * Convenience wrapper over lookupPropertiesAll that returns a simple boolean map.\n * Use this for existence checks; use lookupPropertiesAll when you need the full property data.\n */\n async domainsExist(domains: string[], options?: { concurrency?: number }): Promise<Record<string, boolean>> {\n const results = await this.lookupPropertiesAll(domains, options);\n const exists: Record<string, boolean> = {};\n for (const [domain, resolved] of Object.entries(results)) {\n exists[domain] = resolved != null;\n }\n return exists;\n }\n\n /** List properties in the registry with optional search and pagination. */\n async listProperties(\n options?: ListOptions\n ): Promise<{ properties: PropertyRegistryItem[]; stats: Record<string, unknown> }> {\n const params = this.buildParams(options);\n return this.get(`${this.baseUrl}/api/properties/registry${params}`);\n }\n\n /** Validate a domain's adagents.json file. */\n async validateProperty(domain: string): Promise<ValidationResult> {\n if (!domain?.trim()) throw new Error('domain is required');\n return this.get(`${this.baseUrl}/api/properties/validate?domain=${encodeURIComponent(domain)}`);\n }\n\n /** Save or update a hosted property. Requires authentication. */\n async saveProperty(property: SavePropertyRequest): Promise<SavePropertyResponse> {\n if (!property?.publisher_domain?.trim()) throw new Error('publisher_domain is required');\n if (!this.apiKey) throw new Error('apiKey is required for save operations');\n const payload = this.normalizeSavePropertyRequest(property);\n return this.post(`${this.baseUrl}/api/properties/save`, payload);\n }\n\n /**\n * Issue a hosted-property domain claim for bind-on-verify.\n *\n * The registry returns a claim-specific `authoritative_location` URL for the\n * publisher to place at its origin `/.well-known/adagents.json`.\n */\n async claimHostedPropertyDomain(domain: string): Promise<ClaimHostedPropertyDomainResponse> {\n if (!domain?.trim()) throw new Error('domain is required');\n if (!this.apiKey) throw new Error('apiKey is required for hosted property claims');\n return this.post(`${this.baseUrl}/api/properties/hosted/${encodeURIComponent(domain.trim())}/claim`, undefined);\n }\n\n /** Trigger origin verification for an AAO-hosted publisher domain. */\n async verifyHostedPropertyOrigin(domain: string): Promise<VerifyHostedPropertyOriginResponse> {\n if (!domain?.trim()) throw new Error('domain is required');\n if (!this.apiKey) throw new Error('apiKey is required for hosted property verification');\n return this.post(\n `${this.baseUrl}/api/properties/hosted/${encodeURIComponent(domain.trim())}/verify-origin`,\n undefined\n );\n }\n\n /**\n * Save or update multiple hosted properties.\n * Client-side fan-out over saveProperty with configurable concurrency.\n * Returns results keyed by publisher_domain; failed saves include an error message.\n */\n async saveProperties(\n properties: SavePropertyRequest[],\n options?: { concurrency?: number }\n ): Promise<Record<string, SavePropertyResponse | { error: string }>> {\n const concurrency = options?.concurrency ?? 5;\n const results: Record<string, SavePropertyResponse | { error: string }> = {};\n for (let i = 0; i < properties.length; i += concurrency) {\n const batch = properties.slice(i, i + concurrency);\n const settled = await Promise.allSettled(batch.map(p => this.saveProperty(p)));\n for (let j = 0; j < batch.length; j++) {\n const domain = batch[j]!.publisher_domain;\n const s = settled[j]!;\n results[domain] = s.status === 'fulfilled' ? s.value : { error: String(s.reason) };\n }\n }\n return results;\n }\n\n /**\n * Resolve catalog identifiers to stable property_rids.\n * In default `resolve` mode the registry also records a provenance-backed\n * contribution; `lookup` mode is read-only.\n */\n async resolveIdentifiers(request: ResolveIdentifiersRequest): Promise<ResolveIdentifiersResponse> {\n if (!request?.identifiers?.length) throw new Error('identifiers are required');\n if ((request.mode ?? 'resolve') !== 'lookup' && !this.apiKey) {\n throw new Error('apiKey is required for resolveIdentifiers in resolve mode');\n }\n return this.post(`${this.baseUrl}/api/registry/resolve`, request);\n }\n\n /** File a catalog fact dispute. Requires authentication. */\n async fileCatalogDispute(request: FileCatalogDisputeRequest): Promise<FileCatalogDisputeResponse> {\n if (!request?.subject_type?.trim()) throw new Error('subject_type is required');\n if (!request?.subject_value?.trim()) throw new Error('subject_value is required');\n if (!request?.claim?.trim()) throw new Error('claim is required');\n if (!this.apiKey) throw new Error('apiKey is required for catalog disputes');\n return this.post(`${this.baseUrl}/api/registry/catalog/disputes`, request);\n }\n\n /** Fetch a catalog dispute by id. */\n async getCatalogDispute(id: string): Promise<GetCatalogDisputeResponse | null> {\n if (!id?.trim()) throw new Error('id is required');\n return this.get(`${this.baseUrl}/api/registry/catalog/disputes/${encodeURIComponent(id.trim())}`, {\n nullOn404: true,\n });\n }\n\n // ====== Agent Discovery ======\n\n /** List registered agents with optional filtering. */\n async listAgents(options?: ListAgentsOptions): Promise<ListAgentsResponse> {\n const params = new URLSearchParams();\n if (options?.type) params.set('type', options.type);\n this.setTrueParam(params, 'health', options?.health);\n this.setTrueParam(params, 'capabilities', options?.capabilities);\n this.setTrueParam(params, 'properties', options?.properties);\n this.setTrueParam(params, 'compliance', options?.compliance);\n this.appendParamValues(params, 'metric_id', options?.metric_id);\n this.appendParamValues(params, 'accreditation', options?.accreditation);\n if (options?.q) params.set('q', options.q);\n this.appendParamValues(params, 'verification_mode', options?.verification_mode);\n this.setTrueParam(params, 'verified', options?.verified);\n const qs = params.toString();\n return this.withSources(await this.get(`${this.baseUrl}/api/registry/agents${qs ? '?' + qs : ''}`));\n }\n\n /** List publishers in the registry. */\n async listPublishers(): Promise<ListPublishersResponse> {\n return this.withSources(await this.get(`${this.baseUrl}/api/registry/publishers`));\n }\n\n /** Get aggregate registry statistics. */\n async getRegistryStats(): Promise<Record<string, unknown>> {\n return this.get(`${this.baseUrl}/api/registry/stats`);\n }\n\n // ====== Compliance ======\n\n /** Get compliance status for an agent, including storyboard pass/fail counts. Returns null if agent not found. */\n async getAgentCompliance(agentUrl: string): Promise<AgentComplianceDetail | null> {\n if (!agentUrl?.trim()) throw new Error('agentUrl is required');\n return this.get(`${this.baseUrl}/api/registry/agents/${encodeURIComponent(agentUrl)}/compliance`, {\n nullOn404: true,\n });\n }\n\n /** Get per-storyboard compliance detail for an agent. Requires authentication. */\n async getAgentStoryboardStatus(agentUrl: string): Promise<GetAgentStoryboardStatusResponse> {\n if (!agentUrl?.trim()) throw new Error('agentUrl is required');\n if (!this.apiKey) throw new Error('apiKey is required for storyboard status');\n return this.get(`${this.baseUrl}/api/registry/agents/${encodeURIComponent(agentUrl)}/storyboard-status`);\n }\n\n /** Bulk query storyboard status for up to 100 agents. Requires authentication. */\n async getAgentStoryboardStatusBulk(agentUrls: string[]): Promise<GetAgentStoryboardStatusBulkResponse> {\n if (!agentUrls?.length) throw new Error('agentUrls is required');\n const unique = [...new Set(agentUrls.map(u => u?.trim()).filter(Boolean))];\n if (unique.length === 0) throw new Error('agentUrls contains no valid entries');\n if (unique.length > MAX_BULK_DOMAINS) {\n throw new Error(`Cannot query more than ${MAX_BULK_DOMAINS} agents at once (got ${unique.length})`);\n }\n if (!this.apiKey) throw new Error('apiKey is required for storyboard status');\n return this.post(`${this.baseUrl}/api/registry/agents/storyboard-status`, { agent_urls: unique });\n }\n\n // ====== Operator & Publisher Lookups ======\n\n /**\n * Look up which agents a domain operates and which publishers trust them.\n * Returns null if not found.\n *\n * The optional `scope` argument names a single agent-visibility bucket and\n * acts as a narrowing filter over the caller's auth — it can never widen\n * the view beyond what the caller's tier would otherwise return.\n *\n * - `'public'` — only `visibility=public`. Anonymous-equivalent view; useful\n * for pre-sign-in pickers driven by an admin-tier API key whose only\n * purpose is rate-limit + audit attribution.\n * - `'member'` — public + `members_only`. `members_only` requires API tier;\n * anonymous / explorer-tier callers silently fall through to public-only\n * (no 403).\n * - `'private'` — only `visibility=private`. Profile-owner only; non-owners\n * get an empty agents array rather than 403. An empty result with this\n * scope means *either* \"you are the owner and have no drafts\" *or* \"you\n * are not the owner\" — the SDK can't tell them apart, only the caller can.\n * - omitted / `'all'` — tier-aware union (public + members_only when\n * authorized + owner's private). Preserves historical behavior.\n *\n * Older AAO servers that predate this enum silently ignore unknown `?scope=`\n * values and return the tier-aware union; the filter is server-enforced.\n *\n * @see https://github.com/adcontextprotocol/adcp/pull/4581\n */\n async lookupOperator(\n domain: string,\n opts?: { scope?: 'public' | 'member' | 'private' | 'all' }\n ): Promise<OperatorLookupResult | null> {\n if (!domain?.trim()) throw new Error('domain is required');\n const params = new URLSearchParams({ domain });\n if (opts?.scope && opts.scope !== 'all') params.set('scope', opts.scope);\n return this.get(`${this.baseUrl}/api/registry/operator?${params.toString()}`, { nullOn404: true });\n }\n\n /**\n * Look up the inventory a domain publishes and which agents it authorizes.\n * Returns null if not found.\n *\n * Unlike `lookupOperator`, this endpoint has no visibility-tier semantics;\n * there is no `scope` filter.\n */\n async lookupPublisher(domain: string): Promise<PublisherLookupResult | null> {\n if (!domain?.trim()) throw new Error('domain is required');\n return this.get(`${this.baseUrl}/api/registry/publisher?domain=${encodeURIComponent(domain)}`, {\n nullOn404: true,\n });\n }\n\n // ====== Authorization Lookups ======\n\n /**\n * Look up which agents are authorized for a domain.\n * Returns agent authorization data (authorized_agents, sales_agents_claiming).\n * To check if a domain exists in the registry, use lookupProperty() or domainsExist() instead.\n */\n async lookupDomain(domain: string): Promise<DomainLookupResult> {\n if (!domain?.trim()) throw new Error('domain is required');\n return this.get(`${this.baseUrl}/api/registry/lookup/domain/${encodeURIComponent(domain)}`);\n }\n\n /**\n * Look up agents authorized for multiple domains.\n * Client-side fan-out over lookupDomain (no server bulk endpoint yet).\n * Domains that fail individually are omitted from the result.\n */\n async lookupDomains(\n domains: string[],\n options?: { concurrency?: number }\n ): Promise<Record<string, DomainLookupResult>> {\n const unique = [...new Set(domains)];\n const concurrency = options?.concurrency ?? 10;\n const results: Record<string, DomainLookupResult> = {};\n for (let i = 0; i < unique.length; i += concurrency) {\n const batch = unique.slice(i, i + concurrency);\n const settled = await Promise.allSettled(batch.map(d => this.lookupDomain(d)));\n for (let j = 0; j < batch.length; j++) {\n const s = settled[j]!;\n if (s.status === 'fulfilled') results[batch[j]!] = s.value;\n }\n }\n return results;\n }\n\n /**\n * Look up agents authorized for multiple property identifiers.\n * Client-side fan-out over lookupPropertyByIdentifier.\n * Identifiers that fail individually are omitted from the result.\n */\n async lookupPropertyIdentifiers(\n identifiers: { type: string; value: string }[],\n options?: { concurrency?: number }\n ): Promise<Record<string, Record<string, unknown>>> {\n const concurrency = options?.concurrency ?? 10;\n // Deduplicate by \"type:value\" key\n const seen = new Set<string>();\n const unique: { type: string; value: string }[] = [];\n for (const id of identifiers) {\n const key = `${id.type}:${id.value}`;\n if (!seen.has(key)) {\n seen.add(key);\n unique.push(id);\n }\n }\n const results: Record<string, Record<string, unknown>> = {};\n for (let i = 0; i < unique.length; i += concurrency) {\n const batch = unique.slice(i, i + concurrency);\n const settled = await Promise.allSettled(batch.map(id => this.lookupPropertyByIdentifier(id.type, id.value)));\n for (let j = 0; j < batch.length; j++) {\n const s = settled[j]!;\n const key = `${batch[j]!.type}:${batch[j]!.value}`;\n if (s.status === 'fulfilled') results[key] = s.value;\n }\n }\n return results;\n }\n\n /** Look up agents by property identifier (type + value). */\n async lookupPropertyByIdentifier(type: string, value: string): Promise<Record<string, unknown>> {\n if (!type?.trim()) throw new Error('type is required');\n if (!value?.trim()) throw new Error('value is required');\n const params = `?type=${encodeURIComponent(type)}&value=${encodeURIComponent(value)}`;\n return this.get(`${this.baseUrl}/api/registry/lookup/property${params}`);\n }\n\n /** Get domains associated with an agent. */\n async getAgentDomains(agentUrl: string): Promise<{ agent_url: string; domains: string[]; count: number }> {\n if (!agentUrl?.trim()) throw new Error('agentUrl is required');\n return this.get(`${this.baseUrl}/api/registry/lookup/agent/${encodeURIComponent(agentUrl)}/domains`);\n }\n\n /** Check if an agent is authorized for a specific property identifier. */\n async validatePropertyAuthorization(\n agentUrl: string,\n identifierType: string,\n identifierValue: string\n ): Promise<{\n agent_url: string;\n identifier_type: string;\n identifier_value: string;\n authorized: boolean;\n checked_at: string;\n }> {\n if (!agentUrl?.trim()) throw new Error('agentUrl is required');\n const params = new URLSearchParams({\n agent_url: agentUrl,\n identifier_type: identifierType,\n identifier_value: identifierValue,\n });\n return this.get(`${this.baseUrl}/api/registry/validate/property-authorization?${params}`);\n }\n\n /** Validate product authorization for an agent across publisher properties. */\n async validateProductAuthorization(\n agentUrl: string,\n publisherProperties: PublisherPropertySelector[]\n ): Promise<Record<string, unknown>> {\n return this.post(`${this.baseUrl}/api/registry/validate/product-authorization`, {\n agent_url: agentUrl,\n publisher_properties: publisherProperties,\n });\n }\n\n /** Expand product identifiers for an agent across publisher properties. */\n async expandProductIdentifiers(\n agentUrl: string,\n publisherProperties: PublisherPropertySelector[]\n ): Promise<Record<string, unknown>> {\n return this.post(`${this.baseUrl}/api/registry/expand/product-identifiers`, {\n agent_url: agentUrl,\n publisher_properties: publisherProperties,\n });\n }\n\n // ====== Property List Checking ======\n\n /**\n * Check a list of publisher domains against the AAO registry.\n *\n * Normalizes domains (strips www/m prefixes), removes duplicates, flags known ad tech\n * infrastructure, and identifies domains not yet in the registry. Returns four buckets:\n * - `remove`: duplicates or known blocked domains (ad servers, CDNs, trackers)\n * - `modify`: domains that were normalized (e.g. www.example.com → example.com)\n * - `assess`: unknown domains not in registry, not blocked\n * - `ok`: domains found in registry with no changes needed\n *\n * Results are stored for 7 days and retrievable via the `report_id`.\n *\n * For domains in the `modify` bucket, use the `canonical` value (not the original `input`)\n * for subsequent lookupProperties/lookupDomain calls.\n */\n async checkPropertyList(domains: string[]): Promise<{\n summary: { total: number; remove: number; modify: number; assess: number; ok: number };\n remove: Array<{\n input: string;\n canonical: string;\n reason: 'duplicate' | 'blocked';\n domain_type?: string;\n blocked_reason?: string;\n }>;\n modify: Array<{ input: string; canonical: string; reason: string }>;\n assess: Array<{ domain: string }>;\n ok: Array<{ domain: string; source: string }>;\n report_id: string;\n }> {\n if (!domains?.length) throw new Error('domains is required');\n if (domains.length > MAX_CHECK_DOMAINS) {\n throw new Error(`Cannot check more than ${MAX_CHECK_DOMAINS} domains at once (got ${domains.length})`);\n }\n return this.post(`${this.baseUrl}/api/properties/check`, { domains });\n }\n\n /**\n * Retrieve a previously stored property check report by ID.\n * Reports expire after 7 days.\n *\n * Note: the report endpoint only returns the summary counts, not the full per-domain\n * buckets. Use checkPropertyList to get the full detail (stored for 7 days via report_id).\n */\n async getPropertyCheckReport(reportId: string): Promise<{\n summary: { total: number; remove: number; modify: number; assess: number; ok: number };\n }> {\n if (!reportId?.trim()) throw new Error('reportId is required');\n return this.get(`${this.baseUrl}/api/properties/check/${encodeURIComponent(reportId)}`);\n }\n\n // ====== Adagents Tooling ======\n\n /** Validate a domain's adagents.json compliance. */\n async validateAdagents(domain: string): Promise<ValidateAdagentsResponse> {\n if (!domain?.trim()) throw new Error('domain is required');\n return this.post(`${this.baseUrl}/api/adagents/validate`, { domain });\n }\n\n /**\n * Generate a valid adagents.json from an agent or catalog configuration.\n *\n * @remarks\n * Treat this as a build-time, cache-fill, or write-through operation for\n * public `.well-known/adagents.json` routes. Public routes should serve the\n * generated JSON from static storage or an application cache instead of\n * making a live registry dependency part of every request.\n *\n * In community mirror catalog files, `v1_format_ref[].agent_url` is a\n * format-shape namespace. It is not a seller authorization claim and does\n * not imply platform adoption. Seller authorization is expressed only by\n * `authorized_agents`.\n */\n async createAdagents(config: CreateAdagentsRequest): Promise<CreateAdagentsResponse> {\n return this.post(`${this.baseUrl}/api/adagents/create`, config);\n }\n\n /**\n * Build and submit a catalog-only community mirror adagents.json descriptor.\n *\n * This uses the registry generator endpoint and does not persist a mirror.\n * It emits `authorized_agents: []` and refuses caller-supplied authorization\n * entries; use `publishCommunityMirrorAdagents(platform, config)` or\n * `upsertCommunityMirrorAdagents(...)` to publish or update a hosted\n * community mirror catalog.\n */\n async createCommunityMirrorAdagents(config: CommunityMirrorAdagentsConfig): Promise<CreateAdagentsResponse> {\n return this.createAdagents(buildCommunityMirrorAdagents(config));\n }\n\n /**\n * Alias for `createCommunityMirrorAdagents()` that makes the generator-only\n * behavior explicit at call sites.\n */\n async previewCommunityMirrorAdagents(config: CommunityMirrorAdagentsConfig): Promise<CreateAdagentsResponse> {\n return this.createCommunityMirrorAdagents(config);\n }\n\n /**\n * Publish or update a catalog-only community mirror adagents.json descriptor\n * using a stable platform key from the first argument, `config.platform`, or a\n * single consistent `properties[].platform` value.\n */\n async upsertCommunityMirrorAdagents(\n config: CreateCommunityMirrorAdagentsConfig\n ): Promise<PublishCommunityMirrorAdagentsResponse>;\n async upsertCommunityMirrorAdagents(\n platform: string,\n config: CommunityMirrorAdagentsConfig\n ): Promise<PublishCommunityMirrorAdagentsResponse>;\n async upsertCommunityMirrorAdagents(\n platformOrConfig: string | CreateCommunityMirrorAdagentsConfig,\n maybeConfig?: CommunityMirrorAdagentsConfig\n ): Promise<PublishCommunityMirrorAdagentsResponse> {\n const { platform, config } = this.resolveCommunityMirrorPublishArgs(platformOrConfig, maybeConfig);\n return this.publishCommunityMirrorAdagents(platform, config);\n }\n\n /**\n * Publish or update a catalog-only community mirror adagents.json descriptor.\n *\n * This persists the mirror under `/api/registry/mirrors/:platform`. Use\n * `previewCommunityMirrorAdagents()` when you only need to validate or\n * preview the generated document without saving it. Use\n * `upsertCommunityMirrorAdagents(...)` when you want the client to infer the\n * platform key from config.\n *\n * @remarks\n * Catalog content may include registry-supplied strings. Treat them as\n * untrusted before injecting them into LLM prompts or executable context.\n */\n async publishCommunityMirrorAdagents(\n platform: string,\n config: CommunityMirrorAdagentsConfig\n ): Promise<PublishCommunityMirrorAdagentsResponse> {\n const normalizedPlatform = this.normalizeCommunityMirrorPlatform(platform);\n if (!this.apiKey) throw new Error('apiKey is required for save operations');\n const catalog = buildCommunityMirrorAdagents(config);\n this.assertCommunityMirrorPropertiesMatchPlatform(normalizedPlatform, catalog);\n return this.put(`${this.baseUrl}/api/registry/mirrors/${encodeURIComponent(normalizedPlatform)}`, catalog);\n }\n\n /**\n * Retrieve a published catalog-only community mirror adagents.json descriptor.\n *\n * @remarks\n * Registry responses may include arbitrary catalog strings. Treat them as\n * untrusted before injecting them into LLM prompts or executable context.\n * When the registry wrapper carries `superseded_by` and the inner catalog\n * omits it, this method hydrates `catalog.superseded_by` from the wrapper.\n */\n async getCommunityMirrorAdagents(platform: string): Promise<CommunityMirrorAdagentsCatalog | null> {\n const normalizedPlatform = this.normalizeCommunityMirrorPlatform(platform);\n const response = await this.get<{\n platform?: unknown;\n superseded_by?: unknown;\n adagents_json?: unknown;\n }>(`${this.baseUrl}/api/registry/mirrors/${encodeURIComponent(normalizedPlatform)}`, { nullOn404: true });\n if (!response) return null;\n if (response.platform !== undefined && response.platform !== normalizedPlatform) {\n throw new Error('Registry returned mismatched community mirror platform');\n }\n const catalog = response.adagents_json;\n if (!catalog || typeof catalog !== 'object' || Array.isArray(catalog)) {\n throw new Error('Registry returned invalid community mirror catalog');\n }\n const typedCatalog = catalog as CommunityMirrorAdagentsCatalog & { authorized_agents?: unknown };\n if (!Array.isArray(typedCatalog.authorized_agents) || typedCatalog.authorized_agents.length !== 0) {\n throw new Error('Registry returned invalid community mirror catalog');\n }\n if (response.superseded_by != null && typeof response.superseded_by !== 'string') {\n throw new Error('Registry returned invalid community mirror catalog');\n }\n return response.superseded_by && !typedCatalog.superseded_by\n ? { ...typedCatalog, superseded_by: response.superseded_by }\n : typedCatalog;\n }\n\n /**\n * List published community mirror catalogs with their current etags.\n *\n * @remarks\n * Registry responses may include arbitrary catalog strings. Treat them as\n * untrusted before injecting them into LLM prompts or executable context.\n */\n async listCommunityMirrorAdagents(options?: {\n limit?: number;\n offset?: number;\n }): Promise<ListCommunityMirrorAdagentsResponse> {\n const params = new URLSearchParams();\n if (options?.limit != null) params.set('limit', String(options.limit));\n if (options?.offset != null) params.set('offset', String(options.offset));\n const qs = params.toString();\n return this.get(`${this.baseUrl}/api/registry/mirrors${qs ? `?${qs}` : ''}`);\n }\n\n /**\n * Delete a published community mirror and retire its derived catalog rows.\n *\n * By default, the registry refuses to delete mirrors without a\n * `superseded_by` successor URL. Pass `force: true` only for moderator\n * cleanup where no migration URL exists.\n */\n async deleteCommunityMirrorAdagents(\n platform: string,\n options?: { force?: boolean }\n ): Promise<DeleteCommunityMirrorAdagentsResponse> {\n const normalizedPlatform = this.normalizeCommunityMirrorPlatform(platform);\n if (!this.apiKey) throw new Error('apiKey is required for save operations');\n const params = new URLSearchParams();\n if (options?.force) params.set('force', 'true');\n const qs = params.toString();\n return this.deleteRequest(\n `${this.baseUrl}/api/registry/mirrors/${encodeURIComponent(normalizedPlatform)}${qs ? `?${qs}` : ''}`\n );\n }\n\n // ====== Search & Discovery ======\n\n /** Search brands, publishers, and properties. */\n async search(query: string): Promise<{ brands: unknown[]; publishers: unknown[]; properties: unknown[] }> {\n if (!query?.trim()) throw new Error('query is required');\n return this.get(`${this.baseUrl}/api/search?q=${encodeURIComponent(query)}`);\n }\n\n /** Look up a manifest reference by domain. */\n async lookupManifestRef(domain: string, type?: string): Promise<Record<string, unknown>> {\n if (!domain?.trim()) throw new Error('domain is required');\n const params = new URLSearchParams({ domain });\n if (type) params.set('type', type);\n return this.get(`${this.baseUrl}/api/manifest-refs/lookup?${params}`);\n }\n\n /** Probe a live agent endpoint to discover its capabilities. */\n async discoverAgent(url: string): Promise<Record<string, unknown>> {\n if (!url?.trim()) throw new Error('url is required');\n return this.get(`${this.baseUrl}/api/public/discover-agent?url=${encodeURIComponent(url)}`);\n }\n\n /** Get creative formats supported by an agent. */\n async getAgentFormats(url: string): Promise<Record<string, unknown>> {\n if (!url?.trim()) throw new Error('url is required');\n return this.get(`${this.baseUrl}/api/public/agent-formats?url=${encodeURIComponent(url)}`);\n }\n\n /** Get products available from an agent. */\n async getAgentProducts(url: string): Promise<Record<string, unknown>> {\n if (!url?.trim()) throw new Error('url is required');\n return this.get(`${this.baseUrl}/api/public/agent-products?url=${encodeURIComponent(url)}`);\n }\n\n /** Validate a publisher domain's configuration. */\n async validatePublisher(domain: string): Promise<Record<string, unknown>> {\n if (!domain?.trim()) throw new Error('domain is required');\n return this.get(`${this.baseUrl}/api/public/validate-publisher?domain=${encodeURIComponent(domain)}`);\n }\n\n // ====== Registry Sync ======\n\n /**\n * Poll the catalog event feed. Returns events since the provided cursor.\n * Consumers save `cursor` from the response and pass it on the next poll.\n * When `has_more` is false, the consumer is caught up.\n *\n * Requires authentication.\n */\n async getFeed(options?: FeedQuery): Promise<FeedResponse> {\n if (!this.apiKey) throw new Error('apiKey is required for feed access');\n const params = new URLSearchParams();\n if (options?.cursor) params.set('cursor', options.cursor);\n if (options?.types) params.set('types', options.types);\n if (options?.limit != null) params.set('limit', String(options.limit));\n const qs = params.toString();\n const url = `${this.baseUrl}/api/registry/feed${qs ? '?' + qs : ''}`;\n const { res, text } = await this.requestText(url, { headers: this.getHeaders() });\n if (res.status === 410) {\n // Cursor aged out of the 90-day retention window. Surface as a recoverable\n // signal so callers re-bootstrap instead of treating it as a hard error.\n return { events: [], cursor: null, has_more: false, cursor_expired: true };\n }\n if (!res.ok) {\n throw new Error(`Registry request failed (${res.status}): ${this.preview(text)}`);\n }\n return this.parseJson(text);\n }\n\n /**\n * Stream the registry change feed over Server-Sent Events\n * (`GET /api/registry/feed/stream`).\n *\n * Yields typed `feed` / `heartbeat` / `error` messages until the stream\n * closes. The connection is long-lived — no body-size cap or request timeout\n * applies; pass an `AbortSignal` to close it. Cursor state lives in the `feed`\n * page payloads: persist `page.cursor` and reconnect with `{ cursor }`.\n *\n * Requires authentication. Most consumers should use `RegistrySync` with\n * `transport: 'auto'`, which layers reconnect, polling fallback, and\n * cursor-expiry recovery on top of this method.\n */\n streamFeed(query?: FeedStreamQuery, init?: { signal?: AbortSignal }): AsyncGenerator<FeedStreamMessage> {\n if (!this.apiKey) throw new Error('apiKey is required for feed stream access');\n return openFeedStream({\n fetchImpl: this.fetchImpl,\n baseUrl: this.baseUrl,\n apiKey: this.apiKey,\n query,\n redirect: this.redirect,\n signal: init?.signal,\n });\n }\n\n /**\n * Search agents by inventory profile. Returns ranked results with match scores.\n * All filters use AND logic across dimensions; multiple CSV values within a\n * filter use OR.\n *\n * Requires authentication.\n */\n async searchAgents(query?: AgentSearchQuery): Promise<AgentSearchResponse> {\n if (!this.apiKey) throw new Error('apiKey is required for agent search');\n const params = new URLSearchParams();\n if (query?.type) params.set('type', query.type);\n if (query?.channels) params.set('channels', query.channels);\n if (query?.markets) params.set('markets', query.markets);\n if (query?.categories) params.set('categories', query.categories);\n if (query?.property_types) params.set('property_types', query.property_types);\n if (query?.tags) params.set('tags', query.tags);\n if (query?.delivery_types) params.set('delivery_types', query.delivery_types);\n if (query?.has_tmp != null) params.set('has_tmp', String(query.has_tmp));\n if (query?.min_properties != null) params.set('min_properties', String(query.min_properties));\n if (query?.sort) params.set('sort', query.sort);\n if (query?.limit != null) params.set('limit', String(query.limit));\n if (query?.cursor) params.set('cursor', query.cursor);\n const qs = params.toString();\n return this.get(`${this.baseUrl}/api/registry/agents/search${qs ? '?' + qs : ''}`);\n }\n\n /**\n * Request immediate re-crawl of a domain's adagents.json.\n * Rate limited to one crawl per domain per 10 minutes.\n *\n * Requires authentication.\n */\n async requestCrawl(domain: string): Promise<CrawlRequestResponse> {\n if (!domain?.trim()) throw new Error('domain is required');\n if (!this.apiKey) throw new Error('apiKey is required for crawl requests');\n return this.post(`${this.baseUrl}/api/registry/crawl-request`, { domain });\n }\n\n /**\n * Request fan-out re-validation for publishers delegating to a manager domain.\n * Use after rotating a manager's adagents.json so MANAGERDOMAIN publishers\n * are queued without waiting for the next routine crawl cycle.\n *\n * Requires authentication.\n */\n async requestManagerRevalidation(managerDomain: string): Promise<ManagerRevalidationResponse> {\n if (!managerDomain?.trim()) throw new Error('managerDomain is required');\n if (!this.apiKey) throw new Error('apiKey is required for manager revalidation requests');\n const body: ManagerRevalidationRequest = { manager_domain: managerDomain };\n return this.post(`${this.baseUrl}/api/registry/manager-revalidation-request`, body);\n }\n\n // ====== Policy Management ======\n\n /** List policies in the governance policy registry with optional filtering. */\n async listPolicies(params?: ListPoliciesQuery): Promise<ListPoliciesResponse> {\n const qs = new URLSearchParams();\n if (params?.search) qs.set('search', params.search);\n if (params?.category) qs.set('category', params.category);\n if (params?.enforcement) qs.set('enforcement', params.enforcement);\n if (params?.jurisdiction) qs.set('jurisdiction', params.jurisdiction);\n if (params?.policy_category) qs.set('policy_category', params.policy_category);\n if (params?.domain) qs.set('domain', params.domain);\n if (params?.limit != null) qs.set('limit', String(params.limit));\n if (params?.offset != null) qs.set('offset', String(params.offset));\n const q = qs.toString();\n return this.get(`${this.baseUrl}/api/policies/registry${q ? '?' + q : ''}`);\n }\n\n /** Resolve a single policy by ID. Optionally pin to a specific version. */\n async resolvePolicy(params: ResolvePolicyQuery): Promise<ResolvePolicyResponse | null> {\n if (!params?.policy_id?.trim()) throw new Error('policy_id is required');\n const qs = new URLSearchParams({ policy_id: params.policy_id });\n if (params.version) qs.set('version', params.version);\n return this.get(`${this.baseUrl}/api/policies/resolve?${qs}`, { nullOn404: true });\n }\n\n /** Bulk resolve up to 100 policies by ID in a single request. */\n async resolvePoliciesBulk(body: ResolvePoliciesBulkRequest): Promise<ResolvePoliciesBulkResponse> {\n if (!body?.policy_ids?.length) throw new Error('policy_ids is required');\n return this.post(`${this.baseUrl}/api/policies/resolve/bulk`, body);\n }\n\n /** Retrieve the edit history for a policy. */\n async getPolicyHistory(params: GetPolicyHistoryQuery): Promise<GetPolicyHistoryResponse | null> {\n if (!params?.policy_id?.trim()) throw new Error('policy_id is required');\n const qs = new URLSearchParams({ policy_id: params.policy_id });\n if (params.limit != null) qs.set('limit', String(params.limit));\n if (params.offset != null) qs.set('offset', String(params.offset));\n return this.get(`${this.baseUrl}/api/policies/history?${qs}`, { nullOn404: true });\n }\n\n /** Create or update a community-contributed policy. Requires authentication. */\n async savePolicy(body: SavePolicyRequest): Promise<SavePolicyResponse> {\n if (!body?.policy_id?.trim()) throw new Error('policy_id is required');\n if (!body?.version?.trim()) throw new Error('version is required');\n if (!body?.name?.trim()) throw new Error('name is required');\n if (!body?.policy?.trim()) throw new Error('policy is required');\n if (!this.apiKey) throw new Error('apiKey is required for save operations');\n return this.post(`${this.baseUrl}/api/policies/save`, body);\n }\n\n // ====== History ======\n\n /** Retrieve brand activity history for a domain. */\n async getBrandHistory(params: GetBrandHistoryQuery): Promise<GetBrandHistoryResponse | null> {\n if (!params?.domain?.trim()) throw new Error('domain is required');\n const qs = new URLSearchParams({ domain: params.domain });\n if (params.limit != null) qs.set('limit', String(params.limit));\n if (params.offset != null) qs.set('offset', String(params.offset));\n return this.get(`${this.baseUrl}/api/brands/history?${qs}`, { nullOn404: true });\n }\n\n /** Retrieve property activity history for a domain. */\n async getPropertyHistory(params: GetPropertyHistoryQuery): Promise<GetPropertyHistoryResponse | null> {\n if (!params?.domain?.trim()) throw new Error('domain is required');\n const qs = new URLSearchParams({ domain: params.domain });\n if (params.limit != null) qs.set('limit', String(params.limit));\n if (params.offset != null) qs.set('offset', String(params.offset));\n return this.get(`${this.baseUrl}/api/properties/history?${qs}`, { nullOn404: true });\n }\n\n // ====== Private helpers ======\n\n private async get<T = any>(url: string, opts?: { nullOn404?: boolean }): Promise<T> {\n const { res, text } = await this.requestText(url, { headers: this.getHeaders() });\n if (opts?.nullOn404 && res.status === 404) return null as T;\n if (!res.ok) {\n throw new Error(`Registry request failed (${res.status}): ${this.preview(text)}`);\n }\n return this.parseJson(text);\n }\n\n private async post<T = any>(url: string, body: unknown): Promise<T> {\n const { res, text } = await this.requestText(url, {\n method: 'POST',\n headers: { ...this.getHeaders(), 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n });\n if (!res.ok) {\n throw new Error(`Registry request failed (${res.status}): ${this.preview(text)}`);\n }\n return this.parseJson(text);\n }\n\n private async postFormData<T = any>(url: string, body: FormData): Promise<T> {\n const { res, text } = await this.requestText(url, {\n method: 'POST',\n headers: this.getHeaders(),\n body,\n });\n if (!res.ok) {\n throw new Error(`Registry request failed (${res.status}): ${this.preview(text)}`);\n }\n return this.parseJson(text);\n }\n\n private async put<T = any>(url: string, body: unknown): Promise<T> {\n const { res, text } = await this.requestText(url, {\n method: 'PUT',\n headers: { ...this.getHeaders(), 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n });\n if (!res.ok) {\n throw new Error(`Registry request failed (${res.status}): ${this.preview(text)}`);\n }\n return this.parseJson(text);\n }\n\n private async deleteRequest<T = any>(url: string): Promise<T> {\n const { res, text } = await this.requestText(url, {\n method: 'DELETE',\n headers: this.getHeaders(),\n });\n if (!res.ok) {\n throw new Error(`Registry request failed (${res.status}): ${this.preview(text)}`);\n }\n return this.parseJson(text);\n }\n\n private normalizeBrandLogoList(response: Record<string, unknown>): ListBrandLogosResponse {\n const assets = Array.isArray(response.assets)\n ? (response.assets as ListBrandLogosResponse['assets'])\n : Array.isArray(response.logos)\n ? (response.logos as ListBrandLogosResponse['assets'])\n : [];\n const logos = Array.isArray(response.logos) ? (response.logos as ListBrandLogosResponse['assets']) : assets;\n\n const normalized: ListBrandLogosResponse = {\n assets,\n logos,\n };\n if (typeof response.domain === 'string') normalized.domain = response.domain;\n if (response.stats != null && typeof response.stats === 'object' && !Array.isArray(response.stats)) {\n normalized.stats = response.stats as Record<string, unknown>;\n }\n return normalized;\n }\n\n private normalizeSavePropertyRequest(property: SavePropertyRequest): SavePropertyRequest {\n const payload: SavePropertyRequest = {\n ...property,\n authorized_agents: [],\n };\n if (Array.isArray(property.properties)) {\n payload.properties = property.properties.map(p => this.normalizeSavePropertyIdentity(p));\n }\n return payload;\n }\n\n private normalizeSavePropertyIdentity(property: SavePropertyIdentity): SavePropertyIdentity {\n const normalized = { ...property } as SavePropertyIdentity & {\n property_type?: PropertyType | string;\n type?: PropertyType | string;\n };\n if (normalized.property_type === undefined && normalized.type !== undefined) {\n normalized.property_type = normalized.type as PropertyType;\n }\n if (normalized.type === undefined && normalized.property_type !== undefined) {\n normalized.type = normalized.property_type;\n }\n return normalized as SavePropertyIdentity;\n }\n\n private toBrandLogoBlob(data: SaveBrandLogoInput['data'], mimeType: string): Blob {\n if (data instanceof Blob) return new Blob([data], { type: mimeType });\n if (data instanceof ArrayBuffer) return new Blob([data], { type: mimeType });\n if (ArrayBuffer.isView(data)) {\n const bytes = new Uint8Array(data.byteLength);\n bytes.set(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));\n return new Blob([bytes], { type: mimeType });\n }\n throw new Error('data must be a Blob, Buffer, ArrayBuffer, or ArrayBufferView');\n }\n\n private normalizeCommunityMirrorPlatform(platform: string): string {\n const normalizedPlatform = platform?.trim().toLowerCase();\n if (!normalizedPlatform) throw new Error('platform is required');\n if (!COMMUNITY_MIRROR_PLATFORM_RE.test(normalizedPlatform)) {\n throw new Error('platform must match ^[a-z0-9_-]{1,64}$');\n }\n return normalizedPlatform;\n }\n\n private brandHierarchyCacheKey(domain: string): string {\n return domain.trim().toLowerCase();\n }\n\n private normalizeBrandHierarchyDomain(domain: string): string {\n const normalized = domain?.trim();\n if (!normalized) throw new Error('domain is required');\n if (normalized.length > 253) throw new Error('domain must be 253 characters or fewer');\n return normalized;\n }\n\n private resolveBrandHierarchyCacheTtlMs(options: ResolveBrandHierarchyOptions | undefined): number | undefined {\n if (options?.ttlMs == null) return undefined;\n if (!Number.isFinite(options.ttlMs) || options.ttlMs < 0) {\n throw new Error('ttlMs must be a finite non-negative number');\n }\n return options.ttlMs;\n }\n\n private getCachedBrandHierarchy(\n cacheKey: string,\n options: ResolveBrandHierarchyOptions | undefined,\n ttlMs: number | undefined\n ): BrandHierarchyResolution | null | undefined {\n if (options?.fresh || ttlMs == null || ttlMs === 0) return undefined;\n const cached = this.brandHierarchyCache.get(cacheKey);\n if (!cached) return undefined;\n if (cached.expiresAt <= Date.now()) {\n this.brandHierarchyCache.delete(cacheKey);\n return undefined;\n }\n this.brandHierarchyCache.delete(cacheKey);\n this.brandHierarchyCache.set(cacheKey, cached);\n return this.cloneBrandHierarchy(cached.value);\n }\n\n private setCachedBrandHierarchy(\n cacheKey: string,\n value: BrandHierarchyResolution | null,\n options: ResolveBrandHierarchyOptions | undefined,\n ttlMs: number | undefined\n ): void {\n if (ttlMs == null || ttlMs === 0) {\n if (options?.fresh) this.brandHierarchyCache.delete(cacheKey);\n return;\n }\n this.brandHierarchyCache.delete(cacheKey);\n this.brandHierarchyCache.set(cacheKey, {\n expiresAt: Date.now() + ttlMs,\n value: this.cloneBrandHierarchy(value),\n });\n while (this.brandHierarchyCache.size > MAX_BRAND_HIERARCHY_CACHE_ENTRIES) {\n const oldest = this.brandHierarchyCache.keys().next().value;\n if (oldest == null) break;\n this.brandHierarchyCache.delete(oldest);\n }\n }\n\n private cloneBrandHierarchy(value: BrandHierarchyResolution | null): BrandHierarchyResolution | null {\n return value == null ? null : { ...value, chain: value.chain.map(brand => ({ ...brand })) };\n }\n\n private resolveCommunityMirrorPublishArgs(\n platformOrConfig: string | CreateCommunityMirrorAdagentsConfig,\n maybeConfig?: CommunityMirrorAdagentsConfig\n ): { platform: string; config: CommunityMirrorAdagentsConfig } {\n if (typeof platformOrConfig === 'string') {\n if (!maybeConfig) throw new Error('config is required');\n return { platform: platformOrConfig, config: maybeConfig };\n }\n\n const config = platformOrConfig;\n const platform = this.communityMirrorPlatformFromConfig(config);\n return { platform, config };\n }\n\n private communityMirrorPlatformFromConfig(config: CreateCommunityMirrorAdagentsConfig): string {\n if (typeof config.platform === 'string') {\n const platform = config.platform.trim();\n if (platform) return platform;\n }\n\n const properties = (config as { properties?: unknown }).properties;\n if (Array.isArray(properties)) {\n const platforms = new Set<string>();\n for (const property of properties) {\n if (!property || typeof property !== 'object' || Array.isArray(property)) continue;\n const propertyPlatform = (property as { platform?: unknown }).platform;\n if (typeof propertyPlatform === 'string' && propertyPlatform.trim()) {\n platforms.add(this.normalizeCommunityMirrorPlatform(propertyPlatform));\n }\n }\n if (platforms.size === 1) return Array.from(platforms)[0]!;\n if (platforms.size > 1) {\n throw new Error('platform is ambiguous; pass upsertCommunityMirrorAdagents(platform, config)');\n }\n }\n\n throw new Error('platform is required for community mirror publish');\n }\n\n private assertCommunityMirrorPropertiesMatchPlatform(\n normalizedPlatform: string,\n catalog: CommunityMirrorAdagentsCatalog\n ): void {\n const properties = (catalog as { properties?: unknown }).properties;\n if (!Array.isArray(properties)) return;\n for (const property of properties) {\n if (!property || typeof property !== 'object' || Array.isArray(property)) continue;\n const propertyPlatform = (property as { platform?: unknown }).platform;\n if (propertyPlatform == null) continue;\n if (\n typeof propertyPlatform !== 'string' ||\n this.normalizeCommunityMirrorPlatform(propertyPlatform) !== normalizedPlatform\n ) {\n throw new Error(`properties[].platform must match ${normalizedPlatform}`);\n }\n }\n }\n\n private async requestText(url: string, init: RequestInit): Promise<{ res: Response; text: string }> {\n const controller = new AbortController();\n let timedOut = false;\n let timeout: ReturnType<typeof setTimeout> | undefined;\n const timeoutPromise = new Promise<never>((_, reject) => {\n timeout = setTimeout(() => {\n timedOut = true;\n controller.abort();\n reject(new Error(`Registry request timed out after ${this.timeoutMs}ms`));\n }, this.timeoutMs);\n });\n const requestPromise = Promise.resolve().then(async () => {\n const res = await this.fetchImpl(url, {\n ...init,\n redirect: this.redirect,\n signal: controller.signal,\n });\n const text = await this.readBody(res, this.bodyLimitForUrl(url));\n return { res, text };\n });\n requestPromise.catch(() => {});\n try {\n return await Promise.race([requestPromise, timeoutPromise]);\n } catch (err) {\n if (timedOut || controller.signal.aborted) {\n throw new Error(`Registry request timed out after ${this.timeoutMs}ms`);\n }\n throw err;\n } finally {\n if (timeout) clearTimeout(timeout);\n }\n }\n\n private getHeaders(): Record<string, string> {\n const headers: Record<string, string> = { Accept: 'application/json' };\n if (this.apiKey) {\n headers['Authorization'] = `Bearer ${this.apiKey}`;\n }\n return headers;\n }\n\n private bodyLimitForUrl(url: string): number {\n if (this.hasCustomMaxBodyBytes) return this.maxBodyBytes;\n\n const path = new URL(url).pathname;\n if (\n path === '/api/brands/registry' ||\n path === '/api/brands/resolve/bulk' ||\n path === '/api/properties/registry' ||\n path === '/api/properties/resolve/bulk' ||\n path === '/api/registry/agents' ||\n path === '/api/registry/publishers' ||\n path === '/api/registry/feed' ||\n path === '/api/registry/mirrors' ||\n path === '/api/registry/agents/search' ||\n path === '/api/registry/authorizations' ||\n path === '/api/registry/authorizations/snapshot' ||\n path === '/api/search' ||\n path === '/api/policies/registry' ||\n path === '/api/policies/resolve/bulk' ||\n path === '/api/public/discover-agent' ||\n path === '/api/public/agent-formats' ||\n path === '/api/public/agent-products' ||\n path === '/api/public/validate-publisher' ||\n path === '/api/registry/agents/storyboard-status' ||\n (path.startsWith('/api/registry/agents/') && path.endsWith('/storyboard-status')) ||\n path.startsWith('/api/registry/mirrors/') ||\n path.startsWith('/api/properties/check')\n ) {\n return DEFAULT_LARGE_RESPONSE_MAX_BODY_BYTES;\n }\n\n return this.maxBodyBytes;\n }\n\n private async readBody(res: Response, maxBodyBytes: number): Promise<string> {\n const contentLength = res.headers.get('content-length');\n if (contentLength) {\n const declaredBytes = Number(contentLength);\n if (Number.isFinite(declaredBytes) && declaredBytes > maxBodyBytes) {\n throw new Error(`Registry response exceeded ${maxBodyBytes} bytes`);\n }\n }\n\n const reader = res.body?.getReader();\n if (!reader) {\n const text = await res.text();\n if (new TextEncoder().encode(text).byteLength > maxBodyBytes) {\n throw new Error(`Registry response exceeded ${maxBodyBytes} bytes`);\n }\n return text;\n }\n\n const chunks: Uint8Array[] = [];\n let bytes = 0;\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n bytes += value.byteLength;\n if (bytes > maxBodyBytes) {\n await reader.cancel();\n throw new Error(`Registry response exceeded ${maxBodyBytes} bytes`);\n }\n chunks.push(value);\n }\n } finally {\n reader.releaseLock();\n }\n\n const buf = new Uint8Array(bytes);\n let offset = 0;\n for (const chunk of chunks) {\n buf.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return new TextDecoder().decode(buf);\n }\n\n private parseJson(text: string): any {\n try {\n return JSON.parse(text);\n } catch {\n throw new Error(`Registry returned invalid JSON: ${this.preview(text)}`);\n }\n }\n\n private withSources<T extends object>(value: T): T & { sources: Record<string, unknown> } {\n if ('sources' in value) return value as T & { sources: Record<string, unknown> };\n return { ...value, sources: {} };\n }\n\n private preview(text: string): string {\n return text\n .slice(0, ERROR_BODY_PREVIEW_CHARS)\n .replace(/[\\u0000-\\u001f\\u007f]/g, ch => `\\\\u${ch.charCodeAt(0).toString(16).padStart(4, '0')}`);\n }\n\n private buildParams(options?: ListOptions & { source?: string }): string {\n if (!options) return '';\n const params = new URLSearchParams();\n if (options.search) params.set('search', options.search);\n if (options.limit != null) params.set('limit', String(options.limit));\n if (options.offset != null) params.set('offset', String(options.offset));\n if ('source' in options && options.source) params.set('source', options.source);\n const qs = params.toString();\n return qs ? '?' + qs : '';\n }\n\n private setTrueParam(params: URLSearchParams, key: string, value: boolean | 'true' | undefined): void {\n if (value === true || value === 'true') params.set(key, 'true');\n }\n\n private appendParamValues(params: URLSearchParams, key: string, value: string | string[] | undefined): void {\n if (Array.isArray(value)) {\n for (const item of value) params.append(key, item);\n } else if (value) {\n params.set(key, value);\n }\n }\n}\n"],"mappings":";;;;;;AA4FA,SAAS,sBAAsB;AAsJ/B,SAAS,oBAAoB;AAW7B;AAAA,EACE,kBAAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAWP,SAAS,qBAAqB,uBAAuB;AAIrD,SAAS,wBAAwB;AAGjC,MAAM,mBAAmB;AACzB,MAAM,qBAAqB;AAC3B,MAAM,yBAAyB,MAAM;AACrC,MAAM,wCAAwC,IAAI,OAAO;AACzD,MAAM,2BAA2B;AACjC,MAAM,mBAAmB;AACzB,MAAM,oCAAoC;AAC1C,MAAM,oBAAoB;AAC1B,MAAM,+BAA+B;AAW9B,SAAS,6BAA6B,QAAuE;AAClH,QAAM,cAAc;AAMpB,MAAI,uBAAuB,aAAa;AACtC,UAAM,IAAI,MAAM,0EAA0E;AAAA,EAC5F;AACA,MAAI,oBAAoB,eAAe,uBAAuB,aAAa;AACzE,UAAM,IAAI,MAAM,8FAA8F;AAAA,EAChH;AACA,QAAM,cAAc,CAAC,WAAW,cAAc,cAAc,eAAe,SAAS;AACpF,QAAM,oBAAoB,YAAY,KAAK,SAAO;AAChD,UAAM,QAAS,OAAmC,GAAG;AACrD,WAAO,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS;AAAA,EAChD,CAAC;AACD,MAAI,CAAC,mBAAmB;AACtB,UAAM,IAAI,MAAM,6EAA6E;AAAA,EAC/F;AAEA,QAAM,EAAE,UAAU,WAAW,GAAG,cAAc,IAAI;AAElD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,mBAAmB,CAAC;AAAA,EACtB;AACF;AAgBO,MAAM,eAAe;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,sBAAsB,oBAAI,IAGzC;AAAA,EAEF,YAAY,QAA+B;AACzC,SAAK,WAAW,QAAQ,WAAW,kBAAkB,QAAQ,OAAO,EAAE;AACtE,SAAK,SAAS,QAAQ,UAAU,QAAQ,IAAI;AAC5C,SAAK,YAAY,QAAQ,aAAa;AACtC,SAAK,eAAe,QAAQ,gBAAgB;AAC5C,SAAK,wBAAwB,QAAQ,gBAAgB;AACrD,SAAK,WAAW,QAAQ,YAAY;AACpC,SAAK,YAAY,QAAQ,SAAS,WAAW;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,YAAY,QAA+C;AAC/D,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,UAAM,MAAM,GAAG,KAAK,OAAO,8BAA8B,mBAAmB,MAAM,CAAC;AACnF,WAAO,KAAK,IAAI,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,EAC1C;AAAA;AAAA,EAGA,MAAM,YAAY,OAAe,SAA0D;AACzF,QAAI,CAAC,OAAO,KAAK,EAAG,OAAM,IAAI,MAAM,mBAAmB;AACvD,QAAI,MAAM,GAAG,KAAK,OAAO,sBAAsB,mBAAmB,KAAK,CAAC;AACxE,QAAI,SAAS,SAAS,KAAM,QAAO,UAAU,QAAQ,KAAK;AAC1D,WAAO,KAAK,IAAI,GAAG;AAAA,EACrB;AAAA;AAAA,EAGA,MAAM,aAAa,SAAkE;AACnF,QAAI,QAAQ,WAAW,EAAG,QAAO,CAAC;AAClC,QAAI,QAAQ,SAAS,kBAAkB;AACrC,YAAM,IAAI,MAAM,4BAA4B,gBAAgB,yBAAyB,QAAQ,MAAM,GAAG;AAAA,IACxG;AACA,UAAM,OAAO,MAAM,KAAK,KAAK,GAAG,KAAK,OAAO,4BAA4B,EAAE,QAAQ,CAAC;AACnF,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,sBACJ,QACA,SAC0C;AAC1C,UAAM,mBAAmB,KAAK,8BAA8B,MAAM;AAClE,UAAM,QAAQ,KAAK,gCAAgC,OAAO;AAC1D,UAAM,WAAW,KAAK,uBAAuB,gBAAgB;AAC7D,UAAM,SAAS,KAAK,wBAAwB,UAAU,SAAS,KAAK;AACpE,QAAI,WAAW,OAAW,QAAO;AAEjC,UAAM,SAAS,IAAI,gBAAgB,EAAE,QAAQ,iBAAiB,CAAC;AAC/D,QAAI,SAAS,MAAO,QAAO,IAAI,SAAS,MAAM;AAC9C,UAAM,QAAQ,MAAM,KAAK,IAAqC,GAAG,KAAK,OAAO,yBAAyB,MAAM,IAAI;AAAA,MAC9G,WAAW;AAAA,IACb,CAAC;AACD,SAAK,wBAAwB,UAAU,OAAO,SAAS,KAAK;AAC5D,WAAO,KAAK,oBAAoB,KAAK;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,wBACJ,SACA,SAC0D;AAC1D,QAAI,QAAQ,WAAW,EAAG,QAAO,CAAC;AAClC,QAAI,QAAQ,SAAS,kBAAkB;AACrC,YAAM,IAAI,MAAM,4BAA4B,gBAAgB,yBAAyB,QAAQ,MAAM,GAAG;AAAA,IACxG;AACA,UAAM,oBAAoB,QAAQ,IAAI,YAAU,KAAK,8BAA8B,MAAM,CAAC;AAC1F,UAAM,QAAQ,KAAK,gCAAgC,OAAO;AAE1D,UAAM,UAA2D,uBAAO,OAAO,IAAI;AACnF,UAAM,aAAuB,CAAC;AAC9B,UAAM,wBAAwB,oBAAI,IAAsB;AAExD,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,YAAM,SAAS,QAAQ,CAAC;AACxB,YAAM,mBAAmB,kBAAkB,CAAC;AAC5C,YAAM,WAAW,KAAK,uBAAuB,gBAAgB;AAC7D,YAAM,SAAS,KAAK,wBAAwB,UAAU,SAAS,KAAK;AACpE,UAAI,WAAW,QAAW;AACxB,gBAAQ,MAAM,IAAI;AAClB;AAAA,MACF;AACA,YAAM,SAAS,sBAAsB,IAAI,QAAQ;AACjD,UAAI,QAAQ;AACV,eAAO,KAAK,MAAM;AAAA,MACpB,OAAO;AACL,mBAAW,KAAK,gBAAgB;AAChC,8BAAsB,IAAI,UAAU,CAAC,MAAM,CAAC;AAAA,MAC9C;AAAA,IACF;AAEA,QAAI,WAAW,SAAS,GAAG;AACzB,YAAM,OAA+C,EAAE,SAAS,WAAW;AAC3E,UAAI,SAAS,MAAO,MAAK,QAAQ;AACjC,YAAM,OAAO,MAAM,KAAK,KAAmC,GAAG,KAAK,OAAO,8BAA8B,IAAI;AAC5G,UAAI,CAAC,QAAQ,OAAO,SAAS,YAAY,CAAC,KAAK,WAAW,OAAO,KAAK,YAAY,UAAU;AAC1F,cAAM,IAAI,MAAM,kDAAkD;AAAA,MACpE;AACA,YAAM,cAAc,oBAAI,IAAY;AACpC,iBAAW,CAAC,QAAQ,KAAK,KAAK,OAAO,QAAQ,KAAK,OAAO,GAAG;AAC1D,cAAM,WAAW,KAAK,uBAAuB,MAAM;AACnD,cAAM,SAAS,sBAAsB,IAAI,QAAQ;AACjD,YAAI,CAAC,OAAQ;AACb,oBAAY,IAAI,QAAQ;AACxB,mBAAW,SAAS,QAAQ;AAC1B,kBAAQ,KAAK,IAAI,KAAK,oBAAoB,KAAK;AAAA,QACjD;AACA,aAAK,wBAAwB,UAAU,OAAO,SAAS,KAAK;AAAA,MAC9D;AACA,iBAAW,CAAC,UAAU,MAAM,KAAK,sBAAsB,QAAQ,GAAG;AAChE,YAAI,YAAY,IAAI,QAAQ,EAAG;AAC/B,cAAM,IAAI,MAAM,uDAAuD,OAAO,CAAC,CAAC,EAAE;AAAA,MACpF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,WAAW,SAA0D;AACzE,UAAM,SAAS,KAAK,YAAY,OAAO;AACvC,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,uBAAuB,MAAM,EAAE;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,aAAa,QAAsD;AACvE,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,UAAM,MAAM,GAAG,KAAK,OAAO,iCAAiC,mBAAmB,MAAM,CAAC;AACtF,WAAO,KAAK,IAAI,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,EAC1C;AAAA;AAAA,EAGA,MAAM,YAAY,QAAkD;AAClE,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,6BAA6B,mBAAmB,MAAM,CAAC,EAAE;AAAA,EAC1F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,eAAe,QAAgB,SAA6E;AAChH,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,UAAM,SAAS,IAAI,gBAAgB;AACnC,UAAM,OAAO,MAAM,QAAQ,OAAO,IAAI,UAAU,SAAS;AACzD,QAAI,MAAM,OAAQ,QAAO,IAAI,QAAQ,KAAK,KAAK,GAAG,CAAC;AACnD,UAAM,KAAK,OAAO,SAAS;AAC3B,UAAM,WAAW,MAAM,KAAK;AAAA,MAC1B,GAAG,KAAK,OAAO,eAAe,mBAAmB,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE,KAAK,EAAE;AAAA,IACrF;AACA,WAAO,KAAK,uBAAuB,QAAQ;AAAA,EAC7C;AAAA;AAAA,EAGA,MAAM,cAAc,OAA2D;AAC7E,QAAI,CAAC,OAAO,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AAChE,QAAI,CAAC,OAAO,UAAU,KAAK,EAAG,OAAM,IAAI,MAAM,sBAAsB;AACpE,QAAI,CAAC,OAAO,UAAU,KAAK,EAAG,OAAM,IAAI,MAAM,sBAAsB;AACpE,QAAI,MAAM,QAAQ,KAAM,OAAM,IAAI,MAAM,kBAAkB;AAC1D,QAAI,CAAC,MAAM,MAAM,OAAQ,OAAM,IAAI,MAAM,mBAAmB;AAC5D,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,wCAAwC;AAE1E,UAAM,OAAO,IAAI,SAAS;AAC1B,SAAK,OAAO,QAAQ,KAAK,gBAAgB,MAAM,MAAM,MAAM,QAAQ,GAAG,MAAM,QAAQ;AACpF,QAAI,MAAM,KAAM,MAAK,OAAO,QAAQ,MAAM,IAAI;AAC9C,SAAK,OAAO,QAAQ,MAAM,KAAK,KAAK,GAAG,CAAC;AAExC,WAAO,KAAK,aAAa,GAAG,KAAK,OAAO,eAAe,mBAAmB,MAAM,MAAM,CAAC,UAAU,IAAI;AAAA,EACvG;AAAA;AAAA,EAGA,MAAM,gBAAgB,OAA+D;AACnF,WAAO,KAAK,cAAc,KAAK;AAAA,EACjC;AAAA;AAAA,EAGA,MAAM,UAAU,OAAqD;AACnE,QAAI,CAAC,OAAO,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AAChE,QAAI,CAAC,OAAO,YAAY,KAAK,EAAG,OAAM,IAAI,MAAM,wBAAwB;AACxE,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,wCAAwC;AAC1E,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,oBAAoB,KAAK;AAAA,EAC3D;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,QAAkD;AACrE,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,UAAM,MAAM,GAAG,KAAK,OAAO,kCAAkC,mBAAmB,MAAM,CAAC;AACvF,WAAO,KAAK,IAAI,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,EAC1C;AAAA;AAAA,EAGA,MAAM,iBAAiB,SAAqE;AAC1F,QAAI,QAAQ,WAAW,EAAG,QAAO,CAAC;AAClC,QAAI,QAAQ,SAAS,kBAAkB;AACrC,YAAM,IAAI,MAAM,4BAA4B,gBAAgB,yBAAyB,QAAQ,MAAM,GAAG;AAAA,IACxG;AACA,UAAM,OAAO,MAAM,KAAK,KAAK,GAAG,KAAK,OAAO,gCAAgC,EAAE,QAAQ,CAAC;AACvF,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,oBACJ,SACA,SACkD;AAClD,UAAM,SAAS,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC;AACnC,UAAM,cAAc,SAAS,eAAe;AAC5C,UAAM,UAAsB,CAAC;AAC7B,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,kBAAkB;AACxD,cAAQ,KAAK,OAAO,MAAM,GAAG,IAAI,gBAAgB,CAAC;AAAA,IACpD;AACA,UAAM,UAAmD,CAAC;AAC1D,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,aAAa;AACpD,YAAM,QAAQ,QAAQ,MAAM,GAAG,IAAI,WAAW;AAC9C,YAAM,UAAU,MAAM,QAAQ,IAAI,MAAM,IAAI,OAAK,KAAK,iBAAiB,CAAC,CAAC,CAAC;AAC1E,iBAAW,KAAK,QAAS,QAAO,OAAO,SAAS,CAAC;AAAA,IACnD;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aAAa,SAAmB,SAAsE;AAC1G,UAAM,UAAU,MAAM,KAAK,oBAAoB,SAAS,OAAO;AAC/D,UAAM,SAAkC,CAAC;AACzC,eAAW,CAAC,QAAQ,QAAQ,KAAK,OAAO,QAAQ,OAAO,GAAG;AACxD,aAAO,MAAM,IAAI,YAAY;AAAA,IAC/B;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,eACJ,SACiF;AACjF,UAAM,SAAS,KAAK,YAAY,OAAO;AACvC,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,2BAA2B,MAAM,EAAE;AAAA,EACpE;AAAA;AAAA,EAGA,MAAM,iBAAiB,QAA2C;AAChE,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,mCAAmC,mBAAmB,MAAM,CAAC,EAAE;AAAA,EAChG;AAAA;AAAA,EAGA,MAAM,aAAa,UAA8D;AAC/E,QAAI,CAAC,UAAU,kBAAkB,KAAK,EAAG,OAAM,IAAI,MAAM,8BAA8B;AACvF,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,wCAAwC;AAC1E,UAAM,UAAU,KAAK,6BAA6B,QAAQ;AAC1D,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,wBAAwB,OAAO;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,0BAA0B,QAA4D;AAC1F,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,+CAA+C;AACjF,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,0BAA0B,mBAAmB,OAAO,KAAK,CAAC,CAAC,UAAU,MAAS;AAAA,EAChH;AAAA;AAAA,EAGA,MAAM,2BAA2B,QAA6D;AAC5F,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,qDAAqD;AACvF,WAAO,KAAK;AAAA,MACV,GAAG,KAAK,OAAO,0BAA0B,mBAAmB,OAAO,KAAK,CAAC,CAAC;AAAA,MAC1E;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,eACJ,YACA,SACmE;AACnE,UAAM,cAAc,SAAS,eAAe;AAC5C,UAAM,UAAoE,CAAC;AAC3E,aAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK,aAAa;AACvD,YAAM,QAAQ,WAAW,MAAM,GAAG,IAAI,WAAW;AACjD,YAAM,UAAU,MAAM,QAAQ,WAAW,MAAM,IAAI,OAAK,KAAK,aAAa,CAAC,CAAC,CAAC;AAC7E,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,cAAM,SAAS,MAAM,CAAC,EAAG;AACzB,cAAM,IAAI,QAAQ,CAAC;AACnB,gBAAQ,MAAM,IAAI,EAAE,WAAW,cAAc,EAAE,QAAQ,EAAE,OAAO,OAAO,EAAE,MAAM,EAAE;AAAA,MACnF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,mBAAmB,SAAyE;AAChG,QAAI,CAAC,SAAS,aAAa,OAAQ,OAAM,IAAI,MAAM,0BAA0B;AAC7E,SAAK,QAAQ,QAAQ,eAAe,YAAY,CAAC,KAAK,QAAQ;AAC5D,YAAM,IAAI,MAAM,2DAA2D;AAAA,IAC7E;AACA,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,yBAAyB,OAAO;AAAA,EAClE;AAAA;AAAA,EAGA,MAAM,mBAAmB,SAAyE;AAChG,QAAI,CAAC,SAAS,cAAc,KAAK,EAAG,OAAM,IAAI,MAAM,0BAA0B;AAC9E,QAAI,CAAC,SAAS,eAAe,KAAK,EAAG,OAAM,IAAI,MAAM,2BAA2B;AAChF,QAAI,CAAC,SAAS,OAAO,KAAK,EAAG,OAAM,IAAI,MAAM,mBAAmB;AAChE,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,yCAAyC;AAC3E,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,kCAAkC,OAAO;AAAA,EAC3E;AAAA;AAAA,EAGA,MAAM,kBAAkB,IAAuD;AAC7E,QAAI,CAAC,IAAI,KAAK,EAAG,OAAM,IAAI,MAAM,gBAAgB;AACjD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,kCAAkC,mBAAmB,GAAG,KAAK,CAAC,CAAC,IAAI;AAAA,MAChG,WAAW;AAAA,IACb,CAAC;AAAA,EACH;AAAA;AAAA;AAAA,EAKA,MAAM,WAAW,SAA0D;AACzE,UAAM,SAAS,IAAI,gBAAgB;AACnC,QAAI,SAAS,KAAM,QAAO,IAAI,QAAQ,QAAQ,IAAI;AAClD,SAAK,aAAa,QAAQ,UAAU,SAAS,MAAM;AACnD,SAAK,aAAa,QAAQ,gBAAgB,SAAS,YAAY;AAC/D,SAAK,aAAa,QAAQ,cAAc,SAAS,UAAU;AAC3D,SAAK,aAAa,QAAQ,cAAc,SAAS,UAAU;AAC3D,SAAK,kBAAkB,QAAQ,aAAa,SAAS,SAAS;AAC9D,SAAK,kBAAkB,QAAQ,iBAAiB,SAAS,aAAa;AACtE,QAAI,SAAS,EAAG,QAAO,IAAI,KAAK,QAAQ,CAAC;AACzC,SAAK,kBAAkB,QAAQ,qBAAqB,SAAS,iBAAiB;AAC9E,SAAK,aAAa,QAAQ,YAAY,SAAS,QAAQ;AACvD,UAAM,KAAK,OAAO,SAAS;AAC3B,WAAO,KAAK,YAAY,MAAM,KAAK,IAAI,GAAG,KAAK,OAAO,uBAAuB,KAAK,MAAM,KAAK,EAAE,EAAE,CAAC;AAAA,EACpG;AAAA;AAAA,EAGA,MAAM,iBAAkD;AACtD,WAAO,KAAK,YAAY,MAAM,KAAK,IAAI,GAAG,KAAK,OAAO,0BAA0B,CAAC;AAAA,EACnF;AAAA;AAAA,EAGA,MAAM,mBAAqD;AACzD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,qBAAqB;AAAA,EACtD;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,UAAyD;AAChF,QAAI,CAAC,UAAU,KAAK,EAAG,OAAM,IAAI,MAAM,sBAAsB;AAC7D,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,wBAAwB,mBAAmB,QAAQ,CAAC,eAAe;AAAA,MAChG,WAAW;AAAA,IACb,CAAC;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,yBAAyB,UAA6D;AAC1F,QAAI,CAAC,UAAU,KAAK,EAAG,OAAM,IAAI,MAAM,sBAAsB;AAC7D,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,0CAA0C;AAC5E,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,wBAAwB,mBAAmB,QAAQ,CAAC,oBAAoB;AAAA,EACzG;AAAA;AAAA,EAGA,MAAM,6BAA6B,WAAoE;AACrG,QAAI,CAAC,WAAW,OAAQ,OAAM,IAAI,MAAM,uBAAuB;AAC/D,UAAM,SAAS,CAAC,GAAG,IAAI,IAAI,UAAU,IAAI,OAAK,GAAG,KAAK,CAAC,EAAE,OAAO,OAAO,CAAC,CAAC;AACzE,QAAI,OAAO,WAAW,EAAG,OAAM,IAAI,MAAM,qCAAqC;AAC9E,QAAI,OAAO,SAAS,kBAAkB;AACpC,YAAM,IAAI,MAAM,0BAA0B,gBAAgB,wBAAwB,OAAO,MAAM,GAAG;AAAA,IACpG;AACA,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,0CAA0C;AAC5E,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,0CAA0C,EAAE,YAAY,OAAO,CAAC;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8BA,MAAM,eACJ,QACA,MACsC;AACtC,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,UAAM,SAAS,IAAI,gBAAgB,EAAE,OAAO,CAAC;AAC7C,QAAI,MAAM,SAAS,KAAK,UAAU,MAAO,QAAO,IAAI,SAAS,KAAK,KAAK;AACvE,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,0BAA0B,OAAO,SAAS,CAAC,IAAI,EAAE,WAAW,KAAK,CAAC;AAAA,EACnG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,gBAAgB,QAAuD;AAC3E,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,kCAAkC,mBAAmB,MAAM,CAAC,IAAI;AAAA,MAC7F,WAAW;AAAA,IACb,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,aAAa,QAA6C;AAC9D,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,+BAA+B,mBAAmB,MAAM,CAAC,EAAE;AAAA,EAC5F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,cACJ,SACA,SAC6C;AAC7C,UAAM,SAAS,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC;AACnC,UAAM,cAAc,SAAS,eAAe;AAC5C,UAAM,UAA8C,CAAC;AACrD,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,aAAa;AACnD,YAAM,QAAQ,OAAO,MAAM,GAAG,IAAI,WAAW;AAC7C,YAAM,UAAU,MAAM,QAAQ,WAAW,MAAM,IAAI,OAAK,KAAK,aAAa,CAAC,CAAC,CAAC;AAC7E,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,cAAM,IAAI,QAAQ,CAAC;AACnB,YAAI,EAAE,WAAW,YAAa,SAAQ,MAAM,CAAC,CAAE,IAAI,EAAE;AAAA,MACvD;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,0BACJ,aACA,SACkD;AAClD,UAAM,cAAc,SAAS,eAAe;AAE5C,UAAM,OAAO,oBAAI,IAAY;AAC7B,UAAM,SAA4C,CAAC;AACnD,eAAW,MAAM,aAAa;AAC5B,YAAM,MAAM,GAAG,GAAG,IAAI,IAAI,GAAG,KAAK;AAClC,UAAI,CAAC,KAAK,IAAI,GAAG,GAAG;AAClB,aAAK,IAAI,GAAG;AACZ,eAAO,KAAK,EAAE;AAAA,MAChB;AAAA,IACF;AACA,UAAM,UAAmD,CAAC;AAC1D,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,aAAa;AACnD,YAAM,QAAQ,OAAO,MAAM,GAAG,IAAI,WAAW;AAC7C,YAAM,UAAU,MAAM,QAAQ,WAAW,MAAM,IAAI,QAAM,KAAK,2BAA2B,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAC5G,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,cAAM,IAAI,QAAQ,CAAC;AACnB,cAAM,MAAM,GAAG,MAAM,CAAC,EAAG,IAAI,IAAI,MAAM,CAAC,EAAG,KAAK;AAChD,YAAI,EAAE,WAAW,YAAa,SAAQ,GAAG,IAAI,EAAE;AAAA,MACjD;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,2BAA2B,MAAc,OAAiD;AAC9F,QAAI,CAAC,MAAM,KAAK,EAAG,OAAM,IAAI,MAAM,kBAAkB;AACrD,QAAI,CAAC,OAAO,KAAK,EAAG,OAAM,IAAI,MAAM,mBAAmB;AACvD,UAAM,SAAS,SAAS,mBAAmB,IAAI,CAAC,UAAU,mBAAmB,KAAK,CAAC;AACnF,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,gCAAgC,MAAM,EAAE;AAAA,EACzE;AAAA;AAAA,EAGA,MAAM,gBAAgB,UAAoF;AACxG,QAAI,CAAC,UAAU,KAAK,EAAG,OAAM,IAAI,MAAM,sBAAsB;AAC7D,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,8BAA8B,mBAAmB,QAAQ,CAAC,UAAU;AAAA,EACrG;AAAA;AAAA,EAGA,MAAM,8BACJ,UACA,gBACA,iBAOC;AACD,QAAI,CAAC,UAAU,KAAK,EAAG,OAAM,IAAI,MAAM,sBAAsB;AAC7D,UAAM,SAAS,IAAI,gBAAgB;AAAA,MACjC,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,IACpB,CAAC;AACD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,iDAAiD,MAAM,EAAE;AAAA,EAC1F;AAAA;AAAA,EAGA,MAAM,6BACJ,UACA,qBACkC;AAClC,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,gDAAgD;AAAA,MAC9E,WAAW;AAAA,MACX,sBAAsB;AAAA,IACxB,CAAC;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,yBACJ,UACA,qBACkC;AAClC,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,4CAA4C;AAAA,MAC1E,WAAW;AAAA,MACX,sBAAsB;AAAA,IACxB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,MAAM,kBAAkB,SAarB;AACD,QAAI,CAAC,SAAS,OAAQ,OAAM,IAAI,MAAM,qBAAqB;AAC3D,QAAI,QAAQ,SAAS,mBAAmB;AACtC,YAAM,IAAI,MAAM,0BAA0B,iBAAiB,yBAAyB,QAAQ,MAAM,GAAG;AAAA,IACvG;AACA,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,yBAAyB,EAAE,QAAQ,CAAC;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,uBAAuB,UAE1B;AACD,QAAI,CAAC,UAAU,KAAK,EAAG,OAAM,IAAI,MAAM,sBAAsB;AAC7D,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,yBAAyB,mBAAmB,QAAQ,CAAC,EAAE;AAAA,EACxF;AAAA;AAAA;AAAA,EAKA,MAAM,iBAAiB,QAAmD;AACxE,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,0BAA0B,EAAE,OAAO,CAAC;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,MAAM,eAAe,QAAgE;AACnF,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,wBAAwB,MAAM;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,8BAA8B,QAAwE;AAC1G,WAAO,KAAK,eAAe,6BAA6B,MAAM,CAAC;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,+BAA+B,QAAwE;AAC3G,WAAO,KAAK,8BAA8B,MAAM;AAAA,EAClD;AAAA,EAcA,MAAM,8BACJ,kBACA,aACiD;AACjD,UAAM,EAAE,UAAU,OAAO,IAAI,KAAK,kCAAkC,kBAAkB,WAAW;AACjG,WAAO,KAAK,+BAA+B,UAAU,MAAM;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,MAAM,+BACJ,UACA,QACiD;AACjD,UAAM,qBAAqB,KAAK,iCAAiC,QAAQ;AACzE,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,wCAAwC;AAC1E,UAAM,UAAU,6BAA6B,MAAM;AACnD,SAAK,6CAA6C,oBAAoB,OAAO;AAC7E,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,yBAAyB,mBAAmB,kBAAkB,CAAC,IAAI,OAAO;AAAA,EAC3G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,2BAA2B,UAAkE;AACjG,UAAM,qBAAqB,KAAK,iCAAiC,QAAQ;AACzE,UAAM,WAAW,MAAM,KAAK,IAIzB,GAAG,KAAK,OAAO,yBAAyB,mBAAmB,kBAAkB,CAAC,IAAI,EAAE,WAAW,KAAK,CAAC;AACxG,QAAI,CAAC,SAAU,QAAO;AACtB,QAAI,SAAS,aAAa,UAAa,SAAS,aAAa,oBAAoB;AAC/E,YAAM,IAAI,MAAM,wDAAwD;AAAA,IAC1E;AACA,UAAM,UAAU,SAAS;AACzB,QAAI,CAAC,WAAW,OAAO,YAAY,YAAY,MAAM,QAAQ,OAAO,GAAG;AACrE,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AACA,UAAM,eAAe;AACrB,QAAI,CAAC,MAAM,QAAQ,aAAa,iBAAiB,KAAK,aAAa,kBAAkB,WAAW,GAAG;AACjG,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AACA,QAAI,SAAS,iBAAiB,QAAQ,OAAO,SAAS,kBAAkB,UAAU;AAChF,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AACA,WAAO,SAAS,iBAAiB,CAAC,aAAa,gBAC3C,EAAE,GAAG,cAAc,eAAe,SAAS,cAAc,IACzD;AAAA,EACN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,4BAA4B,SAGe;AAC/C,UAAM,SAAS,IAAI,gBAAgB;AACnC,QAAI,SAAS,SAAS,KAAM,QAAO,IAAI,SAAS,OAAO,QAAQ,KAAK,CAAC;AACrE,QAAI,SAAS,UAAU,KAAM,QAAO,IAAI,UAAU,OAAO,QAAQ,MAAM,CAAC;AACxE,UAAM,KAAK,OAAO,SAAS;AAC3B,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,wBAAwB,KAAK,IAAI,EAAE,KAAK,EAAE,EAAE;AAAA,EAC7E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,8BACJ,UACA,SACgD;AAChD,UAAM,qBAAqB,KAAK,iCAAiC,QAAQ;AACzE,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,wCAAwC;AAC1E,UAAM,SAAS,IAAI,gBAAgB;AACnC,QAAI,SAAS,MAAO,QAAO,IAAI,SAAS,MAAM;AAC9C,UAAM,KAAK,OAAO,SAAS;AAC3B,WAAO,KAAK;AAAA,MACV,GAAG,KAAK,OAAO,yBAAyB,mBAAmB,kBAAkB,CAAC,GAAG,KAAK,IAAI,EAAE,KAAK,EAAE;AAAA,IACrG;AAAA,EACF;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO,OAA6F;AACxG,QAAI,CAAC,OAAO,KAAK,EAAG,OAAM,IAAI,MAAM,mBAAmB;AACvD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,iBAAiB,mBAAmB,KAAK,CAAC,EAAE;AAAA,EAC7E;AAAA;AAAA,EAGA,MAAM,kBAAkB,QAAgB,MAAiD;AACvF,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,UAAM,SAAS,IAAI,gBAAgB,EAAE,OAAO,CAAC;AAC7C,QAAI,KAAM,QAAO,IAAI,QAAQ,IAAI;AACjC,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,6BAA6B,MAAM,EAAE;AAAA,EACtE;AAAA;AAAA,EAGA,MAAM,cAAc,KAA+C;AACjE,QAAI,CAAC,KAAK,KAAK,EAAG,OAAM,IAAI,MAAM,iBAAiB;AACnD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,kCAAkC,mBAAmB,GAAG,CAAC,EAAE;AAAA,EAC5F;AAAA;AAAA,EAGA,MAAM,gBAAgB,KAA+C;AACnE,QAAI,CAAC,KAAK,KAAK,EAAG,OAAM,IAAI,MAAM,iBAAiB;AACnD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,iCAAiC,mBAAmB,GAAG,CAAC,EAAE;AAAA,EAC3F;AAAA;AAAA,EAGA,MAAM,iBAAiB,KAA+C;AACpE,QAAI,CAAC,KAAK,KAAK,EAAG,OAAM,IAAI,MAAM,iBAAiB;AACnD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,kCAAkC,mBAAmB,GAAG,CAAC,EAAE;AAAA,EAC5F;AAAA;AAAA,EAGA,MAAM,kBAAkB,QAAkD;AACxE,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,yCAAyC,mBAAmB,MAAM,CAAC,EAAE;AAAA,EACtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,QAAQ,SAA4C;AACxD,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,oCAAoC;AACtE,UAAM,SAAS,IAAI,gBAAgB;AACnC,QAAI,SAAS,OAAQ,QAAO,IAAI,UAAU,QAAQ,MAAM;AACxD,QAAI,SAAS,MAAO,QAAO,IAAI,SAAS,QAAQ,KAAK;AACrD,QAAI,SAAS,SAAS,KAAM,QAAO,IAAI,SAAS,OAAO,QAAQ,KAAK,CAAC;AACrE,UAAM,KAAK,OAAO,SAAS;AAC3B,UAAM,MAAM,GAAG,KAAK,OAAO,qBAAqB,KAAK,MAAM,KAAK,EAAE;AAClE,UAAM,EAAE,KAAK,KAAK,IAAI,MAAM,KAAK,YAAY,KAAK,EAAE,SAAS,KAAK,WAAW,EAAE,CAAC;AAChF,QAAI,IAAI,WAAW,KAAK;AAGtB,aAAO,EAAE,QAAQ,CAAC,GAAG,QAAQ,MAAM,UAAU,OAAO,gBAAgB,KAAK;AAAA,IAC3E;AACA,QAAI,CAAC,IAAI,IAAI;AACX,YAAM,IAAI,MAAM,4BAA4B,IAAI,MAAM,MAAM,KAAK,QAAQ,IAAI,CAAC,EAAE;AAAA,IAClF;AACA,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,WAAW,OAAyB,MAAoE;AACtG,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,2CAA2C;AAC7E,WAAO,eAAe;AAAA,MACpB,WAAW,KAAK;AAAA,MAChB,SAAS,KAAK;AAAA,MACd,QAAQ,KAAK;AAAA,MACb;AAAA,MACA,UAAU,KAAK;AAAA,MACf,QAAQ,MAAM;AAAA,IAChB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,aAAa,OAAwD;AACzE,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,qCAAqC;AACvE,UAAM,SAAS,IAAI,gBAAgB;AACnC,QAAI,OAAO,KAAM,QAAO,IAAI,QAAQ,MAAM,IAAI;AAC9C,QAAI,OAAO,SAAU,QAAO,IAAI,YAAY,MAAM,QAAQ;AAC1D,QAAI,OAAO,QAAS,QAAO,IAAI,WAAW,MAAM,OAAO;AACvD,QAAI,OAAO,WAAY,QAAO,IAAI,cAAc,MAAM,UAAU;AAChE,QAAI,OAAO,eAAgB,QAAO,IAAI,kBAAkB,MAAM,cAAc;AAC5E,QAAI,OAAO,KAAM,QAAO,IAAI,QAAQ,MAAM,IAAI;AAC9C,QAAI,OAAO,eAAgB,QAAO,IAAI,kBAAkB,MAAM,cAAc;AAC5E,QAAI,OAAO,WAAW,KAAM,QAAO,IAAI,WAAW,OAAO,MAAM,OAAO,CAAC;AACvE,QAAI,OAAO,kBAAkB,KAAM,QAAO,IAAI,kBAAkB,OAAO,MAAM,cAAc,CAAC;AAC5F,QAAI,OAAO,KAAM,QAAO,IAAI,QAAQ,MAAM,IAAI;AAC9C,QAAI,OAAO,SAAS,KAAM,QAAO,IAAI,SAAS,OAAO,MAAM,KAAK,CAAC;AACjE,QAAI,OAAO,OAAQ,QAAO,IAAI,UAAU,MAAM,MAAM;AACpD,UAAM,KAAK,OAAO,SAAS;AAC3B,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,8BAA8B,KAAK,MAAM,KAAK,EAAE,EAAE;AAAA,EACnF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,aAAa,QAA+C;AAChE,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,uCAAuC;AACzE,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,+BAA+B,EAAE,OAAO,CAAC;AAAA,EAC3E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,2BAA2B,eAA6D;AAC5F,QAAI,CAAC,eAAe,KAAK,EAAG,OAAM,IAAI,MAAM,2BAA2B;AACvE,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,sDAAsD;AACxF,UAAM,OAAmC,EAAE,gBAAgB,cAAc;AACzE,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,8CAA8C,IAAI;AAAA,EACpF;AAAA;AAAA;AAAA,EAKA,MAAM,aAAa,QAA2D;AAC5E,UAAM,KAAK,IAAI,gBAAgB;AAC/B,QAAI,QAAQ,OAAQ,IAAG,IAAI,UAAU,OAAO,MAAM;AAClD,QAAI,QAAQ,SAAU,IAAG,IAAI,YAAY,OAAO,QAAQ;AACxD,QAAI,QAAQ,YAAa,IAAG,IAAI,eAAe,OAAO,WAAW;AACjE,QAAI,QAAQ,aAAc,IAAG,IAAI,gBAAgB,OAAO,YAAY;AACpE,QAAI,QAAQ,gBAAiB,IAAG,IAAI,mBAAmB,OAAO,eAAe;AAC7E,QAAI,QAAQ,OAAQ,IAAG,IAAI,UAAU,OAAO,MAAM;AAClD,QAAI,QAAQ,SAAS,KAAM,IAAG,IAAI,SAAS,OAAO,OAAO,KAAK,CAAC;AAC/D,QAAI,QAAQ,UAAU,KAAM,IAAG,IAAI,UAAU,OAAO,OAAO,MAAM,CAAC;AAClE,UAAM,IAAI,GAAG,SAAS;AACtB,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,yBAAyB,IAAI,MAAM,IAAI,EAAE,EAAE;AAAA,EAC5E;AAAA;AAAA,EAGA,MAAM,cAAc,QAAmE;AACrF,QAAI,CAAC,QAAQ,WAAW,KAAK,EAAG,OAAM,IAAI,MAAM,uBAAuB;AACvE,UAAM,KAAK,IAAI,gBAAgB,EAAE,WAAW,OAAO,UAAU,CAAC;AAC9D,QAAI,OAAO,QAAS,IAAG,IAAI,WAAW,OAAO,OAAO;AACpD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,yBAAyB,EAAE,IAAI,EAAE,WAAW,KAAK,CAAC;AAAA,EACnF;AAAA;AAAA,EAGA,MAAM,oBAAoB,MAAwE;AAChG,QAAI,CAAC,MAAM,YAAY,OAAQ,OAAM,IAAI,MAAM,wBAAwB;AACvE,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,8BAA8B,IAAI;AAAA,EACpE;AAAA;AAAA,EAGA,MAAM,iBAAiB,QAAyE;AAC9F,QAAI,CAAC,QAAQ,WAAW,KAAK,EAAG,OAAM,IAAI,MAAM,uBAAuB;AACvE,UAAM,KAAK,IAAI,gBAAgB,EAAE,WAAW,OAAO,UAAU,CAAC;AAC9D,QAAI,OAAO,SAAS,KAAM,IAAG,IAAI,SAAS,OAAO,OAAO,KAAK,CAAC;AAC9D,QAAI,OAAO,UAAU,KAAM,IAAG,IAAI,UAAU,OAAO,OAAO,MAAM,CAAC;AACjE,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,yBAAyB,EAAE,IAAI,EAAE,WAAW,KAAK,CAAC;AAAA,EACnF;AAAA;AAAA,EAGA,MAAM,WAAW,MAAsD;AACrE,QAAI,CAAC,MAAM,WAAW,KAAK,EAAG,OAAM,IAAI,MAAM,uBAAuB;AACrE,QAAI,CAAC,MAAM,SAAS,KAAK,EAAG,OAAM,IAAI,MAAM,qBAAqB;AACjE,QAAI,CAAC,MAAM,MAAM,KAAK,EAAG,OAAM,IAAI,MAAM,kBAAkB;AAC3D,QAAI,CAAC,MAAM,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AAC/D,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,wCAAwC;AAC1E,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,sBAAsB,IAAI;AAAA,EAC5D;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,QAAuE;AAC3F,QAAI,CAAC,QAAQ,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACjE,UAAM,KAAK,IAAI,gBAAgB,EAAE,QAAQ,OAAO,OAAO,CAAC;AACxD,QAAI,OAAO,SAAS,KAAM,IAAG,IAAI,SAAS,OAAO,OAAO,KAAK,CAAC;AAC9D,QAAI,OAAO,UAAU,KAAM,IAAG,IAAI,UAAU,OAAO,OAAO,MAAM,CAAC;AACjE,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,uBAAuB,EAAE,IAAI,EAAE,WAAW,KAAK,CAAC;AAAA,EACjF;AAAA;AAAA,EAGA,MAAM,mBAAmB,QAA6E;AACpG,QAAI,CAAC,QAAQ,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACjE,UAAM,KAAK,IAAI,gBAAgB,EAAE,QAAQ,OAAO,OAAO,CAAC;AACxD,QAAI,OAAO,SAAS,KAAM,IAAG,IAAI,SAAS,OAAO,OAAO,KAAK,CAAC;AAC9D,QAAI,OAAO,UAAU,KAAM,IAAG,IAAI,UAAU,OAAO,OAAO,MAAM,CAAC;AACjE,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,2BAA2B,EAAE,IAAI,EAAE,WAAW,KAAK,CAAC;AAAA,EACrF;AAAA;AAAA,EAIA,MAAc,IAAa,KAAa,MAA4C;AAClF,UAAM,EAAE,KAAK,KAAK,IAAI,MAAM,KAAK,YAAY,KAAK,EAAE,SAAS,KAAK,WAAW,EAAE,CAAC;AAChF,QAAI,MAAM,aAAa,IAAI,WAAW,IAAK,QAAO;AAClD,QAAI,CAAC,IAAI,IAAI;AACX,YAAM,IAAI,MAAM,4BAA4B,IAAI,MAAM,MAAM,KAAK,QAAQ,IAAI,CAAC,EAAE;AAAA,IAClF;AACA,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AAAA,EAEA,MAAc,KAAc,KAAa,MAA2B;AAClE,UAAM,EAAE,KAAK,KAAK,IAAI,MAAM,KAAK,YAAY,KAAK;AAAA,MAChD,QAAQ;AAAA,MACR,SAAS,EAAE,GAAG,KAAK,WAAW,GAAG,gBAAgB,mBAAmB;AAAA,MACpE,MAAM,KAAK,UAAU,IAAI;AAAA,IAC3B,CAAC;AACD,QAAI,CAAC,IAAI,IAAI;AACX,YAAM,IAAI,MAAM,4BAA4B,IAAI,MAAM,MAAM,KAAK,QAAQ,IAAI,CAAC,EAAE;AAAA,IAClF;AACA,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AAAA,EAEA,MAAc,aAAsB,KAAa,MAA4B;AAC3E,UAAM,EAAE,KAAK,KAAK,IAAI,MAAM,KAAK,YAAY,KAAK;AAAA,MAChD,QAAQ;AAAA,MACR,SAAS,KAAK,WAAW;AAAA,MACzB;AAAA,IACF,CAAC;AACD,QAAI,CAAC,IAAI,IAAI;AACX,YAAM,IAAI,MAAM,4BAA4B,IAAI,MAAM,MAAM,KAAK,QAAQ,IAAI,CAAC,EAAE;AAAA,IAClF;AACA,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AAAA,EAEA,MAAc,IAAa,KAAa,MAA2B;AACjE,UAAM,EAAE,KAAK,KAAK,IAAI,MAAM,KAAK,YAAY,KAAK;AAAA,MAChD,QAAQ;AAAA,MACR,SAAS,EAAE,GAAG,KAAK,WAAW,GAAG,gBAAgB,mBAAmB;AAAA,MACpE,MAAM,KAAK,UAAU,IAAI;AAAA,IAC3B,CAAC;AACD,QAAI,CAAC,IAAI,IAAI;AACX,YAAM,IAAI,MAAM,4BAA4B,IAAI,MAAM,MAAM,KAAK,QAAQ,IAAI,CAAC,EAAE;AAAA,IAClF;AACA,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AAAA,EAEA,MAAc,cAAuB,KAAyB;AAC5D,UAAM,EAAE,KAAK,KAAK,IAAI,MAAM,KAAK,YAAY,KAAK;AAAA,MAChD,QAAQ;AAAA,MACR,SAAS,KAAK,WAAW;AAAA,IAC3B,CAAC;AACD,QAAI,CAAC,IAAI,IAAI;AACX,YAAM,IAAI,MAAM,4BAA4B,IAAI,MAAM,MAAM,KAAK,QAAQ,IAAI,CAAC,EAAE;AAAA,IAClF;AACA,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AAAA,EAEQ,uBAAuB,UAA2D;AACxF,UAAM,SAAS,MAAM,QAAQ,SAAS,MAAM,IACvC,SAAS,SACV,MAAM,QAAQ,SAAS,KAAK,IACzB,SAAS,QACV,CAAC;AACP,UAAM,QAAQ,MAAM,QAAQ,SAAS,KAAK,IAAK,SAAS,QAA6C;AAErG,UAAM,aAAqC;AAAA,MACzC;AAAA,MACA;AAAA,IACF;AACA,QAAI,OAAO,SAAS,WAAW,SAAU,YAAW,SAAS,SAAS;AACtE,QAAI,SAAS,SAAS,QAAQ,OAAO,SAAS,UAAU,YAAY,CAAC,MAAM,QAAQ,SAAS,KAAK,GAAG;AAClG,iBAAW,QAAQ,SAAS;AAAA,IAC9B;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,6BAA6B,UAAoD;AACvF,UAAM,UAA+B;AAAA,MACnC,GAAG;AAAA,MACH,mBAAmB,CAAC;AAAA,IACtB;AACA,QAAI,MAAM,QAAQ,SAAS,UAAU,GAAG;AACtC,cAAQ,aAAa,SAAS,WAAW,IAAI,OAAK,KAAK,8BAA8B,CAAC,CAAC;AAAA,IACzF;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,8BAA8B,UAAsD;AAC1F,UAAM,aAAa,EAAE,GAAG,SAAS;AAIjC,QAAI,WAAW,kBAAkB,UAAa,WAAW,SAAS,QAAW;AAC3E,iBAAW,gBAAgB,WAAW;AAAA,IACxC;AACA,QAAI,WAAW,SAAS,UAAa,WAAW,kBAAkB,QAAW;AAC3E,iBAAW,OAAO,WAAW;AAAA,IAC/B;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,gBAAgB,MAAkC,UAAwB;AAChF,QAAI,gBAAgB,KAAM,QAAO,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC;AACpE,QAAI,gBAAgB,YAAa,QAAO,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC;AAC3E,QAAI,YAAY,OAAO,IAAI,GAAG;AAC5B,YAAM,QAAQ,IAAI,WAAW,KAAK,UAAU;AAC5C,YAAM,IAAI,IAAI,WAAW,KAAK,QAAQ,KAAK,YAAY,KAAK,UAAU,CAAC;AACvE,aAAO,IAAI,KAAK,CAAC,KAAK,GAAG,EAAE,MAAM,SAAS,CAAC;AAAA,IAC7C;AACA,UAAM,IAAI,MAAM,8DAA8D;AAAA,EAChF;AAAA,EAEQ,iCAAiC,UAA0B;AACjE,UAAM,qBAAqB,UAAU,KAAK,EAAE,YAAY;AACxD,QAAI,CAAC,mBAAoB,OAAM,IAAI,MAAM,sBAAsB;AAC/D,QAAI,CAAC,6BAA6B,KAAK,kBAAkB,GAAG;AAC1D,YAAM,IAAI,MAAM,wCAAwC;AAAA,IAC1D;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,uBAAuB,QAAwB;AACrD,WAAO,OAAO,KAAK,EAAE,YAAY;AAAA,EACnC;AAAA,EAEQ,8BAA8B,QAAwB;AAC5D,UAAM,aAAa,QAAQ,KAAK;AAChC,QAAI,CAAC,WAAY,OAAM,IAAI,MAAM,oBAAoB;AACrD,QAAI,WAAW,SAAS,IAAK,OAAM,IAAI,MAAM,wCAAwC;AACrF,WAAO;AAAA,EACT;AAAA,EAEQ,gCAAgC,SAAuE;AAC7G,QAAI,SAAS,SAAS,KAAM,QAAO;AACnC,QAAI,CAAC,OAAO,SAAS,QAAQ,KAAK,KAAK,QAAQ,QAAQ,GAAG;AACxD,YAAM,IAAI,MAAM,4CAA4C;AAAA,IAC9D;AACA,WAAO,QAAQ;AAAA,EACjB;AAAA,EAEQ,wBACN,UACA,SACA,OAC6C;AAC7C,QAAI,SAAS,SAAS,SAAS,QAAQ,UAAU,EAAG,QAAO;AAC3D,UAAM,SAAS,KAAK,oBAAoB,IAAI,QAAQ;AACpD,QAAI,CAAC,OAAQ,QAAO;AACpB,QAAI,OAAO,aAAa,KAAK,IAAI,GAAG;AAClC,WAAK,oBAAoB,OAAO,QAAQ;AACxC,aAAO;AAAA,IACT;AACA,SAAK,oBAAoB,OAAO,QAAQ;AACxC,SAAK,oBAAoB,IAAI,UAAU,MAAM;AAC7C,WAAO,KAAK,oBAAoB,OAAO,KAAK;AAAA,EAC9C;AAAA,EAEQ,wBACN,UACA,OACA,SACA,OACM;AACN,QAAI,SAAS,QAAQ,UAAU,GAAG;AAChC,UAAI,SAAS,MAAO,MAAK,oBAAoB,OAAO,QAAQ;AAC5D;AAAA,IACF;AACA,SAAK,oBAAoB,OAAO,QAAQ;AACxC,SAAK,oBAAoB,IAAI,UAAU;AAAA,MACrC,WAAW,KAAK,IAAI,IAAI;AAAA,MACxB,OAAO,KAAK,oBAAoB,KAAK;AAAA,IACvC,CAAC;AACD,WAAO,KAAK,oBAAoB,OAAO,mCAAmC;AACxE,YAAM,SAAS,KAAK,oBAAoB,KAAK,EAAE,KAAK,EAAE;AACtD,UAAI,UAAU,KAAM;AACpB,WAAK,oBAAoB,OAAO,MAAM;AAAA,IACxC;AAAA,EACF;AAAA,EAEQ,oBAAoB,OAAyE;AACnG,WAAO,SAAS,OAAO,OAAO,EAAE,GAAG,OAAO,OAAO,MAAM,MAAM,IAAI,YAAU,EAAE,GAAG,MAAM,EAAE,EAAE;AAAA,EAC5F;AAAA,EAEQ,kCACN,kBACA,aAC6D;AAC7D,QAAI,OAAO,qBAAqB,UAAU;AACxC,UAAI,CAAC,YAAa,OAAM,IAAI,MAAM,oBAAoB;AACtD,aAAO,EAAE,UAAU,kBAAkB,QAAQ,YAAY;AAAA,IAC3D;AAEA,UAAM,SAAS;AACf,UAAM,WAAW,KAAK,kCAAkC,MAAM;AAC9D,WAAO,EAAE,UAAU,OAAO;AAAA,EAC5B;AAAA,EAEQ,kCAAkC,QAAqD;AAC7F,QAAI,OAAO,OAAO,aAAa,UAAU;AACvC,YAAM,WAAW,OAAO,SAAS,KAAK;AACtC,UAAI,SAAU,QAAO;AAAA,IACvB;AAEA,UAAM,aAAc,OAAoC;AACxD,QAAI,MAAM,QAAQ,UAAU,GAAG;AAC7B,YAAM,YAAY,oBAAI,IAAY;AAClC,iBAAW,YAAY,YAAY;AACjC,YAAI,CAAC,YAAY,OAAO,aAAa,YAAY,MAAM,QAAQ,QAAQ,EAAG;AAC1E,cAAM,mBAAoB,SAAoC;AAC9D,YAAI,OAAO,qBAAqB,YAAY,iBAAiB,KAAK,GAAG;AACnE,oBAAU,IAAI,KAAK,iCAAiC,gBAAgB,CAAC;AAAA,QACvE;AAAA,MACF;AACA,UAAI,UAAU,SAAS,EAAG,QAAO,MAAM,KAAK,SAAS,EAAE,CAAC;AACxD,UAAI,UAAU,OAAO,GAAG;AACtB,cAAM,IAAI,MAAM,6EAA6E;AAAA,MAC/F;AAAA,IACF;AAEA,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAAA,EAEQ,6CACN,oBACA,SACM;AACN,UAAM,aAAc,QAAqC;AACzD,QAAI,CAAC,MAAM,QAAQ,UAAU,EAAG;AAChC,eAAW,YAAY,YAAY;AACjC,UAAI,CAAC,YAAY,OAAO,aAAa,YAAY,MAAM,QAAQ,QAAQ,EAAG;AAC1E,YAAM,mBAAoB,SAAoC;AAC9D,UAAI,oBAAoB,KAAM;AAC9B,UACE,OAAO,qBAAqB,YAC5B,KAAK,iCAAiC,gBAAgB,MAAM,oBAC5D;AACA,cAAM,IAAI,MAAM,oCAAoC,kBAAkB,EAAE;AAAA,MAC1E;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,YAAY,KAAa,MAA6D;AAClG,UAAM,aAAa,IAAI,gBAAgB;AACvC,QAAI,WAAW;AACf,QAAI;AACJ,UAAM,iBAAiB,IAAI,QAAe,CAAC,GAAG,WAAW;AACvD,gBAAU,WAAW,MAAM;AACzB,mBAAW;AACX,mBAAW,MAAM;AACjB,eAAO,IAAI,MAAM,oCAAoC,KAAK,SAAS,IAAI,CAAC;AAAA,MAC1E,GAAG,KAAK,SAAS;AAAA,IACnB,CAAC;AACD,UAAM,iBAAiB,QAAQ,QAAQ,EAAE,KAAK,YAAY;AACxD,YAAM,MAAM,MAAM,KAAK,UAAU,KAAK;AAAA,QACpC,GAAG;AAAA,QACH,UAAU,KAAK;AAAA,QACf,QAAQ,WAAW;AAAA,MACrB,CAAC;AACD,YAAM,OAAO,MAAM,KAAK,SAAS,KAAK,KAAK,gBAAgB,GAAG,CAAC;AAC/D,aAAO,EAAE,KAAK,KAAK;AAAA,IACrB,CAAC;AACD,mBAAe,MAAM,MAAM;AAAA,IAAC,CAAC;AAC7B,QAAI;AACF,aAAO,MAAM,QAAQ,KAAK,CAAC,gBAAgB,cAAc,CAAC;AAAA,IAC5D,SAAS,KAAK;AACZ,UAAI,YAAY,WAAW,OAAO,SAAS;AACzC,cAAM,IAAI,MAAM,oCAAoC,KAAK,SAAS,IAAI;AAAA,MACxE;AACA,YAAM;AAAA,IACR,UAAE;AACA,UAAI,QAAS,cAAa,OAAO;AAAA,IACnC;AAAA,EACF;AAAA,EAEQ,aAAqC;AAC3C,UAAM,UAAkC,EAAE,QAAQ,mBAAmB;AACrE,QAAI,KAAK,QAAQ;AACf,cAAQ,eAAe,IAAI,UAAU,KAAK,MAAM;AAAA,IAClD;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,gBAAgB,KAAqB;AAC3C,QAAI,KAAK,sBAAuB,QAAO,KAAK;AAE5C,UAAM,OAAO,IAAI,IAAI,GAAG,EAAE;AAC1B,QACE,SAAS,0BACT,SAAS,8BACT,SAAS,8BACT,SAAS,kCACT,SAAS,0BACT,SAAS,8BACT,SAAS,wBACT,SAAS,2BACT,SAAS,iCACT,SAAS,kCACT,SAAS,2CACT,SAAS,iBACT,SAAS,4BACT,SAAS,gCACT,SAAS,gCACT,SAAS,+BACT,SAAS,gCACT,SAAS,oCACT,SAAS,4CACR,KAAK,WAAW,uBAAuB,KAAK,KAAK,SAAS,oBAAoB,KAC/E,KAAK,WAAW,wBAAwB,KACxC,KAAK,WAAW,uBAAuB,GACvC;AACA,aAAO;AAAA,IACT;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAc,SAAS,KAAe,cAAuC;AAC3E,UAAM,gBAAgB,IAAI,QAAQ,IAAI,gBAAgB;AACtD,QAAI,eAAe;AACjB,YAAM,gBAAgB,OAAO,aAAa;AAC1C,UAAI,OAAO,SAAS,aAAa,KAAK,gBAAgB,cAAc;AAClE,cAAM,IAAI,MAAM,8BAA8B,YAAY,QAAQ;AAAA,MACpE;AAAA,IACF;AAEA,UAAM,SAAS,IAAI,MAAM,UAAU;AACnC,QAAI,CAAC,QAAQ;AACX,YAAM,OAAO,MAAM,IAAI,KAAK;AAC5B,UAAI,IAAI,YAAY,EAAE,OAAO,IAAI,EAAE,aAAa,cAAc;AAC5D,cAAM,IAAI,MAAM,8BAA8B,YAAY,QAAQ;AAAA,MACpE;AACA,aAAO;AAAA,IACT;AAEA,UAAM,SAAuB,CAAC;AAC9B,QAAI,QAAQ;AACZ,QAAI;AACF,aAAO,MAAM;AACX,cAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAC1C,YAAI,KAAM;AACV,iBAAS,MAAM;AACf,YAAI,QAAQ,cAAc;AACxB,gBAAM,OAAO,OAAO;AACpB,gBAAM,IAAI,MAAM,8BAA8B,YAAY,QAAQ;AAAA,QACpE;AACA,eAAO,KAAK,KAAK;AAAA,MACnB;AAAA,IACF,UAAE;AACA,aAAO,YAAY;AAAA,IACrB;AAEA,UAAM,MAAM,IAAI,WAAW,KAAK;AAChC,QAAI,SAAS;AACb,eAAW,SAAS,QAAQ;AAC1B,UAAI,IAAI,OAAO,MAAM;AACrB,gBAAU,MAAM;AAAA,IAClB;AACA,WAAO,IAAI,YAAY,EAAE,OAAO,GAAG;AAAA,EACrC;AAAA,EAEQ,UAAU,MAAmB;AACnC,QAAI;AACF,aAAO,KAAK,MAAM,IAAI;AAAA,IACxB,QAAQ;AACN,YAAM,IAAI,MAAM,mCAAmC,KAAK,QAAQ,IAAI,CAAC,EAAE;AAAA,IACzE;AAAA,EACF;AAAA,EAEQ,YAA8B,OAAoD;AACxF,QAAI,aAAa,MAAO,QAAO;AAC/B,WAAO,EAAE,GAAG,OAAO,SAAS,CAAC,EAAE;AAAA,EACjC;AAAA,EAEQ,QAAQ,MAAsB;AACpC,WAAO,KACJ,MAAM,GAAG,wBAAwB,EACjC,QAAQ,0BAA0B,QAAM,MAAM,GAAG,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE;AAAA,EACnG;AAAA,EAEQ,YAAY,SAAqD;AACvE,QAAI,CAAC,QAAS,QAAO;AACrB,UAAM,SAAS,IAAI,gBAAgB;AACnC,QAAI,QAAQ,OAAQ,QAAO,IAAI,UAAU,QAAQ,MAAM;AACvD,QAAI,QAAQ,SAAS,KAAM,QAAO,IAAI,SAAS,OAAO,QAAQ,KAAK,CAAC;AACpE,QAAI,QAAQ,UAAU,KAAM,QAAO,IAAI,UAAU,OAAO,QAAQ,MAAM,CAAC;AACvE,QAAI,YAAY,WAAW,QAAQ,OAAQ,QAAO,IAAI,UAAU,QAAQ,MAAM;AAC9E,UAAM,KAAK,OAAO,SAAS;AAC3B,WAAO,KAAK,MAAM,KAAK;AAAA,EACzB;AAAA,EAEQ,aAAa,QAAyB,KAAa,OAA2C;AACpG,QAAI,UAAU,QAAQ,UAAU,OAAQ,QAAO,IAAI,KAAK,MAAM;AAAA,EAChE;AAAA,EAEQ,kBAAkB,QAAyB,KAAa,OAA4C;AAC1G,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,iBAAW,QAAQ,MAAO,QAAO,OAAO,KAAK,IAAI;AAAA,IACnD,WAAW,OAAO;AAChB,aAAO,IAAI,KAAK,KAAK;AAAA,IACvB;AAAA,EACF;AACF;","names":["openFeedStream"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/registry/index.ts"],"sourcesContent":["import type {\n ResolvedBrand,\n BrandHierarchyResolution,\n BrandHierarchyBulkResolution,\n ResolveBrandHierarchyOptions,\n ResolvedProperty,\n PropertyInfo,\n RegistryClientConfig,\n SaveBrandRequest,\n SaveBrandResponse,\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 ClaimHostedPropertyDomainResponse,\n VerifyHostedPropertyOriginResponse,\n BrandRegistryItem,\n PropertyRegistryItem,\n ValidationResult,\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 CommunityMirrorAdagentsConfig,\n CreateCommunityMirrorAdagentsConfig,\n CommunityMirrorAdagentsCatalog,\n PublishCommunityMirrorAdagentsResponse,\n ListCommunityMirrorAdagentsResponse,\n DeleteCommunityMirrorAdagentsResponse,\n ValidateProductAuthorizationRequest,\n ExpandProductIdentifiersRequest,\n PublisherPropertySelector,\n CompanySearchResult,\n FindCompanyResult,\n FeedQuery,\n FeedResponse,\n AgentSearchQuery,\n AgentSearchResponse,\n CrawlRequest,\n CrawlRequestResponse,\n ManagerRevalidationRequest,\n ManagerRevalidationResponse,\n BrandActivity,\n PropertyActivity,\n PolicySummary,\n Policy,\n PolicyHistory,\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 AgentCompliance,\n AgentComplianceDetail,\n StoryboardStatus,\n OperatorLookupResult,\n PublisherLookupResult,\n ComplianceChangedPayload,\n GetAgentStoryboardStatusResponse,\n GetAgentStoryboardStatusBulkResponse,\n} from './types';\n\nimport { openFeedStream } from './feed-stream';\nimport type { FeedStreamQuery, FeedStreamMessage } from './feed-stream';\nimport type { PropertyType } from '../discovery/types';\n\nexport type {\n ResolvedBrand,\n BrandHierarchyResolution,\n BrandHierarchyBulkResolution,\n ResolveBrandHierarchyOptions,\n ResolvedProperty,\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 ClaimHostedPropertyDomainResponse,\n VerifyHostedPropertyOriginResponse,\n BrandRegistryItem,\n PropertyRegistryItem,\n ValidationResult,\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 ValidateProductAuthorizationRequest,\n ExpandProductIdentifiersRequest,\n PublisherPropertySelector,\n CompanySearchResult,\n FindCompanyResult,\n FeedQuery,\n AgentSearchQuery,\n CrawlRequest,\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 AgentComplianceDetail,\n StoryboardStatus,\n OperatorLookupResult,\n PublisherLookupResult,\n ComplianceChangedPayload,\n GetAgentStoryboardStatusResponse,\n GetAgentStoryboardStatusBulkResponse,\n} from './types';\n\n// Re-export all generated types for advanced usage\nexport type {\n paths,\n operations,\n components,\n LocalizedName,\n PropertyIdentifier,\n RegistryError,\n AgentCompliance,\n AgentHealth,\n AgentStats,\n AgentCapabilities,\n PropertySummary,\n CatalogEvent,\n FeedResponse,\n AgentInventoryProfile,\n AgentSearchResult,\n AgentSearchResponse,\n CrawlRequestResponse,\n AuthorizationEntry,\n BrandActivity,\n PropertyActivity,\n PolicySummary,\n Policy,\n PolicyHistory,\n RegistryFeedEvent,\n AgentEventPayload,\n PropertyEventPayload,\n CollectionEventPayload,\n AuthorizationEventPayload,\n PublisherEventPayload,\n BrandEventPayload,\n CatalogBrowseResponse,\n CatalogBrowseEntry,\n CatalogSyncResponse,\n CatalogSyncEntry,\n CommunityMirrorListResponse,\n CommunityMirrorSummary,\n CommunityMirrorGetResponse,\n CommunityMirrorAdagentsJson,\n CommunityMirrorPublishResponse,\n CommunityMirrorPublishError,\n CommunityMirrorPublishRequest,\n CommunityMirrorDeleteResponse,\n} from './types';\n\n// Re-export RegistrySync\nexport { RegistrySync } from './sync';\nexport type {\n RegistrySyncConfig,\n RegistrySyncState,\n RegistrySyncTransport,\n RegistrySyncEvents,\n AgentFilter,\n RegistrySyncProperty,\n} from './sync';\n\n// Re-export the feed SSE transport\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 './feed-stream';\nexport type {\n FeedStreamQuery,\n FeedStreamMessage,\n FeedHeartbeat,\n FeedStreamErrorData,\n OpenFeedStreamOptions,\n} from './feed-stream';\nexport type { FeedFreshness } from './types.generated';\n\n// Re-export CursorStore\nexport { InMemoryCursorStore, FileCursorStore } from './cursor-store';\nexport type { CursorStore } from './cursor-store';\n\n// Re-export PropertyRegistry\nexport { PropertyRegistry } from './property-registry';\nexport type { PropertyRegistryConfig } from './property-registry';\n\nconst DEFAULT_BASE_URL = 'https://agenticadvertising.org';\nconst DEFAULT_TIMEOUT_MS = 10_000;\nconst DEFAULT_MAX_BODY_BYTES = 256 * 1024;\nconst DEFAULT_LARGE_RESPONSE_MAX_BODY_BYTES = 2 * 1024 * 1024;\nconst ERROR_BODY_PREVIEW_CHARS = 200;\nconst MAX_BULK_DOMAINS = 100;\nconst MAX_BRAND_HIERARCHY_CACHE_ENTRIES = 1000;\nconst MAX_CHECK_DOMAINS = 10000; // per OpenAPI spec maxItems\nconst COMMUNITY_MIRROR_PLATFORM_RE = /^[a-z0-9_-]{1,64}$/;\n\n/**\n * Build a catalog-only community mirror adagents.json descriptor.\n *\n * Community mirrors are for format, placement, and property discovery when a\n * platform has not published its own seller-authorized file yet. This helper\n * always emits `authorized_agents: []` and rejects caller-supplied\n * authorization claims so the resulting descriptor cannot accidentally imply\n * platform adoption or seller authorization.\n */\nexport function buildCommunityMirrorAdagents(config: CommunityMirrorAdagentsConfig): CommunityMirrorAdagentsCatalog {\n const maybeConfig = config as CommunityMirrorAdagentsConfig & {\n authorized_agents?: unknown;\n include_schema?: unknown;\n include_timestamp?: unknown;\n platform?: unknown;\n };\n if ('authorized_agents' in maybeConfig) {\n throw new Error('authorized_agents is not accepted for community mirror adagents catalogs');\n }\n if ('include_schema' in maybeConfig || 'include_timestamp' in maybeConfig) {\n throw new Error('include_schema and include_timestamp are not accepted for community mirror adagents catalogs');\n }\n const contentKeys = ['formats', 'properties', 'placements', 'collections', 'signals'] as const;\n const hasCatalogContent = contentKeys.some(key => {\n const value = (config as Record<string, unknown>)[key];\n return Array.isArray(value) && value.length > 0;\n });\n if (!hasCatalogContent) {\n throw new Error('community mirror catalogs require at least one non-empty catalog collection');\n }\n\n const { platform: _platform, ...catalogConfig } = maybeConfig;\n\n return {\n ...catalogConfig,\n authorized_agents: [],\n };\n}\n\n/**\n * Client for the AdCP Registry API.\n *\n * Covers brand resolution, property resolution, agent discovery,\n * authorization lookups, validation tools, and search.\n *\n * @example\n * ```ts\n * const registry = new RegistryClient({ apiKey: 'sk_...' });\n * const brand = await registry.lookupBrand('nike.com');\n * const agents = await registry.listAgents({ type: 'sales' });\n * const results = await registry.search('nike');\n * ```\n */\nexport class RegistryClient {\n private readonly baseUrl: string;\n private readonly apiKey: string | undefined;\n private readonly timeoutMs: number;\n private readonly maxBodyBytes: number;\n private readonly hasCustomMaxBodyBytes: boolean;\n private readonly redirect: 'follow' | 'error';\n private readonly fetchImpl: typeof globalThis.fetch;\n private readonly brandHierarchyCache = new Map<\n string,\n { expiresAt: number; value: BrandHierarchyResolution | null }\n >();\n\n constructor(config?: RegistryClientConfig) {\n this.baseUrl = (config?.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, '');\n this.apiKey = config?.apiKey ?? process.env.ADCP_REGISTRY_API_KEY;\n this.timeoutMs = config?.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n this.maxBodyBytes = config?.maxBodyBytes ?? DEFAULT_MAX_BODY_BYTES;\n this.hasCustomMaxBodyBytes = config?.maxBodyBytes != null;\n this.redirect = config?.redirect ?? 'error';\n this.fetchImpl = config?.fetch ?? globalThis.fetch;\n }\n\n // ====== Brand Resolution ======\n\n /**\n * Resolve a single domain to its canonical brand identity.\n *\n * @remarks\n * Resolved registry data may include `brand_manifest` and `source` fields\n * suitable for downstream request construction. Treat all registry-supplied\n * strings as untrusted input and sanitize before injecting them into LLM\n * prompts, instructions, or tool-planning context.\n */\n async lookupBrand(domain: string): Promise<ResolvedBrand | null> {\n if (!domain?.trim()) throw new Error('domain is required');\n const url = `${this.baseUrl}/api/brands/resolve?domain=${encodeURIComponent(domain)}`;\n return this.get(url, { nullOn404: true });\n }\n\n /** Search for companies by name or keyword, resolving colloquial names to canonical brand forms. */\n async findCompany(query: string, options?: { limit?: number }): Promise<FindCompanyResult> {\n if (!query?.trim()) throw new Error('query is required');\n let url = `${this.baseUrl}/api/brands/find?q=${encodeURIComponent(query)}`;\n if (options?.limit != null) url += `&limit=${options.limit}`;\n return this.get(url);\n }\n\n /** Bulk resolve domains to their canonical brand identities (max 100). */\n async lookupBrands(domains: string[]): Promise<Record<string, ResolvedBrand | null>> {\n if (domains.length === 0) return {};\n if (domains.length > MAX_BULK_DOMAINS) {\n throw new Error(`Cannot resolve more than ${MAX_BULK_DOMAINS} domains at once (got ${domains.length})`);\n }\n const data = await this.post(`${this.baseUrl}/api/brands/resolve/bulk`, { domains });\n return data.results;\n }\n\n /**\n * Resolve a domain to its ordered corporate brand hierarchy.\n *\n * The returned `chain` is ordered from the resolved brand itself through each\n * parent to the house brand. A 404 from the registry returns `null`.\n */\n async resolveBrandHierarchy(\n domain: string,\n options?: ResolveBrandHierarchyOptions\n ): Promise<BrandHierarchyResolution | null> {\n const normalizedDomain = this.normalizeBrandHierarchyDomain(domain);\n const ttlMs = this.resolveBrandHierarchyCacheTtlMs(options);\n const cacheKey = this.brandHierarchyCacheKey(normalizedDomain);\n const cached = this.getCachedBrandHierarchy(cacheKey, options, ttlMs);\n if (cached !== undefined) return cached;\n\n const params = new URLSearchParams({ domain: normalizedDomain });\n if (options?.fresh) params.set('fresh', 'true');\n const value = await this.get<BrandHierarchyResolution | null>(`${this.baseUrl}/api/brands/hierarchy?${params}`, {\n nullOn404: true,\n });\n this.setCachedBrandHierarchy(cacheKey, value, options, ttlMs);\n return this.cloneBrandHierarchy(value);\n }\n\n /**\n * Resolve up to 100 domains to ordered corporate brand hierarchies.\n *\n * Results are keyed by the caller-supplied domain. Unknown domains map to\n * `null`, matching `lookupBrands()`.\n */\n async resolveBrandHierarchies(\n domains: string[],\n options?: ResolveBrandHierarchyOptions\n ): Promise<Record<string, BrandHierarchyResolution | null>> {\n if (domains.length === 0) return {};\n if (domains.length > MAX_BULK_DOMAINS) {\n throw new Error(`Cannot resolve more than ${MAX_BULK_DOMAINS} domains at once (got ${domains.length})`);\n }\n const normalizedDomains = domains.map(domain => this.normalizeBrandHierarchyDomain(domain));\n const ttlMs = this.resolveBrandHierarchyCacheTtlMs(options);\n\n const results: Record<string, BrandHierarchyResolution | null> = Object.create(null);\n const unresolved: string[] = [];\n const unresolvedInputsByKey = new Map<string, string[]>();\n\n for (let i = 0; i < domains.length; i++) {\n const domain = domains[i]!;\n const normalizedDomain = normalizedDomains[i]!;\n const cacheKey = this.brandHierarchyCacheKey(normalizedDomain);\n const cached = this.getCachedBrandHierarchy(cacheKey, options, ttlMs);\n if (cached !== undefined) {\n results[domain] = cached;\n continue;\n }\n const inputs = unresolvedInputsByKey.get(cacheKey);\n if (inputs) {\n inputs.push(domain);\n } else {\n unresolved.push(normalizedDomain);\n unresolvedInputsByKey.set(cacheKey, [domain]);\n }\n }\n\n if (unresolved.length > 0) {\n const body: { domains: string[]; fresh?: boolean } = { domains: unresolved };\n if (options?.fresh) body.fresh = true;\n const data = await this.post<BrandHierarchyBulkResolution>(`${this.baseUrl}/api/brands/hierarchy/bulk`, body);\n if (!data || typeof data !== 'object' || !data.results || typeof data.results !== 'object') {\n throw new Error('Registry hierarchy bulk response missing results');\n }\n const matchedKeys = new Set<string>();\n for (const [domain, value] of Object.entries(data.results)) {\n const cacheKey = this.brandHierarchyCacheKey(domain);\n const inputs = unresolvedInputsByKey.get(cacheKey);\n if (!inputs) continue;\n matchedKeys.add(cacheKey);\n for (const input of inputs) {\n results[input] = this.cloneBrandHierarchy(value);\n }\n this.setCachedBrandHierarchy(cacheKey, value, options, ttlMs);\n }\n for (const [cacheKey, inputs] of unresolvedInputsByKey.entries()) {\n if (matchedKeys.has(cacheKey)) continue;\n throw new Error(`Registry hierarchy bulk response missing result for ${inputs[0]}`);\n }\n }\n\n return results;\n }\n\n /** List brands in the registry with optional search and pagination. */\n async listBrands(options?: ListBrandsOptions): Promise<ListBrandsResponse> {\n const params = this.buildParams(options);\n return this.get(`${this.baseUrl}/api/brands/registry${params}`);\n }\n\n /**\n * Fetch raw brand.json data for a domain.\n *\n * @remarks\n * This returns registry-supplied manifest content. Sanitize strings before\n * using them in LLM prompts, instructions, or other executable context.\n */\n async getBrandJson(domain: string): Promise<GetBrandJsonResponse | null> {\n if (!domain?.trim()) throw new Error('domain is required');\n const url = `${this.baseUrl}/api/brands/brand-json?domain=${encodeURIComponent(domain)}`;\n return this.get(url, { nullOn404: true });\n }\n\n /** Enrich a brand with Brandfetch data. */\n async enrichBrand(domain: string): Promise<Record<string, unknown>> {\n if (!domain?.trim()) throw new Error('domain is required');\n return this.get(`${this.baseUrl}/api/brands/enrich?domain=${encodeURIComponent(domain)}`);\n }\n\n /**\n * List AAO brand logo assets for a domain, optionally filtered by tags.\n *\n * @remarks\n * Passing a raw `string[]` as the second argument is deprecated; pass\n * `{ tags }` instead.\n */\n async listBrandLogos(domain: string, options?: ListBrandLogosOptions | string[]): Promise<ListBrandLogosResponse> {\n if (!domain?.trim()) throw new Error('domain is required');\n const params = new URLSearchParams();\n const tags = Array.isArray(options) ? options : options?.tags;\n if (tags?.length) params.set('tags', tags.join(','));\n const qs = params.toString();\n const response = await this.get<Record<string, unknown>>(\n `${this.baseUrl}/api/brands/${encodeURIComponent(domain)}/logos${qs ? `?${qs}` : ''}`\n );\n return this.normalizeBrandLogoList(response);\n }\n\n /** Save an AAO brand logo asset for review. Requires authentication. */\n async saveBrandLogo(input: SaveBrandLogoInput): Promise<SaveBrandLogoResponse> {\n if (!input?.domain?.trim()) throw new Error('domain is required');\n if (!input?.filename?.trim()) throw new Error('filename is required');\n if (!input?.mimeType?.trim()) throw new Error('mimeType is required');\n if (input.data == null) throw new Error('data is required');\n if (!input.tags?.length) throw new Error('tags are required');\n if (!this.apiKey) throw new Error('apiKey is required for save operations');\n\n const form = new FormData();\n form.append('file', this.toBrandLogoBlob(input.data, input.mimeType), input.filename);\n if (input.note) form.append('note', input.note);\n form.append('tags', input.tags.join(','));\n\n return this.postFormData(`${this.baseUrl}/api/brands/${encodeURIComponent(input.domain)}/logos`, form);\n }\n\n /** @deprecated Use `saveBrandLogo()`. */\n async uploadBrandLogo(input: UploadBrandLogoInput): Promise<UploadBrandLogoResponse> {\n return this.saveBrandLogo(input);\n }\n\n /** Save or update a community brand. Requires authentication. */\n async saveBrand(brand: SaveBrandRequest): Promise<SaveBrandResponse> {\n if (!brand?.domain?.trim()) throw new Error('domain is required');\n if (!brand?.brand_name?.trim()) throw new Error('brand_name is required');\n if (!this.apiKey) throw new Error('apiKey is required for save operations');\n return this.post(`${this.baseUrl}/api/brands/save`, brand);\n }\n\n // ====== Property Resolution ======\n\n /** Resolve a single domain to its property information. */\n async lookupProperty(domain: string): Promise<ResolvedProperty | null> {\n if (!domain?.trim()) throw new Error('domain is required');\n const url = `${this.baseUrl}/api/properties/resolve?domain=${encodeURIComponent(domain)}`;\n return this.get(url, { nullOn404: true });\n }\n\n /** Bulk resolve domains to their property information (max 100). */\n async lookupProperties(domains: string[]): Promise<Record<string, ResolvedProperty | null>> {\n if (domains.length === 0) return {};\n if (domains.length > MAX_BULK_DOMAINS) {\n throw new Error(`Cannot resolve more than ${MAX_BULK_DOMAINS} domains at once (got ${domains.length})`);\n }\n const data = await this.post(`${this.baseUrl}/api/properties/resolve/bulk`, { domains });\n return data.results;\n }\n\n /**\n * Bulk resolve any number of domains to property information.\n * Automatically paginates in batches of 100, running up to `concurrency`\n * batches in parallel (default 5).\n */\n async lookupPropertiesAll(\n domains: string[],\n options?: { concurrency?: number }\n ): Promise<Record<string, ResolvedProperty | null>> {\n const unique = [...new Set(domains)];\n const concurrency = options?.concurrency ?? 5;\n const batches: string[][] = [];\n for (let i = 0; i < unique.length; i += MAX_BULK_DOMAINS) {\n batches.push(unique.slice(i, i + MAX_BULK_DOMAINS));\n }\n const results: Record<string, ResolvedProperty | null> = {};\n for (let i = 0; i < batches.length; i += concurrency) {\n const chunk = batches.slice(i, i + concurrency);\n const settled = await Promise.all(chunk.map(b => this.lookupProperties(b)));\n for (const r of settled) Object.assign(results, r);\n }\n return results;\n }\n\n /**\n * Check which domains exist in the registry.\n * Convenience wrapper over lookupPropertiesAll that returns a simple boolean map.\n * Use this for existence checks; use lookupPropertiesAll when you need the full property data.\n */\n async domainsExist(domains: string[], options?: { concurrency?: number }): Promise<Record<string, boolean>> {\n const results = await this.lookupPropertiesAll(domains, options);\n const exists: Record<string, boolean> = {};\n for (const [domain, resolved] of Object.entries(results)) {\n exists[domain] = resolved != null;\n }\n return exists;\n }\n\n /** List properties in the registry with optional search and pagination. */\n async listProperties(\n options?: ListOptions\n ): Promise<{ properties: PropertyRegistryItem[]; stats: Record<string, unknown> }> {\n const params = this.buildParams(options);\n return this.get(`${this.baseUrl}/api/properties/registry${params}`);\n }\n\n /** Validate a domain's adagents.json file. */\n async validateProperty(domain: string): Promise<ValidationResult> {\n if (!domain?.trim()) throw new Error('domain is required');\n return this.get(`${this.baseUrl}/api/properties/validate?domain=${encodeURIComponent(domain)}`);\n }\n\n /** Save or update a hosted property. Requires authentication. */\n async saveProperty(property: SavePropertyRequest): Promise<SavePropertyResponse> {\n if (!property?.publisher_domain?.trim()) throw new Error('publisher_domain is required');\n if (!this.apiKey) throw new Error('apiKey is required for save operations');\n const payload = this.normalizeSavePropertyRequest(property);\n return this.post(`${this.baseUrl}/api/properties/save`, payload);\n }\n\n /**\n * Issue a hosted-property domain claim for bind-on-verify.\n *\n * The registry returns a claim-specific `authoritative_location` URL for the\n * publisher to place at its origin `/.well-known/adagents.json`.\n */\n async claimHostedPropertyDomain(domain: string): Promise<ClaimHostedPropertyDomainResponse> {\n if (!domain?.trim()) throw new Error('domain is required');\n if (!this.apiKey) throw new Error('apiKey is required for hosted property claims');\n return this.post(`${this.baseUrl}/api/properties/hosted/${encodeURIComponent(domain.trim())}/claim`, undefined);\n }\n\n /** Trigger origin verification for an AAO-hosted publisher domain. */\n async verifyHostedPropertyOrigin(domain: string): Promise<VerifyHostedPropertyOriginResponse> {\n if (!domain?.trim()) throw new Error('domain is required');\n if (!this.apiKey) throw new Error('apiKey is required for hosted property verification');\n return this.post(\n `${this.baseUrl}/api/properties/hosted/${encodeURIComponent(domain.trim())}/verify-origin`,\n undefined\n );\n }\n\n /**\n * Save or update multiple hosted properties.\n * Client-side fan-out over saveProperty with configurable concurrency.\n * Returns results keyed by publisher_domain; failed saves include an error message.\n */\n async saveProperties(\n properties: SavePropertyRequest[],\n options?: { concurrency?: number }\n ): Promise<Record<string, SavePropertyResponse | { error: string }>> {\n const concurrency = options?.concurrency ?? 5;\n const results: Record<string, SavePropertyResponse | { error: string }> = {};\n for (let i = 0; i < properties.length; i += concurrency) {\n const batch = properties.slice(i, i + concurrency);\n const settled = await Promise.allSettled(batch.map(p => this.saveProperty(p)));\n for (let j = 0; j < batch.length; j++) {\n const domain = batch[j]!.publisher_domain;\n const s = settled[j]!;\n results[domain] = s.status === 'fulfilled' ? s.value : { error: String(s.reason) };\n }\n }\n return results;\n }\n\n /**\n * Resolve catalog identifiers to stable property_rids.\n * In default `resolve` mode the registry also records a provenance-backed\n * contribution; `lookup` mode is read-only.\n */\n async resolveIdentifiers(request: ResolveIdentifiersRequest): Promise<ResolveIdentifiersResponse> {\n if (!request?.identifiers?.length) throw new Error('identifiers are required');\n if ((request.mode ?? 'resolve') !== 'lookup' && !this.apiKey) {\n throw new Error('apiKey is required for resolveIdentifiers in resolve mode');\n }\n return this.post(`${this.baseUrl}/api/registry/resolve`, request);\n }\n\n /** File a catalog fact dispute. Requires authentication. */\n async fileCatalogDispute(request: FileCatalogDisputeRequest): Promise<FileCatalogDisputeResponse> {\n if (!request?.subject_type?.trim()) throw new Error('subject_type is required');\n if (!request?.subject_value?.trim()) throw new Error('subject_value is required');\n if (!request?.claim?.trim()) throw new Error('claim is required');\n if (!this.apiKey) throw new Error('apiKey is required for catalog disputes');\n return this.post(`${this.baseUrl}/api/registry/catalog/disputes`, request);\n }\n\n /** Fetch a catalog dispute by id. */\n async getCatalogDispute(id: string): Promise<GetCatalogDisputeResponse | null> {\n if (!id?.trim()) throw new Error('id is required');\n return this.get(`${this.baseUrl}/api/registry/catalog/disputes/${encodeURIComponent(id.trim())}`, {\n nullOn404: true,\n });\n }\n\n // ====== Agent Discovery ======\n\n /** List registered agents with optional filtering. */\n async listAgents(options?: ListAgentsOptions): Promise<ListAgentsResponse> {\n const params = new URLSearchParams();\n if (options?.type) params.set('type', options.type);\n this.setTrueParam(params, 'health', options?.health);\n this.setTrueParam(params, 'capabilities', options?.capabilities);\n this.setTrueParam(params, 'properties', options?.properties);\n this.setTrueParam(params, 'compliance', options?.compliance);\n this.appendParamValues(params, 'metric_id', options?.metric_id);\n this.appendParamValues(params, 'accreditation', options?.accreditation);\n if (options?.q) params.set('q', options.q);\n this.appendParamValues(params, 'verification_mode', options?.verification_mode);\n this.setTrueParam(params, 'verified', options?.verified);\n const qs = params.toString();\n return this.withSources(await this.get(`${this.baseUrl}/api/registry/agents${qs ? '?' + qs : ''}`));\n }\n\n /** List publishers in the registry. */\n async listPublishers(): Promise<ListPublishersResponse> {\n return this.withSources(await this.get(`${this.baseUrl}/api/registry/publishers`));\n }\n\n /** Get aggregate registry statistics. */\n async getRegistryStats(): Promise<Record<string, unknown>> {\n return this.get(`${this.baseUrl}/api/registry/stats`);\n }\n\n // ====== Compliance ======\n\n /** Get compliance status for an agent, including storyboard pass/fail counts. Returns null if agent not found. */\n async getAgentCompliance(agentUrl: string): Promise<AgentComplianceDetail | null> {\n if (!agentUrl?.trim()) throw new Error('agentUrl is required');\n return this.get(`${this.baseUrl}/api/registry/agents/${encodeURIComponent(agentUrl)}/compliance`, {\n nullOn404: true,\n });\n }\n\n /** Get per-storyboard compliance detail for an agent. Requires authentication. */\n async getAgentStoryboardStatus(agentUrl: string): Promise<GetAgentStoryboardStatusResponse> {\n if (!agentUrl?.trim()) throw new Error('agentUrl is required');\n if (!this.apiKey) throw new Error('apiKey is required for storyboard status');\n return this.get(`${this.baseUrl}/api/registry/agents/${encodeURIComponent(agentUrl)}/storyboard-status`);\n }\n\n /** Bulk query storyboard status for up to 100 agents. Requires authentication. */\n async getAgentStoryboardStatusBulk(agentUrls: string[]): Promise<GetAgentStoryboardStatusBulkResponse> {\n if (!agentUrls?.length) throw new Error('agentUrls is required');\n const unique = [...new Set(agentUrls.map(u => u?.trim()).filter(Boolean))];\n if (unique.length === 0) throw new Error('agentUrls contains no valid entries');\n if (unique.length > MAX_BULK_DOMAINS) {\n throw new Error(`Cannot query more than ${MAX_BULK_DOMAINS} agents at once (got ${unique.length})`);\n }\n if (!this.apiKey) throw new Error('apiKey is required for storyboard status');\n return this.post(`${this.baseUrl}/api/registry/agents/storyboard-status`, { agent_urls: unique });\n }\n\n // ====== Operator & Publisher Lookups ======\n\n /**\n * Look up which agents a domain operates and which publishers trust them.\n * Returns null if not found.\n *\n * The optional `scope` argument names a single agent-visibility bucket and\n * acts as a narrowing filter over the caller's auth — it can never widen\n * the view beyond what the caller's tier would otherwise return.\n *\n * - `'public'` — only `visibility=public`. Anonymous-equivalent view; useful\n * for pre-sign-in pickers driven by an admin-tier API key whose only\n * purpose is rate-limit + audit attribution.\n * - `'member'` — public + `members_only`. `members_only` requires API tier;\n * anonymous / explorer-tier callers silently fall through to public-only\n * (no 403).\n * - `'private'` — only `visibility=private`. Profile-owner only; non-owners\n * get an empty agents array rather than 403. An empty result with this\n * scope means *either* \"you are the owner and have no drafts\" *or* \"you\n * are not the owner\" — the SDK can't tell them apart, only the caller can.\n * - omitted / `'all'` — tier-aware union (public + members_only when\n * authorized + owner's private). Preserves historical behavior.\n *\n * Older AAO servers that predate this enum silently ignore unknown `?scope=`\n * values and return the tier-aware union; the filter is server-enforced.\n *\n * @see https://github.com/adcontextprotocol/adcp/pull/4581\n */\n async lookupOperator(\n domain: string,\n opts?: { scope?: 'public' | 'member' | 'private' | 'all' }\n ): Promise<OperatorLookupResult | null> {\n if (!domain?.trim()) throw new Error('domain is required');\n const params = new URLSearchParams({ domain });\n if (opts?.scope && opts.scope !== 'all') params.set('scope', opts.scope);\n return this.get(`${this.baseUrl}/api/registry/operator?${params.toString()}`, { nullOn404: true });\n }\n\n /**\n * Look up the inventory a domain publishes and which agents it authorizes.\n * Returns null if not found.\n *\n * Unlike `lookupOperator`, this endpoint has no visibility-tier semantics;\n * there is no `scope` filter.\n */\n async lookupPublisher(domain: string): Promise<PublisherLookupResult | null> {\n if (!domain?.trim()) throw new Error('domain is required');\n return this.get(`${this.baseUrl}/api/registry/publisher?domain=${encodeURIComponent(domain)}`, {\n nullOn404: true,\n });\n }\n\n // ====== Authorization Lookups ======\n\n /**\n * Look up which agents are authorized for a domain.\n * Returns agent authorization data (authorized_agents, sales_agents_claiming).\n * To check if a domain exists in the registry, use lookupProperty() or domainsExist() instead.\n */\n async lookupDomain(domain: string): Promise<DomainLookupResult> {\n if (!domain?.trim()) throw new Error('domain is required');\n return this.get(`${this.baseUrl}/api/registry/lookup/domain/${encodeURIComponent(domain)}`);\n }\n\n /**\n * Look up agents authorized for multiple domains.\n * Client-side fan-out over lookupDomain (no server bulk endpoint yet).\n * Domains that fail individually are omitted from the result.\n */\n async lookupDomains(\n domains: string[],\n options?: { concurrency?: number }\n ): Promise<Record<string, DomainLookupResult>> {\n const unique = [...new Set(domains)];\n const concurrency = options?.concurrency ?? 10;\n const results: Record<string, DomainLookupResult> = {};\n for (let i = 0; i < unique.length; i += concurrency) {\n const batch = unique.slice(i, i + concurrency);\n const settled = await Promise.allSettled(batch.map(d => this.lookupDomain(d)));\n for (let j = 0; j < batch.length; j++) {\n const s = settled[j]!;\n if (s.status === 'fulfilled') results[batch[j]!] = s.value;\n }\n }\n return results;\n }\n\n /**\n * Look up agents authorized for multiple property identifiers.\n * Client-side fan-out over lookupPropertyByIdentifier.\n * Identifiers that fail individually are omitted from the result.\n */\n async lookupPropertyIdentifiers(\n identifiers: { type: string; value: string }[],\n options?: { concurrency?: number }\n ): Promise<Record<string, Record<string, unknown>>> {\n const concurrency = options?.concurrency ?? 10;\n // Deduplicate by \"type:value\" key\n const seen = new Set<string>();\n const unique: { type: string; value: string }[] = [];\n for (const id of identifiers) {\n const key = `${id.type}:${id.value}`;\n if (!seen.has(key)) {\n seen.add(key);\n unique.push(id);\n }\n }\n const results: Record<string, Record<string, unknown>> = {};\n for (let i = 0; i < unique.length; i += concurrency) {\n const batch = unique.slice(i, i + concurrency);\n const settled = await Promise.allSettled(batch.map(id => this.lookupPropertyByIdentifier(id.type, id.value)));\n for (let j = 0; j < batch.length; j++) {\n const s = settled[j]!;\n const key = `${batch[j]!.type}:${batch[j]!.value}`;\n if (s.status === 'fulfilled') results[key] = s.value;\n }\n }\n return results;\n }\n\n /** Look up agents by property identifier (type + value). */\n async lookupPropertyByIdentifier(type: string, value: string): Promise<Record<string, unknown>> {\n if (!type?.trim()) throw new Error('type is required');\n if (!value?.trim()) throw new Error('value is required');\n const params = `?type=${encodeURIComponent(type)}&value=${encodeURIComponent(value)}`;\n return this.get(`${this.baseUrl}/api/registry/lookup/property${params}`);\n }\n\n /** Get domains associated with an agent. */\n async getAgentDomains(agentUrl: string): Promise<{ agent_url: string; domains: string[]; count: number }> {\n if (!agentUrl?.trim()) throw new Error('agentUrl is required');\n return this.get(`${this.baseUrl}/api/registry/lookup/agent/${encodeURIComponent(agentUrl)}/domains`);\n }\n\n /** Check if an agent is authorized for a specific property identifier. */\n async validatePropertyAuthorization(\n agentUrl: string,\n identifierType: string,\n identifierValue: string\n ): Promise<{\n agent_url: string;\n identifier_type: string;\n identifier_value: string;\n authorized: boolean;\n checked_at: string;\n }> {\n if (!agentUrl?.trim()) throw new Error('agentUrl is required');\n const params = new URLSearchParams({\n agent_url: agentUrl,\n identifier_type: identifierType,\n identifier_value: identifierValue,\n });\n return this.get(`${this.baseUrl}/api/registry/validate/property-authorization?${params}`);\n }\n\n /** Validate product authorization for an agent across publisher properties. */\n async validateProductAuthorization(\n agentUrl: string,\n publisherProperties: PublisherPropertySelector[]\n ): Promise<Record<string, unknown>> {\n return this.post(`${this.baseUrl}/api/registry/validate/product-authorization`, {\n agent_url: agentUrl,\n publisher_properties: publisherProperties,\n });\n }\n\n /** Expand product identifiers for an agent across publisher properties. */\n async expandProductIdentifiers(\n agentUrl: string,\n publisherProperties: PublisherPropertySelector[]\n ): Promise<Record<string, unknown>> {\n return this.post(`${this.baseUrl}/api/registry/expand/product-identifiers`, {\n agent_url: agentUrl,\n publisher_properties: publisherProperties,\n });\n }\n\n // ====== Property List Checking ======\n\n /**\n * Check a list of publisher domains against the AAO registry.\n *\n * Normalizes domains (strips www/m prefixes), removes duplicates, flags known ad tech\n * infrastructure, and identifies domains not yet in the registry. Returns four buckets:\n * - `remove`: duplicates or known blocked domains (ad servers, CDNs, trackers)\n * - `modify`: domains that were normalized (e.g. www.example.com → example.com)\n * - `assess`: unknown domains not in registry, not blocked\n * - `ok`: domains found in registry with no changes needed\n *\n * Results are stored for 7 days and retrievable via the `report_id`.\n *\n * For domains in the `modify` bucket, use the `canonical` value (not the original `input`)\n * for subsequent lookupProperties/lookupDomain calls.\n */\n async checkPropertyList(domains: string[]): Promise<{\n summary: { total: number; remove: number; modify: number; assess: number; ok: number };\n remove: Array<{\n input: string;\n canonical: string;\n reason: 'duplicate' | 'blocked';\n domain_type?: string;\n blocked_reason?: string;\n }>;\n modify: Array<{ input: string; canonical: string; reason: string }>;\n assess: Array<{ domain: string }>;\n ok: Array<{ domain: string; source: string }>;\n report_id: string;\n }> {\n if (!domains?.length) throw new Error('domains is required');\n if (domains.length > MAX_CHECK_DOMAINS) {\n throw new Error(`Cannot check more than ${MAX_CHECK_DOMAINS} domains at once (got ${domains.length})`);\n }\n return this.post(`${this.baseUrl}/api/properties/check`, { domains });\n }\n\n /**\n * Retrieve a previously stored property check report by ID.\n * Reports expire after 7 days.\n *\n * Note: the report endpoint only returns the summary counts, not the full per-domain\n * buckets. Use checkPropertyList to get the full detail (stored for 7 days via report_id).\n */\n async getPropertyCheckReport(reportId: string): Promise<{\n summary: { total: number; remove: number; modify: number; assess: number; ok: number };\n }> {\n if (!reportId?.trim()) throw new Error('reportId is required');\n return this.get(`${this.baseUrl}/api/properties/check/${encodeURIComponent(reportId)}`);\n }\n\n // ====== Adagents Tooling ======\n\n /** Validate a domain's adagents.json compliance. */\n async validateAdagents(domain: string): Promise<ValidateAdagentsResponse> {\n if (!domain?.trim()) throw new Error('domain is required');\n return this.post(`${this.baseUrl}/api/adagents/validate`, { domain });\n }\n\n /**\n * Generate a valid adagents.json from an agent or catalog configuration.\n *\n * @remarks\n * Treat this as a build-time, cache-fill, or write-through operation for\n * public `.well-known/adagents.json` routes. Public routes should serve the\n * generated JSON from static storage or an application cache instead of\n * making a live registry dependency part of every request.\n *\n * In community mirror catalog files, `v1_format_ref[].agent_url` is a\n * format-shape namespace. It is not a seller authorization claim and does\n * not imply platform adoption. Seller authorization is expressed only by\n * `authorized_agents`.\n */\n async createAdagents(config: CreateAdagentsRequest): Promise<CreateAdagentsResponse> {\n return this.post(`${this.baseUrl}/api/adagents/create`, config);\n }\n\n /**\n * Build and submit a catalog-only community mirror adagents.json descriptor.\n *\n * This uses the registry generator endpoint and does not persist a mirror.\n * It emits `authorized_agents: []` and refuses caller-supplied authorization\n * entries; use `publishCommunityMirrorAdagents(platform, config)` or\n * `upsertCommunityMirrorAdagents(...)` to publish or update a hosted\n * community mirror catalog.\n */\n async createCommunityMirrorAdagents(config: CommunityMirrorAdagentsConfig): Promise<CreateAdagentsResponse> {\n return this.createAdagents(buildCommunityMirrorAdagents(config));\n }\n\n /**\n * Alias for `createCommunityMirrorAdagents()` that makes the generator-only\n * behavior explicit at call sites.\n */\n async previewCommunityMirrorAdagents(config: CommunityMirrorAdagentsConfig): Promise<CreateAdagentsResponse> {\n return this.createCommunityMirrorAdagents(config);\n }\n\n /**\n * Publish or update a catalog-only community mirror adagents.json descriptor\n * using a stable platform key from the first argument, `config.platform`, or a\n * single consistent `properties[].platform` value.\n */\n async upsertCommunityMirrorAdagents(\n config: CreateCommunityMirrorAdagentsConfig\n ): Promise<PublishCommunityMirrorAdagentsResponse>;\n async upsertCommunityMirrorAdagents(\n platform: string,\n config: CommunityMirrorAdagentsConfig\n ): Promise<PublishCommunityMirrorAdagentsResponse>;\n async upsertCommunityMirrorAdagents(\n platformOrConfig: string | CreateCommunityMirrorAdagentsConfig,\n maybeConfig?: CommunityMirrorAdagentsConfig\n ): Promise<PublishCommunityMirrorAdagentsResponse> {\n const { platform, config } = this.resolveCommunityMirrorPublishArgs(platformOrConfig, maybeConfig);\n return this.publishCommunityMirrorAdagents(platform, config);\n }\n\n /**\n * Publish or update a catalog-only community mirror adagents.json descriptor.\n *\n * This persists the mirror under `/api/registry/mirrors/:platform`. Use\n * `previewCommunityMirrorAdagents()` when you only need to validate or\n * preview the generated document without saving it. Use\n * `upsertCommunityMirrorAdagents(...)` when you want the client to infer the\n * platform key from config.\n *\n * @remarks\n * Catalog content may include registry-supplied strings. Treat them as\n * untrusted before injecting them into LLM prompts or executable context.\n */\n async publishCommunityMirrorAdagents(\n platform: string,\n config: CommunityMirrorAdagentsConfig\n ): Promise<PublishCommunityMirrorAdagentsResponse> {\n const normalizedPlatform = this.normalizeCommunityMirrorPlatform(platform);\n if (!this.apiKey) throw new Error('apiKey is required for save operations');\n const catalog = buildCommunityMirrorAdagents(config);\n this.assertCommunityMirrorPropertiesMatchPlatform(normalizedPlatform, catalog);\n return this.put(`${this.baseUrl}/api/registry/mirrors/${encodeURIComponent(normalizedPlatform)}`, catalog);\n }\n\n /**\n * Retrieve a published catalog-only community mirror adagents.json descriptor.\n *\n * @remarks\n * Registry responses may include arbitrary catalog strings. Treat them as\n * untrusted before injecting them into LLM prompts or executable context.\n * When the registry wrapper carries `superseded_by` and the inner catalog\n * omits it, this method hydrates `catalog.superseded_by` from the wrapper.\n */\n async getCommunityMirrorAdagents(platform: string): Promise<CommunityMirrorAdagentsCatalog | null> {\n const normalizedPlatform = this.normalizeCommunityMirrorPlatform(platform);\n const response = await this.get<{\n platform?: unknown;\n superseded_by?: unknown;\n adagents_json?: unknown;\n }>(`${this.baseUrl}/api/registry/mirrors/${encodeURIComponent(normalizedPlatform)}`, { nullOn404: true });\n if (!response) return null;\n if (response.platform !== undefined && response.platform !== normalizedPlatform) {\n throw new Error('Registry returned mismatched community mirror platform');\n }\n const catalog = response.adagents_json;\n if (!catalog || typeof catalog !== 'object' || Array.isArray(catalog)) {\n throw new Error('Registry returned invalid community mirror catalog');\n }\n const typedCatalog = catalog as CommunityMirrorAdagentsCatalog & { authorized_agents?: unknown };\n if (!Array.isArray(typedCatalog.authorized_agents) || typedCatalog.authorized_agents.length !== 0) {\n throw new Error('Registry returned invalid community mirror catalog');\n }\n if (response.superseded_by != null && typeof response.superseded_by !== 'string') {\n throw new Error('Registry returned invalid community mirror catalog');\n }\n return response.superseded_by && !typedCatalog.superseded_by\n ? { ...typedCatalog, superseded_by: response.superseded_by }\n : typedCatalog;\n }\n\n /**\n * List published community mirror catalogs with their current etags.\n *\n * @remarks\n * Registry responses may include arbitrary catalog strings. Treat them as\n * untrusted before injecting them into LLM prompts or executable context.\n */\n async listCommunityMirrorAdagents(options?: {\n limit?: number;\n offset?: number;\n }): Promise<ListCommunityMirrorAdagentsResponse> {\n const params = new URLSearchParams();\n if (options?.limit != null) params.set('limit', String(options.limit));\n if (options?.offset != null) params.set('offset', String(options.offset));\n const qs = params.toString();\n return this.get(`${this.baseUrl}/api/registry/mirrors${qs ? `?${qs}` : ''}`);\n }\n\n /**\n * Delete a published community mirror and retire its derived catalog rows.\n *\n * By default, the registry refuses to delete mirrors without a\n * `superseded_by` successor URL. Pass `force: true` only for moderator\n * cleanup where no migration URL exists.\n */\n async deleteCommunityMirrorAdagents(\n platform: string,\n options?: { force?: boolean }\n ): Promise<DeleteCommunityMirrorAdagentsResponse> {\n const normalizedPlatform = this.normalizeCommunityMirrorPlatform(platform);\n if (!this.apiKey) throw new Error('apiKey is required for save operations');\n const params = new URLSearchParams();\n if (options?.force) params.set('force', 'true');\n const qs = params.toString();\n return this.deleteRequest(\n `${this.baseUrl}/api/registry/mirrors/${encodeURIComponent(normalizedPlatform)}${qs ? `?${qs}` : ''}`\n );\n }\n\n // ====== Search & Discovery ======\n\n /** Search brands, publishers, and properties. */\n async search(query: string): Promise<{ brands: unknown[]; publishers: unknown[]; properties: unknown[] }> {\n if (!query?.trim()) throw new Error('query is required');\n return this.get(`${this.baseUrl}/api/search?q=${encodeURIComponent(query)}`);\n }\n\n /** Look up a manifest reference by domain. */\n async lookupManifestRef(domain: string, type?: string): Promise<Record<string, unknown>> {\n if (!domain?.trim()) throw new Error('domain is required');\n const params = new URLSearchParams({ domain });\n if (type) params.set('type', type);\n return this.get(`${this.baseUrl}/api/manifest-refs/lookup?${params}`);\n }\n\n /** Probe a live agent endpoint to discover its capabilities. */\n async discoverAgent(url: string): Promise<Record<string, unknown>> {\n if (!url?.trim()) throw new Error('url is required');\n return this.get(`${this.baseUrl}/api/public/discover-agent?url=${encodeURIComponent(url)}`);\n }\n\n /** Get creative formats supported by an agent. */\n async getAgentFormats(url: string): Promise<Record<string, unknown>> {\n if (!url?.trim()) throw new Error('url is required');\n return this.get(`${this.baseUrl}/api/public/agent-formats?url=${encodeURIComponent(url)}`);\n }\n\n /** Get products available from an agent. */\n async getAgentProducts(url: string): Promise<Record<string, unknown>> {\n if (!url?.trim()) throw new Error('url is required');\n return this.get(`${this.baseUrl}/api/public/agent-products?url=${encodeURIComponent(url)}`);\n }\n\n /** Validate a publisher domain's configuration. */\n async validatePublisher(domain: string): Promise<Record<string, unknown>> {\n if (!domain?.trim()) throw new Error('domain is required');\n return this.get(`${this.baseUrl}/api/public/validate-publisher?domain=${encodeURIComponent(domain)}`);\n }\n\n // ====== Registry Sync ======\n\n /**\n * Poll the catalog event feed. Returns events since the provided cursor.\n * Consumers save `cursor` from the response and pass it on the next poll.\n * When `has_more` is false, the consumer is caught up.\n *\n * Requires authentication.\n */\n async getFeed(options?: FeedQuery): Promise<FeedResponse> {\n if (!this.apiKey) throw new Error('apiKey is required for feed access');\n const params = new URLSearchParams();\n if (options?.cursor) params.set('cursor', options.cursor);\n if (options?.types) params.set('types', options.types);\n if (options?.limit != null) params.set('limit', String(options.limit));\n const qs = params.toString();\n const url = `${this.baseUrl}/api/registry/feed${qs ? '?' + qs : ''}`;\n const { res, text } = await this.requestText(url, { headers: this.getHeaders() });\n if (res.status === 410) {\n // Cursor aged out of the 90-day retention window. Surface as a recoverable\n // signal so callers re-bootstrap instead of treating it as a hard error.\n return { events: [], cursor: null, has_more: false, cursor_expired: true };\n }\n if (!res.ok) {\n throw new Error(`Registry request failed (${res.status}): ${this.preview(text)}`);\n }\n return this.parseJson(text);\n }\n\n /**\n * Stream the registry change feed over Server-Sent Events\n * (`GET /api/registry/feed/stream`).\n *\n * Yields typed `feed` / `heartbeat` / `error` messages until the stream\n * closes. The connection is long-lived — no body-size cap or request timeout\n * applies; pass an `AbortSignal` to close it. Cursor state lives in the `feed`\n * page payloads: persist `page.cursor` and reconnect with `{ cursor }`.\n *\n * Requires authentication. Most consumers should use `RegistrySync` with\n * `transport: 'auto'`, which layers reconnect, polling fallback, and\n * cursor-expiry recovery on top of this method.\n */\n streamFeed(query?: FeedStreamQuery, init?: { signal?: AbortSignal }): AsyncGenerator<FeedStreamMessage> {\n if (!this.apiKey) throw new Error('apiKey is required for feed stream access');\n return openFeedStream({\n fetchImpl: this.fetchImpl,\n baseUrl: this.baseUrl,\n apiKey: this.apiKey,\n query,\n redirect: this.redirect,\n signal: init?.signal,\n });\n }\n\n /**\n * Search agents by inventory profile. Returns ranked results with match scores.\n * All filters use AND logic across dimensions; multiple CSV values within a\n * filter use OR.\n *\n * Requires authentication.\n */\n async searchAgents(query?: AgentSearchQuery): Promise<AgentSearchResponse> {\n if (!this.apiKey) throw new Error('apiKey is required for agent search');\n const params = new URLSearchParams();\n if (query?.type) params.set('type', query.type);\n if (query?.channels) params.set('channels', query.channels);\n if (query?.markets) params.set('markets', query.markets);\n if (query?.categories) params.set('categories', query.categories);\n if (query?.property_types) params.set('property_types', query.property_types);\n if (query?.tags) params.set('tags', query.tags);\n if (query?.delivery_types) params.set('delivery_types', query.delivery_types);\n if (query?.has_tmp != null) params.set('has_tmp', String(query.has_tmp));\n if (query?.min_properties != null) params.set('min_properties', String(query.min_properties));\n if (query?.sort) params.set('sort', query.sort);\n if (query?.limit != null) params.set('limit', String(query.limit));\n if (query?.cursor) params.set('cursor', query.cursor);\n const qs = params.toString();\n return this.get(`${this.baseUrl}/api/registry/agents/search${qs ? '?' + qs : ''}`);\n }\n\n /**\n * Request immediate re-crawl of a domain's adagents.json.\n * Rate limited to one crawl per domain per 10 minutes.\n *\n * Requires authentication.\n */\n async requestCrawl(domain: string): Promise<CrawlRequestResponse> {\n if (!domain?.trim()) throw new Error('domain is required');\n if (!this.apiKey) throw new Error('apiKey is required for crawl requests');\n return this.post(`${this.baseUrl}/api/registry/crawl-request`, { domain });\n }\n\n /**\n * Request fan-out re-validation for publishers delegating to a manager domain.\n * Use after rotating a manager's adagents.json so MANAGERDOMAIN publishers\n * are queued without waiting for the next routine crawl cycle.\n *\n * Requires authentication.\n */\n async requestManagerRevalidation(managerDomain: string): Promise<ManagerRevalidationResponse> {\n if (!managerDomain?.trim()) throw new Error('managerDomain is required');\n if (!this.apiKey) throw new Error('apiKey is required for manager revalidation requests');\n const body: ManagerRevalidationRequest = { manager_domain: managerDomain };\n return this.post(`${this.baseUrl}/api/registry/manager-revalidation-request`, body);\n }\n\n // ====== Policy Management ======\n\n /** List policies in the governance policy registry with optional filtering. */\n async listPolicies(params?: ListPoliciesQuery): Promise<ListPoliciesResponse> {\n const qs = new URLSearchParams();\n if (params?.search) qs.set('search', params.search);\n if (params?.category) qs.set('category', params.category);\n if (params?.enforcement) qs.set('enforcement', params.enforcement);\n if (params?.jurisdiction) qs.set('jurisdiction', params.jurisdiction);\n if (params?.policy_category) qs.set('policy_category', params.policy_category);\n if (params?.domain) qs.set('domain', params.domain);\n if (params?.limit != null) qs.set('limit', String(params.limit));\n if (params?.offset != null) qs.set('offset', String(params.offset));\n const q = qs.toString();\n return this.get(`${this.baseUrl}/api/policies/registry${q ? '?' + q : ''}`);\n }\n\n /** Resolve a single policy by ID. Optionally pin to a specific version. */\n async resolvePolicy(params: ResolvePolicyQuery): Promise<ResolvePolicyResponse | null> {\n if (!params?.policy_id?.trim()) throw new Error('policy_id is required');\n const qs = new URLSearchParams({ policy_id: params.policy_id });\n if (params.version) qs.set('version', params.version);\n return this.get(`${this.baseUrl}/api/policies/resolve?${qs}`, { nullOn404: true });\n }\n\n /** Bulk resolve up to 100 policies by ID in a single request. */\n async resolvePoliciesBulk(body: ResolvePoliciesBulkRequest): Promise<ResolvePoliciesBulkResponse> {\n if (!body?.policy_ids?.length) throw new Error('policy_ids is required');\n return this.post(`${this.baseUrl}/api/policies/resolve/bulk`, body);\n }\n\n /** Retrieve the edit history for a policy. */\n async getPolicyHistory(params: GetPolicyHistoryQuery): Promise<GetPolicyHistoryResponse | null> {\n if (!params?.policy_id?.trim()) throw new Error('policy_id is required');\n const qs = new URLSearchParams({ policy_id: params.policy_id });\n if (params.limit != null) qs.set('limit', String(params.limit));\n if (params.offset != null) qs.set('offset', String(params.offset));\n return this.get(`${this.baseUrl}/api/policies/history?${qs}`, { nullOn404: true });\n }\n\n /** Create or update a community-contributed policy. Requires authentication. */\n async savePolicy(body: SavePolicyRequest): Promise<SavePolicyResponse> {\n if (!body?.policy_id?.trim()) throw new Error('policy_id is required');\n if (!body?.version?.trim()) throw new Error('version is required');\n if (!body?.name?.trim()) throw new Error('name is required');\n if (!body?.policy?.trim()) throw new Error('policy is required');\n if (!this.apiKey) throw new Error('apiKey is required for save operations');\n return this.post(`${this.baseUrl}/api/policies/save`, body);\n }\n\n // ====== History ======\n\n /** Retrieve brand activity history for a domain. */\n async getBrandHistory(params: GetBrandHistoryQuery): Promise<GetBrandHistoryResponse | null> {\n if (!params?.domain?.trim()) throw new Error('domain is required');\n const qs = new URLSearchParams({ domain: params.domain });\n if (params.limit != null) qs.set('limit', String(params.limit));\n if (params.offset != null) qs.set('offset', String(params.offset));\n return this.get(`${this.baseUrl}/api/brands/history?${qs}`, { nullOn404: true });\n }\n\n /** Retrieve property activity history for a domain. */\n async getPropertyHistory(params: GetPropertyHistoryQuery): Promise<GetPropertyHistoryResponse | null> {\n if (!params?.domain?.trim()) throw new Error('domain is required');\n const qs = new URLSearchParams({ domain: params.domain });\n if (params.limit != null) qs.set('limit', String(params.limit));\n if (params.offset != null) qs.set('offset', String(params.offset));\n return this.get(`${this.baseUrl}/api/properties/history?${qs}`, { nullOn404: true });\n }\n\n // ====== Private helpers ======\n\n private async get<T = any>(url: string, opts?: { nullOn404?: boolean }): Promise<T> {\n const { res, text } = await this.requestText(url, { headers: this.getHeaders() });\n if (opts?.nullOn404 && res.status === 404) return null as T;\n if (!res.ok) {\n throw new Error(`Registry request failed (${res.status}): ${this.preview(text)}`);\n }\n return this.parseJson(text);\n }\n\n private async post<T = any>(url: string, body: unknown): Promise<T> {\n const { res, text } = await this.requestText(url, {\n method: 'POST',\n headers: { ...this.getHeaders(), 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n });\n if (!res.ok) {\n throw new Error(`Registry request failed (${res.status}): ${this.preview(text)}`);\n }\n return this.parseJson(text);\n }\n\n private async postFormData<T = any>(url: string, body: FormData): Promise<T> {\n const { res, text } = await this.requestText(url, {\n method: 'POST',\n headers: this.getHeaders(),\n body,\n });\n if (!res.ok) {\n throw new Error(`Registry request failed (${res.status}): ${this.preview(text)}`);\n }\n return this.parseJson(text);\n }\n\n private async put<T = any>(url: string, body: unknown): Promise<T> {\n const { res, text } = await this.requestText(url, {\n method: 'PUT',\n headers: { ...this.getHeaders(), 'Content-Type': 'application/json' },\n body: JSON.stringify(body),\n });\n if (!res.ok) {\n throw new Error(`Registry request failed (${res.status}): ${this.preview(text)}`);\n }\n return this.parseJson(text);\n }\n\n private async deleteRequest<T = any>(url: string): Promise<T> {\n const { res, text } = await this.requestText(url, {\n method: 'DELETE',\n headers: this.getHeaders(),\n });\n if (!res.ok) {\n throw new Error(`Registry request failed (${res.status}): ${this.preview(text)}`);\n }\n return this.parseJson(text);\n }\n\n private normalizeBrandLogoList(response: Record<string, unknown>): ListBrandLogosResponse {\n const assets = Array.isArray(response.assets)\n ? (response.assets as ListBrandLogosResponse['assets'])\n : Array.isArray(response.logos)\n ? (response.logos as ListBrandLogosResponse['assets'])\n : [];\n const logos = Array.isArray(response.logos) ? (response.logos as ListBrandLogosResponse['assets']) : assets;\n\n const normalized: ListBrandLogosResponse = {\n assets,\n logos,\n };\n if (typeof response.domain === 'string') normalized.domain = response.domain;\n if (response.stats != null && typeof response.stats === 'object' && !Array.isArray(response.stats)) {\n normalized.stats = response.stats as Record<string, unknown>;\n }\n return normalized;\n }\n\n private normalizeSavePropertyRequest(property: SavePropertyRequest): SavePropertyRequest {\n const payload: SavePropertyRequest = {\n ...property,\n authorized_agents: [],\n };\n if (Array.isArray(property.properties)) {\n payload.properties = property.properties.map(p => this.normalizeSavePropertyIdentity(p));\n }\n return payload;\n }\n\n private normalizeSavePropertyIdentity(property: SavePropertyIdentity): SavePropertyIdentity {\n const normalized = { ...property } as SavePropertyIdentity & {\n property_type?: PropertyType | string;\n type?: PropertyType | string;\n };\n if (normalized.property_type === undefined && normalized.type !== undefined) {\n normalized.property_type = normalized.type as PropertyType;\n }\n if (normalized.type === undefined && normalized.property_type !== undefined) {\n normalized.type = normalized.property_type;\n }\n return normalized as SavePropertyIdentity;\n }\n\n private toBrandLogoBlob(data: SaveBrandLogoInput['data'], mimeType: string): Blob {\n if (data instanceof Blob) return new Blob([data], { type: mimeType });\n if (data instanceof ArrayBuffer) return new Blob([data], { type: mimeType });\n if (ArrayBuffer.isView(data)) {\n const bytes = new Uint8Array(data.byteLength);\n bytes.set(new Uint8Array(data.buffer, data.byteOffset, data.byteLength));\n return new Blob([bytes], { type: mimeType });\n }\n throw new Error('data must be a Blob, Buffer, ArrayBuffer, or ArrayBufferView');\n }\n\n private normalizeCommunityMirrorPlatform(platform: string): string {\n const normalizedPlatform = platform?.trim().toLowerCase();\n if (!normalizedPlatform) throw new Error('platform is required');\n if (!COMMUNITY_MIRROR_PLATFORM_RE.test(normalizedPlatform)) {\n throw new Error('platform must match ^[a-z0-9_-]{1,64}$');\n }\n return normalizedPlatform;\n }\n\n private brandHierarchyCacheKey(domain: string): string {\n return domain.trim().toLowerCase();\n }\n\n private normalizeBrandHierarchyDomain(domain: string): string {\n const normalized = domain?.trim();\n if (!normalized) throw new Error('domain is required');\n if (normalized.length > 253) throw new Error('domain must be 253 characters or fewer');\n return normalized;\n }\n\n private resolveBrandHierarchyCacheTtlMs(options: ResolveBrandHierarchyOptions | undefined): number | undefined {\n if (options?.ttlMs == null) return undefined;\n if (!Number.isFinite(options.ttlMs) || options.ttlMs < 0) {\n throw new Error('ttlMs must be a finite non-negative number');\n }\n return options.ttlMs;\n }\n\n private getCachedBrandHierarchy(\n cacheKey: string,\n options: ResolveBrandHierarchyOptions | undefined,\n ttlMs: number | undefined\n ): BrandHierarchyResolution | null | undefined {\n if (options?.fresh || ttlMs == null || ttlMs === 0) return undefined;\n const cached = this.brandHierarchyCache.get(cacheKey);\n if (!cached) return undefined;\n if (cached.expiresAt <= Date.now()) {\n this.brandHierarchyCache.delete(cacheKey);\n return undefined;\n }\n this.brandHierarchyCache.delete(cacheKey);\n this.brandHierarchyCache.set(cacheKey, cached);\n return this.cloneBrandHierarchy(cached.value);\n }\n\n private setCachedBrandHierarchy(\n cacheKey: string,\n value: BrandHierarchyResolution | null,\n options: ResolveBrandHierarchyOptions | undefined,\n ttlMs: number | undefined\n ): void {\n if (ttlMs == null || ttlMs === 0) {\n if (options?.fresh) this.brandHierarchyCache.delete(cacheKey);\n return;\n }\n this.brandHierarchyCache.delete(cacheKey);\n this.brandHierarchyCache.set(cacheKey, {\n expiresAt: Date.now() + ttlMs,\n value: this.cloneBrandHierarchy(value),\n });\n while (this.brandHierarchyCache.size > MAX_BRAND_HIERARCHY_CACHE_ENTRIES) {\n const oldest = this.brandHierarchyCache.keys().next().value;\n if (oldest == null) break;\n this.brandHierarchyCache.delete(oldest);\n }\n }\n\n private cloneBrandHierarchy(value: BrandHierarchyResolution | null): BrandHierarchyResolution | null {\n return value == null ? null : { ...value, chain: value.chain.map(brand => ({ ...brand })) };\n }\n\n private resolveCommunityMirrorPublishArgs(\n platformOrConfig: string | CreateCommunityMirrorAdagentsConfig,\n maybeConfig?: CommunityMirrorAdagentsConfig\n ): { platform: string; config: CommunityMirrorAdagentsConfig } {\n if (typeof platformOrConfig === 'string') {\n if (!maybeConfig) throw new Error('config is required');\n return { platform: platformOrConfig, config: maybeConfig };\n }\n\n const config = platformOrConfig;\n const platform = this.communityMirrorPlatformFromConfig(config);\n return { platform, config };\n }\n\n private communityMirrorPlatformFromConfig(config: CreateCommunityMirrorAdagentsConfig): string {\n if (typeof config.platform === 'string') {\n const platform = config.platform.trim();\n if (platform) return platform;\n }\n\n const properties = (config as { properties?: unknown }).properties;\n if (Array.isArray(properties)) {\n const platforms = new Set<string>();\n for (const property of properties) {\n if (!property || typeof property !== 'object' || Array.isArray(property)) continue;\n const propertyPlatform = (property as { platform?: unknown }).platform;\n if (typeof propertyPlatform === 'string' && propertyPlatform.trim()) {\n platforms.add(this.normalizeCommunityMirrorPlatform(propertyPlatform));\n }\n }\n if (platforms.size === 1) return Array.from(platforms)[0]!;\n if (platforms.size > 1) {\n throw new Error('platform is ambiguous; pass upsertCommunityMirrorAdagents(platform, config)');\n }\n }\n\n throw new Error('platform is required for community mirror publish');\n }\n\n private assertCommunityMirrorPropertiesMatchPlatform(\n normalizedPlatform: string,\n catalog: CommunityMirrorAdagentsCatalog\n ): void {\n const properties = (catalog as { properties?: unknown }).properties;\n if (!Array.isArray(properties)) return;\n for (const property of properties) {\n if (!property || typeof property !== 'object' || Array.isArray(property)) continue;\n const propertyPlatform = (property as { platform?: unknown }).platform;\n if (propertyPlatform == null) continue;\n if (\n typeof propertyPlatform !== 'string' ||\n this.normalizeCommunityMirrorPlatform(propertyPlatform) !== normalizedPlatform\n ) {\n throw new Error(`properties[].platform must match ${normalizedPlatform}`);\n }\n }\n }\n\n private async requestText(url: string, init: RequestInit): Promise<{ res: Response; text: string }> {\n const controller = new AbortController();\n let timedOut = false;\n let timeout: ReturnType<typeof setTimeout> | undefined;\n const timeoutPromise = new Promise<never>((_, reject) => {\n timeout = setTimeout(() => {\n timedOut = true;\n controller.abort();\n reject(new Error(`Registry request timed out after ${this.timeoutMs}ms`));\n }, this.timeoutMs);\n });\n const requestPromise = Promise.resolve().then(async () => {\n const res = await this.fetchImpl(url, {\n ...init,\n redirect: this.redirect,\n signal: controller.signal,\n });\n const text = await this.readBody(res, this.bodyLimitForUrl(url));\n return { res, text };\n });\n requestPromise.catch(() => {});\n try {\n return await Promise.race([requestPromise, timeoutPromise]);\n } catch (err) {\n if (timedOut || controller.signal.aborted) {\n throw new Error(`Registry request timed out after ${this.timeoutMs}ms`);\n }\n throw err;\n } finally {\n if (timeout) clearTimeout(timeout);\n }\n }\n\n private getHeaders(): Record<string, string> {\n const headers: Record<string, string> = { Accept: 'application/json' };\n if (this.apiKey) {\n headers['Authorization'] = `Bearer ${this.apiKey}`;\n }\n return headers;\n }\n\n private bodyLimitForUrl(url: string): number {\n if (this.hasCustomMaxBodyBytes) return this.maxBodyBytes;\n\n const path = new URL(url).pathname;\n if (\n path === '/api/brands/registry' ||\n path === '/api/brands/resolve/bulk' ||\n path === '/api/properties/registry' ||\n path === '/api/properties/resolve/bulk' ||\n path === '/api/registry/agents' ||\n path === '/api/registry/publishers' ||\n path === '/api/registry/feed' ||\n path === '/api/registry/mirrors' ||\n path === '/api/registry/agents/search' ||\n path === '/api/registry/authorizations' ||\n path === '/api/registry/authorizations/snapshot' ||\n path === '/api/search' ||\n path === '/api/policies/registry' ||\n path === '/api/policies/resolve/bulk' ||\n path === '/api/public/discover-agent' ||\n path === '/api/public/agent-formats' ||\n path === '/api/public/agent-products' ||\n path === '/api/public/validate-publisher' ||\n path === '/api/registry/agents/storyboard-status' ||\n (path.startsWith('/api/registry/agents/') && path.endsWith('/storyboard-status')) ||\n path.startsWith('/api/registry/mirrors/') ||\n path.startsWith('/api/properties/check')\n ) {\n return DEFAULT_LARGE_RESPONSE_MAX_BODY_BYTES;\n }\n\n return this.maxBodyBytes;\n }\n\n private async readBody(res: Response, maxBodyBytes: number): Promise<string> {\n const contentLength = res.headers.get('content-length');\n if (contentLength) {\n const declaredBytes = Number(contentLength);\n if (Number.isFinite(declaredBytes) && declaredBytes > maxBodyBytes) {\n throw new Error(`Registry response exceeded ${maxBodyBytes} bytes`);\n }\n }\n\n const reader = res.body?.getReader();\n if (!reader) {\n const text = await res.text();\n if (new TextEncoder().encode(text).byteLength > maxBodyBytes) {\n throw new Error(`Registry response exceeded ${maxBodyBytes} bytes`);\n }\n return text;\n }\n\n const chunks: Uint8Array[] = [];\n let bytes = 0;\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n bytes += value.byteLength;\n if (bytes > maxBodyBytes) {\n await reader.cancel();\n throw new Error(`Registry response exceeded ${maxBodyBytes} bytes`);\n }\n chunks.push(value);\n }\n } finally {\n reader.releaseLock();\n }\n\n const buf = new Uint8Array(bytes);\n let offset = 0;\n for (const chunk of chunks) {\n buf.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return new TextDecoder().decode(buf);\n }\n\n private parseJson(text: string): any {\n try {\n return JSON.parse(text);\n } catch {\n throw new Error(`Registry returned invalid JSON: ${this.preview(text)}`);\n }\n }\n\n private withSources<T extends object>(value: T): T & { sources: Record<string, unknown> } {\n if ('sources' in value) return value as T & { sources: Record<string, unknown> };\n return { ...value, sources: {} };\n }\n\n private preview(text: string): string {\n return text\n .slice(0, ERROR_BODY_PREVIEW_CHARS)\n .replace(/[\\u0000-\\u001f\\u007f]/g, ch => `\\\\u${ch.charCodeAt(0).toString(16).padStart(4, '0')}`);\n }\n\n private buildParams(options?: ListOptions & { source?: string }): string {\n if (!options) return '';\n const params = new URLSearchParams();\n if (options.search) params.set('search', options.search);\n if (options.limit != null) params.set('limit', String(options.limit));\n if (options.offset != null) params.set('offset', String(options.offset));\n if ('source' in options && options.source) params.set('source', options.source);\n const qs = params.toString();\n return qs ? '?' + qs : '';\n }\n\n private setTrueParam(params: URLSearchParams, key: string, value: boolean | 'true' | undefined): void {\n if (value === true || value === 'true') params.set(key, 'true');\n }\n\n private appendParamValues(params: URLSearchParams, key: string, value: string | string[] | undefined): void {\n if (Array.isArray(value)) {\n for (const item of value) params.append(key, item);\n } else if (value) {\n params.set(key, value);\n }\n }\n}\n"],"mappings":"AA4FA,SAAS,sBAAsB;AAsJ/B,SAAS,oBAAoB;AAW7B;AAAA,EACE,kBAAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAWP,SAAS,qBAAqB,uBAAuB;AAIrD,SAAS,wBAAwB;AAGjC,MAAM,mBAAmB;AACzB,MAAM,qBAAqB;AAC3B,MAAM,yBAAyB,MAAM;AACrC,MAAM,wCAAwC,IAAI,OAAO;AACzD,MAAM,2BAA2B;AACjC,MAAM,mBAAmB;AACzB,MAAM,oCAAoC;AAC1C,MAAM,oBAAoB;AAC1B,MAAM,+BAA+B;AAW9B,SAAS,6BAA6B,QAAuE;AAClH,QAAM,cAAc;AAMpB,MAAI,uBAAuB,aAAa;AACtC,UAAM,IAAI,MAAM,0EAA0E;AAAA,EAC5F;AACA,MAAI,oBAAoB,eAAe,uBAAuB,aAAa;AACzE,UAAM,IAAI,MAAM,8FAA8F;AAAA,EAChH;AACA,QAAM,cAAc,CAAC,WAAW,cAAc,cAAc,eAAe,SAAS;AACpF,QAAM,oBAAoB,YAAY,KAAK,SAAO;AAChD,UAAM,QAAS,OAAmC,GAAG;AACrD,WAAO,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS;AAAA,EAChD,CAAC;AACD,MAAI,CAAC,mBAAmB;AACtB,UAAM,IAAI,MAAM,6EAA6E;AAAA,EAC/F;AAEA,QAAM,EAAE,UAAU,WAAW,GAAG,cAAc,IAAI;AAElD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,mBAAmB,CAAC;AAAA,EACtB;AACF;AAgBO,MAAM,eAAe;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,sBAAsB,oBAAI,IAGzC;AAAA,EAEF,YAAY,QAA+B;AACzC,SAAK,WAAW,QAAQ,WAAW,kBAAkB,QAAQ,OAAO,EAAE;AACtE,SAAK,SAAS,QAAQ,UAAU,QAAQ,IAAI;AAC5C,SAAK,YAAY,QAAQ,aAAa;AACtC,SAAK,eAAe,QAAQ,gBAAgB;AAC5C,SAAK,wBAAwB,QAAQ,gBAAgB;AACrD,SAAK,WAAW,QAAQ,YAAY;AACpC,SAAK,YAAY,QAAQ,SAAS,WAAW;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAM,YAAY,QAA+C;AAC/D,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,UAAM,MAAM,GAAG,KAAK,OAAO,8BAA8B,mBAAmB,MAAM,CAAC;AACnF,WAAO,KAAK,IAAI,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,EAC1C;AAAA;AAAA,EAGA,MAAM,YAAY,OAAe,SAA0D;AACzF,QAAI,CAAC,OAAO,KAAK,EAAG,OAAM,IAAI,MAAM,mBAAmB;AACvD,QAAI,MAAM,GAAG,KAAK,OAAO,sBAAsB,mBAAmB,KAAK,CAAC;AACxE,QAAI,SAAS,SAAS,KAAM,QAAO,UAAU,QAAQ,KAAK;AAC1D,WAAO,KAAK,IAAI,GAAG;AAAA,EACrB;AAAA;AAAA,EAGA,MAAM,aAAa,SAAkE;AACnF,QAAI,QAAQ,WAAW,EAAG,QAAO,CAAC;AAClC,QAAI,QAAQ,SAAS,kBAAkB;AACrC,YAAM,IAAI,MAAM,4BAA4B,gBAAgB,yBAAyB,QAAQ,MAAM,GAAG;AAAA,IACxG;AACA,UAAM,OAAO,MAAM,KAAK,KAAK,GAAG,KAAK,OAAO,4BAA4B,EAAE,QAAQ,CAAC;AACnF,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,sBACJ,QACA,SAC0C;AAC1C,UAAM,mBAAmB,KAAK,8BAA8B,MAAM;AAClE,UAAM,QAAQ,KAAK,gCAAgC,OAAO;AAC1D,UAAM,WAAW,KAAK,uBAAuB,gBAAgB;AAC7D,UAAM,SAAS,KAAK,wBAAwB,UAAU,SAAS,KAAK;AACpE,QAAI,WAAW,OAAW,QAAO;AAEjC,UAAM,SAAS,IAAI,gBAAgB,EAAE,QAAQ,iBAAiB,CAAC;AAC/D,QAAI,SAAS,MAAO,QAAO,IAAI,SAAS,MAAM;AAC9C,UAAM,QAAQ,MAAM,KAAK,IAAqC,GAAG,KAAK,OAAO,yBAAyB,MAAM,IAAI;AAAA,MAC9G,WAAW;AAAA,IACb,CAAC;AACD,SAAK,wBAAwB,UAAU,OAAO,SAAS,KAAK;AAC5D,WAAO,KAAK,oBAAoB,KAAK;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,wBACJ,SACA,SAC0D;AAC1D,QAAI,QAAQ,WAAW,EAAG,QAAO,CAAC;AAClC,QAAI,QAAQ,SAAS,kBAAkB;AACrC,YAAM,IAAI,MAAM,4BAA4B,gBAAgB,yBAAyB,QAAQ,MAAM,GAAG;AAAA,IACxG;AACA,UAAM,oBAAoB,QAAQ,IAAI,YAAU,KAAK,8BAA8B,MAAM,CAAC;AAC1F,UAAM,QAAQ,KAAK,gCAAgC,OAAO;AAE1D,UAAM,UAA2D,uBAAO,OAAO,IAAI;AACnF,UAAM,aAAuB,CAAC;AAC9B,UAAM,wBAAwB,oBAAI,IAAsB;AAExD,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,YAAM,SAAS,QAAQ,CAAC;AACxB,YAAM,mBAAmB,kBAAkB,CAAC;AAC5C,YAAM,WAAW,KAAK,uBAAuB,gBAAgB;AAC7D,YAAM,SAAS,KAAK,wBAAwB,UAAU,SAAS,KAAK;AACpE,UAAI,WAAW,QAAW;AACxB,gBAAQ,MAAM,IAAI;AAClB;AAAA,MACF;AACA,YAAM,SAAS,sBAAsB,IAAI,QAAQ;AACjD,UAAI,QAAQ;AACV,eAAO,KAAK,MAAM;AAAA,MACpB,OAAO;AACL,mBAAW,KAAK,gBAAgB;AAChC,8BAAsB,IAAI,UAAU,CAAC,MAAM,CAAC;AAAA,MAC9C;AAAA,IACF;AAEA,QAAI,WAAW,SAAS,GAAG;AACzB,YAAM,OAA+C,EAAE,SAAS,WAAW;AAC3E,UAAI,SAAS,MAAO,MAAK,QAAQ;AACjC,YAAM,OAAO,MAAM,KAAK,KAAmC,GAAG,KAAK,OAAO,8BAA8B,IAAI;AAC5G,UAAI,CAAC,QAAQ,OAAO,SAAS,YAAY,CAAC,KAAK,WAAW,OAAO,KAAK,YAAY,UAAU;AAC1F,cAAM,IAAI,MAAM,kDAAkD;AAAA,MACpE;AACA,YAAM,cAAc,oBAAI,IAAY;AACpC,iBAAW,CAAC,QAAQ,KAAK,KAAK,OAAO,QAAQ,KAAK,OAAO,GAAG;AAC1D,cAAM,WAAW,KAAK,uBAAuB,MAAM;AACnD,cAAM,SAAS,sBAAsB,IAAI,QAAQ;AACjD,YAAI,CAAC,OAAQ;AACb,oBAAY,IAAI,QAAQ;AACxB,mBAAW,SAAS,QAAQ;AAC1B,kBAAQ,KAAK,IAAI,KAAK,oBAAoB,KAAK;AAAA,QACjD;AACA,aAAK,wBAAwB,UAAU,OAAO,SAAS,KAAK;AAAA,MAC9D;AACA,iBAAW,CAAC,UAAU,MAAM,KAAK,sBAAsB,QAAQ,GAAG;AAChE,YAAI,YAAY,IAAI,QAAQ,EAAG;AAC/B,cAAM,IAAI,MAAM,uDAAuD,OAAO,CAAC,CAAC,EAAE;AAAA,MACpF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,WAAW,SAA0D;AACzE,UAAM,SAAS,KAAK,YAAY,OAAO;AACvC,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,uBAAuB,MAAM,EAAE;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,aAAa,QAAsD;AACvE,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,UAAM,MAAM,GAAG,KAAK,OAAO,iCAAiC,mBAAmB,MAAM,CAAC;AACtF,WAAO,KAAK,IAAI,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,EAC1C;AAAA;AAAA,EAGA,MAAM,YAAY,QAAkD;AAClE,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,6BAA6B,mBAAmB,MAAM,CAAC,EAAE;AAAA,EAC1F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,eAAe,QAAgB,SAA6E;AAChH,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,UAAM,SAAS,IAAI,gBAAgB;AACnC,UAAM,OAAO,MAAM,QAAQ,OAAO,IAAI,UAAU,SAAS;AACzD,QAAI,MAAM,OAAQ,QAAO,IAAI,QAAQ,KAAK,KAAK,GAAG,CAAC;AACnD,UAAM,KAAK,OAAO,SAAS;AAC3B,UAAM,WAAW,MAAM,KAAK;AAAA,MAC1B,GAAG,KAAK,OAAO,eAAe,mBAAmB,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE,KAAK,EAAE;AAAA,IACrF;AACA,WAAO,KAAK,uBAAuB,QAAQ;AAAA,EAC7C;AAAA;AAAA,EAGA,MAAM,cAAc,OAA2D;AAC7E,QAAI,CAAC,OAAO,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AAChE,QAAI,CAAC,OAAO,UAAU,KAAK,EAAG,OAAM,IAAI,MAAM,sBAAsB;AACpE,QAAI,CAAC,OAAO,UAAU,KAAK,EAAG,OAAM,IAAI,MAAM,sBAAsB;AACpE,QAAI,MAAM,QAAQ,KAAM,OAAM,IAAI,MAAM,kBAAkB;AAC1D,QAAI,CAAC,MAAM,MAAM,OAAQ,OAAM,IAAI,MAAM,mBAAmB;AAC5D,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,wCAAwC;AAE1E,UAAM,OAAO,IAAI,SAAS;AAC1B,SAAK,OAAO,QAAQ,KAAK,gBAAgB,MAAM,MAAM,MAAM,QAAQ,GAAG,MAAM,QAAQ;AACpF,QAAI,MAAM,KAAM,MAAK,OAAO,QAAQ,MAAM,IAAI;AAC9C,SAAK,OAAO,QAAQ,MAAM,KAAK,KAAK,GAAG,CAAC;AAExC,WAAO,KAAK,aAAa,GAAG,KAAK,OAAO,eAAe,mBAAmB,MAAM,MAAM,CAAC,UAAU,IAAI;AAAA,EACvG;AAAA;AAAA,EAGA,MAAM,gBAAgB,OAA+D;AACnF,WAAO,KAAK,cAAc,KAAK;AAAA,EACjC;AAAA;AAAA,EAGA,MAAM,UAAU,OAAqD;AACnE,QAAI,CAAC,OAAO,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AAChE,QAAI,CAAC,OAAO,YAAY,KAAK,EAAG,OAAM,IAAI,MAAM,wBAAwB;AACxE,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,wCAAwC;AAC1E,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,oBAAoB,KAAK;AAAA,EAC3D;AAAA;AAAA;AAAA,EAKA,MAAM,eAAe,QAAkD;AACrE,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,UAAM,MAAM,GAAG,KAAK,OAAO,kCAAkC,mBAAmB,MAAM,CAAC;AACvF,WAAO,KAAK,IAAI,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,EAC1C;AAAA;AAAA,EAGA,MAAM,iBAAiB,SAAqE;AAC1F,QAAI,QAAQ,WAAW,EAAG,QAAO,CAAC;AAClC,QAAI,QAAQ,SAAS,kBAAkB;AACrC,YAAM,IAAI,MAAM,4BAA4B,gBAAgB,yBAAyB,QAAQ,MAAM,GAAG;AAAA,IACxG;AACA,UAAM,OAAO,MAAM,KAAK,KAAK,GAAG,KAAK,OAAO,gCAAgC,EAAE,QAAQ,CAAC;AACvF,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,oBACJ,SACA,SACkD;AAClD,UAAM,SAAS,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC;AACnC,UAAM,cAAc,SAAS,eAAe;AAC5C,UAAM,UAAsB,CAAC;AAC7B,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,kBAAkB;AACxD,cAAQ,KAAK,OAAO,MAAM,GAAG,IAAI,gBAAgB,CAAC;AAAA,IACpD;AACA,UAAM,UAAmD,CAAC;AAC1D,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,aAAa;AACpD,YAAM,QAAQ,QAAQ,MAAM,GAAG,IAAI,WAAW;AAC9C,YAAM,UAAU,MAAM,QAAQ,IAAI,MAAM,IAAI,OAAK,KAAK,iBAAiB,CAAC,CAAC,CAAC;AAC1E,iBAAW,KAAK,QAAS,QAAO,OAAO,SAAS,CAAC;AAAA,IACnD;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aAAa,SAAmB,SAAsE;AAC1G,UAAM,UAAU,MAAM,KAAK,oBAAoB,SAAS,OAAO;AAC/D,UAAM,SAAkC,CAAC;AACzC,eAAW,CAAC,QAAQ,QAAQ,KAAK,OAAO,QAAQ,OAAO,GAAG;AACxD,aAAO,MAAM,IAAI,YAAY;AAAA,IAC/B;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,eACJ,SACiF;AACjF,UAAM,SAAS,KAAK,YAAY,OAAO;AACvC,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,2BAA2B,MAAM,EAAE;AAAA,EACpE;AAAA;AAAA,EAGA,MAAM,iBAAiB,QAA2C;AAChE,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,mCAAmC,mBAAmB,MAAM,CAAC,EAAE;AAAA,EAChG;AAAA;AAAA,EAGA,MAAM,aAAa,UAA8D;AAC/E,QAAI,CAAC,UAAU,kBAAkB,KAAK,EAAG,OAAM,IAAI,MAAM,8BAA8B;AACvF,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,wCAAwC;AAC1E,UAAM,UAAU,KAAK,6BAA6B,QAAQ;AAC1D,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,wBAAwB,OAAO;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,0BAA0B,QAA4D;AAC1F,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,+CAA+C;AACjF,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,0BAA0B,mBAAmB,OAAO,KAAK,CAAC,CAAC,UAAU,MAAS;AAAA,EAChH;AAAA;AAAA,EAGA,MAAM,2BAA2B,QAA6D;AAC5F,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,qDAAqD;AACvF,WAAO,KAAK;AAAA,MACV,GAAG,KAAK,OAAO,0BAA0B,mBAAmB,OAAO,KAAK,CAAC,CAAC;AAAA,MAC1E;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,eACJ,YACA,SACmE;AACnE,UAAM,cAAc,SAAS,eAAe;AAC5C,UAAM,UAAoE,CAAC;AAC3E,aAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK,aAAa;AACvD,YAAM,QAAQ,WAAW,MAAM,GAAG,IAAI,WAAW;AACjD,YAAM,UAAU,MAAM,QAAQ,WAAW,MAAM,IAAI,OAAK,KAAK,aAAa,CAAC,CAAC,CAAC;AAC7E,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,cAAM,SAAS,MAAM,CAAC,EAAG;AACzB,cAAM,IAAI,QAAQ,CAAC;AACnB,gBAAQ,MAAM,IAAI,EAAE,WAAW,cAAc,EAAE,QAAQ,EAAE,OAAO,OAAO,EAAE,MAAM,EAAE;AAAA,MACnF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,mBAAmB,SAAyE;AAChG,QAAI,CAAC,SAAS,aAAa,OAAQ,OAAM,IAAI,MAAM,0BAA0B;AAC7E,SAAK,QAAQ,QAAQ,eAAe,YAAY,CAAC,KAAK,QAAQ;AAC5D,YAAM,IAAI,MAAM,2DAA2D;AAAA,IAC7E;AACA,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,yBAAyB,OAAO;AAAA,EAClE;AAAA;AAAA,EAGA,MAAM,mBAAmB,SAAyE;AAChG,QAAI,CAAC,SAAS,cAAc,KAAK,EAAG,OAAM,IAAI,MAAM,0BAA0B;AAC9E,QAAI,CAAC,SAAS,eAAe,KAAK,EAAG,OAAM,IAAI,MAAM,2BAA2B;AAChF,QAAI,CAAC,SAAS,OAAO,KAAK,EAAG,OAAM,IAAI,MAAM,mBAAmB;AAChE,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,yCAAyC;AAC3E,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,kCAAkC,OAAO;AAAA,EAC3E;AAAA;AAAA,EAGA,MAAM,kBAAkB,IAAuD;AAC7E,QAAI,CAAC,IAAI,KAAK,EAAG,OAAM,IAAI,MAAM,gBAAgB;AACjD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,kCAAkC,mBAAmB,GAAG,KAAK,CAAC,CAAC,IAAI;AAAA,MAChG,WAAW;AAAA,IACb,CAAC;AAAA,EACH;AAAA;AAAA;AAAA,EAKA,MAAM,WAAW,SAA0D;AACzE,UAAM,SAAS,IAAI,gBAAgB;AACnC,QAAI,SAAS,KAAM,QAAO,IAAI,QAAQ,QAAQ,IAAI;AAClD,SAAK,aAAa,QAAQ,UAAU,SAAS,MAAM;AACnD,SAAK,aAAa,QAAQ,gBAAgB,SAAS,YAAY;AAC/D,SAAK,aAAa,QAAQ,cAAc,SAAS,UAAU;AAC3D,SAAK,aAAa,QAAQ,cAAc,SAAS,UAAU;AAC3D,SAAK,kBAAkB,QAAQ,aAAa,SAAS,SAAS;AAC9D,SAAK,kBAAkB,QAAQ,iBAAiB,SAAS,aAAa;AACtE,QAAI,SAAS,EAAG,QAAO,IAAI,KAAK,QAAQ,CAAC;AACzC,SAAK,kBAAkB,QAAQ,qBAAqB,SAAS,iBAAiB;AAC9E,SAAK,aAAa,QAAQ,YAAY,SAAS,QAAQ;AACvD,UAAM,KAAK,OAAO,SAAS;AAC3B,WAAO,KAAK,YAAY,MAAM,KAAK,IAAI,GAAG,KAAK,OAAO,uBAAuB,KAAK,MAAM,KAAK,EAAE,EAAE,CAAC;AAAA,EACpG;AAAA;AAAA,EAGA,MAAM,iBAAkD;AACtD,WAAO,KAAK,YAAY,MAAM,KAAK,IAAI,GAAG,KAAK,OAAO,0BAA0B,CAAC;AAAA,EACnF;AAAA;AAAA,EAGA,MAAM,mBAAqD;AACzD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,qBAAqB;AAAA,EACtD;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAmB,UAAyD;AAChF,QAAI,CAAC,UAAU,KAAK,EAAG,OAAM,IAAI,MAAM,sBAAsB;AAC7D,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,wBAAwB,mBAAmB,QAAQ,CAAC,eAAe;AAAA,MAChG,WAAW;AAAA,IACb,CAAC;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,yBAAyB,UAA6D;AAC1F,QAAI,CAAC,UAAU,KAAK,EAAG,OAAM,IAAI,MAAM,sBAAsB;AAC7D,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,0CAA0C;AAC5E,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,wBAAwB,mBAAmB,QAAQ,CAAC,oBAAoB;AAAA,EACzG;AAAA;AAAA,EAGA,MAAM,6BAA6B,WAAoE;AACrG,QAAI,CAAC,WAAW,OAAQ,OAAM,IAAI,MAAM,uBAAuB;AAC/D,UAAM,SAAS,CAAC,GAAG,IAAI,IAAI,UAAU,IAAI,OAAK,GAAG,KAAK,CAAC,EAAE,OAAO,OAAO,CAAC,CAAC;AACzE,QAAI,OAAO,WAAW,EAAG,OAAM,IAAI,MAAM,qCAAqC;AAC9E,QAAI,OAAO,SAAS,kBAAkB;AACpC,YAAM,IAAI,MAAM,0BAA0B,gBAAgB,wBAAwB,OAAO,MAAM,GAAG;AAAA,IACpG;AACA,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,0CAA0C;AAC5E,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,0CAA0C,EAAE,YAAY,OAAO,CAAC;AAAA,EAClG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8BA,MAAM,eACJ,QACA,MACsC;AACtC,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,UAAM,SAAS,IAAI,gBAAgB,EAAE,OAAO,CAAC;AAC7C,QAAI,MAAM,SAAS,KAAK,UAAU,MAAO,QAAO,IAAI,SAAS,KAAK,KAAK;AACvE,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,0BAA0B,OAAO,SAAS,CAAC,IAAI,EAAE,WAAW,KAAK,CAAC;AAAA,EACnG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,gBAAgB,QAAuD;AAC3E,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,kCAAkC,mBAAmB,MAAM,CAAC,IAAI;AAAA,MAC7F,WAAW;AAAA,IACb,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,aAAa,QAA6C;AAC9D,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,+BAA+B,mBAAmB,MAAM,CAAC,EAAE;AAAA,EAC5F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,cACJ,SACA,SAC6C;AAC7C,UAAM,SAAS,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC;AACnC,UAAM,cAAc,SAAS,eAAe;AAC5C,UAAM,UAA8C,CAAC;AACrD,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,aAAa;AACnD,YAAM,QAAQ,OAAO,MAAM,GAAG,IAAI,WAAW;AAC7C,YAAM,UAAU,MAAM,QAAQ,WAAW,MAAM,IAAI,OAAK,KAAK,aAAa,CAAC,CAAC,CAAC;AAC7E,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,cAAM,IAAI,QAAQ,CAAC;AACnB,YAAI,EAAE,WAAW,YAAa,SAAQ,MAAM,CAAC,CAAE,IAAI,EAAE;AAAA,MACvD;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,0BACJ,aACA,SACkD;AAClD,UAAM,cAAc,SAAS,eAAe;AAE5C,UAAM,OAAO,oBAAI,IAAY;AAC7B,UAAM,SAA4C,CAAC;AACnD,eAAW,MAAM,aAAa;AAC5B,YAAM,MAAM,GAAG,GAAG,IAAI,IAAI,GAAG,KAAK;AAClC,UAAI,CAAC,KAAK,IAAI,GAAG,GAAG;AAClB,aAAK,IAAI,GAAG;AACZ,eAAO,KAAK,EAAE;AAAA,MAChB;AAAA,IACF;AACA,UAAM,UAAmD,CAAC;AAC1D,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,aAAa;AACnD,YAAM,QAAQ,OAAO,MAAM,GAAG,IAAI,WAAW;AAC7C,YAAM,UAAU,MAAM,QAAQ,WAAW,MAAM,IAAI,QAAM,KAAK,2BAA2B,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;AAC5G,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,cAAM,IAAI,QAAQ,CAAC;AACnB,cAAM,MAAM,GAAG,MAAM,CAAC,EAAG,IAAI,IAAI,MAAM,CAAC,EAAG,KAAK;AAChD,YAAI,EAAE,WAAW,YAAa,SAAQ,GAAG,IAAI,EAAE;AAAA,MACjD;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,2BAA2B,MAAc,OAAiD;AAC9F,QAAI,CAAC,MAAM,KAAK,EAAG,OAAM,IAAI,MAAM,kBAAkB;AACrD,QAAI,CAAC,OAAO,KAAK,EAAG,OAAM,IAAI,MAAM,mBAAmB;AACvD,UAAM,SAAS,SAAS,mBAAmB,IAAI,CAAC,UAAU,mBAAmB,KAAK,CAAC;AACnF,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,gCAAgC,MAAM,EAAE;AAAA,EACzE;AAAA;AAAA,EAGA,MAAM,gBAAgB,UAAoF;AACxG,QAAI,CAAC,UAAU,KAAK,EAAG,OAAM,IAAI,MAAM,sBAAsB;AAC7D,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,8BAA8B,mBAAmB,QAAQ,CAAC,UAAU;AAAA,EACrG;AAAA;AAAA,EAGA,MAAM,8BACJ,UACA,gBACA,iBAOC;AACD,QAAI,CAAC,UAAU,KAAK,EAAG,OAAM,IAAI,MAAM,sBAAsB;AAC7D,UAAM,SAAS,IAAI,gBAAgB;AAAA,MACjC,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,IACpB,CAAC;AACD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,iDAAiD,MAAM,EAAE;AAAA,EAC1F;AAAA;AAAA,EAGA,MAAM,6BACJ,UACA,qBACkC;AAClC,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,gDAAgD;AAAA,MAC9E,WAAW;AAAA,MACX,sBAAsB;AAAA,IACxB,CAAC;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,yBACJ,UACA,qBACkC;AAClC,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,4CAA4C;AAAA,MAC1E,WAAW;AAAA,MACX,sBAAsB;AAAA,IACxB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,MAAM,kBAAkB,SAarB;AACD,QAAI,CAAC,SAAS,OAAQ,OAAM,IAAI,MAAM,qBAAqB;AAC3D,QAAI,QAAQ,SAAS,mBAAmB;AACtC,YAAM,IAAI,MAAM,0BAA0B,iBAAiB,yBAAyB,QAAQ,MAAM,GAAG;AAAA,IACvG;AACA,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,yBAAyB,EAAE,QAAQ,CAAC;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,uBAAuB,UAE1B;AACD,QAAI,CAAC,UAAU,KAAK,EAAG,OAAM,IAAI,MAAM,sBAAsB;AAC7D,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,yBAAyB,mBAAmB,QAAQ,CAAC,EAAE;AAAA,EACxF;AAAA;AAAA;AAAA,EAKA,MAAM,iBAAiB,QAAmD;AACxE,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,0BAA0B,EAAE,OAAO,CAAC;AAAA,EACtE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,MAAM,eAAe,QAAgE;AACnF,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,wBAAwB,MAAM;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,8BAA8B,QAAwE;AAC1G,WAAO,KAAK,eAAe,6BAA6B,MAAM,CAAC;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,+BAA+B,QAAwE;AAC3G,WAAO,KAAK,8BAA8B,MAAM;AAAA,EAClD;AAAA,EAcA,MAAM,8BACJ,kBACA,aACiD;AACjD,UAAM,EAAE,UAAU,OAAO,IAAI,KAAK,kCAAkC,kBAAkB,WAAW;AACjG,WAAO,KAAK,+BAA+B,UAAU,MAAM;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,MAAM,+BACJ,UACA,QACiD;AACjD,UAAM,qBAAqB,KAAK,iCAAiC,QAAQ;AACzE,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,wCAAwC;AAC1E,UAAM,UAAU,6BAA6B,MAAM;AACnD,SAAK,6CAA6C,oBAAoB,OAAO;AAC7E,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,yBAAyB,mBAAmB,kBAAkB,CAAC,IAAI,OAAO;AAAA,EAC3G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,2BAA2B,UAAkE;AACjG,UAAM,qBAAqB,KAAK,iCAAiC,QAAQ;AACzE,UAAM,WAAW,MAAM,KAAK,IAIzB,GAAG,KAAK,OAAO,yBAAyB,mBAAmB,kBAAkB,CAAC,IAAI,EAAE,WAAW,KAAK,CAAC;AACxG,QAAI,CAAC,SAAU,QAAO;AACtB,QAAI,SAAS,aAAa,UAAa,SAAS,aAAa,oBAAoB;AAC/E,YAAM,IAAI,MAAM,wDAAwD;AAAA,IAC1E;AACA,UAAM,UAAU,SAAS;AACzB,QAAI,CAAC,WAAW,OAAO,YAAY,YAAY,MAAM,QAAQ,OAAO,GAAG;AACrE,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AACA,UAAM,eAAe;AACrB,QAAI,CAAC,MAAM,QAAQ,aAAa,iBAAiB,KAAK,aAAa,kBAAkB,WAAW,GAAG;AACjG,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AACA,QAAI,SAAS,iBAAiB,QAAQ,OAAO,SAAS,kBAAkB,UAAU;AAChF,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AACA,WAAO,SAAS,iBAAiB,CAAC,aAAa,gBAC3C,EAAE,GAAG,cAAc,eAAe,SAAS,cAAc,IACzD;AAAA,EACN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,4BAA4B,SAGe;AAC/C,UAAM,SAAS,IAAI,gBAAgB;AACnC,QAAI,SAAS,SAAS,KAAM,QAAO,IAAI,SAAS,OAAO,QAAQ,KAAK,CAAC;AACrE,QAAI,SAAS,UAAU,KAAM,QAAO,IAAI,UAAU,OAAO,QAAQ,MAAM,CAAC;AACxE,UAAM,KAAK,OAAO,SAAS;AAC3B,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,wBAAwB,KAAK,IAAI,EAAE,KAAK,EAAE,EAAE;AAAA,EAC7E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,8BACJ,UACA,SACgD;AAChD,UAAM,qBAAqB,KAAK,iCAAiC,QAAQ;AACzE,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,wCAAwC;AAC1E,UAAM,SAAS,IAAI,gBAAgB;AACnC,QAAI,SAAS,MAAO,QAAO,IAAI,SAAS,MAAM;AAC9C,UAAM,KAAK,OAAO,SAAS;AAC3B,WAAO,KAAK;AAAA,MACV,GAAG,KAAK,OAAO,yBAAyB,mBAAmB,kBAAkB,CAAC,GAAG,KAAK,IAAI,EAAE,KAAK,EAAE;AAAA,IACrG;AAAA,EACF;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO,OAA6F;AACxG,QAAI,CAAC,OAAO,KAAK,EAAG,OAAM,IAAI,MAAM,mBAAmB;AACvD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,iBAAiB,mBAAmB,KAAK,CAAC,EAAE;AAAA,EAC7E;AAAA;AAAA,EAGA,MAAM,kBAAkB,QAAgB,MAAiD;AACvF,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,UAAM,SAAS,IAAI,gBAAgB,EAAE,OAAO,CAAC;AAC7C,QAAI,KAAM,QAAO,IAAI,QAAQ,IAAI;AACjC,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,6BAA6B,MAAM,EAAE;AAAA,EACtE;AAAA;AAAA,EAGA,MAAM,cAAc,KAA+C;AACjE,QAAI,CAAC,KAAK,KAAK,EAAG,OAAM,IAAI,MAAM,iBAAiB;AACnD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,kCAAkC,mBAAmB,GAAG,CAAC,EAAE;AAAA,EAC5F;AAAA;AAAA,EAGA,MAAM,gBAAgB,KAA+C;AACnE,QAAI,CAAC,KAAK,KAAK,EAAG,OAAM,IAAI,MAAM,iBAAiB;AACnD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,iCAAiC,mBAAmB,GAAG,CAAC,EAAE;AAAA,EAC3F;AAAA;AAAA,EAGA,MAAM,iBAAiB,KAA+C;AACpE,QAAI,CAAC,KAAK,KAAK,EAAG,OAAM,IAAI,MAAM,iBAAiB;AACnD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,kCAAkC,mBAAmB,GAAG,CAAC,EAAE;AAAA,EAC5F;AAAA;AAAA,EAGA,MAAM,kBAAkB,QAAkD;AACxE,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,yCAAyC,mBAAmB,MAAM,CAAC,EAAE;AAAA,EACtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,QAAQ,SAA4C;AACxD,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,oCAAoC;AACtE,UAAM,SAAS,IAAI,gBAAgB;AACnC,QAAI,SAAS,OAAQ,QAAO,IAAI,UAAU,QAAQ,MAAM;AACxD,QAAI,SAAS,MAAO,QAAO,IAAI,SAAS,QAAQ,KAAK;AACrD,QAAI,SAAS,SAAS,KAAM,QAAO,IAAI,SAAS,OAAO,QAAQ,KAAK,CAAC;AACrE,UAAM,KAAK,OAAO,SAAS;AAC3B,UAAM,MAAM,GAAG,KAAK,OAAO,qBAAqB,KAAK,MAAM,KAAK,EAAE;AAClE,UAAM,EAAE,KAAK,KAAK,IAAI,MAAM,KAAK,YAAY,KAAK,EAAE,SAAS,KAAK,WAAW,EAAE,CAAC;AAChF,QAAI,IAAI,WAAW,KAAK;AAGtB,aAAO,EAAE,QAAQ,CAAC,GAAG,QAAQ,MAAM,UAAU,OAAO,gBAAgB,KAAK;AAAA,IAC3E;AACA,QAAI,CAAC,IAAI,IAAI;AACX,YAAM,IAAI,MAAM,4BAA4B,IAAI,MAAM,MAAM,KAAK,QAAQ,IAAI,CAAC,EAAE;AAAA,IAClF;AACA,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeA,WAAW,OAAyB,MAAoE;AACtG,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,2CAA2C;AAC7E,WAAO,eAAe;AAAA,MACpB,WAAW,KAAK;AAAA,MAChB,SAAS,KAAK;AAAA,MACd,QAAQ,KAAK;AAAA,MACb;AAAA,MACA,UAAU,KAAK;AAAA,MACf,QAAQ,MAAM;AAAA,IAChB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,aAAa,OAAwD;AACzE,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,qCAAqC;AACvE,UAAM,SAAS,IAAI,gBAAgB;AACnC,QAAI,OAAO,KAAM,QAAO,IAAI,QAAQ,MAAM,IAAI;AAC9C,QAAI,OAAO,SAAU,QAAO,IAAI,YAAY,MAAM,QAAQ;AAC1D,QAAI,OAAO,QAAS,QAAO,IAAI,WAAW,MAAM,OAAO;AACvD,QAAI,OAAO,WAAY,QAAO,IAAI,cAAc,MAAM,UAAU;AAChE,QAAI,OAAO,eAAgB,QAAO,IAAI,kBAAkB,MAAM,cAAc;AAC5E,QAAI,OAAO,KAAM,QAAO,IAAI,QAAQ,MAAM,IAAI;AAC9C,QAAI,OAAO,eAAgB,QAAO,IAAI,kBAAkB,MAAM,cAAc;AAC5E,QAAI,OAAO,WAAW,KAAM,QAAO,IAAI,WAAW,OAAO,MAAM,OAAO,CAAC;AACvE,QAAI,OAAO,kBAAkB,KAAM,QAAO,IAAI,kBAAkB,OAAO,MAAM,cAAc,CAAC;AAC5F,QAAI,OAAO,KAAM,QAAO,IAAI,QAAQ,MAAM,IAAI;AAC9C,QAAI,OAAO,SAAS,KAAM,QAAO,IAAI,SAAS,OAAO,MAAM,KAAK,CAAC;AACjE,QAAI,OAAO,OAAQ,QAAO,IAAI,UAAU,MAAM,MAAM;AACpD,UAAM,KAAK,OAAO,SAAS;AAC3B,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,8BAA8B,KAAK,MAAM,KAAK,EAAE,EAAE;AAAA,EACnF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,aAAa,QAA+C;AAChE,QAAI,CAAC,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACzD,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,uCAAuC;AACzE,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,+BAA+B,EAAE,OAAO,CAAC;AAAA,EAC3E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,2BAA2B,eAA6D;AAC5F,QAAI,CAAC,eAAe,KAAK,EAAG,OAAM,IAAI,MAAM,2BAA2B;AACvE,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,sDAAsD;AACxF,UAAM,OAAmC,EAAE,gBAAgB,cAAc;AACzE,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,8CAA8C,IAAI;AAAA,EACpF;AAAA;AAAA;AAAA,EAKA,MAAM,aAAa,QAA2D;AAC5E,UAAM,KAAK,IAAI,gBAAgB;AAC/B,QAAI,QAAQ,OAAQ,IAAG,IAAI,UAAU,OAAO,MAAM;AAClD,QAAI,QAAQ,SAAU,IAAG,IAAI,YAAY,OAAO,QAAQ;AACxD,QAAI,QAAQ,YAAa,IAAG,IAAI,eAAe,OAAO,WAAW;AACjE,QAAI,QAAQ,aAAc,IAAG,IAAI,gBAAgB,OAAO,YAAY;AACpE,QAAI,QAAQ,gBAAiB,IAAG,IAAI,mBAAmB,OAAO,eAAe;AAC7E,QAAI,QAAQ,OAAQ,IAAG,IAAI,UAAU,OAAO,MAAM;AAClD,QAAI,QAAQ,SAAS,KAAM,IAAG,IAAI,SAAS,OAAO,OAAO,KAAK,CAAC;AAC/D,QAAI,QAAQ,UAAU,KAAM,IAAG,IAAI,UAAU,OAAO,OAAO,MAAM,CAAC;AAClE,UAAM,IAAI,GAAG,SAAS;AACtB,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,yBAAyB,IAAI,MAAM,IAAI,EAAE,EAAE;AAAA,EAC5E;AAAA;AAAA,EAGA,MAAM,cAAc,QAAmE;AACrF,QAAI,CAAC,QAAQ,WAAW,KAAK,EAAG,OAAM,IAAI,MAAM,uBAAuB;AACvE,UAAM,KAAK,IAAI,gBAAgB,EAAE,WAAW,OAAO,UAAU,CAAC;AAC9D,QAAI,OAAO,QAAS,IAAG,IAAI,WAAW,OAAO,OAAO;AACpD,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,yBAAyB,EAAE,IAAI,EAAE,WAAW,KAAK,CAAC;AAAA,EACnF;AAAA;AAAA,EAGA,MAAM,oBAAoB,MAAwE;AAChG,QAAI,CAAC,MAAM,YAAY,OAAQ,OAAM,IAAI,MAAM,wBAAwB;AACvE,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,8BAA8B,IAAI;AAAA,EACpE;AAAA;AAAA,EAGA,MAAM,iBAAiB,QAAyE;AAC9F,QAAI,CAAC,QAAQ,WAAW,KAAK,EAAG,OAAM,IAAI,MAAM,uBAAuB;AACvE,UAAM,KAAK,IAAI,gBAAgB,EAAE,WAAW,OAAO,UAAU,CAAC;AAC9D,QAAI,OAAO,SAAS,KAAM,IAAG,IAAI,SAAS,OAAO,OAAO,KAAK,CAAC;AAC9D,QAAI,OAAO,UAAU,KAAM,IAAG,IAAI,UAAU,OAAO,OAAO,MAAM,CAAC;AACjE,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,yBAAyB,EAAE,IAAI,EAAE,WAAW,KAAK,CAAC;AAAA,EACnF;AAAA;AAAA,EAGA,MAAM,WAAW,MAAsD;AACrE,QAAI,CAAC,MAAM,WAAW,KAAK,EAAG,OAAM,IAAI,MAAM,uBAAuB;AACrE,QAAI,CAAC,MAAM,SAAS,KAAK,EAAG,OAAM,IAAI,MAAM,qBAAqB;AACjE,QAAI,CAAC,MAAM,MAAM,KAAK,EAAG,OAAM,IAAI,MAAM,kBAAkB;AAC3D,QAAI,CAAC,MAAM,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AAC/D,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,wCAAwC;AAC1E,WAAO,KAAK,KAAK,GAAG,KAAK,OAAO,sBAAsB,IAAI;AAAA,EAC5D;AAAA;AAAA;AAAA,EAKA,MAAM,gBAAgB,QAAuE;AAC3F,QAAI,CAAC,QAAQ,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACjE,UAAM,KAAK,IAAI,gBAAgB,EAAE,QAAQ,OAAO,OAAO,CAAC;AACxD,QAAI,OAAO,SAAS,KAAM,IAAG,IAAI,SAAS,OAAO,OAAO,KAAK,CAAC;AAC9D,QAAI,OAAO,UAAU,KAAM,IAAG,IAAI,UAAU,OAAO,OAAO,MAAM,CAAC;AACjE,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,uBAAuB,EAAE,IAAI,EAAE,WAAW,KAAK,CAAC;AAAA,EACjF;AAAA;AAAA,EAGA,MAAM,mBAAmB,QAA6E;AACpG,QAAI,CAAC,QAAQ,QAAQ,KAAK,EAAG,OAAM,IAAI,MAAM,oBAAoB;AACjE,UAAM,KAAK,IAAI,gBAAgB,EAAE,QAAQ,OAAO,OAAO,CAAC;AACxD,QAAI,OAAO,SAAS,KAAM,IAAG,IAAI,SAAS,OAAO,OAAO,KAAK,CAAC;AAC9D,QAAI,OAAO,UAAU,KAAM,IAAG,IAAI,UAAU,OAAO,OAAO,MAAM,CAAC;AACjE,WAAO,KAAK,IAAI,GAAG,KAAK,OAAO,2BAA2B,EAAE,IAAI,EAAE,WAAW,KAAK,CAAC;AAAA,EACrF;AAAA;AAAA,EAIA,MAAc,IAAa,KAAa,MAA4C;AAClF,UAAM,EAAE,KAAK,KAAK,IAAI,MAAM,KAAK,YAAY,KAAK,EAAE,SAAS,KAAK,WAAW,EAAE,CAAC;AAChF,QAAI,MAAM,aAAa,IAAI,WAAW,IAAK,QAAO;AAClD,QAAI,CAAC,IAAI,IAAI;AACX,YAAM,IAAI,MAAM,4BAA4B,IAAI,MAAM,MAAM,KAAK,QAAQ,IAAI,CAAC,EAAE;AAAA,IAClF;AACA,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AAAA,EAEA,MAAc,KAAc,KAAa,MAA2B;AAClE,UAAM,EAAE,KAAK,KAAK,IAAI,MAAM,KAAK,YAAY,KAAK;AAAA,MAChD,QAAQ;AAAA,MACR,SAAS,EAAE,GAAG,KAAK,WAAW,GAAG,gBAAgB,mBAAmB;AAAA,MACpE,MAAM,KAAK,UAAU,IAAI;AAAA,IAC3B,CAAC;AACD,QAAI,CAAC,IAAI,IAAI;AACX,YAAM,IAAI,MAAM,4BAA4B,IAAI,MAAM,MAAM,KAAK,QAAQ,IAAI,CAAC,EAAE;AAAA,IAClF;AACA,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AAAA,EAEA,MAAc,aAAsB,KAAa,MAA4B;AAC3E,UAAM,EAAE,KAAK,KAAK,IAAI,MAAM,KAAK,YAAY,KAAK;AAAA,MAChD,QAAQ;AAAA,MACR,SAAS,KAAK,WAAW;AAAA,MACzB;AAAA,IACF,CAAC;AACD,QAAI,CAAC,IAAI,IAAI;AACX,YAAM,IAAI,MAAM,4BAA4B,IAAI,MAAM,MAAM,KAAK,QAAQ,IAAI,CAAC,EAAE;AAAA,IAClF;AACA,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AAAA,EAEA,MAAc,IAAa,KAAa,MAA2B;AACjE,UAAM,EAAE,KAAK,KAAK,IAAI,MAAM,KAAK,YAAY,KAAK;AAAA,MAChD,QAAQ;AAAA,MACR,SAAS,EAAE,GAAG,KAAK,WAAW,GAAG,gBAAgB,mBAAmB;AAAA,MACpE,MAAM,KAAK,UAAU,IAAI;AAAA,IAC3B,CAAC;AACD,QAAI,CAAC,IAAI,IAAI;AACX,YAAM,IAAI,MAAM,4BAA4B,IAAI,MAAM,MAAM,KAAK,QAAQ,IAAI,CAAC,EAAE;AAAA,IAClF;AACA,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AAAA,EAEA,MAAc,cAAuB,KAAyB;AAC5D,UAAM,EAAE,KAAK,KAAK,IAAI,MAAM,KAAK,YAAY,KAAK;AAAA,MAChD,QAAQ;AAAA,MACR,SAAS,KAAK,WAAW;AAAA,IAC3B,CAAC;AACD,QAAI,CAAC,IAAI,IAAI;AACX,YAAM,IAAI,MAAM,4BAA4B,IAAI,MAAM,MAAM,KAAK,QAAQ,IAAI,CAAC,EAAE;AAAA,IAClF;AACA,WAAO,KAAK,UAAU,IAAI;AAAA,EAC5B;AAAA,EAEQ,uBAAuB,UAA2D;AACxF,UAAM,SAAS,MAAM,QAAQ,SAAS,MAAM,IACvC,SAAS,SACV,MAAM,QAAQ,SAAS,KAAK,IACzB,SAAS,QACV,CAAC;AACP,UAAM,QAAQ,MAAM,QAAQ,SAAS,KAAK,IAAK,SAAS,QAA6C;AAErG,UAAM,aAAqC;AAAA,MACzC;AAAA,MACA;AAAA,IACF;AACA,QAAI,OAAO,SAAS,WAAW,SAAU,YAAW,SAAS,SAAS;AACtE,QAAI,SAAS,SAAS,QAAQ,OAAO,SAAS,UAAU,YAAY,CAAC,MAAM,QAAQ,SAAS,KAAK,GAAG;AAClG,iBAAW,QAAQ,SAAS;AAAA,IAC9B;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,6BAA6B,UAAoD;AACvF,UAAM,UAA+B;AAAA,MACnC,GAAG;AAAA,MACH,mBAAmB,CAAC;AAAA,IACtB;AACA,QAAI,MAAM,QAAQ,SAAS,UAAU,GAAG;AACtC,cAAQ,aAAa,SAAS,WAAW,IAAI,OAAK,KAAK,8BAA8B,CAAC,CAAC;AAAA,IACzF;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,8BAA8B,UAAsD;AAC1F,UAAM,aAAa,EAAE,GAAG,SAAS;AAIjC,QAAI,WAAW,kBAAkB,UAAa,WAAW,SAAS,QAAW;AAC3E,iBAAW,gBAAgB,WAAW;AAAA,IACxC;AACA,QAAI,WAAW,SAAS,UAAa,WAAW,kBAAkB,QAAW;AAC3E,iBAAW,OAAO,WAAW;AAAA,IAC/B;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,gBAAgB,MAAkC,UAAwB;AAChF,QAAI,gBAAgB,KAAM,QAAO,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC;AACpE,QAAI,gBAAgB,YAAa,QAAO,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC;AAC3E,QAAI,YAAY,OAAO,IAAI,GAAG;AAC5B,YAAM,QAAQ,IAAI,WAAW,KAAK,UAAU;AAC5C,YAAM,IAAI,IAAI,WAAW,KAAK,QAAQ,KAAK,YAAY,KAAK,UAAU,CAAC;AACvE,aAAO,IAAI,KAAK,CAAC,KAAK,GAAG,EAAE,MAAM,SAAS,CAAC;AAAA,IAC7C;AACA,UAAM,IAAI,MAAM,8DAA8D;AAAA,EAChF;AAAA,EAEQ,iCAAiC,UAA0B;AACjE,UAAM,qBAAqB,UAAU,KAAK,EAAE,YAAY;AACxD,QAAI,CAAC,mBAAoB,OAAM,IAAI,MAAM,sBAAsB;AAC/D,QAAI,CAAC,6BAA6B,KAAK,kBAAkB,GAAG;AAC1D,YAAM,IAAI,MAAM,wCAAwC;AAAA,IAC1D;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,uBAAuB,QAAwB;AACrD,WAAO,OAAO,KAAK,EAAE,YAAY;AAAA,EACnC;AAAA,EAEQ,8BAA8B,QAAwB;AAC5D,UAAM,aAAa,QAAQ,KAAK;AAChC,QAAI,CAAC,WAAY,OAAM,IAAI,MAAM,oBAAoB;AACrD,QAAI,WAAW,SAAS,IAAK,OAAM,IAAI,MAAM,wCAAwC;AACrF,WAAO;AAAA,EACT;AAAA,EAEQ,gCAAgC,SAAuE;AAC7G,QAAI,SAAS,SAAS,KAAM,QAAO;AACnC,QAAI,CAAC,OAAO,SAAS,QAAQ,KAAK,KAAK,QAAQ,QAAQ,GAAG;AACxD,YAAM,IAAI,MAAM,4CAA4C;AAAA,IAC9D;AACA,WAAO,QAAQ;AAAA,EACjB;AAAA,EAEQ,wBACN,UACA,SACA,OAC6C;AAC7C,QAAI,SAAS,SAAS,SAAS,QAAQ,UAAU,EAAG,QAAO;AAC3D,UAAM,SAAS,KAAK,oBAAoB,IAAI,QAAQ;AACpD,QAAI,CAAC,OAAQ,QAAO;AACpB,QAAI,OAAO,aAAa,KAAK,IAAI,GAAG;AAClC,WAAK,oBAAoB,OAAO,QAAQ;AACxC,aAAO;AAAA,IACT;AACA,SAAK,oBAAoB,OAAO,QAAQ;AACxC,SAAK,oBAAoB,IAAI,UAAU,MAAM;AAC7C,WAAO,KAAK,oBAAoB,OAAO,KAAK;AAAA,EAC9C;AAAA,EAEQ,wBACN,UACA,OACA,SACA,OACM;AACN,QAAI,SAAS,QAAQ,UAAU,GAAG;AAChC,UAAI,SAAS,MAAO,MAAK,oBAAoB,OAAO,QAAQ;AAC5D;AAAA,IACF;AACA,SAAK,oBAAoB,OAAO,QAAQ;AACxC,SAAK,oBAAoB,IAAI,UAAU;AAAA,MACrC,WAAW,KAAK,IAAI,IAAI;AAAA,MACxB,OAAO,KAAK,oBAAoB,KAAK;AAAA,IACvC,CAAC;AACD,WAAO,KAAK,oBAAoB,OAAO,mCAAmC;AACxE,YAAM,SAAS,KAAK,oBAAoB,KAAK,EAAE,KAAK,EAAE;AACtD,UAAI,UAAU,KAAM;AACpB,WAAK,oBAAoB,OAAO,MAAM;AAAA,IACxC;AAAA,EACF;AAAA,EAEQ,oBAAoB,OAAyE;AACnG,WAAO,SAAS,OAAO,OAAO,EAAE,GAAG,OAAO,OAAO,MAAM,MAAM,IAAI,YAAU,EAAE,GAAG,MAAM,EAAE,EAAE;AAAA,EAC5F;AAAA,EAEQ,kCACN,kBACA,aAC6D;AAC7D,QAAI,OAAO,qBAAqB,UAAU;AACxC,UAAI,CAAC,YAAa,OAAM,IAAI,MAAM,oBAAoB;AACtD,aAAO,EAAE,UAAU,kBAAkB,QAAQ,YAAY;AAAA,IAC3D;AAEA,UAAM,SAAS;AACf,UAAM,WAAW,KAAK,kCAAkC,MAAM;AAC9D,WAAO,EAAE,UAAU,OAAO;AAAA,EAC5B;AAAA,EAEQ,kCAAkC,QAAqD;AAC7F,QAAI,OAAO,OAAO,aAAa,UAAU;AACvC,YAAM,WAAW,OAAO,SAAS,KAAK;AACtC,UAAI,SAAU,QAAO;AAAA,IACvB;AAEA,UAAM,aAAc,OAAoC;AACxD,QAAI,MAAM,QAAQ,UAAU,GAAG;AAC7B,YAAM,YAAY,oBAAI,IAAY;AAClC,iBAAW,YAAY,YAAY;AACjC,YAAI,CAAC,YAAY,OAAO,aAAa,YAAY,MAAM,QAAQ,QAAQ,EAAG;AAC1E,cAAM,mBAAoB,SAAoC;AAC9D,YAAI,OAAO,qBAAqB,YAAY,iBAAiB,KAAK,GAAG;AACnE,oBAAU,IAAI,KAAK,iCAAiC,gBAAgB,CAAC;AAAA,QACvE;AAAA,MACF;AACA,UAAI,UAAU,SAAS,EAAG,QAAO,MAAM,KAAK,SAAS,EAAE,CAAC;AACxD,UAAI,UAAU,OAAO,GAAG;AACtB,cAAM,IAAI,MAAM,6EAA6E;AAAA,MAC/F;AAAA,IACF;AAEA,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAAA,EAEQ,6CACN,oBACA,SACM;AACN,UAAM,aAAc,QAAqC;AACzD,QAAI,CAAC,MAAM,QAAQ,UAAU,EAAG;AAChC,eAAW,YAAY,YAAY;AACjC,UAAI,CAAC,YAAY,OAAO,aAAa,YAAY,MAAM,QAAQ,QAAQ,EAAG;AAC1E,YAAM,mBAAoB,SAAoC;AAC9D,UAAI,oBAAoB,KAAM;AAC9B,UACE,OAAO,qBAAqB,YAC5B,KAAK,iCAAiC,gBAAgB,MAAM,oBAC5D;AACA,cAAM,IAAI,MAAM,oCAAoC,kBAAkB,EAAE;AAAA,MAC1E;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,YAAY,KAAa,MAA6D;AAClG,UAAM,aAAa,IAAI,gBAAgB;AACvC,QAAI,WAAW;AACf,QAAI;AACJ,UAAM,iBAAiB,IAAI,QAAe,CAAC,GAAG,WAAW;AACvD,gBAAU,WAAW,MAAM;AACzB,mBAAW;AACX,mBAAW,MAAM;AACjB,eAAO,IAAI,MAAM,oCAAoC,KAAK,SAAS,IAAI,CAAC;AAAA,MAC1E,GAAG,KAAK,SAAS;AAAA,IACnB,CAAC;AACD,UAAM,iBAAiB,QAAQ,QAAQ,EAAE,KAAK,YAAY;AACxD,YAAM,MAAM,MAAM,KAAK,UAAU,KAAK;AAAA,QACpC,GAAG;AAAA,QACH,UAAU,KAAK;AAAA,QACf,QAAQ,WAAW;AAAA,MACrB,CAAC;AACD,YAAM,OAAO,MAAM,KAAK,SAAS,KAAK,KAAK,gBAAgB,GAAG,CAAC;AAC/D,aAAO,EAAE,KAAK,KAAK;AAAA,IACrB,CAAC;AACD,mBAAe,MAAM,MAAM;AAAA,IAAC,CAAC;AAC7B,QAAI;AACF,aAAO,MAAM,QAAQ,KAAK,CAAC,gBAAgB,cAAc,CAAC;AAAA,IAC5D,SAAS,KAAK;AACZ,UAAI,YAAY,WAAW,OAAO,SAAS;AACzC,cAAM,IAAI,MAAM,oCAAoC,KAAK,SAAS,IAAI;AAAA,MACxE;AACA,YAAM;AAAA,IACR,UAAE;AACA,UAAI,QAAS,cAAa,OAAO;AAAA,IACnC;AAAA,EACF;AAAA,EAEQ,aAAqC;AAC3C,UAAM,UAAkC,EAAE,QAAQ,mBAAmB;AACrE,QAAI,KAAK,QAAQ;AACf,cAAQ,eAAe,IAAI,UAAU,KAAK,MAAM;AAAA,IAClD;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,gBAAgB,KAAqB;AAC3C,QAAI,KAAK,sBAAuB,QAAO,KAAK;AAE5C,UAAM,OAAO,IAAI,IAAI,GAAG,EAAE;AAC1B,QACE,SAAS,0BACT,SAAS,8BACT,SAAS,8BACT,SAAS,kCACT,SAAS,0BACT,SAAS,8BACT,SAAS,wBACT,SAAS,2BACT,SAAS,iCACT,SAAS,kCACT,SAAS,2CACT,SAAS,iBACT,SAAS,4BACT,SAAS,gCACT,SAAS,gCACT,SAAS,+BACT,SAAS,gCACT,SAAS,oCACT,SAAS,4CACR,KAAK,WAAW,uBAAuB,KAAK,KAAK,SAAS,oBAAoB,KAC/E,KAAK,WAAW,wBAAwB,KACxC,KAAK,WAAW,uBAAuB,GACvC;AACA,aAAO;AAAA,IACT;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAc,SAAS,KAAe,cAAuC;AAC3E,UAAM,gBAAgB,IAAI,QAAQ,IAAI,gBAAgB;AACtD,QAAI,eAAe;AACjB,YAAM,gBAAgB,OAAO,aAAa;AAC1C,UAAI,OAAO,SAAS,aAAa,KAAK,gBAAgB,cAAc;AAClE,cAAM,IAAI,MAAM,8BAA8B,YAAY,QAAQ;AAAA,MACpE;AAAA,IACF;AAEA,UAAM,SAAS,IAAI,MAAM,UAAU;AACnC,QAAI,CAAC,QAAQ;AACX,YAAM,OAAO,MAAM,IAAI,KAAK;AAC5B,UAAI,IAAI,YAAY,EAAE,OAAO,IAAI,EAAE,aAAa,cAAc;AAC5D,cAAM,IAAI,MAAM,8BAA8B,YAAY,QAAQ;AAAA,MACpE;AACA,aAAO;AAAA,IACT;AAEA,UAAM,SAAuB,CAAC;AAC9B,QAAI,QAAQ;AACZ,QAAI;AACF,aAAO,MAAM;AACX,cAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAC1C,YAAI,KAAM;AACV,iBAAS,MAAM;AACf,YAAI,QAAQ,cAAc;AACxB,gBAAM,OAAO,OAAO;AACpB,gBAAM,IAAI,MAAM,8BAA8B,YAAY,QAAQ;AAAA,QACpE;AACA,eAAO,KAAK,KAAK;AAAA,MACnB;AAAA,IACF,UAAE;AACA,aAAO,YAAY;AAAA,IACrB;AAEA,UAAM,MAAM,IAAI,WAAW,KAAK;AAChC,QAAI,SAAS;AACb,eAAW,SAAS,QAAQ;AAC1B,UAAI,IAAI,OAAO,MAAM;AACrB,gBAAU,MAAM;AAAA,IAClB;AACA,WAAO,IAAI,YAAY,EAAE,OAAO,GAAG;AAAA,EACrC;AAAA,EAEQ,UAAU,MAAmB;AACnC,QAAI;AACF,aAAO,KAAK,MAAM,IAAI;AAAA,IACxB,QAAQ;AACN,YAAM,IAAI,MAAM,mCAAmC,KAAK,QAAQ,IAAI,CAAC,EAAE;AAAA,IACzE;AAAA,EACF;AAAA,EAEQ,YAA8B,OAAoD;AACxF,QAAI,aAAa,MAAO,QAAO;AAC/B,WAAO,EAAE,GAAG,OAAO,SAAS,CAAC,EAAE;AAAA,EACjC;AAAA,EAEQ,QAAQ,MAAsB;AACpC,WAAO,KACJ,MAAM,GAAG,wBAAwB,EACjC,QAAQ,0BAA0B,QAAM,MAAM,GAAG,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE;AAAA,EACnG;AAAA,EAEQ,YAAY,SAAqD;AACvE,QAAI,CAAC,QAAS,QAAO;AACrB,UAAM,SAAS,IAAI,gBAAgB;AACnC,QAAI,QAAQ,OAAQ,QAAO,IAAI,UAAU,QAAQ,MAAM;AACvD,QAAI,QAAQ,SAAS,KAAM,QAAO,IAAI,SAAS,OAAO,QAAQ,KAAK,CAAC;AACpE,QAAI,QAAQ,UAAU,KAAM,QAAO,IAAI,UAAU,OAAO,QAAQ,MAAM,CAAC;AACvE,QAAI,YAAY,WAAW,QAAQ,OAAQ,QAAO,IAAI,UAAU,QAAQ,MAAM;AAC9E,UAAM,KAAK,OAAO,SAAS;AAC3B,WAAO,KAAK,MAAM,KAAK;AAAA,EACzB;AAAA,EAEQ,aAAa,QAAyB,KAAa,OAA2C;AACpG,QAAI,UAAU,QAAQ,UAAU,OAAQ,QAAO,IAAI,KAAK,MAAM;AAAA,EAChE;AAAA,EAEQ,kBAAkB,QAAyB,KAAa,OAA4C;AAC1G,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,iBAAW,QAAQ,MAAO,QAAO,OAAO,KAAK,IAAI;AAAA,IACnD,WAAW,OAAO;AAChB,aAAO,IAAI,KAAK,KAAK;AAAA,IACvB;AAAA,EACF;AACF;","names":["openFeedStream"]}
|
|
@@ -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 { RegistrySync } from "./sync.mjs";
|
|
8
2
|
class PropertyRegistry {
|
|
9
3
|
sync;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/registry/property-registry.ts"],"sourcesContent":["import type { RegistryClient } from './index';\nimport type { CursorStore } from './cursor-store';\nimport type { AgentSearchResult, AuthorizationEntry } from './types.generated';\nimport { RegistrySync, type RegistrySyncProperty } from './sync';\n\n// ====== Configuration ======\n\nexport interface PropertyRegistryConfig {\n /** RegistryClient instance for API calls. */\n registryClient: RegistryClient;\n /** Optional cursor store for resumable syncing. */\n cursorStore?: CursorStore;\n /** Polling interval in milliseconds. Default: 30000 (30s). */\n pollInterval?: number;\n}\n\n// ====== PropertyRegistry ======\n\n/**\n * Local authorization cache with synchronous queries.\n *\n * Wraps RegistrySync internally, subscribing to its events and maintaining\n * indexed Maps for O(1) synchronous lookups. The key difference from using\n * RegistrySync directly is that all query methods are synchronous.\n *\n * @example\n * ```ts\n * const registry = new PropertyRegistry({\n * registryClient: new RegistryClient({ apiKey: 'sk_...' }),\n * });\n * await registry.start();\n *\n * // Synchronous lookups - no await needed\n * const authorized = registry.isAuthorized('https://ads.example.com', 'publisher.com');\n * const agents = registry.findAgentsByDomain('publisher.com');\n *\n * registry.stop();\n * ```\n */\nexport class PropertyRegistry {\n private readonly sync: RegistrySync;\n private lastSync: Date | null = null;\n\n constructor(config: PropertyRegistryConfig) {\n this.sync = new RegistrySync({\n client: config.registryClient,\n pollIntervalMs: config.pollInterval,\n cursorStore: config.cursorStore,\n indexes: { agents: true, authorizations: true, properties: true },\n });\n\n this.sync.on('sync', () => {\n this.lastSync = new Date();\n });\n\n this.sync.on('bootstrap', () => {\n this.lastSync = new Date();\n });\n }\n\n // ====== Lifecycle ======\n\n /** Bootstrap from the registry and begin background polling. */\n async start(): Promise<void> {\n await this.sync.start();\n }\n\n /** Stop background polling. In-memory state is preserved. */\n stop(): void {\n this.sync.stop();\n }\n\n // ====== Synchronous Queries ======\n\n /** Check if an agent has any authorization for a publisher domain. */\n isAuthorized(agentUrl: string, domain: string): boolean {\n return this.sync.isAuthorized(agentUrl, domain);\n }\n\n /** Get all authorizations for a publisher domain. */\n getAuthorizationsForDomain(domain: string): AuthorizationEntry[] {\n return this.sync.getAuthorizationsForDomain(domain);\n }\n\n /** Get all authorizations for an agent. */\n getAuthorizationsForAgent(agentUrl: string): AuthorizationEntry[] {\n return this.sync.getAuthorizationsForAgent(agentUrl);\n }\n\n /** Get an agent by URL. */\n getAgent(url: string): AgentSearchResult | undefined {\n return this.sync.getAgent(url);\n }\n\n /** Find agents that are authorized for a given domain. */\n findAgentsByDomain(domain: string): AgentSearchResult[] {\n const auths = this.sync.getAuthorizationsForDomain(domain);\n const agents: AgentSearchResult[] = [];\n for (const auth of auths) {\n const agent = this.sync.getAgent(auth.agent_url);\n if (agent) agents.push(agent);\n }\n return agents;\n }\n\n /** Get a registry property by property_rid. Merged aliases resolve to their canonical RID. */\n getProperty(rid: string): RegistrySyncProperty | undefined {\n return this.sync.getProperty(rid);\n }\n\n /** Get all registry properties for a publisher domain. */\n getPropertiesForDomain(domain: string): RegistrySyncProperty[] {\n return this.sync.getPropertiesForDomain(domain);\n }\n\n // ====== Stats ======\n\n getStats(): { agents: number; authorizations: number; properties: number; lastSync: Date | null } {\n const syncStats = this.sync.getStats();\n return {\n agents: syncStats.agents,\n authorizations: syncStats.authorizations,\n properties: syncStats.properties,\n lastSync: this.lastSync,\n };\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/registry/property-registry.ts"],"sourcesContent":["import type { RegistryClient } from './index';\nimport type { CursorStore } from './cursor-store';\nimport type { AgentSearchResult, AuthorizationEntry } from './types.generated';\nimport { RegistrySync, type RegistrySyncProperty } from './sync';\n\n// ====== Configuration ======\n\nexport interface PropertyRegistryConfig {\n /** RegistryClient instance for API calls. */\n registryClient: RegistryClient;\n /** Optional cursor store for resumable syncing. */\n cursorStore?: CursorStore;\n /** Polling interval in milliseconds. Default: 30000 (30s). */\n pollInterval?: number;\n}\n\n// ====== PropertyRegistry ======\n\n/**\n * Local authorization cache with synchronous queries.\n *\n * Wraps RegistrySync internally, subscribing to its events and maintaining\n * indexed Maps for O(1) synchronous lookups. The key difference from using\n * RegistrySync directly is that all query methods are synchronous.\n *\n * @example\n * ```ts\n * const registry = new PropertyRegistry({\n * registryClient: new RegistryClient({ apiKey: 'sk_...' }),\n * });\n * await registry.start();\n *\n * // Synchronous lookups - no await needed\n * const authorized = registry.isAuthorized('https://ads.example.com', 'publisher.com');\n * const agents = registry.findAgentsByDomain('publisher.com');\n *\n * registry.stop();\n * ```\n */\nexport class PropertyRegistry {\n private readonly sync: RegistrySync;\n private lastSync: Date | null = null;\n\n constructor(config: PropertyRegistryConfig) {\n this.sync = new RegistrySync({\n client: config.registryClient,\n pollIntervalMs: config.pollInterval,\n cursorStore: config.cursorStore,\n indexes: { agents: true, authorizations: true, properties: true },\n });\n\n this.sync.on('sync', () => {\n this.lastSync = new Date();\n });\n\n this.sync.on('bootstrap', () => {\n this.lastSync = new Date();\n });\n }\n\n // ====== Lifecycle ======\n\n /** Bootstrap from the registry and begin background polling. */\n async start(): Promise<void> {\n await this.sync.start();\n }\n\n /** Stop background polling. In-memory state is preserved. */\n stop(): void {\n this.sync.stop();\n }\n\n // ====== Synchronous Queries ======\n\n /** Check if an agent has any authorization for a publisher domain. */\n isAuthorized(agentUrl: string, domain: string): boolean {\n return this.sync.isAuthorized(agentUrl, domain);\n }\n\n /** Get all authorizations for a publisher domain. */\n getAuthorizationsForDomain(domain: string): AuthorizationEntry[] {\n return this.sync.getAuthorizationsForDomain(domain);\n }\n\n /** Get all authorizations for an agent. */\n getAuthorizationsForAgent(agentUrl: string): AuthorizationEntry[] {\n return this.sync.getAuthorizationsForAgent(agentUrl);\n }\n\n /** Get an agent by URL. */\n getAgent(url: string): AgentSearchResult | undefined {\n return this.sync.getAgent(url);\n }\n\n /** Find agents that are authorized for a given domain. */\n findAgentsByDomain(domain: string): AgentSearchResult[] {\n const auths = this.sync.getAuthorizationsForDomain(domain);\n const agents: AgentSearchResult[] = [];\n for (const auth of auths) {\n const agent = this.sync.getAgent(auth.agent_url);\n if (agent) agents.push(agent);\n }\n return agents;\n }\n\n /** Get a registry property by property_rid. Merged aliases resolve to their canonical RID. */\n getProperty(rid: string): RegistrySyncProperty | undefined {\n return this.sync.getProperty(rid);\n }\n\n /** Get all registry properties for a publisher domain. */\n getPropertiesForDomain(domain: string): RegistrySyncProperty[] {\n return this.sync.getPropertiesForDomain(domain);\n }\n\n // ====== Stats ======\n\n getStats(): { agents: number; authorizations: number; properties: number; lastSync: Date | null } {\n const syncStats = this.sync.getStats();\n return {\n agents: syncStats.agents,\n authorizations: syncStats.authorizations,\n properties: syncStats.properties,\n lastSync: this.lastSync,\n };\n }\n}\n"],"mappings":"AAGA,SAAS,oBAA+C;AAoCjD,MAAM,iBAAiB;AAAA,EACX;AAAA,EACT,WAAwB;AAAA,EAEhC,YAAY,QAAgC;AAC1C,SAAK,OAAO,IAAI,aAAa;AAAA,MAC3B,QAAQ,OAAO;AAAA,MACf,gBAAgB,OAAO;AAAA,MACvB,aAAa,OAAO;AAAA,MACpB,SAAS,EAAE,QAAQ,MAAM,gBAAgB,MAAM,YAAY,KAAK;AAAA,IAClE,CAAC;AAED,SAAK,KAAK,GAAG,QAAQ,MAAM;AACzB,WAAK,WAAW,oBAAI,KAAK;AAAA,IAC3B,CAAC;AAED,SAAK,KAAK,GAAG,aAAa,MAAM;AAC9B,WAAK,WAAW,oBAAI,KAAK;AAAA,IAC3B,CAAC;AAAA,EACH;AAAA;AAAA;AAAA,EAKA,MAAM,QAAuB;AAC3B,UAAM,KAAK,KAAK,MAAM;AAAA,EACxB;AAAA;AAAA,EAGA,OAAa;AACX,SAAK,KAAK,KAAK;AAAA,EACjB;AAAA;AAAA;AAAA,EAKA,aAAa,UAAkB,QAAyB;AACtD,WAAO,KAAK,KAAK,aAAa,UAAU,MAAM;AAAA,EAChD;AAAA;AAAA,EAGA,2BAA2B,QAAsC;AAC/D,WAAO,KAAK,KAAK,2BAA2B,MAAM;AAAA,EACpD;AAAA;AAAA,EAGA,0BAA0B,UAAwC;AAChE,WAAO,KAAK,KAAK,0BAA0B,QAAQ;AAAA,EACrD;AAAA;AAAA,EAGA,SAAS,KAA4C;AACnD,WAAO,KAAK,KAAK,SAAS,GAAG;AAAA,EAC/B;AAAA;AAAA,EAGA,mBAAmB,QAAqC;AACtD,UAAM,QAAQ,KAAK,KAAK,2BAA2B,MAAM;AACzD,UAAM,SAA8B,CAAC;AACrC,eAAW,QAAQ,OAAO;AACxB,YAAM,QAAQ,KAAK,KAAK,SAAS,KAAK,SAAS;AAC/C,UAAI,MAAO,QAAO,KAAK,KAAK;AAAA,IAC9B;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,YAAY,KAA+C;AACzD,WAAO,KAAK,KAAK,YAAY,GAAG;AAAA,EAClC;AAAA;AAAA,EAGA,uBAAuB,QAAwC;AAC7D,WAAO,KAAK,KAAK,uBAAuB,MAAM;AAAA,EAChD;AAAA;AAAA,EAIA,WAAkG;AAChG,UAAM,YAAY,KAAK,KAAK,SAAS;AACrC,WAAO;AAAA,MACL,QAAQ,UAAU;AAAA,MAClB,gBAAgB,UAAU;AAAA,MAC1B,YAAY,UAAU;AAAA,MACtB,UAAU,KAAK;AAAA,IACjB;AAAA,EACF;AACF;","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 { EventEmitter } from "node:events";
|
|
8
2
|
import {
|
|
9
3
|
FeedStreamCursorExpiredError,
|