diff --git a/src/agent/compact.ts b/src/agent/compact.ts index e3af0f3..7d5820f 100644 --- a/src/agent/compact.ts +++ b/src/agent/compact.ts @@ -526,7 +526,7 @@ function pickCompactionModel(primaryModel: string): string { if (primaryModel.includes('opus') || primaryModel.includes('pro')) { return 'anthropic/claude-sonnet-4.6'; } - if (primaryModel.includes('sonnet') || primaryModel.includes('gpt-5.4') || primaryModel.includes('gemini-2.5-pro')) { + if (primaryModel.includes('sonnet') || primaryModel.includes('gpt-5.4') || primaryModel.includes('gpt-5.5') || primaryModel.includes('gemini-2.5-pro')) { return 'anthropic/claude-haiku-4.5-20251001'; } if (primaryModel.includes('haiku') || primaryModel.includes('mini') || primaryModel.includes('nano')) { diff --git a/src/agent/optimize.ts b/src/agent/optimize.ts index 5bf28bb..103dab1 100644 --- a/src/agent/optimize.ts +++ b/src/agent/optimize.ts @@ -39,6 +39,7 @@ const MODEL_MAX_OUTPUT: Record = { 'anthropic/claude-opus-4.6': 32_000, 'anthropic/claude-sonnet-4.6': 64_000, 'anthropic/claude-haiku-4.5-20251001': 16_384, + 'openai/gpt-5.5': 32_768, 'openai/gpt-5.4': 32_768, 'openai/gpt-5-mini': 16_384, 'google/gemini-2.5-pro': 65_536, diff --git a/src/agent/tokens.ts b/src/agent/tokens.ts index c992ffc..88ac665 100644 --- a/src/agent/tokens.ts +++ b/src/agent/tokens.ts @@ -187,6 +187,10 @@ const MODEL_CONTEXT_WINDOWS: Record = { 'anthropic/claude-haiku-4.5': 200_000, 'anthropic/claude-haiku-4.5-20251001': 200_000, // OpenAI + // gpt-5.5 advertises 1.05M context at the gateway, but Franklin keeps the + // conservative 128k baseline matching every other gpt-5.x line — bump in + // a separate change once a real >128k call has been verified end-to-end. + 'openai/gpt-5.5': 128_000, 'openai/gpt-5.4': 128_000, 'openai/gpt-5.4-pro': 128_000, 'openai/gpt-5.3': 128_000, diff --git a/src/index.ts b/src/index.ts index 97dc8d4..b572399 100644 --- a/src/index.ts +++ b/src/index.ts @@ -50,7 +50,7 @@ program .description('Start the franklin agent') .option( '-m, --model ', - 'Model to use (e.g. openai/gpt-5.4, anthropic/claude-sonnet-4.6). Default from config or claude-sonnet-4.6' + 'Model to use (e.g. openai/gpt-5.5, anthropic/claude-sonnet-4.6). Default from config or claude-sonnet-4.6' ) .option('--debug', 'Enable debug logging') .option('--trust', 'Trust mode — skip permission prompts for all tools') diff --git a/src/pricing.ts b/src/pricing.ts index 6949f72..d03fb43 100644 --- a/src/pricing.ts +++ b/src/pricing.ts @@ -47,6 +47,7 @@ export const MODEL_PRICING: Record = { 'opus-4.6': 'anthropic/claude-opus-4.6', haiku: 'anthropic/claude-haiku-4.5', // OpenAI - gpt: 'openai/gpt-5.4', - gpt5: 'openai/gpt-5.4', - 'gpt-5': 'openai/gpt-5.4', + // `gpt` / `gpt5` / `gpt-5` follow the gateway's flagship — currently 5.5. + gpt: 'openai/gpt-5.5', + gpt5: 'openai/gpt-5.5', + 'gpt-5': 'openai/gpt-5.5', + 'gpt-5.5': 'openai/gpt-5.5', 'gpt-5.4': 'openai/gpt-5.4', 'gpt-5.4-pro': 'openai/gpt-5.4-pro', 'gpt-5.3': 'openai/gpt-5.3', diff --git a/src/router/index.ts b/src/router/index.ts index cf335df..18d3c13 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -61,11 +61,11 @@ const AUTO_TIERS: Record = { }, MEDIUM: { primary: 'anthropic/claude-sonnet-4.6', - fallback: ['openai/gpt-5.4', 'google/gemini-3.1-pro', 'moonshot/kimi-k2.6'], + fallback: ['openai/gpt-5.5', 'google/gemini-3.1-pro', 'moonshot/kimi-k2.6'], }, COMPLEX: { primary: 'anthropic/claude-sonnet-4.6', - fallback: ['openai/gpt-5.4', 'anthropic/claude-opus-4.7', 'moonshot/kimi-k2.6'], + fallback: ['openai/gpt-5.5', 'anthropic/claude-opus-4.7', 'moonshot/kimi-k2.6'], }, REASONING: { // Opus 4.7: step-change improvement in agentic coding over 4.6 per @@ -112,7 +112,7 @@ const PREMIUM_TIERS: Record = { }, COMPLEX: { primary: 'anthropic/claude-opus-4.7', - fallback: ['anthropic/claude-opus-4.6', 'openai/gpt-5.4', 'anthropic/claude-sonnet-4.6'], + fallback: ['anthropic/claude-opus-4.6', 'openai/gpt-5.5', 'anthropic/claude-sonnet-4.6'], }, REASONING: { primary: 'anthropic/claude-opus-4.7', diff --git a/src/ui/model-picker.ts b/src/ui/model-picker.ts index b49cac8..7046ed5 100644 --- a/src/ui/model-picker.ts +++ b/src/ui/model-picker.ts @@ -22,9 +22,11 @@ export const MODEL_SHORTCUTS: Record = { 'opus-4.6': 'anthropic/claude-opus-4.6', haiku: 'anthropic/claude-haiku-4.5-20251001', // OpenAI - gpt: 'openai/gpt-5.4', - gpt5: 'openai/gpt-5.4', - 'gpt-5': 'openai/gpt-5.4', + // `gpt` / `gpt5` / `gpt-5` follow the gateway's flagship — currently 5.5. + gpt: 'openai/gpt-5.5', + gpt5: 'openai/gpt-5.5', + 'gpt-5': 'openai/gpt-5.5', + 'gpt-5.5': 'openai/gpt-5.5', 'gpt-5.4': 'openai/gpt-5.4', 'gpt-5.4-pro': 'openai/gpt-5.4-pro', 'gpt-5.3': 'openai/gpt-5.3', @@ -127,7 +129,8 @@ export const PICKER_CATEGORIES: ModelCategory[] = [ { id: 'anthropic/claude-opus-4.7', shortcut: 'opus', label: 'Claude Opus 4.7', price: '$5/$25', highlight: true }, { id: 'anthropic/claude-sonnet-4.6', shortcut: 'sonnet', label: 'Claude Sonnet 4.6', price: '$3/$15' }, { id: 'anthropic/claude-opus-4.6', shortcut: 'opus-4.6', label: 'Claude Opus 4.6', price: '$5/$25' }, - { id: 'openai/gpt-5.4', shortcut: 'gpt', label: 'GPT-5.4', price: '$2.5/$15' }, + { id: 'openai/gpt-5.5', shortcut: 'gpt', label: 'GPT-5.5', price: '$5/$30', highlight: true }, + { id: 'openai/gpt-5.4', shortcut: 'gpt-5.4', label: 'GPT-5.4', price: '$2.5/$15' }, { id: 'openai/gpt-5.4-pro', shortcut: 'gpt-5.4-pro', label: 'GPT-5.4 Pro', price: '$30/$180' }, { id: 'google/gemini-2.5-pro', shortcut: 'gemini', label: 'Gemini 2.5 Pro', price: '$1.25/$10' }, { id: 'google/gemini-3.1-pro', shortcut: 'gemini-3', label: 'Gemini 3.1 Pro', price: '$2/$12' },