diff --git a/tui_gateway/server.py b/tui_gateway/server.py index 0582b745dc..3e7176f9f0 100644 --- a/tui_gateway/server.py +++ b/tui_gateway/server.py @@ -4758,7 +4758,7 @@ def _(rid, params: dict) -> dict: authenticated.append({ "slug": entry.slug, "name": _PROVIDER_LABELS.get(entry.slug, entry.label), - "is_current": False, + "is_current": entry.slug == current_provider, "is_user_defined": False, "models": [], "total_models": 0, @@ -4794,7 +4794,7 @@ def _(rid, params: dict) -> dict: """ try: from hermes_cli.auth import PROVIDER_REGISTRY - from hermes_cli.config import save_env_value + from hermes_cli.config import is_managed, save_env_value from hermes_cli.model_switch import list_authenticated_providers slug = (params.get("slug") or "").strip() @@ -4802,6 +4802,9 @@ def _(rid, params: dict) -> dict: if not slug or not api_key: return _err(rid, 4001, "slug and api_key are required") + if is_managed(): + return _err(rid, 4006, "managed install โ€” credentials are read-only") + pconfig = PROVIDER_REGISTRY.get(slug) if not pconfig: return _err(rid, 4002, f"unknown provider: {slug}") diff --git a/ui-tui/src/components/modelPicker.tsx b/ui-tui/src/components/modelPicker.tsx index ea999e55e2..2b3fec0384 100644 --- a/ui-tui/src/components/modelPicker.tsx +++ b/ui-tui/src/components/modelPicker.tsx @@ -78,6 +78,7 @@ export function ModelPicker({ gw, onCancel, onSelect, sessionId, t }: ModelPicke setModelIdx(0) setKeyInput('') setKeyError('') + setKeySaving(false) return } @@ -383,7 +384,9 @@ export function ModelPicker({ gw, onCancel, onSelect, sessionId, t }: ModelPicke (p, i) => { const authMark = p.authenticated === false ? 'โ—‹' : p.is_current ? '*' : 'โ—' const modelCount = p.total_models ?? p.models?.length ?? 0 - const suffix = p.authenticated === false ? '(no key)' : `${modelCount} models` + const suffix = p.authenticated === false + ? (p.auth_type === 'api_key' ? '(no key)' : '(needs setup)') + : `${modelCount} models` return `${authMark} ${names[i]} ยท ${suffix}` }