+
    kHà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 ^ RIHt ^ RIHtHtHtHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHtHtHt ^ R
I H!t!H"t"H#t# ^ RI$H%t%H&t&H't' R R lt(R R lt)R R lt*R R lt+]'! 4       R R l4       t,R R lt-R R lt.R t/R R lt0R R lt1RTRR /R! R" lllt2R# R$ lt3R% R& lt4R' R( lt5R) R* lt6R+ R, lt7R- R. lt8R/ R0 lt9R1 R2 lt:R3R4/R5 R6 llt;]<! 4       3R7 R8 llt=R9 R: lt>R; R< lt?R= R> lt@R? R@ ltARA RB ltBRC RD ltCRE RF ltDRG RH ltE]'! 4       RI RJ l4       tFRK RL ltGRM RN ltHRO RP ltIRTRQ RR lltJ]KRS8X  d   ]P˜                  ! ]J! 4       4       R# R# )Uz@hermes pm: lock / install / repair / env / doctor / gc / bundle.)ÚannotationsN)ÚPath)Útermux_libs)Ú_factsÚ	_lockfileÚ_reclaim_set_asideÚ_storeÚensureÚ
stage_only)Úlock_project)ÚInstallError©Ú	repo_root)Úget_packageÚsource_install_packagesÚ
tool_roots)ÚALL_TARGETSÚcurrent_targetÚhash_url)ÚResolvedÚresolve_packageÚreuse_index_responsesc               ó   € V ^8„  d   QhRR/# ©é   ÚreturnÚint© )Úformats   "Ú+/home/ubuntu/.hermes/hermes-agent/pm/cli.pyÚ__annotate__r       s   € ÷ ñ �cñ ó    c                óZ   € V P                   f   \        \        4       4      # \        V 4      # )zUNo arguments: relock uv.lock from pyproject.toml. --bump: pin a tool in pm/lock.json.)ÚnameÚ_relock_projectr   Ú	_pin_tool)Úargss   &r   Úcmd_lockr'      s#   € à‡y�yÒÜœy›{Ó+Ð+Ü�T‹?Ðr!   c               ó    € V ^8„  d   QhRRRR/# )r   Úrootr   r   r   r   )r   s   "r   r    r       s   € ÷ (ñ (˜$ð ( 3ñ (r!   c                óv  € ^ RI p\        RRR7        VP                  V RRR7       \        R4       ^ #   \         d    \        RRR7        Mi ; i\	        T 4      p TP                  T RR7       M'  \         d   p\        R	T 24        Rp?^# Rp?ii ; i\        R
4       \        P                  R8H  pT'       d   RMRp\        RT 24       \        Y4      pT'       dK   RP                  R.TO4      pT'       d   RT R2MRT 2p\        RRP                  T4       RT RT 24       \        R4       ^ # )at  The contributor's one step after editing pyproject.toml.

The same PM operations as `python -m pm.build_env --source . --check-lock`
and `--lock-only`, so the exclude-newer quarantine and resolver settings
cannot drift between the two entry points. No environment changes here:
activation owns syncing, and a relock that also installed would hide
which of the two failed.
Nu   â†’ Checking uv.lockâ€¦T©Úflush)ÚexplicitÚquietuC   âœ“ uv.lock is already current with pyproject.toml; nothing writtenz5uv.lock is out of date with pyproject.toml; relocking©r-   u   âœ— uv.lock refresh failed: u'   âœ“ uv.lock updated from pyproject.tomlÚwin32z. .\activate.ps1zsource ./activatez5Next: re-source activation to sync the environments: Ú,Úallz-TestExtras 'Ú'z--test-extras zNew extras outside [all] (ú, z) need: Ú z0Then commit pyproject.toml and uv.lock together.)
ÚpmÚprintÚcheck_project_lockr   Ú_locked_extrasr   ÚsysÚplatformÚ_new_opt_in_extrasÚjoin)	r)   r6   ÚbeforeÚexcÚwindowsÚactivateÚopt_inÚnamesÚflags	   &        r   r$   r$      sD  € ó ä	Ð
#¨4Õ0ð	ð 	×Ñ˜d¨T¸ÐÔ>ô 	ÐSÔTÙøô	 ô SÜÐEÈT×RðSúô
 ˜DÓ!€FðØ
�‰˜ tˆÕ,øÜô ÜÐ,¨S¨EÐ2Ô3Ýûðúô 
Ð
3Ô4Ü�l‰l˜gÑ%€Gß&-Ñ"Ð3F€HÜ	ÐAÀ(ÀÐ
LÔMÜ Ó-€Fßð —‘˜%Ð) &Ð)Ó*ˆß+2�˜u˜g QÑ'¸.ÈÈÐ8PˆÜÐ*¨4¯9©9°VÓ+<Ð*=¸XÀhÀZÈqÐQUÐPVÐWÔXÜ	Ð
<Ô=Ùs'   “4 ´AÁAÁA2 Á2BÁ=BÂBc               ó    € V ^8„  d   QhRRRR/# )r   r)   r   r   úset[str]r   )r   s   "r   r    r    J   s   € ÷ ñ ˜ð  (ñ r!   c                ót  € ^ RI p V R,          P                  R4      ;_uu_ 4       pVP                  V4      pRRR4       V R,          P                  R4      ;_uu_ 4       pVP                  V4      R,          R,          pRRR4       XP                  RR
4       FF  pTP                  R4      X8X  g   K  \        TP                  R/ 4      P                  R	R
4      4      u # 	  \        4       #   + '       g   i     L¾; i  + '       g   i     L‰; i  \        \        \
        3 d    \        4       u # i ; i)zAExtras the current uv.lock already resolves for the root project.Nzuv.lockÚrbúpyproject.tomlÚprojectr#   ÚpackageÚmetadatazprovides-extrasr   )ÚtomllibÚopenÚloadÚOSErrorÚ
ValueErrorÚKeyErrorÚsetÚget)r)   rM   ÚfÚlockr#   rK   s   &     r   r9   r9   J   sê   € ãðØ�YÕ×$Ñ$ T×*Ô*¨aØ—<‘< “?ˆD÷ +àÐ%Õ%×+Ñ+¨D×1Ô1°QØ—<‘< “? 9Õ-¨fÕ5ˆD÷ 2ð —8‘8˜I rÖ*ˆØ�;‰;�vÓ $Ö&Ü�w—{‘{ :¨rÓ2×6Ñ6Ð7HÈ"ÓMÓNÒNñ +ô ‹5€L÷ +×*úç1×1ûä”Z¤Ð*ô Ü‹uŠðúsE   † D ¦C.¸(D Á  DÂ D Ã.C>	Ã9D ÄD	ÄD ÄD Ä D7Ä6D7c               ó$   € V ^8„  d   QhRRRRRR/# )r   r)   r   r>   rF   r   ú	list[str]r   )r   s   "r   r    r    [   s!   € ÷ 2ñ 2˜Tð 2¨8ð 2¸	ñ 2r!   c                óÌ  € ^ RI p^ RIpV R,          P                  R4      ;_uu_ 4       pVP                  V4      R,          pRRR4       XP	                  R/ 4      pVP                  RVP                  VR,          4       R24      p\        4       R	.r˜V	'       d–   V	P                  4       p
W¨9   d   K   VP                  V
4       VP	                  V
R4       FT  pVP                  V4      pV'       g   K  V	P                  R
 VP                  ^4      P                  R4       4       4       KV  	  K�  \        \        V4      V,
          V,
          4      #   + '       g   i     EL; i)zLExtras this relock introduced that the default [all] closure does not reach.NrI   rH   rJ   zoptional-dependenciesz\s*r#   z\s*\[([^\]]+)\]r2   c              3  ó@   "  € T F  qP                  4       x € K  	  R # 5i©N)Ústrip)Ú.0Úparts   & r   Ú	<genexpr>Ú%_new_opt_in_extras.<locals>.<genexpr>m   s   é € ÐRÑ8Q°Ÿz™zŸ|˜|Ó8Qùs   ‚r1   r   )ÚrerM   rN   rO   rT   ÚcompileÚescaperS   ÚpopÚaddÚmatchÚextendÚgroupÚsplitÚsorted)r)   r>   ra   rM   rU   rJ   ÚextrasÚself_refÚcoveredÚpendingÚextraÚrequirementrf   s   &&           r   r<   r<   [   s  € ãÛà
