+
    „WÝjŽ9  ã                  ó~  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	H
t
Ht ^ RIHt ]P                  ! R4      tR tR+R R	 lltR
 R ltR R ltR R ltR, U u/ uF  p V RV P+                  4        2bK  	  up tRR/]CRR/CtRRRRRRRRR/RRRRR RR!RR"//tR-tR# tR$ tR% R& ltR' R( ltR) R* ltR# u up i ).aa  Classic-CLI config loading: prefill messages, reasoning/service-tier parsing, terminal env mirroring, CLI defaults + user YAML merge and the logging/display bootstrap.

Split out of ``cli.py``; ``cli`` re-exports every public name and moved bodies late-bind
cli-level names through ``from cli import ...`` at call time so facade monkeypatch seams hold.
)ÚannotationsN)ÚPath)ÚListÚDictÚAny)Úfast_safe_loadÚclic                 ó   € ^ RI p V # )z]Late import of the ``cli`` facade: mutable CLI module state (and its test seams) lives there.N©r   r
   s    ÚNC:\Users\johnn\AppData\Local\hermes\hermes-agent\hermes_cli\cli_config_load.pyÚ_clir      s
   € ãà€Jó    c               ó$   € V ^8„  d   QhRRRRRR/# )é   Ú	file_pathÚstrÚbase_dirzPath | NoneÚreturnzlist[dict[str, Any]]© )Úformats   "r   Ú__annotate__r      s"   € ÷ ñ  cð °[ð ÐL`ñ r   c                ól  € V '       g   . # \        V 4      P                  4       pVP                  4       '       g&   T;'       g    \        4       P                  V,          pVP                  4       '       g   \        P                  RV4       . #  \        VRRR7      ;_uu_ 4       p\        P                  ! V4      pRRR4       \        X\        4      '       g   \        P                  RV4       . # V#   + '       g   i     L@; i  \         d#   p\        P                  RY%4       . u Rp?# Rp?ii ; i)z›Load prefill messages (JSON array) from *file_path*; missing/empty -> [].

Relative paths resolve against *base_dir*, defaulting to the CLI's hermes home.
z#Prefill messages file not found: %sÚrú	utf-8-sig©ÚencodingNz3Prefill messages file must contain a JSON array: %sz+Failed to load prefill messages from %s: %s)r   Ú
expanduserÚis_absoluter   Ú_hermes_homeÚexistsÚloggerÚwarningÚopenÚjsonÚloadÚ
isinstanceÚlistÚ	Exception)r   r   ÚpathÚfÚdataÚes   &&    r   Ú_load_prefill_messagesr,      sã   € ÷
 Øˆ	Ü�	‹?×%Ñ%Ó'€DØ×Ñ×ÒØ×/Ð/œD›F×/Ñ/°4Õ7ˆØ�;‰;�=Š=Ü�‰Ð<¸dÔCØˆ	ð	Ü�$˜ k×2Õ2°aÜ—9’9˜Q“<ˆD÷ 3ä˜$¤×%Ò%Ü�N‰NÐPÐRVÔWØˆIØˆ÷ 3×2ûô ô Ü�‰ÐDÀdÔNØ�	ûðús<   ÂD Â$C3Â;5D Ã1D Ã3D	Ã>D ÄD3ÄD.Ä(D3Ä.D3c               ó    € V ^8„  d   QhRRRR/# )r   Úconfigúdict[str, Any]r   r   r   )r   s   "r   r   r   4   s   € ÷ ñ ¨>ð ¸cñ r   c                óz  € ^ RI Hp V P                  R/ 4      pV! R4      P                  4       ;'       g‡    \	        V P                  RR4      ;'       g    R4      P                  4       ;'       gL    \        V\        4      '       d4   \	        VP                  RR4      ;'       g    R4      P                  4       # R# )zZPrefill file path: env, then top-level ``prefill_messages_file``, then legacy ``agent.*``.)Úsession_envÚagentÚHERMES_PREFILL_MESSAGES_FILEÚprefill_messages_fileÚ )Úagent.session_client_envr1   ÚgetÚstripr   r%   Údict)r.   r1   Ú	agent_cfgs   &  r   Ú_resolve_prefill_messages_filer;   4   s¨   € å4Ø—
‘
˜7 BÓ'€IáÐ2Ó3×9Ñ9Ó;÷ 	rð 	rÜˆv�z‰zÐ1°2Ó6×<Ð<¸"Ó=×CÑCÓE÷	rð 	räMWÐXaÔcg×MhÒMhŒC�	—‘Ð5°rÓ:×@Ð@¸bÓA×GÑGÓIðð oqðr   c               ó   € V ^8„  d   QhRR/# )r   r   zdict | Noner   )r   s   "r   r   r   ?   s   € ÷ ñ  {ñ r   c                ó¤   € ^ RI Hp V! V 4      pV '       d:   \        V 4      P                  4       '       d   Vf   \        P                  RV 4       V# )zSParse a reasoning effort level (string or YAML bool; ``false``/``off`` = disabled).)Úparse_reasoning_effortz5Unknown reasoning_effort '%s', using default (medium))Úhermes_constantsr>   r   r8   r    r!   )Úeffortr>   Úresults   &  r   Ú_parse_reasoning_configrB   ?   s=   € å7Ù# FÓ+€Fß”#�f“+×#Ñ#×%Ò%¨&ª.Ü�‰ÐNÐPVÔWØ€Mr   c               ó    € V ^8„  d   QhRRRR/# )r   Úrawr   r   z
str | Noner   )r   s   "r   r   r   H   s   € ÷ ñ  Cð ¨Jñ r   c                óÆ   € ^ RI HpHp V! V 4      pVfM   \        T ;'       g    R4      P	                  4       P                  4       V9  d   \        P                  RV 4       V# )zYParse a persisted fast-mode preference: None, "priority", "ultrafast", "auto", or "cold".)ÚNORMAL_TIER_WORDSÚparse_service_tierr5   z#Unknown service_tier '%s', ignoring)Úagent.fast_moderF   rG   r   r8   Úlowerr    r!   )rD   rF   rG   Útiers   &   r   Ú_parse_service_tier_configrK   H   sL   € çEá˜cÓ"€DØ‚|œ˜CŸI˜I 2›×,Ñ,Ó.×4Ñ4Ó6Ð>OÔOÜ�‰Ð<¸cÔBØ€Kr   Ú	TERMINAL_Úenv_typeÚTERMINAL_ENVÚsudo_passwordÚSUDO_PASSWORDÚvisionÚproviderÚAUXILIARY_VISION_PROVIDERÚmodelÚAUXILIARY_VISION_MODELÚbase_urlÚAUXILIARY_VISION_BASE_URLÚapi_keyÚAUXILIARY_VISION_API_KEYÚapprovalÚAUXILIARY_APPROVAL_PROVIDERÚAUXILIARY_APPROVAL_MODELÚAUXILIARY_APPROVAL_BASE_URLÚAUXILIARY_APPROVAL_API_KEYc                óÜ  € ^ RI HpHpHp V P	                  R/ 4      pRV9   d   VR,          VR&   VP	                  RR4      pVR8X  d-   \
        P                  ! 4       VR&   VR,          V R,          R&   M(VP	                  R4      V9   d   VP                  RR4       \
        P                  P	                  R4      R	8H  pVP                  4        F±  w  r‰W…9  d   K  WX,          p
V	R
8X  d)   V'       g   \        V
4      \
        P                  V	&   KB  KD  V'       g   V	\
        P                  9  g   Kc  \        V
\        \        34      '       d   \        P                  ! V
4      M
\        V
4      \
        P                  V	&   K³  	  V P	                  R/ 4      pRV9   d$   \        VR,          4      \
        P                  R&   V P	                  R/ 4      pVP                  4        FŸ  w  rÞVP	                  V/ 4      p\        V\        4      '       g   K/  VP                  4        F\  w  pp	\        VP	                  VR4      4      P!                  4       p
V
'       g   K9  VR8X  d
   V
R8X  d   KI  V
\
        P                  V	&   K^  	  K¡  	  V P	                  R/ 4      p\        V\        4      '       d@   VP	                  R4      pVe+   \        V4      P#                  4       \
        P                  R&   V P	                  R/ 4      p\        V\        4      '       dY   RV9   d$   \        VR,          4      \
        P                  R&   RV9   d&   \        VR,          4      \
        P                  R&   R# R# R# )z”Project config.yaml values into the env vars the tool modules read (terminal/browser/auxiliary/security/sessions). Env always wins when already set.)Ú_AUXILIARY_TASK_ENVÚ_CWD_PLACEHOLDERSÚ_TERMINAL_ENV_MAPPINGSÚterminalÚbackendrM   ÚlocalÚcwdNÚ_HERMES_GATEWAYÚ1ÚTERMINAL_CWDÚbrowserÚinactivity_timeoutÚBROWSER_INACTIVITY_TIMEOUTÚ	auxiliaryr5   rR   ÚautoÚsecurityÚredact_secretsÚHERMES_REDACT_SECRETSÚsessionsÚcjk_ftsÚHERMES_CJK_FTSÚsearch_slow_msÚHERMES_SEARCH_SLOW_MS)r   r`   ra   rb   r7   ÚosÚgetcwdÚpopÚenvironÚitemsr   r%   r&   r9   r#   Údumpsr8   rI   )ÚdefaultsÚ_file_has_terminal_configr`   ra   rb   Úterminal_configÚeffective_backendÚ_is_gatewayÚ
config_keyÚenv_varÚvalÚbrowser_configÚauxiliary_configÚtask_keyÚenv_mapÚtask_cfgÚfieldÚsecurity_configÚredactÚsessions_configs   &&                  r   Ú_mirror_config_to_envrŽ   z   sÅ  € çRÑRØ—l‘l :¨rÓ2€Oð �OÔ#Ø&5°iÕ&@ˆ˜
Ñ#ð (×+Ñ+¨J¸Ó@ÐØ˜GÔ#Ü!#§¢£ˆ˜ÑØ&5°eÕ&<ˆ�Õ˜UÒ#Ø	×	Ñ	˜UÓ	#Ð'8Ô	8Ø×Ñ˜E 4Ô(ô —*‘*—.‘.Ð!2Ó3°sÑ:€KØ5×;Ñ;Ö=Ñˆ
ØÔ,ÙØÕ)ˆØ�nÔ$ßÜ&)¨#£h”—
‘
˜7Ó#ñ ç&¨'¼¿¹Ö*CÜ5?ÀÄdÌDÀ\×5RÒ5R¤$§*¢*¨S¤/ÔX[Ð\_ÓX`ŒB�J‰J�wÓñ  >ð —\‘\ )¨RÓ0€NØ˜~Ô-Ü36°~ÐFZÕ7[Ó3\Œ�
‰
Ð/Ñ0ð  —|‘| K°Ó4ÐØ0×6Ñ6Ö8ÑˆØ#×'Ñ'¨°"Ó5ˆÜ˜(¤D×)Ò)ÙØ%Ÿm™mžo‰NˆE�7Ü�h—l‘l 5¨"Ó-Ó.×4Ñ4Ó6ˆCß‰s˜E ZÔ/°C¸6¶MØ&)”—
‘
˜7Ó#ó .ñ	 9ð —l‘l :¨rÓ2€OÜ�/¤4×(Ò(Ø ×$Ñ$Ð%5Ó6ˆØÒÜ25°f³+×2CÑ2CÓ2EŒB�J‰JÐ.Ñ/ð —l‘l :¨rÓ2€OÜ�/¤4×(Ò(Ø˜Ô'Ü+.¨¸yÕ/IÓ+JŒB�J‰JÐ'Ñ(Ø˜Ô.Ü25°oÐFVÕ6WÓ2XŒB�J‰JÐ.Ó/ñ /ñ )r   c                 óL  € ^ RI Hp  RRRRRRR/RR	R
RRRRRRRV R. RV RV R. RRRR/RR^xRRRRRRRRR//R R!R"R#R$R%^/R&R'R(R)RR*RR+RR,RR-RR./ /R// R0RbR1R2bR3^
bR4RbR5^ÈbR6^bR7R"bR8R"bR9RbR:R"bR;R<bR=R>bR?R"bR@^ÈbRARbRBR"bRCRbRDRERRF^2/RGRHRRRRRRRIR//RJRK^-RRRRRRRIR/RLRM/ //
# )NzOBuilt-in defaults for every config key the CLI reads (the file overlays these).)ÚDEFAULT_SANDBOX_IMAGErT   Údefaultr5   rV   rR   rn   rc   rM   re   rf   Ú.Ú	home_modeÚlifetime_secondsi,  Údocker_imageÚdocker_forward_envÚmodal_imageÚdaytona_imageÚdocker_volumesÚdocker_mount_cwd_to_workspaceFÚdocker_shared_container_keyrj   rk   Úrecord_sessionsÚengineÚcamofoxÚrewrite_loopback_urlsÚloopback_host_aliaszhost.docker.internalÚcompressionÚenabledTÚ	thresholdg      à?Úmin_tail_user_messagesr2   Ú	max_turnsiô  ÚverboseÚsystem_promptr4   Úreasoning_effortÚservice_tierÚpersonalitiesÚdisplayÚcompactÚresume_displayÚfullÚresume_exchangesÚresume_max_user_charsÚresume_max_assistant_charsÚresume_max_assistant_linesÚresume_skip_tool_onlyÚshow_reasoningÚreasoning_fullÚ	streamingÚbusy_input_modeÚ	interruptÚ
cli_layoutÚmodernÚpersistent_outputÚpersistent_output_max_linesÚ cli_rebuild_scrollback_on_redrawÚpersist_promptsÚskinÚcode_executionÚtimeoutÚmax_tool_callsrm   rQ   rX   Ú
delegationÚmax_iterationsÚ
onboardingÚseen)Úhermes_cli.config_defaultsr�   )Úimgs    r   Ú_cli_config_defaultsrÉ   ·   sü  € åGà�)˜R ¨R°¸VÐDØØ˜ ¨¨[¸&ÐBTÐVYØ˜CÐ!5°r¸=È#ÈÐ`cÐeuÐwyØ+¨UØ)¨2ð	
ð 	Ø  #Ð'8¸%ÀÈ6ØÐ/°Ð8MÐOeÐfð
ð
 	˜	 4¨°dÐ<TÐVWÐXØØ˜˜i¨°ÀÐE\Ð^`Ø  N°BØ˜Rð
ð
 	ð 
Ø�uð
ð ˜fð
ð '9¸"ð
ð ?VÐWZð
ð )¨#ð	
ð 0LÈQð	
ð QhÐimð	
ð
 ˜dð
ð
 %5°eð
ð
 >IÈ$ð
ð
 QbÐcnð
ð ˜(ð
ð   ð
ð (EÀcð
ð /°ð
ð ˜tð
ð �Ið
ð 	˜9 cÐ+;¸RÐ@Ø�h ¨V°W¸bÀ*ÈbÐR[Ð]_Ð `ÐaàÐ'¨¨W°b¸*ÀbÈ*ÐVXÐZcÐegÐhØ�v˜r�lðI%ð %r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r}   r/   Úfile_configr   ÚNoner   )r   s   "r   r   r   â   s'   € ÷ Bñ B ð B¸nð BÐQUñ Br   c                ó  € RV9   d¤   \        VR,          \        4      '       d   VR,          V R,          R&   Mr\        VR,          \        4      '       dV   V R,          P                  VR,          4       RVR,          9   d)   RVR,          9  d   VR,          R,          V R,          R&   VP	                  4        Fr  w  r#VR8X  d   K  \        V P                  V4      \        4      '       d<   \        V\        4      '       d   W,          P                  V4       Kb  Ve   W0V&   Kl  Kn  W0V&   Kt  	  VP                  R4      pRV9   dA   \        V\        4      '       d   VP                  R4      f   VR,          V R,          R&   R# R# R# )zeOverlay a parsed config file onto *defaults* in place (model normalization, deep merge, legacy keys).rT   r‘   Nr2   r¥   )r%   r   r9   Úupdater{   r7   )r}   rË   ÚkeyÚvalueÚagent_file_configs   &&   r   Ú_merge_file_configrÒ   â   sU  € ð �+ÔÜ�k 'Õ*¬C×0Ò0Ø+6°wÕ+?ˆH�WÕ˜iÒ(Ü˜ GÕ,¬d×3Ò3Ø�WÕ×$Ñ$ [°Õ%9Ô:à˜+ gÕ.Ô.°9ÀKÐPWÕDXÔ3XØ/:¸7Õ/CÀGÕ/L�˜Õ! )Ñ,ð "×'Ñ'Ö)‰
ˆØ�'Œ>ÙÜ�h—l‘l 3Ó'¬×.Ò.Ü˜%¤×&Ò&Ø•×$Ñ$ UÖ+ØÒ"Ø %˜“ñ #ð "�S‹Mñ *ð $Ÿ™¨Ó0ÐØ�kÔ!ÜÐ$¤d×+Ò+Ð0A×0EÑ0EÀkÓ0RÒ0^à)4°[Õ)Aˆ�Õ˜+Ó&ñ 1_ñ "r   c               ó   € V ^8„  d   QhRR/# )r   r   r/   r   )r   s   "r   r   r     s   € ÷ 'ñ '˜ñ 'r   c                 óš  € ^ RI Hp HpHpHp VR,          pVP                  4       '       d%   \        P                  P                  R4      R8X  d!   \        \        4      P                  R,          pV ! 4       pRpVP                  4       '       dO    \        VRRR	7      ;_uu_ 4       p^ R
IHp T! \        V4      ;'       g    / 4      p	RRR4       RX	9   pV! WY4       ^ RIHp V! V4      p^ RIHp VP-                  V4      pV! WV4       V#   + '       g   i     LL; i  \          d!   p
\"        P%                  RT
4        Rp
?
LhRp
?
ii ; i)z­~/.hermes/config.yaml (else ./cli-config.yaml) over built-in defaults; env vars win.

``HERMES_IGNORE_USER_CONFIG=1`` skips the user config entirely (``.env`` still loads).
)rÉ   r   rÒ   rŽ   zconfig.yamlÚHERMES_IGNORE_USER_CONFIGrh   zcli-config.yamlFr   r   r   )Ú_normalize_root_model_keysNrc   z"Failed to load cli-config.yaml: %s)Ú_expand_env_vars)Úmanaged_scope)r   rÉ   r   rÒ   rŽ   r   rw   rz   r7   r   Ú__file__Úparentr"   Úhermes_cli.configrÖ   r   r'   r    r!   r×   Ú
hermes_clirØ   Úapply_managed_overlay)rÉ   r   rÒ   rŽ   Úconfig_pathr}   r~   r)   rÖ   rË   r+   r×   rØ   s                r   Úload_cli_configrß     s  € ÷
 bÓaØ Õ.€KØ×Ñ×Ò¤2§:¡:§>¡>Ð2MÓ#NÐRUÔ#UÜœ8“n×+Ñ+Ð.?Õ?ˆá#Ó%€Hð !&Ðà×Ñ×Òð		DÜ�k 3°×=Õ=ÀÝHá8¼ÈÓ9J×9PÐ9PÈbÓQ�÷ >ð
 )3°kÑ(AÐ%Ù˜xÔ5õ
 3Ù Ó)€Hõ )à×2Ñ2°8Ó<€Há˜(Ô>à€O÷- >×=ûô ô 	DÜ�N‰NÐ?À×CÑCûð	Dús0   ÂD Â&"DÃD ÄD	ÄD ÄE
Ä*EÅE
c               ó   € V ^8„  d   QhRR/# )r   r   rÌ   r   )r   s   "r   r   r   -  s   € ÷ ñ ¨tñ r   c                 ó˜   aa€ ^ RI Ho R oV3R lV3R lV3R lVV3R lVV3R l3 F  p  V ! 4        K  	  R#   \         d     K  i ; i)	zPBest-effort startup side effects: logging, config warnings, skin, display knobs.)Úimport_modulec                óh   € \        4       P                  P                  R / 4      P                  W4      # )r«   )r   Ú
CLI_CONFIGr7   )rÏ   r‘   s   &&r   Ú_displayÚ7_init_logging_and_display_from_config.<locals>._display1  s(   € Ü‹v× Ñ ×$Ñ$ Y°Ó3×7Ñ7¸ÓEÐEr   c                 ó4   <€ S ! R 4      P                  RR7      # )Úhermes_loggingr   )Úmode)Úsetup_logging©Ú_ims   €r   Ú<lambda>Ú7_init_logging_and_display_from_config.<locals>.<lambda>5  s   ø€ ‘Ð$Ó%×3Ñ3¸Ð3Ô?r   c                 ó0   <€ S ! R 4      P                  4       # )zhermes_cli.config)Úprint_config_warningsrë   s   €r   rí   rî   6  s   ø€ ‘Ð'Ó(×>Ñ>Ô@r   c                 óV   <€ S ! R 4      P                  \        4       P                  4      # )zhermes_cli.skin_engine)Úinit_skin_from_configr   rä   rë   s   €r   rí   rî   7  s   ø€ ‘Ð,Ó-×CÑCÄDÃF×DUÑDUÔVr   c                 óf   <€ S! R 4      P                  \        S ! R^ 4      ;'       g    ^ 4      4      # )úagent.displayÚtool_preview_length)Úset_tool_preview_max_lenÚint©rå   rì   s   €€r   rí   rî   8  s,   ø€ ‘�OÓ$×=Ñ=¼cÁ(ÐK`ÐbcÓBd×BiÐBiÐhiÓ>jÔkr   c                 óR   <€ S! R 4      P                  \        S ! RR4      4      4      # )rô   Úfriendly_tool_labelsT)Úset_friendly_tool_labelsÚboolrø   s   €€r   rí   rî   9  s#   ø€ ‘�OÓ$×=Ñ=¼dÁ8ÐLbÐdhÓCiÓ>jÔkr   N)Ú	importlibrâ   r'   )Ústeprå   rì   s    @@r   Ú%_init_logging_and_display_from_configrÿ   -  sH   ù€ å.òFô 	@Ü@ÜVÝkÝkóˆð	ÙŽFóøô ô 	Úð	ús   ­:ºA	ÁA	)N) Údegraded_moderf   rÁ   r“   r”   r•   r–   r—   r˜   Úvercel_runtimeÚvercel_imageÚssh_hostÚssh_userÚssh_portÚssh_keyÚcontainer_cpuÚcontainer_memoryÚcontainer_diskÚcontainer_persistentr™   Ú
docker_envÚdocker_extra_argsÚdocker_shm_sizerš   Údocker_networkÚdocker_run_as_host_userÚdocker_snap_compatÚdocker_persist_across_processesr›   Údocker_orphan_reaperÚsandbox_dirÚpersistent_shell)r’   rn   rf   )Ú__doc__Ú
__future__r   r#   Úloggingrw   Úpathlibr   Útypingr   r   r   Úutilsr   Ú	getLoggerr    r   r,   r;   rB   rK   Úupperrb   r`   ra   rŽ   rÉ   rÒ   rß   rÿ   )rÏ   s   0r   Ú<module>r     s  ðñõ #ã Û Û 	Ý ß "Ñ "Ý  ð 
×	Ò	˜5Ó	!€ò÷õ2õõñ	óñ	ˆð ˆ9�S—Y‘Y“[�MÐ	"Ò"ñ	ñÐ ð % nÐqÐ8NÐqÐP_ÐapÑqÐ ð
 ØÐ/ØÐ)ØÐ/ØÐ-ð	ð ØÐ1ØÐ+ØÐ1ØÐ/ð	ðÐ ð  )Ð ò:Yòz(õVBõB'÷Tùòss   ÁB: