+
    „WÝj*R  ã                  óX  € 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HtHt ^ RIHtHtHtHtHtHt ^ RIHtHt ]P4                  ! ]4      tRR	R
RRRRRRRRRRRRRRR/	t] ! R R4      4       tR R ltR R lt ]! R R!7       ! R" R#4      4       t!R$ R% lt"R& R' lt#R( R) lt$RJt%R* R+ lt&R, R- lt'R. R/ lt(R0^/R1 R2 llt)R3RR4RR0^R5R/R6 R7 llt*R8R9/R: R; llt+RKR< R= llt,RLR> R? llt-RKR4RR0^R5R/R@ RA lllt.RKR4RR0^R5R/RB RC lllt/RD RE lt0RF RG lt1RKRH RI llt2R# )Mus   Per-model preset generation (--models-preset INI) â€” the router-side carrier for context-policy
launch decisions.
)ÚannotationsN)Ú	dataclassÚreplace)ÚPath)ÚRUNTIME_OVERHEAD_BYTESÚfit_to_free_memoryÚlaunch_argsÚplan_launchÚub_logits_bytes)ÚHardwareBudgetÚPhysicsRefusalÚ	as_loadedÚ	ctx_bytesÚfootprint_bytesÚprofile_from_gguf)Úmodel_id_from_stemÚread_gguf_headerz-cúctx-sizez-bz
batch-sizez-ubzubatch-sizez-ctkzcache-type-kz-ctvzcache-type-vz-faz
flash-attnz-otúoverride-tensorz--spec-typeú	spec-typez--spec-draft-n-maxúspec-draft-n-maxc                  óR   € ] tR t^t$ R]R&   R]R&   R]R&   RtR]R	&   RtR
]R&   RtR# )ÚPresetEntryÚstrÚmodel_idÚintÚwindowÚboolÚspilledNú
str | NoneÚrefusalzdict[str, str] | NoneÚkeys© )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__r    r!   Ú__static_attributes__r"   ó    ÚTC:\Users\johnn\AppData\Local\hermes\hermes-agent\hermes_cli\local_runtime\presets.pyr   r      s&   ‡ àƒMØƒKØƒMØ€GˆZÓØ"&€DÐ
×&r)   r   c               ó    € V ^8„  d   QhRRRR/# )é   Úargsz	list[str]Úreturnzdict[str, str]r"   )Úformats   "r*   Ú__annotate__r0   %   s   € ÷ 
ñ 
˜	ð 
 nñ 
