From 1b2a6beb4e95934de93b1d8d1a59f55598536003 Mon Sep 17 00:00:00 2001 From: Wibias <37517432+Wibias@users.noreply.github.com> Date: Fri, 14 Aug 2026 00:28:20 +0200 Subject: [PATCH 01/14] fix: recover provider model discovery --- .../provider-discovery-recovery.png | Bin 0 -> 231477 bytes .../src/content/docs/guides/providers.md | 6 ++ .../src/content/docs/guides/web-dashboard.md | 2 +- .../provider-workspace/ProviderSettings.tsx | 17 +++-- gui/src/i18n/de.ts | 4 + gui/src/i18n/en.ts | 4 + gui/src/i18n/ja.ts | 4 + gui/src/i18n/ko.ts | 4 + gui/src/i18n/ru.ts | 4 + gui/src/i18n/tr.ts | 4 + gui/src/i18n/zh-TW.ts | 4 + gui/src/i18n/zh.ts | 4 + gui/src/models-groups.ts | 2 + gui/src/pages/Models.tsx | 8 +- gui/src/pages/models-provider-hints.tsx | 8 +- gui/src/pages/models-shared.ts | 15 +++- gui/src/provider-workspace/catalog.ts | 2 + gui/tests/models-empty-provider.test.tsx | 19 ++++- ...r-settings-live-models-provenance.test.tsx | 30 ++++++++ src/providers/derive.ts | 13 +++- src/providers/registry.ts | 24 +++++- src/router.ts | 8 ++ src/server/auth-cors.ts | 12 ++- src/server/management/provider-routes.ts | 16 +++- tests/cline-pass-provider.test.ts | 14 +++- tests/management-provider-validation.test.ts | 48 ++++++++++++ tests/mimo-free-provider.test.ts | 69 +++++++++++++++++- tests/server-auth.test.ts | 7 +- 28 files changed, 314 insertions(+), 38 deletions(-) create mode 100644 docs-site/public/pr-screenshots/provider-discovery-recovery.png diff --git a/docs-site/public/pr-screenshots/provider-discovery-recovery.png b/docs-site/public/pr-screenshots/provider-discovery-recovery.png new file mode 100644 index 0000000000000000000000000000000000000000..76d58d252077429b39101177914d9ab70fb8df6c GIT binary patch literal 231477 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

