@@ -93,23 +93,38 @@ export const continueAction: Action = {
93
93
unique : false ,
94
94
} ) ;
95
95
96
- // First check if we have a user response after our last CONTINUE
97
96
const sortedMessages = recentMessagesData . sort ( ( a , b ) =>
98
97
( b . createdAt || 0 ) - ( a . createdAt || 0 )
99
98
) ;
100
99
101
100
const lastUserMessage = sortedMessages . find ( m => m . userId !== runtime . agentId ) ;
102
101
const lastAgentMessage = sortedMessages . find ( m => m . userId === runtime . agentId ) ;
102
+ const currentTime = Date . now ( ) ;
103
103
104
- // If the most recent message is from a user and came after our last CONTINUE,
105
- // we shouldn't continue again
104
+ // NEW: Timing check to prevent rapid responses
105
+ if ( lastAgentMessage &&
106
+ ( currentTime - lastAgentMessage . createdAt ) < 500 ) {
107
+ elizaLogger . info ( `[CONTINUE] Blocking - Too soon after last message` , {
108
+ timeSinceLastMessage : currentTime - lastAgentMessage . createdAt
109
+ } ) ;
110
+ return false ;
111
+ }
112
+
113
+ // NEW: Check for duplicate responses to same message
114
+ if ( lastAgentMessage ?. content ?. inReplyTo === message . id ) {
115
+ elizaLogger . info ( `[CONTINUE] Blocking - Already responded to this message` ) ;
116
+ return false ;
117
+ }
118
+
119
+ // EXISTING: Check for user response after CONTINUE
106
120
if ( lastUserMessage && lastAgentMessage &&
107
121
lastUserMessage . createdAt > lastAgentMessage . createdAt &&
108
122
( lastAgentMessage . content as Content ) . action === 'CONTINUE' ) {
123
+ elizaLogger . info ( `[CONTINUE] Blocking - User has already responded to previous CONTINUE` ) ;
109
124
return false ;
110
125
}
111
126
112
- // Validation for consecutive CONTINUEs
127
+ // EXISTING: Validation for consecutive CONTINUEs
113
128
const agentMessages = recentMessagesData . filter (
114
129
( m : { userId : any } ) => m . userId === runtime . agentId
115
130
) ;
@@ -122,6 +137,7 @@ export const continueAction: Action = {
122
137
( m . content as Content ) . action === "CONTINUE"
123
138
) ;
124
139
if ( allContinues ) {
140
+ elizaLogger . info ( `[CONTINUE] Blocking - Too many consecutive continues` ) ;
125
141
return false ;
126
142
}
127
143
}
0 commit comments