+
    ~jdC                       ^ RI Ht ^ RIt^ RIHt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IHtHt ^R	IHt ^R
IHtHt ^RIHt ]
]]P6                  ,          ].]]P8                  ],          ,          R,          ]	]]P8                  ],          ,          R,          ,          ,          3,          t]
]P>                  ] ]PB                  ,          ].]]PD                  ],          ],          ,          ],          ]PD                  ,          R,          ]	]]PD                  ],          ],          ,          ],          ]PD                  ,          R,          ,          ,          3,          t#]
]],          ].]]P6                  ,          R,          ]	]]P6                  ,          R,          ,          ,          3,          t$ ! R R4      t% ! R R4      t&] ! R R4      4       t'] ! R R4      4       t(] ! R R4      4       t) ! R R]]PT                  ]R ,          ,          4      t+ ! R R]4      t, ! R R]4      t- ! R R4      t. ! R R4      t/R# )!    )annotationsN)ABCabstractmethod)AsyncIterableAsyncIterator	AwaitableCallable)	dataclass)Literal)rtc)llmstt)logger)FlushSentinelTimedString)ModelSettingsc                      ] tR t^)tRR/R R lltR R lt]R R l4       t]R	 R
 l4       tR R lt	R R lt
R R ltR R ltRtR# )
AudioInputsourceNc               $    V ^8  d   QhRRRRRR/# )   labelstrr   AudioInput | NonereturnNone )formats   "l/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/livekit/agents/voice/io.py__annotate__AudioInput.__annotate__*   s"       .? 4     c               	    Wn         W n        R # N)_AudioInput__label_AudioInput__sourceselfr   r   s   &$$r   __init__AudioInput.__init__*   s    r"   c                   V ^8  d   QhRR/# )r   r   zAsyncIterator[rtc.AudioFrame]r   )r   s   "r   r    r!   .         8 r"   c                	    V # r$   r   r(   s   &r   	__aiter__AudioInput.__aiter__.       r"   c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r    r!   2         s r"   c                	    V P                   # r$   )r%   r.   s   &r   r   AudioInput.label1       ||r"   c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r    r!   6         ) r"   c                	    V P                   # r$   )r&   r.   s   &r   r   AudioInput.source5       }}r"   c                   V ^8  d   QhRR/# )r   r   rtc.AudioFramer   )r   s   "r   r    r!   9        " " "r"   c                	   "   V P                   '       d#   V P                   P                  4       G R j  xL
 # \        h L
5ir$   r   	__anext__NotImplementedErrorr.   s   &r   rC   AudioInput.__anext__9   /     ;;;..000!! 1   0?=?c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r    r!   ?        & &T &r"   c                	b    V P                   '       d   V P                   P                  4        R # R # r$   r   on_attachedr.   s   &r   rM   AudioInput.on_attached?        ;;;KK##% r"   c                   V ^8  d   QhRR/# rI   r   )r   s   "r   r    r!   C   rJ   r"   c                	b    V P                   '       d   V P                   P                  4        R # R # r$   r   on_detachedr.   s   &r   rS   AudioInput.on_detachedC   rO   r"   c                   V ^8  d   QhRR/# r3   r   )r   s   "r   r    r!   G        Z Z# Zr"   c                	l    V P                   P                   R V P                  : RV P                  : R2# (label=z	, source=)	__class____name__r   r   r.   s   &r   __repr__AudioInput.__repr__G   /    ..))*'$**yWXYYr"   __label__sourcer]   
__module____qualname____firstlineno__r)   r/   propertyr   r   rC   rM   rS   r^   __static_attributes__r   r"   r   r   r   )   sV    $     "&&Z Zr"   r   c                      ] tR t^KtRR/R R lltR R lt]R R l4       t]R	 R
 l4       tR R lt	R R lt