Ð!Õ
!×	'Ñ	'¨×	-Ô	-°Ø—,‘,˜q“/ )Õ,ˆ÷ 
.à�[‰[Ð0°"Ó5€FØ�z‰z˜S §¡¨7°6­?Ó!;Ð <¸OÐLÓM€HÜ“u˜u˜gˆWß
Ø—‘“ˆØÔÙØ�‰�EÔØ!Ÿ:™: e¨RÖ0ˆKØ—N‘N ;Ó/ˆEß‰uØ—‘ÑR¸¿¹ÀA»×8LÑ8LÈSÔ8QÓRÖRó 1ô ”#�f“+ Õ&¨Õ0Ó1Ð1÷ 
.×	-Ð	-ús   ©EÅE#	c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r    r    r   s   € ÷  0ñ  0�sñ  0r!   c           
     óÜ  a a€ \        4       p\        S P                  4      o/ pR V V3R llp\         Uu/ uF5  pSP	                  V4      e   K  VSP                  S P                  V4      bK7  	  ppVP                  4        Uu0 uF  p\        V4      kK  	  pp\        V4      ^8X  da   \        R4       \        \        VP                  4       4      4       Uu. uF
  qƒ! V4      NK  	  p	p\        V	4      ^8X  d
   V	^ ,          MT	VR&   M[VP                  4        FG  w  rJ\        RV R24       V
 Uu. uF
  qƒ! V4      NK  	  p	p\        V	4      ^8X  d
   V	^ ,          MT	W$&   KI  	  VP                  S P                  S P                  V4       VP                  4        \        RS P                   RS P                   R	\        V4       R
24       \!        V4      # u upi u upi u upi u upi )zÂ--bump <name> <version>: resolve every target's archives, hash them,
write. A target with one archive pins the object; several pin a list.
Target-independent urls collapse to one "any" artifact.c               ó    € V ^8„  d   QhRRRR/# )r   ÚurlÚstrr   Údictr   )r   s   "r   r    Ú_pin_tool.<locals>.__annotate__z   s   € ÷ .ñ .�ð .˜ñ .r!   c                ó¦   <€ \        R V  24       SP                  SP                  V 4      ;'       g    \        V 4      p\        RV 24       RV RV/# )z    z      sha256 rt   Úsha256)r7   Úknown_sha256Úversionr   )rt   Údigestr&   rK   s   & €€r   ÚpinÚ_pin_tool.<locals>.pinz   sQ   ø€ Ü��S�EˆlÔØ×%Ñ% d§l¡l°CÓ8×IÐI¼HÀS»MˆÜ�˜f˜XÐ&Ô'Ø�s˜H fÐ-Ð-r!   z  any:Úanyú  Ú:zpinned r5   ú (z	 targets))r   r   r#   r   Úmissing_reasonÚ
fetch_urlsr{   ÚvaluesÚtupleÚlenr7   ÚnextÚiterÚitemsÚset_pinÚsaveÚ_regenerate_bootstrap_pins)r&   ÚlockfileÚ	artifactsr}   ÚtargetÚurlsÚuÚdistinctrt   ÚpinnedÚtarget_urlsrK   s   f          @r   r%   r%   q   s¬  ù€ ô
 ‹{€HÜ˜$Ÿ)™)Ó$€GØ#%€I÷.ñ .õ "óá!ˆFØ×!Ñ! &Ó)ô 	9ˆ�×"Ñ" 4§<¡<°Ó8Ò8Ù!ð 	ð ð
 #'§+¡+¤-Ó0¡-˜Q”�a–¡-€HÐ0Ü
ˆ8ƒ}˜ÔÜˆhŒÜ&*¬4°·±³Ó+>Ô&?Ó@Ñ&?˜s�#�c–(Ñ&?ˆÐ@Ü(+¨F«°qÔ(8˜6 !ž9¸fˆ	�%Òà#'§:¡:¦<ÑˆFÜ�B�v�h˜a�.Ô!Ù*5Ó6©+ 3�c˜#–h©+ˆFÐ6Ü-0°«[¸AÔ-=  q¦	À6ˆIÓñ $0ð ×Ñ�T—Y‘Y §¡¨iÔ8Ø‡M�M„OÜ	ˆG�D—I‘I�;˜a §¡˜~¨R´°I³Ð/?¸yÐ
IÔJÜ% hÓ/Ð/ùò%ùò
 1ùò Aùò
 7s   ¶GÁ!GÂGÃG$Ä3G)c               ó    € V ^8„  d   QhRRRR/# )r   Únr   r   ru   r   )r   s   "r   r    r    •   s   € ÷ *ñ *�#ð *˜#ñ *r!   c                ó   € V R,          R R2# )i   z.1fz MiBi   r   )r—   s   &r   Ú
_fmt_bytesr™   •   s   € Ø�;Õ Ð$ DÐ)Ð)r!   c               ó   € V ^8„  d   QhRR/# ©r   r   Úboolr   )r   s   "r   r    r    ™   s   € ÷ Uñ U˜$ñ Ur!   c                óì  € \         P                  R8w  d   R# ^ RIp^ RIp^ RIHp  VP                  V P                  4       4      pTP                  RRR7      pTP                  4       pTP                  YAP                  T4      4      '       g   R# ^p\        TP                  T,          ;'       g#    TP!                  YFP                  T,          4      4      #   \        \        \        3 d     R# i ; i)uÕ   A Windows console prints ESC as a glyph (`â†�[2K`) until its handle opts
in to VT processing, and PowerShell hands children a console with VT off.
NUL also reports isatty() but is no console, so it fails here too.r0   TN)ÚwintypesFÚkernel32)Úuse_last_error)r:   r;   ÚctypesÚmsvcrtrž   Úget_osfhandleÚfilenoÚAttributeErrorrP   rQ   ÚWinDLLÚDWORDÚGetConsoleModeÚbyrefrœ   ÚvalueÚSetConsoleMode)Ústreamr¡   r¢   rž   ÚhandlerŸ   ÚmodeÚvts   &       r   Ú
_enable_vtr°   ™   sÃ   € ô ‡|�|�wÔÙÛÛÝðØ×%Ñ% f§m¡m£oÓ6ˆð �}‰}˜Z¸ˆ}Ó=€HØ�>‰>Ó€DØ×"Ñ" 6¯<©<¸Ó+=×>Ò>ÙØ	€BÜ�—
‘
˜R•×SÐS 8×#:Ñ#:¸6Ç:Á:ÐPRÅ?Ó#SÓTÐTøô œG¤ZÐ0ô Úðús   §C ÃC3Ã2C3c                 óà   € \         P                  \         P                  3 F1  p  V P                  4       '       d   \	        V 4      '       d   V u # K1  K3  	  R#   \
        \        3 d     KK  i ; i)z®Stream for in-place progress, or None off a terminal. Prefer stdout;
fall back to stderr because activate.ps1 pipes stdout through Out-Host
while stderr stays on the console.N)r:   ÚstdoutÚstderrÚisattyr°   r¥   rQ   ©r¬   s    r   Ú_progress_streamr¶   ¯   s_   € ô —:‘:œsŸz™zÓ*ˆð	Ø�}‰}�Š¤:¨f×#5Ò#5Ø’ñ $6‰ñ +ñ øô ¤
Ð+ô 	Úð	ús   ¥(AÁA-Á,A-c               ó   € V ^8„  d   QhRR/# r›   r   )r   s   "r   r    r    ¼   s   € ÷ *ñ *�dñ *r!   c                 ó   € \        4       R J# r[   )r¶   r   r!   r   Ú_interactiver¹   ¼   s   € ÜÓ TÐ)Ð)r!   c               ó   € V ^8„  d   QhRR/# )r   r#   ru   r   )r   s   "r   r    r    À   s   € ÷ ,ñ ,˜ñ ,r!   c                óv   a aaaa€ ^ oRo\        4       oR V3R lloR V3R llpR VVV VV3R llpWn        V# )a¦  Per-package progress for ensure(): download as % + MiB, unpack as a
phase line. On a terminal the line redraws in place (~10 Hz); in a piped
(CI) log each tick prints its own line, throttled to ~4 MiB steps so a
slow line proves it's moving without flooding the log (a 1 MiB tick on a
1.5 GiB model would be ~1,500 lines). ``finish()`` returns the cursor to
a clean line so the caller's status glyph starts on its own row.ç        c               ó    € V ^8„  d   QhRRRR/# )r   Úlineru   r   ÚNoner   )r   s   "r   r    Ú$_live_progress.<locals>.__annotate__Ë   s   € ÷ $ñ $�Cð $˜Dñ $r!   c                ó~   <€ Se+   SP                  RV ,           4       SP                  4        R # \        V RR7       R # )Nú[2KTr+   )Úwriter,   r7   )r¾   r¬   s   &€r   rÃ   Ú_live_progress.<locals>.writeË   s-   ø€ ØÒØ�L‰L˜ tÕ+Ô,Ø�L‰LŽNä�$˜d×#r!   c               ó   € V ^8„  d   QhRR/# )r   r   r¿   r   )r   s   "r   r    rÀ   Ò   s   € ÷ ñ �Dñ r!   c                 óV   <€ S e$   S P                  R4       S P                  4        R # R # )NrÂ   )rÃ   r,   rµ   s   €r   ÚfinishÚ_live_progress.<locals>.finishÒ   s#   ø€ ØÒØ�L‰L˜Ô%Ø�L‰LŽNñ r!   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r   Ústageru   Údoner   ÚtotalÚlabelr   r¿   r   )r   s   "r   r    rÀ   ×   s6   € ÷ añ a�cð a ð a¨Sð a¸ð aÀñ ar!   c                ób  <€ V R 8X  d&   ^ oRoS	! RS RV'       d
   RV,           MR 24       R# V^ 8:  d   R# W8  d=   Se)   \         P                  ! 4       pVS,
          R8  d   R# VoMVS,
          R8  d   R# VoS	! RS RW,          ^d,          R	 R
