Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion kalibr/intelligence.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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


Expand Down
2 changes: 2 additions & 0 deletions kalibr/router.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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:
Expand Down
Loading