@@ -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> {
2940vscode . extensions . getExtension ( "codeium.windsurf-remote-openssh" ) ||
3041vscode . extensions . getExtension ( "ms-vscode-remote.remote-ssh" )
3142if ( ! remoteSSHExtension ) {
43+ logger . error ( "Remote SSH extension not found, cannot activate Coder extension" )
3244vscode . window . showErrorMessage ( "Remote SSH extension not found, cannot activate Coder extension" )
3345throw 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
3651const 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+ }