\        V4       R\        V4       24       R# )Úunpackr¼   r€   z: unpackingr5   Ú Ngš™™™™™¹?ú: z5.1fz%  z / i  @ )ÚtimeÚ	monotonicr™   )
rÊ   rË   rÌ   rÍ   ÚnowÚlastÚ	last_timer#   r¬   rÃ   s
   &&&& €€€€€r   ÚreportÚ_live_progress.<locals>.report×   s·   ø€ à�HÔØˆDØˆIÙ�B�t�f˜K¿¨¨u®ÀBÐ'GÐHÔIÙØ�AŒ:ÙØŒ<ØÒ!Ü—n’nÓ&�Ø˜•? SÔ(ÙØ‘	Ø˜•˜Ô.ÙØˆÙ��4�&˜˜4�<¨#Õ-¨dÐ3°3´zÀ$Ó7GÐ6HÈÌJÐW\ÓL]ÐK^Ð_Ö`r!   )r¶   rÇ   )r#   rÇ   r×   rÕ   rÖ   r¬   rÃ   s   f  @@@@r   Ú_live_progressrÙ   À   sC   ü€ ð €DØ€IÜÓ€F÷$ð $÷ð ÷
aô að( „MØ€Mr!   ÚverifyTc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   rC   rX   r�   ú
str | NonerÚ   rœ   r   r   r   )r   s   "r   r    r    ï   s)   € ÷ ñ ˜)ð ¨Zð È4ð Ð[^ñ r!   c               ó  € ^ RI Hp ^ pV! 4       ;_uu_ 4       pV  F�  p\        V4      p Ve-   \        Wa4      p\	        RV RV RVP
                   R24       K?  \        VRW'VR7       VR	8X  d   ^ R
IHp	 V	! \        4       RR7       VP                  4        \	        RV 2RR7       K�  	  RRR4       V#   \         d5   p
TP                  4        \	        RT
 2RR7       T^,          p Rp
?
KÕ  Rp
?
ii ; i  + '       g   i     T# ; i)é    )Ú_install_operationNõ   âœ“ z (staged for rÑ   Ú)T)r-   rÚ   ÚprogressÚ
_operationÚpython)Úpublish_launchersF)Úcreater+   õ   âœ— )Ú
pm.installrß   rÙ   r
   r7   r#   r	   Úhermes_cli.venv_syncrå   r   rÇ   r   )rC   r�   rÚ   rß   ÚfailedÚ	operationr#   râ   Úentryrå   Úes   &&$        r   Ú_install_namesrî   ï   sð   € Ý-à€FÙ	×	Ô	 ÛˆDÜ% dÓ+ˆHðØÒ%ä& tÓ4�EÜ˜D   m°F°8¸2¸e¿j¹j¸\ÈÐKÖLä˜4¨$°vÐ]fÕgØ˜xÔ'ÝJá)¬)«+¸eÕDØ—O‘OÔ%Ü˜D  ˜-¨t×4ñ ÷ 
