1+ import { getEnv , isTruthy } from '@/lib/env'
12import { isHosted } from '@/lib/environment'
23import { createLogger } from '@/lib/logs/console/logger'
34import { anthropicProvider } from '@/providers/anthropic'
@@ -129,8 +130,8 @@ export async function updateOpenRouterProviderModels(models: string[]): Promise<
129130}
130131
131132export function getBaseModelProviders ( ) : Record < string , ProviderId > {
132- return Object . entries ( providers )
133- . filter ( ( [ providerId ] ) => providerId !== 'ollama' )
133+ const allProviders = Object . entries ( providers )
134+ . filter ( ( [ providerId ] ) => providerId !== 'ollama' && providerId !== 'openrouter' )
134135 . reduce (
135136 ( map , [ providerId , config ] ) => {
136137 config . models . forEach ( ( model ) => {
@@ -140,6 +141,20 @@ export function getBaseModelProviders(): Record<string, ProviderId> {
140141 } ,
141142 { } as Record < string , ProviderId >
142143 )
144+
145+ return filterBlacklistedModelsFromProviderMap ( allProviders )
146+ }
147+
148+ function filterBlacklistedModelsFromProviderMap (
149+ providerMap : Record < string , ProviderId >
150+ ) : Record < string , ProviderId > {
151+ const filtered : Record < string , ProviderId > = { }
152+ for ( const [ model , providerId ] of Object . entries ( providerMap ) ) {
153+ if ( ! isModelBlacklisted ( model ) ) {
154+ filtered [ model ] = providerId
155+ }
156+ }
157+ return filtered
143158}
144159
145160export function getAllModelProviders ( ) : Record < string , ProviderId > {
@@ -197,6 +212,44 @@ export function getProviderModels(providerId: ProviderId): string[] {
197212 return getProviderModelsFromDefinitions ( providerId )
198213}
199214
215+ interface ModelBlacklist {
216+ models : string [ ]
217+ prefixes : string [ ]
218+ envOverride ?: string
219+ }
220+
221+ const MODEL_BLACKLISTS : ModelBlacklist [ ] = [
222+ {
223+ models : [ 'deepseek-chat' , 'deepseek-v3' , 'deepseek-r1' ] ,
224+ prefixes : [ 'openrouter/deepseek' , 'openrouter/tngtech' ] ,
225+ envOverride : 'DEEPSEEK_MODELS_ENABLED' ,
226+ } ,
227+ ]
228+
229+ function isModelBlacklisted ( model : string ) : boolean {
230+ const lowerModel = model . toLowerCase ( )
231+
232+ for ( const blacklist of MODEL_BLACKLISTS ) {
233+ if ( blacklist . envOverride && isTruthy ( getEnv ( blacklist . envOverride ) ) ) {
234+ continue
235+ }
236+
237+ if ( blacklist . models . includes ( lowerModel ) ) {
238+ return true
239+ }
240+
241+ if ( blacklist . prefixes . some ( ( prefix ) => lowerModel . startsWith ( prefix ) ) ) {
242+ return true
243+ }
244+ }
245+
246+ return false
247+ }
248+
249+ export function filterBlacklistedModels ( models : string [ ] ) : string [ ] {
250+ return models . filter ( ( model ) => ! isModelBlacklisted ( model ) )
251+ }
252+
200253/**
201254 * Get provider icon for a given model
202255 */
0 commit comments