mirror of
https://github.com/Nezumi-2711/9router.git
synced 2026-09-22 13:38:31 +00:00
fix(codex): current client_version + refresh-aware model sync
Bump client_version to 0.144.6 (above the 0.144.0 gate in codex CLI's manifest) so /codex/models no longer returns 200 with newest entries silently filtered out. Add the originator: codex_cli_rs header used by every other codex call site, and move the entry onto buildOAuthResolver so token refresh on 401/403 and a warning field on empty results are wired in, matching gemini-cli and grok-cli.
This commit is contained in:
@@ -2,7 +2,7 @@ import { NextResponse } from "next/server";
|
|||||||
import { getProviderConnectionById } from "@/models";
|
import { getProviderConnectionById } from "@/models";
|
||||||
import { isOpenAICompatibleProvider, isAnthropicCompatibleProvider } from "@/shared/constants/providers";
|
import { isOpenAICompatibleProvider, isAnthropicCompatibleProvider } from "@/shared/constants/providers";
|
||||||
import { GEMINI_CONFIG } from "@/lib/oauth/constants/oauth";
|
import { GEMINI_CONFIG } from "@/lib/oauth/constants/oauth";
|
||||||
import { refreshGoogleToken, updateProviderCredentials } from "@/sse/services/tokenRefresh";
|
import { refreshGoogleToken, refreshCodexToken, updateProviderCredentials } from "@/sse/services/tokenRefresh";
|
||||||
import { resolveOllamaLocalHost } from "open-sse/config/providers.js";
|
import { resolveOllamaLocalHost } from "open-sse/config/providers.js";
|
||||||
import { getModelsByProviderId } from "open-sse/config/providerModels.js";
|
import { getModelsByProviderId } from "open-sse/config/providerModels.js";
|
||||||
import { resolveKiroModels } from "open-sse/services/kiroModels.js";
|
import { resolveKiroModels } from "open-sse/services/kiroModels.js";
|
||||||
@@ -13,6 +13,13 @@ import { resolveConnectionProxyConfig } from "@/lib/network/connectionProxy";
|
|||||||
|
|
||||||
const GEMINI_CLI_MODELS_URL = "https://cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels";
|
const GEMINI_CLI_MODELS_URL = "https://cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels";
|
||||||
|
|
||||||
|
// The /codex/models endpoint gates each entry by minimal_client_version against this
|
||||||
|
// value, and codex CLI's own manifest (openai/codex codex-rs/models-manager/models.json)
|
||||||
|
// already requires 0.144.0 for its newest models, so a stale client_version here comes
|
||||||
|
// back 200 with those entries quietly missing instead of erroring.
|
||||||
|
const CODEX_CLIENT_VERSION = "0.144.6";
|
||||||
|
const CODEX_MODELS_URL = `https://chatgpt.com/backend-api/codex/models?client_version=${CODEX_CLIENT_VERSION}`;
|
||||||
|
|
||||||
const parseOpenAIStyleModels = (data) => {
|
const parseOpenAIStyleModels = (data) => {
|
||||||
if (Array.isArray(data)) return data;
|
if (Array.isArray(data)) return data;
|
||||||
return data?.data || data?.models || data?.results || [];
|
return data?.data || data?.models || data?.results || [];
|
||||||
@@ -157,12 +164,20 @@ const PROVIDER_MODELS_CONFIG = {
|
|||||||
parseResponse: (data) => data.data || []
|
parseResponse: (data) => data.data || []
|
||||||
},
|
},
|
||||||
codex: {
|
codex: {
|
||||||
url: "https://chatgpt.com/backend-api/codex/models?client_version=1.0.0",
|
customResolver: buildOAuthResolver({
|
||||||
|
refreshFn: (conn) => refreshCodexToken(conn.refreshToken),
|
||||||
|
fetchFn: (token) => fetch(CODEX_MODELS_URL, {
|
||||||
method: "GET",
|
method: "GET",
|
||||||
headers: { "Content-Type": "application/json", "Accept": "application/json" },
|
headers: {
|
||||||
authHeader: "Authorization",
|
"Content-Type": "application/json",
|
||||||
authPrefix: "Bearer ",
|
"Accept": "application/json",
|
||||||
parseResponse: parseCodexModels
|
"Authorization": `Bearer ${token}`,
|
||||||
|
"originator": "codex_cli_rs"
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
parseFn: parseCodexModels,
|
||||||
|
errorLabel: "Failed to fetch Codex models"
|
||||||
|
})
|
||||||
},
|
},
|
||||||
antigravity: {
|
antigravity: {
|
||||||
url: "https://daily-cloudcode-pa.sandbox.googleapis.com/v1internal:models",
|
url: "https://daily-cloudcode-pa.sandbox.googleapis.com/v1internal:models",
|
||||||
|
|||||||
Reference in New Issue
Block a user