diff --git a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts index a3a0498410e..55f75663e0c 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/chatWidget.ts @@ -1686,6 +1686,9 @@ export class ChatWidget extends Disposable implements IChatWidget { this.createInput(this.inputContainer); this.input.setChatMode(this.inputPart.currentModeObs.get().id); this.input.setPermissionLevel(this.inputPart.currentModeInfo.permissionLevel ?? ChatPermissionLevel.Default); + if (currentElement.modelId) { + this.input.switchModelByIdentifier(currentElement.modelId); + } this.input.setEditing(true, isEditingSentRequest); this._onDidChangeActiveInputEditor.fire(); } else { @@ -1787,10 +1790,6 @@ export class ChatWidget extends Disposable implements IChatWidget { if (!isInput) { this.inputPart.setChatMode(this.input.currentModeObs.get().id); this.inputPart.setPermissionLevel(this.input.currentModeInfo.permissionLevel ?? ChatPermissionLevel.Default); - const currentModel = this.input.selectedLanguageModel.get(); - if (currentModel) { - this.inputPart.switchModel(currentModel.metadata); - } this.inputPart?.toggleChatInputOverlay(false); try { diff --git a/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts b/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts index fbd7ad17897..fdedf3735ad 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.ts @@ -850,6 +850,20 @@ export class ChatInputPart extends Disposable implements IHistoryNavigationWidge } } + /** + * Switch to a model by its identifier. Returns true if a matching model + * was found and applied. + */ + public switchModelByIdentifier(identifier: string): boolean { + const models = this.getModels(); + const model = models.find(m => m.identifier === identifier); + if (model) { + this.setCurrentLanguageModel(model); + return true; + } + return false; + } + public switchModelByQualifiedName(qualifiedModelNames: readonly string[]): boolean { const models = this.getModels(); for (const qualifiedModelName of qualifiedModelNames) {