r)   c                óº   € / p^ pV\        V 4      8  dG   \        P                  W,          4      pVf   V^,          pK:  W^,           ,          W&   V^,          pKV  V# )é    )ÚlenÚ_FLAG_TO_KEYÚget)r-   r!   ÚiÚkeys   &   r*   Ú_args_to_keysr8   %   sU   € Ø€DØ	€AØ
Œc�$‹iŒ-Ü×Ñ˜t�wÓ'ˆØŠ;Ø��FˆAÙØ˜Q�•Kˆ‰	Ø	ˆQ�ŠØ€Kr)   c               ó   € V ^8„  d   QhRR/# ©r,   r.   úPath | Noner"   )r/   s   "r*   r0   r0   2   s   € ÷ +ñ +˜+ñ +r)   c                ó~   € ^ RI Hp V f   R# V! 4       V P                  ,          pVP                  4       '       d   V# R# )zLOn-disk path of a catalog companion asset, or None when it isn't downloaded.)Ú
assets_dirN)Ú"hermes_cli.local_runtime.bootstrapr=   Ú
local_nameÚexists)Úassetr=   Úpaths   &  r*   Ú_asset_pathrC   2   s4   € å=à‚}ÙÙ‹<˜%×*Ñ*Õ*€DØ—;‘;—=’=ˆ4Ð* dÐ*r)   T)Úfrozenc                  óF   € ] tR t^<t$ RtRtR]R&   RtR]R&   ^ tR]R&   Rt	R# )	Ú_CompanionszOThe files a catalog entry loads beside its weights, as far as they are on disk.Nr;   ÚmmprojÚmtp_headr   Únbytesr"   )
r#   r$   r%   r&   Ú__doc__rG   r'   rH   rI   r(   r"   r)   r*   rF   rF   <   s"   ‡ áYà€FˆKÓØ €HˆkÓ Ø€FˆC‡Or)   rF   c               ó   € V ^8„  d   QhRR/# )r,   r.   rF   r"   )r/   s   "r*   r0   r0   E   s   € ÷ Dñ D˜+ñ Dr)   c                óâ   € V f   \        4       # \        V P                  4      \        V P                  4      r!\	        R V P                  V3V P                  V33 4       4      p\        WVR7      # )Nc              3  óR   "  € T F  w  rV'       g   K  VP                   x € K  	  R # 5i©N)Ú
size_bytes)Ú.0ÚaÚps   &  r*   Ú	<genexpr>Ú_companions.<locals>.<genexpr>I   s   é € Ð`Ñ*Z¡$ !Ô^_”�—–Ó*Zùs   ‚'“')rG   rH   rI   )rF   rC   rG   rH   Úsum)ÚentryrG   ÚheadrI   s   &   r*   Ú_companionsrX   E   s]   € Ø‚}Ü‹}ÐÜ˜uŸ|™|Ó,¬k¸%¿.¹.Ó.IˆDÜÑ`¨E¯L©L¸&Ð+AÀEÇNÁNÐTXÐCYÑ*ZÓ`Ó`€FÜ˜f¸FÔCÐCr)   c               ó    € V ^8„  d   QhRRRR/# )r,   Ú
companionsrF   r.   r   r"   )r/   s   "r*   r0   r0   M   s   € ÷ Pñ P ð P°ñ Pr)   c                ó^   € V RJ;'       d#    V P                   ;'       g    VP                  RJ# )zTMTP spec decode runs for a catalog entry: built-in heads, or a shipped head on disk.N)ÚmtprH   )rV   rZ   s   &&r*   Ú	_runs_mtpr]   M   s,   € à˜Ð×OÐO %§)¡)×"NÐ"N¨z×/BÑ/BÈ$Ð/NÐOr)   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r,   rB   r   Úbudgetr   r   r   Úoverheadr.   r   r"   )r/   s   "r*   r0   r0   R   s8   € ÷ `ñ `�dð `¨^ð `ÀSð `ÐTWð `Ð\`ñ `r)   c                óÈ  €  \        \        V 4      4      p\        WSR\        \	        VP
                  RR7      ,           R7      p\        YTR7      T,           TP                  TP                  ,           8*  ;'       d'    \        Y4      T,           T,           TP                  8*  #   \        \        3 d-   p\        P                  RT P                  T4        Rp?R# Rp?ii ; i)zðOptional draft never shrinks the advertised window or displaces its GPU buffers.

The catalog does not know the draft's context layout. Admit it only after reading the file;
draft KV defaults to f16, independently of the target's q8 cache.
F)Úmtp_capable)Úflash_attentionÚoverhead_byteszdraft omitted %s: %sN©rd   )r   r   r   r   r
   Ún_vocabÚ
