Ë
    âß²j�  ã                  ó¸   — d Z ddlmZ ddlZddlZddlmZmZmZm	Z	 ddl
mZmZ ddlmZmZ  ej                   e«      ZdZ G d„ d	e«      Zdd
„ZddlZddiZd„ Zy)a
  FAL.ai registration adapter. Catalog, payload, submission, managed-gateway selection and
Clarity Upscaler chaining live in :mod:`tools.image_generation_tool`; this plugin imports it at
call time so tests keep patching ``image_tool.*`` and there is one FAL code path.é    )ÚannotationsN)ÚAnyÚDictÚListÚOptional)ÚDEFAULT_ASPECT_RATIOÚresolve_aspect_ratio)ÚStaticImageGenProviderÚcatalog_rows)Únum_inference_stepsÚguidance_scaleÚ
num_imagesÚoutput_formatÚseedÚupscalec                  ó~   — e Zd ZdZdZdZ edddddd¬	«      Zdd
„Zdd„Z	dd„Z
dd„Zefdddœ	 	 	 	 	 	 	 	 	 	 	 dd„Zy)ÚFalImageGenProviderzJFAL.ai backend delegating to ``tools.image_generation_tool`` at call time.ÚfalzFAL.aiÚpaiduu   Pick from flux-2-klein, flux-2-pro, gpt-image, nano-banana-2, nano-banana-pro, etc. â€” text-to-image & image editingÚFAL_KEYzFAL API keyzhttps://fal.ai/dashboard/keys)ÚnameÚbadgeÚtagÚkeyÚpromptÚurlc                ó`   — dd l m} 	 t        |j                  «       «      S # t        $ r Y yw xY w)Nr   F)Útools.image_generation_toolÚimage_generation_toolÚboolÚcheck_fal_api_keyÚ	Exception)ÚselfÚ_its     úC/home/ubuntu/.hermes/hermes-agent/plugins/image_gen/fal/__init__.pyÚis_availablez FalImageGenProvider.is_available   s0   € å1ð	Ü˜×-Ñ-Ó/Ó0Ð0øÜò 	Ùð	ús   ˆ! ¡	-¬-c                ó$   — ddl m} t        |«      S )Nr   )Ú
FAL_MODELS)Útools.image_generation_catalogr(   r   )r#   r(   s     r%   Úlist_modelszFalImageGenProvider.list_models(   s   € Ý=Ü˜JÓ'Ð'ó    c                ó   — ddl m} |S )Nr   )ÚDEFAULT_MODEL)r)   r-   )r#   r-   s     r%   Údefault_modelz!FalImageGenProvider.default_model,   s   € Ý@ØÐr+   c                óØ   — dd l m} 	 |j                  «       \  }}|j	                  d«      r$ddgt        |j	                  d«      xs d«      dd	œS dgddd	œS # t        $ r	 dgddœcY S w xY w)
Nr   Útext)Ú
modalitiesÚmax_reference_imagesÚedit_endpointÚimager2   é   T)r1   r2   Úsupports_upscale)r   r   Ú_resolve_fal_modelr"   ÚgetÚint)r#   r$   Ú	_model_idÚmetas       r%   Úcapabilitiesz FalImageGenProvider.capabilities0   sŠ   € å1ð	GØ!×4Ñ4Ó6‰OˆI�tð �8‰8�OÔ$à% wÐ/Ü(+¨D¯H©HÐ5KÓ,LÒ,QÐPQÓ(RØ$(ñð ð
  &˜hÀÐW[Ñ\Ð\øô ò 	GØ#) (ÀAÑFÒFð	Gús   ˆA ÁA)Á(A)N)Ú	image_urlÚreference_image_urlsc          	     óÖ  — ddl m} t        |«      }t        D �ci c]  }|j	                  |«      €Œ|||   “Œ }	}|�||	d<   |�||	d<   	  |j
                  d||dœ|	¤Ž}
	 t        |
