From 0e9b06d5c24ac83dbe5aef1c249b26c140414a7a Mon Sep 17 00:00:00 2001 From: Shreya Keshive Date: Wed, 20 Aug 2025 14:11:31 -0700 Subject: feat(ide): improve IDE installation UX and feedback (#6677) --- packages/core/src/ide/ide-client.ts | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'packages/core/src/ide') diff --git a/packages/core/src/ide/ide-client.ts b/packages/core/src/ide/ide-client.ts index e4d5f0ba..d6b1d0d2 100644 --- a/packages/core/src/ide/ide-client.ts +++ b/packages/core/src/ide/ide-client.ts @@ -104,8 +104,13 @@ export class IdeClient { this.setState(IDEConnectionStatus.Connecting); + const ideInfoFromFile = await this.getIdeInfoFromFile(); + const workspacePath = + ideInfoFromFile.workspacePath ?? + process.env['GEMINI_CLI_IDE_WORKSPACE_PATH']; + const { isValid, error } = IdeClient.validateWorkspacePath( - process.env['GEMINI_CLI_IDE_WORKSPACE_PATH'], + workspacePath, this.currentIdeDisplayName, process.cwd(), ); @@ -115,7 +120,7 @@ export class IdeClient { return; } - const portFromFile = await this.getPortFromFile(); + const portFromFile = ideInfoFromFile.port; if (portFromFile) { const connected = await this.establishConnection(portFromFile); if (connected) { @@ -311,7 +316,10 @@ export class IdeClient { return port; } - private async getPortFromFile(): Promise { + private async getIdeInfoFromFile(): Promise<{ + port?: string; + workspacePath?: string; + }> { try { const ideProcessId = await getIdeProcessId(); const portFile = path.join( @@ -319,10 +327,13 @@ export class IdeClient { `gemini-ide-server-${ideProcessId}.json`, ); const portFileContents = await fs.promises.readFile(portFile, 'utf8'); - const port = JSON.parse(portFileContents).port; - return port.toString(); + const ideInfo = JSON.parse(portFileContents); + return { + port: ideInfo?.port?.toString(), + workspacePath: ideInfo?.workspacePath, + }; } catch (_) { - return undefined; + return {}; } } -- cgit v1.2.3