diff --git a/README.md b/README.md index e3aed11..289cbb6 100644 --- a/README.md +++ b/README.md @@ -297,8 +297,6 @@ client.queue.submit(VideoModels.LUCY_RESTYLE_2, restyle) |-------|----------|-----------|-----| | Lucy 2.1 | `RealtimeModels.LUCY_2_1` | 1088x624 | 30 | | Lucy 2.5 | `RealtimeModels.LUCY_2_5` | 1280x720 | 30 | -| Lucy VTON 2 | `RealtimeModels.LUCY_VTON_2` | 1088x624 | 30 | -| Lucy VTON 3 | `RealtimeModels.LUCY_VTON_3` | 1088x624 | 30 | | Lucy VTON 3.5 | `RealtimeModels.LUCY_VTON_3_5` | 1280x720 | 30 | | Lucy Restyle 2 | `RealtimeModels.LUCY_RESTYLE_2` | 1280x704 | 30 | @@ -309,14 +307,12 @@ client.queue.submit(VideoModels.LUCY_RESTYLE_2, restyle) | Lucy Clip | `VideoModels.LUCY_CLIP` | `/v1/jobs/lucy-clip` | 1280x704 | 25 | | Lucy 2.1 | `VideoModels.LUCY_2_1` | `/v1/jobs/lucy-2.1` | 1088x624 | 20 | | Lucy 2.5 | `VideoModels.LUCY_2_5` | `/v1/jobs/lucy-2.5` | 1280x720 | 20 | -| Lucy VTON 2 | `VideoModels.LUCY_VTON_2` | `/v1/jobs/lucy-vton-2` | 1088x624 | 20 | -| Lucy VTON 3 | `VideoModels.LUCY_VTON_3` | `/v1/jobs/lucy-vton-3` | 1088x624 | 20 | | Lucy VTON 3.5 | `VideoModels.LUCY_VTON_3_5` | `/v1/jobs/lucy-vton-3.5` | 1280x720 | 20 | | Lucy Restyle 2 | `VideoModels.LUCY_RESTYLE_2` | `/v1/jobs/lucy-restyle-2` | 1280x704 | 22 | Typed input helpers: -- `VideoEditInput` (`lucy-2.1`, `lucy-2.5`, `lucy-vton-2`, `lucy-vton-3`, `lucy-vton-3.5`, `lucy-clip`) +- `VideoEditInput` (`lucy-2.1`, `lucy-2.5`, `lucy-vton-3.5`, `lucy-clip`) - `VideoRestyleInput` (`lucy-restyle-2`) ## API Reference diff --git a/sdk/src/main/java/ai/decart/sdk/RealtimeModels.kt b/sdk/src/main/java/ai/decart/sdk/RealtimeModels.kt index d5754b3..13e6660 100644 --- a/sdk/src/main/java/ai/decart/sdk/RealtimeModels.kt +++ b/sdk/src/main/java/ai/decart/sdk/RealtimeModels.kt @@ -12,8 +12,6 @@ object RealtimeModels { // Canonical models val LUCY_2_1 = RealtimeModel("lucy-2.1", "/v1/stream", 30, 1088, 624) val LUCY_2_5 = RealtimeModel("lucy-2.5", "/v1/stream", 30, 1280, 720) - val LUCY_VTON_2 = RealtimeModel("lucy-vton-2", "/v1/stream", 30, 1088, 624) - val LUCY_VTON_3 = RealtimeModel("lucy-vton-3", "/v1/stream", 30, 1088, 624) val LUCY_VTON_3_5 = RealtimeModel("lucy-vton-3.5", "/v1/stream", 30, 1280, 720) val LUCY_RESTYLE_2 = RealtimeModel("lucy-restyle-2", "/v1/stream", 30, 1280, 704) @@ -22,32 +20,23 @@ object RealtimeModels { val LUCY_VTON_LATEST = RealtimeModel("lucy-vton-latest", "/v1/stream", 30, 1280, 720) val LUCY_RESTYLE_LATEST = RealtimeModel("lucy-restyle-latest", "/v1/stream", 30, 1280, 704) - // Deprecated models (old names, still work on the API) - @Deprecated("Use LUCY_VTON_2 instead", replaceWith = ReplaceWith("LUCY_VTON_2")) - val LUCY_2_1_VTON_2 = RealtimeModel("lucy-2.1-vton-2", "/v1/stream", 30, 1088, 624) - /** Get model by name, or null if not found */ - @Suppress("DEPRECATION") fun fromName(name: String): RealtimeModel? = when (name) { // Canonical names "lucy-2.1" -> LUCY_2_1 "lucy-2.5" -> LUCY_2_5 - "lucy-vton-2" -> LUCY_VTON_2 - "lucy-vton-3" -> LUCY_VTON_3 "lucy-vton-3.5" -> LUCY_VTON_3_5 "lucy-restyle-2" -> LUCY_RESTYLE_2 // Latest aliases "lucy-latest" -> LUCY_LATEST "lucy-vton-latest" -> LUCY_VTON_LATEST "lucy-restyle-latest" -> LUCY_RESTYLE_LATEST - // Deprecated names - "lucy-2.1-vton-2" -> LUCY_2_1_VTON_2 else -> null } /** All available realtime models (canonical only) */ val all: List = listOf( - LUCY_2_1, LUCY_2_5, LUCY_VTON_2, LUCY_VTON_3, LUCY_VTON_3_5, LUCY_RESTYLE_2, + LUCY_2_1, LUCY_2_5, LUCY_VTON_3_5, LUCY_RESTYLE_2, LUCY_LATEST, LUCY_VTON_LATEST, LUCY_RESTYLE_LATEST, ) } diff --git a/sdk/src/main/java/ai/decart/sdk/VideoModels.kt b/sdk/src/main/java/ai/decart/sdk/VideoModels.kt index b96d645..93817d9 100644 --- a/sdk/src/main/java/ai/decart/sdk/VideoModels.kt +++ b/sdk/src/main/java/ai/decart/sdk/VideoModels.kt @@ -50,13 +50,7 @@ object VideoModels { /** Lucy 2.5 video editing with optional reference image. Output: 1280x720, 20fps. */ val LUCY_2_5 = VideoModel("lucy-2.5", "/v1/jobs/lucy-2.5", 20, 1280, 720, ModelInputType.VIDEO_EDIT) - /** Lucy virtual try-on video editing. Output: 1088x624, 20fps. */ - val LUCY_VTON_2 = VideoModel("lucy-vton-2", "/v1/jobs/lucy-vton-2", 20, 1088, 624, ModelInputType.VIDEO_EDIT) - - /** Lucy virtual try-on 3 video editing. Output: 1088x624, 20fps. */ - val LUCY_VTON_3 = VideoModel("lucy-vton-3", "/v1/jobs/lucy-vton-3", 20, 1088, 624, ModelInputType.VIDEO_EDIT) - - /** Lucy virtual try-on 3.5 video editing. Output: 1088x624, 20fps. */ + /** Lucy virtual try-on 3.5 video editing. Output: 1280x720, 20fps. */ val LUCY_VTON_3_5 = VideoModel("lucy-vton-3.5", "/v1/jobs/lucy-vton-3.5", 20, 1280, 720, ModelInputType.VIDEO_EDIT) /** Video restyling with prompt or reference image. Output: 1280x704, 22fps. */ @@ -75,9 +69,6 @@ object VideoModels { @Deprecated("Use LUCY_RESTYLE_2 instead", replaceWith = ReplaceWith("LUCY_RESTYLE_2")) val LUCY_RESTYLE_V2V = VideoModel("lucy-restyle-v2v", "/v1/jobs/lucy-restyle-v2v", 22, 1280, 704, ModelInputType.VIDEO_RESTYLE) - @Deprecated("Use LUCY_VTON_2 instead", replaceWith = ReplaceWith("LUCY_VTON_2")) - val LUCY_2_1_VTON_2 = VideoModel("lucy-2.1-vton-2", "/v1/jobs/lucy-2.1-vton-2", 20, 1088, 624, ModelInputType.VIDEO_EDIT) - /** Get model by name, or null if not found */ fun fromName(name: String): VideoModel? = allIncludingDeprecated.find { it.name == name } @@ -86,8 +77,6 @@ object VideoModels { LUCY_CLIP, LUCY_2_1, LUCY_2_5, - LUCY_VTON_2, - LUCY_VTON_3, LUCY_VTON_3_5, LUCY_RESTYLE_2, LUCY_LATEST, @@ -99,8 +88,8 @@ object VideoModels { /** All models including deprecated names */ @Suppress("DEPRECATION") val allIncludingDeprecated: List = listOf( - LUCY_CLIP, LUCY_2_1, LUCY_2_5, LUCY_VTON_2, LUCY_VTON_3, LUCY_VTON_3_5, LUCY_RESTYLE_2, + LUCY_CLIP, LUCY_2_1, LUCY_2_5, LUCY_VTON_3_5, LUCY_RESTYLE_2, LUCY_LATEST, LUCY_VTON_LATEST, LUCY_RESTYLE_LATEST, LUCY_CLIP_LATEST, - LUCY_PRO_V2V, LUCY_RESTYLE_V2V, LUCY_2_1_VTON_2, + LUCY_PRO_V2V, LUCY_RESTYLE_V2V, ) } diff --git a/sdk/src/test/java/ai/decart/sdk/RealtimeModelsTest.kt b/sdk/src/test/java/ai/decart/sdk/RealtimeModelsTest.kt index 3000592..8ec7725 100644 --- a/sdk/src/test/java/ai/decart/sdk/RealtimeModelsTest.kt +++ b/sdk/src/test/java/ai/decart/sdk/RealtimeModelsTest.kt @@ -7,15 +7,13 @@ class RealtimeModelsTest { @Test fun `all models have correct count`() { - assertEquals(9, RealtimeModels.all.size) + assertEquals(7, RealtimeModels.all.size) } @Test fun `fromName returns correct model for canonical names`() { assertEquals(RealtimeModels.LUCY_2_1, RealtimeModels.fromName("lucy-2.1")) assertEquals(RealtimeModels.LUCY_2_5, RealtimeModels.fromName("lucy-2.5")) - assertEquals(RealtimeModels.LUCY_VTON_2, RealtimeModels.fromName("lucy-vton-2")) - assertEquals(RealtimeModels.LUCY_VTON_3, RealtimeModels.fromName("lucy-vton-3")) assertEquals(RealtimeModels.LUCY_VTON_3_5, RealtimeModels.fromName("lucy-vton-3.5")) assertEquals(RealtimeModels.LUCY_RESTYLE_2, RealtimeModels.fromName("lucy-restyle-2")) } @@ -27,11 +25,6 @@ class RealtimeModelsTest { assertEquals(RealtimeModels.LUCY_RESTYLE_LATEST, RealtimeModels.fromName("lucy-restyle-latest")) } - @Test - fun `fromName returns correct model for deprecated names`() { - assertNotNull(RealtimeModels.fromName("lucy-2.1-vton-2")) - } - @Test fun `fromName returns null for unknown`() { assertNull(RealtimeModels.fromName("nonexistent_model")) @@ -61,8 +54,6 @@ class RealtimeModelsTest { listOf( RealtimeModels.LUCY_2_1, - RealtimeModels.LUCY_VTON_2, - RealtimeModels.LUCY_VTON_3, RealtimeModels.LUCY_LATEST, ).forEach { model -> assertEquals("${model.name} width", expectedWidth, model.width) diff --git a/sdk/src/test/java/ai/decart/sdk/VideoModelsTest.kt b/sdk/src/test/java/ai/decart/sdk/VideoModelsTest.kt index 9085c93..e85be96 100644 --- a/sdk/src/test/java/ai/decart/sdk/VideoModelsTest.kt +++ b/sdk/src/test/java/ai/decart/sdk/VideoModelsTest.kt @@ -1,18 +1,17 @@ package ai.decart.sdk import org.junit.Assert.assertEquals -import org.junit.Assert.assertNotNull import org.junit.Test class VideoModelsTest { @Test fun `video models match JS SDK registry`() { - assertEquals(11, VideoModels.all.size) - assertEquals(VideoModels.LUCY_VTON_2, VideoModels.fromName("lucy-vton-2")) - assertEquals(20, VideoModels.LUCY_VTON_2.fps) - assertEquals(1088, VideoModels.LUCY_VTON_2.width) - assertEquals(624, VideoModels.LUCY_VTON_2.height) - assertEquals(ModelInputType.VIDEO_EDIT, VideoModels.LUCY_VTON_2.inputType) + assertEquals(9, VideoModels.all.size) + assertEquals(VideoModels.LUCY_2_1, VideoModels.fromName("lucy-2.1")) + assertEquals(20, VideoModels.LUCY_2_1.fps) + assertEquals(1088, VideoModels.LUCY_2_1.width) + assertEquals(624, VideoModels.LUCY_2_1.height) + assertEquals(ModelInputType.VIDEO_EDIT, VideoModels.LUCY_2_1.inputType) } @Test @@ -25,16 +24,6 @@ class VideoModelsTest { assertEquals(ModelInputType.VIDEO_EDIT, VideoModels.LUCY_2_5.inputType) } - @Test - fun `lucy-vton-3 matches JS SDK registry`() { - assertEquals(VideoModels.LUCY_VTON_3, VideoModels.fromName("lucy-vton-3")) - assertEquals("/v1/jobs/lucy-vton-3", VideoModels.LUCY_VTON_3.jobsUrlPath) - assertEquals(20, VideoModels.LUCY_VTON_3.fps) - assertEquals(1088, VideoModels.LUCY_VTON_3.width) - assertEquals(624, VideoModels.LUCY_VTON_3.height) - assertEquals(ModelInputType.VIDEO_EDIT, VideoModels.LUCY_VTON_3.inputType) - } - @Test fun `lucy-vton-3_5 matches JS SDK registry`() { assertEquals(VideoModels.LUCY_VTON_3_5, VideoModels.fromName("lucy-vton-3.5")) @@ -44,9 +33,4 @@ class VideoModelsTest { assertEquals(720, VideoModels.LUCY_VTON_3_5.height) assertEquals(ModelInputType.VIDEO_EDIT, VideoModels.LUCY_VTON_3_5.inputType) } - - @Test - fun `deprecated vton aliases are available`() { - assertNotNull(VideoModels.fromName("lucy-2.1-vton-2")) - } }