+
    jHàjA1  ã                  óp  a € 0 t $ 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
Ht ^ RIHtHtHt RR/R R lltR	 R
 ltR.R R lltRR/R R lltR R ltR^x/R R lltR R ltR R lt/ tR]R&   R.R R lltR R ltR/R  R! lltR" R# lt R.R$ R% llt!R& R' lt"R( R) lt#R* R+ lt$R, R- lt%R# )0zPPM-backed CUA setup and the host integration not supplied by its binary archive.)ÚannotationsN)ÚOptional)Ú
print_infoÚprint_successÚprint_warningÚcapture_outputTc               ó$   € V ^8„  d   QhRRRRRR/# )é   ÚcmdÚlistr   ÚboolÚreturnúsubprocess.CompletedProcess© )Úformats   "Ú@/home/ubuntu/.hermes/hermes-agent/hermes_cli/tools_config_cua.pyÚ__annotate__r      s'   € ÷ Gñ G�4ð G°Tð GØ6ñGó    c               óD   € \         P                  ! V 3RVRRRRRRRV/VB # )	z/Run a text subprocess with consistent decoding.r   ÚtextTÚencodingzutf-8ÚerrorsÚreplaceÚtimeout)Ú
subprocessÚrun)r
   r   r   Úkwargss   &$$,r   Ú	_run_textr      sM   € ô �>Š>˜#ñ G¨nð GÀ4ð GÐRYð GØ!*ðGØ4;ðGØ?EñGð Gr   c               ó$   € V ^8„  d   QhRRRRRR/# )r	   ÚmessageÚstrÚhintsr   r   r   )r   s   "r   r   r      s!   € ÷ ñ �3ð  ð ¨ñ r   c                óD   € \        V 4       V F  p\        V4       K  	  R # )F)Ú_print_warningÚ_print_info)r   r!   Úhints   &* r   Ú_failr&      s   € Ü�7ÔÛˆÜ�DÖñ ár   c               ó    € V ^8„  d   QhRRRR/# )r	   Úresultr   r   ÚNoner   )r   s   "r   r   r      s   € ÷ 8ñ 8Ð:ð 8ÈTñ 8r   c                óæ   € V P                   ;'       g    V P                  ;'       g    R P                  4       P                  4       RR  F#  pT;'       g    \        ! RVR,           24       K%  	  R# )Ú Nz      :NéÈ   Néýÿÿÿ)ÚstderrÚstdoutÚstripÚ
splitlinesr$   )r(   ÚprinterÚlines   && r   Ú_print_output_tailr4      s\   € Ø—‘×5Ð5 &§-¡-×5Ð5°2×<Ñ<Ó>×IÑIÓKÈBÈCÓPˆØ	×	Ð	”KÐ	 6¨$¨t­*¨Ð!6Ö7ó Qr   Ústreams_to_consoleFc               ó    € V ^8„  d   QhRRRR/# )r	   r5   r   r   Úintr   )r   s   "r   r   r   $   s   € ÷ 	ñ 	°tð 	Èñ 	r   c                óè   € ^ RI Hp V! 4       p V'       dA   V '       d9   \        P                  e'   \        P                  P	                  4       '       d   ^ # T;'       g    ^ #   \
         d     Li ; i)zEHide Windows children unless their output is going to a real console.)Úwindows_hide_flags)Úhermes_cli._subprocess_compatr9   Úsysr/   ÚisattyÚ	Exception)r5   r9   Úflagss   $  r   Ú_post_setup_no_window_flagsr?   $   sX   € å@ÙÓ €Eðß×'¬C¯J©JÒ,BÄsÇzÁz×GXÑGX×GZÒGZÙð �:ˆ:�AÐøô ô Ùðús   �A# —A# Ÿ5A# Á#A1Á0A1c               ó   € V ^8„  d   QhRR/# )r	   r   r    r   )r   s   "r   r   r   0   s   € ÷ Oñ O˜ñ Or   c                 ór   € \         P                  P                  R R4      P                  4       ;'       g    R# )ÚHERMES_CUA_DRIVER_CMDr+   ú
