
    /jp                    h    S SK Jr  S SKJrJr  SSKJrJr  S/r\ " S S5      5       r	 " S S5      r
g	)
    )annotations)	dataclassfield   )ChatContextChatItemRemoteChatContextc                  P    \ rS rSr% S\S'   \" SSS9rS\S'   \" SSS9rS\S	'   S
rg)_RemoteChatItem
   r   itemNF)defaultrepr_RemoteChatItem | None_prev_next )	__name__
__module____qualname____firstlineno____annotations__r   r   r   __static_attributes__r       W/app/agent/.venv/lib/python3.13/site-packages/livekit/agents/llm/remote_chat_context.pyr   r   
   s+    
N$)$U$CE!C$)$U$CE!Cr   r   c                  F    \ rS rSrS	S jrS
S jrSS jrSS jrSS jrSr	g)r	      c                .    S U l         S U l        0 U l        g N)_head_tail_id_to_item)selfs    r   __init__RemoteChatContext.__init__   s    -1
-1
79r   c                    / nU R                   nUb,  UR                  UR                  5        UR                  nUb  M,  [	        US9$ )N)items)r    appendr   r   r   )r#   r'   current_nodes      r   to_chat_ctxRemoteChatContext.to_chat_ctx   sH     "zz&LL**+'--L & ''r   c                8    U R                   R                  U5      $ r   )r"   get)r#   item_ids     r   r-   RemoteChatContext.get    s    ##G,,r   c                   UR                   nX0R                  ;   a  [        SU S35      e[        US9nUcJ  U R                  b"  U R                  Ul        X@R                  l        OX@l        X@l        X@R                  U'   gU R                  R                  U5      nUc  [        SU S35      eXTl        UR
                  Ul        XEl        UR
                  b  XDR
                  l        OX@l        X@R                  U'   g)zp
Insert `message` after the node with ID `previous_item_id`.
If `previous_item_id` is None, insert at the head.
zItem with ID z already exists.)r   Nzprevious_item_id `` not found)	idr"   
ValueErrorr   r    r   r   r!   r-   )r#   previous_item_idmessager.   new_node	prev_nodes         r   insertRemoteChatContext.insert#   s    
 **&&&}WI5EFGG"0#zz%!%#+

 %
!J(0W%$$(()9:	12B1C;OPP""">>%#+NN !J$,!r   c                   U R                   R                  U5      nUc  [        SU S35      eUR                  nUR                  nU R
                  U:X  a%  X@l        U R
                  b  S U R
                  l        O	Ub  XCl        U R                  U:X  a%  X0l        U R                  b  S U R                  l        O	Ub  X4l        U R                   U	 g )Nz	item_id `r1   )r"   r-   r3   r   r   r    r!   )r#   r.   noder7   	next_nodes        r   deleteRemoteChatContext.deleteJ   s    ##G,<y	=>>JJ	JJ	::"Jzz%#'

 $"+::"Jzz%#'

 $"+W%r   )r    r"   r!   N)returnNone)r?   r   )r.   strr?   r   )r4   z
str | Noner5   r   r?   r@   )r.   rA   r?   r@   )
r   r   r   r   r$   r*   r-   r8   r=   r   r   r   r   r	   r	      s    :
(-%-N&r   N)
__future__r   dataclassesr   r   chat_contextr   r   __all__r   r	   r   r   r   <module>rF      s>    " ( /
 D D DQ& Q&r   