
    Njj                        d Z ddlZddlmc mZ ddlZddlZddl	Z	ddl
Z
ddlZdej                  d<    e	j                  d      j                  d       dej                  d<   ddlZdd	lmZ ddlmZ  e	j                  d
      e_        d\  ZZ ej0                  dej2                        Z ej0                  dej2                        Z G d d      Zd Zd Zd Ze dk(  r ejB                   e              yy)u  Proactive-announcement test: worker reports flow to the MASTER agent,
who speaks them — interjecting when idle, folding into the turn when a
question arrives at the same time.

  1. spoken delegation request -> master delegates, answers, keeps free
  2. real worker finishes -> writes control/report.txt -> master
     announces it PROACTIVELY during silence (no user speech!)
  3. injected report + new question together -> ONE combined master turn
    Nz/tmp/spk-e2e-profile.npzSPEAKER_PROFILET)
missing_ok0RESUME)VoiceAppz/tmp/spk-e2e-session)i>  i   z/tmp/spk/task_ask.f32dtypez/tmp/claude-voice-test.f32c                       e Zd Zd Zd Zd Zy)FakeMicc                 6    t        j                         | _        y N)asyncioQueueframesselfs    </Users/ahmed/devFolder/Ultron/claude-voice/test_proactive.py__init__zFakeMic.__init__"   s    18    c                      y r    r   s    r   startzFakeMic.start$   s    Tr   c                      y r   r   r   s    r   stopzFakeMic.stop%   s    Dr   N)__name__
__module____qualname__r   r   r   r   r   r   r   r   !   s    Ar   r   c                 2  K   t        |      t        z  }t        |      D ]o  }| j                  j	                  ||t        z  |dz   t        z   j                                d {    t        j                  t        t        z         d {    q y 7 /7 	w)N   )	lenFranger   putcopyr   sleepSR)micaudionis       r   feedr+   (   sp     E
aA1XjjnnU1q5!a%15::<===mmAF### =#s$   A!B#B$'BBBBc                 d  K   | j                   }t        j                  t        dz  t        j                        }t        j                  d       d {    t        d       t        |t               d {    t        j                         }d}t        j                         |z
  dk  rt        ||       d {    t        j                  dz  j                         rd}|rW| j                  j!                         r=| j"                  s1| j$                  j&                  st        j                         |z
  d	kD  rnt        j                         |z
  dk  rt        d
       t        j                  dz  j)                  d       t        j                  d       d {    t        |t*               d {    t        j                         }t        j                         |z
  d	k  r/t        ||       d {    t        j                         |z
  d	k  r/t        d       y 7 7 7 m7 7 x7 8w)N   r   g      ?z%[driver] 1) spoken delegation requestFZ   z
report.txtT   zN[driver] 2) idle phase over; now combined turn (inject report + speak at once)z?The email to Sarah about the Q3 numbers was sent successfully.
gffffff?z[driver] done)r'   npzerosr!   float32r   r%   printr+   TASK_ASKtime	monotoniccontrolCONTROLis_fileinboxempty
respondingspeakerspeaking
write_textQUESTION)appr'   silencet0	announceds        r   driverrE   /   s    
''Chhq1uBJJ/G
--
	
12
sH
		BI
..
R
"
$3   OOl*335I*3>>,,1AB1F1K ..
R
"
$ 
 , -__|#//JL
--

sH
		B
..
R
"
$3    ..
R
"
$	//  
 	!  	!s|   AH0H!"H06H$7AH0:H';BH0AH0H*H03H,4AH05H.6H0H0$H0'H0*H0,H0.H0c                    K   t               } t               | _        t        d      D ]N  }| j                  j                  j                  t        j                  t        t        j                               P t        j                  | j                               }	 t        j                  t        |       d       d {    |j#                          t        j$                  |d       d {    y 7 4# t        j                  $ r t!        d       Y Rw xY w7 +# |j#                          t        j$                  |d       d {  7   w xY ww)N   r      )timeoutz[driver] timed outT)return_exceptions)r   r   r'   r"   r   
put_nowaitr0   r1   r!   r2   r   create_taskrunwait_forrE   TimeoutErrorr3   cancelgather)rA   _run_tasks      r   run_testrT   L   s     
*CiCG2Y!!"((1BJJ"?@ ""3779-H?vc{C888 	nnX>>> 	9 $"#$ 	? 	nnX>>>sf   BE#C6 ?C4 C6 *E.D/E4C6 6DD DD E+EE
EE__main__)"__doc__builtins@py_builtins_pytest.assertion.rewrite	assertionrewrite
@pytest_arr   ospathlibr5   numpyr0   environPathunlinkmainappmodr   voice.controlr7   SESSION_FILEr&   r!   fromfiler2   r4   r@   r   r+   rE   rT   r   rM   r   r   r   <module>rh      s      	    :

  ' ( / /4 / @

8    #w||$:; A2;;.bjjA2;;32::F $:? zGKK
 r   