Ë
   žSçŒT­ã                   ó  — d dl Zd dlmc mZ d dlZd dlZd dlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZm Z  d dl!m"Z"  G d„ d«      Z# G d„ d«      Z$ G d	„ d
«      Z% G d„ d«      Z&ejN                  d„ «       Z(ejN                  d„ «       Z) G d„ d«      Z* G d„ d«      Z+ G d„ d«      Z, G d„ d«      Z- G d„ d«      Z. G d„ d«      Z/ G d„ d«      Z0 G d„ d«      Z1 G d„ d «      Z2 G d!„ d"«      Z3 G d#„ d$«      Z4y)%é    N)Ú%BROWSER_CAPABILITY_UNAVAILABLE_REASONÚBROWSER_TASK_COMPLETEDÚBROWSER_TASK_REQUESTÚCODER_TASK_COMPLETEDÚCODER_TASK_REQUESTÚEVALUATOR_TASK_REQUESTÚMAX_PLAN_STEPSÚPLANNER_TASK_COMPLETEDÚPLANNER_TASK_REQUESTÚRESEARCH_TASK_REQUESTÚSECURITY_TASK_REQUESTÚAgentResultÚ	BaseAgentÚBrowserAgentÚ
CoderAgentÚDispatcherAuthorizerÚEvaluatorAgentÚPlannerAgentÚResearchAgentÚSecurityAgent)ÚAsyncEventBusÚEventÚMemoryTaskQueue)ÚSecurityErrorc                   ó(   — e Zd ZdZdd„Zdeddfd„Zy)ÚAllowingAuthorizerzETest double for the TaskAuthorizer contract: returns without raising.ÚreturnNc                 ó   — g | _         y ©N)Úcalls©Úselfs    ú3/home/oem/CyberBrain26-unified/tests/test_agents.pyÚ__init__zAllowingAuthorizer.__init__#   s	   € Ø!#ˆ�
ó    Ú	task_datac              ƒ   óT   K  — | j                   j                  t        |«      «       y ­wr   )r    ÚappendÚdict©r"   r&   s     r#   Ú__call__zAllowingAuthorizer.__call__&   s   è ø€ Ø�
‰
×Ñœ$˜y›/Õ*ùs   ‚&()r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r$   r)   r+   © r%   r#   r   r       s   „ ÙOó$ð+¨ð +°ô +r%   r   c                   ó2   — e Zd ZdZddeddfd„Zdeddfd„Zy)	ÚDenyingAuthorizerzHTest double for the TaskAuthorizer contract: raises like the dispatcher.Úreasonr   Nc                 ó    — || _         g | _        y r   )r3   r    )r"   r3   s     r#   r$   zDenyingAuthorizer.__init__-   s   € ØˆŒØ!#ˆ�
r%   r&   c              ƒ   ó|   K  — | j                   j                  t        |«      «       t        | j                  «      ‚­wr   )r    r(   r)   r   r3   r*   s     r#   r+   zDenyingAuthorizer.__call__1   s+   è ø€ Ø�
‰
×Ñœ$˜y›/Ô*Ü˜DŸK™KÓ(Ð(ùs   ‚:<)zdenied by policy)r,   r-   r.   r/   Ústrr$   r)   r+   r0   r%   r#   r2   r2   *   s+   „ ÙRñ$˜sð $¸Dó $ð)¨ð )°ô )r%   r2   c                   ó    — e Zd ZdZdeddfd„Zy)ÚBrokenAuthorizerz0Authorizer whose decision cannot be made at all.r&   r   Nc              ƒ   ó    K  — t        d«      ‚­w)Nzpermission gateway unavailable)ÚRuntimeErrorr*   s     r#   r+   zBrokenAuthorizer.__call__9   s   è ø€ ÜÐ;Ó<Ð<ùs   ‚)r,   r-   r.   r/   r)   r+   r0   r%   r#   r8   r8   6   s   „ Ù:ð=¨ð =°ô =r%   r8   c                   óB   — e Zd ZdZddeddfd„Z	 ddededed	eddf
d
„Zy)ÚRecordingDispatcherzBMinimal structural stand-in for InMemoryTaskDispatcher._authorize.Údenyr   Nc                 ó    — || _         g | _        y r   )r=   r    )r"   r=   s     r#   r$   zRecordingDispatcher.__init__@   s   € ØˆŒ	Ø"$ˆ�
r%   Útask_idÚregistered_agent_idÚagentÚactionc              ƒ   óˆ   K  — | j                   j                  |||||f«       | j                  rt        d|› d|› d�«      ‚y ­w)NzAgent z denied for action 'ú')r    r(   r=   r   )r"   r?   r@   rA   rB   Úresources         r#   Ú
_authorizezRecordingDispatcher._authorizeD   sR   è ø€ ð 	�
‰
×Ñ˜7Ð$7¸ÀÈÐQÔRØ�9Š9Ü &Ð)<Ð(=Ð=QÐRXÐQYÐYZÐ [Ó\Ð\ð ùs   ‚A A)Fr   )	r,   r-   r.   r/   Úboolr$   r6   ÚobjectrF   r0   r%   r#   r<   r<   =   sR   „ ÙLñ%˜Tð %¨dó %ð
 \`ñ]Øð]Ø14ð]Ø=Cð]ØMPð]à	ô]r%   r<   c                  ó   — t        «       S r   )r   r0   r%   r#   ÚbusrJ   L   s
   € ä‹?Ðr%   c                  ó   — t        «       S r   )r   r0   r%   r#   ÚqueuerL   Q   s   € äÓÐr%   c                   óÀ   — e Zd Zd„ Zd„ Zej                  j                  d„ «       Zej                  j                  d„ «       Z	ej                  j                  d„ «       Z
y)ÚTestPlannerAgentc                 ó<  — t        ||«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d}||k(  }|s­t        j                  d|fd	||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y )
Nr   ©ú==©z,%(py2)s
{%(py2)s = %(py0)s.name
} == %(py5)srA   ©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7Úplanner©z,%(py2)s
{%(py2)s = %(py0)s.role
} == %(py5)s)r   ÚnameÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚrole©	r"   rJ   rL   rA   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8s	            r#   Útest_planner_agent_namez(TestPlannerAgent.test_planner_agent_nameW   óè   € Ü˜S %Ó(ˆØ�z‰zÐ+˜^Ð+ˆz˜^Ñ+×+×+Õ+ˆz˜^×+×+×+×+×+Ñ+ˆu×+×+Ó+ˆu×+×+Ô+ˆz×+×+Ò+˜^×+×+×+×+×+×+Ó+Ø�z‰zÐ&˜YÐ&ˆz˜YÑ&×&×&Õ&ˆz˜Y×&×&×&×&×&Ñ&ˆu×&×&Ó&ˆu×&×&Ô&ˆz×&×&Ò&˜Y×&×&×&×&×&×&Ô&r%   c                 óì  — t        ||«       |j                  } |t        «      }d}||k(  }|�s
t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}}|j                  } |t        «      }d	}||k(  }|�s
t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      d
t        j                  «       v st        j                  t        «      rt        j                  t        «      nd
t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}}y )Né   rP   ©zQ%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.subscribers
}(%(py3)s)
} == %(py8)srJ   r   ©rT   rU   Úpy3rV   Úpy8úassert %(py10)sÚpy10r   r
   )r   Úsubscribersr   r\   r]   r^   r_   r`   ra   rb   rc   r
   ©	r"   rJ   rL   rf   rg   Ú@py_assert7Ú@py_assert6Ú@py_format9Ú@py_format11s	            r#   Ú!test_planner_subscribes_to_eventsz2TestPlannerAgent.test_planner_subscribes_to_events\   sZ  € Ü�S˜%Ô Ø�‰Ð9‰Ô3Ó4Ð9¸Ð9Ð4¸Ñ9×9×9Ö9Ð4¸×9×9×9×9×9Ñ9ˆs×9×9Ó9ˆs×9×9Ô9ˆ×9×9×9×9×9Ð9Ô3×9×9Ó9Ô3×9×9Ô9Ð4×9×9Ò9¸×9×9×9×9×9×9Õ9Ø�‰Ð;‰Ô5Ó6Ð;¸!Ð;Ð6¸!Ñ;×;×;Ö;Ð6¸!×;×;×;×;×;Ñ;ˆs×;×;Ó;ˆs×;×;Ô;ˆ×;×;×;×;×;Ð;Ô5×;×;Ó;Ô5×;×;Ô;Ð6×;×;Ò;¸!×;×;×;×;×;×;Ö;r%   c              ƒ   óØ  K  — t        ||«      }|j                  ddi«      ƒ d {  –—† }d }||u}|s™t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}}|j                  }d	}	||	u }
|
s­t        j                  d
|
fd||	f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |	«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}
}	|j                  }d}	||	k(  }
|
s­t        j                  d|
fd||	f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |	«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}
}	|j                  d   }d}
||
k(  }|slt        j                  d|fd||
f«      t        j                  |«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}
|j                  d   }t        |«      }
d}|
|k(  }|sÉt        j                  d|fd|
|f«      dt	        j
                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |
«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}
x}}|j                  d   }d}
||
k(  }|slt        j                  d|fd||
f«      t        j                  |«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}
y 7 �ŒB­w)NÚgoalú	test goal©úis not©z%(py0)s is not %(py3)sÚresult©rT   rq   úassert %(py5)srV   T©Úis©z/%(py2)s
{%(py2)s = %(py0)s.success
} is %(py5)srS   rW   rX   r   rP   )z2%(py2)s
{%(py2)s = %(py0)s.agent_name
} == %(py5)s©z%(py1)s == %(py4)s©Úpy1Úpy4úassert %(py6)sÚpy6Úplané   ©z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sÚlen©rT   rU   r‹   rX   úassert %(py9)sÚpy9Ú	max_steps)r   Úexecuter\   r]   r^   r_   r`   ra   rb   rc   ÚsuccessÚ
agent_nameÚdatar‘   )r"   rJ   rL   rA   r‚   Ú@py_assert2rf   Ú@py_format4ri   rg   rh   rj   Ú@py_assert0Ú@py_format5Ú@py_format7rx   Ú@py_assert5Ú@py_format10s                     r#   Ú#test_planner_execute_returns_resultz4TestPlannerAgent.test_planner_execute_returns_resulta   s�  è ø€ ä˜S %Ó(ˆØ—}‘} f¨kÐ%:Ó;×;ˆØ!Ð!ˆv˜TÐ!×!×!Õ!ˆv˜T×!×!×!×!×!Ñ!ˆv×!×!Ó!ˆv×!×!Ô!˜T×!×!×!×!×!×!Ñ!Ø�~‰~Ð% Ð%ˆ~ Ð%×%×%Õ%ˆ~ ×%×%×%×%×%Ñ%ˆv×%×%Ó%ˆv×%×%Ô%ˆ~×%×%Ò% ×%×%×%×%×%×%Ó%Ø× Ñ Ð2 NÐ2Ð  NÑ2×2×2Õ2Ð  N×2×2×2×2×2Ñ2ˆv×2×2Ó2ˆv×2×2Ô2Ð ×2×2Ò2 N×2×2×2×2×2×2Ó2Ø�{‰{˜6Ñ"Ð1 kÐ1Ð" kÑ1×1×1Õ1Ð" k×1×1Ó1Ð"×1×1Ò1 k×1×1×1×1×1×1Ó1Ø—;‘;˜vÑ&Ð,ŒsÐ&Ó'Ð,¨1Ð,Ð'¨1Ñ,×,×,Õ,Ð'¨1×,×,×,×,×,Ñ,Œs×,×,Ó,Œs×,×,Ô,Ð&×,×,Ò,Ð'×,×,Ò,¨1×,×,×,×,×,×,Õ,Ø�{‰{˜;Ñ'Ð,¨1Ð,Ð'¨1Ñ,×,×,Õ,Ð'¨1×,×,Ó,Ð'×,×,Ò,¨1×,×,×,×,×,×,Ô,ð <ûs   ‚#Q*¥Q'¦QQ*c              ƒ   óÌ  K  — t        ||«      }|j                  ddi«      ƒ d {  –—†  |j                  }t        |«      }d}||k(  }|�s
t	        j
                  d|fd||f«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      nddt        j                  «       v st	        j                  |«      rt	        j                  |«      ndt	        j                  |«      t	        j                  |«      t	        j                  |«      dœz  }d	d
|iz  }	t        t	        j                  |	«      «      ‚d x}x}x}}|j                  d   }
t        |
t        «      }|sÞddt        j                  «       v st	        j                  t        «      rt	        j                  t        «      ndt	        j                  |
«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      ndt	        j                  |«      dœz  }t        t	        j                  |«      «      ‚d x}
}y 7 �Œ<­w)Nr}   r~   rn   rP   ©zM%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.results
})
} == %(py8)sr‘   rA   ©rT   rŠ   rq   rV   rr   rs   rt   r   z5assert %(py5)s
{%(py5)s = %(py0)s(%(py2)s, %(py3)s)
}Ú
isinstancer   )rT   rU   rq   rV   )r   r–   Úresultsr‘   r\   r]   r^   r_   r`   ra   rb   rc   r¥   r   )r"   rJ   rL   rA   rš   rg   rw   rx   ry   rz   rf   ri   s               r#   Ú#test_planner_execute_tracks_resultsz4TestPlannerAgent.test_planner_execute_tracks_resultsl   sV  è ø€ ä˜S %Ó(ˆØ�m‰m˜V [Ð1Ó2×2Ð2Ø—=‘=Ð&Œs�=Ó!Ð& QÐ&Ð! QÑ&×&×&Ö&Ð! Q×&×&×&×&×&Ñ&Œs×&×&Ó&Œs×&×&×&×&×&Ò&�5×&×&Ó&�5×&×&Ô&�=×&×&Ò&Ð!×&×&Ò& Q×&×&×&×&×&×&Õ&ØŸ-™-¨Ñ*Ð8ŒzÐ*¬KÓ8Ð8Ñ8×8×8×8×8Õ8Œz×8×8Ó8Œz×8×8Ô8Ð*×8×8×8×8×8Ð8¬K×8×8Ó8¬K×8×8Ô8Ð8×8×8×8×8×8Ó8ð 	3ûs   ‚#I$¥I!¦H<I$c              ƒ   ó¦  K  — t        ||«      }|j                  ddi«      ƒ d {  –—†  |j                  «       }t        |«      }d}||k(  }|söt	        j
                  d|fd||f«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      nddt        j                  «       v st	        j                  |«      rt	        j                  |«      ndt	        j                  |«      t	        j                  |«      dœz  }d	d
|iz  }	t        t	        j                  |	«      «      ‚d x}x}}|d   d   }
d}|
|k(  }|slt	        j
                  d|fd|
