+
    jHàj»  ã                  ó¸  € R t ^ RIHt ^ RIt^ RIt^ RIHtHt ^ RIH	t	 ^ RI
HtHtHt ]R ,          t]! R4      t ! R R4      t]! 4       t ! R	 R
]	4      t]! RR7       ! R R]],          4      4       t]! RR7       ! R R4      4       t]! RR7       ! R R4      4       t]! RR7       ! R R4      4       tR R ltR R ltR R ltR!RR"/R R llltR R ltR# )#zªResult and context types shared by every resolver, plus passive command location.

`locate_command` reads only file metadata. It never opens a file, spawns, or connects.
)ÚannotationsN)Ú	dataclassÚfield)ÚEnum)ÚGenericÚLiteralÚTypeVarÚTc                  ó&   € ] tR t^tRtR R ltRtR# )Ú_Absentc               ó   € V ^8„  d   QhRR/# ©é   ÚreturnÚstr© )Úformats   "ÚB/home/ubuntu/.hermes/hermes-agent/hermes_platform/resolver/core.pyÚ__annotate__Ú_Absent.__annotate__   s   € ÷ ñ ˜#ñ ó    c                	ó   € R # )ÚABSENTr   ©Úselfs   &r   Ú__repr__Ú_Absent.__repr__   s   € Ùr   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú	__slots__r   Ú__static_attributes__r   r   r   r   r      s   † Ø€I÷ñ r   r   c                  ó*   € ] tR t^tRtRtRtRtRtRt	R# )Ú
CheckStateÚnot_checkedÚpresentÚabsentÚunavailableÚerrorr   N)
r   r   r   r    ÚNOT_CHECKEDÚPRESENTr   ÚUNAVAILABLEÚERRORr"   r   r   r   r$   r$      s   † Ø€KØ€GØ€FØ€KØ„Er   r$   T)Úfrozenc                  óX   € ] tR t^%t$ RtR]R&   RtR]R&   RtR]R	&   ]R
 R l4       t	Rt
R# )ÚObservationzHOne checked fact. Consumers branch on `state`; `detail` is never parsed.r$   ÚstateNzT | NoneÚvalueÚ r   Údetailc               ó   € V ^8„  d   QhRR/# )r   r   zObservation[T]r   )r   s   "r   r   ÚObservation.__annotate__.   s   € ÷ +ñ +˜Nñ +r   c                	ó.   € V ! \         P                  4      # ©N)r$   r*   )Úclss   &r   r%   ÚObservation.not_checked-   s   € á”:×)Ñ)Ó*Ð*r   r   )r   r   r   r    Ú__doc__Ú__annotations__r2   r4   Úclassmethodr%   r"   r   r   r   r0   r0   %   s1   ‡ áRàÓØ€Eˆ8ÓØ€FˆCÓàô+ó ô+r   r0   c                  ó6   € ] tR t^2t$ R]R&   R]R&   R]R&   RtR# )Ú	Candidater   r2   ÚsourceÚboolr&   r   N)r   r   r   r    r<   r"   r   r   r   r?   r?   2   s   ‡ àƒJØƒKØ‡Mr   r?   c                  óD   € ] tR t^9t$ Rt]tR]R&   RtR]R&   R R lt	R	t
R# )
ÚLookupContextzS`path`: ABSENT = caller did not say (ambient), None = ambient, "" = search nothing.zstr | None | _AbsentÚpathNú
str | NoneÚpathextc               ó   € V ^8„  d   QhRR/# )r   r   rE   r   )r   s   "r   r   ÚLookupContext.__annotate__@   s   € ÷ ñ  
ñ r   c                	ó^   € \        V P                  \        4      '       d   V P                  # R # r8   )Ú
isinstancerD   r   r   s   &r   Úeffective_pathÚLookupContext.effective_path@   s    € Ü�d—i‘i¤×%Ò%Ø—9‘9ÐÙr   r   )r   r   r   r    r;   r   rD   r<   rF   rK   r"   r   r   r   rC   rC   9   s$   ‡ á]à!'€DÐ
Ó'Ø€GˆZÓ÷ñ r   rC   c                  ó–   € ] tR t^Ft$ R]R&   ]! ]R7      tR]R&   ]R R l4       t	]R R	 l4       t
]R
 R l4       t]R R l4       tRtR# )Ú
