Compare commits

...
Author SHA1 Message Date
Brandon Thomas 1d68c1db25 remove comments 2026-05-20 10:46:57 -04:00
Brandon Thomas 38d3e1d129 module rename 2026-05-20 10:45:45 -04:00
Brandon Thomas b1d506807d rename "global" enums 2026-05-20 10:25:33 -04:00
Brandon Thomas 00b759c94e rename modules 2026-05-20 09:43:22 -04:00
Brandon Thomas a90b03c31d model rename 2026-05-20 09:34:46 -04:00
33 changed files with 272 additions and 274 deletions
@@ -41,17 +41,17 @@ pub enum CommonVideoModel {
#[serde(rename = "seedance_2p0_fast")]
Seedance2p0Fast,
#[serde(rename = "seedance_2p0_p")]
Seedance2p0Plus,
#[serde(rename = "seedance_2p0_bp")]
Seedance2p0BytePlus,
#[serde(rename = "seedance_2p0_p_fast")]
Seedance2p0PlusFast,
#[serde(rename = "seedance_2p0_bp_fast")]
Seedance2p0BytePlusFast,
#[serde(rename = "seedance_2p0_g")]
Seedance2p0Global,
#[serde(rename = "seedance_2p0_u")]
Seedance2p0Ultra,
#[serde(rename = "seedance_2p0_fast_g")]
Seedance2p0FastGlobal,
#[serde(rename = "seedance_2p0_u_fast")]
Seedance2p0UltraFast,
#[serde(rename = "happy_horse_1p0")]
HappyHorse1p0,
@@ -52,14 +52,14 @@ use crate::generate::generate_video_v2::providers::artcraft::preview_model::buil
use crate::generate::generate_video_v2::providers::artcraft::preview_model_fast::build::build_artcraft_preview_model_fast;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0::build::build_artcraft_seedance_2p0;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_fast::build::build_artcraft_seedance_2p0_fast;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_g::build::build_artcraft_seedance_2p0_g;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_fast_g::build::build_artcraft_seedance_2p0_fast_g;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_p::build::build_artcraft_seedance_2p0_p;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_p_fast::build::build_artcraft_seedance_2p0_p_fast;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_u::build::build_artcraft_seedance_2p0_u;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_u_fast::build::build_artcraft_seedance_2p0_u_fast;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_bp::build::build_artcraft_seedance_2p0_bp;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_bp_fast::build::build_artcraft_seedance_2p0_bp_fast;
use crate::generate::generate_video_v2::providers::kinovi::happy_horse_1p0::build::build_kinovi_happy_horse_1p0;
use crate::generate::generate_video_v2::providers::kinovi::seedance_2p0::build::build_kinovi_seedance_2p0;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_g::build::build_gmicloud_seedance_2p0_g;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_fast_g::build::build_gmicloud_seedance_2p0_fast_g;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_g::build::build_gmicloud_seedance_2p0_u;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_fast_g::build::build_gmicloud_seedance_2p0_u_fast;
use crate::generate::generate_video_v2::providers::kinovi::seedance_2p0_fast::build::build_kinovi_seedance_2p0_fast;
use crate::generate::generate_video_v2::video_generation_draft_or_request::VideoGenerationDraftOrRequest;
@@ -156,15 +156,15 @@ impl GenerateVideoRequestBuilder {
(Provider::Artcraft, CommonVideoModel::HappyHorse1p0) => true,
(Provider::Artcraft, CommonVideoModel::Seedance2p0) => true,
(Provider::Artcraft, CommonVideoModel::Seedance2p0Fast) => true,
(Provider::Artcraft, CommonVideoModel::Seedance2p0Global) => true,
(Provider::Artcraft, CommonVideoModel::Seedance2p0FastGlobal) => true,
(Provider::Artcraft, CommonVideoModel::Seedance2p0Plus) => true,
(Provider::Artcraft, CommonVideoModel::Seedance2p0PlusFast) => true,
(Provider::Artcraft, CommonVideoModel::Seedance2p0Ultra) => true,
(Provider::Artcraft, CommonVideoModel::Seedance2p0UltraFast) => true,
(Provider::Artcraft, CommonVideoModel::Seedance2p0BytePlus) => true,
(Provider::Artcraft, CommonVideoModel::Seedance2p0BytePlusFast) => true,
(Provider::Artcraft, CommonVideoModel::PreviewModel) => true,
(Provider::Artcraft, CommonVideoModel::PreviewModelFast) => true,
// GmiCloud
(Provider::GmiCloud, CommonVideoModel::Seedance2p0Global) => true,
(Provider::GmiCloud, CommonVideoModel::Seedance2p0FastGlobal) => true,
(Provider::GmiCloud, CommonVideoModel::Seedance2p0Ultra) => true,
(Provider::GmiCloud, CommonVideoModel::Seedance2p0UltraFast) => true,
// Kinovi
(Provider::Seedance2Pro, CommonVideoModel::HappyHorse1p0) => true,
(Provider::Seedance2Pro, CommonVideoModel::Seedance2p0) => true,
@@ -180,15 +180,15 @@ impl GenerateVideoRequestBuilder {
(Provider::Artcraft, CommonVideoModel::HappyHorse1p0) => build_artcraft_happy_horse_1p0(self),
(Provider::Artcraft, CommonVideoModel::Seedance2p0) => build_artcraft_seedance_2p0(self),
(Provider::Artcraft, CommonVideoModel::Seedance2p0Fast) => build_artcraft_seedance_2p0_fast(self),
(Provider::Artcraft, CommonVideoModel::Seedance2p0Global) => build_artcraft_seedance_2p0_g(self),
(Provider::Artcraft, CommonVideoModel::Seedance2p0FastGlobal) => build_artcraft_seedance_2p0_fast_g(self),
(Provider::Artcraft, CommonVideoModel::Seedance2p0Plus) => build_artcraft_seedance_2p0_p(self),
(Provider::Artcraft, CommonVideoModel::Seedance2p0PlusFast) => build_artcraft_seedance_2p0_p_fast(self),
(Provider::Artcraft, CommonVideoModel::Seedance2p0Ultra) => build_artcraft_seedance_2p0_u(self),
(Provider::Artcraft, CommonVideoModel::Seedance2p0UltraFast) => build_artcraft_seedance_2p0_u_fast(self),
(Provider::Artcraft, CommonVideoModel::Seedance2p0BytePlus) => build_artcraft_seedance_2p0_bp(self),
(Provider::Artcraft, CommonVideoModel::Seedance2p0BytePlusFast) => build_artcraft_seedance_2p0_bp_fast(self),
(Provider::Artcraft, CommonVideoModel::PreviewModel) => build_artcraft_preview_model(self),
(Provider::Artcraft, CommonVideoModel::PreviewModelFast) => build_artcraft_preview_model_fast(self),
// GmiCloud
(Provider::GmiCloud, CommonVideoModel::Seedance2p0Global) => build_gmicloud_seedance_2p0_g(self),
(Provider::GmiCloud, CommonVideoModel::Seedance2p0FastGlobal) => build_gmicloud_seedance_2p0_fast_g(self),
(Provider::GmiCloud, CommonVideoModel::Seedance2p0Ultra) => build_gmicloud_seedance_2p0_u(self),
(Provider::GmiCloud, CommonVideoModel::Seedance2p0UltraFast) => build_gmicloud_seedance_2p0_u_fast(self),
// Kinovi
(Provider::Seedance2Pro, CommonVideoModel::HappyHorse1p0) => build_kinovi_happy_horse_1p0(self),
(Provider::Seedance2Pro, CommonVideoModel::Seedance2p0) => build_kinovi_seedance_2p0(self),
@@ -6,7 +6,7 @@ pub(crate) mod request_common;
pub(crate) mod resolve;
pub mod seedance_2p0;
pub mod seedance_2p0_fast;
pub mod seedance_2p0_fast_g;
pub mod seedance_2p0_g;
pub mod seedance_2p0_p;
pub mod seedance_2p0_p_fast;
pub mod seedance_2p0_u_fast;
pub mod seedance_2p0_u;
pub mod seedance_2p0_bp;
pub mod seedance_2p0_bp_fast;
@@ -5,19 +5,19 @@ use crate::generate::generate_video::generate_video_request_builder::GenerateVid
use crate::generate::generate_video_v2::providers::artcraft::build_common::{
build_artcraft_omni_request, SupportedResolutions, UltraWideSupport,
};
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_p::request::ArtcraftSeedance2p0PlusRequestState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_bp::request::ArtcraftSeedance2p0BytePlusRequestState;
use crate::generate::generate_video_v2::video_generation_draft_or_request::VideoGenerationDraftOrRequest;
use crate::generate::generate_video_v2::video_generation_request::VideoGenerationRequest;
pub fn build_artcraft_seedance_2p0_p(builder: GenerateVideoRequestBuilder) -> Result<VideoGenerationDraftOrRequest, ArtcraftRouterError> {
pub fn build_artcraft_seedance_2p0_bp(builder: GenerateVideoRequestBuilder) -> Result<VideoGenerationDraftOrRequest, ArtcraftRouterError> {
let request = build_artcraft_omni_request(
builder,
CommonVideoModelEnum::Seedance2p0Plus,
CommonVideoModelEnum::Seedance2p0BytePlus,
SupportedResolutions::Full,
UltraWideSupport::Supported,
)?;
let state = ArtcraftSeedance2p0PlusRequestState { request };
Ok(VideoGenerationDraftOrRequest::Request(VideoGenerationRequest::ArtcraftSeedance2p0Plus(state)))
let state = ArtcraftSeedance2p0BytePlusRequestState { request };
Ok(VideoGenerationDraftOrRequest::Request(VideoGenerationRequest::ArtcraftSeedance2p0BytePlus(state)))
}
#[cfg(test)]
@@ -44,7 +44,7 @@ mod tests {
#[test]
fn model_is_seedance_2p0_plus() {
let req = unwrap_request(make_builder(|_| {}));
assert!(matches!(req.request.model, Some(CommonVideoModelEnum::Seedance2p0Plus)));
assert!(matches!(req.request.model, Some(CommonVideoModelEnum::Seedance2p0BytePlus)));
}
#[test]
@@ -114,7 +114,7 @@ mod tests {
#[test]
fn url_start_frame_rejected() {
let result = build_artcraft_seedance_2p0_p(GenerateVideoRequestBuilder {
let result = build_artcraft_seedance_2p0_bp(GenerateVideoRequestBuilder {
start_frame: Some(ImageRef::Url("https://example.com".to_string())),
..base_builder()
});
@@ -155,13 +155,13 @@ mod tests {
builder
}
fn unwrap_request(builder: GenerateVideoRequestBuilder) -> ArtcraftSeedance2p0PlusRequestState {
let result = build_artcraft_seedance_2p0_p(builder).expect("build should succeed");
fn unwrap_request(builder: GenerateVideoRequestBuilder) -> ArtcraftSeedance2p0BytePlusRequestState {
let result = build_artcraft_seedance_2p0_bp(builder).expect("build should succeed");
match result {
VideoGenerationDraftOrRequest::Request(
VideoGenerationRequest::ArtcraftSeedance2p0Plus(state)
VideoGenerationRequest::ArtcraftSeedance2p0BytePlus(state)
) => state,
_ => panic!("expected ArtcraftSeedance2p0Plus request"),
_ => panic!("expected ArtcraftSeedance2p0BytePlus request"),
}
}
}
@@ -1,7 +1,7 @@
use enums::common::generation::common_resolution::CommonResolution;
use crate::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_p::request::ArtcraftSeedance2p0PlusRequestState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_bp::request::ArtcraftSeedance2p0BytePlusRequestState;
/// USD cents per second by resolution:
/// 480p: $0.10/s = 10.0 ¢/s
@@ -11,14 +11,14 @@ const CENTS_PER_SECOND_480P: f64 = 10.0;
const CENTS_PER_SECOND_720P: f64 = 25.0;
const CENTS_PER_SECOND_1080P: f64 = 50.0;
pub struct ArtcraftSeedance2p0PlusCostState {
pub struct ArtcraftSeedance2p0BytePlusCostState {
pub resolution: CommonResolution,
pub duration_seconds: u16,
pub batch_count: u16,
}
impl ArtcraftSeedance2p0PlusCostState {
pub fn from_request(request: &ArtcraftSeedance2p0PlusRequestState) -> Self {
impl ArtcraftSeedance2p0BytePlusCostState {
pub fn from_request(request: &ArtcraftSeedance2p0BytePlusRequestState) -> Self {
let resolution = request.request.resolution
.unwrap_or(CommonResolution::SevenTwentyP);
let duration_seconds = request.request.duration_seconds.unwrap_or(5);
@@ -160,7 +160,7 @@ mod tests {
video_batch_count: u16,
) -> crate::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate {
GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0Plus,
model: CommonVideoModel::Seedance2p0BytePlus,
provider: Provider::Artcraft,
resolution,
duration_seconds: Some(duration_seconds),
@@ -6,11 +6,11 @@ use crate::generate::generate_video::generate_video_response::GenerateVideoRespo
use crate::generate::generate_video_v2::providers::artcraft::request_common::send_artcraft_omni_request;
#[derive(Clone, Debug)]
pub struct ArtcraftSeedance2p0PlusRequestState {
pub struct ArtcraftSeedance2p0BytePlusRequestState {
pub request: OmniGenVideoCostAndGenerateRequest,
}
impl ArtcraftSeedance2p0PlusRequestState {
impl ArtcraftSeedance2p0BytePlusRequestState {
pub async fn send(&self, client: &RouterArtcraftClient) -> Result<GenerateVideoResponse, ArtcraftRouterError> {
send_artcraft_omni_request(&self.request, client).await
}
@@ -5,19 +5,19 @@ use crate::generate::generate_video::generate_video_request_builder::GenerateVid
use crate::generate::generate_video_v2::providers::artcraft::build_common::{
build_artcraft_omni_request, SupportedResolutions, UltraWideSupport,
};
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_p_fast::request::ArtcraftSeedance2p0PlusFastRequestState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_bp_fast::request::ArtcraftSeedance2p0BytePlusFastRequestState;
use crate::generate::generate_video_v2::video_generation_draft_or_request::VideoGenerationDraftOrRequest;
use crate::generate::generate_video_v2::video_generation_request::VideoGenerationRequest;
pub fn build_artcraft_seedance_2p0_p_fast(builder: GenerateVideoRequestBuilder) -> Result<VideoGenerationDraftOrRequest, ArtcraftRouterError> {
pub fn build_artcraft_seedance_2p0_bp_fast(builder: GenerateVideoRequestBuilder) -> Result<VideoGenerationDraftOrRequest, ArtcraftRouterError> {
let request = build_artcraft_omni_request(
builder,
CommonVideoModelEnum::Seedance2p0PlusFast,
CommonVideoModelEnum::Seedance2p0BytePlusFast,
SupportedResolutions::Fast,
UltraWideSupport::Supported,
)?;
let state = ArtcraftSeedance2p0PlusFastRequestState { request };
Ok(VideoGenerationDraftOrRequest::Request(VideoGenerationRequest::ArtcraftSeedance2p0PlusFast(state)))
let state = ArtcraftSeedance2p0BytePlusFastRequestState { request };
Ok(VideoGenerationDraftOrRequest::Request(VideoGenerationRequest::ArtcraftSeedance2p0BytePlusFast(state)))
}
#[cfg(test)]
@@ -46,7 +46,7 @@ mod tests {
#[test]
fn model_is_seedance_2p0_plus_fast() {
let req = unwrap_request(make_builder(|_| {}));
assert!(matches!(req.request.model, Some(CommonVideoModelEnum::Seedance2p0PlusFast)));
assert!(matches!(req.request.model, Some(CommonVideoModelEnum::Seedance2p0BytePlusFast)));
}
#[test]
@@ -97,8 +97,8 @@ mod tests {
#[test]
fn res_1080p_error_out() {
let result = build_artcraft_seedance_2p0_p_fast(GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0PlusFast,
let result = build_artcraft_seedance_2p0_bp_fast(GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0BytePlusFast,
provider: Provider::Artcraft,
resolution: Some(CommonResolution::TenEightyP),
request_mismatch_mitigation_strategy: RequestMismatchMitigationStrategy::ErrorOut,
@@ -128,8 +128,8 @@ mod tests {
#[test]
fn url_start_frame_rejected() {
let result = build_artcraft_seedance_2p0_p_fast(GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0PlusFast,
let result = build_artcraft_seedance_2p0_bp_fast(GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0BytePlusFast,
provider: Provider::Artcraft,
start_frame: Some(ImageRef::Url("https://example.com".to_string())),
..Default::default()
@@ -158,7 +158,7 @@ mod tests {
fn make_builder(f: impl FnOnce(&mut GenerateVideoRequestBuilder)) -> GenerateVideoRequestBuilder {
let mut builder = GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0PlusFast,
model: CommonVideoModel::Seedance2p0BytePlusFast,
provider: Provider::Artcraft,
duration_seconds: Some(5),
video_batch_count: Some(1),
@@ -168,13 +168,13 @@ mod tests {
builder
}
fn unwrap_request(builder: GenerateVideoRequestBuilder) -> ArtcraftSeedance2p0PlusFastRequestState {
let result = build_artcraft_seedance_2p0_p_fast(builder).expect("build should succeed");
fn unwrap_request(builder: GenerateVideoRequestBuilder) -> ArtcraftSeedance2p0BytePlusFastRequestState {
let result = build_artcraft_seedance_2p0_bp_fast(builder).expect("build should succeed");
match result {
VideoGenerationDraftOrRequest::Request(
VideoGenerationRequest::ArtcraftSeedance2p0PlusFast(state)
VideoGenerationRequest::ArtcraftSeedance2p0BytePlusFast(state)
) => state,
_ => panic!("expected ArtcraftSeedance2p0PlusFast request"),
_ => panic!("expected ArtcraftSeedance2p0BytePlusFast request"),
}
}
}
@@ -1,7 +1,7 @@
use enums::common::generation::common_resolution::CommonResolution;
use crate::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_p_fast::request::ArtcraftSeedance2p0PlusFastRequestState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_bp_fast::request::ArtcraftSeedance2p0BytePlusFastRequestState;
/// USD cents per second by resolution:
/// 480p: $0.09/s = 9.0 ¢/s
@@ -9,14 +9,14 @@ use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_p_fast
const CENTS_PER_SECOND_480P: f64 = 9.0;
const CENTS_PER_SECOND_720P: f64 = 20.0;
pub struct ArtcraftSeedance2p0PlusFastCostState {
pub struct ArtcraftSeedance2p0BytePlusFastCostState {
pub resolution: CommonResolution,
pub duration_seconds: u16,
pub batch_count: u16,
}
impl ArtcraftSeedance2p0PlusFastCostState {
pub fn from_request(request: &ArtcraftSeedance2p0PlusFastRequestState) -> Self {
impl ArtcraftSeedance2p0BytePlusFastCostState {
pub fn from_request(request: &ArtcraftSeedance2p0BytePlusFastRequestState) -> Self {
let resolution = request.request.resolution
.unwrap_or(CommonResolution::SevenTwentyP);
let duration_seconds = request.request.duration_seconds.unwrap_or(5);
@@ -131,7 +131,7 @@ mod tests {
video_batch_count: u16,
) -> crate::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate {
GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0PlusFast,
model: CommonVideoModel::Seedance2p0BytePlusFast,
provider: Provider::Artcraft,
resolution,
duration_seconds: Some(duration_seconds),
@@ -6,11 +6,11 @@ use crate::generate::generate_video::generate_video_response::GenerateVideoRespo
use crate::generate::generate_video_v2::providers::artcraft::request_common::send_artcraft_omni_request;
#[derive(Clone, Debug)]
pub struct ArtcraftSeedance2p0PlusFastRequestState {
pub struct ArtcraftSeedance2p0BytePlusFastRequestState {
pub request: OmniGenVideoCostAndGenerateRequest,
}
impl ArtcraftSeedance2p0PlusFastRequestState {
impl ArtcraftSeedance2p0BytePlusFastRequestState {
pub async fn send(&self, client: &RouterArtcraftClient) -> Result<GenerateVideoResponse, ArtcraftRouterError> {
send_artcraft_omni_request(&self.request, client).await
}
@@ -5,19 +5,19 @@ use crate::generate::generate_video::generate_video_request_builder::GenerateVid
use crate::generate::generate_video_v2::providers::artcraft::build_common::{
build_artcraft_omni_request, SupportedResolutions, UltraWideSupport,
};
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_g::request::ArtcraftSeedance2p0GRequestState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_u::request::ArtcraftSeedance2p0UltraRequestState;
use crate::generate::generate_video_v2::video_generation_draft_or_request::VideoGenerationDraftOrRequest;
use crate::generate::generate_video_v2::video_generation_request::VideoGenerationRequest;
pub fn build_artcraft_seedance_2p0_g(builder: GenerateVideoRequestBuilder) -> Result<VideoGenerationDraftOrRequest, ArtcraftRouterError> {
pub fn build_artcraft_seedance_2p0_u(builder: GenerateVideoRequestBuilder) -> Result<VideoGenerationDraftOrRequest, ArtcraftRouterError> {
let request = build_artcraft_omni_request(
builder,
CommonVideoModelEnum::Seedance2p0Global,
CommonVideoModelEnum::Seedance2p0Ultra,
SupportedResolutions::Full,
UltraWideSupport::Supported,
)?;
let state = ArtcraftSeedance2p0GRequestState { request };
Ok(VideoGenerationDraftOrRequest::Request(VideoGenerationRequest::ArtcraftSeedance2p0G(state)))
let state = ArtcraftSeedance2p0UltraRequestState { request };
Ok(VideoGenerationDraftOrRequest::Request(VideoGenerationRequest::ArtcraftSeedance2p0Ultra(state)))
}
#[cfg(test)]
@@ -46,7 +46,7 @@ mod tests {
#[test]
fn model_is_seedance_2p0() {
let req = unwrap_request(make_builder(|_| {}));
assert!(matches!(req.request.model, Some(CommonVideoModelEnum::Seedance2p0Global)));
assert!(matches!(req.request.model, Some(CommonVideoModelEnum::Seedance2p0Ultra)));
}
#[test]
@@ -120,7 +120,7 @@ mod tests {
#[test]
fn url_start_frame_rejected() {
let result = build_artcraft_seedance_2p0_g(GenerateVideoRequestBuilder {
let result = build_artcraft_seedance_2p0_u(GenerateVideoRequestBuilder {
start_frame: Some(ImageRef::Url("https://example.com".to_string())),
..base_builder()
});
@@ -163,11 +163,11 @@ mod tests {
builder
}
fn unwrap_request(builder: GenerateVideoRequestBuilder) -> ArtcraftSeedance2p0GRequestState {
let result = build_artcraft_seedance_2p0_g(builder).expect("build should succeed");
fn unwrap_request(builder: GenerateVideoRequestBuilder) -> ArtcraftSeedance2p0UltraRequestState {
let result = build_artcraft_seedance_2p0_u(builder).expect("build should succeed");
match result {
VideoGenerationDraftOrRequest::Request(
VideoGenerationRequest::ArtcraftSeedance2p0G(state)
VideoGenerationRequest::ArtcraftSeedance2p0Ultra(state)
) => state,
_ => panic!("expected ArtcraftSeedance2p0 request"),
}
@@ -1,7 +1,7 @@
use enums::common::generation::common_resolution::CommonResolution;
use crate::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_g::request::ArtcraftSeedance2p0GRequestState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_u::request::ArtcraftSeedance2p0UltraRequestState;
// ── Pricing constants ──
@@ -9,14 +9,14 @@ const CENTS_PER_SECOND_480P: f64 = 5.4404;
const CENTS_PER_SECOND_720P: f64 = 11.2;
const CENTS_PER_SECOND_1080P: f64 = 32.6424;
pub struct ArtcraftSeedance2p0GCostState {
pub struct ArtcraftSeedance2p0UltraCostState {
pub resolution: CommonResolution,
pub duration_seconds: u16,
pub batch_count: u16,
}
impl ArtcraftSeedance2p0GCostState {
pub fn from_request(request: &ArtcraftSeedance2p0GRequestState) -> Self {
impl ArtcraftSeedance2p0UltraCostState {
pub fn from_request(request: &ArtcraftSeedance2p0UltraRequestState) -> Self {
let resolution = request.request.resolution
.unwrap_or(CommonResolution::SevenTwentyP);
let duration_seconds = request.request.duration_seconds.unwrap_or(5);
@@ -165,7 +165,7 @@ mod tests {
video_batch_count: u16,
) -> crate::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate {
let builder = GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0Global,
model: CommonVideoModel::Seedance2p0Ultra,
provider: Provider::Artcraft,
resolution,
duration_seconds: Some(duration_seconds),
@@ -6,11 +6,11 @@ use crate::generate::generate_video::generate_video_response::GenerateVideoRespo
use crate::generate::generate_video_v2::providers::artcraft::request_common::send_artcraft_omni_request;
#[derive(Clone, Debug)]
pub struct ArtcraftSeedance2p0GRequestState {
pub struct ArtcraftSeedance2p0UltraRequestState {
pub request: OmniGenVideoCostAndGenerateRequest,
}
impl ArtcraftSeedance2p0GRequestState {
impl ArtcraftSeedance2p0UltraRequestState {
pub async fn send(&self, client: &RouterArtcraftClient) -> Result<GenerateVideoResponse, ArtcraftRouterError> {
send_artcraft_omni_request(&self.request, client).await
}
@@ -5,19 +5,19 @@ use crate::generate::generate_video::generate_video_request_builder::GenerateVid
use crate::generate::generate_video_v2::providers::artcraft::build_common::{
build_artcraft_omni_request, SupportedResolutions, UltraWideSupport,
};
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_fast_g::request::ArtcraftSeedance2p0FastGRequestState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_u_fast::request::ArtcraftSeedance2p0UltraFastRequestState;
use crate::generate::generate_video_v2::video_generation_draft_or_request::VideoGenerationDraftOrRequest;
use crate::generate::generate_video_v2::video_generation_request::VideoGenerationRequest;
pub fn build_artcraft_seedance_2p0_fast_g(builder: GenerateVideoRequestBuilder) -> Result<VideoGenerationDraftOrRequest, ArtcraftRouterError> {
pub fn build_artcraft_seedance_2p0_u_fast(builder: GenerateVideoRequestBuilder) -> Result<VideoGenerationDraftOrRequest, ArtcraftRouterError> {
let request = build_artcraft_omni_request(
builder,
CommonVideoModelEnum::Seedance2p0FastGlobal,
CommonVideoModelEnum::Seedance2p0UltraFast,
SupportedResolutions::Fast,
UltraWideSupport::Supported,
)?;
let state = ArtcraftSeedance2p0FastGRequestState { request };
Ok(VideoGenerationDraftOrRequest::Request(VideoGenerationRequest::ArtcraftSeedance2p0FastG(state)))
let state = ArtcraftSeedance2p0UltraFastRequestState { request };
Ok(VideoGenerationDraftOrRequest::Request(VideoGenerationRequest::ArtcraftSeedance2p0UltraFast(state)))
}
#[cfg(test)]
@@ -63,7 +63,7 @@ mod tests {
#[test]
fn model_is_seedance_2p0_fast() {
let req = unwrap_request(artcraft_fast_builder_with(|_| {}));
assert!(matches!(req.request.model, Some(CommonVideoModelEnum::Seedance2p0FastGlobal)));
assert!(matches!(req.request.model, Some(CommonVideoModelEnum::Seedance2p0UltraFast)));
}
#[test]
@@ -152,8 +152,8 @@ mod tests {
#[test]
fn res_1080p_error_out() {
let result = build_artcraft_seedance_2p0_fast_g(GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0FastGlobal,
let result = build_artcraft_seedance_2p0_u_fast(GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0UltraFast,
provider: Provider::Artcraft,
resolution: Some(CommonResolution::TenEightyP),
request_mismatch_mitigation_strategy: RequestMismatchMitigationStrategy::ErrorOut,
@@ -185,8 +185,8 @@ mod tests {
#[test]
fn url_start_frame_rejected() {
let result = build_artcraft_seedance_2p0_fast_g(GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0FastGlobal,
let result = build_artcraft_seedance_2p0_u_fast(GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0UltraFast,
provider: Provider::Artcraft,
start_frame: Some(ImageRef::Url("https://example.com".to_string())),
..Default::default()
@@ -223,7 +223,7 @@ mod tests {
fn artcraft_fast_builder_with(f: impl FnOnce(&mut GenerateVideoRequestBuilder)) -> GenerateVideoRequestBuilder {
let mut builder = GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0FastGlobal,
model: CommonVideoModel::Seedance2p0UltraFast,
provider: Provider::Artcraft,
duration_seconds: Some(5),
video_batch_count: Some(1),
@@ -233,11 +233,11 @@ mod tests {
builder
}
fn unwrap_request(builder: GenerateVideoRequestBuilder) -> ArtcraftSeedance2p0FastGRequestState {
let result = build_artcraft_seedance_2p0_fast_g(builder).expect("build should succeed");
fn unwrap_request(builder: GenerateVideoRequestBuilder) -> ArtcraftSeedance2p0UltraFastRequestState {
let result = build_artcraft_seedance_2p0_u_fast(builder).expect("build should succeed");
match result {
VideoGenerationDraftOrRequest::Request(
VideoGenerationRequest::ArtcraftSeedance2p0FastG(state)
VideoGenerationRequest::ArtcraftSeedance2p0UltraFast(state)
) => state,
_ => panic!("expected ArtcraftSeedance2p0Fast request"),
}
@@ -1,21 +1,21 @@
use enums::common::generation::common_resolution::CommonResolution;
use crate::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_fast_g::request::ArtcraftSeedance2p0FastGRequestState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_u_fast::request::ArtcraftSeedance2p0UltraFastRequestState;
// ── Pricing constants ──
const CENTS_PER_SECOND_480P: f64 = 3.6267;
const CENTS_PER_SECOND_720P: f64 = 8.9089;
pub struct ArtcraftSeedance2p0FastGCostState {
pub struct ArtcraftSeedance2p0UltraFastCostState {
pub resolution: CommonResolution,
pub duration_seconds: u16,
pub batch_count: u16,
}
impl ArtcraftSeedance2p0FastGCostState {
pub fn from_request(request: &ArtcraftSeedance2p0FastGRequestState) -> Self {
impl ArtcraftSeedance2p0UltraFastCostState {
pub fn from_request(request: &ArtcraftSeedance2p0UltraFastRequestState) -> Self {
let resolution = request.request.resolution
.unwrap_or(CommonResolution::SevenTwentyP);
let duration_seconds = request.request.duration_seconds.unwrap_or(5);
@@ -125,7 +125,7 @@ mod tests {
let fast = cost_cents(Some(CommonResolution::SevenTwentyP), 10, 1);
let standard = {
let builder = GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0Global,
model: CommonVideoModel::Seedance2p0Ultra,
provider: Provider::Artcraft,
resolution: Some(CommonResolution::SevenTwentyP),
duration_seconds: Some(10),
@@ -150,7 +150,7 @@ mod tests {
video_batch_count: u16,
) -> crate::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate {
let builder = GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0FastGlobal,
model: CommonVideoModel::Seedance2p0UltraFast,
provider: Provider::Artcraft,
resolution,
duration_seconds: Some(duration_seconds),
@@ -6,11 +6,11 @@ use crate::generate::generate_video::generate_video_response::GenerateVideoRespo
use crate::generate::generate_video_v2::providers::artcraft::request_common::send_artcraft_omni_request;
#[derive(Clone, Debug)]
pub struct ArtcraftSeedance2p0FastGRequestState {
pub struct ArtcraftSeedance2p0UltraFastRequestState {
pub request: OmniGenVideoCostAndGenerateRequest,
}
impl ArtcraftSeedance2p0FastGRequestState {
impl ArtcraftSeedance2p0UltraFastRequestState {
pub async fn send(&self, client: &RouterArtcraftClient) -> Result<GenerateVideoResponse, ArtcraftRouterError> {
send_artcraft_omni_request(&self.request, client).await
}
@@ -185,7 +185,7 @@ mod tests {
fn artcraft_fast_builder() -> GenerateVideoRequestBuilder {
GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0FastGlobal,
model: CommonVideoModel::Seedance2p0UltraFast,
provider: Provider::Artcraft,
duration_seconds: Some(4),
video_batch_count: Some(1),
@@ -12,11 +12,11 @@ use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigati
use crate::errors::artcraft_router_error::ArtcraftRouterError;
use crate::errors::client_error::ClientError;
use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_fast_g::request::GmiCloudSeedance2p0FastGRequestState;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_fast_g::request::GmiCloudSeedance2p0UltraFastRequestState;
use crate::generate::generate_video_v2::video_generation_draft_or_request::VideoGenerationDraftOrRequest;
use crate::generate::generate_video_v2::video_generation_request::VideoGenerationRequest;
pub fn build_gmicloud_seedance_2p0_fast_g(
pub fn build_gmicloud_seedance_2p0_u_fast(
mut builder: GenerateVideoRequestBuilder,
) -> Result<VideoGenerationDraftOrRequest, ArtcraftRouterError> {
let strategy = builder.request_mismatch_mitigation_strategy;
@@ -49,8 +49,8 @@ pub fn build_gmicloud_seedance_2p0_fast_g(
reference_asset_ids: None,
};
let state = GmiCloudSeedance2p0FastGRequestState { request };
Ok(VideoGenerationDraftOrRequest::Request(VideoGenerationRequest::GmiCloudSeedance2p0FastG(state)))
let state = GmiCloudSeedance2p0UltraFastRequestState { request };
Ok(VideoGenerationDraftOrRequest::Request(VideoGenerationRequest::GmiCloudSeedance2p0UltraFast(state)))
}
fn plan_ratio(
@@ -247,7 +247,7 @@ mod tests {
#[test]
fn media_file_token_rejected() {
let result = build_gmicloud_seedance_2p0_fast_g(GenerateVideoRequestBuilder {
let result = build_gmicloud_seedance_2p0_u_fast(GenerateVideoRequestBuilder {
start_frame: Some(ImageRef::MediaFileToken(MediaFileToken::new("mf_x".to_string()))),
..base_builder()
});
@@ -284,7 +284,7 @@ mod tests {
fn base_builder() -> GenerateVideoRequestBuilder {
GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0FastGlobal,
model: CommonVideoModel::Seedance2p0UltraFast,
provider: Provider::GmiCloud,
duration_seconds: Some(5),
video_batch_count: Some(1),
@@ -298,10 +298,10 @@ mod tests {
builder
}
fn unwrap_request(builder: GenerateVideoRequestBuilder) -> GmiCloudSeedance2p0FastGRequestState {
let result = build_gmicloud_seedance_2p0_fast_g(builder).expect("build should succeed");
fn unwrap_request(builder: GenerateVideoRequestBuilder) -> GmiCloudSeedance2p0UltraFastRequestState {
let result = build_gmicloud_seedance_2p0_u_fast(builder).expect("build should succeed");
match result {
VideoGenerationDraftOrRequest::Request(VideoGenerationRequest::GmiCloudSeedance2p0FastG(state)) => state,
VideoGenerationDraftOrRequest::Request(VideoGenerationRequest::GmiCloudSeedance2p0UltraFast(state)) => state,
_ => panic!("expected GmiCloudSeedance2p0FastG request"),
}
}
@@ -1,14 +1,14 @@
use gmicloud_client::traits::gmicloud_request_cost_calculator_trait::GmiCloudRequestCostCalculator;
use crate::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_fast_g::request::GmiCloudSeedance2p0FastGRequestState;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_fast_g::request::GmiCloudSeedance2p0UltraFastRequestState;
pub struct GmiCloudSeedance2p0FastGCostState {
request: GmiCloudSeedance2p0FastGRequestState,
pub struct GmiCloudSeedance2p0UltraFastCostState {
request: GmiCloudSeedance2p0UltraFastRequestState,
}
impl GmiCloudSeedance2p0FastGCostState {
pub fn from_request(request: &GmiCloudSeedance2p0FastGRequestState) -> Self {
impl GmiCloudSeedance2p0UltraFastCostState {
pub fn from_request(request: &GmiCloudSeedance2p0UltraFastRequestState) -> Self {
Self { request: request.clone() }
}
@@ -93,7 +93,7 @@ mod tests {
let fast = cost_cents(Some(CommonResolution::SevenTwentyP), 10);
let standard = {
let builder = GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0Global,
model: CommonVideoModel::Seedance2p0Ultra,
provider: Provider::GmiCloud,
resolution: Some(CommonResolution::SevenTwentyP),
duration_seconds: Some(10),
@@ -108,7 +108,7 @@ mod tests {
fn cost_cents(resolution: Option<CommonResolution>, duration_seconds: u16) -> u64 {
let builder = GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0FastGlobal,
model: CommonVideoModel::Seedance2p0UltraFast,
provider: Provider::GmiCloud,
resolution,
duration_seconds: Some(duration_seconds),
@@ -8,11 +8,11 @@ use crate::generate::generate_video::generate_video_response::{
};
#[derive(Clone, Debug)]
pub struct GmiCloudSeedance2p0FastGRequestState {
pub struct GmiCloudSeedance2p0UltraFastRequestState {
pub request: Seedance20FastRequest,
}
impl GmiCloudSeedance2p0FastGRequestState {
impl GmiCloudSeedance2p0UltraFastRequestState {
pub async fn send(&self, client: &RouterGmiCloudClient) -> Result<GenerateVideoResponse, ArtcraftRouterError> {
let response = self.request.send_request(&client.api_key)
.await
@@ -69,7 +69,7 @@ mod tests {
fn gmicloud_fast_builder() -> GenerateVideoRequestBuilder {
GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0FastGlobal,
model: CommonVideoModel::Seedance2p0UltraFast,
provider: Provider::GmiCloud,
video_batch_count: Some(1),
..Default::default()
@@ -12,11 +12,11 @@ use crate::client::request_mismatch_mitigation_strategy::RequestMismatchMitigati
use crate::errors::artcraft_router_error::ArtcraftRouterError;
use crate::errors::client_error::ClientError;
use crate::generate::generate_video::generate_video_request_builder::GenerateVideoRequestBuilder;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_g::request::GmiCloudSeedance2p0GRequestState;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_g::request::GmiCloudSeedance2p0UltraRequestState;
use crate::generate::generate_video_v2::video_generation_draft_or_request::VideoGenerationDraftOrRequest;
use crate::generate::generate_video_v2::video_generation_request::VideoGenerationRequest;
pub fn build_gmicloud_seedance_2p0_g(
pub fn build_gmicloud_seedance_2p0_u(
mut builder: GenerateVideoRequestBuilder,
) -> Result<VideoGenerationDraftOrRequest, ArtcraftRouterError> {
let strategy = builder.request_mismatch_mitigation_strategy;
@@ -49,8 +49,8 @@ pub fn build_gmicloud_seedance_2p0_g(
reference_asset_ids: None,
};
let state = GmiCloudSeedance2p0GRequestState { request };
Ok(VideoGenerationDraftOrRequest::Request(VideoGenerationRequest::GmiCloudSeedance2p0G(state)))
let state = GmiCloudSeedance2p0UltraRequestState { request };
Ok(VideoGenerationDraftOrRequest::Request(VideoGenerationRequest::GmiCloudSeedance2p0Ultra(state)))
}
fn plan_ratio(
@@ -270,7 +270,7 @@ mod tests {
#[test]
fn media_file_token_rejected_for_start_frame() {
let result = build_gmicloud_seedance_2p0_g(GenerateVideoRequestBuilder {
let result = build_gmicloud_seedance_2p0_u(GenerateVideoRequestBuilder {
start_frame: Some(ImageRef::MediaFileToken(MediaFileToken::new("mf_test".to_string()))),
..base_builder()
});
@@ -288,7 +288,7 @@ mod tests {
#[test]
fn reference_image_tokens_rejected() {
let result = build_gmicloud_seedance_2p0_g(GenerateVideoRequestBuilder {
let result = build_gmicloud_seedance_2p0_u(GenerateVideoRequestBuilder {
reference_images: Some(ImageListRef::MediaFileTokens(vec![MediaFileToken::new("mf_a".to_string())])),
..base_builder()
});
@@ -316,7 +316,7 @@ mod tests {
fn base_builder() -> GenerateVideoRequestBuilder {
GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0Global,
model: CommonVideoModel::Seedance2p0Ultra,
provider: Provider::GmiCloud,
duration_seconds: Some(5),
video_batch_count: Some(1),
@@ -330,10 +330,10 @@ mod tests {
builder
}
fn unwrap_request(builder: GenerateVideoRequestBuilder) -> GmiCloudSeedance2p0GRequestState {
let result = build_gmicloud_seedance_2p0_g(builder).expect("build should succeed");
fn unwrap_request(builder: GenerateVideoRequestBuilder) -> GmiCloudSeedance2p0UltraRequestState {
let result = build_gmicloud_seedance_2p0_u(builder).expect("build should succeed");
match result {
VideoGenerationDraftOrRequest::Request(VideoGenerationRequest::GmiCloudSeedance2p0G(state)) => state,
VideoGenerationDraftOrRequest::Request(VideoGenerationRequest::GmiCloudSeedance2p0Ultra(state)) => state,
_ => panic!("expected GmiCloudSeedance2p0G request"),
}
}
@@ -1,14 +1,14 @@
use gmicloud_client::traits::gmicloud_request_cost_calculator_trait::GmiCloudRequestCostCalculator;
use crate::generate::generate_video::video_generation_cost_estimate::VideoGenerationCostEstimate;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_g::request::GmiCloudSeedance2p0GRequestState;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_g::request::GmiCloudSeedance2p0UltraRequestState;
pub struct GmiCloudSeedance2p0GCostState {
request: GmiCloudSeedance2p0GRequestState,
pub struct GmiCloudSeedance2p0UltraCostState {
request: GmiCloudSeedance2p0UltraRequestState,
}
impl GmiCloudSeedance2p0GCostState {
pub fn from_request(request: &GmiCloudSeedance2p0GRequestState) -> Self {
impl GmiCloudSeedance2p0UltraCostState {
pub fn from_request(request: &GmiCloudSeedance2p0UltraRequestState) -> Self {
Self { request: request.clone() }
}
@@ -116,7 +116,7 @@ mod tests {
fn cost_cents(resolution: Option<CommonResolution>, duration_seconds: u16) -> u64 {
let builder = GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0Global,
model: CommonVideoModel::Seedance2p0Ultra,
provider: Provider::GmiCloud,
resolution,
duration_seconds: Some(duration_seconds),
@@ -8,11 +8,11 @@ use crate::generate::generate_video::generate_video_response::{
};
#[derive(Clone, Debug)]
pub struct GmiCloudSeedance2p0GRequestState {
pub struct GmiCloudSeedance2p0UltraRequestState {
pub request: Seedance20Request,
}
impl GmiCloudSeedance2p0GRequestState {
impl GmiCloudSeedance2p0UltraRequestState {
pub async fn send(&self, client: &RouterGmiCloudClient) -> Result<GenerateVideoResponse, ArtcraftRouterError> {
let response = self.request.send_request(&client.api_key)
.await
@@ -67,7 +67,7 @@ mod tests {
fn gmicloud_builder() -> GenerateVideoRequestBuilder {
GenerateVideoRequestBuilder {
model: CommonVideoModel::Seedance2p0Global,
model: CommonVideoModel::Seedance2p0Ultra,
provider: Provider::GmiCloud,
video_batch_count: Some(1),
..Default::default()
@@ -13,18 +13,18 @@ use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0::cost:
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0::request::ArtcraftSeedance2p0RequestState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_fast::cost::ArtcraftSeedance2p0FastCostState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_fast::request::ArtcraftSeedance2p0FastRequestState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_g::cost::ArtcraftSeedance2p0GCostState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_g::request::ArtcraftSeedance2p0GRequestState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_fast_g::cost::ArtcraftSeedance2p0FastGCostState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_fast_g::request::ArtcraftSeedance2p0FastGRequestState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_p::cost::ArtcraftSeedance2p0PlusCostState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_p::request::ArtcraftSeedance2p0PlusRequestState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_p_fast::cost::ArtcraftSeedance2p0PlusFastCostState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_p_fast::request::ArtcraftSeedance2p0PlusFastRequestState;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_g::cost::GmiCloudSeedance2p0GCostState;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_g::request::GmiCloudSeedance2p0GRequestState;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_fast_g::cost::GmiCloudSeedance2p0FastGCostState;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_fast_g::request::GmiCloudSeedance2p0FastGRequestState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_u::cost::ArtcraftSeedance2p0UltraCostState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_u::request::ArtcraftSeedance2p0UltraRequestState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_u_fast::cost::ArtcraftSeedance2p0UltraFastCostState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_u_fast::request::ArtcraftSeedance2p0UltraFastRequestState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_bp::cost::ArtcraftSeedance2p0BytePlusCostState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_bp::request::ArtcraftSeedance2p0BytePlusRequestState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_bp_fast::cost::ArtcraftSeedance2p0BytePlusFastCostState;
use crate::generate::generate_video_v2::providers::artcraft::seedance_2p0_bp_fast::request::ArtcraftSeedance2p0BytePlusFastRequestState;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_g::cost::GmiCloudSeedance2p0UltraCostState;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_g::request::GmiCloudSeedance2p0UltraRequestState;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_fast_g::cost::GmiCloudSeedance2p0UltraFastCostState;
use crate::generate::generate_video_v2::providers::gmicloud::seedance_2p0_fast_g::request::GmiCloudSeedance2p0UltraFastRequestState;
use crate::generate::generate_video_v2::providers::kinovi::happy_horse_1p0::cost::KinoviHappyHorse1p0CostState;
use crate::generate::generate_video_v2::providers::kinovi::happy_horse_1p0::request::KinoviHappyHorse1p0RequestState;
use crate::generate::generate_video_v2::providers::kinovi::seedance_2p0::cost::KinoviSeedance2p0CostState;
@@ -39,12 +39,12 @@ pub enum VideoGenerationRequest {
ArtcraftPreviewModelFast(ArtcraftPreviewModelFastRequestState),
ArtcraftSeedance2p0(ArtcraftSeedance2p0RequestState),
ArtcraftSeedance2p0Fast(ArtcraftSeedance2p0FastRequestState),
ArtcraftSeedance2p0G(ArtcraftSeedance2p0GRequestState),
ArtcraftSeedance2p0FastG(ArtcraftSeedance2p0FastGRequestState),
ArtcraftSeedance2p0Plus(ArtcraftSeedance2p0PlusRequestState),
ArtcraftSeedance2p0PlusFast(ArtcraftSeedance2p0PlusFastRequestState),
GmiCloudSeedance2p0G(GmiCloudSeedance2p0GRequestState),
GmiCloudSeedance2p0FastG(GmiCloudSeedance2p0FastGRequestState),
ArtcraftSeedance2p0Ultra(ArtcraftSeedance2p0UltraRequestState),
ArtcraftSeedance2p0UltraFast(ArtcraftSeedance2p0UltraFastRequestState),
ArtcraftSeedance2p0BytePlus(ArtcraftSeedance2p0BytePlusRequestState),
ArtcraftSeedance2p0BytePlusFast(ArtcraftSeedance2p0BytePlusFastRequestState),
GmiCloudSeedance2p0Ultra(GmiCloudSeedance2p0UltraRequestState),
GmiCloudSeedance2p0UltraFast(GmiCloudSeedance2p0UltraFastRequestState),
KinoviHappyHorse1p0(KinoviHappyHorse1p0RequestState),
KinoviSeedance2p0(KinoviSeedance2p0RequestState),
KinoviSeedance2p0Fast(KinoviSeedance2p0FastRequestState),
@@ -59,12 +59,12 @@ impl VideoGenerationRequest {
Self::ArtcraftPreviewModelFast(_) => Provider::Artcraft,
Self::ArtcraftSeedance2p0(_) => Provider::Artcraft,
Self::ArtcraftSeedance2p0Fast(_) => Provider::Artcraft,
Self::ArtcraftSeedance2p0G(_) => Provider::Artcraft,
Self::ArtcraftSeedance2p0FastG(_) => Provider::Artcraft,
Self::ArtcraftSeedance2p0Plus(_) => Provider::Artcraft,
Self::ArtcraftSeedance2p0PlusFast(_) => Provider::Artcraft,
Self::GmiCloudSeedance2p0G(_) => Provider::GmiCloud,
Self::GmiCloudSeedance2p0FastG(_) => Provider::GmiCloud,
Self::ArtcraftSeedance2p0Ultra(_) => Provider::Artcraft,
Self::ArtcraftSeedance2p0UltraFast(_) => Provider::Artcraft,
Self::ArtcraftSeedance2p0BytePlus(_) => Provider::Artcraft,
Self::ArtcraftSeedance2p0BytePlusFast(_) => Provider::Artcraft,
Self::GmiCloudSeedance2p0Ultra(_) => Provider::GmiCloud,
Self::GmiCloudSeedance2p0UltraFast(_) => Provider::GmiCloud,
Self::KinoviHappyHorse1p0(_) => Provider::Seedance2Pro,
Self::KinoviSeedance2p0(_) => Provider::Seedance2Pro,
Self::KinoviSeedance2p0Fast(_) => Provider::Seedance2Pro,
@@ -79,12 +79,12 @@ impl VideoGenerationRequest {
VideoGenerationRequest::ArtcraftPreviewModelFast(request) => Ok(ArtcraftPreviewModelFastCostState::from_request(request).estimate_cost()),
VideoGenerationRequest::ArtcraftSeedance2p0(request) => Ok(ArtcraftSeedance2p0CostState::from_request(request).estimate_cost()),
VideoGenerationRequest::ArtcraftSeedance2p0Fast(request) => Ok(ArtcraftSeedance2p0FastCostState::from_request(request).estimate_cost()),
VideoGenerationRequest::ArtcraftSeedance2p0G(request) => Ok(ArtcraftSeedance2p0GCostState::from_request(request).estimate_cost()),
VideoGenerationRequest::ArtcraftSeedance2p0FastG(request) => Ok(ArtcraftSeedance2p0FastGCostState::from_request(request).estimate_cost()),
VideoGenerationRequest::ArtcraftSeedance2p0Plus(request) => Ok(ArtcraftSeedance2p0PlusCostState::from_request(request).estimate_cost()),
VideoGenerationRequest::ArtcraftSeedance2p0PlusFast(request) => Ok(ArtcraftSeedance2p0PlusFastCostState::from_request(request).estimate_cost()),
VideoGenerationRequest::GmiCloudSeedance2p0G(request) => Ok(GmiCloudSeedance2p0GCostState::from_request(request).estimate_cost()),
VideoGenerationRequest::GmiCloudSeedance2p0FastG(request) => Ok(GmiCloudSeedance2p0FastGCostState::from_request(request).estimate_cost()),
VideoGenerationRequest::ArtcraftSeedance2p0Ultra(request) => Ok(ArtcraftSeedance2p0UltraCostState::from_request(request).estimate_cost()),
VideoGenerationRequest::ArtcraftSeedance2p0UltraFast(request) => Ok(ArtcraftSeedance2p0UltraFastCostState::from_request(request).estimate_cost()),
VideoGenerationRequest::ArtcraftSeedance2p0BytePlus(request) => Ok(ArtcraftSeedance2p0BytePlusCostState::from_request(request).estimate_cost()),
VideoGenerationRequest::ArtcraftSeedance2p0BytePlusFast(request) => Ok(ArtcraftSeedance2p0BytePlusFastCostState::from_request(request).estimate_cost()),
VideoGenerationRequest::GmiCloudSeedance2p0Ultra(request) => Ok(GmiCloudSeedance2p0UltraCostState::from_request(request).estimate_cost()),
VideoGenerationRequest::GmiCloudSeedance2p0UltraFast(request) => Ok(GmiCloudSeedance2p0UltraFastCostState::from_request(request).estimate_cost()),
VideoGenerationRequest::KinoviHappyHorse1p0(request) => Ok(KinoviHappyHorse1p0CostState::from_request(request).estimate_cost()),
VideoGenerationRequest::KinoviSeedance2p0(request) => Ok(KinoviSeedance2p0CostState::from_request(request).estimate_cost()),
VideoGenerationRequest::KinoviSeedance2p0Fast(request) => Ok(KinoviSeedance2p0FastCostState::from_request(request).estimate_cost()),
@@ -115,27 +115,27 @@ impl VideoGenerationRequest {
let client_ref = client.get_artcraft_client_ref()?;
request.send(client_ref).await
},
VideoGenerationRequest::ArtcraftSeedance2p0G(request) => {
VideoGenerationRequest::ArtcraftSeedance2p0Ultra(request) => {
let client_ref = client.get_artcraft_client_ref()?;
request.send(client_ref).await
},
VideoGenerationRequest::ArtcraftSeedance2p0FastG(request) => {
VideoGenerationRequest::ArtcraftSeedance2p0UltraFast(request) => {
let client_ref = client.get_artcraft_client_ref()?;
request.send(client_ref).await
},
VideoGenerationRequest::ArtcraftSeedance2p0Plus(request) => {
VideoGenerationRequest::ArtcraftSeedance2p0BytePlus(request) => {
let client_ref = client.get_artcraft_client_ref()?;
request.send(client_ref).await
},
VideoGenerationRequest::ArtcraftSeedance2p0PlusFast(request) => {
VideoGenerationRequest::ArtcraftSeedance2p0BytePlusFast(request) => {
let client_ref = client.get_artcraft_client_ref()?;
request.send(client_ref).await
},
VideoGenerationRequest::GmiCloudSeedance2p0G(request) => {
VideoGenerationRequest::GmiCloudSeedance2p0Ultra(request) => {
let client_ref = client.get_gmicloud_client_ref()?;
request.send(client_ref).await
},
VideoGenerationRequest::GmiCloudSeedance2p0FastG(request) => {
VideoGenerationRequest::GmiCloudSeedance2p0UltraFast(request) => {
let client_ref = client.get_gmicloud_client_ref()?;
request.send(client_ref).await
},
@@ -130,14 +130,14 @@ pub enum CommonModelType {
Seedance2p0,
#[serde(rename = "seedance_2p0_fast")]
Seedance2p0Fast,
#[serde(rename = "seedance_2p0_p")]
Seedance2p0Plus,
#[serde(rename = "seedance_2p0_p_fast")]
Seedance2p0PlusFast,
#[serde(rename = "seedance_2p0_g")]
Seedance2p0Global,
#[serde(rename = "seedance_2p0_fast_g")]
Seedance2p0FastGlobal,
#[serde(rename = "seedance_2p0_bp")]
Seedance2p0BytePlus,
#[serde(rename = "seedance_2p0_bp_fast")]
Seedance2p0BytePlusFast,
#[serde(rename = "seedance_2p0_u")]
Seedance2p0Ultra,
#[serde(rename = "seedance_2p0_u_fast")]
Seedance2p0UltraFast,
#[serde(rename = "sora_2")]
Sora2,
#[serde(rename = "sora_2_pro")]
@@ -231,10 +231,10 @@ impl CommonModelType {
Self::Seedance1p5Pro => "seedance_1p5_pro",
Self::Seedance2p0 => "seedance_2p0",
Self::Seedance2p0Fast => "seedance_2p0_fast",
Self::Seedance2p0Plus => "seedance_2p0_p",
Self::Seedance2p0PlusFast => "seedance_2p0_p_fast",
Self::Seedance2p0Global => "seedance_2p0_g",
Self::Seedance2p0FastGlobal => "seedance_2p0_fast_g",
Self::Seedance2p0BytePlus => "seedance_2p0_bp",
Self::Seedance2p0BytePlusFast => "seedance_2p0_bp_fast",
Self::Seedance2p0Ultra => "seedance_2p0_u",
Self::Seedance2p0UltraFast => "seedance_2p0_u_fast",
Self::Sora2 => "sora_2",
Self::Sora2Pro => "sora_2_pro",
Self::Veo2 => "veo_2",
@@ -307,10 +307,10 @@ impl CommonModelType {
"seedance_1p5_pro" => Ok(Self::Seedance1p5Pro),
"seedance_2p0" => Ok(Self::Seedance2p0),
"seedance_2p0_fast" => Ok(Self::Seedance2p0Fast),
"seedance_2p0_p" => Ok(Self::Seedance2p0Plus),
"seedance_2p0_p_fast" => Ok(Self::Seedance2p0PlusFast),
"seedance_2p0_g" => Ok(Self::Seedance2p0Global),
"seedance_2p0_fast_g" => Ok(Self::Seedance2p0FastGlobal),
"seedance_2p0_bp" => Ok(Self::Seedance2p0BytePlus),
"seedance_2p0_bp_fast" => Ok(Self::Seedance2p0BytePlusFast),
"seedance_2p0_u" => Ok(Self::Seedance2p0Ultra),
"seedance_2p0_u_fast" => Ok(Self::Seedance2p0UltraFast),
"sora_2" => Ok(Self::Sora2),
"sora_2_pro" => Ok(Self::Sora2Pro),
"veo_2" => Ok(Self::Veo2),
@@ -387,10 +387,10 @@ impl CommonModelType {
Self::Seedance1p5Pro,
Self::Seedance2p0,
Self::Seedance2p0Fast,
Self::Seedance2p0Plus,
Self::Seedance2p0PlusFast,
Self::Seedance2p0Global,
Self::Seedance2p0FastGlobal,
Self::Seedance2p0BytePlus,
Self::Seedance2p0BytePlusFast,
Self::Seedance2p0Ultra,
Self::Seedance2p0UltraFast,
Self::Sora2,
Self::Sora2Pro,
Self::Veo2,
@@ -464,10 +464,10 @@ impl CommonModelType {
Self::Seedance1p5Pro => CommonModelClass::Video,
Self::Seedance2p0 => CommonModelClass::Video,
Self::Seedance2p0Fast => CommonModelClass::Video,
Self::Seedance2p0Plus => CommonModelClass::Video,
Self::Seedance2p0PlusFast => CommonModelClass::Video,
Self::Seedance2p0Global => CommonModelClass::Video,
Self::Seedance2p0FastGlobal => CommonModelClass::Video,
Self::Seedance2p0BytePlus => CommonModelClass::Video,
Self::Seedance2p0BytePlusFast => CommonModelClass::Video,
Self::Seedance2p0Ultra => CommonModelClass::Video,
Self::Seedance2p0UltraFast => CommonModelClass::Video,
Self::Sora2 => CommonModelClass::Video,
Self::Sora2Pro => CommonModelClass::Video,
Self::Veo2 => CommonModelClass::Video,
@@ -550,10 +550,10 @@ mod tests {
assert_serialization(CommonModelType::Seedance1p5Pro, "seedance_1p5_pro");
assert_serialization(CommonModelType::Seedance2p0, "seedance_2p0");
assert_serialization(CommonModelType::Seedance2p0Fast, "seedance_2p0_fast");
assert_serialization(CommonModelType::Seedance2p0Plus, "seedance_2p0_p");
assert_serialization(CommonModelType::Seedance2p0PlusFast, "seedance_2p0_p_fast");
assert_serialization(CommonModelType::Seedance2p0Global, "seedance_2p0_g");
assert_serialization(CommonModelType::Seedance2p0FastGlobal, "seedance_2p0_fast_g");
assert_serialization(CommonModelType::Seedance2p0BytePlus, "seedance_2p0_bp");
assert_serialization(CommonModelType::Seedance2p0BytePlusFast, "seedance_2p0_bp_fast");
assert_serialization(CommonModelType::Seedance2p0Ultra, "seedance_2p0_u");
assert_serialization(CommonModelType::Seedance2p0UltraFast, "seedance_2p0_u_fast");
assert_serialization(CommonModelType::Sora2, "sora_2");
assert_serialization(CommonModelType::Sora2Pro, "sora_2_pro");
assert_serialization(CommonModelType::Veo2, "veo_2");
@@ -623,10 +623,10 @@ mod tests {
assert_eq!(CommonModelType::Seedance1p5Pro.to_str(), "seedance_1p5_pro");
assert_eq!(CommonModelType::Seedance2p0.to_str(), "seedance_2p0");
assert_eq!(CommonModelType::Seedance2p0Fast.to_str(), "seedance_2p0_fast");
assert_eq!(CommonModelType::Seedance2p0Plus.to_str(), "seedance_2p0_p");
assert_eq!(CommonModelType::Seedance2p0PlusFast.to_str(), "seedance_2p0_p_fast");
assert_eq!(CommonModelType::Seedance2p0Global.to_str(), "seedance_2p0_g");
assert_eq!(CommonModelType::Seedance2p0FastGlobal.to_str(), "seedance_2p0_fast_g");
assert_eq!(CommonModelType::Seedance2p0BytePlus.to_str(), "seedance_2p0_bp");
assert_eq!(CommonModelType::Seedance2p0BytePlusFast.to_str(), "seedance_2p0_bp_fast");
assert_eq!(CommonModelType::Seedance2p0Ultra.to_str(), "seedance_2p0_u");
assert_eq!(CommonModelType::Seedance2p0UltraFast.to_str(), "seedance_2p0_u_fast");
assert_eq!(CommonModelType::Sora2.to_str(), "sora_2");
assert_eq!(CommonModelType::Sora2Pro.to_str(), "sora_2_pro");
assert_eq!(CommonModelType::Veo2.to_str(), "veo_2");
@@ -696,10 +696,10 @@ mod tests {
assert_eq!(CommonModelType::from_str("seedance_1p5_pro").unwrap(), CommonModelType::Seedance1p5Pro);
assert_eq!(CommonModelType::from_str("seedance_2p0").unwrap(), CommonModelType::Seedance2p0);
assert_eq!(CommonModelType::from_str("seedance_2p0_fast").unwrap(), CommonModelType::Seedance2p0Fast);
assert_eq!(CommonModelType::from_str("seedance_2p0_p").unwrap(), CommonModelType::Seedance2p0Plus);
assert_eq!(CommonModelType::from_str("seedance_2p0_p_fast").unwrap(), CommonModelType::Seedance2p0PlusFast);
assert_eq!(CommonModelType::from_str("seedance_2p0_g").unwrap(), CommonModelType::Seedance2p0Global);
assert_eq!(CommonModelType::from_str("seedance_2p0_fast_g").unwrap(), CommonModelType::Seedance2p0FastGlobal);
assert_eq!(CommonModelType::from_str("seedance_2p0_bp").unwrap(), CommonModelType::Seedance2p0BytePlus);
assert_eq!(CommonModelType::from_str("seedance_2p0_bp_fast").unwrap(), CommonModelType::Seedance2p0BytePlusFast);
assert_eq!(CommonModelType::from_str("seedance_2p0_u").unwrap(), CommonModelType::Seedance2p0Ultra);
assert_eq!(CommonModelType::from_str("seedance_2p0_u_fast").unwrap(), CommonModelType::Seedance2p0UltraFast);
assert_eq!(CommonModelType::from_str("sora_2").unwrap(), CommonModelType::Sora2);
assert_eq!(CommonModelType::from_str("sora_2_pro").unwrap(), CommonModelType::Sora2Pro);
assert_eq!(CommonModelType::from_str("veo_2").unwrap(), CommonModelType::Veo2);
@@ -771,10 +771,10 @@ mod tests {
assert_eq!(variants.pop_first(), Some(CommonModelType::Seedance1p5Pro));
assert_eq!(variants.pop_first(), Some(CommonModelType::Seedance2p0));
assert_eq!(variants.pop_first(), Some(CommonModelType::Seedance2p0Fast));
assert_eq!(variants.pop_first(), Some(CommonModelType::Seedance2p0Plus));
assert_eq!(variants.pop_first(), Some(CommonModelType::Seedance2p0PlusFast));
assert_eq!(variants.pop_first(), Some(CommonModelType::Seedance2p0Global));
assert_eq!(variants.pop_first(), Some(CommonModelType::Seedance2p0FastGlobal));
assert_eq!(variants.pop_first(), Some(CommonModelType::Seedance2p0BytePlus));
assert_eq!(variants.pop_first(), Some(CommonModelType::Seedance2p0BytePlusFast));
assert_eq!(variants.pop_first(), Some(CommonModelType::Seedance2p0Ultra));
assert_eq!(variants.pop_first(), Some(CommonModelType::Seedance2p0UltraFast));
assert_eq!(variants.pop_first(), Some(CommonModelType::Sora2));
assert_eq!(variants.pop_first(), Some(CommonModelType::Sora2Pro));
assert_eq!(variants.pop_first(), Some(CommonModelType::Veo2));
@@ -44,19 +44,17 @@ pub enum CommonVideoModel {
#[serde(rename = "seedance_2p0_fast")]
Seedance2p0Fast,
#[serde(rename = "seedance_2p0_p")]
Seedance2p0Plus,
#[serde(rename = "seedance_2p0_bp")]
Seedance2p0BytePlus,
#[serde(rename = "seedance_2p0_p_fast")]
Seedance2p0PlusFast,
#[serde(rename = "seedance_2p0_bp_fast")]
Seedance2p0BytePlusFast,
// NB: Not in use
#[serde(rename = "seedance_2p0_g")]
Seedance2p0Global,
#[serde(rename = "seedance_2p0_u")]
Seedance2p0Ultra,
// NB: Not in use
#[serde(rename = "seedance_2p0_fast_g")]
Seedance2p0FastGlobal,
#[serde(rename = "seedance_2p0_u_fast")]
Seedance2p0UltraFast,
#[serde(rename = "sora_2")]
Sora2,
@@ -107,10 +105,10 @@ impl CommonVideoModel {
Self::Seedance1p5Pro => CommonModelType::Seedance1p5Pro,
Self::Seedance2p0 => CommonModelType::Seedance2p0,
Self::Seedance2p0Fast => CommonModelType::Seedance2p0Fast,
Self::Seedance2p0Plus => CommonModelType::Seedance2p0Plus,
Self::Seedance2p0PlusFast => CommonModelType::Seedance2p0PlusFast,
Self::Seedance2p0Global => CommonModelType::Seedance2p0Global,
Self::Seedance2p0FastGlobal => CommonModelType::Seedance2p0FastGlobal,
Self::Seedance2p0BytePlus => CommonModelType::Seedance2p0BytePlus,
Self::Seedance2p0BytePlusFast => CommonModelType::Seedance2p0BytePlusFast,
Self::Seedance2p0Ultra => CommonModelType::Seedance2p0Ultra,
Self::Seedance2p0UltraFast => CommonModelType::Seedance2p0UltraFast,
Self::Sora2 => CommonModelType::Sora2,
Self::Sora2Pro => CommonModelType::Sora2Pro,
Self::Veo2 => CommonModelType::Veo2,
@@ -145,10 +143,10 @@ mod tests {
assert_serialization(CommonVideoModel::Seedance1p5Pro, "seedance_1p5_pro");
assert_serialization(CommonVideoModel::Seedance2p0, "seedance_2p0");
assert_serialization(CommonVideoModel::Seedance2p0Fast, "seedance_2p0_fast");
assert_serialization(CommonVideoModel::Seedance2p0Plus, "seedance_2p0_p");
assert_serialization(CommonVideoModel::Seedance2p0PlusFast, "seedance_2p0_p_fast");
assert_serialization(CommonVideoModel::Seedance2p0Global, "seedance_2p0_g");
assert_serialization(CommonVideoModel::Seedance2p0FastGlobal, "seedance_2p0_fast_g");
assert_serialization(CommonVideoModel::Seedance2p0BytePlus, "seedance_2p0_bp");
assert_serialization(CommonVideoModel::Seedance2p0BytePlusFast, "seedance_2p0_bp_fast");
assert_serialization(CommonVideoModel::Seedance2p0Ultra, "seedance_2p0_u");
assert_serialization(CommonVideoModel::Seedance2p0UltraFast, "seedance_2p0_u_fast");
assert_serialization(CommonVideoModel::Sora2, "sora_2");
assert_serialization(CommonVideoModel::Sora2Pro, "sora_2_pro");
assert_serialization(CommonVideoModel::Veo2, "veo_2");
@@ -176,10 +174,10 @@ mod tests {
("seedance_1p5_pro", CommonVideoModel::Seedance1p5Pro),
("seedance_2p0", CommonVideoModel::Seedance2p0),
("seedance_2p0_fast", CommonVideoModel::Seedance2p0Fast),
("seedance_2p0_p", CommonVideoModel::Seedance2p0Plus),
("seedance_2p0_p_fast", CommonVideoModel::Seedance2p0PlusFast),
("seedance_2p0_g", CommonVideoModel::Seedance2p0Global),
("seedance_2p0_fast_g", CommonVideoModel::Seedance2p0FastGlobal),
("seedance_2p0_bp", CommonVideoModel::Seedance2p0BytePlus),
("seedance_2p0_bp_fast", CommonVideoModel::Seedance2p0BytePlusFast),
("seedance_2p0_u", CommonVideoModel::Seedance2p0Ultra),
("seedance_2p0_u_fast", CommonVideoModel::Seedance2p0UltraFast),
("sora_2", CommonVideoModel::Sora2),
("sora_2_pro", CommonVideoModel::Sora2Pro),
("veo_2", CommonVideoModel::Veo2),
@@ -214,10 +212,10 @@ mod tests {
CommonVideoModel::Seedance1p5Pro,
CommonVideoModel::Seedance2p0,
CommonVideoModel::Seedance2p0Fast,
CommonVideoModel::Seedance2p0Plus,
CommonVideoModel::Seedance2p0PlusFast,
CommonVideoModel::Seedance2p0Global,
CommonVideoModel::Seedance2p0FastGlobal,
CommonVideoModel::Seedance2p0BytePlus,
CommonVideoModel::Seedance2p0BytePlusFast,
CommonVideoModel::Seedance2p0Ultra,
CommonVideoModel::Seedance2p0UltraFast,
CommonVideoModel::Sora2,
CommonVideoModel::Sora2Pro,
CommonVideoModel::Veo2,
@@ -251,10 +249,10 @@ mod tests {
(CommonVideoModel::Seedance1p5Pro, CommonModelType::Seedance1p5Pro),
(CommonVideoModel::Seedance2p0, CommonModelType::Seedance2p0),
(CommonVideoModel::Seedance2p0Fast, CommonModelType::Seedance2p0Fast),
(CommonVideoModel::Seedance2p0Plus, CommonModelType::Seedance2p0Plus),
(CommonVideoModel::Seedance2p0PlusFast, CommonModelType::Seedance2p0PlusFast),
(CommonVideoModel::Seedance2p0Global, CommonModelType::Seedance2p0Global),
(CommonVideoModel::Seedance2p0FastGlobal, CommonModelType::Seedance2p0FastGlobal),
(CommonVideoModel::Seedance2p0BytePlus, CommonModelType::Seedance2p0BytePlus),
(CommonVideoModel::Seedance2p0BytePlusFast, CommonModelType::Seedance2p0BytePlusFast),
(CommonVideoModel::Seedance2p0Ultra, CommonModelType::Seedance2p0Ultra),
(CommonVideoModel::Seedance2p0UltraFast, CommonModelType::Seedance2p0UltraFast),
(CommonVideoModel::Sora2, CommonModelType::Sora2),
(CommonVideoModel::Sora2Pro, CommonModelType::Sora2Pro),
(CommonVideoModel::Veo2, CommonModelType::Veo2),
@@ -156,7 +156,7 @@ fn build_omni_gen_video_models() -> Vec<OmniGenVideoModelDetails> {
});
// models.push(OmniGenVideoModelDetails {
// model: CommonVideoModel::Seedance2p0Global,
// model: CommonVideoModel::Seedance2p0Ultra,
// model_creator: Some(ModelCreator::Bytedance),
// full_name: Some("Seedance 2.0 (Global)".to_string()),
// text_prompt_supported: Some(true),
@@ -196,7 +196,7 @@ fn build_omni_gen_video_models() -> Vec<OmniGenVideoModelDetails> {
// });
//
// models.push(OmniGenVideoModelDetails {
// model: CommonVideoModel::Seedance2p0FastGlobal,
// model: CommonVideoModel::Seedance2p0UltraFast,
// model_creator: Some(ModelCreator::Bytedance),
// full_name: Some("Seedance 2.0 Fast (Global)".to_string()),
// text_prompt_supported: Some(true),
@@ -235,7 +235,7 @@ fn build_omni_gen_video_models() -> Vec<OmniGenVideoModelDetails> {
// });
models.push(OmniGenVideoModelDetails {
model: CommonVideoModel::Seedance2p0Plus,
model: CommonVideoModel::Seedance2p0BytePlus,
model_creator: Some(ModelCreator::Bytedance),
full_name: Some("Seedance 2.0 Plus".to_string()),
text_prompt_supported: Some(true),
@@ -275,7 +275,7 @@ fn build_omni_gen_video_models() -> Vec<OmniGenVideoModelDetails> {
});
models.push(OmniGenVideoModelDetails {
model: CommonVideoModel::Seedance2p0PlusFast,
model: CommonVideoModel::Seedance2p0BytePlusFast,
model_creator: Some(ModelCreator::Bytedance),
full_name: Some("Seedance 2.0 Plus Fast".to_string()),
text_prompt_supported: Some(true),
@@ -141,10 +141,10 @@ fn map_video_model(model: CommonVideoModel) -> Result<RouterVideoModel, HandlerE
CommonVideoModel::Seedance1p5Pro => RouterVideoModel::Seedance1p5Pro,
CommonVideoModel::Seedance2p0 => RouterVideoModel::Seedance2p0,
CommonVideoModel::Seedance2p0Fast => RouterVideoModel::Seedance2p0Fast,
CommonVideoModel::Seedance2p0Global => RouterVideoModel::Seedance2p0Global,
CommonVideoModel::Seedance2p0FastGlobal => RouterVideoModel::Seedance2p0FastGlobal,
CommonVideoModel::Seedance2p0Plus=> RouterVideoModel::Seedance2p0Plus,
CommonVideoModel::Seedance2p0PlusFast=> RouterVideoModel::Seedance2p0PlusFast,
CommonVideoModel::Seedance2p0Ultra => RouterVideoModel::Seedance2p0Ultra,
CommonVideoModel::Seedance2p0UltraFast => RouterVideoModel::Seedance2p0UltraFast,
CommonVideoModel::Seedance2p0BytePlus=> RouterVideoModel::Seedance2p0BytePlus,
CommonVideoModel::Seedance2p0BytePlusFast=> RouterVideoModel::Seedance2p0BytePlusFast,
CommonVideoModel::HappyHorse1p0 => RouterVideoModel::HappyHorse1p0,
CommonVideoModel::Sora2 => RouterVideoModel::Sora2,
CommonVideoModel::Sora2Pro => RouterVideoModel::Sora2Pro,
@@ -187,18 +187,18 @@ pub async fn omni_gen_video_generate_handler(
Some(CommonVideoModel::HappyHorse1p0) => true,
Some(CommonVideoModel::Seedance2p0) => true,
Some(CommonVideoModel::Seedance2p0Fast) => true,
Some(CommonVideoModel::Seedance2p0Global) => true,
Some(CommonVideoModel::Seedance2p0FastGlobal) => true,
Some(CommonVideoModel::Seedance2p0Plus) => true,
Some(CommonVideoModel::Seedance2p0PlusFast) => true,
Some(CommonVideoModel::Seedance2p0Ultra) => true,
Some(CommonVideoModel::Seedance2p0UltraFast) => true,
Some(CommonVideoModel::Seedance2p0BytePlus) => true,
Some(CommonVideoModel::Seedance2p0BytePlusFast) => true,
Some(CommonVideoModel::PreviewModel) => true,
Some(CommonVideoModel::PreviewModelFast) => true,
_ => false,
};
let use_alternate_kinovi = match request.model {
Some(CommonVideoModel::Seedance2p0Plus) => true,
Some(CommonVideoModel::Seedance2p0PlusFast) => true,
Some(CommonVideoModel::Seedance2p0BytePlus) => true,
Some(CommonVideoModel::Seedance2p0BytePlusFast) => true,
Some(CommonVideoModel::PreviewModel) => true,
Some(CommonVideoModel::PreviewModelFast) => true,
_ => false,
@@ -45,11 +45,11 @@ pub async fn run_pipeline_v2(args: RunPipelineV2Args<'_>) -> Result<PipelineResu
match router_builder.model {
CommonVideoModel::PreviewModel |
CommonVideoModel::Seedance2p0Plus => {
CommonVideoModel::Seedance2p0BytePlus => {
router_builder.model = CommonVideoModel::Seedance2p0;
},
CommonVideoModel::PreviewModelFast |
CommonVideoModel::Seedance2p0PlusFast => {
CommonVideoModel::Seedance2p0BytePlusFast => {
router_builder.model = CommonVideoModel::Seedance2p0Fast;
},
_ => {}, // Fall-through
@@ -59,8 +59,8 @@ pub async fn run_pipeline_v2(args: RunPipelineV2Args<'_>) -> Result<PipelineResu
CommonVideoModel::HappyHorse1p0 => Provider::Seedance2Pro,
CommonVideoModel::Seedance2p0 => Provider::Seedance2Pro,
CommonVideoModel::Seedance2p0Fast => Provider::Seedance2Pro,
CommonVideoModel::Seedance2p0Global => Provider::GmiCloud,
CommonVideoModel::Seedance2p0FastGlobal => Provider::GmiCloud,
CommonVideoModel::Seedance2p0Ultra => Provider::GmiCloud,
CommonVideoModel::Seedance2p0UltraFast => Provider::GmiCloud,
_ => Provider::Fal,
};
@@ -343,10 +343,10 @@
"markdownDescription": "Denies the fetch_send command without any pre-configured scope."
},
{
"description": "This permission set configures what kind of\r\nfetch operations are available from the http plugin.\r\n\r\nThis enables all fetch operations but does not\r\nallow explicitly any origins to be fetched. This needs to\r\nbe manually configured before usage.\r\n\r\n#### Granted Permissions\r\n\r\nAll fetch operations are enabled.\r\n\r\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`",
"description": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`",
"type": "string",
"const": "default",
"markdownDescription": "This permission set configures what kind of\r\nfetch operations are available from the http plugin.\r\n\r\nThis enables all fetch operations but does not\r\nallow explicitly any origins to be fetched. This needs to\r\nbe manually configured before usage.\r\n\r\n#### Granted Permissions\r\n\r\nAll fetch operations are enabled.\r\n\r\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`"
"markdownDescription": "This permission set configures what kind of\nfetch operations are available from the http plugin.\n\nThis enables all fetch operations but does not\nallow explicitly any origins to be fetched. This needs to\nbe manually configured before usage.\n\n#### Granted Permissions\n\nAll fetch operations are enabled.\n\n\n#### This default permission set includes:\n\n- `allow-fetch`\n- `allow-fetch-cancel`\n- `allow-fetch-read-body`\n- `allow-fetch-send`"
}
]
}