summaryrefslogtreecommitdiff
path: root/packages/cli/src/config/config.ts
diff options
context:
space:
mode:
authorDaniel Lee <[email protected]>2025-07-11 16:52:56 -0700
committerGitHub <[email protected]>2025-07-11 23:52:56 +0000
commit5b6608ad844f89954b9107ad81b3791fae02607a (patch)
treebb37c297784bcfbdc1ecaeb3845716f1cd1db960 /packages/cli/src/config/config.ts
parent5b5f496436a060124e57009d1f7f37bd4d27f0f3 (diff)
feat(cli): add support for --prompt-interactive/-i flag (#1743)
Diffstat (limited to 'packages/cli/src/config/config.ts')
-rw-r--r--packages/cli/src/config/config.ts26
1 files changed, 20 insertions, 6 deletions
diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts
index b685f090..1c1f0746 100644
--- a/packages/cli/src/config/config.ts
+++ b/packages/cli/src/config/config.ts
@@ -34,12 +34,13 @@ const logger = {
error: (...args: any[]) => console.error('[ERROR]', ...args),
};
-interface CliArgs {
+export interface CliArgs {
model: string | undefined;
sandbox: boolean | string | undefined;
sandboxImage: string | undefined;
debug: boolean | undefined;
prompt: string | undefined;
+ promptInteractive: string | undefined;
allFiles: boolean | undefined;
all_files: boolean | undefined;
showMemoryUsage: boolean | undefined;
@@ -55,7 +56,7 @@ interface CliArgs {
listExtensions: boolean | undefined;
}
-async function parseArguments(): Promise<CliArgs> {
+export async function parseArguments(): Promise<CliArgs> {
const yargsInstance = yargs(hideBin(process.argv))
.scriptName('gemini')
.usage(
@@ -73,6 +74,12 @@ async function parseArguments(): Promise<CliArgs> {
type: 'string',
description: 'Prompt. Appended to input on stdin (if any).',
})
+ .option('prompt-interactive', {
+ alias: 'i',
+ type: 'string',
+ description:
+ 'Execute the provided prompt and continue in interactive mode',
+ })
.option('sandbox', {
alias: 's',
type: 'boolean',
@@ -173,10 +180,17 @@ async function parseArguments(): Promise<CliArgs> {
.alias('v', 'version')
.help()
.alias('h', 'help')
- .strict();
+ .strict()
+ .check((argv) => {
+ if (argv.prompt && argv.promptInteractive) {
+ throw new Error(
+ 'Cannot use both --prompt (-p) and --prompt-interactive (-i) together',
+ );
+ }
+ return true;
+ });
yargsInstance.wrap(yargsInstance.terminalWidth());
-
return yargsInstance.argv;
}
@@ -208,8 +222,8 @@ export async function loadCliConfig(
settings: Settings,
extensions: Extension[],
sessionId: string,
+ argv: CliArgs,
): Promise<Config> {
- const argv = await parseArguments();
const debugMode =
argv.debug ||
[process.env.DEBUG, process.env.DEBUG_MODE].some(
@@ -267,7 +281,7 @@ export async function loadCliConfig(
sandbox: sandboxConfig,
targetDir: process.cwd(),
debugMode,
- question: argv.prompt || '',
+ question: argv.promptInteractive || argv.prompt || '',
fullContext: argv.allFiles || argv.all_files || false,
coreTools: settings.coreTools || undefined,
excludeTools,