cua-driver)ÚosÚenvironÚgetr0   r   r   r   Ú_cua_driver_cmdrG   0   s)   € Ü�:‰:�>‰>Ð1°2Ó6×<Ñ<Ó>×NÐNÀ,ÐNr   Úlimitc               ó$   € V ^8„  d   QhRRRRRR/# )r	   Úrawr    rH   r7   r   r   )r   s   "r   r   r   4   s&   € ÷ añ a˜cð a¨Sð a¸3ñ ar   c               ó`   a€ \        V3R lT ;'       g    RP                  4        4       R4      # )z@Bound an external binary's potentially multiline version banner.c              3  óx   <"  € T F/  qP                  4       '       g   K  VP                  4       R S x € K1  	  R # 5i©N)r0   )Ú.0r3   rH   s   & €r   Ú	<genexpr>Ú'_cua_version_summary.<locals>.<genexpr>6   s)   øé € Ð[Ñ2J¨$ÏjÉjÏlÔ%�—‘“˜f˜uÕ%Ó2Jùs   ƒ:Ÿ:r+   )Únextr1   )rJ   rH   s   &dr   Ú_cua_version_summaryrR   4   s&   ø€ äÔ[°3·9°9¸"×2HÑ2HÔ2JÓ[Ð]_Ó`Ð`r   c               ó   € V ^8„  d   QhRR/# )r	   r   úOptional[str]r   )r   s   "r   r   r   9   s   € ÷ $ñ $ -ñ $r   c                 ó   € ^ RI Hp  V ! 4       # )é    ©Úresolve_cua_driver_cmd)Ú%tools.computer_use.cua_backend_driverrX   rW   s    r   Ú_resolved_cua_driver_cmdrZ   9   s   € ÝLÙ!Ó#Ð#r   c               ó   € V ^8„  d   QhRR/# )r	   r   Údictr   )r   s   "r   r   r   >   s   € ÷ &ñ &˜ñ &r   c                 ó   € ^ RI Hp  V ! 4       # )rV   ©Úsanitized_cua_driver_env)Útools.computer_use.cua_backendr_   r^   s    r   Ú_cua_driver_envra   >   s   € ÝGÙ#Ó%Ð%r   r\   Ú_CUA_DRIVER_CONTRACT_CACHEc               ó    € V ^8„  d   QhRRRR/# )r	   ÚbinaryrT   r   r\   r   )r   s   "r   r   r   F   s   € ÷ ñ ¨ð Àñ r   c                óò  € ^ RI Hp T ;'       g    \        4       pV'       g	   V! R4      #  \        P                  ! V4      pW#P
                  VP                  3p\        P                  ! 4       p\        pTP                  R4      T8X  d0   YVP                  RR4      ,
          R8  d   \        TR,          4      # T! T4      pTP                  YE\        T4      R7       T#   \         d    T! T4      u # i ; i)	zCCache the runtime manifest check by binary identity for UI polling.)Ú"cua_driver_runtime_contract_statusNÚfingerprintÚ
