diff --git a/packages/cli/src/nonInteractiveCli.test.ts b/packages/cli/src/nonInteractiveCli.test.ts index e83e1e60c9..e8ce1d6d3e 100644 --- a/packages/cli/src/nonInteractiveCli.test.ts +++ b/packages/cli/src/nonInteractiveCli.test.ts @@ -58,12 +58,6 @@ const mockSchedulerSchedule = vi.hoisted(() => vi.fn()); vi.mock('@google/gemini-cli-core', async (importOriginal) => { const original = await importOriginal(); - const { LegacyAgentSession } = await import( - '../../core/src/agent/legacy-agent-session.js' - ); - const { geminiPartsToContentParts } = await import( - '../../core/src/agent/content-utils.js' - ); class MockChatRecordingService { initialize = vi.fn(); @@ -83,8 +77,8 @@ vi.mock('@google/gemini-cli-core', async (importOriginal) => { uiTelemetryService: { getMetrics: vi.fn(), }, - LegacyAgentSession, - geminiPartsToContentParts, + LegacyAgentSession: original.LegacyAgentSession, + geminiPartsToContentParts: original.geminiPartsToContentParts, coreEvents: mockCoreEvents, createWorkingStdio: vi.fn(() => ({ stdout: process.stdout, @@ -278,9 +272,7 @@ describe('runNonInteractive', () => { }); it('should stream the specific stream started by send', async () => { - const { LegacyAgentSession } = await import( - '../../core/src/agent/legacy-agent-session.js' - ); + const { LegacyAgentSession } = await import('@google/gemini-cli-core'); const streamSpy = vi.spyOn(LegacyAgentSession.prototype, 'stream'); const events: ServerGeminiStreamEvent[] = [ { type: GeminiEventType.Content, value: 'Hello again' }, @@ -1794,7 +1786,7 @@ describe('runNonInteractive', () => { .mockReturnValue('model-1'); // Mock debugLogger.error - const { debugLogger } = await import('../../core/src/utils/debugLogger.js'); + const { debugLogger } = await import('@google/gemini-cli-core'); const debugLoggerErrorSpy = vi .spyOn(debugLogger, 'error') .mockImplementation(() => {}); diff --git a/packages/cli/src/nonInteractiveCli.ts b/packages/cli/src/nonInteractiveCli.ts index 3cf001d537..c3fe3fbd39 100644 --- a/packages/cli/src/nonInteractiveCli.ts +++ b/packages/cli/src/nonInteractiveCli.ts @@ -298,9 +298,11 @@ export async function runNonInteractive({ message: geminiPartsToContentParts(query), }); - const getFirstText = (parts?: ContentPart[]): string | undefined => { - const part = parts?.[0]; - return part?.type === 'text' ? part.text : undefined; + const getTextContent = (parts?: ContentPart[]): string | undefined => { + const text = parts + ?.map((part) => (part.type === 'text' ? part.text : '')) + .join(''); + return text ? text : undefined; }; const emitFinalSuccessResult = (): void => { @@ -396,8 +398,8 @@ export async function runNonInteractive({ case 'tool_response': { textOutput.ensureTrailingNewline(); if (streamFormatter) { - const displayText = getFirstText(event.displayContent); - const errorMsg = getFirstText(event.content) ?? 'Tool error'; + const displayText = getTextContent(event.displayContent); + const errorMsg = getTextContent(event.content) ?? 'Tool error'; streamFormatter.emitEvent({ type: JsonStreamEventType.TOOL_RESULT, timestamp: new Date().toISOString(), @@ -416,8 +418,8 @@ export async function runNonInteractive({ }); } if (event.isError) { - const displayText = getFirstText(event.displayContent); - const errorMsg = getFirstText(event.content) ?? 'Tool error'; + const displayText = getTextContent(event.displayContent); + const errorMsg = getTextContent(event.content) ?? 'Tool error'; if (event.data?.['errorType'] === ToolErrorType.STOP_EXECUTION) { const stopMessage = `Agent execution stopped: ${errorMsg}`;