From 2f4355c2eca8395c788ba5ddb6f802734105e370 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 6 Nov 2025 17:51:56 +0000 Subject: [PATCH 1/2] Initial plan From d0d0689b76972ed0c381073c112aeed4316d76f8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 6 Nov 2025 18:06:42 +0000 Subject: [PATCH 2/2] Changes before error encountered Co-authored-by: pierceboggan <1091304+pierceboggan@users.noreply.github.com> --- .../agentModeStatusTelemetry.contribution.ts | 51 +++++++++++++++++++ .../extension/vscode-node/contributions.ts | 2 + 2 files changed, 53 insertions(+) create mode 100644 src/extension/conversation/vscode-node/agentModeStatusTelemetry.contribution.ts diff --git a/src/extension/conversation/vscode-node/agentModeStatusTelemetry.contribution.ts b/src/extension/conversation/vscode-node/agentModeStatusTelemetry.contribution.ts new file mode 100644 index 0000000000..f3a14b179d --- /dev/null +++ b/src/extension/conversation/vscode-node/agentModeStatusTelemetry.contribution.ts @@ -0,0 +1,51 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import { IConfigurationService } from '../../../platform/configuration/common/configurationService'; +import { ITelemetryService } from '../../../platform/telemetry/common/telemetry'; + +export class AgentModeStatusTelemetryContribution { + + constructor( + @ITelemetryService _telemetryService: ITelemetryService, + @IConfigurationService _configurationService: IConfigurationService, + ) { + // Get the effective value of chat.agent.enabled + const isAgentModeEnabled = _configurationService.getNonExtensionConfig('chat.agent.enabled') ?? true; + + // Check if chat.agent.enabled is configured by user + const inspect = vscode.workspace.getConfiguration().inspect('chat.agent.enabled'); + const isAgentModeUserConfigured = ( + inspect?.globalValue !== undefined + || inspect?.globalLanguageValue !== undefined + || inspect?.workspaceFolderValue !== undefined + || inspect?.workspaceFolderLanguageValue !== undefined + || inspect?.workspaceValue !== undefined + || inspect?.workspaceLanguageValue !== undefined + ); + + /* __GDPR__ + "agentModeStatusOnActivation" : { + "owner": "pierceboggan", + "comment": "Track whether agent mode is disabled by user or IT policy on extension activation", + "isAgentModeEnabled": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "comment": "Whether agent mode is effectively enabled", "isMeasurement": true }, + "isAgentModeUserConfigured": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "comment": "Whether agent mode was configured by the user", "isMeasurement": true } + } + */ + _telemetryService.sendMSFTTelemetryEvent( + 'agentModeStatusOnActivation', + {}, + { + isAgentModeEnabled: toNumber(isAgentModeEnabled), + isAgentModeUserConfigured: toNumber(isAgentModeUserConfigured), + } + ); + } +} + +function toNumber(v: boolean): 1 | 0 { + return v ? 1 : 0; +} diff --git a/src/extension/extension/vscode-node/contributions.ts b/src/extension/extension/vscode-node/contributions.ts index 5ae36ce3a9..0545052e5f 100644 --- a/src/extension/extension/vscode-node/contributions.ts +++ b/src/extension/extension/vscode-node/contributions.ts @@ -14,6 +14,7 @@ import { CompletionsUnificationContribution } from '../../completions/vscode-nod import { ConfigurationMigrationContribution } from '../../configuration/vscode-node/configurationMigration'; import { ContextKeysContribution } from '../../contextKeys/vscode-node/contextKeys.contribution'; import { PlaceholderViewContribution } from '../../contextKeys/vscode-node/placeholderView.contribution'; +import { AgentModeStatusTelemetryContribution } from '../../conversation/vscode-node/agentModeStatusTelemetry.contribution'; import { AiMappedEditsContrib } from '../../conversation/vscode-node/aiMappedEditsContrib'; import { ConversationFeature } from '../../conversation/vscode-node/conversationFeature'; import { FeedbackCommandContribution } from '../../conversation/vscode-node/feedbackContribution'; @@ -60,6 +61,7 @@ import vscodeContributions from '../vscode/contributions'; export const vscodeNodeContributions: IExtensionContributionFactory[] = [ ...vscodeContributions, + asContributionFactory(AgentModeStatusTelemetryContribution), asContributionFactory(ConversationFeature), workspaceChunkSearchContribution, asContributionFactory(AuthenticationContrib),