Skip to content

Commit e93dbbb

Browse files
committed
agentHost: Address model restore review feedback (Written by Copilot)
1 parent 59dfdc4 commit e93dbbb

3 files changed

Lines changed: 14 additions & 11 deletions

File tree

src/vs/platform/agentHost/node/copilot/copilotAgent.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -166,8 +166,8 @@ export class CopilotAgent extends Disposable implements IAgent {
166166
const projectByContext = new Map<string, Promise<IAgentSessionProjectInfo | undefined>>();
167167
const result: IAgentSessionMetadata[] = await Promise.all(sessions.map(async s => {
168168
const session = AgentSession.uri(this.id, s.sessionId);
169-
const metadata = await this._readSessionMetadata(session);
170-
let { project, resolved } = await this._readSessionProject(session);
169+
const metadata = await this._readStoredSessionMetadata(session);
170+
let { project, resolved } = metadata;
171171
if (!resolved) {
172172
project = await this._resolveSessionProject(s.context, projectLimiter, projectByContext);
173173
this._storeSessionProjectResolution(session, project);
@@ -179,7 +179,7 @@ export class CopilotAgent extends Disposable implements IAgent {
179179
...(project ? { project } : {}),
180180
summary: s.summary,
181181
model: metadata.model,
182-
workingDirectory: typeof s.context?.cwd === 'string' ? URI.file(s.context.cwd) : undefined,
182+
workingDirectory: typeof s.context?.cwd === 'string' ? URI.file(s.context.cwd) : metadata.workingDirectory,
183183
};
184184
}));
185185
this._logService.info(`[Copilot] Found ${result.length} sessions`);
@@ -566,19 +566,21 @@ export class CopilotAgent extends Disposable implements IAgent {
566566
}
567567
}
568568

569-
private async _readSessionProject(session: URI): Promise<{ project?: IAgentSessionProjectInfo; resolved: boolean }> {
569+
private async _readStoredSessionMetadata(session: URI): Promise<{ model?: string; workingDirectory?: URI; project?: IAgentSessionProjectInfo; resolved: boolean }> {
570570
const ref = await this._sessionDataService.tryOpenDatabase(session);
571571
if (!ref) {
572572
return { resolved: false };
573573
}
574574
try {
575-
const [resolved, uri, displayName] = await Promise.all([
575+
const [model, cwd, resolved, uri, displayName] = await Promise.all([
576+
ref.object.getMetadata(CopilotAgent._META_MODEL),
577+
ref.object.getMetadata(CopilotAgent._META_CWD),
576578
ref.object.getMetadata(CopilotAgent._META_PROJECT_RESOLVED),
577579
ref.object.getMetadata(CopilotAgent._META_PROJECT_URI),
578580
ref.object.getMetadata(CopilotAgent._META_PROJECT_DISPLAY_NAME),
579581
]);
580582
const project = uri && displayName ? { uri: URI.parse(uri), displayName } : undefined;
581-
return { project, resolved: resolved === 'true' || project !== undefined };
583+
return { model, workingDirectory: cwd ? URI.parse(cwd) : undefined, project, resolved: resolved === 'true' || project !== undefined };
582584
} finally {
583585
ref.dispose();
584586
}

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ class CopilotPickerActionViewItemContribution extends Disposable implements IWor
223223
provider?.setModel(session.sessionId, model.identifier);
224224
}
225225
},
226-
getModels: () => getAvailableModels(languageModelsService, sessionsManagementService),
226+
getModels: () => getAvailableModels(languageModelsService, sessionsManagementService.activeSession.get()),
227227
useGroupedModelPicker: () => true,
228228
showManageModelsAction: () => false,
229229
showUnavailableFeatured: () => false,
@@ -237,7 +237,7 @@ class CopilotPickerActionViewItemContribution extends Disposable implements IWor
237237
const modelPicker = instantiationService.createInstance(EnhancedModelPickerActionItem, action, delegate, pickerOptions);
238238

239239
const updatePickerModel = (session: ISession | undefined, sessionModelId: string | undefined) => {
240-
const models = getAvailableModels(languageModelsService, sessionsManagementService);
240+
const models = getAvailableModels(languageModelsService, session);
241241
modelPicker.setEnabled(models.length > 0);
242242
currentModel.set(sessionModelId ? models.find(model => model.identifier === sessionModelId) : undefined, undefined);
243243
};
@@ -278,9 +278,8 @@ class CopilotPickerActionViewItemContribution extends Disposable implements IWor
278278

279279
function getAvailableModels(
280280
languageModelsService: ILanguageModelsService,
281-
sessionsManagementService: ISessionsManagementService,
281+
session: ISession | undefined,
282282
): ILanguageModelChatMetadataAndIdentifier[] {
283-
const session = sessionsManagementService.activeSession.get();
284283
if (!session) {
285284
return [];
286285
}

src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionHandler.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,8 @@ export class AgentHostSessionHandler extends Disposable implements IChatSessionC
368368
}
369369
const sessionState = this._getSessionState(resolvedSession.toString());
370370
if (sessionState) {
371-
history.push(...turnsToHistory(sessionState.turns, this._config.agentId, this._toLanguageModelId(sessionResource, sessionState.summary.model)));
371+
const modelId = this._toLanguageModelId(sessionResource, sessionState.summary.model);
372+
history.push(...turnsToHistory(sessionState.turns, this._config.agentId, modelId));
372373

373374
// Enrich history with inner tool calls from subagent
374375
// child sessions. Subscribes to each child session so
@@ -395,6 +396,7 @@ export class AgentHostSessionHandler extends Disposable implements IChatSessionC
395396
type: 'request',
396397
prompt: sessionState.activeTurn.userMessage.text,
397398
participant: this._config.agentId,
399+
modelId,
398400
});
399401
history.push({
400402
type: 'response',

0 commit comments

Comments
 (0)