
    i                        d dl mZ d dlmZmZ d dlmZmZmZm	Z	 d dl
mZmZ  G d de      Z G d de      Z G d	 d
e      Zy)    )annotations)ListOptional)	AIMessageBaseMessageHumanMessageSystemMessage)	BaseModelFieldc                       e Zd ZU dZdZded<   y)MessageMetadataz-Metadata for a message including token countsr   intinput_tokensN)__name__
__module____qualname____doc__r   __annotations__     Q/Users/mibo/.openclaw/workspace/data/TuriX-CUA/src/agent/message_manager/views.pyr   r   	   s    4sr   r   c                  8    e Zd ZU dZded<    ee      Zded<   y)ManagedMessagezA message with its metadatar   messagedefault_factoryr   metadataN)r   r   r   r   r   r   r   r   r   r   r   r   r      s    "
"?C?Cr   r   c                  P    e Zd ZU dZ ee      Zded<   dZded<   ddd	Z	ddd
Z
y)MessageHistoryz+Container for message history with metadatar   zList[ManagedMessage]messagesr   r   total_tokensNc                    |'| j                   j                  t        ||             n'| j                   j                  |t        ||             | xj                  |j
                  z  c_        y)z$Add message with metadata to historyN)r   r   )r    appendr   insertr!   r   )selfr   r   positions       r   add_messagezMessageHistory.add_message    sS    ==wJK==.8"TUx,,,r   c                    | j                   rE| j                   j                  |      }| xj                  |j                  j                  z  c_        yy)z Remove last message from historyN)r    popr!   r   r   )r%   indexmsgs      r   remove_messagezMessageHistory.remove_message(   s=    	]]			5	!3111 r   )N)r   r   r   r   r&   z
int | NonereturnNone))r*   r   r-   r.   )r   r   r   r   r   listr    r   r!   r'   r,   r   r   r   r   r      s)    2"'"==s-2r   r   N)
__future__r   typingr   r   langchain_core.messagesr   r   r   r	   pydanticr
   r   r   r   r   r   r   r   <module>r5      s:    " ! W W %i DY D2Y 2r   