Path: blob/main/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.ts
3296 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*--------------------------------------------------------------------------------------------*/4import { CancellationToken } from '../../../../base/common/cancellation.js';5import { Event } from '../../../../base/common/event.js';6import { IDisposable } from '../../../../base/common/lifecycle.js';7import { IObservable } from '../../../../base/common/observable.js';8import { URI } from '../../../../base/common/uri.js';9import { IActiveCodeEditor, ICodeEditor } from '../../../../editor/browser/editorBrowser.js';10import { Position } from '../../../../editor/common/core/position.js';11import { IRange } from '../../../../editor/common/core/range.js';12import { IValidEditOperation } from '../../../../editor/common/model.js';13import { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';14import { IChatEditingSession } from '../../chat/common/chatEditingService.js';15import { IChatModel } from '../../chat/common/chatModel.js';16import { Session, StashedSession } from './inlineChatSession.js';1718export interface ISessionKeyComputer {19getComparisonKey(editor: ICodeEditor, uri: URI): string;20}2122export const IInlineChatSessionService = createDecorator<IInlineChatSessionService>('IInlineChatSessionService');2324export interface IInlineChatSessionEvent {25readonly editor: ICodeEditor;26readonly session: Session;27}2829export interface IInlineChatSessionEndEvent extends IInlineChatSessionEvent {30readonly endedByExternalCause: boolean;31}3233export interface IInlineChatSession2 {34readonly initialPosition: Position;35readonly uri: URI;36readonly chatModel: IChatModel;37readonly editingSession: IChatEditingSession;38dispose(): void;39}4041export interface IInlineChatSessionService {42_serviceBrand: undefined;4344onWillStartSession: Event<IActiveCodeEditor>;45onDidMoveSession: Event<IInlineChatSessionEvent>;46onDidStashSession: Event<IInlineChatSessionEvent>;47onDidEndSession: Event<IInlineChatSessionEndEvent>;4849createSession(editor: IActiveCodeEditor, options: { wholeRange?: IRange; session?: Session; headless?: boolean }, token: CancellationToken): Promise<Session | undefined>;5051moveSession(session: Session, newEditor: ICodeEditor): void;5253getCodeEditor(session: Session): ICodeEditor;5455getSession(editor: ICodeEditor, uri: URI): Session | undefined;5657releaseSession(session: Session): void;5859stashSession(session: Session, editor: ICodeEditor, undoCancelEdits: IValidEditOperation[]): StashedSession;6061registerSessionKeyComputer(scheme: string, value: ISessionKeyComputer): IDisposable;6263dispose(): void;646566hideOnRequest: IObservable<boolean>;6768createSession2(editor: ICodeEditor, uri: URI, token: CancellationToken): Promise<IInlineChatSession2>;69getSession2(uri: URI): IInlineChatSession2 | undefined;70onDidChangeSessions: Event<this>;71}727374