+
    lHàjÖ'  ã                  ó   € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
HtHtHt ^ RIHt ^ RIHt ^ RIHt ]P(                  ! ]4      t]! 0 Rm4      tRtR R	 ltR
 R ltRR R llt ! R R]4      tR# )a'  Managed Modal environment backed by tool-gateway.

Deliberately overrides :meth:`BaseEnvironment.execute`: the tool-gateway does command
preparation, CWD tracking and env-snapshot management server-side, so the base
``_wrap_command`` / ``_wait_for_process`` / snapshot machinery does not apply.
)ÚannotationsN)ÚAnyÚDictÚOptional)ÚBaseEnvironment)Úis_interrupted)Úresolve_managed_tool_gatewayg      $@c               ó$   € V ^8„  d   QhRRRRRR/# )é   Úvaluer   ÚdefaultÚfloatÚreturn© )Úformats   "ÚE/home/ubuntu/.hermes/hermes-agent/tools/environments/managed_modal.pyÚ__annotate__r      s!   € ÷ ñ ˜#ð ¨ð °%ñ ó    c                óX   €  V f   V# \        V 4      #   \        \        3 d    Tu # i ; i)N)r   Ú	TypeErrorÚ
ValueError)r   r   s   &&r   Ú_coerce_numberr      s3   € ðØš-ˆwÐ9¬U°5«\Ð9øÜ”zÐ"ô ØŠðús   ‚ ˆ
 “)¨)c               ó$   € V ^8„  d   QhRRRRRR/# )r
   ÚnameÚstrr   r   r   r   )r   s   "r   r   r   $   s!   € ÷ +ñ +˜sð +¨Uð +°uñ +r   c                óX   € \        \        P                  ! V 4      V4      pV^ 8”  d   V# T# )é    )r   ÚosÚgetenv)r   r   r   s   && r   Ú_request_timeout_envr   $   s'   € Üœ2Ÿ9š9 T›?¨GÓ4€EØ˜A”Iˆ5Ð* 7Ð*r   c               ó$   € V ^8„  d   QhRRRRRR/# )r
   Úoutputr   Ú
returncodeÚintr   Údictr   )r   s   "r   r   r   )   s!   € ÷ 8ñ 8�Cð 8 Sð 8°ñ 8r   c                ó   € R V RV/# ©r!   r"   r   r&   s   &&r   Ú_resultr'   )   s   € Ø�f˜l¨JÐ7Ð7r   c            	      ó  a € ] tR t^-tRtRt]! RR4      t]! RR4      t]! RR4      t	R#R
 V 3R lllt
R$RRRRRR	RR/R R lllt]R R l4       tR R ltR R ltR tR R ltRRR^RR/R R llt]R  R! l4       tR"tV ;t# )%ÚManagedModalEnvironmentzCGateway-owned Modal sandbox with Hermes-compatible execute/cleanup.ÚpayloadÚ.TERMINAL_MANAGED_MODAL_CONNECT_TIMEOUT_SECONDSg      ð?Ú0TERMINAL_MANAGED_MODAL_POLL_READ_TIMEOUT_SECONDSg      @Ú2TERMINAL_MANAGED_MODAL_CANCEL_READ_TIMEOUT_SECONDSNTc               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r
   Úimager   ÚcwdÚtimeoutr#   Úmodal_sandbox_kwargszOptional[dict[str, Any]]Úpersistent_filesystemÚboolÚtask_idr   )r   s   "r   r   Ú$ManagedModalEnvironment.__annotate__5   s9   € ÷ 2ñ 2˜cð 2¨ð 2Àð 2Ø'?ð2à(,ð2à>Añ2r   c                	óø  <€ \         S	V `  W#R 7        ^ RIHp Ve   V! 4       '       d   \        R4      h\        R4      pVf   \        R4      hVP                  P                  R4      V n	        VP                  V n        WeVuV n        V n        V n        \        T;'       g    / 4      V n        \#        \$        P&                  ! 4       4      V n        V P+                  4       V n        R#   \         d    Rp Lßi ; i))r0   r1   )Úget_credential_file_mountsNz¢Managed Modal does not support host credential-file passthrough. Use TERMINAL_MODAL_MODE=direct when skills or config require credential files inside the sandbox.ÚmodalzDManaged Modal requires a configured tool gateway and Nous user tokenÚ/)ÚsuperÚ__init__Útools.credential_filesr8   Ú	Exceptionr   r   Úgateway_originÚrstripÚ_gateway_originÚnous_user_tokenÚ_nous_user_tokenÚ_task_idÚ_persistentÚ_imager$   Ú_sandbox_kwargsr   ÚuuidÚuuid4Ú_create_idempotency_keyÚ_create_sandboxÚ_sandbox_id)
