
    Oj0                        d dl mZ d dlZd dlZd dlmZ d dlmZ ddlm	Z	m
Z
mZmZmZmZ dZdZdd	Zdd
Ze G d d             Z G d d      Zy)    )annotationsN)	dataclass)Literal   )GroupingUpdateTranscriptSegmentTranscriptFragmentTranscriptGrouperOptionsTranscriptSegmentClosedEventTranscriptSegmentCloseReasonu>   	
                  　﻿)ahaalrightgotchahmhmmmhmmmzmm hmmokayokrightsurezuh huhyeahyepyesc                    | j                         j                  dd      j                  t        dz         } t	        j
                  dt         dd|       S )N- z.,!?;:"'()[]{}[z]+)lowerreplacestrip_WHITESPACEresub)texts    {/var/www/origus_pro_usr/data/www/origus.pro/core/.venv/lib/python3.12/site-packages/openai/lib/live/_transcript_grouping.py_normalize_acknowledgmentr'   '   sG    ::<S)//>O0OPD66Ak]"%sD11    c                6    t        j                  |       d   dv S )Nr   )LN)unicodedatacategory)chars    r&   _letter_or_numberr/   ,   s    %a(J66r(   c                  j    e Zd ZU ded<   ded<   ded<   ded<   ded<   d	Zd
ed<   dZded<   dZded<   y	)_TurnzLiteral['user', 'assistant']speakerstrr%   intstart_msend_msidN
str | Noneprevious_idFboolemittedTcan_drop_as_backchannel)__name__
__module____qualname____annotations__r9   r;   r<    r(   r&   r1   r1   0   s;    ))
IMKG"K"GT$(T(r(   r1   c                      e Zd ZdZddZedd       ZddZdddZddZ	ddZ
d dZd!d	Zedd"d
       Zd#d$dZd%dZd&dZd'dZd(dZed)d       Zd*dZd*dZd*dZd+dZ	 d,	 	 	 	 	 d-dZd#d.dZd/dZy)0TranscriptGroupingzHDirect port of the TypeScript policy; no clocks, callbacks or transport.c                    || _         || _        t        t        fd|j                  D              z   | _        d | _        d | _        d | _        d| _	        d | _
        y )Nc              3  >   K   | ]  }t        |      xs  y wN)r'   ).0phraseacks     r&   	<genexpr>z.TranscriptGrouping.__init__.<locals>.<genexpr>B   s'      9
LeflLmEmSEmC9
s   r   )_options
_id_prefix_ACKNOWLEDGMENTStupleadditional_acknowledgments_acknowledgments_current	_buffered_last_id_next_id_last_assistant_end)selfoptions	id_prefixrI   s      @r&   __init__zTranscriptGrouping.__init__?   s^    # 05 9
%@@9
 4
 !
 '+'+$(/3 r(   c                J    | j                   | j                   j                  S d S rF   )rQ   r2   rV   s    r&   r2   zTranscriptGrouping.speakerK   s     (,(At}}$$KtKr(   c           	         g } j                   xs d}|D cg c]  }|j                   |k(  s| c}|D cg c]  }|j                   |k7  s| c}z   }|s|S |d   } j                         }|Q||j                  k  rB|j                   j	                  |              j                         }|||j                  k  rB j
                  Ot         fd|D              s;|j                   j	                  |j                  t        d |D                           |D ]"  }|j                   j                  |             $ |S c c}w c c}w )Nuserr   c              3  P   K   | ]  }|j                   j                   k(    y wrF   r2   )rG   partrV   s     r&   rJ   z-TranscriptGrouping.process.<locals>.<genexpr>\   s     0bRV1M0bs   #&c              3  :   K   | ]  }|j                   d k(    yw)r]   Nr_   )rG   r`   s     r&   rJ   z-TranscriptGrouping.process.<locals>.<genexpr>]   s     :fVZ4<<6;Q:fs   )r2   deadliner5   extendadvancerQ   any_ingest)	rV   	fragmentsevents	preferredr`   orderedfirstrb   fragments	   `        r&   processzTranscriptGrouping.processO   s.   ')LL*F	$-KD1J4K&O
$,,)*CDO
 
 M
==?"x%..'@MM$,,x01}}H "x%..'@ ==$S0bZa0b-bMM$,,u~~s:f^e:f7fgh 	2HMM$,,x01	2 L O
s   EEE
E
c                   | j                   | j                  s|| j                   j                  z
  | j                  j                  k\  rC| j                  |      s2| j                  |      | _        | j                  | j                         S | j                   \| j                   j                  dk(  rC|sA|| j                   j                  z
  | j                  j                  k\  r| j                  d      S g S )N	assistant
