§
    øžyjB  ã                   ó‚   — d 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¬¦  «        Z ee¦  «         dS )zQwen Portal provider profile.é    )ÚAny)Úregister_provider)ÚProviderProfilec                   ó.  — e Zd ZdZedeeef         deeeef         e	f         fd„¦   «         Z
deeeef                  deeeef                  fd„Zddœd	edz  deeef         f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dS )ÚQwenProfileuN   Qwen Portal â€” message normalization, vl_high_resolution, metadata top-level.ÚpartÚreturnc                 ó¨   — |                       d¦  «        }t          |t          ¦  «        r%t          | ¦  «        }t          |¦  «        |d<   |dfS | dfS )NÚ	image_urlTF)ÚgetÚ
isinstanceÚdict)r   r   Úcopieds      úQ/home/ragecks/.hermes/hermes-agent/plugins/model-providers/qwen-oauth/__init__.pyÚ_copy_part_if_request_mutablez)QwenProfile._copy_part_if_request_mutable   sT   € à—H’H˜[Ñ)Ô)ˆ	Ý�i¥Ñ&Ô&ð 	 Ý˜$‘Z”ZˆFÝ"& y¡/¤/ˆF�;ÑØ˜4�<ÐØ�Uˆ{Ðó    Úmessagesc                 ó"  — |sg S t          |¦  «        }d}t          |¦  «        D �]5\  }}t          |t          ¦  «        sŒ|€|                     d¦  «        dk    r|}|                     d¦  «        }t          |t
          ¦  «        rt          |¦  «        }d|dœg|d<   |||<   Œ�t          |t           ¦  «        rŸg }d}	|D ]{}
t          |
t
          ¦  «        r|                     d|
dœ¦  «         d}	Œ2t          |
t          ¦  «        r2|                      |
¦  «        \  }}|                     |¦  «         |	p|}	Œyd}	Œ||r|	rt          |¦  «        }||d<   |||<   �Œ7|�±||         }t          |t          ¦  «        r”|                     d¦  «        }t          |t           ¦  «        rj|rht          |d	         t          ¦  «        rMt          |¦  «        }t          |¦  «        }t          |d	         ¦  «        |d	<   d
di|d	         d<   ||d<   |||<   |S )z±Normalize content to list-of-dicts format.

        Inject cache_control on system message.

        Matches the behavior of run_agent.py:_qwen_prepare_chat_messages().
        NÚroleÚsystemÚcontentÚtext)Útyper   FTéÿÿÿÿr   Ú	ephemeralÚcache_control)ÚlistÚ	enumerater   r   r   ÚstrÚappendr   )Úselfr   ÚpreparedÚ
system_idxÚidxÚmsgr   Úmsg_copyÚnormalized_partsÚchangedr   Únormalized_partr   Úcontent_copys                 r   Úprepare_messageszQwenProfile.prepare_messages   sb  € ð ð 	ØˆIå˜‘>”>ˆØ!%ˆ
å! (Ñ+Ô+ð 	-ñ 	-‰HˆC�Ý˜c¥4Ñ(Ô(ð ØØÐ! c§g¢g¨f¡o¤o¸Ò&AÐ&AØ �
Ø—g’g˜iÑ(Ô(ˆGÝ˜'¥3Ñ'Ô'ð -Ý ™9œ9�Ø06ÀÐ'HÐ'HÐ&I�˜Ñ#Ø (�˜‘�Ý˜G¥TÑ*Ô*ð -Ø#%Ð Ø�Ø#ð 	'ð 	'�DÝ! $­Ñ,Ô,ð 'Ø(×/Ò/¸ÈÐ0NÐ0NÑOÔOÐOØ"&˜˜Ý# D­$Ñ/Ô/ð 'Ø26×2TÒ2TÐUYÑ2ZÔ2ZÑ/˜¨Ø(×/Ò/°Ñ@Ô@Ð@Ø")Ð"3¨V˜˜à"&˜˜Ø#ð -¨ð -Ý# C™yœy�HØ*:�H˜YÑ'Ø$,�H˜S‘Mùð Ð!Ø˜:Ô&ˆCÝ˜#�tÑ$Ô$ð 4ØŸ'š' )Ñ,Ô,�å˜w­Ñ-Ô-ð
4àð
4õ # 7¨2¤;µÑ5Ô5ð
4õ
  $ C™yœy�HÝ#'¨¡=¤=�LÝ'+¨L¸Ô,<Ñ'=Ô'=�L Ñ$Ø9?ÀÐ8M�L Ô$ _Ñ5Ø*6�H˜YÑ'Ø+3�H˜ZÑ(àˆr   N)Ú
session_idr,   c                ó
   — ddiS )NÚvl_high_resolution_imagesT© )r!   r,   Úcontexts      r   Úbuild_extra_bodyzQwenProfile.build_extra_bodyP   s   € ð ,¨TÐ2Ð2r   )Úreasoning_configÚqwen_session_metadatar2   r3   c                ó   — i }|r||d<   i |fS )z;Qwen metadata goes to top-level api_kwargs, not extra_body.Úmetadatar/   )r!   r2   r3   r0   Ú	top_levels        r   Úbuild_api_kwargs_extrasz#QwenProfile.build_api_kwargs_extrasU   s%   € ð ˆ	Ø ð 	:Ø$9ˆI�jÑ!Ø�9ˆ}Ðr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústaticmethodr   r   r   ÚtupleÚboolr   r   r+   r1   r7   r/   r   r   r   r      sD  € € € € € ØXÐXàð¨D°°c°¬Nð ¸uÀTÈ#ÈsÈ(Ä^ÐUYÐEYÔ?Zð ð ð ñ „\ðð:¨¨d°3¸°8¬nÔ)=ð :À$ÀtÈCÐQTÈHÄ~ÔBVð :ð :ð :ð :ðz +/ð3ð 3ð 3Ø  4™Zð3à	ˆc�3ˆhŒð3ð 3ð 3ð 3ð )-Ø-1ð	ð ð ð  ™+ðð  $ d™{ð	ð 
ˆt�C˜�HŒ~˜t C¨ Hœ~Ð-Ô	.ðð ð ð ð ð r   r   z
qwen-oauth)Úqwenzqwen-portalzqwen-cli)ÚQWEN_API_KEYzhttps://portal.qwen.ai/v1Úoauth_externali   )ÚnameÚaliasesÚenv_varsÚbase_urlÚ	auth_typeÚdefault_max_tokensN)	r;   Útypingr   Ú	providersr   Úproviders.baser   r   r?   r/   r   r   ú<module>rK      s·   ðØ #Ð #Ø Ð Ð Ð Ð Ð à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø *Ð *Ð *Ð *Ð *Ð *ðXð Xð Xð Xð X�/ñ Xô Xð Xðv €{Ø	Ø/ØØ(ØØðñ ô €ð Ð �$Ñ Ô Ð Ð Ð r   