Ë
    âß²j  ã                   ó„   — d Z ddlmZ ddlmZ ddlmZ dededz  fd„Z G d	„ d
e«      Z	 e	dddddd¬«      Z
 ee
«       y)zQwen Portal provider profile.é    )ÚAny)Úregister_provider)ÚProviderProfileÚcontentÚreturnNc                 ó(  — g d}}| D ]‚  }t        |t        «      r|j                  d|dœ«       d}Œ*t        |t        «      rGt        |j	                  d«      t        «      ri |¥dt        |d   «      i¥}d}|j                  |«       Œ�d}Œ„ |r|r|S dS )z‘List content -> list-of-dict parts (str -> text part, image_url dicts copied,
    other junk dropped). None when nothing changed (copy-on-write).FÚtext©Útyper	   TÚ	image_urlN)Ú
isinstanceÚstrÚappendÚdictÚget)r   ÚpartsÚchangedÚparts       úP/home/ubuntu/.hermes/hermes-agent/plugins/model-providers/qwen-oauth/__init__.pyÚ_normalize_partsr      s›   € ð ˜ˆ7€EØò 
ˆÜ�dœCÔ Ø�L‰L &°$Ñ7Ô8Ø‰GÜ˜œdÔ#Ü˜$Ÿ(™( ;Ó/´Ô6ØE˜$ÐE ¬T°$°{Ñ2CÓ-DÑE�Ø�Ø�L‰L˜Õà‰Gð
ñ ™gˆ5Ð/¨4Ð/ó    c                   ó¬   — 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y)ÚQwenProfileuN   Qwen Portal â€” message normalization, vl_high_resolution, metadata top-level.Úmessagesr   c                 ó  — |sg S t        |«      }d}t        |«      D ]‰  \  }}t        |t        «      sŒ|€|j	                  d«      dk(  r|}|j	                  d«      }t        |t
        «      ri |¥dd|dœgi¥||<   Œ`t        |t         «      sŒqt        |«      }|€Œi |¥d|i¥||<   Œ‹ |�a||   }|j	                  d«      }t        |t         «      r;|r9t        |d   t        «      r&t        |«      }i |d   ¥dd	d
ii¥|d<   i |¥d|i¥||<   |S )z™Normalize content to list-of-dicts and inject cache_control on the (first)
        system message. Copy-on-write: only touched messages/parts are copied.NÚroleÚsystemr   r	   r
   éÿÿÿÿÚcache_controlr   Ú	ephemeral)ÚlistÚ	enumerater   r   r   r   r   )	Úselfr   ÚpreparedÚ
system_idxÚidxÚmsgr   r   Úcontent_copys	            r   Úprepare_messageszQwenProfile.prepare_messages   s<  € ñ ØˆIÜ˜“>ˆØ!%ˆ
Ü! (Ó+ò 	>‰HˆC�Ü˜c¤4Ô(ØØÐ! c§g¡g¨f£o¸Ò&AØ �
Ø—g‘g˜iÓ(ˆGÜ˜'¤3Ô'Ø W 3Ð W¨	¸VÈWÑ4UÐ3VÑ W�˜’Ü˜G¤TÕ*Ü(¨Ó1�ØÑ$Ø$= sÐ$=¨I°uÑ$=�H˜S’Mð	>ð Ð!Ø˜:Ñ&ˆCØ—g‘g˜iÓ(ˆGÜ˜'¤4Ô(©W¼ÀGÈBÁKÔQUÔ9VÜ# G›}�Ø#_ l°2Ñ&6Ð#_¸È&ÐR]ÐI^Ñ#_�˜RÑ Ø'G¨#Ð'G¨y¸,Ñ'G�˜Ñ$Øˆr   N)Ú
session_idr*   c                ó
   — ddiS )NÚvl_high_resolution_imagesT© )r#   r*   Úcontexts      r   Úbuild_extra_bodyzQwenProfile.build_extra_body9   s   € Ø+¨TÐ2Ð2r   )Úreasoning_configÚqwen_session_metadatar0   r1   c                ó   — i |rd|ifS i fS )z;Qwen metadata goes to top-level api_kwargs, not extra_body.Úmetadatar-   )r#   r0   r1   r.   s       r   Úbuild_api_kwargs_extrasz#QwenProfile.build_api_kwargs_extras<   s!   € ð Ñ:O�JÐ 5Ð6ÐWÐWÐUWÐWÐWr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r!   r   r   r   r)   r/   Útupler4   r-   r   r   r   r      s§   „ ÙXð¨¨d°3¸°8©nÑ)=ð À$ÀtÈCÐQTÈHÁ~ÑBVó ð8 <@ò 3¨c°D©jð 3ÈtÐTWÐY\ÐT\É~ó 3ð 26Ð\`òXØ#'¨$¡;ðXØNRÐUYÉkðXà	ˆt�C˜�H‰~˜t C¨ H™~Ð-Ñ	.ôX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)r8   Útypingr   Ú	providersr   Úproviders.baser   r!   r   r   r:   r-   r   r   ú<module>rF      s_   ðÙ #Ý å 'Ý *ð0˜dð 0 t¨d¡{ó 0ô$&X�/ô &XñR Ø	ÐBÐM^Ø(Ð4DÐY^ô€ñ
 �$Õ r   