+
    ~jz              
      ^  a  0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIHtHt ^ RI	H
t
HtHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^R
IHtHt ^RIHtHtHtHtH t H!t!H"t"H#t# ^RI$H%t% ^RI&H't'H(t(H)t)H*t*H+t+ ^RI,H-t- ^RI.H/t/H0t0 ^RI1H2t2H3t3H4t4H5t5H6t6H7t7H8t8H9t9H:t: ^RI;H<t< ]'       d   ^RI=H>t>H?t? ^RI@HAtA ^RIHBtBHCtC ^RIDHEtE RtF ! R R]4      tG ! R R]G4      tH^tIR5tJ ! R R]G4      tKR]P                  R]P                  R]P                  R ]P                  R!]P                  /tQR"]RR#&   R!]P                  R]P                  R$]P                  /tVR%]RR&&   R6tW]/P                  ]P                  P                  ]/P                  ]P                  P                  ]/P                  ]P                  P                  ]/P                  ]P                  P                  ]/P                  ]P                  P                  /tcR']RR(&   R) R* ltdR+ R, lteR- R. ltfR/ R0 ltg ! R1 R24      thR3 R4 ltiR# )7    )annotationsN)ABCabstractmethod)AsyncIteratorMappingSequence)TYPE_CHECKINGAny)Duration)	Timestamp)rtc)agent_session)llmutils)AgentConfigUpdateAgentHandoffChatMessageFunctionCallFunctionCallOutputFunctionToolRawFunctionToolToolset)logger)AgentSessionUsageInterruptionModelUsageLLMModelUsageSTTModelUsageTTSModelUsage)__version__)AMDCategoryAMDPredictionEvent)	
AgentStateAgentStateChangedEventConversationItemAddedEvent
ErrorEventFunctionToolsExecutedEventSessionUsageUpdatedEventUserInputTranscribedEvent	UserStateUserStateChangedEvent)	RunResult)TcpAudioInputTcpAudioOutput)OverlappingSpeechEvent)AgentSessionAgentSessionOptions)TextInputCallbackzlk.agent.sessionc                      ] tR t^<t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R	 R
 l4       t	Rt
R# )SessionTransportc                   V ^8  d   QhRR/#    returnNone )formats   "x/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/livekit/agents/voice/remote_session.py__annotate__SessionTransport.__annotate__>       &&T&    c                	   "   R # 5iNr9   selfs   &r;   startSessionTransport.start=        #&   c                    V ^8  d   QhRRRR/# r6   msgagent_pb.AgentSessionMessager7   r8   r9   )r:   s   "r;   r<   r=   @   s    PP&BPtPr?   c                	   "   R # 5irA   r9   )rC   rJ   s   &&r;   send_messageSessionTransport.send_message?   s     MPrG   c                   V ^8  d   QhRR/# r5   r9   )r:   s   "r;   r<   r=   B   r>   r?   c                	   "   R # 5irA   r9   rB   s   &r;   closeSessionTransport.closeA   rF   rG   c                   V ^8  d   QhRR/# r6   r7   z+AsyncIterator[agent_pb.AgentSessionMessage]r9   )r:   s   "r;   r<   r=   D   s    KKFKr?   c                	    R # rA   r9   rB   s   &r;   	__aiter__SessionTransport.__aiter__C   s    HKr?   c                   V ^8  d   QhRR/# r6   r7   rK   r9   )r:   s   "r;   r<   r=   F   s    BB!=Br?   c                	   "   R # 5irA   r9   rB   s   &r;   	__anext__SessionTransport.__anext__E   s     ?BrG   r9   N)__name__
__module____qualname____firstlineno__r   rD   rM   rQ   rV   r[   __static_attributes__r9   r?   r;   r3   r3   <   sH    & &P P& &K KB Br?   r3   c                      ] tR t^ItRR R llt]R R l4       t]P                  R R l4       tR R	 ltR
 R lt	R R lt
R R ltR R ltR R ltR R ltRtR# )RoomSessionTransportNc               $    V ^8  d   QhRRRRRR/# )r6   roomzrtc.Roomremote_identity
str | Noner7   r8   r9   )r:   s   "r;   r<   !RoomSessionTransport.__annotate__J   s!     5 5X 5
 5d 5r?   c                	    Wn         W n        \        P                  P	                  4       V n        R V n        \        4       V n        R# FN)	_room_remote_identityr   aioChan_recv_ch_handler_registeredset_tasks)rC   re   rf   s   &&&r;   __init__RoomSessionTransport.__init__J   s0    
 /FKiinnFV#( /2ur?   c                   V ^8  d   QhRR/# )r6   r7   rg   r9   )r:   s   "r;   r<   rh   R   s     % % %r?   c                	    V P                   # rA   rl   rB   s   &r;   rf   $RoomSessionTransport.remote_identityQ   s    $$$r?   c                    V ^8  d   QhRRRR/# )r6   valuerg   r7   r8   r9   )r:   s   "r;   r<   rh   V   s     & &Z &D &r?   c                	    Wn         R # rA   rw   )rC   rz   s   &&r;   rf   rx   U   s     %r?   c                   V ^8  d   QhRR/# r5   r9   )r:   s   "r;   r<   rh   Y   s     ( (T (r?   c                	   "   V P                   '       d   R # V P                  P                  \        V P                  4       RV n         R # 5iNT)rp   rk   register_byte_stream_handlerTOPIC_SESSION_MESSAGES_on_byte_streamrB   s   &r;   rD   RoomSessionTransport.startY   s7     ###

