From 8d8a88680efa1cc39c597c676ea988d85411aaf5 Mon Sep 17 00:00:00 2001 From: Botomir Date: Fri, 10 Jul 2026 08:07:32 +0200 Subject: [PATCH] fix: record fallback routing metadata --- api/streaming.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/api/streaming.py b/api/streaming.py index 8bdef61e..6e7cd24b 100644 --- a/api/streaming.py +++ b/api/streaming.py @@ -7307,6 +7307,27 @@ def _run_agent_streaming( requested_model=resolved_model or model, requested_provider=resolved_provider, ) + # Synthesize routing metadata from the agent's result when the + # hermes fallback chain switched provider/model but didn't + # populate llm_gateway_metadata (result carries 'model'/'provider', + # not 'used_model'/'used_provider' that _extract_... expects). + if not _gateway_routing and isinstance(result, dict): + _result_model = result.get('model') or '' + _result_provider = result.get('provider') or '' + _req_model = resolved_model or model or '' + _req_provider = resolved_provider or '' + if (_result_model and _result_model != _req_model) or \ + (_result_provider and _req_provider and _result_provider != _req_provider): + _gateway_routing = _normalize_gateway_routing_metadata( + { + 'used_model': _result_model, + 'used_provider': _result_provider, + 'requested_model': _req_model, + 'requested_provider': _req_provider, + }, + requested_model=_req_model, + requested_provider=_req_provider, + ) if _gateway_routing: s.gateway_routing = _gateway_routing _history = list(getattr(s, 'gateway_routing_history', None) or [])