Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Example/Example/Config.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
}
Expand Down
24 changes: 13 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:

Expand All @@ -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)
Expand Down Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion Sources/DecartSDK/Models/Inputs/ModelsInputFactory.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
34 changes: 2 additions & 32 deletions Sources/DecartSDK/Models/Models.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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]
}
}

Expand All @@ -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"
Expand All @@ -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]
}
}

Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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)
}
}

Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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)
Expand Down
Loading