ð( €Møô	  ô Ø—‘Ô!Ü˜˜Q˜C�j¨Õ-Ø˜!•–ûðú÷! 
Ö	ð( €MúsA   ˜C8ª.B6ÁC8ÁAB6Â(C8Â6C5	Ã)C0	Ã*C8Ã0C5	Ã5C8Ã8D		c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   rk   rX   Ú
tools_onlyrœ   Útrust_recordedr   rÜ   r   )r   s   "r   r    r      s*   € ÷ ñ ¨ð Èdð Ø(,ðØCMñr!   c               ó  € V'       d<   V\         9  d   RV: RRP                  \         4       2# V P                  '       g   R# Ve-   V'       g#   V'       g   V P                  '       g	   V'       d   R# V'       d%   V'       g   V'       g   V P                  '       d   R# V'       d%   V'       g   V'       g   V P                  '       d   R# V'       d   V'       d   R	# \        V R
R4      ;'       g    RpV'       d%   V'       g   V'       g   V P                  '       d   R# V'       dU   ^ RIHp V! 4       pV U	u. uF  q™V9  g   K  V	NK  	  p
p	V
'       d'   RRP                  V4       RRP                  V
4       2# R# u up	i )zDThe first incompatible flag combination, as its user-facing message.zunknown target z	; known: r4   z(--target requires explicit package namesNzp--test-environment builds beside the default closure; it does not take names, --extra, --target, or --tools-onlyzc--tools-only installs the tool closure and then stops; it does not take names, --extra, or --targetzj--trust-recorded installs the default closure and then stops; it does not take names, --extra, or --targetzB--extra syncs this install's venv and cannot combine with --targetÚwithoutzR--without shapes the default closure; it does not take names, --extra, or --target)Údefault_package_namesz2--without accepts only optional default packages (z); not r   )r   r=   rC   ÚgetattrÚpm.defaultsrô   )r&   rk   Úcross_targetrð   rñ   Útest_environmentró   rô   Úallowedr#   Úunknowns   &$$$$$     r   Ú_install_flag_errorrû     s  € ÷ Øœ{Ô*Ø$ \Ñ$4°I¸d¿i¹iÌÓ>TÐ=UÐVÐVØ�z�zˆzÙ=ØÒ#¯·<À4Ç:Ç:À:×Q[ñ Bß—v§°··°ÙtßŸ6§\°T·Z·Z°ZÙ{ß—,ÙSÜ�d˜I tÓ,×2Ð2°€Gß—FŸl¨d¯j¯j¨jÙcßÝ5á'Ó)ˆÙ$+ÓC¡G˜D¸7Ñ/B—4�4¡GˆÐCßØHÈÏÉÐSZÓI[ÐH\ð ]ØŸ9™9 WÓ-Ð.ð0ð 1áùò	 Ds   Ä:E?ÅE?c               ó$   € V ^8„  d   QhRRRRRR/# )r   rC   rX   rÚ   rœ   r   r¿   r   )r   s   "r   r    r    *  s&   € ÷ 
Fñ 
F˜Yð 
F°4ð 
F¸Dñ 
Fr!   c               ól   € V  F-  p\        V.VR7      '       g   K  \        RV RV R2RR7       K/  	  R# )a
  Install the optional defaults; a failure warns and never fails the install.

They are the browser and computer-use tools, not what Hermes needs to run:
a Chromium download that fails behind a proxy must not abort an install
whose required closure and venv are fine.
©rÚ   u   âš  optional zH was not installed; its tools stay unavailable until `hermes pm install z
` succeedsTr+   N)rî   r7   )rC   rÚ   r#   s   &$ r   Ú_install_defaultsrÿ   *  s@   € ó ˆÜ˜4˜&¨×0Õ0Ü�M $ ð ((Ø(, v¨Zð9Ø@D÷Fó r!   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rk   rX   Úsyncrœ   r   r   r   )r   s   "r   r    r    7  s"   € ÷ ñ ¨ð ¸Tð ÐX[ñ r!   c               ó  € ^ pV'       dK   ^ RI Hp  T! T ;'       g    R.RR7       \        RV '       d   RRP                  V 4      ,           MR 24       VeN   V'       gF   ^ R
IHp ^ RIHpH	p  V! \        4       RR7       V! \        4       V! V4      4       \        R4       V# V#   \         d"   p\        RT 24       T^,          p R	p?LzR	p?ii ; i  \         d#   p\        RT 24       T^,          p R	p?T# R	p?ii ; i)zLSync the venv and build the side test environment; return the failure count.©Ú	sync_venvr2   Tr/   õ   âœ“ venvz +rÐ   rç   N)r8   )Úensure_testenvÚparse_extrasu   âœ“ test environment)rè   r  r7   r=   r   r6   r8   Ú
pm.testenvr  r  r   )	rk   r  rø   rê   r  rí   r8   r  r  s	   &$$      r   Ú_install_python_environmentsr	  7  sç   € à€FßÝ(ð
	ñ �f×'Ð'  °$Õ7Ü�H¿˜T D§I¡I¨fÓ$5Ö5ÀRÐHÐIÔJð Ò#¯FÝ)ß;ð	Ùœy›{°TÕ:Ùœ9›;©Ð5EÓ(FÔGÜÐ(Ô)ð €Mˆ6€Møô! ô 	Ü�D˜˜�*ÔØ�a�K�Fûð	ûô ô 	Ü�D˜˜�*ÔØ�a�KŒFØ€Mûð	ús4   ’
B( �8B( Á04C Â(CÂ3CÃCÃDÃ"C?Ã?Dc               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r    r    X  s   € ÷ Añ A˜ñ Ar!   c           	     óP  € \        V R R4      p\        \        P                  \        V RR4      ;'       g    R4      4      p\	        \        V RR4      4      p\	        \        V RR4      4      p\        V RR4      p\        WWWER7      pV'       d   \        RV 24       ^# V P                  '       g	   V'       d   V P                  M \        \        4       P                  4       4      p\        \        P                  \        V R	R4      ;'       g    R4      4      pV'       d   ^ R
I
Hp	 V	! VR7       . p
V P                  '       g-   V'       g%   ^ RI
Hp V! \        4       P                  4       4      p
V P                  ;'       g    T;'       g    T'       * p^ RIHp V'       d   V! \        4       4      M/ pV P                  '       d   TM
\!        V4      p\#        WñV'       * R7      '       d   ^# V P                  '       d"   V'       g   ^ R
I
Hp	 V	! V P                  R7       V'       gS   V P                  '       d	   V'       d9   ^ RIHp V! RR7      pV'       d"   \        RRP)                  V4       2RR7       ^# V'       d   \+        W¤'       * R7       ^ # \-        T\	        T;'       g    V P                  '       * 4      VR7      pV'       g   \+        W¤'       * R7       V'       d5   V'       g-   ^ RIHpHp V! V! \        4       4      V\        4       VRJR7       V'       d   ^# ^ # )r�   Nro   rð   Frñ   rø   )rk   r÷   rð   rñ   rø   rç   ró   )Úrecord_declined)re   )Údefault_packages)Úactivation_input_mtimes)r�   rÚ   )Úremove)rA   T)Úallow_incompleteu(   âœ— tools not on PATH before venv sync: z; r+   rþ   )r  rø   )Úactivation_inputs_dirÚrecord_activation_inputs)rø   r   )rõ   Úlistrv   Úfromkeysrœ   rû   r7   rC   r   r   rö   r  r  Úpm.environmentsr  r   r   rî   rè   rA   r=   rÿ   r	  r  r  )r&   r÷   rk   rð   rñ   rø   ÚerrorrC   ró   r  Údefaultsr  Úfull_closurer  Úinput_mtimesÚ
tool_namesrA   Úproblemsrê   r  r  s   &                    r   Úcmd_installr  X  sG  € Ü˜4 ¨4Ó0€Lô ”$—-‘-¤¨¨g°tÓ <× BÐ BÀÓCÓD€FÜ”g˜d L°%Ó8Ó9€JÜœ' $Ð(8¸%Ó@ÓA€NÜ˜tÐ%7¸Ó>ÐÜ À,Ø/=ôb€EçÜ��U�GˆnÔÙØŸ*Ÿ*˜*¯ˆD�JŠJÔ4KÌIËK×L]ÑL]ÓL_Ó4`€EÜ”4—=‘=¤¨¨y¸$Ó!?×!EÐ!EÀ2ÓFÓG€GßÝ/ñ 	˜GÕ$Ø€HØ�J�JˆJŸ&Ý0á#¤I£K×$5Ñ$5Ó$7Ó8ˆð Ÿ
™
×@Ð@ j×@Ð@°LÔA€LÝ7ç;GÑ*¬9«;Ô7ÈR€Lð
 Ÿ*Ÿ*˜*‘¬*°UÓ*;€JÜ�jÀ.Ô>P×QÓQÙØ‡z‡z€zŸ,Ý/ñ 	˜tŸz™zÕ*ß §§ ¯zÝ'á¨TÔ2ˆßÜÐ<¸T¿Y¹YÀxÓ=PÐ<QÐRÐZ^Õ_ÙßÜ˜(Ô+=Õ>ÙÜ)¨&´t¸F×<TÐ<TÈ$Ï*É*ÄnÓ7UØ;KôM€F÷ Ü˜(Ô+=Õ>ßŸFßSá Ñ!6´y³{Ó!CÀ\ÔS\ÓS^Ø2BÈ$Ð2Nõ	Pçˆ1Ð˜AÐr!   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r    r    œ  s   € ÷ ñ �Sñ r!   c           	     óº   € ^ RI Hp V P                  ;'       g    \        4       P                  4       p\	        \
        P                  ! V! VR/ / ^RR7      4       ^ # )rÞ   )Úenv_forÚbase_envT)ÚindentÚ	sort_keys)rè   r  rC   r   r7   ÚjsonÚdumps)r&   r  rC   s   &  r   Úcmd_envr%  œ  sE   € Ý"à�J‰J×-Ð-œ)›+×+Ñ+Ó-€Eô 
Œ$�*Š*‘W˜eÐ1¨bÑ1¸!ÀtÔ
LÔMÙr!   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r    r    ¦  s   € ÷ 0ñ 0˜ñ 0r!   c           
     ó–  € ^ RI HpHp ^ RIHp \        4       p\        4       p\        4       p\        4       p^ pVP                  4        EFñ  p	\        V	4      p
V
P                  V4      pVe   \        RV	 RV RV R24       K;  V! W¤V4      ;'       g    \        4       \        4       3w  rVVP                  V	4      pV
P                  ;'       g    V
P                  pV! WIV4      pVeB   Ve>   RV9  g   RV9  d0   \        V'       d   R	MR
 RV	 R24       Y�'       d   ^ M^,          pKá  VP!                  W”P#                  V	4      VP$                  V4      '       g;   Vf   RMRp\        V'       d   R	MR
 RV	 RV 24       Y�'       d   ^ M^,          pEKM  VP'                  VR,          4      pV
P)                  VV4      pV'       d   \        RV	 RV 24       V^,          pEKœ  VP                  R4      pVe)   V! V4      V8w  d   \        RV	 R24       V^,          pEKÙ  \        RV	 RVR,           24       EKô  	  V'       d   ^# ^ # )rÞ   )Ú	_identityÚ_installed_location)Útree_digestz- z	: n/a on r‚   rá   r�   r�   Ú?u   âœ—r5   z<: legacy fact: no recorded identity, run `hermes pm install`znot installedÚoutdatedrÑ   rì   rç   z%: installed but failed verification: r|   z-: realized bytes do not match recorded digestrà   r{   )rè   r(  r)  Úpm.storer*  r   r   r   r   rC   r   rƒ   r7   rT   ÚoptionalÚinternalÚ	installedr{   r)   rì   rÚ   )r&   r(  r)  r*  rŽ   ÚfactsÚstorer�   Úbadr#   rK   ÚreasonÚfactÚsoftÚidentityÚstaterì   Úrecordeds   &                 r   Ú
cmd_doctorr:  ¦  s%  € ß9Ý$ä‹{€HÜ‹H€EÜ‹H€EÜÓ€FØ
€CØ—‘× ˆÜ˜dÓ#ˆØ×'Ñ'¨Ó/ˆØÒÜ�B�t�f˜I f X¨R°¨x°qÐ9Ô:ÙÙ*¨7¸fÓE×]Ð]Ì&Ë(ÔTZÓT\ÐI]‰ˆØ�y‰y˜‹ˆØ×Ñ×3Ð3 7×#3Ñ#3ˆÙ˜X¨VÓ4ˆàÒØÒ$Ø Ô%¨¸DÔ)@ô ŸD‘S eÐ,¨A¨d¨VÐ3oÐpÔqØž‘1 !Õ#ˆCÙØ�‰˜t×%5Ñ%5°dÓ%;¸U¿Z¹ZÈ×RÒRØ'+¢|‘O¸ˆEÜŸD‘S eÐ,¨A¨d¨V°2°e°WÐ=Ô>Øž‘1 !Õ#ˆCÚØ—‘˜D �MÓ*ˆØ—‘  vÓ.ˆßÜ�D˜˜ÐCÀFÀ8ÐLÔMØ�1�HˆCÚØ—8‘8˜HÓ%ˆØÒ¡K°Ó$6¸(Ô$Bô �D˜˜ÐKÐLÔMØ�1�HˆCÚÜ��T�F˜!˜D �OÐ,Ð-×.ñM !÷N ˆ1Ð˜Ðr!   c               ó   € V ^8„  d   QhRR/# )r   r   ztuple[int, int]r   )r   s   "r   r    r    Ù  s   € ÷ $ ñ $ ˜ñ $ r!   c                óH  € ^ RI Hp ^ RIHp VP	                  4       pV P
                  P                  4       '       g   VP                  4       '       g   R	# ^ pV P                  4       ;_uu_ 4        VP                  4        VP                  4       pV! V4       V\        V 4      ,          p\        V P
                  P                  4       4       F«  pVP                  4       '       g   K  VP                  P                  R4      '       d$   VP                  P                  R4      '       g   K_  VP                  V9   d   Kr  \        RVP                   24       \         P"                  ! VRR7       V^,          pK­  	  RRR4       V\%        X4      3#   + '       g   i     L; i)
uŸ  The sweep core shared by `pm gc` and `pm bundle`.

Removes every store entry nothing references: fetch-<sha> download-cache
dirs (the raw archives â€” needed only at install time, dead weight in a
staged payload or a CI cache), orphaned package versions from an older
lock, and expired partials. Keeps live package entries (recorded in
facts) and partials an in-flight download still owns. Returns
(removed, kept).
)Úcollect_partials)ÚpathsÚ.z	.staging-z	removing T)Úignore_errorsN)rÞ   rÞ   )Úpm.download_stater=  r6   r>  Úpartials_rootr)   Úis_dirÚinstall_lockÚreloadÚentries_in_user   rj   Úiterdirr#   Ú
startswithr7   ÚshutilÚrmtreer‡   )r2  r1  r=  r>  Úpartials_dirÚremovedÚkeepÚitems   &&      r   Ú	_gc_storerO  Ù  s1  € õ 3Ýà×&Ñ&Ó(€LØ�:‰:×Ñ×Ò |×':Ñ':×'<Ò'<ØˆØ€GØ	×	Ñ	×	Õ	Ø�‰ŒØ×#Ñ#Ó%ˆÙ˜Ô&ØÔ% eÓ,Õ,ˆÜ˜5Ÿ:™:×-Ñ-Ó/Ö0ˆDØ—;‘;—=’=Ùð
 �y‰y×#Ñ# C×(Ò(°·±×1EÑ1EÀk×1RÒ1RÙØ�y‰y˜DÔ ÙÜ�I˜dŸi™i˜[Ð)Ô*Ü�MŠM˜$¨dÕ3Ø�q�LŠGñ 1÷ 
ð& ”S˜“YÐÐ÷' 
×	ús   Á/BFÄ	 FÄ*AFÆF!	c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r    r       s   € ÷ ñ �Cñ r!   c                ó  € ^ RI Hp ^ RIHp ^ RIHp V! V! 4       4      pVP                  \        4       P                  8X  d   \        4       MV! VP                  R,          4      p\        WE4      w  rg^ RI
Hp ^ RIHp	 ^ RI Hp
 ^ RIHp V! V
! 4       4      pV! V	! V
! 4       4      R	,          4      p^ R
IHp ^ RIHp V! V! 4       4      p\)        RV RV R\+        V4       R\+        V4       R\+        V4       R24       ^ # )rÞ   ©Úwritable_store_root)ÚFacts)ÚStorez
facts.json)Úcollect_generations)Úinstall_state_dirr   )Úcollect_runtime_generationsz
pm-runtime)Úinstalls_root)Úcollect_orphan_install_stateszgc: removed z, kept z
; removed z dependency generations, z PM runtime generations, z* install state dir(s) of deleted checkouts)Úpm.pathsrS  Úpm.lockrT  r-  rU  r)   r   r   rO  Úhermes_cli.runtime_staterV  r  rW  r   Ú
pm.runtimerX  rY  Úpm.install_statesrZ  r7   r‡   )r&   rS  rT  rU  r2  r1  rL  ÚkeptrV  rW  r   rX  ÚgenerationsÚruntimesrY  rZ  Úorphanss   &                r   Úcmd_gcrd     sÒ   € Ý,ÝÝÙÑ%Ó'Ó(€EØŸ
™
¤f£h§m¡mÔ3ŒFŒH¹¸u¿z¹zÈLÕ?XÓ9Y€EÜ˜eÓ+�M€GÝ<Ý1Ý"Ý6Ù%¡i£kÓ2€KÙ*Ñ+<¹Y»[Ó+IÈLÕ+XÓY€HÝ-Ý?Ù+©M«OÓ<€GÜ	ˆL˜˜	 ¨¨¨j¼¸[Ó9IÐ8JÐJcÜ�‹]ˆOÐ4´S¸³\°NÐBlðnô oár!   Útimeouti  c               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚcmdrX   re  r   r   ztuple[int, str]r   )r   s   "r   r    r      s!   € ÷ ,ñ ,�9ð ,°Cð ,À?ñ ,r!   c               óÞ   € ^ RI Hp  V! WW#\        P                  R7      pTP                  TP                  3#   \        P
                   d   p\        T ^ ,           RT R24      ThRp?ii ; i)zNStream CI progress with the Python engine's bounded drain and diagnostic tail.)Ú_run_streaming)ÚcwdÚenvre  Úoutputz timed out after ÚsN)	Úpm.environmentri  r:   r²   Ú
