diff --git a/lib/ai/runtime/recent-dialogue-memory.ts b/lib/ai/runtime/recent-dialogue-memory.ts index fa8dbd113..b6b5640fd 100644 --- a/lib/ai/runtime/recent-dialogue-memory.ts +++ b/lib/ai/runtime/recent-dialogue-memory.ts @@ -91,20 +91,20 @@ export function buildRecentDialogueMemory(params: { const maxCharsPerEntry = Math.max(80, Math.min(500, params.maxCharsPerEntry || 220)); const maxTotalChars = Math.max(160, Math.min(1600, params.maxTotalChars || 900)); - const sourceEntries = messages - .slice(-maxSourceMessages) - .map((message) => { - const role = message.role === "assistant" ? "assistant" : message.role === "user" ? "user" : null; - if (!role) return null; - const content = getMessageText(message, maxCharsPerEntry); - if (!content) return null; - return { - role, - content, - messageId: message.id, - } satisfies RecentDialogueMemoryEntry; - }) - .filter((entry): entry is RecentDialogueMemoryEntry => Boolean(entry)); + const sourceEntries: RecentDialogueMemoryEntry[] = []; + for (const message of messages.slice(-maxSourceMessages)) { + const role = message.role === "assistant" ? "assistant" : message.role === "user" ? "user" : null; + if (!role) continue; + + const content = getMessageText(message, maxCharsPerEntry); + if (!content) continue; + + sourceEntries.push({ + role, + content, + messageId: message.id, + }); + } const preferredEntries = isRecallRequest && !assistantRecall