mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-28 06:51:16 +08:00
fix(tui): tighten fast-mode support validation
Distinguish missing model from unsupported model before enabling fast mode and cover both cases so config and live agent state remain untouched on invalid fast toggles.
This commit is contained in:
@@ -781,6 +781,36 @@ def test_config_set_fast_rejects_unsupported_model(monkeypatch):
|
||||
server._sessions.pop("sid", None)
|
||||
|
||||
|
||||
def test_config_set_fast_rejects_missing_model(monkeypatch):
|
||||
writes = []
|
||||
agent = types.SimpleNamespace(
|
||||
model="",
|
||||
request_overrides={},
|
||||
service_tier=None,
|
||||
)
|
||||
server._sessions["sid"] = _session(agent=agent)
|
||||
|
||||
monkeypatch.setattr(
|
||||
server, "_write_config_key", lambda path, value: writes.append((path, value))
|
||||
)
|
||||
|
||||
try:
|
||||
resp = server.handle_request(
|
||||
{
|
||||
"id": "1",
|
||||
"method": "config.set",
|
||||
"params": {"session_id": "sid", "key": "fast", "value": "fast"},
|
||||
}
|
||||
)
|
||||
assert resp["error"]["code"] == 4002
|
||||
assert "without a selected model" in resp["error"]["message"]
|
||||
assert agent.service_tier is None
|
||||
assert agent.request_overrides == {}
|
||||
assert writes == []
|
||||
finally:
|
||||
server._sessions.pop("sid", None)
|
||||
|
||||
|
||||
def test_config_busy_get_and_set(monkeypatch):
|
||||
writes = []
|
||||
|
||||
|
||||
@@ -2905,9 +2905,17 @@ def _(rid, params: dict) -> dict:
|
||||
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()
|
||||
target_model = (
|
||||
getattr(agent, "model", None) if agent is not None else _resolve_model()
|
||||
)
|
||||
if not target_model:
|
||||
return _err(
|
||||
rid,
|
||||
4002,
|
||||
"fast mode is not available without a selected model",
|
||||
)
|
||||
overrides = resolve_fast_mode_overrides(target_model)
|
||||
if not overrides:
|
||||
if overrides is None:
|
||||
return _err(
|
||||
rid,
|
||||
4002,
|
||||
|
||||
Reference in New Issue
Block a user