+
    jHàjŠ  ã                  ó  a € 0 t $ R t^ RIHt ^ RIHt ^ RIt^ RIHtH	t	 ^ RI
Ht ^ RIHtHt ^ RIHtHtHt ]R,          t]! RR	04      tR
]R&    ! R R]	4      t]! RR7       ! R R4      4       tR R ltR R ltRR/R R lltR# )a.  Whether a catalog entry can be offered on this host, from its `app` and `requires` blocks.

`availability` runs `locate`, `inspect` and the host's cached GPU fact only. It never probes, never spawns,
never connects, and holds no cache: the callers that need a TTL (the tool registry) already have one.
)Úannotations)Ú	dataclassN)ÚLiteralÚProtocol)Úfacts)ÚAppDefÚAppResolver)Ú	CandidateÚ
CheckStateÚ
ResolutionÚ	availableÚno_requirementszfrozenset[str]Ú	OFFERABLEc                  óh   € ] tR t^tRt]R R l4       t]R R l4       t]R R l4       tR R	 lt	R
t
R# )Ú_HasRequirementszbThe slice of a catalog entry `availability` reads; keeps this module free of `hermes_cli` imports.c               ó   € V ^8„  d   QhRR/# ©é   ÚreturnÚbool© )Úformats   "ÚJ/home/ubuntu/.hermes/hermes-agent/hermes_platform/resolver/availability.pyÚ__annotate__Ú_HasRequirements.__annotate__"   s   € ×'Ñ'˜dÑ'ó    c                	ó   € R # ©Nr   ©Úselfs   &r   Úrequires_appÚ_HasRequirements.requires_app!   s   € Ù$'r   c               ó   € V ^8„  d   QhRR/# ©r   r   ú
str | Noner   )r   s   "r   r   r   %   s   € ×,Ñ,˜ZÑ,r   c                	ó   € R # r   r   r   s   &r   Úmin_versionÚ_HasRequirements.min_version$   s   € Ù),r   c               ó   € V ^8„  d   QhRR/# r#   r   )r   s   "r   r   r   (   s   € ×-Ñ-˜jÑ-r   c                	ó   € R # r   r   r   s   &r   Úrequired_gpuÚ_HasRequirements.required_gpu'   s   € Ù*-r   c               ó    € V ^8„  d   QhRRRR/# )r   Ú	os_familyÚstrr   zAppDef | Noner   )r   s   "r   r   r   *   s   € ×;Ñ; Ð;¨Ñ;r   c                	ó   € R # r   r   )r   r-   s   &&r   Úapp_forÚ_HasRequirements.app_for*   s   € ¹r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úpropertyr    r&   r*   r0   Ú__static_attributes__r   r   r   r   r      s5   † ÙlàÜ'ó Ø'àÜ,ó Ø,àÜ-ó Ø-ç;Ñ;r   r   T)Úfrozenc                  óz   € ] tR t^-t$ R]R&   RtR]R&   RtR]R&   RtR]R&   ]R R	 l4       t	R
 R lt
R R ltRtR# )ÚAvailabilityÚAvailabilityStateÚstateNr$   ÚversionÚpathr&   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   ÚAvailability.__annotate__5   s   € ÷ 'ñ '˜4ñ 'r   c                	ó(   € V P                   \        9   # r   )r=   r   r   s   &r   Ú	offerableÚAvailability.offerable4   s   € à�z‰zœYÑ&Ð&r   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rA   8   s   € ÷ Tñ T˜$ñ Tr   c                	ó   € \        R 4      h)z8Availability is not a boolean; read .offerable or .state)Ú	TypeErrorr   s   &r   Ú__bool__ÚAvailability.__bool__8   s   € ÜÐRÓSÐSr   c               ó   € V ^8„  d   QhRR/# )r   r   Údictr   )r   s   "r   r   rA   ;   s   € ÷ rñ r˜ñ rr   c                	óf   € R V P                   RV P                  RV P                  RV P                  /# ©r=   r>   r?   r&   rM   r   s   &r   Úas_dictÚAvailability.as_dict;   s-   € Ø˜Ÿ™ Y°·±¸fÀdÇiÁiÐQ^Ð`d×`pÑ`pÐqÐqr   r   )r2   r3   r4   r5   Ú__annotations__r>   r?   r&   r7   rC   rH   rN   r8   r   r   r   r;   r;   -   sJ   ‡ àÓØ€GˆZÓØ€Dˆ*ÓØ"€K�Ó"àô'ó ð'õT÷rñ rr   r;   c               ó    € V ^8„  d   QhRRRR/# )r   r>   r.   r   zlist[int] | Noner   )r   s   "r   r   r   ?   s   € ÷ @ñ @˜Cð @Ð$4ñ @r   c                óž   € \         P                  ! R V 4      '       g   R# V P                  R4       Uu. uF  p\        V4      NK  	  up# u upi )z[0-9]{1,9}(?:\.[0-9]{1,9})*NÚ.)ÚreÚ	fullmatchÚsplitÚint)r>   Ú	components   & r   Ú_version_partsrY   ?   s>   € Ü�<Š<Ð6¸×@Ò@ÙØ,3¯M©M¸#Ô,>Ó?Ñ,>˜yŒC�	ŽNÑ,>Ñ?Ð?ùÒ?s   ³A
c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úfoundr.   Úminimumr   r   r   )r   s   "r   r   r   E   s!   € ÷ ñ ˜Cð ¨#ð °$ñ r   c                ó  € \        V 4      \        V4      r2Ve   Vf   R# \        \        V4      \        V4      4      pV^ .V\        V4      ,
          ,          ,          pV^ .V\        V4      ,
          ,          ,          pW#8¬  # )zJCompare dot-separated decimal components, failing closed on invalid input.F)rY   ÚmaxÚlen)r[   r\   ÚaÚbÚwidths   &&   r   Úversion_at_leastrc   E   sl   € ä˜%Ó ¤.°Ó"9€qØ‚y�A’IÙÜ”�A“œ˜A›Ó€EØˆ!ˆ�œ˜A›•Õ	Õ€AØˆ!ˆ�œ˜A›•Õ	Õ€AØ‰6€Mr   r-   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úentryr   r-   r$   r   r;   r   )r   s   "r   r   r   P   s'   € ÷ %fñ %fÐ(ð %f¸
