+
    ~j             	      @  a  0 t $ ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHtHtHtHt ^ RI t!^ RI"t"^ RI#H$t$ ^ R	I%H&t&H't'H(t(H)t) ^ R
I*H+t+ ^ RI,H-t- ^ RI.H/t/ ^ RI0H1t1 ^ RI2H3t3H4t4 ^ RI5H6t6 ^ RI7H8t8 ^ RI9H:t:H;t; ^RI<H=t= ^RI>H?t? ^RI@HAtA ^RIBHCtC ^RIDHEtE ^RIFHGtGHHtH ^RIIHJtJHKtK ^RILHMtM ^RINHOtO ^RIPHQtQHRtRHStS ^RI<HTtT ^RIBHUtUHVtVHWtW ^RIXHYtYHZtZ ^t[]'       d   ^ RI\t]]P                  ]P                  3t` ! R R ]a4      tb ! R! R"]c4      td]R_,          teR#tf ! R$ R%]KP                  4      th ! R& R']KP                  4      tj ! R( R)4      tkR`Ra.tl ! R* R+4      tm ! R, R-]
P                  4      toR. R/ ltp ! R0 R1]
P                  4      trR2 R3 ltsRbRa.ttR4RR5R6/R7 R8 lltu]]v]6,          R,          .R3,          tw]R9R:R;R<R=^R>R?/R@ RA ll4       txRB RC lty. RcOtzRD]{RE&   RF RG lt|RdRH RI llt}RJ RK lt~RL RM ltReRN RO lltRP RQ lt ! RR RS4      tRT]
EP                  /RU RV lltRfRW RX llt ! RY RZ]v]EP                  4      tR[ R\ ltR] R^ ltR# )g    )annotationsN)CallableIterator)contextmanager)time)	FrameType)TYPE_CHECKING	AnnotatedAnyLiteralColumns)ConsoleConsoleRenderableGroupRenderableType)Live)Segment)Spinner)Style)ColumnTable)Text)Theme)apirtc)llm)CLIError)JobExecutorTypeloggerPlugin)aio	shortuuid)AgentSessionio)RunEvent)TranscriptSynchronizer)AgentServerServerEnvOptionWorkerOptions)proto)JsonFormatter_merge_record_extra_silence_noisy_loggers)keyreadkeyc                      ] tR t^CtRtR# )_ToggleMode N__name__
__module____qualname____firstlineno____static_attributes__r5       k/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/livekit/agents/cli/cli.pyr4   r4   C       r<   r4   c                      ] tR t^GtRtR# )_ExitClir5   Nr6   r5   r<   r=   r@   r@   G   r>   r<   r@   ]  c                  ^   a  ] tR t^mtR V 3R lltR R ltR R ltR R ltR	 R
 ltRt	V ;t
# )ConsoleAudioInputc                    V ^8  d   QhRRRR/#    loopasyncio.AbstractEventLoopreturnNoner5   )formats   "r=   __annotate__ConsoleAudioInput.__annotate__n   s      6 4 r<   c                	v   < \         SV `  R R7       Wn        \        P                  ! 4       V n        RV n        R# )r   labelTN)super__init___loopr$   Chan	_audio_ch	_attachedselfrG   	__class__s   &&r=   rR   ConsoleAudioInput.__init__n   s,    y)
3688:r<   c                    V ^8  d   QhRRRR/# rF   framertc.AudioFramerI   rJ   r5   )rK   s   "r=   rL   rM   t   s     * * *4 *r<   c                	d    V P                   '       g   R # V P                  P                  V4       R # N)rV   rU   send_nowait)rX   r]   s   &&r=   
push_frameConsoleAudioInput.push_framet   s     ~~~""5)r<   c                   V ^8  d   QhRR/# )rF   rI   r^   r5   )rK   s   "r=   rL   rM   z   s     0 0 0r<   c                	R   "   V P                   P                  4       G R j  xL
 #  L5ir`   )rU   	__anext__rX   s   &r=   rf   ConsoleAudioInput.__anext__z   s     ^^--////s   '%'c                   V ^8  d   QhRR/# rF   rI   rJ   r5   )rK   s   "r=   rL   rM   }   s      T r<   c                	    R V n         R# TNrV   rg   s   &r=   on_attachedConsoleAudioInput.on_attached}   s	    r<   c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   rM      s      T r<   c                	    R V n         R# FNrm   rg   s   &r=   on_detachedConsoleAudioInput.on_detached   s	    r<   )rV   rU   rS   )r7   r8   r9   r:   rR   rb   rf   rn   rs   r;   __classcell__rY   s   @r=   rC   rC   m   s&     *0 r<   rC   c                     a  ] tR t^tR V 3R llt]R R l4       t]R R l4       t]R R l4       tR	 R
 lt	R V 3R llt
R V 3R lltR R ltR V 3R lltR V 3R lltR R ltR R ltR R ltRtV ;t# )ConsoleAudioOutputc                    V ^8  d   QhRRRR/# rE   r5   )rK   s   "r=   rL   ConsoleAudioOutput.__annotate__   s      6 4 r<   c           	     	  < \         SV `  R R\        \        P                  ! RR7      R7       Wn        RV n        RV n        RV n        RV n	        \        4       V n        \        P                  ! 4       V n        \        P                   ! 4       V n        V P"                  P%                  4        \        P                   ! 4       V n        RV n        RV n        ^ V n        R# )r   NT)pause)rP   next_in_chainsample_ratecapabilities        F)rQ   rR   SAMPLE_RATEr'   AudioOutputCapabilitiesrS   _pushed_duration_capture_start_flush_task_playback_started_fired	bytearray_output_buf	threadingLock_audio_lockasyncioEvent_output_buf_emptyset_interrupted_ev
_paused_at_paused_duration_segment_idrW   s   &&r=   rR   ConsoleAudioOutput.__init__   s    #33$?	 	 	
 
'*%(6:-2$$;$>>+!(""$&}}(,'* r<   c                   V ^8  d   QhRR/# )rF   rI   zthreading.Lockr5   )rK   s   "r=   rL   rz      s        N  r<   c                	    V P                   # r`   )r   rg   s   &r=   
audio_lockConsoleAudioOutput.audio_lock       r<   c                   V ^8  d   QhRR/# )rF   rI   r   r5   )rK   s   "r=   rL   rz      s        i  r<   c                	    V P                   # r`   )r   rg   s   &r=   audio_bufferConsoleAudioOutput.audio_buffer   r   r<   c                   V ^8  d   QhRR/# rF   rI   boolr5   )rK   s   "r=   rL   rz      s     + + +r<   c                	    V P                   R J# r`   )r   rg   s   &r=   pausedConsoleAudioOutput.paused   s    d**r<   c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   rz      s     % %4 %r<   c                	:    V P                   P                  4        R # r`   )r   r   rg   s   &r=   mark_output_empty$ConsoleAudioOutput.mark_output_empty   s    ""$r<   c                    V ^8  d   QhRRRR/# r\   r5   )rK   s   "r=   rL   rz      s     + + +D +r<   c                	z  <"   \         SV `  V4      G R j  xL
  V P                  '       dK   V P                  P                  4       '       g+   \        P
                  ! R4       V P                  G R j  xL
  V P                  '       g   \        P                  ! 4       V n	        V ;P                  VP                  ,          un        V P                  ;_uu_ 4        V ;P                  VP                  ,          un        V P                  P                  4        R R R 4       R #  EL L  + '       g   i     R # ; i5i)Nz8capture_frame called while previous flush is in progress)rQ   capture_framer   doner!   errorr   r   	monotonicr   durationr   r   datar   clear)rX   r]   rY   s   &&r=   r    ConsoleAudioOutput.capture_frame   s     g#E***D$4$4$9$9$;$;LLST""""$$$"&.."2D/

*""((*  	+ # sK   D;D"D;D;%D;2D%3D;	AD;>D'D;%D;'D8	2	D;c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   rz      s     M Mt Mr<   c                	b  < \         SV `  4        V P                  '       d   V P                  '       dQ   V P                  P	                  4       '       g1   \
        P                  ! R 4       V P                  P                  4        \        P                  ! V P                  4       4      V n        R# R# )z0flush called while previous flush is in progressN)rQ   flushr   r   r   r!   r   cancelr   create_task_wait_for_playoutrX   rY   s   &r=   r   ConsoleAudioOutput.flush   sx       (8(8(=(=(?(?OP  '')&2243I3I3KLD !r<   c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   rz      s     	' 	'd 	'r<   c                	j   V P                   ;_uu_ 4        V P                  P                  4        V P                  P	                  4        V ;P
                  ^,          un        RV n        RRR4       V P                  '       d   V P                  P	                  4        R# R#   + '       g   i     L@; i)   FN)	r   r   r   r   r   r   r   r   r   rg   s   &r=   clear_bufferConsoleAudioOutput.clear_buffer   s~    ""$""&&(!+0D(       $$& ! s   AB""B2	c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   rz      s     / /t /r<   c                	x   < \         SV `  4        V P                  f   \        P                  ! 4       V n        R # R # r`   )rQ   r|   r   r   r   r   s   &r=   r|   ConsoleAudioOutput.pause   s)    ??""nn.DO #r<   c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   rz      s     # # #r<   c                	   < \         SV `  4        V P                  eG   V ;P                  \        P
                  ! 4       V P                  ,
          ,          un        R V n        R # R # r`   )rQ   resumer   r   r   r   r   s   &r=   r   ConsoleAudioOutput.resume   sD    ??&!!T^^%5%GG!"DO 'r<   c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   rz      s     %" %" %"r<   c                	  a "   R  V 3R llp\         P                  ! S P                  P                  4       4      p\         P                  ! V! 4       4      p \         P                  ! W2.\         P                  R7      G Rj  xL
  VP                  4       pVP                  4        VP                  4        S P                  eE   S ;P                  \        P                  ! 4       S P                  ,
          ,          un        RS n        V'       dY   \        P                  ! 4       S P                  ,
          S P                  ,
          p\        \        ^ V4      S P                  4      pMS P                  pS P                  WTR7       RS n        RS n        RS n        S P                  P!                  4        S P"                  ;_uu_ 4        S P$                  P'                  4        RS n        S ;P*                  ^,          un        RRR4       R#  EL  TP                  4        TP                  4        i ; i  + '       g   i     R# ; i5i)c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   :ConsoleAudioOutput._wait_for_playout.<locals>.__annotate__   s     	' 	'D 	'r<   c                    <"   \        S P                  4      ^ 8  dC   S P                  P                  4       G Rj  xL
  \        P
                  ! ^ 4      G Rj  xL
  K\  R#  L& L
