From ab1c483cab659ac2ab081e74a0e3bd0fcc48a734 Mon Sep 17 00:00:00 2001 From: Evan Otero Date: Fri, 15 Aug 2025 12:32:15 -0400 Subject: feat(about): Add the IDE Client's display name to `/about` (#6311) Co-authored-by: Bryan Morgan --- packages/cli/src/ui/commands/aboutCommand.test.ts | 34 +++++++++++++++++++++++ packages/cli/src/ui/commands/aboutCommand.ts | 4 +++ 2 files changed, 38 insertions(+) (limited to 'packages/cli/src/ui/commands') diff --git a/packages/cli/src/ui/commands/aboutCommand.test.ts b/packages/cli/src/ui/commands/aboutCommand.test.ts index 43cd59ec..27e96755 100644 --- a/packages/cli/src/ui/commands/aboutCommand.test.ts +++ b/packages/cli/src/ui/commands/aboutCommand.test.ts @@ -11,6 +11,8 @@ import { createMockCommandContext } from '../../test-utils/mockCommandContext.js import * as versionUtils from '../../utils/version.js'; import { MessageType } from '../types.js'; +import { IdeClient } from '../../../../core/src/ide/ide-client.js'; + vi.mock('../../utils/version.js', () => ({ getCliVersion: vi.fn(), })); @@ -25,6 +27,7 @@ describe('aboutCommand', () => { services: { config: { getModel: vi.fn(), + getIdeClient: vi.fn(), }, settings: { merged: { @@ -45,6 +48,9 @@ describe('aboutCommand', () => { Object.defineProperty(process, 'platform', { value: 'test-os', }); + vi.spyOn(mockContext.services.config!, 'getIdeClient').mockReturnValue({ + getDetectedIdeDisplayName: vi.fn().mockReturnValue('test-ide'), + } as Partial as IdeClient); }); afterEach(() => { @@ -78,6 +84,7 @@ describe('aboutCommand', () => { modelVersion: 'test-model', selectedAuthType: 'test-auth', gcpProject: 'test-gcp-project', + ideClient: 'test-ide', }, expect.any(Number), ); @@ -115,4 +122,31 @@ describe('aboutCommand', () => { expect.any(Number), ); }); + + it('should not show ide client when it is not detected', async () => { + vi.spyOn(mockContext.services.config!, 'getIdeClient').mockReturnValue({ + getDetectedIdeDisplayName: vi.fn().mockReturnValue(undefined), + } as Partial as IdeClient); + + process.env.SANDBOX = ''; + if (!aboutCommand.action) { + throw new Error('The about command must have an action.'); + } + + await aboutCommand.action(mockContext, ''); + + expect(mockContext.ui.addItem).toHaveBeenCalledWith( + expect.objectContaining({ + type: MessageType.ABOUT, + cliVersion: 'test-version', + osVersion: 'test-os', + sandboxEnv: 'no sandbox', + modelVersion: 'test-model', + selectedAuthType: 'test-auth', + gcpProject: 'test-gcp-project', + ideClient: '', + }), + expect.any(Number), + ); + }); }); diff --git a/packages/cli/src/ui/commands/aboutCommand.ts b/packages/cli/src/ui/commands/aboutCommand.ts index 18a82682..47b1b495 100644 --- a/packages/cli/src/ui/commands/aboutCommand.ts +++ b/packages/cli/src/ui/commands/aboutCommand.ts @@ -28,6 +28,9 @@ export const aboutCommand: SlashCommand = { const selectedAuthType = context.services.settings.merged.selectedAuthType || ''; const gcpProject = process.env.GOOGLE_CLOUD_PROJECT || ''; + const ideClient = + context.services.config?.getIdeClient()?.getDetectedIdeDisplayName() || + ''; const aboutItem: Omit = { type: MessageType.ABOUT, @@ -37,6 +40,7 @@ export const aboutCommand: SlashCommand = { modelVersion, selectedAuthType, gcpProject, + ideClient, }; context.ui.addItem(aboutItem, Date.now()); -- cgit v1.2.3