|f«      t	        j                  |
«      t	        j                  |«      dœz  }dd|iz  }t        t	        j                  |«      «      ‚d x}
x}}y 7 �Œ©­w)Nr}   zbuild featurer�   rP   ©z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr‘   rŽ   ©rT   rŠ   rq   r�   úassert %(py8)srr   r   Údescriptionzbuild feature - step 1rˆ   r‰   rŒ   r�   )r   r–   Úget_planr‘   r\   r]   r^   r_   r`   ra   rb   rc   )r"   rJ   rL   rA   rŽ   rš   rŸ   rg   rž   ry   rœ   rh   r�   s                r#   Útest_planner_get_planz&TestPlannerAgent.test_planner_get_plans   s  è ø€ ä˜S %Ó(ˆØ�m‰m˜V _Ð5Ó6×6Ð6Ø�~‰~ÓˆÜ�4‹yÐ˜AÐˆy˜A‰~××Õˆy˜A×××××ÑŒs××ÓŒs×××××Ò�4××Ó�4××Ôˆy××Ò˜A××××××ÓØ�A‰w�}Ñ%ÐAÐ)AÐAÐ%Ð)AÑA×A×AÕAÐ%Ð)A×A×AÓAÐ%×A×AÒAÐ)A×A×A×A×A×A×AÔAð 	7ûó   ‚#G¥G¦F)GN)r,   r-   r.   rk   r{   ÚpytestÚmarkÚasyncior¡   r§   r®   r0   r%   r#   rN   rN   V   sh   „ ò'ò
<ð
 ‡[�[×Ññ-ó ð-ð ‡[�[×Ññ9ó ð9ð ‡[�[×ÑñBó ñBr%   rN   c                   ób  — e Zd ZdZej
                  j                  d„ «       Zej
                  j                  d„ «       Zej
                  j                  d„ «       Z	ej
                  j                  d„ «       Z
ej
                  j                  ej
                  j                  dg d¢«      d„ «       «       Zej
                  j                  ej
                  j                  dd	d
dddgddig«      d„ «       «       Zej
                  j                  d„ «       Zej
                  j                  d„ «       Zy)ÚTestPlannerMaxStepszE``max_steps`` used to be ignored: the plan was hard-coded to 3 steps.c           
   ƒ   ó(	  K  — t        ||«      }|j                  dddœ«      ƒ d {  –—† }|j                  }d}||u }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }d	d
|iz  }	t        t        j                  |	«      «      ‚d x}x}}|j                  d   }t        |«      }d}
||
k(  }|sÉt        j                  d|fd||
f«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      t        j                  |
«      dœz  }	dd|	iz  }t        t        j                  |«      «      ‚d x}x}x}}
|j                  d   }d}||k(  }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  d   D �cg c]  }|d   ‘Œ	 }}d}d}t        ||«      }t        |«      }||k(  }|�s:t        j                  d|fd||f«      t        j                  |«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      nddt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}x}x}}|j                  «       d    d!   }d"}||k(  }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y 7 �Œdc c}w ­w)#Nzship ité   ©r}   r•   Tr…   r‡   r‚   rS   rW   rX   rŽ   rP   r�   r‘   r’   r“   r”   r•   rˆ   r‰   rŒ   r�   Ústeprn   é   )z[%(py1)s == %(py12)s
{%(py12)s = %(py3)s(%(py10)s
{%(py10)s = %(py4)s(%(py6)s, %(py8)s)
})
}ÚlistÚrange)rŠ   rq   r‹   r�   rr   rt   Úpy12zassert %(py14)sÚpy14éÿÿÿÿr¬   zship it - step 7)r   r–   r—   r\   r]   r^   r_   r`   ra   rb   rc   r™   r‘   r»   rº   r­   )r"   rJ   rL   rA   r‚   rf   rg   rh   ri   rj   rx   rŸ   r    rœ   rš   r�   rž   r¸   rw   Ú@py_assert9Ú@py_assert11Ú@py_format13Ú@py_format15s                          r#   Útest_planner_honours_max_stepsz2TestPlannerMaxSteps.test_planner_honours_max_steps   sË  è ø€ ä˜S %Ó(ˆØ—}‘}¨iÀaÑ%HÓI×IˆØ�~‰~Ð% Ð%ˆ~ Ð%×%×%Õ%ˆ~ ×%×%×%×%×%Ñ%ˆv×%×%Ó%ˆv×%×%Ô%ˆ~×%×%Ò% ×%×%×%×%×%×%Ó%Ø—;‘;˜vÑ&Ð,ŒsÐ&Ó'Ð,¨1Ð,Ð'¨1Ñ,×,×,Õ,Ð'¨1×,×,×,×,×,Ñ,Œs×,×,Ó,Œs×,×,Ô,Ð&×,×,Ò,Ð'×,×,Ò,¨1×,×,×,×,×,×,Õ,Ø�{‰{˜;Ñ'Ð,¨1Ð,Ð'¨1Ñ,×,×,Õ,Ð'¨1×,×,Ó,Ð'×,×,Ò,¨1×,×,×,×,×,×,Ó,Ø)/¯©°VÑ)<Ö= ��V“Ð=ÐRÐ=ÈAÐRÈqÐRÄeÈAÈqÃkÐRÄÀkÓARÐRÐ=ÐARÑR×R×RÖRÐ=ÐAR×R×RÓRÐ=×R×R×R×R×RÐRÄ×R×RÓRÄ×R×R×R×R×RÒRÄe×R×RÓRÄe×R×RÔRÈA×R×RÒRÈq×R×RÒRÀk×R×RÒRÐAR×R×R×R×R×R×R×RÑRØ�~‰~Ó Ñ# MÑ2ÐHÐ6HÐHÐ2Ð6HÑH×H×HÕHÐ2Ð6H×H×HÓHÐ2×H×HÒHÐ6H×H×H×H×H×H×HÔHð Jûò >ùs#   ‚$R¦R
§IRÊRÊG>RÒRc              ƒ   óH  K  — t        ||«      }|j                  dddœ«      ƒ d {  –—† }|j                  d   }t        |«      }d}||k(  }|sÉt	        j
                  d|fd||f«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      ndt	        j                  |«      t	        j                  |«      t	        j                  |«      dœz  }	d	d
|	iz  }
t        t	        j                  |
«      «      ‚d x}x}x}}y 7 Œù­w)NÚonern   r·   rŽ   rP   r�   r‘   r’   r“   r”   ©r   r–   r™   r‘   r\   r]   r^   r_   r`   ra   rb   rc   ©r"   rJ   rL   rA   r‚   rf   rh   rx   rŸ   rj   r    s              r#   Ú test_planner_honours_single_stepz4TestPlannerMaxSteps.test_planner_honours_single_step‰   sº   è ø€ ä˜S %Ó(ˆØ—}‘}¨eÀ!Ñ%DÓE×EˆØ—;‘;˜vÑ&Ð,ŒsÐ&Ó'Ð,¨1Ð,Ð'¨1Ñ,×,×,Õ,Ð'¨1×,×,×,×,×,Ñ,Œs×,×,Ó,Œs×,×,Ô,Ð&×,×,Ò,Ð'×,×,Ò,¨1×,×,×,×,×,×,Ö,ð Fús   ‚$D"¦D §C:D"c              ƒ   óF  K  — t        ||«      }|j                  ddi«      ƒ d {  –—† }|j                  d   }t        |«      }d}||k(  }|sÉt	        j
                  d|fd||f«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      ndt	        j                  |«      t	        j                  |«      t	        j                  |«      dœz  }	d	d
|	iz  }
t        t	        j                  |
«      «      ‚d x}x}x}}y 7 Œù­w)Nr}   ÚdefaultrŽ   r�   rP   r�   r‘   r’   r“   r”   rÆ   rÇ   s              r#   Ú+test_planner_absent_max_steps_keeps_defaultz?TestPlannerMaxSteps.test_planner_absent_max_steps_keeps_default�   s¹   è ø€ ä˜S %Ó(ˆØ—}‘} f¨iÐ%8Ó9×9ˆØ—;‘;˜vÑ&Ð,ŒsÐ&Ó'Ð,¨1Ð,Ð'¨1Ñ,×,×,Õ,Ð'¨1×,×,×,×,×,Ñ,Œs×,×,Ó,Œs×,×,Ô,Ð&×,×,Ò,Ð'×,×,Ò,¨1×,×,×,×,×,×,Ö,ð :ús   ‚#D!¥D¦C:D!c              ƒ   óØ  K  — t        ||«      }|j                  dd dœ«      ƒ d {  –—† }|j                  }d}||u }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd	|iz  }	t        t        j                  |	«      «      ‚d x}x}}|j                  d
   }t        |«      }d}
||
k(  }|sÉt        j                  d|fd||
f«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      t        j                  |
«      dœz  }	dd|	iz  }t        t        j                  |«      «      ‚d x}x}x}}
y 7 �ŒÁ­w)NrÊ   r·   Tr…   r‡   r‚   rS   rW   rX   rŽ   r�   rP   r�   r‘   r’   r“   r”   )r   r–   r—   r\   r]   r^   r_   r`   ra   rb   rc   r™   r‘   )r"   rJ   rL   rA   r‚   rf   rg   rh   ri   rj   rx   rŸ   r    s                r#   Ú)test_planner_none_max_steps_keeps_defaultz=TestPlannerMaxSteps.test_planner_none_max_steps_keeps_default•   s'  è ø€ ä˜S %Ó(ˆØ—}‘}¨iÀdÑ%KÓL×LˆØ�~‰~Ð% Ð%ˆ~ Ð%×%×%Õ%ˆ~ ×%×%×%×%×%Ñ%ˆv×%×%Ó%ˆv×%×%Ô%ˆ~×%×%Ò% ×%×%×%×%×%×%Ó%Ø—;‘;˜vÑ&Ð,ŒsÐ&Ó'Ð,¨1Ð,Ð'¨1Ñ,×,×,Õ,Ð'¨1×,×,×,×,×,Ñ,Œs×,×,Ó,Œs×,×,Ô,Ð&×,×,Ò,Ð'×,×,Ò,¨1×,×,×,×,×,×,Ö,ð Mûs   ‚$G*¦G'§GG*Úbad)r   r¾   iœÿÿÿc              ƒ   óÖ  K  — t        ||«      }|j                  d|dœ«      ƒ d {  –—† }|j                  }d}||u }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }	dd	|	iz  }
t        t        j                  |
«      «      ‚d x}x}}d
}|j                  }||v }|s­t        j                  d|fd||f«      t        j                  |«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }	dd	|	iz  }
t        t        j                  |
«      «      ‚d x}x}}|j                  }d}||u }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }	dd	|	iz  }
t        t        j                  |
«      «      ‚d x}x}}|j                  } |«       }g }||k(  }|sÁt        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      dœz  }
dd|
iz  }t        t        j                  |«      «      ‚d x}x}x}}y 7 �Œ@­w)NrÎ   r·   Fr…   r‡   r‚   rS   rW   rX   zgreater than zero©Úin©z-%(py1)s in %(py5)s
{%(py5)s = %(py3)s.error
}©rŠ   rq   rV   ©z;%(py2)s
{%(py2)s = %(py0)s.execution_attempted
} is %(py5)srP   ©zG%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.get_plan
}()
} == %(py7)srA   r’   r“   r”   ©r   r–   r—   r\   r]   r^   r_   r`   ra   rb   rc   ÚerrorÚexecution_attemptedr­   ©r"   rJ   rL   rÎ   rA   r‚   rf   rg   rh   ri   rj   rœ   rš   rx   rŸ   r    s                   r#   Ú+test_planner_rejects_non_positive_max_stepsz?TestPlannerMaxSteps.test_planner_rejects_non_positive_max_stepsœ   s  è ø€ ô ˜S %Ó(ˆØ—}‘}¨eÀ#Ñ%FÓG×GˆØ�~‰~Ð& Ð&ˆ~ Ð&×&×&Õ&ˆ~ ×&×&×&×&×&Ñ&ˆv×&×&Ó&ˆv×&×&Ô&ˆ~×&×&Ò& ×&×&×&×&×&×&Ó&Ø"Ð2 f§l¡lÐ2Ð" lÐ2×2×2Õ2Ð" l×2×2Ó2Ð"×2×2×2×2×2Ð2 f×2×2Ó2 f×2×2Ô2 l×2×2×2×2×2×2Ó2Ø×)Ñ)Ð2¨UÐ2Ð)¨UÐ2×2×2Õ2Ð)¨U×2×2×2×2×2Ñ2ˆv×2×2Ó2ˆv×2×2Ô2Ð)×2×2Ò2¨U×2×2×2×2×2×2Ó2Ø�~‰~Ð%‰~ÓÐ% 2Ð%Ð 2Ñ%×%×%Õ%Ð 2×%×%×%×%×%Ñ%ˆu×%×%Ó%ˆu×%×%Ô%ˆ~×%×%Ò%Ð×%×%Ò% 2×%×%×%×%×%×%Ö%ð	 Hûó   ‚$M)¦M&§M M)Ú3g      @TFr�   Ústepsc              ƒ   óÖ  K  — t        ||«      }|j                  d|dœ«      ƒ d {  –—† }|j                  }d}||u }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }	dd	|	iz  }
t        t        j                  |
«      «      ‚d x}x}}d
}|j                  }||v }|s­t        j                  d|fd||f«      t        j                  |«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }	dd	|	iz  }
t        t        j                  |
«      «      ‚d x}x}}|j                  }d}||u }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }	dd	|	iz  }
t        t        j                  |
«      «      ‚d x}x}}|j                  } |«       }g }||k(  }|sÁt        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      dœz  }
dd|
iz  }t        t        j                  |«      «      ‚d x}x}x}}y 7 �Œ@­w)NrÎ   r·   Fr…   r‡   r‚   rS   rW   rX   zpositive integerrÐ   rÒ   rÓ   rÔ   rP   rÕ   rA   r’   r“   r”   rÖ   rÙ   s                   r#   Ú*test_planner_rejects_non_integer_max_stepsz>TestPlannerMaxSteps.test_planner_rejects_non_integer_max_steps¦   s  è ø€ ô ˜S %Ó(ˆØ—}‘}¨eÀ#Ñ%FÓG×GˆØ�~‰~Ð& Ð&ˆ~ Ð&×&×&Õ&ˆ~ ×&×&×&×&×&Ñ&ˆv×&×&Ó&ˆv×&×&Ô&ˆ~×&×&Ò& ×&×&×&×&×&×&Ó&Ø!Ð1 V§\¡\Ð1Ð! \Ð1×1×1Õ1Ð! \×1×1Ó1Ð!×1×1×1×1×1Ð1 V×1×1Ó1 V×1×1Ô1 \×1×1×1×1×1×1Ó1Ø×)Ñ)Ð2¨UÐ2Ð)¨UÐ2×2×2Õ2Ð)¨U×2×2×2×2×2Ñ2ˆv×2×2Ó2ˆv×2×2Ô2Ð)×2×2Ò2¨U×2×2×2×2×2×2Ó2Ø�~‰~Ð%‰~ÓÐ% 2Ð%Ð 2Ñ%×%×%Õ%Ð 2×%×%×%×%×%Ñ%ˆu×%×%Ó%ˆu×%×%Ô%ˆ~×%×%Ò%Ð×%×%Ò% 2×%×%×%×%×%×%Ö%ð	 HûrÛ   c              ƒ   óÒ  K  — t        ||«      }|j                  dddœ«      ƒ d {  –—† }|j                  }d}||u }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }d	d
|iz  }	t        t        j                  |	«      «      ‚d x}x}}|j                  d   }
|
t        k(  }|s¥t        j                  d|fd|
t        f«      t        j                  |
«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      nddœz  }dd|iz  }t        t        j                  |«      «      ‚d x}
}|j                  d   }t        |«      }|t        k(  }|�st        j                  d|fd|t        f«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      nddœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y 7 �Œ¾­w)NÚhugei Êš;r·   Tr…   r‡   r‚   rS   rW   rX   r•   rP   ©z%(py1)s == %(py3)sr	   ©rŠ   rq   r„   rV   rŽ   ©z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py6)sr‘   ©rT   rU   r‹   r�   r«   rr   )r   r–   r—   r\   r]   r^   r_   r`   ra   rb   rc   r™   r	   r‘   )r"   rJ   rL   rA   r‚   rf   rg   rh   ri   rj   rœ   rš   r›   rŸ   rž   ry   s                   r#   Ú&test_planner_caps_very_large_max_stepsz:TestPlannerMaxSteps.test_planner_caps_very_large_max_steps°   s›  è ø€ ä˜S %Ó(ˆØ—}‘}¨fÀ5Ñ%IÓJ×JˆØ�~‰~Ð% Ð%ˆ~ Ð%×%×%Õ%ˆ~ ×%×%×%×%×%Ñ%ˆv×%×%Ó%ˆv×%×%Ô%ˆ~×%×%Ò% ×%×%×%×%×%×%Ó%Ø�{‰{˜;Ñ'Ð9Ð'¬>Ñ9×9×9Õ9Ð'¬>×9×9Ó9Ð'×9×9×9×9×9Ð9¬>×9×9Ó9¬>×9×9×9×9×9×9Ó9Ø—;‘;˜vÑ&Ð9ŒsÐ&Ó'Ð9Ð'¬>Ñ9×9×9Ö9Ð'¬>×9×9×9×9×9Ñ9Œs×9×9Ó9Œs×9×9Ô9Ð&×9×9Ò9Ð'×9×9×9×9×9Ð9¬>×9×9Ó9¬>×9×9×9×9×9×9Ö9ð Kûs   ‚$K'¦K$§J>K'c              ƒ   óL  K  — t        ||«      }|j                  dt        dœ«      ƒ d {  –—† }|j                  d   }|t        k(  }|s¥t	        j
                  d|fd|t        f«      t	        j                  |«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      nddœz  }dd	|iz  }t        t	        j                  |«      «      ‚d x}}|j                  d
   }	t        |	«      }
