
    /j$                        S SK Jr  S SKrS SKrS SKrS SKrS SKJrJr  S SK	J
r
  SSKJr  SSKJrJrJr  SS	KJrJrJrJrJr  SS
KJrJrJrJrJr   " S S5      rSS jrSS jrg)    )annotationsN)Callable	Coroutine)	FrameType   logger)aiolog_exceptionstime_ms   )Messagearecv_messageasend_messagerecv_messagesend_message)IPC_MESSAGESInitializeRequestInitializeResponsePingRequestPongResponsec                  Z    \ rS rSr          S	S jrS
S jrS
S jrSS jrS
S jrSr	g)_ProcClient   c                6    Xl         X0l        X@l        SU l        g )NF)_mp_cch_initialize_fnc_main_task_fnc_initialized)selfmp_cchlog_cchinitialize_fncmain_task_fncs        O/app/agent/.venv/lib/python3.13/site-packages/livekit/agents/ipc/proc_client.py__init___ProcClient.__init__   s     -+!    c           	     "    [         R                  R                  R                  U R                  5      n[        U[        5      n[        U[        5      (       d   S5       eX l	         U R                  U R                  U 5        [        U[        5       5        SU l        UR!                  5         g ! [         a"  n[        U[        [        U5      S95        e S nAff = f! [         R                  R"                   a  n[%        S5      UeS nAff = f)Nz-first message must be proto.InitializeRequest)errorTz failed to initialize proc_client)r
   duplex_unix_Duplexopenr   r   r   
isinstancer   	_init_reqr   r   r   	Exceptionstrr   detachDuplexClosedRuntimeError)r    cch	first_reqes       r%   
initialize_ProcClient.initialize#   s    	J//))..t||<C$S,7Ii):;; ?; 'N$$T^^T:S"4"67
 !%DJJL  S"43q6"BC ++ 	JABI	Js<   A%C (0B0 C 0
C:CCC D=D		Dc                   U R                   (       d  [        S5      e[        R                  " 5       n[        R                  " U5        UR                  U R                  R                  5        SUl         UR                  U R                  5       SS9U l        U R                  R                  5       (       d=   UR                  U R                  5        U R                  R                  5       (       d  M=  UR                  UR                  5       5        g ! [         a     NMf = f! [         a     N<f = f! UR                  UR                  5       5        f = f)Nzproc_client not initializedg?proc_client_mainname)r   r4   asyncionew_event_loopset_event_loop	set_debugr/   asyncio_debugslow_callback_durationcreate_task_monitor_task_taskdonerun_until_completeKeyboardInterruptshutdown_default_executor)r    loops     r%   run_ProcClient.run9   s     <==%%'t$t~~334&)#	F))$*<*<*>EW)XDJjjoo''++DJJ7 jjoo'' ##D$B$B$DE )  
 ! 		 ##D$B$B$DEsI   5AD$ 8D D$ 
D!D$  D!!D$ $
D1.D4 0D11D4 4!Ec                L   #    [        U R                  U5      I S h  vN   g  N7fN)r   _acch)r    msgs     r%   send_ProcClient.sendQ   s     DJJ,,,s   $"$c                t  ^ ^^^	#    [         R                  R                  R                  T R                  5      I S h  vN T l         [        R                  " 5       m[         R                  " T R                  R                  S-   5      m	[         R                  [           " 5       m[        [        S9SUU	U 4S jj5       n[        [        S9SU	4S jj5       n[        R                  " U" 5       SS9nS nT R                  R                   S:  a  [        R                  " U" 5       SS9n[        R                  " T R#                  T5      S	S9nSUU4S
 jjnUR%                  U5        Ub  UR%                  U5        UR%                  U5        TR'                  5       I S h  vN   [         R(                  " X55      I S h  vN   Ub  [         R(                  " U5      I S h  vN   T R
                  R+                  5       I S h  vN   g  GN Ni NM N. N! T R
                  R+                  5       I S h  vN    f = f7f)N
   r   c                    >#      [        TR                  [        5      I S h  vN n [        R                  " [        R                  5         TR                  5         S S S 5        [        U [        5      (       a8  [        TR                  [        U R                  [        5       S95      I S h  vN   TR!                  U 5        M   N! [        R                  R
                   a     g f = f! , (       d  f       N= f NN7f)N)last_timestamp	timestamp)r   rP   r   r
   r+   r3   
contextlibsuppressSleepFinishedresetr.   r   r   r   rX   r   send_nowait)rQ   ipc_chping_timeoutr    s    r%   _read_ipc_task1_ProcClient._monitor_task.<locals>._read_ipc_task\   s     $1$**l$KK $,,S->->?$**, @ "#{33+ JJ(QXQZ[  
 &&s+ K??77  @?s\   C>C CC $C>C+AC>-C<.C>C C(%C>'C((C>+
C95C>c                 V   >#    T I S h  vN   [        S[        R                  S9  g  N7f)Nz2worker process is not responding.. worker crashed?file)printsysstderr)r_   s   r%   _self_health_check5_ProcClient._monitor_task.<locals>._self_health_checko   s&     """H #s   )')ipc_readr<   r   health_checkmain_task_entrypointc                   > [         R                  " [        R                  5         TR	                  5         S S S 5        TR                  5         g ! , (       d  f       N= frO   )rY   rZ   r>   InvalidStateErrorsetclose)_	exit_flagr^   s    r%   _done_cb+_ProcClient._monitor_task.<locals>._done_cb   s;    (()B)BCMMO D  DCs   A
AreturnNone)rq   zasyncio.Task[None]rv   rw   )r
   r+   _AsyncDuplexr-   r   rP   r>   Eventsleepr/   r_   Chanr   r   r	   rD   ping_intervalr   add_done_callbackwaitcancel_and_waitaclose)
r    r`   rh   	read_taskhealth_check_task	main_taskrs   rr   r^   r_   s
   `      @@@r%   rE   _ProcClient._monitor_taskT   s    ??77<<T\\JJ
;	&I99T^^%@%@2%EFLXXg&(F6*, , +,$ 6* +  ++N,<:NI;?~~++a/$+$7$78J8LSa$b!++##F+2HI  ''1 ,!33H=''1.."""%%i;;; ,))*;<<< **##%%%y Kl #;< &$**##%%%s|   7H8H	H8EH HH <H
= H HH "H8?H H8H 
H H H8H5.H1/H55H8)rP   r/   r   r   r   r   rF   N)
r!   zsocket.socketr"   zsocket.socket | Noner#   z0Callable[[InitializeRequest, _ProcClient], None]r$   zBCallable[[aio.ChanReceiver[Message]], Coroutine[None, None, None]]rv   rw   ru   )rQ   r   rv   rw   )
__name__
__module____qualname____firstlineno__r&   r8   rL   rR   rE   __static_attributes__ r(   r%   r   r      sO    
"
" &
" I	
"
 Z
" 

"J,F0-=&r(   r   c            
        SSK n SSKnSSKnSSKnSSKnSSKnSSKJn  SSKJ	n  SSK
nUR                  SS5      R                  5       S;   a  gUR                  SUR                  5       5      n	U" U	5      R                  S	S	S
9  UR                  SU	SSU" 5       R                    SUR#                  5        S3SS9 n
[%        SS 3U
S9  [%        SU" 5       R&                   SU" 5       R                    S3U
S9  [%        S S3U
S9  UR)                  U
S	S9  [%        SU
S9    U R*                  " 5       nUGb  [%        SU
S9  [%        SU
S9  [%        SU
S9  U R.                  " U5      n[%        S[1        U5       S3U
S9  [3        US5       GH|  u  p[%        SU S[1        U5       S3U
S9  [%        SUR5                  5        3U
S9  [%        SUR7                  5        3U
S9  UR7                  5       (       d  [%        S UR9                  5        3U
S9   UR;                  5       n[%        S![1        U5       3U
S9  [%        S"U
S9  U H  nUR=                  USU
S#9  M      URA                  5       n[%        S%U 3U
S9  [C        US&S5      =n(       a  [%        S'U
S9  UR=                  UU
S9  OT URE                  5       nU(       a<  [%        S)U 3U
S9  [%        S*U
S9  URG                  [I        U5      UURJ                  U
S9  [%        S,U
S9  GM     O[%        S-U
S9    URO                  5       nURQ                  5       nURR                  S/-  n[%        S0U
S9  [%        S1U
S9  [%        SU
S9  [%        S2US3 S43U
S9  [%        S5URT                  S/-  S3 S43U
S9  SSS5        g! [,         a    Sn GNuf = f! [>         a  n[%        S$U 3U
S9   SnAGNnSnAff = f! [>         a  n[%        S(U 3U
S9   SnANSnAff = f! [>         a  n[%        S+U 3U
S9   SnAGNSnAff = f! [>         a'  n[%        S.U 3U
S9  URM                  U
S9   SnAGN/SnAff = f! [>         a     Nf = f! , (       d  f       g= f)6zQImplementation of stack trace dumping (callable directly or from signal handler).r   N)current_process)PathLK_DUMP_STACK_TRACES0)r   falsenoLK_DUMP_DIRT)parentsexist_okwFzlivekit-agents-pid--z.stacktrace)modedirdeleteprefixsuffix
z<============================================================rc   zProcess z (pid z) stack trace dump)rd   all_threadszASYNCIO TASKSzTotal tasks: r   z

--- Task /z ---zName: zDone: zCancelled: zStack frames: zStack trace:)limitrd   zCould not get stack: zCoroutine: cr_framezCoroutine frame:zCould not get coroutine: zException: zException traceback:zCould not get exception:  zNo asyncio event loop runningzError dumping asyncio tasks: i   z=
============================================================zMEMORY USAGEzRSS: z.2fz MBzVMS: )+r>   faulthandlerostempfiletime	tracebackmultiprocessingr   pathlibr   psutilgetenvlower
gettempdirmkdirNamedTemporaryFilepidtime_nsre   r=   dump_tracebackget_running_loopr4   	all_taskslen	enumerateget_namerG   	cancelled	get_stackprint_stackr0   get_corogetattr	exceptionprint_exceptiontype__traceback__	print_excProcessmemory_inforssvms)r>   r   r   r   r   r   r   r   r   r   frK   tasksitaskstackframer7   coror   excprocessr   	memory_mbs                           r%   _dump_stack_traces_implr      s   /	yy'-3359MMyy(;(;(=>CIOOD4O0		$	$$_%6%:%:$;1T\\^<LAN 
% 
 
8*oA&(--.f_5F5J5J4KK]^	
 	
"oA&###=d6	(//1 hQ'oA.hQ'))$/c%j\41=(2GAKs!CJ<t<1EF4==?"341=F499;-0q999;;DNN,<+=>QGG$(NN$4E!N3u:,"?aH!.q9). ) 5 5e11 5 M */
K#'==?D!Kv"6Q?+24T+JJxJ %&8q A ) 5 5hQ 5 GK"&.."2C" %C5&9 B %&<1 E ) 9 9$s)S#J[J[bc 9 d "1%G  3J 5A>
	nn&G!--/K#;7I/*.q)(#E)C,15E+//[9#>cBKe
 
(   2  ) G!$9!"=AFFG  ) K!$=aS"AJK  ) K!$=aS"AJJK  	(1!5A>Q'	(  		g
 
s   ;A$Q!N2CPA
N+AO&P(AO4;P
Q
PQA8QN($P'N((P+
O5OPOP
O1O,'P,O11P4
P>PPPP
Q
#Q?QQ

Q
QQQQ
Q+c                    [        5         g)z3Signal handler wrapper for _dump_stack_traces_impl.N)r   )signumrq   s     r%   _dump_stack_tracesr      s    r(   ru   )r   intrq   zFrameType | Nonerv   rw   ) 
__future__r   r>   rY   socketrf   collections.abcr   r   typesr   logr	   utilsr
   r   r   channelr   r   r   r   r   protor   r   r   r   r   r   r   r   r   r(   r%   <module>r      sL    "    
 /   0 0 V V {& {&|gTr(   