Úselfr/   r0   r1   r2   r3   r5   r8   ÚgatewayÚ	__class__s
   &&&&&&&  €r   r<   Ú ManagedModalEnvironment.__init__5   së   ø€ ô 	‰Ñ˜SÐÔ2ð	.ÝIð &Ò1Ñ6P×6RÒ6RÜð7óð ô
 /¨wÓ7ˆØŠ?ÜÐcÓdÐdØ&×5Ñ5×<Ñ<¸SÓAˆÔØ '× 7Ñ 7ˆÔØ7>ÐW\Ð4ˆŒ�tÔ'¨¬Ü#Ð$8×$>Ð$>¸BÓ?ˆÔÜ'*¬4¯:ª:«<Ó'8ˆÔ$Ø×/Ñ/Ó1ˆÖøô! ô 	.Ø)-Ò&ð	.ús   “C) Ã)C9Ã8C9r1   Ú
stdin_dataÚrewrite_compound_backgroundÚbounded_captureFc               ó4   € V ^8„  d   QhRRRRRRRRRR	R
R	RR/# )r
   Úcommandr   r0   r1   z
int | NonerQ   z
str | NonerR   r4   rS   r   r$   r   )r   s   "r   r   r6   N   sA   € ÷ 2ñ 2˜sð 2¨ð 2¸zð 2Ð^hð 2Ø-1ð2ØKOð2Ø\`ñ2r   c               	ó*  € ??V P                  V4      w  rxVe+   R\        P                  ! VP                  4       4       RV 2pT;'       g    V P                  p\        \        P                  ! 4       4      p	RT	RTRT;'       g    V P                  R\        VR,          4      /p
Ve   WJR&    V P                  R	R
V P                   R2V
^
R7      pVP                  R8  d   VP                  4       MR pTf   \        T P!                  RT4      4      # T P#                  T4      ;pe   T# TP%                  R4      T	8w  d   \        R4      # \&        P(                  ! 4       T,           \*        ,           p\&        P(                  ! 4       pRTRT/p \-        4       '       d   T P/                  T	4       \        R^‚4      #  T P1                  T	4      ;pe   T#  \&        P(                  ! 4       T8¼  d"   T P/                  T	4       \        RT R2^|4      #  ^ RIHp T! TR4       \&        P6                  ! R4       Kª    \         d   p\        RT 24      u R p?# R p?ii ; i  \         d   p\        RT 24      u R p?# R p?ii ; i  \         d     Lqi ; i)Nzprintf '%s\n' z | ÚexecIdrU   r0   Ú	timeoutMséè  Ú	stdinDataÚPOSTú/v1/sandboxes/z/execs©Újsonr1   é�  zManaged Modal exec failed: zManaged Modal exec failedz<Managed Modal exec start did not return the expected exec idÚ
last_touchÚstartz4[Command interrupted - Modal sandbox exec cancelled]z#Managed Modal exec timed out after Ús)Útouch_activity_if_duezmodal command runningg      Ð?)Ú_prepare_commandÚshlexÚquoter@   r1   r   rH   rI   r0   r#   Ú_requestrL   Ústatus_coder^   r>   r'   Ú_format_errorÚ_result_from_bodyÚgetÚtimeÚ	monotonicÚ_CLIENT_TIMEOUT_GRACE_SECONDSr   Ú_cancel_execÚ
_poll_execÚtools.environments.baserc   Úsleep)rM   rU   r0   r1   rQ   rR   rS   Úexec_commandÚ
sudo_stdinÚexec_idr*   ÚresponseÚbodyÚexcÚfinalÚdeadlineÚ_nowÚ_activity_stateÚresultrc   s   &&&$$$$             r   ÚexecuteÚManagedModalEnvironment.executeN   s‚  € ð (¨Ø#'×#8Ñ#8¸Ó#AÑ ˆØÒ!à,¬U¯[ª[¸×9JÑ9JÓ9LÓ-MÐ,NÈcÐR^ÐQ_Ð`ˆLØ×)Ð)˜TŸ\™\ˆÜ”d—j’j“lÓ#ˆØ#+¨W°iÀÈuÐVY×VeÐVeÐ]a×]eÑ]eØ#.´°G¸dµNÓ0Cð#EˆàÒ!Ø#-�KÑ ð	@Ø—}‘} V¨~¸d×>NÑ>NÐ=OÈvÐ-VÐ]dÐnp�}ÓqˆHØ&.×&:Ñ&:¸SÔ&@�8—=‘=”?ÀdˆDð Š<Ü˜4×-Ñ-Ð.IÈ8ÓTÓUÐUØ×+Ñ+¨DÓ1Ð1ˆEÒ>ØˆLØ�8‰8�HÓ Ô(ÜÐYÓZÐZÜ—>’>Ó# gÕ-Ô0MÕMˆÜ�~Š~ÓˆØ'¨¨w¸Ð=ˆØÜ×ÒØ×!Ñ! 'Ô*ÜÐUÐWZÓ[Ð[ðDØ"Ÿo™o¨gÓ6Ð6�FÒCØ!�Mð Dô �~Š~Ó 8Ô+Ø×!Ñ! 'Ô*ÜÐ!DÀWÀIÈQÐOÐQTÓUÐUðÝIÙ% oÐ7NÔOô �JŠJ�tÖøô= ô 	@ÜÐ8¸¸Ð>Ó?Õ?ûð	@ûô$ ô DÜÐ!<¸S¸EÐBÓCÕCûðDûô ô ÙðúsO   Â/AH8 Æ=I ÈJ È8IÉIÉIÉIÉJÉ)I<É6JÉ<JÊJÊJc               ó    € V ^8„  d   QhRRRR/# )r
   rw   r$   r   údict | Noner   )r   s   "r   r   r6   ƒ   s   € ÷ Nñ N ð N¨ñ Nr   c                ó’   € V P                  R4      \        9   d-   \        V P                  RR4      V P                  R^4      4      # R# )zLFinal result dict if the exec body reports a terminal status, else ``None``.Ústatusr!   Ú r"   N)rk   Ú_TERMINAL_EXEC_STATUSESr'   )rw   s   &r   rj   Ú)ManagedModalEnvironment._result_from_body‚   s>   € ð �8‰8�HÓÔ!8Ô8Ü˜4Ÿ8™8 H¨bÓ1°4·8±8¸LÈ!Ó3LÓMÐMñ 9r   c               ó    € V ^8„  d   QhRRRR/# )r
   ru   r   r   r�   r   )r   s   "r   r   r6   ˆ   s   € ÷ 
