Ë
    âß²j  ã                   ó”   — d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 dZ G d„ d	e
«      Z ed
dddddedd¬«	      Z ee«       y)z!Actual Computer provider profile.é    N)ÚAny)Úurlparse)Úregister_provider)ÚProviderProfilezhttps://api.actual.inc/v1c                   óÔ   ‡ — e Zd ZdZdedeeef   fd„Zdedz  deedf   dz  fd„Z	dd	œ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 )ÚActualProfilez‚Actual Computer: hosted at api.actual.inc; local (offline-mode client)
    inference opted into via model.base_url in config.yaml.ÚcontextÚreturnc                 ór  — t        |j                  d«      xs | j                  xs d«      }	 t        |«      j                  xs dj                  «       j                  d«      }t        j                  dk7  s|dk7  ri S t        d„ dD «       «      ri S dd l}d	|j                  «       iS # t        $ r i cY S w xY w)
NÚbase_urlÚ ú.Údarwinzapi.actual.incc              3   óF   K  — | ]  }t        j                  |«      –— Œ y ­w)N)ÚosÚgetenv)Ú.0Úkeys     úL/home/ubuntu/.hermes/hermes-agent/plugins/model-providers/actual/__init__.pyú	<genexpr>z;ActualProfile.build_client_kwargs_extras.<locals>.<genexpr>   s    è ø€ ò 
àô �I‰I�c�Nñ
ùs   ‚!)ÚHERMES_CA_BUNDLEÚSSL_CERT_FILEÚREQUESTS_CA_BUNDLEÚCURL_CA_BUNDLEr   Ússl_ca_cert)ÚstrÚgetr   r   ÚhostnameÚlowerÚrstripÚ
ValueErrorÚsysÚplatformÚanyÚcertifiÚwhere)Úselfr	   r   r   r%   s        r   Úbuild_client_kwargs_extrasz(ActualProfile.build_client_kwargs_extras   s´   € Ü�w—{‘{ :Ó.ÒE°$·-±-ÒEÀ2ÓFˆð	Ü  Ó*×3Ñ3Ò9°r×@Ñ@ÓB×IÑIÈ#ÓNˆHô �<‰<˜8Ò# xÐ3CÒ'CØˆIÜñ 
ðô
ô 
ð ˆIÛà˜wŸ}™}›Ð/Ð/øô! ò 	ØŠIð	ús   ®6B( Â(B6Â5B6ÚmodelN.c                 ó   — ddl m} |S )Nr   )ÚACTUAL_RELAY_EFFORTS)Úagent.reasoning_effortr+   )r'   r)   r+   s      r   Úsupported_reasoning_effortsz)ActualProfile.supported_reasoning_efforts(   s   € Ý?à#Ð#ó    )Úreasoning_configr/   c                óL  — t        |t        «      si i fS ddlm} t	        |j                  d«      xs d«      j                  «       j                  «       dk(  }|j                  d«      dur|r
dd	d
iiddifS | j                  |j                  d«      «      xs d} |||d¬«      S )Nr   )Úthinking_toggle_extrasÚeffortr   ÚnoneÚenabledFÚthinkingÚtypeÚdisabledÚreasoning_effortr)   © T)Úalways_emit_toggle)	Ú
isinstanceÚdictr,   r1   r   r   Ústripr   r-   )r'   r/   r	   r1   Úeffort_noneÚ	supporteds         r   Úbuild_api_kwargs_extrasz%ActualProfile.build_api_kwargs_extras-   s¯   € ô Ð*¬DÔ1Ø�r�6ˆMÝAô Ð*×.Ñ.¨xÓ8Ò>¸BÓ?×EÑEÓG×MÑMÓOÐSYÑYˆØ×Ñ 	Ó*°%Ñ7¹KØ ¨Ð 4Ð5Ð8JÈFÐ7SÐSÐSØ×4Ñ4°W·[±[ÀÓ5IÓJÒPÈbˆ	Ù%Ð&6¸	ÐVZÔ[Ð[r.   g       @©Úapi_keyr   ÚtimeoutrB   r   rC   c                ób   •— ddl m}m}  ||xs  |d«      d   «      }t        ‰| �  |||¬«      S )zOUse the selected route, then config.yaml, then the legacy environment override.r   )Únormalize_actual_base_urlÚ$resolve_api_key_provider_credentialsÚactualr   rA   )Úhermes_cli.authrE   rF   ÚsuperÚfetch_models)r'   rB   r   rC   rE   rF   Ú	__class__s         €r   rJ   zActualProfile.fetch_models<   sA   ø€ ÷	
ñ
 -ØÒRÑ<¸XÓFÀzÑRó
ˆô ‰wÑ#¨G¸hÐPWÐ#ÓXÐXr.   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r<   r   r(   Útupler-   r@   ÚfloatÚlistrJ   Ú__classcell__)rK   s   @r   r   r      sà   ø„ ñ?ð0°Cð 0¸DÀÀcÀ¹Nó 0ð,$°°t±ð $ÀÀcÈ3ÀhÁÐRVÑ@Vó $ð 26ò\Ø#'¨$¡;ð\ØBEð\à	ˆt�C˜�H‰~˜t C¨ H™~Ð-Ñ	.ó\ð$ #Ø#ØòYð �t‘ðYð ˜‘*ð	Yð
 ðYð 
ˆc‰�TÑ	÷Yñ Yr.   r   rG   )zactual-computerÚactualcomputerÚacizActual ComputerzsActual Computer - hosted inference via api.actual.inc, or local offline inference via model.base_url in config.yamlzhttps://actual.inc)ÚACTUAL_API_KEYrB   Úchat_completions)	ÚnameÚaliasesÚdisplay_nameÚdescriptionÚ
signup_urlÚenv_varsr   Ú	auth_typeÚapi_mode)rO   r   r"   Útypingr   Úurllib.parser   Ú	providersr   Úproviders.baser   ÚDEFAULT_ACTUAL_BASE_URLr   rG   r9   r.   r   ú<module>re      sb   ðÙ 'ã 	Û 
Ý Ý !å 'Ý *à5Ð ô>Y�Oô >YñB 
Ø	Ø8Ø"ð:à#Ø Ø$ØØô
€ñ �&Õ r.   