//0FH\H\]#' s   AA
c               $    V ^8  d   QhRRRRRR/# )r6   readerrtc.ByteStreamReaderparticipant_identitystrr7   r8   r9   )r:   s   "r;   r<   rh   _   s$     4 4&: 4RU 4Z^ 4r?   c                	   V P                   '       d   W P                   8w  d   R # \        P                  ! V P                  V4      4      pV P                  P                  V4       VP                  V P                  P                  4       R # rA   )rl   asynciocreate_task_read_streamrr   addadd_done_callbackdiscard)rC   r   r   tasks   &&& r;   r   $RoomSessionTransport._on_byte_stream_   s`       %9=R=R%R""4#4#4V#<=t{{223r?   c                    V ^8  d   QhRRRR/# )r6   r   r   r7   r8   r9   )r:   s   "r;   r<   rh   f   s     O O)= O$ Or?   c                	  "    . pV  R j  xL
  pVP                  V4       K   LDRP                  T4      p\        P                  ! 4       pTP	                  T4       T P
                  P                  T4       R #   \        P                  P                   d     R # \         d$   p\        P                  ! RTR7        R p?R # R p?ii ; i5i)Nr?   z$failed to read binary stream messageexc_info)appendjoinagent_pbAgentSessionMessageParseFromStringro   send_nowaitr   rm   
ChanClosed	Exceptionr   warning)rC   r   chunkschunkdatarJ   es   &&     r;   r   !RoomSessionTransport._read_streamf   s     	O"$F% % %ee$%v88F#D..0C%MM%%c*yy## 	 	ONNAANN	Os[   CA< '%'A< 'AA< :C<CCC'C(C CCCc                    V ^8  d   QhRRRR/# rI   r9   )r:   s   "r;   r<   rh   t   s     R R&B Rt Rr?   c                	@  "   V P                   P                  '       g!   V P                  P                  4       '       g   R #  VP	                  4       pV P
                  '       d   V P
                  .MR pV P                  P                  P                  \        P                  ! R4      \        VR7      G R j  xL
 pVP                  V4      G R j  xL
  VP                  4       G R j  xL
  R #  L7 L  L
  \         d    \        P                  ! RRR7        R # i ; i5i)NAS_)nametopicdestination_identitiesz$failed to send binary stream messageTr   )ro   closedrk   isconnectedSerializeToStringrl   local_participantstream_bytesr   	shortuuidr   writeacloser   r   r   )rC   rJ   r   destwriters   &&   r;   rM   !RoomSessionTransport.send_messaget   s     ==tzz'='='?'?	R((*D.2.C.C.CD))*D::77DD__U+,'+ E  F
 ,,t$$$--/!!
 %! 	RNNADQQ	Rsk   <DD!C4 $AC4 6C.7C4 C0C4 'C2(C4 ,D.C4 0C4 2C4 4#DDDDc                   V ^8  d   QhRR/# r5   r9   )r:   s   "r;   r<   rh      s     - -T -r?   c                	  "   V P                   P                  '       d   R # V P                   P                  4        \        P                  P
                  ! V P                  !  G R j  xL
  V P                  P                  4        V P                  '       d*    V P                  P                  \        4       RV n        R # R #  L[  \        \        3 d     L i ; i5iNF)ro   r   rQ   r   rm   cancel_and_waitrr   clearrp   rk   unregister_byte_stream_handlerr   
ValueErrorAttributeErrorrB   s   &r;   rQ   RoomSessionTransport.close   s     ==ii''555###

99:PQ (-D$ $ 	6
 / s6   A$C&C'/CC 7CCCCCc                   V ^8  d   QhRR/# rT   r9   )r:   s   "r;   r<   rh      s     ) )F )r?   c                	6    V P                   P                  4       # rA   )ro   rV   rB   s   &r;   rV   RoomSessionTransport.__aiter__   s    }}&&((r?   c                   V ^8  d   QhRR/# rY   r9   )r:   s   "r;   r<   rh      s     / /!= /r?   c                	R   "   V P                   P                  4       G R j  xL
 #  L5irA   )ro   r[   rB   s   &r;   r[   RoomSessionTransport.__anext__   s     ]],,....s   '%')rp   ro   rl   rk   rr   rA   )r]   r^   r_   r`   rs   propertyrf   setterrD   r   r   rM   rQ   rV   r[   ra   r9   r?   r;   rc   rc   I   s_    5 % % & &(4OR -)/ /r?   rc   c                  j    ] tR t^tR R ltR R ltR R ltR R ltR	 R
 ltR R lt	R R lt
RtR# )TcpSessionTransportc               $    V ^8  d   QhRRRRRR/# )r6   hostr   portintr7   r8   r9   )r:   s   "r;   r<    TcpSessionTransport.__annotate__   s!     < <S < < <r?   c                	V    Wn         W n        R V n        R V n        RV n        R V n        R # r   )_host_port_reader_writer_closed_loop)rC   r   r   s   &&&r;   rs   TcpSessionTransport.__init__   s(    

48487;
r?   c                   V ^8  d   QhRR/# r5   r9   )r:   s   "r;   r<   r      s     	0 	0T 	0r?   c                	\  "   \         P                  ! V P                  V P                  4      G R j  xL
 w  rVP                  P                  R4      pVe,   ^ R IpVP                  VP                  VP                  ^4       Wn
        W n        \         P                  ! 4       V n        R #  Lx5i)Nsocket)r   open_connectionr   r   	transportget_extra_infor   
setsockoptIPPROTO_TCPTCP_NODELAYr   r   get_running_loopr   )rC   r   r   sockr   s   &    r;   rD   TcpSessionTransport.start   s     &66tzz4::NN..x8OOF..0B0BAF--/
 Os   /B,B*A9B,c                    V ^8  d   QhRRRR/# rI   r9   )r:   s   "r;   r<   r      s     ' '&B 't 'r?   c                	  "   V P                   '       g   V P                  f   R # VP                  4       p\        P                  ! R\        V4      4      pV P                  P                  W2,           4       V P                  P                  P                  4       R8  d%   V P                  P                  4       G R j  xL
  R # R #  L5i)N>Ii   )
