Ë
    âß²jð  ã            	       ó¬   — d Z ddlZddlZddlZddlmZ ddlmZ ddl	m
Z
  ej                  e«      Z G d„ de
«      Z edd	d
dddd¬«      Z ee«       y)z"Native Anthropic provider profile.é    N)Úopen_credentialed_url)Úregister_provider)ÚProviderProfilec            
       óJ   — e Zd ZdZddddœdedz  dedz  dedee   dz  fd	„Zy)
ÚAnthropicProfileu7   Native Anthropic â€” uses x-api-key header, not Bearer.Ng       @)Úapi_keyÚbase_urlÚtimeoutr   r	   r
   Úreturnc                ó”  ‡‡‡‡— ‰syddl m}mŠm} dt        dz  fˆˆˆˆfd„}	 g }t        «       }d}	t        |«      D ]?  }
 ||	«      }|j                  d„ |j                  dg «      D «       «        |||«      }	|	�Œ? n t        t        j                  |«      «      S # t        $ r }t        j                  d|«       Y d}~yd}~ww xY w)	z·Anthropic uses x-api-key header and anthropic-version. ``/v1/models`` is cursor-paginated
        (default page 20, smaller than the live catalog), so follow ``has_more``/``last_id``.Nr   )Ú_ANTHROPIC_MODELS_MAX_PAGESÚ_anthropic_models_urlÚ_anthropic_next_cursorÚafter_idc                 ó<  •— t         j                  j                   ‰‰| ¬«      «      }d‰fddfD ]  \  }}|j                  ||«       Œ t	        |‰¬«      5 }t        j                  |j                  «       j                  «       «      cd d d «       S # 1 sw Y   y xY w)N)r   z	x-api-key)zanthropic-versionz
2023-06-01)ÚAcceptzapplication/json)r
   )	ÚurllibÚrequestÚRequestÚ
add_headerr   ÚjsonÚloadsÚreadÚdecode)	r   ÚreqÚkÚvÚrespr   r   r	   r
   s	        €€€€úO/home/ubuntu/.hermes/hermes-agent/plugins/model-providers/anthropic/__init__.pyÚ_pagez,AnthropicProfile.fetch_models.<locals>._page   s‹   ø€ Ü—.‘.×(Ñ(Ñ)>¸xÐRZÔ)[Ó\ˆCØ% wÐ/Ð1TÐVtÐuò %‘��1Ø—‘˜q !Õ$ð%ä& s°GÔ<ð 8ÀÜ—z‘z $§)¡)£+×"4Ñ"4Ó"6Ó7÷8÷ 8ò 8ús   Á1BÂBc              3   óR   K  — | ]  }t        |t        «      sŒd |v sŒ|d    –— Œ! y­w)ÚidN)Ú
isinstanceÚdict)Ú.0Úms     r   ú	<genexpr>z0AnthropicProfile.fetch_models.<locals>.<genexpr>'   s(   è ø€ Òi¨!ÄzÐRSÔUYÕGZÐ_cÐghÒ_h˜a �gÑiùs   ‚'˜'�
'Údatazfetch_models(anthropic): %s)Úhermes_cli.modelsr   r   r   ÚstrÚsetÚrangeÚextendÚgetÚlistr$   ÚfromkeysÚ	ExceptionÚloggerÚdebug)Úselfr   r	   r
   r   r   r    ÚmodelsÚseen_cursorsÚcursorÚ_r(   Úexcr   s    ```         @r   Úfetch_modelszAnthropicProfile.fetch_models   sÃ   û€ ñ
 ØßpÑpð	8œC $™J÷ 	8ð 	8ð	Ø "ˆFÜ%(£UˆLØ!%ˆFÜÐ6Ó7ò �Ù˜V“}�Ø—‘Ñi¨t¯x©x¸ÀÓ/CÔiÔiÙ/°°lÓC�Ø‘>Ùðô œŸ™ fÓ-Ó.Ð.øÜò 	Ü�L‰LÐ6¸Ô<Üûð	ús   ¥AB Á= B Â	CÂ'CÃC)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r*   Úfloatr/   r:   © ó    r   r   r      sE   „ ÙAð (,ÀDÐ[^òØ ™*ðØ7:¸T±zðØSXðà	ˆc‰�TÑ	ôrA   r   Ú	anthropic)Úclaudezclaude-oauthzclaude-codeÚanthropic_messages)ÚANTHROPIC_API_KEYÚANTHROPIC_TOKENÚCLAUDE_CODE_OAUTH_TOKENzhttps://api.anthropic.comr   zclaude-haiku-4-5-20251001)ÚnameÚaliasesÚapi_modeÚenv_varsr	   Ú	auth_typeÚdefault_aux_model)r>   r   ÚloggingÚurllib.requestr   Úhermes_cli.urllib_securityr   Ú	providersr   Úproviders.baser   Ú	getLoggerr;   r2   r   rB   r@   rA   r   ú<module>rT      sc   ðÙ (ã Û Û å <Ý 'Ý *à	ˆ×	Ñ	˜8Ó	$€ô �ô  ñF Ø	ÐGÐRfØPØ(°IÐQlô€	ñ �)Õ rA   