+
    …WÝj¦  ã            
      óÒ   € R t ^ RIHt ^ RIHt ^ RIHtHt ^ RIt]P                  ! ]
4      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 lltR# )z—Read every profile's enabled plugins in config order for the shared union.

Plugin admission owns writes; discovery never edits a profile's selection.
)Úannotations)ÚPath)ÚAnyÚOptionalNc               ó   € V ^8„  d   QhRR/# )é   Úreturnr   © )Úformats   "ÚDC:\Users\johnn\AppData\Local\hermes\hermes-agent\pm\plugins_state.pyÚ__annotate__r      s   € ÷ /ñ /˜ñ /ó    c                 ó*   € ^ RI Hp  V ! 4       R,          # )é    ©Údependency_home_rootÚprofiles)Úpm.environmentsr   r   s    r   Ú_profiles_rootr      s   € å4áÓ! JÕ.Ð.r   c               ó    € V ^8„  d   QhRRRR/# )r   Úhomer   r   zOptional[dict[str, Any]]r	   )r
   s   "r   r   r      s   € ÷ 'ñ '˜dð 'Ð'?ñ 'r   c                óà  € V R,          p VP                  RR7      p^ RIp^ RIHp  TP                  T4      pTf   / # \        T\        4      '       g   \	        RT 24      hR FD  pTP                  T4      f   K  \        Yg,          \        4      '       d   K6  \	        T RT 24      h	  TP                  R	4      ;'       g    / pR F{  p	TP                  T	4      p
T
f   K  \        T
\        4      '       d=   \        ;QJ d    R T
 4       F  '       g   K   RM	  RM! R T
 4       4      '       g   Kl  \	        RT	 RT 24      h	  TP                  R
4      ;'       g    / P                  R4      pTe%   \        T\        4      '       g   \	        RT 24      hT#   \         d     R# \        \        3 d   p\	        RT 24      ThRp?ii ; i  T d   p\	        RT 24      ThRp?ii ; i)a@  The plugin/memory selection a home's config.yaml declares (None: no config yet).

The public reader for anything that must agree with what PM installs for that home.
An unreadable selection raises rather than shrinking the next dependency generation;
empty YAML is an explicit empty configuration, as in the CLI loader.
zconfig.yamlz	utf-8-sig)ÚencodingNz!could not read plugin selection: )Ú	YAMLErrorz"could not parse plugin selection: z!configuration must be a mapping: ÚpluginsÚmemoryz must be a mapping: c              3  óL   "  € T F  p\        V\        4      '       * x € K  	  R # 5i)N)Ú
isinstanceÚstr)Ú.0Únames   & r   Ú	<genexpr>Ú&read_home_selection.<locals>.<genexpr>8   s   é € Ð(UÉuÀt¬Z¸¼cÓ-B×)BÑ)BËuùs   ‚"$TFzplugins.z must be a list of names: Úproviderz memory.provider must be a name: )r   r   )ÚenabledÚdisabled)Ú	read_textÚFileNotFoundErrorÚOSErrorÚUnicodeErrorÚ
ValueErrorÚutilsÚruamel.yaml.errorr   Úfast_safe_loadr   ÚdictÚgetÚlistÚanyr   )r   Úconfig_pathÚtextÚexcr+   r   ÚconfigÚsectionr   ÚkeyÚnamesr#   s   &           r   Úread_home_selectionr9      sÛ  € ð ˜Õ&€KðUØ×$Ñ$¨kÐ$Ó:ˆó Ý+ðVØ×%Ñ% dÓ+ˆð ‚~Øˆ	Ü�fœd×#Ò#ÜÐ<¸[¸MÐJÓKÐKÛ(ˆØ�:‰:�gÓÔ*´:¸f½oÌt×3TÔ3TÜ ˜yÐ(<¸[¸MÐJÓKÐKñ )ð �j‰j˜Ó#×)Ð) r€GÛ&ˆØ—‘˜CÓ ˆØÔ¤j°¼×&=Ò&=ß%(£SÑ(UÉuÓ(U§S§S¢SÑ(UÉuÓ(U×%UÔ%UÜ˜x¨ uÐ,FÀ{ÀmÐTÓUÐUñ	 'ð
 —