r   r   r   structpacklenr   r   get_write_buffer_sizedrain)rC   rJ   r   headers   &&  r;   rM    TcpSessionTransport.send_message   s     <<<4<</$$&T3t9-6=)<<!!779IE,,$$&&& F&s   B:C<C=	Cc                    V ^8  d   QhRRRR/# rI   r9   )r:   s   "r;   r<   r      s     E E+G ED Er?   c                	4   V P                   '       g   V P                  e   V P                  f   R # VP                  4       p\        P
                  ! R\        V4      4      V,           pV P                  P                  V P                  P                  V4       R # )Nr   )	r   r   r   r   r   r   r   call_soon_threadsafer   )rC   rJ   r   payloads   &&  r;   send_message_threadsafe+TcpSessionTransport.send_message_threadsafe   se    <<<4<</4::3E$$&++dCI.5

''(:(:GDr?   c                   V ^8  d   QhRR/# r5   r9   )r:   s   "r;   r<   r      s     	 	T 	r?   c                	  "   V P                   '       d   R # RV n         V P                  e@    V P                  P                  4        V P                  P                  4       G R j  xL
  R # R #  L  \        \
        3 d     R # i ; i5ir~   )r   r   rQ   wait_closedConnectionErrorOSErrorrB   s   &r;   rQ   TcpSessionTransport.close   sm     <<<<<#""$ll..000 $ 1#W- s:   *B7A/ $A-%A/ )B-A/ /B BBBc                   V ^8  d   QhRR/# rT   r9   )r:   s   "r;   r<   r      s      F r?   c                	    V # rA   r9   rB   s   &r;   rV   TcpSessionTransport.__aiter__   s    r?   c                   V ^8  d   QhRR/# rY   r9   )r:   s   "r;   r<   r      s      != r?   c                	~  "   V P                   '       g   V P                  f   \        h V P                  P                  \        4      G R j  xL
 p\        P                  ! RT4      ^ ,          pT\        8  d   \        P                  ! RT4       \        h T P                  P                  T4      G R j  xL
 p\        P                  ! 4       pTP!                  T4       T#  L  \
        P                  \        \        3 d	    \        R hi ; i LY  \
        P                  \        \        3 d	    \        R hi ; i5i)Nr   zTCP message too large: %d bytes)r   r   StopAsyncIterationreadexactly_TCP_HEADER_SIZEr   IncompleteReadErrorr   r   r   unpack_TCP_MAX_MESSAGE_SIZEr   errorr   r   r   )rC   r   lengthr   rJ   s   &    r;   r[   TcpSessionTransport.__anext__   s     <<<4<</$$	/<<334DEEF tV,Q/))LL:FC$$	/11&99D **,D!
! F++_gF 	/$$.	/ :++_gF 	/$$.	/sY   'D="C% C#C% AD=D 6D7D ;(D=#C% %(DD=D (D::D=)r   r   r   r   r   r   N)r]   r^   r_   r`   rs   rD   rM   r   rQ   rV   r[   ra   r9   r?   r;   r   r      s+    <	0'E	 r?   r   initializingidle	listeningthinkingspeakingz%dict[AgentState, agent_pb.AgentState]_AGENT_STATE_MAPawayz#dict[UserState, agent_pb.UserState]_USER_STATE_MAPz'dict[AMDCategory, agent_pb.AmdCategory]_AMD_CATEGORY_MAPc                    V ^8  d   QhRRRR/# )r6   toolszSequence[llm.Tool | Toolset]r7   z	list[str]r9   )r:   s   "r;   r<   r<     s      3 	 r?   c                $   . pV  F  p\        V\        \        ,          4      '       d(   VP                  VP                  P
                  4       KK  \        V\        4      '       g   Kc  VP                  \        VP                  4      4       K  	  V# rA   )

