+
    Ki                         R t ^ RIt^ RIHt R R ltRR R lltR R ltR	 R
 ltRtR R lt	Rt
]
 R2t]
 R2tRt] R2t] R2tRt] R2tR# )u   Shared constants for Hermes Agent.

Import-safe module with no dependencies — can be imported from anywhere
without risk of circular imports.
NPathc                $    V ^8  d   QhR\         /#    returnr   )formats   "-/home/ubuntu/hermes-agent/hermes_constants.py__annotate__r
      s     C C C    c                 v    \        \        P                  ! R\         P                  ! 4       R,          4      4      # )u   Return the Hermes home directory (default: ~/.hermes).

Reads HERMES_HOME env var, falls back to ~/.hermes.
This is the single source of truth — all other copies should import this.
HERMES_HOMEz.hermes)r   osgetenvhome r   r	   get_hermes_homer      s%     		-y)@ABBr   c                >    V ^8  d   QhR\         R,          R\         /# )r   defaultNr   r   )r   s   "r	   r
   r
      s     1 1TD[ 1D 1r   c                    \         P                  ! RR4      P                  4       pV'       d   \        V4      # V e   V # \	        4       R,          # )zReturn the optional-skills directory, honoring package-manager wrappers.

Packaged installs may ship ``optional-skills`` outside the Python package
tree and expose it via ``HERMES_OPTIONAL_SKILLS``.
HERMES_OPTIONAL_SKILLS zoptional-skills)r   r   stripr   r   )r   overrides   & r	   get_optional_skills_dirr      sE     yy126<<>HH~000r   c                <    V ^8  d   QhR\         R\         R\        /# )r   new_subpathold_namer   )strr   )r   s   "r	   r
   r
   "   s!       s t r   c                f    \        4       pW!,          pVP                  4       '       d   V# W ,          # )u  Resolve a Hermes subdirectory with backward compatibility.

New installs get the consolidated layout (e.g. ``cache/images``).
Existing installs that already have the old path (e.g. ``image_cache``)
keep using it — no migration required.

Args:
    new_subpath: Preferred path relative to HERMES_HOME (e.g. ``"cache/images"``).
    old_name: Legacy path relative to HERMES_HOME (e.g. ``"image_cache"``).

Returns:
    Absolute ``Path`` — old location if it exists on disk, otherwise the new one.
)r   exists)r   r   r   old_paths   &&  r	   get_hermes_dirr"   "   s.     DHr   c                $    V ^8  d   QhR\         /# r   )r   )r   s   "r	   r
   r
   7   s      S r   c                     \        4       p  R\        V P                  \        P                  ! 4       4      4      ,           #   \
         d    \        T 4      u # i ; i)ay  Return a user-friendly display string for the current HERMES_HOME.

Uses ``~/`` shorthand for readability::

    default:  ``~/.hermes``
    profile:  ``~/.hermes/profiles/coder``
    custom:   ``/opt/hermes-custom``

Use this in **user-facing** print/log messages instead of hardcoding
``~/.hermes``.  For code that needs a real ``Path``, use
:func:`get_hermes_home` instead.
z~/)r   r   relative_tor   r   
ValueError)r   s    r	   display_hermes_homer'   7   sK     Dc$**499;7888 4ys   3A   AAc                >    V ^8  d   QhR\         R\        R,          /# )r   effortr   N)r   dict)r   s   "r	   r
   r
   N   s      3 4$; r   c                    V '       d   V P                  4       '       g   R# V P                  4       P                  4       p V R8X  d   RR/# V \        9   d   RRRV /# R# )a0  Parse a reasoning effort level into a config dict.

Valid levels: "xhigh", "high", "medium", "low", "minimal", "none".
Returns None when the input is empty or unrecognized (caller uses default).
Returns {"enabled": False} for "none".
Returns {"enabled": True, "effort": <level>} for valid effort levels.
NnoneenabledFTr)   )r   lowerVALID_REASONING_EFFORTS)r)   s   &r	   parse_reasoning_effortr0   N   sV     \\^!!#F5!!((4622r   zhttps://openrouter.ai/api/v1z/modelsz/chat/completionszhttps://ai-gateway.vercel.sh/v1z)https://inference-api.nousresearch.com/v1)N)xhighhighmediumlowminimal)__doc__r   pathlibr   r   r   r"   r'   r/   r0   OPENROUTER_BASE_URLOPENROUTER_MODELS_URLOPENROUTER_CHAT_URLAI_GATEWAY_BASE_URLAI_GATEWAY_MODELS_URLAI_GATEWAY_CHAT_URLNOUS_API_BASE_URLNOUS_API_CHAT_URLr   r   r	   <module>r@      s    
 C1*( H $ 5 ./w7 ,-->? 7 ./w7 ,-->? ? ()):; r   