
    Ti                     ^   U d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZm	Z	  G d ded      Z
 G d ded      Zeeef   Zd	d
id	d
id	d
id	d
id	d
id ej                  dd      j                  d      dz   dddi dddi ddddd	d
id	d
iddddddZeed<   ej$                  j'                  ej$                  j'                  e            Z ej                  dej$                  j-                  ed            Zej$                  j-                  ed      ZdZdZ G d d       Z e       Zy)!    N)Dict	TypedDictLiteralOptionalc                   >    e Zd ZU ed   ed<   ee   ed<   ee   ed<   y)ModelConfig)textimagevideotype	is_customis_disabledN)__name__
__module____qualname__r   __annotations__r   bool     Q/home/jay/workspace/tools/ai-image-gen/jaaz-app/server/services/config_service.pyr   r      s"    
*
++~$r   r   F)totalc                   P    e Zd ZU eed<   eed<   eed<   eeef   ed<   ee	   ed<   y)ProviderConfigurlapi_key
max_tokensmodelsr   N)
r   r   r   strr   intr   r   r   r   r   r   r   r   r      s+    	HLOk!""~r   r   r   r	   )gpt-4ogpt-4o-minizdeepseek/deepseek-chat-v3-0324zanthropic/claude-sonnet-4zanthropic/claude-3.7-sonnetBASE_API_URLhttps://jaaz.app//api/v1/ i    )r   r   r   r   zhttp://127.0.0.1:8188)r   r   r   zhttp://localhost:11434)r    r!   zhttps://api.openai.com/v1/)jaazcomfyuiollamaopenaiDEFAULT_PROVIDERS_CONFIGUSER_DATA_DIR	user_datafiles)z.pngz.jpgz.jpeg.webpz.bmpz.tiffz.tifr/   )z.mp4z.aviz.mkvz.movz.wmvz.flvc                   X    e Zd Zd ZdefdZd
dZdefdZdede	eef   fdZ
defd	Zy)ConfigServicec                     t        j                  t              | _        t	        j
                  dt        j                  j                  t        d            | _	        d| _
        y )NCONFIG_PATHzconfig.tomlF)copydeepcopyr+   
app_configosgetenvpathjoinr,   config_fileinitializedselfs    r   __init__zConfigService.__init__^   sB    %)]]3K%L99277<<}E
 !r   returnc                 R    t        j                  dd      j                  d      dz   S )zGet the correct jaaz URLr"   r#   r$   r%   )r7   r8   rstripr=   s    r   _get_jaaz_urlzConfigService._get_jaaz_urle   s$    yy);<CCCH:UUr   Nc                 6  K   	 t        j                  t         j                  j                  | j                        d       | j                         st        d| j                   d       t        | j                  d      5 }t        j                  | j                  |       d d d        t        d| j                          d| _        	 d| _        y t        j                  | j                  d      4 d {   }|j                          d {   }t        j                  |      }d d d       d {    j                         D ]  \  }}|t         vrd|d<   || j                  |<   t         j#                  |i       j#                  d	i       }|j#                  d	i       j                         D ],  \  }}|j#                  d
      dk(  s||vs |||<   d||   d<   . || j                  |   d	<    d| j                  v r | j%                         | j                  d   d<   d| _        y # 1 sw Y   xY w7 @7 +7 	# 1 d {  7  sw Y   xY w# t&        $ r,}	t        d|	        t)        j*                          Y d }	~	dd }	~	ww xY w# d| _        w xY ww)NTexist_okzConfig file not found at z , creating default configurationwzDefault config file created at rr   r   r   r	   r'   r   zError loading config: )r7   makedirsr9   dirnamer;   exists_configprintopentomldumpr6   r<   aiofilesreadloadsitemsr+   getrC   	Exception	traceback	print_exc)
r>   fcontentconfigproviderprovider_configprovider_models
model_namemodel_configes
             r   
initializezConfigService.initializei   sl    '	$KK(8(89DI %%'/0@0@/AAabd $**C0 2AIIdooq1278H8H7IJK#' 4  $D1  }}T%5%5s; 8 8q !.$(JJw$78 8 .4\\^ F)/#;;37OK0,;)":">">b#""%#h"3  0?0C0CHb0Q0W0W0Y H,J#''/69jP_>_6B
3CG
3K@	H
 7F)(3F (151C1C1E'.
  $D=2 28(8 8 8 8(  	"*1#./!!	"  $Ds   JA=I !H)"'I 
J$I 6H67I :H?H9H?(I 3H<4BI I AI !J)H3.	I 9H?<I ?IIII 	J
"J J J

J 	JJc                 v    d| j                   v r | j                         | j                   d   d<   | j                   S )Nr'   r   )r6   rC   r=   s    r   
get_configzConfigService.get_config   s4    T__$-1-?-?-ADOOF#E*r   datac                   K   	 d|v r| j                         |d   d<   t        j                  t        j                  j	                  | j
                        d       t        | j
                  d      5 }t        j                  ||       d d d        || _	        dddS # 1 sw Y   xY w# t        $ r,}t        j                          d	t        |      dcY d }~S d }~ww xY ww)
Nr'   r   TrE   rG   successz"Configuration updated successfully)statusmessageerror)rC   r7   rI   r9   rJ   r;   rM   rN   rO   r6   rU   rV   rW   r   )r>   rd   rX   r`   s       r   update_configzConfigService.update_config   s     	:~&*&8&8&:VU#KK(8(89DId&&, #		$"#"DO $? 	# #  	:!%#a&99	:sM   C!A.B) 2B	B) C!B&"B) )	C2!CCC!CC!c                 T    t         j                  j                  | j                        S )N)r7   r9   existsr;   r=   s    r   rK   zConfigService.exists_config   s    ww~~d..//r   )r@   N)r   r   r   r?   r   rC   ra   	AppConfigrc   r   rj   r   rK   r   r   r   r1   r1   ]   sN    !Vs V($TI 
:	 :d38n :$0t 0r   r1   )r4   r7   rV   rP   rN   typingr   r   r   r   r   r   r   rm   r8   rB   r+   r   r9   rJ   __file__
SERVER_DIRr:   r,   	FILES_DIRIMAGE_FORMATSVIDEO_FORMATSr1   config_servicer   r   r   <module>ru      s~    	    5 5
 )5  Ye  n$%	 v&"F+/5v.>*0&)9,2F+;
 ryy);<CCCH:U & '	 v&"F+
 ,3#' ) #J WW__RWW__X67
		GGLL[) GGLL0		N0 N0b r   