ValueErrorÚOSErrorÚloggerÚwarningÚnameÚusable_vram_bytesÚram_available_bytesr   )rB   Úprofiler_   r   r`   ÚdraftÚ
draft_needÚexcs   &&&&&   r*   Ú_draft_fitsrr   R   sÄ   € ðÜ!Ô"2°4Ó"8Ó9ˆÜ$Ø¨5Ü1´OÀEÇMÁMÐ_dÔ4eÕeôgˆ
ô ˜G¸HÔEÈ
ÕRØ×'Ñ'¨&×*DÑ*DÕDñE÷ _ð _ä˜'Ó*¨XÕ5¸
ÕBÀf×F^ÑF^Ñ^ð`øô œÐ ô Ü�‰Ð-¨t¯y©y¸#Ô>Ýûðús   ‚AB$ Â$C!Â5!CÃC!c               ó    € V ^8„  d   QhRRRR/# )r,   Útagr   r.   ú
int | Noner"   )r/   s   "r*   r0   r0   k   s   € ÷ ñ �zð  jñ r)   c                ó‚   €  V '       d$   \        \        V 4      P                  R 4      4      # R#   \         d     R# i ; i)ÚbN)r   r   Úremoveprefixrg   )rt   s   &r*   Ú_engine_buildry   k   s:   € ðß25Œs”3�s“8×(Ñ(¨Ó-Ó.Ð?¸4Ð?øÜô Úðús   ‚/ Š"/ ­/ ¯>½>c               ó   € V ^8„  d   QhRR/# )r,   r.   r   r"   )r/   s   "r*   r0   r0   r   s   € ÷ bñ b¨3ñ br)   c                óš   € V P                   ^,           pV P                  P                  VP                  V,          ,           \        ,           # )zŸFixed bytes a one-slot DFlash draft adds beside its target: the draft's weights, a copy of
the recurrent state per draft position, and the draft's own context.)Údraft_depthro   rO   Úrecurrent_state_bytesÚ_DRAFT_CONTEXT_BYTES)rV   rn   Úcopiess   && r*   Ú_dflash_extra_bytesr€   r   s:   € ð ×Ñ Õ"€FØ�;‰;×!Ñ! G×$AÑ$AÀFÕ$JÕJÔMaÕaÐar)   c               ó   € V ^8„  d   QhRR/# r:   r"   )r/   s   "r*   r0   r0   y   s   € ÷ $ñ $˜;ñ $r)   c                óv   € V e    V P                   e   V P                  R8w  d   R# \        V P                   4      # )z*The entry's DFlash draft on disk, or None.Núdraft-dflash)ro   Údraft_spec_typerC   )rV   s   &r*   Ú_runs_dflashr…   y   s/   € à‚}˜Ÿ™Ò+¨u×/DÑ/DÈÔ/VÙÜ�u—{‘{Ó#Ð#r)   Ú	residentsc               ó4   € V ^8„  d   QhRRRRRRRRR	R
RRRR/# )r,   r_   r   ÚliveúHardwareBudget | NoneÚfixed_overheadr   Úrequested_windowru   Ú
engine_tagr   Úwindow_withoutr†   r"   )r/   s   "r*   r0   r0   €   sC   € ÷ 'ñ '¨ð 'Ð?Tð 'Ø!$ð'Ø8Bð'ØPZð'à!$ð'à14ñ'r)   c               ó4  € \        V 4      f   R# \        V4      p	V	e%   T	\        V P                  4      ;'       g    ^ 8  d   R# \        VRR7      p
V\	        W
4      ,           p\        W¢WµR7      pVe'   VP                  e   ^ RIHp \        W=! W84      R7      pVe[   \        W£VR7      p\        VP                  \        4      '       g   VP                  P                  '       d   R# \        WÊVRVR	7      pVP                  p\        V\        4      '       g   VP                  '       d   R# VP                  ;'       g    VP                  pV'       d   VP                  \!        VV4      8  d   R# VP                  \!        VV^,          4      8  d   R# V# )
aN  The launch plan with the entry's DFlash draft in place of MTP, or None.

The draft runs on one slot: each slot keeps a recurrent-state copy per draft position, and
the router's default four slots hold enough copies to push weights off the GPU. It may
shrink the window to half native, never below what the model gets without it when that is
smaller; a requested (grown) window it can't hold keeps the model as it was. On one slot a
side request takes the chat's slot and the prompt cache brings the chat back, so where free
commit sizes that cache the draft keeps its smallest useful size.
Nç      ð?©Úkv_scale©rŠ   r‹   )Úusable_beside_prompt_cache)rl   )rŠ   F©rb   rŠ   )r…   ry   Údraft_min_enginer   r€   r	   Úcommit_room_bytesÚ!hermes_cli.local_runtime.hardwarer“   Ú
isinstanceÚdecisionr   r   r   Ún_ctx_trainr   Úmin)rV   rn   r_   rˆ   rŠ   r‹   rŒ   r�   r†   ÚbuildÚleanr`   Úplanr“   Únowr™   Únatives   &&&&$$$$$        r*   Ú_dflash_planr¡   €   sG  € ô �EÓÒ"ÙÜ˜*Ó%€EØ‚}˜¤¨u×/EÑ/EÓ!F×!KÐ!KÈ!ÔLÙÜ�7 SÔ)€DØÔ 3°EÓ @Õ@€HÜ�t°HÔ`€DØÒ˜D×2Ñ2Ò>ÝPä�tÐ/IÈ$Ó/ZÔ[ˆØÒô ˜$°XÔ>ˆÜ�c—l‘l¤N×3Ò3°s·|±|×7K×7KÐ7KÙÜ! $¨dÀÐV^Ô_ˆØ�}‰}€HÜ�(œN×+Ò+¨x×/?×/?Ð/?ÙØ× Ñ ×3Ð3 H§O¡O€Fß˜HŸO™O¬cÐ2BÀFÓ.KÔKÙØ‡�œ˜^¨V°q­[Ó9Ô9ÙØ€Kr)   r‹   rˆ   rŒ   c               ó8   € V ^8„  d   QhRRRRRRRRR	R
RRRRRR/# )r,   Úggufr   r_   r   rb   zset[str]r‹   ru   rˆ   r‰   r†   r   rŒ   r   r.   zPresetEntry | Noner"   )r/   s   "r*   r0   r0   ª   sY   € ÷ [<ñ [<˜4ð [<¨ð [<Ø"*ð[<ØAKð[<à0ð[<àDGð[<ð ",ð[<ð 8Jñ[<r)   c               ó  € ^ RI Hp ^ RIHp \	        V P
                  4      p	 \        V 4      p
\        \        V
4      V4      pT! T	4      p\        T4      pTe   \        YÞ4      MY’9   p\         TP"                  ,           pTf   T! 4       P%                  T	4      MTp\'        Y±TTTR7      pTe   \)        TY´TTR7      pTP*                  p\-        T\.        4      '       d   \1        T	^ RTP2                  R7      # TP4                  '       d   RM\7        YÛYTTTTP8                  TR	7	      pTe   TTP*                  pp\;        \=        TTT;'       d    TRJ TP>                  TP@                  Te   TPB                  M^R
7      4      p\E        T 4      TR&   ^ RI#H$p T! T\K        TPL                  TP8                  TPN                  R7      T4      pTe   \E        T^,	          4      TR&   TPP                  '       d   RTR&   Te   T'       d   RTR&   RTR&   T
PR                  PU                  4        F  w  ppTPW                  TT4       K  	  TEeS   TPX                  ;'       g    / PU                  4        F  w  ppTPW                  TT4       K  	  TPZ                  e   \E        TPZ                  4      TR&   TP\                  e   \E        TP\                  4      TR&   Te:   \E        \_        T4      4      TR&   RTR&   \E        TP`                  4      TR&   RTR&   TP4                  '       d'   TPb                  R8X  d   \e        TPf                  4      MRpTeL   \i        TTPL                  TTP8                  TPN                  4      '       d   \E        T4      TR&   RTR&   RTR&   \1        T	TP8                  TP4                  TR7      #   \        \        3 d-   p\        P                  RT P                  T4        Rp?R# Rp?ii ; i)aÎ  The launch decision for one staged model, or None when its header is unreadable.

``budget`` is the card's capacity; ``live`` (from ``hardware.launch_budget``) narrows the
window to what fits beside other programs now. ``residents`` is how many models the router may
hold at once; on Windows unified memory their prompt caches share the commit they leave.
``engine_tag`` is the installed llama.cpp release; without it no draft that needs a minimum
release runs.
©Úentry_for_model©Úload_window_overrideszpreset skip %s: %sN©rb   rŠ   r‹   r”   F)r   r   r   r    )rŠ   r‹   rŒ   r�   r†   )rb   ÚumaÚmtp_prefillÚmtp_draft_depthÚmodel)Úprompt_cache_bytesre   z	cache-ramÚonz	lazy-modezbackend-samplingzspec-draft-backend-samplingrG   zmodel-draftrƒ   r   r   Ú1Úparallelzdraft-dsparkÚ3©r   r   r   r!   )5Ú hermes_cli.local_runtime.catalogr¦   Úhermes_cli.local_runtime.growthr¨   r   Ústemr   r   r   rg   rh   ri   rj   rk   rX   r]   r   rI   r5   r	   r   r™   r˜   r   r   Úmessager   r¡   r   r8   r   rª   r«   r¬   r   r—   r®   r   rn   rd   Ú
lazy_bytesÚsampling_defaultsÚitemsÚ
setdefaultÚsamplingrG   rH   r…   r|   r„   rC   ro   rr   )r£   r_   rb   r‹   rˆ   r†   rŒ   r¦   r¨   r   Úheaderrn   rq   rV   rZ   Úis_mtprŠ   Ú	requestedrž   r™   Údflashr!   r®   ÚcacheÚkÚvÚ
draft_paths   &&&$$$$                    r*   Úpreset_for_modelrÅ   ª   s½  € õ AÝEä! $§)¡)Ó,€HðÜ! $Ó'ˆÜÔ-¨fÓ5°vÓ>ˆñ ˜HÓ%€EÜ˜UÓ#€JØ-2Ò->ŒY�uÔ)ÀHÑD[€Fä+¨j×.?Ñ.?Õ?€NØ9IÒ9QÑ%Ó'×+Ñ+¨HÔ5ÐWg€IÜ�w°FÈ>Ø(1ô3€DàÒÜ! $¨À6Ø1?ôAˆà�}‰}€HÜ�(œN×+Ò+Ü H°QÀÈx×O_ÑO_Ô`Ð`à×%×%Ð%‰T¬<Ø˜°^ÐV_Ø¨h¯o©oÈô,T€Fð ÒØ §¡ˆhˆäœØ� v×'@Ð'@°&¸D°.ÀfÇjÁjØ×$Ñ$Ø16Ò1B˜×-Ò-ÈôKó L€Dô ˜“I€Dˆ�MÝDÙ˜t¤_°T·\±\À8Ç?Á?ØDH×DWÑDWô&YØZcóe€EàÒÜ ¨¥Ó,ˆˆ[ÑØ××Ðð !ˆˆ[ÑØÒŸVð $(ˆÐÑ Ø.2ˆÐ*Ñ+ð ×(Ñ(×.Ñ.Ö0‰ˆˆ1Ø�‰˜˜1Öñ 1àÓØ—^‘^×)Ð) r×0Ñ0Ö2‰DˆAˆqØ�O‰O˜A˜qÖ!ñ 3à×ÑÒ(Ü  ×!2Ñ!2Ó3ˆD�‰NØ×ÑÒ*ä"% j×&9Ñ&9Ó":ˆD�ÑØÒÜ"%¤l°5Ó&9Ó":ˆD�ÑØ .ˆD�ÑÜ'*¨5×+<Ñ+<Ó'=ˆDÐ#Ñ$Ø"ˆD�ÑØ2:×2B×2BÐ2BØ×/Ñ/°>ÔAô " %§+¡+Ô.ØGKð 	àÒ!¤k°*¸d¿l¹lÈFÐT\×TcÑTcØ26×2EÑ2E÷'Gò 'Gä"% j£/ˆD�ÑØ .ˆD�Ñà'*ˆDÐ#Ñ$Ü °·±Ø'×/Ñ/°dô<ð <øôO œÐ ô Ü�‰Ð+¨T¯Y©Y¸Ô<Ýûðús   £ O ÏP Ï!O;Ï;P ÚdraftingFc          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r,   r£   r   r_   r   r   r   rÆ   r   r.   ru   r"   )r/   s   "r*   r0   r0     s8   € ÷ Uñ U˜Tð U¨>ð UÀ3ð UÐUYð UÐfpñ Ur)   c          	     ó<  € ^ RI Hp \        V P                  4      p \	        \        \        V 4      4      V4      pT! T4      p\        T4      p	\        T	P                  ,           p
T'       d:   \        T4      e-   \!        TRR7      p\#        Y±T
\%        Y‹4      ,           TR7      pM\#        Ya\'        Y‰4      Y¢R7      p\)        TP*                  Y,P,                  R7      #   \        \        3 d-   p\        P                  RT P                  T4        Rp?R# Rp?ii ; i)	zªEstimated bytes one staged model holds while loaded at ``window``, or None when unreadable.
``drafting`` prices the one-slot DFlash launch its preset runs instead of MTP.r¥   úfootprint skip %s: %sNr�   r�   r’   r©   re   )r´   r¦   r   r¶   r   r   r   rg   rh   ri   Údebugrk   rX   r   rI   r…   r   r	   r€   r]   r   rn   rd   )r£   r_   r   rÆ   r¦   r   rn   rq   rV   rZ   rŠ   r�   rž   s   &&&$         r*   Úresident_footprintrË     sî   € õ Aä! $§)¡)Ó,€HðÜÔ-Ô.>¸tÓ.DÓEÀvÓNˆñ ˜HÓ%€EÜ˜UÓ#€JÜ+¨j×.?Ñ.?Õ?€Nß”L Ó'Ò3Ü�w¨Ô-ˆÜ˜4¸ÔI\Ð]bÓIiÕ8iØ,2ô4‰ô ˜7¼	À%Ó8TØ*8ôSˆä˜4Ÿ<™<¨×@SÑ@SÔTÐTøô œÐ ô Ü�‰Ð,¨d¯i©i¸Ô=Ýûðús   �C ÃDÃ/!DÄDc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r,   r£   r   r_   r   rŒ   r   r.   ru   r"   )r/   s   "r*   r0   r0      s)   € ÷  ñ  ˜Dð  ¨.ð  Àjð  Ð\fñ  r)   c                óp  € ^ RI Hp ^ RIHp \	        V P
                  4      p \        \        \        V 4      4      V4      pT! T4      p\        T4      p	\        T	P                   ,           p