7ñ 
7 #ð 
7¨+ñ 
7r   c                	ó’  €  V P                  R RV P                   RV 2V P                  V P                  3R7      pTP                  R8X  d   \        R4      # TP                  R8¼  d   \        T P                  R	T4      4      # T P                  TP                  4       4      #   \         d   p\        RT 24      u Rp?# Rp?ii ; i)
ÚGETr\   ú/execs/©r1   z Managed Modal exec poll failed: Ni”  zManaged Modal exec not foundr_   zManaged Modal exec poll failed)
rg   rL   Ú_CONNECT_TIMEOUT_SECONDSÚ_POLL_READ_TIMEOUT_SECONDSr>   r'   rh   ri   rj   r^   )rM   ru   rv   rx   s   &&  r   rp   Ú"ManagedModalEnvironment._poll_execˆ   sÌ   € ð	EØ—}‘} U¨n¸T×=MÑ=MÐ<NÈgÐV]ÐU^Ð,_Ø.2×.KÑ.KÈT×MlÑMlÐ-mð %ó oˆHð ×Ñ 3Ô&ÜÐ9Ó:Ð:Ø×Ñ 3Ô&Ü˜4×-Ñ-Ð.NÐPXÓYÓZÐZØ×%Ñ% h§m¡m£oÓ6Ð6øô ô 	EÜÐ=¸c¸UÐCÓDÕDûð	Eús   ‚:B# Â#CÂ.CÂ;CÃCc               ó    € V ^8„  d   QhRRRR/# )r
   ru   r   r   ÚNoner   )r   s   "r   r   r6   ”   s   € ÷ Hñ H Cð H¨Dñ Hr   c                	óÜ   €  V P                  R RV P                   RV R2V P                  V P                  3R7       R#   \         d"   p\
        P                  RT4        Rp?R# Rp?ii ; i)r[   r\   rŠ   z/cancelr‹   z$Managed Modal exec cancel failed: %sN)rg   rL   rŒ   Ú_CANCEL_READ_TIMEOUT_SECONDSr>   ÚloggerÚwarning)rM   ru   rx   s   && r   ro   Ú$ManagedModalEnvironment._cancel_exec”   sm   € ð	HØ�M‰M˜& N°4×3CÑ3CÐ2DÀGÈGÈ9ÐT[Ð"\Ø#'×#@Ñ#@À$×BcÑBcÐ"dð ö føäô 	HÜ�N‰NÐAÀ3×GÒGûð	Hús   ‚;? ¿A+Á
