§
    nÈj  ã                   ó¦   — d Z ddlmZ ddlmZ ddlZddlZddlZddlZ ej	        d¦  «        Z
e G d„ d¦  «        ¦   «         Z G d„ d	¦  «        ZdS )
zHBounded metadata-only Speech transport traces; never audio or user text.é    )ÚOrderedDict)Ú	dataclassNz#uvicorn.error.device_gateway.speechc                   óN  — e Zd ZU eed<   eed<   eed<   eed<   dZeed<   dZeed<   dZe	ed	<   d
Z
eed<   dZe	ed<   dZe	ed<   dZe	ed<   dZedz  ed<   dZedz  ed<   dZeed<   dZe	ed<   dZe	ed<   dZe	ed<   dZe	ed<   dZe	ed<   dZe	ed<   dZe	ed<   d
Zeed<   d
Zeed<   dS )ÚTraceÚ	speech_idÚ
connectionÚsourceÚstartedÚprepareÚstager   Ústage_atÚ	pcm_bytesFÚbufferedÚsynth_msÚsent_framesÚplayed_framesNÚ	last_sendÚlast_progressÚlast_logÚmax_send_gap_msÚmax_send_msÚmax_lock_wait_msÚmax_write_msÚmax_progress_gap_msÚcredit_waitsÚmax_credit_wait_msÚtx_finishedÚ	stop_seen)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__Úfloatr   r   r   Úintr   Úboolr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   © ó    új/home/lighthouse/esp32-dev/.cache/main-promotion-test-20261009/server/device_gateway/speech_diagnostics.pyr   r      sq  € € € € € € à€N€N�NØ€O€O�OØ€K€K�KØ€N€N�NØ€Eˆ3ÐÐÑØ€HˆeÐÐÑØ€IˆsÐÐÑØ€HˆdÐÐÑØ€HˆcÐÐÑØ€K�ÐÐÑØ€M�3ÐÐÑØ"€Iˆu�t‰|Ð"Ð"Ñ"Ø"&€M�5˜4‘<Ð&Ð&Ñ&Ø€HˆeÐÐÑØ€O�SÐÐÑØ€K�ÐÐÑØÐ�cÐÐÑØ€L�#ÐÐÑØ Ð˜Ð Ð Ñ Ø€L�#ÐÐÑØÐ˜ÐÐÑØ€K�ÐÐÑØ€IˆtÐÐÑÐÐr(   r   c                   ó‚   — e Zd ZdZdZej        fd„Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd	„ Zd
„ Zdd„Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )ÚSpeechDiagnosticsé    i,  c                 ó:   — || _         t          ¦   «         | _        d S ©N)Úclockr   Útraces)Úselfr/   s     r)   Ú__init__zSpeechDiagnostics.__init__-   s   € ØˆŒ
Ý!‘m”mˆŒˆˆr(   c                 ój  — |                       ¦   «         }t          | j                             ¦   «         ¦  «        D ] \  }}||j        z
  | j        k    r| j        |= Œ!t          | j        ¦  «        | j        k    r:| j                             d¬¦  «         t          | j        ¦  «        | j        k    °8d S d S )NF)Úlast)	r/   Úlistr0   Úitemsr
   ÚttlÚlenÚlimitÚpopitem)r1   ÚnowÚkeyÚtraces       r)   ÚprunezSpeechDiagnostics.prune1   s¬   € Ø�jŠj‰lŒlˆÝ˜tœ{×0Ò0Ñ2Ô2Ñ3Ô3ð 	%ð 	%‰JˆC�Ø�U”]Ñ" T¤XÒ-Ð-Ø”K Ð$øÝ�$”+ÑÔ ¤Ò+Ð+ØŒK×Ò UÐÑ+Ô+Ð+õ �$”+ÑÔ ¤Ò+Ð+Ð+Ð+Ð+Ð+r(   c                 óš   — |                       ¦   «          t          |t          ¦  «        sd S | j                             |j        |f¦  «        S r.   )r>   Ú
isinstancer"   r0   ÚgetÚconnection_id)r1   Údevicer   s      r)   rA   zSpeechDiagnostics.get9   sB   € Ø�
Š
‰ŒˆÝ˜)¥SÑ)Ô)ð 	Ø�4ØŒ{�Š Ô 4°iÐ@ÑAÔAÐAr(   c                 óŽ  — |                       ¦   «         }t          |j        t          j        t          |j        ¦  «                             ¦   «         ¦  «                             ¦   «         d d…         |dv r|nd|||¬¦  «        }|| j	        |j        |j        f<   |  
                    ¦   «          |                      d|¦  «         d S )Né   )ÚscreenÚreplyÚsummaryÚunknown)r   r   Ústart)r/   r   r   ÚhashlibÚsha256r"   rB   ÚencodeÚ	hexdigestr0   r>   Úemit)r1   rC   Úreqr	   r;   r=   s         r)   ÚbeginzSpeechDiagnostics.begin?   s¼   € Ø�jŠj‰lŒlˆÝ�c”m¥W¤^µC¸Ô8LÑ4MÔ4M×4TÒ4TÑ4VÔ4VÑ%WÔ%W×%aÒ%aÑ%cÔ%cÐdgÐegÐdgÔ%hØ &Ð*HÐ HÐ H�f�fÈiÐY\Ø"¨Sð2ñ 2ô 2ˆð >CˆŒ�VÔ)¨3¬=Ð9Ñ:Ø�
Š
‰ŒˆØ�	Š	�'˜5Ñ!Ô!Ð!Ð!Ð!r(   c                 óÔ   — t          d||j        |j        |j        |j        |j        |j        |j        dœ|¤Ž}t           	                    dt          j        |d¬¦  «        ¦  «         d S )N)ÚeventÚspeechr   r	   r   r   r   r   z[SPEECH_DIAG] %s)ú,ú:)Ú
separatorsr'   )Údictr   r   r	   r   r   r   r   ÚloggerÚinfoÚjsonÚdumps)r1   rS   r=   ÚfieldsÚvalues        r)   rO   zSpeechDiagnostics.emitH   sx   € åð a˜5¨¬ÀUÔEUØ!œL°´ÈÔIZØ#(Ô#6ÀEÔDUðað aàY_ðað aˆõ 	�ŠÐ&­¬
°5ÀZÐ(PÑ(PÔ(PÑQÔQÐQÐQÐQr(   c                 ó†   — |                       ||j        ¦  «        x}r#||                      ¦   «         c|_        |_        d S d S r.   )rA   r   r/   r   r   )r1   rC   rP   Únamer=   s        r)   r   zSpeechDiagnostics.stageO   sE   € Ø—H’H˜V S¤]Ñ3Ô3Ð3ˆ5ð 	=Ø*.°·
²
±´Ð'ˆEŒK˜œ˜˜ð	=ð 	=r(   c           	      ó$  — |                       ||j        ¦  «        x}rr||c|_        |_        t	          |                      ¦   «         |j        z
  dz  ¦  «        |_        |                      d||t	          |dz  ¦  «        |j        |¬¦  «         d S d S )Néè  Ú	pcm_readyçÍÌÌÌÌV@)r   Úaudio_msr   r   )	rA   r   r   r   Úroundr/   r   r   rO   )r1   rC   rP   Úsizer   r=   s         r)   ÚpcmzSpeechDiagnostics.pcmS   s¥   € Ø—H’H˜V S¤]Ñ3Ô3Ð3ˆ5ð 	BØ.2°HÐ+ˆEŒO˜Uœ^Ý" D§J¢J¡L¤L°5´>Ñ$AÀTÑ#IÑJÔJˆEŒNØ�IŠI�k 5°DÅ5ÈÐPTÉÑCUÔCUØ$œ~¸ð ñ Bô Bð Bð Bð Bð	Bð 	Br(   c                 óB  — |                       ||j        ¦  «        }|sd S |                      ¦   «         }t          ||z
  dz  ¦  «        }t	          |j        |¦  «        |_        t          |t          ¦  «        rst          |¦  «        dk    r`t	          |j	        t          |d         dz  ¦  «        ¦  «        |_	        t	          |j
        t          |d         dz  ¦  «        ¦  «        |_
        d}	|dk    rZ|xj        dz  c_        |j        �5t          ||j        z
  dz  ¦  «        }	t	          |j        |	¦  «        |_        n||_        ||_        t	          ||	¦  «        dk    r<||j        z
  dk    r0||_        |                      d|||	|j	        |j
        ¬¦  «         d S d S d S )	Nrb   é   r   é   Úspeech_chunkiô  Ú
send_delay)Úsend_msÚgap_msr   r   )rA   r   r/   rf   Úmaxr   r@   Útupler8   r   r   r   r   r   r   r   rO   )
r1   rC   rP   Úkindr
   Útimingr=   r;   rn   ro   s
             r)   ÚsentzSpeechDiagnostics.sentZ   s°  € Ø—’˜ ¤Ñ/Ô/ˆØð 	ØˆFØ�jŠj‰lŒlˆÝ˜˜w™¨$Ñ.Ñ/Ô/ˆÝ Ô 1°7Ñ;Ô;ˆÔÝ�f�eÑ$Ô$ð 	R­¨V©¬¸Ò)9Ð)9Ý%(¨Ô)?ÅÀvÈaÄyÐSWÑGWÑAXÔAXÑ%YÔ%YˆEÔ"Ý!$ UÔ%7½¸vÀa¼yÈ4Ñ?OÑ9PÔ9PÑ!QÔ!QˆEÔØˆØ�>Ò!Ð!ØÐÔ Ñ"ÐÔØŒÐ*Ý  e¤oÑ 5¸Ñ=Ñ>Ô>�Ý(+¨EÔ,AÀ6Ñ(JÔ(J�Ô%Ð%à&)�Ô#Ø!ˆEŒOÝˆw˜ÑÔ 3Ò&Ð&¨3°´Ñ+?À1Ò+DÐ+DØ ˆEŒNØ�IŠI�l E°7À6Ø',Ô'=ÈEÔL^ð ñ `ô `ð `ð `ð `ð 'Ð&Ð+DÐ+Dr(   Nc                 ó(  — |                       ||                      d¦  «        ¦  «        }|                      d¦  «        }|r3t          |¦  «        t          us|j        |cxk     r|€|j        n|k    sn d S |                      ¦   «         }|j        �t          ||j        z
  dz  ¦  «        nd}t          |j	        |¦  «        |_	        |j        dk    }||c|_        |_        |s||j
        z
  dk    r!||_
        |                      d||¬¦  «         d S d S )Nr   Úplayed_chunksrb   r   rk   Úcodec_progress)Úprogress_gap_ms)rA   Útyper%   r   r   r/   r   rf   rp   r   r   rO   )	r1   rC   rS   Úceilingr=   Úcountr;   ÚgapÚfirsts	            r)   ÚprogresszSpeechDiagnostics.progressr   sM  € Ø—’˜ §¢¨;Ñ!7Ô!7Ñ8Ô8ˆØ—	’	˜/Ñ*Ô*ˆØð 	�˜U™œ­3Ð.Ð.°eÔ6IÈEð  7Ið  7Iò  7Ið  7IÐkrÐkzÐV[ÔVgÐVgð  AHò  7Ið  7Ið  7Ið  7IØˆFØ�jŠj‰lŒlˆØ;@Ô;NÐ;Z�e�S˜5Ô.Ñ.°$Ñ6Ñ7Ô7Ð7Ð`aˆÝ$'¨Ô(AÀ3Ñ$GÔ$GˆÔ!ØÔ# qÒ(ˆØ38¸#Ð0ˆÔ˜UÔ0Øð 	D�C˜%œ.Ñ(¨AÒ-Ð-Ø ˆEŒNØ�IŠIÐ&¨¸sˆIÑCÔCÐCÐCÐCð .Ð-r(   c                 óâ   — |                       ||j        ¦  «        x}rQ|xj        dz  c_        t          |j        t          |                      ¦   «         |z
  dz  ¦  «        ¦  «        |_        d S d S )Nrk   rb   )rA   r   r   rp   r   rf   r/   )r1   rC   rP   r
   r=   s        r)   Úcredit_waitzSpeechDiagnostics.credit_wait€   sw   € Ø—H’H˜V S¤]Ñ3Ô3Ð3ˆ5ð 	mØÐÔ !Ñ#ÐÔÝ'*¨5Ô+CÅUÈDÏJÊJÉLÌLÐ[bÑLbÐfjÑKjÑEkÔEkÑ'lÔ'lˆEÔ$Ð$Ð$ð	mð 	mr(   Únonec                 ó¤   — |                       ||j        ¦  «        x}r2|dk    |_         | j        d|f||dœ|                      |¦  «        ¤Ž d S d S )Nrt   Útx_end)ÚstatusÚerror)rA   r   r   rO   Úmetrics)r1   rC   rP   r„   r…   r=   s         r)   ÚfinishzSpeechDiagnostics.finish…   so   € Ø—H’H˜V S¤]Ñ3Ô3Ð3ˆ5ð 	ZØ &¨&Ò 0ˆEÔØˆDŒI�h ÐY¨f¸EÐYÐYÀTÇ\Â\ÐRWÑEXÔEXÐYÐYÐYÐYÐYð	Zð 	Zr(   c                 óP  — |                       ¦   «         }t          |j        t          |j        dz  ¦  «        |j        t          ||j        z
  dz  ¦  «        t          ||j        z
  dz  ¦  «        |j        |j        |j	        |j
        |j        |j        |j        |j        ¬¦  «        S )Nrd   rb   )r   re   r   Útotal_msÚstage_msr   r   r   r   r   r   r   r   )r/   rX   r   rf   r   r
   r   r   r   r   r   r   r   r   r   )r1   r=   r;   s      r)   r†   zSpeechDiagnostics.metricsŠ   sŸ   € Ø�jŠj‰lŒlˆÝ˜eœo½¸e¼oÐPTÑ>TÑ8UÔ8UØ"œ^µe¸SÀ5Ä=Ñ=PÐTXÑ<XÑ6YÔ6YÝ" C¨%¬.Ñ$8¸DÑ#@ÑAÔAØ$)Ô$9ÀuÔGXØ%*Ô%;È%ÔJ\Ø(-Ô(AÐPUÔPbØ',Ô'?È%Ì.ðZñ Zô Zð 	Zr(   c                 ó€   — |                       ||j        ¦  «        x}r |                      d||dv r|nd¬¦  «         d S d S )NÚcancel)Ú	requestedÚreplacementÚtarget_changeÚapprovalÚvoiceÚsettingsÚmode_changeÚdevice_stopÚ
disconnectÚtransport_failureÚshutdownr�   )Úreason)rA   r   rO   )r1   rC   rP   r˜   r=   s        r)   rŒ   zSpeechDiagnostics.cancel”   su   € Ø—H’H˜V S¤]Ñ3Ô3Ð3ˆ5ð 	vØ�IŠI�h ¸ðdð9dð 9d¨f¨fàitð ñ vô vð vð vð vð	vð 	vr(   c                 ó(  ‡‡— |                       ¦   «          ‰�t          ‰t          ¦  «        sd S ˆˆfd„| j                             ¦   «         D ¦   «         }|r8|d         j        s-d|d         _        |                      d|d         ¦  «         d S d S d S )Nc                 óF   •— g | ]\  \  }}}|‰j         k    ¯‰�|‰k    ¯|‘ŒS r.   )rB   )Ú.0r   ÚsidÚtrC   r   s       €€r)   ú
<listcomp>z1SpeechDiagnostics.device_stop.<locals>.<listcomp>Ÿ   sN   ø€ ð fð fð fÑ-Ñ*˜* c¨AØ  FÔ$8Ò8Ð8¸iÐ>OÐSVÐZcÒScÐScð ØScÐScÐScr(   éÿÿÿÿTr”   )r>   r@   r"   r0   r6   r   rO   )r1   rC   r   Úmatchess    `` r)   r”   zSpeechDiagnostics.device_stopš   sÁ   øø€ à�
Š
‰ŒˆØÐ ­°I½sÑ)CÔ)CÐ ØˆFðfð fð fð fð f°´×1BÒ1BÑ1DÔ1Dð fñ fô fˆàð 	2˜7 2œ;Ô0ð 	2Ø$(ˆG�BŒKÔ!Ø�IŠI�m W¨R¤[Ñ1Ô1Ð1Ð1Ð1ð	2ð 	2ð 	2ð 	2r(   c                 óü   — |                       ¦   «          t          | j                             ¦   «         ¦  «        D ]@\  }}|d         |j        k    r* | j        d|fi |                      |¦  «        ¤Ž | j        |= ŒAd S )Nr   r•   )r>   r5   r0   r6   rB   rO   r†   )r1   rC   r<   r=   s       r)   ÚforgetzSpeechDiagnostics.forget¥   s‡   € Ø�
Š
‰ŒˆÝ˜tœ{×0Ò0Ñ2Ô2Ñ3Ô3ð 	%ð 	%‰JˆC�Ø�1Œv˜Ô-Ò-Ð-Ø�”	˜,¨ÐEÐE°·²¸eÑ1DÔ1DÐEÐEÐEØ”K Ð$øð	%ð 	%r(   r.   )r�   )r   r    r!   r9   r7   ÚtimeÚ	monotonicr2   r>   rA   rQ   rO   r   rh   rt   r~   r€   r‡   r†   rŒ   r”   r¢   r'   r(   r)   r+   r+   '   s2  € € € € € ð €EØ
€Cà!œ^ð $ð $ð $ð $ð,ð ,ð ,ðBð Bð Bð"ð "ð "ðRð Rð Rð=ð =ð =ðBð Bð Bð`ð `ð `ð0Dð Dð Dð Dðmð mð mð
Zð Zð Zð Zð
Zð Zð Zðvð vð vð	2ð 	2ð 	2ð%ð %ð %ð %ð %r(   r+   )Ú__doc__Úcollectionsr   Údataclassesr   rK   r[   Úloggingr£   Ú	getLoggerrY   r   r+   r'   r(   r)   ú<module>rª      sÖ   ðØ NÐ NØ #Ð #Ð #Ð #Ð #Ð #Ø !Ð !Ð !Ð !Ð !Ð !Ø €€€Ø €€€Ø €€€Ø €€€à	ˆÔ	Ð@Ñ	AÔ	A€ð ðð ð ð ð ñ ô ñ „ðð4C%ð C%ð C%ð C%ð C%ñ C%ô C%ð C%ð C%ð C%r(   