Skip to content

Commit ff06340

Browse files
jim80netclaude
andcommitted
fix: cap merged legacy+current memories to configured limit
Merging memories from both current and legacy tags could return up to double the configured limit. Apply slice after dedup in all three merge sites: initial context injection, list tool, and compaction fetch. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent a88b0bd commit ff06340

2 files changed

Lines changed: 6 additions & 3 deletions

File tree

src/index.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,8 @@ export const SupermemoryPlugin: Plugin = async (ctx: PluginInput) => {
141141
const currentMemories = projectMemoriesListResult.success ? (projectMemoriesListResult.memories || []) : [];
142142
const legacyMemories = legacyProjectResult.success ? (legacyProjectResult.memories || []) : [];
143143
const seenIds = new Set(currentMemories.map((m: any) => m.id));
144-
const mergedMemories = [...currentMemories, ...legacyMemories.filter((m: any) => !seenIds.has(m.id))];
144+
const mergedMemories = [...currentMemories, ...legacyMemories.filter((m: any) => !seenIds.has(m.id))]
145+
.slice(0, CONFIG.maxProjectMemories);
145146
const projectMemoriesList = { success: true, memories: mergedMemories };
146147

147148
const projectMemories = {
@@ -449,7 +450,8 @@ export const SupermemoryPlugin: Plugin = async (ctx: PluginInput) => {
449450
const currentMems = result.memories || [];
450451
const legacyMems = legacyListResult.success ? (legacyListResult.memories || []) : [];
451452
const listSeenIds = new Set(currentMems.map((m: any) => m.id));
452-
const memories = [...currentMems, ...legacyMems.filter((m: any) => !listSeenIds.has(m.id))];
453+
const memories = [...currentMems, ...legacyMems.filter((m: any) => !listSeenIds.has(m.id))]
454+
.slice(0, limit);
453455
return JSON.stringify({
454456
success: true,
455457
scope,

src/services/compaction.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,8 @@ export function createCompactionHook(
271271
const currentMems = result.memories || [];
272272
const legacyMems = legacyResult.success ? (legacyResult.memories || []) : [];
273273
const seenIds = new Set(currentMems.map((m: any) => m.id));
274-
const allMemories = [...currentMems, ...legacyMems.filter((m: any) => !seenIds.has(m.id))];
274+
const allMemories = [...currentMems, ...legacyMems.filter((m: any) => !seenIds.has(m.id))]
275+
.slice(0, CONFIG.maxProjectMemories);
275276
return allMemories.map((m: any) => m.summary || m.content || "").filter(Boolean);
276277
} catch (err) {
277278
log("[compaction] failed to fetch project memories", { error: String(err) });

0 commit comments

Comments
 (0)