
    Ti*              	          U 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 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  d dl!m"Z" d dl#m$Z$ d dl%m&Z&m'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7 i dddd ed!d"d#dd ed!d$d%dd e+d!d&d'dd ed!d(d)dd ed!d*d+dd ed!d,d-dd e3d!d.d/dd ed!d0d1dd2ed!d3d4dd2e d!d5d6d7d e"d!d8d9d7d e/d!d:d;d7d e)d!d<d=d7d2e$d!d>d?d7d2e&d!d@dAd7d2e'd!dBdCd7d e1d!d#ddDed!d%ddDe-d!d)ddDed!d+ddDed!dEZ8ee9ef   e:dF<    G dG dH      Z; e;       Z<dIee9ef   fdJZ=y)K    N)Dict)BaseTool)ToolInfo)
build_tool)write_plan_tool)"generate_image_by_gpt_image_1_jaaz)generate_image_by_imagen_4_jaaz)$generate_image_by_imagen_4_replicate)$generate_image_by_ideogram3_bal_jaaz)'generate_image_by_flux_kontext_pro_jaaz),generate_image_by_flux_kontext_pro_replicate)"generate_image_by_flux_kontext_max),generate_image_by_flux_kontext_max_replicate)(generate_image_by_doubao_seedream_3_jaaz)*generate_image_by_doubao_seedream_3_volces)&edit_image_by_doubao_seededit_3_volces)"generate_video_by_seedance_v1_jaaz)(generate_video_by_seedance_v1_pro_volces)&generate_video_by_seedance_v1_lite_t2v&generate_video_by_seedance_v1_lite_i2v)generate_video_by_kling_v2_jaaz)!generate_image_by_recraft_v3_jaaz)&generate_image_by_recraft_v3_replicate) generate_video_by_hailuo_02_jaaz) generate_video_by_veo3_fast_jaaz)!generate_image_by_midjourney_jaaz)config_service)
db_servicer   zGPT Image 1imagejaaz)display_nametypeprovidertool_functionr	   zImagen 4r   z
Recraft v3r   zIdeogram 3 Balancedr   zFlux Kontext Pro'generate_image_by_flux_kontext_max_jaazzFlux Kontext Maxr   
Midjourneyr   zDoubao Seedream 3r   zDoubao Seedream 3 by volcesvolcesr   zDoubao Seededit 3 by volcesr   zDoubao Seedance v1videor   z	Hailuo 02r   zKling v2.1 Standardr   zDoubao Seedance v1 by volces-generate_video_by_seedance_v1_lite_volces_t2vz&Doubao Seedance v1 lite(text-to-video)-generate_video_by_seedance_v1_lite_i2v_volcesz(Doubao Seedance v1 lite(images-to-video)r   z	Veo3 Fast	replicate)r
   r   r   r   TOOL_MAPPINGc                   l    e Zd Zd Zd ZdedefdZd Zdede	d	z  fd
Z
defdZdeeef   fdZd Zy	)ToolServicec                 2    i | _         | j                          y N)tools_register_required_toolsselfs    O/home/jay/workspace/tools/ai-image-gen/jaaz-app/server/services/tool_service.py__init__zToolService.__init__   s    *,
%%'    c                 z    	 dt         d| j                  d<   y# t        $ r}t        d|        Y d}~yd}~ww xY w)u   注册必须的工具system)r#   r$   
write_planu)   ❌ 注册必须工具失败 write_plan: N)r   r1   ImportErrorprint)r4   es     r5   r2   z$ToolService._register_required_tools   sE    	C$!0(DJJ|$  	C=aSABB	Cs    	:5:tool_id	tool_infoc                 \    || j                   v rt        d|        y|| j                   |<   y)u   注册单个工具u   🔄 TOOL ALREADY REGISTERED: N)r1   r<   )r4   r>   r?   s      r5   register_toolzToolService.register_tool   s/    djj 27)<='