5ir   N)lenr   r   waitr   sleeprg   s   r=   _wait_buffered_audioBConsoleAudioOutput._wait_for_playout.<locals>._wait_buffered_audio   sN     d&&'!+,,11333mmA&&& ,3&s!   8A&A"A&A$	A&$A&)return_whenN)playback_positioninterruptedr   F)r   r   r   r   FIRST_COMPLETEDr   r   r   r   r   r   r   minmaxr   on_playback_finishedr   r   r   r   r   r   )rX   r   wait_for_interruptionwait_for_playoutr   played_durations   f     r=   r   $ConsoleAudioOutput._wait_for_playout   s    	' 	'
 !( 3 3D4H4H4M4M4O P"../C/EF	+,,!9#33   0446K##%!((*??&!!T^^%5%GG!"DO"nn.1D1DDtG\G\\O!#a"94;P;PQO"33O!!O!] # #""$""&&(+0D(! 3 ##%!((*$ sP   AI
*H HH A9I
B9I
	;H6
I
H "H33I
6I		I
c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   rz     s     	
 	
d 	
r<   c                   a aa S P                   '       d   R# RS n         \        4       oS P                  oS P                  P	                  VV V3R l4       R# )z\Mark the playback as started if it hasn't been already. Must be called under ``audio_lock``.NTc                 *   < SP                  SS R 7      # ))
created_at
segment_id)_on_playback_started)r   rX   ts   r=   <lambda>AConsoleAudioOutput._maybe_mark_playback_started.<locals>.<lambda>  s    D--z-Rr<   )r   
_wall_timer   rS   call_soon_threadsafe)rX   r   r   s   f@@r=   _maybe_mark_playback_started/ConsoleAudioOutput._maybe_mark_playback_started  sA    ''''+$L%%


''R	
r<   c               $    V ^8  d   QhRRRRRR/# )rF   r   floatr   intrI   rJ   r5   )rK   s   "r=   rL   rz     s!     8 8% 8S 8T 8r<   c               	P    V P                   V8w  d   R # V P                  VR7       R # )N)r   )r   on_playback_started)rX   r   r   s   &$$r=   r   'ConsoleAudioOutput._on_playback_started  s$    z)  J 7r<   )r   r   r   r   rS   r   r   r   r   r   r   r   )r7   r8   r9   r:   rR   propertyr   r   r   r   r   r   r   r|   r   r   r   r   r;   ru   rv   s   @r=   rx   rx      s     4         + +%+ +M M	'/ /# #%"N	
8 8r<   rx   c                  J   ] tR tRt$ RtR]R&   Rt]R R l4       tR R	 lt	R
 R lt
]R R l4       t]P                  R R l4       t]R R l4       t]P                  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 R l4       tR R lt]R  R! l4       t]R" R# l4       t]R$ R% l4       t]P                  R& R' l4       tR( R) ltR*R+R,R/R- R. lltR*R+R/RR,R/R0 R1 lltR2R/R3 R4 lltR2R/R5 R6 lltR7 R8 ltR9 R: ltR; R< ltR=t R# )>AgentsConsolei  NAgentsConsole | None	_instancezconsole-recordingsc                   V ^8  d   QhRR/# )rF   rI   r   r5   )rK   s   "r=   rL   AgentsConsole.__annotate__  s      ] r<   c                	N    V P                   f   V ! 4       V n         V P                   # r`   )r   )clss   &r=   get_instanceAgentsConsole.get_instance  s    == ECM}}r<   c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   r      s     7
 7
$ 7
r<   c                	
   R RRRRRRRR\         P                  ! 4       R	\        R
R7      R\        R
R7      R\        RR7      R\        RR7      R\        RR7      R\        RR7      R\        RR
R7      R\        RR
R
R7      /p^V n        \        \	        V4      R7      V n        \        P                  ! R
R
R
R
R7      V n        RV n	        RV n
        RV n        RV n        RV n        RV n        \        P                   ! 4       V n        \$        P&                  ! ^\$        P(                  R7      V n        RV n        \        P                   ! 4       V n        R V n        \        P2                  ! 4       V n        R V n        R V n        RV n        RV n        \?        4       V n         \C        V 4      V n"        \F        PH                  ! V PJ                  R!\L        PL                  PO                  4       PQ                  R"4       24      V n)        R# )#tagzblack on #1fd5f9rP   z#8f83ffr   redzlk-fg#1fd5f9log.name	log.extraT)dimzlogging.level.notsetzlogging.level.debugcyan)colorzlogging.level.infogreenzlogging.level.warningyellowzlogging.level.devbluezlogging.level.errorr  boldzlogging.level.critical)r  r  reverse)theme)echo_cancellationnoise_suppressionhigh_pass_filterauto_gain_controlr   NdtypeaudioFzsession-z%m-%d-%H%M%S)*r   null	tag_widthr   r   consoler   AudioProcessingModule_apm_input_delay_input_name_input_stream_output_delay_output_name_output_streamr   r   _input_locknpzerosfloat32_input_levels_console_mode_lock_io_acquiredr   _io_acquired_event_enabled_record_last_metrics_text_last_user_metricsTextModeLogFilter_text_mode_log_filterRichLoggingHandler_log_handlerpathlibPath_console_directorydatetimenowstrftime_session_directory)rX   r
  s   & r=   rR   AgentsConsole.__init__   s   %YUY

4"EdO!5v#6 %g"6#U%:V!4!5u4#@$e%dD&Q)
 U5\2--""!"	
	  '+48 (,6:$>>+XXb

;*1^^%
!"+//"3/3<@%6%8".t4"),,##x((,,.77GHI#
r<   c               $    V ^8  d   QhRRRRRR/# )rF   rG   rH   sessionr&   rI   rJ   r5   )rK   s   "r=   rL   r   Y  s#     ; ;"; ;l ;W[ ;r<   c               	4  a a S P                   ;_uu_ 4        S P                  '       d   \        R 4      h\        P                  ! 4       V8w  d   \        R4      hRS n        VS n        \        P                  ! 4       S n        \        V4      S n
        \        V4      S n        \        S P                  RR7      S n        S P                  P!                  4        SS n        RRR4       S'       d   ^RIHpHp SP+                  R4      R V 3R ll4       pSP+                  R	4      R
 V V3R ll4       pS P-                  SS P.                  S P                  S P                  P0                  S P                  P2                  4       R# R#   + '       g   i     L; i)z5the ConsoleIO was already acquired by another sessionzFthe ConsoleIO must be acquired in the same asyncio loop as the sessionTN)next_in_chain_audionext_in_chain_text)AgentStateChangedEventConversationItemAddedEventconversation_item_addedc                    V ^8  d   QhRRRR/# )rF   eventr<  rI   rJ   r5   )rK   s   "r=   rL   .AgentsConsole.acquire_io.<locals>.__annotate__v  s     
3 
33M 
3RV 
3r<   c                v  < \        V P                  \        P                  4      '       g   R # V P                  P                  R8X  d   V P                  P
                  Sn        R # V P                  P                  R8X  d9   \        SP                  V P                  P
                  4      Sn        R Sn        R # R # )Nuser	assistant)	
isinstanceitemr   ChatMessagerolemetricsr)  _format_turn_metricsr(  )r?  rX   s   &r=   _on_conversation_item_added=AgentsConsole.acquire_io.<locals>._on_conversation_item_addedu  s~    !%**coo>>::??f,.3jj.@.@D+ZZ__3.B//1C1C/D+ /3D+	 4r<   agent_state_changedc                    V ^8  d   QhRRRR/# )rF   r?  r;  rI   rJ   r5   )rK   s   "r=   rL   r@    s     	3 	3/E 	3$ 	3r<   c                   < V P                   R 8X  d;   SP                  pV'       d%   \        SP                  V4      Sn        RSn        R# R# V P                   R8X  d
   RSn        R# R# )speakingNthinking)	new_state_early_assistant_metricsrI  r)  r(  )r?  earlyrX   r7  s   & r=   _on_agent_state_changed9AgentsConsole.acquire_io.<locals>._on_agent_state_changed  s`    ??j0#<<E2F 33U3/ <@8	 
 __
2.2D+ 3r<   )r#  r$  RuntimeErrorr   get_running_loop_io_loopcontextvarscopy_context_io_contextrC   _io_audio_inputrx   _io_audio_outputr)   _io_transcription_syncr%  r   _io_sessionvoice.eventsr;  r<  on_update_sess_ioconsole_modeaudio_outputtext_output)rX   rG   r7  r;  r<  rJ  rT  s   f$d    r=   
acquire_ioAgentsConsole.acquire_ioY  sV   ZZZ   "#Z[['')T1"\  !%D DM*779D#4T#:D $6t$<D!*@$($9$9#'+D' ##'')&D' * 
 ZZ12
3 3
3 ZZ-.	3 	3 /	3   !!$$++88++77? + Zs   CFF	c                   V ^8  d   QhRR/# r   r5   )rK   s   "r=   rL   r     s       r<   c                	    V P                   # r`   r&  rg   s   &r=   enabledAgentsConsole.enabled  s    }}r<   c                    V ^8  d   QhRRRR/# rF   valr   rI   rJ   r5   )rK   s   "r=   rL   r     s      4 D r<   c                	    Wn         R # r`   rj  rX   ro  s   &&r=   rk  rl    s    r<   c                   V ^8  d   QhRR/# r   r5   )rK   s   "r=   rL   r     s       r<   c                	    V P                   # r`   r'  rg   s   &r=   recordAgentsConsole.record  s    ||r<   c                    V ^8  d   QhRRRR/# rn  r5   )rK   s   "r=   rL   r     s      $ 4 r<   c                	    Wn         R # r`   rt  rq  s   &&r=   ru  rv    s    r<   c                   V ^8  d   QhRR/# )rF   rI   zpathlib.Pathr5   )rK   s   "r=   rL   r     s     ' '< 'r<   c                	    V P                   # r`   )r4  rg   s   &r=   session_directoryAgentsConsole.session_directory  s    &&&r<   c                   V ^8  d   QhRR/# r   r5   )rK   s   "r=   rL   r     s     % %T %r<   c                	    V P                   ;_uu_ 4        V P                  uuR R R 4       #   + '       g   i     R # ; ir`   )r#  r$  rg   s   &r=   io_acquiredAgentsConsole.io_acquired  s     ZZZ$$ ZZZs   ,=	c                   V ^8  d   QhRR/# )rF   rI   r&   r5   )rK   s   "r=   rL   r     s        L  r<   c                	T    V P                   '       g   \        R 4      hV P                  # zAgentsConsole is not acquired)r$  rV  r_  rg   s   &r=   
io_sessionAgentsConsole.io_session  &       >??r<   c                   V ^8  d   QhRR/# )rF   rI   rH   r5   )rK   s   "r=   rL   r     s      2 r<   c                	T    V P                   '       g   \        R 4      hV P                  # r  )r$  rV  rX  rg   s   &r=   io_loopAgentsConsole.io_loop  s$       >??}}r<   c                   V ^8  d   QhRR/# )rF   rI   zcontextvars.Contextr5   )rK   s   "r=   rL   r     s        /  r<   c                	T    V P                   '       g   \        R 4      hV P                  # r  )r$  rV  r[  rg   s   &r=   
io_contextAgentsConsole.io_context  r  r<   c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   r     s     ' ' 'r<   c                	:    V P                   P                  4        R # r`   )r%  r   rg   s   &r=   wait_for_io_acquisition%AgentsConsole.wait_for_io_acquisition  s    $$&r<   c                   V ^8  d   QhRR/# rF   rI   
str | Noner5   )rK   s   "r=   rL   r     s        J  r<   c                	    V P                   # r`   )r  rg   s   &r=   
input_nameAgentsConsole.input_name  r   r<   c                   V ^8  d   QhRR/# r  r5   )rK   s   "r=   rL   r     s     ! !Z !r<   c                	    V P                   # r`   )r  rg   s   &r=   output_nameAgentsConsole.output_name  s       r<   c                   V ^8  d   QhRR/# )rF   rI   ConsoleModer5   )rK   s   "r=   rL   r     s     " "k "r<   c                	    V P                   # r`   )r"  rg   s   &r=   rc  AgentsConsole.console_mode  s    !!!r<   c                    V ^8  d   QhRRRR/# )rF   moder  rI   rJ   r5   )rK   s   "r=   rL   r     s        r<   c           
     	z   V P                   ;_uu_ 4        Wn        V P                  '       g    R R R 4       R # V P                  P	                  V P
                  V P                  VV P                  V P                  P                  V P                  P                  4       R R R 4       R #   + '       g   i     R # ; ir`   )r#  r"  r$  r  r   rb  r  r\  r^  rd  re  )rX   r  s   &&r=   rc  r    s    ZZZ!%$$$	 Z LL--$$$$++88++77 ZZZs   B)A&B))B:	c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )rF   sessr&   r  r  audio_inputrC   rd  zio.AudioOutputre  zio.TextOutputrI   rJ   r5   )rK   s   "r=   rL   r     sN     K KK K '	K
 %K #K 
Kr<   c                	   \         P                  ! 4       V P                  8w  d   \        R 4      hV P                  ;_uu_ 4        V P
                  '       g    RRR4       R# V P                  V8w  g   V P                  V8w  d    RRR4       R# VR8X  dZ   RVP                  n	        RVP                  n	        RVP                  n        V P                  P                  V P                  4       MUW1P                  n	        WAP                  n	        WQP                  n        V P                  P                  V P                  4       RRR4       R#   + '       g   i     R# ; i)z/_update_sess_io must be executed on the io_loopNtext)r   rW  r  rV  r#  r$  r_  r"  inputr  outputtranscriptionr-  	addFilterr+  removeFilter)rX   r  r  r  rd  re  s   &&&&&&r=   rb  AgentsConsole._update_sess_io  s     ##%5PQQZZZ$$$ Z 4'4+=+=+E Z v~#'

 $(!,0)!!++D,F,FG#.

 $0!,7)!!..t/I/IJ! ZZZs   E"#EB5EE	r    	tag_stylec               (    V ^8  d   QhRRRRRRRR/# )	rF   childr   r   strr  Style | NonerI   rJ   r5   )rK   s   "r=   rL   r     s2     R R#R-0RBNR	Rr<   c               	^    V P                   P                  V P                  WVR 7      4       R# )r   r  N)r  print_render_tag)rX   r  r   r  s   &&$$r=   r  AgentsConsole.print  s&     	4++Ei+PQr<   r  c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rF   r  r   r   r  r  z
int | Noner  r  rI   r   r5   )rK   s   "r=   rL   r     s<       	
    
r<   c               	   V'       d   R V R 2pT;'       g    V P                   p\        P                  ! \        V^,           RR7      \        RRR7      R	RRR7      pV\	        V4      ,
          p\        ^ V4      pT;'       g    V P                  P                  R4      p\        W'R7      .p\        R V,          4      .VOp	VP                  \        V	!  \        V4      4       V# )
 Twidthno_wrapFfoldr  overflowpaddingcollapse_paddingpad_edger   styler   r   r   r   )r  r   gridr   r   r   r  	get_styler   add_rowr   )
rX   r  r   r  r  tableleft_paddingr  tag_segmentslefts
   &&$$$     r=   r  AgentsConsole._render_tag  s     cU!*C//	

Q5562 !
 !3s8+1l+::T\\33E:12l*+;l;eTlE%L1r<   devicec               $    V ^8  d   QhRRRRRR/# rF   enabler   r  zint | str | NonerI   rJ   r5   )rK   s   "r=   rL   r   $  s#     !# !#T !#>N !#Z^ !#r<   c          	     	   V P                   '       d)   V P                   P                  4        R ;V n         V n        V'       g   R # ^ R IpVf   VP                  P
                  w  r$ VP                  ! VRR7      p\        T\        4      '       g   Q R4       hTP                  RR4      T n        TP                  ! T P                  R^TRR	R
7      T n         T P                   P                  4        R #   \         d    \        R4      R hi ; i)Nr  kindUnable to access the microphone. 
Please ensure a microphone is connected and recognized by your system. To see available input devices, run: lk-agents console --list-devicesdevice_info is dictnamezUnnamed microphoneint16rA   `	  callbackr  channelsr  
samplerate	blocksize)r  closer  sounddevicedefaultr  query_devices	Exceptionr   rD  dictgetInputStream_sd_input_callbackstartrX   r  r  sd_device_infos   &&$   r=   set_microphone_enabled$AgentsConsole.set_microphone_enabled$  s    $$&488D!1 >

))IF	**6@K +t,,C.CC,&??63GH^^,,
 	  "%  	X 		   &C1 1D	c               $    V ^8  d   QhRRRRRR/# r  r5   )rK   s   "r=   rL   r   G  s#     !$ !$$ !$;K !$W[ !$r<   c          	     	   V P                   '       d)   V P                   P                  4        R ;V n         V n        V'       g   R # ^ R IpVf   VP                  P
                  w  rB VP                  ! VRR7      p\        T\        4      '       g   Q R4       hTP                  RR4      T n        TP                  ! T P                  R^TRR	R
7      T n         T P                   P                  4        R #   \         d    \        R4      R hi ; i)Nr  r  Unable to access the speaker. 
Please ensure a speaker is connected and recognized by your system. To see available output devices, run: lk-agents console --list-devicesr  r  zUnnamed speakerr  rA   r  r  )r  r  r  r  r  r  r  r  r   rD  r  r  OutputStream_sd_output_callbackr  r  s   &&$   r=   set_speaker_enabled!AgentsConsole.set_speaker_enabledG  s    %%'6::D$"3 >

))IA	**6AK +t,,C.CC,'OOF4EF oo--
 	!!#%  	Y 		r  c               $    V ^8  d   QhRRRRRR/# )rF   input_devicer  output_devicerI   rJ   r5   )rK   s   "r=   rL   r   j  s$      ):D	r<   c               	    ^ RI p V'       d   VP                  ! VRR7        T'       d   TP                  ! TRR7       R# R#   \         d    \        R4      Rhi ; i  \         d    \        R4      Rhi ; i)r   Nr  r  r  r  r  )r  r  r  r   )rX   r  r  r  s   &$$ r=   _validate_device_or_raise'AgentsConsole._validate_device_or_raisej  s     	!	  G<	  X>   	X 		  	Y 		s    A A A A AA6c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
rF   indata
np.ndarrayframe_countr   r   r   r  rI   rJ   r5   )rK   s   "r=   rL   r     s?     BW BW BW# BWS BWVY BW^b BWr<   c           	     	   VP                   VP                  ,
          V n        V P                  V P                  ,           p V P                  P                  \        VR ,          4      4       RpVR,          P                  \        P                  4      R,          pVP                  pV\        P                  ! V4      P                  \        P                  4      ,          p\        P                  P                  WxR7      p	\        P                  ! V	4      P                  \        P                  4      RV,          ,          p
V
^ ;;,          R,          uu&   V
R;;,          RR\!        V^,          ^ 8H  4      ,          ,
          ,          uu&   \        P                  P#                  VRV,          R7      p\%        V P&                  4      p\        P(                  ! RVR,          R	,          V^,           4      P                  \        P                  4      p\        P*                  ! \        P,                  ! W4      ^,
          ^ V^,
          4      pW,          P                  \        P                  4      p\        P.                  ! WVR
7      p\        P0                  ! \        P.                  ! WR7      ^4      pVV,          pR\        P2                  ! VR,           4      ,          pRRpp\        P*                  ! VV,
          VV,
          ,          P                  \        P                  4      RR4      p\        P0                  ! VR,          R,
          R4      p\!        VP5                  4       4      pV\        P*                  ! RVR,           ,          RR4      ,          p\        P*                  ! VRR4      p\!        \        P6                  ! W,          ) R,          4      4      pV P8                  ;_uu_ 4        V P&                  P                  \        P                  4      p\        P0                  ! VVV,          4      V n        RRR4       V P:                  '       g   R# ^pVV,          p\=        V4       EFj  pVV,          pVV,           pVVV p\>        P@                  ! VPC                  4       VR^R7      p V P                  PE                  V 4       \        PF                  ! V PH                  \        PJ                  R7      p!\        PL                  ! \        PN                  ! V!P                  \        P                  4      ^,          4      4      p"\        PP                  ! \        PJ                  4      P4                  p#R\        P2                  ! V"V#,          R,           4      ,          V n)        V PT                  PW                  V PX                  PZ                  V 4       EKm  	  R#   \         d     ELi ; i  + '       g   i     EL; i)  rA   g      @)ng       @g      ?      ?)dg      4@gQ?)weights	minlength)r  g      $@g-q=r   g      ?g{Gz?gffffff?gư>g      @皙?Nr   samples_per_channelr~   num_channelsr  NNNr   g     Qi).currentTimeinputBufferAdcTimer  r  r  set_stream_delay_msr   rV  astyper  r   sizehanningfftrfftabsr   rfftfreqr   r!  	geomspaceclipdigitizebincountmaximumlog10r   expr  r$  ranger   
AudioFrametobytesprocess_stream
frombufferr   r  sqrtmeaniinfo	_micro_dbrX  r   r\  rb   )$rX   r  r  r   r  total_delaysrxr  Xmagfreqsnbedgesbpsumpcntspmeandbfloor_dbhot_dblevpeakdecayprevFRAME_SAMPLES
num_framesir  endcapture_chunkr]   in_data_aecrms	max_int16s$   &&&&*                               r=   r   AgentsConsole._sd_input_callback  s    ,,t/F/FF((4+<+<<	II))#kD.@*AB 4L

+g5FF	RZZ]!!"**--FFKKKffQirzz*cAg6A#B3uQUaZ0000S2X.##$TBH#4b1f=DDRZZPGGBKK-11b1f=Yrzz*{{126zz"++a6:tBHHUU]++ #&ggX&8*;<DDRZZPRUWZ[jjdT)3/SWWYrwwttd{+S#66ggc3$bffqvY_-.%%,,RZZ8D!#C!>D      M1
z"A%E-'C"5-MNN"**,$1!	E II$$U+--

"((CK''"''+"4"4RZZ"@A"EFGC*..I!BHHS9_t-C$DDDNMM..t/C/C/N/NPUV% #U  		@ s   +W& 6AW8&W54W58X		c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
rF   outdatar  framesr   r   r   r  rI   rJ   r5   )rK   s   "r=   rL   r     s8     *C *C: *Cs *C# *CSV *C[_ *Cr<   c                	B   V P                   '       g   ^ VR&   R# VP                  VP                  ,
          V n        ^pV P                  P
                  ;_uu_ 4        V P                  P                  '       d   ^ VR&   EMV^,          p\        V P                  P                  4      V8  d   \        V P                  P                  4      pV^ 8  d   V P                  P                  4        \        P                  ! V P                  P                  \        P                  V^,          R7      VRV^,          1^ 3&   ^ W^,          R1^ 3&   V P                  P                  RV1 V P                  P                  V P                  P                  4       MvV P                  P                  4        V P                  P                  RV p\        P                  ! V\        P                  VR7      VR&   V P                  P                  RV1 RRR4       W%,          p	\!        V	4       Fb  p
W,          pW,           pWV1^ 3,          p\"        P$                  ! VP'                  4       VR^R7      pV P(                  P+                  V4       Kd  	  R#   + '       g   i     L; i)r   r  N)r  countrA   r  r  )r  outputBufferDacTimer  r  r]  r   r   r   r   r   r  r(  r  r  r   r   r$  r   r%  r&  r  process_reverse_stream)rX   rK  rL  r   r  rA  bytes_neededavailable_byteschunk
num_chunksrC  r  rD  render_chunkrender_frame_for_aecs   &&&&*          r=   r  !AgentsConsole._sd_output_callback  s#   GAJ!558H8HH""---$$+++
%zt,,99:\I&)$*?*?*L*L&MO&*--JJL9;--:: hh-2:G2o22A56
 :;Gq02A56--::;KO;KLLL55d6K6K6]6]^))FFH 11>>}ME$&MM%rxxv$VGDM--::=L=I+ .. ,
z"A%E'C"9a<0L#&>>!))+$1!	$  II,,-AB #1 .-s   F/JJ	)r  r"  r&  r  r!  r  r  r  r$  r%  r\  r]  r[  rX  r_  r^  r(  r)  r#  r-  r,  r  r  r  r'  r4  r+  r  r  )!r7   r8   r9   r:   r   __annotations__r0  classmethodr   rR   rf  r   rk  setterru  r{  r  r  r  r  r  r  r  rc  rb  r  r  r  r  r  r  r  r;   r5   r<   r=   r   r     s   &*I#*- 
7
r;z   ^^    ]]  ' ' % %          '     ! ! " "   K:R35RQUR
 	
 !% #'<!#QU !#F!$d !$F2BWH*C *Cr<   r   c                  B    ] tR tRtRR/R R lltR R ltR R	 ltR
tR# )FrequencyVisualizeri  rP   zUnlabeled microphonec                    V ^8  d   QhRRRR/# )rF   agents_consoler   rP   r  r5   )rK   s   "r=   rL    FrequencyVisualizer.__annotate__  s     $ $} $ $r<   c               	>    W n         . ROV n        Wn        RV n        R# )   ▁FN)ra  u   ▂u   ▃u   ▄u   ▅u   ▆u   ▇   █)rP   height_charscshow_shortcuts)rX   r^  rP   s   &&$r=   rR   FrequencyVisualizer.__init__  s    
T#r<   c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   r_    s     O O Or<   c                	L   V P                   P                  ;_uu_ 4        \        V P                   P                  4      pV Uu. uF2  p\	        ^ \        ^\        \        V^,          4      4      4      4      NK4  	  upV n        RRR4       R# u upi   + '       g   i     R# ; ir   )	rd  r  listr!  r   r   r   round_levels_idx)rX   lvvs   &  r=   updateFrequencyVisualizer.update  so    VVdff**+BKMN2aAs1c%A,.?'@ A2ND  N  s   $B8B;BBB#	c                   V ^8  d   QhRR/# )rF   rI   r   r5   )rK   s   "r=   rL   r_    s     9 9. 9r<   c           
     	  a  \         P                  ! ^ RR7      pVP                  4        RS P                   R2pRP	                  V 3R lS P
                   4       4      pS P                  P                  P                  R4      p\        W$R7      pS P                  P                  p\        V4      \        V4      ,           p\         P                  ! \        \        V4      RR	7      \        RR
R7      RRRR7      pVP                  \        V4      \        V4      4       VP                  V4       VEe   \        VP                  4      p	S P                  P                  P                   p
Wy,           ^,           V
8:  d   \         P                  ! ^ RR7      pVP                  4        \         P                  ! \        \        V4      RR	7      \        RR
R7      \        RRR7      RRRRR7      pVP                  \        V4      \        V4      V4       VP                  V4       M(VP#                  4       pRVn        VP                  V4       VP                  \        R4      4       S P&                  '       d@   \(         F3  w  rVP                  \        P*                  ! RVR3RV 2R34      4       K5  	  V# VP                  \        RRR7      4       V# )r   T)r  expand     r  c              3  P   <"   T F  pR SP                   V,           2x  K  	  R# 5i)r  N)rc  ).0rC  rX   s   & r=   	<genexpr>/FrequencyVisualizer.__rich__.<locals>.<genexpr>  s&     K:JQ$++A./0:Js   #&rP   r  r  r  r  Fr  right)r  justify)r  r  r  rr  dim boldr  z   ? for shortcutsr  )rs  r  )r   r  
add_columnrP   joinrk  rd  r  r  r   r(  r   r   r  r   plainr  copyrz  re  AUDIO_SHORTCUTSassemble)rX   r  rP   barr  	label_segmetrics_text
left_widthinner_tablemetrics_widthconsole_width
wide_tableright_metricsshortcut_keydescs   f              r=   __rich__FrequencyVisualizer.__rich__  s<   

1T2djj\$ggK$:J:JKK((1,	vv00Z#c(*
jjUT24&1 !
 	E),eCj9k"# 2 23M FFNN00M)A->

1T:  ""ZZUT:4&949(%)"
 ""5#3U3ZNj) !- 1 1 3(/%m,d2h&5"MM+j/IbQUPVKY^K_` '6  MM$35ABr<   )rk  rd  rc  rP   re  N)r7   r8   r9   r:   rR   rn  r  r;   r5   r<   r=   r\  r\    s    $F\ $O
9 9r<   r\  c                  F   a  ] tR tRtR V 3R lltR R ltR R ltRtV ;t# )	r,  iB  c                   V ^8  d   QhRR/# )rF   r^  r   r5   )rK   s   "r=   rL   RichLoggingHandler.__annotate__C  s     , ,} ,r<   c                	>   < \         SV `  4        Wn        R V n        R # r`   )rQ   rR   rd  
_last_time)rX   r^  rY   s   &&r=   rR   RichLoggingHandler.__init__C  s     (,r<   c                    V ^8  d   QhRRRR/# rF   ru  logging.LogRecordrI   rJ   r5   )rK   s   "r=   rL   r  J  s     s% s%, s% s%r<   c                	
   R  R lp\        VP                  ;'       d    VP                  R8g  ;'       g    VP                  4      pV'       dG   VP                  VP                  rTRVn        RVn         V P                  V4      pWEuVn        Vn        MV P                  V4      p^p\        P
                  ! RR7      pVP                  RR7       VP                  R^RR7       VP                  R	VRR
R7       VP                  ^RR7       VP                  RRR7       . p	V P                  f   RMV P                  P                  p
\        P                  P                  VP                  4      pT;'       g%    V P                  P                  P                  4       pV
'       d   \        VP!                  V
4      4      M\        VP!                  R4      RR 4      pWP"                  8X  d8   VP$                  pV	P'                  \        R\)        V4      ,          4      4       MV	P'                  V4       Wn        \        P*                  ! VP,                  P/                  ^4      RVP,                  P1                  4        24      pV	P'                  V4       V! VP2                  V4      p\        V4      pV	P'                  V4       \        V4      pV	P'                  V4       V P                  P                  P4                  p^p\7        VV,
          ^,
          ^4      pVP8                  p^p\;        VP8                  ^4      pVP8                  p/ p\=        VV4       Rp^ pV'       d?   \>        P@                  ! V\B        PD                  RR7      p\        V4      pVP8                  p^pVV,           V,           V,           V,           V,           p\        V4      ;'       d    VV8*  pV'       d   V	P'                  \        VRR7      4       MV	P'                  \        R4      4       VPF                  ! V	!   V P                  PI                  VVR7      p V P                  P                  PK                  V4       V'       d~   V'       gv   VV,           ^,           V,           ^,           V,           ^,           p RV ^,           ,          p!\        V!V,           RR7      p"V P                  P                  PK                  V"4       V'       d   V PM                  V4       R# R#   YEuTn        Tn        i ; i  \N         d    T PQ                  T4        R# i ; i)c               $    V ^8  d   QhRRRRRR/# )rF   sr  	max_widthr   rI   r5   )rK   s   "r=   rL   -RichLoggingHandler.emit.<locals>.__annotate__K  s!     	1 	1s 	1s 	1s 	1r<   c                    \        V 4      V8:  d   V # V^8:  d   RRV # V^,
          pV^,          pW#,
          pV RV R,           W) R ,           # )r   u   …N)r   )r  r  visibler  ry  s   &&   r=   middle_truncate0RichLoggingHandler.emit.<locals>.middle_truncateK  s\    1v"A~Zi((!mGa<DNEUd8e#aj00r<   Nr  zlog.timer  z	log.levelT)r  r  r  r   ellipsis)r  r  r  r  zlog.message)ratior  r   )r  r  z%H:%M:%S.%fr  zlogging.level.r  F)r   ensure_ascii)r  )NNNr   r   ))r   exc_infoexc_textrK   r   r  r|  	formatterdatefmtr1  fromtimestampcreatedrd  r  get_datetimer   r3  r  r~  appendr   styled	levelnameljustlowerr  r  r   cell_lenr   r/   jsondumpsr.   JsonEncoderr  r  r  _print_plain_tracebackr  handleError)#rX   ru  r  has_excr  r  messageMAX_NAME_WIDTHr  rowtime_formatlog_timelog_time_displaytime_str
level_textlogger_name	name_textmsg_textr  r  available_widthtime_len	level_lenname_lenmsg_lenextra	extra_str	extra_len
extra_textspaces_between_columnstotal_len_with_extrainline_extraindent_widthindent
extra_lines#   &&                                 r=   emitRichLoggingHandler.emitJ  sK   	1 __FF4F!FZZ6??
 !'&//h"FO"FOF++f-3;0kk&)GF+
+1dC
.$Ycd7T:$&"nn4d$..:P:P$$226>>B<<tvv~~::<  "";/0h''6s;< 	 .'--HJJtC#h-/01JJ'(.O[[""1%V--33567

 	

:%fkk>B%	

9=

8,,	mi7!;R@#,,	y))2.## "FE*		

5m.G.GV[\IiJ"++I!"y 8+g5	ADZZ 	 IRR+??+RJJtI[9:JJtCy!##Fi#@	%FFNN  ((83a7)CaG(RUVVq 01!&9"4KH
$$Z0++F3 s 4<0x  	%V$	%s1   5T ,T-  T- A<T- T- T*-UUc                    V ^8  d   QhRRRR/# r  r5   )rK   s   "r=   rL   r    s     % %-> %4 %r<   c                	    VP                   '       d   VP                   pM5VP                  w  r4pR P                  \        P                  ! W4V4      4      p\        VRR7      pV P                  P                  P                  VR R7       V P                  P                  P                  4        R#   \         d    T P                  T4        R# i ; i)r  r   r  )rD  N)r  r  r}  	tracebackformat_exceptionr   rd  r  r  r  r  )rX   ru  tb_strexc_type	exc_valueexc_tbtb_texts   &&     r=   r  )RichLoggingHandler._print_plain_traceback  s    	%.4oo+V!;!;HQW!XY6/GFFNN  b 1FFNN  " 	%V$	%s   B0 BB0 0CC)r  rd  )	r7   r8   r9   r:   rR   r  r  r;   ru   rv   s   @r=   r,  r,  B  s    , ,s%j% %r<   r,  c               $    V ^8  d   QhRRRRRR/# )rF   rd  r   	log_level	int | strrI   rJ   r5   )rK   s   "r=   rL   rL     s'     E E- E) E Er<   c                |  a \         P                  ! \        R 4       \         P                  ! 4       pV '       d   VP	                  V P
                  4       MN\         P                  ! \        P                  4      pVP	                  V4       VP                  \        4       4       TP                  S4       \        4        ^RIHp VP                  \         P                   8X  d   VP                  ! S4       ^RIHp R V3R llpVP&                   F  pV! V4       K  	  VP(                  P+                  RV4       R# )TRACEr    r"   c                    V ^8  d   QhRRRR/# )rF   pluginr#   rI   rJ   r5   )rK   s   "r=   rL   '_configure_logger.<locals>.__annotate__  s     . . .D .r<   c                   < V P                   eI   V P                   P                  \        P                  8X  d   V P                   P	                  S4       R # R # R # r`   )r!   levelloggingNOTSETsetLevel)r  r  s   &r=   _configure_plugin_logger3_configure_logger.<locals>._configure_plugin_logger  s=    ==$)<)<)NMM""9- *O$r<   plugin_registeredN)r  addLevelNameTRACE_LOG_LEVEL	getLogger
addHandlerr-  StreamHandlersysstdoutsetFormatterr.   r  r0   logr!   r  r  r  r#   registered_pluginsemitterra  )rd  r  roothandlerr!   r#   r  r  s   &f      r=   _configure_loggerr    s    '2D'''

