From d0ee207dba58428c4ebcb5cfba3ce9a908dfabba Mon Sep 17 00:00:00 2001 From: Jetski Bot Date: Mon, 17 Aug 2026 18:41:02 +0000 Subject: [PATCH] [SSR Agent] Issue Fix (339): Connect pre-installed companion extension without reinstallation --- packages/cli/src/ui/AppContainer.tsx | 4 ++- .../cli/src/ui/IdeIntegrationNudge.test.tsx | 32 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/ui/AppContainer.tsx b/packages/cli/src/ui/AppContainer.tsx index e11282788bc..93ffa21c6aa 100644 --- a/packages/cli/src/ui/AppContainer.tsx +++ b/packages/cli/src/ui/AppContainer.tsx @@ -1774,7 +1774,9 @@ Logging in with Google... Restarting Gemini CLI to continue. (result: IdeIntegrationNudgeResult) => { if (result.userSelection === 'yes') { // eslint-disable-next-line @typescript-eslint/no-floating-promises - handleSlashCommand('/ide install'); + handleSlashCommand( + result.isExtensionPreInstalled ? '/ide enable' : '/ide install', + ); settings.setValue(SettingScope.User, 'ide.hasSeenNudge', true); } else if (result.userSelection === 'dismiss') { settings.setValue(SettingScope.User, 'ide.hasSeenNudge', true); diff --git a/packages/cli/src/ui/IdeIntegrationNudge.test.tsx b/packages/cli/src/ui/IdeIntegrationNudge.test.tsx index d05a17dad81..fb0a8637f80 100644 --- a/packages/cli/src/ui/IdeIntegrationNudge.test.tsx +++ b/packages/cli/src/ui/IdeIntegrationNudge.test.tsx @@ -189,4 +189,36 @@ describe('IdeIntegrationNudge', () => { }); unmount(); }); + + it('sets isExtensionPreInstalled to true in onComplete value for dismiss selection when preinstalled envs are set', async () => { + vi.stubEnv('GEMINI_CLI_IDE_SERVER_PORT', '1234'); + vi.stubEnv('GEMINI_CLI_IDE_WORKSPACE_PATH', '/tmp'); + + const onComplete = vi.fn(); + const { stdin, waitUntilReady, unmount } = await renderWithProviders( + , + ); + + // Navigate to "No, don't ask again" + await act(async () => { + stdin.write('\u001B[B'); // Down arrow + }); + await waitUntilReady(); + + await act(async () => { + stdin.write('\u001B[B'); // Down arrow + }); + await waitUntilReady(); + + await act(async () => { + stdin.write('\r'); // Enter + }); + await waitUntilReady(); + + expect(onComplete).toHaveBeenCalledWith({ + userSelection: 'dismiss', + isExtensionPreInstalled: true, + }); + unmount(); + }); });