+
    iHàjðî ã            U      ó
  a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
Ht ^ RIHt ^ RI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 ^ R	IHt ^ R
IHtHtH t  ^ RI!H"t"H#t#H$t$ ^ RI%H&t& ^ RI'H(t(H)t) ^ RI*H+t+ ^ RI,H-t- ^ RI.H/t/ ^ RI0H1t1H2t2H3t3 ^ RI4H5t5H6t6 ^ RI7H8t8 ^ RI9H:t: ^ RI;H<t< ^ RI=H>t> ^ RI?H@t@HAtA ^ RIBHCtCHDtD ^ RIEHFtF ^ RIGHHtH ^ RIIHJtJ ^ RIKHLtL ^ RIMHNtNHOtO ]P                   ! R4      tQ]R! 4       tSR]TR &   R! R" ltUER R$ R% lltVR& R' ltWR(R)/R* R+ lltXR, R- ltYR. R/ ltZER!R0 R1 llt[R2R/R3 R4 llt\R5 t]R6 R7 lt^R8 R9 lt_R: R; lt`R< R= ltaR> R? ltbR@ RA ltcRB RC ltdRD RE lteRF RG ltfRH RI ltgRJ RK lthRL RM lti ! RN RO]4      tj0 ER"mtkRP tlRQ tmRR RS ltn/ RTR)bRUR)bRV]AbRWRbRXR)bRYRbRZ]PÞ                  bR[RbR\R)bR]]Pà                  bR^]PÞ                  bR_R`bRaRbRb]Pâ                  bRcRbRd]Pâ                  bRe]RbRf]Pâ                  Rg^ Rh]rRi]Pâ                  RjRRkRRl]Pâ                  /CtsRm]TRn&   / RoR)bRpR)bRqR)bRrRbRsR)bRtRu bRvRwbRx]/Pè                  bRyRzbR{RbR|^ bR}R)bR~^ bRRbR€RbR�RbR‚^ btuRm]TRƒ&   / R„]rbR…R`bR†R)bR‡RˆbR‰RŠbR‹RbRŒRbR�R)bRŽR#. . 3bR�RbR�R)bR‘]Pà                  bR’RbR“^ bR”R)bR•R`bR–R)btvRm]TR—&   R˜RR™R)Rš]+R›]>RœR#R�]RRž]Pâ                  RŸ^ R ]Pî                  R¡^ R¢R)R£RR¤RR¥RR¦]x/tyRm]TR§&   R¨ tzR© t{Rª t|ER#R« R¬ llt}R­ t~R® tR¯ t€R° R± lt�R² R³ lt‚R´ Rµ ltƒR¶ t„R· t…ER$R¸ R¹ llt†Rº]†! R»R¼4      3R½]†! R»R¾R`R¿7      3RÀ]†! RÁRÂ4      3RÃ]†! RÄRÅ4      3RÆRÇ 3RÈ]†! RÁRÉ4      3RÊ]†! RËRÌR`RÍ7      3RÎ]†! RÏRÐ4      3.t‡RÑ]TRÒ&   RÓ RÔ ltˆRÕ RÖ lt‰R× tŠRØ RÙ lt‹RÚ tŒRÛ t�RÜ RÝ ltŽER!RÞ lt�Rß t�RàER%/Rá Râ llt‘Rã Rä lt’Rå Ræ lt“Rç Rè lt”ER Ré Rê llt•Rë Rì lt–0 ER&mt—Rí Rî lt˜Rï Rð lt™Rñ Rò ltšRó Rô lt›ER!Rõ Rö lltœR÷t�Rø Rù ltžRú tŸRû t Rü t¡Rý t¢Rþ t£Rÿ t¤ER  t¥ER t¦ER t§/ ER^ bERR)bERRbERRbERR)bER^ bER	^ bER
^ bER^ bER^ bER^ bER^ bER^ bER^ bERRzbERERbERERbERER ERER /Ct¨Rm]TER&   RRRRRRRRR#]EPR                  RRR)R)R)ERR^dR#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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)^ER^
R)RRRR)RR3UER ER lltªER.t«R# ('  u  Implementation of :meth:`AIAgent.__init__` as ``init_agent(agent, ...)``.

``init_agent`` is a thin, ordered orchestrator over ``_init_*`` / ``_build_*`` phase
helpers (routing â†’ callbacks â†’ client â†’ tools â†’ session â†’ config sections â†’ compression â†’
context engine). Phase ORDER is load-bearing: later phases read attributes earlier ones set.
Symbols that tests patch on ``run_agent.*`` (``OpenAI``, ``get_tool_definitions``,
``logger``, â€¦) are resolved through :func:`_ra` so the patch contract is preserved.
)ÚannotationsN©Údeque)Úsuppress)Údatetime)ÚSimpleNamespace)ÚAnyÚCallableÚDictÚListÚOptional)Úparse_qsÚurlparseÚ
urlunparse)ÚContextCompressor)Ú_fallback_entriesÚ_init_fallback_chainÚ recompute_init_fallback_api_mode)Ú_CALLBACK_PARAMSÚ_GATEWAY_IDENTITY_PARAMSÚ_PASSTHROUGH_PARAMS)Ú_ra)ÚIterationBudgetÚnormalize_budget_warning_ratio)ÚStreamingContextScrubber)Úis_core_memory_provider)ÚActivityProvenance)ÚMINIMUM_CONTEXT_LENGTHÚfetch_model_metadataÚis_local_endpoint)Ú#_clamp_compressor_to_ollama_num_ctxÚ_configure_ollama_num_ctx)Ú_snapshot_primary_runtime)Ú_install_safe_stdio)ÚSubdirectoryHintTracker)ÚStreamingThinkScrubber)ÚToolCallGuardrailConfigÚToolCallGuardrailController)ÚDEFAULT_CONFIGÚcfg_get)Únormalize_route_base_url)Úget_provider_request_timeout©Úget_hermes_home)Únew_session_id)Úbase_url_host_matchesÚis_truthy_valueÚ	run_agentzset[tuple[str, str]]Ú_warned_unavailable_providersc               ó    € V ^8„  d   QhRRRR/# )é   ÚnameÚstrÚreturnztuple[str, str]© )Úformats   "Ú5/home/ubuntu/.hermes/hermes-agent/agent/agent_init.pyÚ__annotate__r;   ;   s   € ÷ 4ñ 4 3ð 4¨?ñ 4ó    c                ó0   € ^ RI HpHp V! V! 4       4      V 3# )zšOnce per profile home and provider: one multiplexed gateway/Desktop backend serves several
profiles, and each one running without its memory must be told.)r-   Úhermes_home_key)Úhermes_constantsr-   r>   )r5   r-   r>   s   &  r:   Ú_unavailable_warning_keyr@   ;   s   € ÷ BÙ™?Ó,Ó-¨tÐ3Ð3r<   Ú c               ó$   € V ^8„  d   QhRRRRRR/# )r4   r5   r6   Úreasonr7   ÚNoner8   )r9   s   "r:   r;   r;   B   s"   € ÷ ñ ¨Cð ¸ð ÐPTñ r<   c                óÒ   € \        V 4      pV\        9   d   R# \        P                  V4       RV : RV'       d   RV 2MR 2p\        P	                  V4       Ve   V! V4       R# R# )a°  Warn once per home and provider that a configured memory provider is unavailable.

``is_available()`` is a side-effect-free hot-path check and can't log itself; without this
the provider is silently dropped. ``reason`` (the provider's ``unavailable_reason()`` hint)
can only reach the user here, so it is appended when present. *say* is the agent's
user-facing sink: a log line alone leaves the user running without memory unaware.
Nu   âš  Memory provider u<   is selected but reports unavailable â€” external memory is disabled for this session (built-in memory still works). Check the provider's credentials/config with 'hermes memory status'. Note: systemd/gateway services do not inherit ~/.hermes/.env automatically; set any required variables in the service environment.Ú rA   )r@   r2   ÚaddÚloggerÚwarning)r5   rC   ÚsayÚkeyÚmessages   &&&  r:   Ú!_warn_memory_provider_unavailablerM   B   ss   € ô # 4Ó
(€CØ
Ô+Ô+ÙÜ!×%Ñ% cÔ*à
˜t™hð '=÷ NT¸qÀÀ¹\ÐY[Ð<\ð		^ð ô ‡N�N�7ÔØ
‚ÙˆGŽñ r<   c               ó    € V ^8„  d   QhRRRR/# )r4   Úproviderr6   r7   úset[str]r8   )r9   s   "r:   r;   r;   Z   s   € ÷ ñ  sð ¨xñ r<   c           
     ó   a€ \        4       oV3R lp\        \        4      ;_uu_ 4        ^ RIHpHp VP                  V 4      pV! V RR7      pV! \        VRR4      4       V! \        VRR4      4       RRR4       \        \        4      ;_uu_ 4        ^ R	IH	p V! \        V! V 4      RR4      4       RRR4       \        \        4      ;_uu_ 4        ^ R
I
Hp ^ RIHp ^ RIHp	 VP                  4        F-  w  r«V	! V! V
4      4      V 8X  g   K  V! \        VRR4      4       K/  	  RRR4       V R8X  d"   SP                  R \!        S4       4       4       S#   + '       g   i     Lì; i  + '       g   i     LÀ; i  + '       g   i     L`; i)z>Return known exact default routes for a canonical provider id.c                óT   <€ \        V 4      pV'       d   SP                  V4       R # R # ©N)r*   rG   )ÚvalueÚrouteÚroutess   & €r:   rG   Ú%_provider_default_routes.<locals>.add^   s!   ø€ Ü(¨Ó/ˆßØ�J‰J�uÖñ r<   )ÚHERMES_OVERLAYSÚget_providerF)Úallow_networkÚbase_url_overriderA   Úbase_urlN©Úget_provider_profile)ÚPROVIDER_REGISTRY©Únormalize_providerÚinference_base_urlÚgeminic              3  óH   "  € T F  qP                  R 4       R2x € K  	  R# 5i)Ú/z/openaiN)Úrstrip)Ú.0rU   s   & r:   Ú	<genexpr>Ú+_provider_default_routes.<locals>.<genexpr>w   s   é € ÐNÁ¸Ÿ™ cÓ*Ð+¨7Õ3Ãùs   ‚ ")Úsetr   Ú	ExceptionÚhermes_cli.providersrX   rY   ÚgetÚgetattrÚ	providersr^   Úhermes_cli.authr_   Úhermes_cli.modelsra   ÚitemsÚupdateÚlist)rO   rG   rX   rY   ÚoverlayÚprovider_defr^   r_   Únormalize_model_providerÚnormalize_registry_providerÚprovider_idÚconfigrV   s   &           @r:   Ú_provider_default_routesr{   Z   s&  ø€ ä“u€Fõô
 
”)×	Õ	ßFØ!×%Ñ% hÓ/ˆÙ# H¸EÔBˆÙŒG�GÐ0°"Ó5Ô6ÙŒG�L *¨bÓ1Ô2÷ 
ô 
”)×	Õ	Ý2ÙŒGÑ(¨Ó2°JÀÓCÔD÷ 
ô 
”)×	Õ	Ý5ÝTÝZØ#4×#:Ñ#:Ö#<ÑˆKÙ*Ñ+CÀKÓ+PÓQÐU]Ö]Ù”G˜FÐ$8¸"Ó=Ö>ñ $=÷	 
ð �8ÔØ�‰ÑNÄÀfÄÓNÔNØ€M÷+ 
×	ú÷ 
×	ú÷ 
×	ús*   ©A
EÂ E*Ã8E=ÄE=ÅE'	Å*E:	Å=F	Úalready_normalizedFc               ó0   € V ^8„  d   QhRRRRRRRRRRRR/# )	r4   Úconfigured_base_urlr   Úactive_base_urlÚconfigured_providerÚactive_providerr|   Úboolr7   r8   )r9   s   "r:   r;   r;   {   s>   € ÷ $ñ $Øð$Ø/2ð$ØILð$Ø_bð$àð$ð 
ñ$r<   c               óÂ  € V'       d   R M\         pV! V 4      V! V4      rvV'       d   Wg8g  # \        T;'       g    R4      P                  4       p\        T;'       g    R4      P                  4       pV'       g   R#  ^ RIHp V! V4      pV! V4      p\        \
        4      ;_uu_ 4        ^ RIHp	 V	! V4      pV	! V4      pRRR4       V'       d+   \        V4      p
V
'       d   Wz9  # T;'       d    W#8H  '       * # \        T;'       d    T;'       d    W#8g  4      #   \
         d$    TP                  4       pTP                  4       p L¶i ; i  + '       g   i     L”; i)zEReturn whether a context pin's configured route differs from runtime.c                ó,   € \        T ;'       g    R 4      # )rA   )r6   )Úvs   &r:   Ú<lambda>Ú)_context_route_mismatch.<locals>.<lambda>€   s   € ”s˜1Ÿ7˜7 ”|r<   rA   Fr`   N)r*   r6   Ústriprq   ra   rk   Úlowerr   rl   r{   r‚   )r~   r   r€   r�   r|   Ú_normÚconfigured_routeÚactive_routerw   rx   Úconfigured_routess   &&&&$      r:   Ú_context_route_mismatchrŽ   {   sC  € ÷
 );Ò#Ô@X€EÙ%*Ð+>Ó%?ÁÀÓAW�lßØÑ/Ð/äÐ1×7Ð7°RÓ8×>Ñ>Ó@ÐÜ˜/×/Ð/¨RÓ0×6Ñ6Ó8€OßÙð2ÝTÙ6Ð7JÓKÐÙ2°?ÓCˆô 
”)×	Õ	ÝZÙ9Ð:MÓNÐÙ5°oÓFˆ÷ 
÷
 Ü4Ð5HÓIÐßØÑ8Ð8ð $×NÐNÐ(;Ñ(NÔOÐOÜØ×ZÐZ ×ZÐZÐ4GÑ4Zóð øô! ô 2Ø1×7Ñ7Ó9ÐØ)×/Ñ/Ó1Šð2ú÷ 
×	ús   Á>D Â+EÄ+EÅ
EÅE	c               ó    € V ^8„  d   QhRRRR/# ©r4   rT   r   r7   r6   r8   )r9   s   "r:   r;   r;   ¢   s   € ÷ >ñ >¨3ð >°3ñ >r<   c                ó„   € \        T ;'       g    R4      P                  4       P                  4       P                  RR4      # )zFMirror runtime normalization for a requested custom-provider identity.rA   rF   Ú-)r6   rˆ   r‰   Úreplace©rT   s   &r:   Ú_normalize_custom_provider_namer•   ¢   s2   € äˆu�{ˆ{˜Ó×!Ñ!Ó#×)Ñ)Ó+×3Ñ3°C¸Ó=Ð=r<   c               ó    € V ^8„  d   QhRRRR/# )r4   rT   r   r7   rP   r8   )r9   s   "r:   r;   r;   §   s   € ÷ 0ñ 0¨ð 0°ñ 0r<   c                óJ   € \        V 4      pV'       g   \        4       # VRV 20# )zFReturn raw/menu identities that runtime accepts for a configured name.úcustom:)r•   rj   )rT   Ú
normalizeds   & r:   Ú_custom_provider_runtime_idsrš   §   s(   € ä0°Ó7€JßÜ‹uˆØ˜' * Ð.Ð/Ð/r<   c               ó$   € V ^8„  d   QhRRRRRR/# )r4   Ú	autoraiseúdict[str, Any]Úcontext_lengthúOptional[int]r7   r6   r8   )r9   s   "r:   r;   r;   ¯   s$   € ÷ ñ ØðØ/<ðàñr<   c           	     óÎ  € \        V P                  R4      ;'       g    R4      P                  4       P                  4       P	                  R^4      R,          p\        V\        4      '       d   V^ 8”  d   \        VR,          4       R2pMVP                  R4      '       d   RMRp\        V R	,          ^d,          4      p\        V R
,          ^d,          4      pRV RV RV RV R2	# )ad  One-time notice when Codex gpt-5.x raises compaction (``autoraise``: model/from/to).

``context_length`` is the live-resolved window (Codex's catalog shifts server-side) so the
banner reports what this session got. Printed for CLI and replayed via status_callback for
gateway users, so it must be self-contained and include the exact opt-back-out command.
Úmodelzgpt-5.4/5.5re   éè  ÚKzgpt-5.3-codex-sparkÚ128KÚ272KÚfromÚtou
   â„¹ Codex z caps context at z#, so auto-compaction was raised to z% (from zz%) to use more of the window before summarizing.
  Opt back out: hermes config set compression.codex_gpt55_autoraise falseéÿÿÿÿ)	r6   rm   rˆ   r‰   ÚrsplitÚ
isinstanceÚintÚroundÚ
startswith)rœ   rž   r¡   ÚcapÚfrom_pctÚto_pcts   &&    r:   Ú"_build_codex_gpt5_autoraise_noticer±   ¯   sá   € ô �	—‘˜gÓ&×7Ð7¨-Ó8×>Ñ>Ó@×FÑFÓH×OÑOÐPSÐUVÓWÐXZÕ[€EÜ�.¤#×&Ò&¨>¸AÔ+=Ü�~¨Õ,Ó-Ð.¨aÐ0‰ð ×(Ñ(Ð)>×?Ò?‰fÀVˆÜ�Y˜vÕ&¨Õ,Ó-€HÜ�9˜T•? SÕ(Ó)€Fà
�U�GÐ,¨S¨Eð 2ØˆX�X˜h˜Zð (Tð	Uðr<   r¡   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r4   Úglobal_thresholdÚfloatÚmodel_cthreshúOptional[float]r¡   úOptional[str]Úis_codex_autoraiser‚   r7   z&tuple[float, Optional[dict[str, Any]]]r8   )r9   s   "r:   r;   r;   È   s6   € ÷ ñ ØðØ,;ðØGTðàðð ,ñr<   c               ó`   € Vf   V R3# V'       d   WR,           8:  d   V R3# VRVRV RV/3# VR3# )uB  Global compaction threshold merged with a per-model override.

Returns ``(threshold, autoraise_notice)``; the notice is set only when a Codex autoraise
actually RAISES the threshold â€” it never lowers a higher user value (the user deliberately
keeps more raw context). Other overrides (Arcee Trinity) stay unconditional.
Ng•Ö&è.>r¡   r¦   r§   r8   )r³   rµ   r¡   r¸   s   &&$$r:   Ú_resolve_compression_thresholdrº   È   sR   € ð ÒØ Ð%Ð%ßØ¨tÕ3Ô3Ø# TÐ)Ð)Ø˜w¨¨vÐ7GÈÈ}Ð]Ð]Ð]Ø˜$ÐÐr<   c                 ó$   € \        4       R,          # )zOPer-profile marker path (``$HERMES_HOME`` is profile-scoped; not a config key).z.codex_gpt55_autoraise_noticer,   r8   r<   r:   Ú$_codex_gpt55_autoraise_notice_markerr¼   Û   s   € äÓÐ>Õ>Ð>r<   c               ó    € V ^8„  d   QhRRRR/# )r4   rœ   r�   r7   r6   r8   )r9   s   "r:   r;   r;   à   s   € ÷ 	*ñ 	*°>ð 	*Àcñ 	*r<   c                óL  € \        V P                  R4      ;'       g    R4      P                  4       P                  4       P	                  R^4      R,          p\        \        V R,          4      ^d,          4      p\        \        V R,          4      ^d,          4      pV RV RV 2# )uÔ   Notice identity keyed on what it displays (model + fromâ†’to percentages).

An unchanged threshold stays silent across restarts; a changed global threshold or a
different autoraised Codex model re-notifies once.
r¡   rA   re   r¦   r§   Ú:r¨   )r6   rm   rˆ   r‰   r©   r¬   r´   )rœ   r¡   r¯   r°   s   &   r:   Ú#_codex_gpt55_autoraise_notice_staterÀ   à   s‹   € ô �	—‘˜gÓ&×,Ð,¨"Ó-×3Ñ3Ó5×;Ñ;Ó=×DÑDÀSÈ!ÓLÈRÕP€EÜ”U˜9 VÕ,Ó-°Õ3Ó4€HÜ”5˜ 4�Ó)¨CÕ/Ó0€FØˆW�A�h�Z˜q  Ð)Ð)r<   c               ó    € V ^8„  d   QhRRRR/# )r4   rœ   r�   r7   r‚   r8   )r9   s   "r:   r;   r;   ì   s   € ÷ ñ °.ð ÀTñ r<   c                ó´   €  \        V 4      p\        4       P                  RR7      P                  4       V8H  #   \        \
        \        \        3 d     R# i ; i)zSTrue if this exact notice was already shown for this profile (unreadable = unseen).úutf-8©ÚencodingF)rÀ   r¼   Ú	read_textrˆ   ÚOSErrorÚKeyErrorÚ	TypeErrorÚ