checked_atg        g      >@Ústate)rg   rh   ri   )rY   rf   rZ   rD   ÚstatÚst_mtime_nsÚst_sizeÚOSErrorÚtimeÚ	monotonicrb   rF   r\   Úupdate)rd   rf   Úresolvedrj   rg   ÚnowÚcacheri   s   &       r   Ú_cua_driver_contract_statusrt   F   sÔ   € åXØ×3Ð3Ô1Ó3€HßÙ1°$Ó7Ð7ð<Ü�wŠw�xÓ ˆØ×!1Ñ!1°4·<±<Ð@ˆô �.Š.Ó
€CÜ&€EØ‡y�y�Ó ;Ô.°3¿¹À<ÐQTÓ9UÕ3UÐX\Ô3\Ü�E˜'•NÓ#Ð#Ù.¨xÓ8€EØ	‡L�L˜[ÄÀUÃ€LÔLØ€Løô ô <Ù1°(Ó;Ò;ð<ús   ¬.C  Ã C6Ã5C6c               ó   € V ^8„  d   QhRR/# ©r	   r   r   r   )r   s   "r   r   r   Z   s   € ÷ ,ñ , 4ñ ,r   c                 ó&  € \        4       p V P                  R 4      '       g   R# \        P                  R8X  d   ^ RIHp \        V! V R,          4      4      # \        P                  R8g  ;'       g"    \        4       ;'       g    \        4       '       * # )ÚreadyFÚdarwin)Ú_resolve_cua_driver_app_pathrd   Úwin32)	rt   rF   r;   ÚplatformÚ%tools.computer_use.cua_backend_daemonrz   r   Ú(_cua_driver_autostart_registered_windowsÚ_cua_autostart_opt_in)ri   rz   s     r   Ú_cua_driver_install_readyr€   Z   sv   € Ü'Ó)€EØ�9‰9�W×ÒÙÜ
‡|�|�xÔÝVÜÑ0°°xµÓAÓBÐBô �L‰L˜GÑ#÷ +ð +Ü7Ó9÷+ð +ä(Ó*Ô*ð,r   c               ó$   € V ^8„  d   QhRRRRRR/# )r	   Úupgrader   Úshow_installer_progressr   r   )r   s   "r   r   r   i   s"   € ÷ ;ñ ; ð ;Àtð ;ÐW[ñ ;r   c                óð  € ^ RI Hp \        P                  P	                  RR4      P                  4       p\        4       pVRJ pV'       d   V'       g   \        RV 2R4      # M(V'       d   \        R4        V! RR	R
7       \        4       pV'       g   \        R4      # \        P                  4        \        V4      pVP	                  R4      '       g6   V'       d   RMRp\        RVP	                  R4      ;'       g    R R2V4      # \        P                  R8X  d   \        WAR7      '       g   \        R4      # \        P                  R8X  df   ^ RIHp	Hp
 V	! V4      pV'       g   \        RR4      #  V
! V4       \'        RRV.^R7      pTP0                  '       d   \3        T4       \        R4      # V'       dY   \5        R VP	                  R!4      ;'       g    R" R24       \7        \        P                  R8H  \        P                  R#8H  VR$7       R	#   \         d   p\        RT 24      u Rp?# Rp?ii ; i  \(        \*        \,        P.                  3 d   p\        RT 24      u Rp?# Rp?ii ; i)%a/  Prepare the PM pin and host setup for an explicit install/upgrade command.

