@@ -15,7 +15,18 @@ import { getMemoryLogger } from "./memoryLogger"
15
15
16
16
export async function activate ( ctx : vscode . ExtensionContext ) : Promise < void > {
17
17
// 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 ) } ` ) ;
19
30
20
31
// The Remote SSH extension's proposed APIs are used to override the SSH host
21
32
// 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> {
29
40
vscode . extensions . getExtension ( "codeium.windsurf-remote-openssh" ) ||
30
41
vscode . extensions . getExtension ( "ms-vscode-remote.remote-ssh" )
31
42
if ( ! remoteSSHExtension ) {
43
+ logger . error ( "Remote SSH extension not found, cannot activate Coder extension" )
32
44
vscode . window . showErrorMessage ( "Remote SSH extension not found, cannot activate Coder extension" )
33
45
throw new Error ( "Remote SSH extension not found" )
34
46
}
47
+
48
+ logger . info ( `Found Remote SSH extension: ${ remoteSSHExtension . id } ` ) ;
49
+
35
50
// eslint-disable-next-line @typescript-eslint/no-explicit-any
36
51
const vscodeProposed : typeof vscode = ( module as any ) . _load (
37
52
"vscode" ,
@@ -229,4 +244,26 @@ export async function activate(ctx: vscode.ExtensionContext): Promise<void> {
229
244
}
230
245
}
231
246
}
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
+ }
232
262
}
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