Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/extension/inlineEdits/vscode-node/inlineEditModel.ts
13399 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
6
import { ConfigKey, IConfigurationService } from '../../../platform/configuration/common/configurationService';
7
import { IStatelessNextEditProvider } from '../../../platform/inlineEdits/common/statelessNextEditProvider';
8
import { NesHistoryContextProvider } from '../../../platform/inlineEdits/common/workspaceEditTracker/nesHistoryContextProvider';
9
import { NesXtabHistoryTracker } from '../../../platform/inlineEdits/common/workspaceEditTracker/nesXtabHistoryTracker';
10
import { IExperimentationService } from '../../../platform/telemetry/common/nullExperimentationService';
11
import { Event } from '../../../util/vs/base/common/event';
12
import { Disposable } from '../../../util/vs/base/common/lifecycle';
13
import { IInstantiationService } from '../../../util/vs/platform/instantiation/common/instantiation';
14
import { NesChangeHint } from '../common/nesTriggerHint';
15
import { createNextEditProvider } from '../node/createNextEditProvider';
16
import { DebugRecorder } from '../node/debugRecorder';
17
import { NextEditProvider } from '../node/nextEditProvider';
18
import { DiagnosticsNextEditProvider } from './features/diagnosticsInlineEditProvider';
19
import { InlineEditTriggerer } from './inlineEditTriggerer';
20
import { VSCodeWorkspace } from './parts/vscodeWorkspace';
21
22
export class InlineEditModel extends Disposable {
23
public readonly debugRecorder: DebugRecorder;
24
public readonly nextEditProvider: NextEditProvider;
25
26
private readonly _predictor: IStatelessNextEditProvider;
27
private _triggerer: InlineEditTriggerer;
28
29
public readonly inlineEditsInlineCompletionsEnabled = this._configurationService.getConfigObservable(ConfigKey.TeamInternal.InlineEditsInlineCompletionsEnabled);
30
31
public readonly onChange: Event<NesChangeHint>;
32
33
constructor(
34
private readonly _predictorId: string | undefined,
35
public readonly workspace: VSCodeWorkspace,
36
historyContextProvider: NesHistoryContextProvider,
37
public readonly diagnosticsBasedProvider: DiagnosticsNextEditProvider | undefined,
38
@IInstantiationService private readonly _instantiationService: IInstantiationService,
39
@IConfigurationService private readonly _configurationService: IConfigurationService,
40
@IExperimentationService private readonly _expService: IExperimentationService,
41
) {
42
super();
43
44
this.debugRecorder = this._register(new DebugRecorder(this.workspace));
45
46
this._predictor = createNextEditProvider(this._predictorId, this._instantiationService);
47
const xtabDiffNEntries = this._configurationService.getExperimentBasedConfig(ConfigKey.TeamInternal.InlineEditsXtabDiffNEntries, this._expService);
48
const xtabHistoryTracker = new NesXtabHistoryTracker(this.workspace, xtabDiffNEntries, this._configurationService, this._expService);
49
this.nextEditProvider = this._instantiationService.createInstance(NextEditProvider, this.workspace, this._predictor, historyContextProvider, xtabHistoryTracker, this.debugRecorder);
50
51
this._triggerer = this._register(this._instantiationService.createInstance(InlineEditTriggerer, this.workspace, this.nextEditProvider));
52
this.onChange = this._triggerer.onChange;
53
}
54
}
55
56