3 ]_-MM)||w~~%	". . ++ ( , NN)+CDr<   c                      ] tR tRt]P
                  ! R]P                  4      ]P
                  ! R]P                  4      .tR R ltRt	R# )r*  i  z\bexecuting tool\bz\btools execution completed\bc                    V ^8  d   QhRRRR/# )rF   ru  r  rI   r   r5   )rK   s   "r=   rL   TextModeLogFilter.__annotate__  s     @ @. @4 @r<   c                	  a VP                   R 8w  d   R# VP                  4       o\        ;QJ d3    V3R lV P                   4       F  '       g   K   R'       * # 	  R'       * # ! V3R lV P                   4       4      '       * # )zlivekit.agentsTc              3  D   <"   T F  qP                  S4      x  K  	  R # 5ir`   )search)rv  rxmsgs   & r=   rw  +TextModeLogFilter.filter.<locals>.<genexpr>  s     ?"yy~~s    F)r  
getMessageany	_patterns)rX   ru  r  s   &&@r=   filterTextModeLogFilter.filter  s[    ;;**!3??33??3??3?????r<   r5   N)
r7   r8   r9   r:   recompile
IGNORECASEr	  r
  r;   r5   r<   r=   r*  r*    s=     	

("--8


3R]]CI
@ @r<   r*  c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   rL     s      d r<   c            	        ^ RI p \        4       pV P                  ! 4       pV P                  P                  w  r4\        RRRR7      pVP                  RRRR7       VP                  R	R
RR7       VP                  RR
R7       VP                  RRR7       \        V4       F  w  rgVR,          pVR,          ^ 8  p	VR,          ^ 8  p
V	'       d=   Wc8X  d   \        RRR7      MRpVP                  \        V4      \        RRR7      W4       V
'       g   Kt  Wd8X  d   \        RRR7      MRpVP                  \        V4      \        RRR7      W4       K  	  VP                  V4       R# )r   NTF)show_header
show_linesboxIDr   ry  )r  rz  Typer  centerNamer  Default)rz  r  max_input_channelsmax_output_channelsyesz#23de6br  Inputz#6c7a89Output)r  r   r  r  r  r   r|  	enumerater   r  r  r  )r  r  devicesdefault_inputdefault_outputr  idxdevr  	has_input
has_outputr  s               r=   _print_audio_devicesr&    s8   iG G$&JJ$5$5!Mdu$?E	TG<	V68<	V6*	Y1g&6{,-1	./!3
696Jd5	2PRGMM#c(D	$BDR:696Kd5	2QSGMM#c(D$CTS ' MM%r<   key_read_cbplaceholderr  c          
     ,    V ^8  d   QhRRRRRRRRR	R/# )
rF   r  
str | Textr  r   r'  zCallable[[str], Any] | Noner(  r  rI   r5   )rK   s   "r=   rL   rL   "  sC     H HH H -	H
 H 	Hr<   c               P  aaaa	a
 . oVP                   P                  o
R oRo	R VVVV	V
3R llp\        V! 4       VR^R7      ;_uu_ 4       p \        4       pV'       d	   V! V4       V\        P
                  8X  d   MVR8X  d(   S'       g    S	'       * o	VP                  V! 4       4       K_  V\        P                  8X  d#   S	'       d   Ro	VP                  V! 4       4       K  V\        P                  8X  d1   S'       d'   SP                  4        VP                  V! 4       4       K  \        V4      ^8X  g   K  VP                  4       '       g   EK  SP                  V4       VP                  V! 4       4       EK0  RRR4       RP                  S4      #   + '       g   i     L!; i)	u   ─Fc                   V ^8  d   QhRR/# )rF   rI   r   r5   )rK   s   "r=   rL   prompt.<locals>.__annotate__.  s      5 r<   c            	       < \         P                  ! ^ R7      p V P                  4        V P                  \	        SS,          RR7      4       RP                  S4      pV'       d+   V P                  \        P                  ! R	VR3R
4      4       M*V P                  \        P                  ! R	R
RSR34      4       V P                  \	        SS,          RR7      4       S'       d@   \         F3  w  r#V P                  \        P                  ! RVR3RV 2R34      4       K5  	  V # S'       g   V P                  \	        RRR7      4       V # )r   r  r  r  r  z
dim italicrt  r{  z  ? for shortcuts)u   ❯ r  )rb  white)r  r  )rt  r  )r   r  r|  r  r   r}  r  TEXT_SHORTCUTS)	r  
input_textr  r  buffer	line_charr(  re  r  s	       r=   render_promptprompt.<locals>.render_prompt.  s
   

1%d9u,E:;WWV_
MM$--(;j"=MObcdMM')<i+WcId 	d9u,E:;&4"MM*|Z.HRPTv;X]J^_ '5  MM$2%@Ar<   T)r  	transientrefresh_per_second?Nr  )r  r  r   r2   r1   ENTERrn  ESC	BACKSPACEpopr   isprintabler  r}  )r  r  r'  r(  r4  livechr2  r3  re  r  s   &$$d   @@@@r=   promptr@  "  s,    FLLEIN 8 
mow$SU	V	VZ^BBSYY Sy%3!3MO,SWW}!%*NKK0S]]"JJLKK02w!| 0 0b!MO,= 
W@ 776?A 
W	Vs+   A F;F6F?5F9F*FF%	spinnerlinespinner_stylez	bold bluer7  r6  Tc               4    V ^8  d   QhRRRRRRRRRR	R
RRR/# )rF   r  r   r  r*  rA  r  rC  r7  r   r6  r   rI   zIterator[UpdateFn]r5   )rK   s   "r=   rL   rL   q  sN      
 	
    r<   c             #  .  aaa	a
"   \        V\        4      '       d   TM\        \        V4      4      o	\        W#R 7      o
R V	V
3R llo\	        S! 4       V VVR7      ;_uu_ 4       oRR VVV	3R lllpVx  RRR4       R#   + '       g   i     R# ; i5i)r  c                   V ^8  d   QhRR/# )rF   rI   r   r5   )rK   s   "r=   rL   !live_status.<locals>.__annotate__}  s     O OW Or<   c                 &   < \        S S.R R RR7      # )F)rr  equalr  r  r   )r  spins   r=   _renderlive_status.<locals>._render}  s    T{5vNNr<   r  r7  r6  Nc                    V ^8  d   QhRRRR/# )rF   new_textzstr | Text | NonerI   rJ   r5   )rK   s   "r=   rL   rG    s     	' 	'. 	'$ 	'r<   c                   < V eE   \        V \        4      '       d   T M\        \        V 4      4      oSP                  S! 4       4       R # R # r`   )rD  r   r  rn  )rO  rK  r>  r  s   &r=   rn  live_status.<locals>.update  s8    #",Xt"<"<h$s8}BUGI& $r<   r`   )rD  r   r  r   r   )r  r  rA  rC  r7  r6  rn  rK  r>  r  rJ  s   &&$$$$ @@@@r=   live_statusrR  p  s      #4..DTOC70DO O 
	-	
 

 
	' 	' 
 
 
 