R R ltR R ltRtR# )
VideoInputr   Nc               $    V ^8  d   QhRRRRRR/# )r   r   r   r   VideoInput | Noner   r   r   )r   s   "r   r    VideoInput.__annotate__L   s"       .? 4 r"   c               	    W n         Wn        R # r$   )_VideoInput__source_VideoInput__labelr'   s   &$$r   r)   VideoInput.__init__L   s    r"   c                   V ^8  d   QhRR/# )r   r   zAsyncIterator[rtc.VideoFrame]r   )r   s   "r   r    rn   P   r,   r"   c                	    V # r$   r   r.   s   &r   r/   VideoInput.__aiter__P   r1   r"   c                   V ^8  d   QhRR/# r3   r   )r   s   "r   r    rn   T   r4   r"   c                	    V P                   # r$   )rq   r.   s   &r   r   VideoInput.labelS   r7   r"   c                   V ^8  d   QhRR/# r   r   rm   r   )r   s   "r   r    rn   X   r:   r"   c                	    V P                   # r$   )rp   r.   s   &r   r   VideoInput.sourceW   r=   r"   c                   V ^8  d   QhRR/# )r   r   rtc.VideoFramer   )r   s   "r   r    rn   [   r@   r"   c                	   "   V P                   '       d#   V P                   P                  4       G R j  xL
 # \        h L
5ir$   rB   r.   s   &r   rC   VideoInput.__anext__[   rF   rG   c                   V ^8  d   QhRR/# rI   r   )r   s   "r   r    rn   a   rJ   r"   c                	b    V P                   '       d   V P                   P                  4        R # R # r$   rL   r.   s   &r   rM   VideoInput.on_attacheda   rO   r"   c                   V ^8  d   QhRR/# rI   r   )r   s   "r   r    rn   e   rJ   r"   c                	b    V P                   '       d   V P                   P                  4        R # R # r$   rR   r.   s   &r   rS   VideoInput.on_detachede   rO   r"   c                   V ^8  d   QhRR/# r3   r   )r   s   "r   r    rn   i   rV   r"   c                	l    V P                   P                   R V P                  : RV P                  : R2# rX   r[   r.   s   &r   r^   VideoInput.__repr__i   r`   r"   ra   rd   r   r"   r   rk   rk   K   sV    $     "&&Z Zr"   rk   c                  >    ] tR t^mt$ R]R&    R]R&    RtR]R&   RtR# )	PlaybackFinishedEventfloatplayback_positionboolinterruptedN
str | Nonesynchronized_transcriptr   )r]   re   rf   rg   __annotations__r   ri   r   r"   r   r   r   m   s%    /U*.Z.Gr"   r   c                  "    ] tR t^xt$ R]R&   RtR# )PlaybackStartedEventr   
created_atr   Nr]   re   rf   rg   r   ri   r   r"   r   r   r   x   s    >r"   r   c                  "    ] tR t^~t$ R]R&   RtR# )AudioOutputCapabilitiesr   pauser   Nr   r   r"   r   r   r   ~   s    Kr"   r   c                  H  a  ] tR t^tRRRR/R V 3R lllt]R R l4       t]R R	 l4       tR
 R ltRR/R R llt	R R lt
R R l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tR! R" ltR# R$ ltR% R& ltR'tV ;t# )(AudioOutputnext_in_chainNsample_ratec          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r   r   r   capabilitiesr   r   AudioOutput | Noner   
int | Noner   r   r   )r   s   "r   r    AudioOutput.__annotate__   s>     % % % .	%
 *%  % 
%r"   c                 <a  \         SS `  4        VS n        VS n        VS n        RS n        \        P                  ! 4       S n        VS n	        ^ S n
        ^ S n        \        ^ RR7      S n        S P                  '       dC   S P                  P                  RV 3R l4       S P                  P                  RV 3R l4       R# R# )zi
Args:
    sample_rate: The sample rate required by the audio sink, if None, any sample rate is accepted
