+
    …WÝj9F  ã            
      ó´  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ^ RI
HtHt ]'       d   ^ RIHt ^ RIHt ^ RIHt ^ R	IHtHt ]! 0 R/m4      tR
 t^ RIHtHt R R ltR R ltR R ltR R ltR R ltR R lt RRRRRRRRRR/R R llt!RRRRRRRRRR/R  R! llt"RRRRRR/R" R# llt#R$ R% lt$R& R' lt%R(R/R) R* llt&R+RR,R/R- R. llt'R# )0z×Resolve core plus plugin requirements in a writable build snapshot.

Shipped source and locks are inputs, never mutation targets. Candidate
failure propagates without changing plugin configuration or the live venv.
)ÚannotationsN)ÚMapping)ÚPath)ÚTYPE_CHECKINGÚOptional)ÚPythonEnvironment)Úpaths)ÚInstallError)Úread_python_declarationÚmanifest_version_errorc                óv   € V Uu. uF(  q"\         9   g   VP                  R 4      '       g   K&  VNK*  	  up# u upi )ú	.egg-info)Ú_MEMBER_EXCLUDEÚendswith)Ú	directoryÚnamesÚnames   && Ú@C:\Users\johnn\AppData\Local\hermes\hermes-agent\pm\workspace.pyÚ_member_ignoredr      s,   € Ù"Ó\™U�T¬oÔ&=ÀÇÁÈ{×A[�DˆD™UÑ\Ð\ùÒ\s   …#6­6)ÚResolutionConflictÚclassify_uv_failurec               ó   € V ^8„  d   QhRR/# )é   Úreturnzdict[Path, Path]© )Úformats   "r   Ú__annotate__r   $   s   € ÷ [ñ [Ð#3ñ [ó    c                óö   € \        V \        4      '       d   V P                  4       MR V  4       pV UUu/ uF6  w  r#\        V4      P	                  4       \        V4      P	                  4       bK8  	  upp# u uppi )zJMap installed identities to build inputs, including staged plugin updates.c              3  ó(   "  € T F  qV3x € K
  	  R # 5i©Nr   )Ú.0Úpaths   & r   Ú	<genexpr>Ú!member_sources.<locals>.<genexpr>&   s   é € ÐHnÑbmÐZ^ÐPTÍÓbmùs   ‚)Ú
isinstancer   Úitemsr   Úresolve)Úplugin_dirsÚrowsÚidentityÚsources   &   r   Úmember_sourcesr,   $   sa   € ä",¨[¼'×"BÒ"Bˆ;×ÑÔÑHnÑbmÓHn€DÙUYÔZÑUYÑAQÀŒD�‹N×"Ñ"Ó$¤d¨6£l×&:Ñ&:Ó&<Ò<ÑUYÒZÐZùÓZs   µ<A5c               ó   € V ^8„  d   QhRR/# )r   r   Ústrr   )r   s   "r   r   r   *   s   € ÷ ñ  #ñ r   c                óæ  € \         P                  ! 4       p\        \        V 4      P	                  4       4       EF&  w  r#VP                  \        V4      P                  R4      4       VP                  R4       \        V4      pVP                   F]  pVP                  VP                  P                  R4      4       VP                  VP                  4       4       VP                  R4       K_  	  VR,          P                  4       '       g   K×  \        P                  ! V4       EF4  w  rgp\        \        V4      \        \!        Wg4      4      ,
          4      VR&   \        \        V4      \        \!        Wh4      4      ,
          4       FÌ  p	\#        V4      V	,          p
VP                  V
P%                  V4      P'                  4       P                  4       4       VP                  R4       TP                  V
P)                  4       '       d%   \        P*                  ! V
4      P                  4       MV
P                  4       4       VP                  R4       KÎ  	  EK7  	  EK)  	  VP-                  4       # )zNHash the member inputs copied into a generation, independent of staging paths.úutf-8ó    úpyproject.toml:NNN)ÚhashlibÚsha256Úsortedr,   r&   Úupdater.   Úencoder
   Úfilesr   Ú
