+
    Pjo
  c                   V    R t ^ RIt^ RIHu Ht ^ RItR tR t	R t
R tR tR tR tR# )	z?Protocol frame builders, hello-auth gate, and history trimming.Nc                     \         P                  p R q! V4      pRRRR /q2V8H  qD'       g   \        P                  ! R%V3R&W#34      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      R	\        P                  ! V4      /,          pR
RV/,          p\        \        P                  ! V4      4      hR;p ;p;p;rC\         P                  q ! 4       pRR/qqV8H  q"'       g   \        P                  ! R%V3R'W34      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      /,          pRR	V/,          p\        \        P                  ! V4      4      hR;p ;p;r'\         P                  p ^pRpRq@! WV4      p	RRR^RRRR/qV
8H  q'       Eg'   \        P                  ! R%V3R(W34      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V	4      R\        P                  ! V
4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p ;p;p;p;p	;r\         P                  ! ^RR4      R,          pRqVJ q'       gy   \        P                  ! R)V3R*W34      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;r\         P                  p ^q! V4      pRRR^/q2V8H  qD'       g   \        P                  ! R%V3R+W#34      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      R	\        P                  ! V4      /,          pR
RV/,          p\        \        P                  ! V4      4      hR;p ;p;p;rC\         P                  p ^q! V4      pRRR^/q2V8H  qD'       g   \        P                  ! R%V3R,W#34      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      R	\        P                  ! V4      /,          pR
RV/,          p\        \        P                  ! V4      4      hR;p ;p;p;rC\         P                  q ! 4       pRR /qqV8H  q"'       g   \        P                  ! R%V3R-W34      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      /,          pRR	V/,          p\        \        P                  ! V4      4      hR;p ;p;r'\         P                  p R!q! V4      pRR"R#R!/q2V8H  qD'       g   \        P                  ! R%V3R.W#34      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      R	\        P                  ! V4      /,          pR
RV/,          p\        \        P                  ! V4      4      hR;p ;p;p;rC\         P                   q ! 4       pRR$/qqV8H  q"'       g   \        P                  ! R%V3R/W34      RR\        P
                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V 4      R\        P                  ! V4      R\        P                  ! V4      /,          pRR	V/,          p\        \        P                  ! V4      4      hR;p ;p;r'R# )0abctypereadysessionpy0mainpy2py4py6py9assert %(py11)spy11Nackpy7assert %(py9)szHi.warmsentenceseqtextemotionpy8py10py13zassert %(py15)spy15zPlain.py1assert %(py6)saudio_start	audio_endturn_endboomerrormessagepong==)zM%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.f_ready
}(%(py4)s)
} == %(py9)s)zD%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.f_ack
}()
} == %(py7)s)ze%(py10)s
{%(py10)s = %(py2)s
{%(py2)s = %(py0)s.f_sentence
}(%(py4)s, %(py6)s, %(py8)s)
} == %(py13)sis)z%(py1)s is %(py4)s)zS%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.f_audio_start
}(%(py4)s)
} == %(py9)s)zQ%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.f_audio_end
}(%(py4)s)
} == %(py9)s)zI%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.f_turn_end
}()
} == %(py7)s)zM%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.f_error
}(%(py4)s)
} == %(py9)s)zE%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.f_pong
}()
} == %(py7)s)r   f_ready
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationf_ack
f_sentencef_audio_startf_audio_end
f_turn_endf_errorf_pong)@py_assert1@py_assert3@py_assert5@py_assert8@py_assert7@py_format10@py_format12@py_assert6@py_format8@py_assert9@py_assert12@py_assert11@py_format14@py_format16@py_assert0@py_assert2@py_format5@py_format7s                     I/Users/ahmed/devFolder/Ultron/claude-voice/gateway/tests/test_protocol.pytest_frame_shapesrJ      s(   <<EE<E67Iu"EE"EEEEEEEEEEEE4EEEE4EEE<EEEEEEEEE"EEEEEEEEE::*:<*FE?*?*****<******4****4***:***<***?********?? H1 He HV H?1V, H
E1feY1H H 1H H H H6G6GH, H HAGH H/G/GH4 H H>GiH4 H H>GiH? H H>GiH1 H H>GiHe H H>GiHV H H>GiH, H H>GiH 1H H H H H H4G4GH H H??1h-i8@D@D@@@@@8@@@8@@@D@@@@@@@@EaEa EV]E1$EE$EEEEEE EEEEEE4EEEE4EEEEEEaEEE EEE$EEEEEEEEEAAAAA6;q"AA"AAAAAAAAAAAA4AAAA4AAAAAAAAAAAAA"AAAAAAAAA??4?4 44 444444444444444444444?444444 444444444<<GG<GFGY#GG#GGGGGGGGGGGG4GGGG4GGG<GGGGGGGGG#GGGGGGGGG;;,;=,VV,,,,,,,,=,,,,,,4,,,,4,,,;,,,=,,,,,,,,,,,,    c                     \         P                  ! ^RR4      p \         P                  ! ^4      pV R,          q!R,          q2V8H  qD'       gy   \        P                  ! R	V3R
W#34      R\        P
                  ! V4      R\        P
                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;rCR# )   xdryr   r   r	   r   r
   Nr#   z%(py1)s == %(py4)s)r   r1   r2   r(   r)   r-   r.   r/   )sarE   r8   rF   rG   rH   s          rI   5test_sentence_always_precedes_audio_ordering_contractrS      sx     	3&A1AU8xx88xrK   c                    V P                  R RR7       \        P                  pRq!! V4      pRqCVJ qU'       g   \        P                  ! RV3RW434      RR\
        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      R\        P                  ! V4      R	\        P                  ! V4      R