F)r   r   playback_finishedc                h   < SP                  V P                  V P                  V P                  R 7      # ))r   r   r   )on_playback_finishedr   r   r   evr(   s   &r   <lambda>&AudioOutput.__init__.<locals>.<lambda>   s.    444 "&(&:&:,.,F,F 5 r"   playback_startedc                <   < SP                  V P                  R 7      # )r   )on_playback_startedr   r   s   &r   r   r      s    t/G/GSUS`S`/G/ar"   N)superr)   _AudioOutput__next_in_chain_sample_rate_AudioOutput__label_AudioOutput__capturingasyncioEvent%_AudioOutput__playback_finished_event_capabilities%_AudioOutput__playback_segments_count%_AudioOutput__playback_finished_countr   _AudioOutput__last_playback_evr   on)r(   r   r   r   r   r\   s   f$$$$r   r)   AudioOutput.__init__   s     	,' )0&))*&)*&9NU:
 !!# !!"$a r"   c                   V ^8  d   QhRR/# r3   r   )r   s   "r   r    r      r4   r"   c                	    V P                   # r$   )r   r.   s   &r   r   AudioOutput.label   r7   r"   c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r    r           $ $1 $r"   c                	    V P                   # r$   )r   r.   s   &r   r   AudioOutput.next_in_chain       ###r"   c                    V ^8  d   QhRRRR/# )r   r   r   r   r   r   )r   s   "r   r    r      s     S S S4 Sr"   c               	>    V P                  R \        VR7      4       R# )r   r   N)emitr   )r(   r   s   &$r   r   AudioOutput.on_playback_started   s    		$&:j&QRr"   r   c               (    V ^8  d   QhRRRRRRRR/# )	r   r   r   r   r   r   r   r   r   r   )r   s   "r   r    r      s4     + + !+ 	+
 ",+ 
+r"   c                  V P                   V P                  8  d   \        P                  ! R4       R# V ;P                   ^,          un         V P                  P                  4        \        VVVR7      pW@n        V P                  RV4       R# )z
Developers building audio sinks must call this method when a playback/segment is finished.
Segments are segmented by calls to flush() or clear_buffer()
zHplayback_finished called more times than playback segments were capturedN)r   r   r   r   )	r   r   r   warningr   setr   r   r   )r(   r   r   r   r   s   &$$$ r   r    AudioOutput.on_playback_finished   sy     ))T-K-KKNNZ &&!+&&&**,"/#$;

 #%		%r*r"   c                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r    r      s     ' '(= 'r"   c                   "   V P                   pV P                  V8  d?   V P                  P                  4       G Rj  xL
  V P                  P	                  4        KO  V P
                  #  L,5i)z
Wait for the past audio segments to finish playing out.

Returns:
    PlaybackFinishedEvent: The event that was emitted when the audio finished playing out
    (only the last segment information)
