@@ -12,12 +12,14 @@ import { DisposableStore, IDisposable, toDisposable } from '../../../../base/com
12
12
import { isFalsyOrWhitespace } from '../../../../base/common/strings.js' ;
13
13
import { URI } from '../../../../base/common/uri.js' ;
14
14
import { localize } from '../../../../nls.js' ;
15
+ import { IContextKey , IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js' ;
15
16
import { ExtensionIdentifier } from '../../../../platform/extensions/common/extensions.js' ;
16
17
import { createDecorator } from '../../../../platform/instantiation/common/instantiation.js' ;
17
18
import { ILogService } from '../../../../platform/log/common/log.js' ;
18
19
import { IStorageService , StorageScope , StorageTarget } from '../../../../platform/storage/common/storage.js' ;
19
20
import { IExtensionService , isProposedApiEnabled } from '../../../services/extensions/common/extensions.js' ;
20
21
import { ExtensionsRegistry } from '../../../services/extensions/common/extensionsRegistry.js' ;
22
+ import { ChatContextKeys } from './chatContextKeys.js' ;
21
23
22
24
export const enum ChatMessageRole {
23
25
System ,
@@ -297,17 +299,23 @@ export class LanguageModelsService implements ILanguageModelsService {
297
299
private readonly _vendors = new Map < string , IUserFriendlyLanguageModel > ( ) ;
298
300
private readonly _modelPickerUserPreferences : Record < string , boolean > = { } ; // We use a record instead of a map for better serialization when storing
299
301
302
+ private readonly _hasUserSelectableModels : IContextKey < boolean > ;
300
303
private readonly _onLanguageModelChange = this . _store . add ( new Emitter < void > ( ) ) ;
301
304
readonly onDidChangeLanguageModels : Event < void > = this . _onLanguageModelChange . event ;
302
305
303
306
constructor (
304
307
@IExtensionService private readonly _extensionService : IExtensionService ,
305
308
@ILogService private readonly _logService : ILogService ,
306
- @IStorageService private readonly _storageService : IStorageService
309
+ @IStorageService private readonly _storageService : IStorageService ,
310
+ @IContextKeyService _contextKeyService : IContextKeyService
307
311
) {
308
-
312
+ this . _hasUserSelectableModels = ChatContextKeys . languageModelsAreUserSelectable . bindTo ( _contextKeyService ) ;
309
313
this . _modelPickerUserPreferences = this . _storageService . getObject < Record < string , boolean > > ( 'chatModelPickerPreferences' , StorageScope . PROFILE , this . _modelPickerUserPreferences ) ;
310
314
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
+
311
319
this . _store . add ( languageModelExtensionPoint . setHandler ( ( extensions ) => {
312
320
313
321
this . _vendors . clear ( ) ;
0 commit comments