isinstancer   r   r   infor   r   extend_tool_namesr  )r  resulttools   &  r;   r  r    s`    FdL?:;;MM$))..)g&&MM+djj12	 
 Mr?   c                    V ^8  d   QhRRRR/# )r6   metricszMapping[str, Any] | Noner7   zagent_pb.MetricsReportr9   )r:   s   "r;   r<   r<     s     , ,7 ,<R ,r?   c                    V '       g   \         P                  ! 4       # \         Uu/ uF  qV 9   g   K  WV,          bK  	  pp\         P                  ! R/ VB # u upi )Nr9   )r   MetricsReport_METRICS_FIELDS)r  kkwargss   &  r;   _metrics_to_protor    sN    %%''%4E_Wmam_FE!!+F++ Fs
   AAc                    V ^8  d   QhRRRR/# )r6   itemzllm.ChatItemr7   zagent_pb.ChatContext.ChatItemr9   )r:   s   "r;   r<   r<     s     5+ 5+l 5+/L 5+r?   c           	     8   \        V \        4      '       Ed   R \        P                  R\        P                  R\        P
                  R\        P                  /pVP                  V P                  \        P                  4      p. pV P                  '       d:   VP                  \        P                  P                  V P                  R7      4       \        P                  ! V P                  VV\        V P                  4      R7      p\        P                  P!                  VR7      # \        V \"        4      '       da   \        P                  P!                  \        P"                  ! V P                  V P$                  V P&                  V P(                  R7      R7      # \        V \*        4      '       dV   \        P                  P!                  \        P*                  ! V P$                  V P,                  V P.                  R	7      R
7      # \        V \0        4      '       dV   \        P                  P!                  \        P0                  ! V P                  V P2                  V P4                  R7      R7      # \        V \6        4      '       du   \        P                  P!                  \        P6                  ! V P                  V P8                  V P:                  ;'       g    . V P<                  ;'       g    . R7      R7      # \        P                  P!                  4       # )	developersystemuser	assistant)text)idrolecontentr  message)r&  call_idr   	arguments)function_callr+  outputis_error)function_call_output)r&  old_agent_idnew_agent_id)agent_handoff)r&  instructionstools_addedtools_removed)agent_config_update)r  r   r   	DEVELOPERSYSTEMUSER	ASSISTANTgetr'  text_contentr   ChatContentr&  r  r  ChatContextChatItemr   r+  r   r,  r   r/  r0  r   r2  r3  r   r5  r6  r7  )r  role_mappb_roler(  pb_msgs   &    r;   _chat_item_to_protorE    sU   $$$++hooHMM++	
 ,,tyy(*<*<=NN8//;;ARAR;ST%%ww%dll3	
 ##,,V,<<	D,	'	'##,,"//77YY..	 - 
 	
 
D,	-	-##,,!)!<!<{{" - 
 	
 
D,	'	'##,,"//77!..!.. - 
 	
 
D+	,	,##,, ( : :77!.. ,,22"0066B	! - 
 	
 ((**r?   c                    V ^8  d   QhRRRR/# )r6   optsr0   r7   zdict[str, str]r9   )r:   s   "r;   r<   r<   O  s     
 
0 
^ 
r?   c                   R \        \        V P                  4      4      R\        \        V P                  4      4      R\        V P                  4      R\        V P
                  4      R\        \        V P                  4      4      R\        V P                  4      R\        V P                  4      R\        V P                  4      /# )endpointinginterruptionmax_tool_stepsuser_away_timeoutpreemptive_generationmin_consecutive_speech_delayuse_tts_aligned_transcriptivr_detection)
r   dictrI  rJ  rK  rL  rM  rN  rO  rP  )rG  s   &r;   _serialize_optionsrR  O  s    s4 0 012D!2!234#d112S!7!78T$*D*D%E!F&D,M,M(N$c$*I*I&JT//0	 	r?   c                     ] tR tRtR*R R lltR R ltR R ltR	 R
 ltR R ltR R lt	R R lt
R+R R lltR R ltR R ltR R ltR R ltR R ltR R ltR R  ltR! R" ltR# R$ ltR% R& ltR' R( ltR)tR# ),SessionHosti\  Nc               (    V ^8  d   QhRRRRRRRR/# )	r6   r   r3   audio_inputzTcpAudioInput | Noneaudio_outputzTcpAudioOutput | Noner7   r8   r9   )r:   s   "r;   r<   SessionHost.__annotate__]  s2     = =#= *= ,	=
 
=r?   c                	    Wn         W n        W0n        R V n        RV n        \
        P                  P                  4       V n        RV n	        R V n
        RV n        R# rj   )
_transport_audio_input_audio_output_started
_recv_taskr   rm   TaskSetrr   _session_events_registered_text_input_cb)rC   r   rV  rW  s   &&&&r;   rs   SessionHost.__init__]  sN     $')59ii'')-1"'8<r?   c                    V ^8  d   QhRRRR/# )r6   sessionr/   r7   r8   r9   )r:   s   "r;   r<   rX  m  s     0 0 0 0r?   c                	   Wn         V P                  '       g   R V n        VP                  RV P                  4       VP                  RV P                  4       VP                  RV P
                  4       VP                  RV P                  4       VP                  RV P                  4       VP                  RV P                  4       VP                  RV P                  4       VP                  RV P                  4       R	# R	# )
Tagent_state_changeduser_state_changedconversation_item_addeduser_input_transcribedfunction_tools_executedsession_usage_updatedoverlapping_speechr  N)r`  ra  on_on_agent_state_changed_on_user_state_changed_on_conversation_item_added_on_user_input_transcribed_on_function_tools_executed_on_session_usage_updated_on_overlapping_speech	_on_error)rC   re  s   &&r;   register_sessionSessionHost.register_sessionm  s    &&&&*D#JJ,d.J.JKJJ+T-H-HIJJ0$2R2RSJJ/1P1PQJJ0$2R2RSJJ.0N0NOJJ+T-H-HIJJw/ 'r?   c                    V ^8  d   QhRRRR/# )r6   text_input_cbr1   r7   r8   r9   )r:   s   "r;   r<   rX  z  s     , ,1B ,t ,r?   c                	    Wn         R # rA   )rb  )rC   rz  s   &&r;   register_text_inputSessionHost.register_text_inputz  s    +r?   c                   V ^8  d   QhRR/# r5   r9   )r:   s   "r;   r<   rX  }  s     A AT Ar?   c                	   "   V P                   '       d   R # RV n         V P                  P                  4       G R j  xL
  \        P                  ! V P                  4       4      V n        R #  L/5ir~   )r]  rZ  rD   r   r   