ResolutionÚKindÚkind)Údefault_factoryútuple[Candidate, ...]Ú
candidatesc               ó   € V ^8„  d   QhRR/# )r   r   útuple[str, ...]r   )r   s   "r   r   ÚResolution.__annotate__L   s   € ÷ /ñ /˜ñ /r   c                	ój   € \        R  V P                   4       R4      pV'       d   VP                  3# R# )c              3  óL   "  € T F  qP                   '       g   K  Vx € K  	  R # 5ir8   ©r&   ©Ú.0Úcs   & r   Ú	<genexpr>Ú%Resolution.command.<locals>.<genexpr>M   ó   é € Ð>¡˜A·IµI—a’a£ùó   ‚$š
$Nr   )ÚnextrS   r2   ©r   Úfirsts   & r   ÚcommandÚResolution.commandK   s+   € äÑ> §¢Ó>ÀÓEˆß!&�—‘ˆ~Ð.¨BÐ.r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rV   Q   s   € ÷ 1ñ 1˜ñ 1r   c                	óh   € \        R  V P                   4       R4      pV'       d   VP                  # R# )c              3  óL   "  € T F  qP                   '       g   K  Vx € K  	  R # 5ir8   rY   rZ   s   & r   r]   Ú$Resolution.source.<locals>.<genexpr>R   r_   r`   NÚnone)ra   rS   r@   rb   s   & r   r@   ÚResolution.sourceP   s)   € äÑ> §¢Ó>ÀÓEˆß$ˆu�|‰|Ð0¨&Ð0r   c               ó   € V ^8„  d   QhRR/# )r   r   rR   r   )r   s   "r   r   rV   V   s   € ÷ >ñ >Ð.ñ >r   c                	ó‚   € \         ;QJ d    . R  V P                   4       F  NK  	  5# ! R  V P                   4       4      # )c              3  óL   "  € T F  qP                   '       g   K  Vx € K  	  R # 5ir8   rY   rZ   s   & r   r]   Ú%Resolution.present.<locals>.<genexpr>W   s   é € Ð=¡˜1·9µ9—Q’Q£ùr`   )ÚtuplerS   r   s   &r   r&   ÚResolution.presentU   s,   € çŒuÑ= §¢Ó=�uÐ=ˆuÑ= §¢Ó=Ó=Ð=r   c               ó   € V ^8„  d   QhRR/# )r   r   rA   r   )r   s   "r   r   rV   Z   s   € ÷ &ñ &�tñ &r   c                	ó    € V P                   R 8g  # )Úmissing)rP   r   s   &r   ÚfoundÚResolution.foundY   s   € à�y‰y˜IÑ%Ð%r   r   N)r   r   r   r    r<   r   rp   rS   Úpropertyrd   r@   r&   ru   r"   r   r   r   rN   rN   F   se   ‡ à
ƒJÙ(-¸eÔ(D€JÐ%ÓDàô/ó ð/ð ô1ó ð1ð ô>ó ð>ð ô&ó ô&r   rN   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Únamer   ÚctxrC   r   rE   r   )r   s   "r   r   r   ^   s!   € ÷ 9ñ 9�ð 9˜=ð 9¨Zñ 9r   c                óÐ  € VP                   R 8X  d   R# VP                  e�   \        P                  R8X  dˆ   VP                  P	                  \        P
                  4       Uu. uF  q"'       g   K  VNK  	  ppR .VO F;  p\        P                  ! W,           VP                  4       R7      pV'       g   K9  Vu # 	  R# \        P                  ! WP                  4       R7      # u upi )r3   NÚnt©rD   )	rD   rF   Úosry   ÚsplitÚpathsepÚshutilÚwhichrK   )ry   rz   ÚeÚextsÚextÚhits   &&    r   Ú_whichr‡   ^   s¨   € Ø
‡x�x�2„~ÙØ
‡{�{Ò¤2§7¡7¨d¤?àŸ;™;×,Ñ,¬R¯Z©ZÔ8Ó>Ñ8�a»A—�Ñ8ˆÐ>Ø�;˜“;ˆCÜ—,’,˜t�z°×0BÑ0BÓ0DÔEˆCß‰sØ’
ñ ñ Ü�<Š<˜×#5Ñ#5Ó#7Ô8Ð8ùò ?s   Á"	C#Á0C#c               ó    € V ^8„  d   QhRRRR/# )r   rD   r   r   rA   r   )r   s   "r   r   r   l   s   € ÷ =ñ =˜cð = dñ =r   c                óš   € \         P                  P                  V 4      ;'       d&    \         P                  ! V \         P                  4      # r8   )r~   rD   ÚisfileÚaccessÚX_OKr}   s   &r   Ú_is_executable_filer�   l   s,   € Ü�7‰7�>‰>˜$Ó×<Ð<¤B§I¢I¨d´B·G±GÓ$<Ð<r   c               ó    € V ^8„  d   QhRRRR/# )r   rD   r   r   r   )r   s   "r   r   r   p   s   € ÷ 8ñ 8�#ð 8˜#ñ 8r   c                óz   € \         P                  P                  \         P                  P                  V 4      4      # r8   )r~   rD   Ú
expandvarsÚ
expanduserr}   s   &r   Ú_expandr’   p   s&   € Ü�7‰7×ÑœbŸg™g×0Ñ0°Ó6Ó7Ð7r   Ú
known_dirsc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   ry   r   rz   zLookupContext | Noner“   rU   r   rN   r   )r   s   "r   r   r   t   s*   € ÷ /ñ /˜ð /Ð#7ð /Èð /Ðhrñ /r   c          	     ó†  € T;'       g    \        4       pV P                  4       p \        P                  V 9   g,   \        P                  '       d}   \        P                  V 9   dh   \        V 4      p\        P                  P                  V4      ;'       d    \        V4      p\        VRV4      p\        V'       d	   RV34      # RV34      # . p\        W4      pTP                  \        T;'       g    T RVRJ4      4       V Fs  p\        P                  P                  \        V4      V 4      p	\        R \        V	4       4       R4      p
TP                  \        T
;'       g    T	RV 2V
RJ4      4       Ku  	  RpV F,  pVP                   '       g   K  VP"                  R8X  d   RMR	p M	  \        V\%        V4      4      # )
zTFind `name` on PATH, then in `known_dirs`, recording every candidate in probe order.ÚexplicitÚexplicit_pathrt   ÚPATHNc              3  óL   "  € T F  p\        V4      '       g   K  Vx € K  	  R # 5ir8   )r�   )r[   Úvs   & r   r]   Ú!locate_command.<locals>.<genexpr>„   s   é € ÐUÑ!:˜AÔ>QÐRS×>T—a’aÓ!:ùr`   z
known_dir:Úpath_executableÚ
known_path)rC   Ústripr~   ÚsepÚaltsepr’   rD   Úisabsr�   r?   rN   r‡   ÚappendÚjoinra   Ú_known_dir_variantsr&   r@   rp   )ry   rz   r“   Úexpandedr&   ÚcandrS   r†   ÚdÚbaseru   rP   r\   s   &&$          r   Úlocate_commandr©   t   sg  € à
×
 Ð
 ”“€CØ�:‰:‹<€DÜ	‡v�v�„~œ"Ÿ)Ÿ)˜)¬¯	©	°TÔ(9Ü˜4“=ˆä—'‘'—-‘- Ó)×KÐKÔ.AÀ(Ó.KˆÜ˜ :¨wÓ7ˆÜ¯W˜/ÀdÀWÓMÐM¸)ÀdÀWÓMÐMà"$€JÜ
