+
    jHàjñ   ã                  óŒ   € R t ^ RIHt ^ RIt^ RItRtRtR R ltR R ltR	 R
 lt	R R lt
R R ltR R ltR R ltRR ltR# )u)  ``hermes model`` â†’ Local models: the desktop's Local Models setup, in the terminal.

The flow drives the handlers behind the desktop's Local Models pane
(``hermes_cli/web_routers/local_models.py``) in-process, so both surfaces run one code path:
the catalog priced for this machine, quickstart (pinned engine via PM, model download, server
start, default assignment) and activate for a model already on disk. Progress renders from the
same job view the desktop polls; Ctrl+C pauses a download, and the next run resumes from the
bytes already on disk.
)ÚannotationsNgš™™™™™É?g      .@c               ó   € V ^8„  d   QhRR/# )é   ÚreturnÚbool© )Úformats   "ÚG/home/ubuntu/.hermes/hermes-agent/hermes_cli/model_setup_flows_local.pyÚ__annotate__r
      s   € ÷ ñ  ñ ó    c                 óH   €  ^ RI Hp  V ! R4      RJ #   \         d     R# i ; i)z´Whether PM pins an engine for this machine at all. CPU is pinned on every target that has
any build, so its absence means no backend can install; GPU detection waits for selection.©Úunavailable_reasonÚcpuNF)Ú!hermes_cli.local_runtime.binariesr   Ú	Exceptionr   s    r	   Úlocal_models_availabler      s,   € ðÝHá! %Ó(¨DÐ0Ð0øÜô Úðús   ‚ ’! !c               ó    € V ^8„  d   QhRRRR/# )r   ÚsecondsÚintr   Ústrr   )r   s   "r	   r
   r
      s   € ÷ ?ñ ?�cð ?˜cñ ?r   c                ó\   € \        \        V 4      ^<4      w  rV'       d
   V RVR R2# V R2# )é<   ÚmÚ02dÚs)Údivmodr   )r   ÚminutesÚsecss   &  r	   Ú_fmt_etar      s6   € Üœ3˜w›<¨Ó,�M€Gß'.ˆgˆY�a˜˜S�z Ð#Ð>°t°f¸A°JÐ>r   c               ó    € V ^8„  d   QhRRRR/# )r   Úbytes_per_secÚfloatr   r   r   )r   s   "r	   r
   r
   $   s   € ÷ iñ i˜ð i 3ñ ir   c                ób   € V R,          pVR8¼  d   VR,          R R2# V^
8¼  d   VR R2# VR R2# )é   i   z.1fz GB/sz.0fz MB/si   r   )r!   Úmbs   & r	   Ú_rater&   $   sL   € Ø	˜'Õ	"€BØ&(¨D¤jˆb�4�i˜ˆ_˜EÐ"ÐhÈ"ÐPRÌ(¸¸C¸ÀÐ6FÐhÐ[]Ð^aÐZbÐbgÐXhÐhr   c               ó    € V ^8„  d   QhRRRR/# )r   ÚviewÚdictr   r   r   )r   s   "r	   r
   r
   )   s   € ÷ ñ ˜Tð  cñ r   c           	     ó0  € R VP                  R4      ;'       g    R 2pVP                  R4      V P                  9  d   V# VP                  R4      pV'       dZ   TR VP                  R^ 4       RT P                  VP                  R4      ;'       g    ^ 4       RV P                  V4       2,          pVP                  R	4      '       d   VR \        VR	,          4       2,          pVP                  R