_recv_loopr^  rB   s   &r;   rD   SessionHost.start}  sL     ===oo##%%%!--doo.?@ 	&s   9A-A+0A-c                   V ^8  d   QhRR/# r5   r9   )r:   s   "r;   r<   rX    s     & &d &r?   c                	H  "   V P                   '       g   R # RV n         V P                  '       EdK   V P                  '       Ed8   RV n        V P                  P                  RV P                  4       V P                  P                  RV P
                  4       V P                  P                  RV P                  4       V P                  P                  RV P                  4       V P                  P                  RV P                  4       V P                  P                  RV P                  4       V P                  P                  RV P                  4       V P                  P                  R	V P                  4       V P                  '       d2   \        P                  P                  V P                  4      G R j  xL
  \        P                  P                  ! V P                   P"                  !  G R j  xL
  V P$                  P'                  4       G R j  xL
  R #  Lb L* L
5i)
NFrg  rh  ri  rj  rk  rl  rm  r  )r]  r`  ra  offro  rp  rq  rr  rs  rt  ru  rv  r^  r   rm   r   rr   tasksrZ  rQ   rB   s   &r;   r   SessionHost.aclose  sq    }}}===T444&+D#MM3T5Q5QRMM2D4O4OPMM79Y9YZMM68W8WXMM79Y9YZMM5t7U7UVMM2D4O4OPMMgt~~6???))++DOO<<<ii''):):;;;oo##%%% =;%sG   .H"H"EH",H"9H:9H"3H4!H"H H"H" H"c                   V ^8  d   QhRR/# r5   r9   )r:   s   "r;   r<   rX    s     N N$ Nr?   c                	  "    V P                     R j  xL
  pVP                  R4      '       dG   V P                  e7   V P                  P	                  V P                  VP                  4      4       Ke  Kg  VP                  R4      pV'       g   K  V P                  W!4       K   LDR #   \        P                   d     R # \         d    \        P                  ! RRR7        R # i ; i5i)Nrequestr*  z error processing session messageTr   )rZ  HasFieldr`  rr   r   _handle_request_safer  
WhichOneof_dispatch_transport_messager   CancelledErrorr   r   r   )rC   rJ   msg_types   &  r;   r  SessionHost._recv_loop  s     	N!__ H Hc<<	**}}0//0I0I#++0VW 1  #~~i8Hx88GH_ %% 	 	NNN=MM	Nsa   C+B* B'B%B'A5B* B* %B''B* (C+*C(?C+C(C($C+'C((C+c               $    V ^8  d   QhRRRRRR/# )r6   r  r   rJ   rK   r7   r8   r9   )r:   s   "r;   r<   rX    s#     9 9C 9>Z 9_c 9r?   c                	    VR 8X  d6   V P                   e(   V P                   P                  VP                  4       R# VR8X  d-   V P                  e   V P                  P	                  4        R# R# R# )rV  Naudio_playback_finished)r[  
push_framerV  r\  notify_playout_finished)rC   r  rJ   s   &&&r;   r  'SessionHost._dispatch_transport_message  s\    }$):):)F((922t7I7I7U668 8V2r?   c               $    V ^8  d   QhRRRRRR/# )r6   eventzagent_pb.AgentSessionEvent
created_atzfloat | Noner7   r8   r9   )r:   s   "r;   r<   rX    s)     C C/C=IC	Cr?   c                	Z   \        4       pTP                  \        Ve   TM\        P                  ! 4       R,          4      4       VP                  P                  V4       \        P                  ! VR7      pV P                  P                  V P                  P                  V4      4       R # )N    eA)r  )r   FromNanosecondsr   timer  CopyFromr   r   rr   r   rZ  rM   )rC   r  r  tsrJ   s   &&&  r;   _send_eventSessionHost._send_event  sv     [
3j.D
$))+Y\\]^!!"%**7 < <S ABr?   c                    V ^8  d   QhRRRR/# )r6   r  r#   r7   r8   r9   )r:   s   "r;   r<   rX    s     

 

-C 

 

r?   c           	     	H   \         P                  VP                  \        P                  4      p\         P                  VP
                  \        P                  4      pV P                  \        P                  ! \        P                  P                  VVR 7      R7      4       R# )	old_state	new_state)rg  N)	r	  r=  r  r   AS_IDLEr  r  AgentSessionEventAgentStateChangedrC   r  old_pbnew_pbs   &&  r;   ro  #SessionHost._on_agent_state_changed  sv    !%%eoox7G7GH!%%eoox7G7GH&&$,$>$>$P$P$$ %Q %	
r?   c                    V ^8  d   QhRRRR/# )r6   r  r*   r7   r8   r9   )r:   s   "r;   r<   rX    s     
 
