§
   bÇº�ã                   ór   — d Z ddlZddlZddddddœZd	Zd
Zdd„Zd„ Zd„ Zd„ Z	dd„Z
dd„Zd„ Zdd„Zdd„ZdS )uP  AI provider accounts: the one place that knows the providers, their stored API keys and the status line in the settings.

Whoever stores or deletes a key (login dialog, settings buttons) calls sync_status, so the "Stav pÅ™ihlÃ¡Å¡enÃ­" row of the
settings always follows the stored keys, whichever part of the addon asked for the login.
é    N)ÚOpenAIÚOpenAIClient)Ú	AnthropicÚAnthropicClient)z	Google AIÚGoogleClient)z
Mistral AIÚMistralClient)ÚGroqÚ
GroqClient)ÚopenaiÚ	anthropicÚgoogleÚmistralÚgroqr   u   NepÅ™ihlÃ¡Å¡enc                 óÖ   ‡— | p.|pt          j        ¦   «                              d¦  «        pt                               ¦   «         Št          ˆfd„t          D ¦   «         t          ¦  «        S )zgProvider id from an explicit value or the ai_provider setting; unknown values fall back to the default.Úai_providerc              3   ó$   •K  — | ]
}|‰v ¯|V — Œd S ©N© )Ú.0ÚknownÚvalues     €ú]/Users/chudy/Library/Application Support/Kodi/addons/plugin.video.milionar/wcs/ai/accounts.pyú	<genexpr>zresolve.<locals>.<genexpr>   s'   øè è € Ð@Ð@˜5°¸%°°�°°°°Ð@Ð@ó    )Ú	xbmcaddonÚAddonÚ
getSettingÚDEFAULT_PROVIDERÚlowerÚnextÚ	PROVIDERS)ÚproviderÚaddonr   s     @r   Úresolver$      s`   ø€ àÐc˜%Ð4¥9¤?Ñ#4Ô#4×@Ò@ÀÑOÔOÐcÕSc×jÒjÑlÔl€EÝÐ@Ð@Ð@Ð@¥IÐ@Ñ@Ô@ÕBRÑSÔSÐSr   c                 ó(   — t           |          d         S )Nr   )r!   ©r"   s    r   Únamer'      s   € Ý�XÔ˜qÔ!Ð!r   c                 ó   — | › d�S )NÚ_api_keyr   r&   s    r   Úkey_settingr*   !   s   € ØÐ Ð Ð Ð r   c                 ó   — | › d�S )NÚ_statusr   r&   s    r   Ústatus_settingr-   %   s   € ØÐÐÐÐr   c                 ól   — |pt          j        ¦   «                              t          | ¦  «        ¦  «        S r   )r   r   r   r*   ©r"   r#   s     r   Úget_keyr0   )   s+   € ØÐ&•Y”_Ñ&Ô&×2Ò2µ;¸xÑ3HÔ3HÑIÔIÐIr   c                 ó<   — t          t          | |¦  «        ¦  «        S r   )Úboolr0   r/   s     r   Úhas_keyr3   -   s   € Ý•˜ %Ñ(Ô(Ñ)Ô)Ð)r   c                 óz   — t          j        dt          |          d         › �¦  «        }|                     ¦   «         S )z/Asks the provider whether the stored key works.zwcs.ai.é   )Ú	importlibÚimport_moduler!   Úvalidate_api_key)r"   Úmodules     r   Úvalidater:   1   s7   € åÔ$Ð%G­y¸Ô/BÀ1Ô/EÐ%GÐ%GÑHÔH€FØ×"Ò"Ñ$Ô$Ð$r   c                 ó(  — | pt          j        ¦   «         } t          D ]t}t          || ¦  «        rdt	          |¦  «        › �nt
          }|                      t          |¦  «        ¦  «        |k    r#|                      t          |¦  «        |¦  «         ŒudS )zYWrites the status row of every provider from its stored key (only the rows that changed).u   PÅ™ihlÃ¡Å¡en k N)	r   r   r!   r3   r'   Ú
LOGGED_OUTr   r-   Ú
setSetting)r#   r"   Ústatuss      r   Úsync_statusr?   7   s–   € àÐ&•Y”_Ñ&Ô&€EÝð ?ð ?ˆÝ7>¸xÈÑ7OÔ7OÐ_Ð3¥4¨¡>¤>Ð3Ð3Ð3ÕU_ˆØ×Ò�N¨8Ñ4Ô4Ñ5Ô5¸Ò?Ð?Ø×Ò�^¨HÑ5Ô5°vÑ>Ô>Ð>øð?ð ?r   c                 ó”   — |pt          j        ¦   «         }|                     t          | ¦  «        d¦  «         t	          |¦  «         d S )NÚ )r   r   r=   r*   r?   r/   s     r   Úlog_outrB   @   sF   € ØÐ&•Y”_Ñ&Ô&€EØ	×Ò•[ Ñ*Ô*¨BÑ/Ô/Ð/Ý�ÑÔÐÐÐr   )NNr   )Ú__doc__r6   r   r!   r   r<   r$   r'   r*   r-   r0   r3   r:   r?   rB   r   r   r   ú<module>rD      s  ððð ð
 Ð Ð Ð à Ð Ð Ð ð )Ø1Ø+Ø.Ø"ðð €	ð Ð Ø€
ðTð Tð Tð Tð"ð "ð "ð!ð !ð !ð ð  ð  ðJð Jð Jð Jð*ð *ð *ð *ð%ð %ð %ð?ð ?ð ?ð ?ðð ð ð ð ð r   