+
    jHàj H  ã                  ó.  a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIHt ^ RIHtHtHt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HtHtH t H!t! ]RM,          t"]RN,          t#]RO,          t$]%! 0 RPm4      t&]! RR7       ! R R4      4       t']! RR7       ! R R4      4       t(R R lt)]! RR7       ! R R4      4       t*]! RR7       ! R R4      4       t+],]]3,          t-]](]']R,          .].]-,          3,          t/R R lt0R R lt1R R lt2R R lt3R  R! lt4R" R# lt5R$ R% lt6]! RR7       ! R& R'4      4       t7R(]7! RR)R	]44      R]7! R*R+R	]5RR,7      R-]7! R.R)R
]6! ]Pp                  4      4      R/]7! R0R1R	]6! ]Pr                  4      4      R2]7! R0R)R	]6! ]Pt                  4      4      /t;R3]<R4&   R5 R6 lt=R7 R8 lt>R9 R: lt?R; R< lt@R= R> ltAR? R@ ltBRA RB ltC]! RR7       ! RC RD4      4       tDRE RF ltERG RH ltFRI RJ ltGRK RL ltHR# )QaÈ  Desktop-application resolver over an `AppDef` (parsed from an MCP manifest's `app:` block).

`locate` stats every declared location in order (fixed paths, PATH, uninstall entries, the flatpak,
snap and Applications directories) and lists directories for a `*` path segment; the first present
one wins. `inspect` reads the version source in-process.
`probe` re-reads the vendor's runtime file on every call; the bearer token in it never
leaves this module.
)ÚannotationsN)Ú	dataclass)ÚAnyÚCallableÚIteratorÚLiteral)Úurlsplit)Ú
known_dirs)ÚEffortÚ
InspectionÚProbe)Ú	CandidateÚ
CheckStateÚKindÚLookupContextÚObservationÚ
ResolutionÚlocate_commandÚ
executableÚbundleÚuninstall_registryT)Úfrozenc                  ó>   € ] tR t^*t$ RtR]R&   R]R&   RtR]R&   RtR# )	ÚAppLocationz·One place to look. `kind` is `path` or a key of `LOCATION_KINDS`. `value` is the path, or the
value of that kind's `key`. `file` is joined onto an uninstall entry's `InstallLocation`.ÚstrÚkindÚvalueÚ Úfile© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r   Ú__static_attributes__r   ó    ÚA/home/ubuntu/.hermes/hermes-agent/hermes_platform/resolver/app.pyr   r   *   s   ‡ ñað ƒIØƒJØ€Dˆ#‡Nr'   r   c                  ó´   € ] tR t^4t$ RtR]R&   R]R&   R]R&   R]R&   R	tR
]R&   RtR]R&   R	tR]R&   Rt	R]R&   Rt
R]R&   RtR]R&   RtR]R&   RtR]R&   RtR# )ÚAppDefzROne application on one OS. Paths use `%VAR%` and `~`; expansion happens at lookup.r   Úapp_idÚ	os_familyÚPresenceKindÚpresenceztuple[AppLocation, ...]Ú	locationsÚnoneÚVersionKindÚversion_kindr   Úversion_argÚLivenessKindÚliveness_kindÚliveness_pathÚpidÚliveness_pid_keyÚhttpÚliveness_url_keyÚtokenÚliveness_token_keyz/mcpÚendpoint_pathr   N)r    r!   r"   r#   r$   r%   r2   r3   r5   r6   r8   r:   r<   r=   r&   r   r'   r(   r*   r*   4   sn   ‡ á\àƒKØƒNØÓØ&Ó&Ø &€L�+Ó&Ø€K�ÓØ"(€M�<Ó(Ø€M�3ÓØ!Ð�cÓ!Ø"Ð�cÓ"Ø%Ð˜Ó%Ø€M�3×r'   r*   c               ó    € V ^8„  d   QhRRRR/# )é   Úpathr   Úreturnr   )Úformats   "r(   Ú__annotate__rC   F   s   € ÷ 8ñ 8�#ð 8˜#ñ 8r'   c                óz   € \         P                  P                  \         P                  P                  V 4      4      # ©N)Úosr@   Ú
expandvarsÚ
expanduser)r@   s   &r(   Ú_expandrI   F   s&   € Ü�7‰7×ÑœbŸg™g×0Ñ0°Ó6Ó7Ð7r'   c                  ó<   € ] tR t^Jt$ R]R&   RtR]R&   R R ltRtR# )	ÚEndpointr   Úurlr   r;   c               ó   € V ^8„  d   QhRR/# ©r?   rA   r   r   )rB   s   "r(   rC   ÚEndpoint.__annotate__O   s   € ÷ ?ñ ?˜#ñ ?r'   c                	ó$   € R V P                   : R2# )zEndpoint(url=ú, token=<redacted>))rL   ©Úselfs   &r(   Ú__repr__ÚEndpoint.__repr__O   s   € Ø˜tŸx™x™lÐ*=Ð>Ð>r'   r   N)r    r!   r"   r#   r%   r;   rT   r&   r   r'   r(   rK   rK   J   s   ‡ à	ƒHØ€Eˆ3ƒO÷?ñ ?r'   rK   c                  ó„   € ] tR t^St$ R]R&   ]R R l4       tRR R lltRR R	 lltR
 R lt	R R lt
RR/R R lltRtR# )ÚAppResolverr*   Ú
definitionc               ó   € V ^8„  d   QhRR/# rN   r   )rB   s   "r(   rC   ÚAppResolver.__annotate__X   s   € ÷ &ñ &�cñ &r'   c                	ó.   € V P                   P                  # rE   )rX   r+   rR   s   &r(   ÚnameÚAppResolver.nameW   s   € à�‰×%Ñ%Ð%r'   Nc               ó    € V ^8„  d   QhRRRR/# )r?   ÚctxúLookupContext | NonerA   r   r   )rB   s   "r(   rC   rZ   ]   s   € ÷ <ñ <Ð.ð <¸*ñ <r'   c           	     	ó>  € V P                   pVP                   UUu. uF'  p\        VP                  4      ! W#V4       F  qDNK  	  K)  	  ppp\	        R  V 4       R4      p\        T\        ;QJ d    . R V 4       F  NK  	  54      # ! R V 4       4      4      # u uppi )c              3  óR   "  € T F  w  rVP                   '       g   K  Vx € K  	  R # 5irE   )Úpresent)Ú.0ÚcÚks   &  r(   Ú	<genexpr>Ú%AppResolver.locate.<locals>.<genexpr>`   s   é € Ð<©¡ °!·)µ)Ÿ1š1«ùs   ‚'�
'Úmissingc              3  ó*   "  € T F	  w  rVx € K  	  R # 5irE   r   )rd   re   Ú_s   &  r(   rg   rh   a   s   é € Ð%:±E©D¨A¥a³Eùs   ‚)rX   r/   Ú_locatorr   Únextr   Útuple)rS   r_   ÚdÚlocÚhitÚfoundr   s   &&     r(   ÚlocateÚAppResolver.locate]   s�   € Ø�O‰OˆØ !§¢ÔW¡˜´xÀÇÁÔ7IÈ!ÐRUÖ7V°’Ñ7V‘¡ˆÑWÜÑ<©Ó<¸iÓHˆÜ˜$§¤Ñ%:±EÓ%:§Ó;Ð; Ñ%:±EÓ%:Ó :Ó;Ð;ùó Xs   œ-Bc               ó$   € V ^8„  d   QhRRRRRR/# )r?   Úresr   r_   r`   rA   r   r   )rB   s   "r(   rC   rZ   e   s'   € ÷ cñ c˜:ð cÐ,@ð cÈJñ cr'   c                	ó
  € VP                   '       g3   \        \        P                  ! 4       \        P                  ! 4       4      # \        V P	                  VP
                  ^ ,          4      \        P                  ! 4       R7      # )é    )ÚversionÚsigner)rr   r   r   Únot_checkedÚ_versionÚcommand)rS   rv   r_   s   &&&r(   ÚinspectÚAppResolver.inspecte   sQ   € Ø�y�yˆyÜœk×5Ò5Ó7¼×9PÒ9PÓ9RÓSÐSÜ $§-¡-°·±¸AµÓ"?Ì×H_ÒH_ÓHaÔbÐbr'   c               ó    € V ^8„  d   QhRRRR/# ©r?   r@   r   rA   úObservation[str]r   )rB   s   "r(   rC   rZ   j   s   € ÷ Zñ Z˜Sð ZÐ%5ñ Zr'   c                	óÈ  € V P                   P                  p VR 8X  d   \        P                  ! 4       # VR8X  d   \	        V4      # VR8X  d   \        V4      # VR8X  d    \        V P                   P                  4      #  \        \        P                  RT 2R7      #   \         d:   p\        \        P                  TP                  P                  R7      u Rp?# Rp?ii ; i)r0   ÚplistÚpe_resourcer   ©ÚdetailNzunknown version kind )rX   r2   r   r{   Ú_plist_versionÚ_pe_versionÚ_uninstall_registry_versionr3   Ú	Exceptionr   ÚERRORÚ	__class__r    ÚUNAVAILABLE)rS   r@   r   Úexcs   &&  r(   r|   ÚAppResolver._versionj   sÅ   € Ø�‰×+Ñ+ˆð
	PØ�vŒ~Ü"×.Ò.Ó0Ð0Ø�wŒÜ% dÓ+Ð+Ø�}Ô$Ü" 4Ó(Ð(ØÐ+Ô+Ü2°4·?±?×3NÑ3NÓOÐOð ,ô œ:×1Ñ1Ð<QÐRVÐQWÐ:XÔYÐYøô ô 	PÜœz×/Ñ/¸¿¹×8NÑ8NÔOÕOûð	Pús.   ˜B ´B ÁB Á%B ÂC!Â(.CÃC!ÃC!c               ó   € V ^8„  d   QhRR/# )r?   rA   zEndpoint | Noner   )rB   s   "r(   rC   rZ   {   s   € ÷ 7ñ 7˜/ñ 7r'   c                ó´  € V P                   pVP                  R8w  d   R# \        \        VP                  4      V4      pVe$   \        VP                  4      P                  RJd   R# \        VP                  VP                  4      pVP                  \        P                  Jg   VP                  '       g   R# \        VP                  VP                  4      # )z/Read and validate the current runtime endpoint.Úserver_jsonNT)rX   r5   Ú_read_server_jsonrI   r6   Ú
_pid_aliver7   r   Ú_endpoint_observationrL   r=   Ústater   ÚPRESENTrK   r;   )rS   ro   ÚsessionÚendpoints   &   r(   rš   ÚAppResolver.endpoint{   s“   € à�O‰OˆØ�?‰?˜mÔ+ÙÜ#¤G¨A¯O©OÓ$<¸aÓ@ˆØŠ?œj¨¯©Ó5×;Ñ;À4ÓGÙÜ(¨¯©°a·o±oÓFˆØ�>‰>¤×!3Ñ!3Ó3¸8¿>¿>¸>ÙÜ˜Ÿ™¨¯©Ó6Ð6r'   Ú
deadline_sg      @c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r?   rv   r   Úeffortr
   rœ   ÚfloatrA   r   r   )rB   s   "r(   rC   rZ   ˆ   s/   € ÷ Rñ R˜ð R°ð RÀEð RÐTYñ Rr'   c               	ó¦  € V P                   p\        P                  ! 4       pVP                  R 8w  d   \	        WUVR7      # \        \        VP                  4      V4      pVf@   \        \        P                  RR4      p\	        Wu\        \        P                  4      R7      # \        VP                  4      p\        VP                  VP                  4      p	V\        P                   J g/   VP"                  RJg   V	P$                  \        P&                  Jd   \	        W…V	R7      # \)        YiP"                  ;'       g    RV4      p
\	        WŠV	R7      # )r“   )ÚrunningÚ	answeringrš   Fz"runtime file missing or unreadableTr   )rX   r   r{   r5   r   r”   rI   r6   r   ÚABSENTr•   r7   r–   rL   r=   r
   ÚLOCALr   r—   r˜   Ú_mcp_initialize)rS   rv   rž   rœ   ro   Úncr™   Úabsentr¡   Úendpoint_obsr¢   s   &&$$       r(   ÚprobeÚAppResolver.probeˆ   sú   € Ø�O‰OˆÜ%×1Ò1Ó3ˆØ�?‰?˜mÔ+Ü ¸BÔ?Ð?Ü#¤G¨A¯O©OÓ$<¸aÓ@ˆØŠ?Ü ¤×!2Ñ!2°EÐ;_Ó`ˆFÜ ÄÌJ×L]ÑL]Ó@^Ô_Ð_Ü˜WŸ[™[Ó)ˆÜ,¨W¯[©[¸!¿/¹/ÓJˆØ”V—\‘\Ó! W§]¡]¸$Ó%>À,×BTÑBTÔ\f×\nÑ\nÓBnÜ ÀÔNÐNÜ# G×-?Ñ-?×-EÐ-EÀ2ÀzÓRˆ	Ü˜WÀLÔQÐQr'   r   rE   )r    r!   r"   r#   r%   Úpropertyr\   rs   r~   r|   rš   r©   r&   r   r'   r(   rW   rW   S   sD   ‡ àÓàô&ó ð&÷
<÷cõ
Zõ"7ðRÈC÷ Ró Rr'   rW   c               ó$   € V ^8„  d   QhRRRRRR/# )r?   r.   r-   r@   r   rA   Úboolr   )rB   s   "r(   rC   rC   Ÿ   s!   € ÷  ñ  �|ð  ¨3ð  °4ñ  r'   c                ó  € V R 8X  df   \         P                  P                  V4      ;'       d?    \         P                  P                  \         P                  P	                  VRR4      4      # \         P                  P                  V4      # )r   ÚContentsú
Info.plist)rF   r@   ÚisdirÚisfileÚjoin)r.   r@   s   &&r(   Ú_presentr´   Ÿ   sW   € Ø�8ÔÜ�w‰w�}‰}˜TÓ"×cÐc¤r§w¡w§~¡~´b·g±g·l±lÀ4ÈÐUaÓ6bÓ'cÐcÜ�7‰7�>‰>˜$ÓÐr'   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r?   ro   r*   Úsourcer   r@   rA   Ú_Hitr   )rB   s   "r(   rC   rC   ¥   s(   € ÷ :ñ :ˆFð :˜Cð : sð :¨tñ :r'   c                ó˜   € \         P                  P                  V4      ;'       d    \        V P                  V4      p\        W!V4      R 3# )Ú
known_path)rF   r@   Úisabsr´   r.   r   )ro   r¶   r@   rc   s   &&& r(   Ú_hitr»   ¥   s9   € Ü�g‰g�m‰m˜DÓ!×@Ð@¤h¨q¯z©z¸4Ó&@€GÜ�T 7Ó+¨\Ð9Ð9r'   c               ó    € V ^8„  d   QhRRRR/# )r?   r@   r   rA   Úlistr   )rB   s   "r(   rC   rC   ª   s   € ÷ bñ b˜ð b ñ br'   c                ó¢   € \         P                  ! R V 4       Uu. uF)  qP                  4       '       d   ^\        V4      3M^ V3NK+  	  up# u upi )z(\d+))ÚreÚsplitÚisdigitÚint)r@   Úparts   & r(   Ú_version_orderrÄ   ª   sB   € ÜHJÏÊÐQYÐ[_ÔH`ÓaÑH`ÀŸl™lŸnšnˆQ”�D“	‰N°1°d°)Ò;ÑH`ÑaÐaùÒas   š/Ac               ó(   € V ^8„  d   QhRRRRRRRR/# ©	r?   ro   r*   rp   r   r_   r`   rA   z
list[_Hit]r   )rB   s   "r(   rC   rC   ®   s/   € ÷ 
Fñ 
F�&ð 
F˜{ð 
FÐ1Eð 
FÈ*ñ 
Fr'   c                óè  € \        VP                  4      R V P                   2rC\        W4R4      R3.p\        P
                  P                  V4      '       d   RV9   g   RV9   d   V# RV9  d   \        WV4      .# RP                  R VP                  R4       4       4      p\        \        P                  ! V4      \        RR7      pV Uu. uF  p\        WV4      NK  	  up;'       g    T# u upi )	úapp:Fr¹   Ú%Ú$Ú*c              3  óN   "  € T F  p\         P                  ! V4      x € K  	  R # 5irE   )ÚglobÚescape)rd   rÃ   s   & r(   rg   Ú_path_hits.<locals>.<genexpr>¶   s   é € ÐGÑ5F¨T”t—{’{ 4×(Ð(Ó5Fùs   ‚#%T)ÚkeyÚreverse)rI   r   r+   r   rF   r@   rº   r»   r³   rÀ   ÚsortedrÍ   rÄ   )	ro   rp   r_   Útargetr¶   Ú	not_foundÚpatternÚmatchesÚmatchs	   &&&      r(   Ú
_path_hitsrØ   ®   sÉ   € Ü˜SŸY™YÓ'¨4°·±¨zÐ):ˆFÜ'¨¸Ó>ÀÐMÐN€IÜ�7‰7�=‰=˜× Ò  C¨6¤M°S¸F´]ØÐØ
�&ÔÜ�Q Ó'Ð(Ð(à�h‰hÑG°V·\±\À#Ô5FÓGÓG€GÜ”T—Y’Y˜wÓ'¬^ÀTÔJ€GÙ07Ó8± uŒD�˜EÖ"±Ñ8×EÐE¸IÐEùÒ8s   ÃC/c               ó(   € V ^8„  d   QhRRRRRRRR/# rÆ   r   )rB   s   "r(   rC   rC   »   s/   € ÷ vñ v�Vð v +ð vÐ4Hð vÈZñ vr'   c           
     óæ   € \        VP                  V4      pVP                   Uu. uF@  p\        VP                  R V P                   RVP
                   2VP                  4      R3NKB  	  up# u upi )rÈ   Ú:Úpath_executable)r   r   Ú
candidatesr   r+   r   rc   )ro   rp   r_   rv   re   s   &&&  r(   Ú_command_hitsrÞ   »   s_   € Ü
˜Ÿ™ CÓ
(€CØfi×ftÒftÓuÑftÐabŒY�q—w‘w $ q§x¡x j°°#·(±(°Ð <¸a¿i¹iÓHÐJ[Ó\ÑftÑuÐuùÒus   ¥AA.c               ó(   € V ^8„  d   QhRRRRRRRR/# rÆ   r   )rB   s   "r(   rC   rC   À   s/   € ÷ iñ i�vð i Kð iÐ6Jð iÈzñ ir'   c                óž  € \         P                  R 8w  d   . # \        VP                  4       Uu. uF’  pVP	                  R4      '       g   K  VR,          P                  R4      '       d   K<  \        V RV P                   RVP                   2\        P                  P                  VR,          VP                  4      4      NK”  	  up# u upi )Úwin32ÚInstallLocationrÈ   rÛ   )z\\z//)ÚsysÚplatformÚ_uninstall_entriesr   ÚgetÚ
startswithr»   r+   r   rF   r@   r³   r   )ro   rp   r_   Úentrys   &&& r(   Ú_uninstall_hitsré   À   s¬   € Ü
‡|�|�wÔØˆ	ô ,¨C¯I©IÔ6óiÙ6�Ø�y‰yÐ*×+ô dà49Ð:KÕ4L×4WÑ4WÐXf×4gô dŒD��d˜1Ÿ8™8˜* A c§h¡h ZÐ0´"·'±'·,±,¸uÐEVÕ?WÐY\×YaÑYaÓ2bÖcÙ6ñið iùò is   ¯C
ÁC
Á-AC
c               ó    € V ^8„  d   QhRRRR/# )r?   ÚdirszCallable[[], tuple[str, ...]]rA   Ú_Locatorr   )rB   s   "r(   rC   rC   É   s   € ÷ ñ Ð0ð °Xñ r'   c                ó   a € R  V 3R llpV# )c               ó(   € V ^8„  d   QhRRRRRRRR/# rÆ   r   )rB   s   "r(   rC   Ú_in_dirs.<locals>.__annotate__Ê   s/   € ÷ rñ r�ð r˜[ð rÐ/Cð rÈ
ñ rr'   c                óè   <€ S! 4        Uu. uF[  p\        V R V P                   RVP                   2\        P                  P                  \        V4      VP                  4      4      NK]  	  up# u upi )rÈ   rÛ   )r»   r+   r   rF   r@   r³   rI   r   )ro   rp   r_   Úrootrë   s   &&& €r(   ÚhitsÚ_in_dirs.<locals>.hitsÊ   sY   ø€ ÙjnÔjpÓqÑjpÐbf”�Q˜$˜qŸx™x˜j¨¨#¯(©(¨Ð4´b·g±g·l±lÄ7È4Ã=ÐRU×R[ÑR[Ó6\Ö]ÑjpÑqÐqùÒqs   ‹A!A/r   )rë   rò   s   f r(   Ú_in_dirsrô   É   s   ø€ ÷rð rà€Kr'   c                  óR   € ] tR t^Ït$ RtR]R&   R]R&   R]R&   R]R	&   R
tR]R&   RtR# )ÚLocationSpeca  A location kind a declaration names in a mapping. `only_on` is the one OS family it is valid
under (None: any), `key` names the mapping field holding what to find, `yields` is the presence
it finds, and `needs_file` says the mapping also carries a relative `file`.z
str | NoneÚonly_onr   rÐ   r-   Úyieldsrì   rs   Fr­   Ú
needs_filer   N)r    r!   r"   r#   r$   r%   rù   r&   r   r'   r(   rö   rö   Ï   s+   ‡ ñSð ÓØ	ƒHØÓØÓØ€J�×r'   rö   r}   r\   rá   Údisplay_name_prefix)rù   Ú
app_bundleÚdarwinÚflatpakÚlinuxr+   Úsnapzdict[str, LocationSpec]ÚLOCATION_KINDSc               ó    € V ^8„  d   QhRRRR/# )r?   r   r   rA   rì   r   )rB   s   "r(   rC   rC   å   s   € ÷ Iñ I�3ð I˜8ñ Ir'   c                óJ   € V R8X  d   \         # \        V ,          P                  # )zRA plain string location is a `path`; every other kind comes from `LOCATION_KINDS`.r@   )rØ   r   rs   )r   s   &r(   rl   rl   å   s   € à œŒ:ÐH¬^¸DÕ-A×-HÑ-HÐHr'   c               ó    € V ^8„  d   QhRRRR/# )r?   r   r   rA   r‚   r   )rB   s   "r(   rC   rC   í   s   € ÷ 7ñ 7˜3ð 7Ð#3ñ 7r'   c                ó¬  € \        \        P                  P                  V R R4      R4      ;_uu_ 4       p\        P
                  ! V4      pRRR4       XP                  R4      ;'       g    VP                  R4      pV'       g   \        \        P                  RR7      # \        \        P                  \        V4      4      #   + '       g   i     L€; i)r¯   r°   ÚrbNÚCFBundleShortVersionStringÚCFBundleVersionzno version key in Info.plistr†   )ÚopenrF   r@   r³   ÚplistlibÚloadræ   r   r   rŽ   r˜   r   )r   ÚfhÚinfor   s   &   r(   rˆ   rˆ   í   s�   € Ü	Œb�g‰g�l‰l˜6 :¨|Ó<¸d×	CÔ	CÀrÜ�}Š}˜RÓ ˆ÷ 
