+
    jHàjæ  ã                  óB  a € 0 t $ R t^ RIHt ^ RIt^ RIHtHt ^ RIH	t	H
t
 ^ RIHtHt ^ RIHtHtHt ^t^€tR t0 R!mt ! R R]4      tR	 R
 ltR R lt]
! RR7       ! R R4      4       tR R ltRR/R R llt]! RRR7      tR]R&   R R ltR R lt R R lt!. R"Ot"R# )#z<Target-issued execution authority for RoomLink member turns.)ÚannotationsN)Ú
ContextVarÚToken)ÚasdictÚ	dataclass)ÚAnyÚMapping)Úbounded_intÚcompact_jsonÚ
identifierc                  ó   € ] tR t^tRtRtR# )ÚRoomExecutionPolicyErrorz>A RoomLink execution policy is malformed or no longer current.© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r   ó    ÚI/home/ubuntu/.hermes/hermes-agent/gateway/hosted_room_execution_policy.pyr   r      s   † Õ,pr   r   c               ó    € V ^8„  d   QhRRRR/# )é   ÚunsignedúMapping[str, Any]ÚreturnÚstrr   )Úformats   "r   Ú__annotate__r      s   € ÷ Nñ NÐ.ð N°3ñ Nr   c                óz   € \         P                  ! \        V 4      P                  R 4      4      P	                  4       # )Úascii)ÚhashlibÚsha256r
   ÚencodeÚ	hexdigest)r   s   &r   Ú_policy_digestr%      s*   € Ü�>Š>œ, xÓ0×7Ñ7¸Ó@ÓA×KÑKÓMÐMr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úvaluer   Úfieldr   r   r   )r   s   "r   r   r      s&   € ÷ tñ t�sð t cð t¨cñ tr   c               óT   € \        \        T ;'       g    R 4      V\        V R2R7      # )Ú z is invalid)ÚlabelÚerrorÚinvalid)r   r   r   )r'   r(   s   &$r   Ú_identifierr.      s)   € ä”c˜%Ÿ+˜+ 2Ó&¨eÔ;SÐ`eÐ_fÐfqÐ]rÔsÐsr   T)Úfrozenc                  óz   € ] tR t^t$ RtR]R&   R]R&   R]R&   R]R&   R]R	&   R]R
&   ]R R l4       tR R ltRt	R# )ÚRoomExecutionPolicyzEImmutable target policy applied at the agent and approval boundaries.ÚintÚversionr   Útarget_profileztuple[str, ...]Úenabled_toolsetsÚapproval_modeÚmax_iterationsÚpolicy_digestc               ó    € V ^8„  d   QhRRRR/# )r   r'   r   r   r1   r   )r   s   "r   r   Ú RoomExecutionPolicy.__annotate__)   s   € ÷ 7ñ 7Ð!2ð 7Ð7Jñ 7r   c           
     	ó¾  € \        V\        4      '       d   \        V4      \        8w  d   \	        R 4      hVR,          \
        8w  d   \	        R4      h\        VR,          RR7      pVR,          p\        V\        4      '       d   ^\        V4      u;8:  d   \        8:  g   M \	        R4      h\        \        R V 4       4      4      p\        \        V4      4      \        V4      8w  g   RV9  d   \	        R4      h\        VR	,          ;'       g    R
4      P                  4       P                  4       pVR9  d   \	        R4      h\        VR,          \        R^\         R7      pR\
        RVR\        V4      R	VRV/p\        VR,          ;'       g    R
