Merge pull request #2140 into stage-344

Preserve fallback provider credential hints (closes #2133)

# Conflicts:
#	CHANGELOG.md
This commit is contained in:
Hermes Agent 2026-05-12 16:12:54 +00:00
commit a06952ab00
2 changed files with 20 additions and 0 deletions

View file

@ -2770,6 +2770,8 @@ def _run_agent_streaming(
'model': _fb_entry.get('model', ''),
'provider': _fb_entry.get('provider', ''),
'base_url': _fb_entry.get('base_url'),
'api_key': _fb_entry.get('api_key'),
'key_env': _fb_entry.get('key_env'),
}
# Build kwargs defensively — guard newer params so the WebUI

View file

@ -70,3 +70,21 @@ def test_fallback_resolved_initialized_to_none():
assert "_fallback_resolved = None" in block, (
"_fallback_resolved must be initialized to None so callers can rely on its presence"
)
def test_fallback_resolved_preserves_credential_hints():
"""Fallback entries must keep credential hints for AIAgent fallback activation."""
block = _extract_fallback_block()
resolved_start = block.find("_fallback_resolved = {")
assert resolved_start != -1, "_fallback_resolved dict not found"
resolved_end = block.find("}", resolved_start)
resolved_dict = block[resolved_start:resolved_end]
assert "'api_key': _fb_entry.get('api_key')" in resolved_dict, (
"WebUI must preserve fallback_model/fallback_providers api_key so "
"AIAgent._try_activate_fallback can authenticate the fallback."
)
assert "'key_env': _fb_entry.get('key_env')" in resolved_dict, (
"WebUI must preserve fallback_model/fallback_providers key_env so "
"AIAgent._try_activate_fallback can resolve env-backed fallback keys."
)