| |
| |
| |
| |
| |
|
|
| import { |
| IdeClient, |
| IdeConnectionEvent, |
| IdeConnectionType, |
| logIdeConnection, |
| type Config, |
| StartSessionEvent, |
| logCliConfiguration, |
| startupProfiler, |
| debugLogger, |
| } from '@google/gemini-cli-core'; |
| import { type LoadedSettings } from '../config/settings.js'; |
| import { performInitialAuth } from './auth.js'; |
| import { validateTheme } from './theme.js'; |
| import type { AccountSuspensionInfo } from '../ui/contexts/UIStateContext.js'; |
|
|
| export interface InitializationResult { |
| authError: string | null; |
| accountSuspensionInfo: AccountSuspensionInfo | null; |
| themeError: string | null; |
| shouldOpenAuthDialog: boolean; |
| geminiMdFileCount: number; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| export async function initializeApp( |
| config: Config, |
| settings: LoadedSettings, |
| ): Promise<InitializationResult> { |
| const authHandle = startupProfiler.start('authenticate'); |
| const { authError, accountSuspensionInfo } = await performInitialAuth( |
| config, |
| settings.merged.security.auth.selectedType, |
| ); |
| authHandle?.end(); |
| const themeError = validateTheme(settings); |
|
|
| const shouldOpenAuthDialog = |
| settings.merged.security.auth.selectedType === undefined || !!authError; |
|
|
| logCliConfiguration( |
| config, |
| new StartSessionEvent(config, config.getToolRegistry()), |
| ); |
|
|
| if (config.getIdeMode()) { |
| IdeClient.getInstance() |
| .then(async (ideClient) => { |
| await ideClient.connect(); |
| logIdeConnection( |
| config, |
| new IdeConnectionEvent(IdeConnectionType.START), |
| ); |
| }) |
| .catch((e) => { |
| |
| debugLogger.error('Failed to initialize IDE client:', e); |
| }); |
| } |
|
|
| return { |
| authError, |
| accountSuspensionInfo, |
| themeError, |
| shouldOpenAuthDialog, |
| geminiMdFileCount: config.getGeminiMdFileCount(), |
| }; |
| } |
|
|