A&Á&A+c                	ó  € \        V R R4      '       g   R#  V P                  RRV P                   R2RV P                  /^<R7       RV n        R#   \         d!   p\
        P                  RT4        Rp?L/Rp?ii ; i  RT n        i ; i)rL   Nr[   r\   z
/terminateÚsnapshotBeforeTerminater]   z Managed Modal cleanup failed: %s)Úgetattrrg   rL   rE   r>   r“   r”   )rM   rx   s   & r   ÚcleanupÚManagedModalEnvironment.cleanup›   s‹   € Ü�t˜]¨D×1Ò1Ùð	$Ø�M‰M˜& N°4×3CÑ3CÐ2DÀJÐ"OØ 9¸4×;KÑ;KÐLÐVXð ô Zð
  $ˆDÖøô ô 	DÜ�N‰NÐ=¸s×CÑCûð	Dûð  $ˆDÕús)   —/A ÁA:ÁA5Á0A= Á5A:Á:A= Á=	Bc               ó   € V ^8„  d   QhRR/# )r
   r   r   r   )r   s   "r   r   r6   ¦   s   € ÷ ñ  ñ r   c                	óø  € V P                   p\        VP                  R 4      ^4      p\        VP                  RVP                  R4      4      R4      p\        VP                  RVP                  R4      4      R4      pRV P                  RV P                  R VRVR	R
