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.tsx32
1 files changed, 31 insertions, 1 deletions
diff --git a/packages/cli/src/gemini.tsx b/packages/cli/src/gemini.tsx
index f7089e28..6661d3ef 100644
--- a/packages/cli/src/gemini.tsx
+++ b/packages/cli/src/gemini.tsx
@@ -239,7 +239,37 @@ export async function main() {
process.exit(1);
}
}
- await start_sandbox(sandboxConfig, memoryArgs, config);
+ let stdinData = '';
+ if (!process.stdin.isTTY) {
+ stdinData = await readStdin();
+ }
+
+ // This function is a copy of the one from sandbox.ts
+ // It is moved here to decouple sandbox.ts from the CLI's argument structure.
+ const injectStdinIntoArgs = (
+ args: string[],
+ stdinData?: string,
+ ): string[] => {
+ const finalArgs = [...args];
+ if (stdinData) {
+ const promptIndex = finalArgs.findIndex(
+ (arg) => arg === '--prompt' || arg === '-p',
+ );
+ if (promptIndex > -1 && finalArgs.length > promptIndex + 1) {
+ // If there's a prompt argument, prepend stdin to it
+ finalArgs[promptIndex + 1] =
+ `${stdinData}\n\n${finalArgs[promptIndex + 1]}`;
+ } else {
+ // If there's no prompt argument, add stdin as the prompt
+ finalArgs.push('--prompt', stdinData);
+ }
+ }
+ return finalArgs;
+ };
+
+ const sandboxArgs = injectStdinIntoArgs(process.argv, stdinData);
+
+ await start_sandbox(sandboxConfig, memoryArgs, config, sandboxArgs);
process.exit(0);
} else {
// Not in a sandbox and not entering one, so relaunch with additional