Reload gemini memory on extension load/unload + memory refresh refactor (#12651)

This commit is contained in:
Jacob MacDonald
2025-11-07 09:07:25 -08:00
committed by GitHub
parent ef4030331a
commit 47603ef8e1
15 changed files with 276 additions and 259 deletions

View File

@@ -48,10 +48,11 @@ import {
debugLogger,
coreEvents,
CoreEvent,
refreshServerHierarchicalMemory,
type ModelChangedPayload,
type MemoryChangedPayload,
} from '@google/gemini-cli-core';
import { validateAuthMethod } from '../config/auth.js';
import { loadHierarchicalGeminiMemory } from '../config/config.js';
import process from 'node:process';
import { useHistory } from './hooks/useHistoryManager.js';
import { useMemoryMonitor } from './hooks/useMemoryMonitor.js';
@@ -160,9 +161,6 @@ export const AppContainer = (props: AppContainerProps) => {
const [showDebugProfiler, setShowDebugProfiler] = useState(false);
const [copyModeEnabled, setCopyModeEnabled] = useState(false);
const [geminiMdFileCount, setGeminiMdFileCount] = useState<number>(
initializationResult.geminiMdFileCount,
);
const [shellModeActive, setShellModeActive] = useState(false);
const [modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError] =
useState<boolean>(false);
@@ -569,7 +567,6 @@ Logging in with Google... Please restart Gemini CLI to continue.
refreshStatic,
toggleVimEnabled,
setIsProcessing,
setGeminiMdFileCount,
slashCommandActions,
extensionsUpdateStateInternal,
isConfigInitialized,
@@ -584,26 +581,8 @@ Logging in with Google... Please restart Gemini CLI to continue.
Date.now(),
);
try {
const { memoryContent, fileCount, filePaths } =
await loadHierarchicalGeminiMemory(
process.cwd(),
settings.merged.context?.loadMemoryFromIncludeDirectories
? config.getWorkspaceContext().getDirectories()
: [],
config.getDebugMode(),
config.getFileService(),
settings.merged,
config.getExtensionLoader(),
config.isTrustedFolder(),
settings.merged.context?.importFormat || 'tree', // Use setting or default to 'tree'
config.getFileFilteringOptions(),
);
config.setUserMemory(memoryContent);
config.setGeminiMdFileCount(fileCount);
config.setGeminiMdFilePaths(filePaths);
setGeminiMdFileCount(fileCount);
const { memoryContent, fileCount } =
await refreshServerHierarchicalMemory(config);
historyManager.addItem(
{
@@ -635,7 +614,7 @@ Logging in with Google... Please restart Gemini CLI to continue.
);
debugLogger.warn('Error refreshing memory:', error);
}
}, [config, historyManager, settings.merged]);
}, [config, historyManager]);
const cancelHandlerRef = useRef<() => void>(() => {});
@@ -1248,6 +1227,19 @@ Logging in with Google... Please restart Gemini CLI to continue.
[pendingSlashCommandHistoryItems, pendingGeminiHistoryItems],
);
const [geminiMdFileCount, setGeminiMdFileCount] = useState<number>(
config.getGeminiMdFileCount(),
);
useEffect(() => {
const handleMemoryChanged = (result: MemoryChangedPayload) => {
setGeminiMdFileCount(result.fileCount);
};
coreEvents.on(CoreEvent.MemoryChanged, handleMemoryChanged);
return () => {
coreEvents.off(CoreEvent.MemoryChanged, handleMemoryChanged);
};
}, []);
const uiState: UIState = useMemo(
() => ({
history: historyManager.history,