§
    øžyjV  ã            
       óê   — d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	 de
defd„Z G d	„ d
e	¦  «        Z eddddedddid¬¦  «        Z eddddedddid¬¦  «        Z ee¦  «          ee¦  «         dS )u   Kimi / Moonshot provider profiles.

Kimi has dual endpoints:
  - sk-kimi-* keys â†’ api.kimi.com/coding (Anthropic Messages API)
  - legacy keys â†’ api.moonshot.ai/v1 (OpenAI chat completions)

This module covers the chat_completions path (/v1 endpoint).
é    )ÚAny)Úurlparse)Úregister_provider)ÚOMIT_TEMPERATUREÚProviderProfileÚbase_urlÚreturnc                 óP  — 	 t          | ¦  «        }|j        }n# t          $ r Y dS w xY w|j                             ¦   «         dk    o`|j        pd                     ¦   «         dk    oA|dv o=|j        du o4|j        du o+|j         	                    d¦  «        dv o|j
         o|j         S )	z>Return True only for Kimi Code's canonical HTTPS API surfaces.FÚhttpsÚ zapi.kimi.com)Ni»  Nú/>   ú
/coding/v1ú/coding)r   ÚportÚ
ValueErrorÚschemeÚlowerÚhostnameÚusernameÚpasswordÚpathÚrstripÚqueryÚfragment)r   Úparsedr   s      úR/home/ragecks/.hermes/hermes-agent/plugins/model-providers/kimi-coding/__init__.pyÚ_is_confirmed_kimi_coding_urlr      sé   € ðÝ˜(Ñ#Ô#ˆØŒ{ˆˆøÝð ð ð Øˆuˆuðøøøð 	Œ×ÒÑÔ Ò(ð 	 ØŒ_Ð" ×)Ò)Ñ+Ô+¨~Ò=ð	 à�KÐð	 ð ŒO˜tÐ#ð	 ð ŒO˜tÐ#ð		 ð
 ŒK×Ò˜sÑ#Ô#Ð'@Ð@ð	 ð ”Ðð	 ð ”Ðð	s   ‚ ™
'¦'c            
       ó¨   ‡ — 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ˆ fd	„Zdd
œdedz  de	eee
f         eee
f         f         fd„Zˆ xZS )ÚKimiProfileuE   Kimi/Moonshot â€” temperature omitted, thinking xor reasoning_effort.Ng       @©Úapi_keyr   Útimeoutr!   r   r"   r	   c                ó2  •— |p| j         pd                     d¦  «        }t          |¦  «        }|r0t          |¦  «        j                             d¦  «        dk    r|dz  }t          ¦   «                              ||pd|¬¦  «        }|�|r|S d„ |D ¦   «         S )z>Use Kimi Code's OpenAI-compatible surface for model discovery.r   r   r   z/v1Nr    c                 óf   — g | ].}|                      ¦   «                              ¦   «         d k    ¯,|‘Œ/S )Úk3)Ústripr   )Ú.0Úmodels     r   ú
<listcomp>z,KimiProfile.fetch_models.<locals>.<listcomp>:   s6   € ÐKÐKÐK˜%¨U¯[ª[©]¬]×-@Ò-@Ñ-BÔ-BÀdÒ-JÐ-J�Ð-JÐ-JÐ-Jó    )r   r   r   r   r   ÚsuperÚfetch_models)Úselfr!   r   r"   Úeffective_baseÚconfirmed_coding_endpointÚmodelsÚ	__class__s          €r   r,   zKimiProfile.fetch_models'   s¹   ø€ ð #Ð9 d¤mÐ9°r×AÒAÀ#ÑFÔFˆÝ$AÀ.Ñ$QÔ$QÐ!Ø$ð 	$­°.Ñ)AÔ)AÔ)F×)MÒ)MÈcÑ)RÔ)RÐV_Ò)_Ð)_Ø˜eÑ#ˆNÝ‘”×%Ò%ØØ#Ð+ tØð &ñ 
ô 
ˆð
 ˆ>Ð6ˆ>ØˆMØKÐK 6ÐKÑKÔKÐKr*   )Úreasoning_configr2   c                ó8  — i }i }|rt          |t          ¦  «        sddi|d<   ||fS |                     dd¦  «        }|du rddi|d<   ||fS |                     d¦  «        pd                     ¦   «                              ¦   «         }|d	v r||d