subprocessÚTimeoutExpiredÚRuntimeErrorÚ
returncoder³   )rg  rj  rk  re  ri  Úresultr?   s   &$$$   r   Ú	_run_livert    sm   € å-ðLÙ °#ÌsÏzÉzÔZˆð ×Ñ˜fŸm™mÐ+Ð+øô ×$Ñ$ô LÜ˜c !�f˜XÐ%6°w°i¸qÐAÓBÈÐKûðLús   ˆ9 ¹A,ÁA'Á'A,c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   rC   rX   Úonly_targetrÜ   Úskip_targetszfrozenset[str]r   ztuple[list, list[str]]r   )r   s   "r   r    r       s*   € ÷ ñ ˜Ið ¸jð Ø#1ðØDZñr!   c           	     ó&  € . p. pV  F¨  p\        V4      p\         Uu. uF!  q‡P                  V4      e   K  Wƒ9  g   K  VNK#  	  p	pV'       d   V	 Uu. uF  qˆV8X  g   K  VNK  	  p	pV	'       g   Kj   \        WyVP	                  V4      VP                  V4      R7      p
VP                  V
4       Kª  	  WE3# u upi u upi   \         dF   p\        YaP	                  T4      TP                  RT 2R7      p
TP                  T4        Rp?LmRp?ii ; i)zXResolve each package's latest; an upstream outage records a failure instead of aborting.N)r�   zresolve failed: )r4  )
r   r   rƒ   r   r{   Úpinned_artifactsÚ	Exceptionr   Úversion_styleÚappend)rC   rŽ   rv  rw  ÚresolvedÚfailuresr#   rK   ÚtÚtargetsÚdecisionrí   s   &&&&        r   Ú_resolve_updatesr‚     s  € ð €HØ€HÛˆÜ˜dÓ#ˆÝ)Ói™k˜×-CÑ-CÀAÓ-F”1ÐSTÑSh—1�1™kˆÐißÙ")Ó>¡'˜Q°+Ñ-=—q�q¡'ˆGÐ>ßÙð	"Ü& w¸×9IÑ9IÈ$Ó9OØ19×1JÑ1JÈ4Ó1PôRˆHð
 	�‰˜Ö!ñ ð ÐÐùò jùâ>øô ô 	"Ü ×&6Ñ&6°tÓ&<¸g×>SÑ>SÐ^nÐopÐnqÐ\rÔsˆHØ�O‰O˜D×!Ñ!ûð	"ús3   �B6¶B6¾B6ÁB;ÁB;Á2,C Ã DÃ;DÄDc               ó    € V ^8„  d   QhRRRR/# )r   Úwidthr   r   r¿   r   )r   s   "r   r    r    6  s   € ÷ Nñ N Cð N¨Dñ Nr!   c                óš  € T pVP                   f5   \        VP                  RV 2 RVP                  ;'       g    R 24       R # VP                  '       g,   \        VP                  RV 2 RVP
                   R24       R # VP                   VP
                  8X  db   VP                  '       dP   \        VP                  RV 2 RVP                    RRP                  \        VP                  4      4       24       R # RpVP                  '       dy   \        \        VP                  P                  4       4      4      ^8”  dH   RRP                  R	 \        VP                  P                  4       4       4       4      ,           R
,           p\        VP                  RV 2 RVP
                  ;'       g    R RVP                    V 24       R # )NÚ<r€   z
up to datez up to datez: newer artifacts for r4   rÐ   r‚   c              3  ó4   "  € T F  w  rV R V 2x € K  	  R# 5i)Ú=Nr   )r]   r  Úvs   &  r   r_   Ú!_report_update.<locals>.<genexpr>A  s   é € Ð"WÑ:V±$°! a S¨¨!¨¥:Ó:Vùs   ‚rá   õ   â€”õ    â†’ )r{   r7   r#   r4  ÚchangedÚlockedÚartifact_updatesr=   rj   Ú
per_targetr‡   rS   r…   rŠ   )r�  r„  ÚdÚpers   &&  r   Ú_report_updater“  6  sa  € Ø€AØ‡y�yÒÜ�—‘˜˜%˜�yÐ!  A§H¡H×$<Ð$<°Ð#=Ð>Ö?Ø�Y�YˆYÜ�—‘˜˜%˜�yÐ!  A§H¡H :¨[Ð9Ö:Ø	
�‰�a—h‘hÔ	 1×#5×#5Ð#5Ü�—‘˜˜%˜�yÐ!  A§I¡I ;Ð.DÀTÇYÁYÌvÐVW×VhÑVhÓOiÓEjÐDkÐlÖmàˆØ�<�<ˆ<œC¤ A§L¡L×$7Ñ$7Ó$9Ó :Ó;¸aÔ?Ø˜Ÿ™Ñ"W¼&ÀÇÁ×ASÑASÓAUÔ:VÓ"WÓWÕWÐZ]Õ]ˆCÜ�—‘˜˜%˜�yÐ!  A§H¡H×$5Ð$5°Ð#6°e¸A¿I¹I¸;ÀsÀeÐLÖMr!   c               ó   € V ^8„  d   QhRR/# r›   r   )r   s   "r   r    r    E  s   € ÷ 	ñ 	˜ñ 	r!   c                 óŠ   € ^ RI Hp   V ! RR7       \        R4       R#   \         d   p\        RT 24        Rp?R# Rp?ii ; i)rÞ   r  Tr/   rç   NFr  )rè   r  r   r7   )r  rí   s     r   Ú_sync_venv_stepr–  E  sB   € Ý$ðÙ˜4Õ ô 
ˆ*ÔÙøô	 ô Ü��Q�CˆjÔÝûðús   ˆ	 žA©=½Ac               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r    r    Q  s   € ÷ 
]ñ 
]¨Cñ 
]r!   c                ó  € V P                   P                  P                  R,          R,          pVP                  4       '       g   ^ # \        P                  ! \
        P                  \        V4      .^<RR7      P                  # )a  Splice the new uv and Windows git pins into this checkout's installers.