�Ó
€CØ×Ñ”i §  t¨V°SÀ°_ÓEÔFÛˆÜ�w‰w�|‰|œG A›J¨Ó-ˆÜÑUÔ!4°TÔ!:ÓUÐW[Ó\ˆØ×Ñœ) E§M M¨T°ZÀ¸sÐ3CÀUÐRVÐEVÓWÖXñ ð
 €DÛˆØ�9�9Š9Ø()¯©°FÔ(:Ñ$ÀˆDÙñ ô �dœE *Ó-Ó.Ð.r   c               ó    € V ^8„  d   QhRRRR/# )r   r¨   r   r   rU   r   )r   s   "r   r   r   �   s   € ÷ -ñ -˜cð - oñ -r   c                ó(  € \         P                  R8w  d   V 3# \         P                  P                  RR4      P	                  \         P
                  4       Uu. uF  q'       g   K  VNK  	  ppV .V Uu. uF  qV,           NK  	  upO5# u upi u upi )zfOn Windows a bare name in a known dir may carry any PATHEXT suffix; one candidate is recorded per dir.r|   ÚPATHEXTz.EXE;.CMD;.BAT)r~   ry   ÚenvironÚgetr   r€   )r¨   rƒ   r„   s   &  r   r¤   r¤   �   sx   € ä	‡w�w�$„ØˆwˆÜ—z‘z—~‘~ iÐ1AÓB×HÑHÌÏÉÔTÓZÑT�!ÓXY�AˆAÑT€DÐZØÐ,¡dÓ+¡d ˜1—H�H¡dÑ+Ñ,Ð,ùò [ùÚ+s   Á	B
Á&B
Á4B)r—   rœ   r�   Úpackage_runnerrt   r8   r   )r;   Ú
__future__r   r~   r�   Údataclassesr   r   Úenumr   Útypingr   r   r   rO   r	   r   r   r$   r0   r?   rC   rN   r‡   r�   r’   r©   r¤   r   r   r   Ú<module>r´      sø   ðñõ
 #ã 	Û ß (Ý ß ,Ñ ,àÐ\Õ]€áˆCƒL€÷ñ ñ 
‹€ô�ô ñ �$Ôô	+�'˜!•*ó 	+ó ð	+ñ �$Ô÷ð ó ðñ �$Ô÷	ð 	ó ð	ñ �$Ô÷&ð &ó ð&õ.9õ=õ8ñ/Ðac÷ /ð /÷6-r   