From 119dd3bcac217dbc3662a5bbc67df8679dc54714 Mon Sep 17 00:00:00 2001 From: eleanorjboyd <26030610+eleanorjboyd@users.noreply.github.com> Date: Fri, 11 Jul 2025 09:32:25 -0700 Subject: [PATCH] update telemetry events --- src/client/common/terminal/activator/index.ts | 5 +++++ .../pythonEnvironments/creation/createEnvApi.ts | 17 +++++++++++++++++ src/client/telemetry/index.ts | 2 +- .../codeExecution/codeExecutionManager.ts | 11 +++++++++-- 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/client/common/terminal/activator/index.ts b/src/client/common/terminal/activator/index.ts index 6501688b548a..24ffb5008364 100644 --- a/src/client/common/terminal/activator/index.ts +++ b/src/client/common/terminal/activator/index.ts @@ -10,6 +10,8 @@ import { ITerminalActivationHandler, ITerminalActivator, ITerminalHelper, Termin import { BaseTerminalActivator } from './base'; import { inTerminalEnvVarExperiment } from '../../experiments/helpers'; import { useEnvExtension } from '../../../envExt/api.internal'; +import { EventName } from '../../../telemetry/constants'; +import { sendTelemetryEvent } from '../../../telemetry'; @injectable() export class TerminalActivator implements ITerminalActivator { @@ -43,6 +45,9 @@ export class TerminalActivator implements ITerminalActivator { const activateEnvironment = settings.terminal.activateEnvironment && !inTerminalEnvVarExperiment(this.experimentService); if (!activateEnvironment || options?.hideFromUser || useEnvExtension()) { + if (useEnvExtension()) { + sendTelemetryEvent(EventName.PYTHON_INTERPRETER_ACTIVATION_FOR_TERMINAL); + } return false; } diff --git a/src/client/pythonEnvironments/creation/createEnvApi.ts b/src/client/pythonEnvironments/creation/createEnvApi.ts index d585256200d8..899f57728804 100644 --- a/src/client/pythonEnvironments/creation/createEnvApi.ts +++ b/src/client/pythonEnvironments/creation/createEnvApi.ts @@ -72,11 +72,28 @@ export function registerCreateEnvironmentFeatures( ): Promise => { if (useEnvExtension()) { try { + sendTelemetryEvent(EventName.ENVIRONMENT_CREATING, undefined, { + environmentType: undefined, + pythonVersion: undefined, + }); const result = await executeCommand( 'python-envs.createAny', options, ); if (result) { + const managerId = result.envId.managerId; + if (managerId === 'ms-python.python:venv') { + sendTelemetryEvent(EventName.ENVIRONMENT_CREATED, undefined, { + environmentType: 'venv', + reason: 'created', + }); + } + if (managerId === 'ms-python.python:conda') { + sendTelemetryEvent(EventName.ENVIRONMENT_CREATED, undefined, { + environmentType: 'conda', + reason: 'created', + }); + } return { path: result.environmentPath.path }; } } catch (err) { diff --git a/src/client/telemetry/index.ts b/src/client/telemetry/index.ts index a387e45d694a..581fcfed1f63 100644 --- a/src/client/telemetry/index.ts +++ b/src/client/telemetry/index.ts @@ -2336,7 +2336,7 @@ export interface IEventNamePropertyMapping { } */ [EventName.ENVIRONMENT_CREATING]: { - environmentType: 'venv' | 'conda' | 'microvenv'; + environmentType: 'venv' | 'conda' | 'microvenv' | undefined; pythonVersion: string | undefined; }; /** diff --git a/src/client/terminals/codeExecution/codeExecutionManager.ts b/src/client/terminals/codeExecution/codeExecutionManager.ts index d5eb69efba20..740256ca78b3 100644 --- a/src/client/terminals/codeExecution/codeExecutionManager.ts +++ b/src/client/terminals/codeExecution/codeExecutionManager.ts @@ -41,6 +41,8 @@ export class CodeExecutionManager implements ICodeExecutionManager { this.disposableRegistry.push( this.commandManager.registerCommand(cmd as any, async (file: Resource) => { traceVerbose(`Attempting to run Python file`, file?.fsPath); + const trigger = cmd === Commands.Exec_In_Terminal ? 'command' : 'icon'; + const newTerminalPerFile = cmd === Commands.Exec_In_Separate_Terminal; if (useEnvExtension()) { try { @@ -51,6 +53,11 @@ export class CodeExecutionManager implements ICodeExecutionManager { sendTelemetryEvent(EventName.ENVIRONMENT_CHECK_TRIGGER, undefined, { trigger: 'run-in-terminal', }); + sendTelemetryEvent(EventName.EXECUTION_CODE, undefined, { + scope: 'file', + trigger, + newTerminalPerFile, + }); return; } @@ -66,9 +73,9 @@ export class CodeExecutionManager implements ICodeExecutionManager { trigger: 'run-in-terminal', }); triggerCreateEnvironmentCheckNonBlocking(CreateEnvironmentCheckKind.File, file); - const trigger = cmd === Commands.Exec_In_Terminal ? 'command' : 'icon'; + await this.executeFileInTerminal(file, trigger, { - newTerminalPerFile: cmd === Commands.Exec_In_Separate_Terminal, + newTerminalPerFile, }) .then(() => { if (this.shouldTerminalFocusOnStart(file))