read_bytesÚis_fileÚosÚwalkÚsetr   r   Úrelative_toÚas_posixÚ
is_symlinkÚreadlinkÚ	hexdigest)r(   Úhr*   ÚentryÚdeclarationr+   r   Údirsr8   r   r"   s   &          r   Úmembers_stamprG   *   s¬  € ä�ŠÓ€AÜ!¤.°Ó"=×"CÑ"CÓ"E×F‰ˆØ	�‰”�X“×%Ñ% gÓ.Ô/Ø	�‰�ŒÜ-¨eÓ4ˆØ!×'Ô'ˆFØ�H‰H�V—[‘[×'Ñ'¨Ó0Ô1Ø�H‰H�V×&Ñ&Ó(Ô)Ø�H‰H�UŽOñ (ð Ð$Õ$×-Ñ-×/Ô/Ü*,¯'ª'°%¯.Ñ&�	 Ü ¤ T£¬S´ÀÓ1QÓ-RÕ!RÓS��Q‘Ü"¤3 u£:´´OÀIÓ4UÓ0VÕ#VÖW�DÜ 	›?¨TÕ1�DØ—H‘H˜T×-Ñ-¨eÓ4×=Ñ=Ó?×FÑFÓHÔIØ—H‘H˜U”OØ—H‘H¸4¿?¹?×;LÒ;LœRŸ[š[¨Ó.×5Ñ5Ô7ÐRV×RaÑRaÓRcÔdØ—H‘H˜U–Oô Xô +9ñ Gð" �;‰;‹=Ðr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r+   r   Údestinationr   ÚNoner   )r   s   "r   r   r   A   s!   € ÷ ,$ñ ,$˜dð ,$°ð ,$¸$ñ ,$r   c                ó  a aaa€ ^ RI o^ RIpVP                  S R,          P                  RR7      4      pVP	                  R/ 4      pVP	                  R/ 4      P	                  R/ 4      pVP	                  R/ 4      P	                  R	/ 4      P	                  R
R.4      pV Uu0 uF  qwP                  R^4      ^ ,          kK  	  pp0 Rmp	VP	                  R4      p
\        V
\        4      '       d   V	P                  V
4       M5\        V
\        4      '       d    RV
9   d   V	P                  V
R,          4       VP	                  R. 4       F-  pV	P                  V 3R lS P                  V4       4       4       K/  	  V	P                  R S P                  R4       4       4       0 RmpVR0,
          oV3R lpS P                  4        Fþ  oSP                  4       '       g   K  SP                  4       '       d   K3  SP                  V9  g   KF  SP                  P!                  R4      '       d   Ki  SP#                  4       VP#                  4       8w  g   KŽ  \$        ;QJ d     VV3R lV 4       F  '       g   K   RM	  RM! VV3R lV 4       4      '       g   KÒ  VSP                  ,          p\&        P(                  ! SWÜR7       EK   	  V	 F¸  pS V,          oSP+                  4       '       d   SP                  4       '       d   K:  SP#                  4       P-                  S P#                  4       4      '       g   \/        RRV 24      hW,          pVP0                  P3                  RRR7       \&        P4                  ! SV4       Kº  	  R# u upi )zCBuild from a writable snapshot, never from signed/read-only source.Nr2   ú	utf-8-sig©ÚencodingÚprojectÚtoolÚ
setuptoolsÚpackagesÚfindÚincludeÚ*Ú.ÚreadmeÚfilezlicense-filesc              3  óX   <"  € T F  p\        VP                  S4      4      x € K!  	  R # 5ir    )r.   r>   )r!   Úpr+   s   & €r   r#   Ú$_copy_core_inputs.<locals>.<genexpr>R   s$   øé € ÐNÑ9M°A”S˜Ÿ™ vÓ.×/Ð/Ó9Mùs   ƒ'*c              3  ó8   "  € T F  qP                   x € K  	  R # 5ir    )r   )r!   rZ   s   & r   r#   r[   S   s   é € Ð5Ñ!4˜A—–Ó!4ùs   ‚z*.pyÚvenvÚdistc                óê   <€ V Uu. uFa  q"S9   gW   VP                  R 4      '       g@   VP                  R4      '       g)   \        V 4      V,          P                  4       '       g   K_  VNKc  	  up# u upi )rV   r   )Ú
startswithr   r   r@   )r   r   r   Únested_excludeds   && €r   ÚignoreÚ!_copy_core_inputs.<locals>.ignore[   sc   ø€ Ù!&ó X¡˜°/Ô*AÀTÇ_Á_ÐUX×EYÒEYØ—=‘= ×-Ò-´$°y³/ÀDÕ2H×1TÑ1T×1V÷ �¡ñ Xð 	Xùò Xs   †!A0¨A0¿#A0Á'A0c              3  ó\   <"  € T F!  pSP                  SP                  V4      x € K#  	  R # 5ir    )Úfnmatchcaser   )r!   ÚpatternrD   Úfnmatchs   & €€r   r#   r[   b   s'   øé € Ð^ÑP]ÀW˜×+Ñ+¨E¯J©J¸×@Ð@ÓP]ùs   ƒ),TF)rb   z&build input escapes the core project: )ÚparentsÚexist_ok>   úsetup.pyú	setup.cfgr2   >   r^   r]   ÚbuildÚreleaseÚ__pycache__Únode_modulesú.gitú.venv)rg   ÚtomllibÚloadsÚ	read_textÚgetÚsplitr%   r.   ÚaddÚdictr6   ÚglobÚiterdirÚis_dirr@   r   r`   r'   ÚanyÚshutilÚcopytreer:   Úis_relative_tor	   ÚparentÚmkdirÚcopy2)r+   rI   rr   ÚmetadatarO   rQ   Úpatternsrf   Úpackage_rootsr8   rW   Úexcludedrb   Útargetr   rD   rg   ra   s   f&             @@@r   Ú_copy_core_inputsrˆ   A   sœ  û€ ãÛà�}‰}˜fÐ'7Õ7×BÑBÈKÐBÓXÓY€HØ�l‰l˜9 bÓ)€GØ—‘˜f bÓ)×-Ñ-¨l¸BÓ?€JØ�~‰~˜j¨"Ó-×1Ñ1°&¸"Ó=×AÑAÀ)ÈcÈUÓS€HÙ=EÓF¹X°'—]‘] 3¨Ó*¨1×-Ð-¹X€MÐFÚ7€EØ�[‰[˜Ó"€FÜ�&œ#×ÒØ�	‰	�&ÕÜ	�FœD×	!Ò	! f°Ô&6Ø�	‰	�&˜•.Ô!Ø—;‘;˜°Ö3ˆØ�‰ÔN¸¿¹ÀWÔ9MÓNÖNñ 4à	‡L�LÑ5 §¡¨VÔ!4Ó5Ô5ò d€Hð  & Õ)€OõXð —‘Ö!ˆØ�L‰L�NŒN 5×#3Ñ#3×#5Ô#5¸%¿*¹*ÈHÖ:TØŸ
™
×-Ñ-¨c×2Ô2°u·}±}³È+×J]ÑJ]ÓJ_Ö7_ß“CÕ^ÑP]Ó^—C—C’CÕ^ÑP]Ó^×^Ô^Ø  5§:¡:Õ-ˆFÜ�OŠO˜E 6×9Ð9ñ "ó ˆØ˜•ˆØ�}‰}�Š %×"2Ñ"2×"4Ò"4ÙØ�}‰}‹×-Ñ-¨f¯n©nÓ.>×?Ò?Ü˜vÐ)OÐPTÈvÐ'VÓWÐWØÕ#ˆØ�‰×Ñ D°4ÐÔ8Ü�Š�U˜FÖ#ó ùò7 Gs   Â !Nc               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r(   ú list[Path] | Mapping[Path, Path]Úrootr   r+   r   rJ   r   )r   s   "r   r   r   p   s+   € ÷  .ñ  .Ð%Eð  .ÈTð  .Ð^bð  .Ðgkñ  .r   c          
     óŽ  € VP                  4       pVP                  4       V8X  g&   VP                  VP                  4       4      '       d   \        RR4      hVP                  RR7       VR,          pVP	                  RR7      p\        V 4      P                  4        UUu. uFB  w  rR\        V4      '       g   K  \        W!VR7      P                  V4      P                  4       NKD  	  pppV'       d‚   ^ R	Ip^ R	IpVP                  V4      p	V	P                  R