\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p;rT\        P                  pRq!! V4      pRqCVJ qU'       g   \        P                  ! RV3RW434      RR\
        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      R\        P                  ! V4      R	\        P                  ! V4      R
\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;p;p;rTR# )GATEWAY_KEYF)raisingNTr   r   r   r	   r
   r   r   r   anythingr%   zN%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s._auth_ok
}(%(py4)s)
} is %(py9)s)delenvr   _auth_okr(   r)   r*   r+   r,   r-   r.   r/   monkeypatchr7   r8   r9   r:   r;   r<   r=   s   &       rI   #test_auth_gate_disabled_when_no_keyr]      sJ   }e4==&&=&$&$&&&&&&&&&&&4&&&&4&&&=&&&&&&&&&$&&&&&&&&==,,=$,,,,,,,$,,,,,,4,,,,4,,,=,,,,,,$,,,,,,,,,,,,rK   c                    V P                  R R4       \        P                  pRq!! V4      pRqCVJ qU'       g   \        P                  ! RV3RW434      RR\
        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pR	R
V/,          p\        \        P                  ! V4      4      hR;p;p;p;rT\        P                  pRq!! V4      pRqCVJ qU'       g   \        P                  ! RV3RW434      RR\
        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pR	R
V/,          p\        \        P                  ! V4      4      hR;p;p;p;rT\        P                  pRq!! V4      pRqCVJ qU'       g   \        P                  ! RV3RW434      RR\
        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pR	R
V/,          p\        \        P                  ! V4      4      hR;p;p;p;rTR# )rU   s3cretTr   r   r   r	   r
   r   r   r   NwrongFr%   rX   )setenvr   rZ   r(   r)   r*   r+   r,   r-   r.   r/   r[   s   &       rI    test_auth_gate_enforced_with_keyrb       s   }h/==**="*d*d*****"******4****4***=******"***d********==**=!*U*U*****!******4****4***=******!***U********==''='%'%'''''''''''4''''4'''='''''''''%'''''''''rK   c                     \         P                  ! R R7      p . p\        ^24       F3  pVP                  RRRRV 2/4       VP                  RRRRV 2/4       K5  	  V P	                  V4      pV Uu. uF  qDR,          R8X  g   K  VNK  	  pp\        V4      p\         P                  qvV8H  q'       Egs   \        P                  ! RV3RWg34      RR	\        P                  ! 4       9   g!   \        P                  ! \
        4      '       d   \        P                  ! \
        4      MR	R
