mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-04-30 06:54:15 -07:00
refactor(core): reuse computeNewContent in performAddMemoryEntry (#6689)
Co-authored-by: chen893 <chenshuanglong@fuzhi.ai> Co-authored-by: Sandy Tao <sandytao520@icloud.com>
This commit is contained in:
@@ -330,49 +330,18 @@ export class MemoryTool
|
|||||||
) => Promise<string | undefined>;
|
) => Promise<string | undefined>;
|
||||||
},
|
},
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
let processedText = text.trim();
|
|
||||||
// Remove leading hyphens and spaces that might be misinterpreted as markdown list items
|
|
||||||
processedText = processedText.replace(/^(-+\s*)+/, '').trim();
|
|
||||||
const newMemoryItem = `- ${processedText}`;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await fsAdapter.mkdir(path.dirname(memoryFilePath), { recursive: true });
|
await fsAdapter.mkdir(path.dirname(memoryFilePath), { recursive: true });
|
||||||
let content = '';
|
let currentContent = '';
|
||||||
try {
|
try {
|
||||||
content = await fsAdapter.readFile(memoryFilePath, 'utf-8');
|
currentContent = await fsAdapter.readFile(memoryFilePath, 'utf-8');
|
||||||
} catch (_e) {
|
} catch (_e) {
|
||||||
// File doesn't exist, will be created with header and item.
|
// File doesn't exist, which is fine. currentContent will be empty.
|
||||||
}
|
}
|
||||||
|
|
||||||
const headerIndex = content.indexOf(MEMORY_SECTION_HEADER);
|
const newContent = computeNewContent(currentContent, text);
|
||||||
|
|
||||||
if (headerIndex === -1) {
|
await fsAdapter.writeFile(memoryFilePath, newContent, 'utf-8');
|
||||||
// Header not found, append header and then the entry
|
|
||||||
const separator = ensureNewlineSeparation(content);
|
|
||||||
content += `${separator}${MEMORY_SECTION_HEADER}\n${newMemoryItem}\n`;
|
|
||||||
} else {
|
|
||||||
// Header found, find where to insert the new memory entry
|
|
||||||
const startOfSectionContent =
|
|
||||||
headerIndex + MEMORY_SECTION_HEADER.length;
|
|
||||||
let endOfSectionIndex = content.indexOf('\n## ', startOfSectionContent);
|
|
||||||
if (endOfSectionIndex === -1) {
|
|
||||||
endOfSectionIndex = content.length; // End of file
|
|
||||||
}
|
|
||||||
|
|
||||||
const beforeSectionMarker = content
|
|
||||||
.substring(0, startOfSectionContent)
|
|
||||||
.trimEnd();
|
|
||||||
let sectionContent = content
|
|
||||||
.substring(startOfSectionContent, endOfSectionIndex)
|
|
||||||
.trimEnd();
|
|
||||||
const afterSectionMarker = content.substring(endOfSectionIndex);
|
|
||||||
|
|
||||||
sectionContent += `\n${newMemoryItem}`;
|
|
||||||
content =
|
|
||||||
`${beforeSectionMarker}\n${sectionContent.trimStart()}\n${afterSectionMarker}`.trimEnd() +
|
|
||||||
'\n';
|
|
||||||
}
|
|
||||||
await fsAdapter.writeFile(memoryFilePath, content, 'utf-8');
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(
|
console.error(
|
||||||
`[MemoryTool] Error adding memory entry to ${memoryFilePath}:`,
|
`[MemoryTool] Error adding memory entry to ${memoryFilePath}:`,
|
||||||
|
|||||||
Reference in New Issue
Block a user