/ 4      P                  R/ 4      p
V
P                  RR	4       V
P                  RR	4       R\!        V4      /V
R&   VP#                  V	4      pMVP%                  R4      R,           pVR,          p\'        V4      p\)        XV4       VP+                  VRR7       R	# u uppi )z>Snapshot core and plugin build inputs into a fresh generation.r]   z*workspace must not replace the core sourceT©rh   r2   rL   rM   )r*   NrP   Úuvzexclude-newerzexclude-newer-packageÚmembersÚ	workspaceÚ
r0   )r'   r   r	   r�   rt   r,   r&   Ú_is_member_candidateÚ_workspace_memberr>   r?   rr   Útomli_wrs   Ú
setdefaultÚpopr5   ÚdumpsÚrstripÚ_without_release_agerˆ   Ú
write_text)r(   r‹   r+   Úcore_pyprojectÚ	core_textr*   r�   rr   r”   ÚdocumentÚ	uv_policyÚtextr‡   s   &&$          r   Ú_generate_pyprojectr    p   sŠ  € à�^‰^Ó€FØ‡|�|ƒ~˜Ô 6×#8Ñ#8¸¿¹»×#HÒ#HÜ˜6Ð#OÓPÐPØ‡J�J�t€JÔàÐ.Õ.€NØ×(Ñ(°+Ð(Ó>€Iô (6°kÓ'B×'HÑ'HÔ'Jô0Ù'JÑ#�8Ü& v×.ô _Ô  ¸ÔA×MÑMÈdÓS×\Ñ\Ö^Ù'Jð ñ 0÷ Ûãà—=‘= Ó+ˆØ×'Ñ'¨°Ó3×>Ñ>¸tÀRÓHˆ	à�‰�o tÔ,Ø�‰Ð-¨tÔ4Ø"+¬V°G«_Ð!=ˆ	�+ÑØ�}‰}˜XÓ&‰ð ×Ñ Ó%¨Õ,ˆØÐ$Õ$€FÜ Ó%€DÜ�f˜dÔ#Ø
×Ñ�d WÐÖ-ùó-0s   Â GÂ:.Gc               ó    € V ^8„  d   QhRRRR/# )r   rŸ   r.   r   r   )r   s   "r   r   r   “   s   € ÷ 
;ñ 
;˜sð 
; sñ 
;r   c                ó0   € ^ RI pVP                  RRV 4      # )aƒ  Drop ``[tool.uv] exclude-newer`` from a generated root's pyproject text.

The lock already holds checked versions; on the user's machine the cutoff only gates the
build tools uv fetches for source builds (setuptools for Hermes itself), and a mirror that
serves no upload times rejects all of them (#135589). Text-level so the pre-3.11 bootstrap
python, which has no tomllib, can run it.
Nz(?m)^exclude-newer\s*=.*\nÚ )ÚreÚsub)rŸ   r¤   s   & r   r™   r™   “   s   € ó à�6‰6Ð/°°TÓ:Ð:r   c               ó    € V ^8„  d   QhRRRR/# )r   Ú
plugin_dirr   r   Úboolr   )r   s   "r   r   r       s   € ÷ Añ A Tð A¨dñ Ar   c                ó,   € \        V 4      P                  # r    )r
   Úinstalls_packages)r§   s   &r   r’   r’       s   € Ü" :Ó.×@Ñ@Ð@r   Úproposed_homeÚenabledÚdisabledÚ