T! 4       P#                  T4      p\%        Ya\'        Y‰4      Y«R7      p\)        TP*                  \,        4      '       d   R# \/        TP0                  TP*                  P2                  TP4                  R7      pTP*                  P6                  '       d   RM#\9        Y†TRY«Y,P*                  P2                  R7      pTeA   \;        T\/        TP0                  TP*                  P2                  TP4                  R7      4      pT#   \        \        3 d-   p\        P                  RT P                  T4        Rp?R# Rp?ii ; i)zóEstimated resident bytes for one staged model at the window this policy grants it, or None
when it cannot be priced: an unreadable header, or a model the physics check refuses outright
(it never loads, so it must not shrink the residency cap).r¥   r§   rÉ   Nr©   re   )rŠ   r‹   rŒ   r�   )r´   r¦   rµ   r¨   r   r¶   r   r   r   rg   rh   ri   rÊ   rk   rX   r   rI   r5   r	   r]   r˜   r™   r   r   rn   r   rd   r   r¡   Úmax)r£   r_   rŒ   r¦   r¨   r   rn   rq   rV   rZ   rŠ   r¿   rž   ÚpricerÀ   s   &&&            r*   Ú_launch_footprintrÐ      s^  € õ AÝEä! $§)¡)Ó,€HðÜÔ-Ô.>¸tÓ.DÓEÀvÓNˆñ ˜HÓ%€EÜ˜UÓ#€JÜ+¨j×.?Ñ.?Õ?€NÙ%Ó'×+Ñ+¨HÓ5€IÜ�w´I¸eÓ4PØ&4ôR€Dä�$—-‘-¤×0Ò0Ùô ˜DŸL™L¨$¯-©-×*>Ñ*>Èt×ObÑObÔc€Eð —]‘]×*×*Ð*‰T´Ø˜ °^Ø¯m©m×.BÑ.Bô1D€Fð ÒÜ�Eœ?¨6¯>©>¸6¿?¹?×;QÑ;QØ:@×:OÑ:OôQó Rˆà€Løô- œÐ ô Ü�‰Ð,¨d¯i©i¸Ô=Ýûðús   £E8 Å8F5Æ	!F0Æ0F5c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r,   Ú
models_dirr   r_   r   Ú
configuredr   rˆ   r‰   rŒ   r   r.   r"   )r/   s   "r*   r0   r0   C  s:   € ÷ 6ñ 6¨ð 6°~ð 6ÐSVð 6Ø#8ð6ØMWð6Øcfñ6r)   c                óV  € ^ RI Hp V^8:  g   VP                  ^ 8:  d   V# ^ pV! V 4       F$  p\        WqV4      pV'       g   K  \	        Wh4      pK&  	  V^ 8:  d   V# VP                  p	Ve$   VP
                  e   \        W“P                  4      p	\	        ^\        W)V,          4      4      # )u  How many models the card may hold resident at once: priced against the budget, not a count.

