
    FjG                      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 Z3dudZ4dvdZ5dwd%Z6dxd'Z7	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dydzdsZ8dtgZ9d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    //usr/local/lib/hermes-agent/agent/agent_init.py_rar!   >   s    
     valuer   returnstrc                ~    t          | t                    sdS |                                                     d          S )N /)
isinstancer%   striprstrip)r#   s    r    _normalized_custom_base_urlr,   G   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modelr'   T)r%   getr*   lower)r-   r.   provider_models      r    _custom_provider_model_matchesr6   M   sw    7B//5266<<>>DDFFN tS!23399;;AACCCCr"   providerr2   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 )Nr'   customr8   
extra_bodyr2   )r*   r4   r,   r)   dictr3   r%   r6   )	r7   r2   r8   r9   
target_urlfallbackr.   r>   r5   s	            r    %_custom_provider_extra_body_for_agentrB   T   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)r7   r2   r8   r9   request_overridesr>   )
rB   r7   r2   r8   r?   getattrr3   r)   updaterE   )agentr9   r>   	overridesmerged_extra_bodyexisting_extra_bodys         r    !_merge_custom_provider_extra_bodyrL   u   s    6k)	  J  WU$7<<BCCIZ((#--55%t,, 6  !4555/Il'Er"   r'   Z         ?Fd        
   api_keyapi_modeacp_commandacp_argslist[str] | Nonecommandargsmax_iterationsint
tool_delayfloatenabled_toolsets	List[str]disabled_toolsetssave_trajectoriesverbose_logging
quiet_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step_callbackstream_delta_callbackinterim_assistant_callbacktool_gen_callbackstatus_callback
max_tokensreasoning_configservice_tierrE   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_idcB                X   t                       |	| _        |
| _        |:pt          |
          | _        || _        || _        || _        || _        || _	        |,| _
        |-| _        |.| _        |/| _        |0| _        |1| _        |2| _        |3| _        |4| _        d| _        d| _        |5| _        |6| _        |A| _        |<| _        || _        |r| dnd| _        |pd| _        t9          |t:                    r:|                                r&|                                                                nd}B|Bpd| _         |p|| _!        tE          |p|pg           | _#        |dv r	|| _$        n
| j         dk    rd| _$        n| j         dv rd| _$        n|B#| j%        dk    rd	| j&        v rd| _$        d| _         n|B| j%        d
k    rd| _$        d| _         n| j         dk    s|B| j%        dk    rd| _$        d| _         n~| j&        '                    d          (                    d          rd| _$        nI| j         dk    s/| j%        )                    d          rtU          | j&        d          rd| _$        nd| _$        	 | +                                 n# tX          $ r Y nw xY w	 ddl-m.}Cm/}D | j         |Cvr |D| j        | j                   | _        n# tX          $ 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| 0                                se| 1                                s!| 2                    | j        | j                   r0d| _$        tg          | d          r| j4        5                                 | j         dk    s| 6                                rxto                      j8        9                                sSto                      j8        :                                 tw          j<        tz          dd           >                                 || _?        || _@        || _A        d!| _B        || _C        | | _D        |!| _E        |"| _F        |#| _G        |$| _H        |&| _I        |%| _J        d!| _K        t                      | _M        d| _N        d!| _O        d| _P        d| _Q        d!| _R        tw          jS                    | _T        d| _U        tw          jV                    | _W        tu                      | _X        tw          jV                    | _Y        d| _Z        g | _[        tw          jV                    | _\        || _]        || _^        || __        || _`        || _a        || _b        || _c        || _d        || _e        |'| _f        |(| _g        |)| _h        t          |*pi           | _j        |+pg | _k        d!| _l        | m                                \  | _n        | _o        d"| _p        	 dd#lqmr}E  |E            s                    d$i           pi }F|Fs                    d%d"          }G|Gd&v r|G| _p        n# tX          $ r Y nw xY wd!| _t        d!| _u        t          jv                    | _w        d'| _x        d| _y        d| _z        d| _{        d| _|        dd(l}m~}Hm}I  |Hto                      j        )           | j        r1 |I             to                      j                            d*           n| j        r	 d| _        d!| _        t                      | _        t                      | _        d| _        d| _        d| _        i | _        d| _        d!| _        t          | j         | j                  }J| j$        dk    rHdd+lm}Km}L | j         dk    }M|Mrdd,lm}N t)          j        d-|pd          }O|Or|O                    d.          nd/}P|P| _         |N|P          | _        d0| _        || _        d!| _        d0| _        d| _        i | _        | j        st;          d1| j         d2|P d3           
n| j         dk    }Q|Qr|p |L            pdn|pd}R| j         d4k    rst9          |Rt:                    r^|Rr\	 dd5lm}S  |S            }RnJ# tX          $ r=}Tddl}U|U                    tD                                        d6|T           Y d}T~Tnd}T~Tww xY w|R| _        |R| _        || _        dd7lm}V |Qr t9          |Rt:                    r |V|R          nd!| _         |K|R||J8          | _        d| _        i | _        | j        st;          d1| j         d9           dd:lm}W  |W|R          rt;          d;           nt9          |Rt:                    r:tO          |R          d<k    r&t;          d=|Rdd>          d?|Rd@d                     n| j$        dk    rVt)          j        d-|pd          }O|Or|O                    d.          nd/| _        d| _        	 dd#lqmr}X  |X            s                    di           s                    dAi           }Y|Ys                    dB          ru|Ys                    dC          r`|YdB         |YdC         dD| _        |Ys                    dE          r|YdE         | j        dF<   |Ys                    dG          r|YdG         | j        dG<   n# tX          $ r Y nw xY wd| _        i | _        | j        s.| j        rdHnd}Zt;          d1| j         dI| j         |Z d3           n!|r|r	tS          |          }[|[j        r\tW          |[                    dJ                    }\dK t[          |[j                                                  D             }]||\|]dL}^n||dM}^|J|J|^dN<   | j         dk    r| j!        |^dO<   | j#        |^dP<   |}_tU          |_dQ          rddRlm}`  |`            |^dS<   nPtU          |_dT          rddUlm}a  |a|_          |^dS<   n*tU          |_dV          r%to                                                      |^dS<   ntU          |_dW          rddXlm}b  |b            |^dS<   ntU          |_dY          r	dZd[i|^dS<   ntU          |_d\          r%to                                                      |^dS<   ntU          |_d          rdd]lm}c  |c|          |^dS<   n\dS|^vrJ	 dd^lm}d  |d| j                   }e|er|ej        rt          |ej                  |^dS<   n# tX          $ r Y nw xY wndd_lm}f  |f| j         pd`| j        da          \  }g}h|g_|gj        t;          |gj                  dM}^|J|J|^dN<   tw          |gdbd          }i|istw          |gdcd          }i|irt          |i          |^dS<   n| j         pd                                                                }j|jr6|jddvr1|j                                 de}k	 ddflm}l |ls                    |j          }m|mr|mj        r|mj        d         }kn# tX          $ r Y nw xY wg }nt9          |;tD                    rdg |;D             }nnBt9          |;t                    r-|;s                    dh          r|;s                    di          r|;g}nd!}o|nD ]R}p|ps                    dj          pd                                pd}q|qsj|ps                    dk          p|ps                    dl          pd                                }r|rr*t          j        |rd                                          pd}q |f|pdh         |pdi         d|ps                    dm          |qn          \  }s}t|s|pdh         | _         |tp|pdi         | _        d| _        |sj        t;          |sj                  dM}^|J|J|^dN<   tw          |sdbd          }u|ustw          |sdcd          }u|urt          |u          |^dS<   d}o nT|ost          do|j dp|k dq          tw          | drd!          st          ds          |^| _        t;          |^s                    dmd                                                    }vtU          |vdQ          rgdt| j        pd                                v rJ|^s                    dS          pi }w|ws                    dud          }xdv}y|y|xvr|xr|x dw|y |wdu<   n|y|wdu<   |w|^dS<   |^s                    djd          | _        |^s                    dm| j                  | _        	 |                     |^dxdy          | _        | j        s͐t;          d1| j                    |rt;          dz|            dd:lm}W |^s                    djd{          }z |W|z          rt;          d;           nht9          |zt:                    rC|zrA|zd|k    r;tO          |z          d<k    r't;          d}|zdd>          d?|zd@d                     nt;          d~           n%# tX          $ r}{t          d|{           d}{~{ww xY wt9          |;tD                    rd |;D             | _        nOt9          |;t                    r3|;s                    dh          r|;s                    di          r	|;g| _        ng | _        d| _        tw          | drd!          | _        | j        r| j        d         nd| _        | j        r| j        stO          | j                  d.k    r1| j        d         }|t;          d||di          d||dh          d3           nLt;          dtO          | j                   dd                    d | j        D                       z              to                                          ||| j                  | _        tu                      | _        | j        rd | j        D             | _        t          | j                  }}| j        st;          dtO          | j                   dd                    |}                      |r&t;          dd                    |                      |r&t;          dd                    |                      n| j        st;          d           ddlm}~ d| j        v r|~nd| _        | j        rZ| j        sSto                                                      }d |                                D             }|rt;          d|            | j        r| j        st;          d           | j	        rM| j        sFtO          | j	                  dk    r| j	        dd         d?z   n| j	        }t;          d| d           | jn        rD| j        s=| jo        r| j         dk    rd}n| jo        rd}nd}t;          d| d| jp         d           t          j                    | _        |r|| _        nG| j                            d          }t          j                    j        dd         }| d| | _        	 ddlm}  || j                   n%# tX          $ r | j        t~          j        d<   Y nw xY wt                      }|dz  | _        | j                            dd           d!| _        	 dd#lqmr}  |            s                    d          pi }t          |s                    dd!                    | _        n# tX          $ r Y nw xY wg | _        d| _        d| _        d| _        d| _        ddlm}  ||=|>|?|@          | _        |8| _        |9| _        d| _        d!| _        | j        |(|'d| _        ddlm}  |            | _        	 dd#lqmr}  |            }n# tX          $ r i }Y nw xY w	 t          t          j        |s                    di                               | _M        n># tX          $ r1}to                      j                            d|           Y d}~nd}~ww xY wd| _        d| _        d!| _        d!| _        d| _        d| _        d| _        |7s	 |s                    di           }|s                    dd!          | _        |s                    dd!          | _        t          |s                    dd                    | _        | j        s| j        rYddlm}  ||s                    dd          |s                    dd                    | _        | j                                         n# tX          $ r Y nw xY wd| _        |7si	 |r|s                    dhd          nd}|r|                                rddlm} ddl m}  |            | _         ||          }|r0|                                r| j                            |           | j        j        rZ| j        |,pdt;          t                                dd}| j        r9	 | j                            | j                  }|r||d<   n# tX          $ 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# tX          $ r Y nw xY w | j        j        d!i | to                      j                            d|           n/to                      j                            d|           d| _        nE# tX          $ r8}to                      j                            d|           d| _        Y d}~nd}~ww xY w| j        r| j        | jd        	d| jd        v rd̄ | j        D             }| j        	                                D ]r}|s                    dd          }|r||v rd|dϜ}| j        
                    |           |r1| j                            |           |                    |           sd| _        	 |s                    di           }t          |s                    dd                    | _        n# tX          $ r Y nw xY w|s                    di           }t9          |t                    si }|s                    dd`          | _        t          |s                    dd                    | _        t          |s                    dd                    | _        	 |s                    ddצ          }t          |          }t!          |d.          }n# t"          t$          f$ r d}Y nw xY w|| _        |s                    di           }t9          |t                    si }t)          |s                    ddڦ                    }	 ddlm}  || j                  }||}n# tX          $ r Y nw xY wt;          |s                    dd                                                    dv }t)          |s                    ddߦ                    }t          |s                    dd                    }t!          dt          |s                    ddצ                              }t;          |s                    dd!                                                    dv }	 t-          |ddi           }n# tX          $ r i }Y nw xY wt9          |t                    r|s                    d          }nd}|-	 t          |          }n# t"          t$          f$ r d}Y nw xY w|| _        |s                    dii           }| jf        t9          |t                    r|s                    d          }|	 t9          |t                    rt$          t          |          }|dk    rt$          || _f        nb# t"          t$          f$ rL to                      j                            d|           t;          d|dt.          j                   Y nw xY w| jf        | j        d<   t9          |t                    r|s                    d          }nd}|v	 t          |          }nd# t"          t$          f$ rN to                      j                            d|           t;          d|dt.          j                   d}Y nw xY w	 ddlqm}  ||          }n<# tX          $ r/ |s                    d          }t9          |tD                    sg }Y nw xY w|| _        t7          | |           ||r	 ddlqm}  || j        | j        |          }|rt          |          }n# tX          $ r d}Y nw xY w|x| j        r| j        '                    d          nd}|D ]Q}t9          |t                    s|s                    dm          pd'                    d          }|r||k    r|s                    di           }t9          |t                    r|s                    | j        i           }t9          |t                    r|s                    d          }|	 t          |          }|dk    rt$          np# t"          t$          f$ rZ to                      j                            d| j        |           t;          d| j        d|dt.          j                   Y nw xY w nS|| _        |                     |           d}d}	 t9          |t                    r|s                    di           ni }|s                    dd          pd}n# tX          $ r Y nw xY w|dk    r	 ddlm }  ||          }n?# tX          $ r2}to                      j                            d|           Y d}~nd}~ww xY w|4	 ddl!m"}  |            }|r|j#        |k    r|}n# tX          $ r Y nw xY w|'to                      j                            d|           ||| _$        ddl%m&}  || j        | j        tw          | djd          || j         |           }| j$        '                    | j        || j        tw          | djd          | j         | j$                   | j        s.to                      j                            d|j#                   nMtQ          | j        ||||d| j        | j        tw          | djd          || j         | j$        |          | _$        || _)        tw          | j$        dd          }|rE|ĐtT          k     r9t%          d| j         d|dwdtT          dwdtT          dz   d		          tu                      | _+        tg          | d
          r| j$        r| j        | jd        
