Refactor backend integration and service architecture
- Removed the backend client compatibility wrapper and associated methods to streamline backend integration. - Updated session management to utilize control plane gateways and runtime configuration providers. - Adjusted TTS service implementations to remove the EdgeTTS service and simplify service dependencies. - Enhanced documentation to reflect changes in backend integration and service architecture. - Updated configuration files to remove deprecated TTS provider options and clarify available settings.
This commit is contained in:
@@ -11,6 +11,13 @@ from loguru import logger
|
||||
|
||||
from app.backend_adapters import build_backend_adapter_from_settings
|
||||
from core.transports import BaseTransport
|
||||
from core.ports import (
|
||||
AssistantRuntimeConfigProvider,
|
||||
ControlPlaneGateway,
|
||||
ConversationHistoryStore,
|
||||
KnowledgeRetriever,
|
||||
ToolCatalog,
|
||||
)
|
||||
from core.duplex_pipeline import DuplexPipeline
|
||||
from core.conversation import ConversationTurn
|
||||
from core.history_bridge import SessionHistoryBridge
|
||||
@@ -97,7 +104,11 @@ class Session:
|
||||
session_id: str,
|
||||
transport: BaseTransport,
|
||||
use_duplex: bool = None,
|
||||
backend_gateway: Optional[Any] = None,
|
||||
control_plane_gateway: Optional[ControlPlaneGateway] = None,
|
||||
runtime_config_provider: Optional[AssistantRuntimeConfigProvider] = None,
|
||||
history_store: Optional[ConversationHistoryStore] = None,
|
||||
knowledge_retriever: Optional[KnowledgeRetriever] = None,
|
||||
tool_catalog: Optional[ToolCatalog] = None,
|
||||
assistant_id: Optional[str] = None,
|
||||
):
|
||||
"""
|
||||
@@ -107,15 +118,24 @@ class Session:
|
||||
session_id: Unique session identifier
|
||||
transport: Transport instance for communication
|
||||
use_duplex: Whether to use duplex pipeline (defaults to settings.duplex_enabled)
|
||||
control_plane_gateway: Optional composite control-plane dependency
|
||||
runtime_config_provider: Optional assistant runtime config provider
|
||||
history_store: Optional conversation history store
|
||||
knowledge_retriever: Optional knowledge retrieval dependency
|
||||
tool_catalog: Optional tool resource catalog
|
||||
"""
|
||||
self.id = session_id
|
||||
self.transport = transport
|
||||
self.use_duplex = use_duplex if use_duplex is not None else settings.duplex_enabled
|
||||
self.audio_frame_bytes = self._compute_audio_frame_bytes()
|
||||
self._assistant_id = str(assistant_id or "").strip() or None
|
||||
self._backend_gateway = backend_gateway or build_backend_adapter_from_settings()
|
||||
self._control_plane_gateway = control_plane_gateway or build_backend_adapter_from_settings()
|
||||
self._runtime_config_provider = runtime_config_provider or self._control_plane_gateway
|
||||
self._history_store = history_store or self._control_plane_gateway
|
||||
self._knowledge_retriever = knowledge_retriever or self._control_plane_gateway
|
||||
self._tool_catalog = tool_catalog or self._control_plane_gateway
|
||||
self._history_bridge = SessionHistoryBridge(
|
||||
history_writer=self._backend_gateway,
|
||||
history_writer=self._history_store,
|
||||
enabled=settings.history_enabled,
|
||||
queue_max_size=settings.history_queue_max_size,
|
||||
retry_max_attempts=settings.history_retry_max_attempts,
|
||||
@@ -128,8 +148,8 @@ class Session:
|
||||
session_id=session_id,
|
||||
system_prompt=settings.duplex_system_prompt,
|
||||
greeting=settings.duplex_greeting,
|
||||
knowledge_searcher=getattr(self._backend_gateway, "search_knowledge_context", None),
|
||||
tool_resource_resolver=getattr(self._backend_gateway, "fetch_tool_resource", None),
|
||||
knowledge_searcher=getattr(self._knowledge_retriever, "search_knowledge_context", None),
|
||||
tool_resource_resolver=getattr(self._tool_catalog, "fetch_tool_resource", None),
|
||||
)
|
||||
|
||||
# Session state
|
||||
@@ -935,18 +955,18 @@ class Session:
|
||||
self,
|
||||
assistant_id: str,
|
||||
) -> tuple[Dict[str, Any], Optional[Dict[str, str]]]:
|
||||
"""Load trusted runtime metadata from backend assistant config."""
|
||||
"""Load trusted runtime metadata from control-plane assistant config."""
|
||||
if not assistant_id:
|
||||
return {}, {
|
||||
"code": "protocol.assistant_id_required",
|
||||
"message": "Missing required query parameter assistant_id",
|
||||
}
|
||||
|
||||
provider = getattr(self._backend_gateway, "fetch_assistant_config", None)
|
||||
provider = getattr(self._runtime_config_provider, "fetch_assistant_config", None)
|
||||
if not callable(provider):
|
||||
return {}, {
|
||||
"code": "assistant.config_unavailable",
|
||||
"message": "Assistant config backend unavailable",
|
||||
"message": "Assistant config control plane unavailable",
|
||||
}
|
||||
|
||||
payload = await provider(str(assistant_id).strip())
|
||||
|
||||
Reference in New Issue
Block a user