7r7   c                    K   | j                          	 t        j                  j                         D ][  \  }}|j	                  dd      st
        j                         D ],  \  }}|j	                  d      |k(  s| j                  ||       . ] t        j                  j	                  di       j	                  dd      rt                d {    y y 7 # t        $ r,}t        d|        t        j                          Y d }~y d }~ww xY ww)Napi_key r#   comfyuiurlu'   ❌ Failed to initialize tool service: )clear_toolsr   
app_configitemsgetr,   rA   register_comfy_tools	Exceptionr<   	tracebackprint_stack)r4   provider_nameprovider_configr>   r?   r=   s         r5   
initializezToolService.initialize   s     	$2@2K2K2Q2Q2S C."&&y"5.:.@.@.B C*$==4E ..w	BCC ((,,Y;??rJ*,,, K, 	$;A3?@!!##	$sM   D6C .C :AC CC DC 	D"DDDD	tool_namereturnNc                 b    | j                   j                  |      }|r|j                  d      S d S )Nr$   )r1   rJ   )r4   rR   r?   s      r5   get_toolzToolService.get_tool   s*    JJNN9-	1:y}}_-DDr7   c                 :    | j                   j                  |       y r0   )r1   pop)r4   r>   s     r5   remove_toolzToolService.remove_tool   s    

wr7   c                 6    | j                   j                         S r0   )r1   copyr3   s    r5   get_all_toolszToolService.get_all_tools   s    zz  r7   c                 X    | j                   j                          | j                          y r0   )r1   clearr2   r3   s    r5   rG   zToolService.clear_tools   s    

%%'r7   )__name__
__module____qualname__r6   r2   strr   rA   rQ   r   rU   rX   r   r[   rG    r7   r5   r.   r.      se    (C(S (X ($ E# E(T/ E 3  !tCM2 !(r7   r.   rS   c            	        K   i } 	 t        j                          d{   }|D ]9  }	 t        |      }d|d    }|| |<   t        j                  |d||d   dd       ; | S 7 D# t        $ r,}t        d|       t	        j
                          i cY d}~S d}~ww xY w# t        $ rG}t        d|j                  d	       d
|        t        t	        j
                                Y d}~d}~ww xY ww)zf
    Fetch all workflows from DB and build tool callables.
    Run inside the current event loop.
    Nz/[comfy_dynamic] Failed to list comfy workflows:comfyui_namerE   r   )r#   r$   r!   r"   z3[comfy_dynamic] Failed to create tool for workflow idz: )
r   list_comfy_workflowsrL   r<   rM   rN   r   tool_servicerA   rJ   )dynamic_comfy_tools	workflowsexcwftool_fnunique_names         r5   rK   rK      s    
 02$99;;	  +	+ nG$RZL1K/6,&& )%,$&vJ#	+, 9 < ?E	*  	+EbffTl^SUVYUZ[ )'')**		+sl   C/A$ A"A$ C/6BC/"A$ $	B-!BBC/BC/	C,%=C'"C/'C,,C/)>rM   typingr   langchain_core.toolsr   models.tool_modelr   tools.comfy_dynamicr   tools.write_planr   (tools.generate_image_by_gpt_image_1_jaazr   %tools.generate_image_by_imagen_4_jaazr	   *tools.generate_image_by_imagen_4_replicater
   *tools.generate_image_by_ideogram3_bal_jaazr   -tools.generate_image_by_flux_kontext_pro_jaazr   2tools.generate_image_by_flux_kontext_pro_replicater   -tools.generate_image_by_flux_kontext_max_jaazr   2tools.generate_image_by_flux_kontext_max_replicater   .tools.generate_image_by_doubao_seedream_3_jaazr   0tools.generate_image_by_doubao_seedream_3_volcesr   0tools.generate_image_by_doubao_seededit_3_volcesr   (tools.generate_video_by_seedance_v1_jaazr   .tools.generate_video_by_seedance_v1_pro_volcesr   /tools.generate_video_by_seedance_v1_lite_volcesr   r   %tools.generate_video_by_kling_v2_jaazr   'tools.generate_image_by_recraft_v3_jaazr   ,tools.generate_image_by_recraft_v3_replicater   &tools.generate_video_by_hailuo_02_jaazr   &tools.generate_video_by_veo3_fast_jaazr   'tools.generate_image_by_midjourney_jaazr   services.config_servicer   services.db_servicer   r,   ra   __annotations__r.   rh   rK   rb   r7   r5   <module>r      s     ) & * , W Q
 X R U T S U 2 *H%(%;	+H% &"8	(H% ($:	*H%& +-=	-'H%> .*@	0?H%J .*;	0KH%V ($:	*WH%b /+A	1cH%n 15C	3oH%z -5?	/{H%F ),;	+GH%R '#9	)SH%^ &-8	(_H%j /6A	1kH%v 4@?	6wH%B 4B?	6CH%N '#9	)OH%b #=	- %?	/ +E	5 +E	5EH%d3=! HV5( 5(p }#Dh$7 #r7   