summaryrefslogtreecommitdiff
path: root/packages/cli/src/gemini.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src/gemini.tsx')
-rw-r--r--packages/cli/src/gemini.tsx61
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,
- );
-}