@@ -246,6 +246,7 @@ class VoidSettingsService extends Disposable implements IVoidSettingsService {
246246 ) {
247247 super ( )
248248
249+ this . _fetchOpenRouterFreeModels ( )
249250 // at the start, we haven't read the partial config yet, but we need to set state to something
250251 this . state = defaultState ( )
251252 let resolver : ( ) => void = ( ) => { }
@@ -289,7 +290,7 @@ class VoidSettingsService extends Disposable implements IVoidSettingsService {
289290 }
290291 // add disableSystemMessage feature
291292 if ( readS . globalSettings . disableSystemMessage === undefined ) readS . globalSettings . disableSystemMessage = false ;
292-
293+
293294 // add autoAcceptLLMChanges feature
294295 if ( readS . globalSettings . autoAcceptLLMChanges === undefined ) readS . globalSettings . autoAcceptLLMChanges = false ;
295296 }
@@ -365,6 +366,28 @@ class VoidSettingsService extends Disposable implements IVoidSettingsService {
365366 this . _storageService . store ( VOID_SETTINGS_STORAGE_KEY , encryptedState , StorageScope . APPLICATION , StorageTarget . USER ) ;
366367 }
367368
369+ private async _fetchOpenRouterFreeModels ( ) {
370+ const res = await fetch ( 'https://openrouter.ai/api/v1/models' ) ;
371+
372+ if ( res . status !== 200 ) {
373+ throw new Error ( `[${ res . status } ] Error fetching OpenRouter models: ${ res . statusText } ` ) ;
374+ }
375+ interface OpenRouterModel {
376+ id : string
377+ name : string
378+ }
379+ const { data : models } = await res . json ( ) as { data : [ OpenRouterModel ] } ;
380+ const freeModels = models . filter ( m => m . id . includes ( ':free' ) ) ;
381+ const providerName = 'openRouter' ;
382+ for ( const model of freeModels ) {
383+ this . addModel ( providerName , model . id ) ;
384+ }
385+ const modelsToDelete = this . state . settingsOfProvider [ providerName ] . models . filter ( m => freeModels . some ( f => f . id === m . modelName ) === false && m . modelName . includes ( ':free' ) ) ;
386+ for ( const m of modelsToDelete ) {
387+ this . deleteModel ( providerName , m . modelName ) ;
388+ }
389+ }
390+
368391 setSettingOfProvider : SetSettingOfProviderFn = async ( providerName , settingName , newVal ) => {
369392
370393 const newModelSelectionOfFeature = this . state . modelSelectionOfFeature
0 commit comments