From f0f3760aa469d21e2d70e27b2ba2e7ef41938967 Mon Sep 17 00:00:00 2001 From: Devon Kelley Date: Wed, 20 May 2026 17:47:39 -0700 Subject: [PATCH] fix: set kalibr_model_used on response + re-resolve tenant_id if empty in singleton --- kalibr/intelligence.py | 7 ++++++- kalibr/router.py | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/kalibr/intelligence.py b/kalibr/intelligence.py index b5ea93f..596e812 100644 --- a/kalibr/intelligence.py +++ b/kalibr/intelligence.py @@ -677,7 +677,7 @@ def __exit__(self, *args): def _get_intelligence_client() -> KalibrIntelligence: """Get or create the singleton intelligence client. - + Thread-safe singleton pattern using double-checked locking. """ global _intelligence_client @@ -686,6 +686,11 @@ def _get_intelligence_client() -> KalibrIntelligence: # Double-check inside lock to prevent race condition if _intelligence_client is None: _intelligence_client = KalibrIntelligence() + # Re-resolve if tenant_id is empty (env var may have been set after construction) + if not _intelligence_client.tenant_id: + _, tenant_id = resolve_credentials() + if tenant_id: + _intelligence_client.tenant_id = tenant_id return _intelligence_client diff --git a/kalibr/router.py b/kalibr/router.py index c8505a7..2c16e8c 100644 --- a/kalibr/router.py +++ b/kalibr/router.py @@ -894,6 +894,7 @@ def _heal_dispatch(m_id: str, msgs: List[Dict], system_prompt: Optional[str] = N response.kalibr_healed = bool(heal_result.get("healed")) response.kalibr_heal_count = heal_result.get("heal_count", 0) response.kalibr_models_tried = heal_result.get("models_tried") or [] + response.kalibr_model_used = used_model return response # Heal loop exhausted all paths — fire failure telemetry. @@ -1071,6 +1072,7 @@ def _heal_dispatch(m_id: str, msgs: List[Dict], system_prompt: Optional[str] = N # Add trace_id to response for explicit linkage response.kalibr_trace_id = trace_id + response.kalibr_model_used = candidate_model return response except Exception as e: