diff --git a/apps/web/src/lib/ai-gateway/forbidden-free-models.ts b/apps/web/src/lib/ai-gateway/forbidden-free-models.ts index d05a0c427..a879e7af4 100644 --- a/apps/web/src/lib/ai-gateway/forbidden-free-models.ts +++ b/apps/web/src/lib/ai-gateway/forbidden-free-models.ts @@ -25,6 +25,7 @@ const forbiddenFreeModelIds: ReadonlySet = new Set([ 'meta-llama/llama-3.2-3b-instruct:free', 'meta-llama/llama-3.3-70b-instruct:free', 'mistralai/mistral-small-3.1-24b-instruct:free', + 'morph-warp-grep-v2', 'minimax/minimax-m2.1:free', 'minimax/minimax-m2.5:free', 'moonshotai/kimi-k2.5:free', diff --git a/apps/web/src/lib/ai-gateway/models.ts b/apps/web/src/lib/ai-gateway/models.ts index 1103af4ae..d661f6997 100644 --- a/apps/web/src/lib/ai-gateway/models.ts +++ b/apps/web/src/lib/ai-gateway/models.ts @@ -25,7 +25,6 @@ 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 { morph_warp_grep_free_model } from '@/lib/ai-gateway/providers/morph'; import { GEMINI_PRO_CURRENT_MODEL_ID, gemma_4_26b_a4b_it_free_model, @@ -84,7 +83,6 @@ export function isKiloExclusiveModel(model: string): boolean { export const kiloExclusiveModels = [ gemma_4_26b_a4b_it_free_model, - morph_warp_grep_free_model, seed_20_code_free_model, ...deepseekDiscountedModels, qwen36_plus_stealth_model, diff --git a/apps/web/src/lib/ai-gateway/providers/morph.ts b/apps/web/src/lib/ai-gateway/providers/morph.ts deleted file mode 100644 index 95ebb2cae..000000000 --- a/apps/web/src/lib/ai-gateway/providers/morph.ts +++ /dev/null @@ -1,17 +0,0 @@ -import type { KiloExclusiveModel } from '@/lib/ai-gateway/providers/kilo-exclusive-model'; - -export const morph_warp_grep_free_model: KiloExclusiveModel = { - public_id: 'morph-warp-grep-v2', - display_name: 'Morph: WarpGrep V2', - description: - 'A code search subagent that finds relevant code in a separate context window — no embeddings, no indexing.', - context_length: 256000, - max_completion_tokens: 32000, - status: 'hidden', - flags: [], - gateway: 'morph', - internal_id: 'morph-warp-grep-v2', - pricing: null, - exclusive_to: [], - inference_provider_restriction: [], -}; diff --git a/apps/web/src/lib/ai-gateway/providers/openrouter/index.test.ts b/apps/web/src/lib/ai-gateway/providers/openrouter/index.test.ts index a6b6025ce..a983f8a1c 100644 --- a/apps/web/src/lib/ai-gateway/providers/openrouter/index.test.ts +++ b/apps/web/src/lib/ai-gateway/providers/openrouter/index.test.ts @@ -10,7 +10,7 @@ import { createMockResponse, mockOpenRouterModels } from '@/tests/helpers/openro import type { OpenRouterModel } from '@/lib/organizations/organization-types'; import { qwen36_plus_stealth_model } from '@/lib/ai-gateway/providers/qwen'; import { seed_20_code_free_model } from '@/lib/ai-gateway/providers/seed'; -import { morph_warp_grep_free_model } from '@/lib/ai-gateway/providers/morph'; +import { gemma_4_26b_a4b_it_free_model } from '@/lib/ai-gateway/providers/google'; import { findKiloExclusiveModel, isDeadFreeModel, @@ -166,8 +166,8 @@ describe('shouldSuppressOpenRouterModel', () => { }); it('suppresses hidden Kilo-exclusive models from OpenRouter', () => { - expect(morph_warp_grep_free_model.status).toBe('hidden'); - expect(shouldSuppressOpenRouterModel(morph_warp_grep_free_model)).toBe(true); + expect(gemma_4_26b_a4b_it_free_model.status).toBe('hidden'); + expect(shouldSuppressOpenRouterModel(gemma_4_26b_a4b_it_free_model)).toBe(true); }); }); diff --git a/apps/web/src/lib/ai-gateway/providers/provider-definitions.ts b/apps/web/src/lib/ai-gateway/providers/provider-definitions.ts index 74bdbda1e..b405aa639 100644 --- a/apps/web/src/lib/ai-gateway/providers/provider-definitions.ts +++ b/apps/web/src/lib/ai-gateway/providers/provider-definitions.ts @@ -60,13 +60,6 @@ export default { supportedChatApis: [], transformRequest() {}, }, - MORPH: { - id: 'morph', - apiUrl: 'https://api.morphllm.com/v1', - apiKey: getEnvVariable('MORPH_API_KEY'), - supportedChatApis: ['chat_completions'], - transformRequest() {}, - }, VERCEL_AI_GATEWAY: { id: 'vercel', apiUrl: 'https://ai-gateway.vercel.sh/v1', diff --git a/apps/web/src/lib/ai-gateway/providers/types.ts b/apps/web/src/lib/ai-gateway/providers/types.ts index ea41875fe..380b63f47 100644 --- a/apps/web/src/lib/ai-gateway/providers/types.ts +++ b/apps/web/src/lib/ai-gateway/providers/types.ts @@ -10,7 +10,6 @@ export type ProviderId = | 'inception' | 'martian' | 'mistral' - | 'morph' | 'vercel' | 'custom' | 'experiment'