curl|sh and irm|iex bootstrap those tools before any checkout exists to read
the lock, so they carry the pins as generated fragments. A lock outside a
checkout (a test fixture) feeds no installer.
Úscriptszgen-bootstrap-pins.pyF)re  Úcheck)	ÚpathÚparentÚis_filero  Úrunr:   Ú
executableru   rr  )rŽ   Úscripts   & r   r�   r�   Q  sZ   € ð �]‰]×!Ñ!×(Ñ(¨9Õ4Ð7NÕN€FØ�>‰>×ÒÙÜ�>Š>œ3Ÿ>™>¬3¨v«;Ð7ÀÈ5ÔQ×\Ñ\Ð\r!   c               ó    € V ^8„  d   QhRRRR/# )r   r�  r  r   r   r   )r   s   "r   r    r    ^  s   € ÷ ,ñ ,˜ð ,¨Cñ ,r!   c           
     ó  € V '       g   \        R 4       \        V4      # . p/ pV  F¼  p\        VP                  4      p \	        WTVP                  VP                  4      4      pTP                  TP                  TP                   T4       TP#                  TP                  4       \        RTP                   RTP$                  ;'       g    R	 R
TP                    24       K¾  	  V'       dJ   VP'                  4        \        V4      p
\)        V4      '       g   \+        4       '       d	   V
'       d   ^M^ pM\        R4       ^pV'       g   V# \        R\-        V4       R\-        V4       RRP/                  V4       24       ^ RIHp VP5                  R4      pVP7                  4        F  w  rïVP9                  RV 2RV4       K  	  VP;                  R^VR7       ^#   \         d¡   p\        T\        P                  P                  4      '       d   TP                  MRpT'       d	   T RT R2M
\        T4      p	\        RTP                   RT	 24       \        T4      P                   RT	 2Y4P                  &    Rp?EK_  Rp?ii ; i)zpm update: nothing to updateNr‚   rá   rç   z pin failed: rÑ   rà   z pinned r‹  rŒ  z/pm update: every pin failed; lockfile untouchedzpm update: pinned z	, failed r4   ©ÚreceiptÚupdatezpin Frê   )Útoken)r7   r�   r   r#   Ú_pin_artifactsry  rz  Ú
isinstanceÚurllibr  Ú	HTTPErrorrt   ru   ÚtypeÚ__name__r‹   r{   r|  rŽ  rŒ   rî   r–  r‡   r=   r6   r¤  ÚbeginrŠ   Úrecord_stepÚfinalize)r�  rŽ   r”   rê   r‘  rK   r�   rí   rt   ÚdetailÚ	fragmentsÚrcr¤  r¦  r#   r  s   &&              r   Ú_apply_pinsr³  ^  s  € ßÜÐ,Ô-ô *¨(Ó3Ð3Ø€FØ€FÛˆÜ˜aŸf™fÓ%ˆð	Ü& w°8×3LÑ3LÈQÏVÉVÓ3TÓUˆIð 	×Ñ˜Ÿ™ §¡¨IÔ6Ø�‰�a—f‘fÔÜ��Q—V‘V�H˜H Q§X¡X×%6Ð%6°Ð$7°u¸Q¿Y¹Y¸KÐHÖIñ# ÷$ Ø�‰ŒÜ.¨xÓ8ˆ	Ü  ×(Ò(´×0AÒ0AÇY‰QÐTU‰äÐ?Ô@ØˆßØˆ	Ü	Ðœs 6›{˜m¨9´S¸³[°MÀÀDÇIÁIÈfÓDUÐCVÐ
WÔXõ à�M‰M˜(Ó#€EØ—|‘|–~‰ˆØ×Ñ˜d 4 &˜M¨5°%Ö8ñ &à×Ñ�X˜q¨ÐÔ.ÙøôA ô 
	ô & a¬¯©×)?Ñ)?×@Ò@�!—%’%ÀdˆCß'*˜�s˜"˜S˜E ‘^´°A³ˆFÜ�D˜Ÿ™˜ ¨f¨XÐ6Ô7Ü $ Q£× 0Ñ 0Ð1°°F°8Ð<ˆF—6‘6‰NÞûð
	ús   ¾%GÇJ	Ç)?JÈ)AJÊJ	c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r    r    �  s   € ÷ )ñ )˜#ñ )r!   c                 ó¼   €  \        \        4       R R R7       \        R4       \	        4       '       d   ^ # ^#   \         d   p \        RT  24        Rp ? ^# Rp ? ii ; i)T)Úupgrader-   u    âœ— Python lock refresh failed: Nu   âœ“ uv.lock refreshed)r   r   r   r7   r–  )r?   s    r   Ú_refresh_uv_lockr·  �  sX   € ðÜ”Y“[¨$¸Õ>ô 
