+
    kHàj¡  ã            
       ó‚   € R t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
  ! R R]
4      t]! ]! RR	R
R
RR7      4       R# )a  LM Studio provider profile (local desktop app with an OpenAI-compatible server).

Request quirk: reasoning goes out as top-level ``reasoning_effort``, gated on and clamped to
the per-model ``allowed_options`` LM Studio publishes in ``/api/v1/models``. The agent probes
and caches those options and passes them as ``lmstudio_reasoning_options``.

Everything else stays where it lives today: endpoint, ``LM_API_KEY`` / ``LM_BASE_URL`` and the
no-auth placeholder (``hermes_cli/auth.py`` registry row), the chat-model picker probe
(``hermes_cli/models_local.py``). Hence ``base_url`` is left empty: a loopback ``base_url``
would map every ``127.0.0.1`` / ``localhost`` endpoint to LM Studio in URL->provider inference
and disable local-server detection for Ollama, llama.cpp and vLLM.
)ÚAny)Úresolve_lmstudio_effort)Úgeneric_nested_reasoning)Úregister_provider)ÚProviderProfilec                   óF   a € ] tR t^t o RtRRRRRR/V 3R lR lltR	tV tR# )
ÚLMStudioProfilezMLM Studio: top-level ``reasoning_effort`` from the model's published options.Úreasoning_configNÚsupports_reasoningFÚlmstudio_reasoning_optionsc                ó¦   <€ V ^8„  d   QhRS[ R,          RS[RS[S[,          R,          RS[RS[S[ S[S[3,          S[ S[S[3,          3,          /# )é   r	   Nr
   r   ÚcontextÚreturn)ÚdictÚboolÚlistÚstrr   Útuple)ÚformatÚ__classdict__s   "€ÚN/home/ubuntu/.hermes/hermes-agent/plugins/model-providers/lmstudio/__init__.pyÚ__annotate__ÚLMStudioProfile.__annotate__   se   ø€ ÷ Pñ PÙ#'¨$¥;ðPÙKOðPá$(©¥I°Õ$4ðPáHKðPñ 
‰t‘C™�H�~™t¡C© H�~Ð-Õ	.ñPó    c               ól   € Vf   \        V4      / 3# V'       g   / / 3# \        W4      p/ Ve   RV/3# / 3# )zû``supports_reasoning`` is true only when the model publishes a non-``off`` option;
``lmstudio_reasoning_options`` is the agent's cached probe of them. Auxiliary calls have no
probe (``None``) and keep the generic nested ``reasoning`` they always sent.Úreasoning_effort)r   r   )Úselfr	   r
   r   r   Úefforts   &$$$, r   Úbuild_api_kwargs_extrasÚ'LMStudioProfile.build_api_kwargs_extras   sP   € ð &Ò-Ü+Ð,<Ó=¸rÐAÐAß!Ø�r�6ˆMÜ(Ð)9ÓVˆØ°FÒ4FÐ'¨Ð0ÐOÐOÈBÐOÐOr   © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r      s5   ø‡ € ÙWðPØ15ðPØRWðPà7;÷P÷ Pð Pr   r   Úlmstudioz	LM StudioF)ÚnameÚdisplay_nameÚsupports_model_listingÚsupports_health_checkÚenv_varsN)Ú
LM_API_KEYÚLM_BASE_URL)r&   Útypingr   Úagent.lmstudio_reasoningr   Úagent.reasoning_effortr   Ú	providersr   Úproviders.baser   r   r!   r   r   Ú<module>r6      sG   ðñõ å <Ý ;Ý 'Ý *ôP�oô Pñ$ ‘/Ø	 +ÀeÐchØ*ôö r   