§
    	ÊjÌ  ã                  óä  — d Z ddlmZ ddlZddlmZmZ ddlmZm	Z	 ddl
mZmZ ddlmZmZ dd	lmZ dd
lmZ e	egdf         Z	 e G d„ d¦  «        ¦   «         Ze G d„ d¦  «        ¦   «         Ze G d„ d¦  «        ¦   «         Ze G d„ d¦  «        ¦   «         Ze G d„ d¦  «        ¦   «         Ze G d„ d¦  «        ¦   «         Z ed¬¦  «         G d„ d¦  «        ¦   «         Z G d„ de¦  «        ZdS )aa  Driver interface: the only layer that knows how to talk to muse.ai.

A driver turns normalised requests into upstream actions for one account at a
time. Scheduling, retries, persistence and the OpenAI wire format all live
above this layer, so a new transport (browser automation, direct HTTP/WebSocket
protocol, ...) only needs to implement this class.
é    )ÚannotationsN)ÚABCÚabstractmethod)ÚAsyncIteratorÚCallable)Ú	dataclassÚfield)ÚAnyÚLiteralé   )ÚAccount)ÚFeatureNotImplementedc                  ó(   — e Zd ZU ded<   dZded<   dS )Ú
InputImageÚbytesÚdataz	image/pngÚstrÚmimeN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   © ó    ú1C:\Projects\Muse2API\src\muse2api\drivers\base.pyr   r      s,   € € € € € € à€K€K�KØ€DÐÐÐÑÐÐr   r   c                  ó¢   — e Zd ZU ded<   ded<    ee¬¦  «        Zded<   dZded	<   d
Zded<   dZ	ded<    ee¬¦  «        Z
ded<   	 dZded<   dS )ÚChatRequestr   ÚpromptÚmodel©Údefault_factoryúlist[InputImage]Úimagesg     Àr@ÚfloatÚtimeoutg     €F@Úfirst_token_timeoutNú
str | NoneÚconversation_hintzlist[tuple[str, str]]Úturnsúasyncio.Event | NoneÚcancel)r   r   r   r   r	   Úlistr#   r%   r&   r(   r)   r+   r   r   r   r   r      s©   € € € € € € à€K€K�KØ€J€J�JØ$˜u°TÐ:Ñ:Ô:€FÐ:Ð:Ð:Ñ:Ø€GÐÐÐÑØ!%ÐÐ%Ð%Ð%Ñ%Ø$(ÐÐ(Ð(Ð(Ñ(Ø#( 5¸Ð#>Ñ#>Ô#>€EÐ>Ð>Ð>Ñ>ØcØ#'€FÐ'Ð'Ð'Ñ'Ð'Ð'r   r   c                  óŽ   — e Zd ZU ded<   ded<   dZded<   	 dZded	<    ee¬
¦  «        Zded<   dZ	ded<   dZ
ded<   dZded<   dS )ÚImageRequestr   r   r   Nr'   Úsizeé   ÚintÚnr    r"   Úreference_imagesg      n@r$   r%   úProgressCallback | NoneÚon_progressr*   r+   )r   r   r   r   r/   r2   r	   r,   r3   r%   r5   r+   r   r   r   r.   r.   +   s—   € € € € € € à€K€K�KØ€J€J�JØ€DÐÐÐÑØWØ€A€J€J€J�JØ).¨¸tÐ)DÑ)DÔ)DÐÐDÐDÐDÑDØ€GÐÐÐÑØ+/€KÐ/Ð/Ð/Ñ/Ø#'€FÐ'Ð'Ð'Ñ'Ð'Ð'r   r.   c                  óx   — e Zd ZU ded<   ded<   dZded<   dZded<   dZd	ed
<   dZded<   dZded<   dZ	ded<   dS )ÚVideoRequestr   r   r   Nr'   r/   ú
int | NoneÚdurationzInputImage | NoneÚfirst_frameg     À‚@r$   r%   r4   r5   r*   r+   )
r   r   r   r   r/   r9   r:   r%   r5   r+   r   r   r   r7   r7   8   sŠ   € € € € € € à€K€K�KØ€J€J�JØ€DÐÐÐÑØ€HÐÐÐÑØ%)€KÐ)Ð)Ð)Ñ)Ø€GÐÐÐÑØ+/€KÐ/Ð/Ð/Ñ/Ø#'€FÐ'Ð'Ð'Ñ'Ð'Ð'r   r7   c                  óX   — e Zd ZU ded<   ded<   ded<   dZded	<   dZded
<   dZded<   dS )ÚMediaResultr   r   r   r   zLiteral['image', 'video']ÚkindNr8   ÚwidthÚheightr'   Úrevised_prompt)r   r   r   r   r>   r?   r@   r   r   r   r<   r<   D   sc   € € € € € € à€K€K�KØ€I€I�IØ#Ð#Ð#Ñ#Ø€EÐÐÐÑØ€FÐÐÐÑØ!%€NÐ%Ð%Ð%Ñ%Ð%Ð%r   r<   c                  ó€   — e Zd ZU ded<    ee¬¦  «        Zded<    ee¬¦  «        Zded<    ee¬¦  «        Zded	<   d
S )ÚSessionInfoÚboolÚokr    zdict[str, str]Úcookieszdict[str, int]Úcookie_expiresúdict[str, Any]ÚmetaN)	r   r   r   r   r	   ÚdictrE   rF   rH   r   r   r   rB   rB   N   su   € € € € € € à€H€H�HØ#˜e°DÐ9Ñ9Ô9€GÐ9Ð9Ð9Ñ9Ø%* U¸4Ð%@Ñ%@Ô%@€NÐ@Ð@Ð@Ñ@Ø ˜5°Ð6Ñ6Ô6€DÐ6Ð6Ð6Ñ6Ð6Ð6r   rB   T)Úfrozenc                  ór   — e Zd ZU dZded<   dZded<   dZded<   dZded<   dZded<   dZ	ded<   dZ
ded	<   d
S )ÚDriverCapabilitiesFrC   ÚchatÚchat_imagesÚimageÚ
image_editÚvideoÚrenew_sessionÚquotaN)r   r   r   rM   r   rN   rO   rP   rQ   rR   rS   r   r   r   rL   rL   V   s‰   € € € € € € à€DÐÐÐÑØ€KÐÐÐÑØ€EÐÐÐÑØ€JÐÐÐÑØ€EÐÐÐÑØ€MÐÐÐÑØ€EÐÐÐÑÐÐr   rL   c                  óš   — e Zd ZU dZded<   dZded<    e¦   «         Zded<   dd„Zdd„Z	d d„Z
ed!d„¦   «         Zd"d„Zd#d„Zd$d„Zd%d„ZdS )&Ú
MuseDriverÚbaser   ÚnameTrC   Úrequires_accountrL   ÚcapabilitiesÚreturnÚNonec              ƒ  ó
   K  — dS )zAAcquire long-lived resources (browser process, HTTP client, ...).Nr   ©Úselfs    r   ÚstartupzMuseDriver.startupf   ó
   è è € € € r   c              ƒ  ó
   K  — dS )z*Release resources acquired in ``startup``.Nr   r]   s    r   ÚshutdownzMuseDriver.shutdowni   r`   r   rG   c              ƒ  ó   K  — | j         ddœS )NT)ÚdriverrD   )rW   r]   s    r   ÚhealthzMuseDriver.healthl   s   è è € Øœ)¨4Ð0Ð0Ð0r   Úaccountr   Úreqr   úAsyncIterator[str]c                ó   — dS )zBYield assistant text deltas. Implementations are async generators.Nr   ©r^   rf   rg   s      r   Úchat_streamzMuseDriver.chat_streamo   s   € € € r   r.   úlist[MediaResult]c              ƒ  ó6   K  — t          d| j        › d�¦  «        ‚)Núdriver 'z#' does not support image generation©r   rW   rj   s      r   Úgenerate_imagezMuseDriver.generate_images   ó"   è è € Ý#Ð$]¨t¬yÐ$]Ð$]Ð$]Ñ^Ô^Ð^r   r7   r<   c              ƒ  ó6   K  — t          d| j        › d�¦  «        ‚)Nrn   z#' does not support video generationro   rj   s      r   Úgenerate_videozMuseDriver.generate_videov   rq   r   rB   c              ƒ  ó6   K  — t          d| j        › d�¦  «        ‚)Nrn   z"' does not support session renewalro   ©r^   rf   s     r   rR   zMuseDriver.renew_sessiony   s"   è è € Ý#Ð$\¨t¬yÐ$\Ð$\Ð$\Ñ]Ô]Ð]r   c              ƒ  ó6   K  — t          d| j        › d�¦  «        ‚)Nrn   z' does not support quota lookupro   ru   s     r   rS   zMuseDriver.quota|   s"   è è € Ý#Ð$Y¨t¬yÐ$YÐ$YÐ$YÑZÔZÐZr   N)rZ   r[   )rZ   rG   )rf   r   rg   r   rZ   rh   )rf   r   rg   r.   rZ   rl   )rf   r   rg   r7   rZ   r<   )rf   r   rZ   rB   )rf   r   rZ   rG   )r   r   r   rW   r   rX   rL   rY   r_   rb   re   r   rk   rp   rs   rR   rS   r   r   r   rU   rU   a   s  € € € € € € Ø€DÐÐÐÑØ!ÐÐ!Ð!Ð!Ñ!Ø'9Ð'9Ñ';Ô';€LÐ;Ð;Ð;Ñ;ðPð Pð Pð Pð9ð 9ð 9ð 9ð1ð 1ð 1ð 1ð ðQð Qð Qñ „^ðQð_ð _ð _ð _ð_ð _ð _ð _ð^ð ^ð ^ð ^ð[ð [ð [ð [ð [ð [r   rU   )Ú__doc__Ú
__future__r   ÚasyncioÚabcr   r   Úcollections.abcr   r   Údataclassesr   r	   Útypingr
   r   Úaccounts.modelr   Úerrorsr   r1   ÚProgressCallbackr   r   r.   r7   r<   rB   rL   rU   r   r   r   ú<module>r�      s|  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ð Ð à $Ð $Ð $Ð $Ð $Ð $Ø *Ð *Ð *Ð *Ð *Ð *à˜S˜E 4˜KÔ(Ð Ø )ð ðð ð ð ð ñ ô ñ „ðð
 ð	(ð 	(ð 	(ð 	(ð 	(ñ 	(ô 	(ñ „ð	(ð ð	(ð 	(ð 	(ð 	(ð 	(ñ 	(ô 	(ñ „ð	(ð ð(ð (ð (ð (ð (ñ (ô (ñ „ð(ð ð&ð &ð &ð &ð &ñ &ô &ñ „ð&ð ð7ð 7ð 7ð 7ð 7ñ 7ô 7ñ „ð7ð €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð[ð [ð [ð [ð [�ñ [ô [ð [ð [ð [r   