YYX#Nm>q_f&HEpBMrlS083ANZFuOEH$gU?h&o9# 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 z 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 A761SM literal 0 HcmV?d00001 diff --git a/docs-site/src/content/docs/guides/providers.md b/docs-site/src/content/docs/guides/providers.md index 46348e5371..a895101933 100644 --- a/docs-site/src/content/docs/guides/providers.md +++ b/docs-site/src/content/docs/guides/providers.md @@ -245,6 +245,12 @@ full model slug sent upstream. ClinePass quota is shared by the account across r weekly, and monthly limits. A 2026-08-13 live probe verified that every static ClinePass model accepts `low`, `medium`, `high`, `xhigh`, and `max` at the gateway input boundary. opencodex preserves those requested tiers; any backend-specific normalization remains ClinePass's responsibility. +Cline documents the Chat Completions route but not an OpenAI-compatible `GET /models` route, so +opencodex uses the maintained subscription catalog instead of sending an unsupported discovery probe. + +**MiMo Free** also uses a maintained static catalog. Its anonymous JWT-backed chat endpoint has no +model-list contract; `mimo-auto` remains available without an API key and opencodex does not append +an invalid `/models` probe to the chat URL. **Cline** is the same API key and endpoint on pay-as-you-go usage billing across 100+ models (OpenRouter-style ids like `anthropic/claude-sonnet-4-6`). Cline's promotional free models are only diff --git a/docs-site/src/content/docs/guides/web-dashboard.md b/docs-site/src/content/docs/guides/web-dashboard.md index a32643fbb6..3f34dff792 100644 --- a/docs-site/src/content/docs/guides/web-dashboard.md +++ b/docs-site/src/content/docs/guides/web-dashboard.md @@ -49,7 +49,7 @@ the browser or password manager's decision. | **Add provider** | Search registry-backed presets for account login, API-key services, local servers, or a custom endpoint. | | **Codex Auth** | Add ChatGPT/Codex pool accounts, select the next-session account, refresh 5h / weekly / 30d quotas, enable or disable quota auto-switch, set its 1–100% threshold, and configure transient-failure failover. | | **Subagents** | Feature up to five bare native or namespaced routed models in the `spawn_agent` override list. | -| **Models** | Toggle native GPT and routed models, set provider allowlists and context caps, choose v1/base/v2, and configure the v2 thread limit. Configured providers stay visible as zero-model groups when discovery is off or returns no rows. | +| **Models** | Toggle native GPT and routed models, set provider allowlists and context caps, choose v1/base/v2, and configure the v2 thread limit. Configured providers stay visible as zero-model groups when discovery is off or returns no rows. When discovery fails, the badge hover keeps configured fallback models explicit and directs OAuth providers to re-login; other providers link to endpoint and discovery settings. | | **Logs** | Auto-refresh recent requests with tokens, requested effort and (when available) effective outbound effort, resolved model, provider, status, request id, duration, and error details. The detail view includes the exact reasoning wire field when the adapter emits one. Filter by opaque conversation/session id (when the client sends one) to total tokens and estimated list-price cost for the currently loaded Logs ring. | | **Usage / Debug** | Inspect token-usage coverage and trends, or enable opt-in provider transport and usage-extraction diagnostics. | | **Storage** | Read-only CODEX_HOME disk breakdown (sessions, archives, DBs, attachments). Optional archived cleanup: preview the oldest N%, then quarantine to `CODEX_HOME/.trash` (default) or permanently delete behind an explicit checkbox. **Auto-cleanup policy** is opt-in and **default OFF** (`storageCleanupPolicy.enabled`); configure threshold/target/schedule/mode on the Storage page, or trigger **Run now**. Quarantined entries can be restored from the Storage page (JSONL + threads). Active sessions stay read-only. Cleanup and restore are refused while Codex holds the newest/active `state_*.sqlite` locked. | diff --git a/gui/src/components/provider-workspace/ProviderSettings.tsx b/gui/src/components/provider-workspace/ProviderSettings.tsx index 26ca85fa35..4c81633a2b 100644 --- a/gui/src/components/provider-workspace/ProviderSettings.tsx +++ b/gui/src/components/provider-workspace/ProviderSettings.tsx @@ -36,7 +36,7 @@ export default function ProviderSettings({ onRegisterSave?: (save: (() => Promise) | null) => void; }) { const t = useT(); - const initialAuth = String(item.authMode ?? (item.keyOptional ? "local" : "key")); + const initialAuth = String(item.authMode ?? "key"); const [adapter, setAdapter] = useState(item.adapter); const [baseUrl, setBaseUrl] = useState(item.baseUrl); const [defaultModel, setDefaultModel] = useState(item.defaultModel ?? ""); @@ -59,7 +59,7 @@ export default function ProviderSettings({ setAdapter(item.adapter); setBaseUrl(item.baseUrl); setDefaultModel(item.defaultModel ?? ""); - setAuthMode(String(item.authMode ?? (item.keyOptional ? "local" : "key"))); + setAuthMode(String(item.authMode ?? "key")); setApiKeyTransport(item.apiKeyTransport ?? "x-api-key"); setNote(item.note ?? ""); setAllowPrivateNetwork(item.allowPrivateNetwork ?? false); @@ -112,7 +112,7 @@ export default function ProviderSettings({ const dirty = adapter.trim() !== item.adapter || baseUrl.trim() !== item.baseUrl || defaultModel.trim() !== (item.defaultModel ?? "") - || authMode !== String(item.authMode ?? (item.keyOptional ? "local" : "key")) + || authMode !== String(item.authMode ?? "key") || (adapter.trim() === "anthropic" && authMode === "key" && apiKeyTransport !== (item.apiKeyTransport ?? "x-api-key")) || note.trim() !== (item.note ?? "") || allowPrivateNetwork !== (item.allowPrivateNetwork ?? false) @@ -335,10 +335,17 @@ export default function ProviderSettings({ {t("pws.allowPrivateNetwork")} {dirty && ( diff --git a/gui/src/i18n/de.ts b/gui/src/i18n/de.ts index 1ddf5a014f..22587a71a7 100644 --- a/gui/src/i18n/de.ts +++ b/gui/src/i18n/de.ts @@ -560,6 +560,9 @@ export const de: Record = { "models.discoveryFailedNetwork": "Die Modellerkennung ist an einem Netzwerkfehler gescheitert.", "models.discoveryFailedProvider": "Der Anbieter meldete einen Fehler bei der Modellerkennung.", "models.discoveryFailedGeneric": "Die Modellerkennung ist fehlgeschlagen.", + "models.discoveryRecoveryReauth": "Melden Sie sich erneut an, um die Live-Modellerkennung wiederherzustellen. Konfigurierte Modelle bleiben verfügbar.", + "models.discoveryRecoverySettings": "Konfigurierte Modelle bleiben verfügbar. Prüfen Sie den Endpunkt oder deaktivieren Sie die Live-Modellerkennung in den Anbietereinstellungen.", + "models.openProviderLogin": "Anbieter-Anmeldung öffnen", "models.openProviderSettings": "Anbietereinstellungen öffnen", "models.loading": "Lädt…", "models.search": "Modelle suchen…", @@ -1642,6 +1645,7 @@ export const de: Record = { "pws.allowPrivateNetwork": "Lokales/privates Netzwerk erlauben", "pws.liveModels": "Modelle beim Anbieter erkennen", "pws.liveModelsDesc": "Lädt den Live-Modellkatalog des Anbieters. Ausschalten, um nur konfigurierte statische Modelle zu verwenden.", + "pws.liveModelsUnsupportedDesc": "Dieser Anbieter hat keinen Endpunkt für die Modellliste. OpenCodex verwendet seinen gepflegten statischen Katalog.", "pws.optionalPlaceholder": "Optional", "pws.providerId": "Anbieter-ID", "pws.reauth": "Erneute Anmeldung erforderlich", diff --git a/gui/src/i18n/en.ts b/gui/src/i18n/en.ts index 2d2fc96606..5000030fe7 100644 --- a/gui/src/i18n/en.ts +++ b/gui/src/i18n/en.ts @@ -585,6 +585,9 @@ export const en = { "models.discoveryFailedNetwork": "Model discovery failed due to a network error.", "models.discoveryFailedProvider": "The provider reported a model discovery error.", "models.discoveryFailedGeneric": "Model discovery failed.", + "models.discoveryRecoveryReauth": "Re-login to restore live model discovery. Configured models remain available.", + "models.discoveryRecoverySettings": "Configured models remain available. Check the endpoint or disable live model discovery in provider settings.", + "models.openProviderLogin": "Open provider login", "models.openProviderSettings": "Open provider settings", "models.loading": "Loading…", "models.search": "Search models…", @@ -1153,6 +1156,7 @@ export const en = { "pws.allowPrivateNetwork": "Allow local/private network", "pws.liveModels": "Discover models from provider", "pws.liveModelsDesc": "Fetch the provider's live model catalog. Turn this off to use only configured/static models.", + "pws.liveModelsUnsupportedDesc": "This provider has no model-list endpoint. OpenCodex uses its maintained static catalog.", "pws.optionalPlaceholder": "Optional", "pws.providerId": "Provider ID", "pws.reauth": "Needs re-auth", diff --git a/gui/src/i18n/ja.ts b/gui/src/i18n/ja.ts index d87f58f9de..6a60def98a 100644 --- a/gui/src/i18n/ja.ts +++ b/gui/src/i18n/ja.ts @@ -541,6 +541,9 @@ export const ja: Record = { "models.discoveryFailedNetwork": "ネットワークエラーによりモデル検出に失敗しました。", "models.discoveryFailedProvider": "プロバイダーがモデル検出エラーを報告しました。", "models.discoveryFailedGeneric": "モデル検出に失敗しました。", + "models.discoveryRecoveryReauth": "再ログインしてライブモデル検出を復元してください。設定済みのモデルは引き続き使用できます。", + "models.discoveryRecoverySettings": "設定済みのモデルは引き続き使用できます。エンドポイントを確認するか、プロバイダー設定でライブモデル検出を無効にしてください。", + "models.openProviderLogin": "プロバイダーログインを開く", "models.openProviderSettings": "プロバイダー設定を開く", "models.loading": "読み込み中…", "models.search": "モデルを検索…", @@ -1095,6 +1098,7 @@ export const ja: Record = { "pws.allowPrivateNetwork": "ローカル/プライベートネットワークを許可", "pws.liveModels": "プロバイダーからモデルを検出", "pws.liveModelsDesc": "プロバイダーのライブモデルカタログを取得します。オフにすると設定済みの静的モデルのみを使用します。", + "pws.liveModelsUnsupportedDesc": "このプロバイダーにはモデル一覧エンドポイントがありません。OpenCodex は管理された静的カタログを使用します。", "pws.optionalPlaceholder": "任意", "pws.providerId": "プロバイダー ID", "pws.reauth": "再認証が必要", diff --git a/gui/src/i18n/ko.ts b/gui/src/i18n/ko.ts index bbf55e9071..7ff4a4d62f 100644 --- a/gui/src/i18n/ko.ts +++ b/gui/src/i18n/ko.ts @@ -571,6 +571,9 @@ export const ko: Record = { "models.discoveryFailedNetwork": "네트워크 오류로 모델 검색에 실패했습니다.", "models.discoveryFailedProvider": "프로바이더가 모델 검색 오류를 보고했습니다.", "models.discoveryFailedGeneric": "모델 검색에 실패했습니다.", + "models.discoveryRecoveryReauth": "다시 로그인하여 실시간 모델 검색을 복구하세요. 구성된 모델은 계속 사용할 수 있습니다.", + "models.discoveryRecoverySettings": "구성된 모델은 계속 사용할 수 있습니다. 엔드포인트를 확인하거나 프로바이더 설정에서 실시간 모델 검색을 끄세요.", + "models.openProviderLogin": "프로바이더 로그인 열기", "models.openProviderSettings": "프로바이더 설정 열기", "models.loading": "불러오는 중…", "models.search": "모델 검색…", @@ -1669,6 +1672,7 @@ export const ko: Record = { "pws.allowPrivateNetwork": "로컬/사설 네트워크 허용", "pws.liveModels": "프로바이더에서 모델 검색", "pws.liveModelsDesc": "프로바이더의 실시간 모델 카탈로그를 가져옵니다. 끄면 설정된 정적 모델만 사용합니다.", + "pws.liveModelsUnsupportedDesc": "이 프로바이더에는 모델 목록 엔드포인트가 없습니다. OpenCodex는 관리되는 정적 카탈로그를 사용합니다.", "pws.optionalPlaceholder": "선택사항", "pws.providerId": "프로바이더 ID", "pws.reauth": "재인증 필요", diff --git a/gui/src/i18n/ru.ts b/gui/src/i18n/ru.ts index 60064fd394..c66357df2a 100644 --- a/gui/src/i18n/ru.ts +++ b/gui/src/i18n/ru.ts @@ -573,6 +573,9 @@ export const ru: Record = { "models.discoveryFailedNetwork": "Обнаружение моделей не удалось из-за сетевой ошибки.", "models.discoveryFailedProvider": "Провайдер сообщил об ошибке обнаружения моделей.", "models.discoveryFailedGeneric": "Не удалось обнаружить модели.", + "models.discoveryRecoveryReauth": "Войдите снова, чтобы восстановить обнаружение моделей. Настроенные модели остаются доступными.", + "models.discoveryRecoverySettings": "Настроенные модели остаются доступными. Проверьте конечную точку или отключите обнаружение моделей в настройках провайдера.", + "models.openProviderLogin": "Открыть вход провайдера", "models.openProviderSettings": "Открыть настройки провайдера", "models.loading": "Загрузка…", "models.search": "Поиск моделей…", @@ -1137,6 +1140,7 @@ export const ru: Record = { "pws.allowPrivateNetwork": "Разрешить локальную/частную сеть", "pws.liveModels": "Обнаруживать модели провайдера", "pws.liveModelsDesc": "Загружать актуальный каталог моделей провайдера. Выключите, чтобы использовать только настроенные статические модели.", + "pws.liveModelsUnsupportedDesc": "У этого провайдера нет эндпоинта списка моделей. OpenCodex использует поддерживаемый статический каталог.", "pws.optionalPlaceholder": "Необязательно", "pws.providerId": "ID провайдера", "pws.reauth": "Нужна переавторизация", diff --git a/gui/src/i18n/tr.ts b/gui/src/i18n/tr.ts index 32b11d6196..82a7ed3eb9 100644 --- a/gui/src/i18n/tr.ts +++ b/gui/src/i18n/tr.ts @@ -576,6 +576,9 @@ export const tr: Record = { "models.discoveryFailedNetwork": "Model keşfi ağ hatası nedeniyle başarısız oldu.", "models.discoveryFailedProvider": "Sağlayıcı bir model keşfi hatası bildirdi.", "models.discoveryFailedGeneric": "Model keşfi başarısız oldu.", + "models.discoveryRecoveryReauth": "Canlı model keşfini geri yüklemek için yeniden giriş yapın. Yapılandırılmış modeller kullanılabilir durumda kalır.", + "models.discoveryRecoverySettings": "Yapılandırılmış modeller kullanılabilir durumda kalır. Uç noktayı kontrol edin veya sağlayıcı ayarlarında canlı model keşfini kapatın.", + "models.openProviderLogin": "Sağlayıcı girişini aç", "models.openProviderSettings": "Sağlayıcı ayarlarını aç", "models.loading": "Yükleniyor…", "models.search": "Modellerde ara…", @@ -1144,6 +1147,7 @@ export const tr: Record = { "pws.allowPrivateNetwork": "Yerel/özel ağa izin ver", "pws.liveModels": "Sağlayıcıdan canlı model keşfet", "pws.liveModelsDesc": "Sağlayıcının canlı model kataloğunu çekin.", + "pws.liveModelsUnsupportedDesc": "Bu sağlayıcının model listesi uç noktası yoktur. OpenCodex bakımı yapılan statik kataloğunu kullanır.", "pws.optionalPlaceholder": "İsteğe bağlı", "pws.providerId": "Sağlayıcı ID", "pws.reauth": "Yeniden doğrulama gerekiyor", diff --git a/gui/src/i18n/zh-TW.ts b/gui/src/i18n/zh-TW.ts index 3edb42ebb9..3d9483b7cc 100644 --- a/gui/src/i18n/zh-TW.ts +++ b/gui/src/i18n/zh-TW.ts @@ -441,6 +441,9 @@ export const zhTW: Record = { "models.discoveryFailedNetwork": "由於網路錯誤,模型發現失敗。", "models.discoveryFailedProvider": "供應商報告了模型發現錯誤。", "models.discoveryFailedGeneric": "模型發現失敗。", + "models.discoveryRecoveryReauth": "請重新登入以恢復即時模型發現。已設定的模型仍可使用。", + "models.discoveryRecoverySettings": "已設定的模型仍可使用。請檢查端點,或在供應商設定中關閉即時模型發現。", + "models.openProviderLogin": "開啟供應商登入", "models.openProviderSettings": "開啟供應商設定", "models.loading": "載入中…", "models.search": "搜尋模型…", @@ -934,6 +937,7 @@ export const zhTW: Record = { "pws.allowPrivateNetwork": "允許本地/私有網路", "pws.liveModels": "從供應商發現模型", "pws.liveModelsDesc": "取得供應商的即時模型目錄。關閉後僅使用已配置的靜態模型。", + "pws.liveModelsUnsupportedDesc": "此供應商沒有模型清單端點。OpenCodex 將使用其維護的靜態目錄。", "pws.optionalPlaceholder": "可選", "pws.providerId": "供應商 ID", "pws.reauth": "需要重新認證", diff --git a/gui/src/i18n/zh.ts b/gui/src/i18n/zh.ts index 899e1fd6c2..951fedc159 100644 --- a/gui/src/i18n/zh.ts +++ b/gui/src/i18n/zh.ts @@ -568,6 +568,9 @@ export const zh: Record = { "models.discoveryFailedNetwork": "由于网络错误,模型发现失败。", "models.discoveryFailedProvider": "提供方报告了模型发现错误。", "models.discoveryFailedGeneric": "模型发现失败。", + "models.discoveryRecoveryReauth": "请重新登录以恢复实时模型发现。已配置的模型仍可使用。", + "models.discoveryRecoverySettings": "已配置的模型仍可使用。请检查端点,或在提供方设置中关闭实时模型发现。", + "models.openProviderLogin": "打开提供方登录", "models.openProviderSettings": "打开提供方设置", "models.loading": "加载中…", "models.search": "搜索模型…", @@ -1662,6 +1665,7 @@ export const zh: Record = { "pws.allowPrivateNetwork": "允许本地/私有网络", "pws.liveModels": "从提供方发现模型", "pws.liveModelsDesc": "获取提供方的实时模型目录。关闭后仅使用已配置的静态模型。", + "pws.liveModelsUnsupportedDesc": "此提供方没有模型列表端点。OpenCodex 将使用其维护的静态目录。", "pws.optionalPlaceholder": "可选", "pws.providerId": "提供商 ID", "pws.reauth": "需要重新认证", diff --git a/gui/src/models-groups.ts b/gui/src/models-groups.ts index e6cce7f5cf..f9a5df4a6b 100644 --- a/gui/src/models-groups.ts +++ b/gui/src/models-groups.ts @@ -21,6 +21,7 @@ export interface ConfiguredProviderSummary { export interface ProviderModelGroup { provider: string; + authMode?: string; rows: Row[]; native: boolean; liveModels: boolean; @@ -56,6 +57,7 @@ export function buildProviderModelGroups 0 && providerRows.every(row => row.native === true), liveModels: configured?.liveModels !== false, diff --git a/gui/src/pages/Models.tsx b/gui/src/pages/Models.tsx index bf63718c2c..874c4210a5 100644 --- a/gui/src/pages/Models.tsx +++ b/gui/src/pages/Models.tsx @@ -48,7 +48,7 @@ import { THREAD_OPTION_SET, THREAD_OPTIONS, writeCollapsedProviders, - discoveryFailureLabel, + discoveryFailureTitle, type ModelRow, type ProviderContextCapsResponse, type ShadowCallData, @@ -912,7 +912,7 @@ export default function Models({ apiBase }: { apiBase: string }) { const selectedModelMap = selectedModels ?? {}; const renderGroup = (group: ProviderModelGroup) => { - const { provider, rows, native, liveModels, discovery } = group; + const { provider, rows, native, liveModels, discovery, authMode } = group; const isCollapsed = collapsed.has(provider); // Final visibility, not just the disable flag: a model is visible to Codex only when the // provider allowlist admits it AND it is not disabled. Reading `disabled` alone made the @@ -970,7 +970,7 @@ export default function Models({ apiBase }: { apiBase: string }) { {t("models.discoveryFailedBadge")} @@ -1054,7 +1054,7 @@ export default function Models({ apiBase }: { apiBase: string }) {