Ð
!Ô"Ü×!Ò!ˆ1Ð( qÐ(øô	 ô ÜÐ0°°Ð6Ô7Ýûðús   ‚7 ·AÁAÁAc               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r    r    —  s   € ÷ ñ ˜3ñ r!   c                 ó–  € ^ RI Hp Hp ^ RIHp ^ RIHp V! R4      pV! R4      pVe!   VP                  e   Ve   VP                  f   \        R4       ^# V! V! 4       R,          V ! R4      4      p\        \        VP                  4      R.\        \        4       4      VR	7      w  rxV^ 8w  d   \        R
V 24       ^# \        R4       ^ # )rÞ   )r  Úinstalled_package)Únpm_envrR  ÚnpmÚnodeu7   âœ— npm or Node: not installed; run `hermes pm install`z
.npm-cacher¥  )rj  rk  u   âœ— npm update failed:
u   âœ“ package-lock.json refreshed)rè   r  rº  Úpm.packagesr»  r[  rS  Úbinaryr7   rt  ru   r   )	r  rº  r»  rS  r¼  r½  rk  ÚcodeÚtails	            r   Ú_refresh_npm_lockrÂ  —  sª   € ß5Ý#Ý,á
˜EÓ
"€CÙ˜VÓ$€DØ
‚{�c—j‘jÒ(¨DªL¸D¿K¹KÒ<OÜÐGÔHÙÙ
Ñ%Ó'¨,Õ6¹À»Ó
G€CÜœC §
¡
›O¨XÐ6¼CÄ	ÃÓ<LÐRUÔV�J€DØˆq„yÜÐ(¨¨Ð/Ô0ÙÜ	Ð
+Ô,Ùr!   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r    r    ª  s   € ÷ .ñ .˜ñ .r!   c                óR  € V P                   '       d�   RV P                  3RV P                  3RV P                  3RV P                  33 UUu. uF  w  rV'       g   K  VNK  	  pppV'       d   \        RRP                  V4       24       \        V P                  R7      # \        4       pV P                  ;'       gE    VP                  4        Uu. uF)  p\        V4      P                  '       d
   VR8X  g   K'  VNK+  	  uppV P                  '       d%   V P                  '       g   \        R	4       R
V n        \        WdV P                  \        V P                  4      4      w  rxV U	u. uF  q™P                  '       g   K  V	NK  	  p
p	V'       g   \        R4       ^ # \!        R V 4       4      pV F  p	\#        W›4       K  	  V'       d!   \        RRP                  V4       R24       ^# V P                  '       dG   V P                  '       d   \        R4       V P                  '       d   \        R4       V
'       d   ^# ^ # \%        W¤4      '       d   ^# V P                  '       d   \'        4       '       d   ^# V P                  '       d   \)        4       # ^ # u uppi u upi u up	i )aô  `hermes pm update [names...] [--check] [--target T] [--skip-target T] [--uv] [--npm] [--termux]`.

Resolve each package's latest via its own latest_versions() hook,
intersect across targets, and (real mode) re-pin the lockfile + install
the changed ones. --check is dry-run: hits upstream indexes, writes
nothing. --uv / --npm also refresh uv.lock (+sync venv) / package-lock.
--termux is its own repair pass: it repins only the pool archives the
rolling termux-main pool has retired under our pins.
rC   ú--targetú--uvú--npmz@::warning::--termux repairs the termux pool pins only; ignoring r4   )rš  Úuvzq::warning::--target is a CHECK-only cross-resolution flag; ignoring it for apply (the lockfile pins every target)Nz4pm update: nothing to check (no resolvable packages)c              3  óL   "  € T F  p\        VP                  4      x € K  	  R # 5ir[   )r‡   r#   )r]   r‘  s   & r   r_   Úcmd_update.<locals>.<genexpr>Å  s   é € Ð.¡X ”�A—F‘F—�£Xùs   ‚"$z!pm update: resolution failed for z; no changes appliedz2uv deps: would run `uv lock --upgrade` + venv syncz npm deps: would run `npm update`)ÚtermuxrC   r�   rÈ  r¼  r7   r=   Ú_termux_passrš  r   r   r/  r‚  Ú	frozensetÚskip_targetr�  Úmaxr“  r³  r·  rÂ  )r&   r#   ÚgivenÚignoredrŽ   r—   rC   r}  r~  r‘  r�  r„  s   &           r   Ú
cmd_updaterÒ  ª  s!  € ð ‡{‡{€{Ø-4°d·j±jÐ,AÀJÐPT×P[ÑP[ÐC\Ø-3°T·W±WÐ,=ÀÈÏÉÐ?Rñ,Tô ^ñ ,T™K˜DÜW\÷ �4ñ ,Tˆñ ^çÜÐTÐUY×U^ÑU^Ð_fÓUgÐThÐiÔjÜ $§*¡*Ô-Ð-Ü‹{€HØ�J‰J×cÐc h§n¡nÔ&6ÓcÑ&6 ¼kÈ!»n×>U×>UÐ>UÐYZÐ^bÑYbŸ1˜1Ñ&6Ñc€EØ‡{‡{€{˜4Ÿ:Ÿ:˜:Üð  Bô  	CØˆŒä)¨%¸4¿;¹;Ì	ÐRV×RbÑRbÓHcÓdÑ€HÙ"Ó0™(�Q§i¥i�qˆq™(€GÐ0ßÜÐDÔEÙÜÑ.¡XÓ.Ó.€EÛˆÜ�qÖ ñ çÜÐ1°$·)±)¸HÓ2EÐ1FÐFZÐ[Ô\ÙØ‡z‡z€zØ�7�7ˆ7ÜÐFÔGØ�8�8ˆ8ÜÐ4Ô5ßˆqÐ" Ð"ä�7×%Ò%ÙØ‡w‡w€wÔ#×%Ò%ÙØ‡x‡x€xÜ Ó"Ð"ÙùóG^ùò dùò 1s$   ÁJÁJÃ$JÃ:JÅ)J$ÆJ$c               ó    € V ^8„  d   QhRRRR/# )r   rš  rœ   r   r   r   )r   s   "r   r    r    Û  s   € ÷ "ñ "˜4ð " Cñ "r!   c                ó˜  € \         P                  ! 4       p\        4       p\        \         P                  ! W4      4      p\         P
                  ! W\         P                  ! 4       4      pV'       g   \        RV R24       ^ # V Uu. uF  qUP                  e   K  VNK  	  pp\        R V 4       4      pV F£  pVP                  f@   \        VP                  P                  RV 2 RVP                  P                   R24       KP  \        VP                  P                  RV 2 RVP                  P                   RVP                  P                   24       K¥  	  V '       d   ^# \         P                  ! WV4      pV'       d6   \         P                  ! V4       VP                  4        \        RV R	24       V'       d   ^# ^ # u upi )
a  Repin the pool archives Termux has retired under our pins.

The bionic lock rows and the runtime-lib table have no shared version axis
to resolve (each pins what its own supplier ships), so this is a repair,
not an update: only rows whose archive is gone are touched.
ztermux pins: z rows still served by the poolc              3  ó`   "  € T F$  p\        VP                  P                  4      x € K&  	  R # 5ir[   )r‡   r}   r#   )r]   rì   s   & r   r_   Ú_termux_pass.<locals>.<genexpr>ê  s    é € Ð7±¨”�E—I‘I—N‘N×#Ð#³ùs   ‚,.r†  r€   z: the pool no longer carries itrŒ  rà   zA termux pins repinned; restage the bionic payload to pick them up)r   Ú
load_tabler   r‡   ÚpinsÚretiredÚindexr7   ÚreplacementrÏ  r}   r#   r{   ÚrepairÚ
save_tablerŒ   )	rš  ÚtablerŽ   rÌ   Ústalerì   Ú
unresolvedr„  Úapplieds	   $        r   rÌ  rÌ  Û  sp  € ô ×"Ò"Ó$€EÜ‹{€HÜ”× Ò  Ó1Ó2€EÜ×Ò ´×1BÒ1BÓ1DÓE€EßÜ�˜e˜WÐ$BÐCÔDÙÙ%*ÓH¡U˜E×.?Ñ.?—%�%¡U€JÐHÜÑ7±Ó7Ó7€EÛˆØ×ÑÒ$Ü�U—Y‘Y—^‘^ A e W 9Ð-¨R°·	±	×0AÑ0AÐ/BÐBaÐbÖcä�U—Y‘Y—^‘^ A e W 9Ð-¨R°·	±	×0AÑ0AÐ/BÀ%È×HYÑHY×HaÑHaÐGbÐcÖdñ	 ÷
 ÙÜ× Ò  °%Ó8€GßÜ×Ò˜uÔ%Ø�‰ŒÜ��W�IÐ^Ð_Ô`ßˆ1Ð! Ð!ùò Is   ÂGÂGc               ó    € V ^8„  d   QhRRRR/# )r   Úcurrentrv   r   r   )r   s   "r   r    r    û  s   € ÷ ñ ¨tð ¸ñ r!   c                ó†  € VP                   ;'       g!    \         Uu/ uF  q3VP                  bK  	  upp\        V4      p/ pVP	                  4        EF[  w  rxV P                  V4      e   K  VP                  WrP                  R. 4      4      p	\        V	\        4      '       d   T	MV	.p	V	 U
u/ uF  qªR,          V
R,          bK  	  pp
VP                  P                  V4      pVf   V P                  W‡4      pYÉ U
u. uF  qªR,          NK  	  up
8X  d   KÄ  . pV Fr  pVP                  V4      ;'       g    VP                  V4      pV'       g)   V P                  WŽ4      ;'       g    \        V4      pWöV&   VP                  RVRV/4       Kt  	  \        V4      ^8X  d
   V^ ,          MTWW&   EK^  	  V# u upi u up
i u up
i )zGRetain unresolved targets and reuse hashes for unchanged artifact URLs.r   rt   ry   )r�  r   r{   rv   rŠ   rƒ   rT   r¨  r  r�  r„   rz   r   r|  r‡   )rK   r�  rã  r  r�  r�   Úhashesr�   r{   ÚoldÚrowÚknownr‘   r”   rt   r|   s   &&&             r   r§  r§  ú  s–  € ð ×$Ñ$×RÐRÅkÓ(RÁkÀ¨H×,<Ñ,<Ò)<ÁkÑ(R€JÜ�W“€IØ€FØ%×+Ñ+×-‰ˆØ×!Ñ! &Ó)Ò5ÙØ�k‰k˜&§+¡+¨e°RÓ"8Ó9ˆÜ ¤T×*Ò*‰c°°ˆÙ69Ó:±c¨s�U•˜S �]Ò*±cˆÐ:Ø×(Ñ(×,Ñ,¨VÓ4ˆØŠ<Ø×%Ñ% gÓ6ˆDØ¨#Ó.©# 3˜—J�J©#Ñ.Ô.ÙØˆÛˆCØ—Y‘Y˜s“^×6Ð6 v§z¡z°#£ˆFßØ ×-Ñ-¨gÓ;×LÐL¼xÈ»}�Ø$�s‘Ø�M‰M˜5 # x°Ð8Ö9ñ ô *-¨V«¸Ô)9˜F 1žI¸vˆ	Ôñ% .ð& Ðùò- )Sùò ;ùò /s   �F4Â-F9Ã<F>c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r    r      s   € ÷ ñ ˜ñ r!   c                ó”   € ^ RI p^ RIHp VP                  4       pVf   \	        R4       ^ # \	        VP                  V^R7      4       ^ # )u¿   Print the latest pm sync receipt â€” the reader surface for the
CLI/TUI/desktop (same schema as update receipts; a failed venv
rebuild or a plugin bisect is as reportable as a failed update).Nr£  z2no pm sync receipt yet (no venv operation has run))r!  )r#  r6   r¤  Úlatestr7   r$  )r&   Ú_jsonr¤  Údatas   &   r   Ú
cmd_statusrî    s?   € ó åà�>‰>Ó€DØ‚|ÜÐBÔCÙÜ	ˆ%�+‰+�d 1ˆ+Ó
%Ô&Ùr!   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r    r    &  s   € ÷ ñ ˜ñ r!   c                ób   € ^ RI Hp ^ RIHp V! V! 4       RR7      '       g   ^# \	        R4       ^ # )rÞ   )Úrecover_if_neededr   Tr/   z:Restart Hermes to use the repaired dependency environment.)Úhermes_cli._early_recoveryrñ  r[  r   r7   )r&   rñ  r   s   &  r   Ú
cmd_repairró  &  s&   € Ý<Ý"á™Y›[°4×8Ó8ÙÜ	Ð
FÔGÙr!   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r    r    0  s   € ÷ ñ ˜ñ r!   c                ó   € ^ RI Hp V! V 4      # )rÞ   )Ústage_native)Úscripts.bundles.nativerö  )r&   rö  s   & r   Ú
cmd_bundlerø  0  s   € Ý3Ù˜ÓÐr!   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r    r    6  s   € ÷ cñ c�sñ cr!   c           	     óŒ	  € \         P                  \         P                  3 F  p VP                  R RR7       K  	  \        P                  ! RR7      pVP                  RRR7      pVP                  RRR	R
7      ;rEVP                  RRRRR7       VP                  RRRRR7       VP                  \        R7       VP                  RRR7      pVP                  RRR7       VP                  RR. RRR7       VP                  R R. RR!R7       VP                  R"R#R$R%7       VP                  R&R#R'R%7       VP                  R(RR)R*R+R,R-7       VP                  R.R/R7       VP                  \        R7       VP                  R0R1R7      pVP                  RRR7       VP                  \        R7       VP                  R2R3R7      pVP                  \        R7       VP                  R4R5R7      pVP                  \         R7       VP                  R6R7R7      pVP                  \"        R7       VP                  R8R9R7      pVP                  R:RR;7       VP                  R<R=R7       VP                  R>\$        R?R@7       VP                  \&        R7       VP                  RARBR7      pVP                  \(        R7       VP                  RCRDR7      pVP                  RRRERF7       VP                  RGR#RHR%7       VP                  R.RIR7       VP                  RJR. \*        RKRLRM7       VP                  RNR#ROR%7       VP                  RPR#RQR%7       VP                  RRR#RSR%7       VP                  \,        R7       VP/                  V 4      pVP0                  R8X  d1   VP2                  R*J VP4                  R*J 8w  d   VP7                  RT4       ^ RUIHpHp  V! 4       '       g5   T! \?        V f    \         P@                  RV,          4      4      # T 4      4      # VPC                  V4      #   \        \
        3 d     EK  i ; i  \D         d*   p	\G        RWT	 2\         P                  RX7        R*p	?	^# R*p	?	i\H         dJ   p	^ RYI%H&p
 T
! \O        4       T	4      ;p'       d%   \G        RWT 2\         P                  RX7        R*p	?	^# h R*p	?	ii ; i)ZÚreplaceT)ÚerrorsÚline_bufferingz	hermes pm)Úprogrg  )ÚdestÚrequiredrV   zIrelock uv.lock from pyproject.toml (or --bump a tool pin in pm/lock.json)zÙWith no arguments: re-resolve uv.lock from pyproject.toml; changes no environment and writes nothing when the lock is current. With --bump NAME VERSION: pin a pm tool's artifacts in pm/lock.json; uv.lock is untouched.)ÚhelpÚdescriptionz--bumpr#   ÚNAMEzEpin tool NAME at VERSION in pm/lock.json instead of relocking uv.lock)rÿ  Úmetavarr  r{   r+  ÚVERSIONz#the tool version (only with --bump))Únargsr  r  )ÚfuncÚinstallz<install packages (default: all required + optional defaults))r  rC   Ú*)r  z--extrar|  z;enable a declared dependency extra in the venv (repeatable))ÚactionÚdefaultr  r  z	--withoutz¨leave an optional default package (agent-browser, cua-driver) out of this and every later default install and update; `hermes pm install NAME` opts back in (repeatable)z--tools-onlyÚ
store_truezGinstall the tool closure, put it on PATH, and stop before the venv sync)r
  r  z--trust-recordedz�trust the recorded tool digest instead of re-hashing every entry. shell activation only. a deliberate install re-checks the bytesz--test-environmentrÐ   NÚEXTRASzzalso make this checkout's isolated test environment current (activation). EXTRAS is comma-separated; omitted selects [all])r  Úconstr  r  r  rÅ  zfstage for a cross target (e.g. linux-arm64-bionic on a glibc CI host); requires explicit package namesrk  z(print composed env of installed packagesÚdoctorz*check installed state against the lockfilerÜ  zFrebuild the recorded dependency environment without changing its graphÚgcz'remove store entries nothing referencesÚbundlez>stage a payload (repo+store+facts+relocatable venv) into --outz--out)r   z--refz,git ref for the repo snapshot (default HEAD)z--cachezCpersistent build cache (default: UV_CACHE_DIR or PM's shared cache))r«  r  Ústatusz3print the latest pm sync receipt (machine-readable)r¥  z/resolve latest versions and re-pin the lockfilez<packages to check/update (default: all with a latest source))r  r  z--checkzIdry-run: print what would change, write nothing (exit 1 if updates exist)zIresolve for a different target instead of this machine (e.g. win32-arm64)z--skip-targetÚTARGETzileave TARGET's pins as they are, e.g. linux-arm64-bionic while the termux pool lags upstream (repeatable))r
  r  Úchoicesr  r  rÆ  z.also refresh uv.lock + venv (uv update + sync)rÇ  z+also refresh package-lock.json (npm update)z--termuxzƒrepin the termux pool archives the pool has retired (the runtime-lib table + the bionic lock rows); --check reports without writingzG--bump NAME and VERSION go together; run with neither to relock uv.lock)Ú
