mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-05-17 07:13:07 -07:00
!feat(cli): address non-interactive review follow-ups
This commit is contained in:
committed by
Adam Weidman
parent
f7b08330f7
commit
24a4a0da1e
@@ -58,12 +58,6 @@ const mockSchedulerSchedule = vi.hoisted(() => vi.fn());
|
||||
vi.mock('@google/gemini-cli-core', async (importOriginal) => {
|
||||
const original =
|
||||
await importOriginal<typeof import('@google/gemini-cli-core')>();
|
||||
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(() => {});
|
||||
|
||||
@@ -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}`;
|
||||
|
||||
Reference in New Issue
Block a user