N)r   r   r   waitclearr   )r(   targets   & r   wait_for_playoutAudioOutput.wait_for_playout   s[      //,,v50055777**002&&& 8s   ;A,A*-A,c                   V ^8  d   QhRR/# rI   r   )r   s   "r   r    r      s     + +t +r"   c                	"    ^ V n         ^ V n        R# )r   N)r   r   r.   s   &r   _reset_playback_count!AudioOutput._reset_playback_count   s    )*&)*&r"   c                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r    r      s     ! !Z !r"   c                    V P                   # )zPThe sample rate required by the audio sink, if None, any sample rate is accepted)r   r.   s   &r   r   AudioOutput.sample_rate   s        r"   c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r    r      s     e e4 er"   c                	    V P                   P                  ;'       d0    V P                  '       * ;'       g    V P                  P                  # r$   )r   r   r   	can_pauser.   s   &r   r   AudioOutput.can_pause   s9    !!''dd1C1C-C-c-ctGYGYGcGcdr"   c                    V ^8  d   QhRRRR/# )r   framer?   r   r   r   )r   s   "r   r    r      s     0 0 0D 0r"   c                v   "   V P                   '       g#   RV n         V ;P                  ^,          un        R# R# 5i)zOCapture an audio frame for playback, frames can be pushed faster than real-timeTN)r   r   )r(   r   s   &&r   capture_frameAudioOutput.capture_frame   s1      #D**a/*  s   79c                   V ^8  d   QhRR/# rI   r   )r   s   "r   r    r      s     ! !t !r"   c                    RV n         R# )zJFlush any buffered audio, marking the current playback/segment as completeFN)r   r.   s   &r   flushAudioOutput.flush   s     !r"   c                   V ^8  d   QhRR/# rI   r   )r   s   "r   r    r      s     > >d >r"   c                    R# )z/Clear the buffer, stopping playback immediatelyNr   r.   s   &r   clear_bufferAudioOutput.clear_buffer       r"   c                   V ^8  d   QhRR/# rI   r   )r   s   "r   r    r           - -T -r"   c                	b    V P                   '       d   V P                   P                  4        R # R # r$   r   rM   r.   s   &r   rM   AudioOutput.on_attached   %    **, r"   c                   V ^8  d   QhRR/# rI   r   )r   s   "r   r    r     r   r"   c                	b    V P                   '       d   V P                   P                  4        R # R # r$   r   rS   r.   s   &r   rS   AudioOutput.on_detached  r   r"   c                   V ^8  d   QhRR/# rI   r   )r   s   "r   r    r     s     ' 't 'r"   c                b    V P                   '       d   V P                   P                  4        R# R# )zPause the audio playbackN)r   r   r.   s   &r   r   AudioOutput.pause  s%    $$& r"   c                   V ^8  d   QhRR/# rI   r   )r   s   "r   r    r     s     ( ( (r"   c                b    V P                   '       d   V P                   P                  4        R# R# )zResume the audio playbackN)r   resumer.   s   &r   r   AudioOutput.resume  s%    %%' r"   c                   V ^8  d   QhRR/# r3   r   )r   s   "r   r    r          _ _# _r"   c                	l    V P                   P                   R V P                  : RV P                  : R2# rY   z, next=rZ   r\   r]   r   r   r.   s   &r   r^   AudioOutput.__repr__  2    ..))*'$**wtGYGYF\\]^^r"   )	__capturingrb   __last_playback_ev__next_in_chain__playback_finished_count__playback_finished_event__playback_segments_countr   r   )r]   re   rf   rg   r)   rh   r   r   r   r   r   r   r   r   r   r   r   r   rM   rS   r   r   r^   ri   __classcell__)r\   s   @r   r   r      s    %
 -1% #'% %N   $ $S+
 /3+:' + ! ! e e 0 0 ! ! > >--'
(
_ _r"   r   c                      ] tR tRtR R l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tR R ltRtR# )
TextOutputi  c               $    V ^8  d   QhRRRRRR/# )r   r   r   r   TextOutput | Noner   r   r   )r   s   "r   r    TextOutput.__annotate__  s"     - - -5F -4 -r"   c               	    Wn         W n        R # r$   )_TextOutput__label_TextOutput__next_in_chainr(   r   r   s   &$$r   r)   TextOutput.__init__      ,r"   c                   V ^8  d   QhRR/# r3   r   )r   s   "r   r    r    r4   r"   c                	    V P                   # r$   )r  r.   s   &r   r   TextOutput.label  r7   r"   c                   V ^8  d   QhRR/# r   r   r  r   )r   s   "r   r    r     s     $ $0 $r"   c                	    V P                   # r$   )r  r.   s   &r   r   TextOutput.next_in_chain  r   r"   c                    V ^8  d   QhRRRR/# )r   textr   r   r   r   )r   s   "r   r    r  $  s     G Gs Gt Gr"   c                   "   R# 5i)z8Capture a text segment (Used by the output of LLM nodes)Nr   r(   r"  s   &&r   capture_textTextOutput.capture_text#  s        c                   V ^8  d   QhRR/# rI   r   )r   s   "r   r    r  (  s     Y Yt Yr"   c                    R# )zJMark the current text segment as complete (e.g LLM generation is complete)Nr   r.   s   &r   r   TextOutput.flush'  r   r"   c                   V ^8  d   QhRR/# rI   r   )r   s   "r   r    r  +  r   r"   c                	b    V P                   '       d   V P                   P                  4        R # R # r$   r   r.   s   &r   rM   TextOutput.on_attached+  r   r"   c                   V ^8  d   QhRR/# rI   r   )r   s   "r   r    r  /  r   r"   c                	b    V P                   '       d   V P                   P                  4        R # R # r$   r   r.   s   &r   rS   TextOutput.on_detached/  r   r"   c                   V ^8  d   QhRR/# r3   r   )r   s   "r   r    r  3  r  r"   c                	l    V P                   P                   R V P                  : RV P                  : R2# r  r  r.   s   &r   r^   TextOutput.__repr__3  r  r"   rb   r
  N)r]   re   rf   rg   r)   rh   r   r   r   r%  r   rM   rS   r^   ri   r   r"   r   r  r    sq    -   $ $ G G Y Y--_ _r"   r  c                      ] tR tRtR R l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tR R ltRtR# )VideoOutputi8  c               $    V ^8  d   QhRRRRRR/# )r   r   r   r   VideoOutput | Noner   r   r   )r   s   "r   r    VideoOutput.__annotate__9  s"     - - -5G -D -r"   c               	    Wn         W n        R # r$   )_VideoOutput__label_VideoOutput__next_in_chainr  s   &$$r   r)   VideoOutput.__init__9  r  r"   c                   V ^8  d   QhRR/# r3   r   )r   s   "r   r    r9  >  r4   r"   c                	    V P                   # r$   )r;  r.   s   &r   r   VideoOutput.label=  r7   r"   c                   V ^8  d   QhRR/# r   r   r8  r   )r   s   "r   r    r9  B  r   r"   c                	    V P                   # r$   )r<  r.   s   &r   r   VideoOutput.next_in_chainA  r   r"   c                    V ^8  d   QhRRRR/# )r   r"  r~   r   r   r   )r   s   "r   r    r9  F  s    DDD4Dr"   c                	   "   R # 5ir$   r   r$  s   &&r   r   VideoOutput.capture_frameE  s     ADr'  c                   V ^8  d   QhRR/# rI   r   )r   s   "r   r    r9  I  s      t r"   c                	    R # r$   r   r.   s   &r   r   VideoOutput.flushH  s     r"   c                   V ^8  d   QhRR/# rI   r   )r   s   "r   r    r9  K  r   r"   c                	b    V P                   '       d   V P                   P                  4        R # R # r$   r   r.   s   &r   rM   VideoOutput.on_attachedK  r   r"   c                   V ^8  d   QhRR/# rI   r   )r   s   "r   r    r9  O  r   r"   c                	b    V P                   '       d   V P                   P                  4        R # R # r$   r   r.   s   &r   rS   VideoOutput.on_detachedO  r   r"   c                   V ^8  d   QhRR/# r3   r   )r   s   "r   r    r9  S  r  r"   c                	l    V P                   P                   R V P                  : RV P                  : R2# r  r  r.   s   &r   r^   VideoOutput.__repr__S  r  r"   r4  N)r]   re   rf   rg   r)   rh   r   r   r   r   r   rM   rS   r^   ri   r   r"   r   r6  r6  8  sc    -   $ $ D D   --_ _r"   r6  c                      ] tR tRtRR R lltR R l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4       t]P                  R R l4       tRtR# )