4      e   VR\	        VR
,          4       R2,          pV# )ú  ÚdetailÚStartingÚphaseÚtotal_bytesÚpercentz%  Ú
done_bytesz / r!   Úeta_secondsz  ~z left)ÚgetÚ_DOWNLOAD_PHASESÚ	_human_gbr&   r   )Úlmr(   ÚlineÚtotals   &&  r	   Ú_progress_liner9   )   sþ   € Ø�—‘˜Ó"×0Ð0 jÐ1Ð2€DØ‡x�x�Ó × 3Ñ 3Ô3ØˆØ�H‰H�]Ó#€EßØ�"�T—X‘X˜i¨Ó+Ð,¨C°·±¸T¿X¹XÀlÓ=S×=XÐ=XÐWXÓ0YÐ/ZÐZ]Ð^`×^jÑ^jÐkpÓ^qÐ]rÐsÕsˆØ‡x�x�× Ò Ø�"”U˜4 Õ0Ó1Ð2Ð3Õ3ˆØ‡x�x�ÓÒ*Ø�#”h˜t MÕ2Ó3Ð4°EÐ:Õ:ˆØ€Kr   c               ó    € V ^8„  d   QhRRRR/# )r   Újob_idr   r   r   )r   s   "r	   r
   r
   7   s   € ÷ &ñ &˜Cð & Cñ &r   c                óŽ  € R^ r2  V P                   ;_uu_ 4        V P                  V P                  V,          4      pRRR4       XR,          R8w  d   MŒVR,          V8w  d   Ve   \        4        VR,          ^ r2\	        W4      p\        RV R\        ^ V\        V4      ,
          4      ,           2RRR	7       \        V4      p\        P                  ! \        4       KÛ  Ve   \        4        VR,          R8X  d1   \        RVP                  R4      ;'       g    R 24       VR,          # VR,          R8X  d   \        RVP                  R4       24       VR,          #   + '       g   i     EL,; i  \         EdE    \        4        T P                  P                  T/ 4      pT P                   ;_uu_ 4        T P                  T P                  T,          4      R
,          pRRR4       M  + '       g   i     M; iX'       d   TP                  R4      f   \        R4        R# TR,          P                  4        \        P                  ! 4       \        ,           p\        P                  ! 4       T8  d<   T P                  T,          R,          R8X  d   \        P                  ! \        4       KU  \        R4        R# i ; i)z£Render a job until it settles; returns its terminal status. Ctrl+C pauses a pausable
phase (the downloader keeps finished bytes) and stops following anything else.NTÚstatusÚrunningr.   ÚÚ Ú )ÚendÚflushÚ	can_pauseÚpausezB  Stopped following. Setup continues only while this process runs.ÚinterrupteduW     Paused. Run `hermes model` â†’ Local models again to resume; finished bytes are kept.ÚpausedÚerrorõ     âœ— zSetup failedÚdoneu     âœ“ r,   )Ú
_JOBS_LOCKÚ	_job_viewÚ_JOBSÚprintr9   ÚmaxÚlenÚtimeÚsleepÚ_POLL_SÚKeyboardInterruptÚ_RUNNINGr3   ÚsetÚ	monotonicÚ_PAUSE_WAIT_S)	r6   r;   Úshown_phaseÚwidthr(   r7   r>   ÚpausableÚdeadlines	   &&       r	   Ú_follow_jobr]   7   s  € ð ˜q�ðØØ——“Ø—|‘| B§H¡H¨VÕ$4Ó5�÷ à�H�~ Ô*ØØ�G�} Ô+ØÒ*Ü”GØ%)¨'¥]°A˜UÜ! "Ó+ˆDÜ�B�t�f˜S¤3 q¨%´#°d³)Õ*;Ó#<Õ<Ð=Ð>ÀBÈdÕSÜ˜“IˆEÜ�JŠJ”wÖð ÒÜŒØˆH…~˜Ô Ü��t—x‘x Ó(×:Ð:¨NÐ;Ð<Ô=ð ��>Ðð 
ˆh�˜6Ô	!Ü��t—x‘x Ó)Ð*Ð+Ô,Ø��>Ð÷A —�ûô õ ÜŒØ—+‘+—/‘/ &¨"Ó-ˆØ�]�]‹]Ø—|‘| B§H¡H¨VÕ$4Ó5°kÕBˆH÷ �]�]ˆ]úç˜7Ÿ;™; wÓ/Ò7ÜÐVÔWÚ Ø�Õ×ÑÔÜ—>’>Ó#¤mÕ3ˆÜ�nŠnÓ Ô)¨b¯h©h°vÕ.>¸xÕ.HÈIÔ.UÜ�JŠJ”wÖÜÐgÔhÚðúsT   …E4 š#E ½E4 ÁBE4 Å E1	Å+	E4 Å4AKÆ:*G-Ç$	KÇ-G=Ç8KÈKÈ)BKËKc               ó   € V ^8„  d   QhRR/# )r   r   ú
str | Noner   )r   s   "r	   r
   r
   `   s   € ÷  ñ  ˜ñ  r   c                óþ   € ^ RI Hp  V! 4       p\        P                  ! V4      '       d   \        P                  ! V4      pTP                  R4      #   T d$   p\        RTP                   24        Rp?R# Rp?ii ; i)zORun a route handler that starts a job; its HTTP refusal becomes a printed line.)ÚHTTPExceptionrI   Nr;   )Úfastapira   ÚasyncioÚiscoroutineÚrunrN   r,   r3   )r6   Ústartra   ÚresultÚexcs   &&   r	   Ú_startri   `   si   € å%ðÙ“ˆÜ×Ò˜v×&Ò&Ü—[’[ Ó(ˆFð �:‰:�hÓÐøð ô Ü��s—z‘z�lÐ#Ô$Ýûðús   ˆ"A «A ÁA<ÁA7Á7A<c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úrowr)   Ú	active_idr_   r   r   r   )r   s   "r	   r
   r
   n   s!   € ÷ ñ �Dð  Zð °Cñ r   c                óN  € V P                  R 4      '       d   RMR V R,           RV R,           2pY P                  R4      '       d   RMR,          pVR	V P                  R
