fix(#3895): carry target model through credential self-heal
This commit is contained in:
parent
e62a31e463
commit
6e133a4f44
2 changed files with 25 additions and 4 deletions
|
|
@ -4614,7 +4614,7 @@ def _replace_session_db_in_kwargs(agent_kwargs, state_db_path):
|
|||
|
||||
|
||||
def _attempt_credential_self_heal(
|
||||
provider_id, session_id, _agent_lock_ref,
|
||||
provider_id, session_id, _agent_lock_ref, *, target_model=None,
|
||||
):
|
||||
"""Try to silently refresh credentials after a 401/auth error (#1401).
|
||||
|
||||
|
|
@ -4662,6 +4662,7 @@ def _attempt_credential_self_heal(
|
|||
_new_rt = resolve_runtime_provider_with_anthropic_env_lock(
|
||||
resolve_runtime_provider,
|
||||
requested=provider_id,
|
||||
target_model=target_model,
|
||||
)
|
||||
|
||||
logger.info(
|
||||
|
|
@ -6789,6 +6790,7 @@ def _run_agent_streaming(
|
|||
_heal_result = None
|
||||
_heal_rt = _attempt_credential_self_heal(
|
||||
resolved_provider or '', session_id, _agent_lock,
|
||||
target_model=resolved_model,
|
||||
)
|
||||
if _heal_rt is not None:
|
||||
logger.info('[webui] self-heal: retrying stream after credential refresh')
|
||||
|
|
@ -7742,6 +7744,7 @@ def _run_agent_streaming(
|
|||
# ── Credential self-heal on 401 (#1401) ──
|
||||
_heal_rt = _attempt_credential_self_heal(
|
||||
resolved_provider or '', session_id, _agent_lock,
|
||||
target_model=resolved_model,
|
||||
)
|
||||
if _heal_rt is not None:
|
||||
logger.info('[webui] self-heal (except path): retrying stream after credential refresh')
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
import pathlib
|
||||
import queue
|
||||
import re
|
||||
import sys
|
||||
import types
|
||||
from unittest import mock
|
||||
|
|
@ -191,6 +192,23 @@ def test_streaming_reuses_runtime_base_url_helper_in_self_heal_paths():
|
|||
source = (pathlib.Path(__file__).parent.parent / "api" / "streaming.py").read_text(
|
||||
encoding="utf-8"
|
||||
)
|
||||
assert "resolved_base_url = _runtime_preferred_base_url(\n _rt, resolved_provider, configured_base_url\n )" in source
|
||||
assert "resolved_base_url = _runtime_preferred_base_url(\n _heal_rt, resolved_provider, configured_base_url\n )" in source
|
||||
assert "resolved_base_url = _runtime_preferred_base_url(\n _heal_rt, resolved_provider, configured_base_url\n )" in source
|
||||
assert re.search(
|
||||
r"resolved_base_url\s*=\s*_runtime_preferred_base_url\(\s*_rt,\s*resolved_provider,\s*configured_base_url\s*\)",
|
||||
source,
|
||||
)
|
||||
assert len(
|
||||
re.findall(
|
||||
r"resolved_base_url\s*=\s*_runtime_preferred_base_url\(\s*_heal_rt,\s*resolved_provider,\s*configured_base_url\s*\)",
|
||||
source,
|
||||
)
|
||||
) == 2
|
||||
assert len(
|
||||
re.findall(
|
||||
r"_attempt_credential_self_heal\(\s*resolved_provider\s+or\s+['\"]{2},\s*session_id,\s*_agent_lock,\s*target_model=resolved_model,\s*\)",
|
||||
source,
|
||||
)
|
||||
) == 2
|
||||
assert re.search(
|
||||
r"resolve_runtime_provider_with_anthropic_env_lock\(\s*resolve_runtime_provider,\s*requested=provider_id,\s*target_model=target_model,\s*\)",
|
||||
source,
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in a new issue