
    Ti                        d dl Z d dlmZ d dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ  ed      Zdee   fdZdedee   fdZej1                  d      dee   fd       Zej1                  d      dee   fd       Zej1                  d      d        Zej1                  d      defd       Zy)    N)	APIRouter)ToolInfoJson)tool_service)config_service)
db_service)
HttpClient)	ModelInfo)List)TOOL_MAPPINGz/api)prefixreturnc                     t        j                         j                  di       j                  dt        j                  dd            } 	 t        j                  |  dd      }|j                          |j                         }|j                  dg       D cg c]  }|d	   	 c}S c c}w # t
        j                  $ r}t        d
|        g cY d }~S d }~ww xY w)NollamaurlOLLAMA_HOSThttp://localhost:11434z	/api/tags   timeoutmodelsnamezError querying Ollama: )
r   
get_configgetosgetenvrequestsraise_for_statusjsonRequestExceptionprint)base_urlresponsedatamodeles        M/home/jay/workspace/tools/ai-image-gen/jaaz-app/server/routers/root_router.pyget_ollama_model_listr'      s    ((*..x<@@ryy(@ACH<<8*I 6B!!#}}+/88Hb+AB%fBBB$$ 's+,	s1   
AB, B'$B, 'B, ,C?CCCr!   c                   K   	 t        j                  d      }t        j                  |      4 d{   }|j	                  |  d       d{   }|j
                  dk(  r{|j                         }|j	                  di       j	                  di       j	                  di       j	                  d	g g      d
   }t        |t              r|ng cddd      d{    S t        d|j
                          g cddd      d{    S 7 7 7 47 # 1 d{  7  sw Y   yxY w# t        $ r}t        d|        g cY d}~S d}~ww xY ww)z+Get ComfyUI model list from object_info APIg      $@r   Nz/api/object_info   CheckpointLoaderSimpleinputrequired	ckpt_namer   zComfyUI server returned status zError querying ComfyUI: )httpxTimeoutr   creater   status_coder   
isinstancelistr    	Exception)r!   r   clientr"   r#   r   r%   s          r&   get_comfyui_model_listr6      s5    --%$$W5 
	 
	#ZZ8*4D(EFFH##s*}}":B?CCR!!$Z!4SSrd5KAO!+FD!9vr
	 
	 
	 78L8L7MNO
	 
	 
	F
	 
	 
	 
	 
	  (,-	s   E/D& D	D& DDA<DD& DD& ED7D& DD& E	D& DD& D& D#DD#D& "E#D& &	E	/E>E	?EE		Ez/list_modelsc            	      x  K   t        j                         } g }| j                  di       j                  dt        j                  dd            }|r7|j                         r't               }|D ]  }|j                  d||dd        | j                         D ]  }|dv r| |   }|j                  dd      j                         }|j                  d	d      j                         }|r|sR|j                  d
i       }	|	D ]5  }
|	|
   }|j                  dd      }|dk(  s |j                  ||
||d       7  |S w)Nr   r   r   r   text)providerr$   r   type)r    api_keyr   r:   )	r   r   r   r   r   stripr'   appendkeys)configres
ollama_urlollama_modelsollama_modelr9   provider_configprovider_urlprovider_api_keyr   
model_namer$   
model_types                r&   
get_modelsrJ   3   sa    &&(FC Hb)--ryy(@ACJ j&&(-/) 	LJJ$%!	 	 KKM z! *&**5"5;;=*..y"=CCE #3 $$Xr2  
	J:&E662JV#

 (''&	 
	0 Js   DD:D:z/list_toolsc            
        K   t        j                         } g }t        j                  j	                         D ]  \  }}|j                  d      dk(  r|d   }| |   j                  dd      j                         }|dk7  r|sK|j                  ||j                  dd      |j                  dd      |j                  dd      d        |S w)	Nr9   systemr<   r;   comfyuir:   display_name)idr9   r:   rN   )r   r   r   toolsitemsr   r=   r>   )r@   rA   tool_id	tool_infor9   rG   s         r&   
list_toolsrT   a   s     &&(F C*00668 ==$0Z(!(+//	2>DDFy )9

!j"5MM&"-%MM."=	
 	: Js   C
Cz/list_chat_sessionsc                  F   K   t        j                          d {   S 7 wN)r   list_sessions     r&   list_chat_sessionsrZ      s     ))++++s   !!z/chat_session/{session_id}
session_idc                 H   K   t        j                  |        d {   S 7 wrV   )r   get_chat_history)r[   s    r&   get_chat_sessionr^      s     ,,Z8888s   " ")r   fastapir   r   r.   models.tool_modelr   services.tool_servicer   services.config_servicer   services.db_servicer   utils.http_clientr   models.config_modelr	   typingr
   r   routerstrr'   r6   r   r3   rJ   rT   rZ   r^   rX   rY   r&   <module>ri      s    	    * . 2 * ( )  .	&	!
tCy 
3 49 ( N*$y/ * *Z M $|,    F !", #, ()9s 9 *9rY   