R4       2,          pV'       d0   WP                  R4      V P                  R4      39   d
   VR,          pV# )Úrecommendedu   â˜… r+   Údisplay_nameú (Ú
size_labelÚ
downloadedz, downloaded)Ú)õ    â€” Úfit_summaryrA   Údownloaded_model_idÚmodel_idõ     â†� currently active©r3   )rk   rl   Úlabels   && r	   Ú
_row_labelr{   n   sš   € ØŸ™ ×/Ò/‰v°TÐ:¸3¸~Õ;NÐ:OÈrÐRUÐVbÕRcÐQdÐe€EØ	§¡¨× 5Ò 5‰_¸3Õ>€EØ	ˆu�S—W‘W˜]¨BÓ/Ð0Ð1Õ1€Eß�Y§7¡7Ð+@Ó#AÀ3Ç7Á7È:ÓCVÐ"WÔWØÐ)Õ)ˆØ€Lr   c                óÂ	  aaaa€ ? ?^ RI Hp ^ RIHp ^ RIHo SP                  4       pSP                  4       pVP                  R4      '       d   VR,           R2MRp\        RT VP                  R4       R	VP                  R
4      '       d   RMR RSP                  VP                  R4      ;'       g    ^ 4       R24       VR,          '       dB   \        RVR,           RVR,           R2VP                  R4      '       d   RMR,           4       M\        RVR,           R24       \        4        SP                  4       R,          pV Uu. uF6  qˆP                  R4      '       g   K  VP                  R4      '       d   K4  VNK8  	  p	pV Uu0 uF  qˆP                  R4      kK  	  p
pVR,           Uu. uF  q»R,          V
9  g   K  VNK  	  ppVP                  R 4      oV	 Uu. uF  p\        VS4      NK  	  ppTV Uu. uF1  pR!VR,           R"VR#,           R$2VR,          S8X  d   R%MR,           NK3  	  up,          pVP                  R&4       \        V4      \        V	4      ,
          pV'       d   \        R!V R'24       \        V3R( l\!        V	4       4       \        R) \!        V	4       4       ^ 4      4      pV! WßR*R+7      pVe   V\        V4      ^,
          8X  d   \        R-4       R,# V\        V	4      8  Ed   V	V,          oSR.,          SP                  R/4      ;'       d
    VR,          ppV'       gÅ   VR,          '       d   . MR0VR,           R2.pSP                  R/4      '       g   VP                  V RSR#,           R24       V'       d0   V! R1R2P#                  V4       R32R44      '       g   \        R-4       R,# \%        SVV3R5 l4      pVe   \'        SV4      R68w  d   R,# \        R7V R824       R,# SR,          oM"VV\        V	4      ,
          ,          R,          oSpVR,          '       gO   V! R9VR,           R:2R44      '       g   \        R-4       R,# \%        SV3R; l4      pVe   \'        SV4      R68w  d   R,# \%        SVV3R< l4      pVe%   \'        SV4      R68X  d   \        R7V R824       R,# R,# R,# u upi u upi u upi u upi u upi )=zŸPick a catalog model sized for this machine (or one already on disk) and make it the default,
