Skip to content

Commit 19a0978

Browse files
authored
Fix auto activation of chat providers (microsoft#259856)
1 parent 5934cc9 commit 19a0978

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

src/vs/workbench/contrib/chat/common/languageModels.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,9 @@ export class LanguageModelsService implements ILanguageModelsService {
409409
if (typeof vendors === 'string') {
410410
vendors = [vendors];
411411
}
412+
// Activate extensions before requesting to resolve the models
413+
const all = vendors.map(vendor => this._extensionService.activateByEvent(`onLanguageModelChat:${vendor}`));
414+
await Promise.all(all);
412415
this._clearModelCache(vendors);
413416
for (const vendor of vendors) {
414417
const provider = this._providers.get(vendor);
@@ -436,14 +439,9 @@ export class LanguageModelsService implements ILanguageModelsService {
436439
async selectLanguageModels(selector: ILanguageModelChatSelector, allowPromptingUser?: boolean): Promise<string[]> {
437440

438441
if (selector.vendor) {
439-
// selective activation
440-
await this._extensionService.activateByEvent(`onLanguageModelChat:${selector.vendor}}`);
441442
await this.resolveLanguageModels([selector.vendor], !allowPromptingUser);
442443
} else {
443-
// activate all extensions that do language models
444444
const allVendors = Array.from(this._vendors.keys());
445-
const all = allVendors.map(vendor => this._extensionService.activateByEvent(`onLanguageModelChat:${vendor}`));
446-
await Promise.all(all);
447445
await this.resolveLanguageModels(allVendors, !allowPromptingUser);
448446
}
449447

@@ -475,7 +473,7 @@ export class LanguageModelsService implements ILanguageModelsService {
475473

476474
this._providers.set(vendor, provider);
477475

478-
// TODO @lramos15 - Smarter restore logic. Don't activate all providers, but only those which were known to need restoring
476+
// TODO @lramos15 - Smarter restore logic. Don't resolve models for all providers, but only those which were known to need restoring
479477
this.resolveLanguageModels(vendor, true).then(() => {
480478
this._onLanguageModelChange.fire();
481479
});

src/vs/workbench/services/extensions/common/extensionsRegistry.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,11 @@ export const schema: IJSONSchema = {
393393
body: 'onChatParticipant:${1:participantId}',
394394
description: nls.localize('vscode.extension.activationEvents.onChatParticipant', 'An activation event emitted when the specified chat participant is invoked.'),
395395
},
396+
{
397+
label: 'onLanguageModelChat',
398+
body: 'onLanguageModelChat:${1:vendor}',
399+
description: nls.localize('vscode.extension.activationEvents.onLanguageModelChat', 'An activation event emitted when a chat model provider for the given vendor is requested.'),
400+
},
396401
{
397402
label: 'onLanguageModelTool',
398403
body: 'onLanguageModelTool:${1:toolId}',

0 commit comments

Comments
 (0)