|
t        k(  }|�st	        j
                  d|fd|
t        f«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      ndt	        j                  |	«      t	        j                  |
«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      nddœz  }dd|iz  }t        t	        j                  |«      «      ‚d x}	x}
}y 7 �Œ÷­w)NÚcapr·   r•   rP   râ   r	   rã   r„   rV   rŽ   rä   r‘   rå   r«   rr   )r   r–   r	   r™   r\   r]   ra   r^   r_   r`   rb   rc   r‘   )r"   rJ   rL   rA   r‚   rœ   rš   r›   ri   rf   rh   rŸ   rž   ry   s                 r#   Ú%test_planner_exact_cap_is_not_reducedz9TestPlannerMaxSteps.test_planner_exact_cap_is_not_reduced¸   s.  è ø€ ä˜S %Ó(ˆØ—}‘}¨eÄ.Ñ%QÓR×RˆØ�{‰{˜;Ñ'Ð9Ð'¬>Ñ9×9×9Õ9Ð'¬>×9×9Ó9Ð'×9×9×9×9×9Ð9¬>×9×9Ó9¬>×9×9×9×9×9×9Ó9Ø—;‘;˜vÑ&Ð9ŒsÐ&Ó'Ð9Ð'¬>Ñ9×9×9Ö9Ð'¬>×9×9×9×9×9Ñ9Œs×9×9Ó9Œs×9×9Ô9Ð&×9×9Ò9Ð'×9×9×9×9×9Ð9¬>×9×9Ó9¬>×9×9×9×9×9×9Ö9ð Sûs   ‚(H$ªH!«G7H$N)r,   r-   r.   r/   r°   r±   r²   rÃ   rÈ   rË   rÍ   ÚparametrizerÚ   rß   ræ   ré   r0   r%   r#   r´   r´   |   s;  „ ÙOà‡[�[×ÑñIó ðIð ‡[�[×Ññ-ó ð-ð
 ‡[�[×Ññ-ó ð-ð
 ‡[�[×Ññ-ó ð-ð ‡[�[×ÑØ‡[�[×Ñ˜U¢MÓ2ñ&ó 3ó ð&ð ‡[�[×ÑØ‡[�[×Ñ˜U S¨#¨t°U¸Q¸CÀ'È1ÀÐ$NÓOñ&ó Pó ð&ð ‡[�[×Ññ:ó ð:ð ‡[�[×Ññ:ó ñ:r%   r´   c                   óˆ   — e Zd Zd„ Zd„ Zej                  j                  d„ «       Zej                  j                  d„ «       Z	y)ÚTestCoderAgentc                 ó<  — t        ||«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d}||k(  }|s­t        j                  d|fd	||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y )
Nr   rP   rR   rA   rS   rW   rX   ÚcoderrZ   )r   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   s	            r#   Útest_coder_agent_namez$TestCoderAgent.test_coder_agent_nameÁ   sè   € Ü˜3 Ó&ˆØ�z‰zÐ)˜\Ð)ˆz˜\Ñ)×)×)Õ)ˆz˜\×)×)×)×)×)Ñ)ˆu×)×)Ó)ˆu×)×)Ô)ˆz×)×)Ò)˜\×)×)×)×)×)×)Ó)Ø�z‰zÐ$˜WÐ$ˆz˜WÑ$×$×$Õ$ˆz˜W×$×$×$×$×$Ñ$ˆu×$×$Ó$ˆu×$×$Ô$ˆz×$×$Ò$˜W×$×$×$×$×$×$Ô$r%   c                 ó„  — t        ||«       |j                  } |t        «      }d}||k(  }|�s
t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}}y )	Nrn   rP   ro   rJ   r   rp   rs   rt   )r   ru   r   r\   r]   r^   r_   r`   ra   rb   rc   rv   s	            r#   Útest_coder_subscribes_to_eventsz.TestCoderAgent.test_coder_subscribes_to_eventsÆ   s³   € Ü�3˜ÔØ�‰Ð7‰Ô1Ó2Ð7°aÐ7Ð2°aÑ7×7×7Ö7Ð2°a×7×7×7×7×7Ñ7ˆs×7×7Ó7ˆs×7×7Ô7ˆ×7×7×7×7×7Ð7Ô1×7×7Ó7Ô1×7×7Ô7Ð2×7×7Ò7°a×7×7×7×7×7×7Ö7r%   c              ƒ   ó`  K  — t        ||«      }|j                  ddi«      ƒ d {  –—† }d }||u}|s™t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}}|j                  }d	}	||	u }
|
s­t        j                  d
|
fd||	f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |	«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}
}	|j                  d   }d}
||
k(  }|slt        j                  d|fd||
f«      t        j                  |«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}
|j                  d   }d}
||
k(  }|slt        j                  d|fd||
f«      t        j                  |«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}
y 7 �Œ†­w)Nr¬   úimplement APIr   r�   r‚   rƒ   r„   rV   Tr…   r‡   rS   rW   rX   rP   rˆ   r‰   rŒ   r�   ÚstatusÚimplemented)r   r–   r\   r]   r^   r_   r`   ra   rb   rc   r—   r™   ©r"   rJ   rL   rA   r‚   rš   rf   r›   ri   rg   rh   rj   rœ   r�   rž   s                  r#   Ú!test_coder_execute_returns_resultz0TestCoderAgent.test_coder_execute_returns_resultÊ   s   è ø€ ä˜3 Ó&ˆØ—}‘} m°_Ð%EÓF×FˆØ!Ð!ˆv˜TÐ!×!×!Õ!ˆv˜T×!×!×!×!×!Ñ!ˆv×!×!Ó!ˆv×!×!Ô!˜T×!×!×!×!×!×!Ñ!Ø�~‰~Ð% Ð%ˆ~ Ð%×%×%Õ%ˆ~ ×%×%×%×%×%Ñ%ˆv×%×%Ó%ˆv×%×%Ô%ˆ~×%×%Ò% ×%×%×%×%×%×%Ó%Ø�{‰{˜=Ñ)Ð<¨_Ð<Ð)¨_Ñ<×<×<Õ<Ð)¨_×<×<Ó<Ð)×<×<Ò<¨_×<×<×<×<×<×<Ó<Ø�{‰{˜8Ñ$Ð5¨Ð5Ð$¨Ñ5×5×5Õ5Ð$¨×5×5Ó5Ð$×5×5Ò5¨×5×5×5×5×5×5Ô5ð	 Gûs   ‚#J.¥J+¦JJ.c              ƒ   ó   K  — t        ||«      }|j                  ddi«      ƒ d {  –—†  |j                  «       }t        |«      }d}||k(  }|söt	        j
                  d|fd||f«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      nddt        j                  «       v st	        j                  |«      rt	        j                  |«      ndt	        j                  |«      t	        j                  |«      dœz  }d	d
|iz  }	t        t	        j                  |	«      «      ‚d x}x}}|d   }
d}|
|k(  }|slt	        j
                  d|fd|
|f«      t	        j                  |
«      t	        j                  |«      dœz  }dd|iz  }t        t	        j                  |«      «      ‚d x}
x}}y 7 �Œ¦­w)Nr¬   ró   rn   rP   r©   r‘   rõ   rª   r«   rr   r   rˆ   r‰   rŒ   r�   )r   r–   Úget_implementedr‘   r\   r]   r^   r_   r`   ra   rb   rc   )r"   rJ   rL   rA   rõ   rš   rŸ   rg   rž   ry   rœ   rh   r�   s                r#   Útest_coder_get_implementedz)TestCoderAgent.test_coder_get_implementedÓ   s  è ø€ ä˜3 Ó&ˆØ�m‰m˜]¨OÐ<Ó=×=Ð=Ø×+Ñ+Ó-ˆÜ�;ÓÐ$ 1Ð$Ð 1Ñ$×$×$Õ$Ð 1×$×$×$×$×$Ñ$Œs×$×$Ó$Œs×$×$×$×$×$Ò$�;×$×$Ó$�;×$×$Ô$Ð×$×$Ò$ 1×$×$×$×$×$×$Ó$Ø˜1‰~Ð0 Ð0ˆ~ Ñ0×0×0Õ0ˆ~ ×0×0Ó0ˆ~×0×0Ò0 ×0×0×0×0×0×0Ô0ð 	>ûs   ‚#G¥G¦F&GN)
r,   r-   r.   rï   rñ   r°   r±   r²   r÷   rú   r0   r%   r#   rì   rì   À   sH   „ ò%ò
8ð ‡[�[×Ññ6ó ð6ð ‡[�[×Ññ1ó ñ1r%   rì   c                   óÀ   — e Zd Zd„ Zd„ Zej                  j                  d„ «       Zej                  j                  d„ «       Z	ej                  j                  d„ «       Z
y)ÚTestEvaluatorAgentc                 ó<  — t        ||«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d}||k(  }|s­t        j                  d|fd	||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y )
Nr   rP   rR   rA   rS   rW   rX   Ú	evaluatorrZ   )r   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   s	            r#   Útest_evaluator_agent_namez,TestEvaluatorAgent.test_evaluator_agent_nameÝ   sì   € Ü˜s EÓ*ˆØ�z‰zÐ-Ð-Ð-ˆzÐ-Ñ-×-×-Õ-ˆzÐ-×-×-×-×-×-Ñ-ˆu×-×-Ó-ˆu×-×-Ô-ˆz×-×-Ò-Ð-×-×-×-×-×-×-Ó-Ø�z‰zÐ(˜[Ð(ˆz˜[Ñ(×(×(Õ(ˆz˜[×(×(×(×(×(Ñ(ˆu×(×(Ó(ˆu×(×(Ô(ˆz×(×(Ò(˜[×(×(×(×(×(×(Ô(r%   c                 ó„  — t        ||«       |j                  } |t        «      }d}||k(  }|�s
t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}}y )	Nrn   rP   ro   rJ   r   rp   rs   rt   )r   ru   r   r\   r]   r^   r_   r`   ra   rb   rc   rv   s	            r#   Ú#test_evaluator_subscribes_to_eventsz6TestEvaluatorAgent.test_evaluator_subscribes_to_eventsâ   s³   € Ü�s˜EÔ"Ø�‰Ð;‰Ô5Ó6Ð;¸!Ð;Ð6¸!Ñ;×;×;Ö;Ð6¸!×;×;×;×;×;Ñ;ˆs×;×;Ó;ˆs×;×;Ô;ˆ×;×;×;×;×;Ð;Ô5×;×;Ó;Ô5×;×;Ô;Ð6×;×;Ò;¸!×;×;×;×;×;×;Ö;r%   c              ƒ   ó^  K  — t        ||«      }|j                  ddi«      ƒ d {  –—† }d }||u}|s™t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}}|j                  }d	}	||	u }
|
s­t        j                  d
|
fd||	f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |	«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}
}	|j                  d   }d	}
||
u }|slt        j                  d
|fd||
f«      t        j                  |«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}
|j                  d   }d}
||
k(  }|slt        j                  d|fd||
f«      t        j                  |«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}
y 7 �Œ…­w)NÚscoregš™™™™™é?r   r�   r‚   rƒ   r„   rV   Tr…   r‡   rS   rW   rX   Úpassed©z%(py1)s is %(py4)sr‰   rŒ   r�   rP   rˆ   ©r   r–   r\   r]   r^   r_   r`   ra   rb   rc   r—   r™   rö   s                  r#   Útest_evaluator_execute_passesz0TestEvaluatorAgent.test_evaluator_execute_passesæ   sž  è ø€ ä˜s EÓ*ˆØ—}‘} g¨s ^Ó4×4ˆØ!Ð!ˆv˜TÐ!×!×!Õ!ˆv˜T×!×!×!×!×!Ñ!ˆv×!×!Ó!ˆv×!×!Ô!˜T×!×!×!×!×!×!Ñ!Ø�~‰~Ð% Ð%ˆ~ Ð%×%×%Õ%ˆ~ ×%×%×%×%×%Ñ%ˆv×%×%Ó%ˆv×%×%Ô%ˆ~×%×%Ò% ×%×%×%×%×%×%Ó%Ø�{‰{˜8Ñ$Ð,¨Ð,Ð$¨Ð,×,×,Õ,Ð$¨×,×,Ó,Ð$×,×,Ò,¨×,×,×,×,×,×,Ó,Ø�{‰{˜7Ñ#Ð* sÐ*Ð# sÑ*×*×*Õ*Ð# s×*×*Ó*Ð#×*×*Ò* s×*×*×*×*×*×*Ô*ð	 5ûó   ‚#J-¥J*¦JJ-c              ƒ   óJ  K  — t        ||«      }|j                  ddi«      ƒ d {  –—† }d }||u}|s™t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}}|j                  }d	}	||	u }
|
s­t        j                  d
|
fd||	f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |	«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}
}	|j                  d   }d	}
||
u }|slt        j                  d
|fd||
f«      t        j                  |«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}
y 7 �Œû­w)Nr  g333333Ó?r   r�   r‚   rƒ   r„   rV   Fr…   r‡   rS   rW   rX   r  r  r‰   rŒ   r�   r  rö   s                  r#   Útest_evaluator_execute_failsz/TestEvaluatorAgent.test_evaluator_execute_failsï   sH  è ø€ ä˜s EÓ*ˆØ—}‘} g¨s ^Ó4×4ˆØ!Ð!ˆv˜TÐ!×!×!Õ!ˆv˜T×!×!×!×!×!Ñ!ˆv×!×!Ó!ˆv×!×!Ô!˜T×!×!×!×!×!×!Ñ!Ø�~‰~Ð& Ð&ˆ~ Ð&×&×&Õ&ˆ~ ×&×&×&×&×&Ñ&ˆv×&×&Ó&ˆv×&×&Ô&ˆ~×&×&Ò& ×&×&×&×&×&×&Ó&Ø�{‰{˜8Ñ$Ð-¨Ð-Ð$¨Ð-×-×-Õ-Ð$¨×-×-Ó-Ð$×-×-Ò-¨×-×-×-×-×-×-Ô-ð 5ûs   ‚#H#¥H ¦G;H#c              ƒ   ó¤  K  — t        ||«      }|j                  ddi«      ƒ d {  –—†  |j                  «       }t        |«      }d}||k(  }|söt	        j
                  d|fd||f«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      nddt        j                  «       v st	        j                  |«      rt	        j                  |«      ndt	        j                  |«      t	        j                  |«      dœz  }d	d