AgentInputiW  Nc               (    V ^8  d   QhRRRRRRRR/# )r   video_changedCallable[[], None]audio_changedaudio_enabled_cbzCallable[[bool], None] | Noner   r   r   )r   s   "r   r    AgentInput.__annotate__X  s2     # #)# *# 8	#
 
#r"   c                	b    R V n         R V n        Wn        W n        W0n        RV n        RV n        R # NT)_video_stream_audio_stream_video_changed_audio_changed_audio_enabled_cb_audio_enabled_video_enabled)r(   rW  rY  rZ  s   &&&&r   r)   AgentInput.__init__X  s8     1504++!1 #"r"   c                    V ^8  d   QhRRRR/# r   enabler   r   r   r   )r   s   "r   r    r[  h  s     - - - -r"   c                	x   V'       d)   V P                   '       g   \        P                  ! R 4       WP                  8X  d   R# Wn        V P                  e   V P	                  V4       V P                   '       g   R# V'       d   V P                   P                  4        R# V P                   P                  4        R# )z+Cannot enable audio input when it's not setN)r_  r   r   rc  rb  rM   rS   r(   rh  s   &&r   set_audio_enabledAgentInput.set_audio_enabledh  s    $,,,NNHI((($!!-""6*!!!**,**,r"   c                    V ^8  d   QhRRRR/# rg  r   )r   s   "r   r    r[  |  s     - - - -r"   c                	:   V'       d)   V P                   '       g   \        P                  ! R 4       WP                  8X  d   R# Wn        V P                   '       g   R# V'       d   V P                   P	                  4        R# V P                   P                  4        R# )z+Cannot enable video input when it's not setN)r^  r   r   rd  rM   rS   rj  s   &&r   set_video_enabledAgentInput.set_video_enabled|  sh    $,,,NNHI((($!!!**,**,r"   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r    r[         # #t #r"   c                	    V P                   # r$   rc  r.   s   &r   audio_enabledAgentInput.audio_enabled      """r"   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r    r[    rr  r"   c                	    V P                   # r$   rd  r.   s   &r   video_enabledAgentInput.video_enabled  rw  r"   c                   V ^8  d   QhRR/# rz   r   )r   s   "r   r    r[         " "( "r"   c                	    V P                   # r$   )r^  r.   s   &r   videoAgentInput.video      !!!r"   c                    V ^8  d   QhRRRR/# )r   streamrm   r   r   r   )r   s   "r   r    r[         1 1- 1$ 1r"   c                	d   WP                   J d   R # V P                   '       d   V P                   P                  4        Wn         V P                  4        V P                   '       dK   V P                  '       d   V P                   P	                  4        R # V P                   P                  4        R # R # r$   )r^  rS   r`  rd  rM   r(   r  s   &&r   r  r        '''**,#"""""..0""..0	 r"   c                   V ^8  d   QhRR/# r9   r   )r   s   "r   r    r[    r~  r"   c                	    V P                   # r$   )r_  r.   s   &r   audioAgentInput.audio  r  r"   c                    V ^8  d   QhRRRR/# )r   r  r   r   r   r   )r   s   "r   r    r[    r  r"   c                	d   WP                   J d   R # V P                   '       d   V P                   P                  4        Wn         V P                  4        V P                   '       dK   V P                  '       d   V P                   P	                  4        R # V P                   P                  4        R # R # r$   )r_  rS   ra  rc  rM   r  s   &&r   r  r    r  r"   )ra  rc  rb  r_  r`  rd  r^  r$   )r]   re   rf   rg   r)   rk  ro  rh   ru  r{  r  setterr  ri   r   r"   r   rU  rU  W  s    # -(-" # # # # " " \\1 1  " " \\1 1r"   rU  c                  H   ] tR tRtR R ltR R ltR R ltR R	 lt]R
 R l4       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4       t]P                  R R l4       t]R R l4       t]P                  R R l4       tRtR# )AgentOutputi  c               (    V ^8  d   QhRRRRRRRR/# )r   rW  rX  rY  transcription_changedr   r   r   )r   s   "r   r    AgentOutput.__annotate__  s2     + +)+ *+  2	+
 
