+
    jHàjð  ã            
      ó  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RI	t	^t
^tR R ltR R ltR R	 lt]R
8X  dJ   ]! ]P"                  ! ]! ]! ]	P$                  ^,          4      ]	P$                  ^,          4      4      4       R# R# )a  Ask the installed llama.cpp build which accelerators it sees, in a disposable process.

ggml's device type is the engine's own integrated-vs-discrete verdict (Vulkan reads it from
VkPhysicalDeviceType), and llama.cpp places layers on discrete devices whenever one exists, so the
budget can follow the same rule. Loading a GPU driver can crash or hang the caller, hence a child
with a deadline that imports only the standard library (``-I``). Run directly:
``python -I devices.py <engine dir> <backend>`` prints the device list as JSON.
)ÚannotationsN)ÚPathc               ó$   € V ^8„  d   QhRRRRRR/# )é   Ú
engine_dirr   ÚbackendÚstrÚreturnú
list[dict]© )Úformats   "ÚE/home/ubuntu/.hermes/hermes-agent/hermes_cli/local_runtime/devices.pyÚ__annotate__r      s!   € ÷ 7ñ 7˜dð 7¨Sð 7°Zñ 7ó    c                ó8  € ^ RI Hp  \        P                  ! \        P
                  R\        \        \        4      P                  4       4      \        V 4      V.\        P                  RRRR^V! 4       RR7	      pVP                  ^ 8X  d!   \        P                  ! VP                  4      M. p\%        T\&        4      '       g   . # T Uu. uF�  p\%        T\(        4      '       g   K  TP+                  R4      \,        \.        39   g   K=  \%        TP+                  R	4      \0        4      '       g   Kd  TR	,          ^ 8”  g   Kt  \%        TP+                  R
4      \        4      '       g   K›  TNKŸ  	  up#   \        \         \        P"                  3 d    . u # i ; iu upi )zXGPU/iGPU devices the ``backend`` library in ``engine_dir`` registers; [] on any failure.)Úwindows_hide_flagsz-ITúutf-8ÚreplaceF)ÚstdinÚcapture_outputÚtextÚencodingÚerrorsÚtimeoutÚcreationflagsÚcheckÚtypeÚtotalÚdescription)Úhermes_cli._subprocess_compatr   Ú
subprocessÚrunÚsysÚ
executabler   r   Ú__file__ÚresolveÚDEVNULLÚ
returncodeÚjsonÚloadsÚstdoutÚOSErrorÚ
ValueErrorÚTimeoutExpiredÚ
isinstanceÚlistÚdictÚgetÚGGML_DEVICE_GPUÚGGML_DEVICE_IGPUÚint)r   r   r   ÚoutÚdevicesÚds   &&    r   Úprobe_devicesr8      s=  € å@ðÜ�nŠnÜ�^‰^˜T¤3¤t¬H£~×'=Ñ'=Ó'?Ó#@Ä#ÀjÃ/ÐSZÐ[Ü×$Ñ$°TÀÈwØ bÑ8JÓ8LÐTYô[ˆð -0¯N©N¸aÔ,?”$—*’*˜SŸZ™ZÔ(ÀRˆô �gœt×$Ò$Øˆ	Ùó 7‘w�!¤*¨Q´×"5ŒAØ—‘�f“¤/Ô3CÐ!DÑDô ä˜1Ÿ5™5 ›>¬3×/ô à45°gµJÀ±Nô ô ˜1Ÿ5™5 Ó/´×5÷ ˆA‘wñ 7ð 7øô	 ”Z¤×!:Ñ!:Ð;ô ØŠ	ðüò7s6   ˆB%E/ Ã	FÃ&FÄ"FÄ/FÄ?"FÅ&FÅ/"FÆFc               ó$   € V ^8„  d   QhRRRRRR/# )r   Ú	directoryr   Únamer   r	   r   )r   s   "r   r   r   ,   s&   € ÷ Oñ O˜ð O Cð O¨Dñ Or   c                ó\   € T \         P                  R 8X  d   V R2,          # RV R2,          # )Úntz.dllÚlibz.so)Úosr;   )r:   r;   s   &&r   Ú_libraryr@   ,   s-   € Ø¬¯©°D¬˜4˜& ˜ÕNÐNÀÀDÀ6È¸oÕNÐNr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r:   r   r   r   r	   r
   r   )r   s   "r   r   r   0   s!   € ÷ $"ñ $"˜Tð $"¨Cð $"°Jñ $"r   c                óT  € \         P                  R 8X  d    \         P                  ! \        V 4      4      MRp \        P
                  ! \        \        V R4      4      \        P                  R7      p\        P
                  ! \        \        V R4      4      \        P                  R7      p\        P                  .VP                  n
        \        P                  VP                  n        VP                  \         P                  ! \        V RV 24      4      4      pV'       g   . Ve   VP                  4        # # R\        P                  .\        P                  3R\        P                  \        P                  .\        P                  3R\        P                  .\        P                  3R	\        P                  .\        P                   3R
\        P                  \        P"                  ! \        P                  4      \        P"                  ! \        P                  4      .R3/pVP%                  4        F!  w  pw  r‰\'        W74      p
W‰uV
n
        V
n        K#  	  . p\)        \+        VP-                  V4      ^@4      4       Fò  pVP/                  W\4      pV'       g   K  \        P                  ! 4       \        P                  ! 4       rþVP1                  V\        P2                  ! V4      \        P2                  ! V4      4       VP5                  RVP7                  V4      P9                  RRR7      RVP;                  V4      R\+        VP<                  VP<                  4      RVP<                  /4       Kô  	  TVe   VP                  4        # #   Te   TP                  4        i i ; i)r=   Nz	ggml-base)ÚmodeÚggmlzggml-Úggml_backend_reg_dev_countÚggml_backend_reg_dev_getÚggml_backend_dev_descriptionÚggml_backend_dev_typeÚggml_backend_dev_memoryr   r   r   )r   r   Úfreer   )r?   r;   Úadd_dll_directoryr   ÚctypesÚCDLLr@   ÚRTLD_GLOBALÚc_char_pÚggml_backend_loadÚargtypesÚc_void_pÚrestypeÚfsencodeÚcloseÚc_size_tÚc_intÚPOINTERÚitemsÚgetattrÚrangeÚminrE   rF   rI   ÚbyrefÚappendrG   ÚdecoderH   Úvalue)r:   r   Údll_directoryÚbaseÚcoreÚregistryÚ
signaturesr;   Ú	argumentsÚresultÚfunctionr6   ÚindexÚdevicerJ   r   s   &&              r   Ú_read_devicesrk   0   s¸  € Ü<>¿G¹GÀt¼O”B×(Ò(¬¨Y«Ô8ÐQU€Mð""Ü�{Š{œ3œx¨	°;Ó?Ó@Äv×GYÑGYÔZˆÜ�{Š{œ3œx¨	°6Ó:Ó;Ä&×BTÑBTÔUˆÜ+1¯?©?Ð*;ˆ×ÑÔ'Ü)/¯©ˆ×ÑÔ&Ø×)Ñ)¬"¯+ª+´h¸yÈEÐRYÐQZÐJ[Ó6\Ó*]Ó^ˆßØð4 Ò$Ø×ÑÕ!ð %ð1 )¬F¯O©OÐ+<¼f¿o¹oÐ*NØ&¬&¯/©/¼6¿?¹?Ð)KÌVÏ_É_Ð(]Ø*¬f¯o©oÐ->ÄÇÁÐ,PØ#¤v§¡Ð&7¼¿¹Ð%FØ%¬¯©¼&¿.º.ÌÏÉÓ:YÜ)/¯ª¼¿¹Ó)Hð)JØKOð(Qð
ˆ
ð *4×)9Ñ)9Ö);Ñ%ˆDÑ%�9Ü˜tÓ*ˆHØ2;Ð/ˆHÔ˜xÖ/ñ *<ð ˆÜœ3˜t×>Ñ>¸xÓHÈ"ÓMÖNˆEØ×2Ñ2°8ÓCˆFßÙÜ Ÿ/š/Ó+¬V¯_ª_Ó->�%Ø×(Ñ(¨´·²¸dÓ1CÄVÇ\Â\ÐRWÓEXÔYØ�N‰NØ˜t×@Ñ@ÀÓH×OÑOÐPWÐ`iÐOÓjØ˜×2Ñ2°6Ó:Øœ˜DŸJ™J¨¯©Ó4°g¸u¿{¹{ðö ñ Oð àÒ$Ø×ÑÕ!ð %øˆ=Ò$Ø×ÑÕ!ð %ús   ¸C,N Ä:I N ÎN'Ú__main__)Ú__doc__Ú
__future__r   rL   r(   r?   Úpathlibr   r    r"   r2   r3   r8   r@   rk   Ú__name__ÚprintÚdumpsÚargvr   r   r   Ú<module>rt      s{   ðñõ #ã Û Û 	Ý Û Û 
ð €ØÐ õ7õ(Oõ$"ðN ˆzÔÙ	ˆ$�*Š*‘]¡4¨¯©°­Ó#4°c·h±h¸qµkÓBÓ
CÖDñ r   