From 8a00e41ba884822891238f29c92e890a4379b80c Mon Sep 17 00:00:00 2001 From: Michael Bleigh Date: Fri, 3 Apr 2026 09:44:35 -0700 Subject: [PATCH] fix: address PR feedback for non-interactive and event translator - Restore 'never' return type for runTerminalExitHandler - Add TODO for usage event and debugLogger for unknown events - Check for 'status' in isStructuredError type guard - Fix unused property build error for experimentalAgentHistorySummarization --- packages/cli/src/nonInteractiveCli.ts | 8 +++++--- packages/core/src/agent/event-translator.ts | 1 + packages/core/src/config/config.ts | 5 +++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/nonInteractiveCli.ts b/packages/cli/src/nonInteractiveCli.ts index ad26f9eb5f..d2fa89088b 100644 --- a/packages/cli/src/nonInteractiveCli.ts +++ b/packages/cli/src/nonInteractiveCli.ts @@ -37,6 +37,7 @@ import { LegacyAgentSession, ToolErrorType, geminiPartsToContentParts, + debugLogger, } from '@google/gemini-cli-core'; import type { Part } from '@google/genai'; @@ -421,9 +422,7 @@ export async function runNonInteractive( return errToThrow; }; - const runTerminalExitHandler = ( - handler: () => void | never, - ): void | never => { + const runTerminalExitHandler = (handler: () => never): never => { terminalProcessExitHandled = true; return handler(); }; @@ -615,10 +614,13 @@ export async function runNonInteractive( case 'elicitation_request': case 'elicitation_response': case 'usage': + // TODO: We should think about converting this into the usage event. + // fallthrough case 'custom': // Explicitly ignore these non-interactive events break; default: + debugLogger.error('Unknown agent event type:', event); event satisfies never; break; } diff --git a/packages/core/src/agent/event-translator.ts b/packages/core/src/agent/event-translator.ts index 00b5d12b4f..cb299b494c 100644 --- a/packages/core/src/agent/event-translator.ts +++ b/packages/core/src/agent/event-translator.ts @@ -432,6 +432,7 @@ function isStructuredError(error: unknown): error is StructuredError { return ( typeof error === 'object' && error !== null && + 'status' in error && 'message' in error && typeof error.message === 'string' ); diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts index 283867629d..10ef41e808 100644 --- a/packages/core/src/config/config.ts +++ b/packages/core/src/config/config.ts @@ -2426,6 +2426,11 @@ export class Config implements McpContext, AgentLoopContext { getExperimentalAgentHistoryRetainedMessages(): number { return this.experimentalAgentHistoryRetainedMessages; } + + isExperimentalAgentHistorySummarizationEnabled(): boolean { + return this.experimentalAgentHistorySummarization; + } + getContextManagementConfig(): ContextManagementConfig { return this.contextManagement; }