Ë
    ãß²jN  ã                   óL  — U d Z ddlmZmZmZ ddddœZddd	dœZeed
œZdddddddœdedededededeeeef      deeef   de	dee   dee	   dee
   dee   deeef   fd„Z eddddd d!d"d#œh d$£d%h d&£d'¬(«	       ed)d*d+d,d-d.d/d!d"d0d1d2œh d3£d4h d5£d'¬(«	       ed6d7d8d9d:d/d!d"d"d;œh d<£¬=«       ed>d?d@dAdBd/d!d0dCdDœh dE£dFh dG£dH¬I«
       edJdKdLdMdBd/d!dNdCd1dOœh dP£dQh dR£dS¬I«
       edTdUdVdWdXdYdZd[dœd\d/d!d]œh d^£d_h d`£da¬b«       edcdddedfddgddhdœd\d/d!d]œh di£djh dk£da¬b«      dlœdmD � ��ci c]>  \  } }}dn| › do� edp| j                  «       › �||dqdgddhdœd\d/d!d]œh dr£dn| › ds�h dt£da¬u«
      “Œ@ c}}} ¥i dv edwdxdydzd{d1d|d}œh d~£dh d€£d/¬(«	      “d� ed‚d?dƒd„d…d"ih d†£¬=«      “d‡ edˆd‰dŠd‹dŒd�d/d!dŽd�œh d�£d‘h d’£d“¬(«	      “d” ed•d–d—d˜dBd™d\ih dš£¬›«      “dœ ed�dždŸd dBd™d\ih dš£¬›«      “d¡ ed¢d£d¤d¥dd¦d§d¨œd©d©d¨œd§d¦d¨œdœd/d!d"dªœh d«£d¬h d­£d®¬b«      “d¯ ed°dxd±d²d/d"d³œh d´£¬=«      “dµ ed¶dd·d¸d¹d!d"dºœh d»£¬=«      “d¼ ed½d¾d¿dÀd¹d{dÁœh dÂ£¬=«      “dÃ edÄd?dÅdÆd/d!d"d"dÇœh dÈ£dÉh dÊ£d“¬(«	      “dË edÌd£dÍdÎdBd/d!dÏœh dÐ£¬›«      “dÑ edÒdÓdÔdÕdBd/d!d0dÖœh d×£dØh dÙ£d ¬I«
      “dÚ edÛd?dÜd²d…d"ih d†£¬=«      “dÝ edÞdxdßdàdBd/d!dád\dâœh dã£däh då£d“¬I«
      “dæ edçd£dèdédBd/d!dêdëœh dì£díh dî£d/dï¬ð«      “dñ edòdxdódôdBd/d!dÏœh dÐ£dõh dö£d®¬I«
      “¥Zeeeeef   f   ed÷<   døZdùZdZdúZdHZd"ZdûZdüZdýZdþZd ZdÿZyc c}}} w (   uj  FAL image model catalog + upscaler constants for ``tools.image_generation_tool``.

Each entry translates the unified inputs (prompt + aspect_ratio) into the model's native
payload. ``size_style``: ``"image_size_preset"`` (FAL preset enum), ``"aspect_ratio"`` (ratio
enum), ``"gpt_literal"`` (literal "WxH"). ``supports`` / ``edit_supports`` are whitelists â€”
other keys are stripped so models never receive rejected parameters. ``upscale`` is False
everywhere: Clarity redraws content (creativity 0.35) and degraded text/CJK/faces when
default-on, so upscaling is strictly per-call opt-in. Pricing strings may drift.
é    )ÚAnyÚDictÚOptionalÚlandscape_16_9Ú	square_hdÚportrait_16_9)Ú	landscapeÚsquareÚportraitz16:9z1:1z9:16)Úimage_size_presetÚaspect_ratior   N)ÚstyleÚsizesÚedit_endpointÚedit_supportsÚmax_reference_imagesÚedit_image_paramÚdisplayÚspeedÚ	strengthsÚpricer   r   ÚdefaultsÚsupportsr   r   r   r   Úreturnc          
      ód   — | |||||�|nt         |   ||ddœ	}|r||d<   |	|d<   |
|d<   |r||d<   |S )zÑBuild one catalog entry; edit keys are present only for edit-capable models. ``edit_image_param``
    names the source-image key when the edit endpoint takes a singular ``image_url`` instead of ``image_urls``.F)	r   r   r   r   Ú
size_styler   r   r   Úupscaler   r   r   r   )Ú_DEFAULT_SIZES)r   r   r   r   r   r   r   r   r   r   r   r   Úentrys                úC/home/ubuntu/.hermes/hermes-agent/tools/image_generation_catalog.pyÚ_modelr!      sd   € ð  U¸ÈUØ¨uÐ/@¡eÄnÐUZÑF[Ø¨(¸uñ€Eñ
 Ø!.ˆˆoÑØ!.ˆˆoÑØ(<ˆÐ$Ñ%ÙØ(8ˆEÐ$Ñ%Ø€Ló    zFLUX 2 Klein 9Bz<1szFast, crisp textz	$0.006/MPé   ÚpngF)Únum_inference_stepsÚoutput_formatÚenable_safety_checker>   ÚseedÚpromptÚ
image_sizer&   r%   r'   zfal-ai/flux-2/klein/9b/edit>   r(   r)   Ú
image_urlsr&   r%   r'   é	   )r   r   r   r   r   z
FLUX 2 Proz~6szStudio photorealismz$0.03/MPé2   g      @é   Ú5T)r%   Úguidance_scaleÚ
num_imagesr&   r'   Úsafety_toleranceÚ	sync_mode>
   r(   r)   r3   r*   r1   r&   r0   r2   r%   r'   zfal-ai/flux-2-pro/edit>
   r(   r)   r3   r+   r1   r&   r0   r2   r%   r'   zZ-Image Turboz~2szBilingual EN/CN, 6Bz	$0.005/MPé   )r%   r1   r&   r'   Úenable_prompt_expansion>   r(   r)   r*   r1   r&   r%   r'   r5   )r   r   z$Nano Banana Pro (Gemini 3 Pro Image)z~8sz-Gemini 3 Pro, reasoning depth, text renderingz$0.15/image (1K)r   Ú1K)r1   r&   r2   Ú
resolution>
   r(   r)   r3   r1   r7   r   r&   r2   Úenable_web_searchÚlimit_generationszfal-ai/nano-banana-pro/edit>   r(   r)   r3   r+   r1   r7   r   r&   r2   r8   r9   é   )r   r   r   r   r   r   z&Nano Banana 2 (Gemini 3.1 Flash Image)z~3sz/Fast reasoning, multilingual text, infographicszLower-cost Flash tierÚ4)r1   r&   r2   r7   r9   >   r(   r)   r3   r1   r7   r   r&   Úsystem_promptÚthinking_levelr2   r8   r9   zfal-ai/nano-banana-2/edit>   r(   r)   r3   r+   r1   r7   r   r&   r<   r=   r2   r8   r9   é   zGPT Image 1.5z~15szPrompt adherencez$0.034/imageÚgpt_literalÚ	1536x1024Ú	1024x1024Ú	1024x1536Úmedium)Úqualityr1   r&   >   r)   rD   r3   Ú
backgroundr*   r1   r&   zfal-ai/gpt-image-1.5/edit>   r)   rD   r3   r*   r+   r1   r&   é   )r   r   r   r   r   r   r   zGPT Image 2z~20sz3SOTA text rendering + CJK, world-aware photorealismu   $0.04â€“0.06/imageÚlandscape_4_3Úportrait_4_3>   r)   rD   r3   r*   r1   r&   zopenai/gpt-image-2/edit>   r)   rD   r3   r+   r1   r&   Úmask_image_url)úfal-ai/flux-2/klein/9bzfal-ai/flux-2-prozfal-ai/z-image/turbozfal-ai/nano-banana-prozfal-ai/nano-banana-2zfal-ai/gpt-image-1.5zfal-ai/gpt-image-2))ÚflareÚFastz0Everyday creation, natural lighting and textures)ÚsunburstÚSlowerz6Precision editing, subject and composition consistencyzopenai/gpt-image-2.5/z/text-to-imagezGPT Image 2.5 zToken-based pricing>   r)   rD   r3   rE   r*   r1   r&   Úoutput_compressionz/edit>   r)   rD   Úmask_urlr3   rE   r*   r+   r1   r&   Úinput_fidelityrO   )r   r   r   r   r   r   zfal-ai/ideogram/v3zIdeogram V3z~5szBest typographyz$0.03-0.09/imageÚBALANCEDÚAUTO)Úrendering_speedÚexpand_promptr   >   r(   r   r)   r*   rU   rT   zfal-ai/ideogram/v3/edit>   r(   r   r)   r+   rU   rT   z#fal-ai/recraft/v4/pro/text-to-imagezRecraft V4 Proz'Design, brand systems, production-readyz$0.25/imager'   >   Úcolorsr)   r*   Úbackground_colorr'   zfal-ai/qwen-imagez
Qwen Imagez~12szLLM-based, complex textz$0.02/MPé   g      @Úregular)r%   r0   r1   r&   Úacceleration>	   r(   r)   r3   r*   r1   rZ   r&   r0   r%   zfal-ai/qwen-image-2/pro/edit>	   r(   r)   r3   r+   r1   rZ   r&   r0   r%   é   z#fal-ai/krea/v2/medium/text-to-imagezKrea 2 Mediumz~15-25sz9Illustration, anime, painting, expressive/artistic stylesz#$0.030 (text) / $0.035 (style refs)Ú
creativity>   r(   r)   r\   r   Úimage_style_references)r   r   r   z"fal-ai/krea/v2/large/text-to-imagezKrea 2 Largez~25-60sz;Photorealism, raw textured looks (motion blur, grain, film)z#$0.060 (text) / $0.065 (style refs)z'bytedance/seedream/v5/pro/text-to-imagezSeedream 5.0 Proz~10sz>ByteDance flagship, dense layouts, native text in 14 languagesu   $0.0675/image (â‰¤1536Â²)i   i€  )ÚwidthÚheighti   )r1   r&   r'   >   r)   r3   r*   r1   r&   r'   zbytedance/seedream/v5/pro/edit>   r)   r3   r*   r+   r1   r&   r'   é
   z(bytedance/seedream/v5/lite/text-to-imagezSeedream 5.0 Litez)Fast/cheap Seedream tier, high-res outputz$0.035/image)r1   r'   >   r)   r3   r*   Ú
max_imagesr1   r'   zideogram/v4/instantzIdeogram V4 (Instant)z2Latest Ideogram typography, posters/logos, instantz
$0.0075/MPÚMedium)Úexpansion_modelr&   r'   >   r(   r)   r3   r*   r1   r&   rc   r'   zideogram/v4/fastzIdeogram V4 (Fast)z~1sz-Ideogram V4 quality tiers via rendering_speedz$0.005-0.018/MP)rc   rT   >   r(   r)   r3   r*   r1   rc   rT   z"alibaba/qwen-image-3/text-to-imagezQwen Image 3z6Complex CN/EN text rendering, prompt-guided resolutionz"$0.04 (1K) / $0.075 (2K) per image)r1   r&   r5   r'   >	   r(   r)   r3   r*   r1   r&   Únegative_promptr'   r5   zalibaba/qwen-image-3/edit>	   r(   r)   r3   r+   r1   r&   rd   r'   r5   zmicrosoft/mai-image-2.5-prozMAI Image 2.5 Proz4Microsoft flagship, hero imagery, precise typographyz~$0.17/image)r1   r&   >   r)   r3   r1   r   r&   zgoogle/nano-banana-2-litezNano Banana 2 Litez<2sz;Gemini image family, sub-2s, 14 aspect ratios incl. extremez~$0.04/image (1K fixed))r1   r&   r2   >
   r(   r)   r3   r1   r   r&   r<   r=   r2   r9   zgoogle/nano-banana-2-lite/edit>	   r(   r)   r3   r+   r1   r   r&   r<   r2   z!fal-ai/recraft/v4.1/text-to-imagezRecraft V4.1z-Design-first raster, brand systems, editorialz)xai/grok-imagine-image/v2.0/text-to-imagezGrok Imagine Image 2.0z:xAI. Design-grade typography/layout, instruction followingz$0.06/image (1K medium)Ú1k)r1   r&   r7   rD   >   r)   rD   r3   r1   r7   r   r&   z xai/grok-imagine-image/v2.0/edit>   r)   rD   r3   r+   r1   r7   r&   z#fal-ai/kling-image/v3/text-to-imagezKling Image v3z8Kuaishou. Realistic detail, cheap native 2K, wide AR setz$0.028/imageÚ2K)r1   r&   r7   >   r)   r3   r1   r7   r   r&   rd   z$fal-ai/kling-image/v3/image-to-image>   r)   Ú	image_urlr3   r1   r7   r   r&   rg   )r   r   r   r   r   r   r   zmeta/muse-image/text-to-imagezMeta Muse Imagez-Meta. Realism + typography at commodity pricez$0.01/imagezmeta/muse-image/edit>   r)   r3   r+   r1   r&   Ú
FAL_MODELSrJ   r	   zfal-ai/clarity-upscalerz"masterpiece, best quality, highresz.(worst quality, low quality, normal quality:2)gffffffÖ?g333333ã?é   )Ú__doc__Útypingr   r   r   Ú_PRESET_SIZESÚ_ASPECT_SIZESr   ÚstrÚsetÚintr!   Útitlerh   Ú__annotations__ÚDEFAULT_MODELÚDEFAULT_ASPECT_RATIOÚVALID_ASPECT_RATIOSÚUPSCALER_MODELÚUPSCALER_FACTORÚUPSCALER_SAFETY_CHECKERÚUPSCALER_DEFAULT_PROMPTÚUPSCALER_NEGATIVE_PROMPTÚUPSCALER_CREATIVITYÚUPSCALER_RESEMBLANCEÚUPSCALER_GUIDANCE_SCALEÚUPSCALER_NUM_INFERENCE_STEPS)Úvariantr   r   s   000r    ú<module>r€      s8  ðò÷ 'Ñ &à.¸+ÐSbÑc€Ø$°À6ÑJ€Ø'4ÀmÑT€ð K^Ø&*Ø#'ÈØ*.ÐRVò	ØðØðØ),ðØ58ðØDGðà�D˜˜c˜‘NÑ#ðà6:¸3À¸8±nðàPSðð ˜C‘=ðð 9AÀ¹ðð # 3™-ð	ð CKÈ3Á-ð	ð
 
ˆ#ˆsˆ(�^óñ. %Ø˜5Ð"4°kà#$°uÐW\ñ
ò
ð 4ò
ð ôñ  Ø�eÐ2°Jà#%¸ÈAØ"¸UÐX[Øñ
ò

ð /ò
ð ô!ñ$ #Ø˜Ð 5°{à#$°AÈØ%*Àuñ
ò
ô
ñ %Ø.°Ð7fÐhzØð ¨eÈØñ
ò
ð 4ò
ð ô#ñ& #Ø0°%Ð9jð  mDØà¨eÈØ°Tñ
ò
ð 2ò
ð
  ô#ñ& #Ø˜Ð!3°^ØØ$°Èñ$
ð
 &°QÈÑOò
ð 2ò
ð  ôñ, !Ø�vÐTÐVjØ!Ø(°KÈ^ñ*
ð &°QÈÑOò
ð 0ò
ð  ôñQT)ðV*
÷%ð ñ$ &ˆG�U˜Ið#   ˜y¨Ð7¹Ø˜WŸ]™]›_Ð-Ð.°°yÐBWà,¸ÐQ_ñð "*¸ÈUÑSòð 2°'°¸%Ð@òð "$ô:
ñ 	
ôñsT)ð` ™&Ø�uÐ/Ð1CØ%/À$ÐQWÑXò
ð 0ò
ð ôðaT)ðx *©6Ø˜%Ð!JÈMØ)¨5Ð1ò
ô,ðyT)ðF ™Ø�fÐ7¸à#%¸ÈAØ"°Iñ
ò
ð 5ò
ð ôðGT)ðl *©6Ø˜Ð$_ð  bGØØ Ð)ò
ô	,ðmT)ð| )©&Ø˜	Ð#`ð  cHØØ Ð)ò
ô	+ð}T)ðV .©vØ˜FÐ$dð  gBØ!Ø#'°4Ñ8Ø $°Ñ5Ø"&°$Ñ7ñ*
ð ¨eÈeñ
ò
ð 7ò
ð  ô%0ðWT)ðB /±Ø˜UÐ$OÐQ_Ø !¸EÑBò
ô1ðCT)ðP ™6Ø Ð(\Ð^jà'¸%Ø%*ñ
ò
ô
ðQT)ðf ™Ø˜eÐ%TÐVgØ%-À*ÑMò
ôðgT)ðt )©&Ø˜ÐWÐY}à¨eÐPUØ%*ñ
ò
ð 2ò
ð ô+ðuT)ðV "¡6Ø˜VÐ%[Ð]kØØ !°EÑ:ÚWô	$ðWT)ðb  ¡Ø˜eÐ%bÐd}ØØ !°EÈsÑSò
ð 7ò
ð ô"ðcT)ð@	 (©Ø˜ÐNÐP^Ø)¨5Ð1ò
ô*ðA	T)ðN	 0±Ø  %Ð)eð  hAØð
 ¨eÀ4ÐT\ñ
ò
ð 9ò
ð ô!2ðO	T)ðv	 *©6Ø˜&Ð"\Ð^lØØ !°EÈÑNò
ð =ò
ð °ô,ðw	T)ðP
 $¡VØ˜5Ð"QÐS`Øð !"°EÑ:ÚWØ,ÚZØô&ñQ
T)€
ˆD��d˜3 ˜8‘nÐ$Ñ%ó Tðp
 )€à"Ð Ø9Ð ð +€Ø€ØÐ Ø>Ð ØKÐ ØÐ ØÐ ØÐ Ø!Ñ ùô[s   Ä%AL