,A 
d 
r?   c           	     	`   \         P                  VP                  \        P                  4      p\         P                  VP
                  \        P                  4      pV P                  \        P                  ! \        P                  P                  VVR 7      R7      VP                  R7       R# )r  )rh  )r  N)
r  r=  r  r   US_LISTENINGr  r  r  UserStateChangedr  r  s   &&  r;   rp  "SessionHost._on_user_state_changed  s     $$U__h6K6KL $$U__h6K6KL&&#+#=#=#N#N$$ $O $ '' 	 	
r?   c                    V ^8  d   QhRRRR/# )r6   r  r(   r7   r8   r9   )r:   s   "r;   r<   rX    s     
 
0I 
d 
r?   c           	     	    V P                  \        P                  ! \        P                  P                  VP                  VP
                  R 7      R7      4       R# ))
transcriptis_final)rj  N)r  r   r  UserInputTranscribedr  r  rC   r  s   &&r;   rr  &SessionHost._on_user_input_transcribed  sH    &&'/'A'A'V'V$//"^^ (W (	
r?   c                    V ^8  d   QhRRRR/# )r6   r  r$   r7   r8   r9   )r:   s   "r;   r<   rX    s     
 
1K 
PT 
r?   c                	T   \        VP                  \        \        ,          \        ,          \
        ,          \        ,          4      '       g   R # \        VP                  4      pV P                  \        P                  ! \        P                  P                  VR7      R7      4       R # )N)r  )ri  )r  r  r   r   r   r   r   rE  r  r   r  ConversationItemAdded)rC   r  	chat_items   && r;   rq  'SessionHost._on_conversation_item_added  s{    JJ,&);;lJM^^
 
 '

3	&&(0(B(B(X(X" )Y )	
r?   c                    V ^8  d   QhRRRR/# )r6   r  r&   r7   r8   r9   )r:   s   "r;   r<   rX    s     
 
1K 
PT 
r?   c           	     	   VP                    Uu. uF:  p\        P                  ! VP                  VP                  VP
                  R 7      NK<  	  ppVP                   Uu. uF@  pVf   K	  \        P                  ! VP
                  VP                  VP                  R7      NKB  	  ppV P                  \        P                  ! \        P                  P                  VVR7      R7      4       R# u upi u upi ))r   r,  r+  Nr.  )function_callsfunction_call_outputs)rk  )r  r   r   r   r,  r+  r  r   r/  r0  r  r  FunctionToolsExecuted)rC   r  fcpb_callsfco
pb_outputss   &&    r;   rs  'SessionHost._on_function_tools_executed  s     **
 + !!WW,,


 + 	 
 22
 3H''zz
 3 	 
 	&&(0(B(B(X(X#+*4 )Y )	
#

s   A C.C3*;C3c                    V ^8  d   QhRRRR/# )r6   r  r.   r7   r8   r9   )r:   s   "r;   r<   rX    s     L L,B Lt Lr?   c                	   \        4       pVP                  \        VP                  R ,          4      4       RpVP                  e6   \        4       pVP                  \        VP                  R ,          4      4       \
        P                  P                  VP                  VP                  VR7      pVe   VP                  P                  V4       V P                  \
        P                  ! VR7      4       R# )r  N)is_interruptiondetection_delaydetected_at)rm  )r   r  r   r  overlap_started_atr   r  OverlappingSpeechr  r  r  r  )rC   r  r  r  pbs   &&   r;   ru  "SessionHost._on_overlapping_speech  s    k##C(9(9C(?$@A/3##/!*..s53K3Kc3Q/RS''99!11!11# : 

 )!!**+=>33rJKr?   c                    V ^8  d   QhRRRR/# )r6   r  r!   r7   r8   r9   )r:   s   "r;   r<   rX    s     
 
(: 
t 
r?   c                	   \        4       pVP                  \        VP                  R ,          4      4       \        4       pVP                  \        VP                  R ,          4      4       V P                  \        P                  ! \        P                  P                  VV\        VP                  ,          VP                  VP                  R7      R7      4       R# )r  )speech_durationdelaycategoryreasonr  )amd_predictionN)r   r  r   r  r  r  r   r  AmdPredictionr  r  r  r  )rC   r  r  r  s   &&  r;   _on_amd_predictionSessionHost._on_amd_prediction  s    "*''E,A,AC,G(HI
c%++"345&&'99GG$3.u~~> <<$//  H  
	
r?   c                    V ^8  d   QhRRRR/# )r6   r  r'   r7   r8   r9   )r:   s   "r;   r<   rX  .  s     
 
/G 
D 
r?   c           	     	    V P                  \        P                  ! \        P                  P                  \	        VP
                  4      R 7      R7      4       R# ))usage)rl  N)r  r   r  SessionUsageUpdated_session_usage_to_protor  r  s   &&r;   rt  %SessionHost._on_session_usage_updated.  sD    &&&.&@&@&T&T1%++> 'U '	
r?   c                    V ^8  d   QhRRRR/# )r6   r  r%   r7   r8   r9   )r:   s   "r;   r<   rX  7  s     
 
z 
d 
r?   c           	     	    T P                  \        P                  ! \        P                  P                  VP                  '       d   \        VP                  4      MR R7      R7      4       R# )zUnknown errorr)  )r  N)r  r   r  Errorr  r   r  s   &&r;   rv  SessionHost._on_error7  sM    &&006605C, 7 	
r?   c                    V ^8  d   QhRRRR/# r6   reqzagent_pb.SessionRequestr7   r8   r9   )r:   s   "r;   r<   rX  @  s      .E $ r?   c                	  "    V P                  V4      G R j  xL
  R #  L  \         d    \        P                  ! RRRTP                  /R7        \
        P                  ! \
        P                  ! TP                  RR7      R7      pT P                  P                  T4      G R j  xL 
   R #   \         d      R # i ; ii ; i5i)Nzerror handling session requestT
request_id)r   extrazinternal error)r  r  response)
_handle_requestr   r   r   r  r   r   SessionResponserZ  rM   )rC   r  resps   && r;   r   SessionHost._handle_request_safe@  s     	&&s+++ 	NN0#S^^4
	33%55#&>>. oo224888 	s\   C! ! C! 0CAB0'B*(B0-C0C ;C<C?C  CCc                    V ^8  d   QhRRRR/# r  r9   )r:   s   "r;   r<   rX  T  s     d5 d5)@ d5T d5r?   c                	  "   V P                   f   Q hVP                  R4      '       dy   \        P                  ! \        P                  ! VP
                  \        P                  P                  4       R7      R7      pV P                  P                  V4      G R j  xL
  R # VP                  R4      '       d   V P                   P                  P                   Uu. uF  p\        V4      NK  	  pp\        P                  ! \        P                  ! VP
                  \        P                  P                  VR7      R7      R7      pV P                  P                  V4      G R j  xL
  R # VP                  R4      '       d   V P                   P                  pVP                  P                   Uu. uF  p\        V4      NK  	  pp\        P                  ! \        P                  ! VP
                  \        P                  P                  VP                   VP"                  \%        VP&                  4      VR7      R	7      R7      pV P                  P                  V4      G R j  xL
  R # VP                  R
4      '       Edx   . pR pVP(                  P*                  pV'       d   V P,                  eS   ^RIHp	 V P-                  V P                   V	! VR R R7      4      p
\2        P4                  ! V
4      '       d   V
G R j  xL
  Mz V P                   P7                  RR7      G R j  xL
   V P                   P;                  VR7      pVG R j  xL
  VP<                   Uu. uF  p\        VP>                  4      NK  	  pp\        P                  ! \        P                  ! VP
                  V\        P                  PE                  VR7      R7      R7      pV P                  P                  V4      G R j  xL
  R # VP                  R4      '       Ed   V P                   P                  p\G        4       pV P                   PH                  ;'       g    \J        PJ                  ! 4       pVPM                  \O        VR,          4      4       \        P                  ! \        P                  ! VP
                  \        P                  PQ                  \R        PU                  V P                   PV                  \        PX                  4      \Z        PU                  V P                   P\                  \        P^                  4      VP                   \a        V P                   Pb                  4      VR7      R7      R7      pV P                  P                  V4      G R j  xL
  R # VP                  R4      '       Edl   ^ RI2H3p V P                   Ph                  e7   V P                   Ph                  Pj                  Pm                  4       G R j  xL
 MR p. p. pV'       d   ^ RI7H8p VPr                   F4  pV! V4      pV! 4       pVPu                  V4       VPw                  V4       K6  	  VPx                   F4  pV! V4      pV! 4       pVPu                  V4       VPw                  V4       K6  	  \        P                  ! \        P                  ! VP
                  \        P                  P{                  VVR7      R7      R7      pV P                  P                  V4      G R j  xL
  R # VP                  R4      '       d   \G        4       pVPM                  \O        \J        PJ                  ! 4       R,          4      4       \        P                  ! \        P                  ! VP
                  \        P                  P}                  \        V P                   P                  4      VR7      R7      R7      pV P                  P                  V4      G R j  xL
  R # VP                  R4      '       d   \        P                  ! \        P                  ! VP
                  \        P                  P                  R\        R7      R 7      R7      pV P                  P                  V4      G R j  xL
  R # R #  ELu upi  ELBu upi  ELK EL EL  \8         d     ELi ; i EL~u upi   \@         d   p\C        T4      p R p?ELoR p?ii ; i EL ELi EL EL EL Ln5i)!Nping)r  pongr  get_chat_history)items)r  r  get_agent_info)r&  r5  r  chat_ctx)r  r  	run_input)TextInputEvent)r%  r  participantT)force)
user_input)r  r  r  get_session_stater  )agent_state
user_stateagent_idoptionsr  )r  r  get_rtc_stats)Struct)MessageToDict)publisher_statssubscriber_stats)r  r  get_session_usage)r  r  )r  r	  get_framework_infopython)sdksdk_version)r  r
  )Cr`  r  r   r   r  r  PongrZ  rM   historyr  rE  GetChatHistoryResponsecurrent_agentr  GetAgentInfoResponser&  r5  r  r  r  r%  rb  room_io.typesr  r   iscoroutine	interruptRuntimeErrorruneventsr  r   r   RunInputResponser   _started_atr  r  r   GetSessionStateResponser	  r=  r   r  r  r  r  rR  r  google.protobuf.struct_pb2r  _room_iore   r  google.protobuf.json_formatr  r  updater   r  GetRTCStatsResponseGetSessionUsageResponser  r  GetFrameworkInfoResponser   )rC   r  r  r  r  agent
