From 64897e9fcc682d00e25a0946ae76f6374c664cd1 Mon Sep 17 00:00:00 2001 From: "@taltas" <6816042+taltas@users.noreply.github.com> Date: Tue, 22 Sep 2026 22:42:41 +0000 Subject: [PATCH 1/2] feat(openai): add GPT-6 Sol and Luna model support Add gpt-6-sol and gpt-6-luna to the OpenAI native and OpenAI Codex (ChatGPT subscription) model catalogs, announced by OpenAI on September 22, 2026: - gpt-6-sol: $2 input / $10 output per MTok, 1.05M context, 128K max output, cache writes 1.25x input, cached reads 90% off, flex 50% / priority 2x tiers, >272K long-context pricing - gpt-6-luna: $0.10 input / $0.50 output per MTok with the same context, caching, tier, and long-context structure Both support reasoning effort levels none through max (default medium), image input, and verbosity, mirroring the GPT-5.6 family entries. Codex catalog entries use subscription pricing with the 372K context window of their GPT-5.6 predecessors. --- .../types/src/__tests__/openai-models.test.ts | 76 ++++++++++++++++ packages/types/src/providers/openai-codex.ts | 33 +++++++ packages/types/src/providers/openai.ts | 86 +++++++++++++++++++ 3 files changed, 195 insertions(+) diff --git a/packages/types/src/__tests__/openai-models.test.ts b/packages/types/src/__tests__/openai-models.test.ts index df05fa433f..2ad4d936af 100644 --- a/packages/types/src/__tests__/openai-models.test.ts +++ b/packages/types/src/__tests__/openai-models.test.ts @@ -46,6 +46,82 @@ describe("OpenAI native models", () => { ]) }) + it("describes GPT-6 Sol and Luna with verified pricing and context metadata", () => { + expect(openAiNativeModels["gpt-6-sol"]).toMatchObject({ + maxTokens: 128_000, + contextWindow: 1_050_000, + supportsImages: true, + supportsPromptCache: true, + supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"], + reasoningEffort: "medium", + supportsTemperature: false, + inputPrice: 2, + cacheWritesPrice: 2.5, + cacheReadsPrice: 0.2, + outputPrice: 10, + longContextPricing: { + thresholdTokens: 272_000, + inputPriceMultiplier: 2, + outputPriceMultiplier: 1.5, + cacheWritesPriceMultiplier: 2, + cacheReadsPriceMultiplier: 2, + appliesToServiceTiers: ["default", "flex", "priority"], + }, + }) + + expect(openAiNativeModels["gpt-6-sol"].tiers).toEqual([ + { + name: "flex", + contextWindow: 1_050_000, + inputPrice: 1, + outputPrice: 5, + cacheWritesPrice: 1.25, + cacheReadsPrice: 0.1, + }, + { + name: "priority", + contextWindow: 1_050_000, + inputPrice: 4, + outputPrice: 20, + cacheWritesPrice: 5, + cacheReadsPrice: 0.4, + }, + ]) + + expect(openAiNativeModels["gpt-6-luna"]).toMatchObject({ + maxTokens: 128_000, + contextWindow: 1_050_000, + supportsImages: true, + supportsPromptCache: true, + supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"], + reasoningEffort: "medium", + supportsTemperature: false, + inputPrice: 0.1, + cacheWritesPrice: 0.125, + cacheReadsPrice: 0.01, + outputPrice: 0.5, + }) + + expect(openAiNativeModels["gpt-6-luna"].tiers).toEqual([ + { + name: "flex", + contextWindow: 1_050_000, + inputPrice: 0.05, + outputPrice: 0.25, + cacheWritesPrice: 0.0625, + cacheReadsPrice: 0.005, + }, + { + name: "priority", + contextWindow: 1_050_000, + inputPrice: 0.2, + outputPrice: 1, + cacheWritesPrice: 0.25, + cacheReadsPrice: 0.02, + }, + ]) + }) + it("uses current GPT-5.6 base pricing and context metadata", () => { expect(openAiNativeModels["gpt-5.6-sol"]).toMatchObject({ contextWindow: 1_050_000, diff --git a/packages/types/src/providers/openai-codex.ts b/packages/types/src/providers/openai-codex.ts index 6aec090fbe..dab48ef218 100644 --- a/packages/types/src/providers/openai-codex.ts +++ b/packages/types/src/providers/openai-codex.ts @@ -40,6 +40,39 @@ export const openAiCodexModels = { supportsTemperature: false, description: "GPT-6 Astra: OpenAI's most capable model for complex, demanding work via ChatGPT subscription", }, + "gpt-6-sol": { + maxTokens: 128000, + contextWindow: 372000, + includedTools: ["apply_patch"], + excludedTools: ["apply_diff", "write_to_file"], + supportsImages: true, + supportsPromptCache: true, + supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"], + reasoningEffort: "medium", + // Subscription-based: no per-token costs + inputPrice: 0, + outputPrice: 0, + supportsVerbosity: true, + supportsTemperature: false, + description: + "GPT-6 Sol: OpenAI's cost-efficient frontier model for complex coding and agentic workflows via ChatGPT subscription", + }, + "gpt-6-luna": { + maxTokens: 128000, + contextWindow: 372000, + includedTools: ["apply_patch"], + excludedTools: ["apply_diff", "write_to_file"], + supportsImages: true, + supportsPromptCache: true, + supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"], + reasoningEffort: "medium", + // Subscription-based: no per-token costs + inputPrice: 0, + outputPrice: 0, + supportsVerbosity: true, + supportsTemperature: false, + description: "GPT-6 Luna: The fastest, most affordable member of the GPT-6 family via ChatGPT subscription", + }, "gpt-5.6-sol": { maxTokens: 128000, contextWindow: 372000, diff --git a/packages/types/src/providers/openai.ts b/packages/types/src/providers/openai.ts index 009ca04494..4f56bb740a 100644 --- a/packages/types/src/providers/openai.ts +++ b/packages/types/src/providers/openai.ts @@ -60,6 +60,92 @@ export const openAiNativeModels = { ], description: "GPT-6 Astra: OpenAI's most capable model for complex reasoning and end-to-end agentic work", }, + "gpt-6-sol": { + maxTokens: 128000, + contextWindow: 1_050_000, + includedTools: ["apply_patch"], + excludedTools: ["apply_diff", "write_to_file"], + supportsImages: true, + supportsPromptCache: true, + supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"], + reasoningEffort: "medium", + inputPrice: 2.0, + outputPrice: 10.0, + cacheWritesPrice: 2.5, + cacheReadsPrice: 0.2, + longContextPricing: { + thresholdTokens: 272_000, + inputPriceMultiplier: 2, + outputPriceMultiplier: 1.5, + cacheWritesPriceMultiplier: 2, + cacheReadsPriceMultiplier: 2, + appliesToServiceTiers: ["default", "flex", "priority"], + }, + supportsVerbosity: true, + supportsTemperature: false, + tiers: [ + { + name: "flex", + contextWindow: 1_050_000, + inputPrice: 1.0, + outputPrice: 5.0, + cacheWritesPrice: 1.25, + cacheReadsPrice: 0.1, + }, + { + name: "priority", + contextWindow: 1_050_000, + inputPrice: 4.0, + outputPrice: 20.0, + cacheWritesPrice: 5.0, + cacheReadsPrice: 0.4, + }, + ], + description: "GPT-6 Sol: OpenAI's cost-efficient frontier model for complex coding and agentic workflows", + }, + "gpt-6-luna": { + maxTokens: 128000, + contextWindow: 1_050_000, + includedTools: ["apply_patch"], + excludedTools: ["apply_diff", "write_to_file"], + supportsImages: true, + supportsPromptCache: true, + supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"], + reasoningEffort: "medium", + inputPrice: 0.1, + outputPrice: 0.5, + cacheWritesPrice: 0.125, + cacheReadsPrice: 0.01, + longContextPricing: { + thresholdTokens: 272_000, + inputPriceMultiplier: 2, + outputPriceMultiplier: 1.5, + cacheWritesPriceMultiplier: 2, + cacheReadsPriceMultiplier: 2, + appliesToServiceTiers: ["default", "flex", "priority"], + }, + supportsVerbosity: true, + supportsTemperature: false, + tiers: [ + { + name: "flex", + contextWindow: 1_050_000, + inputPrice: 0.05, + outputPrice: 0.25, + cacheWritesPrice: 0.0625, + cacheReadsPrice: 0.005, + }, + { + name: "priority", + contextWindow: 1_050_000, + inputPrice: 0.2, + outputPrice: 1.0, + cacheWritesPrice: 0.25, + cacheReadsPrice: 0.02, + }, + ], + description: "GPT-6 Luna: The fastest, most affordable member of the GPT-6 family", + }, "gpt-5.6-sol": { maxTokens: 128000, contextWindow: 1_050_000, From 0a62b3c2f44011e0a5c4c01de0f620e69c22631a Mon Sep 17 00:00:00 2001 From: Toray Altas Date: Wed, 23 Sep 2026 11:32:40 -0400 Subject: [PATCH 2/2] test(types): cover GPT-6 model catalogs --- .../types/src/__tests__/openai-models.test.ts | 140 ++++++++++++------ 1 file changed, 96 insertions(+), 44 deletions(-) diff --git a/packages/types/src/__tests__/openai-models.test.ts b/packages/types/src/__tests__/openai-models.test.ts index 2ad4d936af..bc2b41427c 100644 --- a/packages/types/src/__tests__/openai-models.test.ts +++ b/packages/types/src/__tests__/openai-models.test.ts @@ -1,3 +1,4 @@ +import { openAiCodexModels } from "../providers/openai-codex.js" import { openAiNativeDefaultModelId, openAiNativeModels } from "../providers/openai.js" describe("OpenAI native models", () => { @@ -47,18 +48,19 @@ describe("OpenAI native models", () => { }) it("describes GPT-6 Sol and Luna with verified pricing and context metadata", () => { - expect(openAiNativeModels["gpt-6-sol"]).toMatchObject({ + expect(openAiNativeModels["gpt-6-sol"]).toEqual({ maxTokens: 128_000, contextWindow: 1_050_000, + includedTools: ["apply_patch"], + excludedTools: ["apply_diff", "write_to_file"], supportsImages: true, supportsPromptCache: true, supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"], reasoningEffort: "medium", - supportsTemperature: false, inputPrice: 2, + outputPrice: 10, cacheWritesPrice: 2.5, cacheReadsPrice: 0.2, - outputPrice: 10, longContextPricing: { thresholdTokens: 272_000, inputPriceMultiplier: 2, @@ -67,59 +69,72 @@ describe("OpenAI native models", () => { cacheReadsPriceMultiplier: 2, appliesToServiceTiers: ["default", "flex", "priority"], }, + supportsVerbosity: true, + supportsTemperature: false, + tiers: [ + { + name: "flex", + contextWindow: 1_050_000, + inputPrice: 1, + outputPrice: 5, + cacheWritesPrice: 1.25, + cacheReadsPrice: 0.1, + }, + { + name: "priority", + contextWindow: 1_050_000, + inputPrice: 4, + outputPrice: 20, + cacheWritesPrice: 5, + cacheReadsPrice: 0.4, + }, + ], + description: "GPT-6 Sol: OpenAI's cost-efficient frontier model for complex coding and agentic workflows", }) - expect(openAiNativeModels["gpt-6-sol"].tiers).toEqual([ - { - name: "flex", - contextWindow: 1_050_000, - inputPrice: 1, - outputPrice: 5, - cacheWritesPrice: 1.25, - cacheReadsPrice: 0.1, - }, - { - name: "priority", - contextWindow: 1_050_000, - inputPrice: 4, - outputPrice: 20, - cacheWritesPrice: 5, - cacheReadsPrice: 0.4, - }, - ]) - - expect(openAiNativeModels["gpt-6-luna"]).toMatchObject({ + expect(openAiNativeModels["gpt-6-luna"]).toEqual({ maxTokens: 128_000, contextWindow: 1_050_000, + includedTools: ["apply_patch"], + excludedTools: ["apply_diff", "write_to_file"], supportsImages: true, supportsPromptCache: true, supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"], reasoningEffort: "medium", - supportsTemperature: false, inputPrice: 0.1, + outputPrice: 0.5, cacheWritesPrice: 0.125, cacheReadsPrice: 0.01, - outputPrice: 0.5, - }) - - expect(openAiNativeModels["gpt-6-luna"].tiers).toEqual([ - { - name: "flex", - contextWindow: 1_050_000, - inputPrice: 0.05, - outputPrice: 0.25, - cacheWritesPrice: 0.0625, - cacheReadsPrice: 0.005, - }, - { - name: "priority", - contextWindow: 1_050_000, - inputPrice: 0.2, - outputPrice: 1, - cacheWritesPrice: 0.25, - cacheReadsPrice: 0.02, + longContextPricing: { + thresholdTokens: 272_000, + inputPriceMultiplier: 2, + outputPriceMultiplier: 1.5, + cacheWritesPriceMultiplier: 2, + cacheReadsPriceMultiplier: 2, + appliesToServiceTiers: ["default", "flex", "priority"], }, - ]) + supportsVerbosity: true, + supportsTemperature: false, + tiers: [ + { + name: "flex", + contextWindow: 1_050_000, + inputPrice: 0.05, + outputPrice: 0.25, + cacheWritesPrice: 0.0625, + cacheReadsPrice: 0.005, + }, + { + name: "priority", + contextWindow: 1_050_000, + inputPrice: 0.2, + outputPrice: 1, + cacheWritesPrice: 0.25, + cacheReadsPrice: 0.02, + }, + ], + description: "GPT-6 Luna: The fastest, most affordable member of the GPT-6 family", + }) }) it("uses current GPT-5.6 base pricing and context metadata", () => { @@ -146,3 +161,40 @@ describe("OpenAI native models", () => { }) }) }) + +describe("OpenAI Codex models", () => { + it("describes GPT-6 Sol and Luna subscription contracts", () => { + expect(openAiCodexModels["gpt-6-sol"]).toEqual({ + maxTokens: 128_000, + contextWindow: 372_000, + includedTools: ["apply_patch"], + excludedTools: ["apply_diff", "write_to_file"], + supportsImages: true, + supportsPromptCache: true, + supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"], + reasoningEffort: "medium", + inputPrice: 0, + outputPrice: 0, + supportsVerbosity: true, + supportsTemperature: false, + description: + "GPT-6 Sol: OpenAI's cost-efficient frontier model for complex coding and agentic workflows via ChatGPT subscription", + }) + + expect(openAiCodexModels["gpt-6-luna"]).toEqual({ + maxTokens: 128_000, + contextWindow: 372_000, + includedTools: ["apply_patch"], + excludedTools: ["apply_diff", "write_to_file"], + supportsImages: true, + supportsPromptCache: true, + supportsReasoningEffort: ["none", "low", "medium", "high", "xhigh", "max"], + reasoningEffort: "medium", + inputPrice: 0, + outputPrice: 0, + supportsVerbosity: true, + supportsTemperature: false, + description: "GPT-6 Luna: The fastest, most affordable member of the GPT-6 family via ChatGPT subscription", + }) + }) +})