4      P                  4       P                  4       pV\#        V4      8w  d   \	        R4      hV ! R/ VBRV/B # )z#execution policy fields are invalidr3   z'execution policy version is unsupportedr4   ©r(   r5   zenabled_toolsets are invalidc              3  ó<   "  € T F  p\        VR R7      x € K  	  R# 5i)Úenabled_toolsetr<   N)r.   )Ú.0Úitems   & r   Ú	<genexpr>Ú3RoomExecutionPolicy.from_mapping.<locals>.<genexpr>2   s   é € ÐdÑWcÈt¤¨DÐ8I× JÑ JÓWcùs   ‚Úbot_roomr6   r*   zapproval_mode is invalidr7   zmax_iterations is invalid)r,   ÚmessageÚlowÚhighr8   z1policy_digest does not match the execution policy>   ÚoffÚsmartÚmanualr   )Ú
isinstancer   ÚsetÚ_POLICY_FIELDSr   ÚPOLICY_VERSIONr.   ÚlistÚlenÚMAX_POLICY_TOOLSETSÚtupleÚsortedr   ÚstripÚlowerr	   ÚMAX_POLICY_ITERATIONSr%   )	Úclsr'   r4   Úraw_toolsetsÚtoolsetsr6   r7   r   Úsupplieds	   &&       r   Úfrom_mappingÚ RoomExecutionPolicy.from_mapping(   s¤  € ä˜%¤×)Ò)¬S°«Z¼>Ô-IÜ*Ð+PÓQÐQØ�Õœ~Ô-Ü*Ð+TÓUÐUÜ$ UÐ+;Õ%<ÐDTÔUˆØÐ/Õ0ˆÜ˜,¬×-Ò-°Q¼#¸lÓ:KÖ5bÔObÖ5bÜ*Ð+IÓJÐJÜœÑdÑWcÓdÓdÓeˆÜŒs�8‹}Ó¤ X£Ô.°*ÀHÔ2LÜ*Ð+IÓJÐJÜ˜E /Õ2×8Ð8°bÓ9×?Ñ?ÓA×GÑGÓIˆØÐ :Ô:Ü*Ð+EÓFÐFÜ$ØÐ"Õ#Ô+CÐMhÐnoÜ&ô(ˆð ”~Ð'7¸ÐI[Ô]aÐbjÓ]kØ˜]Ð,<¸nðNˆô �u˜_Õ-×3Ð3°Ó4×:Ñ:Ó<×BÑBÓDˆØ”~ hÓ/Ô/Ü*Ð+^Ó_Ð_ÙÑ6�XÑ6¨XÒ6Ð6r   c               ó   € V ^8„  d   QhRR/# )r   r   údict[str, Any]r   )r   s   "r   r   r:   C   s   € ÷ Qñ Q˜Nñ Qr   c                	óJ   € / \        V 4      CR \        V P                  4      /C# )r5   )r   rN   r5   )Úselfs   &r   Ú
as_mappingÚRoomExecutionPolicy.as_mappingC   s$   € ØP”&˜“,ÐPÐ 2´D¸×9NÑ9NÓ4OÑPÐPr   r   N)
r   r   r   r   r   Ú__annotations__ÚclassmethodrZ   r`   r   r   r   r   r1   r1      sF   ‡ áOØƒLØÓØ%Ó%ØÓØÓØÓàô7ó ð7÷4Qñ Qr   r1   c               ó   € V ^8„  d   QhRR/# )r   r4   r   r   )r   s   "r   r   r   G   s   € ÷ Cñ C¨#ñ Cr   c                óÎ   € ^ RI Hp ^ RIHpHpHpHp V! V 4      R8X  g   V! V 4      '       d   V! 4       # V! V 4      '       g   \        RV : R24      h^ RIH	p V! V! V 4      4      # )aW  Runtime scope of the SERVED profile: a no-op when it is the active home, else the profile's
own home + secret scope (fail closed on an unknown profile). The advertised policy is signed
for ``target_profile``, so its config and credentials must be read there, never from the
launch profile's env or whatever home happens to be active (#116900).)Únullcontext)Úget_profile_dirÚnormalize_profile_nameÚprofile_existsÚprofile_matches_homeÚdefaultztarget_profile z is not a live profile)Ú_profile_runtime_scope)
Ú
contextlibrf   Úhermes_cli.profilesrg   rh   ri   rj   r   Úgateway.runrl   )r4   rf   rg   rh   ri   rj   rl   s   &      r   Ú_served_profile_scoperp   G   sb   € õ
 'ßqÓqá˜nÓ-°Ô:Ñ>RÐSa×>bÒ>bÙ‹}ÐÙ˜.×)Ò)Ü&¨¸Ñ8JÐJ`Ð'aÓbÐbÝ2Ù!¡/°.Ó"AÓBÐBr   Úconfigc               ó$   € V ^8„  d   QhRRRRRR/# )r   r4   r   rq   zMapping[str, Any] | Noner   r]   r   )r   s   "r   r   r   W   s(   € ÷ @ñ @°ð @Ð=Uð @Ðaoñ @r   c                ón  € \        V RR7      p Vf8   ^ RIHp \        V 4      ;_uu_ 4        V! 4       p\	        WR7      uuRRR4       # \        V\        4      '       g   \        R4      h^ RIH	p ^ RI