ValueError)rœ   Úcurrents   & r:   Ú"_codex_gpt55_autoraise_notice_seenrÌ   ì   s[   € ðÜ5°iÓ@ˆÜ3Ó5×?Ñ?Øð @ó 
ç
‰%‹'�Wñð 	øô ”Xœy¬*Ð5ô Úðús   ‚58 ¸AÁAc               ó    € V ^8„  d   QhRRRR/# )r4   rœ   r�   r7   rD   r8   )r9   s   "r:   r;   r;   ÷   s   € ÷ \ñ \°Nð \Àtñ \r<   c                ó  € \        \        \        \        \        4      ;_uu_ 4        \        4       pVP                  P                  RRR7       VP                  \        V 4      RR7       RRR4       R#   + '       g   i     R# ; i)zQPersist that the notice was shown. Best-effort: a failure only re-shows it later.T©ÚparentsÚexist_okrÃ   rÄ   N)
r   rÇ   rÈ   rÉ   rÊ   r¼   ÚparentÚmkdirÚ
write_textrÀ   )rœ   Úmarkers   & r:   Ú$_record_codex_gpt55_autoraise_noticerÖ   ÷   s[   € ä	”'œ8¤Y´
×	;Õ	;Ü5Ó7ˆØ�‰×Ñ D°4ÐÔ8Ø×ÑÔ=¸iÓHÐSZÐÔ[÷ 
<×	;×	;Ò	;ús   §AA5Á5B	c               ó    € V ^8„  d   QhRRRR/# r�   r8   )r9   s   "r:   r;   r;   ÿ   s   € ÷ %ñ % sð %¨sñ %r<   c                óp   € \        V \        4      '       g   R # V P                  4       P                  R4      # )rA   re   )rª   r6   rˆ   rf   r”   s   &r:   Ú_normalized_custom_base_urlrÙ   ÿ   s)   € Ü�eœS×!Ò!ÙØ�;‰;‹=×Ñ Ó$Ð$r<   c               ó$   € V ^8„  d   QhRRRRRR/# )r4   Úagent_modelr6   Úentryr�   r7   r‚   r8   )r9   s   "r:   r;   r;     s&   € ÷ 
Vñ 
V°ð 
V¸Nð 
VÈtñ 
Vr<   c                ó*  € \        T ;'       g    R 4      P                  4       P                  4       pVP                  R4      p\	        V\
        \        \        34      '       d8   V Uu. uF*  p\        V4      P                  4       P                  4       NK,  	  upM. pV'       d	   W%9   d   R# \        VP                  RR 4      ;'       g    R 4      P                  4       P                  4       pV'       * ;'       d    V'       * ;'       g    Wb8H  # u upi )rA   ÚmodelsTr¡   )r6   rˆ   r‰   rm   rª   Údictrt   Útuple)rÛ   rÜ   Úagent_model_normrÞ   ÚmÚcatalogÚprovider_models   &&     r:   Ú_custom_provider_model_matchesrå     sÔ   € Ü˜;×,Ð,¨"Ó-×3Ñ3Ó5×;Ñ;Ó=Ðð �Y‰Y�xÓ €FÜ:DÀVÌdÔTXÔZ_ÐM`×:aÒ:a©vÓ6©v¨!Œs�1‹v�|‰|‹~×#Ñ#Ö%©vÒ6Ðgi€GßÐ#Ô.ÙÜ˜Ÿ™ 7¨BÓ/×5Ð5°2Ó6×<Ñ<Ó>×DÑDÓF€NØÔ×.Ð. w¤;×UÐU°>Ñ3UÐUùò	 7s   Á(0Dc          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r4   rO   r6   r¡   r\   Úcustom_providersúlist[dict[str, Any]]r7   úOptional[dict[str, Any]]r8   )r9   s   "r:   r;   r;     s4   € ÷ ñ ØðØ ðØ,/ðØCWðàñr<   c                ó  € T ;'       g    R P                  4       P                  4       pVR8w  d   VP                  R4      '       g   R# VP                  R4      ^,          P                  4       p\	        V4      pV'       g   R# RpT;'       g    .  EFm  p\        V\        4      '       g   K  \        VP                  RR 4      ;'       g    R 4      P                  4       P                  4       \        VP                  RR 4      ;'       g    R 4      P                  4       P                  4       0p	V'       d	   WY9  d   K®  \	        VP                  R4      4      V8w  d   KÏ  VP                  R4      p
\        V
\        4      '       d	   V
'       g   EK  \        VP                  R	R 4      ;'       g    R 4      P                  4       '       d"   \        W4      '       d   \        V
4      u # EK[  Ve   EKb  \        V
4      pEKp  	  V# )
rA   Úcustomr˜   Nr¿   Úprovider_keyr5   r\   Ú
extra_bodyr¡   )
rˆ   r‰   r­   Ú	partitionrÙ   rª   rß   r6   rm   rå   )rO   r¡   r\   rç   Úprovider_normÚprovider_key_filterÚ
target_urlÚfallbackrÜ   Ú
entry_keysrí   s   $$$$       r:   Ú%_custom_provider_extra_body_for_agentrô     s–  € ð —^�^ ×*Ñ*Ó,×2Ñ2Ó4€MØ˜Ô ¨×)AÑ)AÀ)×)LÒ)LÙØ'×1Ñ1°#Ó6°qÕ9×?Ñ?ÓAÐÜ,¨XÓ6€JßÙà)-€HØ!×'Ð' RÓ'ˆÜ˜%¤×&Ò&Ùä�—	‘	˜.¨"Ó-×3Ð3°Ó4×:Ñ:Ó<×BÑBÓDÜ�—	‘	˜& "Ó%×+Ð+¨Ó,×2Ñ2Ó4×:Ñ:Ó<ð
ˆ
÷ Ð#6Ô#HÙÜ& u§y¡y°Ó'<Ó=ÀÔKÙØ—Y‘Y˜|Ó,ˆ
Ü˜*¤d×+Ò+·:ÚÜˆu�y‰y˜ "Ó%×+Ð+¨Ó,×2Ñ2×4Ò4Ü-¨e×;Ò;Ü˜JÓ'Ò'ò <àÕÜ˜JÓ'‹Hñ% (ð& €Or<   c               ó    € V ^8„  d   QhRRRR/# )r4   rç   rè   r7   rD   r8   )r9   s   "r:   r;   r;   4  s   € ÷ (ñ (Ð?Sð (ÐX\ñ (r<   c                óN  € \        V P                  V P                  V P                  VR 7      pV'       g   R# \	        \        V R/ 4      ;'       g    / 4      p\	        V4      pVP                  R4      p\        V\        4      '       d   VP                  V4       WCR&   W0n	        R# ))rO   r¡   r\   rç   NÚrequest_overridesrí   )
rô   rO   r¡   r\   rß   rn   rm   rª   rs   r÷   )Úagentrç   rí   Ú	overridesÚmerged_extra_bodyÚexisting_extra_bodys   &&    r:   Ú!_merge_custom_provider_extra_bodyrü   4  s‹   € Ü6Ø—‘ u§{¡{¸U¿^¹^Ø)ô€J÷ ÙÜ”W˜UÐ$7¸Ó<×BÐBÀÓC€IÜ˜ZÓ(ÐØ#Ÿ-™-¨Ó5ÐÜÐ%¤t×,Ò,Ø× Ñ Ð!4Ô5Ø/ˆlÑØ'Ör<   c               ó   € V ^8„  d   QhRR/# )r4   r7   r¶   r8   )r9   s   "r:   r;   r;   D  s   € ÷ ,ñ ,¨Oñ ,r<   c                ó˜   € V e   \        V \        4      '       d   R#  \        V 4      pT^ 8”  d   T# R#   \        \        3 d     R# i ; i)uU   Positive float or None (feature off). ``bool`` rejected: YAML ``true`` â†’ 1s budget.N)rª   r‚   r´   rÉ   rÊ   )rT   Úsecondss   & r:   Ú_normalize_run_budget_secondsr   D  sP   € à‚}œ
 5¬$×/Ò/ÙðÜ˜“,ˆð  ”kˆ7Ð+ tÐ+øô ”zÐ"ô Úðús   ž4 ´A	ÁA	c               ó$   € V ^8„  d   QhRRRRRR/# )r4   Úcheckpoint_requiredr‚   Úapi_moder·   r7   rD   r8   )r9   s   "r:   r;   r;   P  s$   € ÷ 
ñ 
Øð
Ø)6ð
à	ñ
r<   c                ó>   € V '       d   VR8X  d   \        R4      hR# R# )uô   Fail closed at init: the codex app-server compacts its own thread without a truthful
pre-compaction boundary (default "native" mode), so a required checkpoint can't be
guaranteed â€” the compress_context() guard alone cannot cover native turns.Úcodex_app_serveraV  BLOCKED_MISSING_PREREQUISITE: compression.checkpoint_required is incompatible with the codex_app_server API mode: the codex agent compacts its own thread without a truthful pre-compaction transcript boundary, so a required pre-compress checkpoint cannot be guaranteed. Disable compression.checkpoint_required or use a non-app-server API mode.N)ÚRuntimeError)r  r  s   &&r:   Ú/_refuse_checkpoint_required_on_codex_app_serverr  P  s)   € ÷ ˜xÐ+=Ô=Üð0ó
ð 	
ñ  >Ñr<   c               ó$   € V ^8„  d   QhRRRRRR/# )r4   Úrawr   Údefaultr«   r7   r8   )r9   s   "r:   r;   r;   a  s!   € ÷ ñ ˜3ð ¨ð °ñ r<   c                óL  € \        V \        4      '       d   V# \        V \        4      '       d   V # \        V \        4      '       d$   V P	                  4       '       d   \        V 4      # T#  \        \        V 4      P                  4       4      #   \        \        3 d    Tu # i ; i)uN   Strict int coercion: rejects bool (YAML ``true`` â†’ 1) and fractional floats.)	rª   r‚   r«   r´   Ú
is_integerr6   rˆ   rÉ   rÊ   )r	  r
  s   &&r:   Ú_parse_config_intr  a  s‚   € ä�#”t×ÒØˆÜ�#”s×ÒØˆ
Ü�#”u×ÒØŸ>™>×+Ò+Œs�3‹xÐ8°Ð8ðÜ”3�s“8—>‘>Ó#Ó$Ð$øÜ”zÐ"ô ØŠðús   Á+!B ÂB#Â"B#c               ó(   € V ^8„  d   QhRRRRRRRR/# )r4   Úcfgr�   rK   r6   r
  r‚   r7   r8   )r9   s   "r:   r;   r;   o  s.   € ÷ Fñ F�>ð F¨ð F°dð F¸tñ Fr<   c                óX   € \        V P                  W4      4      P                  4       R9   # )zALegacy string-set truthiness used by the ``compression`` section.>   Ú1ÚyesÚtrue)r6   rm   r‰   )r  rK   r
  s   &&&r:   Ú	_cfg_flagr  o  s%   € äˆs�w‰w�sÓ$Ó%×+Ñ+Ó-Ð1EÑEÐEr<   c               ó$   € V ^8„  d   QhRRRRRR/# )r4   r  r�   rK   r6   r7   r8   )r9   s   "r:   r;   r;   t  s!   € ÷ 8ñ 8�>ð 8¨ð 8°ñ 8r<   c                óZ   € V P                  V/ 4      p\        V\        4      '       d   V# / # )zN``cfg[key]`` if it is a mapping, else ``{}`` (malformed sections are ignored).)rm   rª   rß   )r  rK   Úsections   && r:   Ú	_cfg_dictr  t  s)   € à�g‰g�c˜2Ó€GÜ  ¬$×/Ò/ˆ7Ð7°RÐ7r<   c                  ó   € ] tR tRtRtRtR# )ÚCompressionSettingsiz  zJParsed ``compression`` config section (see ``_parse_compression_config``).r8   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r8   r<   r:   r  r  z  s   † ÝTr<   r  c                ó˜  € ^ RI Hp ^ RIHp V P                  V P
                  rvV! V P                  V4      '       d
   RV n        R# V\        9   g   V'       d   W! 4       9   d	   Wn        R# V P                  R9   d
   RV n        R# Vf   VR8X  d   R	V9   d   RV n        RV n        R# Vf   VR
8X  d   RV n        RV n        R# V P                  R8X  g   Vf   VR8X  d   RV n        RV n        R# VP                  R4      P                  R4      '       d
   RV n        R# V P                  R8X  g*   VP                  R4      '       d   \        VR4      '       d
   RV n        R# V P                  R9   d    ^ RI Hp V! V P                  4      V n        R#  ^ RI Hp	 T	! T;'       g    R4      p
V
e   T
MRV n        R#   \          d    Rp
 Li ; i)uT   Set ``agent.api_mode`` (and provider rewrites) â€” ordered ladder, first match wins.©Úis_actual_route)Úregistered_api_modesÚchat_completionsúopenai-codexÚxaiÚcodex_responsesNúchatgpt.comz/backend-api/codexzapi.x.aiÚ	anthropiczapi.anthropic.comÚanthropic_messagesre   z
/anthropicÚbedrockzbedrock-runtime.zamazonaws.comÚbedrock_converse)Únous_api_mode)Úhost_mandated_api_moderA   >   r'  ú	xai-oauthr&  >   ÚnousÚnousresearchúnous-portal)rl   r#  Úagent.transportsr$  Ú_base_url_hostnameÚ_base_url_lowerrO   r  Ú_EXPLICIT_API_MODESrf   Úendswithr­   r/   r.  r¡   r/  rk   )rø   r  Úprovider_namer\   r#  r$  ÚhostÚurlr.  Ú_host_mandated_api_modeÚ	_mandateds   &&&&       r:   Ú_resolve_api_moder>  „  s~  € å4Ý5Ø×(Ñ(¨%×*?Ñ*?ˆ#Ù�u—~‘~ x×0Ò0Ø+ˆŽØ	Ô(Ô	(¯X¸(ÐFZÓF\Ô:\ð "ŽØ	�‰Ð?Ô	?Ø*ˆŽØ	Ò	 4¨=Ô#8Ð=QÐUXÔ=XØ*ˆŒØ'ˆŽØ	Ò	 4¨:Ô#5Ø*ˆŒØˆŽØ	�‰˜;Ô	&¨=Ò+@ÀTÐM`ÔE`Ø-ˆŒØ$ˆŽØ	�‰�C‹×	!Ñ	! ,×	/Ò	/à-ˆŽØ	�‰˜9Ô	$Ø�‰Ð*×+Ò+Ô0EÀcÈ?×0[Ò0[à+ˆŽØ	�‰ÐBÔ	Bõ 	7Ù& u§{¡{Ó3ˆŽð
		õ _Ù/°·°¸BÓ?ˆIð '0Ò&;™ÐASˆŽøô ô 	ØŠIð	ús   ÆF9 Æ#F9 Æ9G	ÇG	c                ó¬  € ^ RI Hp Ve3    ^ RIHp V! W P                  V P
                  R7      '       g   RV n        \        \        4      ;_uu_ 4        V P                  4        RRR4       V P                  R8X  d.   \        \        4      ;_uu_ 4        ^ RI
Hp V! 4        RRR4       \        \        4      ;_uu_ 4        ^ RIHpHp V P                  V9  d#   V! V P                  V P                  4      V n        RRR4       ^ RIHp V! V P                  V P
                  V P                  4      V n        ^ R	IHp	 \)        V P
                  ;'       g    R
4      P+                  4       p
Vfð   V P,                  R8X  dß   V! V P                  V P
                  4      '       g¼   V
P/                  R4      '       g¥   V	! V P                  4      '       g�   V P1                  4       '       gw   V P3                  4       '       g.   V P5                  V P                  V P                  R7      '       d4   RV n        \7        V R4      '       d   V P8                  P;                  4        V P                  R8X  g   V P=                  4       '       dz   \?        4       P@                  PC                  4       '       gP   \?        4       P@                  PE                  4        \F        PH                  ! \J        RRR7      PM                  4        R# R# R#   \         d    RT n         ELÙi ; i  + '       g   i     EL¾; i  + '       g   i     EL”; i  + '       g   i     ELM; i)é    r"  N)Ú credential_pool_matches_provider©r\   r1  )Ústart_nous_auth_keepalive)Ú_AGGREGATOR_PROVIDERSÚnormalize_model_for_provider)Úpin_model_for_route©Ú_is_external_process_providerrA   r%  ©rO   r(  Ú_transport_cacheÚ
openrouterTzopenrouter-prewarm)ÚtargetÚdaemonr5   )zacp://z
acp+tcp://)'rl   r#  Úagent.credential_poolrA  rO   r\   Ú_credential_poolrk   r   Ú_get_transportÚhermes_cli.nous_auth_keepaliverC  Úhermes_cli.model_normalizerD  rE  r¡   Úhermes_cli.anon_authrF  Ú$hermes_cli.runtime_provider_backendsrH  r6   r‰   r  r­   Ú_is_azure_openai_urlÚ_is_direct_openai_urlÚ&_provider_model_requires_responses_apiÚhasattrrJ  ÚclearÚ_is_openrouter_urlr   Ú_openrouter_prewarm_doneÚis_setrj   Ú	threadingÚThreadr   Ústart)rø   r  Úcredential_poolr#  rA  rC  rD  rE  rF  rH  Ú_base_lowers   &&&        r:   Ú_finalize_routingrb  ·  s`  € Ý4ð
 Ò"ð	*ÝNÙ3Ø§¡¸%¿.¹.÷ó ð *.�Ô&ô
 
”)×	Õ	Ø×ÑÔ÷ 
ð ‡~�~˜ÔÜ”i× Õ ÝPÙ%Ô'÷ !ô 
”)×	Õ	÷	
ð �>‰>Ð!6Ô6Ù6°u·{±{ÀEÇNÁNÓSˆEŒK÷ 
õ 9Ù% e§n¡n°e·n±nÀeÇkÁkÓR€E„Kõ Sä�e—n‘n×*Ð*¨Ó+×1Ñ1Ó3€Kð 	ÒØ�N‰NÐ0Ô0Ù §¡°·±×?Ò?Ø×&Ñ&Ð'?×@Ò@Ù-¨e¯n©n×=Ò=Ø×*Ñ*×,Ò,à×'Ñ'×)Ò)Ø×;Ñ;¸E¿K¹KÐRW×R`ÑR`Ð;×aÒað +ˆŒä�5Ð,×-Ò-Ø×"Ñ"×(Ñ(Ô*ð 	�‰˜,Ô&¨%×*BÑ*B×*DÒ*DÜ“×.Ñ.×5Ñ5×7Ò7Ü‹×&Ñ&×*Ñ*Ô,Ü×ÒÜ'°Ð;Oô	
ç
‰%Ž'ñ	 8ñ +EøôC ô 	*Ø%)ˆE×"ð	*ú÷ 
×	Ð	ú÷ !× Ð ú÷ 
×	Ð	ús5   Œ1L ÁLÂL.Ã<MÌLÌLÌL+	Ì.L?	ÍM	c               ó    € V ^8„  d   QhRRRR/# )r4   Útabler�   r7   rD   r8   )r9   s   "r:   r;   r;     s   € ÷ Dñ D ð D°4ñ Dr<   c                ó€   € VP                  4        F)  w  r#\        Y\        V4      '       d   V! 4       MT4       K+  	  R# )zVAssign each ``name -> value`` on ``agent``; callables are factories (fresh per agent).N)rr   ÚsetattrÚcallable)rø   rd  r5   rT   s   &&  r:   Ú_set_defaultsrh    s*   € à—{‘{–}‰ˆÜ�¬°¯ª™UœW¸UÖCó %r<   Ú_executing_toolsÚ_trim_after_tool_batchÚ_tool_guardrailsÚ_tool_guardrail_halt_decisionÚ_interrupt_requestedÚ_interrupt_messageÚ_hard_interrupt_requestedÚ_execution_thread_idÚ _interrupt_thread_signal_pendingÚ_client_lockÚ_model_request_activeÚ_supports_active_turn_redirectTÚ_pending_steerÚ_pending_steer_lockÚ_pending_redirectÚ_pending_redirect_lockÚ_tool_worker_threadsÚ_tool_worker_threads_lockÚ_delegate_depthÚ_active_childrenÚ_active_children_lockÚ_background_review_agentÚ_background_review_runÚ_background_review_lockr�   Ú_CONTROL_STATEÚ"_iteration_budget_warning_injectedÚ_budget_exhausted_injectedÚ_budget_grace_callÚ_run_budget_started_atÚ_run_budget_wrapup_injectedÚ_last_activity_tsc                 ó,   € \         P                   ! 4       # rS   )Útimer8   r<   r:   r†   r†   E  s
   € ¤§¢¤r<   Ú_last_activity_descÚinitializingÚ_last_activity_provenanceÚ#_session_activity_last_persist_monog        Ú_current_toolÚ_api_call_countÚ_skip_mcp_refreshÚ_tool_snapshot_generationÚ_rate_limit_stateÚ_credits_stateÚ_credits_session_start_microsÚ_or_cache_hitsÚ_TURN_STATEÚ_session_messagesÚ_codex_reasoning_replay_enabledÚ _codex_reasoning_replay_rejectedÚ_memory_write_originÚassistant_toolÚ_memory_write_contextÚ
foregroundÚ_cached_system_promptÚ_cached_system_prompt_staticÚ_auto_load_skills_resolvedÚ_auto_load_skills_resultÚ_frozen_workspace_snapshotÚ_owns_session_dbÚ_session_persist_lockÚ_pending_cli_user_messageÚ_last_flushed_db_idxÚ_session_db_createdÚ_end_session_on_closeÚ_persist_disabledÚ_SESSION_STATEÚ_stream_callbackÚ_stream_needs_breakÚ_stream_context_scrubberÚ_stream_think_scrubberÚ _current_streamed_assistant_textÚ_delivered_interim_textsÚ_stream_writer_lockÚ_stream_writer_tokenÚ_stream_writer_tlsÚ_stream_writer_droppedÚ_stream_options_unsupportedÚ_persist_user_message_idxÚ_persist_user_message_overrideÚ_persist_user_message_timestampÚ_anthropic_image_fallback_cacheÚ_STREAM_STATEc                ó  € V P                  4       w  V n        V n        R V n        RV n        \        \        4      ;_uu_ 4        ^ RIHp ^ RI	H
p ^ RIHpHp V! 4       P                  R/ 4      ;'       g    / pVP                  RR4      pVR9   d   W`n        MUWc8X  d&   ^ RIHp V! V! \#        V RR	4      4      4      V n        M*V! V4      '       d   R V n        R V n        R	V n        R
V n        R	R	R	4       R	#   + '       g   i     R	# ; i)FÚ5m©Úload_config_readonly)Úcache_ttl_means_disabled)ÚAUTO_CACHE_TTLÚauto_cache_ttl_for_sourceÚprompt_cachingÚ	cache_ttl)Úsession_source_forÚplatformNT>   Ú1hr¼  )Ú_anthropic_prompt_cache_policyÚ_use_prompt_cachingÚ_use_native_cache_layoutÚ_cache_disabledÚ
_cache_ttlr   rk   Úhermes_cli.configr¾  Úagent.agent_runtime_helpersr¿  Úagent.prompt_cachingrÀ  rÁ  rm   Úagent.session_sourcerÄ  rn   )rø   Ú_load_pc_cfgr¿  rÀ  rÁ  Ú_pc_cfgÚ_ttlrÄ  s   &       r:   Ú_init_prompt_cache_configrÓ  �  sç   € ð 	×,Ñ,Ó.ñ >€EÔ˜uÔ=ð "€EÔð €EÔÜ	”)×	Õ	ÝJÝHßRÙ“.×$Ñ$Ð%5°rÓ:×@Ð@¸bˆØ�{‰{˜;¨Ó-ˆØ�<ÔØ#ÕØÔ#õ @Ù8Ñ9KÌGÐTYÐ[eÐgkÓLlÓ9mÓnˆEÕÙ% d×+Ò+Ø(-ˆEÔ%Ø-2ˆEÔ*Ø#ˆEÔØ$(ˆEÔ!÷# 
×	×	Ò	ús   ÁBC8ÃC8Ã8D		c                ój   € \        V \        4       \        V4      V n        ^ RIHp V! 4       V n        R# )r@  )Únew_credits_latchN)rh  r–  r   Úrun_budget_secondsÚagent.credits_trackerrÕ  Ú_credits_latch)rø   rÖ  rÕ  s   && r:   Ú_init_turn_staterÙ  Â  s*   € Ü�%œÔ%ô  =Ð=OÓP€EÔÝ7Ù,Ó.€EÖr<   c                ó´   € ^ RI HpHp V! \        4       R7       V P                  '       d-   V! 4        \        4       P                  P                  R4       R# R# )r@  )Úsetup_loggingÚsetup_verbose_logging)Úhermes_homez=Verbose logging enabled (third-party library logs suppressed)N)Úhermes_loggingrÛ  rÜ  r-   Úverbose_loggingr   rH   Úinfo)rø   rÛ  rÜ  s   &  r:   Ú_setup_loggingrá  Ë  sA   € ÷ Dñ
 œoÓ/Õ0à××ÐÙÔÜ‹�‰×ÑÐYÖZñ r<   c               ó$   € V ^8„  d   QhRRRRRR/# )r4   Úlabelr6   Úwarn_missingr‚   r7   rD   r8   )r9   s   "r:   r;   r;   Ü  s&   € ÷ 	Eñ 	E #ð 	E°Tð 	EÀdñ 	Er<   c           
     ó  € ^ RI Hp V! V 4      ;p'       d   \        RV 24       R# \        V \        4      '       d1   \        V 4      ^8”  d!   \        RV RV R,           RV R	R  24       R# V'       d   \        R4       R# R# )
uº   Masked credential line. A callable ``key`` (Entra ID, Vertex OAuth, key_cmd, ...) is labelled
by its tagged source and never invoked. Keys â‰¤ 12 chars (incl. "dummy-key") are not shown.)Úcredential_labelu   ðŸ”‘ Using credentials: u   ðŸ”‘ Using ú: :Né   Nú...Nu3   âš ï¸�  Warning: API key appears invalid or missingéüÿÿÿ)Úagent.credential_sourceræ  Úprintrª   r6   Úlen)rK   rã  rä  ræ  Úsource_labels   &&&  r:   Ú_print_key_bannerrï  Ü  st   € õ 9Ù'¨Ó,Ð,€|Ö,ÜÐ(¨¨Ð7Ö8Ü	�Cœ×	Ò	¤# c£(¨R¤-Ü�˜E˜7 " S¨¥W I¨S°°R°S°°
Ð;Ö<ß	ÜÐCÖDñ 
r<   c                ó`  € ^ RI Hp ^ RIHp RV n        / V n        W n        V P                  R8X  dJ   ^ RIH	p V! WR4       V P                  '       g'   \        RV P                   RV P                   R	24       R# V P                  R
8H  pT;'       g)    V'       d   V! \        V RR4      R7      MR;'       g    RpV P                  R8X  d-   \        V\         4      '       d   V'       d    ^ RIHp	 V	! 4       pY€n        W€n        ^ RIHp V! W(V P                  R7      V n        V! W‚VR7      V n        V P                  '       g(   \        RV P                   R24       \;        VR4       R# R#   \&         d5   p
\(        P*                  ! \,        4      P/                  RT
4        Rp
?
L¯Rp
?
ii ; i)zRanthropic_messages: native Anthropic SDK (or AnthropicBedrock for Bedrock+Claude).)Úbuild_anthropic_client)Úresolve_anthropic_tokenNr,  ©Úbind_bedrock_runtimer+  õ&   ðŸ¤– AI Agent initialized with model: z& (AWS Bedrock + AnthropicBedrock SDK, Ú)r*  r¡   ©r¡   rA   zminimax-oauth)Ú"build_minimax_oauth_token_providerz{MiniMax OAuth: failed to install per-request token provider (%s); falling back to static bearer that will expire ~15min in.)Úanthropic_route_is_oauthrI  ©Útimeoutz (Anthropic native)Útoken)Úagent.anthropic_adapterrñ  Úagent.anthropic_credentialsrò  ÚclientÚ_client_kwargsÚ_anthropic_base_urlrO   Úagent.bedrock_adapterrô  Ú
quiet_moderì  r¡   Ú_bedrock_regionrn   rª   r6   rp   rø  rk   ÚloggingÚ	getLoggerr  rI   Úapi_keyÚ_anthropic_api_keyrù  Ú_is_anthropic_oauthÚ_anthropic_clientrï  )rø   r  r\   Ú_provider_timeoutrñ  rò  rô  Ú_is_native_anthropicÚeffective_keyrø  Ú_mm_excrù  s   &&&&        r:   Ú_init_anthropic_clientr  è  s   € å>ÝCØ€E„LØ€EÔØ (ÔØ‡~�~˜Ô"å>Ù˜UÐ.BÔCØ××ÐÜÐ:¸5¿;¹;¸-ÐGmÐns÷  oDñ  oDð  nEð  EFð  Gô  HÙð !Ÿ>™>¨[Ñ8ÐØ÷  Fð  F×`tÑ 7¼gÀeÈWÐVZÓ>[Õ \Ðz~÷  Fð  Fð  DF€Mð
 ‡~�~˜Ô(¬Z¸Äs×-KÒ-K×P]ð	ÝJÙ>Ó@ˆMð "„MØ,Ôõ EÙ 8¸Ð[`×[iÑ[iÔ j€EÔÙ4°]ÐVgÔh€EÔØ××ÐÜÐ6°u·{±{°mÐCVÐWÔXÜ˜-¨Ö1ñ øô# ô 	Ü×ÒœhÓ'×/Ñ/ðRà÷ñ ûð	ús   Ã,E. Å.F-Å9*F(Æ(F-c                ó�   € ^ RI Hp V! W P                  V4       V P                  '       g   \	        RV P                   24       R# R# )zIprovider == "moa": virtual Mixture-of-Agents facade, no real HTTP client.©Úbind_moa_runtimeõ+   ðŸ¤– AI Agent initialized with MoA preset: N)Úagent.moa_loopr  r¡   r  rì  )rø   r  r  s   && r:   Ú_init_moa_clientr    s:   € å/ñ �UŸK™K¨Ô1Ø××ÐÜÐ;¸E¿K¹K¸=ÐIÖJñ r<   c                óÈ   € ^ RI Hp V! WR4       V P                  '       gA   V P                  '       d   RMRp\	        RV P
                   RV P                   V R24       R# R# )	z3bedrock_converse: boto3 directly, no OpenAI client.ró  r-  z + GuardrailsrA   rõ  z (AWS Bedrock, rö  N)r  rô  r  Ú_bedrock_guardrail_configrì  r¡   r  )rø   r\   rô  Ú	_gr_labels   &&  r:   Ú_init_bedrock_clientr  *  s^   € å:Ù˜Ð*<Ô=Ø××ÐØ',×'F×'FÐ'F‘OÈBˆ	ÜÐ6°u·{±{°mÀ?ÐSX×ShÑShÐRiÐjsÐitÐtuÐvÖwñ r<   c               ó   € V ^8„  d   QhRR/# ©r4   r7   r�   r8   )r9   s   "r:   r;   r;   3  s   € ÷ ñ ÈNñ r<   c                óä  € \        V4      pRVRV/pVP                  '       d`   \        VP                  RR7      4      VR&   \	        VP                  4      P                  4        UUu/ uF  w  rgWg^ ,          bK  	  uppVR&   Ve   W5R&   ^ RIHp V! V P                  4      '       d   V P                  VR	&   V P                  VR
&   \        V4      p	V	e   V	! W4      VR&   V# RV9  dm   \        \        4      ;_uu_ 4        ^ RIHp
 V
! V P                  4      pV'       d+   VP                   '       d   \#        VP                   4      VR&   RRR4       V# V# u uppi   + '       g   i     T# ; i)zSOpenAI-client kwargs from explicit CLI/gateway credentials (auth already resolved).r  r\   rA   ©ÚqueryÚdefault_queryNrû  rG  ÚcommandÚargsÚdefault_headersr]   )r   r  r   Ú_replacer   rr   rT  rH  rO   Úacp_commandÚacp_argsÚ_host_default_headers_factoryr   rk   ro   r^   r"  rß   )rø   r  r\   r  Ú_parsed_urlÚclient_kwargsÚkr…   rH  Ú_headers_forÚ_gpfÚ_phs   &&&&        r:   Ú_explicit_client_kwargsr-  3  sX  € ä˜8Ó$€KØ ¨°XÐ>€MØ××ÐÜ$.¨{×/CÑ/CÈ"Ð/CÓ/MÓ$Nˆ�jÑ!Ü>FÀ{×GXÑGXÓ>Y×>_Ñ>_Ô>aÔ)bÑ>a±d°a¨!¨q­Tª'Ñ>aÒ)bˆ�oÑ&ØÒ$Ø#4�iÑ õ Sá$ U§^¡^×4Ò4Ø#(×#4Ñ#4ˆ�iÑ Ø %§¡ˆ�fÑÜ0°Ó:€LØÒÙ+7¸Ó+JˆÐ'Ñ(ð Ðð 
 -Ô	/ô ”i× Õ Ý>Ù�u—~‘~Ó&ˆCß�s×*×*Ð*Ü37¸×8KÑ8KÓ3L�Ð/Ñ0÷	 !ð
 Ðˆ=Ðùó- *c÷" !Ö ð
 Ðús   Á(EÄ2EÄ4EÅE/	c               ó   € V ^8„  d   QhRR/# )r4   r7   ré   r8   )r9   s   "r:   r;   r;   R  s   € ÷ jñ jÐG_ñ jr<   c           	     ó,  € ^ RI Hp T! V P                  ;'       g    RV P                  RR7      w  rEVe<   ^ RIHpHp \        VRR4      pV! V4      '       d   V! V4      V n        \        WB4      # V P                  ;'       g    RP                  4       P                  4       p	. p
\        V4       EF  p\        VR	,          4      p ^ R
IHp V! V4      pV! VR	,          VR,          RVP                  R4      VR7      w  ppTf,   \"        P%                  RT4       T
P'                  TR34       K�  RT n        TP                  4       P                  4       R8X  d   ^ RIHp T! YR,          4        R# TR	,          ;T n        T n        T;'       g
    TR,          T n        \5        Y4       \        Yò4      u # 	  RpRpV	'       do   V	R8w  dh   \7        \         4      ;_uu_ 4        ^ RIHp V! V	4      pVP=                  4       ;'       d"    VP?                  V P                  R7      '       * pRRR4       V
'       g	   V'       dM   \"        PA                  RV P                  V'       d   RMRRPC                  R V
 4       4      ;'       g    R4       V'       dA   ^ RI"H#pH$pH%p V! W�P                  VR7      ;'       g	    V! V	4      pV'       d   V! VV	R7      hV	'       d   V	R"9  d   ^ RI"H&pH'p V! V! V	4      4      h^ RI(H)p ^ R I"H&p V! 4       pV! R!4      h  \          d]   p\"        P%                  RTT4       T
P'                  T\        T4      ;'       g    \)        T4      P*                  34        Rp?EKÊ  Rp?ii ; i  + '       g   i     EL_; i)#a1  OpenAI-client kwargs via the centralized provider router (no explicit creds).

Falls through to the init-time fallback chain, then raises with the missing-key /
no-provider diagnostic. ``None`` when the chain landed on a MoA preset: the facade is
already bound and there is no OpenAI client to construct.
)Úresolve_provider_clientÚautoT)r¡   Ú	raw_codexN)r#  ra   Ú_hermes_aux_effective_providerrA   rO   )Úresolve_entry_api_keyr¡   r\   )r¡   r2  Úexplicit_base_urlÚexplicit_api_keyz&Init-time fallback entry %s failed: %sz:Init-time fallback entry %s resolved no usable credentialszno usable credentialsÚmoar  F)Ú	load_poolr÷  z`Init-time provider resolution failed: primary %r unresolvable (%s); fallback entries refused: %szcredential pool exhaustedz; c              3  ó6   "  € T F  w  rV R V R2x € K  	  R# 5i)z (rö  Nr8   )rg   Ú_pÚ_rs   &  r:   rh   Ú(_routed_client_kwargs.<locals>.<genexpr>œ  s    é € ÐDÑ3C©¨˜˜˜B˜r˜d !•nÓ3Cùs   ‚znone configured)Ú!ProviderCredentialsExhaustedErrorÚpool_billing_messageÚpool_cooldown_message)r¡   ÚpoolrI  )ÚProviderNotConfiguredErrorÚ$missing_provider_credentials_message)Úprofile_cli_selector)rA  zxNo LLM provider configured. Run `hermes model` to select a provider, or run `hermes setup` for first-time configuration.>   r1  rë   rK  )*Úagent.auxiliary_clientr0  rO   r¡   rl   r#  ra   rn   Ú_client_kwargs_from_routedrˆ   r‰   r   r6   Úhermes_cli.fallback_configr4  rm   rk   rH   ÚdebugÚappendÚtyper  Ú_fallback_activatedr  r  Úrequested_providerr   r   rN  r8  Úhas_credentialsÚhas_availablerI   ÚjoinÚagent.auxiliary_unavailabler=  r>  r?  rA  rB  r?   rC  )rø   Úfallback_modelr  r0  Ú_routed_clientÚ_r#  ra   Úeffective_providerÚ	_explicitÚ_refused_entriesÚ_fbÚ_fb_providerr4  Ú_fb_explicit_keyÚ
_fb_clientÚ	_fb_modelÚ_fb_excr  Ú_pool_exhaustedÚ_poolr8  r=  r>  r?  Ú_exhausted_messagerA  rB  rC  Ú_sels   &&&                           r:   Ú_routed_client_kwargsr`  R  s"  € õ ?Ù/Ø�‰× Ð ˜&¨¯©¸tôEÑ€NàÒ!ßLÜ$ ^Ð5UÐWYÓZÐÙÐ-×.Ò.Ù/Ð0BÓCˆEŒNÜ)¨.ÓLÐLð —‘×%Ð% 2×,Ñ,Ó.×4Ñ4Ó6€IØÐÜ  ×0ˆÜ˜3˜z�?Ó+ˆð	ÝHÙ4°SÓ9ÐÙ$;Ø�J• s¨7¥|¸tØ"%§'¡'¨*Ó"5ÐHXô%Ñ!ˆJ˜	ð Òô �L‰LØLÈlôð ×#Ñ# \Ð3JÐ$KÔLÙØ$(ˆÔ!Ø×ÑÓ×%Ñ%Ó'¨5Ô0õ 8Ù˜U¨¥LÔ1ÚØ47¸
µOÐCˆŒ˜Ô1Ø×/Ð/ 3 w¥<ˆŒÜ(¨Ô;Ü)¨*ÓHÒHñC 1ðH €OØ€Eß�Y &Ô(Ü”i× Õ Ý7Ù˜iÓ(ˆEØ#×3Ñ3Ó5×dÐd¸e×>QÑ>QÐX]×XcÑXcÐ>QÓ>dÔ:dˆO÷ !÷ Ÿ?ô 	�‰ØnØ�N‰Nß+:Ñ'Ð@WØ�I‰IÑDÑ3CÓDÓD×YÐYÐHYô		
÷ ÷	
ñ 	
ñ ! ·+±+ÀEÔJ÷ 0ð 0Ù$ YÓ/ð 	÷ Ù3Ð4FÐQZÔ[Ð[ß�YÐ&FÔFçpÙ(Ñ)MÈiÓ)XÓYÐYÝ5ÝFÙÓ!€DÙ
$ð	óð øôK ô 	Ü�L‰LÐAÀ<ÐQXÔYà×#Ñ# \´3°w³<×3YÐ3YÄ4ÈÃ=×CYÑCYÐ$ZÔ[Þûð		ú÷< !× Ð ús&   Ã;LÇ$ANÌM?Ì#AM:Í:M?ÎN	c               ó    € V ^8„  d   QhRRRR/# )r4   r(  r�   r7   rD   r8   )r9   s   "r:   r;   r;   ¿  s   € ÷ Nñ N°nð NÈñ Nr<   c                óÀ  € ^ RI Hp \        VP                  RR4      4      P	                  4       p\        VR4      '       d€   RV P                  ;'       g    RP	                  4       9   dW   VP                  R4      ;'       g    / pVP                  RR4      pW%9  d$   RP                  \        R	WR34      4      VR&   WAR&   T P                  4         ^ R
I
HpHpHpHp	 V! V	! 4       4      p
\        VP                  R4      ;'       g    V P                  ;'       g    R4      pV! WV
4       V! WV
4       R	#   \          d    \"        P%                  RRR7        R	# i ; i)u·   Mutate ``client_kwargs`` (== ``agent._client_kwargs``) with header/TLS policy, in order:
OpenRouter Claude beta header â†’ model.default_headers â†’ custom-provider TLS/extra_headers.)Ú_TOOL_STREAMING_BETAr\   rA   úopenrouter.aiÚclauder"  zx-anthropic-betaÚ,N)Ú4apply_custom_provider_extra_headers_to_client_kwargsÚ*apply_custom_provider_tls_to_client_kwargsÚget_compatible_custom_providersÚload_configz&custom-provider TLS resolution skippedT©Úexc_info)rý  rc  r6   rm   r‰   r/   r¡   rN  ÚfilterÚ_apply_user_default_headersrÌ  rg  rh  ri  rj  r\   rk   rH   rG  )rø   r(  rc  Ú_effective_baseÚheadersÚexisting_betarg  rh  ri  rj  Ú_cp_entriesÚ_cp_base_urls   &&          r:   Ú_apply_openai_header_policyrt  ¿  s8  € õ
 =ä˜-×+Ñ+¨J¸Ó;Ó<×BÑBÓD€OÜ˜_¨o×>Ò>À8ÐPU×P[ÑP[×PaÐPaÐ_a×OhÑOhÓOjÔCjØ×#Ñ#Ð$5Ó6×<Ð<¸"ˆØŸ™Ð$6¸Ó;ˆØÔ4Ø*-¯(©(´6¸$ÀÐ@eÓ3fÓ*gˆGÐ&Ñ'Ø/6Ð+Ñ,à	×%Ñ%Ô'ðN÷	
ó 	
ñ
 6±k³mÓDˆÜ˜=×,Ñ,¨ZÓ8×PÐP¸E¿N¹N×PÐPÈbÓQˆÙ2°=ÐP[Ô\ñ 	=¸]ÐZeÖføÜô NÜ�‰Ð=Èˆ×MðNús   Ã5D7 ÄD7 ÄD7 Ä7"EÅEc                ó  € V'       d   V'       d   \        WW$4      pM<\        WV4      pVf-   V P                  '       g   \        RV P                   24       R# ^ RIHp V! V P                  VP                  RR4      4      '       d4   RV n	        \        V R4      '       d   V P                  P                  4         ^ RIHp V! WTR	7       WPn        \%        W4       VP                  RR4      V n        VP                  RV P(                  4      V n         V P+                  VRRR7      V n        V P                  '       ge   \        RV P                   24       V'       d   \        RV 24       ^ RIHp \3        VP                  RR4      RV! V P4                  4      R7       R# R#   \         d7    T P                  R
8X  d"   R\!        TP                  RR4      4      9   d   h  ELi ; i  \         d   p	\7        RT	 24      hRp	?	ii ; i)zGOpenAI-wire client: resolve kwargs, apply header/TLS policy, construct.Nr  r"  r\   rA   r%  rJ  )Ú&configure_bedrock_openai_client_kwargsrú  r,  zbedrock-mantle.r  Ú
agent_initT)rC   Úsharedrõ  u   ðŸ”— Using custom base URL: ©Úwarning_notifications_enabledÚnonezAPI key)rä  z$Failed to initialize OpenAI client: )r-  r`  r  rì  r¡   rl   r#  rO   rm   r  rX  rJ  rY  r  rv  rk   r6   r   rt  r  r\   Ú_create_openai_clientrÿ  Úgateway.warning_notificationsrz  rï  rÅ  r  )
rø   r  r\   rP  r  r(  r#  rv  rz  Úes
   &&&&&     r:   Ú_init_openai_clientr  ß  sÁ  € ç—8Ü/°ÀÓ\‰ä-¨eÐEVÓWˆØÒ Ø×#×#Ð#ÜÐCÀEÇKÁKÀ=ÐQÔRÙÝ4Ù�u—~‘~ }×'8Ñ'8¸ÀRÓ'H×IÒIØ+ˆŒÜ�5Ð,×-Ò-Ø×"Ñ"×(Ñ(Ô*ðÝPÙ.¨}ÕXð
 )ÔÜ Ô5Ø!×%Ñ% i°Ó4€E„MØ"×&Ñ& z°5·>±>ÓB€E„Nð
GØ×2Ñ2°=ÈÐ^bÐ2ÓcˆŒØ××ÐÜÐ:¸5¿;¹;¸-ÐHÔIßÜÐ4°X°JÐ?Ô@ÝSÜ˜m×/Ñ/°	¸6ÓBÀIÙ+HÈÏÉÓ+X÷Zñ  øô ô Ø�>‰>˜YÔ&Ð+<ÄÀM×DUÑDUÐV`ÐbdÓDeÓ@fÔ+fØúðûô" ô GÜÐAÀ!ÀÐEÓFÐFûðGús+   Â=F' ÄBG+ Æ'=G(Ç'G(Ç+H	Ç6HÈH	c                ó2  € R V n         RV n        \        V P                  V P                  4      pV P
                  R8X  d   \        WW$4       R # V P                  R8X  d   \        W4       R # V P
                  R8X  d   \        W4       R # \        WW#V4       R # )NFr+  r7  r-  )
r
  r	  r+   rO   r¡   r  r  r  r  r  )rø   r  r\   rP  r  s   &&&& r:   Ú_build_clientr�    sv   € ð #€EÔØ %€EÔÜ4°U·^±^ÀUÇ[Á[ÓQÐØ‡~�~Ð-Ô-Ü˜u¨xÖKØ	�‰˜5Ô	 Ü˜Ö(Ø	�‰Ð-Ô	-Ü˜UÖ-ä˜E¨HÐFWÖXr<   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r4   Úmoduler6   r5   Úpass_keyr‚   Ú	pass_baser8   )r9   s   "r:   r;   r;     s(   € ÷ 	ñ 	˜#ð 	 Sð 	°Dð 	ÈTñ 	r<   c                ó    a aaa€ V VVV3R lpV# )z©Header factory ``(api_key, base_url) -> dict`` importing ``module.name`` at call time.
``pass_key`` forwards ``(key, base_url=base)``; ``pass_base`` forwards ``(base)``.c                ó’   <€ ^ RI p\        VP                  S4      S4      pS'       d
   V! WR7      # S'       d	   V! V4      # V! 4       # )r@  NrB  )Ú	importlibrn   Úimport_module)rK   Úbaserˆ  Úfnrƒ  r5   r…  r„  s   &&  €€€€r:   ÚfactoryÚ_lazy_headers.<locals>.factory  s>   ø€ ÛÜ�Y×,Ñ,¨VÓ4°dÓ;ˆßÙ�cÔ)Ð)ß$‰r�$‹xÐ.©"«$Ð.r<   r8   )rƒ  r5   r„  r…  rŒ  s   ffff r:   Ú_lazy_headersrŽ    s   û€ ÷/ð /ð €Nr<   rd  zagent.auxiliary_clientÚbuild_or_headerszintegrate.api.nvidia.comÚbuild_nvidia_nim_headers)r…  zapi.routermint.comzagent.client_lifecycleÚ_routermint_headerszgithubcopilot.comzhermes_cli.modelsÚcopilot_default_headerszapi.kimi.comc                ó
   € R R/# )z
User-Agentzclaude-code/0.1.0r8   )Ú_kÚ_bs   &&r:   r†   r†   *  s
   €  \Ð3FÑ$Gr<   zportal.qwen.aiÚ_qwen_portal_headersr)  zagent.codex_headersÚcodex_cloudflare_headers)r„  zx.aiztools.xai_httpÚhermes_xai_default_headersz6list[tuple[str, Callable[[Any, str], dict[str, str]]]]Ú_HOST_DEFAULT_HEADERSc               ó   € V ^8„  d   QhRR/# )r4   r\   r6   r8   )r9   s   "r:   r;   r;   1  s   € ÷ ñ ¨Cñ r<   c                óN   € \          F  w  r\        W4      '       g   K  Vu # 	  R # rS   )r™  r/   )r\   r:  rŒ  s   &  r:   r&  r&  1  s#   € ß.‰ˆÜ  ×0Ô0ØŠNñ /ñ r<   c               ó   € V ^8„  d   QhRR/# r  r8   )r9   s   "r:   r;   r;   8  s   € ÷ ñ °>ñ r<   c                óö   € RV P                   R\        V P                  4      /pVe   WR&   \        V RR4      ;'       g#    \        V RR4      ;'       g    \        V RR4      pV'       d   \	        V4      VR&   V# )z°OpenAI-client kwargs mirroring a router-resolved client, keeping its provider headers
(SDK stores them in ``_custom_headers``; older/mocked clients expose ``default_headers``).r  r\   Nrû  Ú_custom_headersr"  Ú_default_headers)r  r6   r\   rn   rß   )rÿ  rû  Úkwargsrp  s   &&  r:   rE  rE  8  s†   € ð ˜Ÿ™¨´S¸¿¹Ó5IÐJ€FØÒØ#ˆyÑä�Ð)¨4Ó0÷ 	5ð 	5Ü�6Ð,¨dÓ3÷	5ð 	5ä�6Ð-¨tÓ4ð ÷
 Ü$(¨£MˆÐ Ñ!Ø€Mr<   c           
     óª  € ^ RI Hp V! \        V RR4      R7        ^ RIHp V! 4         ^ R	IH	p VP                  V n        ^ RIp^ R
IHpHp V! V\        V RR4      4      pW n        VP#                  WV P$                  R7      V n        ^ RIHp	 T	! V P&                  ;'       g    . 4      V n        V! V 4      ;p
'       d8   V P&                   Uu. uF  q»R,          R,          V
9  g   K  VNK  	  upV n        V P&                  '       d*   V P&                   Uu0 uF  qÌR,          R,          kK  	  upM	\-        4       T n        ^ RIHp ^ RIHp V! 4       '       d   RV P.                  9   d   TMRV n        V P$                  '       d   R# V P&                  '       dò   \;        R\=        V P&                  4       RRP?                  \A        V P.                  4      4       24       V'       d   \;        RRP?                  V4       24       V'       d   \;        RRP?                  V4       24       ^ RIpVPC                  4       pVPE                  4        UUu. uF  w  ppV'       d   K  VNK  	  pppV'       d   V PG                  RV 2RR7       M\;        R4       V PH                  '       d   \;        R4       V PJ                  '       dP   \=        V PJ                  4      ^<8”  d   V PJ                  R,          R,           MV PJ                  p\;        RV R 24       V PL                  '       d\   V PN                  '       d   V PP                  R!8X  d   R"pMV PN                  '       d   R#pMR$p\;        R%V RV PR                   R&24       R# R#   \
         d    \        P                  RRR7        ELi ; i  \
         d    ^ T n         EL€i ; iu upi u upi u uppi )'r@  ©Úrecover_at_startupÚ_emit_startup_warningN©rJ   )Údiscover_pluginsz*Plugin discovery failed during agent setupTrk  )Úregistry)Úagent_tool_dropsÚsession_disabled_toolsetsrÅ  )Úenabled_toolsetsÚdisabled_toolsetsr  )Úprune_oneshot_toolsÚfunctionr5   )Úowned_kanban_task)ÚKANBAN_GUIDANCEÚkanban_showrA   u   ðŸ› ï¸�  Loaded z tools: z, u      âœ… Enabled toolsets: u      â�Œ Disabled toolsets: u=   âš ï¸�  Some tools may not work due to missing requirements: ©Ú
diagnosticu@   ðŸ› ï¸�  No tools loaded (all tools filtered out or unavailable)u   ðŸ“� Trajectory saving enabled:Né<   Nré  u   ðŸ”’ Ephemeral system prompt: 'z' (not saved to trajectories)r*  znative AnthropiczAnthropic-compatible endpointzClaude via OpenRouteru   ðŸ’¾ Prompt caching: ENABLED (z TTL))*Úhermes_cli.left_core_migrationr£  rn   Úhermes_cli.pluginsr¦  rk   rH   rI   Útools.registryr§  Ú_generationr‘  Úmodel_toolsÚtoolsetsr¨  r©  r«  Úget_tool_definitionsr  ÚtoolsÚagent.oneshot_footprintr¬  rj   Úvalid_tool_namesÚagent.delegation_contextr®  Úagent.prompt_builderr¯  Ú_kanban_worker_guidancerì  rí  rN  ÚsortedÚcheck_toolset_requirementsrr   Ú_safe_printÚsave_trajectoriesÚephemeral_system_promptrÈ  rÉ  rO   rË  )rø   rª  r«  r£  r¦  Ú_snapshot_registryr¸  r¨  r©  r¬  ÚdropsÚtÚtoolr®  r¯  Úrequirementsr5   Ú	availableÚmissing_reqsÚprompt_previewÚsources   &&&                  r:   Ú_load_toolsrÏ  H  sM  € õ BÙœ7 5Ð*AÀ4ÓHÕIðTÝ7ÙÔð
,ÝAØ*<×*HÑ*HˆÔ'ó ßDÙ1Ð2CÄWÈUÐT^Ð`dÓEeÓfÐØ/ÔØ×2Ñ2Ø)Ð[`×[kÑ[kð 3ó m€E„Kõ <Ù% e§k¡k×&7Ð&7°RÓ8€E„KÙ  Ó'Ð'€uÖ'Ø"'§+¢+ÓT¡+˜Q°:µ¸vÕ1FÈeÑ1S—q�q¡+ÑTˆŒàSX×S^×S^ÐS^À5Ç;Â;ÓOÁ;¸4 :Õ.¨v×6Ð6Á;ÒOÔdgÓdi€EÔõ ;Ý4á,×.Ò.°=ÀE×DZÑDZÔ3Z‰Ð`bð 
Ô!ð ××ÐÙØ‡{‡{€{ÜÐ ¤ U§[¡[Ó!1Ð 2°(¸4¿9¹9ÄVÈE×LbÑLbÓEcÓ;dÐ:eÐfÔgßÜÐ-¨d¯i©iÐ8HÓ.IÐ-JÐKÔLßÜÐ.¨t¯y©yÐ9JÓ/KÐ.LÐMÔNÛØ"×=Ñ=Ó?ˆØ4@×4FÑ4FÔ4HÔZÑ4H¡  yÔPYŸ˜Ñ4HˆÑZßØ×ÑÐ ]Ð^jÐ]kÐlÐy}ÐÔ~øäÐPÔQØ××ÐÜÐ.Ô/Ø×$×$Ð$ÜGJÈ5×KhÑKhÓGiÐlnÔGn˜×6Ñ6°sÕ;¸eÖCÐty÷  uRñ  uRˆÜÐ/°Ð/?Ð?\Ð]Ô^Ø× × Ð Ø×)×)Ð)¨e¯n©nÀÔ.KØ'‰FØ×+×+Ð+Ø4‰Fà,ˆFÜÐ.¨v¨h°b¸×9IÑ9IÐ8JÈ%ÐPÖQñ !øôe ô TÜ�‰ÐCÈdˆ×SðTûô ô ,Ø*+ˆ×'ð,üò UùâOùó& [s@   œN ªN, ÃOÃ)OÄO
ÉOÉ#OÎ"N)Î(N)Î,OÏOc               ó    € V ^8„  d   QhRRRR/# )r4   Ú
session_idr6   r7   rD   r8   )r9   s   "r:   r;   r;   Ž  s   € ÷ 9ñ 9 Cð 9¨Dñ 9r<   c                óÈ   €  ^ RI Hp V! V 4       R#   \         dE     ^ RIHp T! 4       pM  \         d    Rp Mi ; iT'       g   T \
        P                  R&    R#  R# i ; i)zàExpose the session ID to tools via ContextVar (+ legacy os.environ fallback).

If the ContextVar bridge fails to import, keep the root-agent env fallback but never let
delegated construction publish a child ID process-wide.
)Úset_current_session_id)Úis_delegated_child_contextFÚHERMES_SESSION_IDN)Úgateway.session_contextrÓ  rk   r¾  rÔ  ÚosÚenviron)rÑ  rÓ  rÔ  Údelegated_childs   &   r:   Ú_publish_session_idrÚ  Ž  s\   € ð
9ÝBÙ˜zÖ*øÜô 9ð	$ÝKÙ8Ó:‰OøÜô 	$Ø#ŠOð	$úçØ.8ŒB�J‰JÐ*Ô+ò ð9ús0   ‚ ’A!ž,«A!¬<¹A!»<¼
A!ÁA!Á A!c
                óh  € \         P                  ! 4       V n        T;'       g    \        V P                  4      T n        \        V P                  4       \        4       R ,          V n        V P                  P                  RRR7       \        V \        4       ^ RIHp
 V
! WgVV	R7      V n        W n        W0n        RV P                   RVRV/V n        \%        \&        4      ;_uu_ 4        ^ RIHp V'       d   RV P"                  R	&   R
R
R
4       ^ RIHp V! 4       V n        R
#   + '       g   i     L$; i)ÚsessionsTrÏ   )ÚCheckpointManager)ÚenabledÚmax_snapshotsÚmax_total_size_mbÚmax_file_size_mbÚmax_iterationsÚreasoning_configÚ
max_tokens)Ú_YOLO_MODE_FROZENÚ	yolo_modeN)Ú	TodoStore)r   ÚnowÚsession_startr.   rÑ  rÚ  r-   Úlogs_dirrÓ   rh  rª  Útools.checkpoint_managerrÝ  Ú_checkpoint_mgrÚ_session_dbÚ_parent_session_idrâ  Ú_session_init_model_configr   rk   Útools.approvalrå  Útools.todo_toolrç  Ú_todo_store)rø   rÑ  Ú
session_dbÚparent_session_idrã  rä  Úcheckpoints_enabledÚcheckpoint_max_snapshotsÚcheckpoint_max_total_size_mbÚcheckpoint_max_file_size_mbrÝ  rå  rç  s   &&&&&&&&&&   r:   Ú_init_session_staterù  ¡  sô   € ä"Ÿ,š,›.€EÔØ!×HÐH¤^°E×4GÑ4GÓ%H€EÔÜ˜×(Ñ(Ô)ô %Ó&¨Õ3€E„NØ	‡N�N×Ñ °ÐÔ5Ü�%œÔ(õ ;Ù-Ø#Ø6Ø4ô€EÔð #ÔØ0Ôà˜%×.Ñ.ØÐ,Ø�jð(€EÔ$ô 
”)×	Õ	Ý4ßØ<@ˆE×,Ñ,¨[Ñ9÷ 
õ *Ù!›€EÖ÷ 
×	ús   Ã'D!Ä!D1	c                óÔ  € \        \        VR 4      P                  RR4      4      V n        VP                  R4      ;'       g    / P                  R^<4      V n        \        VR4      p\        VP                  RR4      ;'       g    R4      P                  4       P                  4       pVR9   d   TMRV n        V P                  V8w  d&   \        P                  RVP                  R4      4       \        VP                  R	R
4      4      P                  4       P                  4       pVR9   V n        V P                  '       g-   VR9  d&   \        P                  RVP                  R	4      4       RV n         \        \        P                  ! VP                  R/ 4      VR7      4      V n        R#   \"         d0   p\%        4       P                  P                  RT4        Rp?R# Rp?ii ; i)ÚdisplayÚshow_commentaryTrø   Úfast_auto_secondsr¡   Úlmstudio_load_modeÚexplicitzRInvalid model.lmstudio_load_mode=%r; expected 'explicit' or 'jit'. Using explicit.Ú	streamingr  zJInvalid model.streaming=%r; expected a boolean. Using streaming (default).NÚtool_loop_guardrails)rÅ  z&Tool loop guardrail config ignored: %s>   Újitrÿ  >   Ú0ÚnoÚoffÚfalse>   r  Úonr  r  )r‚   r  rm   rü  rý  r6   rˆ   r‰   rþ  rH   rI   Ú_disable_streamingÚ_stream_5xx_probe_tsr'   r&   Úfrom_mappingrk  rk   r   )rø   Ú
_agent_cfgrÅ  Ú_model_sectionÚ
_load_modeÚ
_streamingÚ_tlg_errs   &&&    r:   Ú_apply_display_configr  Ç  s¢  € ä ¤¨:°yÓ!A×!EÑ!EÐFWÐY]Ó!^Ó_€EÔð  *Ÿ~™~¨gÓ6×<Ð<¸"×AÑAÐBUÐWYÓZ€EÔô ˜z¨7Ó3€NÜ�^×'Ñ'Ð(<¸jÓI×WÐWÈZÓX×^Ñ^Ó`×fÑfÓh€JØ-7Ð;NÔ-N™zÐT^€EÔØ×Ñ :Ô-Ü�‰Ø`Ø×ÑÐ3Ó4ô	
ô �^×'Ñ'¨°VÓ<Ó=×CÑCÓE×KÑKÓM€JØ)Ð-HÑH€EÔØ×#×#Ð#¨
Ð:TÔ(TÜ�‰ØXØ×Ñ˜{Ó+ô	
ð "&€EÔðQÜ!<Ü#×0Ò0Ø—‘Ð5°rÓ:ÀXôó"
ˆÖøô
 ô QÜ‹�‰×ÑÐEÀx×PÒPûðQús   Å56F- Æ-G'Æ8$G"Ç"G'c               ó   € V ^8„  d   QhRR/# r  r8   )r9   s   "r:   r;   r;   í  s   € ÷ #ñ #°^ñ #r<   c           	     óD  € RV P                   RT;'       g    RR\        \        4       4      RVR9   d   TMR/pVR,          R8X  d   V P                  VR&   V P                  VR&   V P
                  '       dƒ   \        \        4      ;_uu_ 4        V P
                  P                  V P                   4      pV'       d6   W2R	&   V P
                  P                  V P                   4      pV'       d   WBR
&   RRR4       \         F   p\        V RV 24      pV'       g   K  WbV&   K"  	  V P                  '       d   V P                  VR&   \        \        4      ;_uu_ 4        ^ RIHp V! 4       VR&   RVR&   RRR4       V#   + '       g   i     L’; i  + '       g   i     T# ; i)zŸScoping kwargs for ``MemoryManager.initialize_all`` (status_callback is CLI-only:
gateway status travels a different path and the indicator no-ops without it).rÑ  rÅ  ÚclirÝ  Úagent_contextÚprimaryÚwarning_callbackÚstatus_callbackÚsession_titleÚsession_title_sourceNrR  Úcwd)Úget_active_profile_nameÚagent_identityÚhermesÚagent_workspace)ÚcronÚsubagent)rÑ  r6   r-   Ú_emit_warningÚ_emit_statusrí  r   rk   Úget_session_titleÚget_session_title_sourcer   rn   Úsession_cwdÚhermes_cli.profilesr  )rø   rÅ  r   Ú_stÚ_sourceÚ_identÚ_valr  s   &&      r:   Ú_memory_provider_init_kwargsr+  í  sn  € ð 	�e×&Ñ&Ø�H×%Ð% Ø”sœ?Ó,Ó-à XÐ1EÔ%E™È9ð€Fð ˆjÕ˜UÔ"Ø%*×%8Ñ%8ˆÐ!Ñ"Ø$)×$6Ñ$6ˆÐ Ñ!à××ÐÜ”i× Õ Ø×#Ñ#×5Ñ5°e×6FÑ6FÓGˆCßØ*-�Ñ'Ø×+Ñ+×DÑDÀU×EUÑEUÓV�ßØ5<Ð1Ñ2÷ !÷ +ˆÜ�u  & ˜lÓ+ˆß‰4Ø!�6‹Nñ +ð ××ÐØ×)Ñ)ˆˆu‰ä	”)×	Õ	Ý?Ù#:Ó#<ˆÐÑ Ø$,ˆÐ Ñ!÷ 
ð €M÷) !× ú÷  
Ö	ð €Mús   ÂA#E;ÅFÅ;F	ÆF	c           	     ó¤  € R V n         RV n        RV n        ^
V n        ^ V n        ^ V n        ^ RIHp V! 4       '       d
   R V n        R # RV P                  ;'       g    . 9   ;'       d    RV P                  ;'       g    . 9  pV'       d	   V'       dë   \        \        4      ;_uu_ 4        ^ RIHpHpHp	 V! V4      p
V	! V4      w  V n        V n        \#        V
P%                  R^
4      4      V n        V P                  '       g   V P                  '       d`   V! V
P%                  RR4      V
P%                  RR	4      V P                  V P                  R
7      V n         V P                   P'                  4        R R R 4       R V n        Ve   V'       g	   W@n        EMÂV'       Egº    X
'       d   V
P%                  RR4      MRp\)        V4      '       Eg‹   ^ RIHp ^ RIHp V! 4       V n        V! V4      pVf(   ^ RIHp V! W°P6                  R7      '       d	   V! V4      pV'       d3   VP9                  4       '       d   V P                  P;                  V4       MbVe_   \=        V4      \>        9  dK   Rp\        \        4      ;_uu_ 4        VPA                  4       pR R R 4       \C        VVV P6                  R7       V P                  PD                  '       d]   V P                  PF                  ! RRV P6                  /\I        W4      B '       d&   \K        4       PL                  PO                  RV4       M+\K        4       PL                  PQ                  RV4       R V n        ^ RI*H+p V! V 4       R #   + '       g   i     ELþ; i  + '       g   i     Lï; i  \         d6   p\K        4       PL                  PS                  RT4       R T n         R p?LrR p?ii ; i)NF©Úsafe_worker_enabledÚmemory)ÚMemoryStoreÚget_builtin_memory_configÚget_builtin_memory_store_flagsÚnudge_intervalÚmemory_char_limiti˜  Úuser_char_limiti_  )r4  r5  Úmemory_enabledÚuser_profile_enabledrO   rA   )ÚMemoryManager)Úload_memory_providerr¢  r¥  rJ   zMemory provider '%s' activatedz/Memory provider '%s' not found or not availablez&Memory provider plugin init failed: %s)Úinject_memory_provider_toolsr8   ),Ú_memory_storeÚ_memory_enabledÚ_user_profile_enabledÚ_memory_nudge_intervalÚ_turns_since_memoryÚ_iters_since_skillÚagent.safe_worker_policyr.  Ú_memory_managerrª  r«  r   rk   Útools.memory_toolr0  r1  r2  r«   rm   Úload_from_diskr   Úagent.memory_managerr8  Úplugins.memoryr9  Ú$hermes_cli.memory_provider_migrationr£  r¤  Úis_availableÚadd_providerr@   r2   Úunavailable_reasonrM   ro   Úinitialize_for_agentr+  r   rH   rà  rG  rI   Úagent.memory_manager_toolsr:  )rø   r  Úskip_memoryrÅ  Úmemory_managerr.  Ú_memory_toolset_requestedr0  r1  r2  Ú
mem_configÚ_mem_provider_nameÚ_MemoryManagerÚ	_load_memÚ_mpr£  Ú_unavailable_reasonÚ_mper:  s   &&&&&              r:   Ú_init_memoryrW    s'  € à€EÔØ!€EÔØ"'€EÔØ#%€EÔ Ø !€EÔØ €EÔÝ<á×ÒØ $ˆÔÙð 	�U×+Ñ+×1Ð1¨rÑ2÷ 	<ð 	<Ø˜U×4Ñ4×:Ð:¸Ñ;ð ÷ ×3ä”i× Õ ÷ñ ñ 3°:Ó>ˆJÙA_ØóBÑ>ˆEÔ! 5Ô#>ô ,/¨z¯~©~Ð>NÐPRÓ/SÓ+TˆEÔ(Ø×$×$Ð$¨×(C×(CÐ(CÙ&1Ø&0§n¡nÐ5HÈ$Ó&OØ$.§N¡NÐ3DÀdÓ$KØ#(×#8Ñ#8Ø).×)DÑ)Dô	'�Ô#ð ×#Ñ#×2Ñ2Ô4÷! !ð& !€EÔØÒ!¯+ð !/Ößˆ[ð	)ßCM §¡°
¸BÔ!?ÐSUÐÜ*Ð+=×>Ó>ÝPÝLÙ(6Ó(8�Ô%ÙÐ 2Ó3�Ø’;åWÙ)Ð*<×B]ÑB]×^Ó^Ù'Ð(:Ó;˜ß˜3×+Ñ+×-Ò-Ø×)Ñ)×6Ñ6°sÕ;Ø’_Ô)AÐBTÓ)UÔ]zÔ)zà*,Ð'Ü!¤)×,Õ,Ø.1×.DÑ.DÓ.FÐ+÷ -ä5Ø*Ð,?ÀU×E`ÑE`õbà×(Ñ(×2×2Ð2°u×7LÑ7L×7aÒ7añ 8jØ!×7Ñ7ð8jÜ;WÐX]Ó;h÷8jð 8jä“E—L‘L×%Ñ%Ð&FÐHZÕ[ä“E—L‘L×&Ñ&Ð'XÐZlÔmØ,0�EÔ)õ
 HÙ  Ö'÷u !× Ð ú÷V -×,ûô ô 	)Ü‹E�L‰L× Ñ Ð!IÈ4ÔPØ$(ˆE×!Ñ!ûð	)úse   Â(A+M(ÄAM(Æ N Æ(A8N È!N È7AN ÊM<Ê;N ËAN Ì-+N Í(M9	Í<N	ÎN ÎOÎ+O
Ï
Oc                ó°  € ^
V n         \        \        4      ;_uu_ 4        \        VP	                  R/ 4      P	                  R^
4      4      V n         RRR4       \        VR4      p\        VP	                  R4      4      V n        VP	                  RR4      V n        VP	                  RR4      V n	        V P                  f    \        VP	                  R	4      4      V n
        ^ R
IHp V! VP	                  R4      4      w  V n        V n        VP	                  RR4      V n        \#        VP	                  R4      ;'       g    R4      P%                  4       P'                  4       pV'       d    VR9  d   \(        P+                  RV4       RpT;'       g    RV n        R F,  p\/        V RV 2\1        VP	                  VR4      4      4       K.  	  V P2                  '       d.   \        \        4      ;_uu_ 4        ^ RIHp V! 4        RRR4       RV n        \        VR4      V n         \=        \        VP	                  R^4      4      ^4      pWpn!         \=        \        VP	                  R^4      4      ^ 4      V n"        R#   + '       g   i     EL2; i  + '       g   i     L•; i  \>        \@        3 d    ^p Loi ; i  \>        \@        3 d    ^T n"         R# i ; i)é
   ÚskillsÚcreation_nudge_intervalNrø   Úbudget_warning_ratioÚtool_use_enforcementr1  Úexecution_guidancerÖ  )Úresolve_guard_settingsÚempty_response_guardÚintent_ack_continuationÚtext_verbosityrA   uJ   Unknown agent.text_verbosity %r; expected low, medium or high â€” ignoringrR  T)Úwarm_environment_probe_asyncÚplatform_hintsÚapi_max_retriesÚauto_recovery_cycles>   ÚlowÚhighÚmedium)Ústall_guardsÚtask_completion_guidanceÚparallel_tool_call_guidanceÚenvironment_probeÚbot_mode_protocol)#Ú_skill_nudge_intervalr   rk   r«   rm   r  r   r\  Ú_tool_use_enforcementÚ_execution_guidancerÖ  r   Úagent.empty_response_guardr_  Ú_empty_guard_enabledÚ_empty_guard_cost_threshold_usdÚ_intent_ack_continuationr6   rˆ   r‰   rH   rI   rb  rf  r‚   Ú_environment_probeÚtools.env_proberc  Ú_session_title_hintÚ_platform_hint_overridesÚmaxrÉ   rÊ   Ú_api_max_retriesÚ_auto_recovery_cycles)rø   r  Ú_agent_sectionr_  Ú
_verbosityÚ_keyrc  Ú_api_retriess   &&      r:   Ú_apply_agent_sectionr�  j  s‚  € à"$€EÔÜ	”)×	Õ	Ü&)¨*¯.©.¸À2Ó*F×*JÑ*JÐKdÐfhÓ*iÓ&jˆÔ#÷ 
ô ˜z¨7Ó3€NÜ!?Ø×ÑÐ1Ó2ó"€EÔð
 #1×"4Ñ"4Ð5KÈVÓ"T€EÔØ .× 2Ñ 2Ð3GÈÓ P€EÔð ×ÑÒ'Ü#@Ø×ÑÐ3Ó4ó$
ˆÔ õ
 Bñ 	˜~×1Ñ1Ð2HÓIÓJñØÔ" EÔ$Ið &4×%7Ñ%7Ð8QÐSYÓ%Z€EÔ"ô �^×'Ñ'Ð(8Ó9×?Ð?¸RÓ@×FÑFÓH×NÑNÓP€Jß�jÐ(AÔAÜ�‰ÐcÐeoÔpØˆ
Ø%×-Ð-¨€EÔóˆô 	�˜˜4˜&�z¤4¨×(:Ñ(:¸4ÀÓ(FÓ#GÖHñ	ð ××ÐÜ”i× Õ ÝDÙ(Ô*÷ !ð
 !%€EÔô &/¨zÐ;KÓ%L€EÔ"ðÜœ3˜~×1Ñ1Ð2CÀQÓGÓHÈ!ÓLˆð *Ôð(Ü&)¬#¨n×.@Ñ.@ÐAWÐYZÓ.[Ó*\Ð^_Ó&`ˆÖ#÷} 
×	Ð	ú÷V !× ûô ”zÐ"ô ØŠðûô ”zÐ"ô (Ø&'ˆ×#ð(ús;   Ÿ1I9Ç2JÈ!%J  É*J9 É9J
	ÊJ	Ê J6Ê5J6Ê9KËKÚrejectc               ó$   € V ^8„  d   QhRRRRRR/# )r4   r	  r   r‚  rà   r7   rŸ   r8   )r9   s   "r:   r;   r;   °  s!   € ÷ *ñ *�sð * uð *°mñ *r<   c               ó–   € V'       d   \        W4      '       d   R#  \        V 4      pT^ 8”  d   T# R#   \        \        3 d     R# i ; i)z]``int(raw)`` when positive, else None. ``reject`` lists types refused outright (bool, float).N)rª   r«   rÉ   rÊ   )r	  r‚  Úparseds   &$ r:   Ú_positive_intr†  °  sL   € ç”*˜S×)Ò)ÙðÜ�S“ˆð ˜a”Zˆ6Ð) TÐ)øô ”zÐ"ô Úðús   �3 ³AÁAc               ó    € V ^8„  d   QhRRRR/# )r4   r  r�   r7   ztuple[float, bool]r8   )r9   s   "r:   r;   r;   »  s   € ÷ %ñ % ~ð %Ð:Lñ %r<   c                óü  € \        VP                  RR4      4      p\        VRR4      p\        VRR4      pRV n        \	        \
        4      ;_uu_ 4        ^ RIHpHpH	p V! V P                  V P                  VR7      p\        TTV P                  V! V P                  V P                  4      ;'       g    V! V P                  V P                  4      R	7      w  q n        RRR4       W$3#   + '       g   i     Y$3# ; i)
uñ   Global threshold merged with the per-model override; stashes the autoraise notice.
Codex gpt-5.4/5.5 raise to 85% (272K cap â†’ 50% would compact at ~136K); the opt-out flag
restores the global value, and the notice has its own display gate.Ú	thresholdg      à?Úcodex_gpt55_autoraiseTÚcodex_gpt55_autoraise_noticeN)Ú _compression_threshold_for_modelÚ_is_codex_gpt54_or_gpt55Ú_is_codex_spark)Úallow_codex_gpt55_autoraise)r¡   r¸   )r´   rm   r  Ú!_compression_threshold_autoraisedr   rk   rD  rŒ  r�  rŽ  r¡   rO   rº   )	rø   r  r‰  rœ   Únotice_enabledÚ_cthresh_fnÚ_is_codex_gpt54_or_gpt55_fnÚ_is_codex_spark_fnÚ_model_cthreshs	   &&       r:   Ú_compression_thresholdr–  »  sã   € ô �c—g‘g˜k¨4Ó0Ó1€IÜ˜#Ð6¸Ó=€IÜ˜sÐ$BÀDÓI€NØ.2€EÔ+Ü	”)×	Õ	÷	
ñ 	
ñ
 %Ø�K‰K˜Ÿ™ÀYô
ˆô
 >\ØØØ—+‘+á+¨E¯K©K¸¿¹ÓH÷ Cð CÙ% e§k¡k°5·>±>ÓBô>
Ñ:ˆ	Ô:÷ 
ð( Ð$Ð$÷) 
Ö	ð( Ð$Ð$ús   ÁB
C)Ã)C;	c               ó    € V ^8„  d   QhRRRR/# )r4   r  r�   r7   ztuple[str, bool, Optional[int]]r8   )r9   s   "r:   r;   r;   Ú  s   € ÷ @ñ @ ^ð @Ð8Wñ @r<   c                ó¬  € \        V P                  RR4      ;'       g    R4      P                  4       pVR
9  d'   \        4       P                  P                  RV4       Rp\        V P                  RR4      4      pV P                  R4      pRpVe@   \        V\        \        3R7      pVf%   \        4       P                  P                  R	V4       WV3# )z_``codex_app_server_auto`` / ``codex_responses_native`` / ``codex_responses_compact_threshold``.Úcodex_app_server_autoÚnativezdInvalid compression.codex_app_server_auto=%r; using 'native'. Valid values are: native, hermes, off.Úcodex_responses_nativeFÚ!codex_responses_compact_thresholdN)r‚  zwInvalid compression.codex_responses_compact_threshold=%r; using the automatic threshold derived from local compression.>   r  r  rš  )
r6   rm   r‰   r   rH   rI   r0   r†  r‚   r´   )r  Úapp_server_autoÚresponses_nativeÚ_rawÚcompact_thresholds   &    r:   Ú_compression_codex_settingsr¡  Ú  sË   € ä˜#Ÿ'™'Ð"9¸8ÓD×PÐPÈÓQ×WÑWÓY€OØÐ9Ô9Ü‹�‰×Ñð5àô	
ð
 #ˆô ' s§w¡wÐ/GÈÓ'OÓPÐØ�7‰7Ð6Ó7€DØÐØÒÜ)¨$¼¼e°}ÔEÐØÒ$Ü‹E�L‰L× Ñ ðPàôð
 Ð.?Ð?Ð?r<   c               ó   € V ^8„  d   QhRR/# )r4   r7   r  r8   )r9   s   "r:   r;   r;   ô  s   € ÷ Kñ KÐ4Gñ Kr<   c                ó¨  € \        VR4      p\        W4      w  r4\        VP                  RR4      4      p\	        VP                  R^4      4      p\        VP                  R^4      ^4      pV^8  d   ^pVP                  R\        \        RR4      4      pVe   \        V4      p\        ^ \	        VP                  R^4      4      4      p	\        VP                  R	4      R
R7      p
\        V
\        V RR4      4       \        V4      w  r¼p\        ^ \	        VP                  R^ 4      4      4      p\        R*/ RVbRVbR\        VRR4      bRVbRVbR\!        VP                  RR4      4      P#                  4       P%                  4       bR\        ^\        VP                  R^4      ^4      4      bR\'        V^
4      bR\        ^ \        VP                  R^ 4      ^ 4      4      bR\        VP                  RR4      R4      bR\        ^ \        VP                  RR4      R4      4      bRV	bR\        VRR
4      bR \        VR 4      P)                  4        UUu/ uFQ  w  pp\+        V\        \        34      '       g   K$  \+        V\,        4      '       d   K<  \!        V4      \        V4      bKS  	  uppbRVbR	V
bR!\        VP                  R!4      RR7      bR"\        VP                  R"4      R
R7      bR#\        ^\        VP                  R#^4      ^4      4      bR$\        ^\        VP                  R%R&4      R&4      4      bR'VbR(VbR)VbRVb # u uppi )+zKParse the ``compression`` section. Defaults here MUST match DEFAULT_CONFIG.ÚcompressionÚtarget_ratiogš™™™™™É?Úprotect_last_nÚmax_attemptsÚthreshold_tokensNÚprotect_first_nr  F©r
  r  Úidle_compact_after_secondsr‰  Úautoraise_notice_enabledrÞ  TÚprotect_lastÚ	tail_modeÚleanÚmin_tail_usersÚmin_tail_user_messagesÚproactive_prune_tokensÚproactive_prune_min_charsÚ proactive_prune_min_result_charsi@  Úproactive_prune_min_reclaimÚ"proactive_prune_min_reclaim_tokensi   Úprotect_firstÚabort_on_summary_failureÚmodel_thresholdsÚin_placeÚmicro_compactÚmicro_compact_every_n_turnsÚmicro_compact_defrag_tokensÚ%micro_compact_defrag_threshold_tokensiÐ  r™  r›  rœ  r8   )r  r–  r´   rm   r«   r  r)   r(   r†  rz  r0   r  rn   r¡  r  r  r6   rˆ   r‰   Úminrr   rª   r‚   )rø   r  r  r‰  r¬  r¥  r­  r§  r¨  r·  r  r�  rž  r   r«  r)  r…   s   &&               r:   Ú_parse_compression_configrÀ  ô  sŽ  € ä
�J Ó
.€CÜ*@ÀÓ*LÑ'€Iä˜Ÿ™ °Ó6Ó7€LÜ�s—w‘wÐ/°Ó4Ó5€Lô % S§W¡W¨^¸QÓ%?ÀÓC€LØ�aÔØˆð —w‘wÐ1´7¼>È=ÐZlÓ3mÓnÐØÒ#Ü(Ð)9Ó:Ðô ˜œ3˜sŸw™wÐ'8¸!Ó<Ó=Ó>€MÜ)¨#¯'©'Ð2GÓ*HÐRWÔXÐÜ3ØœW U¨J¸Ó=ôô <WÐWZÓ;[Ñ8€OÐ'8ô "% Q¬¨C¯G©GÐ4PÐRSÓ,TÓ(UÓ!VÐÜò /Ùð/á!9ð/ô ˜#˜y¨$Ô/ð/ñ "ð	/ñ
 "ð/ô �c—g‘g˜k¨6Ó2Ó3×9Ñ9Ó;×AÑAÔCð/ô ˜1Ô/°·±Ð8PÐRSÓ0TÐVWÓXÔYð/ô ˜ rÔ*ð/ô  # 1Ô&7¸¿¹Ð@XÐZ[Ó8\Ð^_Ó&`Ôað/ô #4Ø�G‰GÐ6¸Ó=¸tô#
ð/ô" %(ØÔ  §¡Ð)MÈtÓ!TÐVZÓ[ô%
ð#/ñ( $ð)/ô* "+¨3Ð0JÈEÔ!Rð+/ô2 *3°3Ð8JÓ)K×)QÑ)QÔ)Sô
Ù)S¡  AÜ˜!œc¤5˜\×*ô Ü3=¸aÄ×3Fô ŒC�‹F”E˜!“HÒÑ)Só
ð1/ñ8 *ð9/ñ: 0ð;/ô@ ! §¡¨Ó!4¸dÕCðA/ôD & c§g¡g¨oÓ&>ÈÕNðE/ôH %(ØÔ  §¡Ð)FÈÓ!JÈAÓNô%
ðI/ôP %(ØÔ  §¡Ð)PÐRVÓ!WÐY]Ó^ô%
ðQ/ñV .ðW/ñX  0ðY/ñZ +<ð[/ñ\ $>ð]/ð /ùó0
s   É!MÉ=MÊMc               ó4   € V ^8„  d   QhRRRRRRRRRRRRR	R
/# )r4   Úwhatr6   rT   r   Úrequirementrò   Úprint_fallbackrø   r7   rD   r8   )r9   s   "r:   r;   r;   B  sF   € ÷ ñ Ø
ðØðØ(+ðØ7:ðØLOðàðð 
ñr<   c                ó’  € \        4       P                  P                  RWW#4       ^ RIHp  V! \        VR\        VRR4      4      \        VRR4      4      '       g   R#  \        RT  R	V: R
V^ ,          P                  4       VR,          ,            RT;'       g    T R2	\        P                  R7       R#   \         d     Lei ; i)zêLog + stderr-print an invalid integer config value (``print_fallback``: user-facing
wording where it differs from the log line). The print is an automatic diagnostic and
honors the warning-notification policy; the log line never does.u*   Invalid %s: %r â€” %s. Falling back to %s.ry  Ú_notification_platformrÅ  r  Ú_notification_configNu   
âš  Invalid rç  z
  :é   NNz.
  Falling back to z.
)Úfile)r   rH   rI   r}  rz  rn   rk   rì  ÚupperÚsysÚstderr)rÂ  rT   rÃ  rò   rÄ  rø   rz  s   &&&&&& r:   Ú_warn_invalid_config_intrÍ  B  sÔ   € ô ƒE‡L�L×ÑØ4°dÀ;ôõ LðÙ,Ü�EÐ3´W¸UÀJÐPUÓ5VÓWÜ�EÐ1°4Ó8÷
ò 
ñ ð	
ô 
Ø
˜˜˜b ¡	ð *Ø˜�^×!Ñ!Ó# k°"¥oÕ5Ð6ð 7Ø+×7Ð7¨xÐ8¸ð	=ô �Z‰Z÷	øô ô Ùðús   ­0B8 Â8CÃCc               ó    € V ^8„  d   QhRRRR/# )r4   Ú_configured_providerr6   r7   r8   )r9   s   "r:   r;   r;   ]  s   € ÷ #ñ #Øð#àñ#r<   c                ór  € \        V 4      pVP                  R4      p\        4       p\        V\        4      '       dã   ^ RIHp VP                  4        FÈ  w  rx\        V\        4      '       g   K  \        V4      \        VP                  R4      4      ,          p	V! V4      '       g   VP                  V	4       Kh  W99   g   Kp  \        VP                  R4      ;'       g+    VP                  R4      ;'       g    VP                  R4      4      p
V
'       g   KÆ  V
u # 	  V F’  p\        V\        4      '       g   K  \        VP                  R4      4      pWµ,          '       d   KE  W;\        VP                  R4      4      ,          9   g   Kl  \        VP                  R4      4      p
V
'       g   K�  V
u # 	  R# )	zÙBase URL of a named custom provider (``providers.<name>`` first, then
``custom_providers``), normalized for route comparison; "" if unknown.
Disabled ``providers.*`` entries also mask their ``custom_providers`` twin.
ro   )Úis_provider_enabledr5   Úapir;  r\   rì   rA   )r•   rm   rj   rª   rß   rÌ  rÑ  rr   rš   rs   r*   )rÏ  r  Ú_custom_providersÚ_wantedÚ_user_providersÚ_disabled_idsrÑ  r  Ú_entryÚ_idsÚ_urlÚ_key_idss   &&&         r:   Ú$_custom_provider_configured_base_urlrÛ  ]  sW  € ô .Ð.BÓC€GØ —n‘n [Ó1€OÜ!›e€MÜ�/¤4×(Ò(Ý9Ø+×1Ñ1Ö3‰LˆDÜ˜f¤d×+Ò+ÙÜ/°Ó5Ô8TÐU[×U_ÑU_Ð`fÓUgÓ8hÕhˆDÙ& v×.Ò.Ø×$Ñ$ TÔ*ÙØŽÜ/Ø—J‘J˜uÓ%×TÐT¨¯©°EÓ):×TÐT¸f¿j¹jÈÓ>Tó�÷ ‘4Ø’Kñ 4ó $ˆÜ˜&¤$×'Ò'ÙÜ/°·
±
¸>Ó0JÓKˆØ×#Ô#ÙØÔ!=¸f¿j¹jÈÓ>PÓ!QÕQÖQÜ+¨F¯J©J°zÓ,BÓCˆDß‰tØ’ñ $ñ r<   c               ó   € V ^8„  d   QhRR/# ©r4   r7   r6   r8   )r9   s   "r:   r;   r;   ‰  s   € ÷  ñ  Èsñ  r<   c                óP  € \        VP                  R4      4      p\        VP                  R4      ;'       g    R4      P                  4       p\	        V4      p\        V4      pV\        9   d   RpM†V'       d   VR8w  dx   VP                  R4      '       ga   \        \        4      ;_uu_ 4        ^ RI
Hp \        V! V4      ;'       g    R4      P                  4       P                  4       V8g  pRRR4       V'       g   V'       d   \        W@V4      pV#   + '       g   i     L.; i)	z§Normalized route of the configured default model (``model.base_url``, else the named
custom provider's URL when ``model.provider`` is not a first-class/auth provider).r\   rO   rA   Frë   r˜   )Úresolve_providerN)r*   rm   r6   rˆ   r•   r‚   Ú_RUNTIME_FIRST_PROVIDER_IDSr­   r   rk   rp   rß  r‰   rÛ  )r  Ú
_model_cfgrÓ  Ú_configured_base_urlrÏ  rŠ   Ú_custom_provider_candidateÚresolve_auth_providers   &&&     r:   Ú_configured_default_base_urlrå  ‰  së   € ô 4°J·N±NÀ:Ó4NÓOÐÜ˜zŸ~™~¨jÓ9×?Ð?¸RÓ@×FÑFÓHÐÜ+Ð,@ÓA€EÜ!% e£ÐØÔ+Ô+Ø%*Ñ"ß	#¨°Ô(9À%×BRÑBRÐS\×B]ÒB]Ü”i× Õ ÝQäÑ)¨%Ó0×6Ð6°BÓ7×=Ñ=Ó?×EÑEÓGÈ5ÑPð '÷ !÷
  ×$>ÜCØ Ð.?ó 
Ðð  Ð÷ !× ús   Â.ADÄD%	c               ó   € V ^8„  d   QhRR/# rÝ  r8   )r9   s   "r:   r;   r;   Ÿ  s   € ÷ 	-ñ 	-¨#ñ 	-r<   c                óª  € \        V P                  ;'       g    R4      p\        T;'       g    R4      pRVP                  R^4      ^ ,          9   de   \        \        \
        4      ;_uu_ 4        \        \        V4      P                  RR7      4      p\        V4      \        V4      8X  d   TpRRR4       \        V4      #   + '       g   i     L; i)zVThe runtime route, keeping the requested URL's query string when it is the same route.rA   Ú?Ú#r  N)
r6   r\   Úsplitr   rÉ   rÊ   r   r   r#  r*   )rø   r\   Ú_activeÚ
_requestedÚ_without_querys   &&   r:   Ú_active_route_urlrî  Ÿ  s    € ä�%—.‘.×&Ð& BÓ'€GÜ�X—^�^ Ó$€JØ
ˆj×Ñ˜s AÓ& qÕ)Ô)Ü”i¤×,Õ,Ü'¬°Ó(<×(EÑ(EÈBÐ(EÓ(OÓPˆNÜ'¨Ó7Ô;SÐT[Ó;\Ô\Ø$�÷ -ô $ GÓ,Ð,÷	 -×,ús   Á/A CÃC	c               ó   € V ^8„  d   QhRR/# ©r4   r7   rŸ   r8   )r9   s   "r:   r;   r;   «  s   € ÷ ,"ñ ,"àñ,"r<   c           
     ó†  € VP                  R4      p\        V\        4      '       d   ^ RIHp V! V4      w  rh\        T;'       g    R4      P                  4       p	T	p
V P                  pV	'       dV   \        \        4      ;_uu_ 4        ^ RI
Hp V! W�P                  4      p
V! V P                  V P                  4      pRRR4       \        WV4      p\        W4      p\        YÞ\        VP                  R4      ;'       g    R4      P                  4       V P                  RR7      p\!        T
;'       d    W«8g  4      pV'       g	   V'       db   \#        4       P$                  P'                  R	TV P                  T;'       g    V P                  T	T;'       g    VP                  R4      4       R# V#   + '       g   i     Lú; i)
uF  Return ``model.context_length`` only if it describes the active runtime.

It describes the configured default model; a ``--model`` launch has already replaced
``agent.model``, so carrying the default's window into that runtime is stale. Live
switch/fallback paths already clear it â€” direct-start stays consistent with them.
r
  )Úsplit_model_config_defaultrA   )rE  NrO   T)r|   z^Ignoring model.context_length=%s for startup runtime %s at %s (configured default is %s at %s))rm   rª   rß   rÌ  rò  r6   rˆ   r¡   r   rk   rR  rE  rO   rå  rî  rŽ   r‚   r   rH   rG  )rø   r  rá  rÓ  Ú_config_context_lengthr\   Ú_defaultrò  rR  Ú_configured_default_modelÚ!_configured_default_runtime_modelÚ_active_runtime_modelrE  râ  Ú_active_base_urlÚ_route_mismatchÚ_model_mismatchs   &&&&&&           r:   Ú(_scope_context_length_to_default_runtimerû  «  sp  € ð �~‰~˜iÓ(€HÜ�(œD×!Ò!Ý@Ù0°Ó:‰ˆÜ # H§N N°Ó 3× 9Ñ 9Ó ;ÐØ(AÐ%Ø!ŸK™KÐß Ü”i× Õ ÝOÙ0LØ)¯>©>ó1Ð-ñ %AÀÇÁÈeÏnÉnÓ$]Ð!÷ !ô 8¸
ÐPaÓbÐÜ(¨Ó9ÐÜ-Ø´°J·N±NÀ:Ó4N×4TÐ4TÐRTÓ0U×0[Ñ0[Ó0]Ø�‰¨4ô€Oô Ø)÷ 	Gð 	GØ-ÑFó€O÷ Ÿ/Ü‹�‰×Ñð/à"Ø�K‰KØ×.Ð. §¡Ø%Ø ×>Ð> J§N¡N°:Ó$>ô	
ñ Ø!Ð!÷7 !× ús   Â6F0Æ0G 	c               ó    € V ^8„  d   QhRRRR/# )r4   rT   rŸ   r7   rD   r8   )r9   s   "r:   r;   r;   Ú  s   € ÷ 3ñ 3¨Mð 3¸dñ 3r<   c                óD   € Wn         \        V RR4      pVe	   Wn         R# R# )aÿ  Store the durable ``model.context_length`` pin on EVERY cached copy of it.

The pin is read from config exactly once, at construction, then cached twice: on
``agent._config_context_length`` (switch/fallback resolution plus every display and ``/usage``
surface) and on ``context_compressor._config_context_length`` (the compressor's own
re-resolution). Live paths that updated only one copy left the other stale, so a session could
report a pinned ceiling while compressing against a different window (#116467).
Úcontext_compressorN)ró  rn   )rø   rT   Ú_compressors   && r:   Úset_config_context_lengthr   Ú  s*   € ð $)Ô Ü˜%Ð!5°tÓ<€KØÒØ-2Ö*ñ r<   c               ó   € V ^8„  d   QhRR/# rð  r8   )r9   s   "r:   r;   r;   é  s   € ÷ ñ ¸]ñ r<   c                ó  €  ^ RI HpHp \        V\        4      '       d   TMV! 4       p\        V\        4      '       g   R# VP                  R/ 4      p\        V\        4      '       g   R# VP                  R4      pVe   \        V\        4      '       d   R# \        V4      pV^ 8:  d   R# \        YYR! V4      T\        \        V RR4      ;'       g    R4      4      #   \         d    \        P                  RRR	7        R# i ; i)
u•  Re-read the durable ``model.context_length`` pin for ``agent``'s CURRENT runtime, or ``None``.

Single re-derivation point for the cached pin: construction resolves it once, and every live path
that re-resolves a runtime used to clear the cached copy without re-reading the config â€” so a
model/provider switch or a Desktop config round-trip silently dropped a ceiling the user still had
on disk, and resolution fell through to probing / catalog metadata / the 256K fallback (#116467).

Reuses construction's own scoping (``_scope_context_length_to_default_runtime``): the pin describes
the configured default route, so an unrelated runtime never inherits it.
)ri  rj  Nr¡   rž   r\   rA   z>Could not re-read model.context_length for the current runtimeTrk  )rÌ  ri  rj  rª   rß   rm   r‚   r«   rû  r6   rn   rk   rH   rG  )rø   rz   ri  rj  r  r  Ú_pins   &&     r:   Ú!config_context_length_for_runtimer  é  sâ   € ðßRÜ)¨&´$×7Ò7‘V¹[»]ˆ
Ü˜*¤d×+Ò+ÙØ#Ÿ™¨°Ó4ˆÜ˜.¬$×/Ò/ÙØ×!Ñ!Ð"2Ó3ˆØŠ<œ: d¬D×1Ò1ÙÜ�4‹yˆØ�1Œ9ÙÜ7Ø˜~Ð/NÈzÓ/ZØ”#”g˜e Z°Ó4×:Ð:¸Ó;ó
ð 	
øô ô Ü�‰ÐUÐ`dˆÔeÚðús)   ‚=C Á(C Á++C ÂC Â,1C Ã"DÄDz4must be a positive integer (e.g. 256000, not '256K')c               ó   € V ^8„  d   QhRR/# )r4   r7   rD   r8   )r9   s   "r:   r;   r;     s   € ÷ ñ Èdñ r<   c           
     ó  € \        V P                  4      pV'       g   R# V Fá  p\        V\        4      '       g   K  \        VP	                  R4      4      V8w  d   K<  VP	                  R/ 4      p\        V\        4      '       d   VP	                  V P
                  / 4      MRp\        V\        4      '       d   VP	                  R4      MRpVe2   \        V4      f%   \        RV P
                  : R2V\        RRV R	7        R# 	  R# )
zJSurface a context_length the helper silently skipped (not a positive int).Nr\   rÞ   rž   zcontext_length for model z in custom_providersúauto-detectionúauto-detected context window©rø   )	r*   r\   rª   rß   rm   r¡   r†  rÍ  Ú_CTX_LEN_REQUIREMENT)rø   rÓ  Ú_targetÚ	_cp_entryÚ
_cp_modelsÚ_cp_model_cfgÚ_cp_ctxs   &&     r:   Ú,_warn_invalid_custom_provider_context_lengthr    sÛ   € ä& u§~¡~Ó6€GßÙÛ&ˆ	Ü˜)¤T×*Ò*ÙÜ# I§M¡M°*Ó$=Ó>À'ÔIÙØ—]‘] 8¨RÓ0ˆ
Ü;EÀjÔRV×;WÒ;W˜
Ÿ™ u§{¡{°BÔ7Ð]aˆÜ9CÀMÔSW×9XÒ9X�-×#Ñ#Ð$4Ô5Ð^bˆØÒ¤=°Ó#9Ò#AÜ$Ø+¨E¯K©K©?Ð:NÐOØÔ-Ð/?ÐA_Øõò
 	ó 'r<   c           
     ó  €  \        VR R/ R7      p\        V\        4      '       d   VP	                  R4      MRp Ve   \        V4      MRV n        VP	                  R/ 4      p\        V\        4      '       d   TM/ pVP	                  R4      pVe    \        V4      p ^ RI
Hp V! V4      p	Ve   \        WWiWr4      pW�n        \        W	4       Vfp   V	'       dh   \!        \        4      ;_uu_ 4        ^ RI
Hp
 V
! V P$                  V P&                  V	R7      pV'       d   \        V4      pRRR4       Vf   \)        W	4       Wpn        Ve/   ^ RIHp T! V P$                  V P&                  ;'       g    RV4       V P1                  V4      pV P3                  V4      '       d$   \5        4       P6                  P9                  R4       V P;                  W}4      pWyWå3#   \         d    / p ELÙi ; i  \        \        3 d    RT n         EL¸i ; i  \        \        3 d    \        RTRRR	T R
7       Rp EL–i ; i  \         d.    TP	                  R4      p	\        T	\        4      '       g   . p	 ELÂi ; i  + '       g   i     ELQ; i)Ú	auxiliaryr¤  rª  rž   Nr¡   z#model.context_length in config.yamlz1must be a plain integer (e.g. 256000, not '256K')r  r  r	  )ri  rç   )Ú"get_custom_provider_context_length)r¡   r\   rç   )Úwarn_once_on_pin_disagreementrA   zƒLM Studio model activation was rejected or completed without a verifiable active context length; falling back to configured context)r)   rk   rª   rß   rm   r«   Ú&_aux_compression_context_length_configrÉ   rÊ   rÍ  rÌ  ri  rt   rû  rÓ  rü   r   r  r¡   r\   r  ró  Úagent.context_pinr  Ú_ensure_lmstudio_runtime_loadedÚ_lmstudio_load_was_unverifiedr   rH   rI   Ú"_effective_lmstudio_context_length)rø   r  r\   Ú_aux_cfgÚ_aux_ctxrá  r  ró  ri  rÓ  r  Ú_cp_ctx_resolvedr  Ú _lmstudio_runtime_context_lengthÚ_effective_context_lengths   &&&            r:   Ú_resolve_context_lengthr  $  so  € ðÜ˜: {°MÈ2ÔNˆô 2<¸HÄd×1KÒ1Kˆx�|‰|Ð,Ô-ÐQU€Hð<ØHPÒH\´s¸8´}ÐbfˆÔ4ð —‘ ¨Ó,€JÜ#-¨j¼$×#?Ò#?‘ZÀR€Nà+×/Ñ/Ð0@ÓAÐØÒ)ð	*Ü%(Ð)?Ó%@Ð"ð#ÝEÙ;¸JÓGÐð Ò)Ü!IØ˜~ÐBXó"
Ðð
 0ÔÜ% eÔ?àÒ%×*;Ü”i× Õ ÝLÙAØ—k‘k¨E¯N©NÐM^ô Ð÷  Ü),Ð-=Ó)>Ð&÷ !ð "Ò)Ü8¸ÔRð $:Ô ØÒ)ÝCÙ% e§k¡k°5·>±>×3GÐ3GÀRÐI_Ô`à',×'LÑ'LÐMcÓ'dÐ$Ø×*Ñ*Ð+K×LÒLÜ‹�‰×ÑðSô	
ð !&× HÑ HØó!Ðð "Ð6OÐ[Ð[øôK ô Ø‹ðûô
 ”zÐ"ô <Ø7;ˆ×4ð<ûô œ:Ð&ô 	*Ü$Ø5Ð7MØCØ Ð"@Èõð
 &*Ó"ð	*ûô ô #Ø&ŸN™NÐ+=Ó>ÐÜÐ+¬T×2Ò2Ø "Ðúð#ú÷" !× Ð úsR   ‚G »G. ÂH ÂH8 Ã29I3ÇG+Ç*G+Ç.H
È	H
È$H5È4H5È84I0É/I0É3J	c                óH  € ^ RI Hp V! 4       '       d   R# Rp\        \        4      ;_uu_ 4        \	        V \
        4      '       d   V P                  R/ 4      M/ pVP                  RR4      ;'       g    RpRRR4       VR8X  d   R# RpRp ^ RIHp V! V4      pVf5    ^ R	IHp V! 4       p	V	e#   V	P                  V8X  d    V	P                  4       pVf-   V'       g%   \        4       P                  P!                  RV4       V#   + '       g   i     L–; i  \         d/   p\        4       P                  P                  RT4        Rp?L±Rp?ii ; i  \         d    Rp	 L¶i ; i  \         d1   p
R
p\        4       P                  P!                  RY*4        Rp
?
LÊRp
?
ii ; i)u”   Config-driven context engine: ``context.engine`` â†’ plugins/context_engine/<name>/ â†’
general plugin system â†’ None (built-in ContextCompressor).r-  NÚ
compressorÚcontextÚengineF)Úload_context_enginez4Context engine load from plugins/context_engine/: %s)Úget_plugin_context_engineTu  Context engine '%s' could not be safely copied for this agent (%s) â€” falling back to built-in compressor. Plugin engines that hold uncopyable state (locks, DB connections) should override clone_for_agent() (or __deepcopy__) to copy only mutable budget state.uE   Context engine '%s' not found â€” falling back to built-in compressor)rA  r.  r   rk   rª   rß   rm   Úplugins.context_enginer$  r   rH   rG  rµ  r%  r5   Úclone_for_agentrI   )r  r.  Ú_engine_nameÚ_ctx_cfgÚ_selected_engineÚ_copy_failedr$  Ú_ce_load_errr%  Ú
_candidateÚ	_copy_errs   &          r:   Ú_select_context_enginer/  p  s|  € õ =á×ÒÙØ€LÜ	”)×	Õ	Ü4>¸zÌ4×4PÒ4P�:—>‘> )¨RÔ0ÐVXˆØ—|‘| H¨lÓ;×KÐK¸|ˆ÷ 
ð �|Ô#ÙØÐØ€LðaÝ>Ù.¨|Ó<Ðð Òð	ÝDÙ2Ó4ˆJð Ò! j§o¡o¸Ô&Eð
Ø#-×#=Ñ#=Ó#?Ð ð Ò¯Ü‹�‰×ÑØSÐUaô	
ð Ð÷S 
×	ûô ô aÜ‹�‰×ÑÐQÐS_×`Ñ`ûðaûô ô 	ØŠJð	ûô ô 	Ø#�Ü“—‘×$Ñ$ð1ð
 !÷ñ ûð	úsT   ¯ADÁ3DÂD ÂE ÃE& ÄD	ÄEÄ"$EÅEÅE#Å"E#Å&F!Å1&FÆF!c                óˆ  € V P                   e   V P                   # \        \        4      ;_uu_ 4        ^ RIHpHp \        V P                  ;'       g    R4      P                  4       P                  4       R9   pV'       g   V! V P                  4      '       d   VuuRRR4       #  RRR4       R#   + '       g   i     R# ; i)ué   ``agent.max_tokens``, or the native-Gemini adapter default when unset: generateContent
still sends maxOutputTokens=65,535 and the threshold is pctÃ—(window âˆ’ max_tokens), so
reserving 0 let the provider 400 before compaction fired.N)Ú GEMINI_DEFAULT_MAX_OUTPUT_TOKENSÚis_native_gemini_base_urlrA   >   rc   Úgoogleúgoogle-geminiúgoogle-ai-studio)rä  r   rk   Úagent.gemini_native_adapterr1  r2  r6   rO   rˆ   r‰   r\   )rø   r1  r2  Ú_gemini_providers   &   r:   Ú_compressor_max_tokensr8  ¤  sŸ   € ð ×ÑÒ#Ø×ÑÐÜ	”)×	Õ	÷	
ô ˜uŸ~™~×3Ð3°Ó4×:Ñ:Ó<×BÑBÓDð I
ñ 
Ð÷ Ñ8¸¿¹×HÒHØ3÷ 
Ò	ð  I÷ 
ñ ÷ 
Ö	ñ ús   ²A&B0ÂB0Â0C	c           
     ól  € \        V4      pVEe   Y`n        R V n        ^ RIHp V! V P
                  V P                  \        V RR4      W@P                  VR7      pVP                  '       d   VP                  V P                  n	        V P                  P                  V P
                  W€P                  \        V RR4      V P                  V P                  R7       V P                  '       g/   \        4       P                  P                  RVP                   4       EM\#        R'/ RV P
                  bRVP$                  bR	VP&                  bR
VP(                  bRVP*                  bRR bRV P                  bRV P                  bR\        V RR4      bRVbRV P                  bRV P                  bRVP,                  bR\/        V 4      bRVP                  bRVP0                  bRVP2                  bRVP4                  bRVP6                  bRVP8                  bRVP:                  bRVb V n        \        V P                  RR 4      p	\=        V	4      '       d4   \?        \@        4      ;_uu_ 4        V	! WPPB                  R7       R R R 4       VPD                  V n#        VPH                  V n%        V P                  p
VPL                  '       d/   VPN                  '       d   \        PQ                  R4       RVn'        R VPN                  3R!VPR                  3R"VPT                  33 F$  w  r¼\W        W«4      '       g   K  \Y        W«V4       K&  	  VPL                  V n-        ^ R#I.H/p V! V 4       VP`                  V n1        VPd                  V n3        VPh                  V n4        ^ R$I5H6p T! V P
                  V P                  V P                  V P                  ;'       g    RPo                  4       Pq                  4       R%8H  R&7      V n9        VPt                  V n;        VPx                  V n=        R #   + '       g   i     EL®; i)(N)Úget_model_context_lengthr  rA   )r\   r  Úconfig_context_lengthrO   rç   )r¡   rž   r\   r  rO   r  zUsing context engine: %sr¡   Úthreshold_percentr©  r¦  Úsummary_target_ratioÚsummary_model_overrider  r\   r;  rO   r  r¸  rä  r¹  Úthreshold_tokens_capr²  r´  r¶  r±  r®  rç   Úbind_session_state)ró  rÑ  z¨compression.checkpoint_required is enabled: post-turn micro-compaction is disabled for this agent so every lossy rewrite passes through the checkpoint-gated compressor.FÚ_micro_compact_enabledÚ_micro_compact_every_n_turnsÚ&_micro_compact_defrag_threshold_tokens)Ú2_warn_checkpoint_required_without_capable_provider)Ú&resolve_native_compaction_capabilitiesr&  )r¡   r\   rO   Úis_codex_backendr8   )>r/  rþ  r�  Úagent.model_metadatar:  r¡   r\   rn   rO   r¹  Úupdate_modelr  r  r   rH   rà  r5   r   r‰  r·  r­  r¥  r¸  r8  r¨  r²  r³  rµ  r°  r®  rg  r   rk   rÑ  rÞ  Úcompression_enabledrº  Úcompression_in_placer  r»  rI   r¼  r½  rX  rf  Úcompression_checkpoint_requiredÚ)agent.conversation_compression_checkpointrD  r™  Ú codex_app_server_auto_compactionr›  Ú!codex_responses_native_compactionrœ  Úagent.native_compactionrE  rˆ   r‰   Úruntime_capabilitiesr§  Úmax_compression_attemptsr«  Ú&compression_idle_compact_after_seconds)rø   r  ÚcsrÓ  r  ró  r*  r:  Ú_plugin_ctx_lenÚ_bind_session_stateÚ_ccÚ_attrÚ_valuerD  rE  s   &&&&&&         r:   Ú_build_context_enginerY  ¶  sÒ  € Ü-¨jÓ9ÐØÓ#Ø#3Ô ð 37ˆÔ/õ 	BÙ2Ø�K‰K %§.¡.¼'À%ÈÐTVÓ:WØ";ÇnÁnØ.ô
ˆð ××ÐØ8:×8KÑ8KˆE×$Ñ$Ô5Ø× Ñ ×-Ñ-Ø—+‘+¨oÏÉÜ˜E 9¨bÓ1¸E¿N¹NÐUZ×UcÑUcð 	.ô 	
ð ××ÐÜ‹E�L‰L×ÑÐ8Ð:J×:OÑ:OÔPùä#4ò $
Ø—+’+ð$
Ø13·²ð$
ØOQ×O_ÒO_ð$
àŸ?š?ð$
àACÇÂð$
ñ $(ð$
ð 5:×4DÒ4Dð$
ð PUÏ~Ê~ð$
ô ˜E 9¨bÔ1ð	$
ñ Jcð	$
ð
 —^’^ð$
ð
 /4¯nªnð$
ð &(×%@Ò%@ð$
ô .¨eÔ4ð$
ð HJ×GZÒGZð$
ð "$×!4Ò!4ð$
ð $&×#<Ò#<ð$
ð .0×-IÒ-Ið$
ð 02×/MÒ/Mð$
ð $&×#4Ò#4ð$
ð ACÇÂð$
ñ /ð$
ˆÔ ô " %×":Ñ":Ð<PÐRVÓWÐÜÐ#×$Ò$Ü”i× Õ Ù¨:×BRÑBRÕS÷ !à "§
¡
€EÔØ!#§¡€EÔØ
×
"Ñ
"€Cð 
××Ð "×"2×"2Ð"2Ü�‰ðFô	
ð
 !ˆÔà	! 2×#3Ñ#3Ð4Ø	'¨×)GÑ)GÐHØ	1°2×3QÑ3QÐRó‰ˆô
 �3×ÔÜ�C Ö'ñð -/×,BÑ,B€EÔ)ÝlÙ6°uÔ=Ø-/×-EÑ-E€EÔ*Ø.0×.GÑ.G€EÔ+Ø.0×.RÑ.R€EÔ+ÝNÙ!GØ�k‰k E§N¡N¸U¿^¹^ØŸ.™.×.Ð.¨B×5Ñ5Ó7×=Ñ=Ó?À>ÑQô"€EÔð &(§_¡_€EÔ"Ø35×3PÑ3P€EÖ0÷C !× Ð ús   É)P"Ð"P3	c                óx  € \        V P                  R ^ 4      pV P                  '       dN   V P                  '       d<   \	        V P                  4      '       d!   \        T;'       g    ^ V P                  4      p\        V P                  ;'       g    R4      P                  4       P                  4       R8H  ;'       dY    \        V P                  \        4      ;'       d7    \        V P                  \        4      '       * ;'       d    V P                  ^ 8„  pV'       dž   V\        8  d‘   V'       g‡   \        R,          pV P                  '       d8   \	        V P                  4      '       d   RVR RV R\         R\         R	V R
2pM	RV RV R
2p\        RV P                    RVR R\        R RV 24      hR# R# R# )rž   rA   Úlmstudior¢   zYour local server is serving a rf  z'-token window.  Start it with at least zK context (llama.cpp: -c z7; vLLM: --max-model-len; Ollama: OLLAMA_CONTEXT_LENGTH=zn or a Modelfile num_ctx), or set model.ollama_num_ctx in config.yaml to the window it really serves (at least zK).zChoose a model with at least z£K context.  If your server reports a window smaller than the model's true window, set model.context_length in config.yaml to the real value (this must be at least zModel z has a context window of z$ tokens, which is below the minimum z required by Hermes Agent.  N)rn   rþ  Ú_ollama_num_ctxr\   r   rz  r6   rO   rˆ   r‰   rª   ró  r«   r‚   r   rÊ   r¡   )rø   Ú_ctxÚ$_allow_lmstudio_explicit_below_floorÚfloor_kÚremedys   &    r:   Ú_enforce_minimum_contextra    sµ  € ô �5×+Ñ+Ð-=¸qÓA€Dð ××Ð §§ Ô4EÀeÇnÁn×4UÒ4UÜ�4—9�9˜1˜e×3Ñ3Ó4ˆäˆE�N‰N× Ð ˜bÓ!×'Ñ'Ó)×/Ñ/Ó1°ZÑ?÷ 	-ð 	-Ü�u×3Ñ3´SÓ9÷	-ð 	-ä˜5×7Ñ7¼Ó>Ô>÷	-ð 	-ð ×(Ñ(¨1Ñ,ð	 )÷ �Ô-Ô-×6ZÜ(¨DÕ0ˆØ�>�>ˆ>Ô/°·±×?Ò?ð 2°$°q°Ð9`Ø�)Ð4Ô5KÐ4Lð M1Ü1GÐ0Hð Ià$˜I Sð	*ñ ð 0°¨yð 9*ð +2¨°#ð7ð ô Ø�U—[‘[�MÐ!:¸4À¸(ð C*Ü*@ÀÐ)Cð D!Ø!' ð*ó
ð 	
ñ' 7[Ñ-�tr<   c                óŒ  € V P                   '       g   V P                  ;'       g    R R 8X  d   R# \        \        4      ;_uu_ 4        ^ RIHp T! V P                  ;'       g    R4      pV'       d7   RpV P                  V4       \        4       P                  P                  V4       RRR4       R#   + '       g   i     R# ; i)r  N)Ú_check_hermes_model_warningrA   uÝ   âš  Nous Research Hermes 3 & 4 models are NOT agentic â€” they lack reliable tool-calling for agent workflows (delegation, cron, proactive tools). Consider an agentic model instead (Claude, GPT, Gemini, Qwen-Coder, etc.).)r  rÅ  r   rk   Úhermes_cli.model_switchrc  r¡   r!  r   rH   rI   )rø   rc  Ú_hermes_warnÚ	_user_msgs   &   r:   Ú_warn_nonagentic_hermes_modelrg  /  sŠ   € ð ××Ð˜EŸN™N×3Ð3¨e¸Ô=ÙÜ	”)×	Õ	ÝGÙ2°5·;±;×3DÐ3DÀ"ÓEˆßð;ð ð ×Ñ 	Ô*Ü‹E�L‰L× Ñ  Ô.÷ 
×	×	Ò	ús   Á*B2Á26B2Â2C	c                ób  € \        4       V n        V P                  '       Ed<   V P                  Ee-   V P                  e   RV P                  9   Ed   V P                   Uu0 uF<  p\        V\        4      '       g   K  VP                  R/ 4      P                  R4      kK>  	  pp^ RIH	p V P                  P                  4        F–  pV! V4      pVf'   \        4       P                  P                  RV4       K5  VR,          pWb9   d   KF  V P                  P                  RRRV/4       V P                  V P                  V3 F  pVP!                  V4       K  	  K˜  	  V P                  '       d~    V P                  P#                  V P$                  \'        \)        4       4      V P*                  ;'       g    RV P,                  \/        V P                  R^ 4      \/        V R	R 4      R
7       R # R # u upi   \0         d0   p\        4       P                  P3                  RT4        R p?R # R p?ii ; i)NÚcontext_enginer­  r5   )Únormalize_tool_schemazkContext engine returned a tool schema with no resolvable name; skipping to avoid poisoning the request (%r)rI  r  rž   Ú_gateway_session_key)rÝ  rÅ  r¡   rž   Úconversation_idz#Context engine on_session_start: %s)rj   Ú_context_engine_tool_namesrþ  r»  rª  rª   rß   rm   rL  rj  Úget_tool_schemasr   rH   rI   rH  r½  rG   Úon_session_startrÑ  r6   r-   rÅ  r¡   rn   rk   rG  )	rø   rÈ  Ú_existing_tool_namesrj  Ú_raw_schemaÚ_schemaÚ_tnameÚ_namesÚ_ce_errs	   &        r:   Ú_inject_context_engine_toolsrv  B  sÛ  € ô -0«E€EÔ$à× × Ñ Ø�K‰KÓ#Ø×#Ñ#Ò+Ð/?À5×CYÑCYÕ/Yð 8=·{²{ó 
Ù7B°!ÄjÐQRÔTX×FYÔ-ˆA�E‰E�*˜bÓ!×%Ñ% fÖ-±{ð 	ð  
õ 	EØ ×3Ñ3×DÑDÖFˆKÙ+¨KÓ8ˆGØŠä“—‘×$Ñ$ðIàô	ñ Ø˜V•_ˆFØÔ-ÙØ�K‰K×Ñ ¨
°JÀÐHÔIØ ×1Ñ1°5×3SÑ3SÐUiÓj�Ø—
‘
˜6Ö"ó kñ Gð$ ××Ðð	OØ×$Ñ$×5Ñ5Ø× Ñ ¬c´/Ó2CÓ.DØŸ™×0Ð0¨5¸¿¹Ü& u×'?Ñ'?ÐAQÐSTÓUÜ '¨Ð/EÀtÓ Lð	 6ö ñ  ùò- 
øô< ô 	OÜ‹E�L‰L×ÑÐDÀg×NÒNûð	Oús+   Á G/Á=%G/Å1AG4 Æ65G4 Ç4H.Ç?$H)È)H.c           
     ój  € V P                   ;'       g    / pR p\        V4      '       dX   VP                  '       dF   VP                  '       d4   \	        V4      '       g#   \        V\        V P                  RR 4      R7      pV P                  '       Eg    V P                  pVP                  '       d­   \        VRVP                  4      p\        VRR 4      p\        VRR 4      ! VP                  4      pVR J;'       d    VP                  V8H  pV'       d   RVR R	2MR
p	\        RVP                  R R\        V^d,          4       RVP                  R V	 R24       M\        RVP                  R R24       V'       d   V P                  VRR7       W0n        V'       d   \!        V4       RV n        R # )Nrž   )rž   r<  r?  Ú_effective_threshold_capc                ó   € R # rS   r8   )r]  s   &r:   r†   Ú+_emit_compression_summary.<locals>.<lambda>�  s   € ÉTr<   z (capped at rf  z tokens)rA   u   ðŸ“Š Context limit: z tokens (compress at z% = rö  z# tokens (auto-compression disabled)Tr±  F)r�  r‚   rÞ  r¬  rÌ   r±   rn   rþ  r  r‰  rž   r¨  rì  r«   rÃ  Ú_compression_warningrÖ   Ú _compression_feasibility_checked)
rø   rS  Ú
_autoraiseÚ_autoraise_noticerV  Ú_pctÚ_capÚ_eff_capÚ
_cap_bindsÚ	_cap_notes
   &&        r:   Ú_emit_compression_summaryr„  v  s¥  € ð ×8Ñ8×>Ð>¸B€JØÐô
 	ˆZ×ÒØ�J�JˆJØ×'×'Ð'Ü2°:×>Ò>ä>Ø¤w¨u×/GÑ/GÐIYÐ[_Ó'`ô
Ðð ××ÑØ×&Ñ&ˆØ�:�:ˆ:ä˜3Ð 3°R·\±\ÓBˆDÜ˜3Ð 6¸Ó=ˆDä˜sÐ$>Ñ@QÔRÐSV×SeÑSeÓfˆHØ!¨Ð-×RÐR°#×2FÑ2FÈ(Ñ2RˆJß;E˜, t¨A h¨hÑ7È2ˆIÜÐ(¨×);Ñ);¸AÐ(>Ð>SÔTWÐX\Ð]`ÕX`ÓTaÐSbÐbfÐgj×g{Ñg{Ð|}Ðf~ð  @Ið  Jð  JKð  Lõ  MäÐ(¨×);Ñ);¸AÐ(>Ð>aÐbÔcçØ×ÑÐ/¸DÐÔAð "3ÔßÜ,¨ZÔ8à-2€EÖ*r<   c                ó¾   € ^ RI Hp \        V RR4      ;'       g    V! 4       ;'       g    Rp\        W P                  '       * R7      V n        \        V \        4       R# )r@  )Úscope_terminal_cwdr%  N)Úworking_dirrÞ  )Úagent.runtime_cwdr†  rn   r$   Úskip_context_filesÚ_subdirectory_hintsrh  Ú_USAGE_STATE)rø   r†  r‡  s   &  r:   Ú_init_usage_staterŒ  ¢  sN   € Ý4ô ˜% °Ó5×UÐUÑ9KÓ9M×UÐUÐQU€KÜ 7Ø×-EÑ-EÔ)Eô!G€EÔä�%œÖ&r<   Ú_user_turn_countÚ_is_user_initiated_turnÚ_usage_anchorÚ_turn_base_usage_anchorÚ_request_pressure_anchoredÚsession_prompt_tokensÚsession_completion_tokensÚsession_total_tokensÚsession_api_callsÚsession_input_tokensÚsession_output_tokensÚsession_cache_read_tokensÚsession_cache_write_tokensÚsession_reasoning_tokensÚsession_estimated_cost_usdÚsession_cost_statusÚunknownÚsession_cost_sourcer{  Ú_api_latency_historyc                 ó   € \        ^
R7      # ©rY  )Úmaxlenr   r8   r<   r:   r†   r†   Ä  s	   € ¤E°Õ$4r<   Ú_api_output_historyc                 ó   € \        ^
R7      # r¡  r   r8   r<   r:   r†   r†   Å  s	   € ¤5°Õ#3r<   r‹  Úalliô  c          ¤     ó`  € 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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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/R#R0R#R1R#R2R#R3R#R4R#R5R#R6R#R7R#R8R9R:R;R<R=R>R?R@RRAR?RBRCRDRRERRFRRGRRHRRIRRJRRKRRLRRMRRNRRORRPRRQRRRRSRTR RUR?RVRRWRRXRRYRRZRR[RR\R]R^R_R`RRaRb/R# )cr4   r\   z
str | Noner  rO   r  r$  r%  zlist[str] | Noner   r!  r¡   r6   râ  r«   rª  r«  rÄ  r‚   rß  r  Útool_progress_moderÅ  Úlog_prefix_charsÚ
log_prefixÚproviders_allowedÚproviders_ignoredÚproviders_orderÚprovider_sortÚprovider_require_parametersÚprovider_data_collectionÚopenrouter_min_coding_scorer¶   rÑ  Útool_progress_callbackzCallable[..., Any] | NoneÚtool_start_callbackÚtool_complete_callbackÚthinking_callbackÚreasoning_callbackÚclarify_callbackÚread_terminal_callbackÚread_preview_callbackÚdrive_preview_callbackÚread_window_below_callbackÚconnection_callbackÚtour_callbackÚtheme_callbackÚsetup_beat_callbackÚstep_callbackÚstream_delta_callbackÚinterim_assistant_callbackÚtool_gen_callbackr  Únotice_callbackÚnotice_clear_callbackÚevent_callbackz%Optional[Callable[[str, dict], None]]Úreaction_callbackzOptional[Callable[[str], None]]rä  z
int | Nonerã  zdict[str, Any] | NoneÚservice_tierr÷   Úprefill_messageszlist[dict[str, Any]] | NonerÅ  Úuser_idÚuser_id_altÚ	user_nameÚchat_idÚ	chat_nameÚ	chat_typeÚ	thread_idÚgateway_session_keyr‰  Úload_soul_identityrM  Úskip_background_reviewrô  Úiteration_budgetr   rÖ  rP  rõ  rö  r÷  rø  Úpass_session_idrK  ÚcapabilitieszOptional[dict[str, bool]]r  r·   Ú
side_agentÚtool_result_metadata_callbackzOptional[Callable[..., dict]]r8   )r9   s   "r:   r;   r;   É  sß  € ÷ M%ñ M%ØðM%Ø1;ðM%ØNXðM%ØkuðM%àðM%à.>ðM%àPZðM%ð ðM%ð +.ðM%ð EHðM%ð 'ð	M%ð CSð	M%ð
 ðM%ð
 7;ðM%ð
 QUðM%ð ðM%ð ?IðM%ð ðM%ð .1ðM%ð K[ðM%ð (ðM%ð BRðM%ð ðM%ð DHðM%ð )ðM%ð O^ðM%ð ðM%ð <UðM%ð 3ðM%ð TmðM%ð 1ðM%ð NgðM%ð 0ðM%ð QjðM%ð 5ðM%ð VoðM%ð  !:ð!M%ð  Xqð!M%ð" -ð#M%ð" F_ð#M%ð$ 3ð%M%ð& -ð'M%ð( 5ð)M%ð( Zsð)M%ð* 1ð+M%ð* Kdð+M%ð, /ð-M%ð, Ohð-M%ð. :ð/M%ð0 7ð1M%ð0 LVð1M%ð2 ,ð3M%ð2 CMð3M%ð4 -ð5M%ð4 Hcð5M%ð6 ð7M%ð6 +5ð7M%ð6 KUð7M%ð6 isð7M%ð8 ð9M%ð8 ,6ð9M%ð8 JTð9M%ð8 hrð9M%ð: $ð;M%ð: AEð;M%ð< ð=M%ð< 48ð=M%ð> !ð?M%ð> OYð?M%ð@ &ðAM%ð@ CRðAM%ðB *ðCM%ðB ^bðCM%ðD "ðEM%ðD GJðEM%ðF "%ðGM%ðF =AðGM%ðH #ðIM%ðH :SðIM%ðH anðIM%ðJ ðKM%ðL $AñMM%r<   cV                óØ  € ^ RI HpV VV! 4       '       d   R;pA;pCpDRpB. p7/ pI\        4        \        4       pW\         F  pX\        V VXXWVX,          4       K  	  \         F  pX\        V RVX 2XWVX,          4       K  	  XR;'       g    RV n        XG;'       g    \        V
4      V n	        RV n
        RV n        RV n        \        XD4      V n        V'       d   V R2MRT n        ^ R	IHpY VY! W14      '       d   ^ R
IHpZ VZ! V4      pT;'       g    RV n        \+        V\,        4      '       d5   VP/                  4       '       d   VP/                  4       P1                  4       MRp[T[;'       g    RV n        \+        XP\,        4      '       d5   XPP/                  4       '       d   XPP/                  4       P1                  4       MV P2                  V n        XQ;'       g    / P7                  4        U\U]u/ uF9  w  p\p]\+        V\\,        4      '       g   K  \+        X]\        4      '       g   K6  X\X]bK;  	  up]p\V n        XJV n        T;'       g    TV n        \?        T;'       g    T;'       g    . 4      V n         \C        WX[V4       \E        WXJ4       \F         F  p^\        V V^XWV^,          4       K  	  RV n$        \K        V \L        4       V PO                  4       V n(        \S        T6;'       g    / 4      V n*        T7;'       g    . T n+        RV n,        \[        4       V n.        / V n/        \[        4       V n0        \c        V 4       \e        V XH4       \g        V 4       \K        V \h        4       \k        WVXI4       \m        V VI4       \o        WV4       \q        V VXEXFV4V3XKXLXMXN4
        ^ RI9H:p_ V_! 4       p`\y        V X`V84       \{        V V`XCV8XTR7       \}        V V`4       \        V V`4      pa\�        V V`V4      w  pbpcpdpe\ƒ        V V`VaVcVdXE4       \…        V VeVb4       \‡        V 4       \‰        V 4       \‹        V 4       \�        V 4       \�        V 4       \‘        V Va4       \“        V 4       R# u up]p\i   \v         d    / p` LÉi ; i)r@  r-  TFrR  Nr  rF   rA   r"  )Únormalize_actual_base_urlr½  )rN  )JrA  r.  r#   Úlocalsr   rf  r   r%  r   rÓ  Ú	_print_fnÚbackground_review_callbackÚmemory_notificationsr‚   rÒ  r©  rl   r#  rp   rÙ  r\   rª   r6   rˆ   r‰   rO   rK  rr   rÕ  rO  r$  rt   r%  r>  rb  r   Úsuppress_status_outputrh  r�  Ú _read_reasoning_echo_from_configÚ_reasoning_echo_flagrß   r÷   rÈ  Ú_force_ascii_payloadrj   Ú_image_rejecting_modelsÚ_reasoning_rejecting_routesÚ_fast_mode_unavailable_modelsrÓ  rÙ  rá  rº  r�  r   rÏ  rù  rÌ  r¾  rk   r  rW  r�  rÀ  r  rY  r!   ra  rg  rv  rŒ  r    r„  r"   )frø   r\   r  rO   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µ  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Í  rÎ  rÏ  rÐ  r‰  rÑ  rM  rÒ  ró  rô  rÓ  rÖ  rP  r`  rõ  rö  r÷  rø  rÔ  rK  rÕ  r  rÖ  rN  r×  r.  Ú_paramsÚ_namer#  rÙ  r9  rK   rT   Ú_cbÚ_load_agent_configr  rS  ró  rÓ  r  rá  sf   &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&                r:   Ú
init_agentré  É  sø  € õP =á×ÒØDHÐHÐÐH˜[Ð+AØ"ÐØÐØˆÜÔä‹h€Gß$ˆÜ��u˜g e�nÖ-ñ %ç)ˆÜ�˜˜5˜'�{ G¨E¥NÖ3ñ *àŸ˜˜t€EÔà-×PÐP´ÀÓ1P€EÔð €E„OØ'+€EÔ$Ø!%€EÔä#'Ð(>Ó#?€EÔ ß+5˜*˜ QÑ'¸2€EÔå4Ù�x×*Ò*Ý=Ù,¨XÓ6ˆØ—^�^ €E„NÜ0:¸8ÄS×0IÒ0IÈhÏnÉn×N^ÒN^�H—N‘NÓ$×*Ñ*Ô,Ðdh€MØ"×(Ð( b€E„Nô Ð(¬#×.Ò.Ð3E×3KÑ3K×3MÒ3Mð 	× Ñ Ó"×(Ñ(Ô*à�^‰^ð 
Ôð '3×&8Ð&8°b×%?Ñ%?Ô%AôÙ%A‘z�s˜EÜ�cœ3×ô 	Ü$.¨u´d×$;ô 	ˆˆUŠ
Ñ%Aò€EÔð -€EÔØ#×.Ð. w€EÔÜ˜(×0Ð0 d×0Ð0¨bÓ1€E„NÜ�e }°hÔ?Ü�e Ô7÷  ˆÜ��s˜G C�LÖ)ñ  à#(€EÔ ä�%œÔ(ð "'×!GÑ!GÓ!I€EÔÜ"Ð#4×#:Ð#:¸Ó;€EÔØ-×3Ð3°€EÔØ!&€EÔä$'£E€EÔ!Ø(*€EÔ%ô +.«%€EÔ'ä˜eÔ$Ü�UÐ.Ô/Ü�5ÔÜ�%œÔ'Ü�% (¨NÔ;Ü˜ Ô/Ü�Ð):Ô;ÜØˆz˜:Ð'8Ð:JÈJØÐ5Ð7SÐUpôðÝPÙ'Ó)ˆ
ô ˜% ¨XÔ6Ü�˜
 K°È.ÕYÜ˜ 
Ô+Ü	" 5¨*Ó	5€BÜWnØˆz˜8óXÑTÐÐ-Ð/HÈ*ô ˜% ¨RÐ1BÐD]Ð_iÔjÜ˜e ZÐ1GÔHÜ˜UÔ#Ü! %Ô(Ü  Ô'Ü�eÔÜ'¨Ô.Ü˜e RÔ(Ü˜eÖ$ùóøôZ ô ØŠ
ðús$   Ç%QÈQÈQÎQ ÑQ)Ñ(Q)ré  )rA   NrS   >   r(  r-  r%  r  r+  )F)FFr8   >   r7  r1  ÚvertexÚvertexaiú	vertex-aiú
gcp-vertexúgoogle-vertex)¬Ú__conditional_annotations__r  Ú
__future__r   r  r×  ÚrerË  r]  r‰  Úcollectionsr   Ú
contextlibr   r   Útypesr   Útypingr   r	   r
   r   r   Úurllib.parser   r   r   Úagent.context_compressorr   Úagent.agent_init_fallbackr   r   r   Úagent.agent_init_paramsr   r   r   rÍ  r   Úagent.iteration_budgetr   r   Úagent.memory_contextr   Úagent.memory_providerr   Úagent.session_activityr   rG  r   r   r   Úagent.agent_init_ollamar    r!   Úagent.primary_runtime_snapshotr"   Úagent.process_bootstrapr#   Úagent.subdirectory_hintsr$   Úagent.think_scrubberr%   Úagent.tool_guardrailsr&   r'   rÌ  r(   r)   Úhermes_cli.route_identityr*   Úhermes_cli.timeoutsr+   r?   r-   Úhermes_state_idsr.   Úutilsr/   r0   r  rH   rj   r2   Ú__annotations__r@   rM   r{   rŽ   r•   rš   r±   rº   r¼   rÀ   rÌ   rÖ   rÙ   rå   rô   rü   r   r  r  r  r  r  r7  r>  rb  rh  ÚEventÚRLockÚLockrt   r�  ÚUNKNOWNr–  rª  Úlocalrß   rº  rÓ  rÙ  rá  rï  r  r  r  r-  r`  rt  r  r�  rŽ  r™  r&  rE  rÏ  rÚ  rù  r  r+  rW  r�  r†  r–  r¡  rÀ  rÍ  rÛ  rà  rå  rî  rû  r   r  r
  r  r  r/  r8  rY  ra  rg  rv  r„  rŒ  r‹  Úmaxsizeré  Ú__all__)rï  s   @r:   Ú<module>r     sw  øðôõ #ã Û 	Û 	Û 
Û Û Ý Ý Ý Ý !ß 6Õ 6ß 7Ñ 7å 6ß oÑ oß cÑ cÝ +ß RÝ 9Ý 9Ý 5÷ñ ÷ cÝ DÝ 7Ý <Ý 7÷÷ 6Ý >Ý <Ý ,Ý +ß 8ð 
×	Ò	˜;Ó	'€ñ 7:³eÐ Ð3Ó ;õ4÷ð õ0ðB$à"'÷$õN>õ
0÷ð ð2ØW[÷ò&?õ
	*õõ\õ%õ
VõõD(õ ,õ
õ"õFõ
8ôU˜/ô UóÐ ò0TòfSõlDð$"Ø˜ð$"à˜eð$"ð Ð3ð$"ð $ Tð	$"ð ˜Eð$"ð ˜$ð$"ð   §¡ð$"ð ˜Dð$"ð '¨ð$"ð �I—O‘Oð$"ð ˜YŸ_™_ð$"ð % dð$"ð" �dð#$"ð$ ˜9Ÿ>™>ð%$"ð* ˜ð+$"ð, ˜iŸn™nð-$"ð2 ˜Cð3$"ð4   §¡à�qØ˜Ø˜YŸ^™^ð  Ø˜dØ˜yŸ~™~ñG$"€�ó $ðNð )¨%ðð ! %ð	ð
 ˜%ðð ˜dðð " 5ðð Ñ,ðð ˜>ðð  Ð!3×!;Ñ!;ðð *¨3ðð �Tðð �qðð" ˜ð#ð(   ð)ð* ˜ð+ð0 �dð1ð2 $ Tð3ð4 �að5€ˆ^ó ð<&"Ø˜ð&"ð
 & tð&"ð '¨ð&"ð Ð,ð&"ð ˜\ð&"ð ˜Tð&"ð # Dð&"ð ! %ð&"ð    R¨ ð!&"ð( ! $ð)&"ð. ˜ð/&"ð4 ˜YŸ_™_ð5&"ð:   ð;&"ð< ˜Að=&"ð> ˜5ð?&"ðD ˜TðE&"ðJ ˜ðK&"€�ó &ðT ˜Ø˜5ð Ð 8ØÐ4Ø&¨Ø ð ˜9Ÿ>™>Ø˜AØ˜)Ÿ/™/Ø˜aà! 5à Ø$ dØ% tà% tð/!€ˆ~ó ò6")òJ/ò[÷"	Eð 	Eò.2òbKò"xõõ>jõZNò@$GòNY÷ 	ð 	ð ‘mÐ$<Ð>PÓQÐRØÙÐ+Ð-GÐSWÔXðZà™=Ð)AÐCXÓYÐZØ™-Ð(;Ð=VÓWÐXØÑGÐHØ‘}Ð%=Ð?UÓVÐWØ‘MÐ"7Ð9SÐ^bÔcÐdØ‰]Ð+Ð-IÓJÐKð
QÐ ÐMó 
õõò CRõL9ò&#$òL#QõL#õLT(ònC(ðL*©r÷ *õ%õ>@õ4K÷\ð õ6#óNÐ õ
 õ,	-õ,"õ^3÷ð ðD NÐ õò,I\òX1òhò$MQò`&
òR/ó&1Oóh)3óX'ð Ù˜ð á˜uð ñ
 �Tð ñ ˜tð ñ ! %ð ñ ˜Qð ñ   ð ñ ˜Að ñ ˜ð ñ ˜Að ñ ˜Qð ñ   ð ñ  ! !ð! ñ"  ð# ñ$ ! #ð% ñ& ™9ð' ñ( ™6ð) ñ, Ò4ÙÒ3ñ/ €ˆnô ð8 #'¸dÐ[_Ðx|Ø"ÀÐ]aØ!°È#Ï+Ê+Ø)-ÐUYØ#¸UÐW\Ù#È4Ø°2Ð]aØ*.ÐTXØ $È%Ø+/Ð`dØ!ÐW[Ø59ÐosØ37ÐimØ26ÐlpØ7;ÐquØ<@ÐswØ/3ÐaeØ59Ø/3Ø7;ÐuyØ37ÐfjØ15ÐjnØ<@Ø9=ÐX\Ø.2ÈtØ/3ÐeiØ°tÐW[ÐuyØ¸ÐVZÐtxØ&*ÀuØ$¸%Ø#(°TÐ[_Ø(,ÐTXØ,0À$ÐdiØ$&ÉCØ')À5Ø%)ÐUYÐptØ¨TØCG÷MM%ñ M%ñ` ˆ.‚r<   