diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/image/enqueue_text_to_image_command.rs b/crates/desktop/artcraft/src/core/commands/enqueue/image/enqueue_text_to_image_command.rs index 3e3b038dcb..854a26fffb 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/image/enqueue_text_to_image_command.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/image/enqueue_text_to_image_command.rs @@ -24,7 +24,7 @@ use base64::prelude::BASE64_STANDARD; use base64::{DecodeError, Engine}; use errors::{AnyhowError, AnyhowResult}; use fal_client::error::fal_error_plus::FalErrorPlus; -use fal_client::requests::queue::image_gen::enqueue_flux_pro_ultra_text_to_image::{enqueue_flux_pro_ultra_text_to_image, FluxProUltraTextToImageArgs}; +use fal_client::requests::queue::image_gen::enqueue_flux_pro_11_ultra_text_to_image::{enqueue_flux_pro_11_ultra_text_to_image, FluxPro11UltraTextToImageArgs}; use fal_client::requests::queue::image_gen::enqueue_recraft3_text_to_image::{enqueue_recraft3_text_to_image, Recraft3TextToImageArgs}; use filesys::file_read_bytes::file_read_bytes; use image::codecs::png::{CompressionType, FilterType, PngEncoder}; diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/image/handle_image_artcraft.rs b/crates/desktop/artcraft/src/core/commands/enqueue/image/handle_image_artcraft.rs index 0230958f44..ad3e75c18b 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/image/handle_image_artcraft.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/image/handle_image_artcraft.rs @@ -13,16 +13,16 @@ use crate::services::sora::state::sora_credential_manager::SoraCredentialManager use crate::services::sora::state::sora_task_queue::SoraTaskQueue; use crate::services::storyteller::state::storyteller_credential_manager::StorytellerCredentialManager; use anyhow::anyhow; -use artcraft_api_defs::generate::image::generate_flux_pro_ultra_text_to_image::GenerateFluxProUltraTextToImageRequest; +use artcraft_api_defs::generate::image::generate_flux_pro_11_ultra_text_to_image::GenerateFluxPro11UltraTextToImageRequest; use artcraft_api_defs::generate::object::generate_hunyuan_2_image_to_3d::GenerateHunyuan2ImageTo3dRequest; use artcraft_api_defs::generate::video::generate_kling_1_6_image_to_video::GenerateKling16ImageToVideoRequest; use fal_client::creds::fal_api_key::FalApiKey; use fal_client::requests::queue::enqueue_hunyuan2_image_to_3d::{enqueue_hunyuan2_image_to_3d, Hunyuan2Args}; -use fal_client::requests::queue::image_gen::enqueue_flux_pro_ultra_text_to_image::{enqueue_flux_pro_ultra_text_to_image, FluxProUltraTextToImageArgs}; +use fal_client::requests::queue::image_gen::enqueue_flux_pro_11_ultra_text_to_image::{enqueue_flux_pro_11_ultra_text_to_image, FluxPro11UltraTextToImageArgs}; use fal_client::requests::queue::image_gen::enqueue_recraft3_text_to_image::{enqueue_recraft3_text_to_image, Recraft3TextToImageArgs}; use idempotency::uuid::generate_random_uuid; use log::{error, info, warn}; -use storyteller_client::generate::image::generate_flux_pro_ultra_text_to_image::generate_flux_pro_ultra_text_to_image; +use storyteller_client::generate::image::generate_flux_pro_11_ultra_text_to_image::generate_flux_pro_11_ultra_text_to_image; use storyteller_client::generate::object::generate_hunyuan2_image_to_3d::generate_hunyuan2_image_to_3d; use storyteller_client::generate::video::generate_kling16_image_to_video::generate_kling16_image_to_video; use storyteller_client::utils::api_host::ApiHost; @@ -69,11 +69,11 @@ pub async fn handle_image_artcraft( Some(EnqueueTextToImageModel::FluxProUltra) => { info!("enqueue Flux Pro Ultra"); selected_model = Some(GenerationModel::FluxPro11Ultra); - let request = GenerateFluxProUltraTextToImageRequest { + let request = GenerateFluxPro11UltraTextToImageRequest { uuid_idempotency_token, prompt: request.prompt, }; - let result = generate_flux_pro_ultra_text_to_image( + let result = generate_flux_pro_11_ultra_text_to_image( &ApiHost::Storyteller, Some(&creds), request, diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/image/handle_image_fal.rs b/crates/desktop/artcraft/src/core/commands/enqueue/image/handle_image_fal.rs index 94241eb017..9f5e1d82c0 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/image/handle_image_fal.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/image/handle_image_fal.rs @@ -12,7 +12,7 @@ use crate::services::sora::state::sora_task_queue::SoraTaskQueue; use crate::services::storyteller::state::storyteller_credential_manager::StorytellerCredentialManager; use anyhow::anyhow; use fal_client::creds::fal_api_key::FalApiKey; -use fal_client::requests::queue::image_gen::enqueue_flux_pro_ultra_text_to_image::{enqueue_flux_pro_ultra_text_to_image, FluxProUltraTextToImageArgs}; +use fal_client::requests::queue::image_gen::enqueue_flux_pro_11_ultra_text_to_image::{enqueue_flux_pro_11_ultra_text_to_image, FluxPro11UltraTextToImageArgs}; use fal_client::requests::queue::image_gen::enqueue_recraft3_text_to_image::{enqueue_recraft3_text_to_image, Recraft3TextToImageArgs}; use log::{error, info, warn}; use tauri::AppHandle; @@ -56,7 +56,7 @@ pub async fn handle_image_fal( } Some(EnqueueTextToImageModel::FluxProUltra) => { info!("enqueue Flux Pro Ultra text-to-image with prompt: {}", prompt); - enqueue_flux_pro_ultra_text_to_image(FluxProUltraTextToImageArgs { + enqueue_flux_pro_11_ultra_text_to_image(FluxPro11UltraTextToImageArgs { prompt, api_key: &api_key, }).await diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/image/handle_image_sora.rs b/crates/desktop/artcraft/src/core/commands/enqueue/image/handle_image_sora.rs index 1b8e52a7de..b9d0ab4f3f 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/image/handle_image_sora.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/image/handle_image_sora.rs @@ -11,7 +11,7 @@ use crate::services::sora::state::sora_credential_manager::SoraCredentialManager use crate::services::sora::state::sora_task_queue::SoraTaskQueue; use crate::services::storyteller::state::storyteller_credential_manager::StorytellerCredentialManager; use anyhow::anyhow; -use fal_client::requests::queue::image_gen::enqueue_flux_pro_ultra_text_to_image::{enqueue_flux_pro_ultra_text_to_image, FluxProUltraTextToImageArgs}; +use fal_client::requests::queue::image_gen::enqueue_flux_pro_11_ultra_text_to_image::{enqueue_flux_pro_11_ultra_text_to_image, FluxPro11UltraTextToImageArgs}; use fal_client::requests::queue::image_gen::enqueue_recraft3_text_to_image::{enqueue_recraft3_text_to_image, Recraft3TextToImageArgs}; use log::{error, info, warn}; use openai_sora_client::creds::sora_credential_set::SoraCredentialSet; diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/object/enqueue_image_to_3d_object_command.rs b/crates/desktop/artcraft/src/core/commands/enqueue/object/enqueue_image_to_3d_object_command.rs index 90e9f1d817..01a35f0f57 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/object/enqueue_image_to_3d_object_command.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/object/enqueue_image_to_3d_object_command.rs @@ -24,7 +24,7 @@ use base64::prelude::BASE64_STANDARD; use base64::{DecodeError, Engine}; use errors::{AnyhowError, AnyhowResult}; use fal_client::error::fal_error_plus::FalErrorPlus; -use fal_client::requests::queue::image_gen::enqueue_flux_pro_ultra_text_to_image::{enqueue_flux_pro_ultra_text_to_image, FluxProUltraTextToImageArgs}; +use fal_client::requests::queue::image_gen::enqueue_flux_pro_11_ultra_text_to_image::{enqueue_flux_pro_11_ultra_text_to_image, FluxPro11UltraTextToImageArgs}; use fal_client::requests::queue::image_gen::enqueue_recraft3_text_to_image::{enqueue_recraft3_text_to_image, Recraft3TextToImageArgs}; use filesys::file_read_bytes::file_read_bytes; use image::codecs::png::{CompressionType, FilterType, PngEncoder}; diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/object/handle_object_artcraft.rs b/crates/desktop/artcraft/src/core/commands/enqueue/object/handle_object_artcraft.rs index 0563d9c9be..af8ac4510d 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/object/handle_object_artcraft.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/object/handle_object_artcraft.rs @@ -17,7 +17,7 @@ use anyhow::anyhow; use artcraft_api_defs::generate::object::generate_hunyuan_2_image_to_3d::GenerateHunyuan2ImageTo3dRequest; use fal_client::creds::fal_api_key::FalApiKey; use fal_client::requests::queue::enqueue_hunyuan2_image_to_3d::{enqueue_hunyuan2_image_to_3d, Hunyuan2Args}; -use fal_client::requests::queue::image_gen::enqueue_flux_pro_ultra_text_to_image::{enqueue_flux_pro_ultra_text_to_image, FluxProUltraTextToImageArgs}; +use fal_client::requests::queue::image_gen::enqueue_flux_pro_11_ultra_text_to_image::{enqueue_flux_pro_11_ultra_text_to_image, FluxPro11UltraTextToImageArgs}; use fal_client::requests::queue::image_gen::enqueue_recraft3_text_to_image::{enqueue_recraft3_text_to_image, Recraft3TextToImageArgs}; use idempotency::uuid::generate_random_uuid; use log::{error, info, warn}; diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/object/handle_object_fal.rs b/crates/desktop/artcraft/src/core/commands/enqueue/object/handle_object_fal.rs index f3a6da71d3..e99a3d2eda 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/object/handle_object_fal.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/object/handle_object_fal.rs @@ -16,7 +16,7 @@ use crate::services::storyteller::state::storyteller_credential_manager::Storyte use anyhow::anyhow; use fal_client::creds::fal_api_key::FalApiKey; use fal_client::requests::queue::enqueue_hunyuan2_image_to_3d::{enqueue_hunyuan2_image_to_3d, Hunyuan2Args}; -use fal_client::requests::queue::image_gen::enqueue_flux_pro_ultra_text_to_image::{enqueue_flux_pro_ultra_text_to_image, FluxProUltraTextToImageArgs}; +use fal_client::requests::queue::image_gen::enqueue_flux_pro_11_ultra_text_to_image::{enqueue_flux_pro_11_ultra_text_to_image, FluxPro11UltraTextToImageArgs}; use fal_client::requests::queue::image_gen::enqueue_recraft3_text_to_image::{enqueue_recraft3_text_to_image, Recraft3TextToImageArgs}; use log::{error, info, warn}; use tauri::AppHandle; diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/video/enqueue_image_to_video_command.rs b/crates/desktop/artcraft/src/core/commands/enqueue/video/enqueue_image_to_video_command.rs index 3d7088440f..09e6fc2a77 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/video/enqueue_image_to_video_command.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/video/enqueue_image_to_video_command.rs @@ -26,7 +26,7 @@ use base64::prelude::BASE64_STANDARD; use base64::{DecodeError, Engine}; use errors::{AnyhowError, AnyhowResult}; use fal_client::error::fal_error_plus::FalErrorPlus; -use fal_client::requests::queue::image_gen::enqueue_flux_pro_ultra_text_to_image::{enqueue_flux_pro_ultra_text_to_image, FluxProUltraTextToImageArgs}; +use fal_client::requests::queue::image_gen::enqueue_flux_pro_11_ultra_text_to_image::{enqueue_flux_pro_11_ultra_text_to_image, FluxPro11UltraTextToImageArgs}; use fal_client::requests::queue::image_gen::enqueue_recraft3_text_to_image::{enqueue_recraft3_text_to_image, Recraft3TextToImageArgs}; use filesys::file_read_bytes::file_read_bytes; use image::codecs::png::{CompressionType, FilterType, PngEncoder}; diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/video/handle_video_artcraft.rs b/crates/desktop/artcraft/src/core/commands/enqueue/video/handle_video_artcraft.rs index fe347198bc..b7d2908016 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/video/handle_video_artcraft.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/video/handle_video_artcraft.rs @@ -18,7 +18,7 @@ use anyhow::anyhow; use artcraft_api_defs::generate::object::generate_hunyuan_2_image_to_3d::GenerateHunyuan2ImageTo3dRequest; use fal_client::creds::fal_api_key::FalApiKey; use fal_client::requests::queue::enqueue_hunyuan2_image_to_3d::{enqueue_hunyuan2_image_to_3d, Hunyuan2Args}; -use fal_client::requests::queue::image_gen::enqueue_flux_pro_ultra_text_to_image::{enqueue_flux_pro_ultra_text_to_image, FluxProUltraTextToImageArgs}; +use fal_client::requests::queue::image_gen::enqueue_flux_pro_11_ultra_text_to_image::{enqueue_flux_pro_11_ultra_text_to_image, FluxPro11UltraTextToImageArgs}; use fal_client::requests::queue::image_gen::enqueue_recraft3_text_to_image::{enqueue_recraft3_text_to_image, Recraft3TextToImageArgs}; use idempotency::uuid::generate_random_uuid; use log::{error, info, warn}; diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/video/handle_video_fal.rs b/crates/desktop/artcraft/src/core/commands/enqueue/video/handle_video_fal.rs index eac01233f4..283966679d 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/video/handle_video_fal.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/video/handle_video_fal.rs @@ -16,7 +16,7 @@ use crate::services::storyteller::state::storyteller_credential_manager::Storyte use anyhow::anyhow; use fal_client::creds::fal_api_key::FalApiKey; use fal_client::requests::queue::enqueue_hunyuan2_image_to_3d::{enqueue_hunyuan2_image_to_3d, Hunyuan2Args}; -use fal_client::requests::queue::image_gen::enqueue_flux_pro_ultra_text_to_image::{enqueue_flux_pro_ultra_text_to_image, FluxProUltraTextToImageArgs}; +use fal_client::requests::queue::image_gen::enqueue_flux_pro_11_ultra_text_to_image::{enqueue_flux_pro_11_ultra_text_to_image, FluxPro11UltraTextToImageArgs}; use fal_client::requests::queue::image_gen::enqueue_recraft3_text_to_image::{enqueue_recraft3_text_to_image, Recraft3TextToImageArgs}; use fal_client::requests::queue::video_gen::enqueue_kling_16_image_to_video::{enqueue_kling_16_image_to_video, Kling16Args, Kling16Duration}; use log::{error, info, warn}; diff --git a/crates/lib/api_clients/fal_client/src/requests/queue/image_gen/enqueue_flux_pro_ultra_text_to_image.rs b/crates/lib/api_clients/fal_client/src/requests/queue/image_gen/enqueue_flux_pro_11_ultra_text_to_image.rs similarity index 77% rename from crates/lib/api_clients/fal_client/src/requests/queue/image_gen/enqueue_flux_pro_ultra_text_to_image.rs rename to crates/lib/api_clients/fal_client/src/requests/queue/image_gen/enqueue_flux_pro_11_ultra_text_to_image.rs index e677082a51..819eb62d06 100644 --- a/crates/lib/api_clients/fal_client/src/requests/queue/image_gen/enqueue_flux_pro_ultra_text_to_image.rs +++ b/crates/lib/api_clients/fal_client/src/requests/queue/image_gen/enqueue_flux_pro_11_ultra_text_to_image.rs @@ -7,22 +7,25 @@ use fal::endpoints::fal_ai::flux_pro::v1_1_ultra::FluxProUltraTextToImageInput; use futures::StreamExt; use std::io::Write; -pub struct FluxProUltraTextToImageArgs<'a> { +pub struct FluxPro11UltraTextToImageArgs<'a> { pub prompt: &'a str, pub api_key: &'a FalApiKey, // TODO: Size parameter } -pub async fn enqueue_flux_pro_ultra_text_to_image(args: FluxProUltraTextToImageArgs<'_>) -> Result { +pub async fn enqueue_flux_pro_11_ultra_text_to_image(args: FluxPro11UltraTextToImageArgs<'_>) -> Result { let request = FluxProUltraTextToImageInput { prompt: args.prompt.to_string(), - safety_tolerance: Some("5".to_string()), // 1 is most strict, 5 is most permissive - enable_safety_checker: Some(false), - num_images: Some(1), // Default is 1 - output_format: Some("png".to_string()), - raw: Some(true), // Generate less processed, more natural-looking images. Default is false. + // Maybe expose aspect_ratio: None, // Default is "16:9" + num_images: Some(1), // Default is 1 seed: None, + raw: Some(true), // Generate less processed, more natural-looking images. Default is false. + // Maybe abstract + enable_safety_checker: Some(false), + safety_tolerance: Some("5".to_string()), // 1 is most strict, 5 is most permissive + // Constants + output_format: Some("png".to_string()), sync_mode: None, // Synchronous / slow }; @@ -42,7 +45,7 @@ pub async fn enqueue_flux_pro_ultra_text_to_image(args: FluxProUltraTextToImageA #[cfg(test)] mod tests { use crate::creds::fal_api_key::FalApiKey; - use crate::requests::queue::image_gen::enqueue_flux_pro_ultra_text_to_image::{enqueue_flux_pro_ultra_text_to_image, FluxProUltraTextToImageArgs}; + use crate::requests::queue::image_gen::enqueue_flux_pro_11_ultra_text_to_image::{enqueue_flux_pro_11_ultra_text_to_image, FluxPro11UltraTextToImageArgs}; use errors::AnyhowResult; use std::fs::read_to_string; @@ -54,12 +57,12 @@ mod tests { let api_key = FalApiKey::from_str(&secret); - let args = FluxProUltraTextToImageArgs { + let args = FluxPro11UltraTextToImageArgs { prompt: "a corgi smiles at the camera, inside retro video game store, lots of sci-fi props from Cowboy Bebop, photorealistic", api_key: &api_key, }; - let result = enqueue_flux_pro_ultra_text_to_image(args).await?; + let result = enqueue_flux_pro_11_ultra_text_to_image(args).await?; Ok(()) } diff --git a/crates/lib/api_clients/fal_client/src/requests/queue/image_gen/mod.rs b/crates/lib/api_clients/fal_client/src/requests/queue/image_gen/mod.rs index 6716f1cdf0..440fb491c0 100644 --- a/crates/lib/api_clients/fal_client/src/requests/queue/image_gen/mod.rs +++ b/crates/lib/api_clients/fal_client/src/requests/queue/image_gen/mod.rs @@ -1,2 +1,2 @@ -pub mod enqueue_flux_pro_ultra_text_to_image; +pub mod enqueue_flux_pro_11_ultra_text_to_image; pub mod enqueue_recraft3_text_to_image; \ No newline at end of file diff --git a/crates/lib/api_clients/fal_client/src/requests/webhook/image/enqueue_flux_pro_ultra_text_to_image_webhook.rs b/crates/lib/api_clients/fal_client/src/requests/webhook/image/enqueue_flux_pro_11_ultra_text_to_image_webhook.rs similarity index 83% rename from crates/lib/api_clients/fal_client/src/requests/webhook/image/enqueue_flux_pro_ultra_text_to_image_webhook.rs rename to crates/lib/api_clients/fal_client/src/requests/webhook/image/enqueue_flux_pro_11_ultra_text_to_image_webhook.rs index ab006408b1..51946abe20 100644 --- a/crates/lib/api_clients/fal_client/src/requests/webhook/image/enqueue_flux_pro_ultra_text_to_image_webhook.rs +++ b/crates/lib/api_clients/fal_client/src/requests/webhook/image/enqueue_flux_pro_11_ultra_text_to_image_webhook.rs @@ -5,25 +5,28 @@ use fal::endpoints::fal_ai::flux_pro::v1_1_ultra::{v1_1_ultra, FluxProUltraTextT use fal::webhook::WebhookResponse; use reqwest::IntoUrl; -pub struct FluxProUltraArgs<'a, U: IntoUrl> { +pub struct FluxPro11UltraArgs<'a, U: IntoUrl> { pub prompt: &'a str, pub webhook_url: U, pub api_key: &'a FalApiKey, } -pub async fn enqueue_flux_pro_ultra_text_to_image_webhook( - args: FluxProUltraArgs<'_, U> +pub async fn enqueue_flux_pro_11_ultra_text_to_image_webhook( + args: FluxPro11UltraArgs<'_, U> ) -> Result { let request = FluxProUltraTextToImageInput { prompt: args.prompt.to_string(), - safety_tolerance: Some("5".to_string()), // 1 is most strict, 5 is most permissive - enable_safety_checker: Some(false), + // Maybe expose num_images: Some(1), // Default is 1 - output_format: Some("png".to_string()), - raw: Some(true), // Generate less processed, more natural-looking images. Default is false. aspect_ratio: None, // Default is "16:9" seed: None, + raw: Some(true), // Generate less processed, more natural-looking images. Default is false. + // Maybe abstract + enable_safety_checker: Some(false), + safety_tolerance: Some("5".to_string()), // 1 is most strict, 5 is most permissive + // Constants + output_format: Some("png".to_string()), sync_mode: None, // Synchronous / slow }; diff --git a/crates/lib/api_clients/fal_client/src/requests/webhook/image/mod.rs b/crates/lib/api_clients/fal_client/src/requests/webhook/image/mod.rs index 88ed8b3a74..a2aa13752e 100644 --- a/crates/lib/api_clients/fal_client/src/requests/webhook/image/mod.rs +++ b/crates/lib/api_clients/fal_client/src/requests/webhook/image/mod.rs @@ -1,2 +1,2 @@ -pub mod enqueue_flux_pro_ultra_text_to_image_webhook; +pub mod enqueue_flux_pro_11_ultra_text_to_image_webhook; pub mod remove_background_rembg_webhook; \ No newline at end of file diff --git a/crates/lib/api_clients/storyteller_client/src/generate/image/generate_flux_pro_ultra_text_to_image.rs b/crates/lib/api_clients/storyteller_client/src/generate/image/generate_flux_pro_11_ultra_text_to_image.rs similarity index 79% rename from crates/lib/api_clients/storyteller_client/src/generate/image/generate_flux_pro_ultra_text_to_image.rs rename to crates/lib/api_clients/storyteller_client/src/generate/image/generate_flux_pro_11_ultra_text_to_image.rs index fd47b079e3..dc8a25ad99 100644 --- a/crates/lib/api_clients/storyteller_client/src/generate/image/generate_flux_pro_ultra_text_to_image.rs +++ b/crates/lib/api_clients/storyteller_client/src/generate/image/generate_flux_pro_11_ultra_text_to_image.rs @@ -5,15 +5,15 @@ use crate::error::storyteller_error::StorytellerError; use crate::utils::api_host::ApiHost; use crate::utils::constants::{APPLICATION_JSON, USER_AGENT}; use crate::utils::filter_bad_response::filter_bad_response; -use artcraft_api_defs::generate::image::generate_flux_pro_ultra_text_to_image::{GenerateFluxProUltraTextToImageRequest, GenerateFluxProUltraTextToImageResponse, GENERATE_FLUX_PRO_ULTRA_TEXT_TO_IMAGE_PATH}; +use artcraft_api_defs::generate::image::generate_flux_pro_11_ultra_text_to_image::{GenerateFluxPro11UltraTextToImageRequest, GenerateFluxPro11UltraTextToImageResponse, GENERATE_FLUX_PRO_11_ULTRA_TEXT_TO_IMAGE_PATH}; use log::{debug, info}; use reqwest::Client; -pub async fn generate_flux_pro_ultra_text_to_image( +pub async fn generate_flux_pro_11_ultra_text_to_image( api_host: &ApiHost, maybe_creds: Option<&StorytellerCredentialSet>, - request: GenerateFluxProUltraTextToImageRequest, -) -> Result { + request: GenerateFluxPro11UltraTextToImageRequest, +) -> Result { let url = get_route(api_host); @@ -64,5 +64,5 @@ pub async fn generate_flux_pro_ultra_text_to_image( fn get_route(api_host: &ApiHost) -> String { let api_hostname = api_host.to_api_hostname(); - format!("https://{}{}", api_hostname, GENERATE_FLUX_PRO_ULTRA_TEXT_TO_IMAGE_PATH) + format!("https://{}{}", api_hostname, GENERATE_FLUX_PRO_11_ULTRA_TEXT_TO_IMAGE_PATH) } diff --git a/crates/lib/api_clients/storyteller_client/src/generate/image/mod.rs b/crates/lib/api_clients/storyteller_client/src/generate/image/mod.rs index b1cd78e257..c7b7937d3a 100644 --- a/crates/lib/api_clients/storyteller_client/src/generate/image/mod.rs +++ b/crates/lib/api_clients/storyteller_client/src/generate/image/mod.rs @@ -1 +1 @@ -pub mod generate_flux_pro_ultra_text_to_image; \ No newline at end of file +pub mod generate_flux_pro_11_ultra_text_to_image; \ No newline at end of file diff --git a/crates/schema/public/api/artcraft_api_defs/src/generate/image/generate_flux_pro_ultra_text_to_image.rs b/crates/schema/public/api/artcraft_api_defs/src/generate/image/generate_flux_pro_11_ultra_text_to_image.rs similarity index 66% rename from crates/schema/public/api/artcraft_api_defs/src/generate/image/generate_flux_pro_ultra_text_to_image.rs rename to crates/schema/public/api/artcraft_api_defs/src/generate/image/generate_flux_pro_11_ultra_text_to_image.rs index 622259f132..e1a2a7de8d 100644 --- a/crates/schema/public/api/artcraft_api_defs/src/generate/image/generate_flux_pro_ultra_text_to_image.rs +++ b/crates/schema/public/api/artcraft_api_defs/src/generate/image/generate_flux_pro_11_ultra_text_to_image.rs @@ -2,10 +2,10 @@ use serde_derive::{Deserialize, Serialize}; use tokens::tokens::generic_inference_jobs::InferenceJobToken; use utoipa::ToSchema; -pub const GENERATE_FLUX_PRO_ULTRA_TEXT_TO_IMAGE_PATH: &str = "/v1/generate/image/flux_pro_ultra_text_to_image"; +pub const GENERATE_FLUX_PRO_11_ULTRA_TEXT_TO_IMAGE_PATH: &str = "/v1/generate/image/flux_pro_1.1_ultra_text_to_image"; #[derive(Serialize, Deserialize, ToSchema)] -pub struct GenerateFluxProUltraTextToImageRequest { +pub struct GenerateFluxPro11UltraTextToImageRequest { /// Idempotency token to prevent duplicate requests. pub uuid_idempotency_token: String, @@ -14,7 +14,7 @@ pub struct GenerateFluxProUltraTextToImageRequest { } #[derive(Serialize, Deserialize, ToSchema)] -pub struct GenerateFluxProUltraTextToImageResponse { +pub struct GenerateFluxPro11UltraTextToImageResponse { pub success: bool, pub inference_job_token: InferenceJobToken, } diff --git a/crates/schema/public/api/artcraft_api_defs/src/generate/image/mod.rs b/crates/schema/public/api/artcraft_api_defs/src/generate/image/mod.rs index a6a98f9efa..ed74641a70 100644 --- a/crates/schema/public/api/artcraft_api_defs/src/generate/image/mod.rs +++ b/crates/schema/public/api/artcraft_api_defs/src/generate/image/mod.rs @@ -1,2 +1,2 @@ -pub mod generate_flux_pro_ultra_text_to_image; +pub mod generate_flux_pro_11_ultra_text_to_image; pub mod remove_image_background; \ No newline at end of file diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/generate_flux_pro_ultra_text_to_image_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/generate_flux_pro_ultra_text_to_image_handler.rs index 14f9312466..c951d688ff 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/generate_flux_pro_ultra_text_to_image_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/image/generate_flux_pro_ultra_text_to_image_handler.rs @@ -15,12 +15,12 @@ use actix_web::http::StatusCode; use actix_web::web::Json; use actix_web::web::Path; use actix_web::{web, HttpRequest, HttpResponse}; -use artcraft_api_defs::generate::image::generate_flux_pro_ultra_text_to_image::GenerateFluxProUltraTextToImageRequest; -use artcraft_api_defs::generate::image::generate_flux_pro_ultra_text_to_image::GenerateFluxProUltraTextToImageResponse; +use artcraft_api_defs::generate::image::generate_flux_pro_11_ultra_text_to_image::GenerateFluxPro11UltraTextToImageRequest; +use artcraft_api_defs::generate::image::generate_flux_pro_11_ultra_text_to_image::GenerateFluxPro11UltraTextToImageResponse; use bucket_paths::legacy::typified_paths::public::media_files::bucket_file_path::MediaFileBucketPath; use enums::common::visibility::Visibility; -use fal_client::requests::webhook::image::enqueue_flux_pro_ultra_text_to_image_webhook::enqueue_flux_pro_ultra_text_to_image_webhook; -use fal_client::requests::webhook::image::enqueue_flux_pro_ultra_text_to_image_webhook::FluxProUltraArgs; +use fal_client::requests::webhook::image::enqueue_flux_pro_11_ultra_text_to_image_webhook::enqueue_flux_pro_11_ultra_text_to_image_webhook; +use fal_client::requests::webhook::image::enqueue_flux_pro_11_ultra_text_to_image_webhook::FluxPro11UltraArgs; use http_server_common::request::get_request_ip::get_request_ip; use http_server_common::response::serialize_as_json_error::serialize_as_json_error; use idempotency::uuid::generate_random_uuid; @@ -72,7 +72,7 @@ impl fmt::Display for GenerateFluxProUltraTextToImageError { #[utoipa::path( post, tag = "Generate Images", - path = "/v1/generate/image/flux_pro_ultra_text_to_image", + path = "/v1/generate/image/flux_pro_1.1_ultra_text_to_image", responses( (status = 200, description = "Success", body = GenerateFluxProUltraTextToImageResponse), (status = 400, description = "Bad input", body = GenerateFluxProUltraTextToImageError), @@ -83,11 +83,11 @@ impl fmt::Display for GenerateFluxProUltraTextToImageError { ("request" = GenerateFluxProUltraTextToImageRequest, description = "Payload for Request"), ) )] -pub async fn generate_flux_pro_ultra_text_to_image_handler( +pub async fn generate_flux_pro_11_ultra_text_to_image_handler( http_request: HttpRequest, - request: Json, + request: Json, server_state: web::Data> -) -> Result, GenerateFluxProUltraTextToImageError> { +) -> Result, GenerateFluxProUltraTextToImageError> { let maybe_user_session = server_state .session_checker .maybe_get_user_session(&http_request, &server_state.mysql_pool) @@ -110,7 +110,7 @@ pub async fn generate_flux_pro_ultra_text_to_image_handler( // return Err(GenerateFluxProUltraTextToImageError::NotAuthorized); // } //}; - + if let Err(reason) = validate_idempotency_token_format(&request.uuid_idempotency_token) { return Err(GenerateFluxProUltraTextToImageError::BadInput(reason)); } @@ -125,13 +125,13 @@ pub async fn generate_flux_pro_ultra_text_to_image_handler( info!("Fal webhook URL: {}", server_state.fal.webhook_url); - let args = FluxProUltraArgs { + let args = FluxPro11UltraArgs { prompt: request.prompt.as_deref().unwrap_or(""), webhook_url: &server_state.fal.webhook_url, api_key: &server_state.fal.api_key, }; - let fal_result = enqueue_flux_pro_ultra_text_to_image_webhook(args) + let fal_result = enqueue_flux_pro_11_ultra_text_to_image_webhook(args) .await .map_err(|err| { warn!("Error calling enqueue_flux_pro_ultra_text_to_image_webhook: {:?}", err); @@ -168,7 +168,7 @@ pub async fn generate_flux_pro_ultra_text_to_image_handler( } }; - Ok(Json(GenerateFluxProUltraTextToImageResponse { + Ok(Json(GenerateFluxPro11UltraTextToImageResponse { success: true, inference_job_token: job_token, })) diff --git a/crates/service/web/storyteller_web/src/http_server/routes/add_generate_routes.rs b/crates/service/web/storyteller_web/src/http_server/routes/add_generate_routes.rs index 6872cc8905..0b3fbeb002 100644 --- a/crates/service/web/storyteller_web/src/http_server/routes/add_generate_routes.rs +++ b/crates/service/web/storyteller_web/src/http_server/routes/add_generate_routes.rs @@ -1,4 +1,4 @@ -use crate::http_server::endpoints::generate::image::generate_flux_pro_ultra_text_to_image_handler::generate_flux_pro_ultra_text_to_image_handler; +use crate::http_server::endpoints::generate::image::generate_flux_pro_ultra_text_to_image_handler::generate_flux_pro_11_ultra_text_to_image_handler; use crate::http_server::endpoints::generate::image::remove_image_background_handler::remove_image_background_handler; use crate::http_server::endpoints::generate::object::generate_hunyuan2_image_to_3d_handler::generate_hunyuan_2_image_to_3d_handler; use crate::http_server::endpoints::generate::video::generate_kling_1_6_video_handler::generate_kling_1_6_video_handler; @@ -20,8 +20,8 @@ where { app.service(web::scope("/v1/generate") .service(web::scope("/image") - .service(web::resource("/flux_pro_ultra_text_to_image") - .route(web::post().to(generate_flux_pro_ultra_text_to_image_handler)) + .service(web::resource("/flux_pro_1.1_ultra_text_to_image") + .route(web::post().to(generate_flux_pro_11_ultra_text_to_image_handler)) .route(web::head().to(|| HttpResponse::Ok())) ) .service(web::resource("/remove_background")