installingÚskip_invalid_secondaryFc               ó$   € V ^8„  d   QhRRRRRR/# )r   r®   úPath | Noner¯   r¨   r   zlist[tuple[Path, str, Path]]r   )r   s   "r   r   r   ¤   s$   € ÷ ñ Ø'2ðà37ðàD`ñr   c                ó(  € ^ RI HpHp V! WW#VR7      p. pVP                  4        Fè  w  ršV
 FÝ  p\	        V4      pVP                  4       '       g   RVP                  9   d   \        RRV 24      hWœ,          pVRJ;'       d"    VP                  4       VP                  4       8H  pV'       g2   V! V4      '       g$   \        P                  ! 4       R,          V,          pV'       g   V! V4      '       g   KÊ  VP                  W›V34       Kß  	  Kê  	  V# )z´``(home plugins dir, selection key, plugin dir)`` for every selected plugin, in config order.

The key is what the home's config names, so a caller can edit that home's selection.
)Ú_is_directoryÚenabled_plugins_ordered©r«   r¬   r­   r®   r¯   z..r]   zinvalid plugin key: NÚplugins)Úpm.plugins_stater³   r´   r&   r   Úis_absoluteÚpartsr	   r'   r   Ú	repo_rootÚappend)r«   r¬   r­   r®   r¯   r³   r´   Ú	selectionÚentriesÚplugins_dirr   r   Úrelativer§   Úproposeds   $$$$$          r   Úenabled_plugin_entriesrÁ   ¤   sð   € ÷ Há'Ø#¸xØ5ô€Ið €GØ'Ÿo™oÖ/ÑˆÛˆDÜ˜D“zˆHØ×#Ñ#×%Ò%¨°·±Ô)?Ü" 6Ð-AÀ$ÀÐ+HÓIÐIØ$Õ/ˆJØ!¨Ð-×^Ð^°*×2DÑ2DÓ2FÈ*×J\ÑJ\ÓJ^Ñ2^ˆHß¡M°*×$=Ò$=Ü"Ÿ_š_Ó.°Õ:¸XÕE�
ß™=¨×4Ô4Ø—‘ °:Ð>Ö?ó ñ 0ð €Nr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r®   r±   r¯   r¨   r   ú
list[Path]r   )r   s   "r   r   r   À   s)   € ÷ Zñ ZØ$/ðZØPTðZØakñZr   c                óh   € \        WVW4R7      p\        \        P                  R V 4       4      4      # )zQResolve the effective plugin selection without filtering dependency declarations.rµ   c              3  ó*   "  € T F	  w  rq3x € K  	  R # 5ir    r   )r!   Ú_plugins_dirÚ_namer§   s   &   r   r#   Ú&enabled_plugin_dirs.<locals>.<genexpr>Å   s   é € ÐXÑPWÑ-L¨\À*œjÓPWùs   ‚)rÁ   Úlistrx   Úfromkeys)r«   r¬   r­   r®   r¯   r½   s   $$$$$ r   Úenabled_plugin_dirsrË   À   s2   € ô %°=Ð\dØ0:ôk€Gä”—‘ÑXÑPWÓXÓXÓYÐYr   c               ó   € V ^8„  d   QhRR/# )r   r   rÃ   r   )r   s   "r   r   r   È   s   € ÷ ñ Èzñ r   c                óD  € \        WVV RJ R7      p. pV F‡  p^ RIHp \        V4      pV! VP                  4      '       d   K.  \        VP                  VP                  4      pV'       d   \        RV4      hVP                  '       g   Kv  VP                  V4       K‰  	  V# )a�  Keep every selected member or refuse an incompatible selection.

A member whose requires_hermes rejects the running version sits out instead: the
verdict is only as good as our version identity (an untagged source checkout reads
as an older release), the loader skips that plugin anyway, and the member rejoins
as soon as the verdict flips. Enabling one is still refused at admission.
N)r«   r¬   r­   r¯   )Úrequires_hermes_errorr]   )
rË   Úhermes_cli.plugins_manifestrÎ   r
   Úmanifestr   r   r	   rª   r»   )	r«   r¬   r­   Úselectedr�   r"   rÎ   rE   Úreasons	   $$$      r   Úenabled_member_dirsrÓ   È   s‘   € ô #°ÐZbØ:GÈ4Ð:OôQ€Hà€GÛˆåEä-¨dÓ3ˆÙ  ×!5Ñ!5×6Ò6ÙÜ'¨×(<Ñ(<¸d¿i¹iÓHˆßÜ˜v vÓ.Ð.Ø×(×(Ò(Ø�N‰N˜4Ö ñ ð €Nr   c               ó    € V ^8„  d   QhRRRR/# )r   r*   r   r   r.   r   )r   s   "r   r   r   â   s   € ÷ ñ ˜$ð  3ñ r   c                ó@  € ^ RI p\        P                  ! \        V P	                  4       4      P                  4       4      P                  4       R,          pVP                  RRV P                  P                  4       4      P                  R4      ;'       g    RpV RV 2# )uö   ``<plugin dir name>-<sha256(path)[:16]>``: the hash keeps two same-named plugins from