Hp ^ R	IHp ^ R
IHp \!        0 V! \#        V4      R4      mRk4      p\        VP%                  R4      \        4      '       d   VP%                  R4      M/ p\        VP%                  R4      \        4      '       d   VP%                  R4      M/ p	R\&        R\        V RR7      RTRV'       d   RMV! V	P%                  RR4      4      R\)        V! VP%                  R4      4      \*        4      /p
/ V
CR\-        V
4      /Cp\.        P1                  V4      P3                  4       #   + '       g   i     ELk; i)zXResolve the effective API-server policy from the served ``target_profile``'s own config.r4   r<   N)Ú_load_gateway_config)r4   rq   zgateway config is invalid)Úresolve_turn_limit)Ú_get_platform_tools)Ú_YOLO_MODE_FROZEN)Ú_normalize_approval_modeÚ
api_serverrC   ÚagentÚ	approvalsr3   r5   r6   rG   ÚmoderI   r7   Ú	max_turnsr8   )r.   ro   rt   rp   Úexecution_policy_mappingrJ   r   r   Úhermes_cli.configru   Úhermes_cli.tools_configrv   Útools.approvalrw   Útools.approval_contextrx   rR   ÚdictÚgetrM   ÚminrU   r%   r1   rZ   r`   )r4   rq   rt   ru   rv   rw   rx   rX   rz   r{   r   r'   s   $$          r   r~   r~   W   sh  € ä  Ð7GÔH€NØ‚~Ý4Ü" >×2Õ2Ù)Ó+ˆFÜ+¸>ÔY÷ 3Ò2ô �fœg×&Ò&Ü&Ð'BÓCÐCÝ4Ý;Ý0Ý?ÜÐTÑ+¬D°«L¸,ÓGÐTÈÐTÓU€HÜ#-¨f¯j©j¸Ó.AÄ7×#KÒ#KˆF�J‰J�wÔÐQS€EÜ+5°f·j±jÀÓ6MÌw×+WÒ+W�—
‘
˜;Ô'Ð]_€Ià”>Ð#3´[ÀÐWgÔ5hØ˜HØ×#4™%Ñ:RÐS\×S`ÑS`ÐagÐiqÓSrÓ:sØœ#Ñ0°·±¸;Ó1GÓHÔJ_Ó`ð	b€Hð
 DˆxÐC˜¬.¸Ó*BÑC€EÜ×+Ñ+¨EÓ2×=Ñ=Ó?Ð?÷% 3×2Ð2ús   «F#Æ#F4	Úhosted_room_execution_policy)rk   z&ContextVar[RoomExecutionPolicy | None]Ú_CURRENT_POLICYc               ó    € V ^8„  d   QhRRRR/# )r   Úpolicyr1   r   r   r   )r   s   "r   r   r   t   s   € ÷ 'ñ 'Ð':ð '¸uñ 'r   c                ó,   € \         P                  V 4      # ©N)r‡   rK   )r‰   s   &r   Úbind_room_execution_policyrŒ   t   s   € Ü×Ñ˜vÓ&Ð&r   c               ó    € V ^8„  d   QhRRRR/# )r   Útokenr   r   ÚNoner   )r   s   "r   r   r   x   s   € ÷ !ñ ! uð !°ñ !r   c                ó0   € \         P                  V 4       R # r‹   )r‡   Úreset)rŽ   s   &r   Úreset_room_execution_policyr’   x   s   € Ü×Ñ˜%Ö r   c               ó   € V ^8„  d   QhRR/# )r   r   zRoomExecutionPolicy | Noner   )r   s   "r   r   r   |   s   € ÷ !ñ !Ð'Añ !r   c                 ó*   € \         P                  4       # r‹   )r‡   r„   r   r   r   Úcurrent_room_execution_policyr•   |   s   € Ü×ÑÓ Ð r   l   ÿÿÿÿ >   r3   r6   r8   r7   r4   r5   )rU   rM   r1   r   rŒ   r•   r~   r’   )#Ú__conditional_annotations__r   Ú
__future__r   r!   Úcontextvarsr   r   Údataclassesr   r   Útypingr   r   Úgateway.hosted_rooms_commonr	   r
   r   rM   rP   rU   rL   Ú
ValueErrorr   r%   r.   r1   rp   r~   r‡   rb   rŒ   r’   r•   Ú__all__)r–   s   @r   Ú<module>rž      s¯   øðÜ Bå "ã ß )ß )ß ç MÑ Mà€ØÐ Ø%Ð Úv€ô q˜zÔ põNõtñ
 �$Ô÷%Qð %Qó ð%QõPCð @ÐX\÷ @ñ4 ;EÐEcÐmqÔ:r€Ð7Ó rõ'õ!õ!ò#‚r   