|iz  }	t        t	        j                  |	«      «      ‚d x}x}}|d   d   }
d}|
|u }|slt	        j
                  d|fd|
|f«      t	        j                  |
«      t	        j                  |«      dœz  }dd|iz  }t        t	        j                  |«      «      ‚d x}
x}}y 7 �Œ¨­w)Nr  çÍÌÌÌÌÌì?rn   rP   r©   r‘   Úassessmentsrª   r«   rr   r   r  Tr…   r  r‰   rŒ   r�   )r   r–   Úget_assessmentsr‘   r\   r]   r^   r_   r`   ra   rb   rc   )r"   rJ   rL   rA   r  rš   rŸ   rg   rž   ry   rœ   rh   r�   s                r#   Útest_evaluator_get_assessmentsz1TestEvaluatorAgent.test_evaluator_get_assessments÷   s!  è ø€ ä˜s EÓ*ˆØ�m‰m˜W c˜NÓ+×+Ð+Ø×+Ñ+Ó-ˆÜ�;ÓÐ$ 1Ð$Ð 1Ñ$×$×$Õ$Ð 1×$×$×$×$×$Ñ$Œs×$×$Ó$Œs×$×$×$×$×$Ò$�;×$×$Ó$�;×$×$Ô$Ð×$×$Ò$ 1×$×$×$×$×$×$Ó$Ø˜1‰~˜hÑ'Ð/¨4Ð/Ð'¨4Ð/×/×/Õ/Ð'¨4×/×/Ó/Ð'×/×/Ò/¨4×/×/×/×/×/×/Ô/ð 	,ûs   ‚#G¥G¦F(GN)r,   r-   r.   rÿ   r  r°   r±   r²   r  r
  r  r0   r%   r#   rü   rü   Ü   sf   „ ò)ò
<ð ‡[�[×Ññ+ó ð+ð ‡[�[×Ññ.ó ð.ð ‡[�[×Ññ0ó ñ0r%   rü   c                   óÀ   — e Zd Zd„ Zd„ Zej                  j                  d„ «       Zej                  j                  d„ «       Z	ej                  j                  d„ «       Z
y)ÚTestSecurityAgentc                 ó<  — t        ||«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d}||k(  }|s­t        j                  d|fd	||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y )
Nr   rP   rR   rA   rS   rW   rX   ÚsecurityrZ   )r   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   s	            r#   Útest_security_agent_namez*TestSecurityAgent.test_security_agent_name  óè   € Ü˜c 5Ó)ˆØ�z‰zÐ,˜_Ð,ˆz˜_Ñ,×,×,Õ,ˆz˜_×,×,×,×,×,Ñ,ˆu×,×,Ó,ˆu×,×,Ô,ˆz×,×,Ò,˜_×,×,×,×,×,×,Ó,Ø�z‰zÐ'˜ZÐ'ˆz˜ZÑ'×'×'Õ'ˆz˜Z×'×'×'×'×'Ñ'ˆu×'×'Ó'ˆu×'×'Ô'ˆz×'×'Ò'˜Z×'×'×'×'×'×'Ô'r%   c                 ó„  — t        ||«       |j                  } |t        «      }d}||k(  }|�s
t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}}y )	Nrn   rP   ro   rJ   r   rp   rs   rt   )r   ru   r   r\   r]   r^   r_   r`   ra   rb   rc   rv   s	            r#   Ú"test_security_subscribes_to_eventsz4TestSecurityAgent.test_security_subscribes_to_events  ó³   € Ü�c˜5Ô!Ø�‰Ð:‰Ô4Ó5Ð:¸Ð:Ð5¸Ñ:×:×:Ö:Ð5¸×:×:×:×:×:Ñ:ˆs×:×:Ó:ˆs×:×:Ô:ˆ×:×:×:×:×:Ð:Ô4×:×:Ó:Ô4×:×:Ô:Ð5×:×:Ò:¸×:×:×:×:×:×:Ö:r%   c              ƒ   ó^  K  — t        ||«      }|j                  ddi«      ƒ d {  –—† }d }||u}|s™t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}}|j                  }d	}	||	u }
|
s­t        j                  d
|
fd||	f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |	«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}
}	|j                  d   }d}
||
u }|slt        j                  d
|fd||
f«      t        j                  |«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}
|j                  d   }d}
||
k(  }|slt        j                  d|fd||
f«      t        j                  |«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}
y 7 �Œ…­w)NÚrequires_reviewFr   r�   r‚   rƒ   r„   rV   Tr…   r‡   rS   rW   rX   r  r‰   rŒ   r�   ÚseverityÚlowrP   rˆ   ©r   r–   r\   r]   r^   r_   r`   ra   rb   rc   r—   r™   rö   s                  r#   Útest_security_execute_approvedz0TestSecurityAgent.test_security_execute_approved
  s¢  è ø€ ä˜c 5Ó)ˆØ—}‘}Ð&7¸Ð%?Ó@×@ˆØ!Ð!ˆv˜TÐ!×!×!Õ!ˆv˜T×!×!×!×!×!Ñ!ˆv×!×!Ó!ˆv×!×!Ô!˜T×!×!×!×!×!×!Ñ!Ø�~‰~Ð% Ð%ˆ~ Ð%×%×%Õ%ˆ~ ×%×%×%×%×%Ñ%ˆv×%×%Ó%ˆv×%×%Ô%ˆ~×%×%Ò% ×%×%×%×%×%×%Ó%Ø�{‰{Ð,Ñ-Ð6°Ð6Ð-°Ð6×6×6Õ6Ð-°×6×6Ó6Ð-×6×6Ò6°×6×6×6×6×6×6Ó6Ø�{‰{˜:Ñ&Ð/¨%Ð/Ð&¨%Ñ/×/×/Õ/Ð&¨%×/×/Ó/Ð&×/×/Ò/¨%×/×/×/×/×/×/Ô/ð	 Aûr  c              ƒ   ó^  K  — t        ||«      }|j                  ddi«      ƒ d {  –—† }d }||u}|s™t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}}|j                  }d	}	||	u }
|
s­t        j                  d
|
fd||	f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |	«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}
}	|j                  d   }d}
||
u }|slt        j                  d
|fd||
f«      t        j                  |«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}
|j                  d   }d}
||
k(  }|slt        j                  d|fd||
f«      t        j                  |«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}
y 7 �Œ…­w)Nr  Tr   r�   r‚   rƒ   r„   rV   Fr…   r‡   rS   rW   rX   r  r‰   rŒ   r�   r  ÚhighrP   rˆ   r  rö   s                  r#   Útest_security_execute_blockedz/TestSecurityAgent.test_security_execute_blocked  s¢  è ø€ ä˜c 5Ó)ˆØ—}‘}Ð&7¸Ð%>Ó?×?ˆØ!Ð!ˆv˜TÐ!×!×!Õ!ˆv˜T×!×!×!×!×!Ñ!ˆv×!×!Ó!ˆv×!×!Ô!˜T×!×!×!×!×!×!Ñ!Ø�~‰~Ð& Ð&ˆ~ Ð&×&×&Õ&ˆ~ ×&×&×&×&×&Ñ&ˆv×&×&Ó&ˆv×&×&Ô&ˆ~×&×&Ò& ×&×&×&×&×&×&Ó&Ø�{‰{Ð,Ñ-Ð5°Ð5Ð-°Ð5×5×5Õ5Ð-°×5×5Ó5Ð-×5×5Ò5°×5×5×5×5×5×5Ó5Ø�{‰{˜:Ñ&Ð0¨&Ð0Ð&¨&Ñ0×0×0Õ0Ð&¨&×0×0Ó0Ð&×0×0Ò0¨&×0×0×0×0×0×0Ô0ð	 @ûr  c              ƒ   ó¦  K  — t        ||«      }|j                  ddi«      ƒ d {  –—†  |j                  «       }t        |«      }d}||k(  }|söt	        j
                  d|fd||f«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      nddt        j                  «       v st	        j                  |«      rt	        j                  |«      ndt	        j                  |«      t	        j                  |«      dœz  }d	d
|iz  }	t        t	        j                  |	«      «      ‚d x}x}}|d   d   }
d}|
|k(  }|slt	        j
                  d|fd|
|f«      t	        j                  |
«      t	        j                  |«      dœz  }dd|iz  }t        t	        j                  |«      «      ‚d x}
x}}y 7 �Œ©­w)Nr  Trn   rP   r©   r‘   Úfindingsrª   r«   rr   r   r  r   rˆ   r‰   rŒ   r�   )r   r–   Úget_findingsr‘   r\   r]   r^   r_   r`   ra   rb   rc   )r"   rJ   rL   rA   r#  rš   rŸ   rg   rž   ry   rœ   rh   r�   s                r#   Útest_security_get_findingsz,TestSecurityAgent.test_security_get_findings  s  è ø€ ä˜c 5Ó)ˆØ�m‰mÐ.°Ð5Ó6×6Ð6Ø×%Ñ%Ó'ˆÜ�8‹}Ð! Ð!ˆ} Ñ!×!×!Õ!ˆ} ×!×!×!×!×!Ñ!Œs×!×!Ó!Œs×!×!×!×!×!Ò!�8×!×!Ó!�8×!×!Ô!ˆ}×!×!Ò! ×!×!×!×!×!×!Ó!Ø˜‰{˜:Ñ&Ð0¨&Ð0Ð&¨&Ñ0×0×0Õ0Ð&¨&×0×0Ó0Ð&×0×0Ò0¨&×0×0×0×0×0×0Ô0ð 	7ûr¯   N)r,   r-   r.   r  r  r°   r±   r²   r  r!  r%  r0   r%   r#   r  r     sf   „ ò(ò
;ð ‡[�[×Ññ0ó ð0ð ‡[�[×Ññ1ó ð1ð ‡[�[×Ññ1ó ñ1r%   r  c                   óˆ   — e Zd Zd„ Zd„ Zej                  j                  d„ «       Zej                  j                  d„ «       Z	y)ÚTestResearchAgentc                 ó<  — t        ||«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d}||k(  }|s­t        j                  d|fd	||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y )
Nr   rP   rR   rA   rS   rW   rX   ÚresearchrZ   )r   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   s	            r#   Útest_research_agent_namez*TestResearchAgent.test_research_agent_name&  r  r%   c                 ó„  — t        ||«       |j                  } |t        «      }d}||k(  }|�s
t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}}y )	Nrn   rP   ro   rJ   r   rp   rs   rt   )r   ru   r   r\   r]   r^   r_   r`   ra   rb   rc   rv   s	            r#   Ú"test_research_subscribes_to_eventsz4TestResearchAgent.test_research_subscribes_to_events+  r  r%   c              ƒ   óL  K  — t        ||«      }|j                  ddi«      ƒ d {  –—† }d }||u}|s™t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}}|j                  }d	}	||	u }
|
s­t        j                  d
|
fd||	f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |	«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}
}	|j                  d   }d}
||
k(  }|slt        j                  d|fd||
f«      t        j                  |«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}
y 7 �Œü­w)NÚtopicú	AI safetyr   r�   r‚   rƒ   r„   rV   Tr…   r‡   rS   rW   rX   rP   rˆ   r‰   rŒ   r�   )r   r–   r\   r]   r^   r_   r`   ra   rb   rc   r—   r™   rö   s                  r#   Ú$test_research_execute_returns_resultz6TestResearchAgent.test_research_execute_returns_result/  sI  è ø€ ä˜c 5Ó)ˆØ—}‘} g¨{Ð%;Ó<×<ˆØ!Ð!ˆv˜TÐ!×!×!Õ!ˆv˜T×!×!×!×!×!Ñ!ˆv×!×!Ó!ˆv×!×!Ô!˜T×!×!×!×!×!×!Ñ!Ø�~‰~Ð% Ð%ˆ~ Ð%×%×%Õ%ˆ~ ×%×%×%×%×%Ñ%ˆv×%×%Ó%ˆv×%×%Ô%ˆ~×%×%Ò% ×%×%×%×%×%×%Ó%Ø�{‰{˜7Ñ#Ð2 {Ð2Ð# {Ñ2×2×2Õ2Ð# {×2×2Ó2Ð#×2×2Ò2 {×2×2×2×2×2×2Ô2ð =ûs   ‚#H$¥H!¦G<H$c              ƒ   ó¦  K  — t        ||«      }|j                  ddi«      ƒ d {  –—†  |j                  «       }t        |«      }d}||k(  }|söt	        j
                  d|fd||f«      dt        j                  «       v st	        j                  t        «      rt	        j                  t        «      nddt        j                  «       v st	        j                  |«      rt	        j                  |«      ndt	        j                  |«      t	        j                  |«      dœz  }d	d
|iz  }	t        t	        j                  |	«      «      ‚d x}x}}|d   d   }
d}|
|k(  }|slt	        j
                  d|fd|
