diff options
Diffstat (limited to 'packages/cli/src/ui/hooks')
| -rw-r--r-- | packages/cli/src/ui/hooks/useGeminiStream.ts | 9 | ||||
| -rw-r--r-- | packages/cli/src/ui/hooks/useLogger.ts | 32 |
2 files changed, 39 insertions, 2 deletions
diff --git a/packages/cli/src/ui/hooks/useGeminiStream.ts b/packages/cli/src/ui/hooks/useGeminiStream.ts index 3ca4b03a..1cd2438c 100644 --- a/packages/cli/src/ui/hooks/useGeminiStream.ts +++ b/packages/cli/src/ui/hooks/useGeminiStream.ts @@ -18,13 +18,14 @@ import { getErrorMessage, isNodeError, Config, + MessageSenderType, + ServerToolCallConfirmationDetails, ToolCallConfirmationDetails, ToolCallResponseInfo, - ServerToolCallConfirmationDetails, ToolConfirmationOutcome, - ToolResultDisplay, ToolEditConfirmationDetails, ToolExecuteConfirmationDetails, + ToolResultDisplay, partListUnionToString, } from '@gemini-code/server'; import { type Chat, type PartListUnion, type Part } from '@google/genai'; @@ -42,6 +43,7 @@ import { handleAtCommand } from './atCommandProcessor.js'; import { findLastSafeSplitPoint } from '../utils/markdownUtilities.js'; import { useStateAndRef } from './useStateAndRef.js'; import { UseHistoryManagerReturn } from './useHistoryManager.js'; +import { useLogger } from './useLogger.js'; enum StreamProcessingStatus { Completed, @@ -71,6 +73,7 @@ export const useGeminiStream = ( const [isResponding, setIsResponding] = useState<boolean>(false); const [pendingHistoryItemRef, setPendingHistoryItem] = useStateAndRef<HistoryItemWithoutId | null>(null); + const logger = useLogger(); const onExec = useCallback(async (done: Promise<void>) => { setIsResponding(true); @@ -117,6 +120,7 @@ export const useGeminiStream = ( if (typeof query === 'string') { const trimmedQuery = query.trim(); onDebugMessage(`User query: '${trimmedQuery}'`); + await logger?.logMessage(MessageSenderType.USER, trimmedQuery); // Handle UI-only commands first if (handleSlashCommand(trimmedQuery)) { @@ -616,6 +620,7 @@ export const useGeminiStream = ( onDebugMessage, refreshStatic, setInitError, + logger, ], ); diff --git a/packages/cli/src/ui/hooks/useLogger.ts b/packages/cli/src/ui/hooks/useLogger.ts new file mode 100644 index 00000000..080c3da9 --- /dev/null +++ b/packages/cli/src/ui/hooks/useLogger.ts @@ -0,0 +1,32 @@ +/** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +import { useState, useEffect } from 'react'; +import { Logger } from '@gemini-code/server'; + +/** + * Hook to manage the logger instance. + */ +export const useLogger = () => { + const [logger, setLogger] = useState<Logger | null>(null); + + useEffect(() => { + const newLogger = new Logger(); + /** + * Start async initialization, no need to await. Using await slows down the + * time from launch to see the gemini-cli prompt and it's better to not save + * messages than for the cli to hanging waiting for the logger to loading. + */ + newLogger + .initialize() + .then(() => { + setLogger(newLogger); + }) + .catch(() => {}); + }, []); + + return logger; +}; |
