"""Runtime orchestrator joining Search Gateway, registry, audit and events.""" from __future__ import annotations from typing import Any from .search_audit_store import SearchAuditStore from .search_event_bridge import SearchEventBridge from .search_gateway import SearchGateway, SearchRequest from .search_provider_registry import SearchProviderRegistry class SearchGatewayOrchestrator: def __init__(self): self.registry = SearchProviderRegistry() self.audit = SearchAuditStore() self.events = SearchEventBridge() self.gateway = SearchGateway(self.registry.ordered()) def execute(self, payload: dict[str, Any]) -> dict[str, Any]: request = SearchRequest(**payload) self.events.search_started(request.to_dict()) response = self.gateway.search(request) result = response.to_dict() for attempt in result.get("attempts", []): self.events.provider_attempted(result["request_id"], attempt) if len(result.get("attempts", [])) > 1: self.events.fallback_triggered(result["request_id"], "multiple providers attempted") self.audit.append(result) self.events.search_completed(result) return result def status(self) -> dict[str, Any]: return { "registry": self.registry.status(), "audit": "enabled", "events": "enabled", } __all__ = ["SearchGatewayOrchestrator"]