Ë
    âß²jH  ã                   ó”   — d 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  G d„ de«      Z ed	d
ddddddd¬«	      Z e
e«       y)zNous Portal provider profile.é    )ÚAny)Úget_affinity_scopeÚget_conversation_contextÚnous_portal_tags)Ú_cache_scope_from_session_id)Úregister_provider)ÚProviderProfilec                   ó¸   — e Zd ZdZddœdedefd„Zddœd	edz  deeef   fd
„Z	e
dedz  defd„«       Zddddœdedz  dededz  deeeef   eeef   f   fd„Zy)ÚNousProfileuD   Nous Portal â€” product tags, reasoning with Nous-specific omission.F©Úvisionr   Úreturnc                óH   — 	 ddl m}  ||¬«      xs dS # t        $ r Y yw xY w)zQPortal's tier-aware ``/api/nous/recommended-models`` pick (cached, offline-safe).r   )Úget_nous_recommended_aux_modelr   Ú )Úhermes_cli.modelsr   Ú	Exception)Úselfr   r   s      úJ/home/ubuntu/.hermes/hermes-agent/plugins/model-providers/nous/__init__.pyÚresolve_aux_modelzNousProfile.resolve_aux_model   s,   € ð	ÝHá1¸Ô@ÒFÀBÐFøÜò 	Ùð	ús   ‚ •	! !N©Ú
session_idr   c                óv   — dt        |¬«      i}t        t        «       xs t        «       xs |«      }|r||d<   |S )NÚtagsr   r   )r   r   r   r   )r   r   ÚcontextÚbodyÚ
sticky_keys        r   Úbuild_extra_bodyzNousProfile.build_extra_body   sE   € Ø &Ô(8ÀJÔ(OÐPˆô
 2Ô2DÓ2FÒ2rÔJbÓJdÒ2rÐhrÓsˆ
ÙØ!+ˆD�Ñð
 ˆó    Úmodelc                 ó´   — 	 ddl m}m}  || «      }|€ |«        y	 |j	                  d«       xs t        |j	                  d«      «      S # t        $ r Y yw xY w)z¶True when ``reasoning: {enabled: false}`` would 400 on *model*. Cache-only catalog
        lookup; unknown/cold (warmer kicked) and no-reasoning routes both answer True (omit > 400).r   )Ú!nous_model_reasoning_capabilitiesÚwarm_nous_reasoning_caps_asyncTÚsupports_reasoningÚ	mandatory)Ú hermes_cli.models_reasoning_capsr"   r#   r   ÚgetÚbool)r    r"   r#   Úcapss       r   Ú_cannot_disable_reasoningz%NousProfile._cannot_disable_reasoning&   sc   € ð	ßzá4°UÓ;ˆDØˆ|Ù.Ô0Øð ð
 —8‘8Ð0Ó1Ð1ÒP´T¸$¿(¹(À;Ó:OÓ5PÐPøô ò 	Ùð	ús   ‚A Á	AÁA)Úreasoning_configr$   r    r+   r$   c                ó–   — |si i fS |€	ddddœii fS t        |«      }|j                  d«      du r| j                  |«      ri i fS d|ii fS )z™Pass the full reasoning_config, disable included (the Portal honors it;
        omitting it means the upstream default, thinking ON for V4-class models).Ú	reasoningTÚmedium)ÚenabledÚeffortr/   F)Údictr'   r*   )r   r+   r$   r    r   Úrcs         r   Úbuild_api_kwargs_extrasz#NousProfile.build_api_kwargs_extras5   sm   € ñ "Ø�r�6ˆMØÐ#Ø¨T¸XÑ!FÐGÈÐKÐKÜÐ"Ó#ˆØ�6‰6�)Ó Ñ%¨$×*HÑ*HÈÔ*OØ�r�6ˆMØ˜RÐ  "Ð$Ð$r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   Ústrr   r1   r   r   Ústaticmethodr*   Útupler3   © r   r   r   r      sÁ   „ ÙNà27ò ¨4ð ¸Có ð <@ò ¨c°D©jð ÈtÐTWÐY\ÐT\É~ó ð ðQ¨¨t©ð Q¸ò Qó ðQð 26ÐRWØ ò%Ø#'¨$¡;ð%ØKOð%à�T‰zð%ð 
ˆt�C˜�H‰~˜t C¨ H™~Ð-Ñ	.ô%r   r   Únous)znous-portalÚnousresearch)ÚNOUS_API_KEYzNous Researchu%   Nous Research â€” Hermes model familyzhttps://nousresearch.com/)zhermes-3-405bzhermes-3-70bz)https://inference-api.nousresearch.com/v1Úoauth_device_code)	ÚnameÚaliasesÚenv_varsÚdisplay_nameÚdescriptionÚ
signup_urlÚfallback_modelsÚbase_urlÚ	auth_typeN)r7   Útypingr   Úagent.portal_tagsr   r   r   Úagent.transports.codexr   Ú	providersr   Úproviders.baser	   r   r<   r;   r   r   ú<module>rN      sX   ðÙ #å ç \Ñ \Ý ?Ý 'Ý *ô7%�/ô 7%ñt Ø	Ð8ÐCTØ Ð.UØ*Ð<]Ø8ÐDWô	€ñ �$Õ r   