+r"   c                	~    R V n         R V n        R V n        Wn        W n        W0n        RV n        RV n        RV n        R # r]  )	_video_sink_audio_sink_transcription_sinkr`  ra  _transcription_changedrc  rd  _transcription_enabled)r(   rW  rY  r  s   &&&&r   r)   AgentOutput.__init__  sF     04/36: ++&;#""&*#r"   c                    V ^8  d   QhRRRR/# r   enabledr   r   r   r   )r   s   "r   r    r         + + +$ +r"   c                	:   V'       d)   V P                   '       g   \        P                  ! R 4       WP                  8X  d   R# Wn        V P                   '       g   R# V'       d   V P                   P	                  4        R# V P                   P                  4        R# )z,Cannot enable video output when it's not setN)r  r   r   rd  rM   rS   r(   r  s   &&r   ro  AgentOutput.set_video_enabled  h    4+++NNIJ)))%((*((*r"   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r    r    r  r"   c                	:   V'       d)   V P                   '       g   \        P                  ! R 4       WP                  8X  d   R# Wn        V P                   '       g   R# V'       d   V P                   P	                  4        R# V P                   P                  4        R# )z,Cannot enable audio output when it's not setN)r  r   r   rc  rM   rS   r  s   &&r   rk  AgentOutput.set_audio_enabled  r  r"   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r    r    s     3 3 3$ 3r"   c                	:   V'       d)   V P                   '       g   \        P                  ! R 4       WP                  8X  d   R# Wn        V P                   '       g   R# V'       d   V P                   P	                  4        R# V P                   P                  4        R# )z4Cannot enable transcription output when it's not setN)r  r   r   r  rM   rS   r  s   &&r   set_transcription_enabled%AgentOutput.set_transcription_enabled  sh    4333NNQR111&-#'''$$002$$002r"   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r    r    rr  r"   c                	    V P                   # r$   rt  r.   s   &r   ru  AgentOutput.audio_enabled  rw  r"   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r    r  
  rr  r"   c                	    V P                   # r$   rz  r.   s   &r   r{  AgentOutput.video_enabled	  rw  r"   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r    r    s     + +t +r"   c                	    V P                   # r$   )r  r.   s   &r   transcription_enabled!AgentOutput.transcription_enabled  s    ***r"   c                   V ^8  d   QhRR/# rB  r   )r   s   "r   r    r            )  r"   c                	    V P                   # r$   )r  r.   s   &r   r  AgentOutput.video      r"   c                    V ^8  d   QhRRRR/# )r   sinkr8  r   r   r   )r   s   "r   r    r         / /, / /r"   c                	d   WP                   J d   R # V P                   '       d   V P                   P                  4        Wn         V P                  4        V P                   '       dK   V P                  '       d   V P                   P	                  4        R # V P                   P                  4        R # R # r$   )r  rS   r`  rd  rM   r(   r  s   &&r   r  r        ###((*"""  ,,.  ,,.	 r"   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r    r  '  r  r"   c                	    V P                   # r$   )r  r.   s   &r   r  AgentOutput.audio&  r  r"   c                    V ^8  d   QhRRRR/# )r   r  r   r   r   r   )r   s   "r   r    r  +  r  r"   c                	d   WP                   J d   R # V P                   '       d   V P                   P                  4        Wn         V P                  4        V P                   '       dK   V P                  '       d   V P                   P	                  4        R # V P                   P                  4        R # R # r$   )r  rS   ra  rc  rM   r  s   &&r   r  r  *  r  r"   c                   V ^8  d   QhRR/# r  r   )r   s   "r   r    r  <  s     ( (0 (r"   c                	    V P                   # r$   )r  r.   s   &r   transcriptionAgentOutput.transcription;  s    '''r"   c                    V ^8  d   QhRRRR/# )r   r  r  r   r   r   )r   s   "r   r    r  @  s     7 7"3 7 7r"   c                	d   WP                   J d   R # V P                   '       d   V P                   P                  4        Wn         V P                  4        V P                   '       dK   V P                  '       d   V P                   P	                  4        R # V P                   P                  4        R # R # r$   )r  rS   r  r  rM   r  s   &&r   r  r  ?  s    +++###$$002#' ##%###***((446((446	 $r"   )	ra  rc  r  r  r  r  r`  rd  r  N)r]   re   rf   rg   r)   ro  rk  r  rh   ru  r{  r  r  r  r  r  ri   r   r"   r   r  r    s    +"+"+"3" # # # # + +     \\/ /      \\/ /  ( ( 7 7r"   r  )r   r   )0
__future__r   r   abcr   r   collections.abcr   r   r   r	   dataclassesr
   typingr   livekitr    r   r   logr   typesr   r   agentr   
AudioFrameSpeechEventr   STTNodeChatContextlistTool	ChatChunkLLMNodeTTSNoder   rk   r   r   r   EventEmitterr   r  r6  rU  r  r   r"   r   <module>r     s(   "  # M M !     =   3>>"M2#//C'(
coo34t;<=> SXX
 #--#%56	
	mm  cmmc1MABSH3==X[__`	a	b 3'#..!D(9]3>>5RUY5Y+ZZ\Z ZDZ ZD G G G ? ? ?
   P_#s''0W(XY P_f_ _D_# _>f1 f1RN7 N7r"   