
    	D,j>                     *    d dl mZ d dlmZ d Zd ZdS )    )dump)format_messagesc                     d}d}| D ]K}|                     d          }|dk    r|r'||k    r!t          |           }t          d|z             |}|}L|dk    S )zCheck 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.Nrolesystemz3Messages don't properly alternate user/assistant:

user)getr   
ValueError)messages	last_rolelast_non_system_rolemsgr   turnss         ]/home/rurouni/.local/share/uv/tools/aider-chat/lib/python3.11/site-packages/aider/sendchat.pysanity_check_messagesr      s    
 I 
$ 
$wwv8 	^**#H--ETW\\]]]	#  6))    c                     | s| S g }d}| D ]k}|                     d          }||k    r7|dk    r|                    ddd           n|                    ddd           |                    |           |}l|S )aH  Ensure messages alternate between 'assistant' and 'user' roles.

    Inserts empty messages of the opposite role when consecutive messages
    of the same role are found.

    Args:
        messages: List of message dictionaries with 'role' and 'content' keys.

    Returns:
        List of messages with alternating roles.
    Nr   r   	assistant )r   content)r	   append)r   fixed_messages	prev_roler   current_roles        r   ensure_alternating_rolesr      s      NI ! !wwv 9$$v%%%%{r&J&JKKKK%%v"&E&EFFFc""" 		r   N)
aider.dumpr   aider.utilsr   r   r    r   r   <module>r      sQ          ' ' ' ' ' '* * *0         r   