Both CLI modes reconcile the same pin; neither discovers a vendor release.
A configured override is validated, never replaced or acquired by PM.
Unattended callers should use PM ensure directly, without interactive host setup.
)ÚensurerB   r+   Nz=    HERMES_CUA_DRIVER_CMD does not resolve to an executable: zB    Fix or unset the override before running computer-use install.z5    Preparing the pinned cua-driver with Hermes PM...rC   T)Úexplicitz#    cua-driver preparation failed: z5    PM did not select a usable cua-driver executable.rx   zO    Update the binary selected by HERMES_CUA_DRIVER_CMD, or unset the override.z#    Run: hermes computer-use doctorz-    cua-driver runtime contract is unusable: Úreasonzunknown errorÚ.r{   )ÚverbosezA    cua-driver is compatible, but Windows autostart setup failed.ry   )rz   Ú"_validate_cua_driver_app_signaturezL    macOS computer use requires the signed CuaDriver.app, not a bare binary.zG    The PM cua-driver package must include its signed macOS app bundle.zh/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregisterz-f)r   z.    cua-driver macOS app registration failed: z-    cua-driver macOS app registration failed.z    cua-driver ready: Úversionzunknown versionÚlinux)Úfresh_install)Úpmr…   rD   rE   rF   r0   rZ   r&   r$   r=   rb   Úclearrt   r;   r|   Ú$_repair_cua_driver_autostart_windowsr}   rz   rŠ   r   ÚRuntimeErrorrm   r   ÚSubprocessErrorÚ
returncoder4   Ú_print_successÚ_print_cua_platform_notes)r‚   rƒ   r…   Úoverriderd   r�   ÚexcÚcontractr%   rz   rŠ   Úappr(   s   &&           r   Úinstall_cua_driverrš   i   sT  € õ ä�z‰z�~‰~Ð5°rÓ:×@Ñ@ÓB€HÜ%Ó'€FØ˜d�N€MßßÜÐXÐYaÐXbÐcØ]ó_ð _ð ÷ #ÜÐOÔPð	FÙ�<¨$Õ/ô *Ó+ˆçÜÐLÓMÐMÜ×$Ñ$Ô&Ü*¨6Ó2€HØ�<‰<˜× Ò çñ bØ!Fð 	äÐDØ Ÿ™ XÓ.×AÐA°/ÐBÀ!ðEØFJóLð 	Lä
‡|�|�wÔÔ'KØ÷(5ó (5äÐXÓYÐYÜ
‡|�|�xÔ÷	Nñ +¨6Ó2ˆßÜÐgØbódð dð	QÙ.¨sÔ3Üð>Ø?CÀSð JàSUôWˆFð
 ××ÐÜ˜vÔ&ÜÐHÓIÐIßÜÐ/°·±¸YÓ0G×0\Ð0\ÐK\Ð/]Ð]^Ð_Ô`Ü!¤#§,¡,°'Ñ"9¼3¿<¹<È7Ñ;RØ0=õ	?áøôM ô 	FÜÐ>¸s¸eÐDÓEÕEûð	Fûô: œg¤z×'AÑ'AÐBô 	QÜÐIÈ#ÈÐOÓPÕPûð	Qús<   Á7
H Å5H= ÈH:È"H5È/H:È5H:È= I5ÉI0É*I5É0I5c               ó    € V ^8„  d   QhRRRR/# )r	   Úvaluer    r   r   )r   s   "r   r   r   §   s   € ÷ 0ñ 0˜Cð 0 Cñ 0r   c                óB   € R V P                  R R4      ,           R ,           # )Ú'z'')r   )rœ   s   &r   Ú_ps_single_quoterŸ   §   s   € Ø�—‘˜s DÓ)Õ)¨CÕ/Ð/r   c               ó    € V ^8„  d   QhRRRR/# )r	   rd   rT   r   r   r   )r   s   "r   r   r   «   s   € ÷ ñ °]ð Èdñ r   c                ó  a € \         P                  R8w  d   R# ^ RIHp S ;'       g    \	        4       o S '       g   R#  \
        P                  ! . ROR^
\        4       RR7      pVP                  '       d   R# VP                  VP                  4      pVP                  R4      p\        ;QJ d    V 3R lV 4       F  '       g   K   R# 	  R# ! V 3R lV 4       4      #   \        \
        P                  TP                  3 d     R# i ; i)	zCA task targeting a previous PM version is not a ready registration.r{   F)ÚElementTreeT)r   r   ÚcreationflagsÚcheckz.//{*}Exec/{*}Commandc              3  ó  <"  € T Fu  p\         P                  P                  VP                  ;'       g    R P	                  4       P	                  R4      4      \         P                  P                  S4      8H  x € Kw  	  R# 5i)r+   Ú"N)rD   ÚpathÚnormcaser   r0   )rN   Únoderd   s   & €r   rO   Ú;_cua_driver_autostart_registered_windows.<locals>.<genexpr>½   sZ   øé € ð )Ù'�tô —7‘7×#Ñ# T§Y¡Y§_ _°"×$;Ñ$;Ó$=×$CÑ$CÀCÓ$HÓIÌRÏWÉW×M]ÑM]Ð^dÓMeÖeÛ'ùs   ƒ0B ´AB )zschtasks.exez/Queryz/TNzcua-driver-servez/XML)r;   r|   Ú	xml.etreer¢   rZ   r   r   r?   r“   Ú
fromstringr/   ÚfindallÚanyrm   r’   Ú
ParseError)rd   r¢   r(   ÚtaskÚcommandss   f    r   r~   r~   «   så   ø€ ä
‡|�|�wÔÙÝ%à×1Ð1Ô/Ó1€FßÙðÜ—’ÚIØ¨Ô;VÓ;XÐ`eôgˆð ××ÐÙà×%Ñ% f§m¡mÓ4ˆØ—<‘<Ð 7Ó8ˆß‹sô )Ù'ó)�sŒsð 	)Šsð 	)ˆsô )Ù'ó)ó )ð 	)øä”Z×/Ñ/°×1GÑ1GÐHô Úðús/   ¾7C Á76C Â.C ÃC ÃC ÃC Ã&DÄDc               ó   € V ^8„  d   QhRR/# rv   r   )r   s   "r   r   r   Ã   s   € ÷ 
ñ 
˜tñ 
r   c                 ó  € \         P                  ! \        4      ;_uu_ 4        ^ RIHp  \        V ! 4       ;'       g    / P                  R4      ;'       g    / P                  RR4      4      uuRRR4       #   + '       g   i     R# ; i)u  ``computer_use.autostart`` â€” opt IN to the Windows per-boot ``cua-driver-serve`` logon
task. The default (absent/False) is on-demand (#97389): Computer Use starts the driver per
session exactly as macOS and Linux do, install/enable flows register no scheduled task, and
a missing task is not a repair condition. True registers (or repairs) the logon task at
install/enable time â€” needed when driving Windows over SSH (Session 0 has no interactive
desktop). Unreadable config fails closed to the on-demand default.©Úload_configÚcomputer_useÚ	autostartFN)Ú
contextlibÚsuppressr=   Úhermes_cli.configrµ   r   rF   r´   s    r   r   r   Ã   s_   € ô 
×	Ò	œY×	'Õ	'Ý1Ü‘k“m×)Ð) r×.Ñ.¨~Ó>×DÐDÀ"×IÑIÈ+ÐW\Ó]Ó^÷ 
(×	'×	'Ñ	'ñ ús   £2A7ÁA7Á7B	c               ó    € V ^8„  d   QhRRRR/# )r	   rd   r    r   r   )r   s   "r   r   r   Ð   s   € ÷ Rñ R°3ð R¸3ñ Rr   c                ó    € R\        V 4       R2# )a  PowerShell body for the elevated registration: Start-Process with a STRUCTURED
``-FilePath`` / ``-ArgumentList`` (older install.ps1 builds interpolated the binary path
into a command string, which split at the first space) and ``-Verb RunAs -Wait -PassThru``
so the exit code propagates.z$exe = z�; $proc = Start-Process -FilePath $exe -ArgumentList @('autostart','enable') -Verb RunAs -Wait -PassThru -ErrorAction Stop; exit $proc.ExitCode)rŸ   )rd   s   &r   Ú&_cua_autostart_registration_ps_commandr½   Ð   s$   € ð
 Ô& vÓ.Ð/ð 0Qð Qð Rr   c               ó$   € V ^8„  d   QhRRRRRR/# )r	   Ú
