Migrate console to coreEvents.emitFeedback or debugLogger (#15219)

This commit is contained in:
Adib234
2025-12-29 15:46:10 -05:00
committed by GitHub
parent dcd2449b1a
commit 10ae84869a
66 changed files with 564 additions and 425 deletions
@@ -502,7 +502,7 @@ export async function handleAtCommand({
const errorMessages = resourceReadDisplays
.filter((d) => d.status === ToolCallStatus.Error)
.map((d) => d.resultDisplay);
console.error(errorMessages);
debugLogger.error(errorMessages);
const errorMsg = `Exiting due to an error processing the @ command: ${firstError.resultDisplay}`;
return { processedQuery: null, error: errorMsg };
}
@@ -244,7 +244,6 @@ describe('useSlashCommandProcessor', () => {
});
expect(mockClearItems).toHaveBeenCalled();
expect(console.clear).not.toHaveBeenCalled();
});
it('should call console.clear if alternate buffer is not active', async () => {
@@ -262,7 +261,6 @@ describe('useSlashCommandProcessor', () => {
});
expect(mockClearItems).toHaveBeenCalled();
expect(console.clear).toHaveBeenCalled();
});
});
@@ -50,7 +50,6 @@ import {
type ExtensionUpdateStatus,
} from '../state/extensions.js';
import { appEvents } from '../../utils/events.js';
import { useAlternateBuffer } from './useAlternateBuffer.js';
import {
LogoutConfirmationDialog,
LogoutChoice,
@@ -96,7 +95,6 @@ export const useSlashCommandProcessor = (
const [commands, setCommands] = useState<readonly SlashCommand[] | undefined>(
undefined,
);
const alternateBuffer = useAlternateBuffer();
const [reloadTrigger, setReloadTrigger] = useState(0);
const reloadCommands = useCallback(() => {
@@ -212,9 +210,6 @@ export const useSlashCommandProcessor = (
addItem,
clear: () => {
clearItems();
if (!alternateBuffer) {
console.clear();
}
refreshStatic();
setBannerVisible(false);
},
@@ -238,7 +233,6 @@ export const useSlashCommandProcessor = (
},
}),
[
alternateBuffer,
config,
settings,
gitService,
@@ -8,7 +8,10 @@ import { useEffect } from 'react';
import type { Config } from '@google/gemini-cli-core';
import { loadTrustedFolders } from '../../config/trustedFolders.js';
import { expandHomeDir } from '../utils/directoryUtils.js';
import { refreshServerHierarchicalMemory } from '@google/gemini-cli-core';
import {
debugLogger,
refreshServerHierarchicalMemory,
} from '@google/gemini-cli-core';
import { MultiFolderTrustDialog } from '../components/MultiFolderTrustDialog.js';
import type { UseHistoryManagerReturn } from './useHistoryManager.js';
import { MessageType, type HistoryItem } from '../types.js';
@@ -133,7 +136,7 @@ export function useIncludeDirsTrust(
}
if (undefinedTrustDirs.length > 0) {
console.log(
debugLogger.log(
'Creating custom dialog with undecidedDirs:',
undefinedTrustDirs,
);
@@ -7,6 +7,7 @@
import { useReducer, useRef, useEffect, useCallback } from 'react';
import { useKeypress, type Key } from './useKeypress.js';
import { keyMatchers, Command } from '../keyMatchers.js';
import { debugLogger } from '@google/gemini-cli-core';
export interface SelectionListItem<T> {
key: string;
@@ -198,7 +199,7 @@ function selectionListReducer(
default: {
const exhaustiveCheck: never = action;
console.error(`Unknown selection list action: ${exhaustiveCheck}`);
debugLogger.warn(`Unknown selection list action: ${exhaustiveCheck}`);
return state;
}
}
@@ -19,6 +19,7 @@ import type {
ConversationRecord,
MessageRecord,
} from '@google/gemini-cli-core';
import { coreEvents } from '@google/gemini-cli-core';
// Mock modules
vi.mock('fs/promises');
@@ -52,6 +53,7 @@ describe('useSessionBrowser', () => {
beforeEach(() => {
vi.resetAllMocks();
vi.spyOn(coreEvents, 'emitFeedback').mockImplementation(() => {});
mockedPath.join.mockImplementation((...args) => args.join('/'));
vi.mocked(mockConfig.storage.getProjectTempDir).mockReturnValue(
MOCKED_PROJECT_TEMP_DIR,
@@ -100,9 +102,6 @@ describe('useSessionBrowser', () => {
fileName: MOCKED_FILENAME,
} as SessionInfo;
mockedFs.readFile.mockRejectedValue(new Error('File not found'));
const consoleErrorSpy = vi
.spyOn(console, 'error')
.mockImplementation(() => {});
const { result } = renderHook(() =>
useSessionBrowser(mockConfig, mockOnLoadHistory),
@@ -112,9 +111,12 @@ describe('useSessionBrowser', () => {
await result.current.handleResumeSession(mockSession);
});
expect(consoleErrorSpy).toHaveBeenCalled();
expect(coreEvents.emitFeedback).toHaveBeenCalledWith(
'error',
'Error resuming session:',
expect.any(Error),
);
expect(result.current.isSessionBrowserOpen).toBe(false);
consoleErrorSpy.mockRestore();
});
it('should handle JSON parse error', async () => {
@@ -124,9 +126,6 @@ describe('useSessionBrowser', () => {
fileName: MOCKED_FILENAME,
} as SessionInfo;
mockedFs.readFile.mockResolvedValue('invalid json');
const consoleErrorSpy = vi
.spyOn(console, 'error')
.mockImplementation(() => {});
const { result } = renderHook(() =>
useSessionBrowser(mockConfig, mockOnLoadHistory),
@@ -136,9 +135,12 @@ describe('useSessionBrowser', () => {
await result.current.handleResumeSession(mockSession);
});
expect(consoleErrorSpy).toHaveBeenCalled();
expect(coreEvents.emitFeedback).toHaveBeenCalledWith(
'error',
'Error resuming session:',
expect.any(Error),
);
expect(result.current.isSessionBrowserOpen).toBe(false);
consoleErrorSpy.mockRestore();
});
});
@@ -14,7 +14,7 @@ import type {
ResumedSessionData,
} from '@google/gemini-cli-core';
import type { Part } from '@google/genai';
import { partListUnionToString } from '@google/gemini-cli-core';
import { partListUnionToString, coreEvents } from '@google/gemini-cli-core';
import type { SessionInfo } from '../../utils/sessionUtils.js';
import { MessageType, ToolCallStatus } from '../types.js';
@@ -79,7 +79,7 @@ export const useSessionBrowser = (
resumedSessionData,
);
} catch (error) {
console.error('Error resuming session:', error);
coreEvents.emitFeedback('error', 'Error resuming session:', error);
setIsSessionBrowserOpen(false);
}
},
@@ -103,7 +103,7 @@ export const useSessionBrowser = (
chatRecordingService.deleteSession(session.file);
}
} catch (error) {
console.error('Error deleting session:', error);
coreEvents.emitFeedback('error', 'Error deleting session:', error);
throw error;
}
},
+3 -3
View File
@@ -7,7 +7,7 @@
import { useState, useEffect, useCallback } from 'react';
import * as fs from 'node:fs/promises';
import * as path from 'node:path';
import { isNodeError, Storage } from '@google/gemini-cli-core';
import { debugLogger, isNodeError, Storage } from '@google/gemini-cli-core';
const MAX_HISTORY_LENGTH = 100;
@@ -52,7 +52,7 @@ async function readHistoryFile(filePath: string): Promise<string[]> {
return result;
} catch (err) {
if (isNodeError(err) && err.code === 'ENOENT') return [];
console.error('Error reading history:', err);
debugLogger.error('Error reading history:', err);
return [];
}
}
@@ -65,7 +65,7 @@ async function writeHistoryFile(
await fs.mkdir(path.dirname(filePath), { recursive: true });
await fs.writeFile(filePath, history.join('\n'));
} catch (error) {
console.error('Error writing shell history:', error);
debugLogger.error('Error writing shell history:', error);
}
}