t        «      rt        j                  |
«      n|
}t        |t        «      sd	ddddœ}|j!                  dd«       |j!                  d|«       |j!                  d|«       d|vr	 |j#                  «       d   |d<   |S |S c c}w # t        $ rB}t        j                  d|d¬«       d	dd
|› �t        |«      j                  d||dœcY d}~S d}~ww xY w# t        $ r	 d	dddœ}Y ŒÐw xY w# t        $ r Y |S w xY w)zZForward to ``image_generate_tool`` and reshape its JSON-string response into the ABC dict.r   Nr=   r>   )r   Úaspect_ratioz"FAL image_generate_tool raised: %sT)Úexc_infoFzFAL image generation failed: r   )Úsuccessr4   ÚerrorÚ
error_typeÚproviderr   r@   zInvalid JSON from FAL pipeline)rB   r4   rC   z)FAL pipeline returned a non-dict responseÚprovider_contract)rB   r4   rC   rD   rE   r   r@   Úmodel© )r   r   r	   Ú_PASSTHROUGH_KWARGSr8   Úimage_generate_toolr"   ÚloggerÚwarningÚtypeÚ__name__Ú
isinstanceÚstrÚjsonÚloadsÚdictÚ
setdefaultr7   )r#   r   r@   r=   r>   Úkwargsr$   Úaspectr   ÚpassthroughÚrawÚexcÚresponses                r%   ÚgeneratezFalImageGenProvider.generate@   s®  € õ 	2ä% lÓ3ˆÜ3FÖf¨CÈ&Ï*É*ÐUXË/ÑJe�s˜F 3™KÑ'ÐfˆÐfàÐ Ø'0ˆK˜Ñ$ØÐ+Ø2FˆKÐ.Ñ/ð	Ø)�#×)Ñ)Ð\°ÀfÑ\ÐP[Ñ\ˆCð	dÜ*4°S¼#Ô*>”t—z‘z #”ÀCˆHô ˜(¤DÔ)à ¨4Ð:eØ1ñˆHð
 	×Ñ˜J¨Ô.Ø×Ñ˜H fÔ-Ø×Ñ˜N¨FÔ3Ø˜(Ñ"ðØ$'×$:Ñ$:Ó$<¸QÑ$?�˜Ñ!ð ˆˆxˆùòG gøô ò 	Ü�N‰NÐ?ÀÈtˆNÔTà ¨4Ð<YÐZ]ÐY^Ð:_Ü" 3›i×0Ñ0¸eÈvÐgmñõ ûð	ûô ò 	dØ#(°4ÐBbÑcŠHð	dûô ò ØØˆðúsL   šC3±C3Á
C8 Á 'E ÃE Ã8	EÄ7D>Ä8EÄ>EÅEÅEÅ	E(Å'E()Úreturnr    )r\   zList[Dict[str, Any]])r\   úOptional[str])r\   úDict[str, Any])r   rP   r@   rP   r=   r]   r>   zOptional[List[str]]rU   r   r\   r^   )rN   Ú
__module__Ú__qualname__Ú__doc__Úprovider_idÚlabelrS   Úsetupr&   r*   r.   r<   r   r[   rH   r+   r%   r   r      sŒ   „ ÙTà€KØ€EÙØ˜Vð DØ˜mÐ1PôR€Eó
ó(óó]ð" 0Dð,à#'ÐUYñ,Øð,Ø),ð,à ð,à?Rð,ð ð,ð 
ô	,r+   r   c                ó6   — | j                  t        «       «       y)uF   Plugin entry point â€” wire ``FalImageGenProvider`` into the registry.N)Úregister_image_gen_providerr   )Úctxs    r%   Úregisterrh   o   s   € à×#Ñ#Ô$7Ó$9Õ:r+   ÚImageGenProvider)zagent.image_gen_providerri   c                óÌ   — t         j                  | «      }|€t        dt        ›d| ›�«      ‚dd l}ddlm}  |t        | g|¢­Ž  t        |j                  |d   «      |d   «      S )Nzmodule z has no attribute r   )Ú	warn_oncer5   )	Ú_PLUGIN_COMPAT_LAZYr8   ÚAttributeErrorrN   Ú	importlibÚhermes_cli.plugin_compatrk   ÚgetattrÚimport_module)r   Útargetrn   rk   s       r%   Ú__getattr__rs   €   se   € Ü ×$Ñ$ TÓ*€FØ€~Ü˜w¤x lÐ2DÀTÀHÐMÓNÐNÛÝ2ÙŒh˜Ð&˜vÓ&Ü�9×*Ñ*¨6°!©9Ó5°v¸a±yÓAÐAr+   )r\   ÚNone)ra   Ú
__future__r   rQ   ÚloggingÚtypingr   r   r   r   Úagent.image_gen_providerr   r	   Úplugins.image_gen._commonr
   r   Ú	getLoggerrN   rK   rI   r   rh   Úosrl   rs   rH   r+   r%   ú<module>r|      sl   ðñUõ #ã Û ß ,Ó ,ç Oß Jà	ˆ×	Ñ	˜8Ó	$€ðÐ ô
WÐ0ô Wót;ó 
ð ÐHðÐ ó
Br+   