Residency used to be bounded by a count alone, so a second model was admitted against an
already-full card. On Windows/WDDM that over-commit is not refused â€” the allocation is paged
to host memory, and that child decodes at a third of its speed for the rest of its life: no
error, no UI hint, and ejecting the incumbent afterwards does not repair it (only a clean
reload does). Capping the count instead has llama.cpp evict its LRU *before* the incoming
child allocates, which is the only placement that fits.

The cap rises above one only while the LARGEST staged model still fits TWICE â€” any pair of
staged models then fits by construction. ``configured`` stays a ceiling (a user's smaller
number is honoured), and an unpriceable input (no usable device memory, no readable model)
keeps today's behaviour. On Windows unified memory ``live`` (free commit) bounds it too: the
models the router holds together must fit in commit, not just in the pool.
©Ú	staged_in)r>   rÖ   rl   rÐ   rÎ   r–   r›   )
rÒ   r_   rÓ   rˆ   rŒ   rÖ   Úlargestr£   ÚneedÚusables
   &&&&&     r*   Úadmitted_residency_countrÚ   C  s¢   € õ" =à�Q„˜&×2Ñ2°aÔ7ØÐØ€GÙ˜*Ö%ˆÜ  ¨zÓ:ˆß‰4Ü˜'Ó(ŠGñ &ð �!„|ØÐØ×%Ñ%€FØÒ˜D×2Ñ2Ò>Ü�V×3Ñ3Ó4ˆÜˆq”#�j¨GÕ"3Ó4Ó5Ð5r)   c               ó4   € V ^8„  d   QhRRRRRRRRR	R
