From f2e27a4d5daa33c1702b0c5193394ac44fbfa38f Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Mon, 22 Dec 2025 02:35:34 -0500 Subject: [PATCH] tauri wip --- ..._2p5_turbo_pro_multi_function_video_gen.rs | 2 +- .../kling_2p6_pro_multi_function_video_gen.rs | 2 +- .../sora_2_multi_function_video_gen.rs | 2 +- .../sora_2_pro_multi_function_video_gen.rs | 2 +- .../veo_3p1_fast_multi_function_video_gen.rs | 2 +- .../veo_3p1_multi_function_video_gen.rs | 2 +- .../get_storyteller_creds_or_error.rs | 27 +++++++ .../artcraft/handle_artcraft_sora2.rs | 76 +++++++++++++++++++ .../artcraft/handle_artcraft_sora2_pro.rs | 75 ++++++++++++++++++ .../artcraft/handle_artcraft_video.rs | 32 ++++++++ .../enqueue/image_to_video/artcraft/mod.rs | 4 + .../enqueue_image_to_video_command.rs | 11 ++- .../generic/handle_video_artcraft.rs | 1 - .../commands/enqueue/image_to_video/mod.rs | 3 +- .../core/events/generation_events/common.rs | 2 + 15 files changed, 231 insertions(+), 12 deletions(-) create mode 100644 crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/get_storyteller_creds_or_error.rs create mode 100644 crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_sora2.rs create mode 100644 crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_sora2_pro.rs create mode 100644 crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_video.rs create mode 100644 crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/mod.rs diff --git a/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/kling_2p5_turbo_pro_multi_function_video_gen.rs b/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/kling_2p5_turbo_pro_multi_function_video_gen.rs index 82536540cf..8987dfb6c6 100644 --- a/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/kling_2p5_turbo_pro_multi_function_video_gen.rs +++ b/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/kling_2p5_turbo_pro_multi_function_video_gen.rs @@ -4,7 +4,7 @@ use crate::utils::api_host::ApiHost; use crate::utils::basic_json_post_request::basic_json_post_request; use artcraft_api_defs::generate::video::multi_function::kling_2_5_turbo_multi_function_video_gen::{Kling2p5TurboProMultiFunctionVideoGenRequest, Kling2p5TurboProMultiFunctionVideoGenResponse, KLING_2P5_TURBO_PRO_MULTI_FUNCTION_VIDEO_VIDEO_PATH}; -pub async fn kling_2p5_turbo_pro_multi_function_image_gen( +pub async fn kling_2p5_turbo_pro_multi_function_video_gen( api_host: &ApiHost, maybe_creds: Option<&StorytellerCredentialSet>, request: Kling2p5TurboProMultiFunctionVideoGenRequest, diff --git a/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/kling_2p6_pro_multi_function_video_gen.rs b/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/kling_2p6_pro_multi_function_video_gen.rs index 520efd06c1..a52b0b7874 100644 --- a/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/kling_2p6_pro_multi_function_video_gen.rs +++ b/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/kling_2p6_pro_multi_function_video_gen.rs @@ -4,7 +4,7 @@ use crate::utils::api_host::ApiHost; use crate::utils::basic_json_post_request::basic_json_post_request; use artcraft_api_defs::generate::video::multi_function::kling_2_6_multi_function_video_gen::{Kling2p6ProMultiFunctionVideoGenRequest, Kling2p6ProMultiFunctionVideoGenResponse, KLING_2P6_PRO_MULTI_FUNCTION_VIDEO_VIDEO_PATH}; -pub async fn kling_2p6_pro_multi_function_image_gen( +pub async fn kling_2p6_pro_multi_function_video_gen( api_host: &ApiHost, maybe_creds: Option<&StorytellerCredentialSet>, request: Kling2p6ProMultiFunctionVideoGenRequest, diff --git a/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/sora_2_multi_function_video_gen.rs b/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/sora_2_multi_function_video_gen.rs index 607c8f1e68..359e1f31d0 100644 --- a/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/sora_2_multi_function_video_gen.rs +++ b/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/sora_2_multi_function_video_gen.rs @@ -4,7 +4,7 @@ use crate::utils::api_host::ApiHost; use crate::utils::basic_json_post_request::basic_json_post_request; use artcraft_api_defs::generate::video::multi_function::sora_2_multi_function_video_gen::{Sora2MultiFunctionVideoGenRequest, Sora2MultiFunctionVideoGenResponse, SORA_2_MULTI_FUNCTION_VIDEO_VIDEO_PATH}; -pub async fn sora_2_multi_function_image_gen( +pub async fn sora_2_multi_function_video_gen( api_host: &ApiHost, maybe_creds: Option<&StorytellerCredentialSet>, request: Sora2MultiFunctionVideoGenRequest, diff --git a/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/sora_2_pro_multi_function_video_gen.rs b/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/sora_2_pro_multi_function_video_gen.rs index 1394898dc1..a825f0b04c 100644 --- a/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/sora_2_pro_multi_function_video_gen.rs +++ b/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/sora_2_pro_multi_function_video_gen.rs @@ -4,7 +4,7 @@ use crate::utils::api_host::ApiHost; use crate::utils::basic_json_post_request::basic_json_post_request; use artcraft_api_defs::generate::video::multi_function::sora_2_pro_multi_function_video_gen::{Sora2ProMultiFunctionVideoGenRequest, Sora2ProMultiFunctionVideoGenResponse, SORA_2_PRO_MULTI_FUNCTION_VIDEO_VIDEO_PATH}; -pub async fn sora_2_fast_multi_function_image_gen( +pub async fn sora_2_pro_multi_function_video_gen( api_host: &ApiHost, maybe_creds: Option<&StorytellerCredentialSet>, request: Sora2ProMultiFunctionVideoGenRequest, diff --git a/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/veo_3p1_fast_multi_function_video_gen.rs b/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/veo_3p1_fast_multi_function_video_gen.rs index d261aa77d0..a8b871c822 100644 --- a/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/veo_3p1_fast_multi_function_video_gen.rs +++ b/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/veo_3p1_fast_multi_function_video_gen.rs @@ -4,7 +4,7 @@ use crate::utils::api_host::ApiHost; use crate::utils::basic_json_post_request::basic_json_post_request; use artcraft_api_defs::generate::video::multi_function::veo_3p1_fast_multi_function_video_gen::{Veo3p1FastMultiFunctionVideoGenRequest, Veo3p1FastMultiFunctionVideoGenResponse, VEO_3P1_FAST_MULTI_FUNCTION_VIDEO_VIDEO_PATH}; -pub async fn veo_3p1_fast_multi_function_image_gen( +pub async fn veo_3p1_fast_multi_function_video_gen( api_host: &ApiHost, maybe_creds: Option<&StorytellerCredentialSet>, request: Veo3p1FastMultiFunctionVideoGenRequest, diff --git a/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/veo_3p1_multi_function_video_gen.rs b/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/veo_3p1_multi_function_video_gen.rs index 062ab20c13..4627396942 100644 --- a/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/veo_3p1_multi_function_video_gen.rs +++ b/crates/api_clients/artcraft/storyteller_client/src/endpoints/generate/video/multi_function/veo_3p1_multi_function_video_gen.rs @@ -4,7 +4,7 @@ use crate::utils::api_host::ApiHost; use crate::utils::basic_json_post_request::basic_json_post_request; use artcraft_api_defs::generate::video::multi_function::veo_3p1_multi_function_video_gen::{Veo3p1MultiFunctionVideoGenRequest, Veo3p1MultiFunctionVideoGenResponse, VEO_3P1_MULTI_FUNCTION_VIDEO_VIDEO_PATH}; -pub async fn veo_3p1_multi_function_image_gen( +pub async fn veo_3p1_multi_function_video_gen( api_host: &ApiHost, maybe_creds: Option<&StorytellerCredentialSet>, request: Veo3p1MultiFunctionVideoGenRequest, diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/get_storyteller_creds_or_error.rs b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/get_storyteller_creds_or_error.rs new file mode 100644 index 0000000000..7fb5a8f065 --- /dev/null +++ b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/get_storyteller_creds_or_error.rs @@ -0,0 +1,27 @@ +use crate::core::commands::enqueue::generate_error::GenerateError; +use crate::core::events::basic_sendable_event_trait::BasicSendableEvent; +use crate::core::events::generation_events::common::GenerationAction; +use crate::core::events::generation_events::generation_enqueue_failure_event::GenerationEnqueueFailureEvent; +use crate::services::storyteller::state::storyteller_credential_manager::StorytellerCredentialManager; +use log::error; +use storyteller_client::credentials::storyteller_credential_set::StorytellerCredentialSet; +use tauri::AppHandle; + +pub (super) fn get_storyteller_creds_or_error( + app: &AppHandle, + storyteller_creds_manager: &StorytellerCredentialManager, +) -> Result { + + match storyteller_creds_manager.get_credentials()? { + Some(creds) => Ok(creds), + None => { + error!("No Artcraft credentials are set. Can't perform action."); + let event = + GenerationEnqueueFailureEvent::no_artcraft_credentials(GenerationAction::GenerateVideo); + + event.send_infallible(app); + + Err(GenerateError::needs_storyteller_credentials()) + }, + } +} diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_sora2.rs b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_sora2.rs new file mode 100644 index 0000000000..ae82439406 --- /dev/null +++ b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_sora2.rs @@ -0,0 +1,76 @@ +use crate::core::commands::enqueue::generate_error::GenerateError; +use crate::core::commands::enqueue::image_to_video::artcraft::get_storyteller_creds_or_error::get_storyteller_creds_or_error; +use crate::core::commands::enqueue::image_to_video::enqueue_image_to_video_command::{EnqueueImageToVideoRequest, SoraOrientation}; +use crate::core::commands::enqueue::task_enqueue_success::TaskEnqueueSuccess; +use crate::core::events::basic_sendable_event_trait::BasicSendableEvent; +use crate::core::events::functional_events::show_provider_login_modal_event::ShowProviderLoginModalEvent; +use crate::core::events::generation_events::common::{GenerationAction, GenerationModel}; +use crate::core::events::generation_events::generation_enqueue_failure_event::GenerationEnqueueFailureEvent; +use crate::core::state::app_env_configs::app_env_configs::AppEnvConfigs; +use crate::core::state::data_dir::app_data_root::AppDataRoot; +use crate::services::sora::state::sora_credential_manager::SoraCredentialManager; +use crate::services::sora::state::sora_task_queue::SoraTaskQueue; +use crate::services::sora::utils::upload_images_to_sora::{upload_images_to_sora, UploadImagesToSoraArgs, UploadImagesToSoraResult}; +use crate::services::storyteller::state::storyteller_credential_manager::StorytellerCredentialManager; +use artcraft_api_defs::generate::video::generate_kling_1_6_pro_image_to_video::{GenerateKling16ProAspectRatio, GenerateKling16ProImageToVideoRequest}; +use artcraft_api_defs::generate::video::multi_function::sora_2_multi_function_video_gen::{Sora2MultiFunctionVideoGenAspectRatio, Sora2MultiFunctionVideoGenDuration, Sora2MultiFunctionVideoGenRequest, Sora2MultiFunctionVideoGenResolution}; +use enums::common::generation_provider::GenerationProvider; +use enums::tauri::tasks::task_type::TaskType; +use idempotency::uuid::generate_random_uuid; +use log::{error, info}; +use openai_sora_client::recipes::generate_sora2_video::generate_sora2_video_with_session_auto_renew::generate_sora2_video_with_session_auto_renew; +use openai_sora_client::recipes::list_sora2_drafts::list_sora2_drafts_with_session_auto_renew::list_sora2_drafts_with_session_auto_renew; +use openai_sora_client::requests::generate_sora2_video::generate_sora2_video::{GenerateSora2VideoArgs, Orientation}; +use storyteller_client::credentials::storyteller_credential_set::StorytellerCredentialSet; +use storyteller_client::endpoints::generate::video::generate_kling_16_pro_image_to_video::generate_kling_16_pro_image_to_video; +use storyteller_client::endpoints::generate::video::multi_function::sora_2_multi_function_video_gen::sora_2_multi_function_video_gen; +use tauri::AppHandle; +use tokens::tokens::media_files::MediaFileToken; + +pub (super) async fn handle_artcraft_sora2( + request: &EnqueueImageToVideoRequest, + app_env_configs: &AppEnvConfigs, + creds: &StorytellerCredentialSet, +) -> Result { + + let uuid_idempotency_token = generate_random_uuid(); + + let aspect_ratio = match request.sora_orientation { + Some(SoraOrientation::Portrait) => Sora2MultiFunctionVideoGenAspectRatio::NineBySixteen, + Some(SoraOrientation::Landscape) => Sora2MultiFunctionVideoGenAspectRatio::SixteenByNine, + None => Sora2MultiFunctionVideoGenAspectRatio::SixteenByNine, + }; + + let request = Sora2MultiFunctionVideoGenRequest { + uuid_idempotency_token, + prompt: request.prompt.clone(), + image_media_token: request.image_media_token.clone(), + aspect_ratio: Some(aspect_ratio), + resolution: Some(Sora2MultiFunctionVideoGenResolution::SevenTwentyP), // TODO: Parameterize + duration: Some(Sora2MultiFunctionVideoGenDuration::TwelveSeconds), // TODO: Parameterize + }; + + let result = sora_2_multi_function_video_gen( + &app_env_configs.storyteller_host, + Some(&creds), + request, + ).await; + + let job_token = match result { + Ok(enqueued) => { + info!("Successfully enqueued."); + enqueued.inference_job_token + } + Err(err) => { + error!("Failed to enqueue: {:?}", err); + return Err(GenerateError::from(err)); + } + }; + + Ok(TaskEnqueueSuccess { + task_type: TaskType::VideoGeneration, + model: Some(GenerationModel::Sora2), + provider: GenerationProvider::Artcraft, + provider_job_id: Some(job_token.to_string()), + }) +} diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_sora2_pro.rs b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_sora2_pro.rs new file mode 100644 index 0000000000..564ebe1135 --- /dev/null +++ b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_sora2_pro.rs @@ -0,0 +1,75 @@ +use crate::core::commands::enqueue::generate_error::GenerateError; +use crate::core::commands::enqueue::image_to_video::artcraft::get_storyteller_creds_or_error::get_storyteller_creds_or_error; +use crate::core::commands::enqueue::image_to_video::enqueue_image_to_video_command::{EnqueueImageToVideoRequest, SoraOrientation}; +use crate::core::commands::enqueue::task_enqueue_success::TaskEnqueueSuccess; +use crate::core::events::basic_sendable_event_trait::BasicSendableEvent; +use crate::core::events::functional_events::show_provider_login_modal_event::ShowProviderLoginModalEvent; +use crate::core::events::generation_events::common::{GenerationAction, GenerationModel}; +use crate::core::events::generation_events::generation_enqueue_failure_event::GenerationEnqueueFailureEvent; +use crate::core::state::app_env_configs::app_env_configs::AppEnvConfigs; +use crate::core::state::data_dir::app_data_root::AppDataRoot; +use crate::services::sora::state::sora_credential_manager::SoraCredentialManager; +use crate::services::sora::state::sora_task_queue::SoraTaskQueue; +use crate::services::sora::utils::upload_images_to_sora::{upload_images_to_sora, UploadImagesToSoraArgs, UploadImagesToSoraResult}; +use crate::services::storyteller::state::storyteller_credential_manager::StorytellerCredentialManager; +use artcraft_api_defs::generate::video::multi_function::sora_2_pro_multi_function_video_gen::{Sora2ProMultiFunctionVideoGenAspectRatio, Sora2ProMultiFunctionVideoGenDuration, Sora2ProMultiFunctionVideoGenRequest, Sora2ProMultiFunctionVideoGenResolution}; +use enums::common::generation_provider::GenerationProvider; +use enums::tauri::tasks::task_type::TaskType; +use idempotency::uuid::generate_random_uuid; +use log::{error, info}; +use openai_sora_client::recipes::generate_sora2_video::generate_sora2_video_with_session_auto_renew::generate_sora2_video_with_session_auto_renew; +use openai_sora_client::recipes::list_sora2_drafts::list_sora2_drafts_with_session_auto_renew::list_sora2_drafts_with_session_auto_renew; +use storyteller_client::endpoints::generate::video::generate_kling_16_pro_image_to_video::generate_kling_16_pro_image_to_video; +use storyteller_client::endpoints::generate::video::multi_function::sora_2_multi_function_video_gen::sora_2_multi_function_video_gen; +use storyteller_client::endpoints::generate::video::multi_function::sora_2_pro_multi_function_video_gen::sora_2_pro_multi_function_video_gen; +use tauri::AppHandle; +use storyteller_client::credentials::storyteller_credential_set::StorytellerCredentialSet; +use tokens::tokens::media_files::MediaFileToken; + +pub (super) async fn handle_artcraft_sora2_pro( + request: &EnqueueImageToVideoRequest, + app_env_configs: &AppEnvConfigs, + creds: &StorytellerCredentialSet, +) -> Result { + + let uuid_idempotency_token = generate_random_uuid(); + + let aspect_ratio = match request.sora_orientation { + Some(SoraOrientation::Portrait) => Sora2ProMultiFunctionVideoGenAspectRatio::NineBySixteen, + Some(SoraOrientation::Landscape) => Sora2ProMultiFunctionVideoGenAspectRatio::SixteenByNine, + None => Sora2ProMultiFunctionVideoGenAspectRatio::SixteenByNine, + }; + + let request = Sora2ProMultiFunctionVideoGenRequest { + uuid_idempotency_token, + prompt: request.prompt.clone(), + image_media_token: request.image_media_token.clone(), + aspect_ratio: Some(aspect_ratio), + resolution: Some(Sora2ProMultiFunctionVideoGenResolution::TenEightyP), // TODO: Parameterize + duration: Some(Sora2ProMultiFunctionVideoGenDuration::TwelveSeconds), // TODO: Parameterize + }; + + let result = sora_2_pro_multi_function_video_gen( + &app_env_configs.storyteller_host, + Some(&creds), + request, + ).await; + + let job_token = match result { + Ok(enqueued) => { + info!("Successfully enqueued."); + enqueued.inference_job_token + } + Err(err) => { + error!("Failed to enqueue: {:?}", err); + return Err(GenerateError::from(err)); + } + }; + + Ok(TaskEnqueueSuccess { + task_type: TaskType::VideoGeneration, + model: Some(GenerationModel::Sora2Pro), + provider: GenerationProvider::Artcraft, + provider_job_id: Some(job_token.to_string()), + }) +} diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_video.rs b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_video.rs new file mode 100644 index 0000000000..24279620b4 --- /dev/null +++ b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/handle_artcraft_video.rs @@ -0,0 +1,32 @@ +use crate::core::commands::enqueue::generate_error::GenerateError; +use crate::core::commands::enqueue::image_to_video::artcraft::get_storyteller_creds_or_error::get_storyteller_creds_or_error; +use crate::core::commands::enqueue::image_to_video::artcraft::handle_artcraft_sora2::handle_artcraft_sora2; +use crate::core::commands::enqueue::image_to_video::artcraft::handle_artcraft_sora2_pro::handle_artcraft_sora2_pro; +use crate::core::commands::enqueue::image_to_video::enqueue_image_to_video_command::{EnqueueImageToVideoRequest, VideoModel}; +use crate::core::commands::enqueue::task_enqueue_success::TaskEnqueueSuccess; +use crate::core::state::app_env_configs::app_env_configs::AppEnvConfigs; +use crate::services::storyteller::state::storyteller_credential_manager::StorytellerCredentialManager; +use anyhow::anyhow; +use tauri::AppHandle; + +pub async fn handle_video_artcraft( + request: &EnqueueImageToVideoRequest, + app: &AppHandle, + app_env_configs: &AppEnvConfigs, + storyteller_creds_manager: &StorytellerCredentialManager, +) -> Result { + + let creds = get_storyteller_creds_or_error(app, storyteller_creds_manager)?; + + match request.model { + None => { + Err(GenerateError::no_model_specified()) + }, + Some(VideoModel::Sora2) => handle_artcraft_sora2(request, app_env_configs, &creds).await, + Some(VideoModel::Sora2Pro) => handle_artcraft_sora2_pro(request, app_env_configs, &creds).await, + Some(_) => { + Err(GenerateError::AnyhowError( + anyhow!("wrong logic: another branch should handle this: {:?}", request.model))) + }, + } +} diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/mod.rs b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/mod.rs new file mode 100644 index 0000000000..19da2e5ad8 --- /dev/null +++ b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/artcraft/mod.rs @@ -0,0 +1,4 @@ +mod get_storyteller_creds_or_error; +mod handle_artcraft_sora2; +mod handle_artcraft_sora2_pro; +mod handle_artcraft_video; \ No newline at end of file diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/enqueue_image_to_video_command.rs b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/enqueue_image_to_video_command.rs index f9f834a0c9..8f53ebac82 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/enqueue_image_to_video_command.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/enqueue_image_to_video_command.rs @@ -9,22 +9,22 @@ use crate::core::commands::response::shorthand::Response; use crate::core::commands::response::success_response_wrapper::SerializeMarker; use crate::core::events::basic_sendable_event_trait::BasicSendableEvent; use crate::core::events::functional_events::credits_balance_changed_event::CreditsBalanceChangedEvent; +use crate::core::events::generation_events::common::GenerationAction; +use crate::core::events::generation_events::generation_enqueue_failure_event::GenerationEnqueueFailureEvent; use crate::core::events::generation_events::generation_enqueue_success_event::GenerationEnqueueSuccessEvent; use crate::core::state::app_env_configs::app_env_configs::AppEnvConfigs; use crate::core::state::data_dir::app_data_root::AppDataRoot; use crate::core::state::provider_priority::{Provider, ProviderPriorityStore}; use crate::core::state::task_database::TaskDatabase; +use crate::services::grok::state::grok_credential_manager::GrokCredentialManager; use crate::services::sora::state::sora_credential_manager::SoraCredentialManager; use crate::services::sora::state::sora_task_queue::SoraTaskQueue; use crate::services::storyteller::state::storyteller_credential_manager::StorytellerCredentialManager; +use enums::tauri::ux::tauri_command_caller::TauriCommandCaller; use log::{error, info, warn}; use serde_derive::{Deserialize, Serialize}; use tauri::{AppHandle, State}; -use enums::tauri::ux::tauri_command_caller::TauriCommandCaller; use tokens::tokens::media_files::MediaFileToken; -use crate::core::events::generation_events::common::GenerationAction; -use crate::core::events::generation_events::generation_enqueue_failure_event::GenerationEnqueueFailureEvent; -use crate::services::grok::state::grok_credential_manager::GrokCredentialManager; /// This is used in the Tauri command bridge. /// Don't change the serializations without coordinating with the frontend. @@ -48,6 +48,9 @@ pub enum VideoModel { #[serde(rename = "sora_2")] Sora2, + + #[serde(rename = "sora_2_pro")] + Sora2Pro, #[serde(rename = "veo_2")] Veo2, diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/generic/handle_video_artcraft.rs b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/generic/handle_video_artcraft.rs index 4a80d17a55..1c8b93db24 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/generic/handle_video_artcraft.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/generic/handle_video_artcraft.rs @@ -62,7 +62,6 @@ pub async fn handle_video_artcraft( info!("Calling Artcraft image to video..."); - let uuid_idempotency_token = generate_random_uuid(); let mut selected_model = None; diff --git a/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/mod.rs b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/mod.rs index 895bd733e0..c639bd795d 100644 --- a/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/mod.rs +++ b/crates/desktop/artcraft/src/core/commands/enqueue/image_to_video/mod.rs @@ -1,4 +1,5 @@ pub mod enqueue_image_to_video_command; mod generic; pub mod sora2; -mod grok; \ No newline at end of file +mod grok; +mod artcraft; \ No newline at end of file diff --git a/crates/desktop/artcraft/src/core/events/generation_events/common.rs b/crates/desktop/artcraft/src/core/events/generation_events/common.rs index f97368dfcb..f23a080f63 100644 --- a/crates/desktop/artcraft/src/core/events/generation_events/common.rs +++ b/crates/desktop/artcraft/src/core/events/generation_events/common.rs @@ -76,6 +76,8 @@ pub enum GenerationModel { Sora, #[serde(rename = "sora_2")] Sora2, + #[serde(rename = "sora_2_pro")] + Sora2Pro, #[serde(rename = "seedance_1.0_lite")] Seedance10Lite, #[serde(rename = "veo_2")]