diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index f18ddcdf..17f14b54 100644 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -175,7 +175,7 @@ export async function loadCliConfig( debugMode, ); - const userAgent = await createUserAgent(); + const userAgent = `GeminiCLI/${getCliVersion()}/(${process.platform}; ${process.arch})`; const apiKeyForServer = geminiApiKey || googleApiKey || ''; const useVertexAI = hasGeminiApiKey ? false : undefined; @@ -193,8 +193,6 @@ export async function loadCliConfig( originalModel = checkResult.originalModelIfSwitched; modelToUse = checkResult.effectiveModel; } - } else { - // logger.debug('API key not available during config load. Skipping model availability check.'); } const configParams: ConfigParameters = { @@ -237,8 +235,3 @@ export async function loadCliConfig( finalModel: modelToUse, }; } - -async function createUserAgent(): Promise { - const cliVersion = await getCliVersion(); - return `GeminiCLI/${cliVersion} Node.js/${process.version} (${process.platform}; ${process.arch})`; -} diff --git a/packages/cli/src/gemini.tsx b/packages/cli/src/gemini.tsx index 627f2915..309768f2 100644 --- a/packages/cli/src/gemini.tsx +++ b/packages/cli/src/gemini.tsx @@ -9,7 +9,6 @@ import { render } from 'ink'; import { App } from './ui/App.js'; import { loadCliConfig } from './config/config.js'; import { readStdin } from './utils/readStdin.js'; -import { getCliVersion } from './utils/version.js'; import { sandbox_command, start_sandbox } from './utils/sandbox.js'; import { LoadedSettings, loadSettings } from './config/settings.js'; import { themeManager } from './ui/themes/theme-manager.js'; @@ -101,14 +100,11 @@ export async function main() { // Render UI, passing necessary config values. Check that there is no command line question. if (process.stdin.isTTY && input?.length === 0) { - const cliVersion = await getCliVersion(); - render( , diff --git a/packages/cli/src/ui/App.test.tsx b/packages/cli/src/ui/App.test.tsx index 90adb24f..98d82be8 100644 --- a/packages/cli/src/ui/App.test.tsx +++ b/packages/cli/src/ui/App.test.tsx @@ -217,7 +217,6 @@ describe('App UI', () => { , ); currentUnmount = unmount; @@ -234,7 +233,6 @@ describe('App UI', () => { , ); currentUnmount = unmount; @@ -255,7 +253,6 @@ describe('App UI', () => { , ); currentUnmount = unmount; @@ -276,7 +273,6 @@ describe('App UI', () => { , ); currentUnmount = unmount; @@ -297,7 +293,6 @@ describe('App UI', () => { , ); currentUnmount = unmount; @@ -317,7 +312,6 @@ describe('App UI', () => { , ); currentUnmount = unmount; @@ -338,7 +332,6 @@ describe('App UI', () => { , ); currentUnmount = unmount; @@ -368,7 +361,6 @@ describe('App UI', () => { , ); currentUnmount = unmount; @@ -383,7 +375,6 @@ describe('App UI', () => { , ); currentUnmount = unmount; diff --git a/packages/cli/src/ui/App.tsx b/packages/cli/src/ui/App.tsx index 2df5ba0a..37251634 100644 --- a/packages/cli/src/ui/App.tsx +++ b/packages/cli/src/ui/App.tsx @@ -55,16 +55,10 @@ const CTRL_C_PROMPT_DURATION_MS = 1000; interface AppProps { config: Config; settings: LoadedSettings; - cliVersion: string; startupWarnings?: string[]; } -export const App = ({ - config, - settings, - cliVersion, - startupWarnings = [], -}: AppProps) => { +export const App = ({ config, settings, startupWarnings = [] }: AppProps) => { const { history, addItem, clearItems } = useHistory(); const { consoleMessages, @@ -196,7 +190,6 @@ export const App = ({ openThemeDialog, performMemoryRefresh, toggleCorgiMode, - cliVersion, ); const { streamingState, submitQuery, initError, pendingHistoryItems } = diff --git a/packages/cli/src/ui/hooks/slashCommandProcessor.test.ts b/packages/cli/src/ui/hooks/slashCommandProcessor.test.ts index a3babddf..1d33d218 100644 --- a/packages/cli/src/ui/hooks/slashCommandProcessor.test.ts +++ b/packages/cli/src/ui/hooks/slashCommandProcessor.test.ts @@ -115,7 +115,6 @@ describe('useSlashCommandProcessor', () => { mockOpenThemeDialog, mockPerformMemoryRefresh, mockCorgiMode, - 'test-version', ), ); return result.current; @@ -253,8 +252,8 @@ describe('useSlashCommandProcessor', () => { description?: string, sandboxEnvVar?: string, seatbeltProfileVar?: string, + cliVersion?: string, ) => { - const cliVersion = 'test-version'; const osVersion = 'test-platform test-node-version'; let sandboxEnvStr = 'no sandbox'; if (sandboxEnvVar && sandboxEnvVar !== 'sandbox-exec') { @@ -293,12 +292,14 @@ Add any other context about the problem here. it('should call open with the correct GitHub issue URL and return true', async () => { process.env.SANDBOX = 'gemini-sandbox'; process.env.SEATBELT_PROFILE = 'test_profile'; + process.env.CLI_VERSION = 'test-version'; const { handleSlashCommand } = getProcessor(); const bugDescription = 'This is a test bug'; const expectedUrl = getExpectedUrl( bugDescription, process.env.SANDBOX, process.env.SEATBELT_PROFILE, + process.env.CLI_VERSION, ); let commandResult: SlashCommandActionReturn | boolean = false; await act(async () => { diff --git a/packages/cli/src/ui/hooks/slashCommandProcessor.ts b/packages/cli/src/ui/hooks/slashCommandProcessor.ts index 6de2ceab..01e04d70 100644 --- a/packages/cli/src/ui/hooks/slashCommandProcessor.ts +++ b/packages/cli/src/ui/hooks/slashCommandProcessor.ts @@ -14,6 +14,7 @@ import { Message, MessageType, HistoryItemWithoutId } from '../types.js'; import { createShowMemoryAction } from './useShowMemoryCommand.js'; import { GIT_COMMIT_INFO } from '../../generated/git-commit.js'; import { formatMemoryUsage } from '../utils/formatters.js'; +import { getCliVersion } from '../../utils/version.js'; export interface SlashCommandActionReturn { shouldScheduleTool?: boolean; @@ -46,7 +47,6 @@ export const useSlashCommandProcessor = ( openThemeDialog: () => void, performMemoryRefresh: () => Promise, toggleCorgiMode: () => void, - cliVersion: string, ) => { const addMessage = useCallback( (message: Message) => { @@ -193,7 +193,7 @@ export const useSlashCommandProcessor = ( name: 'about', description: 'Show version info', action: (_mainCommand, _subCommand, _args) => { - const osVersion = `${process.platform} ${process.version}`; + const osVersion = process.platform; let sandboxEnv = 'no sandbox'; if (process.env.SANDBOX && process.env.SANDBOX !== 'sandbox-exec') { sandboxEnv = process.env.SANDBOX; @@ -201,7 +201,7 @@ export const useSlashCommandProcessor = ( sandboxEnv = `sandbox-exec (${process.env.SEATBELT_PROFILE || 'unknown'})`; } const modelVersion = config?.getModel() || 'Unknown'; - + const cliVersion = getCliVersion(); addMessage({ type: MessageType.ABOUT, timestamp: new Date(), @@ -231,6 +231,7 @@ export const useSlashCommandProcessor = ( } const modelVersion = config?.getModel() || 'Unknown'; const memoryUsage = formatMemoryUsage(process.memoryUsage().rss); + const cliVersion = getCliVersion(); const diagnosticInfo = ` ## Describe the bug @@ -299,7 +300,6 @@ Add any other context about the problem here. addMessage, toggleCorgiMode, config, - cliVersion, ], ); diff --git a/packages/cli/src/utils/version.ts b/packages/cli/src/utils/version.ts index 8ccc3737..50b69350 100644 --- a/packages/cli/src/utils/version.ts +++ b/packages/cli/src/utils/version.ts @@ -4,31 +4,6 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { readPackageUp } from 'read-package-up'; -import { fileURLToPath } from 'node:url'; -import { dirname } from 'node:path'; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = dirname(__filename); - -let cliVersion: string | undefined; - -export async function getCliVersion(): Promise { - if (cliVersion) { - return cliVersion; - } - - if (process.env.CLI_VERSION) { - cliVersion = process.env.CLI_VERSION; - return cliVersion; - } - - try { - const readUpResult = await readPackageUp({ cwd: __dirname }); - cliVersion = readUpResult?.packageJson.version || 'unknown'; - } catch (_e) { - cliVersion = 'unknown'; - } - - return cliVersion; +export function getCliVersion(): string { + return process.env.CLI_VERSION || process.version; } diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts index 0d69ac04..c25bc8fc 100644 --- a/packages/core/src/config/config.ts +++ b/packages/core/src/config/config.ts @@ -316,10 +316,9 @@ function findEnvFile(startDir: string): string | null { export function loadEnvironment(): void { const envFilePath = findEnvFile(process.cwd()); - if (!envFilePath) { - return; + if (envFilePath) { + dotenv.config({ path: envFilePath }); } - dotenv.config({ path: envFilePath }); } export function createServerConfig(params: ConfigParameters): Config {