inactivity)rQ   rR   r6   rK   min_turn_separation_ms_keep_backchannel_maybe_drop_backchannel_promoter2   assistant_silence_ms_finish_current)rV   time_mshas_incoming_users      r&   rd   zTranscriptGrouping.advanceb   s    MM%*$--...$--2V2VV**73!99'BDN~~)}}&MM%%%4%$--...$--2T2TT''55	r(   c                   | j                   y | j                  | j                   j                  | j                  j                  z   }| j                         rm| j                  j                  rW| j                         sG| j                         s7t        || j                  j                  | j                  j                  z         S |S | j                   j                  dk(  r-| j                   j                  | j                  j                  z   S y Nro   )rQ   rR   r6   rK   rq   _might_be_backchannelr<   _user_continued_recent_assistantmaxbackchannel_isolation_msr2   ru   )rV   
separations     r&   rb   zTranscriptGrouping.deadlineu   s    == >>%--0T0TTJ**,NN::,,...0:t~~'<'<t}}?e?e'eff==  K/==''$--*L*LLLr(   c                   | j                  |      }| j                  |      }d | _        |M|j                  rA|j	                  | j                  |             |j	                  | j                  ||             |dk(  rd | _        |S )Ntimestamp_reset)rs   rv   rR   r%   rc   _emit_finishrU   )rV   rw   reasonbufferedrh   s        r&   closezTranscriptGrouping.close   sw    //8%%f-HMMMM$**X./MM$,,x89&&'+D$r(   c                   | j                   1| j                  |      | _         | j                  | j                         S |j                  | j                   j                  k(  rD| j	                  | j                   || j
                  d u       | j                  | j                         S | j                   j                  dk(  r| j                         rd | _        |j                  | j                   j                  z
  }| j                   j                  dk(  r!| j                  |       | j                         S || j                  j                  k  r#| j                  || j                  |             g S | j
                  0| j                  || j
                        r| j                  |d       g S | j
                  %| j                  |      r| j                  |d       g S | j                  |      | _        | j!                  d      }| j
                  5| j
                  | _         d | _        | j	                  | j                   |       n| j                  |      | _         |j#                  | j                  | j                                |S )Nr]   ro   TF)next_fragmentspeaker_change)rQ   	_new_turnr   r2   _appendrR   r|   r5   r6   _bufferrt   rK   rq   _possible_acknowledgment_standalone_acknowledgmentrs   rv   rc   )rV   rl   r   rh   s       r&   rf   zTranscriptGrouping._ingest   s   ==  NN84DM::dmm,,t}}444LL$..2LM::dmm,,==  F*t/C/C/E!DN&&)=)==
==  K/LL"==?"<<<LL4#@#@#JKI>>%$*I*I(TXTbTb*cLL4(I>>!d&E&Eh&OLL5)I55H5M%%&67>>% NNDM!DNLL1 NN84DMdjj/0r(   c           	         t        |j                  |j                  |j                  |j                  | j
                   d| j                         }| xj                  dz  c_        |S )N_)r2   r%   r5   r6   r7   r   )r1   r2   r%   r5   r6   rL   rT   )rV   rl   turns      r&   r   zTranscriptGrouping._new_turn   sX    $$&&??//"!DMM?3
 	r(   c                .   |rJ| j                   r>|j                   r2t        | j                   d         rt        |j                   d         rdnd}| xj                   ||j                   z   z  c_         t        | j                  |j                        | _        y )Nr   r    )r%   r/   r~   r6   )r   rl   separate	separators       r&   r   zTranscriptGrouping._append   st     		!$))B-0!(--"23   	 			Y..	$++x7r(   Nc                    | j                   | j                  | j                   |       n| j                  |      | _         ||| j                   _        y y rF   )rR   r   r   r<   )rV   rl   can_drops      r&   r   zTranscriptGrouping._buffer   sE    >>%LL2!^^H5DN5=DNN2  r(   c                    | j                   g S | j                  d      }| j                   | _        d | _         |j                  | j	                  | j                               |S )Nr   )rR   rv   rQ   rc   r   )rV   rh   s     r&   rt   zTranscriptGrouping._promote   sR    >>!I%%&67djj/0r(   c                V    | j                   d c}| _         || j                  ||      S g S rF   )rQ   r   )rV   r   currents      r&   rv   z"TranscriptGrouping._finish_current   s/    !%070Ct||GV,KKr(   c                    |j                   dk(  r|j                  | _        |j                  rt	        | j                  |      |      gS g S rz   )r2   r6   rU   r;   r   	_snapshot)rV   r   r   s      r&   r   zTranscriptGrouping._finish   s@    <<;&'+{{D$OS||,T^^D-A6JKcaccr(   c                    |j                   sg S |j                  s)| j                  |_        |j                  | _        d|_        | j                  |      gS )NT)r%   r;   rS   r9   r7   r   )rV   r   s     r&   r   zTranscriptGrouping._emit   sE    yyI||#}}D GGDMDLt$%%r(   c                    | j                   dv sJ t        | j                  | j                  | j                   | j                  | j
                  | j                        S )N)r]   ro   )r2   r   r7   r9   r%   r5   r6   )r   s    r&   r   zTranscriptGrouping._snapshot   sJ    ||4444 $*:*:DLL$))UYUbUbdhdodoppr(   c                6   | j                   d uxr | j                   j                  dk(  xro | j                  d uxr_ | j                  j                  dk(  xrD | j                  j                  | j                  j                  z
  | j
                  j                  k  S )Nr]   ro   )rQ   r2   rR   r6   r5   rK   backchannel_max_duration_msr[   s    r&   r{   z(TranscriptGrouping._might_be_backchannel   s    MM% l%%/ld*l &&+5l %%(?(??$--BkBkk	
r(   c                    | j                         xre | j                  d uxrU | j                  j                  xr= | j                  d uxr- | j                  j                  | j                  j                  kD  S rF   )r{   rR   r<   rQ   r6   r[   s    r&   r|   z"TranscriptGrouping._user_continued   sl    &&( =d*=66= T)= $$t~~'<'<<	
r(   c                4   | j                   d uxr | j                  d uxry | j                  d uxri | j                  j                  | j                  z
  | j                  j
                  k  xr- | j                  j                  | j                   j                  k  S rF   )rQ   rR   rU   r5   rK   r   r[   s    r&   r}   z$TranscriptGrouping._recent_assistant  s    MM% Bd*B((4B ''$*B*BBT]]EkEkkB ''4==+A+AA	
r(   c                "   | j                         xr~ | j                  d uxrn | j                  j                  xrV | j                          xrC | j	                          xr0 || j                  j
                  z
  | j                  j                  k  S rF   )r{   rR   r<   r|   r}   r6   rK   r   )rV   rw   s     r&   rr   z$TranscriptGrouping._keep_backchannel  s    &&( Yd*Y66Y ((**Y **,,	Y
 $..///$--2X2XX	
r(   c                   | j                         r| j                  | j                  S | j                         ry | j                         r| j                  S |F|j                  | j                  j
                  z
  | j                  j                  k  r| j                  S |>|0|| j                  j
                  z
  | j                  j                  k  r| j                  S | j                  j                  rd S | j                  S rF   )	r{   rR   r|   r}   r5   r6   rK   r   r<   )rV   rw   r   s      r&   rs   z*TranscriptGrouping._maybe_drop_backchannel  s     ))+t~~/E>>!!!!#>>!%&&)>)>>AgAgg>>! Ow)>)>>AgAgg>>!~~==tQ4>>Qr(   c                    |j                   ||j                  n|j                  z
  | j                  j                  k  xr2 t	        ||j
                  nd|j
                  z         | j                  v S )Nr   )r6   r5   rK   r   r'   r%   rP   )rV   rl   previouss      r&   r   z-TranscriptGrouping._standalone_acknowledgment,  sk    OOH4Hx00hN_N_`mm778 %)H<P8==VX\d\i\i*ij$$%	
r(   c                v   t        | j                  | j                  j                  nd|j                  z         |j                  | j                  | j                  j                  n|j                  z
  | j
                  j                  k  xr+ t              xr t        fd| j                  D              S )Nr   c              3  @   K   | ]  }|j                          y wrF   )
startswith)rG   rI   r%   s     r&   rJ   z>TranscriptGrouping._possible_acknowledgment.<locals>.<genexpr>:  s     JSCNN4(Js   )
r'   rR   r%   r6   r5   rK   r   r:   re   rP   )rV   rl   r%   s     @r&   r   z+TranscriptGrouping._possible_acknowledgment4  s    (A[$..*=*=acgogtgt)tuOO$..:Tt~~66ZbZkZklmm778 KT
K JD4I4IJJ		
r(   )rW   r
   rX   r3   returnNone)r   r8   )rg   zlist[TranscriptFragment]r   list[GroupingUpdate])F)rw   floatrx   r:   r   r   )r   float | None)rw   r   r   r   r   r   )rl   r	   r   r   )rl   r	   r   r1   )r   r1   rl   r	   r   r:   r   r   rF   )rl   r	   r   zbool | Noner   r   )r   r   )r   r   r   r   )r   r1   r   r   r   r   )r   r1   r   r   )r   r1   r   r   )r   r:   )rw   r   r   r:   )NN)rw   r   r   zTranscriptFragment | Noner   _Turn | None)rl   r	   r   r   r   r:   )rl   r	   r   r:   )r=   r>   r?   __doc__rY   propertyr2   rm   rd   rb   r   rf   r   staticmethodr   r   rt   rv   r   r   r   r{   r|   r}   rr   rs   r   r   rA   r(   r&   rC   rC   <   s    R
4 L L&&"	B	 8 8>Ld
& q q



 X\R#R;TR	R(

r(   rC   )r%   r3   r   r3   )r.   r3   r   r:   )
__future__r   r#   r,   dataclassesr   typing_extensionsr   _typesr   r   r	   r
   r   r   r"   rM   r'   r/   r1   rC   rA   r(   r&   <module>r      s]    " 	  ! %  g (2
7 ) ) )
 
r(   