From 91cd169eb3dbe15c568706e9fee470c7db8e3303 Mon Sep 17 00:00:00 2001 From: Ammar Date: Thu, 12 Feb 2026 18:58:04 -0600 Subject: [PATCH] =?UTF-8?q?=F0=9F=A4=96=20fix:=20add=20GPT-5.3-Codex-Spark?= =?UTF-8?q?=20model=20data=20override?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a models-extra override for gpt-5.3-codex-spark using the newly published Codex metadata (128k context and text-only capabilities), and add focused tests for model stats and capability lookup behavior. --- _Generated with `mux` • Model: `openai:gpt-5.3-codex` • Thinking: `xhigh` • Cost: `$0.00`_ --- src/common/utils/ai/modelCapabilities.test.ts | 6 ++++++ src/common/utils/tokens/modelStats.test.ts | 7 +++++++ src/common/utils/tokens/models-extra.ts | 17 +++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/src/common/utils/ai/modelCapabilities.test.ts b/src/common/utils/ai/modelCapabilities.test.ts index 95287de89a..0408503d68 100644 --- a/src/common/utils/ai/modelCapabilities.test.ts +++ b/src/common/utils/ai/modelCapabilities.test.ts @@ -23,6 +23,12 @@ describe("getModelCapabilities", () => { expect(caps).not.toBeNull(); }); + it("keeps GPT-5.3-Codex-Spark as text-only via models-extra override", () => { + const caps = getModelCapabilities("openai:gpt-5.3-codex-spark"); + expect(caps).not.toBeNull(); + expect(caps?.supportsVision).toBe(false); + }); + it("returns maxPdfSizeMb when present in model metadata", () => { const caps = getModelCapabilities("google:gemini-1.5-flash"); expect(caps).not.toBeNull(); diff --git a/src/common/utils/tokens/modelStats.test.ts b/src/common/utils/tokens/modelStats.test.ts index 7ae128aa1c..f17fbd3091 100644 --- a/src/common/utils/tokens/modelStats.test.ts +++ b/src/common/utils/tokens/modelStats.test.ts @@ -24,6 +24,13 @@ describe("getModelStats", () => { expect(stats?.input_cost_per_token).toBe(0.000021); }); + test("should find GPT-5.3-Codex-Spark in models-extra.ts", () => { + const stats = getModelStats("openai:gpt-5.3-codex-spark"); + expect(stats).not.toBeNull(); + expect(stats?.max_input_tokens).toBe(128000); + expect(stats?.max_output_tokens).toBe(128000); + }); + test("models-extra.ts should override models.json", () => { // gpt-5.2-codex exists in both files - models-extra.ts has correct 272k, models.json has incorrect 400k const stats = getModelStats("openai:gpt-5.2-codex"); diff --git a/src/common/utils/tokens/models-extra.ts b/src/common/utils/tokens/models-extra.ts index 91391b5a95..64c1a994f0 100644 --- a/src/common/utils/tokens/models-extra.ts +++ b/src/common/utils/tokens/models-extra.ts @@ -109,6 +109,23 @@ export const modelsExtra: Record = { supports_response_schema: true, }, + // GPT-5.3-Codex-Spark - Released February 13, 2026 + // OpenAI says this is a text-only Codex variant with a 128k context window. + // API pricing is not published yet, so we temporarily mirror GPT-5.3-Codex pricing. + "gpt-5.3-codex-spark": { + max_input_tokens: 128000, + max_output_tokens: 128000, + input_cost_per_token: 0.00000175, // $1.75 per million input tokens (temporary) + output_cost_per_token: 0.000014, // $14 per million output tokens (temporary) + cache_read_input_token_cost: 0.000000175, // $0.175 per million cached input tokens (temporary) + litellm_provider: "openai", + mode: "responses", + supports_function_calling: true, + supports_vision: false, + supports_reasoning: true, + supports_response_schema: true, + }, + // GPT-5.2 Pro - Released December 11, 2025 // $21/M input, $168/M output // Supports medium, high, xhigh reasoning levels