Files
aios/active-runtime/app/search_gateway_orchestrator.py
T

42 lines
1.4 KiB
Python

"""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"]