§
    ±Ùýiš
  ã                   óŠ   — d Z ddl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.é    N)ÚAny)Úregister_provider)ÚProviderProfilec                   óÞ   — e Zd Z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.ÚmessagesÚreturnc                 óÜ  — t          j        |¦  «        }|s|S |D ]Ç}t          |t          ¦  «        sŒ|                     d¦  «        }t          |t
          ¦  «        r
d|dœg|d<   ŒLt          |t          ¦  «        rfg }|D ]Z}t          |t
          ¦  «        r|                     d|dœ¦  «         Œ0t          |t          ¦  «        r|                     |¦  «         Œ[|r||d<   ŒÈ|D ]†}t          |t          ¦  «        ro|                     d¦  «        dk    rV|                     d¦  «        }t          |t          ¦  «        r*|r(t          |d         t          ¦  «        rddi|d         d	<    nŒ‡|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().
        ÚcontentÚtext)Útyper   ÚroleÚsysteméÿÿÿÿr   Ú	ephemeralÚcache_control)ÚcopyÚdeepcopyÚ
isinstanceÚdictÚgetÚstrÚlistÚappend)Úselfr   ÚpreparedÚmsgr   Únormalized_partsÚparts          úP/home/piyush/.hermes/hermes-agent/plugins/model-providers/qwen-oauth/__init__.pyÚprepare_messageszQwenProfile.prepare_messages   s«  € õ ”= Ñ*Ô*ˆØð 	ØˆOàð 	6ð 	6ˆCÝ˜c¥4Ñ(Ô(ð ØØ—g’g˜iÑ(Ô(ˆGÝ˜'¥3Ñ'Ô'ð 
6Ø+1¸7Ð"CÐ"CÐ!DI‘Ý˜G¥TÑ*Ô*ð 6Ø#%Ð Ø#ð 6ð 6DÝ! $­Ñ,Ô,ð 6Ø(×/Ò/¸ÈÐ0NÐ0NÑOÔOÐOÐOÝ# D­$Ñ/Ô/ð 6Ø(×/Ò/°Ñ5Ô5Ð5øØ#ð 6Ø%5C˜	‘Nøð ð 		ð 		ˆCÝ˜#tÑ$Ô$ð ¨¯ª°©¬¸HÒ)DÐ)DØŸ'š' )Ñ,Ô,å˜w­Ñ-Ô-ðIàðIõ # 7¨2¤;µÑ5Ô5ðIð
 5;¸KÐ3HG˜B”K Ñ0Øøàˆó    N)Ú
session_idr#   c                ó
   — ddiS )NÚvl_high_resolution_imagesT© )r   r#   Úcontexts      r    Úbuild_extra_bodyzQwenProfile.build_extra_body6   s   € ð ,¨TÐ2Ð2r"   )Úreasoning_configÚqwen_session_metadatar)   r*   c                ó   — i }|r||d<   i |fS )z;Qwen metadata goes to top-level api_kwargs, not extra_body.Úmetadatar&   )r   r)   r*   r'   Ú	top_levels        r    Úbuild_api_kwargs_extrasz#QwenProfile.build_api_kwargs_extras;   s%   € ð ˆ	Ø ð 	:Ø$9ˆIjÑ!Ø9ˆ}Ðr"   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r!   r(   Útupler.   r&   r"   r    r   r   
   sý   € € € € € ØXÐXð'¨¨d°3¸°8¬nÔ)=ð 'À$ÀtÈCÐQTÈHÄ~ÔBVð 'ð 'ð 'ð 'ðT +/ð3ð 3ð 3Ø  4™Zð3à	ˆc3ˆhŒð3ð 3ð 3ð 3ð )-Ø-1ð	ð ð ð  ™+ðð  $ d™{ð	ð 
ˆtC˜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_tokens)
r2   r   Útypingr   Ú	providersr   Úproviders.baser   r   r4   r&   r"   r    ú<module>r@      s¸   ðØ #Ð #à €€€Ø Ð Ð Ð Ð Ð à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø *Ð *Ð *Ð *Ð *Ð *ð<ð <ð <ð <ð </ñ <ô <ð <ð~ €{Ø	Ø/ØØ(ØØðñ ô €ð Ð $Ñ Ô Ð Ð Ð r"   