@@ -18,10 +18,7 @@ import {
1818 type Logger ,
1919 type MemoryMode ,
2020} from "../shared"
21- import type {
22- SupermemoryVoltAgent ,
23- VoltAgentMessage ,
24- } from "./types"
21+ import type { SupermemoryVoltAgent , VoltAgentMessage } from "./types"
2522
2623/**
2724 * Context for Supermemory middleware operations.
@@ -212,7 +209,11 @@ export const enhanceMessagesWithMemories = async (
212209 const cachedMemories = ctx . memoryCache . get ( turnKey )
213210 if ( ! isNewTurn && cachedMemories ) {
214211 ctx . logger . debug ( "Using cached memories" , { turnKey } )
215- return injectMemoriesIntoMessages ( messagesToEnhance , cachedMemories , ctx . logger )
212+ return injectMemoriesIntoMessages (
213+ messagesToEnhance ,
214+ cachedMemories ,
215+ ctx . logger ,
216+ )
216217 }
217218
218219 ctx . logger . info ( "Starting memory search" , {
@@ -277,8 +278,13 @@ export const enhanceMessagesWithMemories = async (
277278
278279 // Hybrid search returns both memory entries (`memory` field) and
279280 // document chunks (`chunk` field). Handle both.
281+ type SearchResult = {
282+ memory ?: string
283+ chunk ?: string
284+ metadata ?: Record < string , unknown >
285+ }
280286 const formattedMemories = response . results
281- . map ( ( result : any ) => {
287+ . map ( ( result : SearchResult ) => {
282288 const text = result . memory || result . chunk
283289 return text ? `- ${ text } ` : null
284290 } )
@@ -289,7 +295,10 @@ export const enhanceMessagesWithMemories = async (
289295 ? ctx . promptTemplate ( {
290296 userMemories : "" ,
291297 generalSearchMemories : formattedMemories ,
292- searchResults : response . results as any ,
298+ searchResults : response . results as Array < {
299+ memory : string
300+ metadata ?: Record < string , unknown >
301+ } > ,
293302 } )
294303 : `The following are relevant memories and context about this user retrieved from previous interactions. Use these to personalize your response:\n\n${ formattedMemories } `
295304 } else {
@@ -328,12 +337,20 @@ const injectMemoriesIntoMessages = (
328337 if ( systemMessageIndex !== - 1 ) {
329338 logger . debug ( "Added memories to existing system message" )
330339 const newMessages = [ ...messages ]
331- const systemMessage = newMessages [ systemMessageIndex ] !
340+ const systemMessage = newMessages [ systemMessageIndex ]
341+ if ( ! systemMessage ) {
342+ return messages
343+ }
332344
333345 // Extract existing text from parts (UIMessage format) or content fallback
334- const parts = ( systemMessage as any ) . parts as Array < { type : string ; text ?: string } > | undefined
346+ const parts = (
347+ systemMessage as { parts ?: Array < { type : string ; text ?: string } > }
348+ ) . parts
335349 const existingContent = parts
336- ? parts . filter ( ( p ) => p . type === "text" ) . map ( ( p ) => p . text || "" ) . join ( "\n" )
350+ ? parts
351+ . filter ( ( p ) => p . type === "text" )
352+ . map ( ( p ) => p . text || "" )
353+ . join ( "\n" )
337354 : typeof systemMessage . content === "string"
338355 ? systemMessage . content
339356 : ""
@@ -345,7 +362,7 @@ const injectMemoriesIntoMessages = (
345362 content : newContent ,
346363 // Update parts array to match - this is what the LLM actually reads
347364 parts : [ { type : "text" , text : newContent } ] ,
348- } as any
365+ } as VoltAgentMessage
349366 return newMessages
350367 }
351368
@@ -356,7 +373,7 @@ const injectMemoriesIntoMessages = (
356373 role : "system" as const ,
357374 content : memories ,
358375 parts : [ { type : "text" , text : memories } ] ,
359- } as any ,
376+ } as VoltAgentMessage ,
360377 ...messages ,
361378 ]
362379}
0 commit comments