diff options
Diffstat (limited to 'packages/cli/src/gemini.tsx')
| -rw-r--r-- | packages/cli/src/gemini.tsx | 61 |
1 files changed, 6 insertions, 55 deletions
diff --git a/packages/cli/src/gemini.tsx b/packages/cli/src/gemini.tsx index 48dbd271..771fcacb 100644 --- a/packages/cli/src/gemini.tsx +++ b/packages/cli/src/gemini.tsx @@ -7,7 +7,7 @@ import React from 'react'; import { render } from 'ink'; import { AppWrapper } from './ui/App.js'; -import { loadCliConfig, parseArguments, CliArgs } from './config/config.js'; +import { loadCliConfig, parseArguments } from './config/config.js'; import { readStdin } from './utils/readStdin.js'; import { basename } from 'node:path'; import v8 from 'node:v8'; @@ -25,15 +25,11 @@ import { themeManager } from './ui/themes/theme-manager.js'; import { getStartupWarnings } from './utils/startupWarnings.js'; import { getUserStartupWarnings } from './utils/userStartupWarnings.js'; import { runNonInteractive } from './nonInteractiveCli.js'; -import { loadExtensions, Extension } from './config/extension.js'; +import { loadExtensions } from './config/extension.js'; import { cleanupCheckpoints, registerCleanup } from './utils/cleanup.js'; import { getCliVersion } from './utils/version.js'; import { - ApprovalMode, Config, - EditTool, - ShellTool, - WriteFileTool, sessionId, logUserPrompt, AuthType, @@ -255,11 +251,8 @@ export async function main() { ...(await getUserStartupWarnings(workspaceRoot)), ]; - const shouldBeInteractive = - !!argv.promptInteractive || (process.stdin.isTTY && input?.length === 0); - // Render UI, passing necessary config values. Check that there is no command line question. - if (shouldBeInteractive) { + if (config.isInteractive()) { const version = await getCliVersion(); setWindowTitle(basename(workspaceRoot), settings); const instance = render( @@ -308,12 +301,10 @@ export async function main() { prompt_length: input.length, }); - // Non-interactive mode handled by runNonInteractive - const nonInteractiveConfig = await loadNonInteractiveConfig( + const nonInteractiveConfig = await validateNonInteractiveAuth( + settings.merged.selectedAuthType, + settings.merged.useExternalAuth, config, - extensions, - settings, - argv, ); await runNonInteractive(nonInteractiveConfig, input, prompt_id); @@ -334,43 +325,3 @@ function setWindowTitle(title: string, settings: LoadedSettings) { }); } } - -async function loadNonInteractiveConfig( - config: Config, - extensions: Extension[], - settings: LoadedSettings, - argv: CliArgs, -) { - let finalConfig = config; - if (config.getApprovalMode() !== ApprovalMode.YOLO) { - // Everything is not allowed, ensure that only read-only tools are configured. - const existingExcludeTools = settings.merged.excludeTools || []; - const interactiveTools = [ - ShellTool.Name, - EditTool.Name, - WriteFileTool.Name, - ]; - - const newExcludeTools = [ - ...new Set([...existingExcludeTools, ...interactiveTools]), - ]; - - const nonInteractiveSettings = { - ...settings.merged, - excludeTools: newExcludeTools, - }; - finalConfig = await loadCliConfig( - nonInteractiveSettings, - extensions, - config.getSessionId(), - argv, - ); - await finalConfig.initialize(); - } - - return await validateNonInteractiveAuth( - settings.merged.selectedAuthType, - settings.merged.useExternalAuth, - finalConfig, - ); -} |