s   AB%B7
BB		Bc                    V ^8  d   QhRRRR/# )rF   rd  r   rI   rJ   r5   )rK   s   "r=   rL   rL     s     7: 7:- 7:D 7:r<   c                l  a  R  R lp  \        \        P                  ! R4      S P                  VRR7      pTP                  4       '       g   S P                  P                  4        Ka  R T 3R llpS P                  P                  4       pS P                  P                  Y2TS P                  R7       S P                  P                  4        S P                  P                  \        P                  ! RR4      4       TP                  R4       F*  pS P                  P                  \        R	T 24      4       K,  	  \        S P                  \        P                  ! R
4      4      ;_uu_ 4        TP                  4       '       g   \         P"                  ! R4       K.   RRR4       RpTP%                  4        FQ  pTP&                  R8X  d2   TP(                  P*                  R8X  d   TP(                  P,                  p\/        S Yv4       KS  	  EK	    \         d     R# i ; i  + '       g   i     L; i)c                    V ^8  d   QhRRRR/# )rF   r?  r  rI   rJ   r5   )rK   s   "r=   rL    _text_mode.<locals>.__annotate__  s        c  d  r<   c                D    V \         P                  8X  d   \        4       hR # r`   )r1   CTRL_Tr4   )r?  s   &r=   	_key_read_text_mode.<locals>._key_read  s    - r<   z  [bold]User input[/bold]: zType to talk to your agent)r  r'  r(  c               $    V ^8  d   QhRRRRRR/# )rF   r  r  
result_futzasyncio.Future[list[RunEvent]]rI   rJ   r5   )rK   s   "r=   rL   rV    s#     	3 	3 	3:X 	3]a 	3r<   c                   <a R  V3R llpR V3R llp\         P                  ! V! V 4      4      pVP                  V4       R# )c                    V ^8  d   QhRRRR/# )rF   r  r  rI   zlist[RunEvent]r5   )rK   s   "r=   rL   @_text_mode.<locals>._generate_with_context.<locals>.__annotate__  s     * *c *n *r<   c                   <"   SP                   P                  V R 7      G Rj  xL
 pVP                  P                  4       #  L5i))
user_inputN)r  runeventsr  )r  r  rd  s   & r=   	_generate=_text_mode.<locals>._generate_with_context.<locals>._generate  s8     \\--->>{{'')) ?s    AAAc                    V ^8  d   QhRRRR/# )rF   taskzasyncio.Task[list[RunEvent]]rI   rJ   r5   )rK   s   "r=   rL   r_    s     9 9%A 9d 9r<   c                   < V P                  4       ;p'       d   SP                  V4       R # SP                  V P                  4       4       R # r`   )	exceptionset_exception
set_resultresult)rg  ri  r\  s   & r=   _done_callbackB_text_mode.<locals>._generate_with_context.<locals>._done_callback  s7     $ 0090,,Y7))$++-8r<   N)r   r   add_done_callback)r  r\  rd  rm  rg  rd  s   &f   r=   _generate_with_context*_text_mode.<locals>._generate_with_context  s;    * *9 9 &&y7D"">2r<   )context
    z  [dim]Thinking...[/dim]r  Nr  rB  )     ● #1FD5F9)Youbold #1FD5F9)r@  r   from_markupr  KeyboardInterruptstripbellr  create_futurer   r  r  r  splitrR  r   r   r   rl  typerE  rG  rH  _print_run_event)rd  rY  r  rp  hrB  last_user_metricsr?  s   f       r=   