d| jd        v rd | j        D             }| j$        ,                                D ]}|s                    dd          }|r||v rd|dϜ}| j        
                    |           |rM| j                            |           | j+                            |           |                    |           tg          | d
          r| j$        r	 | j$        -                    | j        t;          t                                | j
        pd| j        tw          | j$        dd          tw          | dd                     n@# tX          $ r3}to                      j                            d|Ŧ           Y d}~nd}~ww xY wt]          t          j        d          pd          | _/        d| _0        d| _1        d| _2        d| _3        d| _4        d| _5        d| _6        d| _7        d| _8        d| _9        d| _:        d| _;        d{| _<        d| _=        d}t9          |t                    r|s                    d          }|ƁZ	 t          |Ʀ          | _=        nB# t"          t$          f$ r, to                      j                            d|Ʀ           Y nw xY w| j=        | j        rt}          | j                  r	 t9          | j        t:                    r| j        nd}ǐt          | j        | j        |pd          }|r|dk    r|| _=        n@# tX          $ r3}to                      j                            d|ɦ           Y d}~nd}~ww xY w| j=        rG|rE|ƀC| j=        |k    r7to                      j                            d| j=        |           || _=        | j=        r5| j        s.to                      j                            d| j=                   | j        so|rJt;          d| j$        j@        dwdt          |dz             d| j$        jA        dwd3           n#t;          d| j$        j@        dwd           d| _B        d!| _C        | j$        }| j        | j         | j        | j$        tw          | djd          t          | j                  | jn        | jo        tw          |di| j                  tw          |dm| j                  tw          |djd          tw          |dh| j                   |ʐj@        |ʐjA        d| _D        | j$        dk    r2| jD        E                    | 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 r'   >   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   r(   z