RRRR/# )r,   rÒ   r   r_   r   rb   úset[str] | Nonerˆ   r‰   r†   r   rŒ   r   r.   úlist[PresetEntry]r"   )r/   s   "r*   r0   r0   e  sA   € ÷ 	=ñ 	=˜Tð 	=¨>ð 	=Èð 	=Ø/ð	=ØCFð	=à'ð	=à3Dñ	=r)   c               ó|   aaaaa€ ^ RI Hp VVVVV3R lV! V 4       4       pV Uu. uF
  qˆf   K  VNK  	  up# u upi )zKThe launch decision for every staged model; unreadable headers are skipped.rÕ   c           
   3  ój   <"  € T F(  p\        TSS;'       g    \        4       SSSR 7      x € K*  	  R# 5i)©rˆ   r†   rŒ   N)rÅ   Úset)rP   r£   r_   rŒ   rˆ   rb   r†   s   & €€€€€r*   rS   Úplan_presets.<locals>.<genexpr>k  s:   øé € ð 2á0�4ô    f¨k×.BÐ.B¼S»UÈÐYbØ+5÷7ñ 7ã0ùs   ƒ3˜3)r>   rÖ   )	rÒ   r_   rb   rˆ   r†   rŒ   rÖ   ÚentriesrV   s	   &ffddd   r*   Úplan_presetsrä   e  s=   ü€ õ =÷2ð 2á$ ZÔ0ó2€Gñ  'Ó<™w�e�EˆE™wÑ<Ð<ùÒ<s   ¦9°9c               ó8   € V ^8„  d   QhRRRRRRRRRR	R
RRRRR/# )r,   rÒ   r   r_   r   Úpreset_pathrb   rÜ   rˆ   r‰   r†   r   rŒ   r   r.   rÝ   r"   )r/   s   "r*   r0   r0   q  sN   € ÷ 	ñ 	 ð 	¨~ð 	ÈDð 	Ø"1ð	à0ð	àDGð	ð ",ð	ð 8Iñ	r)   c          	     ó:   € \        WW4VVR7      p\        Wr4       V# )z…Plan every staged model and write one INI. Refused models get no section (the picker
surfaces the refusal from the returned entries).rà   )rä   Úwrite_presets)rÒ   r_   ræ   rb   rˆ   r†   rŒ   rã   s   &&&&$$$ r*   Úgenerate_presetsré   q  s%   € ô ˜:¨{ÐQZØ&0ô2€Gä�'Ô'Ø€Nr)   c               ó$   € V ^8„  d   QhRRRRRR/# )r,   rã   rÝ   ræ   r   r.   ÚNoner"   )r/   s   "r*   r0   r0   }  s'   € ÷ iñ iÐ,ð i¸4ð iÀDñ ir)   c                ó¦   € ^ RI Hp V! V\        V 4      RVP                   R2RR7       \        P                  R\        R V  4       4      V4       R# )	r2   )Úatomic_write_textÚ.Ú_i€  )Ú
tmp_prefixÚmodezwrote %d preset sections to %sc              3  ó<   "  € T F  qP                   R Jx € K  	  R # 5irN   )r!   )rP   Úes   & r*   rS   Ú write_presets.<locals>.<genexpr>�  s   é € Ð5ZÑRYÈQ·f±fÀDÕ6HÓRYùs   ‚N)Úutilsrí   Úrender_presetsrk   ri   ÚinforU   )rã   ræ   rí   s   && r*   rè   rè   }  sH   € Ý'á�k¤>°'Ó#:ÈÈ;×K[ÑK[ÐJ\Ð\]ÐG^ÐejÕkÜ
‡K�KÐ0´#Ñ5ZÑRYÓ5ZÓ2ZÐ\gÖhr)   c               ó    € V ^8„  d   QhRRRR/# )r,   rã   rÝ   r.   r   r"   )r/   s   "r*   r0   r0   „  s   € ÷ 
ñ 
Ð-ð 
°#ñ 
r)   c                óÄ  € . pV  FÈ  pVP                  R \        P                  ! RVP                  RVP                  RVP
                  RVP                  /4      ,           R,           4       VP                  f   Kv  RP                  R VP                  P                  4        4       4      pVP                  RVP                   RV R24       KÊ  	  RP                  V4      # )	ú# hermes-decision: r   r   r   r    Ú
c              3  ó4   "  € T F  w  rV R V 2x € K  	  R# 5i)z = Nr"   )rP   rÂ   rÃ   s   &  r*   rS   Ú!render_presets.<locals>.<genexpr>Œ  s   é € ÐIÑ6H©d¨a ˜s # a S�\Ó6Hùs   ‚Ú[z]
)
ÚappendÚjsonÚdumpsr   r   r   r    r!   Újoinrº   )rã   ÚsectionsrV   Úbodys   &   r*   rö   rö   „  sÂ   € Ø€HÛˆà�‰Ð-´·
²
Ø˜Ÿ™¨°%·,±,Ø�u—}‘} i°·±ð<@ó 1Aõ AàCGõHô 	Ið �:‰:Ô!Ø—9‘9ÑI°e·j±j×6FÑ6FÔ6HÓIÓIˆDØ�O‰O˜a §¡Ð/¨s°4°&¸Ð;Ö<ñ ð �9‰9�XÓÐr)   c               ó    € V ^8„  d   QhRRRR/# )r,   ræ   r;   r.   zdict[str, PresetEntry]r"   )r/   s   "r*   r0   r0   ‘  s   € ÷ ñ  {ð Ð>Tñ r)   c                ó  € ^ RI pV f   ^ RIHp V! 4       R,          p / p VP                  RR7      pV P	                  RR7      pVP                  V4       / pVP                  4        Fy  pVP                  R4      '       g   K  \        P                  ! VP                  R4      4      pW†VR,          &   VP                  R	4      '       g   Ke  \        R/ VB W8R,          &   K{  	  VP                  4        Fd  p	\        W”P                  V	R
^ R7      VP                  V	/ 4      P                  RVP                  V	R4      4      \!        WI,          4      R7      W9&   Kf  	  V#   \"         d"   p
\$        P'                  RT
4        Rp
?
T# Rp
?
ii ; i)u°   The launch decisions the running server was actually given, read back from the preset INI
(the INI is the record â€” it's what spawned the children). Missing/unparseable -> {}.N)Úruntimes_rootzpresets.ini)Úinterpolationz	utf-8-sig)Úencodingrú   r   r    r   )Úfallbackr   r   r³   zpreset read-back failed: %sr"   )ÚconfigparserÚ!hermes_cli.local_runtime.binariesr  ÚConfigParserÚ	read_textÚread_stringÚ
splitlinesÚ
startswithr   Úloadsrx   r5   r   r  ÚgetintÚ
has_optionÚdictÚ	Exceptionri   rÊ   )ræ   r  r  ÚoutÚparserÚtextÚrecordedÚlineÚfactÚsectionrq   s   &          r*   Úread_preset_decisionsr  ‘  sa  € ó àÒÝCá#“o¨Õ5ˆØ"$€Cð9Ø×*Ñ*¸Ð*Ó>ˆØ×$Ñ$¨kÐ$Ó:ˆØ×Ñ˜4Ô ØˆØ—O‘OÖ%ˆDØ�‰Ð4×5Ô5Ü—z’z $×"3Ñ"3Ð4IÓ"JÓK�Ø-1˜˜jÕ)Ñ*Ø—8‘8˜I×&Ô&Ü,7Ñ,?¸$Ñ,?�C˜ZÕ(Ó)ñ &ð —‘Ö(ˆGÜ&Ø ¯©°wÀ
ÐUV¨Ó)WØ Ÿ™ W¨bÓ1×5Ñ5°iÀ×ARÑARÐSZÐ\mÓAnÓoÜ˜&�/Ó*ô,ˆC‹Lñ )ð €Jøô ô 9Ü�‰Ð2°C×8Ð8Ø€Jûð9ús&    AE ÂAE ÃBE ÅF
Å)FÆF
i    rN   )NN)3rJ   Ú
__future__r   r   ÚloggingÚdataclassesr   r   Úpathlibr   Ú'hermes_cli.local_runtime.context_policyr   r   r   r	   r
   Ú"hermes_cli.local_runtime.estimatorr   r   r   r   r   r   Úhermes_cli.local_runtime.ggufr   r   Ú	getLoggerr#   ri   r4   r   r8   rC   rF   rX   r]   rr   r~   ry   r€   r…   r¡   rÅ   rË   rÐ   rÚ   rä   ré   rè   rö   r  r"   r)   r*   Ú<module>r'     s•  ðñõ #ã Û ß *Ý ÷[õ [÷^÷ ^ç Nà	×	Ò	˜8Ó	$€ð 	ˆ*�d˜L¨%°Ø
ˆN˜F N°E¸<Ø	Ð˜m¨[Ð:NÐPbð€ð ÷'ð 'ó ð'õ
õ+ñ �$Ô÷ð ó ðõDõPõ
`ð, !Ð õõbõ$ð'à78÷'ðT[<ØNRð[<à37ð[<àJKð[<ð /3÷[<ð|UÐ\a÷ U÷0 ÷F6ñD	=Ø26ð	=ØIJð	=à*.÷	=ð 	=ñ	à37ð	àJKð	ð /3÷	ð 	õiõ
÷ñ r)   