Skip to content

Commit f6651f7

Browse files
committed
Prevent using an invalid model with agent mode
Fix microsoft#242118
1 parent fd0af44 commit f6651f7

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

src/vs/workbench/contrib/chat/browser/chatInputPart.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,7 @@ export class ChatInputPart extends Disposable implements IHistoryNavigationWidge
415415
if (model) {
416416
this._currentLanguageModel = { metadata: model, identifier: persistedSelection };
417417
this._onDidChangeCurrentLanguageModel.fire(this._currentLanguageModel);
418+
this.checkModelSupported();
418419
} else {
419420
this._waitForPersistedLanguageModel.value = this.languageModelsService.onDidChangeLanguageModels(e => {
420421
const persistedModel = e.added?.find(m => m.identifier === persistedSelection);
@@ -424,19 +425,24 @@ export class ChatInputPart extends Disposable implements IHistoryNavigationWidge
424425
if (persistedModel.metadata.isUserSelectable) {
425426
this._currentLanguageModel = { metadata: persistedModel.metadata, identifier: persistedSelection };
426427
this._onDidChangeCurrentLanguageModel.fire(this._currentLanguageModel!);
428+
this.checkModelSupported();
427429
}
428430
}
429431
});
430432
}
431433
}
432434

433435
this._register(this.chatAgentService.onDidChangeToolsAgentModeEnabled(() => {
434-
if (this._currentLanguageModel && !this.modelSupportedForDefaultAgent(this._currentLanguageModel)) {
435-
this.setCurrentLanguageModelToDefault();
436-
}
436+
this.checkModelSupported();
437437
}));
438438
}
439439

440+
private checkModelSupported(): void {
441+
if (this._currentLanguageModel && !this.modelSupportedForDefaultAgent(this._currentLanguageModel)) {
442+
this.setCurrentLanguageModelToDefault();
443+
}
444+
}
445+
440446
private supportsVision(): boolean {
441447
return this._currentLanguageModel?.metadata.capabilities?.vision ?? false;
442448
}
@@ -475,6 +481,9 @@ export class ChatInputPart extends Disposable implements IHistoryNavigationWidge
475481
this._currentLanguageModel = hasUserSelectableLanguageModels && defaultLanguageModelId ?
476482
{ metadata: this.languageModelsService.lookupLanguageModel(defaultLanguageModelId)!, identifier: defaultLanguageModelId } :
477483
undefined;
484+
if (this._currentLanguageModel) {
485+
this._onDidChangeCurrentLanguageModel.fire(this._currentLanguageModel);
486+
}
478487
}
479488

480489
private setCurrentLanguageModelByUser(model: ILanguageModelChatMetadataAndIdentifier) {

0 commit comments

Comments
 (0)