Path: blob/main/src/vs/workbench/contrib/editTelemetry/browser/editTelemetryContribution.ts
5252 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 { Disposable } from '../../../../base/common/lifecycle.js';6import { autorun, derived } from '../../../../base/common/observable.js';7import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';8import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';9import { observableConfigValue } from '../../../../platform/observable/common/platformObservableUtils.js';10import { ITelemetryService, TelemetryLevel, telemetryLevelEnabled } from '../../../../platform/telemetry/common/telemetry.js';11import { AnnotatedDocuments } from './helpers/annotatedDocuments.js';12import { EditTrackingFeature } from './telemetry/editSourceTrackingFeature.js';13import { VSCodeWorkspace } from './helpers/vscodeObservableWorkspace.js';14import { AiStatsFeature } from './editStats/aiStatsFeature.js';15import { AI_STATS_SETTING_ID, EDIT_TELEMETRY_SETTING_ID } from './settingIds.js';16import { IChatEntitlementService } from '../../../services/chat/common/chatEntitlementService.js';1718export class EditTelemetryContribution extends Disposable {19constructor(20@IInstantiationService instantiationService: IInstantiationService,21@IConfigurationService configurationService: IConfigurationService,22@ITelemetryService telemetryService: ITelemetryService,23@IChatEntitlementService chatEntitlementService: IChatEntitlementService24) {25super();2627const workspace = derived(reader => reader.store.add(instantiationService.createInstance(VSCodeWorkspace)));28const annotatedDocuments = derived(reader => reader.store.add(instantiationService.createInstance(AnnotatedDocuments, workspace.read(reader))));2930const editSourceTrackingEnabled = observableConfigValue(EDIT_TELEMETRY_SETTING_ID, true, configurationService);31this._register(autorun(r => {32const enabled = editSourceTrackingEnabled.read(r);33if (!enabled || !telemetryLevelEnabled(telemetryService, TelemetryLevel.USAGE)) {34return;35}36r.store.add(instantiationService.createInstance(EditTrackingFeature, workspace.read(r), annotatedDocuments.read(r)));37}));3839const aiStatsEnabled = observableConfigValue(AI_STATS_SETTING_ID, true, configurationService);40this._register(autorun(r => {41const enabled = aiStatsEnabled.read(r);42const aiDisabled = chatEntitlementService.sentimentObs.read(r).hidden;43if (!enabled || aiDisabled) {44return;45}4647r.store.add(instantiationService.createInstance(AiStatsFeature, annotatedDocuments.read(r)));48}));49}50}515253