From d84b1733305b86abe64143c71bdb25538b06dc6d Mon Sep 17 00:00:00 2001 From: Cynthia Long Date: Wed, 18 Mar 2026 14:36:59 +0000 Subject: [PATCH] rename headlessmode to interactive, add comments --- packages/cli/src/gemini.tsx | 2 +- packages/cli/src/nonInteractiveCli.ts | 2 +- packages/cli/src/ui/utils/ConsolePatcher.test.ts | 16 ++++++++-------- packages/cli/src/ui/utils/ConsolePatcher.ts | 15 ++++++++++----- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/packages/cli/src/gemini.tsx b/packages/cli/src/gemini.tsx index 7cc288ee44..76a29ffdd9 100644 --- a/packages/cli/src/gemini.tsx +++ b/packages/cli/src/gemini.tsx @@ -272,7 +272,7 @@ export async function main() { const isDebugMode = cliConfig.isDebugMode(argv); const consolePatcher = new ConsolePatcher({ stderr: true, - headlessMode: isHeadlessMode() ? true : false, + interactive: isHeadlessMode() ? false : true, 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 3a37e8c540..4f9d817204 100644 --- a/packages/cli/src/nonInteractiveCli.ts +++ b/packages/cli/src/nonInteractiveCli.ts @@ -65,7 +65,7 @@ export async function runNonInteractive({ return promptIdContext.run(prompt_id, async () => { const consolePatcher = new ConsolePatcher({ stderr: true, - headlessMode: true, + interactive: false, debugMode: config.getDebugMode(), onNewMessage: (msg) => { coreEvents.emitConsoleLog(msg.type, msg.content); diff --git a/packages/cli/src/ui/utils/ConsolePatcher.test.ts b/packages/cli/src/ui/utils/ConsolePatcher.test.ts index 27520ffb62..8439ca3564 100644 --- a/packages/cli/src/ui/utils/ConsolePatcher.test.ts +++ b/packages/cli/src/ui/utils/ConsolePatcher.test.ts @@ -1,6 +1,6 @@ /** * @license - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * SPDX-License-Identifier: Apache-2.0 */ @@ -46,12 +46,12 @@ describe('ConsolePatcher', () => { expect(console.info).toBe(beforeInfo); }); - describe('headlessMode', () => { - it('should ignore log and info when headlessMode is true and debugMode is false', () => { + describe('Interactive mode', () => { + it('should ignore log and info when it is not interactive and debugMode is false', () => { patcher = new ConsolePatcher({ onNewMessage, debugMode: false, - headlessMode: true, + interactive: false, }); patcher.patch(); @@ -60,11 +60,11 @@ describe('ConsolePatcher', () => { expect(onNewMessage).not.toHaveBeenCalled(); }); - it('should not ignore log and info when headlessMode is true and debugMode is true', () => { + it('should not ignore log and info when it is not interactive and debugMode is true', () => { patcher = new ConsolePatcher({ onNewMessage, debugMode: true, - headlessMode: true, + interactive: false, }); patcher.patch(); @@ -83,11 +83,11 @@ describe('ConsolePatcher', () => { }); }); - it('should not ignore log and info when headlessMode is false', () => { + it('should not ignore log and info when it is interactive', () => { patcher = new ConsolePatcher({ onNewMessage, debugMode: false, - headlessMode: false, + interactive: true, }); patcher.patch(); diff --git a/packages/cli/src/ui/utils/ConsolePatcher.ts b/packages/cli/src/ui/utils/ConsolePatcher.ts index 433b30f3a3..8f7132c3c2 100644 --- a/packages/cli/src/ui/utils/ConsolePatcher.ts +++ b/packages/cli/src/ui/utils/ConsolePatcher.ts @@ -13,7 +13,7 @@ interface ConsolePatcherParams { onNewMessage?: (message: Omit) => void; debugMode: boolean; stderr?: boolean; - headlessMode?: boolean; + interactive?: boolean; } export class ConsolePatcher { @@ -50,15 +50,20 @@ export class ConsolePatcher { private patchConsoleMethod = (type: 'log' | 'warn' | 'error' | 'debug' | 'info') => (...args: unknown[]) => { - if (this.params.headlessMode) { + // When it is non interactive mode, do not show info logging. + // default to true if it is undefined + if (this.params.interactive === false) { if ((type === 'info' || type === 'log') && !this.params.debugMode) { return; } } - if (type !== 'debug' || this.params.debugMode) { - if (this.params.stderr) { + // When it is stderr only mode, all console output redirect to stderr + if (this.params.stderr) { + if (type !== 'debug' || this.params.debugMode) { this.originalConsoleError(this.formatArgs(args)); - } else { + } + } else { + if (type !== 'debug' || this.params.debugMode) { this.params.onNewMessage?.({ type, content: this.formatArgs(args),