diff --git a/open-sse/config/codexConstants.js b/open-sse/config/codexConstants.js new file mode 100644 index 00000000000..b66322116a8 --- /dev/null +++ b/open-sse/config/codexConstants.js @@ -0,0 +1,3 @@ +// Keep model discovery and image requests on the same client version. GPT-5.6 +// models require >= 0.144.0 in openai/codex's models-manager/models.json. +export const CODEX_CLIENT_VERSION = "0.144.6"; diff --git a/open-sse/handlers/imageProviders/codex.js b/open-sse/handlers/imageProviders/codex.js index 218302abf8c..b0b769b8e8b 100644 --- a/open-sse/handlers/imageProviders/codex.js +++ b/open-sse/handlers/imageProviders/codex.js @@ -2,10 +2,9 @@ import { randomUUID } from "node:crypto"; import { nowSec } from "./_base.js"; import { PROVIDERS } from "../../config/providers.js"; +import { CODEX_CLIENT_VERSION } from "../../config/codexConstants.js"; const CODEX_RESPONSES_URL = PROVIDERS["codex"].baseUrl; -const CODEX_USER_AGENT = "codex_cli_rs/0.136.0"; -const CODEX_VERSION = "0.136.0"; const CODEX_ORIGINATOR = "codex_cli_rs"; const CODEX_MODEL_SUFFIX = "-image"; const CODEX_REF_DETAIL = "high"; @@ -156,8 +155,8 @@ export default { "content-type": "application/json", "originator": CODEX_ORIGINATOR, "session_id": randomUUID(), - "user-agent": CODEX_USER_AGENT, - "version": CODEX_VERSION, + "user-agent": `${CODEX_ORIGINATOR}/${CODEX_CLIENT_VERSION}`, + "version": CODEX_CLIENT_VERSION, "x-client-request-id": randomUUID(), }; }, diff --git a/src/app/api/providers/[id]/models/route.js b/src/app/api/providers/[id]/models/route.js index d73ec11dfac..05c0d90d7bc 100644 --- a/src/app/api/providers/[id]/models/route.js +++ b/src/app/api/providers/[id]/models/route.js @@ -11,6 +11,7 @@ import { resolveQoderModels } from "open-sse/services/qoderModels.js"; import { resolveGrokCliModels } from "open-sse/services/grokCliModels.js"; import { resolveConnectionProxyConfig } from "@/lib/network/connectionProxy"; import { resolveCursorModels } from "open-sse/services/cursorModels.js"; +import { CODEX_CLIENT_VERSION } from "open-sse/config/codexConstants.js"; const GEMINI_CLI_MODELS_URL = "https://cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels"; @@ -18,7 +19,6 @@ const GEMINI_CLI_MODELS_URL = "https://cloudcode-pa.googleapis.com/v1internal:fe // 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) => { diff --git a/tests/unit/image-generation.test.js b/tests/unit/image-generation.test.js index 12dce95d66c..ba12b2116f0 100644 --- a/tests/unit/image-generation.test.js +++ b/tests/unit/image-generation.test.js @@ -351,7 +351,8 @@ describe("handleImageGenerationCore", () => { headers: expect.objectContaining({ authorization: "Bearer codex-token", "chatgpt-account-id": "account-123", - version: "0.136.0", + version: "0.144.6", + "user-agent": "codex_cli_rs/0.144.6", }), }) );