R\        R\        V P                  R,          4      4      RV P                  RV P                  /pVe   WER&   V P                  RRV^<RV P                  /R7      pVP                  R8¼  d   \        V P                  RV4      4      hVP                  4       P                  R4      p\!        V\"        4      '       d	   V'       g   \        R4      hV# )ÚcpuÚ	memoryMiBÚmemoryi   Úephemeral_diskÚdiskMiBNr/   r0   rX   i€î6 ÚidleTimeoutMsià“ rY   ÚpersistentFilesystemÚ
logicalKeyr[   z/v1/sandboxeszx-idempotency-key)r^   r1   Úextra_headersr_   zManaged Modal create failedÚidz0Managed Modal create did not return a sandbox id)rG   r   rk   rF   r0   Úmaxr#   r1   rE   rD   rg   rJ   rh   ÚRuntimeErrorri   r^   Ú
isinstancer   )rM   Úkwr�   rŸ   ÚdiskÚcreate_payloadrv   Ú
sandbox_ids   &       r   rK   Ú'ManagedModalEnvironment._create_sandbox¦   sO  € Ø×!Ñ!ˆÜ˜RŸV™V E›]¨AÓ.ˆÜ §¡ {°B·F±F¸8Ó4DÓ EÀtÓLˆÜ˜bŸf™fÐ%5°r·v±v¸iÓ7HÓIÈ4ÓPˆà�T—[‘[ %¨¯©°5¸#¸{ÈFÐT_ÐajØœS ¬#¨d¯l©l¸TÕ.AÓ*BÓCØ" D×$4Ñ$4°lÀDÇMÁMð
ˆð
 ÒØ(,˜9Ñ%Ø—=‘= ¨¸~ÐWYØ0CÀT×EaÑEaÐ/bð !ó dˆà×Ñ 3Ô&Ü˜t×1Ñ1Ð2OÐQYÓZÓ[Ð[Ø—]‘]“_×(Ñ(¨Ó.ˆ
Ü˜*¤c×*Ò*·*ÜÐQÓRÐRØÐr   r^   r¥   c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r
   Úmethodr   Úpathr^   zdict[str, Any] | Noner1   r#   r¥   zdict[str, str] | Noner   úrequests.Responser   )r   s   "r   r   r6   »   sB   € ÷ vñ v˜sð v¨#ð vÐ8Mð vÐ_bð vØ 5ðvØARñvr   c               	óŽ   € R RV P                    2RR/T;'       g    / Cp\        P                  ! WP                   V 2WcVR7      # )ÚAuthorizationzBearer zContent-Typezapplication/json)Úheadersr^   r1   )rC   ÚrequestsÚrequestrA   )rM   r°   r±   r^   r1   r¥   rµ   s   &&&$$$ r   rg   Ú ManagedModalEnvironment._request»   sX   € à" g¨d×.CÑ.CÐ-DÐ$EÀ~ÐWið ,Ø#×)Ð) rð,ˆä×Ò ×+?Ñ+?Ð*@ÀÀÐ(GÐQXÐmtÔuÐur   c               ó$   € V ^8„  d   QhRRRRRR/# )r
   Úprefixr   rv   r²   r   r   )r   s   "r   r   r6   Â   s'   € ÷ Yñ Y˜cð YÐ->ð YÀ3ñ Yr   c                	óò  €  VP                  4       p\        V\        4      '       d†   VP                  R 4      ;'       g+    VP                  R4      ;'       g    VP                  R4      p\        V\        4      '       d   V'       d   V  RV 2# V  R\         P
                  ! VRR7       2#  VP                  P                  4       pV'       d   V  RV 2# V  RVP                   2#   \         d     LGi ; i)ÚerrorÚmessageÚcodez: F)Úensure_asciiz: HTTP )
r^   r©   r$   rk   r   Údumpsr>   ÚtextÚstriprh   )rº   rv   r*   r½   rÁ   s   &&   r   ri   Ú%ManagedModalEnvironment._format_errorÁ   sä   € ð	Ø—m‘m“oˆGÜ˜'¤4×(Ò(Ø!Ÿ+™+ gÓ.×_Ð_°'·+±+¸iÓ2H×_Ð_ÈGÏKÉKÐX^ÓL_�Ü˜g¤s×+Ò+·Ø$˜X R¨ yÐ1Ð1Ø ˜ ¤D§J¢J¨wÀUÔ$KÐ#LÐMÐMð	 )ð �}‰}×"Ñ"Ó$ˆß&*�&�˜˜D˜6Ð"ÐX°6°(¸'À(×BVÑBVÐAWÐ0XÐXøô ô 	Ùð	ús)   ‚=C( Á C( Á/C( Â	C( ÂC( Ã(C6Ã5C6)rJ   rA   rF   rC   rE   rL   rG   rD   )z/rooté<   NTr   )r„   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú_stdin_moder   rŒ   r�   r’   r<   r~   Ústaticmethodrj   rp   ro   r™   rK   rg   ri   Ú__static_attributes__Ú__classcell__)rO   s   @r   r)   r)   -   sÎ   ø† ÙMà€KÙ3Ð4dÐfiÓjÐÙ!5Ð6hÐjmÓ!nÐÙ#7Ð8lÐnqÓ#rÐ ÷2ò 2ñ22ÈDð 2Ðkoð 2Ø48ð2ØRW÷2ð 2ðh ôNó ðNõ

7õHò	$õð*vÐPTð vÐegð vØ8<÷vð ôYó öYr   r)   >   Úfailedr1   Ú	cancelledÚ	completed)é   )rÉ   Ú
__future__r   r^   Úloggingr   r¶   re   rl   rH   Útypingr   r   r   rq   r   Útools.interruptr   Útools.managed_tool_gatewayr   Ú	getLoggerrÅ   r“   Ú	frozensetr…   rn   r   r   r'   r)   r   r   r   Ú<module>rÙ      st   ðñõ #ã Û Û 	Û Û Û Û ß &Ñ &å 3Ý *Ý Cà	×	Ò	˜8Ó	$€á#Ò$SÓTÐ Ø $Ð õõ+÷
8ô`Y˜oö `Yr   