From abb4583554510bc66fd8726a78c3eb375ec0ef46 Mon Sep 17 00:00:00 2001 From: Cynthia Long Date: Tue, 17 Mar 2026 14:18:09 +0000 Subject: [PATCH] introduce headless param --- packages/cli/src/gemini.tsx | 2 ++ packages/cli/src/nonInteractiveCli.ts | 1 + packages/cli/src/ui/utils/ConsolePatcher.ts | 11 ++++++----- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/cli/src/gemini.tsx b/packages/cli/src/gemini.tsx index 04a370d7e9..e63900f5db 100644 --- a/packages/cli/src/gemini.tsx +++ b/packages/cli/src/gemini.tsx @@ -31,6 +31,7 @@ import { ValidationRequiredError, type AdminControlsSettings, debugLogger, + isHeadlessMode, } from '@google/gemini-cli-core'; import { loadCliConfig, parseArguments } from './config/config.js'; @@ -271,6 +272,7 @@ export async function main() { const isDebugMode = cliConfig.isDebugMode(argv); const consolePatcher = new ConsolePatcher({ stderr: true, + headlessMode: isHeadlessMode() ? true : false, debugMode: isDebugMode, onNewMessage: (msg) => { coreEvents.emitConsoleLog(msg.type, msg.content); diff --git a/packages/cli/src/nonInteractiveCli.ts b/packages/cli/src/nonInteractiveCli.ts index 891e3d0ee9..3a37e8c540 100644 --- a/packages/cli/src/nonInteractiveCli.ts +++ b/packages/cli/src/nonInteractiveCli.ts @@ -65,6 +65,7 @@ export async function runNonInteractive({ return promptIdContext.run(prompt_id, async () => { const consolePatcher = new ConsolePatcher({ stderr: true, + headlessMode: true, debugMode: config.getDebugMode(), onNewMessage: (msg) => { coreEvents.emitConsoleLog(msg.type, msg.content); diff --git a/packages/cli/src/ui/utils/ConsolePatcher.ts b/packages/cli/src/ui/utils/ConsolePatcher.ts index e0b5814199..433b30f3a3 100644 --- a/packages/cli/src/ui/utils/ConsolePatcher.ts +++ b/packages/cli/src/ui/utils/ConsolePatcher.ts @@ -13,6 +13,7 @@ interface ConsolePatcherParams { onNewMessage?: (message: Omit) => void; debugMode: boolean; stderr?: boolean; + headlessMode?: boolean; } export class ConsolePatcher { @@ -49,15 +50,15 @@ export class ConsolePatcher { private patchConsoleMethod = (type: 'log' | 'warn' | 'error' | 'debug' | 'info') => (...args: unknown[]) => { - if (this.params.stderr) { + if (this.params.headlessMode) { if ((type === 'info' || type === 'log') && !this.params.debugMode) { return; } - if (type !== 'debug' || this.params.debugMode) { + } + if (type !== 'debug' || this.params.debugMode) { + if (this.params.stderr) { this.originalConsoleError(this.formatArgs(args)); - } - } else { - if (type !== 'debug' || this.params.debugMode) { + } else { this.params.onNewMessage?.({ type, content: this.formatArgs(args),