From 99c3912652a099a524e5f8acd29b233cf6ceb832 Mon Sep 17 00:00:00 2001 From: Waleed Latif Date: Tue, 22 Sep 2026 11:54:29 -0700 Subject: [PATCH] feat(models): add GPT-6 Sol and Luna --- .../content/docs/workflows/blocks/agent.mdx | 2 +- apps/sim/providers/models.test.ts | 2 + apps/sim/providers/models.ts | 57 +++++++++++++++++++ apps/sim/providers/openai/usage.test.ts | 26 +++++++++ apps/sim/providers/utils.test.ts | 2 + 5 files changed, 88 insertions(+), 1 deletion(-) diff --git a/apps/docs/content/docs/workflows/blocks/agent.mdx b/apps/docs/content/docs/workflows/blocks/agent.mdx index e4d466a3217..241e3ac4c80 100644 --- a/apps/docs/content/docs/workflows/blocks/agent.mdx +++ b/apps/docs/content/docs/workflows/blocks/agent.mdx @@ -134,7 +134,7 @@ Live tool-call chips stream for **OpenAI, Anthropic, Azure Anthropic, Google, Ve | Provider | Streamed thinking | Models | |----------|-------------------|--------| -| OpenAI | Summaries only — Requires OpenAI organization verification; falls back to no summaries. | `gpt-6-astra`, `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna`, `gpt-5.5-pro`, `gpt-5.5`, `gpt-5.4-pro`, `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.4-nano`, `gpt-5.3-codex`, `gpt-5.2-pro`, `gpt-5.2`, `gpt-5.1`, `gpt-5-pro`, `gpt-5`, `gpt-5-mini`, `gpt-5-nano`, `o4-mini`, `o3`, `o3-mini`, `o1` | +| OpenAI | Summaries only — Requires OpenAI organization verification; falls back to no summaries. | `gpt-6-astra`, `gpt-6-sol`, `gpt-6-luna`, `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna`, `gpt-5.5-pro`, `gpt-5.5`, `gpt-5.4-pro`, `gpt-5.4`, `gpt-5.4-mini`, `gpt-5.4-nano`, `gpt-5.3-codex`, `gpt-5.2-pro`, `gpt-5.2`, `gpt-5.1`, `gpt-5-pro`, `gpt-5`, `gpt-5-mini`, `gpt-5-nano`, `o4-mini`, `o3`, `o3-mini`, `o1` | | Anthropic | Summaries only — These generations omit full thinking; Sim requests summarized thinking on streaming runs. | `claude-fable-5-1`, `claude-fable-5`, `claude-sonnet-5`, `claude-opus-5-5`, `claude-opus-5`, `claude-opus-4-8`, `claude-opus-4-7`, `claude-opus-4-6`, `claude-sonnet-4-6`, `claude-opus-4-5`, `claude-sonnet-4-5`, `claude-haiku-4-5` | | Azure OpenAI | Summaries only — Requires OpenAI organization verification; falls back to no summaries. | `azure/gpt-6-astra`, `azure/gpt-5.6-sol`, `azure/gpt-5.6-terra`, `azure/gpt-5.6-luna`, `azure/gpt-5.5`, `azure/gpt-5.4-pro`, `azure/gpt-5.4`, `azure/gpt-5.4-mini`, `azure/gpt-5.4-nano`, `azure/gpt-5.2`, `azure/gpt-5.1`, `azure/gpt-5.1-codex`, `azure/gpt-5`, `azure/gpt-5-mini`, `azure/gpt-5-nano`, `azure/o3`, `azure/o4-mini` | | Azure Anthropic | Summaries only — These generations omit full thinking; Sim requests summarized thinking on streaming runs. | `azure-anthropic/claude-fable-5-1`, `azure-anthropic/claude-opus-5`, `azure-anthropic/claude-opus-4-8`, `azure-anthropic/claude-opus-4-7`, `azure-anthropic/claude-opus-4-6`, `azure-anthropic/claude-opus-4-5`, `azure-anthropic/claude-sonnet-5`, `azure-anthropic/claude-sonnet-4-6`, `azure-anthropic/claude-sonnet-4-5`, `azure-anthropic/claude-opus-4-1`, `azure-anthropic/claude-haiku-4-5` | diff --git a/apps/sim/providers/models.test.ts b/apps/sim/providers/models.test.ts index 490952fddc9..54d5064cd87 100644 --- a/apps/sim/providers/models.test.ts +++ b/apps/sim/providers/models.test.ts @@ -142,6 +142,8 @@ describe('OpenAI provider definition', () => { describe('direct provider catalog additions', () => { it.each([ + ['gpt-6-sol', 'openai'], + ['gpt-6-luna', 'openai'], ['chat-latest', 'openai'], ['gpt-5.3-codex', 'openai'], ['gemini-3.7-flash', 'google'], diff --git a/apps/sim/providers/models.ts b/apps/sim/providers/models.ts index 465f50e2999..49fc8ac91c5 100644 --- a/apps/sim/providers/models.ts +++ b/apps/sim/providers/models.ts @@ -357,6 +357,63 @@ export const PROVIDER_DEFINITIONS: Record = { featured: true, recommended: true, }, + { + id: 'gpt-6-sol', + pricing: { + input: 2.0, + cachedInput: 0.2, + output: 10.0, + tiers: [ + { + aboveInputTokens: 272000, + input: 4.0, + cachedInput: 0.4, + output: 15.0, + }, + ], + updatedAt: '2026-09-22', + }, + capabilities: { + reasoningEffort: { + values: ['none', 'low', 'medium', 'high', 'xhigh', 'max'], + }, + verbosity: { + values: ['low', 'medium', 'high'], + }, + maxOutputTokens: 128000, + }, + contextWindow: 1050000, + releaseDate: '2026-09-22', + }, + { + id: 'gpt-6-luna', + pricing: { + input: 0.1, + cachedInput: 0.01, + output: 0.5, + tiers: [ + { + aboveInputTokens: 272000, + input: 0.2, + cachedInput: 0.02, + output: 0.75, + }, + ], + updatedAt: '2026-09-22', + }, + capabilities: { + reasoningEffort: { + values: ['none', 'low', 'medium', 'high', 'xhigh', 'max'], + }, + verbosity: { + values: ['low', 'medium', 'high'], + }, + maxOutputTokens: 128000, + }, + contextWindow: 1050000, + releaseDate: '2026-09-22', + speedOptimized: true, + }, // GPT-4.1 family { id: 'gpt-4.1', diff --git a/apps/sim/providers/openai/usage.test.ts b/apps/sim/providers/openai/usage.test.ts index 5fcb590c64d..243a4c79297 100644 --- a/apps/sim/providers/openai/usage.test.ts +++ b/apps/sim/providers/openai/usage.test.ts @@ -34,6 +34,32 @@ function responsesUsage(partial: Partial): ResponsesUsageT } describe('OpenAI usage aggregation', () => { + it.each([ + ['gpt-6-sol', 272_000, 0.414, 0.1], + ['gpt-6-sol', 272_001, 0.828004, 0.15], + ['gpt-6-luna', 272_000, 0.0207, 0.005], + ['gpt-6-luna', 272_001, 0.0414002, 0.0075], + ] as const)( + 'bills %s at %i prompt tokens using the full prompt to price cache reads, writes, and output', + (model, promptTokens, inputCost, outputCost) => { + const usage = createOpenAIUsageAccumulator() + addOpenAIUsage( + usage, + responsesUsage({ + promptTokens, + cachedTokens: 100_000, + cacheWriteTokens: 100_000, + completionTokens: 10_000, + }) + ) + + const cost = buildOpenAIUsageCost(model, usage) + expect(cost.input).toBeCloseTo(inputCost, 10) + expect(cost.output).toBeCloseTo(outputCost, 10) + expect(cost.total).toBeCloseTo(inputCost + outputCost, 10) + } + ) + it('matches plain list pricing when nothing was cached', () => { const usage = createOpenAIUsageAccumulator() addOpenAIUsage(usage, responsesUsage({ promptTokens: 12_345, completionTokens: 6_789 })) diff --git a/apps/sim/providers/utils.test.ts b/apps/sim/providers/utils.test.ts index a3c148277e0..fe2c729c73e 100644 --- a/apps/sim/providers/utils.test.ts +++ b/apps/sim/providers/utils.test.ts @@ -952,6 +952,8 @@ describe('getHostedModels', () => { describe('shouldBillModelUsage', () => { it('should return true for exact matches of hosted models', () => { expect(shouldBillModelUsage('gpt-6-astra')).toBe(true) + expect(shouldBillModelUsage('gpt-6-sol')).toBe(true) + expect(shouldBillModelUsage('gpt-6-luna')).toBe(true) expect(shouldBillModelUsage('gpt-4o')).toBe(true) expect(shouldBillModelUsage('o1')).toBe(true)