summaryrefslogtreecommitdiff
path: root/packages/cli/src
diff options
context:
space:
mode:
authorShreya Keshive <[email protected]>2025-08-12 17:08:07 -0400
committerGitHub <[email protected]>2025-08-12 21:08:07 +0000
commit3a87712c1a15dac9f0a717b40fbf9e59398177ca (patch)
tree44a0f199403b5b366d80bc8caf2b5d63242acba1 /packages/cli/src
parentd219f9013206aad5a1361e436ad4a45114e9cd49 (diff)
Launch VS Code IDE Integration (#6063)
Diffstat (limited to 'packages/cli/src')
-rw-r--r--packages/cli/src/config/config.test.ts27
-rw-r--r--packages/cli/src/config/config.ts8
-rw-r--r--packages/cli/src/config/settingsSchema.test.ts1
-rw-r--r--packages/cli/src/config/settingsSchema.ts10
-rw-r--r--packages/cli/src/gemini.tsx2
-rw-r--r--packages/cli/src/ui/App.test.tsx4
-rw-r--r--packages/cli/src/ui/App.tsx1
-rw-r--r--packages/cli/src/ui/commands/ideCommand.test.ts11
-rw-r--r--packages/cli/src/ui/commands/ideCommand.ts2
-rw-r--r--packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx4
10 files changed, 10 insertions, 60 deletions
diff --git a/packages/cli/src/config/config.test.ts b/packages/cli/src/config/config.test.ts
index 701ae267..178980eb 100644
--- a/packages/cli/src/config/config.test.ts
+++ b/packages/cli/src/config/config.test.ts
@@ -1010,33 +1010,6 @@ describe('loadCliConfig model selection', () => {
});
});
-describe('loadCliConfig ideModeFeature', () => {
- const originalArgv = process.argv;
- const originalEnv = { ...process.env };
-
- beforeEach(() => {
- vi.resetAllMocks();
- vi.mocked(os.homedir).mockReturnValue('/mock/home/user');
- process.env.GEMINI_API_KEY = 'test-api-key';
- delete process.env.SANDBOX;
- delete process.env.GEMINI_CLI_IDE_SERVER_PORT;
- });
-
- afterEach(() => {
- process.argv = originalArgv;
- process.env = originalEnv;
- vi.restoreAllMocks();
- });
-
- it('should be false by default', async () => {
- process.argv = ['node', 'script.js'];
- const settings: Settings = {};
- const argv = await parseArguments();
- const config = await loadCliConfig(settings, [], 'test-session', argv);
- expect(config.getIdeModeFeature()).toBe(false);
- });
-});
-
describe('loadCliConfig folderTrustFeature', () => {
const originalArgv = process.argv;
const originalEnv = { ...process.env };
diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts
index 52600e42..d0658e75 100644
--- a/packages/cli/src/config/config.ts
+++ b/packages/cli/src/config/config.ts
@@ -67,7 +67,6 @@ export interface CliArgs {
experimentalAcp: boolean | undefined;
extensions: string[] | undefined;
listExtensions: boolean | undefined;
- ideModeFeature: boolean | undefined;
proxy: string | undefined;
includeDirectories: string[] | undefined;
}
@@ -200,10 +199,6 @@ export async function parseArguments(): Promise<CliArgs> {
type: 'boolean',
description: 'List all available extensions and exit.',
})
- .option('ide-mode-feature', {
- type: 'boolean',
- description: 'Run in IDE mode?',
- })
.option('proxy', {
type: 'string',
description:
@@ -307,8 +302,6 @@ export async function loadCliConfig(
const memoryImportFormat = settings.memoryImportFormat || 'tree';
const ideMode = settings.ideMode ?? false;
- const ideModeFeature =
- argv.ideModeFeature ?? settings.ideModeFeature ?? false;
const folderTrustFeature = settings.folderTrustFeature ?? false;
const folderTrustSetting = settings.folderTrust ?? false;
@@ -474,7 +467,6 @@ export async function loadCliConfig(
noBrowser: !!process.env.NO_BROWSER,
summarizeToolOutput: settings.summarizeToolOutput,
ideMode,
- ideModeFeature,
chatCompression: settings.chatCompression,
folderTrustFeature,
folderTrust,
diff --git a/packages/cli/src/config/settingsSchema.test.ts b/packages/cli/src/config/settingsSchema.test.ts
index ab820ee1..118b1823 100644
--- a/packages/cli/src/config/settingsSchema.test.ts
+++ b/packages/cli/src/config/settingsSchema.test.ts
@@ -44,7 +44,6 @@ describe('SettingsSchema', () => {
'telemetry',
'bugCommand',
'summarizeToolOutput',
- 'ideModeFeature',
'dnsResolutionOrder',
'excludedProjectEnvVars',
'disableUpdateNag',
diff --git a/packages/cli/src/config/settingsSchema.ts b/packages/cli/src/config/settingsSchema.ts
index cd8c61fb..f061b16a 100644
--- a/packages/cli/src/config/settingsSchema.ts
+++ b/packages/cli/src/config/settingsSchema.ts
@@ -395,15 +395,7 @@ export const SETTINGS_SCHEMA = {
description: 'Settings for summarizing tool output.',
showInDialog: false,
},
- ideModeFeature: {
- type: 'boolean',
- label: 'IDE Mode Feature Flag',
- category: 'Advanced',
- requiresRestart: true,
- default: undefined as boolean | undefined,
- description: 'Internal feature flag for IDE mode.',
- showInDialog: false,
- },
+
dnsResolutionOrder: {
type: 'string',
label: 'DNS Resolution Order',
diff --git a/packages/cli/src/gemini.tsx b/packages/cli/src/gemini.tsx
index a0cf352e..acc9c4b2 100644
--- a/packages/cli/src/gemini.tsx
+++ b/packages/cli/src/gemini.tsx
@@ -191,7 +191,7 @@ export async function main() {
await config.initialize();
- if (config.getIdeMode() && config.getIdeModeFeature()) {
+ if (config.getIdeMode()) {
await config.getIdeClient().connect();
logIdeConnection(config, new IdeConnectionEvent(IdeConnectionType.START));
}
diff --git a/packages/cli/src/ui/App.test.tsx b/packages/cli/src/ui/App.test.tsx
index 82ba4fe1..3636823b 100644
--- a/packages/cli/src/ui/App.test.tsx
+++ b/packages/cli/src/ui/App.test.tsx
@@ -155,13 +155,13 @@ vi.mock('@google/gemini-cli-core', async (importOriginal) => {
setFlashFallbackHandler: vi.fn(),
getSessionId: vi.fn(() => 'test-session-id'),
getUserTier: vi.fn().mockResolvedValue(undefined),
- getIdeModeFeature: vi.fn(() => false),
- getIdeMode: vi.fn(() => false),
+ getIdeMode: vi.fn(() => true),
getWorkspaceContext: vi.fn(() => ({
getDirectories: vi.fn(() => []),
})),
getIdeClient: vi.fn(() => ({
getCurrentIde: vi.fn(() => 'vscode'),
+ getDetectedIdeDisplayName: vi.fn(() => 'VSCode'),
})),
};
});
diff --git a/packages/cli/src/ui/App.tsx b/packages/cli/src/ui/App.tsx
index ab30b730..1caabbe0 100644
--- a/packages/cli/src/ui/App.tsx
+++ b/packages/cli/src/ui/App.tsx
@@ -130,7 +130,6 @@ const App = ({ config, settings, startupWarnings = [], version }: AppProps) => {
registerCleanup(() => config.getIdeClient().disconnect());
}, [config]);
const shouldShowIdePrompt =
- config.getIdeModeFeature() &&
currentIDE &&
!config.getIdeMode() &&
!settings.merged.hasSeenIdeIntegrationNudge &&
diff --git a/packages/cli/src/ui/commands/ideCommand.test.ts b/packages/cli/src/ui/commands/ideCommand.test.ts
index 10a97e2a..8576320b 100644
--- a/packages/cli/src/ui/commands/ideCommand.test.ts
+++ b/packages/cli/src/ui/commands/ideCommand.test.ts
@@ -40,7 +40,6 @@ describe('ideCommand', () => {
} as unknown as CommandContext;
mockConfig = {
- getIdeModeFeature: vi.fn(),
getIdeMode: vi.fn(),
getIdeClient: vi.fn(() => ({
reconnect: vi.fn(),
@@ -60,14 +59,12 @@ describe('ideCommand', () => {
vi.restoreAllMocks();
});
- it('should return null if ideModeFeature is not enabled', () => {
- vi.mocked(mockConfig.getIdeModeFeature).mockReturnValue(false);
- const command = ideCommand(mockConfig);
+ it('should return null if config is not provided', () => {
+ const command = ideCommand(null);
expect(command).toBeNull();
});
- it('should return the ide command if ideModeFeature is enabled', () => {
- vi.mocked(mockConfig.getIdeModeFeature).mockReturnValue(true);
+ it('should return the ide command', () => {
vi.mocked(mockConfig.getIdeMode).mockReturnValue(true);
vi.mocked(mockConfig.getIdeClient).mockReturnValue({
getCurrentIde: () => DetectedIde.VSCode,
@@ -85,7 +82,6 @@ describe('ideCommand', () => {
describe('status subcommand', () => {
const mockGetConnectionStatus = vi.fn();
beforeEach(() => {
- vi.mocked(mockConfig.getIdeModeFeature).mockReturnValue(true);
vi.mocked(mockConfig.getIdeClient).mockReturnValue({
getConnectionStatus: mockGetConnectionStatus,
getCurrentIde: () => DetectedIde.VSCode,
@@ -162,7 +158,6 @@ describe('ideCommand', () => {
describe('install subcommand', () => {
const mockInstall = vi.fn();
beforeEach(() => {
- vi.mocked(mockConfig.getIdeModeFeature).mockReturnValue(true);
vi.mocked(mockConfig.getIdeMode).mockReturnValue(true);
vi.mocked(mockConfig.getIdeClient).mockReturnValue({
getCurrentIde: () => DetectedIde.VSCode,
diff --git a/packages/cli/src/ui/commands/ideCommand.ts b/packages/cli/src/ui/commands/ideCommand.ts
index 23af2e48..2dfad33c 100644
--- a/packages/cli/src/ui/commands/ideCommand.ts
+++ b/packages/cli/src/ui/commands/ideCommand.ts
@@ -115,7 +115,7 @@ async function getIdeStatusMessageWithFiles(ideClient: IdeClient): Promise<{
}
export const ideCommand = (config: Config | null): SlashCommand | null => {
- if (!config || !config.getIdeModeFeature()) {
+ if (!config) {
return null;
}
const ideClient = config.getIdeClient();
diff --git a/packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx b/packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
index a8813491..2f93609e 100644
--- a/packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
+++ b/packages/cli/src/ui/components/messages/ToolConfirmationMessage.tsx
@@ -45,7 +45,7 @@ export const ToolConfirmationMessage: React.FC<
const handleConfirm = async (outcome: ToolConfirmationOutcome) => {
if (confirmationDetails.type === 'edit') {
const ideClient = config?.getIdeClient();
- if (config?.getIdeMode() && config?.getIdeModeFeature()) {
+ if (config?.getIdeMode()) {
const cliOutcome =
outcome === ToolConfirmationOutcome.Cancel ? 'rejected' : 'accepted';
await ideClient?.resolveDiffFromCli(
@@ -136,7 +136,7 @@ export const ToolConfirmationMessage: React.FC<
value: ToolConfirmationOutcome.ProceedAlways,
},
);
- if (config?.getIdeMode() && config?.getIdeModeFeature()) {
+ if (config?.getIdeMode()) {
options.push({
label: 'No (esc)',
value: ToolConfirmationOutcome.Cancel,