Ë
    âß²j„  ã                   ó   — d 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
  ej                  d«      ZdZd	ez   Zd
edz  defd„Zd
edz  deedf   defd„Zddœdedz  d
edz  dedz  fd„Z G d„ de
«      Z eddddddddd¬«	      Z ee«       y)z¶ZAI / GLM provider profile.

GLM-4.5+ defaults to thinking ON, so ``reasoning_config`` is translated to
``extra_body.thinking``; GLM-5.2/5.3 also take a native ``reasoning_effort``.
é    N)ÚAny)Úreasoning_effort)Úregister_provider)ÚProviderProfilez^glm-(\d+)(?:\.(\d+))?)zglm-5.3zglm-5-3zglm-5p3)úglm-5.2zglm-5-2zglm-5p2ÚmodelÚreturnc                 óü   — t         j                  | xs dj                  «       j                  «       «      }t	        |«      xr; t        |j                  d«      «      t        |j                  d«      xs d«      fdk\  S )uH   GLM thinking-capable model families: glm-4.5 and later (4.5, 4.6, 5â€¦).Ú é   é   r   )é   é   )Ú_GLM_VERSION_REÚmatchÚstripÚlowerÚboolÚintÚgroup)r   r   s     úI/home/ubuntu/.hermes/hermes-agent/plugins/model-providers/zai/__init__.pyÚ_model_supports_thinkingr      s`   € ä×!Ñ! 5¢;¨B×"5Ñ"5Ó"7×"=Ñ"=Ó"?Ó@€EÜ�‹;ÒTœC §¡¨A£Ó/´°U·[±[À³^Ò5HÀqÓ1IÐJÈfÑTÐTó    Útokens.c                 óp   ‡— | xs dj                  «       j                  «       Št        ˆfd„|D «       «      S )Nr   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­w)N© )Ú.0ÚtokenÚms     €r   ú	<genexpr>z_has_token.<locals>.<genexpr>   s   øè ø€ Ò.˜eˆu˜ŒzÑ.ùs   ƒ)r   r   Úany)r   r   r    s     @r   Ú
_has_tokenr#      s/   ø€ Ø	Š�"×ÑÓ×#Ñ#Ó%€AÜÓ. vÔ.Ó.Ð.r   ©r   Úreasoning_configc                ó$  — t        j                  | «      }|�|dk(  ryt        |t        «      r#t         j                  t         j
                  d}}}n"t         j                  t         j                  d}}}t        j                  |||«      }||v r|S |S )z•Hermes effort -> GLM vocabulary (5.2: high/max; 5.3: low..max). Below-floor
    efforts clamp to the floor; disabled/unset leaves the server default.NÚnoneÚlowÚhigh)	Úre_Úrequested_effortr#   Ú_GLM_5_3_TOKENSÚGLM53_EFFORTSÚGLM53_OVERRIDESÚGLM52_EFFORTSÚGLM52_OVERRIDESÚclamp_effort)r%   r   ÚeffortÚeffortsÚ	overridesÚfloorÚclampeds          r   Ú_glm_5_2_reasoning_effortr7      s†   € ô ×!Ñ!Ð"2Ó3€FØ€~˜ 6Ò)ØÜ�%œÔ)Ü$'×$5Ñ$5´s×7JÑ7JÈE˜E�‰ä$'×$5Ñ$5´s×7JÑ7JÈF˜E�ˆÜ×Ñ˜v w°	Ó:€GØ Ñ(ˆ7Ð3¨eÐ3r   c                   óV   — e Zd ZdZdddœdedz  dedz  deeeef   eeef   f   fd„Zy)Ú
ZaiProfileuE   Z.AI / GLM â€” extra_body.thinking on/off + GLM-5.2 reasoning_effort.N)r%   r   r%   r   r	   c                óÜ   — i }i }t        |t        «      }t        |«      s|s||fS t        |t        «      r|j                  d«      du}d|rdndi|d<   |rt        ||¬«      }|�||d<   ||fS )NÚenabledFÚtypeÚdisabledÚthinkingr$   r   )r#   Ú_GLM_5_2_TOKENSr   Ú
isinstanceÚdictÚgetr7   )	Úselfr%   r   ÚcontextÚ
extra_bodyÚ	top_levelÚis_5_2r;   r2   s	            r   Úbuild_api_kwargs_extrasz"ZaiProfile.build_api_kwargs_extras0   sŽ   € ð &(ˆ
Ø$&ˆ	Ü˜E¤?Ó3ˆÜ'¨Ô.±vØ˜yÐ(Ð(äÐ&¬Ô-Ø&×*Ñ*¨9Ó5¸UÐBˆGØ&,¹7©iÈ
Ð%SˆJ�zÑ"ÙÜ.Ð/?ÀuÔMˆFØÐ!Ø06�	Ð,Ñ-Ø˜9Ð$Ð$r   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__rA   ÚstrÚtupler   rH   r   r   r   r9   r9   -   sK   „ ÙOð 26È4ò%Ø#'¨$¡;ð%Ø>AÀD¹jð%à	ˆt�C˜�H‰~˜t C¨ H™~Ð-Ñ	.ô%r   r9   Úzai)Úglmzz-aizz.aiÚzhipu)ÚGLM_API_KEYÚZAI_API_KEYÚZ_AI_API_KEYz
Z.AI (GLM)u   Z.AI / GLM â€” Zhipu AI modelszhttps://z.ai/)r   zglm-5zglm-4-9bzhttps://api.z.ai/api/paas/v4zglm-4.5-flash)	ÚnameÚaliasesÚenv_varsÚdisplay_nameÚdescriptionÚ
signup_urlÚfallback_modelsÚbase_urlÚdefault_aux_model)rL   ÚreÚtypingr   Úagentr   r*   Ú	providersr   Úproviders.baser   Úcompiler   r,   r?   rM   r   r   rN   r#   rA   r7   r9   rO   r   r   r   ú<module>rd      sæ   ðñó 
Ý å )Ý 'Ý *à�"—*‘*Ð6Ó7€à3€Ø3°oÑE€ðU C¨$¡Jð U°4ó Uð/�c˜D‘jð /¨%°°S°©/ð /¸dó /ð
 UYò 4°°t±ð 4ÀsÈTÁzð 4Ð]`ÐcgÑ]gó 4ô%�ô %ñ, Ø	Ð8Ø;È,Ø0¸_Ø4Ð?]Ø%ô€ñ �#Õ r   