fix(tui): reject fast mode for unsupported live models

Match classic CLI parity by refusing to enable fast mode when the active model cannot produce fast request overrides, avoiding a misleading fast status with no runtime effect.
This commit is contained in:
Brooklyn Nicholson
2026-04-27 12:55:41 -05:00
parent 8bd5d0667a
commit 4a08f1015a
2 changed files with 52 additions and 9 deletions

View File

@@ -2880,8 +2880,9 @@ def _(rid, params: dict) -> dict:
if key == "fast":
raw = str(value or "").strip().lower()
if session and session.get("agent") is not None:
current_fast = getattr(session["agent"], "service_tier", None) == "priority"
agent = session.get("agent") if session else None
if agent is not None:
current_fast = getattr(agent, "service_tier", None) == "priority"
else:
current_fast = _load_service_tier() == "priority"
@@ -2900,19 +2901,27 @@ def _(rid, params: dict) -> dict:
else:
return _err(rid, 4002, f"unknown fast mode: {value}")
overrides = None
if nv == "fast":
from hermes_cli.models import resolve_fast_mode_overrides
target_model = getattr(agent, "model", None) if agent is not None else _resolve_model()
overrides = resolve_fast_mode_overrides(target_model)
if not overrides:
return _err(
rid,
4002,
"fast mode is not available for this model",
)
_write_config_key("agent.service_tier", nv)
if session and session.get("agent") is not None:
agent = session["agent"]
if agent is not None:
agent.service_tier = "priority" if nv == "fast" else None
current_overrides = dict(getattr(agent, "request_overrides", {}) or {})
current_overrides.pop("service_tier", None)
current_overrides.pop("speed", None)
if nv == "fast":
from hermes_cli.models import resolve_fast_mode_overrides
current_overrides.update(
resolve_fast_mode_overrides(getattr(agent, "model", None)) or {}
)
current_overrides.update(overrides)
agent.request_overrides = current_overrides
_emit(
"session.info",