|f«      t	        j                  |
«      t	        j                  |«      dœz  }dd|iz  }t        t	        j                  |«      «      ‚d x}
x}}y 7 �Œ©­w)Nr.  r/  rn   rP   r©   r‘   r)  rª   r«   rr   r   rˆ   r‰   rŒ   r�   )r   r–   Úget_researchr‘   r\   r]   r^   r_   r`   ra   rb   rc   )r"   rJ   rL   rA   r)  rš   rŸ   rg   rž   ry   rœ   rh   r�   s                r#   Útest_research_get_researchz,TestResearchAgent.test_research_get_research7  s  è ø€ ä˜c 5Ó)ˆØ�m‰m˜W kÐ2Ó3×3Ð3Ø×%Ñ%Ó'ˆÜ�8‹}Ð! Ð!ˆ} Ñ!×!×!Õ!ˆ} ×!×!×!×!×!Ñ!Œs×!×!Ó!Œs×!×!×!×!×!Ò!�8×!×!Ó!�8×!×!Ô!ˆ}×!×!Ò! ×!×!×!×!×!×!Ó!Ø˜‰{˜7Ñ#Ð2 {Ð2Ð# {Ñ2×2×2Õ2Ð# {×2×2Ó2Ð#×2×2Ò2 {×2×2×2×2×2×2Ô2ð 	4ûr¯   N)
r,   r-   r.   r*  r,  r°   r±   r²   r0  r3  r0   r%   r#   r'  r'  %  sH   „ ò(ò
;ð ‡[�[×Ññ3ó ð3ð ‡[�[×Ññ3ó ñ3r%   r'  c                   óv  — e Zd ZdZej
                  j                  d„ «       Zej
                  j                  d„ «       Zej
                  j                  ej
                  j                  de
d„ fed„ fed„ fed„ fed	„ fed
„ fg«      d„ «       «       Zej
                  j                  d„ «       Zej
                  j                  d„ «       Zej
                  j                  d„ «       Zej
                  j                  d„ «       Zej
                  j                  d„ «       Zej
                  j                  d„ «       Zy)ÚTestAgentEventBusAuthorizationa  The bus must not be a way around the authorization chain.

    A published ``*_TASK_REQUEST`` is untrusted input: anyone holding a
    reference to the bus could previously reach ``Agent.execute`` with an
    arbitrary payload and no identity, scope, policy or approval check.
    c              ƒ   óÊ	  K  — t        ||«      }|j                  t        ddi«      ƒ d {  –—†  |j                  }t	        |«      }d}||k(  }|�s
t        j                  d|fd||f«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      nddt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      dœz  }d	d
|iz  }	t        t        j                  |	«      «      ‚d x}x}x}}|j                  d   }
|
j                  }d}||u }|s€t        j                  d|fd||f«      t        j                  |
«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}
x}x}}d}
|j                  d   }|j                  }|
|v }|s€t        j                  d|fd|
|f«      t        j                  |
«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}
x}x}}|j                  d   }
|
j                  }d}||u }|s€t        j                  d|fd||f«      t        j                  |
«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}
x}x}}|j                  d   j                   d   }
d}|
|k(  }|slt        j                  d|fd|
|f«      t        j                  |
«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}
x}}|j"                  } |«       }g }||k(  }|sÁt        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      dœz  }dd |iz  }t        t        j                  |«      «      ‚d x}x}x}}y 7 �Œ¶­w)!Nr}   úintegration testrn   rP   r£   r‘   rY   r¤   rs   rt   r   Fr…   ©z/%(py3)s
{%(py3)s = %(py1)s.success
} is %(py6)s©rŠ   rq   r�   r«   rr   Ú
authorizerrÐ   ©z-%(py1)s in %(py6)s
{%(py6)s = %(py4)s.error
}©rŠ   r‹   r�   )z;%(py3)s
{%(py3)s = %(py1)s.execution_attempted
} is %(py6)sÚsourceÚ	event_busrˆ   r‰   rŒ   r�   rÕ   r’   r“   r”   )r   Úpublishr   r¦   r‘   r\   r]   r^   r_   r`   ra   rb   rc   r—   r×   rØ   r™   r­   )r"   rJ   rL   rY   rš   rg   rw   rx   ry   rz   rœ   rŸ   rž   rh   r�   rf   rj   r    s                     r#   Ú*test_publish_without_authorizer_is_refusedzITestAgentEventBusAuthorization.test_publish_without_authorizer_is_refusedH  s	  è ø€ ä˜s EÓ*ˆØ�k‰kÔ.°Ð9KÐ0LÓM×MÐMØ—?‘?Ð(Œs�?Ó#Ð( qÐ(Ð# qÑ(×(×(Ö(Ð# q×(×(×(×(×(Ñ(Œs×(×(Ó(Œs×(×(×(×(×(Ò(�7×(×(Ó(�7×(×(Ô(�?×(×(Ò(Ð#×(×(Ò( q×(×(×(×(×(×(Õ(Ø�‰˜qÑ!Ð2Ð!×)Ñ)Ð2¨UÐ2Ð)¨UÐ2×2×2Õ2Ð)¨U×2×2Ó2Ð!×2×2Ò2Ð)×2×2Ò2¨U×2×2×2×2×2×2Õ2ØÐ7˜wŸ™¨qÑ1Ð7Ð1×7Ñ7Ð7ˆ|Ð7Ð7×7×7Õ7ˆ|Ð7×7×7Ó7ˆ|×7×7Ò7Ð1×7×7Ò7Ð7×7×7×7×7×7×7Õ7Ø�‰˜qÑ!Ð>Ð!×5Ñ5Ð>¸Ð>Ð5¸Ð>×>×>Õ>Ð5¸×>×>Ó>Ð!×>×>Ò>Ð5×>×>Ò>¸×>×>×>×>×>×>Õ>Ø�‰˜qÑ!×&Ñ& xÑ0Ð?°KÐ?Ð0°KÑ?×?×?Õ?Ð0°K×?×?Ó?Ð0×?×?Ò?°K×?×?×?×?×?×?Ó?à×ÑÐ'ÑÓ!Ð' RÐ'Ð! RÑ'×'×'Õ'Ð! R×'×'×'×'×'Ñ'ˆw×'×'Ó'ˆw×'×'Ô'Ð×'×'Ò'Ð!×'×'Ò' R×'×'×'×'×'×'Ö'ð 	Nûs   ‚(S#ªS «R6S#c              ƒ   óÂ  K  — t        ||«      }|j                  t        dddœ«      ƒ d {  –—†  |j                  d   }|j                  }d}||k(  }|s€t        j                  d|fd||f«      t        j                  |«      t        j                  |«      t        j                  |«      dœz  }dd	|iz  }	t        t        j                  |	«      «      ‚d x}x}x}}y 7 Œ±­w)
NÚgzt-42)r}   r?   r   rP   )z/%(py3)s
{%(py3)s = %(py1)s.task_id
} == %(py6)sr9  r«   rr   )
r   r?  r   r¦   r?   r\   r]   ra   rb   rc   )
r"   rJ   rL   rY   rœ   rš   rŸ   rg   rž   ry   s
             r#   Ú$test_refusal_keeps_publisher_task_idzCTestAgentEventBusAuthorization.test_refusal_keeps_publisher_task_idT  s    è ø€ ä˜s EÓ*ˆØ�k‰kÔ.¸ÈÑ0PÓQ×QÐQØ�‰˜qÑ!Ð3Ð!×)Ñ)Ð3¨VÐ3Ð)¨VÑ3×3×3Õ3Ð)¨V×3×3Ó3Ð!×3×3Ò3Ð)×3×3Ò3¨V×3×3×3×3×3×3Ö3ð 	Rús   ‚)C«C¬B2Czevent, factoryc                 ó   — t        | |«      S r   )r   ©ÚbÚqs     r#   ú<lambda>z'TestAgentEventBusAuthorization.<lambda>^  ó   € ´¸QÀÓ0B€ r%   c                 ó   — t        | |«      S r   )r   rE  s     r#   rH  z'TestAgentEventBusAuthorization.<lambda>_  s   € ¬j¸¸AÓ.>€ r%   c                 ó   — t        | |«      S r   )r   rE  s     r#   rH  z'TestAgentEventBusAuthorization.<lambda>`  s   € ´.ÀÀAÓ2F€ r%   c                 ó   — t        | |«      S r   )r   rE  s     r#   rH  z'TestAgentEventBusAuthorization.<lambda>a  ó   € ´¸qÀ!Ó1D€ r%   c                 ó   — t        | |«      S r   )r   rE  s     r#   rH  z'TestAgentEventBusAuthorization.<lambda>b  rM  r%   c                 ó   — t        | |«      S r   )r   rE  s     r#   rH  z'TestAgentEventBusAuthorization.<lambda>c  rI  r%   c              ƒ   óp  K  —  |||«      }|j                  |dddœ«      ƒ d {  –—†  |j                  }t        |«      }d}||k(  }	|	�s
t        j                  d|	fd||f«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      nddt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      d	œz  }
d
d|
iz  }t        t        j                  |«      «      ‚d x}x}x}	}|j                  d   }|j                  }d}||u }|s€t        j                  d|fd||f«      t        j                  |«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }
t        t        j                  |
«      «      ‚d x}x}x}}|j                  d   }|j                  }d }||u}|s€t        j                  d|fd||f«      t        j                  |«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }
t        t        j                  |
«      «      ‚d x}x}x}}y 7 �Œ�­w)NÚdr  )r¬   r  rn   rP   r£   r‘   rA   r¤   rs   rt   r   Fr…   r8  r9  r«   rr   r   )z1%(py3)s
{%(py3)s = %(py1)s.error
} is not %(py6)s)r?  r¦   r‘   r\   r]   r^   r_   r`   ra   rb   rc   r—   r×   )r"   rJ   rL   ÚeventÚfactoryrA   rš   rg   rw   rx   ry   rz   rœ   rŸ   rž   s                  r#   Ú+test_every_agent_refuses_without_authorizerzJTestAgentEventBusAuthorization.test_every_agent_refuses_without_authorizerZ  s³  è ø€ ñ ˜˜UÓ#ˆØ�k‰k˜%°¸sÑ!CÓD×DÐDØ—=‘=Ð&Œs�=Ó!Ð& QÐ&Ð! QÑ&×&×&Ö&Ð! Q×&×&×&×&×&Ñ&Œs×&×&Ó&Œs×&×&×&×&×&Ò&�5×&×&Ó&�5×&×&Ô&�=×&×&Ò&Ð!×&×&Ò& Q×&×&×&×&×&×&Õ&Ø�}‰}˜QÑÐ0Ð×'Ñ'Ð0¨5Ð0Ð'¨5Ð0×0×0Õ0Ð'¨5×0×0Ó0Ð×0×0Ò0Ð'×0×0Ò0¨5×0×0×0×0×0×0Õ0Ø�}‰}˜QÑÐ1Ð×%Ñ%Ð1¨TÐ1Ð%¨TÐ1×1×1Õ1Ð%¨T×1×1Ó1Ð×1×1Ò1Ð%×1×1Ò1¨T×1×1×1×1×1×1Ö1ð 	Eûs   ‚"J6¤J3¥JJ6c              ƒ   ó~  K  — t        d«      }t        |||¬«      }t        |||¬«      }|j                  t        ddi«      ƒ d {  –—†  |j                  t
        ddi«      ƒ d {  –—†  |j                  d   }|j                  }d}||u }	|	s€t        j                  d|	fd	||f«      t        j                  |«      t        j                  |«      t        j                  |«      d
œz  }
dd|
iz  }t        t        j                  |«      «      ‚d x}x}x}	}|j                  d   }|j                  }d}||k(  }	|	s€t        j                  d|	fd||f«      t        j                  |«      t        j                  |«      t        j                  |«      d
œz  }
dd|
iz  }t        t        j                  |«      «      ‚d x}x}x}	}|j                  } |«       }g }||k(  }|sÁt        j                  d|fd||f«      dt        j                   «       v st        j"                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}}|j                  d   }|j                  }d}||u }	|	s€t        j                  d|	fd	||f«      t        j                  |«      t        j                  |«      t        j                  |«      d
œz  }
dd|
iz  }t        t        j                  |«      «      ‚d x}x}x}	}|j$                  } |«       }g }||k(  }|sÁt        j                  d|fd||f«      dt        j                   «       v st        j"                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}}y 7 �Œò7 �ŒÕ­w)Nz
scope gate©r:  r}   Údeniedr¬   r   Fr…   r8  r9  r«   rr   rP   )z-%(py3)s
{%(py3)s = %(py1)s.error
} == %(py6)srÕ   rY   r’   r“   r”   )zN%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.get_implemented
}()
} == %(py7)srî   )r2   r   r   r?  r   r   r¦   r—   r\   r]   ra   rb   rc   r×   r­   r^   r_   r`   rù   )r"   rJ   rL   r:  rY   rî   rœ   rš   rŸ   rg   rž   ry   rf   rh   rx   rj   r    s                    r#   Ú+test_denying_authorizer_prevents_agent_bodyzJTestAgentEventBusAuthorization.test_denying_authorizer_prevents_agent_bodym  sÂ  è ø€ ä& |Ó4ˆ
Ü˜s E°jÔAˆÜ˜3 °*Ô=ˆØ�k‰kÔ.°¸Ð0BÓC×CÐCØ�k‰kÔ,¨}¸hÐ.GÓH×HÐHØ�‰˜qÑ!Ð2Ð!×)Ñ)Ð2¨UÐ2Ð)¨UÐ2×2×2Õ2Ð)¨U×2×2Ó2Ð!×2×2Ò2Ð)×2×2Ò2¨U×2×2×2×2×2×2Õ2Ø�‰˜qÑ!Ð7Ð!×'Ñ'Ð7¨<Ð7Ð'¨<Ñ7×7×7Õ7Ð'¨<×7×7Ó7Ð!×7×7Ò7Ð'×7×7Ò7¨<×7×7×7×7×7×7Õ7Ø×ÑÐ'ÑÓ!Ð' RÐ'Ð! RÑ'×'×'Õ'Ð! R×'×'×'×'×'Ñ'ˆw×'×'Ó'ˆw×'×'Ô'Ð×'×'Ò'Ð!×'×'Ò' R×'×'×'×'×'×'Õ'Ø�}‰}˜QÑÐ0Ð×'Ñ'Ð0¨5Ð0Ð'¨5Ð0×0×0Õ0Ð'¨5×0×0Ó0Ð×0×0Ò0Ð'×0×0Ò0¨5×0×0×0×0×0×0Õ0Ø×$Ñ$Ð,Ñ$Ó&Ð,¨"Ð,Ð&¨"Ñ,×,×,Õ,Ð&¨"×,×,×,×,×,Ñ,ˆu×,×,Ó,ˆu×,×,Ô,Ð$×,×,Ò,Ð&×,×,Ò,¨"×,×,×,×,×,×,Ö,ð 	DùØHûs%   ‚AP=ÁP7ÁP=Á%P:Á&OP=Ð:P=c              ƒ   ó  K  — t        «       }t        |||¬«      }|j                  t        ddi«      ƒ d {  –—†  |j                  }t        |«      }d}||k(  }|�s
t        j                  d|fd||f«      dt        j                  «       v st        j                  t
        «      rt        j                  t
        «      nddt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      d	œz  }	d
