diff --git a/aider/sendchat.py b/aider/sendchat.py index 59f67c53e..379ec62d7 100644 --- a/aider/sendchat.py +++ b/aider/sendchat.py @@ -19,16 +19,24 @@ RETRY_TIMEOUT = 60 def sanity_check_messages(messages): """Check if messages alternate between user and assistant roles. System messages can be interspersed anywhere. + Also verifies the last non-system message is from the user. Returns True if valid, False otherwise.""" last_role = None + last_non_system_role = None + for msg in messages: role = msg.get("role") if role == "system": continue + if last_role and role == last_role: return False + last_role = role - return True + last_non_system_role = role + + # Ensure last non-system message is from user + return last_non_system_role == "user" def send_completion(