Path: blob/main/extensions/copilot/src/extension/inlineEdits/vscode-node/inlineEditModel.ts
13399 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 { ConfigKey, IConfigurationService } from '../../../platform/configuration/common/configurationService';6import { IStatelessNextEditProvider } from '../../../platform/inlineEdits/common/statelessNextEditProvider';7import { NesHistoryContextProvider } from '../../../platform/inlineEdits/common/workspaceEditTracker/nesHistoryContextProvider';8import { NesXtabHistoryTracker } from '../../../platform/inlineEdits/common/workspaceEditTracker/nesXtabHistoryTracker';9import { IExperimentationService } from '../../../platform/telemetry/common/nullExperimentationService';10import { Event } from '../../../util/vs/base/common/event';11import { Disposable } from '../../../util/vs/base/common/lifecycle';12import { IInstantiationService } from '../../../util/vs/platform/instantiation/common/instantiation';13import { NesChangeHint } from '../common/nesTriggerHint';14import { createNextEditProvider } from '../node/createNextEditProvider';15import { DebugRecorder } from '../node/debugRecorder';16import { NextEditProvider } from '../node/nextEditProvider';17import { DiagnosticsNextEditProvider } from './features/diagnosticsInlineEditProvider';18import { InlineEditTriggerer } from './inlineEditTriggerer';19import { VSCodeWorkspace } from './parts/vscodeWorkspace';2021export class InlineEditModel extends Disposable {22public readonly debugRecorder: DebugRecorder;23public readonly nextEditProvider: NextEditProvider;2425private readonly _predictor: IStatelessNextEditProvider;26private _triggerer: InlineEditTriggerer;2728public readonly inlineEditsInlineCompletionsEnabled = this._configurationService.getConfigObservable(ConfigKey.TeamInternal.InlineEditsInlineCompletionsEnabled);2930public readonly onChange: Event<NesChangeHint>;3132constructor(33private readonly _predictorId: string | undefined,34public readonly workspace: VSCodeWorkspace,35historyContextProvider: NesHistoryContextProvider,36public readonly diagnosticsBasedProvider: DiagnosticsNextEditProvider | undefined,37@IInstantiationService private readonly _instantiationService: IInstantiationService,38@IConfigurationService private readonly _configurationService: IConfigurationService,39@IExperimentationService private readonly _expService: IExperimentationService,40) {41super();4243this.debugRecorder = this._register(new DebugRecorder(this.workspace));4445this._predictor = createNextEditProvider(this._predictorId, this._instantiationService);46const xtabDiffNEntries = this._configurationService.getExperimentBasedConfig(ConfigKey.TeamInternal.InlineEditsXtabDiffNEntries, this._expService);47const xtabHistoryTracker = new NesXtabHistoryTracker(this.workspace, xtabDiffNEntries, this._configurationService, this._expService);48this.nextEditProvider = this._instantiationService.createInstance(NextEditProvider, this.workspace, this._predictor, historyContextProvider, xtabHistoryTracker, this.debugRecorder);4950this._triggerer = this._register(this._instantiationService.createInstance(InlineEditTriggerer, this.workspace, this.nextEditProvider));51this.onChange = this._triggerer.onChange;52}53}545556