d|	iz  }
t        t        j                  |
«      «      ‚d x}x}x}}|j                  d   }|j                  }d}||u }|s€t        j                  d|fd||f«      t        j                  |«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }	t        t        j                  |	«      «      ‚d x}x}x}}|j                  d   j                  d   }d}||k(  }|slt        j                  d|fd||f«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                   }ddig}||k(  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y 7 �ŒF­w)NrV  r}   r7  rn   rP   r£   r‘   rY   r¤   rs   rt   r   Tr…   r8  r9  r«   rr   rˆ   r‰   rŒ   r�   )z-%(py2)s
{%(py2)s = %(py0)s.calls
} == %(py5)sr:  rS   rW   rX   )r   r   r?  r   r¦   r‘   r\   r]   r^   r_   r`   ra   rb   rc   r—   r™   r    )r"   rJ   rL   r:  rY   rš   rg   rw   rx   ry   rz   rœ   rŸ   rž   rh   r�   rf   ri   rj   s                      r#   Ú*test_approving_authorizer_allows_executionzITestAgentEventBusAuthorization.test_approving_authorizer_allows_executionz  s2  è ø€ ä'Ó)ˆ
Ü˜s E°jÔAˆØ�k‰kÔ.°Ð9KÐ0LÓM×MÐMØ—?‘?Ð(Œs�?Ó#Ð( qÐ(Ð# qÑ(×(×(Ö(Ð# q×(×(×(×(×(Ñ(Œs×(×(Ó(Œs×(×(×(×(×(Ò(�7×(×(Ó(�7×(×(Ô(�?×(×(Ò(Ð#×(×(Ò( q×(×(×(×(×(×(Õ(Ø�‰˜qÑ!Ð1Ð!×)Ñ)Ð1¨TÐ1Ð)¨TÐ1×1×1Õ1Ð)¨T×1×1Ó1Ð!×1×1Ò1Ð)×1×1Ò1¨T×1×1×1×1×1×1Õ1Ø�‰˜qÑ!×&Ñ& vÑ.ÐDÐ2DÐDÐ.Ð2DÑD×D×DÕDÐ.Ð2D×D×DÓDÐ.×D×DÒDÐ2D×D×D×D×D×D×DÓDØ×ÑÐA VÐ-?Ð$@Ð#AÐAÐÐ#AÑA×A×AÕAÐÐ#A×A×A×A×A×AÑAˆz×A×AÓAˆz×A×AÔAÐ×A×AÒAÐ#A×A×A×A×A×A×AÔAð	 	Nûs   ‚4M?¶M<·MM?c              ƒ   ó&  ‡
‡K  — g Š
 G ˆ
fd„d«      }t        || |«       ¬«      }|j                  Šdt        fˆ
ˆfd„}||_        |j                  t        ddi«      ƒ d{  –—†  d	d
g}‰
|k(  }|s™t        j                  d|fd‰
|f«      dt        j                  «       v st        j                  ‰
«      rt        j                  ‰
«      ndt        j                  |«      dœz  }dd|iz  }	t        t        j                  |	«      «      ‚dx}}y7 Œ­­w)z>Ordering matters: the authorizer runs, and only then the body.c                   ó"   •— e Zd Zdeddfˆ fd„Zy)únTestAgentEventBusAuthorization.test_authorizer_must_be_consulted_before_execution.<locals>.RecordingAuthorizerr&   r   Nc              “   ó0   •K  — ‰j                  d«       y ­w)NÚ	authorize©r(   )r"   r&   Úorders     €r#   r+   zwTestAgentEventBusAuthorization.test_authorizer_must_be_consulted_before_execution.<locals>.RecordingAuthorizer.__call__Š  s   øè ø€ Ø—‘˜[Õ)ùs   ƒ)r,   r-   r.   r)   r+   )ra  s   €r#   ÚRecordingAuthorizerr]  ‰  s   ø„ ð*°ð *¸ö *r%   rb  rV  r&   c              “   óR   •K  — ‰j                  d«        ‰| «      ƒ d {  –—† S 7 Œ­w)Nr–   r`  )r&   ra  Úoriginal_executes    €€r#   Útraced_executeziTestAgentEventBusAuthorization.test_authorizer_must_be_consulted_before_execution.<locals>.traced_execute�  s$   øè ø€ Ø�L‰L˜Ô#Ù)¨)Ó4×4Ð4Ð4ús   ƒ' %¡'r  FNr_  r–   rP   ©z%(py0)s == %(py3)sra  rƒ   r„   rV   )r   r–   r)   r?  r   r\   r]   r^   r_   r`   ra   rb   rc   )r"   rJ   rL   rb  r  re  rš   rf   r›   ri   ra  rd  s             @@r#   Ú2test_authorizer_must_be_consulted_before_executionzQTestAgentEventBusAuthorization.test_authorizer_must_be_consulted_before_execution„  sÐ   ùè ø€ ð ˆ÷	*ó 	*ô !  eÑ8KÓ8MÔNˆØ#×+Ñ+Ðð	5¬Dö 	5ð *ˆÔØ�k‰kÔ/Ð2CÀUÐ1KÓL×LÐLØ$ iÐ0Ð0ˆuÐ0Ñ0×0×0Õ0ˆuÐ0×0×0×0×0×0Ñ0ˆu×0×0Ó0ˆu×0×0Ô0Ð0×0×0×0×0×0×0Ò0ð 	Mús   „ADÁ!DÁ"B.Dc              ƒ   óô  K  — t        ||t        «       ¬«      }|j                  t        ddi«      ƒ d {  –—†  |j                  d   }|j
                  }d}||u }|s€t        j                  d|fd||f«      t        j                  |«      t        j                  |«      t        j                  |«      dœz  }d	d
|iz  }	t        t        j                  |	«      «      ‚d x}x}x}}d}|j                  d   }
|
j                  }||v }|s€t        j                  d|fd||f«      t        j                  |«      t        j                  |
«      t        j                  |«      dœz  }d	d
|iz  }	t        t        j                  |	«      «      ‚d x}x}x}
}|j                  } |«       }
g }|
|k(  }|sÁt        j                  d|fd|
|f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |
«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}
x}}y 7 �ŒA­w)NrV  r}   rB  r   Fr…   r8  r9  r«   rr   zfailed closedrÐ   r;  r<  rP   rÕ   rY   r’   r“   r”   )r   r8   r?  r   r¦   r—   r\   r]   ra   rb   rc   r×   r­   r^   r_   r`   ©r"   rJ   rL   rY   rœ   rš   rŸ   rg   rž   ry   rh   rf   rx   rj   r    s                  r#   Ú#test_broken_authorizer_fails_closedzBTestAgentEventBusAuthorization.test_broken_authorizer_fails_closed˜  s™  è ø€ ä˜s EÔ6FÓ6HÔIˆØ�k‰kÔ.°¸°Ó>×>Ð>Ø�‰˜qÑ!Ð2Ð!×)Ñ)Ð2¨UÐ2Ð)¨UÐ2×2×2Õ2Ð)¨U×2×2Ó2Ð!×2×2Ò2Ð)×2×2Ò2¨U×2×2×2×2×2×2Õ2ØÐ: '§/¡/°!Ñ"4Ð:Ð"4×":Ñ":Ð:ˆÐ":Ð:×:×:Õ:ˆÐ":×:×:Ó:ˆ×:×:Ò:Ð"4×:×:Ò:Ð":×:×:×:×:×:×:Õ:Ø×ÑÐ'ÑÓ!Ð' RÐ'Ð! RÑ'×'×'Õ'Ð! R×'×'×'×'×'Ñ'ˆw×'×'Ó'ˆw×'×'Ô'Ð×'×'Ò'Ð!×'×'Ò' R×'×'×'×'×'×'Ö'ð 	?ûs   ‚2I8´I5µII8c              ƒ   ó	  K  — t        ||«      }t        «       }t        |d|«      |_        |j	                  t
        ddi«      ƒ d{  –—†  |j                  d   }|j                  }d}||u }|s€t        j                  d|fd||f«      t        j                  |«      t        j                  |«      t        j                  |«      d	œz  }	d
d|	iz  }
t        t        j                  |
«      «      ‚dx}x}x}}|j                  d   \  }}}}}d}||k(  }|s™t        j                  d|fd||f«      dt        j                  «       v st        j                   |«      rt        j                  |«      ndt        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚dx}}||u }|sÆt        j                  d|fd||f«      dt        j                  «       v st        j                   |«      rt        j                  |«      nddt        j                  «       v st        j                   |«      rt        j                  |«      nddœz  }dd|iz  }t        t        j                  |«      «      ‚d}d}||k(  }|s™t        j                  d|fd||f«      dt        j                  «       v st        j                   |«      rt        j                  |«      ndt        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚dx}}d}||u }|s™t        j                  d|fd||f«      dt        j                  «       v st        j                   |«      rt        j                  |«      ndt        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚dx}}|j"                  }d} ||«      }|s¡ddt        j                  «       v st        j                   |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      dœz  }	t        t        j                  |	«      «      ‚dx}x}}y7 �ŒD­w) z6The contract the bridge must satisfy in the next wave.úptah-plannerr}   rB  Nr   Tr…   r8  r9  r«   rr   rP   rf  Úagent_idrƒ   r„   rV   )z%(py0)s is %(py2)srA   rY   )rT   rU   zassert %(py4)sr‹   r–   rB   )z%(py0)s is %(py3)srE   zbus-zLassert %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.startswith
}(%(py4)s)
}r?   rå   )r   r<   r   r:  r?  r   r¦   r—   r\   r]   ra   rb   rc   r    r^   r_   r`   Ú
startswith)r"   rJ   rL   rY   Ú
dispatcherrœ   rš   rŸ   rg   rž   ry   r?   rm  rA   rB   rE   rf   r›   ri   Ú@py_format3r�   rh   s                         r#   Ú2test_authorizer_can_be_assigned_after_constructionzQTestAgentEventBusAuthorization.test_authorizer_can_be_assigned_after_construction   s¼  è ø€ ô ˜s EÓ*ˆÜ(Ó*ˆ
Ü1Ø˜¨ó
ˆÔð �k‰kÔ.°¸°Ó>×>Ð>Ø�‰˜qÑ!Ð1Ð!×)Ñ)Ð1¨TÐ1Ð)¨TÐ1×1×1Õ1Ð)¨T×1×1Ó1Ð!×1×1Ò1Ð)×1×1Ò1¨T×1×1×1×1×1×1Õ1Ø5?×5EÑ5EÀaÑ5HÑ2ˆ�˜5 &¨(Ø)Ð)ˆx˜>Ñ)×)×)Õ)ˆx˜>×)×)×)×)×)Ñ)ˆx×)×)Ó)ˆx×)×)Ô)˜>×)×)×)×)×)×)Ñ)Ø˜Ð××Õˆu˜×××××Ñˆu××Óˆu×××××Ò˜××Ó˜××××××ÑØ"Ð"ˆv˜Ñ"×"×"Õ"ˆv˜×"×"×"×"×"Ñ"ˆv×"×"Ó"ˆv×"×"Ô"˜×"×"×"×"×"×"Ñ"ØÐˆx˜4Ð××Õˆx˜4×××××Ñˆx××Óˆx××Ô˜4××××××ÑØ×!Ñ!Ð) &Ð)Ñ! &Ó)Ð)Ñ)×)×)×)×)Õ)ˆw×)×)Ó)ˆw×)×)Ô)Ð!×)×)Ò) &×)×)Ò)Ð)×)×)×)×)×)Õ)ð 	?ûs   ‚ARÁR
ÁQRc              ƒ   ó  K  — t        ||«      }t        t        d¬«      d|«      |_        |j	                  t
        ddi«      ƒ d {  –—†  |j                  d   }|j                  }d}||u }|s€t        j                  d|fd	||f«      t        j                  |«      t        j                  |«      t        j                  |«      d