Dà�H‰HÐ1Ó2×QÐQ°d·h±hÐ?PÓ6Q€EßÜœ:×1Ñ1Ð:XÔYÐYÜ”z×)Ñ)¬3¨u«:Ó6Ð6÷ 
D×	Cús   ´CÃC	c               ó    € V ^8„  d   QhRRRR/# r�   r   )rB   s   "r(   rC   rC   ö   s   € ÷ añ a�cð aÐ.ñ ar'   c                ó   € \         P                  R 8w  d   \        \        P                  RR7      # ^ RIp^ RIHp VP                  P                  pVP                  VP                  VP                  4      .VP                  n        VP                  VP                  n        VP                  V R4      pV'       g   \        \        P                  RR7      # VP                  V4      pVP                  VP                  VP                  VP                   .VP"                  n        VP$                  VP"                  n        VP#                  V ^ WE4      '       g   \        \        P&                  RR7      # VP!                  4       pVP)                  4       pVP                   VP                  VP                  VP                   4      VP                  VP(                  4      .VP*                  n        VP$                  VP*                  n        VP+                  VRVP-                  V4      VP-                  V4      4      '       d   VP.                  '       g   \        \        P                  RR7      # VP1                  VP.                  ^,           VP                  VP                  4      4      P2                  P.                  pVP1                  VP.                  ^,           VP                  VP                  4      4      P2                  P.                  p	\        \        P4                  V^,	           R	VR
,           R	V	^,	           R	V	R
,           24      # )rá   zpe_resource needs Windowsr†   N©Úwintypeszno version resourcezGetFileVersionInfoW failedÚ\zno fixed file infoÚ.éÿÿ  )rã   rä   r   r   rŽ   Úctypesr  Úwindllry   ÚLPCWSTRÚPOINTERÚDWORDÚGetFileVersionInfoSizeWÚargtypesÚrestypeÚcreate_string_bufferÚc_void_pÚGetFileVersionInfoWÚBOOLrŒ   ÚUINTÚVerQueryValueWÚbyrefr   ÚcastÚcontentsr˜   )
r@   r  r  ÚverÚsizeÚbufÚptrÚlengthÚmsÚlss
   &         r(   r‰   r‰   ö   su  € Ü
‡|�|�wÔÜœ:×1Ñ1Ð:UÔVÐVÛÝà
�-‰-×
Ñ
€CØ,4×,<Ñ,<¸f¿n¹nÈXÏ^É^Ó>\Ð+]€C×ÑÔ(Ø*2¯.©.€C×ÑÔ'Ø×&Ñ& t¨TÓ2€DßÜœ:×1Ñ1Ð:OÔPÐPØ
×
%Ñ
% dÓ
+€CØ(0×(8Ñ(8¸(¿.¹.È(Ï.É.ÐZ`×ZiÑZiÐ'j€C×ÑÔ$Ø&.§m¡m€C×ÑÔ#Ø×"Ñ" 4¨¨D×6Ò6Üœ:×+Ñ+Ð4PÔQÐQØ
�/‰/Ó
€CØ�]‰]‹_€FØ#)§?¡?°H×4DÑ4DÀfÇnÁnÐU[×UdÑUdÓFeÐgm×guÑguÐv~÷  wDñ  wDó  hEð  #F€C×ÑÔØ!)§¡€C×ÑÔØ×Ñ˜c 4¨¯©°cÓ):¸F¿L¹LÈÓ<P×QÒQÐY\×Yb×YbÐYbÜœ:×1Ñ1Ð:NÔOÐOà	�‰�S—Y‘Y •] F§N¡N°8·>±>Ó$BÓ	C×	LÑ	L×	RÑ	R€BØ	�‰�S—Y‘Y •^ V§^¡^°H·N±NÓ%CÓ	D×	MÑ	M×	SÑ	S€BÜ”z×)Ñ)¨b°B­h¨Z°q¸¸f½¸ÀQÀrÈRÅxÀjÐPQÐRTÐW]ÕR]ÐQ^Ð+_Ó`Ð`r'   c               ó    € V ^8„  d   QhRRRR/# )r?   rè   r   rA   údict[str, str]r   )rB   s   "r(   rC   rC     s   € ÷ 
ñ 
˜Sð 
 ^ñ 
r'   c                ó�   € ^ RI p/ pR F'  p \        VP                  W4      ^ ,          4      W#&   K)  	  V#   \         d     K;  i ; i)zDThe uninstall entry's values that exist; any of them may be missing.N)ÚDisplayNameÚDisplayVersionrâ   )Úwinregr   ÚQueryValueExÚOSError)rè   r1  ÚvaluesÚ
value_names   &   r(   Ú_uninstall_valuesr6    sR   € ãà€FÛJˆ
ð	Ü!$ V×%8Ñ%8¸Ó%KÈAÕ%NÓ!OˆFÓñ Kð
 €Møô ô 	Úð	ús   �#6¶AÁAc               ó$   € V ^8„  d   QhRRRRRR/# )r?   rÐ   r   ÚindexrÂ   rA   r-  r   )rB   s   "r(   rC   rC      s!   € ÷ ñ ˜#ð  cð ¨nñ r'   c                óÖ   € ^ RI p VP                  WP                  W4      4      ;_uu_ 4       p\        V4      uuRRR4       #   + '       g   i     R# ; i  \         d    / u # i ; i)zdOne child entry's values; an entry can vanish between EnumKey and OpenKey, which reads as no values.N)r1  ÚOpenKeyÚEnumKeyr6  r3  )rÐ   r8  r1  rè   s   &&  r(   Ú_uninstall_entryr<     sN   € ãðØ�^‰^˜C§¡°Ó!;×<Ô<ÀÜ$ UÓ+÷ =×<×<Ó<ûäô ØŠ	ðús-   †(A ®A¹
A ÁA	ÁA ÁA ÁA(Á'A(c               ó    € V ^8„  d   QhRRRR/# )r?   rú   r   rA   zIterator[dict[str, str]]r   )rB   s   "r(   rC   rC   +  s   € ÷ ñ ¨Cð Ð4Lñ r'   c              #  óÔ  "  € ^ RI pVP                  R3VP                  R3VP                  R33pV FŠ  w  r4 VP                  W44      ;_uu_ 4       pVP	                  V4      ^ ,          p\        V4       F;  p\        WW4      pVP                  RR4      P                  V 4      '       g   K7  Vx € K=  	  RRR4       KŒ  	  R#   + '       g   i     K¡  ; i  \         d     K²  i ; i5i)z^Each uninstall entry whose `DisplayName` starts with the prefix, machine-wide before per-user.Nz3SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstallz?SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstallr/  r   )
r1  ÚHKEY_LOCAL_MACHINEÚHKEY_CURRENT_USERr:  ÚQueryInfoKeyÚranger<  ræ   rç   r3  )	rú   r1  ÚrootsÚhiverñ   rÐ   ÚcountÚir4  s	   &        r(   rå   rå   +  sÕ   é € ãð 
×	"Ñ	"Ð$ZÐ[Ø	×	"Ñ	"Ð$fÐgØ	×	!Ñ	!Ð#YÐZð€Eó
 ‰
ˆð	Ø—‘ ×+Ô+¨sØ×+Ñ+¨CÓ0°Õ3�Ü˜už�AÜ-¨cÓ5�FØ—z‘z -°Ó4×?Ñ?Ð@S×TÔTØ$œñ &÷ ,Ñ+ó ç+×+Ð+ûô ô 	Úð	üsS   ‚5C(¸CÁACÂ,CÂ4CÂ<C(ÃCÃCÃC(ÃCÃC%Ã!C(Ã$C%Ã%C(c               ó    € V ^8„  d   QhRRRR/# )r?   rú   r   rA   r‚   r   )rB   s   "r(   rC   rC   @  s   € ÷ Dñ D°Sð DÐ=Mñ Dr'   c                óP  € \         P                  R 8w  d   \        \        P                  RR7      # \        \        V 4      R4      pVf   \        \        P                  RR7      # RV9  d   \        \        P                  RR7      # \        \        P                  VR,          4      # )rá   z uninstall_registry needs Windowsr†   Nzno uninstall entryr0  zentry has no DisplayVersion)	rã   rä   r   r   rŽ   rm   rå   r£   r˜   )rú   rè   s   & r(   rŠ   rŠ   @  sƒ   € Ü
‡|�|�wÔÜœ:×1Ñ1Ð:\Ô]Ð]ÜÔ#Ð$7Ó8¸$Ó?€EØ‚}Üœ:×,Ñ,Ð5IÔJÐJØ˜uÔ$Üœ:×1Ñ1Ð:WÔXÐXÜ”z×)Ñ)¨5Ð1AÕ+BÓCÐCr'   c                  óB   € ] tR tRt$ R]R&   R]R&   R]R&   R R ltR	tR
# )Ú_SessioniN  ú
int | Noner7   r   rL   r;   c               ó   € V ^8„  d   QhRR/# rN   r   )rB   s   "r(   rC   Ú_Session.__annotate__T  s   € ÷ Oñ O˜#ñ Or'   c                	ó>   € R V P                    RV P                  : R2# )z_Session(pid=z, url=rQ   )r7   rL   rR   s   &r(   rT   Ú_Session.__repr__T  s    € Ø˜tŸx™x˜j¨¨t¯x©x©lÐ:MÐNÐNr'   r   N)r    r!   r"   r#   r%   rT   r&   r   r'   r(   rJ  rJ  N  s   ‡ à	ƒOØ	ƒHØƒJ÷Oñ Or'   rJ  c               ó$   € V ^8„  d   QhRRRRRR/# )r?   r@   r   ro   r*   rA   z_Session | Noner   )rB   s   "r(   rC   rC   X  s!   € ÷ ñ ˜Cð  Fð ¨ñ r'   c                óJ  €  \        V R R7      ;_uu_ 4       p\        P                  ! V4      pRRR4       \        X\        4      '       g   R# TP                  TP                  4      pTP                  TP                  4      pTP                  TP                  4      p\        \        T\        4      '       d   TMR\        T\        4      '       d   TMR\        T\        4      '       d   TR7      # RR7      #   + '       g   i     LÔ; i  \        \        3 d     R# i ; i)zutf-8)ÚencodingNr   )r7   rL   r;   )r  Újsonr
  r3  Ú
ValueErrorÚ
isinstanceÚdictræ   r8   r:   r<   rJ  rÂ   r   )r@   ro   r  Údatar7   rL   r;   s   &&     r(   r”   r”   X  sâ   € ðÜ�$ ×)Õ)¨RÜ—9’9˜R“=ˆD÷ *ô �dœD×!Ò!ÙØ
�(‰(�1×%Ñ%Ó
&€CØ
�(‰(�1×%Ñ%Ó
&€CØ�H‰H�Q×)Ñ)Ó*€EÜÜ˜c¤3×'Ò'‰C¨TÜ˜c¤3×'Ò'‰C¨RÜ! %¬×-Ò-ˆeôð ð 46ôð ÷ *×)ûä”ZÐ ô Úðús-   ‚D —C:®D Ã:D
	ÄD Ä
D ÄD"Ä!D"c               ó    € V ^8„  d   QhRRRR/# )r?   r7   rK  rA   úObservation[bool]r   )rB   s   "r(   rC   rC   j  s   € ÷ 1ñ 1�Jð 1Ð#4ñ 1r'   c                óP  € V e   V ^ 8:  d   \        \        P                  RR7      # \        P                  R8X  dê   ^ R Ip^ RIHp VP                  P                  pVP                  VP                  VP                  .VP                  n        VP                  VP                  n        VP                  RRV 4      pV'       g   \        \        P                  R4      # VP                  .VP                   n        VP!                  V4       \        \        P"                  R4      #  \$        P&                  ! V ^ 4       \        \        P"                  R4      #   \(         d    \        \        P                  R4      u # \*         d    \        \        P"                  R4      u # i ; i)Nzno pid in runtime filer†   rá   r  i   FT)r   r   rŽ   rã   rä   r  r  r  Úkernel32r  r  ÚOpenProcessr  ÚHANDLEr  r£   ÚCloseHandler˜   rF   ÚkillÚProcessLookupErrorÚPermissionError)r7   r  r  Úk32Úhandles   &    r(   r•   r•   j  s1  € Ø
‚{�c˜Q”hÜœ:×1Ñ1Ð:RÔSÐSÜ
‡|�|�wÔÛÝ#à�m‰m×$Ñ$ˆØ$,§N¡N°H·M±MÀ8Ç>Á>Ð#Rˆ�‰Ô Ø"*§/¡/ˆ�‰ÔØ—‘ ¨°Ó4ˆßÜœz×0Ñ0°%Ó8Ð8Ø$,§O¡OÐ#4ˆ�‰Ô Ø�‰˜ÔÜœ:×-Ñ-¨tÓ4Ð4ð5Ü
�Š��QŒô
 ”z×)Ñ)¨4Ó0Ð0øô	 ô 5Üœ:×,Ñ,¨eÓ4Ò4Üô 5Üœ:×-Ñ-¨tÓ4Ò4ð5ús   Ä&E Å%F%Å>F%ÆF%Æ$F%c               ó$   € V ^8„  d   QhRRRRRR/# )r?   Úraw_urlr   Ú
fixed_pathrA   r‚   r   )rB   s   "r(   rC   rC   ƒ  s'   € ÷ Tñ T 3ð T°Cð TÐ<Lñ Tr'   c                ó‚  € V '       g   \        \        P                  RR7      #  \        V 4      pVP                  VP
                  VP                  VP                  3w  r4rVTP                  R8w  g   T'       g	   T'       d   \        \        P                  RR7      # T\        9  d   \        \        P                  RR7      # Te   ^Tu;8:  d   R8:  g   M \        \        P                  RR7      # \        \        P                  R	T R
T T 24      #   \         d    \        \        P                  RR7      u # i ; i)zVAccept only a loopback http URL with a numeric port and no userinfo; the path is ours.zno url in runtime filer†   zmalformed endpointr9   z,endpoint must be plain http without userinfozendpoint must be loopbackr  zendpoint needs a numeric portzhttp://rÛ   )r   r   rŽ   r   ÚhostnameÚportÚusernameÚpasswordrT  ÚschemeÚ_LOOPBACK_HOSTSr˜   )re  rf  Úpartsrh  ri  rj  rk  s   &&     r(   r–   r–   ƒ  s  € çÜœ:×1Ñ1Ð:RÔSÐSðPÜ˜Ó!ˆØ-2¯^©^¸U¿Z¹ZÈÏÉÐY^×YgÑYgÐ-gÑ*ˆ˜ð ‡|�|�vÔ§¯XÜœ:×1Ñ1Ð:hÔiÐiØ”Ô&Üœ:×1Ñ1Ð:UÔVÐVØ‚|˜A Ö.¨Ö.Üœ:×1Ñ1Ð:YÔZÐZÜ”z×)Ñ)¨W°X°J¸aÀ¸vÀjÀ\Ð+RÓSÐSøô ô PÜœ:×1Ñ1Ð:NÔOÒOðPús   ¥<D Ä&D>Ä=D>c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r?   r™   rJ  rš   r   rœ   rŸ   rA   rY  r   )rB   s   "r(   rC   rC   •  s/   € ÷ "Cñ "C˜Xð "C°ð "CÀ%ð "CÐL]ñ "Cr'   c                óŠ  a
€ ^ RI p\        V4      p\        P                  ! RRR^RRRRR	R
/ RRRRR///4      P	                  4       pRRRR/pV P
                  '       d   RV P
                   2VR&   \        P                  ! 4       \        RV4      ,           o
R V
3R llpVP                  P                  VP                  ;'       g    RVP                  ;'       g    ^PV! 4       R7      p TP                  RVP                  ;'       g    RWVR7       VP                  P!                  V! 4       4       VP#                  4       P$                  p	 TP/                  4        T	R%9   d   \)        \*        P4                  R#R$T	 24      # \)        \*        P,                  RR$T	 24      #   \&         d4    \)        \*        P,                  RRTR  R!24      u TP/                  4        # \0        TP                  P2                  3 d/    \)        \*        P,                  RR"4      u TP/                  4        # i ; i  TP/                  4        i ; i)&zZOne MCP `initialize` POST under one absolute deadline covering connect, headers, and body.NÚjsonrpcz2.0ÚidÚmethodÚ
initializeÚparamsÚprotocolVersionz
2025-06-18ÚcapabilitiesÚ
clientInfor\   Úhermesry   r©   zContent-Typezapplication/jsonÚAcceptz#application/json, text/event-streamzBearer ÚAuthorizationgš™™™™™¹?c               ó   € V ^8„  d   QhRR/# )r?   rA   rŸ   r   )rB   s   "r(   rC   Ú%_mcp_initialize.<locals>.__annotate__¤  s   € ÷ ñ �uñ r'   c                 óZ   <€ S\         P                  ! 4       ,
          p V ^ 8:  d   \        hV # )rx   )ÚtimeÚ	monotonicÚTimeoutError)ÚleftÚdeadlines    €r(   Ú	remainingÚ"_mcp_initialize.<locals>.remaining¤  s&   ø€ Øœ$Ÿ.š.Ó*Õ*ˆØ�1Œ9ÜÐØˆr'   ú	127.0.0.1)ÚtimeoutÚPOSTÚ/)ÚbodyÚheadersFzno answer within Úgz szconnection refused or timed outTzhttp )éÈ   i‘  i“  )Úhttp.clientr   rS  ÚdumpsÚencoder;   r  r€  ÚmaxÚclientÚHTTPConnectionrh  ri  Úrequestr@   ÚsockÚ
settimeoutÚgetresponseÚstatusr�  r   r   r£   Úcloser3  ÚHTTPExceptionr˜   )r™   rš   rœ   r9   rn  rŠ  r‹  r„  Úconnr˜  rƒ  s   &&&       @r(   r¥   r¥   •  s  ø€ ãä�XÓ€EÜ�:Š:Ø�5˜$  8¨\ØÐ$ l°NÀBØ &¨(°I¸wÐ!GðIðó ÷ �vƒxð	 	ð
 Ð1°8Ð=bÐc€GØ‡}‡}€}Ø%,¨W¯]©]¨OÐ#<ˆ�Ñ Ü�~Š~Ó¤# c¨:Ó"6Õ6€H÷ð ð �;‰;×%Ñ% e§n¡n×&CÐ&C¸ÀUÇZÁZ×EUÐEUÐSUÑ_hÓ_jÐ%Ók€Dð	Ø�‰�V˜UŸZ™Z×.Ð.¨3°TˆÔKØ�	‰	×Ñ™Y›[Ô)Ø×!Ñ!Ó#×*Ñ*‰ð 	�
‰
ŒØ�Ô Üœ:×-Ñ-¨t°u¸V¸HÐ5EÓFÐFÜ”z×(Ñ(¨%°5¸¸Ð1AÓBÐBøô ô [Üœ:×,Ñ,¨eÐ7HÈÐTUÈÐVXÐ5YÓZÑZð 	�
‰
�ô �T—[‘[×.Ñ.Ð/ô XÜœ:×,Ñ,¨eÐ5VÓWÑWà�
‰
�ðXûð 	�
‰
�ús7   Ã,A"F" Æ"+H-ÇH0 ÇH-Ç>H-ÈH0 È,H-È-H0 È0I)r   r   )r…   r„   r   r0   )r“   r0   >   Ú	localhostú::1ú[::1]r†  )IÚ__conditional_annotations__r$   Ú
__future__r   rÍ   rS  rF   r	  r¿   rã   r  Údataclassesr   Útypingr   r   r   r   Úurllib.parser   Úhermes_platform.resolverr	   Úhermes_platform.resolver.baser
   r   r   Úhermes_platform.resolver.corer   r   r   r   r   r   r   r-   r1   r4   Ú	frozensetrm  r   r*   rI   rK   rW   rn   r·   r½   rì   r´   r»   rÄ   rØ   rÞ   ré   rô   rö   Úmac_application_dirsÚflatpak_export_dirsÚsnap_bin_dirsr   r%   rl   rˆ   r‰   r6  r<  rå   rŠ   rJ  r”   r•   r–   r¥   )rŸ  s   @r(   Ú<module>r«     sS  øðôõ #ã Û Û 	Û Û 	Û 
Û Ý !ß 3Ó 3Ý !å /ß CÑ C÷÷ ñ ð Ð-Õ.€ØÐJÕK€ØÐ,Õ-€áÒFÓG€ñ �$Ô÷ð ó ðñ �$Ô÷ ð  ó ð õ"8ñ �$Ô÷?ð ?ó ð?ñ �$Ô÷BRð BRó ðBRðN ˆY˜ˆ_Õ€Ø�V˜[¨-¸$Õ*>Ð?ÀÀdÅÐKÕL€õ õ:õ
bõ
Fõvõ
iõñ �$Ô÷	ð 	ó ð	ð ‰|˜D &¨,¸ÓFØ™, wÐ0EÀ|ÐUdÐquÔvØ‘,˜x¨°¹8ÀJ×DcÑDcÓ;dÓeØ‰|˜G X¨|¹XÀj×FdÑFdÓ=eÓfØ
‰L˜ &¨,¹À×AYÑAYÓ8ZÓ[ð+€Ð'ó õIõ7õaõ:
õõõ*Dñ �$Ô÷Oð Oó ðOõõ$1õ2T÷$"Cr'   