From b7cb742a340940385161b099055c76735b2f7b71 Mon Sep 17 00:00:00 2001 From: Christiaan Arnoldus Date: Fri, 10 Jul 2026 14:10:32 +0200 Subject: [PATCH 1/3] Update recommended models --- apps/web/src/lib/ai-gateway/models.ts | 40 ++++++++++--------- .../src/lib/ai-gateway/providers/deepseek.ts | 2 +- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/apps/web/src/lib/ai-gateway/models.ts b/apps/web/src/lib/ai-gateway/models.ts index 2b75ef091c..746e9e308d 100644 --- a/apps/web/src/lib/ai-gateway/models.ts +++ b/apps/web/src/lib/ai-gateway/models.ts @@ -10,33 +10,30 @@ import { KILO_AUTO_FRONTIER_MODEL, } from '@/lib/ai-gateway/auto-model'; import { - CLAUDE_OPUS_CURRENT_MODEL_ID, CLAUDE_OPUS_4_8_STEALTH_MODEL_ID, - CLAUDE_OPUS_STEALTH_MODEL_ID, - CLAUDE_SONNET_STEALTH_MODEL_ID, - CLAUDE_OPUS_4_6_STEALTH_MODEL_ID, claude_opus_4_8_stealth_model, claude_opus_4_7_stealth_model, claude_sonnet_4_6_stealth_model, claude_opus_4_6_stealth_model, claude_sonnet_clawsetup_model, CLAUDE_SONNET_CURRENT_MODEL_ID, + CLAUDE_OPUS_CURRENT_MODEL_ID, } from '@/lib/ai-gateway/providers/anthropic.constants'; import { seed_20_code_free_model } from '@/lib/ai-gateway/providers/seed'; import type { KiloExclusiveModel } from '@/lib/ai-gateway/providers/kilo-exclusive-model'; import { MINIMAX_CURRENT_MODEL_ID } from '@/lib/ai-gateway/providers/minimax'; import { KIMI_CURRENT_MODEL_ID } from '@/lib/ai-gateway/providers/moonshotai'; -import { - GEMINI_PRO_CURRENT_MODEL_ID, - gemma_4_26b_a4b_it_free_model, -} from '@/lib/ai-gateway/providers/google'; +import { gemma_4_26b_a4b_it_free_model } from '@/lib/ai-gateway/providers/google'; import { QWEN37_PLUS_MODEL_ID, qwen36_plus_stealth_model } from '@/lib/ai-gateway/providers/qwen'; import { stepfun_37_flash_free_model } from '@/lib/ai-gateway/providers/stepfun'; import { isGrokModel } from '@/lib/ai-gateway/providers/xai'; import { isClaudeModel } from '@/lib/ai-gateway/providers/anthropic.constants'; import { GPT_CURRENT_MODEL_ID, isOpenAiModel } from '@/lib/ai-gateway/providers/openai'; import { GLM_CURRENT_MODEL_ID } from '@/lib/ai-gateway/providers/zai'; -import { deepseekDiscountedModels } from '@/lib/ai-gateway/providers/deepseek'; +import { + deepseek_v4_pro_discounted_model, + deepseekDiscountedModels, +} from '@/lib/ai-gateway/providers/deepseek'; import { type ProviderId } from '@/lib/ai-gateway/providers/types'; export const PRIMARY_DEFAULT_MODEL = CLAUDE_SONNET_CURRENT_MODEL_ID; @@ -51,20 +48,25 @@ export const preferredModels = [ KILO_AUTO_BALANCED_MODEL.id, KILO_AUTO_EFFICIENT_MODEL.id, KILO_AUTO_FREE_MODEL.id, + ...autoFreeModels, - CLAUDE_OPUS_CURRENT_MODEL_ID, - CLAUDE_OPUS_4_8_STEALTH_MODEL_ID, - CLAUDE_OPUS_STEALTH_MODEL_ID, - CLAUDE_SONNET_STEALTH_MODEL_ID, - CLAUDE_OPUS_4_6_STEALTH_MODEL_ID, - KIMI_CURRENT_MODEL_ID, + CLAUDE_SONNET_CURRENT_MODEL_ID, + claude_opus_4_8_stealth_model.status === 'public' + ? CLAUDE_OPUS_4_8_STEALTH_MODEL_ID + : CLAUDE_OPUS_CURRENT_MODEL_ID, GPT_CURRENT_MODEL_ID, - GEMINI_PRO_CURRENT_MODEL_ID, - MINIMAX_CURRENT_MODEL_ID, - QWEN37_PLUS_MODEL_ID, - qwen36_plus_stealth_model.public_id, + 'openai/gpt-5.6-terra', + + deepseek_v4_pro_discounted_model.status === 'public' + ? deepseek_v4_pro_discounted_model.public_id + : 'deepseek/deepseek-v4-pro', GLM_CURRENT_MODEL_ID, + KIMI_CURRENT_MODEL_ID, + MINIMAX_CURRENT_MODEL_ID, + qwen36_plus_stealth_model.status === 'public' + ? qwen36_plus_stealth_model.public_id + : QWEN37_PLUS_MODEL_ID, ]; export function isPdfSupportingModel(model: string): boolean { diff --git a/apps/web/src/lib/ai-gateway/providers/deepseek.ts b/apps/web/src/lib/ai-gateway/providers/deepseek.ts index cb7ccd7962..75e98a7f25 100644 --- a/apps/web/src/lib/ai-gateway/providers/deepseek.ts +++ b/apps/web/src/lib/ai-gateway/providers/deepseek.ts @@ -4,7 +4,7 @@ export function isDeepseekModel(model: string) { return model.includes('deepseek'); } -const deepseek_v4_pro_discounted_model: KiloExclusiveModel = { +export const deepseek_v4_pro_discounted_model: KiloExclusiveModel = { public_id: 'deepseek/deepseek-v4-pro:discounted', internal_id: 'deepseek/deepseek-v4-pro', display_name: 'DeepSeek: DeepSeek V4 Pro (>80% off)', From 1cae3ea1db70abed0e516abf9bf88bcfa7f93228 Mon Sep 17 00:00:00 2001 From: chrarnoldus <12196001+chrarnoldus@users.noreply.github.com> Date: Fri, 10 Jul 2026 13:22:02 +0000 Subject: [PATCH 2/3] test(ai-gateway): remove retired Gemini recommendation Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com> --- apps/web/src/tests/openrouter-models-config.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/web/src/tests/openrouter-models-config.test.ts b/apps/web/src/tests/openrouter-models-config.test.ts index b642188c15..5476639ad7 100644 --- a/apps/web/src/tests/openrouter-models-config.test.ts +++ b/apps/web/src/tests/openrouter-models-config.test.ts @@ -6,7 +6,6 @@ import { GPT_CURRENT_MODEL_ID } from '@/lib/ai-gateway/providers/openai'; describe('OpenRouter Models Config', () => { test('preferred models should contain expected models', () => { const expectedModels = [ - 'google/gemini-3.1-pro-preview', CLAUDE_SONNET_CURRENT_MODEL_ID, GPT_CURRENT_MODEL_ID, 'z-ai/glm-5.2', From 4272554bbcba7f80907e4b366efbc8c0332f706b Mon Sep 17 00:00:00 2001 From: Christiaan Arnoldus Date: Fri, 10 Jul 2026 15:42:20 +0200 Subject: [PATCH 3/3] Fix --- apps/web/src/tests/openrouter-models-config.test.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/apps/web/src/tests/openrouter-models-config.test.ts b/apps/web/src/tests/openrouter-models-config.test.ts index 5476639ad7..6742a3389e 100644 --- a/apps/web/src/tests/openrouter-models-config.test.ts +++ b/apps/web/src/tests/openrouter-models-config.test.ts @@ -5,11 +5,7 @@ import { GPT_CURRENT_MODEL_ID } from '@/lib/ai-gateway/providers/openai'; describe('OpenRouter Models Config', () => { test('preferred models should contain expected models', () => { - const expectedModels = [ - CLAUDE_SONNET_CURRENT_MODEL_ID, - GPT_CURRENT_MODEL_ID, - 'z-ai/glm-5.2', - ]; + const expectedModels = [CLAUDE_SONNET_CURRENT_MODEL_ID, GPT_CURRENT_MODEL_ID, 'z-ai/glm-5.2']; expectedModels.forEach(model => { expect(preferredModels).toContain(model);