diff --git a/examples/nextjs-realtime/README.md b/examples/nextjs-realtime/README.md
index a46388e..ee8a60b 100644
--- a/examples/nextjs-realtime/README.md
+++ b/examples/nextjs-realtime/README.md
@@ -46,4 +46,3 @@ pnpm dev
This example uses `lucy-restyle-2` for style transformation. You can also use:
- `lucy-2.1` - Lucy 2.1 for video editing with reference image support
-- `lucy-vton-2` - Lucy VTON 2
diff --git a/examples/react-vite/README.md b/examples/react-vite/README.md
index d163c16..e2466a5 100644
--- a/examples/react-vite/README.md
+++ b/examples/react-vite/README.md
@@ -44,4 +44,3 @@ pnpm dev
This example uses `lucy-restyle-2` for style transformation. You can also use:
- `lucy-2.1` - Lucy 2.1 for video editing with reference image support
-- `lucy-vton-2` - Lucy VTON 2
diff --git a/examples/sdk-core/README.md b/examples/sdk-core/README.md
index e81af9a..4d1e8d2 100644
--- a/examples/sdk-core/README.md
+++ b/examples/sdk-core/README.md
@@ -49,7 +49,6 @@ See `examples/nextjs-realtime` or `examples/react-vite` for runnable demos.
- `realtime/lucy-restyle-basic.ts` - Realtime style transformation with `lucy-restyle-2`
- `realtime/lucy-2.1.ts` - Lucy 2.1 realtime video editing with reference image support
-- `realtime/lucy-vton-2.ts` - Lucy VTON 2
- `realtime/connection-events.ts` - Handling connection state and errors
- `realtime/prompt-update.ts` - Updating prompt dynamically
- `realtime/custom-model.ts` - Using a custom model definition (e.g., preview/experimental models)
diff --git a/examples/sdk-core/realtime/lucy-vton-2.ts b/examples/sdk-core/realtime/lucy-vton-2.ts
deleted file mode 100644
index 7d9de70..0000000
--- a/examples/sdk-core/realtime/lucy-vton-2.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * Browser-only example - requires WebRTC APIs
- * Lucy VTON 2 (Virtual Try-On) for realtime garment/outfit transfer
- * See examples/nextjs-realtime or examples/react-vite for runnable demos
- */
-
-import { createDecartClient, models } from "@decartai/sdk";
-
-async function main() {
- const model = models.realtime("lucy-vton-2");
-
- const stream = await navigator.mediaDevices.getUserMedia({
- audio: true,
- video: {
- frameRate: model.fps,
- width: model.width,
- height: model.height,
- },
- });
-
- const client = createDecartClient({
- apiKey: process.env.DECART_API_KEY!,
- });
-
- const realtimeClient = await client.realtime.connect(stream, {
- model,
- onRemoteStream: (editedStream) => {
- const video = document.getElementById("output") as HTMLVideoElement;
- video.srcObject = editedStream;
- },
- initialState: {
- prompt: {
- text: "Wearing a red leather jacket",
- enhance: true,
- },
- },
- });
-
- // Use a reference image of a garment to try on
- await realtimeClient.set({
- prompt: "Wearing the outfit from the reference image",
- image: "https://example.com/outfit-reference.png",
- });
-
- console.log("Session ID:", realtimeClient.sessionId);
-}
-
-main();
diff --git a/examples/sdk-core/video/virtual-try-on.ts b/examples/sdk-core/video/virtual-try-on.ts
index 5028c88..c41afb2 100644
--- a/examples/sdk-core/video/virtual-try-on.ts
+++ b/examples/sdk-core/video/virtual-try-on.ts
@@ -12,12 +12,12 @@ run(async () => {
apiKey,
});
- console.log("Processing virtual try-on with lucy-vton-3...");
+ console.log("Processing virtual try-on with lucy-vton-latest...");
const inputVideo = fs.readFileSync("input.mp4");
const result = await client.queue.submitAndPoll({
- model: models.video("lucy-vton-3"),
+ model: models.video("lucy-vton-latest"),
prompt: "Wearing a red leather jacket",
data: new Blob([inputVideo]),
onStatusChange: (job) => {
diff --git a/examples/tanstack-streamer/README.md b/examples/tanstack-streamer/README.md
index 8da7566..7c4e9f4 100644
--- a/examples/tanstack-streamer/README.md
+++ b/examples/tanstack-streamer/README.md
@@ -54,4 +54,3 @@ pnpm dev
This example uses `lucy-2.1` for video editing with reference image support. You can also use:
- `lucy-restyle-2` - Lucy Restyle for style transformation
-- `lucy-vton-2` - Lucy VTON 2
diff --git a/packages/sdk/AGENTS.md b/packages/sdk/AGENTS.md
index 9b4aed5..1e51391 100644
--- a/packages/sdk/AGENTS.md
+++ b/packages/sdk/AGENTS.md
@@ -70,23 +70,17 @@
### Realtime Models (WebRTC)
- `lucy-2.1` - Real-time video editing (supports reference image)
- `lucy-2.5` - Real-time video editing (supports reference image)
-- `lucy-vton-2` - Real-time virtual try-on 2
-- `lucy-vton-3` - Real-time virtual try-on 3
- `lucy-vton-3.5` - Real-time virtual try-on 3.5
- `lucy-restyle-2` - Real-time video restyling
- `lucy-latest`, `lucy-vton-latest`, `lucy-restyle-latest` - Server-resolved aliases for the latest stable version (`lucy-vton-latest` → `lucy-vton-3.5`)
-- Deprecated: `lucy-2.1-vton-2` → `lucy-vton-2`
### Video Models (Queue API)
- `lucy-clip` - video-to-video editing
- `lucy-2.1` - long-form video editing (720p)
- `lucy-2.5` - long-form video editing (720p)
-- `lucy-vton-2` - virtual try-on 2 video editing
-- `lucy-vton-3` - virtual try-on 3 video editing
- `lucy-vton-3.5` - virtual try-on 3.5 video editing
- `lucy-restyle-2` - video restyling
- `lucy-latest`, `lucy-vton-latest`, `lucy-restyle-latest`, `lucy-clip-latest` - Server-resolved aliases (`lucy-vton-latest` → `lucy-vton-3.5`)
-- Deprecated: `lucy-2.1-vton-2` → `lucy-vton-2`
### Image Models (Process API)
- `lucy-image-2` - image-to-image editing
diff --git a/packages/sdk/index.html b/packages/sdk/index.html
index 47633ae..614e183 100644
--- a/packages/sdk/index.html
+++ b/packages/sdk/index.html
@@ -343,14 +343,9 @@
Configuration
-
diff --git a/packages/sdk/src/process/types.ts b/packages/sdk/src/process/types.ts
index a1b1194..92305dd 100644
--- a/packages/sdk/src/process/types.ts
+++ b/packages/sdk/src/process/types.ts
@@ -163,14 +163,7 @@ export type ModelSpecificInputs = T["name"] extends "
? ImageEditingInputs
: T["name"] extends "lucy-restyle-v2v" | "lucy-restyle-2"
? VideoRestyleInputs
- : T["name"] extends
- | "lucy-2.1"
- | "lucy-2.5"
- | "lucy-vton-2"
- | "lucy-vton-3"
- | "lucy-vton-3.5"
- | "lucy-2.1-vton-2"
- | "lucy-vton-latest"
+ : T["name"] extends "lucy-2.1" | "lucy-2.5" | "lucy-vton-3.5" | "lucy-vton-latest"
? VideoEdit2Inputs
: T["name"] extends "lucy-pro-v2v" | "lucy-clip"
? VideoEditInputs
diff --git a/packages/sdk/src/shared/model.ts b/packages/sdk/src/shared/model.ts
index de4de43..66c2e2c 100644
--- a/packages/sdk/src/shared/model.ts
+++ b/packages/sdk/src/shared/model.ts
@@ -5,31 +5,14 @@ import { globalInstanceSchema } from "../utils/runtime";
const CANONICAL_MODEL_NAMES = [
"lucy-2.1",
"lucy-2.5",
- "lucy-vton-2",
- "lucy-vton-3",
"lucy-vton-3.5",
"lucy-restyle-2",
"lucy-clip",
"lucy-image-2",
] as const;
-const CANONICAL_REALTIME_MODEL_NAMES = [
- "lucy-2.1",
- "lucy-2.5",
- "lucy-vton-2",
- "lucy-vton-3",
- "lucy-vton-3.5",
- "lucy-restyle-2",
-] as const;
-const CANONICAL_VIDEO_MODEL_NAMES = [
- "lucy-clip",
- "lucy-2.1",
- "lucy-2.5",
- "lucy-vton-2",
- "lucy-vton-3",
- "lucy-vton-3.5",
- "lucy-restyle-2",
-] as const;
+const CANONICAL_REALTIME_MODEL_NAMES = ["lucy-2.1", "lucy-2.5", "lucy-vton-3.5", "lucy-restyle-2"] as const;
+const CANONICAL_VIDEO_MODEL_NAMES = ["lucy-clip", "lucy-2.1", "lucy-2.5", "lucy-vton-3.5", "lucy-restyle-2"] as const;
const CANONICAL_IMAGE_MODEL_NAMES = ["lucy-image-2"] as const;
export const canonicalRealtimeModels = z.enum(CANONICAL_REALTIME_MODEL_NAMES);
@@ -43,7 +26,6 @@ export type CanonicalModel = z.infer;
* Old names still work but will log a deprecation warning.
*/
export const modelAliases = {
- "lucy-2.1-vton-2": "lucy-vton-2",
"lucy-pro-v2v": "lucy-clip",
"lucy-restyle-v2v": "lucy-restyle-2",
"lucy-pro-i2i": "lucy-image-2",
@@ -70,24 +52,18 @@ export const realtimeModels = z.union([
// Canonical names
z.literal("lucy-2.1"),
z.literal("lucy-2.5"),
- z.literal("lucy-vton-2"),
- z.literal("lucy-vton-3"),
z.literal("lucy-vton-3.5"),
z.literal("lucy-restyle-2"),
// Latest aliases (server-side resolution)
z.literal("lucy-latest"),
z.literal("lucy-vton-latest"),
z.literal("lucy-restyle-latest"),
- // Deprecated names (use canonical names above instead)
- z.literal("lucy-2.1-vton-2"),
]);
export const videoModels = z.union([
// Canonical names
z.literal("lucy-clip"),
z.literal("lucy-2.1"),
z.literal("lucy-2.5"),
- z.literal("lucy-vton-2"),
- z.literal("lucy-vton-3"),
z.literal("lucy-vton-3.5"),
z.literal("lucy-restyle-2"),
// Latest aliases (server-side resolution)
@@ -96,7 +72,6 @@ export const videoModels = z.union([
z.literal("lucy-restyle-latest"),
z.literal("lucy-clip-latest"),
// Deprecated names (use canonical names above instead)
- z.literal("lucy-2.1-vton-2"),
z.literal("lucy-pro-v2v"),
z.literal("lucy-restyle-v2v"),
]);
@@ -264,8 +239,6 @@ export const modelInputSchemas = {
"lucy-restyle-2": restyleSchema,
"lucy-2.1": videoEdit2Schema,
"lucy-2.5": videoEdit2Schema,
- "lucy-vton-2": videoEdit2Schema,
- "lucy-vton-3": videoEdit2Schema,
"lucy-vton-3.5": videoEdit2Schema,
// Latest aliases (server-side resolution)
"lucy-latest": videoEdit2Schema,
@@ -274,7 +247,6 @@ export const modelInputSchemas = {
"lucy-clip-latest": videoEditSchema,
"lucy-image-latest": imageEditSchema,
// Deprecated names (kept for backward compatibility)
- "lucy-2.1-vton-2": videoEdit2Schema,
"lucy-pro-v2v": videoEditSchema,
"lucy-pro-i2i": imageEditSchema,
"lucy-restyle-v2v": restyleSchema,
@@ -359,22 +331,6 @@ const _models = {
height: 720,
inputSchema: z.object({}),
},
- "lucy-vton-2": {
- urlPath: "/v1/stream",
- name: "lucy-vton-2" as const,
- fps: { ideal: 30, max: 30 },
- width: 1088,
- height: 624,
- inputSchema: z.object({}),
- },
- "lucy-vton-3": {
- urlPath: "/v1/stream",
- name: "lucy-vton-3" as const,
- fps: { ideal: 30, max: 30 },
- width: 1088,
- height: 624,
- inputSchema: z.object({}),
- },
"lucy-vton-3.5": {
urlPath: "/v1/stream",
name: "lucy-vton-3.5" as const,
@@ -417,15 +373,6 @@ const _models = {
height: 704,
inputSchema: z.object({}),
},
- // Deprecated names (use canonical names above instead)
- "lucy-2.1-vton-2": {
- urlPath: "/v1/stream",
- name: "lucy-2.1-vton-2" as const,
- fps: { ideal: 30, max: 30 },
- width: 1088,
- height: 624,
- inputSchema: z.object({}),
- },
},
image: {
// Canonical name
@@ -488,24 +435,6 @@ const _models = {
height: 720,
inputSchema: modelInputSchemas["lucy-2.5"],
},
- "lucy-vton-2": {
- urlPath: "/v1/generate/lucy-vton-2",
- queueUrlPath: "/v1/jobs/lucy-vton-2",
- name: "lucy-vton-2" as const,
- fps: 20,
- width: 1088,
- height: 624,
- inputSchema: modelInputSchemas["lucy-vton-2"],
- },
- "lucy-vton-3": {
- urlPath: "/v1/generate/lucy-vton-3",
- queueUrlPath: "/v1/jobs/lucy-vton-3",
- name: "lucy-vton-3" as const,
- fps: 20,
- width: 1088,
- height: 624,
- inputSchema: modelInputSchemas["lucy-vton-3"],
- },
"lucy-vton-3.5": {
urlPath: "/v1/generate/lucy-vton-3.5",
queueUrlPath: "/v1/jobs/lucy-vton-3.5",
@@ -563,15 +492,6 @@ const _models = {
inputSchema: modelInputSchemas["lucy-clip-latest"],
},
// Deprecated names (use canonical names above instead)
- "lucy-2.1-vton-2": {
- urlPath: "/v1/generate/lucy-2.1-vton-2",
- queueUrlPath: "/v1/jobs/lucy-2.1-vton-2",
- name: "lucy-2.1-vton-2" as const,
- fps: 20,
- width: 1088,
- height: 624,
- inputSchema: modelInputSchemas["lucy-2.1-vton-2"],
- },
"lucy-pro-v2v": {
urlPath: "/v1/generate/lucy-pro-v2v",
queueUrlPath: "/v1/jobs/lucy-pro-v2v",
@@ -628,8 +548,6 @@ export const models = {
* Available options:
* - `"lucy-2.1"` - Lucy 2.1 realtime video editing
* - `"lucy-2.5"` - Lucy 2.5 realtime video editing
- * - `"lucy-vton-2"` - Lucy virtual try-on 2
- * - `"lucy-vton-3"` - Lucy virtual try-on 3
* - `"lucy-vton-3.5"` - Lucy virtual try-on 3.5 (latest)
* - `"lucy-restyle-2"` - Realtime video restyling
*/
@@ -648,8 +566,6 @@ export const models = {
* - `"lucy-clip"` - Video-to-video editing
* - `"lucy-2.1"` - Long-form video editing (Lucy 2.1)
* - `"lucy-2.5"` - Long-form video editing (Lucy 2.5)
- * - `"lucy-vton-2"` - Virtual try-on 2 video editing
- * - `"lucy-vton-3"` - Virtual try-on 3 video editing
* - `"lucy-vton-3.5"` - Virtual try-on 3.5 video editing (latest)
* - `"lucy-restyle-2"` - Video restyling
*/
diff --git a/packages/sdk/tests/e2e-realtime.test.ts b/packages/sdk/tests/e2e-realtime.test.ts
index 4635797..a9a6355 100644
--- a/packages/sdk/tests/e2e-realtime.test.ts
+++ b/packages/sdk/tests/e2e-realtime.test.ts
@@ -60,8 +60,6 @@ const REALTIME_MODELS: RealTimeModels[] = [
"lucy-restyle-2",
"lucy-2.1",
"lucy-2.5",
- "lucy-vton-2",
- "lucy-vton-3",
"lucy-vton-3.5",
];
diff --git a/packages/sdk/tests/e2e.test.ts b/packages/sdk/tests/e2e.test.ts
index 1394e03..7d7c09e 100644
--- a/packages/sdk/tests/e2e.test.ts
+++ b/packages/sdk/tests/e2e.test.ts
@@ -11,7 +11,7 @@ const OUTPUT_DIR = join(__dirname, "e2e-output");
const VIDEO_FIXTURE = join(__dirname, "fixtures", "video.mp4");
const IMAGE_FIXTURE = join(__dirname, "fixtures", "image.png");
// Try-on models take the GARMENT as reference_image; a non-garment reference (the dogs above) makes
-// lucy-vton-3 undress the subject and the output fails moderation (PLA-808, PLA-817).
+// the try-on models undress the subject and the output fails moderation (PLA-808, PLA-817).
const GARMENT_FIXTURE = join(__dirname, "fixtures", "garment.png");
const TIMEOUT = 5 * 60 * 1000; // 5 minutes
@@ -194,29 +194,6 @@ describe.concurrent("E2E Tests", { timeout: TIMEOUT, retry: 2 }, () => {
await expectResult(result, "lucy-2.5-reference_image", ".mp4");
});
- it("lucy-vton-3: virtual try-on (prompt)", async () => {
- const result = await client.queue.submitAndPoll({
- model: models.video("lucy-vton-3"),
- prompt: "Wearing a red leather jacket",
- data: videoBlob,
- seed: 42,
- });
-
- await expectResult(result, "lucy-vton-3-prompt", ".mp4");
- });
-
- it("lucy-vton-3: virtual try-on (reference_image)", async () => {
- const result = await client.queue.submitAndPoll({
- model: models.video("lucy-vton-3"),
- prompt: "",
- reference_image: garmentBlob,
- data: videoBlob,
- seed: 42,
- });
-
- await expectResult(result, "lucy-vton-3-reference_image", ".mp4");
- });
-
it("lucy-vton-3.5: virtual try-on (prompt)", async () => {
const result = await client.queue.submitAndPoll({
model: models.video("lucy-vton-3.5"),
diff --git a/packages/sdk/tests/unit.test.ts b/packages/sdk/tests/unit.test.ts
index 65223cf..8c7ca10 100644
--- a/packages/sdk/tests/unit.test.ts
+++ b/packages/sdk/tests/unit.test.ts
@@ -2502,27 +2502,18 @@ describe("Canonical Model Names", () => {
"lucy-clip-latest",
"lucy-image-latest",
];
- const deprecatedAliases = ["lucy-2.1-vton-2", "lucy-pro-v2v", "lucy-restyle-v2v", "lucy-pro-i2i"];
+ const deprecatedAliases = ["lucy-pro-v2v", "lucy-restyle-v2v", "lucy-pro-i2i"];
it("canonical schemas exclude deprecated and latest aliases", () => {
for (const alias of [...latestAliases, ...deprecatedAliases]) {
expect(canonicalModelSchema.safeParse(alias).success).toBe(false);
}
- expect(canonicalRealtimeModels.options).toEqual([
- "lucy-2.1",
- "lucy-2.5",
- "lucy-vton-2",
- "lucy-vton-3",
- "lucy-vton-3.5",
- "lucy-restyle-2",
- ]);
+ expect(canonicalRealtimeModels.options).toEqual(["lucy-2.1", "lucy-2.5", "lucy-vton-3.5", "lucy-restyle-2"]);
expect(canonicalVideoModels.options).toEqual([
"lucy-clip",
"lucy-2.1",
"lucy-2.5",
- "lucy-vton-2",
- "lucy-vton-3",
"lucy-vton-3.5",
"lucy-restyle-2",
]);
@@ -2583,7 +2574,7 @@ describe("Canonical Model Names", () => {
it("lists all models when called without options", () => {
const listedModels = listModels();
- expect(listedModels).toHaveLength(27);
+ expect(listedModels).toHaveLength(21);
expect(listedModels.some((model) => model.kind === "realtime" && model.name === "lucy-2.1")).toBe(true);
expect(listedModels.some((model) => model.kind === "video" && model.name === "lucy-clip")).toBe(true);
expect(listedModels.some((model) => model.kind === "image" && model.name === "lucy-image-2")).toBe(true);
@@ -2595,7 +2586,6 @@ describe("Canonical Model Names", () => {
expect(realtimeModels.every((model) => model.kind === "realtime")).toBe(true);
expect(realtimeNames).toContain("lucy-latest");
- expect(realtimeNames).toContain("lucy-2.1-vton-2");
});
it("lists canonical model definitions without latest or deprecated aliases", () => {
@@ -2658,24 +2648,6 @@ describe("Canonical Model Names", () => {
expect(model.height).toBe(720);
});
- it("lucy-vton-2 canonical name works", () => {
- const model = models.realtime("lucy-vton-2");
- expect(model.name).toBe("lucy-vton-2");
- expect(model.urlPath).toBe("/v1/stream");
- expect(model.fps).toEqual({ ideal: 30, max: 30 });
- expect(model.width).toBe(1088);
- expect(model.height).toBe(624);
- });
-
- it("lucy-vton-3 canonical name works", () => {
- const model = models.realtime("lucy-vton-3");
- expect(model.name).toBe("lucy-vton-3");
- expect(model.urlPath).toBe("/v1/stream");
- expect(model.fps).toEqual({ ideal: 30, max: 30 });
- expect(model.width).toBe(1088);
- expect(model.height).toBe(624);
- });
-
it("lucy-vton-3.5 canonical name works", () => {
const model = models.realtime("lucy-vton-3.5");
expect(model.name).toBe("lucy-vton-3.5");
@@ -2718,26 +2690,6 @@ describe("Canonical Model Names", () => {
expect(model.width).toBe(1280);
expect(model.height).toBe(720);
});
- it("lucy-vton-2 as video model works", () => {
- const model = models.video("lucy-vton-2");
- expect(model.name).toBe("lucy-vton-2");
- expect(model.urlPath).toBe("/v1/generate/lucy-vton-2");
- expect(model.queueUrlPath).toBe("/v1/jobs/lucy-vton-2");
- expect(model.fps).toBe(20);
- expect(model.width).toBe(1088);
- expect(model.height).toBe(624);
- });
-
- it("lucy-vton-3 as video model works", () => {
- const model = models.video("lucy-vton-3");
- expect(model.name).toBe("lucy-vton-3");
- expect(model.urlPath).toBe("/v1/generate/lucy-vton-3");
- expect(model.queueUrlPath).toBe("/v1/jobs/lucy-vton-3");
- expect(model.fps).toBe(20);
- expect(model.width).toBe(1088);
- expect(model.height).toBe(624);
- });
-
it("lucy-vton-3.5 as video model works", () => {
const model = models.video("lucy-vton-3.5");
expect(model.name).toBe("lucy-vton-3.5");
@@ -2875,16 +2827,6 @@ describe("Canonical Model Names", () => {
expect(isVideoModel("lucy-2.1")).toBe(true);
});
- it("lucy-vton-2 is both a realtime and video model", () => {
- expect(isRealtimeModel("lucy-vton-2")).toBe(true);
- expect(isVideoModel("lucy-vton-2")).toBe(true);
- });
-
- it("lucy-2.1-vton-2 is a deprecated alias for lucy-vton-2 on both surfaces", () => {
- expect(isRealtimeModel("lucy-2.1-vton-2")).toBe(true);
- expect(isVideoModel("lucy-2.1-vton-2")).toBe(true);
- });
-
it("lucy-restyle-2 is both a realtime and video model", () => {
expect(isRealtimeModel("lucy-restyle-2")).toBe(true);
expect(isVideoModel("lucy-restyle-2")).toBe(true);
@@ -2892,25 +2834,6 @@ describe("Canonical Model Names", () => {
});
describe("Deprecated names still work", () => {
- it("lucy-2.1-vton-2 still works as realtime and video alias", () => {
- _resetDeprecationWarnings();
- const warnSpy = vi.spyOn(console, "warn").mockImplementation(() => {});
-
- const realtimeModel = models.realtime("lucy-2.1-vton-2");
- const videoModel = models.video("lucy-2.1-vton-2");
-
- expect(realtimeModel.name).toBe("lucy-2.1-vton-2");
- expect(videoModel.name).toBe("lucy-2.1-vton-2");
- expect(videoModel.urlPath).toBe("/v1/generate/lucy-2.1-vton-2");
- expect(videoModel.queueUrlPath).toBe("/v1/jobs/lucy-2.1-vton-2");
- expect(warnSpy).toHaveBeenCalledTimes(1);
- expect(warnSpy).toHaveBeenCalledWith(
- expect.stringContaining('Model "lucy-2.1-vton-2" is deprecated. Use "lucy-vton-2" instead.'),
- );
-
- warnSpy.mockRestore();
- });
-
it("lucy-pro-v2v still works as video model", () => {
const model = models.video("lucy-pro-v2v");
expect(model.name).toBe("lucy-pro-v2v");
@@ -2931,12 +2854,6 @@ describe("Canonical Model Names", () => {
expect(warnSpy).toHaveBeenCalledWith(
expect.stringContaining('Model "lucy-pro-v2v" is deprecated. Use "lucy-clip" instead.'),
);
- warnSpy.mockClear();
- _resetDeprecationWarnings();
- models.video("lucy-2.1-vton-2");
- expect(warnSpy).toHaveBeenCalledWith(
- expect.stringContaining('Model "lucy-2.1-vton-2" is deprecated. Use "lucy-vton-2" instead.'),
- );
warnSpy.mockRestore();
});