œz  }dd|iz  }	t        t        j                  |	«      «      ‚d x}x}x}}d}|j                  d   }
|
j                  }||v }|s€t        j                  d|fd||f«      t        j                  |«      t        j                  |
«      t        j                  |«      dœz  }dd|iz  }	t        t        j                  |	«      «      ‚d x}x}x}
}|j                  } |«       }
g }|
|k(  }|sÁt        j                  d|fd|
|f«      dt        j                   «       v st        j"                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |
«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}
x}}y 7 �ŒA­w)NT)r=   rl  r}   rB  r   Fr…   r8  r9  r«   rr   rW  rÐ   r;  r<  rP   rÕ   rY   r’   r“   r”   )r   r   r<   r:  r?  r   r¦   r—   r\   r]   ra   rb   rc   r×   r­   r^   r_   r`   ri  s                  r#   Ú3test_dispatcher_authorizer_refusal_blocks_executionzRTestAgentEventBusAuthorization.test_dispatcher_authorizer_refusal_blocks_execution±  s®  è ø€ ä˜s EÓ*ˆÜ1Ü TÔ*¨N¸Gó
ˆÔð �k‰kÔ.°¸°Ó>×>Ð>Ø�‰˜qÑ!Ð2Ð!×)Ñ)Ð2¨UÐ2Ð)¨UÐ2×2×2Õ2Ð)¨U×2×2Ó2Ð!×2×2Ò2Ð)×2×2Ò2¨U×2×2×2×2×2×2Õ2ØÐ3˜7Ÿ?™?¨1Ñ-Ð3Ð-×3Ñ3Ð3ˆxÐ3Ð3×3×3Õ3ˆxÐ3×3×3Ó3ˆx×3×3Ò3Ð-×3×3Ò3Ð3×3×3×3×3×3×3Õ3Ø×ÑÐ'ÑÓ!Ð' RÐ'Ð! RÑ'×'×'Õ'Ð! R×'×'×'×'×'Ñ'ˆw×'×'Ó'ˆw×'×'Ô'Ð×'×'Ò'Ð!×'×'Ò' R×'×'×'×'×'×'Ö'ð 	?ûs   ‚AJ
ÁJÁIJ
N)r,   r-   r.   r/   r°   r±   r²   r@  rC  rê   r   r   r   r   r   r   rT  rX  rZ  rg  rj  rq  rs  r0   r%   r#   r5  r5  @  sl  „ ñð ‡[�[×Ññ	(ó ð	(ð ‡[�[×Ññ4ó ð4ð
 ‡[�[×ÑØ‡[�[×ÑØà!Ñ#BÐCØÑ!>Ð?Ø#Ñ%FÐGØ"Ñ$DÐEØ"Ñ$DÐEØ!Ñ#BÐCð	
ó
ñ2ó
ó ð2ð ‡[�[×Ññ
-ó ð
-ð ‡[�[×ÑñBó ðBð ‡[�[×Ññ1ó ð1ð& ‡[�[×Ññ(ó ð(ð ‡[�[×Ññ*ó ð*ð  ‡[�[×Ññ(ó ñ(r%   r5  c                   óì   — e Zd Zej                  j
                  d„ «       Zej                  j
                  d„ «       Zej                  j
                  d„ «       Zej                  j
                  d„ «       Z	y)ÚTestAgentEventBusIntegrationc              ƒ   óh  K  — t        ||t        «       ¬«      }|j                  t        ddi«      ƒ d {  –—†  |j                  }t        |«      }d}||k(  }|�s
t        j                  d|fd||f«      dt        j                  «       v st        j                  t
        «      rt        j                  t
        «      nddt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      d	œz  }d
d|iz  }	t        t        j                  |	«      «      ‚d x}x}x}}|j                  d   }
|
j                  }d}||u }|s€t        j                  d|fd||f«      t        j                  |
«      t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}
x}x}}|j                  d   j                  d   }
d}|
|k(  }|slt        j                  d|fd|
|f«      t        j                  |
«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}
x}}y 7 �Œ{­w)NrV  r}   r7  rn   rP   r£   r‘   rY   r¤   rs   rt   r   Tr…   r8  r9  r«   rr   rˆ   r‰   rŒ   r�   )r   r   r?  r   r¦   r‘   r\   r]   r^   r_   r`   ra   rb   rc   r—   r™   )r"   rJ   rL   rY   rš   rg   rw   rx   ry   rz   rœ   rŸ   rž   rh   r�   s                  r#   Ú,test_publish_event_triggers_authorized_agentzITestAgentEventBusIntegration.test_publish_event_triggers_authorized_agent¾  s°  è ø€ ä˜s EÔ6HÓ6JÔKˆØ�k‰kÔ.°Ð9KÐ0LÓM×MÐMØ—?‘?Ð(Œs�?Ó#Ð( qÐ(Ð# qÑ(×(×(Ö(Ð# q×(×(×(×(×(Ñ(Œs×(×(Ó(Œs×(×(×(×(×(Ò(�7×(×(Ó(�7×(×(Ô(�?×(×(Ò(Ð#×(×(Ò( q×(×(×(×(×(×(Õ(Ø�‰˜qÑ!Ð1Ð!×)Ñ)Ð1¨TÐ1Ð)¨TÐ1×1×1Õ1Ð)¨T×1×1Ó1Ð!×1×1Ò1Ð)×1×1Ò1¨T×1×1×1×1×1×1Õ1Ø�‰˜qÑ!×&Ñ& vÑ.ÐDÐ2DÐDÐ.Ð2DÑD×D×DÕDÐ.Ð2D×D×DÓDÐ.×D×DÒDÐ2D×D×D×D×D×D×DÔDð 	Nûs   ‚2J2´J/µI;J2c              ƒ   óü  ‡K  — t        ||t        «       ¬«       g Šdt        dd fˆfd„}|j                  t        |«       |j                  t        ddi«      ƒ d {  –—†  t        ‰«      }d}||k(  }|söt        j                  d|fd	||f«      d
t        j                  «       v st        j                  t        «      rt        j                  t        «      nd
dt        j                  «       v st        j                  ‰«      rt        j                  ‰«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}‰d   d   }	d}
|	|
k(  }|slt        j                  d|fd|	|
f«      t        j                  |	«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}	x}}
‰d   d   d   }	d}
|	|
u }|slt        j                  d|fd|	|
f«      t        j                  |	«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}	x}}
y 7 �Œ­w)NrV  rR  r   c              “   óD   •K  — ‰j                  | j                  «       y ­wr   ©r(   Úpayload©rR  Úcompleted_eventss    €r#   Úon_completedzUTestAgentEventBusIntegration.test_agent_publish_completed_event.<locals>.on_completedË  ó   øè ø€ Ø×#Ñ# E§M¡MÕ2ùó   ƒ r¬   Útestrn   rP   r©   r‘   r}  rª   r«   rr   r   rA   r   rˆ   r‰   rŒ   r�   r‚   r—   Tr…   r  )r   r   r   Ú	subscriber   r?  r   r‘   r\   r]   r^   r_   r`   ra   rb   rc   ©r"   rJ   rL   r~  rš   rŸ   rg   rž   ry   rœ   rh   r�   r}  s               @r#   Ú"test_agent_publish_completed_eventz?TestAgentEventBusIntegration.test_agent_publish_completed_eventÆ  s§  øè ø€ ä�3˜Ô*<Ó*>Õ?Ø')Ðð	3¤eð 	3°õ 	3ð 	�‰Ô*¨LÔ9Ø�k‰kÔ,¨}¸fÐ.EÓF×FÐFÜÐ#Ó$Ð)¨Ð)Ð$¨Ñ)×)×)Õ)Ð$¨×)×)×)×)×)Ñ)Œs×)×)Ó)Œs×)×)×)×)×)Ò)Ð#×)×)Ó)Ð#×)×)Ô)Ð$×)×)Ò)¨×)×)×)×)×)×)Ó)Ø Ñ" 7Ñ+Ð;¨|Ð;Ð+¨|Ñ;×;×;Õ;Ð+¨|×;×;Ó;Ð+×;×;Ò;¨|×;×;×;×;×;×;Ó;Ø Ñ" 8Ñ,¨YÑ7Ð?¸4Ð?Ð7¸4Ð?×?×?Õ?Ð7¸4×?×?Ó?Ð7×?×?Ò?¸4×?×?×?×?×?×?Ô?ð 	Gûs   ƒAI<ÁI9ÁHI<c              ƒ   óè  ‡K  — t        ||«       g Šdt        dd fˆfd„}|j                  t        |«       |j	                  t
        ddi«      ƒ d {  –—†  t        ‰«      }d}||k(  }|söt        j                  d|fd||f«      d	t        j                  «       v st        j                  t        «      rt        j                  t        «      nd	d
t        j                  «       v st        j                  ‰«      rt        j                  ‰«      nd
t        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}‰d   d   }	d}
|	|
k(  }|slt        j                  d|fd|	|
f«      t        j                  |	«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}	x}}
‰d   d   d   }	d}
|	|
u }|slt        j                  d|fd|	|
f«      t        j                  |	«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}	x}}
y 7 �Œ­w)NrR  r   c              “   óD   •K  — ‰j                  | j                  «       y ­wr   rz  r|  s    €r#   r~  z_TestAgentEventBusIntegration.test_refusal_is_published_as_completed_event.<locals>.on_completedÙ  r  r€  r}   rB  rn   rP   r©   r‘   r}  rª   r«   rr   r   rA   r   rˆ   r‰   rŒ   r�   r‚   r—   Fr…   r  )r   r   r‚  r
   r?  r   r‘   r\   r]   r^   r_   r`   ra   rb   rc   rƒ  s               @r#   Ú,test_refusal_is_published_as_completed_eventzITestAgentEventBusIntegration.test_refusal_is_published_as_completed_eventÔ  sŸ  øè ø€ ä�S˜%Ô Ø')Ðð	3¤eð 	3°õ 	3ð 	�‰Ô,¨lÔ;Ø�k‰kÔ.°¸°Ó>×>Ð>ÜÐ#Ó$Ð)¨Ð)Ð$¨Ñ)×)×)Õ)Ð$¨×)×)×)×)×)Ñ)Œs×)×)Ó)Œs×)×)×)×)×)Ò)Ð#×)×)Ó)Ð#×)×)Ô)Ð$×)×)Ò)¨×)×)×)×)×)×)Ó)Ø Ñ" 7Ñ+Ð=¨~Ð=Ð+¨~Ñ=×=×=Õ=Ð+¨~×=×=Ó=Ð+×=×=Ò=¨~×=×=×=×=×=×=Ó=Ø Ñ" 8Ñ,¨YÑ7Ð@¸5Ð@Ð7¸5Ð@×@×@Õ@Ð7¸5×@×@Ó@Ð7×@×@Ò@¸5×@×@×@×@×@×@Ô@ð 	?ûs   ƒAI2ÁI/ÁHI2c              ƒ   óx  K  — t        «       }t        |||¬«      }t        |||¬«      }t        |||¬«      }|j	                  t
        ddi«      ƒ d {  –—†  |j	                  t        ddi«      ƒ d {  –—†  |j	                  t        ddi«      ƒ d {  –—†  |j                  }t        |«      }d}	||	k(  }
|
�s
t        j                  d	|
fd
||	f«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      nddt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |	«      dœz  }dd|iz  }t!        t        j"                  |«      «      ‚d x}x}x}
}	|j                  }t        |«      }d}	||	k(  }
|
�s
t        j                  d	|
fd
||	f«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      nddt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |	«      dœz  }dd|iz  }t!        t        j"                  |«      «      ‚d x}x}x}
}	|j                  }t        |«      }d}	||	k(  }
|
�s
t        j                  d	|
fd
||	f«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      nddt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |	«      dœz  }dd|iz  }t!        t        j"                  |«      «      ‚d x}x}x}
}	y 7 �Œß7 �ŒÂ7 �Œ¥­w)NrV  r}   Úmultir¬   Úcoder  Frn   rP   r£   r‘   rY   r¤   rs   rt   rî   r  )r   r   r   r   r?  r   r   r   r¦   r‘   r\   r]   r^   r_   r`   ra   rb   rc   )r"   rJ   rL   r:  rY   rî   r  rš   rg   rw   rx   ry   rz   s                r#   Ú test_multiple_agents_on_same_busz=TestAgentEventBusIntegration.test_multiple_agents_on_same_busâ  s…  è ø€ ä'Ó)ˆ
Ü˜s E°jÔAˆÜ˜3 °*Ô=ˆÜ   e¸
ÔCˆØ�k‰kÔ.°¸Ð0AÓB×BÐBØ�k‰kÔ,¨}¸fÐ.EÓF×FÐFØ�k‰kÔ/Ð2CÀUÐ1KÓL×LÐLØ—?‘?Ð(Œs�?Ó#Ð( qÐ(Ð# qÑ(×(×(Ö(Ð# q×(×(×(×(×(Ñ(Œs×(×(Ó(Œs×(×(×(×(×(Ò(�7×(×(Ó(�7×(×(Ô(�?×(×(Ò(Ð#×(×(Ò( q×(×(×(×(×(×(Õ(Ø—=‘=Ð&Œs�=Ó!Ð& QÐ&Ð! QÑ&×&×&Ö&Ð! Q×&×&×&×&×&Ñ&Œs×&×&Ó&Œs×&×&×&×&×&Ò&�5×&×&Ó&�5×&×&Ô&�=×&×&Ò&Ð!×&×&Ò& Q×&×&×&×&×&×&Õ&Ø×#Ñ#Ð)ŒsÐ#Ó$Ð)¨Ð)Ð$¨Ñ)×)×)Ö)Ð$¨×)×)×)×)×)Ñ)Œs×)×)Ó)Œs×)×)×)×)×)Ò)�8×)×)Ó)�8×)×)Ô)Ð#×)×)Ò)Ð$×)×)Ò)¨×)×)×)×)×)×)Ö)ð 	CùØFùØLûs7   ‚AP:ÁP1ÁP:Á2P4Á3P:ÂP7ÂNP:Ð4P:Ð7P:N)
r,   r-   r.   r°   r±   r²   rw  r„  r‡  r‹  r0   r%   r#   ru  ru  ½  s~   „ Ø‡[�[×ÑñEó ðEð ‡[�[×Ññ@ó ð@ð ‡[�[×ÑñAó ðAð ‡[�[×Ññ
*ó ñ
*r%   ru  c                   óÄ   — e Zd ZdZd„ Zd„ Zej                  j                  d„ «       Z	ej                  j                  d„ «       Z
ej                  j                  d„ «       Zy)ÚTestBrowserAgentzFBrowserAgent has no backend: it must not report a browse it never did.c                 ó<  — t        ||«      }|j                  }d}||k(  }|s­t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }d}||k(  }|s­t        j                  d|fd	||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}y )
Nr   rP   rR   rA   rS   rW   rX   ÚbrowserrZ   )r   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   s	            r#   Útest_browser_agent_namez(TestBrowserAgent.test_browser_agent_nameó  rl   r%   c                 ó„  — t        ||«       |j                  } |t        «      }d}||k(  }|�s
t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}}y )	Nrn   rP   ro   rJ   r   rp   rs   rt   )r   ru   r   r\   r]   r^   r_   r`   ra   rb   rc   rv   s	            r#   Ú!test_browser_subscribes_to_eventsz2TestBrowserAgent.test_browser_subscribes_to_eventsø  s³   € Ü�S˜%Ô Ø�‰Ð9‰Ô3Ó4Ð9¸Ð9Ð4¸Ñ9×9×9Ö9Ð4¸×9×9×9×9×9Ñ9ˆs×9×9Ó9ˆs×9×9Ô9ˆ×9×9×9×9×9Ð9Ô3×9×9Ó9Ô3×9×9Ô9Ð4×9×9Ò9¸×9×9×9×9×9×9Ö9r%   c           	   ƒ   ó   K  — t        ||«      }|j                  ddi«      ƒ d {  –—† }d }||u}|s™t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}}|j                  }d	}	||	u }
|
s­t        j                  d
|
fd||	f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |	«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}
}	|j                  }|t        k(  }
|
sæt        j                  d|
fd|t        f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dt	        j
                  «       v st        j                  t        «      rt        j                  t        «      nddœz  }dd|iz  }t        t        j                  |«      «      ‚d x}}
|j                  d   }d}
||
k(  }|slt        j                  d|fd||
f«      t        j                  |«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}
|j                  d   }d}
||
k(  }|slt        j                  d|fd||
f«      t        j                  |«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}
|j                  d   }d}
||
k(  }|slt        j                  d|fd||
f«      t        j                  |«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}
d}t        j                  }	|j                  } |	|«      }||v}|�st        j                  d|fd||f«      t        j                  |«      dt	        j
                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |	«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }d d!|iz  }t        t        j                  |«      «      ‚d x}x}x}	x}}y 7 �Œf­w)"NÚurlúhttps://example.invalidr   r�   r‚   rƒ   r„   rV   Fr…   r‡   rS   rW   rX   rP   )z-%(py2)s
{%(py2)s = %(py0)s.error
} == %(py4)sr   ©rT   rU   r‹   rŒ   r�   rô   Úcapability_unavailablerˆ   r‰   Ú
capabilityÚbrowsingÚBrowsed)únot in)zk%(py1)s not in %(py10)s
{%(py10)s = %(py5)s
{%(py5)s = %(py3)s.dumps
}(%(py8)s
{%(py8)s = %(py6)s.data
})
}Újson)rŠ   rq   rV   r�   rr   rt   zassert %(py12)sr¼   )r   r–   r\   r]   r^   r_   r`   ra   rb   rc   r—   r×   r   r™   rœ  Údumps)r"   rJ   rL   rA   r‚   rš   rf   r›   ri   rg   rh   rj   r�   rž   rœ   rw   r¿   rz   rÁ   s                      r#   Ú#test_browser_does_not_claim_successz4TestBrowserAgent.test_browser_does_not_claim_successü  s:  è ø€ ä˜S %Ó(ˆØ—}‘} eÐ-FÐ%GÓH×HˆØ!Ð!ˆv˜TÐ!×!×!Õ!ˆv˜T×!×!×!×!×!Ñ!ˆv×!×!Ó!ˆv×!×!Ô!˜T×!×!×!×!×!×!Ñ!Ø�~‰~Ð& Ð&ˆ~ Ð&×&×&Õ&ˆ~ ×&×&×&×&×&Ñ&ˆv×&×&Ó&ˆv×&×&Ô&ˆ~×&×&Ò& ×&×&×&×&×&×&Ó&Ø�|‰|ÐDˆ|ÔDÑD×D×DÕDˆ|ÔD×D×D×D×D×DÑDˆv×D×DÓDˆv×D×DÔDˆ|×D×D×D×D×DÐDÔD×D×DÓDÔD×D×D×D×D×D×DÓDØ�{‰{˜8Ñ$Ð@Ð(@Ð@Ð$Ð(@Ñ@×@×@Õ@Ð$Ð(@×@×@Ó@Ð$×@×@Ò@Ð(@×@×@×@×@×@×@Ó@Ø�{‰{˜<Ñ(Ð6¨JÐ6Ð(¨JÑ6×6×6Õ6Ð(¨J×6×6Ó6Ð(×6×6Ò6¨J×6×6×6×6×6×6Ó6Ø�{‰{˜5Ñ!Ð>Ð%>Ð>Ð!Ð%>Ñ>×>×>Õ>Ð!Ð%>×>×>Ó>Ð!×>×>Ò>Ð%>×>×>×>×>×>×>Ó>ØÐ7¤§
¡
Ð7¨6¯;©;Ð7¡
¨;Ó 7Ð7ˆyÐ 7Ð7×7×7Ö7ˆyÐ 7×7×7Ó7ˆy×7×7×7×7×7Ð7¤×7×7Ó7¤×7×7Ô7 
×7×7×7×7×7Ð7¨6×7×7Ó7¨6×7×7Ô7¨;×7×7Ò7Ð 7×7×7×7×7×7×7×7Ð7ð Iûs   ‚#V¥V¦U&Vc              ƒ   óö  K  — t        ||t        «       ¬«      }|j                  ddi«      ƒ d {  –—†  |j                  t        ddi«      ƒ d {  –—†  |j
                  } |«       }g }||k(  }|sÁt        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      t        j                  |«      dœz  }dd	|iz  }	t        t        j                  |	«      «      ‚d x}x}x}}d
