Path: blob/main/src/vs/workbench/contrib/chat/browser/actions/chatClear.ts
5284 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 { Schemas } from '../../../../../base/common/network.js';6import { generateUuid } from '../../../../../base/common/uuid.js';7import { ServicesAccessor } from '../../../../../platform/instantiation/common/instantiation.js';8import { IEditorService } from '../../../../services/editor/common/editorService.js';9import { IChatEditorOptions } from '../widgetHosts/editor/chatEditor.js';10import { ChatEditorInput } from '../widgetHosts/editor/chatEditorInput.js';1112export async function clearChatEditor(accessor: ServicesAccessor, chatEditorInput?: ChatEditorInput): Promise<void> {13const editorService = accessor.get(IEditorService);1415if (!chatEditorInput) {16const editorInput = editorService.activeEditor;17chatEditorInput = editorInput instanceof ChatEditorInput ? editorInput : undefined;18}1920if (chatEditorInput instanceof ChatEditorInput) {21// If we have a contributed session, make sure we create an untitled session for it.22// Otherwise create a generic new chat editor.23const resource = chatEditorInput.sessionResource && chatEditorInput.sessionResource.scheme !== Schemas.vscodeLocalChatSession24? chatEditorInput.sessionResource.with({ path: `/untitled-${generateUuid()}` })25: ChatEditorInput.getNewEditorUri();2627// A chat editor can only be open in one group28const identifier = editorService.findEditors(chatEditorInput.resource)[0];29await editorService.replaceEditors([{30editor: chatEditorInput,31replacement: { resource, options: { pinned: true } satisfies IChatEditorOptions }32}], identifier.groupId);33}34}353637