Path: blob/main/extensions/copilot/src/extension/chatSessions/copilotcli/vscode-node/commands/pickSession.ts
13406 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import * as vscode from 'vscode';6import * as l10n from '@vscode/l10n';7import { ILogger } from '../../../../../platform/log/common/logService';8import { ICopilotCLISessionTracker } from '../copilotCLISessionTracker';9import { InProcHttpServer } from '../inProcHttpServer';1011/**12* Picks a connected CLI session to send to.13* Returns the sessionId, or undefined if none are connected or the user dismissed the picker.14* If only one session is connected, returns it directly without showing a picker.15*/16export async function pickSession(logger: ILogger, httpServer: InProcHttpServer, sessionTracker: ICopilotCLISessionTracker): Promise<string | undefined> {17const sessionIds = httpServer.getConnectedSessionIds();1819if (sessionIds.length === 0) {20logger.debug('No connected CLI sessions');21vscode.window.showWarningMessage(l10n.t('No Copilot CLI sessions are connected.'));22return undefined;23}2425if (sessionIds.length === 1) {26return sessionIds[0];27}2829const items = sessionIds.map(id => ({30label: sessionTracker.getSessionDisplayName(id),31description: sessionTracker.getSessionDisplayName(id) !== id ? id : undefined,32sessionId: id,33}));3435const picked = await vscode.window.showQuickPick(items, {36placeHolder: l10n.t('Select a CLI session to send to'),37});3839return picked?.sessionId;40}414243