/anthropicbedrockzbedrock-runtime.zamazonaws.comr   r   r   )_AGGREGATOR_PROVIDERSnormalize_model_for_providerzcopilot-acpzacp://copilotz
acp+tcp://)r7   _transport_cache
openrouterTzopenrouter-prewarm)targetdaemonnameF5m)load_configprompt_caching	cache_ttl>   1hr   initializing)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"   )rS   r8   default_query)rS   r8   r   rX   rY   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)r2   	raw_codex_custom_headers_default_headers>   r   r=   r   _API_KEY)PROVIDER_REGISTRYc                    g | ]C}t          |t                    |                    d           ,|                    d          A|DS r7   r2   r)   r?   r3   r   fs     r    
<listcomp>zinit_agent.<locals>.<listcomp>  s_     ' ' '"#)!T22'78uuZ7H7H'MNUUSZ^^'' ' 'r"   r7   r2   rS   key_envapi_key_envr8   )r2   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>v  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 )r2   r   r7   r   Nr   r   s     r    	<genexpr>zinit_agent.<locals>.<genexpr>  s;      ``Q!G*@@*@@@``````r"   )r^   r`   rc   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)rZ   r}   r|   )	TodoStoretool_loop_guardrailsz&Tool loop guardrail config ignored: %srR   memorymemory_enableduser_profile_enablednudge_interval)MemoryStorememory_char_limiti  user_char_limiti_  )r  r  )MemoryManager)load_memory_providercliprimary)ro   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_intervalrH   tool_use_enforcementtask_completion_guidanceenvironment_probeapi_max_retries   compression	thresholdg      ?) _compression_threshold_for_modelr  >   1yestruetarget_ratiog?protect_last_nrP   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_providersr9   )"get_custom_provider_context_length)r2   r8   r9   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)r8   rS   config_context_lengthr7   r9   )r2   r2  r8   rS   r7   rT   zUsing context engine: %s)r2   threshold_percentr.  r-  summary_target_ratiosummary_model_overriderc   r8   rS   r=  r7   rT   r/  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   r2   r2  conversation_idz#Context engine on_session_start: %sTERMINAL_CWD)working_dirg        unknownollama_num_ctxz'Invalid ollama_num_ctx config value: %r)rS   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 rO   z% = z# tokens (auto-compression disabled))r2   r7   r8   rT   rS   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   (F  r   r2   rZ   r   r   r\   ra   rb   rc   rd   r   _user_id_user_id_alt
_user_name_chat_id
_chat_name
_chat_type
_thread_idrD  	_print_fnbackground_review_callbackr   r   r   _credential_poolre   rf   r8   r)   r%   r*   r4   r7   rU   listrV   rT   _base_url_hostname_base_url_lowerr+   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   startrp   rr   rs   suppress_status_outputrt   ru   rv   rw   rx   ry   r{   rz   _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_lockrg   rh   ri   rj   rk   rl   rm   r^   r`   r|   r}   r~   r?   rE   r   _force_ascii_payload_anthropic_prompt_cache_policy_use_prompt_caching_use_native_cache_layout
_cache_ttlhermes_cli.configr   r3   _budget_exhausted_injected_budget_grace_calltime_last_activity_ts_last_activity_desc_current_tool_api_call_count_rate_limit_state_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_urlrS   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   rF   upperr   api_key_env_varsosgetenvr   RuntimeError_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_startro   strftimeuuiduuid4hexgateway.session_contextr   environr   logs_dirmkdir_session_json_enabledr0   _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_retriesr]   r(  r   sysstderrr4  _custom_providersrL   r5  _config_context_length_ensure_lmstudio_runtime_loadedplugins.context_enginer:  hermes_cli.pluginsr;  r   rA  agent.model_metadatar<  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   r2  threshold_tokens_compression_warning _compression_feasibility_checked_primary_runtimerG   )rH   r8   rS   r7   rT   rU   rV   rX   rY   r2   rZ   r\   r^   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   ro   rp   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   rE   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_paramsrJ  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_cthresh_fn_model_cthreshr  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  r4  r  r5  _cp_ctx_resolved_target	_cp_entry_cp_url
_cp_models_cp_model_cfg_cp_ctx_parsed_selected_engine_engine_name_ctx_cfgr:  _ce_load_errr;  
_candidater<  _plugin_ctx_len_ctx_ce_err_ollama_num_ctx_override_key_for_ollama	_detectedexc_ccs                                                                                                                                                                                                              r    
init_agentr     sP6   h EK)E .P1P1PE!E/E+E!E$;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'E"7E'AE$+E/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
 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ZZZZZZ$U[11%$2!   .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!	
 	
 	

  y 	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
 "&E .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"'";"'";'
 '
 	 	 	 	 	 .-sL  0J 
JJ,K 
KK.AY6 6
ZZ/c   
d
3ddCl 
ll)6u! !
u/.u/1y7 7
zzE/C1AI! I!
AJI+AI>I>AJZAZ/ Z/A[[A[\AA]  ] 
A]-],A]-_/A`  ` A``A``;Aa a
Ab
a'AbbAb
cCAf f
Af+f*Af+f9CAo j'Aj* j)Ao j*
Aj7j4Ao j6Aj7j7BAo mAm  mAo m 
Am-m*Ao m,Am-m-A.Ao o
Apo&.AppAps&A At' t'
At4t3At4w7Ax xAx%x$Ax%zAz z
Az+z*Az+~A~- ~-A~<~;A~</B@  @ B@@B@A,ABB0 B0ABDDBDEBE" E"ABGGBGGBG G6BHHBHH61BI( I(BI7I6BI7M"BNNA*BO.O-BO.PABQ Q
BQ+Q*BQ+Q5BR	 R	
BSR(BS S BSS"BS. S.
BS;S:BS;^6A5B`, `,
Ba)`6)Ba$a$Ba)d<Be e<BffBff:ABh h
Bih)BiiBir  )r#   r   r$   r%   )r-   r%   r.   r/   r$   r0   )
r7   r%   r2   r%   r8   r%   r9   r:   r$   r;   )r9   r:   r$   rC   )ANNNNNNNNr'   rM   rN   NNFFFNrO   r'   NNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFNNNNNFrP   rQ   rR   F)~r8   r%   rS   r%   r7   r%   rT   r%   rU   r%   rV   rW   rX   r%   rY   rW   r2   r%   rZ   r[   r\   r]   r^   r_   r`   r_   ra   r0   rb   r0   rc   r0   rd   r%   re   r[   rf   r%   rg   r_   rh   r_   ri   r_   rj   r%   rk   r0   rl   r%   rm   rn   ro   r%   rp   rq   rr   rq   rs   rq   rt   rq   ru   rq   rv   rq   rw   rq   rx   rq   ry   rq   rz   rq   r{   rq   r|   r[   r}   r/   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   r0   r   r0   r   r0   r   r%   r   r   r   r/   r   r0   r   r[   r   r[   r   r[   r   r0   ):__doc__
__future__r   r  r  r  r  rq  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,   r6   rB   rL   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#$$!*.%) %$&(+')!Em m m m mb/ .r"   