Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
import { CancellationToken } from '../../../../base/common/cancellation.js';
6
import { Event } from '../../../../base/common/event.js';
7
import { IDisposable } from '../../../../base/common/lifecycle.js';
8
import { IObservable } from '../../../../base/common/observable.js';
9
import { URI } from '../../../../base/common/uri.js';
10
import { IActiveCodeEditor, ICodeEditor } from '../../../../editor/browser/editorBrowser.js';
11
import { Position } from '../../../../editor/common/core/position.js';
12
import { IRange } from '../../../../editor/common/core/range.js';
13
import { IValidEditOperation } from '../../../../editor/common/model.js';
14
import { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';
15
import { IChatEditingSession } from '../../chat/common/chatEditingService.js';
16
import { IChatModel } from '../../chat/common/chatModel.js';
17
import { Session, StashedSession } from './inlineChatSession.js';
18
19
export interface ISessionKeyComputer {
20
getComparisonKey(editor: ICodeEditor, uri: URI): string;
21
}
22
23
export const IInlineChatSessionService = createDecorator<IInlineChatSessionService>('IInlineChatSessionService');
24
25
export interface IInlineChatSessionEvent {
26
readonly editor: ICodeEditor;
27
readonly session: Session;
28
}
29
30
export interface IInlineChatSessionEndEvent extends IInlineChatSessionEvent {
31
readonly endedByExternalCause: boolean;
32
}
33
34
export interface IInlineChatSession2 {
35
readonly initialPosition: Position;
36
readonly uri: URI;
37
readonly chatModel: IChatModel;
38
readonly editingSession: IChatEditingSession;
39
dispose(): void;
40
}
41
42
export interface IInlineChatSessionService {
43
_serviceBrand: undefined;
44
45
onWillStartSession: Event<IActiveCodeEditor>;
46
onDidMoveSession: Event<IInlineChatSessionEvent>;
47
onDidStashSession: Event<IInlineChatSessionEvent>;
48
onDidEndSession: Event<IInlineChatSessionEndEvent>;
49
50
createSession(editor: IActiveCodeEditor, options: { wholeRange?: IRange; session?: Session; headless?: boolean }, token: CancellationToken): Promise<Session | undefined>;
51
52
moveSession(session: Session, newEditor: ICodeEditor): void;
53
54
getCodeEditor(session: Session): ICodeEditor;
55
56
getSession(editor: ICodeEditor, uri: URI): Session | undefined;
57
58
releaseSession(session: Session): void;
59
60
stashSession(session: Session, editor: ICodeEditor, undoCancelEdits: IValidEditOperation[]): StashedSession;
61
62
registerSessionKeyComputer(scheme: string, value: ISessionKeyComputer): IDisposable;
63
64
dispose(): void;
65
66
67
hideOnRequest: IObservable<boolean>;
68
69
createSession2(editor: ICodeEditor, uri: URI, token: CancellationToken): Promise<IInlineChatSession2>;
70
getSession2(uri: URI): IInlineChatSession2 | undefined;
71
onDidChangeSessions: Event<this>;
72
}
73
74