@@ -17,6 +17,7 @@ import { clearPersistentState, setPersistentState } from './common/persistentSta
1717import { newProjectSelection } from './common/pickers/managers' ;
1818import { StopWatch } from './common/stopWatch' ;
1919import { EventNames } from './common/telemetry/constants' ;
20+ import { classifyError } from './common/telemetry/errorClassifier' ;
2021import {
2122 logDiscoverySummary ,
2223 sendEnvironmentToolUsageTelemetry ,
@@ -522,13 +523,15 @@ export async function activate(context: ExtensionContext): Promise<PythonEnviron
522523 * Below are all the contributed features using the APIs.
523524 */
524525 setImmediate ( async ( ) => {
526+ let failureStage = 'nativeFinder' ;
525527 try {
526528 // This is the finder that is used by all the built in environment managers
527529 const nativeFinder : NativePythonFinder = await createNativePythonFinder ( outputChannel , api , context ) ;
528530 context . subscriptions . push ( nativeFinder ) ;
529531 const sysMgr = new SysPythonManager ( nativeFinder , api , outputChannel ) ;
530532 sysPythonManager . resolve ( sysMgr ) ;
531533 // Each manager registers independently — one failure must not block the others.
534+ failureStage = 'managerRegistration' ;
532535 await Promise . all ( [
533536 safeRegister (
534537 'system' ,
@@ -547,17 +550,22 @@ export async function activate(context: ExtensionContext): Promise<PythonEnviron
547550 safeRegister ( 'shellStartupVars' , shellStartupVarsMgr . initialize ( ) ) ,
548551 ] ) ;
549552
553+ failureStage = 'envSelection' ;
550554 await applyInitialEnvironmentSelection ( envManagers , projectManager , nativeFinder , api ) ;
551555
552556 // Register manager-agnostic terminal watcher for package-modifying commands
557+ failureStage = 'terminalWatcher' ;
553558 registerTerminalPackageWatcher ( api , terminalActivation , outputChannel , context . subscriptions ) ;
554559
555560 // Register listener for interpreter settings changes for interpreter re-selection
561+ failureStage = 'settingsListener' ;
556562 context . subscriptions . push (
557563 registerInterpreterSettingsChangeListener ( envManagers , projectManager , nativeFinder , api ) ,
558564 ) ;
559565
560- sendTelemetryEvent ( EventNames . EXTENSION_MANAGER_REGISTRATION_DURATION , start . elapsedTime ) ;
566+ sendTelemetryEvent ( EventNames . EXTENSION_MANAGER_REGISTRATION_DURATION , start . elapsedTime , {
567+ result : 'success' ,
568+ } ) ;
561569 try {
562570 await terminalManager . initialize ( api ) ;
563571 sendManagerSelectionTelemetry ( projectManager ) ;
@@ -574,7 +582,11 @@ export async function activate(context: ExtensionContext): Promise<PythonEnviron
574582 sendTelemetryEvent (
575583 EventNames . EXTENSION_MANAGER_REGISTRATION_DURATION ,
576584 start . elapsedTime ,
577- undefined ,
585+ {
586+ result : 'error' ,
587+ failureStage,
588+ errorType : classifyError ( error ) ,
589+ } ,
578590 error instanceof Error ? error : undefined ,
579591 ) ;
580592 // Show a user-friendly error message
0 commit comments