+
    Pj  c                       R t ^ RIt^ RIHu Ht ^ RIt^ RIt^ RI	t	 ! R R]P                  4      tR tR tR tR tR tR	 tR
 t ! R R4      tRR ltR tR tR tR tR tR tR# )u   Two-lane router: fast-lane sentinel detection, history consistency across
lanes, and the FAST_CHAT=0 path. All LLM I/O is a scripted FakeAdapter — no
network, no real model, no TTS (tests run in chat mode).Nc                   0   a  ] tR t^
t o RtR tR tRtV tR# )FakeAdapterzDReplays one scripted event list per stream() call and records usage.c                P    \        V4      V n        ^ V n        RV n        RV n        R# )    Nunset)list_eventscallslast_messages
last_tools)selfeventss   &&F/Users/ahmed/devFolder/Ultron/claude-voice/gateway/tests/test_lanes.py__init__FakeAdapter.__init__   s#    F|
!!    c                  "   V ;P                   ^,          un         V Uu. uF  p\        V4      NK  	  upV n        W n        V P                   F  pV5x  K
  	  R# u upi 5i)   N)r   dictr	   r
   r   )r   messagestoolsmevs   &&&  r   streamFakeAdapter.stream   sJ     

a
/78x!d1gx8,,BH  9s   A!A-A!)r   r   r	   r
   N)	__name__
__module____qualname____firstlineno____doc__r   r   __static_attributes____classdictcell____classdict__s   @r   r   r   
   s     N" r   r   c                     R RRV /# )typetext )ss   &r   _textr(      s    FFA&&r   c                      R RRR/# )r$   finishreasonstopr&   r&   r   r   _finishr-      s    Hh//r   c                  l  "   \         P                  ! \        \        \         P                  4      \        4       .4      R 4      p V P                  . R4       Uu. u Rj  xL
 qNK   LDMu upi ppR.q2T8H  qD'       g   \        P                  ! R	T3R