ð %fÈlñ %fr   c               ó–  aa€ V P                   pV P                  '       g   Vf   \        R4      # T;'       g    \        P                  ! 4       pV P                  '       d   V P                  V4      MR pV P                  '       d   Vf   \        RV P                  R7      # Ve4   \        P                  ! 4       VR39  d   \        RV P                  R7      # Vf   \        R4      # \        V4      oSP                  4       oSP                  '       d   SP                  ^ ,          M0SP                  '       d   SP                  ^ ,          P                  MR pSP                  '       g   \        RWPP                  R7      # VP                  R8X  d   \        R	WPP                  R7      # R
 VV3R llpV P                  '       g&   \        R	V! SP                  ^ ,          4      VR7      # SP                   Uu. uF  qwP                  V! V4      3NK  	  ppV F@  w  ršV
f   K  \!        W P                  4      '       g   K(  \        R	W©V P                  R7      u # 	  V U	U
u. uF   w  ršV
f   K  \#        V
4      ;pf   K  W¹V
3NK"  	  pp	p
V'       d   \%        VR R7      MR VR 3w  rÙp
\        RW©V P                  R7      # u upi u up
p	i )Nr   Úunsupported_os)r&   ÚunknownÚunsupported_gpuÚmissing_app)r?   r&   Únoner   c               ó    € V ^8„  d   QhRRRR/# )r   Úcopyr	   r   r$   r   )r   s   "r   r   Ú"availability.<locals>.__annotate__f   s   € ÷ Fñ F˜ð F zñ Fr   c                ó¼   <€ SP                  \        SP                  V 34      4      P                  pVP                  \
        P                  J d   VP                  # R # r   )Úinspectr   Úkindr>   r=   r
   ÚPRESENTÚvalue)rm   ÚobsÚresÚresolvers   & €€r   Ú
version_ofÚ availability.<locals>.version_off   sF   ø€ Ø×Ñœz¨#¯(©(°T°GÓ<Ó=×EÑEˆØŸI™I¬×);Ñ);Ó;ˆs�y‰yÐEÀÐEr   )r>   r?   )r>   r?   r&   c                ó   € V ^ ,          # )é    r   )Úitems   &r   Ú<lambda>Úavailability.<locals>.<lambda>t   s   € °d¸1¶gr   )ÚkeyÚversion_too_old)r*   r    r;   r   r-   r0   r&   Ú	gpu_classr   ÚlocateÚcommandÚ
candidatesrs   r[   Úversion_kindÚpresentrc   rY   r^   )re   r-   ÚgpuÚosfÚ
definitionÚ	looked_atrw   rm   Úcopiesr?   r>   ÚpartsÚreadableÚ_ru   rv   s   &$            @@r   ÚavailabilityrŽ   P   sY  ù€ Ø
×
Ñ
€CØ××Ð #¢+ÜÐ-Ó.Ð.Ø
×
(Ð
(”u—’Ó(€CØ',×'9×'9Ð'9�—‘˜sÔ#¸t€JØ××Ð˜jÒ0ÜÐ,¸%×:KÑ:KÔLÐLð ‚œ5Ÿ?š?Ó,°S¸)Ð4DÔDÜÐ-¸5×;LÑ;LÔMÐMØÒÜÐ-Ó.Ð.Ü˜:Ó&€HØ
�/‰/Ó
€CØ"%§+§+ +�—‘˜A–ÈsÏ~Ï~È~°C·N±NÀ1Õ4E×4KÒ4KÐcg€IØ�9�9ˆ9Ü˜M°	×GXÑGXÔYÐYØ×Ñ &Ô(Ü˜K¨i×EVÑEVÔWÐW÷Fñ Fð ××ÐÜ˜K±¸C¿K¹KÈ½NÓ1KÐR[Ô\Ð\ð :=¿ºÓE¹°�z‰z™: dÓ+Ó,¹€FÐEÛ‰ˆØÔÔ#3°G×=NÑ=N×#OÔ#OÜ °WÐUZ×UfÑUfÔgÒgñ  ñ =Cô [¹F©=¨4Øô 'Ü5CÀGÓ5LÐ,L¨Eô '�˜gÓ&¹F€Hñ [çBJ”s˜8Ñ)=Õ>ÐQUÐW`ÐbfÐPgÑ€AˆWÜÐ)°7ÐSX×SdÑSdÔeÐeùò Fùó[s   Ç8K É!KÉ.KÉ?K)r   Úinstalled_not_runningrj   r   rg   ri   r   )Ú__conditional_annotations__r6   Ú
__future__r   Údataclassesr   rT   Útypingr   r   Úhermes_platform.hostr   Úhermes_platform.resolver.appr   r   Úhermes_platform.resolver.corer	   r
   r   r<   Ú	frozensetr   rP   r   r;   rY   rc   rŽ   )r�   s   @r   Ú<module>r˜      s˜   øðôõ #å !Û 	ß $å &ß <ß KÑ KàðõÐ ñ & {Ð4EÐ&FÓG€	ˆ>Ó Gô<�xô <ñ �$Ô÷rð ró ðrõ"@õð%fÀT÷ %fñ %fr   