‘
˜8Ó$×*Ð*¨×/Ñ/°
Ó;€HØÒ¤J¨x¼×$=Ò$=ÜÐ;¸K¸=ÐIÓJÐJØ€Møô; ô ÚÜ”\Ð"ô UÜÐ<¸[¸MÐJÓKÐQTÐTûðUûð ô VÜÐ=¸k¸]ÐKÓLÐRUÐUûðVús:   ‹F ¨G ÆGÆ+GÆ:GÆ;G
Ç
GÇG-ÇG(Ç(G-c               ó    € V ^8„  d   QhRRRR/# )r   r5   údict[str, Any]r   z	list[str]r	   )r
   s   "r   r   r   @   s   € ÷ ñ  ð °Iñ r   c                ó   € V P                  R4      p\        V\        4      '       g   . # VP                  R4      p\        V\        4      '       g   . # VP                  R. 4      p\        V\        4      '       d   \	        V4      M	\	        4       p. pV Ff  p\        V\
        4      '       g   K  V'       g   K%  WT9  g   K-  WS9  g   K5  VP                  R^4      R,          V9  g   KU  VP                  V4       Kh  	  V# )z@plugins.enabled from an already-parsed config, ORDER-PRESERVING.r   r$   r%   Ú/éÿÿÿÿ)r/   r   r.   r0   Úsetr   ÚrsplitÚappend)r5   Úplugins_cfgr$   r%   Úoutr    s   &     r   Ú_enabled_from_configrD   @   s¿   € à—*‘*˜YÓ'€KÜ�k¤4×(Ò(Øˆ	Ø�o‰o˜iÓ(€GÜ�gœt×$Ò$Øˆ	Ø�‰˜z¨2Ó.€HÜ *¨8´T× :Ò :Œs�8Œ}ÄÃ€HØ€CÛˆÜ�tœS×!Ô!§d¡d¨t®ØÖ(¨T¯[©[¸¸aÓ-@ÀÕ-DÈHÖ-TØ�J‰J�tÖñ ð €Jr   c               ó    € V ^8„  d   QhRRRR/# )r   Úpathr   r   Úboolr	   )r
   s   "r   r   r   R   s   € ÷ Qñ Q˜ð Q ñ Qr   c                ó¼   € ^ RI p VP                  V P                  4       P                  4      #   \         d     R# \         d   p\        RT  24      ThRp?ii ; i)r   NFz$could not inspect plugin directory: )ÚstatÚS_ISDIRÚst_moder'   r(   r*   )rF   rI   r4   s   &  r   Ú_is_directoryrL   R   sX   € ÛðQØ�|‰|˜DŸI™I›K×/Ñ/Ó0Ð0øÜô ÚÜô QÜÐ?À¸vÐFÓGÈSÐPûðQús    †(/ ¯A½AÁAÁAÁAc               ó   € V ^8„  d   QhRR/# )r   r   z
list[Path]r	   )r
   s   "r   r   r   ]   s   € ÷ ñ ˜*ñ r   c                 ó"  aa€ ^ RI HoHo ^ RIHp  V ! 4       .p\        4       p \        VP                  4       \        R7      pTP                  TT3R lT 4       4       T#   \         d    Tu # \         d   p\        RT 24      ThRp?ii ; i)a¤  Every home whose selection feeds the shared venv: the default home plus each LIVE profile.
Enumerates the complete union or refuses; a partial scan cannot remove members.

Live means what ``hermes profile`` lists (hermes_constants): a valid id carrying an identity
marker and no tombstone. Staging dirs (``.work.staging-*``), deleted profiles and stray
marker-less dirs must not put plugins into the shared environment.
)ÚPROFILE_ID_REÚnamed_profile_is_liver   )r7   zcould not enumerate profiles: Nc              3  óÚ   <"  € T F`  p\        V4      '       g   K  VP                  R 8w  g   K)  SP                  VP                  4      '       g   KL  S! V4      '       g   K\  Vx € Kb  	  R# 5i)ÚdefaultN)rL   r    Úmatch)r   ÚprofilerO   rP   s   & €€r   r!   Ú#dependency_homes.<locals>.<genexpr>p   sW   øé € ð [©˜WÜ! '×*ô Ø/6¯|©|¸yÑ/Hô à"×(Ñ(¨¯©×6ô á;PÐQX×;Y÷ ’«ùs   ƒA+›A+®A+ÁA+Á!
A+)Úhermes_constantsrO   rP   r   r   r   ÚsortedÚiterdirr   r'   r(   r*   Úextend)r   ÚhomesÚrootr   r4   rO   rP   s        @@r   Údependency_homesr\   ]   s‘   ù€ ÷ FÝ4á!Ó#Ð$€EÜÓ€DðKÜ˜$Ÿ,™,›.¬cÔ2ˆð
 
‡L�Lõ [©ó [ô [ð €Løô ô ØŠÜô KÜÐ9¸$¸Ð@ÓAÀsÐJûðKús#   ¤A! Á!BÁ0BÁ9BÁ:B	Â	BÚproposed_homer$   r%   Ú
installingÚskip_invalid_secondaryFc               ó$   € V ^8„  d   QhRRRRRR/# )r   r^   úPath | Noner_   rG   r   zdict[Path, list[str]]r	   )r
   s   "r   r   r   v   s$   € ÷ ñ Ø(3ðà48ðàEZñr   c           
     óH  € / p\        4       pV FÉ  p \        V4      pT;'       g    / pT e_   TP                  4       \        T 4      P                  4       8X  d3   / TCRR\        T;'       g    R4      R\        T;'       g    R4      //Cp\        T4      p
\        YxTR7      pT'       d   Yº9  d   T
P                  T4       T
'       g   K¾  Y¥TR,          &   KË  	  V#   \         d9   p	T'       d   Yv^ ,          8X  d   h \        P	                  RYy4        Rp	?	EK  Rp	?	ii ; i)uÅ  plugins_dir â†’ ordered enabled list, per home. Keyed by the
PLUGINS DIR (where the member dirs live), not the home itself.

The ACTIVE MEMORY PROVIDER joins its home's list: providers install
via ``memory.provider`` (mnemosyne's documented path), not via
plugins.enabled â€” without this, a provider's dep plugin never joins
the union. Admission refuses a conflicting candidate without changing
the active environment or disabling an existing provider.zGSkipping broken secondary profile %s during dependency verification: %sNr   r$   r%   )r^   r	   )r\   r9   r*   ÚLOGÚwarningÚresolver   r0   rD   Ú_provider_from_configrA   )r]   r$   r%   r^   r_   rC   rZ   r   r5   r4   r8   r#   s   $$$$$       r   Úenabled_plugins_orderedrg   v   s  € ð "$€CÜÓ€EÛˆð	Ü(¨Ó.ˆFð —�˜2ˆØÒ$¨¯©«¼4ÀÓ;N×;VÑ;VÓ;XÔ)XØn˜Ðn 	¨I´t¸G¿M¸MÀrÓ7JÈJÔX\Ð]e×]kÐ]kÐikÓXlÐ+mÑnˆFÜ$ VÓ,ˆÜ(¨À*ÔMˆß˜Ô-Ø�L‰L˜Ô"ß‰5Ø$)��yÕ Ó!ñ# ð$ €Jøô ô 	ß)¨T¸1µXÔ-=ØÜ�K‰KÐaÐcgÔmÞûð		ús   “CÃD!Ã),DÄD!c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   r   r   r5   r;   r^   ra   r   zOptional[str]r	   )r
   s   "r   r   r   ˜   s/   € ÷ xñ x ð x¨nð xÈ[ð xÐdqñ xr   c               óf  € VP                  R4      ;'       g    / P                  R4      pV'       d   VP                  4       '       g   R# VP                  4       p\        V R,          V,          4      '       g6   Ve4   V R,          V,          P                  4       VP                  4       8X  d   V# R# )zlThe ``memory.provider`` key of an already-parsed config, when its
plugin dir exists (no dir = not a member).r   r#   Nr   )r/   ÚstriprL   re   )r   r5   r^   r#   r    s   &&$  r   rf   rf   ˜   s–   € ð —
‘
˜8Ó$×*Ð*¨×/Ñ/°
Ó;€Hß˜8Ÿ>™>×+Ò+ÙØ�>‰>Ó€DÜ! $¨Õ"2°TÕ"9×:Ò:ØÒ+°¸	Õ1AÀDÕ1H×0QÑ0QÓ0SÐWa×WiÑWiÓWkÔ0kð ð xØswðxr   )Ú__doc__Ú
__future__r   Úpathlibr   Útypingr   r   ÚloggingÚ	getLoggerÚ__name__rc   r   r9   rD   rL   r\   rg   rf   r	   r   r   Ú<module>rr      sƒ   ðñõ
 #å ß  Û à×Ò˜Ó!€õ/õ'õTõ$Qõð2¨Tð ¸4ð È$ð Ø6:ðà;@÷ðDxÐ[_÷ xñ xr   