o
    ùT·j0  ã                   @  s”   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d„Zddd„ZeG dd„ dƒƒZG dd„ dƒZdS )é    )Ú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ÚyesÚtextÚstrÚreturnc                 C  s0   |   ¡  dd¡ td ¡} t dt› d�d| ¡S )Nú-ú z.,!?;:"'()[]{}ú[z]+)ÚlowerÚreplaceÚstripÚ_WHITESPACEÚreÚsub©r   © r'   úg/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/openai/lib/live/_transcript_grouping.pyÚ_normalize_acknowledgment'   s   r)   ÚcharÚboolc                 C  s   t  | ¡d dv S )Nr   )ÚLÚN)ÚunicodedataÚcategory)r*   r'   r'   r(   Ú_letter_or_number,   s   r0   c                   @  sZ   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< d	S )Ú_TurnzLiteral['user', 'assistant']Úspeakerr   r   ÚintÚstart_msÚend_msÚidNú
str | NoneÚprevious_idFr+   ÚemittedTÚcan_drop_as_backchannel)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r8   r9   r:   r'   r'   r'   r(   r1   0   s   
 r1   c                   @  s  e Zd ZdZdMdd	„ZedNdd„ƒZdOdd„ZdPdQdd„ZdRdd„Z	dSdd„Z