„ |j                  D «       }t        |«      }|s•ddt        j                  «       v st        j                  t        «      rt        j                  t        «      ndt        j                  |«      t        j                  |«      dœz  }
t        t        j                  |
«      «      ‚d x}}y 7 �ŒÄ7 �Œ§­w)NrV  r”  r•  rP   )zJ%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.get_browsed
}()
} == %(py7)srA   r’   r“   r”   c              3   ó8   K  — | ]  }|j                   d u –— Œ y­w)FN)r—   )Ú.0r‚   s     r#   ú	<genexpr>z@TestBrowserAgent.test_browser_records_nothing.<locals>.<genexpr>  s   è ø€ ÒG¨v�6—>‘> UÔ*ÑGùs   ‚z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úallr–  )r   r   r–   r?  r   Úget_browsedr\   r]   r^   r_   r`   ra   rb   rc   r¦   r£  )r"   rJ   rL   rA   rf   rh   rx   rŸ   rj   r    r�   s              r#   Útest_browser_records_nothingz-TestBrowserAgent.test_browser_records_nothing  s?  è ø€ ä˜S %Ô4FÓ4HÔIˆØ�m‰m˜UÐ$=Ð>Ó?×?Ð?Ø�k‰kÔ.°Ð8QÐ0RÓS×SÐSØ× Ñ Ð(Ñ Ó"Ð( bÐ(Ð" bÑ(×(×(Õ(Ð" b×(×(×(×(×(Ñ(ˆu×(×(Ó(ˆu×(×(Ô(Ð ×(×(Ò(Ð"×(×(Ò( b×(×(×(×(×(×(Õ(ÙG¸¿¹ÔGÐGŒsÐGÓGÐGÑG×G×G×G×GÕGŒs×G×GÓGŒs×G×GÔGÐG×G×GÒGÐG×G×G×G×G×GÓGð 	@ùØSûs"   ‚-G9¯G3°G9ÁG6ÁF$G9Ç6G9c              ƒ   ót  ‡K  — t        ||t        «       ¬«       g Šdt        dd fˆfd„}|j                  t        |«       |j                  t        ddi«      ƒ d {  –—†  t        ‰«      }d}||k(  }|söt        j                  d|fd	||f«      d
t        j                  «       v st        j                  t        «      rt        j                  t        «      nd
dt        j                  «       v st        j                  ‰«      rt        j                  ‰«      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}}‰d   d   d   }	d}
|	|
u }|slt        j                  d|fd|	|
f«      t        j                  |	«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}	x}}
‰d   d   d   }	|	t         k(  }|s¥t        j                  d|fd|	t         f«      t        j                  |	«      dt        j                  «       v st        j                  t         «      rt        j                  t         «      nddœz  }dd|iz  }t        t        j                  |«      «      ‚d x}	}y 7 �ŒZ­w)NrV  rR  r   c              “   óD   •K  — ‰j                  | j                  «       y ­wr   rz  r|  s    €r#   r~  zUTestBrowserAgent.test_browser_publishes_failure_completed_event.<locals>.on_completed  r  r€  r”  r•  rn   rP   r©   r‘   r}  rª   r«   rr   r   r‚   r—   Fr…   r  r‰   rŒ   r�   r×   râ   r   rã   r„   rV   )r   r   r   r‚  r   r?  r   r‘   r\   r]   r^   r_   r`   ra   rb   rc   r   )r"   rJ   rL   r~  rš   rŸ   rg   rž   ry   rœ   rh   r�   r›   ri   r}  s                 @r#   Ú.test_browser_publishes_failure_completed_eventz?TestBrowserAgent.test_browser_publishes_failure_completed_event  só  øè ø€ ä�S˜%Ô,>Ó,@ÕAØ')Ðð	3¤eð 	3°õ 	3ð 	�‰Ô,¨lÔ;Ø�k‰kÔ.°Ð8QÐ0RÓS×SÐSÜÐ#Ó$Ð)¨Ð)Ð$¨Ñ)×)×)Õ)Ð$¨×)×)×)×)×)Ñ)Œs×)×)Ó)Œs×)×)×)×)×)Ò)Ð#×)×)Ó)Ð#×)×)Ô)Ð$×)×)Ò)¨×)×)×)×)×)×)Ó)Ø Ñ" 8Ñ,¨YÑ7Ð@¸5Ð@Ð7¸5Ð@×@×@Õ@Ð7¸5×@×@Ó@Ð7×@×@Ò@¸5×@×@×@×@×@×@Ó@à˜QÑ Ñ)¨'Ñ2ð	
Ø2Ô6[Ñ[÷	
ïé ó	
Ø2Ô6[÷	
ñ 	
ç 	�	ð 3÷	
ñ 	
ç	�6÷	
ò 	
ïé ô 7\÷	
ñ 	
ç 	�	ô 7\÷	
÷ 	
÷ 	
ó 	
ïé ÷	
ö 	
ð 	Tûs   ƒAJ8ÁJ5ÁIJ8N)r,   r-   r.   r/   r�  r’  r°   r±   r²   rž  r¥  r¨  r0   r%   r#   r�  r�  ð  sk   „ ÙPò'ò
:ð ‡[�[×Ññ	8ó ð	8ð ‡[�[×ÑñHó ðHð ‡[�[×Ññ
ó ñ
r%   r�  c                   óì   — e Zd Zej                  j
                  d„ «       Zej                  j
                  d„ «       Zej                  j
                  d„ «       Zej                  j
                  d„ «       Z	y)ÚTestAgentTaskQueueIntegrationc              ƒ   óV  K  — t        ||«      }|j                  ddi«      ƒ d {  –—†  |j                  }d}||k\  }|s­t        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |«      dœz  }dd	|iz  }t        t        j                  |«      «      ‚d x}x}}|j                  }	t        |	«      }d
}
||
k(  }|�s
t        j                  d|fd||
f«      dt        j                  «       v st        j                  t        «      rt        j                  t        «      nddt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |	«      t        j                  |«      t        j                  |
«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}	x}x}}
y 7 �Œ­w)Nr}   z
queue testr   ©ú>=)z,%(py2)s
{%(py2)s = %(py0)s.size
} >= %(py5)srL   rS   rW   rX   rn   rP   r£   r‘   rA   r¤   rs   rt   )r   r–   Úsizer\   r]   r^   r_   r`   ra   rb   rc   r¦   r‘   )r"   rJ   rL   rA   rf   rg   rh   ri   rj   rš   rw   rx   ry   rz   s                 r#   Útest_agent_enqueues_tasksz7TestAgentTaskQueueIntegration.test_agent_enqueues_tasks"  s>  è ø€ ä˜S %Ó(ˆØ�m‰m˜V \Ð2Ó3×3Ð3Ø�z‰zÐ˜QÐˆz˜Q‰××Õˆz˜Q×××××Ñˆu××Óˆu××Ôˆz××Ò˜Q××××××ÓØ—=‘=Ð&Œs�=Ó!Ð& QÐ&Ð! QÑ&×&×&Ö&Ð! Q×&×&×&×&×&Ñ&Œs×&×&Ó&Œs×&×&×&×&×&Ò&�5×&×&Ó&�5×&×&Ô&�=×&×&Ò&Ð!×&×&Ò& Q×&×&×&×&×&×&Ö&ð 	4ûs   ‚#H)¥H&¦HH)c              ƒ   óX  K  — |j                   }t        ||«      }|j                  ddi«      ƒ d {  –—†  |j                   }||k\  }|sÚt        j                  d|fd||f«      dt        j                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dt        j                  «       v st        j                  |«      rt        j                  |«      nddœz  }dd	|iz  }t        t        j                  |«      «      ‚d x}}y 7 Œö­w)
Nr}   zrecord testr¬  )z,%(py2)s
{%(py2)s = %(py0)s.size
} >= %(py4)srL   Úinitial_sizer–  rŒ   r�   )r®  r   r–   r\   r]   r^   r_   r`   ra   rb   rc   )	r"   rJ   rL   r±  rY   rf   rh   r�   rž   s	            r#   Ú test_agent_task_records_in_queuez>TestAgentTaskQueueIntegration.test_agent_task_records_in_queue)  s³   è ø€ à—z‘zˆÜ˜s EÓ*ˆØ�o‰o˜v }Ð5Ó6×6Ð6Ø�z‰zÐ)ˆz˜\Ñ)×)×)Õ)ˆz˜\×)×)×)×)×)Ñ)ˆu×)×)Ó)ˆu×)×)Ô)ˆz×)×)×)×)×)Ð)˜\×)×)Ó)˜\×)×)×)×)×)×)Ô)ð 	7ús   ‚/D*±D(²C7D*c              ƒ   ó8  K  — t        ||«      }|j                  ddi«      ƒ d {  –—† }d }||u}|s™t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}}|j                  }d	}	||	u }
|
s­t        j                  d
|
fd||	f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |	«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}
}	y 7 �Œr­w)Nr  gffffffæ?r   r�   r‚   rƒ   r„   rV   Tr…   r‡   rS   rW   rX   )r   r–   r\   r]   r^   r_   r`   ra   rb   rc   r—   )r"   rJ   rL   rþ   r‚   rš   rf   r›   ri   rg   rh   rj   s               r#   Útest_evaluator_with_queue_runz;TestAgentTaskQueueIntegration.test_evaluator_with_queue_run0  sô   è ø€ ä" 3¨Ó.ˆ	Ø ×(Ñ(¨'°3¨Ó8×8ˆØ!Ð!ˆv˜TÐ!×!×!Õ!ˆv˜T×!×!×!×!×!Ñ!ˆv×!×!Ó!ˆv×!×!Ô!˜T×!×!×!×!×!×!Ñ!Ø�~‰~Ð% Ð%ˆ~ Ð%×%×%Õ%ˆ~ ×%×%×%×%×%Ñ%ˆv×%×%Ó%ˆv×%×%Ô%ˆ~×%×%Ò% ×%×%×%×%×%×%Ô%ð 9ûó   ‚#F¥F¦E2Fc              ƒ   ó8  K  — t        ||«      }|j                  ddi«      ƒ d {  –—† }d }||u}|s™t        j                  d|fd||f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}}|j                  }d	}	||	u }
|
s­t        j                  d
|
fd||	f«      dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      t        j                  |	«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}
}	y 7 �Œr­w)Nr  Fr   r�   r‚   rƒ   r„   rV   Tr…   r‡   rS   rW   rX   )r   r–   r\   r]   r^   r_   r`   ra   rb   rc   r—   )r"   rJ   rL   rA   r‚   rš   rf   r›   ri   rg   rh   rj   s               r#   Útest_security_with_queue_runz:TestAgentTaskQueueIntegration.test_security_with_queue_run7  sõ   è ø€ ä˜c 5Ó)ˆØ—}‘}Ð&7¸Ð%?Ó@×@ˆØ!Ð!ˆv˜TÐ!×!×!Õ!ˆv˜T×!×!×!×!×!Ñ!ˆv×!×!Ó!ˆv×!×!Ô!˜T×!×!×!×!×!×!Ñ!Ø�~‰~Ð% Ð%ˆ~ Ð%×%×%Õ%ˆ~ ×%×%×%×%×%Ñ%ˆv×%×%Ó%ˆv×%×%Ô%ˆ~×%×%Ò% ×%×%×%×%×%×%Ô%ð Aûrµ  N)
r,   r-   r.   r°   r±   r²   r¯  r²  r´  r·  r0   r%   r#   rª  rª  !  sx   „ Ø‡[�[×Ññ'ó ð'ð ‡[�[×Ññ*ó ð*ð ‡[�[×Ññ&ó ð&ð ‡[�[×Ññ&ó ñ&r%   rª  c                   ó   — e Zd Zd„ Zy)ÚTestBaseAgentAbstractc                 ó˜   — t        j                  t        «      5  t        t	        «       t        «       «       d d d «       y # 1 sw Y   y xY wr   )r°   ÚraisesÚ	TypeErrorr   r   r   r!   s    r#   Útest_base_agent_is_abstractz1TestBaseAgentAbstract.test_base_agent_is_abstract@  s2   € Ü�]‰]œ9Ó%ñ 	:Ü”m“o¤Ó'8Ô9÷	:÷ 	:ñ 	:ús   šA Á A	N)r,   r-   r.   r½  r0   r%   r#   r¹  r¹  ?  s   „ ó:r%   r¹  )5Úbuiltinsr^   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter\   rœ  r°   Ú cyberbrain26.agents.orchestratorr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   Úcyberbrain26.control_planer   r   r   Ú&cyberbrain26.security_plane.permissionr   r   r2   r8   r<   ÚfixturerJ   rL   rN   r´   rì   rü   r  r'  r5  ru  r�  rª  r¹  r0   r%   r#   ú<module>rÆ     s  ðç  „ ƒã ÷÷ ÷ ÷ ÷ ó ÷, MÑ LÝ @÷+ñ +÷	)ñ 	)÷=ñ =÷]ñ ]ð ‡�ñó ðð ‡�ñó ð÷#Bñ #B÷LA:ñ A:÷H1ñ 1÷8!0ñ !0÷H"1ñ "1÷J3ñ 3÷6z(ñ z(÷z0*ñ 0*÷f.
ñ .
÷b&ñ &÷<:ò :r%   