diff --git a/crates/api_clients/artcraft/artcraft_router/src/api/common_aspect_ratio.rs b/crates/api_clients/artcraft/artcraft_router/src/api/common_aspect_ratio.rs index b49c8a65e5..a930a146a5 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/api/common_aspect_ratio.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/api/common_aspect_ratio.rs @@ -38,6 +38,8 @@ pub enum CommonAspectRatio { // These are from the Seedream models #[serde(rename = "auto_2k")] Auto2k, + #[serde(rename = "auto_3k")] + Auto3k, #[serde(rename = "auto_4k")] Auto4k, diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_flux_2_lora_angles.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_flux_2_lora_angles.rs index c2b52d5752..ed3eebc605 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_flux_2_lora_angles.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_flux_2_lora_angles.rs @@ -80,7 +80,7 @@ fn plan_image_size( match aspect_ratio { None => Ok(None), - Some(CommonAspectRatio::Auto) | Some(CommonAspectRatio::Auto2k) | Some(CommonAspectRatio::Auto4k) => { + Some(CommonAspectRatio::Auto) | Some(CommonAspectRatio::Auto2k) | Some(CommonAspectRatio::Auto3k) | Some(CommonAspectRatio::Auto4k) => { Ok(Some(S::SquareHd)) } diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_gpt_image_1.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_gpt_image_1.rs index cd0185ad67..75c18d0cb6 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_gpt_image_1.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_gpt_image_1.rs @@ -121,6 +121,7 @@ fn plan_image_size(aspect_ratio: Option) -> Option None, Some(CommonAspectRatio::Square) | Some(CommonAspectRatio::SquareHd) => Some(S::Square), diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_gpt_image_1p5.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_gpt_image_1p5.rs index 42ee2a59cb..9a0b69a946 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_gpt_image_1p5.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_gpt_image_1p5.rs @@ -79,6 +79,7 @@ fn plan_image_size( None | Some(CommonAspectRatio::Auto) | Some(CommonAspectRatio::Auto2k) + | Some(CommonAspectRatio::Auto3k) | Some(CommonAspectRatio::Auto4k) => Ok(None), // Square diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_qwen_edit_2511_angles.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_qwen_edit_2511_angles.rs index 5dad342099..4f7933d2ed 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_qwen_edit_2511_angles.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_qwen_edit_2511_angles.rs @@ -82,7 +82,7 @@ fn plan_image_size( match aspect_ratio { None => Ok(None), - Some(CommonAspectRatio::Auto) | Some(CommonAspectRatio::Auto2k) | Some(CommonAspectRatio::Auto4k) => { + Some(CommonAspectRatio::Auto) | Some(CommonAspectRatio::Auto2k) | Some(CommonAspectRatio::Auto3k) | Some(CommonAspectRatio::Auto4k) => { Ok(Some(S::SquareHd)) } diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_seedream_4.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_seedream_4.rs index 1fe3f1d5d0..ce31274a56 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_seedream_4.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_seedream_4.rs @@ -72,7 +72,7 @@ fn plan_image_size( if is_edit_mode { Ok(Some(S::Auto)) } else { Ok(Some(S::Square)) } } - Some(CommonAspectRatio::Auto2k) => Ok(Some(S::Auto2k)), + Some(CommonAspectRatio::Auto2k) | Some(CommonAspectRatio::Auto3k) => Ok(Some(S::Auto2k)), Some(CommonAspectRatio::Auto4k) => Ok(Some(S::Auto4k)), // Square diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_seedream_4p5.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_seedream_4p5.rs index 0675319e9d..e6b964faa7 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_seedream_4p5.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_seedream_4p5.rs @@ -72,7 +72,7 @@ fn plan_image_size( if is_edit_mode { Ok(Some(S::Auto2k)) } else { Ok(Some(S::Square)) } } - Some(CommonAspectRatio::Auto2k) => Ok(Some(S::Auto2k)), + Some(CommonAspectRatio::Auto2k) | Some(CommonAspectRatio::Auto3k) => Ok(Some(S::Auto2k)), Some(CommonAspectRatio::Auto4k) => Ok(Some(S::Auto4k)), // Square diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_seedream_5_lite.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_seedream_5_lite.rs index 5c8af1d516..ed77a9d4eb 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_seedream_5_lite.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/artcraft/plan_generate_image_artcraft_seedream_5_lite.rs @@ -73,6 +73,7 @@ fn plan_image_size( } Some(CommonAspectRatio::Auto2k) => Ok(Some(S::Auto2k)), + Some(CommonAspectRatio::Auto3k) => Ok(Some(S::Auto3k)), // 5 Lite max is auto_3K; map Auto4k down to Auto3k Some(CommonAspectRatio::Auto4k) => Ok(Some(S::Auto3k)), @@ -148,8 +149,6 @@ mod tests { use super::*; use crate::api::common_aspect_ratio::CommonAspectRatio; use crate::api::image_list_ref::ImageListRef; - use crate::errors::artcraft_router_error::ArtcraftRouterError; - use crate::errors::client_error::ClientError; use crate::test_helpers::base_seedream_5_lite_image_request; use artcraft_api_defs::generate::image::multi_function::bytedance_seedream_5_lite_multi_function_image_gen::{ BytedanceSeedream5LiteMultiFunctionImageGenImageSize as S, diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_gpt_image_1.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_gpt_image_1.rs index b35bde7b27..923b07e119 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_gpt_image_1.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_gpt_image_1.rs @@ -96,6 +96,7 @@ fn plan_image_size(aspect_ratio: Option) -> Option None, Some(CommonAspectRatio::Square) | Some(CommonAspectRatio::SquareHd) => Some(S::Square), diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_gpt_image_1p5.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_gpt_image_1p5.rs index 8283c0f56a..dda015a098 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_gpt_image_1p5.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_gpt_image_1p5.rs @@ -93,6 +93,7 @@ fn plan_image_size(aspect_ratio: Option) -> Option None, Some(CommonAspectRatio::Square) | Some(CommonAspectRatio::SquareHd) => Some(S::Square), diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_seedream_4.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_seedream_4.rs index fd04881759..b5bfc20b9a 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_seedream_4.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_seedream_4.rs @@ -84,7 +84,7 @@ fn plan_image_size( Some(CommonAspectRatio::Auto) => { if is_edit_mode { Ok(Some(S::Auto)) } else { Ok(Some(S::Square)) } } - Some(CommonAspectRatio::Auto2k) => Ok(Some(S::Auto2k)), + Some(CommonAspectRatio::Auto2k) | Some(CommonAspectRatio::Auto3k) => Ok(Some(S::Auto2k)), Some(CommonAspectRatio::Auto4k) => Ok(Some(S::Auto4k)), Some(CommonAspectRatio::Square) => Ok(Some(S::Square)), diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_seedream_4p5.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_seedream_4p5.rs index ee91d43e6d..8f143956b8 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_seedream_4p5.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_seedream_4p5.rs @@ -78,7 +78,7 @@ fn plan_image_size( None => Ok(None), // No bare Auto for v4.5 — fall back to Auto2k. - Some(CommonAspectRatio::Auto) | Some(CommonAspectRatio::Auto2k) => Ok(Some(S::Auto2k)), + Some(CommonAspectRatio::Auto) | Some(CommonAspectRatio::Auto2k) | Some(CommonAspectRatio::Auto3k) => Ok(Some(S::Auto2k)), Some(CommonAspectRatio::Auto4k) => Ok(Some(S::Auto4k)), Some(CommonAspectRatio::Square) => Ok(Some(S::Square)), diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_seedream_5_lite.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_seedream_5_lite.rs index 813d0bd57b..897b27dc45 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_seedream_5_lite.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_image/plan/fal/plan_generate_image_fal_seedream_5_lite.rs @@ -87,6 +87,7 @@ fn plan_image_size( }, Some(CommonAspectRatio::Auto) | Some(CommonAspectRatio::Auto2k) => Ok(Some(S::Auto2k)), + Some(CommonAspectRatio::Auto3k) => Ok(Some(S::Auto3k)), // No 4K — fall back to 3K. Some(CommonAspectRatio::Auto4k) => Ok(Some(S::Auto3k)), diff --git a/crates/schema/public/enums/src/common/generation/common_aspect_ratio.rs b/crates/schema/public/enums/src/common/generation/common_aspect_ratio.rs index d635947af4..bb2829fd08 100644 --- a/crates/schema/public/enums/src/common/generation/common_aspect_ratio.rs +++ b/crates/schema/public/enums/src/common/generation/common_aspect_ratio.rs @@ -34,6 +34,8 @@ pub enum CommonAspectRatio { Tall, #[serde(rename = "auto_2k")] Auto2k, + #[serde(rename = "auto_3k")] + Auto3k, #[serde(rename = "auto_4k")] Auto4k, SquareHd, @@ -61,6 +63,7 @@ impl CommonAspectRatio { Self::Wide => "wide", Self::Tall => "tall", Self::Auto2k => "auto_2k", + Self::Auto3k => "auto_3k", Self::Auto4k => "auto_4k", Self::SquareHd => "square_hd", } @@ -83,6 +86,7 @@ impl CommonAspectRatio { "wide" => Ok(Self::Wide), "tall" => Ok(Self::Tall), "auto_2k" => Ok(Self::Auto2k), + "auto_3k" => Ok(Self::Auto3k), "auto_4k" => Ok(Self::Auto4k), "square_hd" => Ok(Self::SquareHd), _ => Err(EnumError::CouldNotConvertFromString(value.to_string())), @@ -106,6 +110,7 @@ impl CommonAspectRatio { Self::Wide, Self::Tall, Self::Auto2k, + Self::Auto3k, Self::Auto4k, Self::SquareHd, ]) @@ -139,6 +144,7 @@ mod tests { assert_serialization(CommonAspectRatio::Wide, "wide"); assert_serialization(CommonAspectRatio::Tall, "tall"); assert_serialization(CommonAspectRatio::Auto2k, "auto_2k"); + assert_serialization(CommonAspectRatio::Auto3k, "auto_3k"); assert_serialization(CommonAspectRatio::Auto4k, "auto_4k"); assert_serialization(CommonAspectRatio::SquareHd, "square_hd"); } @@ -160,6 +166,7 @@ mod tests { assert_eq!(CommonAspectRatio::Wide.to_str(), "wide"); assert_eq!(CommonAspectRatio::Tall.to_str(), "tall"); assert_eq!(CommonAspectRatio::Auto2k.to_str(), "auto_2k"); + assert_eq!(CommonAspectRatio::Auto3k.to_str(), "auto_3k"); assert_eq!(CommonAspectRatio::Auto4k.to_str(), "auto_4k"); assert_eq!(CommonAspectRatio::SquareHd.to_str(), "square_hd"); } @@ -181,6 +188,7 @@ mod tests { assert_eq!(CommonAspectRatio::from_str("wide").unwrap(), CommonAspectRatio::Wide); assert_eq!(CommonAspectRatio::from_str("tall").unwrap(), CommonAspectRatio::Tall); assert_eq!(CommonAspectRatio::from_str("auto_2k").unwrap(), CommonAspectRatio::Auto2k); + assert_eq!(CommonAspectRatio::from_str("auto_3k").unwrap(), CommonAspectRatio::Auto3k); assert_eq!(CommonAspectRatio::from_str("auto_4k").unwrap(), CommonAspectRatio::Auto4k); assert_eq!(CommonAspectRatio::from_str("square_hd").unwrap(), CommonAspectRatio::SquareHd); } @@ -199,7 +207,7 @@ mod tests { #[test] fn all_variants() { let variants = CommonAspectRatio::all_variants(); - assert_eq!(variants.len(), 17); + assert_eq!(variants.len(), 18); } } diff --git a/crates/service/web/storyteller_web/src/configs/omni_gen/image_models.rs b/crates/service/web/storyteller_web/src/configs/omni_gen/image_models.rs index 20ed8284ec..e46c4f123b 100644 --- a/crates/service/web/storyteller_web/src/configs/omni_gen/image_models.rs +++ b/crates/service/web/storyteller_web/src/configs/omni_gen/image_models.rs @@ -289,6 +289,7 @@ fn build_omni_gen_image_models() -> Vec { image_refs_supported: Some(true), aspect_ratio_options: Some(vec![ CommonAspectRatio::Auto2k, + CommonAspectRatio::Auto3k, CommonAspectRatio::Square, CommonAspectRatio::SquareHd, CommonAspectRatio::WideFourByThree, @@ -297,7 +298,7 @@ fn build_omni_gen_image_models() -> Vec { CommonAspectRatio::TallNineBySixteen, ]), aspect_ratio_default: Some(CommonAspectRatio::Square), - aspect_ratio_default_when_editing: Some(CommonAspectRatio::Auto2k), + aspect_ratio_default_when_editing: Some(CommonAspectRatio::Auto3k), batch_size_min: Some(1), batch_size_max: Some(4), batch_size_default: Some(1), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/cost_estimate/image/estimate_image_cost_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/cost_estimate/image/estimate_image_cost_handler.rs index e8e79f8454..ca64fd4353 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/cost_estimate/image/estimate_image_cost_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/cost_estimate/image/estimate_image_cost_handler.rs @@ -159,6 +159,7 @@ fn map_aspect_ratio(ar: CommonAspectRatio) -> RouterAspectRatio { CommonAspectRatio::Wide => RouterAspectRatio::Wide, CommonAspectRatio::Tall => RouterAspectRatio::Tall, CommonAspectRatio::Auto2k => RouterAspectRatio::Auto2k, + CommonAspectRatio::Auto3k => RouterAspectRatio::Auto3k, CommonAspectRatio::Auto4k => RouterAspectRatio::Auto4k, CommonAspectRatio::SquareHd => RouterAspectRatio::SquareHd, } diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/cost_estimate/video/estimate_video_cost_handler.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/cost_estimate/video/estimate_video_cost_handler.rs index 4dce7e82b2..e87f55b335 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/generate/cost_estimate/video/estimate_video_cost_handler.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/generate/cost_estimate/video/estimate_video_cost_handler.rs @@ -168,6 +168,7 @@ fn map_aspect_ratio(ar: CommonAspectRatio) -> RouterAspectRatio { CommonAspectRatio::Wide => RouterAspectRatio::Wide, CommonAspectRatio::Tall => RouterAspectRatio::Tall, CommonAspectRatio::Auto2k => RouterAspectRatio::Auto2k, + CommonAspectRatio::Auto3k => RouterAspectRatio::Auto3k, CommonAspectRatio::Auto4k => RouterAspectRatio::Auto4k, CommonAspectRatio::SquareHd => RouterAspectRatio::SquareHd, }