_text_moder    s     	  !>?		%8	D zz||IINN	3 	3 -.II,C,C,E			&&'=QPQP\P\&]						MM('	
 JJt$DIIOOD4v/0 % D$4$45O$PQQffhh

3  R 7;XXZEzzY&5::??f+D$)JJ$6$6!Q9  O ! 		D RQs#   -H /H#H#H H #H3	z	list[str]AGENT_PALETTEc                    V ^8  d   QhRRRR/# )rF   r  r  rI   r   r5   )rK   s   "r=   rL   rL     s     6 6s 6u 6r<   c                    \         P                  ! V P                  R 4      ^R7      P                  4       p\        P                  VR4      \        \        4      ,          p\        \        V,          RR7      # )zutf-8)digest_sizebigTr  )	hashlibblake2bencodedigestr   
from_bytesr   r  r   )r  r  r"  s   &  r=   _agent_styler    sP    G,!<CCEA
..E
"S%7
7C}S)55r<   c               (    V ^8  d   QhRRRRRRRR/# )rF   r  r  	max_linesr   r  rI   r5   )rK   s   "r=   rL   rL     s(     
, 
, 
, 
, 
,c 
,r<   c                    \         P                  ! WR 7      p\        V4      V8:  d   RP                  V4      # V^,
          pVRV pVRR pRP                  VR.,           V,           4      # ))r  rs  Nz...r  )textwrapwrapr   r}  )r  r  r  wrapped
head_countheadtails   &&&    r=   _truncate_textr    se    mmD.G
7|y yy!!QJ;JD23<D99TUG^d*++r<   c                    V ^8  d   QhRRRR/# )rF   secondsr   rI   r  r5   )rK   s   "r=   rL   rL     s       3 r<   c                T    V R ,          pV^
8  d   VR R2# V^8  d   VR R2# VR R2# )r  z.0fmsz.1fz.2fr5   )r  r  s   & r=   _format_duration_msr    sC    	4B	RxS}	qS}S}r<   c               $    V ^8  d   QhRRRRRR/# )rF   user_metricsllm.MetricsReport | Noneassistant_metricsrI   zText | Noner5   )rK   s   "r=   rL   rL     s&     1% 1%*1%/1% 1%r<   c                `   . pV '       d{   R V 9   d7   V R ,          pVP                  R	4       VP                  \        V4      R34       RV 9   d7   V R,          pVP                  R
4       VP                  \        V4      R34       V'       d{   RV9   d7   VR,          pVP                  R4       VP                  \        V4      R34       RV9   d7   VR,          pVP                  R4       VP                  \        V4      R34       . pV'       dG   RV9   d@   VR,          pVP                  R4       TP                  \        V4      VR8  d   RMR34       V'       g   V'       g   R# . p\        V4      ^,          p\        V4       F^  pV^ 8  d   VP                  R4       VP                  W'^,          ,          4       VP                  W'^,          ^,           ,          4       K`  	  V'       d+   V'       d   VP                  R4       VP	                  V4       \
        P                  ! V!  # )end_of_turn_delayr  on_user_turn_completed_delayllm_node_ttfttts_node_ttfbe2e_latencyr  r   N)zend_of_turn: r  )zturn_completed_cb: r  )z
llm_ttft: r  )z
tts_ttfb: r  )ze2e: r  )u    · r  )u     ─  r  )r  r  r   r$  extendr   r  )r  r  partsrm  	e2e_parts	assembled
pair_countrC  s   &&      r=   rI  rI    s    $&E ,.01ALL12LL-a0%89)\9;<ALL78LL-a0%89 //!/2ALL./LL-a0%89//!/2ALL./LL-a0%89')I].??m,)*-a018%OP')IUqJ:q5011u&1uqy)*	  23#==)$$r<   c               (    V ^8  d   QhRRRRRRRR/# )	rF   rd  r   r?  r(   r  r  rI   rJ   r5   )rK   s   "r=   rL   rL   %  s6     X> X>X>X> 0X> 
	X>r<   c                r	   VP                   R 8X  dc   V P                  P                  4        V P                  P                  \        P                  ! RVP
                  P                  R34      4       R# VP                   R8X  Ed   VP
                  P                  pTpVP                  4       P                  R4      ;'       g     VP                  4       P                  R4      pV'       g    ^ RI
pVP                  R4      pV^ 8  d   W7R pVP                  ! V4      p	\        V	\        4      '       dr   . p
V	P                  4        F*  w  rVf   K  VR8w  g   K  V
P!                  V RV 24       K,  	  R	P#                  V
R
,          4      p\%        V
4      ^8  d
   VR,          pV'       d@   V P                  P                  \        P                  ! R\-        V^R7      R34      4       R# V P                  P                  \        P                  ! RVR34      4       R# VP                   R8X  d   VP.                  pVP0                  p\3        VP4                  P6                  4      p\3        VP4                  P6                  4      pV P                  P                  \        P                  ! RR\        VP4                  P6                   VR7      R\        VP4                  P6                   VR7      4      4       R# VP                   R8X  EdV   VP
                  P8                  '       Ed7   V P                  P                  4        V P                  P                  \        P                  ! RR4      4       VP
                  P8                  P;                  R4       F*  pV P                  P                  \        RV 24      4       K,  	  \=        VP
                  P>                  R8X  d   TMRVP
                  P>                  R8X  d   VP
                  P@                  MR4      pVe:   \        R4      pVPC                  V4       V P                  P                  V4       R# R# R# \D        PF                  ! RVP                    24       R#   XP&                  \(        \*        3 d    \-        T^R7      p ELi ; i)function_callrx  function_call_outputr   ri  N{r  =z, :N   Nz, ...)r  #EF4444r  agent_handoffr  r  rs  rt  rC  zunknown RunEvent type )u     ➜ rv  )u       ✗ r  )u       ✓ #6BCB77)ru  z#FFD93D)z	Handoff: zbold #FFD93D)u    → r  )ru  r  )Agentzbold #6BCB77)$r  r  r  r   r  rE  r  r  r  
