§
    ™è[jÉ  ã                   ó€   — d Z ddlmZ ddlmZ ddlmZ  G d„ de¦  «        Z eddd	d
d¬¦  «        Z ee¦  «         dS )u­  Custom / Ollama (local) provider profile.

Covers any endpoint registered as provider="custom", including local
Ollama instances and OpenAI-compatible reasoning endpoints (GLM-5.2 on
Volcengine ARK, vLLM, llama.cpp). Key quirks:
  - ollama_num_ctx â†’ extra_body.options.num_ctx (local context window)
  - reasoning_config disabled â†’ top-level reasoning_effort="none"
    (Ollama /v1/chat/completions ignores think=False â€” ollama#14820)
    + extra_body.think = False for /api/chat and proxies
  - reasoning_config enabled + effort â†’ top-level reasoning_effort
    (the native OpenAI-compatible format GLM/ARK expect; unset omits it
    so the endpoint's server default applies)
é    )ÚAny)Úregister_provider)ÚProviderProfilec                   ó¸   ‡ — e Zd ZdZdddœdedz  dedz  dedeeeef         eeef         f         fd„Z	ddd	d
œdedz  dedz  de
dee         dz  fˆ fd„Zˆ xZS )ÚCustomProfileuA   Custom/Ollama local provider â€” think=false and num_ctx support.N)Úreasoning_configÚollama_num_ctxr   r	   ÚctxÚreturnc                ó^  — i }i }|r |                      di ¦  «        }||d<   ||d<   |r‚t          |t          ¦  «        rm|                      d¦  «        pd                     ¦   «                              ¦   «         }|                      dd¦  «        }|dk    s|du rd|d	<   d|d
<   n|r||d	<   ||fS )NÚoptionsÚnum_ctxÚeffortÚ ÚenabledTÚnoneFÚreasoning_effortÚthink)ÚgetÚ
isinstanceÚdictÚstripÚlower)	Úselfr   r	   r
   Ú
extra_bodyÚ	top_levelr   Ú_effortÚ_enableds	            úI/home/ice/.hermes/hermes-agent/plugins/model-providers/custom/__init__.pyÚbuild_api_kwargs_extrasz%CustomProfile.build_api_kwargs_extras   sí   € ð &(ˆ
Ø$&ˆ	ð ð 	,Ø —n’n Y°Ñ3Ô3ˆGØ!/ˆGIÑØ$+ˆJyÑ!ð  ð 	8¥
Ð+;½TÑ BÔ Bð 	8Ø'×+Ò+¨HÑ5Ô5Ð;¸×BÒBÑDÔD×JÒJÑLÔLˆGØ'×+Ò+¨I°tÑ<Ô<ˆHØ˜&Ò Ð  H°Ð$5Ð$5ð 17	Ð,Ñ-Ø&+
˜7Ñ#Ð#Øð 8Ø07	Ð,Ñ-à˜9Ð$Ð$ó    g       @©Úapi_keyÚbase_urlÚtimeoutr#   r$   r%   c                ób   •— |s	| j         sdS t          ¦   «                              |||¬¦  «        S )z9Custom/Ollama: base_url is user-configured; fetch if set.Nr"   )r$   ÚsuperÚfetch_models)r   r#   r$   r%   Ú	__class__s       €r   r(   zCustomProfile.fetch_modelsG   s;   ø€ ð ð 	˜DœMð 	Ø4Ý‰wŒw×#Ò#¨G¸hÐPWÐ#ÑXÔXÐXr!   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úintr   ÚtupleÚstrr    ÚfloatÚlistr(   Ú__classcell__)r)   s   @r   r   r      s  ø€ € € € € ØKÐKð
 )-Ø%)ð	-%ð -%ð -%ð  ™+ð-%ð ˜d™
ð	-%ð
 ð-%ð 
ˆtC˜HŒ~˜t C¨ Hœ~Ð-Ô	.ð-%ð -%ð -%ð -%ðd #Ø#Øð
Yð 
Yð 
Yð t‘ð
Yð ˜‘*ð	
Yð
 ð
Yð 
ˆcŒTÑ	ð
Yð 
Yð 
Yð 
Yð 
Yð 
Yð 
Yð 
Yð 
Yð 
Yr!   r   Úcustom)ÚollamaÚlocalÚvllmÚllamacppz	llama.cppz	llama-cpp© r   i   )ÚnameÚaliasesÚenv_varsr$   Údefault_max_tokensN)	r-   Útypingr   Ú	providersr   Úproviders.baser   r   r4   r9   r!   r   ú<module>rA      sÀ   ððð ð Ð Ð Ð Ð Ð à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø *Ð *Ð *Ð *Ð *Ð *ð<Yð <Yð <Yð <Yð <YOñ <Yô <Yð <Yð~ 
ˆØ	ðð Øð
 ð!
ñ 
ô 
€ð& Ð &Ñ Ô Ð Ð Ð r!   