installing the pinned engine and downloading the model as needed.)Ú_prompt_provider_choice)Úprompt_yes_no)Úlocal_modelsÚgpu_nameu    Â· rA   z  Machine:  Ú
vram_labelr@   ÚumaÚunifiedÚGPUu    memory Â· Úram_total_bytesz RAMÚruntime_installedz  Engine:   llama.cpp Útagrp   Úruntime_backendrs   Úupdate_availablez  (update available)z%  Engine:   not installed; llama.cpp Úconfigured_tagz installs with your first modelÚmodelsÚfitsÚneeds_enginerv   ÚidÚactive_model_idr+   rt   rq   u    Â· on diskrx   zLeave unchangedzK catalog model(s) need more memory or a newer engine than this machine has.c              3  ó’   <"  € T F<  w  rS'       g   K  SVP                  R 4      VP                  R4      39   g   K8  Vx € K>  	  R# 5i)rv   rw   Nry   )Ú.0ÚiÚrrl   s   &  €r	   Ú	<genexpr>Ú$_model_flow_local.<locals>.<genexpr>—   sI   øé € ð eÑ"4™$˜!Ü ô Ø%.°1·5±5Ð9NÓ3OÐQR×QVÑQVÐWaÓQbÐ2cÑ%c÷ ’AÓ"4ùs   ƒA”$A½
Ac              3  ó\   "  € T F"  w  rVP                  R 4      '       g   K  Vx € K$  	  R# 5i)rn   Nry   )r‘   r’   r“   s   &  r	   r”   r•   ™   s!   é € ÐRÑ'9™t˜q¸Q¿U¹UÀ=×=QŸšÓ'9ùs   ‚,¢
,u8   Select a local model (â˜… recommended for this machine):)ÚdefaultÚtitleNz
No change.ro   rr   zthe llama.cpp engine (z  Download z and Ú?Tc                 óT   <€ S P                  S P                  SR ,          R7      4      # )rŽ   ©rw   )Úlocal_models_quickstartÚQuickstartBody)r6   rk   s   €€r	   Ú<lambda>Ú#_model_flow_local.<locals>.<lambda>©   s%   ø€ ¨×(BÑ(BÀ2×CTÑCTÐ^aÐbfÕ^gÐCTÓChÔ(ir   rJ   zDefault model set to: u     (via Local models Â· llama.cpp)z!  Download the llama.cpp engine (z)?c                 óB   <€ S P                  S P                  4       4      # )N)Úlocal_models_runtime_installÚRuntimeInstallBody)r6   s   €r	   rž   rŸ   ·   s   ø€  B×$CÑ$CÀB×DYÑDYÓD[Ô$\r   c                 óF   <€ S P                  S P                  SR 7      4      # )r›   )Úlocal_models_activateÚModelActivateBody)r6   rw   s   €€r	   rž   rŸ   º   s   ø€  × 8Ñ 8¸×9MÑ9MÐW_Ð9MÓ9`Ô ar   )Úhermes_cli.main_provider_setupr}   Úhermes_cli.setupr~   Úhermes_cli.web_routersr   Úlocal_models_hardwareÚlocal_models_statusr3   rN   r5   Úlocal_models_catalogr{   ÚappendrP   ÚnextÚ	enumerateÚjoinri   r]   )ÚconfigÚcurrent_modelr}   r~   Úhwr=   ÚgpuÚrowsr“   ÚchoicesÚcatalog_idsr   ÚstagedÚlabelsÚskippedr—   ÚidxÚnameÚuse_downloadedÚneedr;   rl   r6   rw   rk   s   &&                   @@@@r	   Ú_model_flow_localr¾   w   sƒ  û€ ð 	�ÝFÝ.Ý9à	×	!Ñ	!Ó	#€BØ×#Ñ#Ó%€FØ%'§V¡V¨J×%7Ò%7ˆR�
�^Ð˜DÑ
!¸R€CÜ	ˆL˜˜˜bŸf™f \Ó2Ð3°1À"Ç&Á&ÈÇ-Â-±YÐUZÐ4[Ð[fØ�\‰\˜"Ÿ&™&Ð!2Ó3×8Ð8°qÓ9Ð:¸$ð@ô AàÐ!×"Ô"ÜÐ& v¨e¥} o°R¸Ð?PÕ8QÐ7RÐRSÐTØ+1¯:©:Ð6H×+IÒ+IÑ'ÈrõSõ 	Tô 	Ð5°fÐ=MÕ6NÐ5OÐOnÐoÔpÜ	„Gà×"Ñ"Ó$ XÕ.€DÙÓN™$�Q§%¡%¨§-Œq¸¿¹¸n×8M�qˆq™$€GÐNÙ9=Ó>¹°A—5‘5Ð.Ö/¹€KÐ>Ø Ö)ÓHÑ)�A¨t­W¸KÑ-G�aˆaÑ)€FÐHØ—
‘
Ð,Ó-€IÙ07Ó8±¨1Œj˜˜IÖ&±€FÐ8Ø
Ùó Ù�1ð �A�d•G�9˜E ! L¥/Ð!2°+Ð>Ð^_Ð`dÕ^eÐirÔ^rÑBZÐxz×{Ð{Ùñ õ  €Fà
‡M�MÐ#Ô$Ü�$‹iœ#˜g›,Õ&€GßÜ��7�)ÐfÐgÔhÜô e¤)¨GÔ"4ó eäÑR¤y°Ô'9ÓRÐTUÓVóX€Gñ " &ÐA{Ô
|€CØ
‚{�cœS ›[¨1�_Ô,ÜˆlÔÙà
ŒS�‹\ÕØ�c�lˆØ" >Õ2°C·G±G¸LÓ4I×4iÐ4iÈfÐUhÕNiˆnˆßØÐ 3×4Ô4‘2Ð=SÐTZÐ[kÕTlÐSmÐmnÐ;oÐ:pˆDØ—7‘7˜<×(Ò(Ø—‘˜t˜f B s¨<Õ'8Ð&9¸Ð;Ô<ß™M¨K¸¿¹ÀTÓ8JÐ7KÈ1Ð*MÈt×TÒTÜ�lÔ#ÙÜ˜BÕ iÓjˆFØŠ~¤¨R°Ó!8¸FÔ!BÙÜÐ*¨4¨&Ð0PÐQÔRÙØÐ,Õ-‰à˜#¤ G£Õ,Õ-¨dÕ3ˆØˆàÐ%×&Ô&ÙÐ@ÀÐHXÕAYÐ@ZÐZ\Ð]Ð_c×dÒdÜ�,ÔÙÜ˜Ô\Ó]ˆØŠ>œ[¨¨VÓ4¸Ô>ÙÜ�BÕaÓb€FØÒœk¨"¨fÓ5¸Ô?ÜÐ& t fÐ,LÐMÖNñ @Ñùò_ OùÚ>ùÚHùâ8ùò s0   ÅSÅ-SÆSÆSÆ8SÇSÇ)SÈ7S)rA   )Ú__doc__Ú
__future__r   rc   rQ   rS   rX   r   r   r&   r9   r]   ri   r{   r¾   r   r   r	   Ú<module>rÁ      sK   ðñõ #ã Û à
€Ø€õõ?õ
iõ
õ&õR õöEOr   