dTd"d#„ZdUd%d&„ZedPdVd)d*„ƒZdWdXd.d/„ZdYd0d1„ZdZd2d3„Zd[d4d5„Zd\d6d7„Zed]d9d:„ƒZd^d;d<„Zd^d=d>„Zd^d?d@„Zd_dAdB„Z	+d`dadFdG„ZdWdbdIdJ„ZdcdKdL„Zd+S )dÚTranscriptGroupingzHDirect port of the TypeScript policy; no clocks, callbacks or transport.Úoptionsr	   Ú	id_prefixr   r   ÚNonec                   sL   || _ || _tt‡ fdd„|jD ƒƒ | _d | _d | _d | _d| _	d | _
d S )Nc                 3  s    � | ]}t |ƒ ‰ rˆ V  qd S ©N)r)   )Ú.0Úphrase©Úackr'   r(   Ú	<genexpr>B   s   € ÿ
ÿz.TranscriptGrouping.__init__.<locals>.<genexpr>r   )Ú_optionsÚ
_id_prefixÚ_ACKNOWLEDGMENTSÚtupleÚadditional_acknowledgmentsÚ_acknowledgmentsÚ_currentÚ	_bufferedÚ_last_idÚ_next_idÚ_last_assistant_end)Úselfr@   rA   r'   rF   r(   Ú__init__?   s   ÿ
zTranscriptGrouping.__init__r7   c                 C  s   | j d ur	| j jS d S rC   )rO   r2   ©rT   r'   r'   r(   r2   K   s   zTranscriptGrouping.speakerÚ	fragmentsúlist[TranscriptFragment]úlist[GroupingUpdate]c                   sæ   g }ˆj pd‰ ‡ fdd„|D ƒ‡ fdd„|D ƒ }|s|S |d }ˆ ¡ }|d urC||jk rC| ˆ |¡¡ ˆ ¡ }|d urC||jk s.ˆjd urdt‡fdd„|D ƒƒsd| ˆ |jtdd„ |D ƒƒ¡¡ |D ]
}| ˆ |¡¡ qf|S )	NÚuserc                   s   g | ]	}|j ˆ kr|‘qS r'   ©r2   ©rD   Úpart©Ú	preferredr'   r(   Ú
<listcomp>R   s    z.TranscriptGrouping.process.<locals>.<listcomp>c                   s   g | ]	}|j ˆ kr|‘qS r'   r[   r\   r^   r'   r(   r`   R   s    r   c                 3  s   � | ]	}|j ˆ j kV  qd S rC   r[   r\   rV   r'   r(   rH   \   s   € z-TranscriptGrouping.process.<locals>.<genexpr>c                 s  s   � | ]}|j d kV  qdS )rZ   Nr[   r\   r'   r'   r(   rH   ]   ó   € )r2   Údeadliner4   ÚextendÚadvancerO   ÚanyÚ_ingest)rT   rW   ÚeventsÚorderedÚfirstrb   Úfragmentr'   )r_   rT   r(   ÚprocessO   s$   
ÿþ "zTranscriptGrouping.processFÚtime_msÚfloatÚhas_incoming_userr+   c                 C  sŒ   | j d ur(| jd ur(|| j j | jjkr(|  |¡s(|  |¡| _| jd ur(|  ¡ S | j d urD| j jdkrD|sD|| j j | jj	krD|  
d¡S g S )NÚ	assistantÚ
inactivity)rO   rP   r5   rI   Úmin_turn_separation_msÚ_keep_backchannelÚ_maybe_drop_backchannelÚ_promoter2   Úassistant_silence_msÚ_finish_current)rT   rl   rn   r'   r'   r(   rd   b   s   

ÿ

ÿ
zTranscriptGrouping.advanceúfloat | Nonec                 C  s‚   | j d u rd S | jd ur1| j j| jj }|  ¡ r/| jjr/|  ¡ s/|  ¡ s/t	|| jj| jj
 ƒS |S | j jdkr?| j j| jj S d S ©Nro   )rO   rP   r5   rI   rq   Ú_might_be_backchannelr:   Ú_user_continuedÚ_recent_assistantÚmaxÚbackchannel_isolation_msr2   ru   )rT   Ú
separationr'   r'   r(   rb   u   s"   

ÿþýüzTranscriptGrouping.deadlineÚreasonr   c                 C  s\   |   |¡}|  |¡}d | _|d ur%|jr%| |  |¡¡ | |  ||¡¡ |dkr,d | _|S )NÚtimestamp_reset)rs   rv   rP   r   rc   Ú_emitÚ_finishrS   )rT   rl   r   Úbufferedrg   r'   r'   r(   Úclose†   s   

zTranscriptGrouping.closerj   r   c                 C  sh  | j d u r|  |¡| _ |  | j ¡S |j| j jkr)|  | j || jd u¡ |  | j ¡S | j jdkr6|  ¡ r6d | _|j| j j }| j jdkrL|  	|¡ |  
¡ S || jjk r]|  	||  |¡¡ g S | jd urq|  || j¡rq|  	|d¡ g S | jd u rƒ|  |¡rƒ|  	|d¡ g S | j|d�| _|  d¡}| jd ur£| j| _ d | _|  | j |¡ n|  |¡| _ | |  | j ¡¡ |S )NrZ   ro   TF)Únext_fragmentÚspeaker_change)rO   Ú	_new_turnr�   r2   Ú_appendrP   rz   r4   r5   Ú_bufferrt   rI   rq   Ú_possible_acknowledgmentÚ_standalone_acknowledgmentrs   rv   rc   )rT   rj   r~   rg   r'   r'   r(   rf   ‘   s<   



zTranscriptGrouping._ingestr1   c                 C  s:   t |j|j|j|j| j› d| j› �d�}|  jd7  _|S )NÚ_)r2   r   r4   r5   r6   r   )r1   r2   r   r4   r5   rJ   rR   )rT   rj   Úturnr'   r'   r(   r‡   ²   s   ûzTranscriptGrouping._new_turnr�   Úseparatec                 C  s\   |r| j r|j rt| j d ƒrt|j d ƒrdnd}|  j ||j  7  _ t| j|jƒ| _d S )Néÿÿÿÿr   r   Ú )r   r0   r|   r5   )r�   rj   rŽ   Ú	separatorr'   r'   r(   rˆ   ½   s   ÿþýüûù	zTranscriptGrouping._appendNÚcan_dropúbool | Nonec                 C  s>   | j d ur|  | j |¡ n|  |¡| _ |d ur|| j _d S d S rC   )rP   rˆ   r‡   r:   )rT   rj   r’   r'   r'   r(   r‰   Ë   s   
ÿzTranscriptGrouping._bufferc                 C  s<   | j d u rg S |  d¡}| j | _d | _ | |  | j¡¡ |S )Nr†   )rP   rv   rO   rc   r�   )rT   rg   r'   r'   r(   rt   Ó   s   

zTranscriptGrouping._promotec                 C  s&   | j d }| _ |d ur|  ||¡S g S rC   )rO   r‚   )rT   r   Úcurrentr'   r'   r(   rv   Ü   s   z"TranscriptGrouping._finish_currentc                 C  s.   |j dkr	|j| _|jrt|  |¡|ƒgS g S rx   )r2   r5   rS   r9   r
   Ú	_snapshot)rT   r�   r   r'   r'   r(   r‚   à   s   
zTranscriptGrouping._finishc                 C  s2   |j sg S |js| j|_|j| _d|_|  |¡gS )NT)r   r9   rQ   r8   r6   r•   )rT   r�   r'   r'   r(   r�   å   s   zTranscriptGrouping._emitr   c                 C  s,   | j dv sJ ‚t| j| j| j | j| j| jƒS )N)rZ   ro   )r2   r   r6   r8   r   r4   r5   )r�   r'   r'   r(   r•   î   s   zTranscriptGrouping._snapshotc                 C  sD   | j d uo!| j jdko!| jd uo!| jjdko!| jj| jj | jjk S )NrZ   ro   )rO   r2   rP   r5   r4   rI   Úbackchannel_max_duration_msrV   r'   r'   r(   ry   ó   s   

ÿþ
ýûz(TranscriptGrouping._might_be_backchannelc                 C  s4   |   ¡ o| jd uo| jjo| jd uo| jj| jjkS rC   )ry   rP   r:   rO   r5   rV   r'   r'   r(   rz   ü   s   ÿþýûz"TranscriptGrouping._user_continuedc                 C  sD   | j d uo!| jd uo!| jd uo!| jj| j | jjk o!| jj| j jkS rC   )rO   rP   rS   r4   rI   r}   rV   r'   r'   r(   r{     s   
ÿþýûz$TranscriptGrouping._recent_assistantc                 C  sB   |   ¡ o | jd uo | jjo |  ¡  o |  ¡  o || jj | jjk S rC   )ry   rP   r:   rz   r{   r5   rI   r}   )rT   rl   r'   r'   r(   rr     s   ÿþýüúz$TranscriptGrouping._keep_backchannelr…   úTranscriptFragment | Noneú_Turn | Nonec                 C  s’   |   ¡ r	| jd u r| jS |  ¡ rd S |  ¡ r| jS |d ur+|j| jj | jjk r+| jS |d u r@|d u s=|| jj | jjk r@| jS | jjrFd S | jS rC   )	ry   rP   rz   r{   r4   r5   rI   r}   r:   )rT   rl   r…   r'   r'   r(   rs     s   z*TranscriptGrouping._maybe_drop_backchannelÚpreviousc                 C  sD   |j |d ur	|jn|j | jjk o!t|d ur|jnd|j ƒ| jv S )Nr�   )r5   r4   rI   r–   r)   r   rN   )rT   rj   r™   r'   r'   r(   r‹   ,  s   ÿÿýz-TranscriptGrouping._standalone_acknowledgmentc                   sf   t | jd ur
| jjnd|j ƒ‰ |j| jd ur| jjn|j | jjk o2tˆ ƒo2t‡ fdd„| j	D ƒƒS )Nr�   c                 3  s   � | ]}|  ˆ ¡V  qd S rC   )Ú
startswith)rD   rG   r&   r'   r(   rH   :  ra   z>TranscriptGrouping._possible_acknowledgment.<locals>.<genexpr>)
r)   rP   r   r5   r4   rI   r–   r+   re   rN   )rT   rj   r'   r&   r(   rŠ   4  s    ÿþüz+TranscriptGrouping._possible_acknowledgment)r@   r	   rA   r   r   rB   )r   r7   )rW   rX   r   rY   )F)rl   rm   rn   r+   r   rY   )r   rw   )rl   rm   r   r   r   rY   )rj   r   r   rY   )rj   r   r   r1   )r�   r1   rj   r   rŽ   r+   r   rB   rC   )rj   r   r’   r“   r   rB   )r   rY   )r   r   r   rY   )r�   r1   r   r   r   rY   )r�   r1   r   rY   )r�   r1   r   r   )r   r+   )rl   rm   r   r+   )NN)rl   rw   r…   r—   r   r˜   )rj   r   r™   r˜   r   r+   )rj   r   r   r+   )r;   r<   r=   Ú__doc__rU   Úpropertyr2   rk   rd   rb   r„   rf   r‡   Ústaticmethodrˆ   r‰   rt   rv   r‚   r�   r•   ry   rz   r{   rr   rs   r‹   rŠ   r'   r'   r'   r(   r?   <   s8    





!

	

	

	
	
	ÿr?   )r   r   r   r   )r*   r   r   r+   )Ú
__future__r   r$   r.   Údataclassesr   Útyping_extensionsr   Ú_typesr   r   r   r	   r
   r   r#   rK   r)   r0   r1   r?   r'   r'   r'   r(   Ú<module>   s     