R\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\        P                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! V4      /,          p	RRV	/,          p
\        \        P                  ! V
4      4      hR ;p;rV^ ,          R,          pRqV8H  qf'       gy   \        P                  ! RV3RW34      R
\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR ;p;rlV^ ,          R,          pRqV8H  qf'       gy   \        P                  ! RV3RW34      R
\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR ;p;rlR # u upi )Nwsroleusercontentu	assistantrR   r   lenr   userspy3py5r   r   r   r   r	   r   r
   u10r#   )zO%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py7)s
{%(py7)s = %(py5)s.MAX_TURNS
}rP   )r   Sessionrangeappend_trimrk   	MAX_TURNSr(   r)   r*   r+   r,   r-   r.   r/   )sessmsgsitrimmedmrl   rF   r>   @py_assert4r?   r<   rE   r8   rG   rH   s                  rI   3test_history_trim_keeps_last_turns_at_user_boundaryr{   '   s   <<4 DD2YVVY!A389V[)qW=>  jjG71V9#6QQE7u:''''''':''''''3''''3'''''''u''''u''':'''''''''''''''''''''1:f'''''''''''''''''''''1:i )E)E))))) ))) )))E)))))))) 8s   1M!M!c                  X   \         P                  ! R R7      p RRRR/RRRR/.pV P                  q"! V4      q3V8H  qD'       Egc   \        P                  ! RV3RW134      RR	\
        P                  ! 4       9   g   \        P                  ! V 4      '       d   \        P                  ! V 4      MR	R
\        P                  ! V4      RR\
        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR\        P                  ! V4      RR\
        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          p\        \        P                  ! V4      4      hR ;p;r4R # )Nrd   rf   rg   rh   ri   rj   rR   r   ru   r   rm   rv   rn   r   r   r   r#   )zK%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s._trim
}(%(py3)s)
} == %(py7)s)r   rp   rs   r(   r)   r*   r+   r,   r-   r.   r/   )ru   rv   r7   rz   r>   r?   r<   s          rI   %test_history_trim_noop_when_under_capr}   5   s    <<4 DVY,[)S13D::#:d#t###########4####4###:######d####d#########t####t########rK   c                     \         P                  ! R R7      p V P                  RRRR/4      pVP                  pRq2! V4      qD'       g   RRR\        P
                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR	\        P                  ! V4      R
\        P                  ! V4      R\        P                  ! V4      /,          p\        \        P                  ! V4      4      hR ;p;r4V P                  RRRR/4      pRqwV9   q'       g   \        P                  ! RV3RWv34      R\        P                  ! V4      RR\        P
                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          p	RRV	/,          p
\        \        P                  ! V
4      4      hR ;rxV P                  RRRR/4      pVP                  pRq2! V4      p^qV8H  q'       g   \        P                  ! RV3RWL34      RR\        P
                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MRR	\        P                  ! V4      R
\        P                  ! V4      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR ;p;p;p;rR # )Nrd   r   hellosourcetypedz[TYPED] zLassert %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.startswith
}(%(py4)s)
}r   r   r	   r
   gotonezfast, urgentz(voice: fast, urgent)r   rm   tonedzassert %(py5)srn   z(voice: laughing)z(voice:passthrur   r   r   )in)z%(py1)s in %(py3)sr#   )zK%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.count
}(%(py4)s)
} == %(py9)s)r   rp   _compose_user
startswithr*   r+   r(   r,   r-   r.   r/   r)   count)ru   r   r7   r8   r9   rH   r   rE   rF   @py_format4@py_format6r   r:   r;   r<   r=   s                   rI   ,test_compose_user_adds_typed_marker_and_toner   <   s   <<4 D7CDE'J'J'''''''''5''''5''''''J''''''''''fnEFE"+e+++++"+++"++++++e++++e++++++++!!649L"MNH>>)))>)$)))))))$))))))8))))8)))>)))))))$))))))))))))rK   )__doc__builtinsr*   _pytest.assertion.rewrite	assertionrewriter(   r   rJ   rS   r]   rb   r{   r}   r    rK   rI   <module>r      s2    E   
- -(*$*rK   