@@ -12,12 +12,14 @@ import { DisposableStore, IDisposable, toDisposable } from '../../../../base/com
1212import { isFalsyOrWhitespace } from '../../../../base/common/strings.js' ;
1313import { URI } from '../../../../base/common/uri.js' ;
1414import { localize } from '../../../../nls.js' ;
15+ import { IContextKey , IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js' ;
1516import { ExtensionIdentifier } from '../../../../platform/extensions/common/extensions.js' ;
1617import { createDecorator } from '../../../../platform/instantiation/common/instantiation.js' ;
1718import { ILogService } from '../../../../platform/log/common/log.js' ;
1819import { IStorageService , StorageScope , StorageTarget } from '../../../../platform/storage/common/storage.js' ;
1920import { IExtensionService , isProposedApiEnabled } from '../../../services/extensions/common/extensions.js' ;
2021import { ExtensionsRegistry } from '../../../services/extensions/common/extensionsRegistry.js' ;
22+ import { ChatContextKeys } from './chatContextKeys.js' ;
2123
2224export const enum ChatMessageRole {
2325 System ,
@@ -297,17 +299,23 @@ export class LanguageModelsService implements ILanguageModelsService {
297299 private readonly _vendors = new Map < string , IUserFriendlyLanguageModel > ( ) ;
298300 private readonly _modelPickerUserPreferences : Record < string , boolean > = { } ; // We use a record instead of a map for better serialization when storing
299301
302+ private readonly _hasUserSelectableModels : IContextKey < boolean > ;
300303 private readonly _onLanguageModelChange = this . _store . add ( new Emitter < void > ( ) ) ;
301304 readonly onDidChangeLanguageModels : Event < void > = this . _onLanguageModelChange . event ;
302305
303306 constructor (
304307 @IExtensionService private readonly _extensionService : IExtensionService ,
305308 @ILogService private readonly _logService : ILogService ,
306- @IStorageService private readonly _storageService : IStorageService
309+ @IStorageService private readonly _storageService : IStorageService ,
310+ @IContextKeyService _contextKeyService : IContextKeyService
307311 ) {
308-
312+ this . _hasUserSelectableModels = ChatContextKeys . languageModelsAreUserSelectable . bindTo ( _contextKeyService ) ;
309313 this . _modelPickerUserPreferences = this . _storageService . getObject < Record < string , boolean > > ( 'chatModelPickerPreferences' , StorageScope . PROFILE , this . _modelPickerUserPreferences ) ;
310314
315+ this . _store . add ( this . onDidChangeLanguageModels ( ( ) => {
316+ this . _hasUserSelectableModels . set ( this . _modelCache . size > 0 && Array . from ( this . _modelCache . values ( ) ) . some ( model => model . isUserSelectable ) ) ;
317+ } ) ) ;
318+
311319 this . _store . add ( languageModelExtensionPoint . setHandler ( ( extensions ) => {
312320
313321 this . _vendors . clear ( ) ;
0 commit comments