different homes apart; the name is what a user sees in uv's conflict text
(``hermes-plugin-<key> depends on â€¦``) â€” a bare hash told them nothing to disable.N:Né   Nz[^a-z0-9._-]+Ú-z-.Úplugin)r¤   r3   r4   r.   r'   r7   rB   r¥   r   ÚlowerÚstrip)r*   r¤   Údigestr   s   &   r   Ú_member_keyrÜ   â   s~   € ó ä�^Š^œC × 0Ñ 0Ó 2Ó3×:Ñ:Ó<Ó=×GÑGÓIÈ#ÕN€FØ�6‰6Ð" C¨¯©×)<Ñ)<Ó)>Ó?×EÑEÀdÓK×WÐWÈx€DØˆV�1�V�HÐÐr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r§   r   r‹   r*   r   r   )r   s   "r   r   r   í   s(   € ÷ =ñ = $ð =¨dð =Àð =È$ñ =r   c               ó  € ^ RI p^ RIp\        V4      p\        V 4      pVP                  pVEe€   VR,          V,          p\
        P                  ! WR\        R7       VP                  VP                  RR7      4      p	RV	9  ;'       d4    V	P                  R/ 4      P                  R	/ 4      P                  R
4      RJp
VP                  VP                  8g  pV'       d    \        VP                  4      V	R,          R&   V	P                  R/ 4      P                  R	/ 4      P                  R/ 4      P                  4        FÔ  p\        V\        4      '       d   TMV. F²  p\        V\         4      '       d   RV9  d   K"  \#        VR,          4      pVP%                  4       '       d   KL  W,          P'                  4       pVP)                  V P'                  4       4      '       d   K‰  W.,          P'                  4       P+                  4       VR&   RpK´  	  KÖ  	  V
'       d   RV 2V	P-                  R/ 4      R&   V	P                  R4      pVe&   RV9  d   RVP                  RR4      9  d   RVR&   RpV
'       g	   V'       d.   ^ RIpVR,          P1                  VP3                  V	4      RR7       V# VP                  pVR,          V,          pVP5                  RR7       VR,          P1                  RV RVP3                  V4       R2RR7       V# )zLKeep workspace members with their generation, not a temporary install clone.Nzplugin-sourcesT©Úsymlinksrb   rL   rM   zbuild-systemrP   rŽ   ÚpackagerO   ÚdependenciesÚsourcesr"   zhermes-plugin-r   ÚversionÚdynamicz0.0.0r2   r0   zplugin-depsr�   z [project]
name = "hermes-plugin-z>"
version = "0.0.0"
requires-python = ">=3.11"
dependencies = z
[tool.uv]
package = false
r   )Újsonrr   rÜ   r
   Ú	pyprojectr}   r~   r   rs   rt   ru   Úinstall_requirementsÚrequirementsrÉ   Úvaluesr%   rx   r   r¸   r'   r   r?   r•   r”   rš   r—   r�   )r§   r‹   r*   ræ   rr   ÚkeyrE   rç   Úmemberr�   ÚvirtualÚchangedrã   Úspecr¿   ÚresolvedrO   r”   Úspecss   &&$                r   r“   r“   í   sÅ  € ãÛä
