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 { isOpenAICompatibleProvider, isAnthropicCompatibleProvider } from "@/shared/constants/providers";
|
||||
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 { getModelsByProviderId } from "open-sse/config/providerModels.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";
|
||||
|
||||
// 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) => {
|
||||
if (Array.isArray(data)) return data;
|
||||
return data?.data || data?.models || data?.results || [];
|
||||
@@ -157,12 +164,20 @@ const PROVIDER_MODELS_CONFIG = {
|
||||
parseResponse: (data) => data.data || []
|
||||
},
|
||||
codex: {
|
||||
url: "https://chatgpt.com/backend-api/codex/models?client_version=1.0.0",
|
||||
method: "GET",
|
||||
headers: { "Content-Type": "application/json", "Accept": "application/json" },
|
||||
authHeader: "Authorization",
|
||||
authPrefix: "Bearer ",
|
||||
parseResponse: parseCodexModels
|
||||
customResolver: buildOAuthResolver({
|
||||
refreshFn: (conn) => refreshCodexToken(conn.refreshToken),
|
||||
fetchFn: (token) => fetch(CODEX_MODELS_URL, {
|
||||
method: "GET",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Accept": "application/json",
|
||||
"Authorization": `Bearer ${token}`,
|
||||
"originator": "codex_cli_rs"
|
||||
}
|
||||
}),
|
||||
parseFn: parseCodexModels,
|
||||
errorLabel: "Failed to fetch Codex models"
|
||||
})
|
||||
},
|
||||
antigravity: {
|
||||
url: "https://daily-cloudcode-pa.sandbox.googleapis.com/v1internal:models",
|
||||
|
||||
Reference in New Issue
Block a user