is_runtimeÚrun_cli:é   NNrç   )Úfile)Ú install_state_permission_message)(r:   r²   r³   Úreconfigurer¥   rP   ÚargparseÚArgumentParserÚadd_subparsersÚ
add_parserÚadd_argumentÚset_defaultsr'   r  r%  r:  ró  rd  r   rø  rî  r   rÒ  Ú
parse_argsrg  r#   r{   r  r^  r  r  r  Úargvr  r   r7   ÚPermissionErrorr  r  r   )r"  r¬   ÚparserÚsubÚlock_parserÚpr&   r  r  r?   r  Úmessages   &           r   Úmainr)  6  s~  € ô
 —:‘:œsŸz™zÓ*ˆð	Ø×Ñ iÀÐÖEñ +ô
 ×$Ò$¨+Ô6€FØ
×
Ñ
 U°TÐ
Ó
:€Cà—n‘nØÐ`ð`ð %ó að a€Kð
 ‡N�N�8 &°&Ø_ð ô aà‡N�N�9 C°ÐAf€NÔgØ‡N�Nœ€NÔ!à�‰�yÐ'eˆÓf€AØ‡N�N�7 #€NÔ&Ø‡N�N�9 X°rÀ6ØUð ô Wà‡N�N�; x¸ÀVðið ô jð ‡N�N�>¨,Øað ô cà‡N�NÐ%¨lðZð ô [ð ‡N�NÐ'¨s¸"ÀdÐT\ðKð ô Lð ‡N�NØð4ð ô ð
 ‡N�Nœ€NÔ$à�‰�uÐ#MˆÓN€AØ‡N�N�7 #€NÔ&Ø‡N�Nœ€NÔ à�‰�xÐ&RˆÓS€AØ‡N�Nœ
€NÔ#à�‰�xÐ&nˆÓo€AØ‡N�Nœ
€NÔ#à�‰�tÐ"KˆÓL€AØ‡N�Nœ€NÔà�‰�xÐ&fˆÓg€AØ‡N�N�7 T€NÔ*Ø‡N�N�7Ð!O€NÔPØ‡N�N�9¤4Ð.s€NÔtØ‡N�Nœ
€NÔ#à�‰�xÐ&[ˆÓ\€AØ‡N�Nœ
€NÔ#Ø�‰�xÐ&WˆÓX€AØ‡N�N�7 #Ð,j€NÔkØ‡N�N�9 \Øcð ô eà‡N�N�:Ð$o€NÔpØ‡N�N�?¨8¸RÌÐ^fð:ð ô ;ð ‡N�N�6 ,Ð5e€NÔfØ‡N�N�7 <Ð6c€NÔdØ‡N�N�: lðYð ô Zð ‡N�Nœ
€NÔ#à×Ñ˜TÓ"€DØ‡x�x�6Ô˜tŸy™y¨DÐ0°d·l±lÀdÐ6JÔKØ×ÑÐcÔdß.ðÙ�|Š|Ùœ4°²¤§¡¨¥ÓGÓHÐHÀ$ÓGÓHÐHØ�y‰y˜‹Ðøôc ¤Ð(ô 	Ûð	ûôd ô Ü��S�Eˆl¤§¡Õ,ÝûÜô ÝDá6´y³{ÀCÓHÐHˆ7ÖHÜ�D˜˜	Ð"¬¯©Õ4ÝØûðúsS   ¥P$ÏP= Ï)P= Ð		P= ÐP= Ð$P:Ð9P:Ð=SÑQ,Ñ,SÑ9SÑ:=R>Ò=R>Ò>SÚ__main__r[   )MÚ__doc__Ú
__future__r   r  r#  rI  ro  r:   rÒ   Úurllib.errorr©  Úpathlibr   r6   r   rè   r   r   r   r   r	   r
   Úpm.operationsr   Ú
pm.packager   r[  r   Úpm.registryr   r   r   r-  r   r   r   Ú	pm.updater   r   r   r'   r$   r9   r<   r%   r™   r°   r¶   r¹   rÙ   rî   rû   rÿ   r	  r  r%  r:  rO  rd  rt  rÍ  r‚  r“  r–  r�   r³  r·  rÂ  rÒ  rÌ  r§  rî  ró  rø  r)  r¬  Úexitr   r!   r   Ú<module>r4     s]  ðÙ Få "ã Û Û Û Û 
Û Û Ý å ß X× XÝ &Ý #Ý ß HÑ Hß :Ñ :ß FÑ Fõõ(õVõ"2ñ, Óô 0ó ð 0õF*õUò,
õ*õ,ñ^ÐRV÷ ð õ:õ<
FõõBAõHõ0õf$ õNð*,¸$÷ ,ñ 5>³K÷õ,Nõ	õ
]õ,õ^)õõ&.õb"ñ> Óôó ðõ6õ õ÷cðL ˆzÔØ‡H‚H‰T‹VÖñ r!   