�hÓ
€CÜ)¨*Ó5€KØ×%Ñ%€IØÓØÐ(Õ(¨3Õ.ˆÜ�Š˜
°TÜ.õ	0à—=‘= ×!4Ñ!4¸kÐ!4Ó!JÓKˆð !¨Ñ0×vÐv°X·\±\À&È"Ó5M×5QÑ5QÐRVÐXZÓ5[×5_Ñ5_Ð`iÓ5jÐrvÐ5vˆØ×2Ñ2°k×6NÑ6NÑNˆßÜ26°{×7WÑ7WÓ2XˆH�YÕ Ñ/Ø—|‘| F¨BÓ/×3Ñ3°D¸"Ó=×AÑAÀ)ÈRÓP×WÑWÖYˆGÜ#-¨g´t×#<Ò#<™À7À)ÒK�Ü! $¬×-Ò-°¸tÔ1CÙÜ  V¥Ó-�Ø×'Ñ'×)Ò)ÙØ&Õ1×:Ñ:Ó<�Ø×*Ñ*¨:×+=Ñ+=Ó+?×@Ò@ÙØ (Õ 3×<Ñ<Ó>×GÑGÓI��V‘Ø’ó Lñ Z÷ Ø;IÈ#ÈÐ9OˆH×Ñ 	¨2Ó.¨vÑ6Ø—,‘,˜yÓ)ˆð Ò 9°GÔ#;À	ÐQX×Q\ÑQ\Ð]fÐhjÓQkÔ@kØ!(ˆG�IÑØˆGß—gÛàÐ&Õ&×2Ñ2°7·=±=ÀÓ3JÐU\Ð2Ô]ØˆØ×,Ñ,€EØ�MÕ! CÕ'€FØ
‡L�L˜€LÔØÐÕ×*Ñ*Ø
+¨C¨5ð 1àŸ*™* UÓ+Ð,Ð,Jð	Lð ð	 +ô ð €Mr   Úexplicitc               ó$   € V ^8„  d   QhRRRRRR/# )r   r§   r   rò   r¨   r   zOptional[str]r   )r   s   "r   r   r   -  s(   € ÷ ,ñ ,Øð,ð ð,ð ñ	,r   c          
     óÖ  € V R,          pVP                  4       '       g   R# ^ RIp^ RIHp V'       g   V! 4       '       g   R# V R,          P                  4       '       d   R.MR.p VP	                  RVR	7      p\
        P                  ! RVP                  P                  R
R4      R7      pVf   R# VP                  V.VORNRN\        V 4      RRRRRR7      pTP                  ^ 8w  dX   TP                  ;'       g    TP                  ;'       g    RP                  4       RR p
RT^ ,           RTP                   RT
 2# R#   \         d   p	RT^ ,           RT	 2u Rp	?	# Rp	?	ii ; i)zÍInstall plugin-local dependencies using PM's paired npm/Node context.

Explicit user consent permits acquisition even when on-demand installs
are disabled. Returns None on success, otherwise a diagnostic.
zpackage.jsonN)Úlazy_installs_alloweduY   lazy installs are disabled â€” run `hermes plugins install` and approve Node dependencieszpackage-lock.jsonÚciÚinstallÚnpm)rò   ÚPATHr£   )r"   z/npm is missing from the prepared PM environmentz
--no-auditz	--no-fundTr0   Úreplacei„  )ÚcwdÚcapture_outputrŸ   rN   ÚerrorsÚtimeoutznpm z failed to run: z exited z: iÔþÿÿ)r:   ÚpmÚ
pm.installrõ   Úensurer}   ÚwhichÚenvru   Úrunr.   Ú	ExceptionÚ
returncodeÚstderrÚstdoutrÚ   )r§   rò   Úpackage_jsonrÿ   rõ   Úinstall_cmdÚrunnerrø   ÚprocÚexcÚtails   &$         r   Úinstall_node_sidecarr  -  sb  € ð  Õ.€LØ×Ñ×!Ò!ÙãÝ0÷ Ñ1×3Ò3Ùjð (Ð*=Õ=×FÑF×HÒH�4‘&ÈyÈk€Kð<Ø—‘˜5¨8�Ó4ˆô �lŠl˜5 v§z¡z§~¡~°f¸bÓ'AÔBˆØŠ;ÙDØ�z‰zØÐ:�;Ð: Ð:¨kÐ:Ü�J“ØØØØØð ó 
ˆð ‡�˜!ÔØ—‘×0Ð0˜tŸ{™{×0Ð0¨b×7Ñ7Ó9¸$¸%Ð@ˆØ�k !•nÐ% X¨d¯o©oÐ->¸bÀÀÐGÐGÙøô ô <Ø�k !•nÐ%Ð%5°c°UÐ;Õ;ûð<ús%   Á'A	E Â2(E ÅE(ÅE#ÅE(Å#E(ÚfrozenÚreplayc               ó<   € V ^8„  d   QhRRRRRRRRRR	R
RRRRR	RR/	# )r   r(   rŠ   Úextrasz	list[str]r‹   r   r+   Ú	seed_lockr±   Úenvironmentr   r  r¨   r  r   rJ   r   )r   s   "r   r   r   \  sb   € ÷ #9ñ #9Ø1ð#9àð#9ð ð	#9ð
 ð#9ð ð#9ð #ð#9ð ð#9ð ð#9ð 
ñ#9r   c               óT  € VP                  4       '       g   VP                  4       '       d   \        RRV 24      hVf9   \        WVR7       Ve'   VR,          P	                  VP                  4       4       M�VR,          P                  4       '       d   VR,          P                  4       '       g   \        RRV 24      h\        P                  ! WrR\        R	7       VR,          pVP                  \        VP                  R
R7      4      RR7       RpVP                  W!VR7       R# )a  Prepare a fresh generation using explicit inputs and a prepared engine.

The caller selects the seed; uv retains its compatible versions. Repair
copies the recorded build inputs and never reads current manifests.
Resolver conflicts remain distinct from download/build failures.
r]   zworkspace must be fresh: N)r+   zuv.lockr2   zrecorded workspace is missing: Trß   rL   rM   r0   )r  r  )Úexistsr@   r	   r    Úwrite_bytesr9   r:   r}   r~   r   rš   r™   rt   Úsync)	r(   r  r‹   r+   r  r  r  r  rÐ   s	   &&$$$$$$ r   Úlock_and_syncr  \  sü   € ð" ‡{�{‡}‚}˜Ÿ™×)Ò)Ü˜6Ð%>¸t¸fÐ#EÓFÐFØ‚~Ü˜K°fÕ=ØÒ Ø�IÕ×*Ñ*¨9×+?Ñ+?Ó+AÔBøàÐ)Õ)×2Ñ2×4Ò4¸VÀiÕ=O×<XÑ<X×<ZÒ<ZÜ˜vÐ)HÈÈÐ'QÓRÐRô 	�Š˜¨t¼OÕLàÐ*Õ*ˆØ×ÑÔ0°×1CÑ1CÈ[Ð1CÓ1YÓZÐelÐÔmØˆà×Ñ�T°ÐÖ8r   >   r]   rn   ro   rp   rq   )(Ú__doc__Ú
__future__r   r3   r;   r}   Úcollections.abcr   Úpathlibr   Útypingr   r   Úpm.environmentr   rÿ   r   Ú
pm.packager	   Úpm.plugin_declarationsr
   r   Ú	frozensetr   r   r   r   r,   rG   rˆ   r    r™   r’   rÁ   rË   rÓ   rÜ   r“   r  r  r   r   r   Ú<module>r$     s  ðñõ #ã Û 	Û Ý #Ý ß *çÝ0å Ý #ß RáÒTÓU€ò]÷ Cõ[õõ.,$õ^ .õF
;õAð¨Dð ¸$ð Èð Ø59ðà:?÷ð8Z¨ð Z°tð ZÀdð ZØ26ðZØW\÷Zð¨ð °tð Àd÷ õ4õ=ð@,ð ÷,ð^#9ð ð#9ð ÷#9ñ #9r   