@@ -711,28 +711,29 @@ export class AgentBlockHandler implements BlockHandler {
711711
712712 // 2. Handle native memory: seed on first run, then fetch and append new user input
713713 if ( memoryEnabled && ctx . workspaceId ) {
714- const hasExisting = await memoryService . hasMemory ( ctx . workspaceId , inputs . conversationId ! )
715-
716- if ( ! hasExisting && conversationMessages . length > 0 ) {
717- await memoryService . seedMemory ( ctx , inputs , conversationMessages )
718- }
719-
720714 const memoryMessages = await memoryService . fetchMemoryMessages ( ctx , inputs )
715+ const hasExisting = memoryMessages . length > 0
721716
722- messages . push ( ...memoryMessages )
723-
724- // When memory exists, append the new user message from conversationMessages
725- // (the User field in the agent config, e.g. <start.input>)
726- if ( hasExisting && conversationMessages . length > 0 ) {
727- const latestUserFromInput = conversationMessages . filter ( ( m ) => m . role === 'user' ) . pop ( )
728- if ( latestUserFromInput ) {
729- const lastUserInMemory = memoryMessages . filter ( ( m ) => m . role === 'user' ) . pop ( )
730- const isNewUserMessage =
731- ! lastUserInMemory || lastUserInMemory . content !== latestUserFromInput . content
717+ if ( ! hasExisting && conversationMessages . length > 0 ) {
718+ const taggedMessages = conversationMessages . map ( ( m ) =>
719+ m . role === 'user' ? { ...m , executionId : ctx . executionId } : m
720+ )
721+ await memoryService . seedMemory ( ctx , inputs , taggedMessages )
722+ messages . push ( ...taggedMessages )
723+ } else {
724+ messages . push ( ...memoryMessages )
732725
733- if ( isNewUserMessage ) {
734- messages . push ( latestUserFromInput )
735- await memoryService . appendToMemory ( ctx , inputs , latestUserFromInput )
726+ if ( hasExisting && conversationMessages . length > 0 ) {
727+ const latestUserFromInput = conversationMessages . filter ( ( m ) => m . role === 'user' ) . pop ( )
728+ if ( latestUserFromInput ) {
729+ const userMessageInThisRun = memoryMessages . some (
730+ ( m ) => m . role === 'user' && m . executionId === ctx . executionId
731+ )
732+ if ( ! userMessageInThisRun ) {
733+ const taggedMessage = { ...latestUserFromInput , executionId : ctx . executionId }
734+ messages . push ( taggedMessage )
735+ await memoryService . appendToMemory ( ctx , inputs , taggedMessage )
736+ }
736737 }
737738 }
738739 }
0 commit comments