Skip to content

Commit 1ec46de

Browse files
authored
1 parent d075f40 commit 1ec46de

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

src/vs/sessions/contrib/copilotChatSessions/browser/copilotChatSessionsActions.ts

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { coalesce } from '../../../../base/common/arrays.js';
7-
import { Disposable } from '../../../../base/common/lifecycle.js';
7+
import { Disposable, DisposableStore, IDisposable } from '../../../../base/common/lifecycle.js';
88
import { IReader, autorun, observableValue } from '../../../../base/common/observable.js';
99
import { localize2 } from '../../../../nls.js';
1010
import { Action2, registerAction2, MenuId, MenuRegistry, isIMenuItem } from '../../../../platform/actions/common/actions.js';
@@ -158,8 +158,11 @@ registerAction2(class extends Action2 {
158158
* so it can be rendered by a {@link MenuWorkbenchToolBar}.
159159
*/
160160
class PickerActionViewItem extends BaseActionViewItem {
161-
constructor(private readonly picker: { render(container: HTMLElement): void; dispose(): void }) {
161+
constructor(private readonly picker: { render(container: HTMLElement): void; dispose(): void }, disposable?: IDisposable) {
162162
super(undefined, { id: '', label: '', enabled: true, class: undefined, tooltip: '', run: () => { } });
163+
if (disposable) {
164+
this._register(disposable);
165+
}
163166
}
164167

165168
override render(container: HTMLElement): void {
@@ -248,9 +251,21 @@ class CopilotPickerActionViewItemContribution extends Disposable implements IWor
248251
}
249252
};
250253
initModel();
251-
this._register(languageModelsService.onDidChangeLanguageModels(() => initModel()));
252254

253-
return modelPicker;
255+
const disposableStore = new DisposableStore();
256+
disposableStore.add(languageModelsService.onDidChangeLanguageModels(() => initModel()));
257+
258+
// When the active session changes, push the selected model to the new session
259+
disposableStore.add(autorun(reader => {
260+
const session = sessionsManagementService.activeSession.read(reader);
261+
const model = currentModel.read(reader);
262+
if (session && model) {
263+
const provider = sessionsProvidersService.getProviders().find(p => p.id === session.providerId);
264+
provider?.setModel(session.sessionId, model.identifier);
265+
}
266+
}));
267+
268+
return new PickerActionViewItem(modelPicker, disposableStore);
254269
},
255270
));
256271
this._register(actionViewItemService.register(

0 commit comments

Comments
 (0)