mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-23 01:58:53 +01:00
73 lines
3.0 KiB
TypeScript
73 lines
3.0 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
import { CancellationToken } from '../../../../base/common/cancellation.js';
|
|
import { Event } from '../../../../base/common/event.js';
|
|
import { IDisposable } from '../../../../base/common/lifecycle.js';
|
|
import { IObservable } from '../../../../base/common/observable.js';
|
|
import { URI } from '../../../../base/common/uri.js';
|
|
import { IActiveCodeEditor, ICodeEditor } from '../../../../editor/browser/editorBrowser.js';
|
|
import { Position } from '../../../../editor/common/core/position.js';
|
|
import { IRange } from '../../../../editor/common/core/range.js';
|
|
import { IValidEditOperation } from '../../../../editor/common/model.js';
|
|
import { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';
|
|
import { IChatEditingSession } from '../../chat/common/chatEditingService.js';
|
|
import { IChatModel } from '../../chat/common/chatModel.js';
|
|
import { Session, StashedSession } from './inlineChatSession.js';
|
|
|
|
export interface ISessionKeyComputer {
|
|
getComparisonKey(editor: ICodeEditor, uri: URI): string;
|
|
}
|
|
|
|
export const IInlineChatSessionService = createDecorator<IInlineChatSessionService>('IInlineChatSessionService');
|
|
|
|
export interface IInlineChatSessionEvent {
|
|
readonly editor: ICodeEditor;
|
|
readonly session: Session;
|
|
}
|
|
|
|
export interface IInlineChatSessionEndEvent extends IInlineChatSessionEvent {
|
|
readonly endedByExternalCause: boolean;
|
|
}
|
|
|
|
export interface IInlineChatSession2 {
|
|
readonly initialPosition: Position;
|
|
readonly uri: URI;
|
|
readonly chatModel: IChatModel;
|
|
readonly editingSession: IChatEditingSession;
|
|
dispose(): void;
|
|
}
|
|
|
|
export interface IInlineChatSessionService {
|
|
_serviceBrand: undefined;
|
|
|
|
onWillStartSession: Event<IActiveCodeEditor>;
|
|
onDidMoveSession: Event<IInlineChatSessionEvent>;
|
|
onDidStashSession: Event<IInlineChatSessionEvent>;
|
|
onDidEndSession: Event<IInlineChatSessionEndEvent>;
|
|
|
|
createSession(editor: IActiveCodeEditor, options: { wholeRange?: IRange; session?: Session; headless?: boolean }, token: CancellationToken): Promise<Session | undefined>;
|
|
|
|
moveSession(session: Session, newEditor: ICodeEditor): void;
|
|
|
|
getCodeEditor(session: Session): ICodeEditor;
|
|
|
|
getSession(editor: ICodeEditor, uri: URI): Session | undefined;
|
|
|
|
releaseSession(session: Session): void;
|
|
|
|
stashSession(session: Session, editor: ICodeEditor, undoCancelEdits: IValidEditOperation[]): StashedSession;
|
|
|
|
registerSessionKeyComputer(scheme: string, value: ISessionKeyComputer): IDisposable;
|
|
|
|
dispose(): void;
|
|
|
|
|
|
hideOnRequest: IObservable<boolean>;
|
|
|
|
createSession2(editor: ICodeEditor, uri: URI, token: CancellationToken): Promise<IInlineChatSession2>;
|
|
getSession2(uri: URI): IInlineChatSession2 | undefined;
|
|
onDidChangeSessions: Event<this>;
|
|
}
|