@@ -15,7 +15,18 @@ import { getMemoryLogger } from "./memoryLogger"
1515
1616export async function activate ( ctx : vscode . ExtensionContext ) : Promise < void > {
1717 // Initialize the memory logger right when the extension starts.
18- getMemoryLogger ( ) ;
18+ const logger = getMemoryLogger ( ) ;
19+ await logger . initLogFile ( ctx . globalStorageUri . fsPath )
20+
21+ // Log initial memory usage and activation
22+ logger . info ( "CODER extension activating" )
23+ logger . logMemoryUsage ( "EXTENSION_ACTIVATE" )
24+
25+ // Register disposal of the logger when the extension deactivates
26+ ctx . subscriptions . push ( { dispose : ( ) => logger . dispose ( ) } )
27+
28+ // Log extension mode
29+ logger . info ( `Extension mode: ${ extensionModeToString ( ctx . extensionMode ) } ` ) ;
1930
2031 // The Remote SSH extension's proposed APIs are used to override the SSH host
2132 // name in VS Code itself. It's visually unappealing having a lengthy name!
@@ -29,9 +40,13 @@ export async function activate(ctx: vscode.ExtensionContext): Promise<void> {
2940 vscode . extensions . getExtension ( "codeium.windsurf-remote-openssh" ) ||
3041 vscode . extensions . getExtension ( "ms-vscode-remote.remote-ssh" )
3142 if ( ! remoteSSHExtension ) {
43+ logger . error ( "Remote SSH extension not found, cannot activate Coder extension" )
3244 vscode . window . showErrorMessage ( "Remote SSH extension not found, cannot activate Coder extension" )
3345 throw new Error ( "Remote SSH extension not found" )
3446 }
47+
48+ logger . info ( `Found Remote SSH extension: ${ remoteSSHExtension . id } ` ) ;
49+
3550 // eslint-disable-next-line @typescript-eslint/no-explicit-any
3651 const vscodeProposed : typeof vscode = ( module as any ) . _load (
3752 "vscode" ,
@@ -229,4 +244,26 @@ export async function activate(ctx: vscode.ExtensionContext): Promise<void> {
229244 }
230245 }
231246 }
247+
248+ logger . info ( "Coder extension activation complete" )
249+ }
250+
251+ function extensionModeToString ( mode : vscode . ExtensionMode ) : string {
252+ switch ( mode ) {
253+ case vscode . ExtensionMode . Development :
254+ return "Development" ;
255+ case vscode . ExtensionMode . Production :
256+ return "Production" ;
257+ case vscode . ExtensionMode . Test :
258+ return "Test" ;
259+ default :
260+ return `Unknown (${ mode } )` ;
261+ }
232262}
263+
264+ // Add deactivation handler to log memory usage on extension shutdown
265+ export function deactivate ( ) : void {
266+ const logger = getMemoryLogger ( ) ;
267+ logger . info ( "Coder extension deactivating" ) ;
268+ logger . logMemoryUsage ( "EXTENSION_DEACTIVATE" ) ;
269+ }
0 commit comments