From ce5cc71044a6f88596d1ef7f9e987b717e1ed02a Mon Sep 17 00:00:00 2001 From: Adir Amsalem Date: Wed, 29 Apr 2026 16:21:04 +0000 Subject: [PATCH 1/2] Remove retired Lucy model IDs --- README.md | 24 +++++++------ .../Models/Inputs/ModelsInputFactory.swift | 2 +- Sources/DecartSDK/Models/Models.swift | 34 ++----------------- 3 files changed, 16 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 84656ab..80d10bd 100644 --- a/README.md +++ b/README.md @@ -183,7 +183,7 @@ let status = try await client.queue.status(jobId: "some-job-id") let data = try await client.queue.result(jobId: "some-job-id") ``` -### 5. Video Edit (lucy-2-v2v) +### 5. Video Edit (lucy-2.1) Edit a video with a prompt and optional reference image: @@ -192,7 +192,7 @@ let videoData = try Data(contentsOf: videoURL) let videoFile = try FileInput.video(data: videoData) let input = try VideoEditInput(prompt: "Add snow", data: videoFile) -let result = try await client.queue.submitAndPoll(model: .lucy_2_v2v, input: input) +let result = try await client.queue.submitAndPoll(model: .lucy2_1, input: input) ``` ### 6. Video Restyle (lucy-restyle-v2v) @@ -300,19 +300,21 @@ func process() async throws -> Data ### Available Models **Realtime Models:** -- `RealtimeModel.mirage` -- `RealtimeModel.mirage_v2` -- `RealtimeModel.lucy_v2v_720p_rt` -- `RealtimeModel.lucy_2_rt` - V2V with reference image support +- `RealtimeModel.lucy` +- `RealtimeModel.lucy2_1` - Realtime video editing with reference image support +- `RealtimeModel.lucy2_1_vton` - Virtual try-on +- `RealtimeModel.lucyRestyle` +- `RealtimeModel.lucyRestyle2` **Image Models:** -- `ImageModel.lucy_pro_i2i` - Image to image +- `ImageModel.lucyImage2` - Image to image **Video Models:** -- `VideoModel.lucy_pro_v2v` - Video to video -- `VideoModel.lucy_2_v2v` - Video edit with optional reference image -- `VideoModel.lucy_restyle_v2v` - Video restyle (prompt or reference image) -- `VideoModel.lucy_motion` - Motion video from image + trajectory +- `VideoModel.lucyClip` - Video to video +- `VideoModel.lucy2_1` - Video edit with optional reference image +- `VideoModel.lucy2_1_vton` - Virtual try-on video edit +- `VideoModel.lucyRestyle2` - Video restyle (prompt or reference image) +- `VideoModel.lucyMotion` - Motion video from image + trajectory ### Input Types diff --git a/Sources/DecartSDK/Models/Inputs/ModelsInputFactory.swift b/Sources/DecartSDK/Models/Inputs/ModelsInputFactory.swift index c1d40ea..4a1d48d 100644 --- a/Sources/DecartSDK/Models/Inputs/ModelsInputFactory.swift +++ b/Sources/DecartSDK/Models/Inputs/ModelsInputFactory.swift @@ -12,7 +12,7 @@ public enum ModelsInputFactory: Sendable { switch model { case .lucyClip, .lucyClipLatest, .lucy_pro_v2v: return .videoToVideo - case .lucy2, .lucy2_1, .lucy2_1_vton, .lucyLatest, .lucyVtonLatest, .lucy_2_v2v: + case .lucy2_1, .lucy2_1_vton, .lucyLatest, .lucyVtonLatest: return .videoEdit case .lucyRestyle2, .lucyRestyleLatest, .lucy_restyle_v2v: return .videoRestyle diff --git a/Sources/DecartSDK/Models/Models.swift b/Sources/DecartSDK/Models/Models.swift index e70e758..3845e56 100644 --- a/Sources/DecartSDK/Models/Models.swift +++ b/Sources/DecartSDK/Models/Models.swift @@ -26,7 +26,6 @@ public enum RealtimeModel: String, CaseIterable { case lucyRestyle = "lucy-restyle" case lucyRestyle2 = "lucy-restyle-2" case lucy = "lucy" - case lucy2 = "lucy-2" case lucy2_1 = "lucy-2.1" case lucy2_1_vton = "lucy-2.1-vton" // Latest aliases (server-side resolution) @@ -41,11 +40,9 @@ public enum RealtimeModel: String, CaseIterable { case mirage_v2 = "mirage_v2" @available(*, deprecated, renamed: "lucy") case lucy_v2v_720p_rt = "lucy_v2v_720p_rt" - @available(*, deprecated, renamed: "lucy2") - case lucy_2_rt = "lucy_2_rt" public static var allCases: [RealtimeModel] { - [.lucyRestyle, .lucyRestyle2, .lucy, .lucy2, .lucy2_1, .lucy2_1_vton, .lucyLatest, .lucyVtonLatest, .lucyRestyleLatest] + [.lucyRestyle, .lucyRestyle2, .lucy, .lucy2_1, .lucy2_1_vton, .lucyLatest, .lucyVtonLatest, .lucyRestyleLatest] } } @@ -67,7 +64,6 @@ public enum ImageModel: String, CaseIterable { public enum VideoModel: String, CaseIterable { // Canonical names case lucyClip = "lucy-clip" - case lucy2 = "lucy-2" case lucy2_1 = "lucy-2.1" case lucyRestyle2 = "lucy-restyle-2" case lucyMotion = "lucy-motion" @@ -82,13 +78,11 @@ public enum VideoModel: String, CaseIterable { // Deprecated aliases @available(*, deprecated, renamed: "lucyClip") case lucy_pro_v2v = "lucy-pro-v2v" - @available(*, deprecated, renamed: "lucy2") - case lucy_2_v2v = "lucy-2-v2v" @available(*, deprecated, renamed: "lucyRestyle2") case lucy_restyle_v2v = "lucy-restyle-v2v" public static var allCases: [VideoModel] { - [.lucyClip, .lucy2, .lucy2_1, .lucyRestyle2, .lucyMotion, .lucy2_1_vton, .lucyLatest, .lucyVtonLatest, .lucyRestyleLatest, .lucyClipLatest, .lucyMotionLatest] + [.lucyClip, .lucy2_1, .lucyRestyle2, .lucyMotion, .lucy2_1_vton, .lucyLatest, .lucyVtonLatest, .lucyRestyleLatest, .lucyClipLatest, .lucyMotionLatest] } } @@ -119,15 +113,6 @@ public enum Models { width: 1280, height: 704 ) - case .lucy2: - return ModelDefinition( - name: "lucy-2", - urlPath: "/v1/stream", - fps: 20, - width: 1280, - height: 720, - hasReferenceImage: true - ) case .lucy2_1: return ModelDefinition( name: "lucy-2.1", @@ -181,9 +166,6 @@ public enum Models { case .lucy_v2v_720p_rt: warnDeprecated("lucy_v2v_720p_rt", canonical: "lucy") return realtime(.lucy) - case .lucy_2_rt: - warnDeprecated("lucy_2_rt", canonical: "lucy-2") - return realtime(.lucy2) } } @@ -222,15 +204,6 @@ public enum Models { width: 1280, height: 704 ) - case .lucy2: - return ModelDefinition( - name: "lucy-2", - urlPath: "/v1/generate/lucy-2", - jobsUrlPath: "/v1/jobs/lucy-2", - fps: 20, - width: 1280, - height: 720 - ) case .lucy2_1: return ModelDefinition( name: "lucy-2.1", @@ -315,9 +288,6 @@ public enum Models { case .lucy_pro_v2v: warnDeprecated("lucy-pro-v2v", canonical: "lucy-clip") return video(.lucyClip) - case .lucy_2_v2v: - warnDeprecated("lucy-2-v2v", canonical: "lucy-2") - return video(.lucy2) case .lucy_restyle_v2v: warnDeprecated("lucy-restyle-v2v", canonical: "lucy-restyle-2") return video(.lucyRestyle2) From 623d48a7dc86098193a92e1d514946820c2e61b6 Mon Sep 17 00:00:00 2001 From: Adir Amsalem Date: Wed, 29 Apr 2026 19:43:56 +0000 Subject: [PATCH 2/2] Remove retired model reference from example app --- Example/Example/Config.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Example/Example/Config.swift b/Example/Example/Config.swift index 5c14754..05d0f7e 100644 --- a/Example/Example/Config.swift +++ b/Example/Example/Config.swift @@ -23,7 +23,7 @@ enum DecartConfig: Sendable { return miragePresets case .lucy: return lucyEditPresets - case .lucy2, .lucy2_1, .lucy2_1_vton, .lucyLatest, .lucyVtonLatest: + case .lucy2_1, .lucy2_1_vton, .lucyLatest, .lucyVtonLatest: return lucyEditPresets } }