diff --git a/.claude/rules/code-style.md b/.claude/rules/code-style.md index 68a6baa054..4e1b5f8b48 100644 --- a/.claude/rules/code-style.md +++ b/.claude/rules/code-style.md @@ -51,6 +51,10 @@ then the story, then the fine print. - Group imports: std, external crates, internal workspace crates, `crate::` imports - Use fully qualified paths for one-off references; `use` for repeated references - Prefer specific imports over wildcards, except in `api_doc.rs` and test modules +- When two crates export a type with the same name, alias with a suffix describing the source crate: + `use enums::...::CommonResolution as CommonResolutionEnum;` + `use artcraft_router::...::CommonResolution as CommonResolutionRouter;` + This avoids long fully-qualified paths in function signatures and bodies. ## TypeScript / Frontend diff --git a/CLAUDE.md b/CLAUDE.md index 0017d21b02..3c05924808 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -61,6 +61,7 @@ artcraft/ - SQLx for MySQL and SQLite - A mix of wreq and reqwest for Rust HTTP clients - Never use `println!` or `eprintln!` outside of tests; use `log` crate macros instead +- When two crates export the same type name, alias imports with a suffix: `use foo::Bar as BarFoo;` - TypeScript with Nx, React, Vite, Zustand, and Three.js - Use two spaces for indentation diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/transform_request.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/transform_request.rs index 5969ef9bc5..228d4bcd9c 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/transform_request.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/image/transform_request.rs @@ -1,14 +1,20 @@ use artcraft_api_defs::omni_gen::cost_and_generate_requests::omni_gen_image_cost_and_generate_request::OmniGenImageCostAndGenerateRequest; +use artcraft_router::api::common_aspect_ratio::CommonAspectRatio as CommonAspectRatioRouter; +use artcraft_router::api::common_image_model::CommonImageModel as CommonImageModelRouter; +use artcraft_router::api::common_resolution::CommonResolution as CommonResolutionRouter; use artcraft_router::api::image_list_ref::ImageListRef; use artcraft_router::api::provider::Provider; use artcraft_router::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use artcraft_router::generate::generate_image::generate_image_request::GenerateImageRequest; +use enums::common::generation::common_aspect_ratio::CommonAspectRatio as CommonAspectRatioEnum; +use enums::common::generation::common_image_model::CommonImageModel as CommonImageModelEnum; +use enums::common::generation::common_resolution::CommonResolution as CommonResolutionEnum; use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; fn convert_model( - model: &enums::common::generation::common_image_model::CommonImageModel, -) -> Result { + model: &CommonImageModelEnum, +) -> Result { let json = serde_json::to_string(model)?; serde_json::from_str(&json).map_err(|e| { AdvancedCommonWebError::BadInputWithSimpleMessage( @@ -18,8 +24,8 @@ fn convert_model( } fn convert_aspect_ratio( - ar: &enums::common::generation::common_aspect_ratio::CommonAspectRatio, -) -> Result { + ar: &CommonAspectRatioEnum, +) -> Result { let json = serde_json::to_string(ar)?; serde_json::from_str(&json).map_err(|e| { AdvancedCommonWebError::BadInputWithSimpleMessage( @@ -29,8 +35,8 @@ fn convert_aspect_ratio( } fn convert_resolution( - res: &enums::common::generation::common_resolution::CommonResolution, -) -> Result { + res: &CommonResolutionEnum, +) -> Result { let json = serde_json::to_string(res)?; serde_json::from_str(&json).map_err(|e| { AdvancedCommonWebError::BadInputWithSimpleMessage( @@ -63,8 +69,8 @@ pub fn transform_request( prompt: request.prompt.as_deref(), image_inputs: request.image_media_tokens.as_ref() .map(ImageListRef::MediaFileTokens), - resolution: resolution, - aspect_ratio: aspect_ratio, + resolution, + aspect_ratio, image_batch_count: request.image_batch_count, horizontal_angle: request.horizontal_angle, vertical_angle: request.vertical_angle, diff --git a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/transform_request.rs b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/transform_request.rs index 3ddc899597..4d5ed89ecf 100644 --- a/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/transform_request.rs +++ b/crates/service/web/storyteller_web/src/http_server/endpoints/omni_gen/generate/video/transform_request.rs @@ -1,17 +1,22 @@ +use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; use artcraft_api_defs::omni_gen::cost_and_generate_requests::omni_gen_video_cost_and_generate_request::OmniGenVideoCostAndGenerateRequest; use artcraft_router::api::audio_list_ref::AudioListRef; +use artcraft_router::api::common_aspect_ratio::CommonAspectRatio as CommonAspectRatioRouter; +use artcraft_router::api::common_resolution::CommonResolution as CommonResolutionRouter; +use artcraft_router::api::common_video_model::CommonVideoModel as CommonVideoModelRouter; use artcraft_router::api::image_list_ref::ImageListRef; use artcraft_router::api::image_ref::ImageRef; use artcraft_router::api::provider::Provider; use artcraft_router::api::video_list_ref::VideoListRef; use artcraft_router::client::request_mismatch_mitigation_strategy::RequestMismatchMitigationStrategy; use artcraft_router::generate::generate_video::generate_video_request::GenerateVideoRequest; - -use crate::http_server::common_responses::advanced_common_web_error::AdvancedCommonWebError; +use enums::common::generation::common_aspect_ratio::CommonAspectRatio as CommonAspectRatioEnum; +use enums::common::generation::common_resolution::CommonResolution as CommonResolutionEnum; +use enums::common::generation::common_video_model::CommonVideoModel as CommonVideoModelEnum; fn convert_model( - model: &enums::common::generation::common_video_model::CommonVideoModel, -) -> Result { + model: &CommonVideoModelEnum, +) -> Result { let json = serde_json::to_string(model)?; serde_json::from_str(&json).map_err(|e| { AdvancedCommonWebError::BadInputWithSimpleMessage( @@ -21,8 +26,8 @@ fn convert_model( } fn convert_aspect_ratio( - ar: &enums::common::generation::common_aspect_ratio::CommonAspectRatio, -) -> Result { + ar: &CommonAspectRatioEnum, +) -> Result { let json = serde_json::to_string(ar)?; serde_json::from_str(&json).map_err(|e| { AdvancedCommonWebError::BadInputWithSimpleMessage( @@ -32,8 +37,8 @@ fn convert_aspect_ratio( } fn convert_resolution( - res: &enums::common::generation::common_resolution::CommonResolution, -) -> Result { + res: &CommonResolutionEnum, +) -> Result { let json = serde_json::to_string(res)?; serde_json::from_str(&json).map_err(|e| { AdvancedCommonWebError::BadInputWithSimpleMessage( @@ -76,8 +81,8 @@ pub fn transform_request( reference_audio: request.reference_audio_media_tokens.as_ref() .map(AudioListRef::MediaFileTokens), reference_character_tokens: None, - resolution: resolution, - aspect_ratio: aspect_ratio, + resolution, + aspect_ratio, duration_seconds: request.duration_seconds, video_batch_count: request.video_batch_count, generate_audio: request.generate_audio,