driver_cmdr    r‰   r   r   r   )r   s   "r   r   r   Ú   s!   € ÷ &ñ &°Sð &Àdð &Ètñ &r   c          	     óê  € \         P                  R8w  d   R# \        4       '       g   R# \        P                  ! V 4      pV'       g   R# \        V4      '       d   R# \        P                  ! R4      ;'       g!    \        P                  ! R4      ;'       g    Rp\        V4      p\        V'       d   RMR4        \        VRR	R
RRV.R\        4       \        4       R7      pTP                  ^ 8X  d   \        T4      # \!        R4       \#        T4       \        R\%        T4       R24       R#   \        P                   d    \        R4      u # \         d   p\        RT 24      u Rp?# Rp?ii ; i)ui  Register autostart using structured arguments, including paths with spaces.

Only registers when the user opted into the per-boot task via
``computer_use.autostart`` (#97389): the on-demand default registers
nothing, silently â€” returning True (nothing to repair) keeps callers from
printing "auto-start was not registered" warnings for an intentional
absence.r{   TFÚ
powershellzpowershell.exez(    Registering cua-driver auto-start...z3    Repairing cua-driver auto-start registration...z
-NoProfilez-NonInteractivez-ExecutionPolicyÚBypassz-Commandi,  )r   Úenvr£   z0    cua-driver autostart registration timed out.z.    cua-driver autostart registration failed: Nz-    cua-driver autostart registration failed.z#    From an elevated shell, run: & z autostart enable)r;   r|   r   ÚshutilÚwhichr~   r½   r$   r   ra   r?   r   ÚTimeoutExpiredr&   r=   r“   r#   r4   rŸ   )r¿   r‰   rd   ÚpsÚps_cmdr(   r—   s   &$     r   r�   r�   Ú   sG  € ô ‡|�|�wÔÙÜ ×"Ò"ñ Ü�\Š\˜*Ó%€FßÙÜ/°×7Ò7ÙÜ	�Š�lÓ	#×	UÐ	U¤v§|¢|Ð4DÓ'E×	UÐ	UÈ€BÜ3°FÓ;€FÜ¿gÑ:ØJôLðMÜ˜B Ð.?ÐASÐU]Ø&¨ð0à#&¬OÓ,=Ü)DÓ)FôHˆð ×Ñ˜AÔÜ7¸Ó?Ð?ÜÐBÔCÜ�vÔÜÐ5Ô6FÀvÓ6NÐ5OÐO`ÐaÔbÙøô ×$Ñ$ô IÜÐGÓHÒHÜô MÜÐEÀcÀUÐKÓLÕLûðMús*   Â<&D. Ä. E2ÅE2ÅE2ÅE-Å'E2Å-E2c               ó(   € V ^8„  d   QhRRRRRRRR/# )r	   Ú
is_windowsr   Úis_linuxr�   r   r)   r   )r   s   "r   r   r     s0   € ÷ jñ j¨$ð j¸$ð jÐRVð jÐ[_ñ jr   c               óÜ   € V '       d   \        R 4       \        R4       R# V'       d   \        R4       R# \        V'       d   RMR4       \        R4       \        R4       \        R4       R# )	z@    cua-driver may spawn a UIAccess worker (cua-driver-uia.exe);z:    Windows/SmartScreen may prompt the first time it runs.z    Linux support is alpha.u.       IMPORTANT â€” grant macOS permissions now:z,    Grant macOS permissions if not done yet:z:      System Settings > Privacy & Security > Accessibilityz=      System Settings > Privacy & Security > Screen RecordingzR    Allow CuaDriver.app; run `hermes computer-use permissions grant` for guidance.N)r$   r#   )rÊ   rË   r�   s   &&$r   r•   r•     sO   € ßÜÐVÔWÜÐPÖQß	ÜÐ4Ö5äÏÑDØGô	IäÐPÔQÜÐSÔTÜÐhÖir   rM   )FT)&Ú__conditional_annotations__Ú__doc__Ú
__future__r   r¸   rD   rÄ   r   r;   rn   Útypingr   Úhermes_cli.cli_outputr   r$   r   r”   r   r#   r   r&   r4   r?   rG   rR   rZ   ra   rb   Ú__annotations__rt   r€   rš   rŸ   r~   r   r½   r�   r•   )rÍ   s   @r   Ú<module>rÓ      s­   øðÜ Vå "ã Û 	Û Û Û 
Û Ý ÷añ aðG¸D÷ Gõ÷8ð
	¸e÷ 	õOða°3÷ aõ
$õ
&ð
 $&Ð ˜DÓ %÷õ(,÷;õ|0÷õ0
õRõ&÷Rjr   