<   nddi|d<   ||fS )uæ  Kimi reasoning controls.

        Moonshot's wire shape treats ``extra_body.thinking`` (a binary toggle)
        and a top-level ``reasoning_effort`` as mutually exclusive â€” sending
        both is at best redundant and risks "cannot specify both 'thinking' and
        'reasoning_effort'" (HTTP 400). This mirrors the kimi-k2 handling on the
        opencode-go relay: send effort when one is requested, otherwise fall
        back to ``extra_body.thinking`` â€” never both.
        ÚtypeÚenabledÚthinkingTFÚdisabledÚeffortr   >   ÚlowÚhighÚmediumÚreasoning_effort)Ú
isinstanceÚdictÚgetr&   r   )r-   r2   ÚcontextÚ
extra_bodyÚ	top_levelr5   r8   s          r   Úbuild_api_kwargs_extrasz#KimiProfile.build_api_kwargs_extras<   sä   € ð ˆ
Øˆ	àð 	)¥zÐ2BÅDÑ'IÔ'Ið 	)ð '-¨iÐ%8ˆJ�zÑ"Ø˜yÐ(Ð(à"×&Ò& y°$Ñ7Ô7ˆØ�eÐÐØ&,¨jÐ%9ˆJ�zÑ"Ø˜yÐ(Ð(ð #×&Ò& xÑ0Ô0Ð6°B×=Ò=Ñ?Ô?×EÒEÑGÔGˆØÐ.Ð.Ð.Ø,2ˆIÐ(Ñ)Ð)à&,¨iÐ%8ˆJ�zÑ"à˜9Ð$Ð$r*   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚfloatÚlistr,   r>   Útupler   rC   Ú__classcell__)r1   s   @r   r   r   $   sî   ø€ € € € € ØOÐOð
 #Ø#ØðLð Lð Lð �t‘ðLð ˜‘*ð	Lð
 ðLð 
ˆcŒ�TÑ	ðLð Lð Lð Lð Lð Lð, 26ð#%ð #%ð #%Ø#'¨$¡;ð#%à	ˆt�C˜�HŒ~˜t C¨ Hœ~Ð-Ô	.ð#%ð #%ð #%ð #%ð #%ð #%ð #%ð #%r*   r   zkimi-coding)ÚkimiÚmoonshotzkimi-for-coding)ÚKIMI_API_KEYÚKIMI_CODING_API_KEYzhttps://api.moonshot.ai/v1i }  z
User-Agentzhermes-agent/1.0zkimi-k2-turbo-preview)ÚnameÚaliasesÚenv_varsr   Úfixed_temperatureÚdefault_max_tokensÚdefault_headersÚdefault_aux_modelzkimi-coding-cn)zkimi-cnzmoonshot-cn)ÚKIMI_CN_API_KEYzhttps://api.moonshot.cn/v1N)rG   Útypingr   Úurllib.parser   Ú	providersr   Úproviders.baser   r   rH   Úboolr   r   rM   Úkimi_cn© r*   r   ú<module>r`      sB  ððð ð Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <ð¨Cð °Dð ð ð ð ð&;%ð ;%ð ;%ð ;%ð ;%�/ñ ;%ô ;%ð ;%ð| €{Ø	Ø3Ø4Ø)Ø&ØØ!Ð#5Ð6Ø-ð	ñ 	ô 	€ð ˆ+Ø	Ø&Ø!Ø)Ø&ØØ!Ð#5Ð6Ø-ð	ñ 	ô 	€ð Ð �$Ñ Ô Ð Ø Ð �'Ñ Ô Ð Ð Ð r*   