items_listr  r%  r  	cb_resultr  evr   r  
started_atr  	rtc_statsr  r  r  sdsts   &&                      r;   r  SessionHost._handle_requestT  s    }}(((<<//!11"~~!11668D //..t444\\,--;?==;P;P;V;VW;V4(.;VEW//!11"~~%-%=%=%T%T# &U &D //..t444\\*++MM//E;@>>;O;OP;O4(.;OEP//!11"~~#+#;#;#P#P 88%*%7%7)%++6!&	 $Q $
D //..t444\\+&&>@J $E==%%D&&2= $ 3 3&DtN!I **955'"mm55D5AAA'26--2C2Ct2C2T$MS]]%[]r&9"''&B]
%[ //!11"~~&66GG( H D //..t444\\-..MM//E"J22AAdiikJ&&s:+;'<=//!11"~~&.&>&>&V&V$4$8$8 MM55$,,% $3#6#6 MM44$11$ "' 24==3H3H I#- 'W 'D$ //..t444\\/**9 ==))5 mm,,11??AAA 
 -/O-/E"22A%a(ABIIaL#**2.	 3
 #33A%a(ABIIaL$++B/	 4 //!11"~~"*":":"N"N(7)9 #O #D //..t444\\-.."J&&s499;+<'=>//!11"~~&.&>&>&V&V5dmm6I6IJ#- 'W 'D //..t444\\.////!11"~~'/'?'?'X'X$$/ (Y (D //..t444 0a 5 X 5 Q 5 ( B' 
 %%[$ ' #A' 54 5 B: 5 5 5s  'dA1dbd9"db!/A5d$b&%d.d0b)Bd#b.$d!d$Ad9d>b1?db7 $b4%b7 *!c c	c c<c >A4d2c53d<dEdc8d.Ad=c;>dDdc>d0Cd?d dA8dd	d!d)d1d4b7 7cdcd	c c c2c-'d-c22d8d;d>ddd)	r[  r\  ra  r^  r`  r]  rr   rb  rZ  )NNrA   )r]   r^   r_   r`   rs   rw  r|  rD   r   r  r  r  ro  rp  rr  rq  rs  ru  r  rt  rv  r  r  ra   r9   r?   r;   rT  rT  \  sl    = 0,A&,N9C





6L&
*

(d5 d5r?   rT  c                    V ^8  d   QhRRRR/# )r6   r  r   r7   zagent_pb.AgentSessionUsager9   )r:   s   "r;   r<   r<     s      ;@ ;@#4 ;@9S ;@r?   c                \   . pV P                    EF  p\        V\        4      '       d   VP                  \        P
                  ! \        P                  ! VP                  VP                  VP                  VP                  VP                  VP                  VP                  VP                  VP                  VP                  VP                   VP"                  VP$                  VP&                  R 7      R7      4       K  \        V\(        4      '       d   VP                  \        P
                  ! \        P(                  ! VP                  VP                  VP                  VP                   VP*                  VP,                  R7      R7      4       EK  \        V\.        4      '       du   VP                  \        P
                  ! \        P.                  ! VP                  VP                  VP                  VP                   VP,                  R7      R7      4       EK  \        V\0        4      '       g   EK(  VP                  \        P
                  ! \        P0                  ! VP                  VP                  VP2                  R7      R7      4       EK  	  \        P4                  ! VR7      # )	)providermodelinput_tokensinput_cached_tokensinput_audio_tokensinput_cached_audio_tokensinput_text_tokensinput_cached_text_tokensinput_image_tokensinput_cached_image_tokensoutput_tokensoutput_audio_tokensoutput_text_tokenssession_duration)r   )r/  r0  r1  r9  characters_countaudio_duration)tts)r/  r0  r1  r9  r>  )stt)r/  r0  total_requests)rJ  )model_usage)rB  r  r   r   r   
ModelUsager/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r   r=  r>  r   r   rA  r   )r  model_usagesmus   &  r;   r  r    s   .0Lb-((## ..!# hh%'__,.,B,B+-+@+@242N2N*,*>*>131L1L+-+@+@242N2N&(&6&6,.,B,B+-+@+@)+)<)<( M**## ..!# hh%'__&(&6&6)+)<)<')'8'8	 M**## ..!# hh%'__&(&6&6')'8'8
 233##!)!@!@!# hh')'8'8"a  r %%,??r?   i   )transcription_delayend_of_turn_delayon_user_turn_completed_delayllm_node_ttfttts_node_ttfbe2e_latency)j__conditional_annotations__
__future__r   r   r   r  abcr   r   collections.abcr   r   r   typingr	   r
   google.protobuf.duration_pb2r   google.protobuf.timestamp_pb2r   livekitr   livekit.protocol.agent_pbr   r    r   r   r   r   r   r   r   r   r   r   logr   r  r   r   r   r   r   versionr   	voice.amdr    r!   r  r"   r#   r$   r%   r&   r'   r(   r)   r*   
run_resultr+   cli.tcp_consoler,   r-   inference.interruptionr.   r/   r0   r  r1   r   r3   rc   r   r   r   AS_INITIALIZINGr  AS_LISTENINGAS_THINKINGAS_SPEAKINGr	  __annotations__US_SPEAKINGr  US_AWAYr  r  HUMANAmdCategory	AMD_HUMANMACHINE_IVRAMD_MACHINE_IVR
MACHINE_VMAMD_MACHINE_VMMACHINE_UNAVAILABLEAMD_MACHINE_UNAVAILABLE	UNCERTAINAMD_UNCERTAINr  r  r  rE  rR  rT  r  )rL  s   @r;   <module>rn     s   " "    # < < % 1 3  ? 	 	 	   " 7
 
 
 "??@0 , 
Cs 
CL/+ L/^   G* GV H,,
H&&$$$$; 7  $$&&
H84  x++55X11AAH00??##X%9%9%Q%Q8//==> : ,5+p
\5 \5~;@r?   