startswithr  findloadsrD  r  itemsr  r}  r   JSONDecodeError	TypeError
ValueErrorr  	old_agent	new_agentr  rY   r7   text_contentr~  rI  rG  rH  append_textr!   warning)rd  r?  r  r  display_outputis_errorr  
json_startjson_strr   summary_partskrm  r  r  	old_style	new_stylerB  r  metrics_lines   &&&                 r=   r  r  %  s   
 zz_$						MM(.1	
 
-	-""<<>,,W5__9R9RS^9_E#[[-
?%k2H::h/D!$--(*$(JJLDA }f - 4 4s!A3Z @ %1 *.=3D)E}-1*g5N IIOO.#Fa8)D IIOO.#U+ 
	&OO	OO	 !4!4!=!=>	 !4!4!=!=>				MM(-	++445iH#	++445iH	
 
y	 ::"""IIOOIIOO,- 

//55d;		tD6] 34 < 0%*ZZ__%C!&+jjoo&D

""$L '#F|((6		- ( #( 	/

|<=m (()Z@ E!/!!DEs    -A R	 R	 AR	 	)R65R6c               (    V ^8  d   QhRRRRRRRR/# )rF   rd  r   r  r  r  rI   rJ   r5   )rK   s   "r=   rL   rL     s)     ! != !: !j !]a !r<   c                 aa \         P                  ! 4       oR oR VV3R llp\         P                  ! VRR7      pVP                  4        V P	                  RVR7       V P                  RVR7       \        Y P                  ;'       g    RR7      oSP                  4        \        SV P                  ^RR7      ;_uu_ 4        SP                  4       '       g)   SP                  4        \        P                  ! R	4       K>   R R R 4       V P	                  R
4       V P                  R
4       SP                  4       '       d   \        4       hR #   + '       g   i     LT; i)Nc                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   !_audio_mode.<locals>.__annotate__  s     	2 	2d 	2r<   c                 (  < SP                  4       '       g{   \        4       p V \        P                  8X  d   SP	                  4        R# V R 8X  d   Se   SP
                  '       * Sn        Kj  V \        P                  8X  g   K  Sf   K  RSn        K  R# )r8  NF)is_setr2   r1   rX  r   re  r:  )r?  ctrl_t_e
visualizers    r=   _listen_for_keys%_audio_mode.<locals>._listen_for_keys  si    //##BSZZsz50:0I0I,I
)sww:#9,1
) $r<   T)targetdaemon)r  unknownrO   rM  g?F)r   r   Threadr  r  r  r\  r  rn  r   r  r  r   r   r4   )rd  r  r  r  listenerr  r  s   &$$  @@r=   _audio_moder    s    H-1J	2 	2 '7EHNNT,7$}5$Qll.G.GiHJ	j!))d	S	S//##JJt $ 
T
 U#% m  
T	Ss   E(EE	c                  R    ] tR tRtR R ltR R ltR R ltR R	 ltR
 R ltRt	R# )_ConsoleWorkeri  c               $    V ^8  d   QhRRRRRR/# )rF   serverr*   shutdown_cbr   rI   rJ   r5   )rK   s   "r=   rL   _ConsoleWorker.__annotate__  s!      + H  r<   c               	    \         P                  ! 4       V n        Wn        W n        \
        P                  ! 4       V n        R V n        R# rr   )	r   new_event_looprS   _server_shutdown_cbr   r   r#  _closed)rX   r  r  s   &$$r=   rR   _ConsoleWorker.__init__  s2    ++-
'^^%
r<   c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   r    s      t r<   c                	    \         P                  ! V P                  R 7      V n        V P                  P	                  4        R# ))r  N)r   r  _worker_thread_threadr  rg   s   &r=   r  _ConsoleWorker.start  s*     ''t/B/BCr<   c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   r    s      d r<   c                	:    V P                   P                  4        R # r`   )r  r}  rg   s   &r=   r}  _ConsoleWorker.join  s    r<   c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   r    s     P P$ Pr<   c                	    V P                   ;_uu_ 4        \        P                  ! V P                  P	                  4       V P
                  4       R R R 4       R #   + '       g   i     R # ; ir`   )r#  r   run_coroutine_threadsafer  acloserS   rg   s   &r=   shutdown_ConsoleWorker.shutdown  s8    ZZZ,,T\\-@-@-BDJJO ZZZs   :AA*	c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   r    s     5 5 5r<   c                	   a  \         P                  ! S P                  4       R  V 3R llpS P                  P                  V! 4       4       R# )c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   3_ConsoleWorker._worker_thread.<locals>.__annotate__  s     	  	 4 	 r<   c                   <"   SP                   ;_uu_ 4        SP                  '       d   SP                  4         R R R 4       R #  R R R 4       \        P                  SP
                  n        SP
                  P                  R4      R V3R ll4       p SP
                  P                  RRR7      G R j  xL
  SP                  4        R #   + '       g   i     L; i L)5i)Nworker_startedc                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   H_ConsoleWorker._worker_thread.<locals>._async_main.<locals>.__annotate__  s      4 r<   c                    < \         P                  ! S P                  P                  R RRR7      S P                  4       R# )zconsole-roomr  T)agent_identityfake_jobN)r   r  r  simulate_jobrS   rg   s   r=   _simulate_jobI_ConsoleWorker._worker_thread.<locals>._async_main.<locals>._simulate_job  s8    00LL--&y4 .  JJ	r<   Tdevmodeunregistered)	r#  r  r  r   THREADr  _job_executor_typeoncerb  )r  rX   s    r=   _async_main2_ConsoleWorker._worker_thread.<locals>._async_main  s     <<<%%'  
 />.D.DDLL+\\/0 1 ,,""4d"CCC#   Ds.   C!$C
C!A.C!5C6C!C		C!N)r   set_event_looprS   run_until_complete)rX   r  s   f r=   r  _ConsoleWorker._worker_thread  s5    tzz*	  	 ( 	

%%km4r<   )r  r#  rS   r  r  r  N)
r7   r8   r9   r:   rR   r  r}  r  r  r;   r5   r<   r=   r  r    s!    P5 5r<   r  r  c               4    V ^8  d   QhRRRRRRRRRR	R
RRR/# )rF   r  r*   r  r  r  r  r  ru  r   r  r  rI   rJ   r5   )rK   s   "r=   rL   rL     sY     T+ T+T+ T+ 	T+
 T+ T+ T+ 
T+r<   c                  aa \         P                  4       pW6n        R Vn        WFn        \        We4       VP                  RRR7       VP                  '       d6   VP                  RVP                   2R\        P                  ! R4      R7       VP                  R4        VP                  WR	7       R
oR R lpR VV3R llp\         F  p	\        P                  ! W4       K  	  \        WR7      oSP                  4         VP                  4          VP                  R8X  d   \!        V4       K   VP                  R8X  d   \#        WaVR	7       K@  KB    \$         d    TP                  R8X  d   RMRTn         Kj  i ; i  \&         d     Mi ; iSP)                  4        SP+                  4        R#   SP)                  4        SP+                  4        i ; i  \,        \.        3 dT   p
TP                  R4       TP                  RT
 24       TP                  R4       \0        P2                  ! ^R7      RhRp
?
ii ; i)Tu   Starting console mode 🚀Agents)r   z#Session recording will be saved to 	Recordingzblack on redr  r  )r  r  Fc                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   "_run_console.<locals>.__annotate__  s     	 	T 	r<   c                      \         P                  ! \         P                  4       R #   \         d=     \         P                  ! \         P                  4        R #   \         d      R # i ; ii ; ir`   )signalraise_signalSIGTERMr  SIGINTr5   r<   r=   _on_worker_shutdown)_run_console.<locals>._on_worker_shutdown  sQ    ##FNN3 ''6  s&   $( A/$AA+&A/*A++A/c               $    V ^8  d   QhRRRRRR/# rF   sigr   r]   zFrameType | NonerI   rJ   r5   )rK   s   "r=   rL   r    s"     	& 	&c 	&*: 	&t 	&r<   c                P   < S'       g   R o\        4       hSP                  4        R# rl   )r@   r  )r  r]   console_workerexit_triggereds   &&r=   _handle_exit"_run_console.<locals>._handle_exit  s    !!%j ##%r<   )r  r  r  r  [error]codeN)r   r   rc  rk  ru  r  r  r{  r   parser  HANDLED_SIGNALSr  r  r  r  r  r  r4   r@   r  r}  r   r  typerExit)r  r  r  r  ru  r  rd  r  r#  r  er!  r"  s   $$$$$$     @@r=   _run_consoler-    s    	""$ANAIHa#GG(hG7xxx	1!2E2E1FGkk.1 	 	
 GGCL8+
 	
###[		& 	& #CMM#, # (vW	"%%'U~~/"172#AP]^ 3 # U01&0HWfANU  		 ##%! ##%!j! +		'!	jja d*	+sz   !A#G F E 3F 5E F %F <F ?F  F FF6 FF6  G 6"GG H?,AH::H?c               (    V ^8  d   QhRRRRRRRR/# )	rF   r  r*   argszproto.CliArgsjupyterr   rI   rJ   r5   )rK   s   "r=   rL   rL   (  s/     N! N! N!= N!4 N!TX N!r<   c                	  a aaa R pSP                   '       d   \        P                  4       pRoS'       g-   R V3R llp\         F  p\        P                  ! WT4       K  	  \        VSP                  4       \        P                  ! 4       p\        P                  ! V4       RVn
        R VVV 3R llpR pSP                  '       d"   ^RIHp	 V	! S SVR7      pVP                  4         VP                  V! S 4      R	R
7      p
 VP!                  V
4        RoSP                   '       g!    VP!                  S P%                  4       4       VP!                  S P-                  4       4       V'       d    VP!                  VP-                  4       4       S'       d   TP3                  4        R # \4        P6                  ! \"        4      ;_uu_ 4         \        P8                  ! T4      pT F  pTP;                  4        K  	  TP!                  \        P<                  ! TRR/ 4       TP!                  TP?                  4       4       TP!                  TPA                  4       4       TP3                  4         R R R 4       R #   \"         d     ELti ; i  \        P&                   d    \(        P*                  ! R4        ELqi ; i  \"         d9    S'       g-   \(        P*                  ! R4       ^ R IpTP0                  ! ^4        ELqi ; i  TP!                  TP?                  4       4       TP!                  TPA                  4       4       TP3                  4        i ; i  + '       g   i     R # ; i  S'       d   TP3                  4        i \4        P6                  ! \"        4      ;_uu_ 4         \        P8                  ! T4      pT F  pTP;                  4        K  	  TP!                  \        P<                  ! TRR/ 4       TP!                  TP?                  4       4       TP!                  TPA                  4       4       TP3                  4        MS  TP!                  TP?                  4       4       TP!                  TPA                  4       4       TP3                  4        i ; i R R R 4       i   + '       g   i     i ; i; i)NFc               $    V ^8  d   QhRRRRRR/# r  r5   )rK   s   "r=   rL   !_run_worker.<locals>.__annotate__1  s"     	! 	!c 	!*: 	!t 	!r<   c                0   < S'       g   R o\        4       hR# rl   )r@   )r  r]   r"  s   &&r=   r#  !_run_worker.<locals>._handle_exit1  s    !!%j  "r<   r  c                    V ^8  d   QhRRRR/# )rF   workerr*   rI   rJ   r5   )rK   s   "r=   rL   r3  A  s     . .+ .$ .r<   c                   <"    SP                  SP                  SR 7      G Rj  xL
  R#  L  \         d    \        P                  ! R4        R# i ; i5i)r  Nzworker failed)rb  r  r  r!   ri  )r7  r/  r0  r  s   &r=   _worker_run _run_worker.<locals>._worker_runA  sA     	.**T\\*HHH 	._-	.s1   A . ,. A. !AAAA)WatchClientrG   worker_main_task_clir  z!drain timed out, forcing shutdownexiting forcefullyreturn_exceptionsT)!r  r   r   r)  r  r  r  r   r  r  slow_callback_durationreloadwatcherr;  r  r   r  r@   drainTimeoutErrorr!   r  r  os_exitr  
contextlibsuppress	all_tasksr   gathershutdown_asyncgensshutdown_default_executor)r  r/  r0  rd  r#  r  rG   r9  watch_clientr;  	main_taskrF  tasksrg  r"  s   fff           @r=   _run_workerrQ  (  s   "A|||&&(N	! 	! #CMM#, # a(!!#D4 "%D. . L{{{("64d;'!$$[%8?U$V		##I.	"N<<<H++FLLN; ##FMMO4''(;(;(=> JJL$$X..	!#--d3E % !& ++GNNE,ZUY,Z[++D,C,C,EF++D,J,J,LMJJL /.3  		 ++ HNN#FGH  	34	$ ++D,C,C,EF++D,J,J,LMJJL /.. JJL$$X..	!#--d3E % !& ++GNNE,ZUY,Z[++D,C,C,EF++D,J,J,LMJJL ++D,C,C,EF++D,J,J,LMJJLL /...s   ,M. I= K -J &K 3K MAL$AM=JM. JM. +J>:K =J>>K L,L M. LM. AMMM+	.<R?*R,	,AQ AR,	ARR,	#	R?,R<7R?c                  .    ] tR tRtRtRtRtRtRtRt	Rt
R	# )
LogLeveliy  r  DEBUGINFOWARNERRORCRITICALr5   N)r7   r8   r9   r:   tracedebuginfowarnr   criticalr;   r5   r<   r=   rS  rS  y  s     EEDDEHr<   rS  c                    V ^8  d   QhRRRR/# )rF   r  r*   rI   ztyper.Typerr5   )rK   s   "r=   rL   rL     s     ~ ~{ ~{ ~r<   c                  a  \         P                  ! R R7      pVP                  RR7      R R l4       p\        \        P
                  ! S P                  R4      4      p\        \        P
                  ! S P                  R4      4      pVP                  4       RRR	RR
RRRRRRV/R V 3R lll4       pVP                  4       RVRRRRRRRR/R V 3R lll4       pVP                  4       RVRRRRRRRR/R V 3R lll4       pVP                  4       R\        P                  RRRRRRRR/R V 3R lll4       pVP                  4       R R l4       p	V# )rich)rich_markup_modeT)invoke_without_commandc                    V ^8  d   QhRRRR/# )rF   ctxztyper.ContextrI   rJ   r5   )rK   s   "r=   rL    _build_cli.<locals>.__annotate__  s     1 1= 1T 1r<   c                    V P                   f/   \        V P                  4       4       \        P                  ! 4       hV P                   R9   d   R\
        P                  R&   R # R # )N1LIVEKIT_DEV_MODE)r  r#  )invoked_subcommandr  get_helpr*  r+  rF  environ)rd  s   &r=   _set_dev_mode!_build_cli.<locals>._set_dev_mode  sK    !!)#,,.!**,!!%77-0BJJ)* 8r<   Fr  Nr  list_devicesr  ru  r  c               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# )rF   r  zeAnnotated[str | None, typer.Option(help='Numeric input device ID or input device name substring(s)')]r  zgAnnotated[str | None, typer.Option(help='Numeric output device ID or output device name substring(s)')]rn  zXAnnotated[bool, typer.Option(help='List all available input and output audio devices.')]r  zOAnnotated[bool, typer.Option(help='Whether to start the console in text mode')]ru  zHAnnotated[bool, typer.Option(help='Whether to record the AgentSession')]r  mAnnotated[LogLevel, typer.Option(help='Set the log level', case_sensitive=False, envvar='LIVEKIT_LOG_LEVEL')]rI   rJ   r5   )rK   s   "r=   rL   re    sS     4
 4

4

4

4
(
)4
0 Y14
2
34
> 
?4
r<   c           	     D  < V'       d    \        4        \        P                  ! 4       hV '       d"   V P                  4       '       d   \	        V 4      p V'       d"   VP                  4       '       d   \	        V4      p\        ST TV'       d   RMRVVP                  R7       R# )zE
Run a [bold]LiveKit Agents[/bold] in [yellow]console[/yellow] mode.
r  r  )r  r  r  r  ru  r  N)r&  r*  r+  isdigitr   r-  value)r  r  rn  r  ru  r  r  s   $$$$$$r=   r  _build_cli.<locals>.console  ss    H  "**,L0022|,L]2244.M%'Woo	
r<   urlapi_key
api_secretdrain_timeoutc               0    V ^8  d   QhRRRRRRRRR	R
RR/# )rF   r  rp  ru  |Annotated[str | None, typer.Option(help='The WebSocket URL of your LiveKit server or Cloud project.', envvar='LIVEKIT_URL')]rv  Annotated[str | None, typer.Option(help='API key for authenticating with your LiveKit server or Cloud project.', envvar='LIVEKIT_API_KEY')]rw  Annotated[str | None, typer.Option(help='API secret for authenticating with your LiveKit server or Cloud project.', envvar='LIVEKIT_API_SECRET')]rx  zlAnnotated[int | None, typer.Option(help='Time in seconds to wait for jobs to finish before shutting down.')]rI   rJ   r5   )rK   s   "r=   rL   re    sJ     /
 /

/

/

/
,
-/
:
;/
F 
G/
r<   c           
        < Ve   SP                  VR7       \        S\        P                  ! V P                  VVVR7      R7       R # )N)rx  )r  ru  rv  rw  r  r/  )update_optionsrQ  r-   CliArgsrs  )r  ru  rv  rw  rx  r  s   $$$$$r=   r  _build_cli.<locals>.start  sD    J $!!!>#//%		
r<   rB  c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )rF   r  rp  rB  z`Annotated[bool, typer.Option(help='Enable auto-reload of the server when (code) files change.')]ru  rz  rv  r{  rw  r|  rI   rJ   r5   )rK   s   "r=   rL   re    sR     P P
P
P
P&
'P4
5PB 
CPr<   c           	       <aa \         P                  ! V P                  VVVR VR7      p\        P	                  4       p\        W`P                  4       \        P                  P                  R4      pVR8X  d+   VP                  '       d   VP                  R4       RVn	        VP                  '       g   \        SVR7       R# ^RIHp \        P                  ! \         P"                  ^ ,          4      P$                  p	\&        P(                  ! 4       o\&        P*                  ! S4       V! \        SWSR	7      oR
 VV3R llp
\,         F  p\.        P.                  ! W4       K  	  R V3R llp SP1                  V! 4       4       R#   \2         d    \4        P6                  ! 4       Rh\8         d1    \:        P<                  ! R4       \        P>                  ! ^4        R# i ; i)T)r  ru  rv  rw  r  rB  TERM_PROGRAMz	iTerm.appzH[error]Auto-reload is not supported on the iTerm2 terminal, disabling...Fr~  N)WatchServerr<  c               $    V ^8  d   QhRRRRRR/# r  r5   )rK   s   "r=   rL   -_build_cli.<locals>.dev.<locals>.__annotate__;  s'     	O 	Oc 	O*: 	Ot 	Or<   c                T   < \         P                  ! SP                  4       SR 7       R# )r<  N)r   r  r  )r  r]   rG   watch_servers   &&r=   r#  -_build_cli.<locals>.dev.<locals>._handle_exit;  s    ,,\-@-@-BNr<   c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   r  A  s     	% 	% 	%r<   c                 D   <"   S P                  4       G R j  xL
  R #  L5ir`   )rb  )r  s   r=   	_run_loop*_build_cli.<locals>.dev.<locals>._run_loopA  s     ""$$$s     r?  ) r-   r  rs  r   r   r  rF  rk  r  rB  r  rQ  rC  r  r.  r/  r  argvparentr   r  r  r)  r  r  r@   r*  r+  rz  r!   r  rG  )r  rB  ru  rv  rw  r/  rd  term_programr  	main_filer#  r  r  rG   r  r  s   $$$$$        @@r=   r#  _build_cli.<locals>.dev  s]   F }}oo!
 &&(!__-zz~~n5;&4;;;GG^_DK{{{vD1(LL!-44	%%'t$";	dS	O 	O #CMM#, #	% 	%	##IK0 	)**,D(  	NN/0HHQK	s   1F	 	)G$3-G$#G$participant_identityc               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# )rF   r  zQAnnotated[LogLevel, typer.Option(help='Set the log level', case_sensitive=False)]ru  rz  rv  r{  rw  r|  roomz<Annotated[str, typer.Option(help='Room name to connect to')]r  z@Annotated[str | None, typer.Option(help='Participant identity')]rI   rJ   r5   )rK   s   "r=   rL   re  M  s]     P/ P/
P/
P/
P/(
)P/6
7P/>
?P/F 
GP/r<   c           	       <aaaaaa
 Sf   \        R4      o\        P                  4       p\        W`P                  4       \
        P                  ! 4       p\
        P                  ! V4       R o
SP                  R4      R V
VVVVVV3R ll4       p VP                  SP                  RRR7      4       R #   \         d    \        P                  ! 4       R h\         d1    \        P                   ! R4       \"        P$                  ! ^4        R # \&        \(        3 dT   p	TP+                  R4       TP+                  R	T	 24       TP+                  R4       \        P                  ! ^R
7      R hR p	?	ii ; i)Nzagent-r  c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   1_build_cli.<locals>.connect.<locals>.__annotate__|  s     	8 	8t 	8r<   c                 Z   < R  VVVVVV3R llp \         P                  ! V ! 4       4      oR# )c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   H_build_cli.<locals>.connect.<locals>._simulate_job.<locals>.__annotate__  s       r<   c                 :  <"   \         P                  ! S	SS4      ;_uu_4       GR j  xL
 p \         P                  ! S.R7      pV P                  P	                  V4      G R j  xL
 pVP
                  '       g:   V P                  P                  \         P                  ! SR7      4      G R j  xL
 pMVP
                  ^ ,          pR R R 4      GR j  xL
  SP                  SRXSR7      G R j  xL
  R #  L L LK L)  + GR j  xL 
 '       g   i     L@; i L*5i)N)namesr>  F)r  r  	room_infor   )	r   
LiveKitAPIListRoomsRequestr  
list_roomsroomscreate_roomCreateRoomRequestr  )
lk_apiroom_requestactive_roomr  rv  rw  r  r  r  ru  s
       r=   r  H_build_cli.<locals>.connect.<locals>._simulate_job.<locals>.simulate_job  s     >>#w
CCCv#&#7#7tf#EL(.(>(>|(L"LK&,,,*0++*A*A#BWBW]aBb*c$c	$/$5$5a$8	 DC ))"'#7	 *    D"L %d DCCCs   %DC5D7C=#C7$C=:3C=-C9.C=DC;D.D/D7C=9C=;D=D	D
D	D		DN)r   r   )r  _taskrv  rw  r  r  r  ru  s    r=   r  2_build_cli.<locals>.connect.<locals>._simulate_job{  s!     " ''7Er<   Tr  r?  r  r%  r&  )r%   r   r   r  rs  r   r  r  r
  r  rb  r@   r*  r+  rz  r!   r  rF  rG  r   r  r  )r  ru  rv  rw  r  r  rd  rG   r  r,  r  r  s   $ddddd    @r=   connect_build_cli.<locals>.connectL  s   J  '#,X#6 &&(!__-%%'t$%)	%	&	8 	8 
'	8,	/##FJJt$J$OP 	)**,D(  	NN/0HHQK*% 	/GGCLGGgaSM"GGCL**!$$.		/s+   "B5 5)E2-E2E2E2AE--E2c                   V ^8  d   QhRR/# rj   r5   )rK   s   "r=   rL   re    s     / /D /r<   c                 h   ^ RI p \        P                  4       pRVn        \	        V\
        P                  4       VP                  R4       V P                  R\        ^R7        \        P                   FY  p\        P                  ! RVP                   24       VP                  4        \        P                  ! RVP                   24       K[  	  R#   \          dT   pTP                  R4       TP                  R	T 24       TP                  R4       \"        P$                  ! ^R
7      RhRp?ii ; i)r   NTu   [yellow]`download-files` via the agent CLI is deprecated. Use `python -m livekit.agents download-files` instead — it discovers installed plugins without loading your agent code.[/yellow]zh`download-files` via the agent CLI is deprecated. Use `python -m livekit.agents download-files` instead.)
stacklevelzDownloading files for zFinished downloading files for r  r%  r&  )warningsr   r   rk  r  r  rT  r  r\  DeprecationWarningr#   r  r!   r[  packagedownload_filesr   r*  r+  )r  rd  r  r,  s       r=   r  "_build_cli.<locals>.download_files  s    &&(	!W]]+	@	

 	E	 	 	

	/ 334V^^4DEF%%'=fnn=MNO 4
  	/GGCLGGgaSM"GGCL**!$$.		/s   $A-C D1AD,,D1)	r*  Typerr  rS  r+   getvaluer  commandrZ  )
r  apprl  _start_log_default_dev_log_defaultr  r  r#  r  r  s
   f         r=   
_build_clir    s   
++v
.C\\\.1 /1 "/":":6;K;KU"ST 8 89I9I4 PQ[[]4
 4
 4
& '4
. /4
0 \a14
< =4
 4
 4
l 	[[]/
 /
 /
* +/
8 9/
D E/
 /
 /
b 	[[]P P P$ %P2 3P@ AP P Pd 	[[]P/
 NNP/ P/& 'P/4 5P/D EP/ P/ P/d 	[[]/ /@ Jr<   c                    V ^8  d   QhRRRR/# )rF   r  zAgentServer | WorkerOptionsrI   rJ   r5   )rK   s   "r=   rL   rL     s      / D r<   c                ~    \        V \        4      '       d   \        P                  ! V 4      p \	        V 4      ! 4        R # r`   )rD  r,   r*   from_server_optionsr  )r  s   &r=   run_appr    s*    &-((008vr<   )r  r  )Ctrl+Tz	text mode)zCtrl+Cexit)r  z
audio mode)rv  z#09C338z#1F5DF9z#BA1FF9z#F9AE1Fz#FA4C39)rF   P   r`   )F)__conditional_annotations__
__future__r   r   rH  rY  r1  enumr  r  r  rF  r.  r  r  r  r  r   r   r  collections.abcr   r   r   r   typesr   typingr	   r
   r   r   numpyr  r*  rich.columnsr   rich.consoler   r   r   r   	rich.liver   rich.segmentr   rich.spinnerr   
rich.styler   
rich.tabler   r   	rich.textr   
rich.themer   livekitr   r   r  r   _exceptionsr   jobr   r  r!   r  r#   utilsr$   r%   voicer&   r'   voice.run_resultr(   voice.transcriptionr)   r7  r*   r+   r,   r-   r.   r/   r0   readcharr1   r2   r  r  r  r  r  r)  r  r4   BaseExceptionr@   r  r   
AudioInputrC   AudioOutputrx   r   r  r\  Handlerr,  r  Filterr*  r&  r0  r@  r  UpdateFnrR  r  r  rX  r  r  r  rI  r  r  r  rT  r-  rQ  EnumrS  r  r  )r  s   @r=   <module>r     ss   " "         	  	  
     . % #  9 9     J J       $     " !   " $ ' 8 @ @  K K # MM
NN	) 		} 	B o& .O8 O8d[C [C~ E EPJ% J%ZE@@ @ < H 04	H
 HV S4Z$&'-.  	
 % !  >7:ty 6
,1%hX>v!H*5 *5ZT+ #==T+nN!bsDII ~B
r<   