From 8bc21c7874da17117b36f906dda35485d91986ef Mon Sep 17 00:00:00 2001 From: Xin Wang Date: Thu, 26 Feb 2026 11:02:15 +0800 Subject: [PATCH] Add detailed logging for session runtime configuration and service resolution --- engine/core/session.py | 44 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/engine/core/session.py b/engine/core/session.py index 4f19eba..4f78545 100644 --- a/engine/core/session.py +++ b/engine/core/session.py @@ -306,6 +306,29 @@ class Session: workflow_runtime = self._bootstrap_workflow(raw_metadata) server_runtime = await self._load_server_runtime_metadata(raw_metadata, workflow_runtime) client_runtime = self._sanitize_client_metadata(raw_metadata) + requested_assistant_id = ( + workflow_runtime.get("assistantId") + or raw_metadata.get("assistantId") + or raw_metadata.get("appId") + or raw_metadata.get("app_id") + ) + if server_runtime: + logger.info( + "Session {} loaded trusted runtime config from backend " + "(requested_assistant_id={}, resolved_assistant_id={}, configVersionId={}, has_services={})", + self.id, + requested_assistant_id, + server_runtime.get("assistantId"), + server_runtime.get("configVersionId") or server_runtime.get("config_version_id"), + isinstance(server_runtime.get("services"), dict), + ) + else: + logger.warning( + "Session {} missing trusted backend runtime config " + "(requested_assistant_id={}); falling back to engine defaults + safe client overrides", + self.id, + requested_assistant_id, + ) metadata = self._merge_runtime_metadata(server_runtime, self._sanitize_untrusted_runtime_metadata(workflow_runtime)) metadata = self._merge_runtime_metadata(metadata, client_runtime) @@ -314,6 +337,27 @@ class Session: # Apply runtime service/prompt overrides from backend if provided self.pipeline.apply_runtime_overrides(metadata) + resolved_preview = self.pipeline.resolved_runtime_config() + resolved_services = resolved_preview.get("services", {}) if isinstance(resolved_preview, dict) else {} + llm_cfg = resolved_services.get("llm", {}) if isinstance(resolved_services, dict) else {} + asr_cfg = resolved_services.get("asr", {}) if isinstance(resolved_services, dict) else {} + tts_cfg = resolved_services.get("tts", {}) if isinstance(resolved_services, dict) else {} + logger.info( + "Session {} effective runtime services " + "(assistantId={}, configVersionId={}, output_mode={}, " + "llm={}/{}, asr={}/{}, tts={}/{}, tts_enabled={})", + self.id, + metadata.get("assistantId") or metadata.get("appId") or metadata.get("app_id"), + metadata.get("configVersionId") or metadata.get("config_version_id"), + (resolved_preview.get("output") or {}).get("mode") if isinstance(resolved_preview, dict) else None, + llm_cfg.get("provider"), + llm_cfg.get("model"), + asr_cfg.get("provider"), + asr_cfg.get("model"), + tts_cfg.get("provider"), + tts_cfg.get("model"), + tts_cfg.get("enabled"), + ) # Start duplex pipeline if not self._pipeline_started: