
    )jBY                      d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
m
Z
 ddlmZmZmZmZ ddlmZmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZmZmZ ddlm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z&m'Z'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0  ej1        d          Z2d Z3d}dZ4d~dZ5dd!Z6dd(Z7dd*Z8	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddd{Z9d|gZ:dS )uQ  Implementation of :meth:`AIAgent.__init__` — extracted as a module function.

``AIAgent.__init__`` is one of the longest methods in the codebase (60+
parameters, ~1,400 lines of attribute initialization, provider
auto-detection, credential resolution, context-engine bootstrap, etc.).
Keeping it in ``run_agent.py`` bloats that file with code that's mostly
"setup state, then forget".

After this extraction the body lives here as ``init_agent(agent, ...)``
and :meth:`AIAgent.__init__` is a thin wrapper that calls
``init_agent(self, ...)``.  All imports the body needs at module-load
time are listed below; the body also performs many lazy imports inside
its own scope that come along unchanged.

Symbols that tests patch on ``run_agent.*`` (``OpenAI``, ``cleanup_vm``,
etc.) are resolved through :func:`_ra` so the patch contract is
preserved.
    )annotationsN)datetime)AnyDictListOptional)urlparseparse_qs
urlunparse)ContextCompressor)IterationBudget)StreamingContextScrubber)MINIMUM_CONTEXT_LENGTHfetch_model_metadatais_local_endpointquery_ollama_num_ctx)_install_safe_stdio)SubdirectoryHintTracker)StreamingThinkScrubber)ToolCallGuardrailConfigToolCallGuardrailControllerToolGuardrailDecision)cfg_get)get_provider_request_timeout)get_hermes_home)base_url_host_matches	run_agentc                     ddl } | S )zLazy reference to ``run_agent`` so callers can patch
    ``run_agent.OpenAI`` / ``run_agent.cleanup_vm`` / ... and have those
    patches reach this code path.
    r   Nr   r   s    5/home/ubuntu/.hermes/hermes-agent/agent/agent_init.py_rar!   >   s    
     	autoraiseDict[str, float]returnstrc                    t          t          | d         dz                      }t          t          | d         dz                      }d| d| dS )aI  Build the one-time notice shown when Codex gpt-5.5 raises compaction.

    ``autoraise`` is ``{"from": <old_ratio>, "to": <new_ratio>}``. The same
    text is printed inline for CLI users and replayed via ``status_callback``
    for gateway users, so it must be self-contained and include the exact
    opt-back-out command.
    fromd   touI   ℹ Codex gpt-5.5 caps context at 272K, 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)intround)r#   from_pctto_pcts      r    #_build_codex_gpt55_autoraise_noticer/   G   sp     56*S01122Hy,--..F	U	U 	U&	U 	U 	Ur"   valuer   c                ~    t          | t                    sdS |                                                     d          S )N /)
isinstancer&   striprstrip)r0   s    r    _normalized_custom_base_urlr7   Y   s5    eS!! r;;==$$$r"   agent_modelentryDict[str, Any]boolc                   t          |                    dd          pd                                                                          }|sdS |t          | pd                                                                          k    S )Nmodelr2   T)r&   getr5   lower)r8   r9   provider_models      r    _custom_provider_model_matchesrA   _   sw    7B//5266<<>>DDFFN tS!23399;;AACCCCr"   providerr=   base_urlcustom_providersList[Dict[str, Any]]Optional[Dict[str, Any]]c                F   | pd                                                                 dk    rd S t          |          }|sd S d }|pg D ]}t          |t                    st          |                    d                    |k    r?|                    d          }t          |t                    r|slt          |                    dd          pd                                           }|r"t          ||          rt	          |          c S |t	          |          }|S )Nr2   customrC   
extra_bodyr=   )r5   r?   r7   r4   dictr>   r&   rA   )	rB   r=   rC   rD   
target_urlfallbackr9   rI   r@   s	            r    %_custom_provider_extra_body_for_agentrM   f   s?    	B%%''833t,X66J t)-H!'R ( (%&& 	&uyy'<'<==KKYY|,,
*d++ 	: 	UYYw339r::@@BB 	(-eU;; (J'''''(J''HOr"   Nonec                F   t          | j        | j        | j        |          }|sd S t	          t          | di           pi           }t	          |          }|                    d          }t          |t                    r|                    |           ||d<   || _	        d S )N)rB   r=   rC   rD   request_overridesrI   )
rM   rB   r=   rC   rJ   getattrr>   r4   updaterP   )agentrD   rI   	overridesmerged_extra_bodyexisting_extra_bodys         r    !_merge_custom_provider_extra_bodyrW      s    6k)	  J  WU$7<<BCCIZ((#--55%t,, 6  !4555/Il'Er"   r2   Z         ?Fallr)        
   api_keyapi_modeacp_commandacp_argslist[str] | Nonecommandargsmax_iterationsr+   
tool_delayfloatenabled_toolsets	List[str]disabled_toolsetssave_trajectoriesverbose_logging
quiet_modetool_progress_modeephemeral_system_promptlog_prefix_chars
log_prefixproviders_allowedproviders_ignoredproviders_orderprovider_sortprovider_require_parametersprovider_data_collectionopenrouter_min_coding_scoreOptional[float]
session_idtool_progress_callbackcallabletool_start_callbacktool_complete_callbackthinking_callbackreasoning_callbackclarify_callbackread_terminal_callbackstep_callbackstream_delta_callbackinterim_assistant_callbacktool_gen_callbackstatus_callbacknotice_callbacknotice_clear_callback
max_tokensreasoning_configservice_tierrP   prefill_messagesplatformuser_iduser_id_alt	user_namechat_id	chat_name	chat_type	thread_idgateway_session_keyskip_context_filesload_soul_identityskip_memoryparent_session_iditeration_budget'IterationBudget'fallback_modelcheckpoints_enabledcheckpoint_max_snapshotscheckpoint_max_total_size_mbcheckpoint_max_file_size_mbpass_session_idcF                6[   t                       |	| _        |
| _        |>pt          |
          | _        || _        || _        || _        || _        || _	        || _
        |0| _        |1| _        |2| _        |3| _        |4| _        |5| _        |6| _        |7| _        |8| _        d| _        d| _        |9| _        |:| _        |E| _        |@| _        || _        |r| dnd| _        |pd| _        t;          |t<                    r:|                                r&|                                                                 nd}F|Fpd| _!        |p|| _"        tG          |p|pg           | _$        |dv r	|| _%        n
| j!        dk    rd| _%        n| j!        dv rd| _%        n|F#| j&        dk    rd	| j'        v rd| _%        d| _!        n|F| j&        d
k    rd| _%        d| _!        n| j!        dk    s|F| j&        dk    rd| _%        d| _!        n~| j'        (                    d          )                    d          rd| _%        nI| j!        dk    s/| j&        *                    d          rtW          | j'        d          rd| _%        nd| _%        	 | ,                                 n# tZ          $ r Y nw xY w	 ddl.m/}Gm0}H | j!        |Gvr |H| j        | j!                  | _        n# tZ          $ r Y nw xY w|| j%        dk    r| j!        dk    rt=          | j        pd                                           *                    d          st=          | j        pd                                           *                    d          sy| 1                                se| 2                                s!| 3                    | j        | j!                  r0d| _%        ti          | d          r| j5        6                                 | j!        dk    s| 7                                rxtq                      j9        :                                sStq                      j9        ;                                 ty          j=        t|          dd           ?                                 || _@        || _A        || _B        d!| _C        | | _D        |!| _E        |"| _F        |#| _G        |$| _H        |%| _I        |&| _J        |(| _K        |)| _L        |*| _M        |'| _N        d!| _O        t                      | _Q        d| _R        d!| _S        d| _T        d| _U        d!| _V        ty          jW                    | _X        d| _Y        ty          jZ                    | _[        tw                      | _\        ty          jZ                    | _]        d| _^        g | __        ty          jZ                    | _`        || _a        || _b        || _c        || _d        || _e        || _f        || _g        || _h        || _i        |+| _j        |,| _k        |-| _l        t          |.pi           | _n        |/pg | _o        d!| _p        | q                                \  | _r        | _s        d"| _t        	 dd#lumv}I  |I            w                    d$i           pi }J|Jw                    d%d"          }K|Kd&v r|K| _t        n# tZ          $ r Y nw xY wd!| _x        d!| _y        t          jz                    | _{        d'| _|        d| _}        d| _~        d| _        d| _        d| _        tw                      d!dd(| _        d| _        dd)lm}Lm}M  |Ltq                      j        *           | j        r1 |M             tq                      j                            d+           n| j        r	 d| _        d!| _        t                      | _        t                      | _        d| _        d| _        d| _        i | _        d| _        d!| _        t-          | j!        | j                  }N| j%        dk    rHdd,lm}Om}P | j!        dk    }Q|Qrdd-lm}R t7          j        d.|pd          }S|Sr|S                    d/          nd0}T|T| _         |R|T          | _        d1| _        || _        d!| _        d1| _        d| _        i | _        | j        stI          d2| j         d3|T d4           
n-| j!        dk    }U|Ur|p |P            pdn|pd}V| j!        d5k    rst;          |Vt<                    r^|Vr\	 dd6lm}W  |W            }VnJ# tZ          $ r=}Xddl}Y|Y                    tR                                        d7|X           Y d}X~Xnd}X~Xww xY w|V| _        |V| _        || _        dd8lm}Z |Ur t;          |Vt<                    r |Z|V          nd!| _         |O|V||N9          | _        d| _        i | _        | j        stI          d2| j         d:           dd;lm}[  |[|V          rtI          d<           nt;          |Vt<                    r:t]          |V          d=k    r&tI          d>|Vdd?          d@|VdAd                     n| j%        dk    rVt7          j        d.|pd          }S|Sr|S                    d/          nd0| _        d| _        	 dd#lumv}\  |\            w                    di           w                    dBi           }]|]w                    dC          ru|]w                    dD          r`|]dC         |]dD         dE| _        |]w                    dF          r|]dF         | j        dG<   |]w                    dH          r|]dH         | j        dH<   n# tZ          $ r Y nw xY wd| _        i | _        | j        s.| j        rdInd}^tI          d2| j         dJ| j         |^ d4           n5|r|r	ta          |          }_|_j        r\te          |_                    dK                    }`dL ti          |_j                                                  D             }a||`|adM}bn||dN}b|N|N|bdO<   | j!        dk    r| j"        |bdP<   | j$        |bdQ<   |}ctW          |cdR          rddSlm}d  |d            |bdT<   nPtW          |cdU          rddVlm}e  |e|c          |bdT<   n*tW          |cdW          r%tq                                                      |bdT<   ntW          |cdX          rddYlm}f  |f            |bdT<   ntW          |cdZ          r	d[d\i|bdT<   ntW          |cd]          r%tq                                                      |bdT<   ntW          |cd          rdd^lm}g  |g|          |bdT<   n\dT|bvrJ	 dd_lm}h  |h| j!                  }i|ir|ij        rt          |ij                  |bdT<   n# tZ          $ r Y nw xY wndd`lm}j  |j| j!        pda| j        db          \  }k}l|k_|kj        t=          |kj                  dN}b|N|N|bdO<   t          |kdcd          }m|mst          |kddd          }m|mrt          |m          |bdT<   n| j!        pd                                                                 }n|nr6|ndevr1|n                                 df}o	 ddglm}p |pw                    |n          }q|qr|qj        r|qj        d         }on# tZ          $ r Y nw xY wg }rt;          |?tF                    rdh |?D             }rnBt;          |?t                    r-|?w                    di          r|?w                    dj          r|?g}rd!}s|rD ]R}t|tw                    dk          pd                                pd}u|usj|tw                    dl          p|tw                    dm          pd                                }v|vr*t          j        |vd                                          pd}u |j|tdi         |tdj         d|tw                    dn          |uo          \  }w}x|w|tdi         | _!        |xp|tdj         | _        d| _        |wj        t=          |wj                  dN}b|N|N|bdO<   t          |wdcd          }y|yst          |wddd          }y|yrt          |y          |bdT<   d}s nT|sst          dp|n dq|o dr          t          | dsd!          st          dt          |b| _        t=          |bw                    dnd                                                     }ztW          |zdR          rgdu| j        pd                                 v rJ|bw                    dT          pi }{|{w                    dvd          }|dw}}|}||vr||r|| dx|} |{dv<   n|}|{dv<   |{|bdT<   |                                  |bw                    dkd          | _        |bw                    dn| j                  | _        	 |                     |bdydz          | _        | j        s͐tI          d2| j                    |rtI          d{|            dd;lm}[ |bw                    dkd|          }~ |[|~          rtI          d<           nht;          |~t<                    rC|~rA|~d}k    r;t]          |~          d=k    r'tI          d~|~dd?          d@|~dAd                     ntI          d           n%# tZ          $ r}t          d|           d}~ww xY wt;          |?tF                    rd |?D             | _        nOt;          |?t                    r3|?w                    di          r|?w                    dj          r	|?g| _        ng | _        d| _        t          | dsd!          | _        | j        r| j        d         nd| _        | j        r| j        st]          | j                  d/k    r1| j        d         }tI          d|dj          d|di          d4           nLtI          dt]          | j                   dd                    d | j        D                       z              tq                                          ||| j                  | _        tw                      | _        | j        rd | j        D             | _        t          | j                  }| j        stI          dt]          | j                   dd                    |                      |r&tI          dd                    |                      |r&tI          dd                    |                      n| j        stI          d           ddlm} d| j        v r|nd| _        | j        rZ| j        sStq                                                      }d |                                D             }|rtI          d|            | j        r| j        stI          d           | j
        rM| j        sFt]          | j
                  dk    r| j
        dd         d@z   n| j
        }tI          d| d           | jr        rD| j        s=| js        r| j!        dk    rd}n| js        rd}nd}tI          d| d| jt         d           t          j                    | _        |r|| _        nG| j                            d          }t          j                    j        dd         }| d| | _        	 ddlm}  || j                   n%# tZ          $ r | j        t          j        d<   Y nw xY wt                      }|dz  | _        | j                            dd           d!| _        	 dd#lumv}  |            w                    d          pi }t          |w                    dd!                    | _        n# tZ          $ r Y nw xY wg | _        d| _        d| _        d| _        d| _        ddlm}  ||A|B|C|D          | _        |<| _        |=| _        d| _        d!| _        | j        |,|+d| _        ddlm}  |            | _        	 dd#lumv}  |            }n# tZ          $ r i }Y nw xY w	 t          t          j        |w                    di                               | _Q        n># tZ          $ r1}tq                      j                            d|           Y d}~nd}~ww xY wd| _        d| _        d!| _        d!| _        d| _        d| _        d| _         |;s	 |w                    di           }|w                    dd!          | _        |w                    dd!          | _        t          |w                    dd                    | _        | j        s| j        r\ddlm}  ||w                    dd          |w                    dd                    | _        | j                                         n# tZ          $ r Y nw xY wd| _        |;sq	 |r|w                    did          nd}|r|                                rddlm} ddlm	}  |            | _         ||          }|r1|
                                r| j                            |           | j        j        r[| j        |0pdt=          t                                dd}| j        r9	 | j                            | j                  }|r||d<   n# tZ          $ r Y nw xY w| j        r
| j        |d<   | j        r
| j        |d<   | j        r
| j        |d<   | j        r
| j        |d<   | j        r
| j        |d<   | j        r
| j        |d<   | j        r
| j        |d<   | j        r
| j        |d<   	 ddƐlm}  |            }||d<   d|d<   n# tZ          $ r Y nw xY w | j        j        d'i | tq                      j                            d|           n0tq                      j                            d|           d| _        nF# tZ          $ r9}tq                      j                            d|           d| _        Y d}~nd}~ww xY w| j        r| j        | jh        	d| jh        v rd̈́ | j        D             }| j                                        D ]r}|w                    dd          }|r||v rd|dМ}| j                            |           |r1| j                            |           |                    |           sd| _        	 |w                    di           }t          |w                    dd                    | _        n# tZ          $ r Y nw xY w|w                    di           }t;          |t                    si }|w                    dda          | _        t          |w                    dd                    | _        t          |w                    dd                    | _        	 |w                    ddئ          }t          |          }t1          |d/          }n# t2          t4          f$ r d}Y nw xY w|| _        |w                    di           }t;          |t                    si }t9          |w                    ddۦ                    }t=          |w                    dd                                                     dv }d| _        	 ddlm}m}  || j        | j!        |ߦ          }|.|}|} || j        | j!                  r||dz   k    r||d| _        n# tZ          $ r Y nw xY wt=          |w                    dd                                                     dv }t9          |w                    dd                    }t          |w                    dd                    }t1          dt          |w                    ddئ                              }t=          |w                    dd!                                                     dv }	 tA          |ddi           }n# tZ          $ r i }Y nw xY wt;          |t                    r|w                    d          }nd}|-	 t          |          }n# t2          t4          f$ r d}Y nw xY w|| _        |w                    dji           }| jj        t;          |t                    r|w                    d          }|	 t;          |t                    rt4          t          |          }|dk    rt4          || _j        nb# t2          t4          f$ rL tq                      j                            d|           tI          d|dtB          j"                   Y nw xY w| jj        | j        d<   t;          |t                    r|w                    d          }nd}|v	 t          |          }nd# t2          t4          f$ rN tq                      j                            d|           tI          d|dtB          j"                   d}Y nw xY w	 ddlum#}  ||          }n<# tZ          $ r/ |w                    d          }t;          |tF                    sg }Y nw xY w|| _$        tK          | |           ||r	 ddlum&}  || j        | j        |          }|rt          |          }n# tZ          $ r d}Y nw xY w|x| j        r| j        (                    d          nd}|D ]Q}t;          |t                    s|w                    dn          pd(                    d          }|r||k    r|w                    di           }t;          |t                    r|w                    | j        i           }t;          |t                    r|w                    d          }|	 t          |          }|dk    rt4          np# t2          t4          f$ rZ tq                      j                            d| j        |           tI          d| j        d|dtB          j"                   Y nw xY w nS|| _'        | (                    |           d}d}	 t;          |t                    r|w                    di           ni }|Ġw                    dd          pd}n# tZ          $ r Y nw xY w|dk    r	 dd l)m*}  ||æ          }n@# tZ          $ r3}tq                      j                            d|Ʀ           Y d}~nd}~ww xY w|5	 ddl+m,}  |Ǧ            }|r|Ȑj-        |k    r|}n# tZ          $ r Y nw xY w|(tq                      j                            d|æ           ||| _.        ddl/m0}  || j        | j        t          | dkd          || j!        |          }| j.        1                    | j        || j        t          | dkd          | j!        | j%                   | j        s.tq                      j                            d|j-                   nMte          | j        ||||d| j        | j        t          | dkd          || j!        | j%        |          | _.        || _3        t          | j.        dd          }|rE|ːth          k     r9t5          d	| j         d
|dxdth          dxdth          dz   d	          tw                      | _5        ti          | d          r| j.        r| j        | jh        
d| jh        v rd | j        D             }| j.        6                                D ]}|w                    dd          }|r||v rd|dМ}| j                            |           |rM| j                            |           | j5                            |           |                    |           ti          | d          r| j.        r	 | j.        7                    | j        t=          t                                | j        pd| j        t          | j.        dd          t          | dd                     n@# tZ          $ r3}tq                      j                            d|̦           Y d}~nd}~ww xY wtq          t          j        d          pd          | _9        d| _:        d| _;        d| _<        d| _=        d| _>        d| _?        d| _@        d| _A        d| _B        d| _C        d| _D        d| _E        d|| _F        d| _G        d}t;          |t                    r|w                    d          }|́Z	 t          |ͦ          | _G        nB# t2          t4          f$ r, tq                      j                            d|ͦ           Y nw xY w| jG        | j        rt          | j                  r	 t;          | j        t<                    r| j        nd}ΐt          | j        | j        |pd          }|r|dk    r|| _G        n@# tZ          $ r3}tq                      j                            d|Ц           Y d}~nd}~ww xY w| jG        rG|rE|̀C| jG        |k    r7tq                      j                            d| jG        |           || _G        | jG        r5| j        s.tq                      j                            d| jG                   | j        s|rJtI          d| j.        jJ        dxd t          |d!z             d"| j.        jK        dxd4           n#tI          d| j.        jJ        dxd#           t          | d$d          }|r |rtI          t          |Ѧ                     d| _M        t          | d$d          }|r|rt          |Ѧ          | _M        d!| _N        | j.        }| j        | j!        | j        | j%        t          | dkd          t          | j                  | jr        | js        t          |dj| j                  t          |dn| j                  t          |dkd          t          |di| j!                  |ҐjJ        |ҐjK        d%| _O        | j%        dk    r2| jO        P                    | j        | j        | j        d&           dS dS ((  a  
    Initialize the AI Agent.

    Args:
        base_url (str): Base URL for the model API (optional)
        api_key (str): API key for authentication (optional, uses env var if not provided)
        provider (str): Provider identifier (optional; used for telemetry/routing hints)
        api_mode (str): API mode override: "chat_completions" or "codex_responses"
        model (str): Model name to use (default: "anthropic/claude-opus-4.6")
        max_iterations (int): Maximum number of tool calling iterations (default: 90)
        tool_delay (float): Delay between tool calls in seconds (default: 1.0)
        enabled_toolsets (List[str]): Only enable tools from these toolsets (optional)
        disabled_toolsets (List[str]): Disable tools from these toolsets (optional)
        save_trajectories (bool): Whether to save conversation trajectories to JSONL files (default: False)
        verbose_logging (bool): Enable verbose logging for debugging (default: False)
        quiet_mode (bool): Suppress progress output for clean CLI experience (default: False)
        ephemeral_system_prompt (str): System prompt used during agent execution but NOT saved to trajectories (optional)
        log_prefix_chars (int): Number of characters to show in log previews for tool calls/responses (default: 100)
        log_prefix (str): Prefix to add to all log messages for identification in parallel processing (default: "")
        providers_allowed (List[str]): OpenRouter providers to allow (optional)
        providers_ignored (List[str]): OpenRouter providers to ignore (optional)
        providers_order (List[str]): OpenRouter providers to try in order (optional)
        provider_sort (str): Sort providers by price/throughput/latency (optional)
        openrouter_min_coding_score (float): Coding-score floor (0.0-1.0) for the
            openrouter/pareto-code router. Only applied when model == "openrouter/pareto-code".
            None or empty = let OpenRouter pick the strongest available coder.
        session_id (str): Pre-generated session ID for logging (optional, auto-generated if not provided)
        tool_progress_callback (callable): Callback function(tool_name, args_preview) for progress notifications
        clarify_callback (callable): Callback function(question, choices) -> str for interactive user questions.
            Provided by the platform layer (CLI or gateway). If None, the clarify tool returns an error.
        max_tokens (int): Maximum tokens for model responses (optional, uses model default if not set)
        reasoning_config (Dict): OpenRouter reasoning configuration override (e.g. {"effort": "none"} to disable thinking).
            If None, defaults to {"enabled": True, "effort": "medium"} for OpenRouter. Set to disable/customize reasoning.
        prefill_messages (List[Dict]): Messages to prepend to conversation history as prefilled context.
            Useful for injecting a few-shot example or priming the model's response style.
            Example: [{"role": "user", "content": "Hi!"}, {"role": "assistant", "content": "Hello!"}]
            NOTE: Anthropic Sonnet 4.6+ and Opus 4.6+ reject a conversation that ends on an
            assistant-role message (400 error).  For those models use structured outputs or
            output_config.format instead of a trailing-assistant prefill.
        platform (str): The interface platform the user is on (e.g. "cli", "telegram", "discord", "whatsapp").
            Used to inject platform-specific formatting hints into the system prompt.
        skip_context_files (bool): If True, skip auto-injection of SOUL.md, AGENTS.md, and .cursorrules
            into the system prompt. Use this for batch processing and data generation to avoid
            polluting trajectories with user-specific persona or project instructions.
        load_soul_identity (bool): If True, still use ~/.hermes/SOUL.md as the primary
            identity even when skip_context_files=True. Project context files from the cwd
            remain skipped.
    N r2   >   codex_responsesbedrock_conversechat_completionscodex_app_serveranthropic_messageszopenai-codexr   >   	xai-oauthxaizchatgpt.comz/backend-api/codexzapi.x.air   	anthropiczapi.anthropic.comr   r3   z
/anthropicbedrockzbedrock-runtime.zamazonaws.comr   r   r   )_AGGREGATOR_PROVIDERSnormalize_model_for_providerzcopilot-acpzacp://copilotz
acp+tcp://)rB   _transport_cache
openrouterTzopenrouter-prewarm)targetdaemonnameF5m)load_configprompt_caching	cache_ttl>   1hr   initializing)activeseen_below_90
usage_band)setup_loggingsetup_verbose_logging)hermes_homez=Verbose logging enabled (third-party library logs suppressed))build_anthropic_clientresolve_anthropic_token)build_anthropic_bedrock_clientzbedrock-runtime\.([a-z0-9-]+)\.   z	us-east-1zaws-sdku&   🤖 AI Agent initialized with model: z& (AWS Bedrock + AnthropicBedrock SDK, )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.)_is_oauth_token)timeoutz (Anthropic native))is_token_provideru*   🔑 Using credentials: Microsoft Entra ID   u   🔑 Using token:    z...	guardrailguardrail_identifierguardrail_version)guardrailIdentifierguardrailVersionstream_processing_modestreamProcessingModetracez + Guardrailsz (AWS Bedrock, )queryc                &    i | ]\  }}||d          S )r    ).0kvs      r    
<dictcomp>zinit_agent.<locals>.<dictcomp>  s/     ! ! ! $1Aqt! ! !r"   )r^   rC   default_query)r^   rC   r   rc   rd   zopenrouter.ai)build_or_headersdefault_headerszintegrate.api.nvidia.com)build_nvidia_nim_headerszapi.routermint.comzapi.githubcopilot.com)copilot_default_headerszapi.kimi.comz
User-Agentzclaude-code/0.1.0zportal.qwen.ai)_codex_cloudflare_headers)get_provider_profile)resolve_provider_clientauto)r=   	raw_codex_custom_headers_default_headers>   r   rH   r   _API_KEY)PROVIDER_REGISTRYc                    g | ]C}t          |t                    |                    d           ,|                    d          A|DS rB   r=   r4   rJ   r>   r   fs     r    
<listcomp>zinit_agent.<locals>.<listcomp>7  s_     ' ' '"#)!T22'78uuZ7H7H'MNUUSZ^^'' ' 'r"   rB   r=   r^   key_envapi_key_envrC   )r=   r   explicit_base_urlexplicit_api_keyz
Provider 'z:' is set in config.yaml but no API key was found. Set the zM environment variable, or switch to a different provider with `hermes model`._fallback_activatedzxNo LLM provider configured. Run `hermes model` to select a provider, or run `hermes setup` for first-time configuration.claudezx-anthropic-betaz&fine-grained-tool-streaming-2025-05-14,
agent_init)reasonsharedu   🔗 Using custom base URL: nonez	dummy-keyu   🔑 Using API key: u3   ⚠️  Warning: API key appears invalid or missingz$Failed to initialize OpenAI client: c                    g | ]C}t          |t                    |                    d           ,|                    d          A|DS r   r   r   s     r    r   zinit_agent.<locals>.<listcomp>  s^     !
 !
 !
!T""!
'(uuZ'8'8!
=>UU7^^!
!
 !
 !
r"   u   🔄 Fallback model:  (u   🔄 Fallback chain (z providers): u    → c              3  >   K   | ]}|d           d|d          dV  dS )r=   r   rB   r   Nr   r   s     r    	<genexpr>zinit_agent.<locals>.<genexpr>  s;      ``Q!G*@@*@@@``````r"   )rh   rj   rm   c                *    h | ]}|d          d         S functionr   r   )r   tools     r    	<setcomp>zinit_agent.<locals>.<setcomp>  s"    !S!S!St$z"26":!S!S!Sr"   u   🛠️  Loaded z tools: z, u      ✅ Enabled toolsets: u      ❌ Disabled toolsets: u@   🛠️  No tools loaded (all tools filtered out or unavailable))KANBAN_GUIDANCEkanban_showc                    g | ]	\  }}||
S r   r   )r   r   	availables      r    r   zinit_agent.<locals>.<listcomp>  s"    ZZZyPYZZZZr"   u=   ⚠️  Some tools may not work due to missing requirements: u   📝 Trajectory saving enabled<   u   🔒 Ephemeral system prompt: 'z' (not saved to trajectories)znative AnthropiczAnthropic-compatible endpointzClaude via OpenRouteru   💾 Prompt caching: ENABLED (z TTL)z%Y%m%d_%H%M%S   _)set_current_session_idHERMES_SESSION_IDsessions)parentsexist_okwrite_json_snapshotsassistant_tool
foreground)CheckpointManager)enabledmax_snapshotsmax_total_size_mbmax_file_size_mb)re   r   r   )	TodoStoretool_loop_guardrailsz&Tool loop guardrail config ignored: %sr]   memorymemory_enableduser_profile_enablednudge_interval)MemoryStorememory_char_limiti  user_char_limiti_  )r  r   )MemoryManager)load_memory_providercliprimary)rz   r   r   agent_contextsession_titler   r   r   r   r   r   r   r   )get_active_profile_nameagent_identityhermesagent_workspacezMemory provider '%s' activatedz/Memory provider '%s' not found or not availablez&Memory provider plugin init failed: %sc                    h | ]@}t          |t                    |                    d i                               d          AS r   r   r   ts     r    r  zinit_agent.<locals>.<setcomp>  T      
  
  
!T"" 
EE*b!!%%f-- 
  
  
r"   r   r  )typer  skillscreation_nudge_intervalrS   tool_use_enforcementtask_completion_guidanceenvironment_probeapi_max_retries   compression	thresholdg      ?codex_gpt55_autoraise>   1yestrue) _compression_threshold_for_model_is_codex_gpt55)allow_codex_gpt55_autoraiseg&.>)r(   r*   r  target_ratiog?protect_last_nr[   protect_first_nabort_on_summary_failure	auxiliary)defaultcontext_lengthr   uy   Invalid model.max_tokens in config.yaml: %r — must be a positive integer (e.g. 4096). Falling back to provider default.u.   
⚠ Invalid model.max_tokens in config.yaml: zO
  Must be a positive integer (e.g. 4096).
  Falling back to provider default.
)fileu   Invalid model.context_length in config.yaml: %r — must be a plain integer (e.g. 256000, not '256K'). Falling back to auto-detection.u2   
⚠ Invalid model.context_length in config.yaml: zf
  Must be a plain integer (e.g. 256000, not '256K').
  Falling back to auto-detected context window.
)get_compatible_custom_providersrD   )"get_custom_provider_context_length)r=   rC   rD   modelsu   Invalid context_length for model %r in custom_providers: %r — must be a positive integer (e.g. 256000, not '256K'). Falling back to auto-detection.u&   
⚠ Invalid context_length for model z in custom_providers: zi
  Must be a positive integer (e.g. 256000, not '256K').
  Falling back to auto-detected context window.

compressorcontextengine)load_context_enginez4Context engine load from plugins/context_engine/: %s)get_plugin_context_engineuE   Context engine '%s' not found — falling back to built-in compressor)get_model_context_length)rC   r^   config_context_lengthrB   rD   )r=   rF  rC   r^   rB   r_   zUsing context engine: %s)r=   threshold_percentrB  rA  summary_target_ratiosummary_model_overriderm   rC   r^   rQ  rB   r_   rC  zModel z has a context window of z$ tokens, which is below the minimum z9 required by Hermes Agent.  Choose a model with at least i  zBK context, or set model.context_length in config.yaml to override.context_compressorcontext_enginec                    h | ]@}t          |t                    |                    d i                               d          AS r   r   r,  s     r    r  zinit_agent.<locals>.<setcomp>-  r.  r"   _gateway_session_key)r   r   r=   rF  conversation_idz#Context engine on_session_start: %sTERMINAL_CWD)working_dirg        unknownollama_num_ctxz'Invalid ollama_num_ctx config value: %r)r^   z#Ollama num_ctx detection failed: %sz?Ollama num_ctx capped: %d -> %d (model.context_length override)zAOllama num_ctx: will request %d tokens (model max from /api/show)u   📊 Context limit: z tokens (compress at r)   z% = z# tokens (auto-compression disabled)!_compression_threshold_autoraised)r=   rB   rC   r_   r^   client_kwargsuse_prompt_cachinguse_native_cache_layoutcompressor_modelcompressor_base_urlcompressor_api_keycompressor_providercompressor_context_lengthcompressor_threshold_tokens)anthropic_api_keyanthropic_base_urlis_anthropic_oauthr   (Q  r   r=   re   r   r   rf   rk   rl   rm   rn   ro   r   _user_id_user_id_alt
_user_name_chat_id
_chat_name
_chat_type
_thread_idrX  	_print_fnbackground_review_callbackr   r   r   _credential_poolrp   rq   rC   r4   r&   r5   r?   rB   r`   listra   r_   _base_url_hostname_base_url_lowerr6   endswith
startswithr   _get_transport	Exceptionhermes_cli.model_normalizer   r   _is_azure_openai_url_is_direct_openai_url&_provider_model_requires_responses_apihasattrr   clear_is_openrouter_urlr!   _openrouter_prewarm_doneis_setset	threadingThreadr   startr{   r}   r~   suppress_status_outputr   r   r   r   r   r   r   r   r   r   r   _executing_toolsr   _tool_guardrails_tool_guardrail_halt_decision_interrupt_requested_interrupt_message_execution_thread_id _interrupt_thread_signal_pendingRLock_client_lock_pending_steerLock_pending_steer_lock_tool_worker_threads_tool_worker_threads_lock_delegate_depth_active_children_active_children_lockrr   rs   rt   ru   rv   rw   rx   rh   rj   r   r   r   rJ   rP   r   _force_ascii_payload_anthropic_prompt_cache_policy_use_prompt_caching_use_native_cache_layout
_cache_ttlhermes_cli.configr   r>   _budget_exhausted_injected_budget_grace_calltime_last_activity_ts_last_activity_desc_current_tool_api_call_count_rate_limit_state_credits_state_credits_session_start_micros_credits_latch_or_cache_hitshermes_loggingr   r   _hermes_homeloggerinfo_stream_callback_stream_needs_breakr   _stream_context_scrubberr   _stream_think_scrubber _current_streamed_assistant_text_persist_user_message_idx_persist_user_message_override_anthropic_image_fallback_cache_anthropic_client_is_anthropic_oauthr   agent.anthropic_adapterr   r   r   researchgroup_bedrock_region_anthropic_api_key_anthropic_base_urlr^   client_client_kwargsprinthermes_cli.authr   logging	getLogger__name__warningr   agent.azure_identity_adapterr   len_bedrock_guardrail_configr	   r   r   _replacer
   itemsagent.auxiliary_clientr   r   _routermint_headershermes_cli.modelsr   _qwen_portal_headersr   	providersr   r   r   rQ   upperr   api_key_env_varsosgetenvr   RuntimeError_apply_user_default_headers_create_openai_client_fallback_chain_fallback_index_fallback_modeljoinget_tool_definitionstoolsvalid_tool_namessortedagent.prompt_builderr  _kanban_worker_guidancecheck_toolset_requirementsr   nowsession_startrz   strftimeuuiduuid4hexgateway.session_contextr  environr   logs_dirmkdir_session_json_enabledr;   _session_messages_codex_reasoning_replay_enabled_memory_write_origin_memory_write_context_cached_system_prompttools.checkpoint_managerr  _checkpoint_mgr_session_db_parent_session_id_last_flushed_db_idx_session_db_created_session_init_model_configtools.todo_toolr  _todo_storer   from_mapping&_aux_compression_context_length_config_memory_store_memory_enabled_user_profile_enabled_memory_nudge_interval_turns_since_memory_iters_since_skillr+   tools.memory_toolr  load_from_disk_memory_manageragent.memory_managerr!  plugins.memoryr"  is_availableadd_providerget_session_titlehermes_cli.profilesr'  initialize_alldebugget_all_tool_schemasappendadd_skill_nudge_interval_tool_use_enforcement_task_completion_guidance_environment_probemax	TypeError
ValueError_api_max_retriesrg   r^  r=  r>  r   sysstderrrH  _custom_providersrW   rI  _config_context_length_ensure_lmstudio_runtime_loadedplugins.context_enginerN  hermes_cli.pluginsrO  r   rU  agent.model_metadatarP  update_modelr   compression_enabledr   _context_engine_tool_namesget_tool_schemason_session_startr   _subdirectory_hints_user_turn_count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session_cost_source_ollama_num_ctxr   r   rF  threshold_tokensr/   _compression_warning _compression_feasibility_checked_primary_runtimerR   )rS   rC   r^   rB   r_   r`   ra   rc   rd   r=   re   rf   rh   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   rz   r{   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rP   r   r   r   r   r   r   r   r   r   r   r   r   r   
session_dbr   r   r   credential_poolr   r   r   r   r   provider_namer   r   _load_pc_cfg_pc_cfg_ttlr   r   _provider_timeoutr   r   _is_bedrock_anthropicr   _region_match
_br_region_is_native_anthropiceffective_keyr   _mm_exc_logging_is_oatr   _load_br_cfg_gr	_gr_label_parsed_url
_clean_url_query_paramsr_  effective_baser   r   r   r   _gpf_phr   _routed_clientr
  _routed_headers	_explicit	_env_hintr   _pcfg_fb_entries_fb_resolved_fb_fb_explicit_key_fb_key_env
_fb_client	_fb_model_fb_headers_effective_baseheadersexisting_beta_FINE_GRAINEDkey_usedefb
tool_namesr  requirementsmissing_reqsprompt_previewsourcetimestamp_str
short_uuidr  r   _load_sess_cfg	_sess_cfgr  r  _load_agent_config
_agent_cfg_tlg_err
mem_configr  _mem_provider_name_MemoryManager	_load_mem_mp_init_kwargs_str'  _profile_mpe_existing_tool_names_schema_tname_wrappedskills_config_agent_section_raw_api_retries_api_retries_compression_cfgcompression_threshold_codex_gpt55_autoraise_cthresh_fn_is_codex_gpt55_fn_model_cthresh_prev_thresholdr&  compression_target_ratiocompression_protect_lastcompression_protect_first$compression_abort_on_summary_failure_aux_cfg_aux_context_config
_model_cfg_config_max_tokens_parsed_max_tokensr   rH  r  rI  _cp_ctx_resolved_target	_cp_entry_cp_url
_cp_models_cp_model_cfg_cp_ctx_parsed_selected_engine_engine_name_ctx_cfgrN  _ce_load_errrO  
_candidaterP  _plugin_ctx_len_ctx_ce_err_ollama_num_ctx_override_key_for_ollama	_detectedexc
_autoraise_ccs                                                                                                                                                                                                                      r    
init_agentr     s7   p EK)E .P1P1PE!E/E+E!E1E$;E!ENEN$E EEN E E E!4E
 EO'+E$1E1E+E,E-E+5=*''''2E^EN0:8S0I0IhhnnN^N^hHNN$$**,,,dhM"(bEN#.wE(0d0b11ENxxx!	>	)	)*	/	/	/*

 M11 E$999*'

U%=%K%K*	;	&	&=+@UE]atEtEt-$			%	%c	*	*	3	3L	A	A , .	9	$	$ ++,>?? 
%!%"7II 
% ,+   		
 	
 	
 	
 	
 	
 	
 	

 >!66666u{ENSSEK     	N000Nm++EN(b))//11<<_MM ,EN(b))//11<<\JJ , **,, ,
 '')) , ;; <   , + 5,-- 	+"((*** 	,&&%*B*B*D*D&.5577 	'&**,,,'%	
 	
 	
 %'''#9E  3E#9E #(E /E1E-E#9E 'E"7E'AE$+E+E"7E/E
 #E8::EHLE' "'E#E-1E-2E*"**E +/E ) 0 0E ,/55E&/n&6&6E# EE"+."2"2E 0E/E+E'E(CE%%=E"(CE% .E/E "E-E%E"#4#:;;E-3E!&E 	,,.. >Eu= EAAAAAA,..$$%5r::@b{{;--<#E    (-E$$E &*Y[[E%3E&*E!"E ;?E  E*.E'&)eeeSWXXE !"E
 DCCCCCCCMcee01111 YZZZZ		  	 "E !&E &>%?%?E" $:#;#;E 
 .0E*
 '+E#+/E(
 =?E) #E %E 5U^U[QQ~---[[[[[[[[ !&) ;  I	[NNNNNNI&H(.VXYYM3@Q,,Q///kJ$.E!&D&DZ&P&PE#'0E$(0E%(-E%%EMEL#%E # Au{r|  A  A  A
 $)>[#@ L`uWG(?(?(A(AGRgngtrtM ~00Zs5S5S0Xe0	RRRRRR$F$F$H$HMM    ....&&x0088Z        *EM'4E$(0E% KJJJJJCW  )G\fgtvy\z\z  )G(>(>(>  BGE%&<&<]H^o&p&p&pE#EL#%E # [_u{___``` KJJJJJ$$]33 [FGGGGs33 [M8J8JR8O8OY}RaR/@YY]SUSVSVEWYYZZZ	-	-	- 	"DhnRTUU:G X 3 3A 6 6 6[*.'	EEEEEE,..$$Y3377RHHCww-.. L377;N3O3O L+./E+F(+,?(@3 3/ 77344 lNQRjNkE34JK777## L?B7|E3G< 	 	 	D	! 	|+0+JRPRIz5;zzW\Wlznwzzz{{{ Q	x Q	 #8,,K  K'(<(<2(<(F(FGG
! !(01B(C(C(I(I(K(K! ! !  ' *%2! ! -4 J J ,+<i(~..+0+<i((-f%%N$^_EE CCCCCC3C3C3E3E/00&~7QRR KKKKKK3K3KN3[3[/00&~7KLL 36553L3L3N3N/00&~7NOO EEEEEE3J3J3L3L/00&~~FF  "54/00 '~7GHH 36553M3M3O3O/00&~}EE LLLLLL3L3LW3U3U/00"-77FFFFFF$u~..C Us2 U;?@S;T;T&78    D 8 GFFFFF 7 7(&t!M !M !MNA)-5 #N$; < <! ! %0/@M),
 #*.:KT"R"R& X&-n>PRV&W&WO" M7;O7L7LM"34
 #^1r88::@@BB	 72R!R!R $-??#4#4 > > >IEEEEEE 1 5 5i @ @  BU%; B(-(>q(AI$    #%K!.$77 7' ''5' ' ' $ND99 7n>P>PQ[>\>\ 7aoasast{a|a| 7'5&6#(L* " ",/GGI,>,>,D"+K+K+M+M+UQU(/ ^+.779+=+=+]AWAW+][]*d*d*f*fK* ^359["3M3M3S3S3U3U3]Y] 00G0G
O3w<4.1ggj.A.A-=1 1 1-
I
 &1-0_EN*3*Cs7|EK8<E5+5+=,/
0C,D,D- -M  1<;Li 8*1*>OQU*V*VK#. \.5jBTVZ.[.[* UCGCTCT.? @+/L!E! 2" ( *` ` `2;` ` `  
 u&;UCC &)    - m//
B??@@FFHH /BB 		;xTYT_TeceSlSlSnSnGnGn#''(9::@bG#KK(:B??MDMM11  @5B2T2T]2T2TG.//2?G./3:/0 	))+++%)))R88&**:u~FF	K 66}\bf6ggEL# QLu{LLMMM ECCCDDD
 KJJJJJ(,,Y??$$X.. QFGGGG#.. Q8 QK@W@W\_`h\i\iln\n\nQ"1"QQ(233-QQRRRROPPP 	K 	K 	KIaIIJJJ	K .$'' #!
 !
%!
 !
 !
 
ND	)	) #n.@.@.L.L #Q_QcQcdkQlQl #!/ 0 "E '/De L LE8=8MWE1!44SWE bU%5 bu$%%**&q)BJ"W+JJJJJJKKKKS#e.C*D*DSSS,,``%J_`````a b b b %%,,)+# -  EK !UUE{ R!S!Su{!S!S!SE233
 	SVS%5%5VVtyy?T?TVVWWW QO$))<L2M2MOOPPP  SQ499=N3O3OQQRRR RPQQQ 544444(E,BBB 
!
 { b5+ buu7799ZZL4F4F4H4HZZZ 	b`R^``aaa  0u'7 0./// $ _U-= _GJ5KhGiGilnGnGn6ss;eCCty  uR]]]]^^^   R)9 R) 	-en.K.K'FF+ 	-4FF,FPvPP9IPPPQQQ #,..E ;% +44_EEZ\\%bqb)
+::j::;BBBBBBu/0000 ; ; ;*/*:
&'''; "##K :-EN	N555
 #(ECCCCCC#^%%))*55;	&*9==9OQV+W+W&X&X##    57E -1E)!1E".E 26E ;:::::--#.64	  E #E0E!"E %E., ( (E$ *)))))!	EGGGGGG''))

   


Q!<#05r:: "
 "

  Q Q QExPPPPPPPPQ
 48E0 E!E"'E#%E  !E E 	#"55J$.NN3CU$K$KE!*4..9OQV*W*WE'+.z~~>NPR/S/S+T+TE($ 5(C 5999999&1k&0nn5H$&O&O$.NN3Dd$K$K' ' '# #22444 	 	 	D	 !E <);	)CM!U
B!?!?!?SU! 51&8&>&>&@&@ 51PPPPPPLLLLLL(6(8(8%i 233 <3++-- <)66s;;;(2 .1&+&6$,$5'*?+<+<'='=)2	$ $L ( !!"'"3"E"EeFV"W"WC" D@C_ =( ! ! ! D! ~ A27.Y/) I6;6H]3' E494D[1~ A27.Y/' E494D[1' E494D[1' E494D[11 Y>C>X%:;OOOOOO#:#:#<#<9A%56:B%677$   8E)8HH<HHHEEL%%&FHZ[[[[EEL&&'XZlmmm,0E) 	) 	) 	)EEL  !I4PPP$(E!!!!!!	)&  1!8&(e6L*L*L 
  
[ 
  
  

 ,AACC 	1 	1G[[,,F &$888 *@@HKx((( 1&**6222$((000 #%E"x44&)-*;*;<UWY*Z*Z&[&[##   
  ^^GR00Nnd++ "0"4"45KV"T"TE '+>+=+=>XZ^+_+_&`&`E#  $N$6$67JD$Q$QRRE)--.?CC+,,<++z"   )E
 "~~mR88&-- !"2"6"6{D"I"IJJ !4d;; egg%& /3E+	
 	
 	
 	
 	
 	
 	
 	
 %KN(>
 
 

 %3O$2! #"5;??"_t%;;; ,(; ;7    .229dCCDDJJLLPdd$%5%9%9.$%O%OPP"#3#7#78H"#M#MNN !$	3##$5q99::! ! ,/7??, ,egg%,&(:{M2NNN   (D!! #&ll+;<<"&	'"%&9":"::& 	' 	' 	'"&	'3FE0 ,,JJz4$@$@'^^L99)0$77 %$$%();%<%<"%**$$#5  z*   $$8 '	   =FX = = = 	      6;5EE$\2 *d## &!+0@!A!A!%)	*%()?%@%@"":& 	* 	* 	*EEL  2 '	   EF\ E E E Z	    &*"""	*"#EEEEEE;;JGG # # #&NN+=>>+T22 	# "# 0E%e->??? %*;%
	$LLLLLLAAk!2     
   ?),-=)>)>& 	$ 	$ 	$#	$
 ")49NJen++C000G.  	!)T22 $==44:BB3GG w'11!*x!<!<J!*d33 &(2u{B(G(G%mT:: &&3&7&78H&I&IG&2!&.1'llG'.!||.8(8 (4(1:'> !& !& !&$'EEL$8$8)J ).W%& %& %& %*)]RWR] )] )]w~ )] )] )] .1Z	%& %& %& %& %& %&!& E $:E 	))*@AAA L4>z44P4PX:>>)R000VX||Hl;;K|    |##	eBBBBBB22<@@ 	e 	e 	eEELUWcdddddddd	e #HHHHHH6688
 2*/\"A"A'1$    #EEL  W   ##3 AAAAAA22K^E9b11"8^.
 
 
 	 --+*^E9b11^^ 	. 	
 	
 	
  	QEEL8:J:OPPP#4+353!9#''^E9b11"8^^%I$
 $
 $
  !4E 5+-=qAAD 
---@U[ @ @4L @ @*@N@ @ &-@ @ @
 
 	
, -0EEE$+,,1$1 K#"*5#999 
  
[ 
  
  

 /@@BB 		1 		1G[[,,F &$888 *@@HKx((( 1&**6222044V<<<$((000 u*++ O0H O
	O$55  1 12205k&u'?AQSTUU '/Et L L 6      	O 	O 	OEELDgNNNNNNNN	O !8In--5! ! !E E #$E&'E#!"EE!"E"#E&'E#'(E$%&E"'*E$ )E &E )-E#*d## D#->>2B#C#C +	d$'(@$A$AE!!:& 	d 	d 	dEELHJbccccc	d$$<Men<]<]$
	K
 0:%-/M/MUemmSUO,U[%.RaRgeghhhI 2Y]](1% 	K 	K 	KEELDcJJJJJJJJ	K 	
7"
7 %,!$:::M!#9	
 	
 	
 !7 
U%5 
O!	
 	
 	

  C 	y  |)A)P  |  |  |il  nC  DG  nG  jH  jH  |  |  NS  Nf  Nw  |  |  |  |  }  }  }  }w)A)Pwwwwxxx
 U$GNN
 	C- 	C5jAABBB
 "&E  CTJJJ U) U%H%T%T" .3E* 
"CNNN5)R00e233#7#(#A $C%+>>&sJGG%c9b99&sJGG%(%7'*';# E& ~---%%!&!9"'";"'";'
 '
 	 	 	 	 	 .-sM  7J 
JJ,K
 

KK
AZ 
ZZ0d 
e3eeCm 
mm*6v" "
v0/v01z8 8
{{GC1AJ6 J6
AKK AKKAK[-A\ \A\&\%A\&]&AA^5 ^5
A__A_aAa aAa$a#Aa$a(;Ab$ b$
Acb.'AccAcdCAg7 g7
AhhAhhCAp= k!'Al	 lAp= l	
AllAp= lAllBAp= n"An? n>Ap= n?
Aoo	Ap= oAooA0Ap= p=
Ar q/Aq;q;Ar u
A Av v
AvvAvx97Ay1 y1Az	zAz	|%AA}8 }8
A~~A~A2BB BBBBBBC	BC CBC2C1BC2EABF
 F
ABG)G(BG)H+BH< H<ABJJBJJ!BJ4 J46BK-K,BK-L1BM MBMMBMP<BQQA*BSSBSS2ABT8 T8
BUUBUUBU$ U$
BV!U.)BVVBV!V'#BW W
BWWBWbA5Bd d
Bed)BeeBehBh2 h2<Bi1i0Bi1jABk- k-
Bl*k7)Bl%l%Bl*r  )r#   r$   r%   r&   )r0   r   r%   r&   )r8   r&   r9   r:   r%   r;   )
rB   r&   r=   r&   rC   r&   rD   rE   r%   rF   )rD   rE   r%   rN   )ENNNNNNNNr2   rX   rY   NNFFFrZ   Nr)   r2   NNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFNNNNNFr[   r\   r]   F)rC   r&   r^   r&   rB   r&   r_   r&   r`   r&   ra   rb   rc   r&   rd   rb   r=   r&   re   r+   rf   rg   rh   ri   rj   ri   rk   r;   rl   r;   rm   r;   rn   r&   ro   r&   rp   r+   rq   r&   rr   ri   rs   ri   rt   ri   ru   r&   rv   r;   rw   r&   rx   ry   rz   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&   rP   r:   r   rE   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;   );__doc__
__future__r   r  r  r  r  r  r  r  r   typingr   r   r   r   urllib.parser	   r
   r   agent.context_compressorr   agent.iteration_budgetr   r
  r   r$  r   r   r   r   agent.process_bootstrapr   agent.subdirectory_hintsr   agent.think_scrubberr   agent.tool_guardrailsr   r   r   r  r   hermes_cli.timeoutsr   hermes_constantsr   utilsr   r  r  r!   r/   r7   rA   rM   rW   r  __all__r   r"   r    <module>r     si   & # " " " " "  				 				 



             , , , , , , , , , , , , 7 7 7 7 7 7 7 7 7 7 6 6 6 6 6 6 2 2 2 2 2 2 9 9 9 9 9 9            8 7 7 7 7 7 < < < < < < 7 7 7 7 7 7         
 & % % % % % < < < < < < , , , , , , ' ' ' ' ' ' 
	;	'	'     $% % % %D D D D   B( ( ( (* !%!"&#'#!##'#'#'!%(-$(37'+$('+"&#'!%'+"&*+/"& $ $&*'+(,-1#$$!*.%) %$&(+')!Mq q q q qj1 .r"   