diff options
Diffstat (limited to 'packages/cli/src/nonInteractiveCli.ts')
| -rw-r--r-- | packages/cli/src/nonInteractiveCli.ts | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/packages/cli/src/nonInteractiveCli.ts b/packages/cli/src/nonInteractiveCli.ts index 8e573134..8b056a28 100644 --- a/packages/cli/src/nonInteractiveCli.ts +++ b/packages/cli/src/nonInteractiveCli.ts @@ -17,28 +17,37 @@ import { import { Content, Part, FunctionCall } from '@google/genai'; import { parseAndFormatApiError } from './ui/utils/errorParsing.js'; +import { ConsolePatcher } from './ui/utils/ConsolePatcher.js'; export async function runNonInteractive( config: Config, input: string, prompt_id: string, ): Promise<void> { - await config.initialize(); - // Handle EPIPE errors when the output is piped to a command that closes early. - process.stdout.on('error', (err: NodeJS.ErrnoException) => { - if (err.code === 'EPIPE') { - // Exit gracefully if the pipe is closed. - process.exit(0); - } + const consolePatcher = new ConsolePatcher({ + stderr: true, + debugMode: config.getDebugMode(), }); - const geminiClient = config.getGeminiClient(); - const toolRegistry: ToolRegistry = await config.getToolRegistry(); - - const abortController = new AbortController(); - let currentMessages: Content[] = [{ role: 'user', parts: [{ text: input }] }]; - let turnCount = 0; try { + await config.initialize(); + consolePatcher.patch(); + // Handle EPIPE errors when the output is piped to a command that closes early. + process.stdout.on('error', (err: NodeJS.ErrnoException) => { + if (err.code === 'EPIPE') { + // Exit gracefully if the pipe is closed. + process.exit(0); + } + }); + + const geminiClient = config.getGeminiClient(); + const toolRegistry: ToolRegistry = await config.getToolRegistry(); + + const abortController = new AbortController(); + let currentMessages: Content[] = [ + { role: 'user', parts: [{ text: input }] }, + ]; + let turnCount = 0; while (true) { turnCount++; if ( @@ -133,6 +142,7 @@ export async function runNonInteractive( ); process.exit(1); } finally { + consolePatcher.cleanup(); if (isTelemetrySdkInitialized()) { await shutdownTelemetry(); } |
