diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_kling3p0_pro.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_kling3p0_pro.rs index e313c67e1a..30de768ff1 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_kling3p0_pro.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_kling3p0_pro.rs @@ -58,10 +58,10 @@ mod tests { use crate::api::common_video_model::CommonVideoModel; use crate::api::provider::Provider; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; - use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; + use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; fn estimate_usd_cents(duration_seconds: u16) -> u64 { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { model: CommonVideoModel::Kling3p0Pro, provider: Provider::Artcraft, prompt: None, diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_kling3p0_standard.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_kling3p0_standard.rs index c5fa6f029b..a621de661c 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_kling3p0_standard.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_kling3p0_standard.rs @@ -58,10 +58,10 @@ mod tests { use crate::api::common_video_model::CommonVideoModel; use crate::api::provider::Provider; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; - use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; + use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; fn estimate_usd_cents(duration_seconds: u16) -> u64 { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { model: CommonVideoModel::Kling3p0Standard, provider: Provider::Artcraft, prompt: None, diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_seedance1p5_pro.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_seedance1p5_pro.rs index 00d67d55e6..0b47f8d5c7 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_seedance1p5_pro.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_seedance1p5_pro.rs @@ -61,10 +61,10 @@ mod tests { use crate::api::common_video_model::CommonVideoModel; use crate::api::provider::Provider; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; - use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; + use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; fn estimate_usd_cents(duration_seconds: u16) -> u64 { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { model: CommonVideoModel::Seedance1p5Pro, provider: Provider::Artcraft, prompt: None, diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_seedance2p0.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_seedance2p0.rs index a11dd4c105..aa76282623 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_seedance2p0.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_seedance2p0.rs @@ -66,14 +66,14 @@ mod tests { use crate::api::common_video_model::CommonVideoModel; use crate::api::provider::Provider; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; - use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; + use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; fn estimate_usd_cents( duration_seconds: u16, video_batch_count: u16, resolution: Option, ) -> u64 { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { model: CommonVideoModel::Seedance2p0, provider: Provider::Artcraft, prompt: None, diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_seedance2p0_fast.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_seedance2p0_fast.rs index 216c5d5178..8861ff428e 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_seedance2p0_fast.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/artcraft/estimate_video_cost_artcraft_seedance2p0_fast.rs @@ -66,14 +66,14 @@ mod tests { use crate::api::common_video_model::CommonVideoModel; use crate::api::provider::Provider; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; - use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; + use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; fn estimate_usd_cents( duration_seconds: u16, video_batch_count: u16, resolution: Option, ) -> u64 { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { model: CommonVideoModel::Seedance2p0Fast, provider: Provider::Artcraft, prompt: None, @@ -104,7 +104,7 @@ mod tests { video_batch_count: u16, resolution: Option, ) -> u64 { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { model: CommonVideoModel::Seedance2p0Fast, provider: Provider::Artcraft, prompt: None, @@ -135,7 +135,7 @@ mod tests { video_batch_count: u16, resolution: Option, ) -> u64 { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { model: CommonVideoModel::Seedance2p0, provider: Provider::Artcraft, prompt: None, @@ -213,7 +213,7 @@ mod tests { #[test] fn fast_1080p_error_out_rejects() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { model: CommonVideoModel::Seedance2p0Fast, provider: Provider::Artcraft, prompt: None, diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/seedance2pro/estimate_video_cost_seedance2pro_seedance2p0.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/seedance2pro/estimate_video_cost_seedance2pro_seedance2p0.rs index 255f6e6df1..b5616f8082 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/seedance2pro/estimate_video_cost_seedance2pro_seedance2p0.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/seedance2pro/estimate_video_cost_seedance2pro_seedance2p0.rs @@ -23,14 +23,14 @@ mod tests { use crate::api::common_video_model::CommonVideoModel; use crate::api::provider::Provider; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; - use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; + use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; fn estimate_usd_cents( duration_seconds: u16, video_batch_count: u16, resolution: Option, ) -> u64 { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { model: CommonVideoModel::Seedance2p0, provider: Provider::Seedance2Pro, prompt: None, diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/seedance2pro/estimate_video_cost_seedance2pro_seedance2p0_fast.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/seedance2pro/estimate_video_cost_seedance2pro_seedance2p0_fast.rs index 590af86773..9537202312 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/seedance2pro/estimate_video_cost_seedance2pro_seedance2p0_fast.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/cost/seedance2pro/estimate_video_cost_seedance2pro_seedance2p0_fast.rs @@ -23,14 +23,14 @@ mod tests { use crate::api::common_video_model::CommonVideoModel; use crate::api::provider::Provider; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; - use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; + use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; fn estimate_usd_cents( duration_seconds: u16, video_batch_count: u16, resolution: Option, ) -> u64 { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { model: CommonVideoModel::Seedance2p0Fast, provider: Provider::Seedance2Pro, prompt: None, @@ -61,7 +61,7 @@ mod tests { video_batch_count: u16, resolution: Option, ) -> u64 { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { model: CommonVideoModel::Seedance2p0, provider: Provider::Seedance2Pro, prompt: None, diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/execute/artcraft/generate_video_artcraft_seedance2p0.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/execute/artcraft/generate_video_artcraft_seedance2p0.rs index 7139cd2e2f..87b95e45dd 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/execute/artcraft/generate_video_artcraft_seedance2p0.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/execute/artcraft/generate_video_artcraft_seedance2p0.rs @@ -61,7 +61,7 @@ mod tests { #[ignore] // manually run — fires a real API request and incurs cost async fn test_text_to_video_seedance_2p0() { let client = get_artcraft_client(); - let request = crate::generate::generate_video::generate_video_request::GenerateVideoRequest { + let request = crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::WideSixteenByNine), video_batch_count: Some(1), prompt: Some("a cat walking through a cyberpunk city at night".to_string()), @@ -84,7 +84,7 @@ mod tests { #[ignore] // manually run — fires a real API request and incurs cost async fn test_text_to_video_seedance_2p0_batch_two() { let client = get_artcraft_client(); - let request = crate::generate::generate_video::generate_video_request::GenerateVideoRequest { + let request = crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::Square), video_batch_count: Some(2), prompt: Some("a dog surfing a wave, cinematic".to_string()), diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/execute/artcraft/generate_video_artcraft_seedance2p0_fast.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/execute/artcraft/generate_video_artcraft_seedance2p0_fast.rs index 68a43669b6..812e63c562 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/execute/artcraft/generate_video_artcraft_seedance2p0_fast.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/execute/artcraft/generate_video_artcraft_seedance2p0_fast.rs @@ -84,13 +84,13 @@ mod tests { use crate::api::common_resolution::CommonResolution; use crate::api::common_video_model::CommonVideoModel; use crate::api::image_ref::ImageRef; - use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; + use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use crate::test_helpers::{base_video_request, get_artcraft_client}; use tokens::tokens::media_files::MediaFileToken; - fn fast_request() -> GenerateVideoRequest { - GenerateVideoRequest { + fn fast_request() -> GenerateVideoRequestBuilder { + GenerateVideoRequestBuilder { model: CommonVideoModel::Seedance2p0Fast, prompt: Some("a corgi walking through a cyberpunk city at night".to_string()), ..base_video_request() @@ -101,7 +101,7 @@ mod tests { #[ignore] // manually run — fires a real API request and incurs cost async fn test_text_to_video_fast_720p_wide() { let client = get_artcraft_client(); - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::WideSixteenByNine), resolution: Some(CommonResolution::SevenTwentyP), video_batch_count: Some(1), @@ -121,7 +121,7 @@ mod tests { #[ignore] // manually run — fires a real API request and incurs cost async fn test_text_to_video_fast_480p_square() { let client = get_artcraft_client(); - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::Square), resolution: Some(CommonResolution::FourEightyP), video_batch_count: Some(1), @@ -141,7 +141,7 @@ mod tests { #[ignore] // manually run — fires a real API request and incurs cost async fn test_image_to_video_fast_with_start_keyframe() { let client = get_artcraft_client(); - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { start_frame: Some(ImageRef::MediaFileToken( MediaFileToken::new("mf_test_keyframe_placeholder".to_string()), )), @@ -164,7 +164,7 @@ mod tests { #[ignore] // manually run — fires a real API request and incurs cost async fn test_text_to_video_fast_batch_2() { let client = get_artcraft_client(); - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::TallNineBySixteen), resolution: Some(CommonResolution::SevenTwentyP), video_batch_count: Some(2), @@ -187,7 +187,7 @@ mod tests { #[ignore] // manually run — fires a real API request and incurs cost async fn test_text_to_video_fast_with_reference_images() { let client = get_artcraft_client(); - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { reference_images: Some(crate::api::image_list_ref::ImageListRef::MediaFileTokens(vec![ MediaFileToken::new("mf_test_ref_image_placeholder".to_string()), ])), @@ -208,7 +208,7 @@ mod tests { #[test] fn plan_includes_resolution() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { resolution: Some(CommonResolution::FourEightyP), ..fast_request() }; @@ -222,7 +222,7 @@ mod tests { use crate::api::character_list_ref::CharacterListRef; use tokens::tokens::characters::CharacterToken; - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { reference_character_tokens: Some(CharacterListRef::CharacterTokens(vec![ CharacterToken::new("char_test123".to_string()), ])), diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/generate_video_request.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/generate_video_request_builder.rs similarity index 99% rename from crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/generate_video_request.rs rename to crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/generate_video_request_builder.rs index 477f4b4fa3..480955e404 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/generate_video_request.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/generate_video_request_builder.rs @@ -52,7 +52,7 @@ use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; /// This works across multiple providers by shaping a generic "GenerateVideoRequest" into a provider-specific plan. /// That plan can then be used to return a cost estimate for that given provider or return a struct that can be used to send a real generation request. #[derive(Clone, Debug)] -pub struct GenerateVideoRequest { +pub struct GenerateVideoRequestBuilder { /// Which model to use. pub model: CommonVideoModel, @@ -109,7 +109,7 @@ pub struct GenerateVideoRequest { pub idempotency_token: Option, } -impl GenerateVideoRequest { +impl GenerateVideoRequestBuilder { /// Read the video generation request, construct a plan, then yield a means to execute it. pub fn build(&self) -> Result { match self.provider { diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/mod.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/mod.rs index be1aedc498..a631f59199 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/mod.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/mod.rs @@ -1,6 +1,6 @@ pub mod cost; pub mod execute; -pub mod generate_video_request; +pub mod generate_video_request_builder; pub mod generate_video_response; pub mod plan; pub mod video_generation_cost_estimate; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling3p0_pro.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling3p0_pro.rs index e50e813805..b057a35eeb 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling3p0_pro.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling3p0_pro.rs @@ -3,7 +3,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::multi_function::kling_3p0_pro_multi_function_video_gen::{ Kling3p0ProMultiFunctionVideoGenAspectRatio, @@ -24,7 +24,7 @@ pub struct PlanArtcraftKling3p0Pro { } pub fn plan_generate_video_artcraft_kling3p0_pro( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; @@ -166,11 +166,11 @@ mod tests { use crate::api::provider::Provider; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; - use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; + use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; - fn base_request() -> GenerateVideoRequest { - GenerateVideoRequest { + fn base_request() -> GenerateVideoRequestBuilder { + GenerateVideoRequestBuilder { model: CommonVideoModel::Kling3p0Pro, provider: Provider::Artcraft, prompt: Some("a cat in space".to_string()), @@ -193,7 +193,7 @@ mod tests { #[test] fn aspect_ratio_direct_16x9() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::WideSixteenByNine), ..base_request() }; @@ -203,7 +203,7 @@ mod tests { #[test] fn aspect_ratio_direct_9x16() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::TallNineBySixteen), ..base_request() }; @@ -213,7 +213,7 @@ mod tests { #[test] fn aspect_ratio_direct_square() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::Square), ..base_request() }; @@ -223,7 +223,7 @@ mod tests { #[test] fn aspect_ratio_error_out_on_unsupported() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::WideThreeByTwo), request_mismatch_mitigation_strategy: RequestMismatchMitigationStrategy::ErrorOut, ..base_request() @@ -238,7 +238,7 @@ mod tests { #[test] fn duration_valid_range() { for d in 3..=15 { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { duration_seconds: Some(d), ..base_request() }; @@ -249,7 +249,7 @@ mod tests { #[test] fn duration_out_of_range_error_out() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { duration_seconds: Some(16), request_mismatch_mitigation_strategy: RequestMismatchMitigationStrategy::ErrorOut, ..base_request() @@ -263,7 +263,7 @@ mod tests { #[test] fn url_image_ref_returns_error() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { start_frame: Some(ImageRef::Url("https://example.com/image.jpg".to_string())), ..base_request() }; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling3p0_standard.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling3p0_standard.rs index e570fb952f..16c42a6afa 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling3p0_standard.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling3p0_standard.rs @@ -3,7 +3,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::multi_function::kling_3p0_standard_multi_function_video_gen::{ Kling3p0StandardMultiFunctionVideoGenAspectRatio, @@ -24,7 +24,7 @@ pub struct PlanArtcraftKling3p0Standard { } pub fn plan_generate_video_artcraft_kling3p0_standard( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; @@ -166,11 +166,11 @@ mod tests { use crate::api::provider::Provider; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; - use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; + use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; - fn base_request() -> GenerateVideoRequest { - GenerateVideoRequest { + fn base_request() -> GenerateVideoRequestBuilder { + GenerateVideoRequestBuilder { model: CommonVideoModel::Kling3p0Standard, provider: Provider::Artcraft, prompt: Some("a cat in space".to_string()), @@ -193,7 +193,7 @@ mod tests { #[test] fn aspect_ratio_direct_16x9() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::WideSixteenByNine), ..base_request() }; @@ -203,7 +203,7 @@ mod tests { #[test] fn aspect_ratio_direct_9x16() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::TallNineBySixteen), ..base_request() }; @@ -213,7 +213,7 @@ mod tests { #[test] fn aspect_ratio_direct_square() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::Square), ..base_request() }; @@ -223,7 +223,7 @@ mod tests { #[test] fn aspect_ratio_error_out_on_unsupported() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::WideThreeByTwo), request_mismatch_mitigation_strategy: RequestMismatchMitigationStrategy::ErrorOut, ..base_request() @@ -238,7 +238,7 @@ mod tests { #[test] fn duration_valid_range() { for d in 3..=15 { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { duration_seconds: Some(d), ..base_request() }; @@ -249,7 +249,7 @@ mod tests { #[test] fn duration_out_of_range_error_out() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { duration_seconds: Some(16), request_mismatch_mitigation_strategy: RequestMismatchMitigationStrategy::ErrorOut, ..base_request() @@ -263,7 +263,7 @@ mod tests { #[test] fn url_image_ref_returns_error() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { start_frame: Some(ImageRef::Url("https://example.com/image.jpg".to_string())), ..base_request() }; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_1_6_pro.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_1_6_pro.rs index 480fa5617f..f8efcb6008 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_1_6_pro.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_1_6_pro.rs @@ -3,7 +3,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::generate_kling_1_6_pro_image_to_video::{ GenerateKling16ProAspectRatio, GenerateKling16ProDuration, @@ -21,7 +21,7 @@ pub struct PlanArtcraftKling16Pro { } pub fn plan_generate_video_artcraft_kling_1_6_pro( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_2_1_master.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_2_1_master.rs index ad2777e824..f5988bce41 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_2_1_master.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_2_1_master.rs @@ -3,7 +3,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::generate_kling_2_1_master_image_to_video::{ GenerateKling21MasterAspectRatio, GenerateKling21MasterDuration, @@ -20,7 +20,7 @@ pub struct PlanArtcraftKling21Master { } pub fn plan_generate_video_artcraft_kling_2_1_master( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_2_1_pro.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_2_1_pro.rs index 1de7ffd909..94acbadb49 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_2_1_pro.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_2_1_pro.rs @@ -3,7 +3,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::generate_kling_2_1_pro_image_to_video::{ GenerateKling21ProAspectRatio, GenerateKling21ProDuration, @@ -21,7 +21,7 @@ pub struct PlanArtcraftKling21Pro { } pub fn plan_generate_video_artcraft_kling_2_1_pro( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_2_5_turbo_pro.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_2_5_turbo_pro.rs index 3a37262e37..7c5f16042a 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_2_5_turbo_pro.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_2_5_turbo_pro.rs @@ -3,7 +3,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::multi_function::kling_2_5_turbo_multi_function_video_gen::{ Kling2p5TurboProMultiFunctionVideoGenAspectRatio, Kling2p5TurboProMultiFunctionVideoGenDuration, @@ -22,7 +22,7 @@ pub struct PlanArtcraftKling2p5TurboPro { } pub fn plan_generate_video_artcraft_kling_2_5_turbo_pro( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_2_6_pro.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_2_6_pro.rs index 5417c20bb2..b123d97411 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_2_6_pro.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_kling_2_6_pro.rs @@ -3,7 +3,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::multi_function::kling_2_6_multi_function_video_gen::{ Kling2p6ProMultiFunctionVideoGenAspectRatio, Kling2p6ProMultiFunctionVideoGenDuration, @@ -22,7 +22,7 @@ pub struct PlanArtcraftKling2p6Pro { } pub fn plan_generate_video_artcraft_kling_2_6_pro( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_seedance1p5_pro.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_seedance1p5_pro.rs index 1741a9dfd3..f800e68b1a 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_seedance1p5_pro.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_seedance1p5_pro.rs @@ -3,7 +3,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::multi_function::seedance_1p5_pro_multi_function_video_gen::{ Seedance1p5ProMultiFunctionVideoGenAspectRatio, @@ -25,7 +25,7 @@ pub struct PlanArtcraftSeedance1p5Pro { } pub fn plan_generate_video_artcraft_seedance1p5_pro( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; @@ -184,11 +184,11 @@ mod tests { use crate::api::provider::Provider; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; - use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; + use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; - fn base_seedance_1p5_pro_request() -> GenerateVideoRequest { - GenerateVideoRequest { + fn base_seedance_1p5_pro_request() -> GenerateVideoRequestBuilder { + GenerateVideoRequestBuilder { model: CommonVideoModel::Seedance1p5Pro, provider: Provider::Artcraft, prompt: Some("a cat in space".to_string()), @@ -211,7 +211,7 @@ mod tests { #[test] fn aspect_ratio_direct_16x9() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::WideSixteenByNine), ..base_seedance_1p5_pro_request() }; @@ -221,7 +221,7 @@ mod tests { #[test] fn aspect_ratio_direct_9x16() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::TallNineBySixteen), ..base_seedance_1p5_pro_request() }; @@ -231,7 +231,7 @@ mod tests { #[test] fn aspect_ratio_direct_21x9() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::WideTwentyOneByNine), ..base_seedance_1p5_pro_request() }; @@ -241,7 +241,7 @@ mod tests { #[test] fn aspect_ratio_error_out_on_unsupported() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::WideThreeByTwo), request_mismatch_mitigation_strategy: RequestMismatchMitigationStrategy::ErrorOut, ..base_seedance_1p5_pro_request() @@ -256,7 +256,7 @@ mod tests { #[test] fn duration_valid_range() { for d in 4..=12 { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { duration_seconds: Some(d), ..base_seedance_1p5_pro_request() }; @@ -267,7 +267,7 @@ mod tests { #[test] fn duration_out_of_range_error_out() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { duration_seconds: Some(13), request_mismatch_mitigation_strategy: RequestMismatchMitigationStrategy::ErrorOut, ..base_seedance_1p5_pro_request() @@ -281,7 +281,7 @@ mod tests { #[test] fn url_image_ref_accepted_for_cost_path() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { start_frame: Some(ImageRef::Url("https://example.com/image.jpg".to_string())), ..base_seedance_1p5_pro_request() }; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_seedance2p0.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_seedance2p0.rs index ba5e72a6cb..b240f52491 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_seedance2p0.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_seedance2p0.rs @@ -7,7 +7,7 @@ use crate::api::video_list_ref::VideoListRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::multi_function::seedance_2p0_multi_function_video_gen::{ Seedance2p0AspectRatio, Seedance2p0BatchCount, @@ -32,7 +32,7 @@ pub struct PlanArtcraftSeedance2p0 { } pub fn plan_generate_video_artcraft_seedance2p0( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; @@ -286,7 +286,7 @@ mod tests { #[test] fn aspect_ratio_direct_16x9() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::WideSixteenByNine), ..base_video_request() }; @@ -296,7 +296,7 @@ mod tests { #[test] fn aspect_ratio_direct_9x16() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::TallNineBySixteen), ..base_video_request() }; @@ -306,7 +306,7 @@ mod tests { #[test] fn aspect_ratio_direct_square() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::Square), ..base_video_request() }; @@ -321,7 +321,7 @@ mod tests { RequestMismatchMitigationStrategy::PayMoreUpgrade, RequestMismatchMitigationStrategy::PayLessDowngrade, ] { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::WideThreeByTwo), request_mismatch_mitigation_strategy: strategy, ..base_video_request() @@ -336,7 +336,7 @@ mod tests { #[test] fn aspect_ratio_error_out_on_unsupported() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::WideThreeByTwo), request_mismatch_mitigation_strategy: RequestMismatchMitigationStrategy::ErrorOut, ..base_video_request() @@ -355,7 +355,7 @@ mod tests { RequestMismatchMitigationStrategy::PayMoreUpgrade, RequestMismatchMitigationStrategy::PayLessDowngrade, ] { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { video_batch_count: Some(0), request_mismatch_mitigation_strategy: strategy, ..base_video_request() @@ -370,22 +370,22 @@ mod tests { #[test] fn batch_count_direct_mapping() { - let req = GenerateVideoRequest { video_batch_count: Some(1), ..base_video_request() }; + let req = GenerateVideoRequestBuilder { video_batch_count: Some(1), ..base_video_request() }; let VideoGenerationPlan::ArtcraftSeedance2p0(plan) = req.build().unwrap() else { panic!("wrong variant") }; assert!(matches!(plan.batch_count, Seedance2p0BatchCount::One)); - let req = GenerateVideoRequest { video_batch_count: Some(2), ..base_video_request() }; + let req = GenerateVideoRequestBuilder { video_batch_count: Some(2), ..base_video_request() }; let VideoGenerationPlan::ArtcraftSeedance2p0(plan) = req.build().unwrap() else { panic!("wrong variant") }; assert!(matches!(plan.batch_count, Seedance2p0BatchCount::Two)); - let req = GenerateVideoRequest { video_batch_count: Some(4), ..base_video_request() }; + let req = GenerateVideoRequestBuilder { video_batch_count: Some(4), ..base_video_request() }; let VideoGenerationPlan::ArtcraftSeedance2p0(plan) = req.build().unwrap() else { panic!("wrong variant") }; assert!(matches!(plan.batch_count, Seedance2p0BatchCount::Four)); } #[test] fn batch_count_three_upgrade_rounds_to_four() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { video_batch_count: Some(3), request_mismatch_mitigation_strategy: RequestMismatchMitigationStrategy::PayMoreUpgrade, ..base_video_request() @@ -396,7 +396,7 @@ mod tests { #[test] fn batch_count_three_downgrade_rounds_to_two() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { video_batch_count: Some(3), request_mismatch_mitigation_strategy: RequestMismatchMitigationStrategy::PayLessDowngrade, ..base_video_request() @@ -407,7 +407,7 @@ mod tests { #[test] fn url_image_ref_returns_error() { - let request = GenerateVideoRequest { + let request = GenerateVideoRequestBuilder { start_frame: Some(ImageRef::Url("https://example.com/image.jpg".to_string())), ..base_video_request() }; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_seedance2p0_fast.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_seedance2p0_fast.rs index d00af71b0f..ccaf40759b 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_seedance2p0_fast.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_seedance2p0_fast.rs @@ -7,7 +7,7 @@ use crate::api::video_list_ref::VideoListRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::plan::artcraft::plan_generate_video_artcraft_seedance2p0::PlanArtcraftSeedance2p0; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::multi_function::seedance_2p0_multi_function_video_gen::{ @@ -17,7 +17,7 @@ use tokens::tokens::characters::CharacterToken; use tokens::tokens::media_files::MediaFileToken; pub fn plan_generate_video_artcraft_seedance2p0_fast( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; @@ -249,14 +249,14 @@ mod tests { use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; - use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; + use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::multi_function::seedance_2p0_multi_function_video_gen::{ Seedance2p0AspectRatio, Seedance2p0BatchCount, }; - fn base_request() -> GenerateVideoRequest { - GenerateVideoRequest { + fn base_request() -> GenerateVideoRequestBuilder { + GenerateVideoRequestBuilder { model: CommonVideoModel::Seedance2p0Fast, provider: Provider::Artcraft, prompt: Some("a cat in space".to_string()), @@ -295,7 +295,7 @@ mod tests { #[test] fn aspect_ratio_16x9() { - let req = GenerateVideoRequest { + let req = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::WideSixteenByNine), ..base_request() }; @@ -306,7 +306,7 @@ mod tests { #[test] fn aspect_ratio_9x16() { - let req = GenerateVideoRequest { + let req = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::TallNineBySixteen), ..base_request() }; @@ -317,7 +317,7 @@ mod tests { #[test] fn aspect_ratio_square() { - let req = GenerateVideoRequest { + let req = GenerateVideoRequestBuilder { aspect_ratio: Some(CommonAspectRatio::Square), ..base_request() }; @@ -336,7 +336,7 @@ mod tests { #[test] fn batch_count_2() { - let req = GenerateVideoRequest { video_batch_count: Some(2), ..base_request() }; + let req = GenerateVideoRequestBuilder { video_batch_count: Some(2), ..base_request() }; let plan = req.build().unwrap(); let VideoGenerationPlan::ArtcraftSeedance2p0Fast(p) = plan else { panic!("wrong variant") }; assert!(matches!(p.batch_count, Seedance2p0BatchCount::Two)); @@ -344,7 +344,7 @@ mod tests { #[test] fn batch_count_4() { - let req = GenerateVideoRequest { video_batch_count: Some(4), ..base_request() }; + let req = GenerateVideoRequestBuilder { video_batch_count: Some(4), ..base_request() }; let plan = req.build().unwrap(); let VideoGenerationPlan::ArtcraftSeedance2p0Fast(p) = plan else { panic!("wrong variant") }; assert!(matches!(p.batch_count, Seedance2p0BatchCount::Four)); @@ -352,7 +352,7 @@ mod tests { #[test] fn duration_in_range() { - let req = GenerateVideoRequest { duration_seconds: Some(10), ..base_request() }; + let req = GenerateVideoRequestBuilder { duration_seconds: Some(10), ..base_request() }; let plan = req.build().unwrap(); let VideoGenerationPlan::ArtcraftSeedance2p0Fast(p) = plan else { panic!("wrong variant") }; assert_eq!(p.duration_seconds, Some(10)); @@ -360,7 +360,7 @@ mod tests { #[test] fn duration_clamped_to_max() { - let req = GenerateVideoRequest { duration_seconds: Some(99), ..base_request() }; + let req = GenerateVideoRequestBuilder { duration_seconds: Some(99), ..base_request() }; let plan = req.build().unwrap(); let VideoGenerationPlan::ArtcraftSeedance2p0Fast(p) = plan else { panic!("wrong variant") }; assert_eq!(p.duration_seconds, Some(15)); @@ -368,7 +368,7 @@ mod tests { #[test] fn url_image_ref_returns_error() { - let req = GenerateVideoRequest { + let req = GenerateVideoRequestBuilder { start_frame: Some(ImageRef::Url("https://example.com/image.jpg".to_string())), ..base_request() }; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_seedance_1_0_lite.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_seedance_1_0_lite.rs index 95458eb237..3b3ad01f7e 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_seedance_1_0_lite.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_seedance_1_0_lite.rs @@ -4,7 +4,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::generate_seedance_1_0_lite_image_to_video::{ GenerateSeedance10LiteAspectRatio, GenerateSeedance10LiteDuration, @@ -24,7 +24,7 @@ pub struct PlanArtcraftSeedance10Lite { } pub fn plan_generate_video_artcraft_seedance_1_0_lite( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_sora_2.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_sora_2.rs index 4322fe2027..37f341d02b 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_sora_2.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_sora_2.rs @@ -4,7 +4,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::multi_function::sora_2_multi_function_video_gen::{ Sora2MultiFunctionVideoGenAspectRatio, Sora2MultiFunctionVideoGenDuration, @@ -23,7 +23,7 @@ pub struct PlanArtcraftSora2 { } pub fn plan_generate_video_artcraft_sora_2( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_sora_2_pro.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_sora_2_pro.rs index e7de7c9861..59b99cb38b 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_sora_2_pro.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_sora_2_pro.rs @@ -4,7 +4,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::multi_function::sora_2_pro_multi_function_video_gen::{ Sora2ProMultiFunctionVideoGenAspectRatio, Sora2ProMultiFunctionVideoGenDuration, @@ -23,7 +23,7 @@ pub struct PlanArtcraftSora2Pro { } pub fn plan_generate_video_artcraft_sora_2_pro( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_2.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_2.rs index e0b7db687e..4fe85ed08b 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_2.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_2.rs @@ -3,7 +3,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::generate_veo_2_image_to_video::{ GenerateVeo2AspectRatio, GenerateVeo2Duration, @@ -23,7 +23,7 @@ pub struct PlanArtcraftVeo2 { } pub fn plan_generate_video_artcraft_veo_2( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_3.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_3.rs index e45ca71d60..1a13763ee1 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_3.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_3.rs @@ -4,7 +4,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::generate_veo_3_image_to_video::{ GenerateVeo3AspectRatio, GenerateVeo3Duration, GenerateVeo3Resolution, @@ -29,7 +29,7 @@ pub struct PlanArtcraftVeo3 { } pub fn plan_generate_video_artcraft_veo_3( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_3_fast.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_3_fast.rs index c35f1a2cdf..b3e0c985a1 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_3_fast.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_3_fast.rs @@ -4,7 +4,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::generate_veo_3_fast_image_to_video::{ GenerateVeo3FastAspectRatio, GenerateVeo3FastDuration, GenerateVeo3FastResolution, @@ -23,7 +23,7 @@ pub struct PlanArtcraftVeo3Fast { } pub fn plan_generate_video_artcraft_veo_3_fast( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_3p1.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_3p1.rs index c01b85b0da..8e989c65c0 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_3p1.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_3p1.rs @@ -4,7 +4,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::multi_function::veo_3p1_multi_function_video_gen::{ Veo3p1MultiFunctionVideoGenAspectRatio, Veo3p1MultiFunctionVideoGenDuration, @@ -26,14 +26,14 @@ pub struct PlanArtcraftVeo3p1 { } pub fn plan_generate_video_artcraft_veo_3p1( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let plan = build_plan_artcraft_veo_3p1(request)?; Ok(VideoGenerationPlan::ArtcraftVeo3p1(plan)) } pub(crate) fn build_plan_artcraft_veo_3p1( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_3p1_fast.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_3p1_fast.rs index 38d24f6272..0dd4e7c8f5 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_3p1_fast.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/artcraft/plan_generate_video_artcraft_veo_3p1_fast.rs @@ -4,7 +4,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use artcraft_api_defs::generate::video::multi_function::veo_3p1_fast_multi_function_video_gen::{ Veo3p1FastMultiFunctionVideoGenAspectRatio, Veo3p1FastMultiFunctionVideoGenDuration, @@ -26,7 +26,7 @@ pub struct PlanArtcraftVeo3p1Fast { } pub fn plan_generate_video_artcraft_veo_3p1_fast( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_1_6_pro.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_1_6_pro.rs index f717d0d38c..a870f00172 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_1_6_pro.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_1_6_pro.rs @@ -3,7 +3,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use fal_client::requests::webhook::video::image::enqueue_kling_v1p6_pro_image_to_video_webhook::{ Kling1p6ProAspectRatio, Kling1p6ProDuration, @@ -19,7 +19,7 @@ pub struct PlanFalKling16Pro { } pub fn plan_generate_video_fal_kling_1_6_pro( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_2_1_master.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_2_1_master.rs index a6cc6a2c72..aecdcdd681 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_2_1_master.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_2_1_master.rs @@ -2,7 +2,7 @@ use crate::api::common_aspect_ratio::CommonAspectRatio; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::plan::fal::plan_generate_video_fal_kling_1_6_pro::require_url; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use fal_client::requests::webhook::video::image::enqueue_kling_v2p1_master_image_to_video_webhook::{ @@ -18,7 +18,7 @@ pub struct PlanFalKling21Master { } pub fn plan_generate_video_fal_kling_2_1_master( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_2_1_pro.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_2_1_pro.rs index 40de42270e..29c82dcd91 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_2_1_pro.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_2_1_pro.rs @@ -2,7 +2,7 @@ use crate::api::common_aspect_ratio::CommonAspectRatio; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::plan::fal::plan_generate_video_fal_kling_1_6_pro::{optional_url, require_url}; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use fal_client::requests::webhook::video::image::enqueue_kling_v2p1_pro_image_to_video_webhook::{ @@ -19,7 +19,7 @@ pub struct PlanFalKling21Pro { } pub fn plan_generate_video_fal_kling_2_1_pro( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_2_5_turbo_pro.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_2_5_turbo_pro.rs index 699710a91e..1dc6f21435 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_2_5_turbo_pro.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_2_5_turbo_pro.rs @@ -2,7 +2,7 @@ use crate::api::common_aspect_ratio::CommonAspectRatio; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::plan::fal::plan_generate_video_fal_kling_1_6_pro::optional_url; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; @@ -38,7 +38,7 @@ pub struct PlanFalKling2p5TurboPro { } pub fn plan_generate_video_fal_kling_2_5_turbo_pro( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_2_6_pro.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_2_6_pro.rs index f5a202defe..aab4a2c704 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_2_6_pro.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_2_6_pro.rs @@ -2,7 +2,7 @@ use crate::api::common_aspect_ratio::CommonAspectRatio; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::plan::fal::plan_generate_video_fal_kling_1_6_pro::optional_url; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; @@ -36,7 +36,7 @@ pub struct PlanFalKling2p6Pro { } pub fn plan_generate_video_fal_kling_2_6_pro( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_3p0_pro.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_3p0_pro.rs index ddb74ec5ea..751457cf2b 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_3p0_pro.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_3p0_pro.rs @@ -2,7 +2,7 @@ use crate::api::common_aspect_ratio::CommonAspectRatio; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::plan::fal::plan_generate_video_fal_kling_1_6_pro::optional_url; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; @@ -37,7 +37,7 @@ pub struct PlanFalKling3p0Pro { } pub fn plan_generate_video_fal_kling_3p0_pro( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let inner = build_kling_3p0_plan(request, "Kling 3.0 Pro")?; Ok(VideoGenerationPlan::FalKling3p0Pro(PlanFalKling3p0Pro { @@ -60,7 +60,7 @@ pub(crate) struct Kling3p0Common { } pub(crate) fn build_kling_3p0_plan( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, _model_label: &'static str, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_3p0_standard.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_3p0_standard.rs index e1d3a960dc..eb98ea56f0 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_3p0_standard.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_kling_3p0_standard.rs @@ -1,5 +1,5 @@ use crate::errors::artcraft_router_error::ArtcraftRouterError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::plan::fal::plan_generate_video_fal_kling_3p0_pro::{ build_kling_3p0_plan, FalKling3p0AspectRatio, FalKling3p0Duration, FalKling3p0Mode, }; @@ -16,7 +16,7 @@ pub struct PlanFalKling3p0Standard { } pub fn plan_generate_video_fal_kling_3p0_standard( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let inner = build_kling_3p0_plan(request, "Kling 3.0 Standard")?; Ok(VideoGenerationPlan::FalKling3p0Standard(PlanFalKling3p0Standard { diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_seedance_1_0_lite.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_seedance_1_0_lite.rs index fa689e93d1..332788f5ee 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_seedance_1_0_lite.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_seedance_1_0_lite.rs @@ -3,7 +3,7 @@ use crate::api::common_resolution::CommonResolution; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::plan::fal::plan_generate_video_fal_kling_1_6_pro::{optional_url, require_url}; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use fal_client::requests::webhook::video::image::enqueue_seedance_1_lite_image_to_video_webhook::{ @@ -21,7 +21,7 @@ pub struct PlanFalSeedance10Lite { } pub fn plan_generate_video_fal_seedance_1_0_lite( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_seedance_1p5_pro.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_seedance_1p5_pro.rs index 68af430705..b5b0ffe91c 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_seedance_1p5_pro.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_seedance_1p5_pro.rs @@ -3,7 +3,7 @@ use crate::api::common_resolution::CommonResolution; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::plan::fal::plan_generate_video_fal_kling_1_6_pro::optional_url; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; @@ -58,7 +58,7 @@ pub struct PlanFalSeedance1p5Pro { } pub fn plan_generate_video_fal_seedance_1p5_pro( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_sora_2.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_sora_2.rs index 92fe1764ac..da59c49719 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_sora_2.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_sora_2.rs @@ -3,7 +3,7 @@ use crate::api::common_resolution::CommonResolution; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::plan::fal::plan_generate_video_fal_kling_1_6_pro::optional_url; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; @@ -44,7 +44,7 @@ pub struct PlanFalSora2 { } pub fn plan_generate_video_fal_sora_2( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_sora_2_pro.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_sora_2_pro.rs index fa1f076880..2ed683e7d9 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_sora_2_pro.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_sora_2_pro.rs @@ -3,7 +3,7 @@ use crate::api::common_resolution::CommonResolution; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::plan::fal::plan_generate_video_fal_kling_1_6_pro::optional_url; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; @@ -44,7 +44,7 @@ pub struct PlanFalSora2Pro { } pub fn plan_generate_video_fal_sora_2_pro( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_2.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_2.rs index a66468178d..d3978b5a4b 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_2.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_2.rs @@ -3,7 +3,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use fal_client::requests::webhook::video::image::enqueue_veo_2_image_to_video_webhook::{ Veo2AspectRatio, Veo2Duration, @@ -29,7 +29,7 @@ pub struct PlanFalVeo2 { } pub fn plan_generate_video_fal_veo_2( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_3.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_3.rs index 990706db79..0f8f7c297c 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_3.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_3.rs @@ -4,7 +4,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use fal_client::requests::webhook::video::image::enqueue_veo_3_image_to_video_webhook::{ Veo3I2vAspectRatio, Veo3I2vDuration, Veo3I2vResolution, @@ -70,7 +70,7 @@ pub struct PlanFalVeo3 { } pub fn plan_generate_video_fal_veo_3( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_3_fast.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_3_fast.rs index f9c08b6045..6766dfa8e7 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_3_fast.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_3_fast.rs @@ -3,7 +3,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use crate::api::common_aspect_ratio::CommonAspectRatio; use fal_client::requests::webhook::video::image::enqueue_veo_3_fast_image_to_video_webhook::{ @@ -21,7 +21,7 @@ pub struct PlanFalVeo3Fast { } pub fn plan_generate_video_fal_veo_3_fast( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_3p1.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_3p1.rs index 9c4b84f02b..846bf306a9 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_3p1.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_3p1.rs @@ -4,7 +4,7 @@ use crate::api::image_ref::ImageRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; /// Three-way internal selection of which Fal Veo 3.1 endpoint to call. @@ -49,14 +49,14 @@ pub struct PlanFalVeo3p1 { } pub fn plan_generate_video_fal_veo_3p1( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let plan = build_plan_fal_veo_3p1(request, "Veo 3.1")?; Ok(VideoGenerationPlan::FalVeo3p1(plan)) } pub(crate) fn build_plan_fal_veo_3p1( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, model_label: &'static str, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_3p1_fast.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_3p1_fast.rs index ffc697c43e..6bbd6d1e22 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_3p1_fast.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/fal/plan_generate_video_fal_veo_3p1_fast.rs @@ -1,5 +1,5 @@ use crate::errors::artcraft_router_error::ArtcraftRouterError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::plan::fal::plan_generate_video_fal_veo_3p1::{ build_plan_fal_veo_3p1, PlanFalVeo3p1, }; @@ -14,7 +14,7 @@ pub struct PlanFalVeo3p1Fast { } pub fn plan_generate_video_fal_veo_3p1_fast( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let inner = build_plan_fal_veo_3p1(request, "Veo 3.1 Fast")?; Ok(VideoGenerationPlan::FalVeo3p1Fast(PlanFalVeo3p1Fast { inner })) diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/muapi/plan_generate_video_muapi_seedance2p0.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/muapi/plan_generate_video_muapi_seedance2p0.rs index a194e58b8e..692576b373 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/muapi/plan_generate_video_muapi_seedance2p0.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/muapi/plan_generate_video_muapi_seedance2p0.rs @@ -3,7 +3,7 @@ use crate::api::image_list_ref::ImageListRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use muapi_client::requests::seedance_2p0_image_to_video::seedance_2p0_image_to_video::{ AspectRatio as I2vAspectRatio, @@ -41,7 +41,7 @@ pub struct PlanMuapiSeedance2p0 { } pub fn plan_generate_video_muapi_seedance2p0( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/seedance2pro/plan_generate_video_seedance2pro_seedance2p0.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/seedance2pro/plan_generate_video_seedance2pro_seedance2p0.rs index d6bc3584ab..c425a0b8f6 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/seedance2pro/plan_generate_video_seedance2pro_seedance2p0.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/seedance2pro/plan_generate_video_seedance2pro_seedance2p0.rs @@ -6,7 +6,7 @@ use crate::api::video_list_ref::VideoListRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use seedance2pro_client::requests::generate_video::generate_video::{ KinoviGenerateVideoRequest as SeedanceGenerateVideoRequest, @@ -21,7 +21,7 @@ pub struct PlanSeedance2proSeedance2p0 { } pub fn plan_generate_video_seedance2pro_seedance2p0( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/seedance2pro/plan_generate_video_seedance2pro_seedance2p0_fast.rs b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/seedance2pro/plan_generate_video_seedance2pro_seedance2p0_fast.rs index ca96876e10..9824ace6a7 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/seedance2pro/plan_generate_video_seedance2pro_seedance2p0_fast.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/generate/generate_video/plan/seedance2pro/plan_generate_video_seedance2pro_seedance2p0_fast.rs @@ -6,7 +6,7 @@ use crate::api::video_list_ref::VideoListRef; use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use crate::errors::artcraft_router_error::ArtcraftRouterError; use crate::errors::client_error::ClientError; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use crate::generate::generate_video::video_generation_plan::VideoGenerationPlan; use seedance2pro_client::requests::generate_video::generate_video::{ KinoviGenerateVideoRequest as SeedanceGenerateVideoRequest, @@ -21,7 +21,7 @@ pub struct PlanSeedance2proSeedance2p0Fast { } pub fn plan_generate_video_seedance2pro_seedance2p0_fast( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { let strategy = request.request_mismatch_mitigation_strategy; diff --git a/crates/api_clients/artcraft/artcraft_router/src/test_helpers.rs b/crates/api_clients/artcraft/artcraft_router/src/test_helpers.rs index 8b7562eb84..0284286ede 100644 --- a/crates/api_clients/artcraft/artcraft_router/src/test_helpers.rs +++ b/crates/api_clients/artcraft/artcraft_router/src/test_helpers.rs @@ -6,7 +6,7 @@ use crate::client::router_artcraft_client::RouterArtcraftClient; use crate::client::router_client::RouterClient; use crate::client::router_fal_client::RouterFalClient; use crate::generate::generate_image::generate_image_request::GenerateImageRequest; -use crate::generate::generate_video::generate_video_request::GenerateVideoRequest; +use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use artcraft_client::credentials::storyteller_credential_set::StorytellerCredentialSet; use artcraft_client::utils::api_host::ApiHost; use fal_client::creds::fal_api_key::FalApiKey; @@ -314,8 +314,8 @@ pub fn base_flux_pro_1p1_ultra_image_request() -> GenerateImageRequest { } } -pub fn base_video_request() -> GenerateVideoRequest { - GenerateVideoRequest { +pub fn base_video_request() -> GenerateVideoRequestBuilder { + GenerateVideoRequestBuilder { model: CommonVideoModel::Seedance2p0, provider: Provider::Artcraft, prompt: Some("a cat in space".to_string()), diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_seedance_2p0.rs b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_seedance_2p0.rs index 859c8ecfba..70e150fefe 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_seedance_2p0.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_seedance_2p0.rs @@ -14,7 +14,7 @@ use artcraft_router::api::video_list_ref::VideoListRef; use artcraft_router::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use artcraft_router::client::router_artcraft_client::RouterArtcraftClient; use artcraft_router::client::router_client::RouterClient; -use artcraft_router::generate::generate_video::generate_video_request::GenerateVideoRequest; +use artcraft_router::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use enums::common::generation_provider::GenerationProvider; use enums::tauri::tasks::task_type::TaskType; use log::{error, info}; @@ -33,7 +33,7 @@ pub(super) async fn handle_artcraft_seedance_2p0( let end_frame = request.end_frame_image_media_token.clone().map(ImageRef::MediaFileToken); let reference_images = request.reference_image_media_tokens.clone().map(ImageListRef::MediaFileTokens); - let router_request = GenerateVideoRequest { + let router_request = GenerateVideoRequestBuilder { model: CommonVideoModel::Seedance2p0, provider: Provider::Artcraft, prompt: request.prompt.clone(), diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_video_via_router.rs b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_video_via_router.rs index f598c34323..d658b2e44d 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_video_via_router.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_video_via_router.rs @@ -10,7 +10,7 @@ use artcraft_router::api::provider::Provider; use artcraft_router::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use artcraft_router::client::router_artcraft_client::RouterArtcraftClient; use artcraft_router::client::router_client::RouterClient; -use artcraft_router::generate::generate_video::generate_video_request::GenerateVideoRequest; +use artcraft_router::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use enums::common::generation_provider::GenerationProvider; use enums::tauri::tasks::task_type::TaskType; use log::{error, info}; @@ -31,7 +31,7 @@ pub(super) async fn handle_artcraft_video_via_router( let start_frame = request.image_media_token.clone().map(ImageRef::MediaFileToken); let end_frame = request.end_frame_image_media_token.clone().map(ImageRef::MediaFileToken); - let router_request = GenerateVideoRequest { + let router_request = GenerateVideoRequestBuilder { model, provider: Provider::Artcraft, prompt: request.prompt.clone(), 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 44be56c076..d264504bdb 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 @@ -12,7 +12,7 @@ use artcraft_router::api::common_resolution::CommonResolution as RouterResolutio use artcraft_router::api::common_video_model::CommonVideoModel as RouterVideoModel; use artcraft_router::api::provider::Provider as RouterProvider; use artcraft_router::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; -use artcraft_router::generate::generate_video::generate_video_request::GenerateVideoRequest; +use artcraft_router::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use enums::common::generation::common_aspect_ratio::CommonAspectRatio; use enums::common::generation::common_video_model::CommonVideoModel; use enums::common::generation::common_resolution::CommonResolution; @@ -38,7 +38,7 @@ pub async fn estimate_video_cost_handler( let router_aspect_ratio = request.aspect_ratio.map(map_aspect_ratio); let router_resolution = request.resolution.map(map_resolution); - let router_request = GenerateVideoRequest { + let router_request = GenerateVideoRequestBuilder { model: router_model, provider: router_provider, prompt: None, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/distill_helper/hydrate_to_router_request.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/distill_helper/hydrate_to_router_request.rs index c36ec86f42..988c1c90c6 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/distill_helper/hydrate_to_router_request.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/distill_helper/hydrate_to_router_request.rs @@ -9,7 +9,7 @@ use artcraft_router::api::image_ref::ImageRef; use artcraft_router::api::provider::Provider; use artcraft_router::api::video_list_ref::VideoListRef; use artcraft_router::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; -use artcraft_router::generate::generate_video::generate_video_request::GenerateVideoRequest; +use artcraft_router::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use enums::common::generation::common_aspect_ratio::CommonAspectRatio as CommonAspectRatioEnum; use enums::common::generation::common_resolution::CommonResolution as CommonResolutionEnum; use enums::common::generation::common_video_model::CommonVideoModel as CommonVideoModelEnum; @@ -49,7 +49,7 @@ fn convert_resolution( pub fn hydrate_to_router_request( request: &OmniGenVideoCostAndGenerateRequest, -) -> Result { +) -> Result { let api_model = request.model.as_ref() .ok_or_else(|| AdvancedCommonWebError::BadInputWithSimpleMessage( "model is required".to_string(), @@ -65,7 +65,7 @@ pub fn hydrate_to_router_request( .map(convert_resolution) .transpose()?; - Ok(GenerateVideoRequest { + Ok(GenerateVideoRequestBuilder { model, provider: Provider::Artcraft, prompt: request.prompt.clone(), diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/distill_helper/request_to_costs.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/distill_helper/request_to_costs.rs index 74e9bc9615..3bbe2d1575 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/distill_helper/request_to_costs.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/distill_helper/request_to_costs.rs @@ -1,5 +1,5 @@ use artcraft_router::api::provider::Provider; -use artcraft_router::generate::generate_video::generate_video_request::GenerateVideoRequest; +use artcraft_router::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use artcraft_router::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate; use log::warn; @@ -9,9 +9,9 @@ use crate::http_server::common_responses::advanced_common_web_error::AdvancedCom /// Always uses the Artcraft provider for costing regardless of the execution provider. /// (Because we're the ones doing the billing.) pub fn request_to_costs( - request: &GenerateVideoRequest, + request: &GenerateVideoRequestBuilder, ) -> Result { - let cost_request = GenerateVideoRequest { + let cost_request = GenerateVideoRequestBuilder { provider: Provider::Artcraft, ..(*request).clone() }; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/distill_helper/request_to_plan.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/distill_helper/request_to_plan.rs index 16cf6573d9..b907000ea8 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/distill_helper/request_to_plan.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/distill_helper/request_to_plan.rs @@ -1,5 +1,5 @@ use artcraft_router::api::provider::Provider; -use artcraft_router::generate::generate_video::generate_video_request::GenerateVideoRequest; +use artcraft_router::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use artcraft_router::generate::generate_video::video_generation_plan::VideoGenerationPlan; use log::warn; @@ -8,7 +8,7 @@ use crate::http_server::common_responses::advanced_common_web_error::AdvancedCom /// Build a video generation plan from a transformed request. /// Overrides the provider to Fal for execution (costing uses Artcraft separately). pub fn request_to_plan( - request: &mut GenerateVideoRequest, + request: &mut GenerateVideoRequestBuilder, ) -> Result { request.provider = Provider::Fal; diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/distill_video_request.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/distill_video_request.rs index df0b6d5d58..56c67abe58 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/distill_video_request.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/distill_video_request.rs @@ -18,7 +18,7 @@ use artcraft_router::api::image_list_ref::ImageListRef; use artcraft_router::api::image_ref::ImageRef; use artcraft_router::api::provider::Provider; use artcraft_router::api::video_list_ref::VideoListRef; -use artcraft_router::generate::generate_video::generate_video_request::GenerateVideoRequest; +use artcraft_router::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder; use artcraft_router::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate; use artcraft_router::generate::generate_video::video_generation_plan::VideoGenerationPlan; use tokens::tokens::media_files::MediaFileToken; @@ -31,7 +31,7 @@ use super::distill_helper::hydrate_to_router_request::hydrate_to_router_request; /// request: the router request, the bill-on cost estimate, and the executable /// plan, all in one place. pub struct DistilledVideoRequest { - request: GenerateVideoRequest, + request: GenerateVideoRequestBuilder, /// Cost estimate as computed by the Artcraft provider — this is what we bill on. pub cost: VideoGenerationCostEstimate, @@ -51,7 +51,7 @@ impl DistilledVideoRequest { /// Borrow the underlying router request. Useful for tests / debugging. #[allow(dead_code)] - pub(crate) fn request(&self) -> &GenerateVideoRequest { + pub(crate) fn request(&self) -> &GenerateVideoRequestBuilder { &self.request } } @@ -70,7 +70,7 @@ pub fn distill_video_request( // `initial` already has media fields in token form (from hydrate_to_router_request), // which is exactly what the Artcraft cost builder needs. Just swap the provider. let cost: VideoGenerationCostEstimate = { - let cost_request = GenerateVideoRequest { + let cost_request = GenerateVideoRequestBuilder { provider: Provider::Artcraft, ..initial.clone() }; @@ -104,7 +104,7 @@ pub fn distill_video_request( )?; // 4. Build the execution request with resolved URLs. - let exec_request = GenerateVideoRequest { + let exec_request = GenerateVideoRequestBuilder { model: initial.model, provider: execution_provider, prompt: initial.prompt,