Y#34      RR\        P                  ! 4       9   g   \        P                  ! T4      '       d   \        P                  ! T4      MRR\        P                  ! T4      /,          pRRT/,          p\        \        P                  ! T4      4      hR;rCR# 5i)fast-syswhen is my meetingNpy0outpy3assert %(py5)spy5handoffN==z%(py0)s == %(py3)s)brainFastLaner   r(   FAST_HANDOFFr-   run
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationlaneitemr2   @py_assert2@py_assert1@py_format4@py_format6s          r   %test_fastlane_bare_sentinel_hands_offrN   &   s     >>+uU-?-?'@')&LM$&D"&((2/C"D
E
E$4
E
EC
E$%%%%%%%%3%%%%%%3%%%%3%%%%%%%%%%%%s>   AD4A*A(A&
A("A*&A((A*)A&D4A$D4c            	      x  "   \         P                  ! \        \        R 4      \        R4      \        R4      \	        4       .4      R4      p V P                  . R4       Uu. u Rj  xL
 qNK   LDMu upi ppR.q2T8H  qD'       g   \        P                  ! RT3RY#34      RR\        P                  ! 4       9   g   \        P                  ! T4      '       d   \        P                  ! T4      MRR\        P                  ! T4      /,          pR	R
T/,          p\        \        P                  ! T4      4      hR;rCR# 5i)z<<ACTz>>r/   zrecall somethingNr1   r2   r3   r4   r5   r6   r8   r:   r;   r<   r   r(   r-   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   s          r   4test_fastlane_sentinel_split_across_deltas_hands_offrR   -   s     >>U4[%,dWYGHD #'((2/A"B
C
C$4
C
CC
C$%%%%%%%%3%%%%%%3%%%%3%%%%%%%%%%%%s>   AD:A0 A.$A,
%A.(A0,A..A0/A&D:A$D:c                  P  "   \         P                  ! \        \        R 4      \	        4       .4      R4      p V P                  . R4       Uu. u Rj  xL
 qNK   LDMu upi ppR	.q2T8H  qD'       g   \        P                  ! R
T3RY#34      RR\        P                  ! 4       9   g   \        P                  ! T4      '       d   \        P                  ! T4      MRR\        P                  ! T4      /,          pRRT/,          p\        \        P                  ! T4      4      hR;rCR# 5i)   r/   hiNr1   r2   r3   r4   r5   r6   r8   r:   rQ   rG   s          r   #test_fastlane_empty_reply_hands_offrV   5   s     >>+uU|WY&?@*MD"&((2t"4
5
5$4
5
5C
5$%%%%%%%%3%%%%%%3%%%%3%%%%%%%%%%%%s>   AD&
AAA
AAAAA&D&A$D&c                    "   \         P                  ! \        \        R 4      \        R4      \	        4       .4      R4      p V P                  . R4       Uu. u Rj  xL
 qNK   LDMu upi ppT UUu. uF  w  r4TNK	  	  Mu uppi pppT UUu. uF  w  r6TR8X  g   K  TNK  	  Mu uppi pppT UUu. uF  w  r6TR8X  g   K  TNK  	  Mu uppi pppTR!,          p	RqT
8H  q'       gy   \        P                  ! R"T3R#Y34      R\        P                  ! T	4      R\        P                  ! T
4      /,          pR	R
T/,          p\        \        P                  ! T4      4      hR;p	;rRqT9  q'       g   \        P                  ! R$T3R%Y34      R\        P                  ! T	4      RR\        P                  ! 4       9   g   \        P                  ! T4      '       d   \        P                  ! T4      MR/,          pRRT/,          p\        \        P                  ! T4      4      hR;rT^ ,          qP                  pRpT! T4      pT'       g   RR\        P                  ! T	4      R\        P                  ! T4      R\        P                  ! T4      R\        P                  ! T4      /,          p\        \        P                  ! T4      4      hR;p	;p;ppR T 4       p\        T4      q'       g   RRR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! T4      R\        P                  ! T
4      /,          p\        \        P                  ! T4      4      hR;pp
. pTq'       d   RpT^ ,          pTT9   pTp	T	'       Eg$   RRR\        P                  ! 4       9   g   \        P                  ! T4      '       d   \        P                  ! T4      MR/,          pTP!                  T4       T'       dl   \        P                  ! R&T3R'TX34      R\        P                  ! T4      R\        P                  ! T4      /,          pRRT/,          pTP!                  T4       \        P"                  ! T^ 4      / ,          pRRT/,          p\        \        P                  ! T4      4      hR;p	;p;p;pp\         P$                  pT^ ,          pTT9  q'       g   \        P                  ! R$T
3R(TT34      RR\        P                  ! 4       9   g!   \        P                  ! \         4      '       d   \        P                  ! \         4      MRR\        P                  ! T4      R\        P                  ! T4      /,          pR RT/,          p\        \        P                  ! T4      4      hR;p;p
pR# 5i))z[dry] Right away, sir. It is done.r/   zsort itNsayfinalpy1py4assert %(py6)spy6r7   r3   kindsr4   r5   z[dry] Right away, sir.zLassert %(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.startswith
}(%(py5)s)
}py7c              3   ,   "   T F
  pR V9   x  K  	  R# 5i)rX   Nr&   ).0r'   s   & r   	<genexpr>Dtest_fastlane_normal_reply_streams_then_finalises.<locals>.<genexpr>G   s     04a}!4   ,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}r1   anypy2z%(py2)sfinalspy8z%(py10)spy10zassert %(py13)spy13r;   assert %(py7)sr8   z%(py1)s == %(py4)snot in)z%(py1)s not in %(py3)sin)z%(py5)s in %(py8)sz8%(py2)s
{%(py2)s = %(py0)s.FAST_HANDOFF
} not in %(py5)s)r;   r<   r   r(   r-   r>   r?   r@   rD   rE   rF   rA   rB   rC   
startswithrg   append_format_boolopr=   )rH   rI   r2   k_r_   psaysri   @py_assert0@py_assert3rJ   @py_format5@py_format7rL   rM   @py_assert4@py_assert6@py_format8rK   @py_assert7@py_format3@py_format9@py_format11@py_format12@py_format14s                             r   1test_fastlane_normal_reply_streams_then_finalisesr   ;   s[    >>U45=)796 	7D #'((2y"9
:
:$4
:
:C
:341Q3E,#$!eAA#,D,0CDA1<aaC0F0999!E!!!!!9!!!9!!!!!!E!!!!E!!!!!!!!7776767777777777777677777777777040030000000000300003000000000000000606m0vay0my0000000060000600006000my000m000y0000000000000000.VAY.Y.....Y......5....5......Y........s   AW,A&A$A"
A$A&"A$$A&%W,2B ?W,B%B%$W,3C
C
	DW,EW,+BW,7W,;7W,3D7W,+BW,c                    "   R RRR/R RRRRRRR	R
R
RRRR//./R RRRRR/R RRR/.p \         P                  ! \        . 4      R4      pVP                  V R4      pV Uu. uF  q3R ,          NK  	  pp. ROqTV8H  qf'       gy   \        P
                  ! RV3R WE34      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\        \        P                  ! V4      4      hR;p;reR V 4       p	\        V	4      qU'       g   RRR\        P                  ! 4       9   g!   \        P                  ! \        4      '       d   \        P                  ! \        4      MRR\        P                  ! V	4      R\        P                  ! V4      /,          p\        \        P                  ! V4      4      hR;rR# u upi 5i)!roleusercontentrU   	assistantN
tool_callsidc1r$   functionnamex	argumentsz{}tooltool_call_idresultzAnswer, sir.r/   nextr[   r\   r]   r^   c              3   P   "   T F  p\        VR ,          \        4      x  K  	  R# 5i)r   N)
isinstancestr)rb   r   s   & r   rc   Etest_fastlane_history_view_strips_tool_scaffolding.<locals>.<genexpr>Y   s     ;dz!I,,,ds   $&rf   r1   allrh   systemr   r   r   r8   ro   )r;   r<   r   build_messagesr?   r@   rD   rE   rF   r   rA   rB   rC   )
histrH   msgsr   r|   r}   rJ   r~   r   rK   s
             r   2test_fastlane_history_view_strips_tool_scaffoldingr   M   s`    	D)	i	tVZ#fc;%EG H	I 
y(C	i8D >>+b/:6DtV,D#$t!fIItO$(OO(OOOOOO$OOO$OOO(OOOOOOOOO;d;;3;;;;;;;;;;3;;;;3;;;;;;;;;;;;;; %s   AGG/C$GA8Gc                   2   a  ] tR t^_t o R tR tR tRtV tR# )FakeWSc                "    . V n         . V n        R # N)sentbinary)r   s   &r   r   FakeWS.__init__`   s    	r   c                D   "   V P                   P                  V4       R # 5ir   )r   rv   )r   frames   &&r   	send_jsonFakeWS.send_jsond   s     		    c                D   "   V P                   P                  V4       R # 5ir   )r   rv   )r   datas   &&r   
send_bytesFakeWS.send_bytesg   s     4 r   )r   r   N)	r   r   r   r   r   r   r   r   r    r!   s   @r   r   r   _   s      ! !r   r   c                    \         P                  ! \        4       R 7      pRVn        RRRR/Vn        RRRR/Vn        \        T ;'       g    . 4      Vn        \        P                  ! \        T;'       g    . 4      RRR7      Vn        V# )	)wschatr   r   r   zfull-sysr/   N)
tool_specs	tool_exec)
mainSessionr   mode
system_msgfast_system_msgr   fast_adapterr;   Brain)fast_eventsfull_eventssesss   && r   _sessionr   k   sx    <<68$DDIxJ?DO"HiDD#K$5$526D[):):;(,>DJKr   c                 N    R  pV P                  \        P                  RV4       R# )c                     "   R # 5ir   r&   )_a_ks   *,r   _noop_no_passive.<locals>._noopw   s     s   passive_rememberN)setattrr   r   )monkeypatchr   s   & r   _no_passiver   v   s    