{isNative &&

{t("models.nativeHint")}

} {rows.length === 0 && ( - + )} {rows.length > PAGE / 2 && ( {failed && showFailureBadge && <>{t("models.discoveryFailedBadge")}{" "}} {failed - ? `${discoveryFailureLabel(t, failed)} ` + ? `${discoveryFailureLabel(t, failed)} ${discoveryRecoveryLabel(t, authMode)} ` : `${t(liveModels ? "models.emptyDiscovery" : "models.emptyDiscoveryDisabled")} `}
diff --git a/gui/src/pages/models-shared.ts b/gui/src/pages/models-shared.ts index ab845a13c4..cde4a727ee 100644 --- a/gui/src/pages/models-shared.ts +++ b/gui/src/pages/models-shared.ts @@ -25,6 +25,20 @@ export function discoveryFailureLabel( } } +export function discoveryRecoveryLabel(t: TFn, authMode?: string): string { + return authMode === "oauth" + ? t("models.discoveryRecoveryReauth") + : t("models.discoveryRecoverySettings"); +} + +export function discoveryFailureTitle( + t: TFn, + discovery: Extract, + authMode?: string, +): string { + return `${discoveryFailureLabel(t, discovery)} ${discoveryRecoveryLabel(t, authMode)}`; +} + export interface ModelRow { provider: string; id: string; @@ -123,4 +137,3 @@ export function writeCollapsedProviders(collapsed: Set, storage: Storage } } - diff --git a/gui/src/provider-workspace/catalog.ts b/gui/src/provider-workspace/catalog.ts index 847d0ae326..1a80637f5f 100644 --- a/gui/src/provider-workspace/catalog.ts +++ b/gui/src/provider-workspace/catalog.ts @@ -38,6 +38,8 @@ export interface WorkspaceProvider { models?: string[]; /** Whether the proxy fetches the provider's live model catalog (default true). */ liveModels?: boolean; + /** False when the canonical provider has no model-list endpoint contract. */ + liveModelDiscoverySupported?: boolean; authMode?: "key" | "forward" | "oauth" | "local" | string; keyOptional?: boolean; /** Free pricing (may still require an API key). */ diff --git a/gui/tests/models-empty-provider.test.tsx b/gui/tests/models-empty-provider.test.tsx index 442e96bf17..6749e37b9c 100644 --- a/gui/tests/models-empty-provider.test.tsx +++ b/gui/tests/models-empty-provider.test.tsx @@ -49,10 +49,10 @@ afterEach(() => { }); }); -function renderHint(liveModels: boolean, discovery?: ProviderDiscoverySummary): string { +function renderHint(liveModels: boolean, discovery?: ProviderDiscoverySummary, authMode?: string): string { return renderToStaticMarkup( - + , ); } @@ -152,6 +152,7 @@ test("Models page combines final visibility, atomic actions, discovery status, a if (url.endsWith("/api/providers")) { return Response.json([{ name: provider, + authMode: "oauth", liveModels: true, models: ids, contextWindow: providerContextWindow, @@ -218,7 +219,10 @@ test("Models page combines final visibility, atomic actions, discovery status, a expect(container.textContent).toContain("2/5 visible"); expect(switchFor("gemini-pro").getAttribute("aria-pressed")).toBe("true"); expect(switchFor("claude-sonnet").getAttribute("aria-pressed")).toBe("false"); - expect(container.querySelector(".badge.badge-amber")?.textContent).toContain("Discovery failed"); + const discoveryBadge = container.querySelector(".badge.badge-amber"); + expect(discoveryBadge?.textContent).toContain("Discovery failed"); + expect(discoveryBadge?.title).toContain("Re-login to restore live model discovery"); + expect(discoveryBadge?.title).toContain("Configured models remain available"); expect(container.textContent).not.toContain("Not selected"); await act(async () => buttonText("Context windows").click()); @@ -546,6 +550,15 @@ test("failed HTTP discovery renders an amber status badge and reason", () => { expect(html).toContain('class="badge badge-amber"'); expect(html).toContain('role="status"'); expect(html).toContain('class="link-btn"'); + expect(html).toContain("Configured models remain available"); + expect(html).toContain("Check the endpoint or disable live model discovery"); +}); + +test("OAuth discovery failure tells the user to re-login", () => { + const html = renderHint(true, { status: "failed", reason: "http", httpStatus: 400 }, "oauth"); + expect(html).toContain("Re-login to restore live model discovery"); + expect(html).toContain("Configured models remain available"); + expect(html).toContain("Open provider login"); }); test("failed discovery renders each server-owned reason without provider detail", () => { diff --git a/gui/tests/provider-settings-live-models-provenance.test.tsx b/gui/tests/provider-settings-live-models-provenance.test.tsx index 097780177e..d95c75539f 100644 --- a/gui/tests/provider-settings-live-models-provenance.test.tsx +++ b/gui/tests/provider-settings-live-models-provenance.test.tsx @@ -115,3 +115,33 @@ test("changing an explicit false to true sends an explicit liveModels choice", a expect(patches[0]?.liveModels).toBe(true); await act(async () => { root.unmount(); }); }); + +test("an optional-key preset never submits local auth while changing discovery", async () => { + const { root, container, patches } = await mountSettings({ + name: "mimo-free", + adapter: "mimo-free", + baseUrl: "https://api.xiaomimimo.com/api/free-ai/openai/chat", + defaultModel: "mimo-auto", + keyOptional: true, + liveModels: true, + } as WorkspaceItem); + const toggles = container.querySelectorAll('input[type="checkbox"]'); + + await act(async () => { toggles[1]!.click(); }); + await save(container); + + expect(patches[0]).toMatchObject({ authMode: "key", liveModels: false }); + await act(async () => { root.unmount(); }); +}); + +test("an unsupported provider disables the live-discovery toggle", async () => { + const { root, container } = await mountSettings({ + ...provider(false), + liveModelDiscoverySupported: false, + } as WorkspaceItem); + const toggles = container.querySelectorAll('input[type="checkbox"]'); + + expect(toggles[1]?.disabled).toBe(true); + expect(container.textContent).toContain("This provider has no model-list endpoint. OpenCodex uses its maintained static catalog."); + await act(async () => { root.unmount(); }); +}); diff --git a/src/providers/derive.ts b/src/providers/derive.ts index 0aef212180..9efd7a7bb6 100644 --- a/src/providers/derive.ts +++ b/src/providers/derive.ts @@ -395,13 +395,22 @@ export function enrichProviderFromRegistry(name: string, prov: OcxProviderConfig modelReasoningEffortMap: prov.modelReasoningEffortMap, }; const seed = providerConfigSeed(entry); + // `mimo-free` shipped with an invalid `local` mode before the registry key contract became + // authoritative. Repair only that exact canonical row; custom destinations fail the transport + // match above and keep their operator-owned credential mode. + if (name === "mimo-free" && prov.authMode === "local" && seed.authMode === "key") prov.authMode = "key"; if (prov.apiKeyTransport === undefined && seed.apiKeyTransport !== undefined) prov.apiKeyTransport = seed.apiKeyTransport; if (!prov.defaultModel && seed.defaultModel) prov.defaultModel = seed.defaultModel; if (prov.responsesPath === undefined && seed.responsesPath !== undefined) prov.responsesPath = seed.responsesPath; // Fill mode only when absent: an explicit persisted `direct` must never be overwritten. if (prov.codexAccountMode === undefined && seed.codexAccountMode !== undefined) prov.codexAccountMode = seed.codexAccountMode; - if (!prov.models && seed.models) prov.models = [...seed.models]; - if (prov.liveModels === undefined && seed.liveModels !== undefined) prov.liveModels = seed.liveModels; + if (entry.liveModelDiscoverySupported === false && seed.models) prov.models = [...seed.models]; + else if (!prov.models && seed.models) prov.models = [...seed.models]; + // An exact canonical preset with a static-only registry contract cannot honor a stale saved + // discovery opt-in: there is no supported endpoint to call. Custom destinations fail the + // transport match above and keep their explicit operator setting. + if (entry.liveModelDiscoverySupported === false) prov.liveModels = false; + else if (prov.liveModels === undefined && seed.liveModels !== undefined) prov.liveModels = seed.liveModels; if (prov.contextWindow === undefined && seed.contextWindow !== undefined) prov.contextWindow = seed.contextWindow; if (!prov.modelContextWindows && seed.modelContextWindows) prov.modelContextWindows = { ...seed.modelContextWindows }; if (seed.modelInputModalities) prov.modelInputModalities = fillRecordOfArrays(seed.modelInputModalities, prov.modelInputModalities); diff --git a/src/providers/registry.ts b/src/providers/registry.ts index 975f778782..838fbaa492 100644 --- a/src/providers/registry.ts +++ b/src/providers/registry.ts @@ -149,6 +149,8 @@ export interface ProviderRegistryEntry { defaultModel?: string; models?: string[]; liveModels?: boolean; + /** Registry-only capability: false when the provider has no model-list endpoint contract. */ + liveModelDiscoverySupported?: false; /** * Registry-only per-model wire defaults for mixed OpenAI-compatible gateways. * These are intentionally not seeded into saved config: an explicit `modelAdapters` @@ -860,6 +862,7 @@ const CLINE_PASS_MODELS = [ "cline-pass/mimo-v2.5", "cline-pass/mimo-v2.5-pro", "cline-pass/minimax-m3", + "cline-pass/qwen3.8-max", "cline-pass/qwen3.7-max", "cline-pass/qwen3.7-plus", ]; @@ -884,9 +887,10 @@ const CLINE_PASS_IMAGE_MODELS = new Set([ "cline-pass/minimax-m3", "cline-pass/qwen3.7-plus", ]); -const CLINE_PASS_TEXT_ONLY_MODELS = CLINE_PASS_MODELS.filter(id => !CLINE_PASS_IMAGE_MODELS.has(id)); +const CLINE_PASS_MODALITY_KNOWN_MODELS = CLINE_PASS_MODELS.filter(id => id !== "cline-pass/qwen3.8-max"); +const CLINE_PASS_TEXT_ONLY_MODELS = CLINE_PASS_MODALITY_KNOWN_MODELS.filter(id => !CLINE_PASS_IMAGE_MODELS.has(id)); const CLINE_PASS_MODEL_INPUT_MODALITIES: Record = Object.fromEntries( - CLINE_PASS_MODELS.map(id => [id, CLINE_PASS_IMAGE_MODELS.has(id) ? ["text", "image"] : ["text"]]), + CLINE_PASS_MODALITY_KNOWN_MODELS.map(id => [id, CLINE_PASS_IMAGE_MODELS.has(id) ? ["text", "image"] : ["text"]]), ); export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [ @@ -1299,6 +1303,10 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [ baseUrl: "https://api.cline.bot/api/v1", authKind: "key", dashboardUrl: "https://app.cline.bot", + // Cline documents the static ClinePass catalog and Chat Completions endpoint, but no + // OpenAI-style GET /models route. Do not probe the API base with an unsupported endpoint. + liveModelDiscoverySupported: false, + liveModels: false, defaultModel: "cline-pass/kimi-k3", models: CLINE_PASS_MODELS, modelContextWindows: CLINE_PASS_MODEL_CONTEXT_WINDOWS, @@ -2357,7 +2365,11 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [ authKind: "key", keyOptional: true, featured: true, - liveModels: true, + preserveCustomDestination: true, + // This bespoke JWT-backed chat endpoint has no model-list contract. The single maintained + // model below is authoritative; appending /models only produces a misleading HTTP 400. + liveModelDiscoverySupported: false, + liveModels: false, dashboardUrl: "https://xiaomimimo.com", defaultModel: "mimo-auto", models: ["mimo-auto"], @@ -2481,7 +2493,11 @@ export function providerMatchesRegistryTransport( if (entry.allowBaseUrlOverride || /\{[^}]*\}/.test(entry.baseUrl)) return false; if (typeof provider.baseUrl !== "string") return false; if (provider.adapter !== entry.adapter) return false; - if (provider.authMode !== undefined && provider.authMode !== "key") return false; + // MiMo Free was previously persisted as `local` by the dashboard despite this exact + // key-optional transport being registry-owned key auth. Admit only that legacy combination + // so enrichment can repair it; every other non-key mode still fails closed. + if (provider.authMode !== undefined && provider.authMode !== "key" + && !(id === "mimo-free" && provider.authMode === "local")) return false; return normalizedProviderEndpoint(provider.baseUrl) === normalizedProviderEndpoint(entry.baseUrl); } diff --git a/src/router.ts b/src/router.ts index 12edcd532f..8aa21ee833 100644 --- a/src/router.ts +++ b/src/router.ts @@ -254,12 +254,14 @@ export function routedProviderConfig(providerName: string, provider: OcxProvider return { ...provider, apiKey: usableResolvedApiKey(provider.apiKey) }; } const resolvedApiKey = usableResolvedApiKey(provider.apiKey); + const repairLegacyMimoFreeAuth = providerName === "mimo-free" && provider.authMode === "local"; const explicitKeyOverride = registryEntry.authKind === "oauth" && registryEntry.allowKeyAuthOverride === true && provider.authMode === "key" && resolvedApiKey !== undefined; const canonicalAuthMode = explicitKeyOverride ? "key" + : repairLegacyMimoFreeAuth ? "key" : registryEntry.authKind === "forward" || registryEntry.authKind === "oauth" ? registryEntry.authKind : provider.authMode === "forward" ? undefined : provider.authMode; @@ -343,6 +345,12 @@ export function routedProviderConfig(providerName: string, provider: OcxProvider : {}), authMode: canonicalAuthMode, apiKey: resolvedApiKey, + ...(registryEntry.liveModelDiscoverySupported === false + ? { + liveModels: false, + ...(registryEntry.models ? { models: [...registryEntry.models] } : {}), + } + : {}), // Backfill the Google wire mode + Vertex project/location from the registry when the user // config omits them, so a minimal `google-vertex`/`google-antigravity` entry still routes // through the correct branch (CCA/Vertex) instead of falling back to AI Studio. diff --git a/src/server/auth-cors.ts b/src/server/auth-cors.ts index dd7742cc02..ec08a1cbba 100644 --- a/src/server/auth-cors.ts +++ b/src/server/auth-cors.ts @@ -19,7 +19,7 @@ import { import { providerDestinationConfigError } from "../lib/destination-policy"; import { redactSecretString } from "../lib/redact"; import { effectiveGoogleMode, getProviderRegistryEntry, providerCodexAccountMode, providerMatchesRegistryTransport, registryEntryForProviderDestination } from "../providers/registry"; -import { providerConfigSeed } from "../providers/derive"; +import { enrichProviderFromRegistry, providerConfigSeed } from "../providers/derive"; import type { OcxConfig, OcxProviderConfig } from "../types"; import { openRouterRoutingConfigError } from "../providers/openrouter-routing"; import { googleVertexLocationConfigError } from "../providers/google-vertex-location"; @@ -564,7 +564,9 @@ export function copyIfDefined( /** Public dashboard DTO for config.json: provider entries with secrets stripped and documented fields exposed (including `modelCosts`). */ export function safeConfigDTO(config: OcxConfig): unknown { const providers: Record> = {}; - for (const [name, provider] of Object.entries(config.providers)) { + for (const [name, configuredProvider] of Object.entries(config.providers)) { + const provider = { ...configuredProvider }; + enrichProviderFromRegistry(name, provider); const dto: Record = { adapter: provider.adapter, baseUrl: publicProviderBaseUrl(provider.baseUrl), @@ -609,10 +611,12 @@ export function safeConfigDTO(config: OcxConfig): unknown { // still pointed at the same vendor route, and a usage restriction the user needs to see // must not disappear because the row was renamed. Prefer the same-name entry so an // unrenamed provider keeps its exact registry note. - const registryNote = (providerMatchesRegistryTransport(name, provider) + const registryEntry = providerMatchesRegistryTransport(name, provider) ? getProviderRegistryEntry(name) - : registryEntryForProviderDestination(provider))?.note; + : registryEntryForProviderDestination(provider); + const registryNote = registryEntry?.note; if (typeof registryNote === "string" && registryNote.trim()) dto.note = registryNote; + if (registryEntry?.liveModelDiscoverySupported === false) dto.liveModelDiscoverySupported = false; const codexAccountMode = providerCodexAccountMode(name, provider); if (codexAccountMode) dto.codexAccountMode = codexAccountMode; providers[name] = dto; diff --git a/src/server/management/provider-routes.ts b/src/server/management/provider-routes.ts index 116fee697a..9e6ae4985a 100644 --- a/src/server/management/provider-routes.ts +++ b/src/server/management/provider-routes.ts @@ -33,7 +33,7 @@ import { reconcileLiveStateStores } from "../../lib/state-store-registrations"; import { ProviderOutboundPolicyError, providerOutboundGet, providerOutboundPost, providerRedirectError } from "../../lib/provider-outbound"; import { parseAntigravityAvailableModels } from "../../providers/antigravity-models"; import { enrichProviderFromCatalog, listKeyLoginProviders } from "../../oauth/key-providers"; -import { deriveProviderPresets } from "../../providers/derive"; +import { deriveProviderPresets, enrichProviderFromRegistry } from "../../providers/derive"; import { effectiveGoogleMode, providerCodexAccountMode, providerMatchesRegistryTransport } from "../../providers/registry"; import { extractModelEnvelopeRows, @@ -305,23 +305,31 @@ export async function handleProviderRoutes(ctx: ManagementContext): Promise ({ + return jsonResponse(Object.entries(config.providers).map(([name, configured]) => { + const p = { ...configured }; + enrichProviderFromRegistry(name, p); + const registryEntry = providerMatchesRegistryTransport(name, configured) + ? getProviderRegistryEntry(name) + : undefined; + return ({ name, adapter: p.adapter, baseUrl: publicProviderBaseUrl(p.baseUrl), defaultModel: p.defaultModel, hasApiKey: !!p.apiKey, // Presence only (#959 review): header names and values never leave the process. hasHeaders: !!p.headers && Object.keys(p.headers).length > 0, allowPrivateNetwork: p.allowPrivateNetwork === true, liveModels: p.liveModels !== false, + liveModelDiscoverySupported: registryEntry?.liveModelDiscoverySupported !== false, models: p.models ?? [], contextWindow: p.contextWindow, modelContextWindows: p.modelContextWindows, noStructuredOutputModels: p.noStructuredOutputModels, - authMode: p.authMode, + authMode: p.authMode ?? registryEntry?.authKind, apiKeyTransport: p.apiKeyTransport, disabled: p.disabled === true, codexAccountMode: providerCodexAccountMode(name, p), discovery: p.liveModels === false ? undefined : getProviderDiscoveryStatus(name), - }))); + }); + })); } if (url.pathname === LOCAL_PROVIDER_RELOAD_PATH && req.method === "POST") { diff --git a/tests/cline-pass-provider.test.ts b/tests/cline-pass-provider.test.ts index c90896154a..a333cd9d0c 100644 --- a/tests/cline-pass-provider.test.ts +++ b/tests/cline-pass-provider.test.ts @@ -2,7 +2,7 @@ import { describe, expect, test } from "bun:test"; import { createOpenAIChatAdapter } from "../src/adapters/openai-chat"; import { createTranslatorBudget } from "../src/lib/translator-budget"; import { KEY_LOGIN_PROVIDERS } from "../src/oauth/key-providers"; -import { providerConfigSeed } from "../src/providers/derive"; +import { enrichProviderFromRegistry, providerConfigSeed } from "../src/providers/derive"; import { PROVIDER_REGISTRY } from "../src/providers/registry"; import { routeModel } from "../src/router"; import type { OcxConfig, OcxParsedRequest } from "../src/types"; @@ -17,6 +17,7 @@ const OFFICIAL_CLINE_PASS_MODELS = [ "cline-pass/mimo-v2.5", "cline-pass/mimo-v2.5-pro", "cline-pass/minimax-m3", + "cline-pass/qwen3.8-max", "cline-pass/qwen3.7-max", "cline-pass/qwen3.7-plus", ]; @@ -63,7 +64,7 @@ describe("ClinePass provider", () => { }); expect(entry?.models).toEqual(OFFICIAL_CLINE_PASS_MODELS); expect(entry?.models).toContain(entry?.defaultModel); - expect(entry?.liveModels).toBeUndefined(); + expect(entry?.liveModels).toBe(false); expect(entry?.reasoningEfforts).toEqual(["low", "medium", "high", "xhigh", "max"]); expect(entry?.modelReasoningEfforts).toBeUndefined(); expect(entry?.modelMaxInputTokens).toBeUndefined(); @@ -74,6 +75,7 @@ describe("ClinePass provider", () => { "cline-pass/mimo-v2.5-pro", "cline-pass/qwen3.7-max", ]); + expect(entry?.modelInputModalities?.["cline-pass/qwen3.8-max"]).toBeUndefined(); expect(entry?.modelInputModalities?.["cline-pass/kimi-k3"]).toEqual(["text", "image"]); expect(entry?.modelInputModalities?.["cline-pass/glm-5.2"]).toEqual(["text"]); expect(KEY_LOGIN_PROVIDERS["cline-pass"]?.models).toEqual(OFFICIAL_CLINE_PASS_MODELS); @@ -112,6 +114,14 @@ describe("ClinePass provider", () => { }); }); + test("canonical transport overrides a stale saved live-discovery opt-in", () => { + const provider = { ...providerConfigSeed(registryEntry()), liveModels: true }; + + enrichProviderFromRegistry("cline-pass", provider); + + expect(provider.liveModels).toBe(false); + }); + test("explicit reasoning disable uses the gateway object instead of leaking reasoning_effort", () => { const provider = providerConfigSeed(PROVIDER_REGISTRY.find(entry => entry.id === "cline-pass")!); const request = createOpenAIChatAdapter({ ...provider, apiKey: "cline-test-key" }) diff --git a/tests/management-provider-validation.test.ts b/tests/management-provider-validation.test.ts index 3cb411aa2c..acd289c8bb 100644 --- a/tests/management-provider-validation.test.ts +++ b/tests/management-provider-validation.test.ts @@ -478,6 +478,54 @@ describe("provider management validation", () => { } }); + test("provider list applies static-only registry authority to legacy saved rows", async () => { + markProviderDiscoveryFailed("mimo-free", { reason: "http", httpStatus: 400 }); + markProviderDiscoveryFailed("cline-pass", { reason: "http", httpStatus: 404 }); + try { + const requestUrl = new URL("http://127.0.0.1/api/providers"); + const response = await handleManagementAPI( + new Request(requestUrl), + requestUrl, + { + port: 10100, + defaultProvider: "mimo-free", + providers: { + "mimo-free": { + adapter: "mimo-free", + baseUrl: "https://api.xiaomimimo.com/api/free-ai/openai/chat", + liveModels: true, + models: ["mimo-auto"], + }, + "cline-pass": { + adapter: "openai-chat", + baseUrl: "https://api.cline.bot/api/v1", + authMode: "key", + liveModels: true, + models: ["cline-pass/kimi-k3"], + }, + }, + }, + ); + const providers = await response!.json() as Array>; + + expect(providers.find(provider => provider.name === "mimo-free")).toMatchObject({ + authMode: "key", + liveModels: false, + liveModelDiscoverySupported: false, + models: ["mimo-auto"], + }); + expect(providers.find(provider => provider.name === "mimo-free")).not.toHaveProperty("discovery"); + expect(providers.find(provider => provider.name === "cline-pass")).toMatchObject({ + liveModels: false, + liveModelDiscoverySupported: false, + models: expect.arrayContaining(["cline-pass/qwen3.8-max"]), + }); + expect(providers.find(provider => provider.name === "cline-pass")).not.toHaveProperty("discovery"); + } finally { + clearModelCache(); + } + }); + test("provider management rejects externally supplied forward auth providers", async () => { if (existsSync(TEST_DIR)) rmSync(TEST_DIR, { recursive: true }); mkdirSync(TEST_DIR, { recursive: true }); diff --git a/tests/mimo-free-provider.test.ts b/tests/mimo-free-provider.test.ts index a97ece2378..003e55a218 100644 --- a/tests/mimo-free-provider.test.ts +++ b/tests/mimo-free-provider.test.ts @@ -1,6 +1,7 @@ import { describe, expect, test, mock, beforeEach } from "bun:test"; import { PROVIDER_REGISTRY } from "../src/providers/registry"; -import { providerConfigSeed, deriveKeyLoginMap, deriveFeaturedProviderIds } from "../src/providers/derive"; +import { providerConfigSeed, deriveKeyLoginMap, deriveFeaturedProviderIds, enrichProviderFromRegistry } from "../src/providers/derive"; +import { routeModel } from "../src/router"; import { getMimoClientId, resetMimoClientIdCache, @@ -11,7 +12,7 @@ import { MIMO_CHAT_URL, createMimoFreeAdapter, } from "../src/adapters/mimo-free"; -import type { OcxParsedRequest, OcxProviderConfig } from "../src/types"; +import type { OcxConfig, OcxParsedRequest, OcxProviderConfig } from "../src/types"; function minimalRequest(model = "mimo-auto"): OcxParsedRequest { return { @@ -32,14 +33,74 @@ describe("mimo-free provider registry", () => { expect(entry?.authKind).toBe("key"); expect(entry?.keyOptional).toBe(true); expect(entry?.featured).toBe(true); - expect(entry?.liveModels).toBe(true); + expect(entry?.preserveCustomDestination).toBe(true); + expect(entry?.liveModels).toBe(false); expect(entry?.defaultModel).toBe("mimo-auto"); }); test("providerConfigSeed propagates keyOptional and liveModels", () => { const seed = providerConfigSeed(entry!); expect(seed.keyOptional).toBe(true); - expect(seed.liveModels).toBe(true); + expect(seed.liveModels).toBe(false); + }); + + test("canonical transport overrides a stale saved live-discovery opt-in", () => { + const provider = { ...providerConfigSeed(entry!), liveModels: true }; + + enrichProviderFromRegistry("mimo-free", provider); + + expect(provider.liveModels).toBe(false); + }); + + test("canonical transport repairs the legacy optional-key local auth mode", () => { + const provider = { ...providerConfigSeed(entry!), authMode: "local" as const, liveModels: true }; + + enrichProviderFromRegistry("mimo-free", provider); + + expect(provider.authMode).toBe("key"); + expect(provider.liveModels).toBe(false); + }); + + test("request routing uses the repaired canonical auth and static catalog state", () => { + const config: OcxConfig = { + port: 10100, + defaultProvider: "mimo-free", + providers: { + "mimo-free": { + adapter: "mimo-free", + baseUrl: "https://api.xiaomimimo.com/api/free-ai/openai/chat", + authMode: "local", + liveModels: true, + models: ["stale-model"], + }, + }, + }; + + const route = routeModel(config, "mimo-free/mimo-auto"); + + expect(route.provider).toMatchObject({ + authMode: "key", + liveModels: false, + models: ["mimo-auto"], + }); + }); + + test("same-named custom transport keeps its configured catalog and discovery setting", () => { + const provider: OcxProviderConfig = { + adapter: "mimo-free", + baseUrl: "https://custom.example/free-chat", + authMode: "key", + models: ["custom-model"], + liveModels: true, + }; + + enrichProviderFromRegistry("mimo-free", provider); + + expect(provider).toMatchObject({ + baseUrl: "https://custom.example/free-chat", + models: ["custom-model"], + liveModels: true, + }); }); test("is included in the key-login map", () => { diff --git a/tests/server-auth.test.ts b/tests/server-auth.test.ts index 1a5f78fc7a..173961552f 100644 --- a/tests/server-auth.test.ts +++ b/tests/server-auth.test.ts @@ -490,8 +490,10 @@ describe("server local API auth", () => { "mimo-free": { adapter: "mimo-free", baseUrl: "https://api.xiaomimimo.com/api/free-ai/openai/chat", - authMode: "key", + authMode: "local", keyOptional: true, + liveModels: true, + models: ["stale-model"], }, }, } as OcxConfig) as { @@ -509,6 +511,9 @@ describe("server local API auth", () => { adapter: "mimo-free", authMode: "key", keyOptional: true, + liveModelDiscoverySupported: false, + liveModels: false, + models: ["mimo-auto"], hasApiKey: false, }); }); From e2507657401ba38a38673000214ae9b6d18e5245 Mon Sep 17 00:00:00 2001 From: Wibias <37517432+Wibias@users.noreply.github.com> Date: Fri, 14 Aug 2026 02:44:45 +0200 Subject: [PATCH 02/14] fix provider discovery regressions --- gui/src/pages/models-provider-hints.tsx | 2 +- gui/tests/models-empty-provider.test.tsx | 3 ++- src/providers/derive.ts | 5 ++-- src/router.ts | 2 +- src/server/auth-cors.ts | 7 +++--- tests/mimo-free-model-preservation.test.ts | 28 +++++++++++++++++++++ tests/provider-discovery-capability.test.ts | 24 ++++++++++++++++++ 7 files changed, 63 insertions(+), 8 deletions(-) create mode 100644 tests/mimo-free-model-preservation.test.ts create mode 100644 tests/provider-discovery-capability.test.ts diff --git a/gui/src/pages/models-provider-hints.tsx b/gui/src/pages/models-provider-hints.tsx index afe9e06b35..0e87001310 100644 --- a/gui/src/pages/models-provider-hints.tsx +++ b/gui/src/pages/models-provider-hints.tsx @@ -26,7 +26,7 @@ export function EmptyProviderHint({ ? `${discoveryFailureLabel(t, failed)} ${discoveryRecoveryLabel(t, authMode)} ` : `${t(liveModels ? "models.emptyDiscovery" : "models.emptyDiscoveryDisabled")} `} diff --git a/gui/tests/models-empty-provider.test.tsx b/gui/tests/models-empty-provider.test.tsx index 6749e37b9c..ef22db4828 100644 --- a/gui/tests/models-empty-provider.test.tsx +++ b/gui/tests/models-empty-provider.test.tsx @@ -558,7 +558,8 @@ test("OAuth discovery failure tells the user to re-login", () => { const html = renderHint(true, { status: "failed", reason: "http", httpStatus: 400 }, "oauth"); expect(html).toContain("Re-login to restore live model discovery"); expect(html).toContain("Configured models remain available"); - expect(html).toContain("Open provider login"); + expect(html).toContain("Open provider settings"); + expect(html).not.toContain("Open provider login"); }); test("failed discovery renders each server-owned reason without provider detail", () => { diff --git a/src/providers/derive.ts b/src/providers/derive.ts index 9efd7a7bb6..e977191fd8 100644 --- a/src/providers/derive.ts +++ b/src/providers/derive.ts @@ -398,13 +398,14 @@ export function enrichProviderFromRegistry(name: string, prov: OcxProviderConfig // `mimo-free` shipped with an invalid `local` mode before the registry key contract became // authoritative. Repair only that exact canonical row; custom destinations fail the transport // match above and keep their operator-owned credential mode. - if (name === "mimo-free" && prov.authMode === "local" && seed.authMode === "key") prov.authMode = "key"; + const repairLegacyMimoFreeAuth = name === "mimo-free" && prov.authMode === "local" && seed.authMode === "key"; + if (repairLegacyMimoFreeAuth) prov.authMode = "key"; if (prov.apiKeyTransport === undefined && seed.apiKeyTransport !== undefined) prov.apiKeyTransport = seed.apiKeyTransport; if (!prov.defaultModel && seed.defaultModel) prov.defaultModel = seed.defaultModel; if (prov.responsesPath === undefined && seed.responsesPath !== undefined) prov.responsesPath = seed.responsesPath; // Fill mode only when absent: an explicit persisted `direct` must never be overwritten. if (prov.codexAccountMode === undefined && seed.codexAccountMode !== undefined) prov.codexAccountMode = seed.codexAccountMode; - if (entry.liveModelDiscoverySupported === false && seed.models) prov.models = [...seed.models]; + if (repairLegacyMimoFreeAuth && entry.liveModelDiscoverySupported === false && seed.models) prov.models = [...seed.models]; else if (!prov.models && seed.models) prov.models = [...seed.models]; // An exact canonical preset with a static-only registry contract cannot honor a stale saved // discovery opt-in: there is no supported endpoint to call. Custom destinations fail the diff --git a/src/router.ts b/src/router.ts index 8aa21ee833..0acb07de95 100644 --- a/src/router.ts +++ b/src/router.ts @@ -348,7 +348,7 @@ export function routedProviderConfig(providerName: string, provider: OcxProvider ...(registryEntry.liveModelDiscoverySupported === false ? { liveModels: false, - ...(registryEntry.models ? { models: [...registryEntry.models] } : {}), + ...(repairLegacyMimoFreeAuth && registryEntry.models ? { models: [...registryEntry.models] } : {}), } : {}), // Backfill the Google wire mode + Vertex project/location from the registry when the user diff --git a/src/server/auth-cors.ts b/src/server/auth-cors.ts index ec08a1cbba..14a6368d5a 100644 --- a/src/server/auth-cors.ts +++ b/src/server/auth-cors.ts @@ -611,12 +611,13 @@ export function safeConfigDTO(config: OcxConfig): unknown { // still pointed at the same vendor route, and a usage restriction the user needs to see // must not disappear because the row was renamed. Prefer the same-name entry so an // unrenamed provider keeps its exact registry note. - const registryEntry = providerMatchesRegistryTransport(name, provider) + const sameNameRegistryEntry = providerMatchesRegistryTransport(name, provider) ? getProviderRegistryEntry(name) - : registryEntryForProviderDestination(provider); + : undefined; + const registryEntry = sameNameRegistryEntry ?? registryEntryForProviderDestination(provider); const registryNote = registryEntry?.note; if (typeof registryNote === "string" && registryNote.trim()) dto.note = registryNote; - if (registryEntry?.liveModelDiscoverySupported === false) dto.liveModelDiscoverySupported = false; + if (sameNameRegistryEntry?.liveModelDiscoverySupported === false) dto.liveModelDiscoverySupported = false; const codexAccountMode = providerCodexAccountMode(name, provider); if (codexAccountMode) dto.codexAccountMode = codexAccountMode; providers[name] = dto; diff --git a/tests/mimo-free-model-preservation.test.ts b/tests/mimo-free-model-preservation.test.ts new file mode 100644 index 0000000000..54b940f492 --- /dev/null +++ b/tests/mimo-free-model-preservation.test.ts @@ -0,0 +1,28 @@ +import { expect, test } from "bun:test"; +import { PROVIDER_REGISTRY } from "../src/providers/registry"; +import { enrichProviderFromRegistry, providerConfigSeed } from "../src/providers/derive"; +import { routeModel } from "../src/router"; +import type { OcxConfig } from "../src/types"; + +test("static-only canonical key provider preserves explicit configured models", () => { + const entry = PROVIDER_REGISTRY.find(row => row.id === "mimo-free")!; + const provider = { + ...providerConfigSeed(entry), + models: ["mimo-auto", "preview-model"], + liveModels: true, + }; + + enrichProviderFromRegistry("mimo-free", provider); + + expect(provider.liveModels).toBe(false); + expect(provider.models).toEqual(["mimo-auto", "preview-model"]); + + const config: OcxConfig = { + port: 10100, + defaultProvider: "mimo-free", + providers: { "mimo-free": provider }, + }; + const route = routeModel(config, "mimo-free/mimo-auto"); + expect(route.provider.liveModels).toBe(false); + expect(route.provider.models).toEqual(["mimo-auto", "preview-model"]); +}); diff --git a/tests/provider-discovery-capability.test.ts b/tests/provider-discovery-capability.test.ts new file mode 100644 index 0000000000..1981e1847e --- /dev/null +++ b/tests/provider-discovery-capability.test.ts @@ -0,0 +1,24 @@ +import { expect, test } from "bun:test"; +import { safeConfigDTO } from "../src/server/auth-cors"; +import type { OcxConfig } from "../src/types"; + +test("renamed provider does not inherit another preset static discovery capability", () => { + const dto = safeConfigDTO({ + port: 10100, + defaultProvider: "my-cline", + providers: { + "my-cline": { + adapter: "openai-chat", + baseUrl: "https://api.cline.bot/api/v1", + authMode: "key", + liveModels: true, + models: ["anthropic/claude-sonnet-4-6"], + }, + }, + } as OcxConfig) as { + providers: Record; + }; + + expect(dto.providers["my-cline"]?.liveModels).toBe(true); + expect(dto.providers["my-cline"]?.liveModelDiscoverySupported).not.toBe(false); +}); From 533beed50921291527fcf61bd3c4a2ea858dbceb Mon Sep 17 00:00:00 2001 From: Wibias <37517432+Wibias@users.noreply.github.com> Date: Fri, 14 Aug 2026 02:53:14 +0200 Subject: [PATCH 03/14] fix MiMo legacy row migration --- src/providers/derive.ts | 10 +++--- src/router.ts | 3 +- tests/mimo-free-model-preservation.test.ts | 36 +++++++++++++++++++++- 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/src/providers/derive.ts b/src/providers/derive.ts index e977191fd8..809a907da8 100644 --- a/src/providers/derive.ts +++ b/src/providers/derive.ts @@ -395,10 +395,12 @@ export function enrichProviderFromRegistry(name: string, prov: OcxProviderConfig modelReasoningEffortMap: prov.modelReasoningEffortMap, }; const seed = providerConfigSeed(entry); - // `mimo-free` shipped with an invalid `local` mode before the registry key contract became - // authoritative. Repair only that exact canonical row; custom destinations fail the transport - // match above and keep their operator-owned credential mode. - const repairLegacyMimoFreeAuth = name === "mimo-free" && prov.authMode === "local" && seed.authMode === "key"; + // `mimo-free` shipped in legacy rows with either an omitted auth mode or the invalid `local` + // mode before the registry key contract became authoritative. Repair only those canonical + // legacy shapes; explicit modern `key` rows keep their operator-owned static catalog. + const repairLegacyMimoFreeAuth = name === "mimo-free" + && (prov.authMode === undefined || prov.authMode === "local") + && seed.authMode === "key"; if (repairLegacyMimoFreeAuth) prov.authMode = "key"; if (prov.apiKeyTransport === undefined && seed.apiKeyTransport !== undefined) prov.apiKeyTransport = seed.apiKeyTransport; if (!prov.defaultModel && seed.defaultModel) prov.defaultModel = seed.defaultModel; diff --git a/src/router.ts b/src/router.ts index 0acb07de95..604d5f80d1 100644 --- a/src/router.ts +++ b/src/router.ts @@ -254,7 +254,8 @@ export function routedProviderConfig(providerName: string, provider: OcxProvider return { ...provider, apiKey: usableResolvedApiKey(provider.apiKey) }; } const resolvedApiKey = usableResolvedApiKey(provider.apiKey); - const repairLegacyMimoFreeAuth = providerName === "mimo-free" && provider.authMode === "local"; + const repairLegacyMimoFreeAuth = providerName === "mimo-free" + && (provider.authMode === undefined || provider.authMode === "local"); const explicitKeyOverride = registryEntry.authKind === "oauth" && registryEntry.allowKeyAuthOverride === true && provider.authMode === "key" diff --git a/tests/mimo-free-model-preservation.test.ts b/tests/mimo-free-model-preservation.test.ts index 54b940f492..c33841639e 100644 --- a/tests/mimo-free-model-preservation.test.ts +++ b/tests/mimo-free-model-preservation.test.ts @@ -2,7 +2,7 @@ import { expect, test } from "bun:test"; import { PROVIDER_REGISTRY } from "../src/providers/registry"; import { enrichProviderFromRegistry, providerConfigSeed } from "../src/providers/derive"; import { routeModel } from "../src/router"; -import type { OcxConfig } from "../src/types"; +import type { OcxConfig, OcxProviderConfig } from "../src/types"; test("static-only canonical key provider preserves explicit configured models", () => { const entry = PROVIDER_REGISTRY.find(row => row.id === "mimo-free")!; @@ -26,3 +26,37 @@ test("static-only canonical key provider preserves explicit configured models", expect(route.provider.liveModels).toBe(false); expect(route.provider.models).toEqual(["mimo-auto", "preview-model"]); }); + +test("legacy canonical MiMo row without auth mode is repaired to registry catalog", () => { + const provider: OcxProviderConfig = { + adapter: "mimo-free", + baseUrl: "https://api.xiaomimimo.com/api/free-ai/openai/chat", + liveModels: true, + models: ["legacy-model"], + }; + + enrichProviderFromRegistry("mimo-free", provider); + + expect(provider).toMatchObject({ + authMode: "key", + liveModels: false, + models: ["mimo-auto"], + }); + + const config: OcxConfig = { + port: 10100, + defaultProvider: "mimo-free", + providers: { "mimo-free": { + adapter: "mimo-free", + baseUrl: "https://api.xiaomimimo.com/api/free-ai/openai/chat", + liveModels: true, + models: ["legacy-model"], + } }, + }; + const route = routeModel(config, "mimo-free/mimo-auto"); + expect(route.provider).toMatchObject({ + authMode: "key", + liveModels: false, + models: ["mimo-auto"], + }); +}); From 02d828768a5e81bbd37b497402c505f8c2462d43 Mon Sep 17 00:00:00 2001 From: Wibias <37517432+Wibias@users.noreply.github.com> Date: Fri, 14 Aug 2026 03:23:44 +0200 Subject: [PATCH 04/14] test provider discovery safety regressions --- tests/mimo-free-model-preservation.test.ts | 30 ++++++++-- ...vider-discovery-safety-regressions.test.ts | 60 +++++++++++++++++++ 2 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 tests/provider-discovery-safety-regressions.test.ts diff --git a/tests/mimo-free-model-preservation.test.ts b/tests/mimo-free-model-preservation.test.ts index c33841639e..c66d1b5850 100644 --- a/tests/mimo-free-model-preservation.test.ts +++ b/tests/mimo-free-model-preservation.test.ts @@ -27,12 +27,13 @@ test("static-only canonical key provider preserves explicit configured models", expect(route.provider.models).toEqual(["mimo-auto", "preview-model"]); }); -test("legacy canonical MiMo row without auth mode is repaired to registry catalog", () => { +test("legacy canonical MiMo row repairs auth without replacing explicit models", () => { + const entry = PROVIDER_REGISTRY.find(row => row.id === "mimo-free")!; const provider: OcxProviderConfig = { adapter: "mimo-free", - baseUrl: "https://api.xiaomimimo.com/api/free-ai/openai/chat", + baseUrl: entry.baseUrl, liveModels: true, - models: ["legacy-model"], + models: ["mimo-auto", "preview-model"], }; enrichProviderFromRegistry("mimo-free", provider); @@ -40,7 +41,7 @@ test("legacy canonical MiMo row without auth mode is repaired to registry catalo expect(provider).toMatchObject({ authMode: "key", liveModels: false, - models: ["mimo-auto"], + models: ["mimo-auto", "preview-model"], }); const config: OcxConfig = { @@ -48,13 +49,30 @@ test("legacy canonical MiMo row without auth mode is repaired to registry catalo defaultProvider: "mimo-free", providers: { "mimo-free": { adapter: "mimo-free", - baseUrl: "https://api.xiaomimimo.com/api/free-ai/openai/chat", + baseUrl: entry.baseUrl, liveModels: true, - models: ["legacy-model"], + models: ["mimo-auto", "preview-model"], } }, }; const route = routeModel(config, "mimo-free/mimo-auto"); expect(route.provider).toMatchObject({ + authMode: "key", + liveModels: false, + models: ["mimo-auto", "preview-model"], + }); +}); + +test("legacy canonical MiMo row without models receives the registry default", () => { + const entry = PROVIDER_REGISTRY.find(row => row.id === "mimo-free")!; + const provider: OcxProviderConfig = { + adapter: "mimo-free", + baseUrl: entry.baseUrl, + liveModels: true, + }; + + enrichProviderFromRegistry("mimo-free", provider); + + expect(provider).toMatchObject({ authMode: "key", liveModels: false, models: ["mimo-auto"], diff --git a/tests/provider-discovery-safety-regressions.test.ts b/tests/provider-discovery-safety-regressions.test.ts new file mode 100644 index 0000000000..94571e758f --- /dev/null +++ b/tests/provider-discovery-safety-regressions.test.ts @@ -0,0 +1,60 @@ +import { afterEach, expect, test } from "bun:test"; +import { createMimoFreeAdapter, MIMO_CHAT_URL } from "../src/adapters/mimo-free"; +import { handleManagementAPI } from "../src/server/management-api"; +import type { OcxConfig, OcxProviderConfig } from "../src/types"; + +const originalFetch = globalThis.fetch; + +afterEach(() => { + globalThis.fetch = originalFetch; +}); + +test("mimo-free adapter fails closed for a custom destination", () => { + const provider: OcxProviderConfig = { + adapter: "mimo-free", + baseUrl: "https://custom.example/free-chat", + authMode: "key", + }; + + expect(() => createMimoFreeAdapter(provider)).toThrow(/canonical Xiaomi MiMo Free endpoint/i); +}); + +test("mimo-free adapter accepts the canonical destination with a trailing slash", () => { + const provider: OcxProviderConfig = { + adapter: "mimo-free", + baseUrl: `${MIMO_CHAT_URL}/`, + authMode: "key", + }; + + expect(() => createMimoFreeAdapter(provider)).not.toThrow(); +}); + +test("canonical static provider ignores stale liveModels true without network access", async () => { + let fetches = 0; + globalThis.fetch = (async () => { + fetches += 1; + return new Response("unsupported", { status: 400 }); + }) as typeof fetch; + + const config: OcxConfig = { + port: 0, + hostname: "127.0.0.1", + defaultProvider: "cline-pass", + providers: { + "cline-pass": { + adapter: "openai-chat", + baseUrl: "https://api.cline.bot/api/v1", + authMode: "key", + apiKey: "test-key", + liveModels: true, + models: ["cline-pass/kimi-k3"], + }, + }, + }; + const req = new Request("http://127.0.0.1/api/providers/test?name=cline-pass", { method: "POST" }); + const res = await handleManagementAPI(req, new URL(req.url), config, {}); + if (!res) throw new Error("handler returned no response"); + + expect(await res.json()).toEqual({ applicable: false, reason: "static_catalog", latencyMs: 0 }); + expect(fetches).toBe(0); +}); From 06290007eb4b86e10e81ca1c1fac9c3a45dafac9 Mon Sep 17 00:00:00 2001 From: Wibias <37517432+Wibias@users.noreply.github.com> Date: Fri, 14 Aug 2026 03:25:12 +0200 Subject: [PATCH 05/14] fix MiMo Free destination boundary --- src/adapters/mimo-free.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/adapters/mimo-free.ts b/src/adapters/mimo-free.ts index b02ea0d20e..a257e7d4c9 100644 --- a/src/adapters/mimo-free.ts +++ b/src/adapters/mimo-free.ts @@ -40,6 +40,18 @@ function randomUserAgent(): string { return USER_AGENTS[Math.floor(Math.random() * USER_AGENTS.length)]!; } +function isCanonicalMimoFreeEndpoint(baseUrl: string): boolean { + try { + const actual = new URL(baseUrl.trim()); + const expected = new URL(MIMO_CHAT_URL); + actual.pathname = actual.pathname.replace(/\/+$/, "") || "/"; + expected.pathname = expected.pathname.replace(/\/+$/, "") || "/"; + return actual.toString().replace(/\/$/, "") === expected.toString().replace(/\/$/, ""); + } catch { + return false; + } +} + /** * Anonymous per-install client id for the bootstrap `client` field. A random UUID * persisted under the config dir (OPENCODEX_HOME-aware) — deliberately NOT derived @@ -194,6 +206,11 @@ export function injectMimoSystemMarker(body: unknown): unknown { * On 401/403, flushes the JWT cache and retries once via fetchResponse. */ export function createMimoFreeAdapter(provider: OcxProviderConfig): ProviderAdapter { + if (!isCanonicalMimoFreeEndpoint(provider.baseUrl)) { + throw new Error( + "The mimo-free adapter only supports the canonical Xiaomi MiMo Free endpoint. Use openai-chat for a custom endpoint.", + ); + } const base = createOpenAIChatAdapter(provider); // Per-adapter session-affinity id (random, per process instance). const sessionId = `ses_${Math.random().toString(36).slice(2, 26)}`; From 0cc5dbf72b88a61d255f1b4a33e274b38d7d8b70 Mon Sep 17 00:00:00 2001 From: Wibias <37517432+Wibias@users.noreply.github.com> Date: Fri, 14 Aug 2026 03:26:53 +0200 Subject: [PATCH 06/14] preserve explicit MiMo model lists --- src/providers/derive.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/providers/derive.ts b/src/providers/derive.ts index 809a907da8..97c2d045ea 100644 --- a/src/providers/derive.ts +++ b/src/providers/derive.ts @@ -396,8 +396,8 @@ export function enrichProviderFromRegistry(name: string, prov: OcxProviderConfig }; const seed = providerConfigSeed(entry); // `mimo-free` shipped in legacy rows with either an omitted auth mode or the invalid `local` - // mode before the registry key contract became authoritative. Repair only those canonical - // legacy shapes; explicit modern `key` rows keep their operator-owned static catalog. + // mode before the registry key contract became authoritative. Repair authentication only; + // an explicit model list remains operator-owned for every canonical legacy shape. const repairLegacyMimoFreeAuth = name === "mimo-free" && (prov.authMode === undefined || prov.authMode === "local") && seed.authMode === "key"; @@ -407,8 +407,7 @@ export function enrichProviderFromRegistry(name: string, prov: OcxProviderConfig if (prov.responsesPath === undefined && seed.responsesPath !== undefined) prov.responsesPath = seed.responsesPath; // Fill mode only when absent: an explicit persisted `direct` must never be overwritten. if (prov.codexAccountMode === undefined && seed.codexAccountMode !== undefined) prov.codexAccountMode = seed.codexAccountMode; - if (repairLegacyMimoFreeAuth && entry.liveModelDiscoverySupported === false && seed.models) prov.models = [...seed.models]; - else if (!prov.models && seed.models) prov.models = [...seed.models]; + if (!prov.models && seed.models) prov.models = [...seed.models]; // An exact canonical preset with a static-only registry contract cannot honor a stale saved // discovery opt-in: there is no supported endpoint to call. Custom destinations fail the // transport match above and keep their explicit operator setting. From 9551b54c6c7b9cdccddef55bdeef0f86dc370f09 Mon Sep 17 00:00:00 2001 From: Wibias <37517432+Wibias@users.noreply.github.com> Date: Fri, 14 Aug 2026 03:28:04 +0200 Subject: [PATCH 07/14] preserve MiMo models during routing --- src/router.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/router.ts b/src/router.ts index 604d5f80d1..293d62a3f9 100644 --- a/src/router.ts +++ b/src/router.ts @@ -347,10 +347,7 @@ export function routedProviderConfig(providerName: string, provider: OcxProvider authMode: canonicalAuthMode, apiKey: resolvedApiKey, ...(registryEntry.liveModelDiscoverySupported === false - ? { - liveModels: false, - ...(repairLegacyMimoFreeAuth && registryEntry.models ? { models: [...registryEntry.models] } : {}), - } + ? { liveModels: false } : {}), // Backfill the Google wire mode + Vertex project/location from the registry when the user // config omits them, so a minimal `google-vertex`/`google-antigravity` entry still routes From e76fc6a9b1702d0b75d94f6f18ea33ca769df5eb Mon Sep 17 00:00:00 2001 From: Wibias <37517432+Wibias@users.noreply.github.com> Date: Fri, 14 Aug 2026 03:29:44 +0200 Subject: [PATCH 08/14] enforce static provider discovery capability --- src/server/management/provider-routes.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/server/management/provider-routes.ts b/src/server/management/provider-routes.ts index 9e6ae4985a..3846475d60 100644 --- a/src/server/management/provider-routes.ts +++ b/src/server/management/provider-routes.ts @@ -93,6 +93,14 @@ type ProviderPatchApplication = headersTouched: boolean; }; +function providerSupportsLiveModelDiscovery(name: string, provider: OcxProviderConfig): boolean { + const entry = getProviderRegistryEntry(name); + return !( + entry?.liveModelDiscoverySupported === false + && providerMatchesRegistryTransport(name, provider) + ); +} + /** * Apply the recognized PATCH field mask onto a provider copy. The caller runs this once * for validation and again inside the config mutation lock against the newest provider, @@ -174,6 +182,9 @@ function applyProviderPatchFields( } if (Object.hasOwn(rawBody, "liveModels")) { if (typeof rawBody.liveModels !== "boolean") return { error: "liveModels must be a boolean" }; + if (rawBody.liveModels && !providerSupportsLiveModelDiscovery(name, next)) { + return { error: "live model discovery is not supported for this provider" }; + } next.liveModels = rawBody.liveModels; touched = true; } @@ -634,7 +645,7 @@ export async function handleProviderRoutes(ctx: ManagementContext): Promise Date: Fri, 14 Aug 2026 03:30:07 +0200 Subject: [PATCH 09/14] test static discovery write boundary --- ...vider-discovery-safety-regressions.test.ts | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tests/provider-discovery-safety-regressions.test.ts b/tests/provider-discovery-safety-regressions.test.ts index 94571e758f..b39ea5fed0 100644 --- a/tests/provider-discovery-safety-regressions.test.ts +++ b/tests/provider-discovery-safety-regressions.test.ts @@ -58,3 +58,32 @@ test("canonical static provider ignores stale liveModels true without network ac expect(await res.json()).toEqual({ applicable: false, reason: "static_catalog", latencyMs: 0 }); expect(fetches).toBe(0); }); + +test("canonical static provider rejects a liveModels true management patch", async () => { + const config: OcxConfig = { + port: 0, + hostname: "127.0.0.1", + defaultProvider: "cline-pass", + providers: { + "cline-pass": { + adapter: "openai-chat", + baseUrl: "https://api.cline.bot/api/v1", + authMode: "key", + apiKey: "test-key", + liveModels: false, + models: ["cline-pass/kimi-k3"], + }, + }, + }; + const req = new Request("http://127.0.0.1/api/providers?name=cline-pass", { + method: "PATCH", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ liveModels: true }), + }); + const res = await handleManagementAPI(req, new URL(req.url), config, {}); + if (!res) throw new Error("handler returned no response"); + + expect(res.status).toBe(400); + expect(await res.json()).toEqual({ error: "live model discovery is not supported for this provider" }); + expect(config.providers["cline-pass"]?.liveModels).toBe(false); +}); From 0494c48222b9e1631bd655a3b2214d53a174759a Mon Sep 17 00:00:00 2001 From: Wibias <37517432+Wibias@users.noreply.github.com> Date: Fri, 14 Aug 2026 03:56:30 +0200 Subject: [PATCH 10/14] test(providers): preserve configured MiMo route models --- tests/mimo-free-provider.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/mimo-free-provider.test.ts b/tests/mimo-free-provider.test.ts index 003e55a218..317b7437c2 100644 --- a/tests/mimo-free-provider.test.ts +++ b/tests/mimo-free-provider.test.ts @@ -61,7 +61,7 @@ describe("mimo-free provider registry", () => { expect(provider.liveModels).toBe(false); }); - test("request routing uses the repaired canonical auth and static catalog state", () => { + test("request routing repairs canonical auth while preserving configured models", () => { const config: OcxConfig = { port: 10100, defaultProvider: "mimo-free", @@ -81,7 +81,7 @@ describe("mimo-free provider registry", () => { expect(route.provider).toMatchObject({ authMode: "key", liveModels: false, - models: ["mimo-auto"], + models: ["stale-model"], }); }); From 70d1c98ee9b3922cb99e4776283190d8a5d76a62 Mon Sep 17 00:00:00 2001 From: Wibias <37517432+Wibias@users.noreply.github.com> Date: Fri, 14 Aug 2026 03:59:12 +0200 Subject: [PATCH 11/14] test(providers): preserve saved static provider models --- tests/management-provider-validation.test.ts | 48 ---------------- ...rovider-static-registry-management.test.ts | 55 +++++++++++++++++++ 2 files changed, 55 insertions(+), 48 deletions(-) create mode 100644 tests/provider-static-registry-management.test.ts diff --git a/tests/management-provider-validation.test.ts b/tests/management-provider-validation.test.ts index acd289c8bb..3cb411aa2c 100644 --- a/tests/management-provider-validation.test.ts +++ b/tests/management-provider-validation.test.ts @@ -478,54 +478,6 @@ describe("provider management validation", () => { } }); - test("provider list applies static-only registry authority to legacy saved rows", async () => { - markProviderDiscoveryFailed("mimo-free", { reason: "http", httpStatus: 400 }); - markProviderDiscoveryFailed("cline-pass", { reason: "http", httpStatus: 404 }); - try { - const requestUrl = new URL("http://127.0.0.1/api/providers"); - const response = await handleManagementAPI( - new Request(requestUrl), - requestUrl, - { - port: 10100, - defaultProvider: "mimo-free", - providers: { - "mimo-free": { - adapter: "mimo-free", - baseUrl: "https://api.xiaomimimo.com/api/free-ai/openai/chat", - liveModels: true, - models: ["mimo-auto"], - }, - "cline-pass": { - adapter: "openai-chat", - baseUrl: "https://api.cline.bot/api/v1", - authMode: "key", - liveModels: true, - models: ["cline-pass/kimi-k3"], - }, - }, - }, - ); - const providers = await response!.json() as Array>; - - expect(providers.find(provider => provider.name === "mimo-free")).toMatchObject({ - authMode: "key", - liveModels: false, - liveModelDiscoverySupported: false, - models: ["mimo-auto"], - }); - expect(providers.find(provider => provider.name === "mimo-free")).not.toHaveProperty("discovery"); - expect(providers.find(provider => provider.name === "cline-pass")).toMatchObject({ - liveModels: false, - liveModelDiscoverySupported: false, - models: expect.arrayContaining(["cline-pass/qwen3.8-max"]), - }); - expect(providers.find(provider => provider.name === "cline-pass")).not.toHaveProperty("discovery"); - } finally { - clearModelCache(); - } - }); - test("provider management rejects externally supplied forward auth providers", async () => { if (existsSync(TEST_DIR)) rmSync(TEST_DIR, { recursive: true }); mkdirSync(TEST_DIR, { recursive: true }); diff --git a/tests/provider-static-registry-management.test.ts b/tests/provider-static-registry-management.test.ts new file mode 100644 index 0000000000..f05f6af631 --- /dev/null +++ b/tests/provider-static-registry-management.test.ts @@ -0,0 +1,55 @@ +import { describe, expect, test } from "bun:test"; +import { clearModelCache, markProviderDiscoveryFailed } from "../src/codex/model-cache"; +import { handleManagementAPI } from "../src/server/management-api"; +import { ManagementRequest as Request } from "./helpers/management-auth"; + +describe("static-only provider management", () => { + test("provider list repairs registry metadata without replacing saved models", async () => { + markProviderDiscoveryFailed("mimo-free", { reason: "http", httpStatus: 400 }); + markProviderDiscoveryFailed("cline-pass", { reason: "http", httpStatus: 404 }); + try { + const requestUrl = new URL("http://127.0.0.1/api/providers"); + const response = await handleManagementAPI( + new Request(requestUrl), + requestUrl, + { + port: 10100, + defaultProvider: "mimo-free", + providers: { + "mimo-free": { + adapter: "mimo-free", + baseUrl: "https://api.xiaomimimo.com/api/free-ai/openai/chat", + authMode: "local", + liveModels: true, + models: ["mimo-auto", "preview-model"], + }, + "cline-pass": { + adapter: "openai-chat", + baseUrl: "https://api.cline.bot/api/v1", + authMode: "key", + liveModels: true, + models: ["cline-pass/kimi-k3"], + }, + }, + }, + ); + const providers = await response!.json() as Array>; + + expect(providers.find(provider => provider.name === "mimo-free")).toMatchObject({ + authMode: "key", + liveModels: false, + liveModelDiscoverySupported: false, + models: ["mimo-auto", "preview-model"], + }); + expect(providers.find(provider => provider.name === "mimo-free")).not.toHaveProperty("discovery"); + expect(providers.find(provider => provider.name === "cline-pass")).toMatchObject({ + liveModels: false, + liveModelDiscoverySupported: false, + models: ["cline-pass/kimi-k3"], + }); + expect(providers.find(provider => provider.name === "cline-pass")).not.toHaveProperty("discovery"); + } finally { + clearModelCache(); + } + }); +}); From d5552175ff7700d76be012b90847724d9d1b6418 Mon Sep 17 00:00:00 2001 From: Wibias <37517432+Wibias@users.noreply.github.com> Date: Fri, 14 Aug 2026 04:14:45 +0200 Subject: [PATCH 12/14] test(management): provide host context for static provider regressions --- tests/provider-discovery-safety-regressions.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/provider-discovery-safety-regressions.test.ts b/tests/provider-discovery-safety-regressions.test.ts index b39ea5fed0..f9b01729e7 100644 --- a/tests/provider-discovery-safety-regressions.test.ts +++ b/tests/provider-discovery-safety-regressions.test.ts @@ -2,6 +2,7 @@ import { afterEach, expect, test } from "bun:test"; import { createMimoFreeAdapter, MIMO_CHAT_URL } from "../src/adapters/mimo-free"; import { handleManagementAPI } from "../src/server/management-api"; import type { OcxConfig, OcxProviderConfig } from "../src/types"; +import { ManagementRequest as Request } from "./helpers/management-auth"; const originalFetch = globalThis.fetch; From b814ea6dcd4118cb5c8ed8faa517f36a889eb12c Mon Sep 17 00:00:00 2001 From: Wibias <37517432+Wibias@users.noreply.github.com> Date: Fri, 14 Aug 2026 04:51:50 +0200 Subject: [PATCH 13/14] test(server): preserve saved MiMo models in config DTO assertion --- tests/server-auth.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/server-auth.test.ts b/tests/server-auth.test.ts index 173961552f..d5e9f0adb7 100644 --- a/tests/server-auth.test.ts +++ b/tests/server-auth.test.ts @@ -513,7 +513,7 @@ describe("server local API auth", () => { keyOptional: true, liveModelDiscoverySupported: false, liveModels: false, - models: ["mimo-auto"], + models: ["stale-model"], hasApiKey: false, }); }); From bff989832fc362eebda4c6e853fecf42ed4947a3 Mon Sep 17 00:00:00 2001 From: Wibias <37517432+Wibias@users.noreply.github.com> Date: Fri, 14 Aug 2026 06:00:57 +0200 Subject: [PATCH 14/14] fix: address valid CodeRabbit findings --- .../src/content/docs/guides/web-dashboard.md | 2 +- gui/tests/models-empty-provider.test.tsx | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/docs-site/src/content/docs/guides/web-dashboard.md b/docs-site/src/content/docs/guides/web-dashboard.md index 3f34dff792..71be214abd 100644 --- a/docs-site/src/content/docs/guides/web-dashboard.md +++ b/docs-site/src/content/docs/guides/web-dashboard.md @@ -49,7 +49,7 @@ the browser or password manager's decision. | **Add provider** | Search registry-backed presets for account login, API-key services, local servers, or a custom endpoint. | | **Codex Auth** | Add ChatGPT/Codex pool accounts, select the next-session account, refresh 5h / weekly / 30d quotas, enable or disable quota auto-switch, set its 1–100% threshold, and configure transient-failure failover. | | **Subagents** | Feature up to five bare native or namespaced routed models in the `spawn_agent` override list. | -| **Models** | Toggle native GPT and routed models, set provider allowlists and context caps, choose v1/base/v2, and configure the v2 thread limit. Configured providers stay visible as zero-model groups when discovery is off or returns no rows. When discovery fails, the badge hover keeps configured fallback models explicit and directs OAuth providers to re-login; other providers link to endpoint and discovery settings. | +| **Models** | Toggle native GPT and routed models, set provider allowlists and context caps, choose v1/base/v2, and configure the v2 thread limit. Configured providers stay visible as zero-model groups when discovery is off or returns no rows. When discovery fails, the badge hover keeps configured fallback models explicit and directs OAuth providers, such as xAI, to reauthenticate with `ocx login ` or dashboard reauthentication; other providers link to endpoint and discovery settings. | | **Logs** | Auto-refresh recent requests with tokens, requested effort and (when available) effective outbound effort, resolved model, provider, status, request id, duration, and error details. The detail view includes the exact reasoning wire field when the adapter emits one. Filter by opaque conversation/session id (when the client sends one) to total tokens and estimated list-price cost for the currently loaded Logs ring. | | **Usage / Debug** | Inspect token-usage coverage and trends, or enable opt-in provider transport and usage-extraction diagnostics. | | **Storage** | Read-only CODEX_HOME disk breakdown (sessions, archives, DBs, attachments). Optional archived cleanup: preview the oldest N%, then quarantine to `CODEX_HOME/.trash` (default) or permanently delete behind an explicit checkbox. **Auto-cleanup policy** is opt-in and **default OFF** (`storageCleanupPolicy.enabled`); configure threshold/target/schedule/mode on the Storage page, or trigger **Run now**. Quarantined entries can be restored from the Storage page (JSONL + threads). Active sessions stay read-only. Cleanup and restore are refused while Codex holds the newest/active `state_*.sqlite` locked. | diff --git a/gui/tests/models-empty-provider.test.tsx b/gui/tests/models-empty-provider.test.tsx index ef22db4828..cccac5aa18 100644 --- a/gui/tests/models-empty-provider.test.tsx +++ b/gui/tests/models-empty-provider.test.tsx @@ -8,6 +8,7 @@ import { clearClientResourceStoresForTests } from "../src/client-resource"; import { LanguageProvider } from "../src/i18n/provider"; import Models from "../src/pages/Models"; import { EmptyProviderHint } from "../src/pages/models-provider-hints"; +import { normalizeHashPath } from "../src/hash-routing"; import type { ProviderDiscoverySummary } from "../src/models-groups"; import { gatherRoutedModels as gatherRoutedModelsDirect } from "../../src/codex/catalog"; import { withStubbedProviderFetch } from "../../tests/helpers/catalog-provider-fetch"; @@ -562,6 +563,47 @@ test("OAuth discovery failure tells the user to re-login", () => { expect(html).not.toContain("Open provider login"); }); +test("Open provider settings navigates to the Providers route", async () => { + const domGlobals = ["document", "window", "IS_REACT_ACT_ENVIRONMENT"] as const; + const previousDescriptors = Object.fromEntries( + domGlobals.map(key => [key, Object.getOwnPropertyDescriptor(globalThis, key)]), + ) as Record<(typeof domGlobals)[number], PropertyDescriptor | undefined>; + const win = new Window({ url: "http://localhost/#models" }); + const container = win.document.createElement("div"); + win.document.body.append(container); + let root: Root | undefined; + Object.defineProperties(globalThis, { + document: { configurable: true, value: win.document }, + window: { configurable: true, value: win }, + IS_REACT_ACT_ENVIRONMENT: { configurable: true, value: true }, + }); + + try { + const { createRoot } = await import("react-dom/client"); + await act(async () => { + root = createRoot(container); + root.render( + + + , + ); + }); + await act(async () => { await new Promise(resolve => win.setTimeout(resolve, 0)); await Promise.resolve(); }); + const cta = container.querySelector("button.link-btn")!; + expect(cta.textContent).toContain("Open provider settings"); + await act(async () => cta.click()); + expect(normalizeHashPath(win.location.hash)).toBe("providers"); + } finally { + await act(async () => root?.unmount()); + win.close(); + for (const key of domGlobals) { + const descriptor = previousDescriptors[key]; + if (descriptor) Object.defineProperty(globalThis, key, descriptor); + else delete (globalThis as Record)[key]; + } + } +}); + test("failed discovery renders each server-owned reason without provider detail", () => { const cases: Array<[ProviderDiscoverySummary, string]> = [ [{ status: "failed", reason: "blocked" }, "blocked by the destination policy"],