$6>r   c                    "   V P                  R R4       \        V 4       \        \        R4      \	        4       .R7      pVP                  RR/4      G Rj  xL
  \        P                  ! ^ 4      G Rj  xL
  VP                  P                   Uu. uF  q"R,          NK  	  pp. pRqUV9   qfqv'       d   VR$,          pR	qV	8H  qpV'       Eg\   \        P                  ! R%V3R&WS34      R
\        P                  ! V4      RR\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                  ! V4      MR/,          pRRV/,          qP!                  V4       V'       dk   \        P                  ! R'X
3R(XX	34      R\        P                  ! V4      R\        P                  ! V	4      /,          pRRV/,          qP!                  V4       \        P"                  ! V^ 4      / ,          pRRV/,          p\%        \        P&                  ! V4      4      hR;p;p;p;p;p;rVP(                   Uu. uF  pVR,          NK  	  ppRR.pVV8H  qU'       gz   \        P                  ! R'V3R)VV34      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\%        \        P&                  ! V4      4      hR;p;ppVP(                  ^ ,          R,          pRpVV8H  qU'       gz   \        P                  ! R'V3R)VV34      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\%        \        P&                  ! V4      4      hR;p;ppRqqP(                  ^,          R,          pVV9   qU'       gz   \        P                  ! R%V3R*VV34      R\        P                  ! V4      R\        P                  ! V4      /,          pRRV/,          p\%        \        P&                  ! V4      4      hR;p;ppVP*                  qDP,                  pVP.                  p^ pVV8H  pV'       g   \        P                  ! R'V3R+VV3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;ppVP0                  qDP.                  p^pVV8H  pV'       g   \        P                  ! R'V3R,VV3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      /,          pR#R V/,          p\%        \        P&                  ! V4      4      hR;p;p;ppR#  EL ELu upi u upi 5i)-	FAST_CHAT1zEvening, sir.r   r%   eveningNr$   sentenceturn_endr3   r5   typesz%(py7)sr`   rk   rl   z%(py15)spy15zassert %(py18)spy18r   r   r   r[   r\   r]   r^   r   r1   r   rh   py9assert %(py11)spy11assert %(py9)srn   rr   )z%(py3)s in %(py5)sr8   )z%(py10)s == %(py13)sro   z%(py1)s in %(py4)sze%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.brain
}.adapter
}.calls
} == %(py9)szO%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.fast_adapter
}.calls
} == %(py7)s)setenvr   r   r(   r-   	_run_turnasynciosleepr   r   r?   r@   rD   rA   rB   rC   rv   rw   rE   rF   historyr;   adapterr   r   )r   r   fr   rK   rJ   r   r|   @py_assert9@py_assert12@py_assert11rM   r   r   @py_format16@py_format17@py_format19r   r}   r~   r   @py_assert5@py_assert8r   @py_format10r   r   s   &                          r   0test_router_fast_lane_serves_and_commits_historyr   |   s    {C(!7 CDD
..&),
---
--
 $-1vYYE-:::::59:
:
#:::::::::::::::::::::::::::::9
:::9:::
::::::::::::::::#||,|!AfII|E,0EE,0EEEEEE,0EEEE,EEE0EEEEEEEEE<<?9%22%22222%222%222222222228ll1oi88?888888?8888?888888888888::((##(q(#q(((((#q((((((4((((4(((:((((((#(((q(((((((('""'a'"a'''''"a''''''4''''4''''''"'''a'''''''' .- -s_   AY>Y.Y>3Y14Y>Y4!*Y>A&Y>3DY>Y9I!Y>6D"Y>BY>1Y>4
Y>c                   "   V P                  R R4       \        V 4       \        \        \        P
                  4      \        4       .\        R4      \        4       .R7      pVP                  RR/4      G Rj  xL
  \        P                  ! ^ 4      G Rj  xL
  VP                  P                   Uu. uF#  q"R,          R8X  g   K  VP                  R4      NK%  	  ppR	 V 4       p\        V4      qU'       g   R
RR\        P                  ! 4       9   g!   \         P"                  ! \        4      '       d   \         P$                  ! \        4      MRR\         P$                  ! V4      R\         P$                  ! V4      /,          p\'        \         P(                  ! V4      4      hR;rEVP*                  qDP,                  p^quV8H  q'       g   \         P.                  ! R V3R!WW3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      /,          p	RRV	/,          p
\'        \         P(                  ! V
4      4      hR;p;p;rVP                  qDP0                  qUP,                  p^qV8H  q'       g   \         P.                  ! R V3R"W3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;rVP2                   Uu. uF  qR,          NK  	  ppRR.q_V8H  pV'       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;pp\        P
                  qAP2                  ^,          R,          pVV9  qU'       g   \         P.                  ! R$V3R%VV34      RR\        P                  ! 4       9   g!   \         P"                  ! \        4      '       d   \         P$                  ! \        4      MRR\         P$                  ! V4      R\         P$                  ! V4      /,          pRRV/,          p	\'        \         P(                  ! V	4      4      hR;p;ppRqP2                  ^,          R,          q_V9   pV'       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;ppR#  EL ELu upi u upi 5i)(r   r   zYour meeting is at nine, sir.r   r   r%   r0   Nr$   r   c              3   ,   "   T F
  pR V9   x  K  	  R# 5i)nineNr&   )rb   ts   & r   rc   Ktest_router_escalates_on_sentinel_then_full_brain_serves.<locals>.<genexpr>   s     *Eqv{Ere   rf   r1   rg   rh   r\   r   r`   r   r   r^   r   r   r   r   r   r[   r]   r   r;   r5   rm   r   r8   r   r   ro   rp   rt   rr   r   )r   r   r   r(   r;   r=   r-   r   r   r   r   r   getrg   rA   rB   r?   rC   rD   rE   rF   r   r   r@   r   r   )r   r   r   textsrK   r}   r~   r   r   r   r   r   r   r   r   r|   rJ   r   r   rM   s   &                   r   8test_router_escalates_on_sentinel_then_full_brain_servesr      s    {C(5--.	::;WYGID ..&"67
888
--
$(GGLLLLqfI4K]QUU6]LEL*E**3**********3****3**************'""'a'a'''''"''''''4''''4''''''"'''a''''''''::((##(q(q(((((#((((((4((((4(((:((((((#(((q((((((((#||,|!fII|E,0EE0EEEEEE,EEE,EEE0EEEEEEEEE?\\!_Y%??%??????%???????5????5??????%?????????/\\!_Y////////6///6//////////// 9L -sf   A5Y7X68YX9Y2X<X<AY4C%YDY,B8Y$Y5DYD'Y9Y<
Yc                 8  "   V P                  R R4       \        V 4       \        \        R4      \	        4       .\        R4      \	        4       .R7      pVP                  RR/4      G Rj  xL
  \        P                  ! ^ 4      G Rj  xL
  VP                  q"P                  p^ qCV8H  qU'       g   \        P                  ! RV3RW43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      /,          pRRV/,          p\!        \        P"                  ! V4      4      hR;p;p;rTVP$                  q"P&                  q3P                  p^qV8H  q'       g   \        P                  ! RV	3RWX3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;rVP(                   Uu. uF  qR,          NK  	  ppRR.q<V8H  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;rRqP(                  ^,          R,          q<V9   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;rR#  EL ELu upi 5i)r   0zmust not be usedzFull brain here, sir.r   r%   helloNr1   r   rh   r\   r`   r   r   r^   r   r   r   r   r   r[   r]   z
Full brainr   r8   r   r   ro   rr   r   )r   r   r   r(   r-   r   r   r   r   r   r?   r@   rA   rB   rC   rD   rE   rF   r;   r   r   )r   r   rK   r}   r   r   r   r   r   r   r   r   r|   rJ   r~   r   s   &               r   .test_router_fast_chat_disabled_skips_fast_laner      sm    {C(-.	:23WY?AD ..&'*
+++
--
'""'a'a'''''"''''''4''''4''''''"'''a''''''''::((##(q(q(((((#((((((4((((4(((:((((((#(((q((((((((#||,|!fII|E,0EE0EEEEEE,EEE,EEE0EEEEEEEEE5<<?955555555<555<555555555555 , -sF   A'P)P*PPA8PDPB8PPD4PPPc                   "   V P                  R R4       \        V 4       \        \        R4      \	        4       .R7      pVP                  RR/4      G Rj  xL
  \        P                  ! ^ 4      G Rj  xL
  \        \        R4      \	        4       .4      Vn	        VP                  RR/4      G Rj  xL
  \        P                  ! ^ 4      G Rj  xL
  VP                  P                  pV Uu. uF  q3R	,          NK  	  pp. ROqTV8H  qf'       g   \        P                  ! RV3RWE34      R
R\        P                  ! 4       9   g   \        P                  ! V4      '       d   \        P                   ! V4      MRR\        P                   ! V4      /,          pRRV/,          p\#        \        P$                  ! V4      4      hR;reV^,          R,          p	RqV
8H  qU'       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	;rZR#  EL
 EL EL ELu upi 5i)r   r   zNoted, sir.r   r%   zmy car is a SupraNzA Supra, sir.zwhat did I sayr   r1   rolesr3   r4   r5   r   r[   r\   r]   r^   r   r8   r:   ro   )r   r   r   r(   r-   r   r   r   r   r   r	   r?   r@   rA   rB   rC   rD   rE   rF   )r   r   seenr   r   rJ   rK   rL   rM   r|   r}   r~   r   s   &            r   9test_router_second_turn_sees_first_turn_in_shared_historyr     s    {C(}!5wy ABD
..&"56
777
--
#U?%;WY$GHD
..&"23
444
--
**D $%1vYYE%;;;;;;;;5;;;;;;5;;;;5;;;;;;;;;;;;794!44!444444444444!444444444 8 5%sb   AI0II03I"4=I01I%2I0I(I0.I+?A!I0!C?I0"I0%I0(I0+I0c                   "   \        V 4       \        4       pVP                  R R/4      G Rj  xL
  VP                  P                  R,          R,          p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;rCVP                  p. qV8H  q3'       g   \
        P                  ! RV3RWx34      R	R
\        P                  ! 4       9   g   \
        P                  ! V4      '       d   \
        P                  ! V4      MR
R\
        P                  ! V4      R\
        P                  ! V4      /,          p	RRV	/,          p
\        \
        P                  ! V
4      4      hR;p;r8VP                  qwP                  p^ qV8H  q'       g   \
        P                  ! RV3RW;3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      /,          p
RRV
/,          p\        \
        P                  ! V4      4      hR;p;p;rVP                   qwP"                  q3P                  p^ qV8H  q'       g   \
        P                  ! RV3RW3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#  EL5i)r%   rT   Nr$   r   r[   r\   r]   r^   r1   r   rh   r5   rm   r`   r   r   r   r   rn   r8   ro   )z/%(py2)s
{%(py2)s = %(py0)s.history
} == %(py5)sr   r   )r   r   r   r   r   r?   r@   rD   rE   rF   r   rA   rB   rC   r   r   r;   r   )r   r   r|   r}   rJ   r~   r   rK   r   rM   r   r   r   r   r   r   r   s   &                r   *test_router_empty_utterance_just_ends_turnr     s,    :D
..&%
)))77<<F#1z1z11111#111#111z11111111<<22<44<2'""'a'a'''''"''''''4''''4''''''"'''a''''''''::((##(q(q(((((#((((((4((((4(((:((((((#(((q(((((((((	 *s%   ,O;O8DO;C.O;:DO;B-O;)NN)r   builtinsrA   _pytest.assertion.rewrite	assertionrewriter?   r   r;   r   
LLMAdapterr   r(   r-   rN   rR   rV   r   r   r   r   r   r   r   r   r  r  r&   r   r   <module>r	     s{   <    %"" "'0&&&/$<$	! 	!?($0(65")r   