@decartai/sdk 0.0.58 → 0.0.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/process/types.d.ts +1 -1
- package/dist/realtime/client.js +1 -1
- package/dist/realtime/webrtc-connection.js +1 -1
- package/dist/shared/model.d.ts +234 -14
- package/dist/shared/model.js +314 -49
- package/package.json +1 -1
package/dist/process/types.d.ts
CHANGED
|
@@ -143,7 +143,7 @@ interface PromptInput {
|
|
|
143
143
|
* This allows different models to have field-specific documentation while maintaining type safety.
|
|
144
144
|
* Specific models are checked first, then falls back to category-based selection.
|
|
145
145
|
*/
|
|
146
|
-
type ModelSpecificInputs<T extends ModelDefinition> = T["name"] extends "lucy-pro-i2i" ? ImageEditingInputs : T["name"] extends "lucy-restyle-v2v" ? VideoRestyleInputs : T["name"] extends "lucy-2-v2v" ? VideoEdit2Inputs : T["name"] extends "lucy-pro-v2v" ? VideoEditInputs : T["name"] extends ImageModels ? ImageGenerationInputs : T["name"] extends VideoModels ? VideoModelInputs : PromptInput;
|
|
146
|
+
type ModelSpecificInputs<T extends ModelDefinition> = T["name"] extends "lucy-pro-i2i" | "lucy-image-2" ? ImageEditingInputs : T["name"] extends "lucy-restyle-v2v" | "lucy-restyle-2" ? VideoRestyleInputs : T["name"] extends "lucy-2-v2v" | "lucy-2" | "lucy-2.1" | "lucy-2.1-vton" ? VideoEdit2Inputs : T["name"] extends "lucy-pro-v2v" | "lucy-clip" ? VideoEditInputs : T["name"] extends ImageModels ? ImageGenerationInputs : T["name"] extends VideoModels ? VideoModelInputs : PromptInput;
|
|
147
147
|
interface ProcessInputs {
|
|
148
148
|
/**
|
|
149
149
|
* Random seed for reproducible results.
|
package/dist/realtime/client.js
CHANGED
|
@@ -64,7 +64,7 @@ const createRealTimeClient = (opts) => {
|
|
|
64
64
|
const connect = async (stream, options) => {
|
|
65
65
|
const parsedOptions = realTimeClientConnectOptionsSchema.safeParse(options);
|
|
66
66
|
if (!parsedOptions.success) throw parsedOptions.error;
|
|
67
|
-
const isAvatarLive = options.model.name === "live_avatar";
|
|
67
|
+
const isAvatarLive = options.model.name === "live_avatar" || options.model.name === "live-avatar";
|
|
68
68
|
const { onRemoteStream, initialState } = parsedOptions.data;
|
|
69
69
|
let audioStreamManager;
|
|
70
70
|
let inputStream;
|
|
@@ -312,7 +312,7 @@ var WebRTCConnection = class {
|
|
|
312
312
|
this.pc = new RTCPeerConnection({ iceServers: ICE_SERVERS });
|
|
313
313
|
this.setState("connecting");
|
|
314
314
|
if (this.localStream) {
|
|
315
|
-
if (this.callbacks.modelName === "live_avatar") this.pc.addTransceiver("video", { direction: "recvonly" });
|
|
315
|
+
if (this.callbacks.modelName === "live_avatar" || this.callbacks.modelName === "live-avatar") this.pc.addTransceiver("video", { direction: "recvonly" });
|
|
316
316
|
this.localStream.getTracks().forEach((track) => {
|
|
317
317
|
if (this.pc && this.localStream) this.pc.addTrack(track, this.localStream);
|
|
318
318
|
});
|
package/dist/shared/model.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
|
|
3
3
|
//#region src/shared/model.d.ts
|
|
4
|
-
declare const realtimeModels: z.ZodUnion<readonly [z.ZodLiteral<"mirage">, z.ZodLiteral<"mirage_v2">, z.ZodLiteral<"lucy_v2v_720p_rt">, z.ZodLiteral<"lucy_2_rt">, z.ZodLiteral<"live_avatar">]>;
|
|
5
|
-
declare const videoModels: z.ZodUnion<readonly [z.ZodLiteral<"lucy-
|
|
6
|
-
declare const imageModels: z.ZodLiteral<"lucy-pro-i2i">;
|
|
7
|
-
declare const modelSchema: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"mirage">, z.ZodLiteral<"mirage_v2">, z.ZodLiteral<"lucy_v2v_720p_rt">, z.ZodLiteral<"lucy_2_rt">, z.ZodLiteral<"live_avatar">]>, z.ZodUnion<readonly [z.ZodLiteral<"lucy-
|
|
4
|
+
declare const realtimeModels: z.ZodUnion<readonly [z.ZodLiteral<"lucy">, z.ZodLiteral<"lucy-2">, z.ZodLiteral<"lucy-2.1">, z.ZodLiteral<"lucy-2.1-vton">, z.ZodLiteral<"lucy-restyle">, z.ZodLiteral<"lucy-restyle-2">, z.ZodLiteral<"live-avatar">, z.ZodLiteral<"lucy-latest">, z.ZodLiteral<"lucy-vton-latest">, z.ZodLiteral<"lucy-restyle-latest">, z.ZodLiteral<"mirage">, z.ZodLiteral<"mirage_v2">, z.ZodLiteral<"lucy_v2v_720p_rt">, z.ZodLiteral<"lucy_2_rt">, z.ZodLiteral<"live_avatar">]>;
|
|
5
|
+
declare const videoModels: z.ZodUnion<readonly [z.ZodLiteral<"lucy-clip">, z.ZodLiteral<"lucy-2">, z.ZodLiteral<"lucy-2.1">, z.ZodLiteral<"lucy-2.1-vton">, z.ZodLiteral<"lucy-restyle-2">, z.ZodLiteral<"lucy-motion">, z.ZodLiteral<"lucy-latest">, z.ZodLiteral<"lucy-vton-latest">, z.ZodLiteral<"lucy-restyle-latest">, z.ZodLiteral<"lucy-clip-latest">, z.ZodLiteral<"lucy-motion-latest">, z.ZodLiteral<"lucy-pro-v2v">, z.ZodLiteral<"lucy-restyle-v2v">, z.ZodLiteral<"lucy-2-v2v">]>;
|
|
6
|
+
declare const imageModels: z.ZodUnion<readonly [z.ZodLiteral<"lucy-image-2">, z.ZodLiteral<"lucy-image-latest">, z.ZodLiteral<"lucy-pro-i2i">]>;
|
|
7
|
+
declare const modelSchema: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"lucy">, z.ZodLiteral<"lucy-2">, z.ZodLiteral<"lucy-2.1">, z.ZodLiteral<"lucy-2.1-vton">, z.ZodLiteral<"lucy-restyle">, z.ZodLiteral<"lucy-restyle-2">, z.ZodLiteral<"live-avatar">, z.ZodLiteral<"lucy-latest">, z.ZodLiteral<"lucy-vton-latest">, z.ZodLiteral<"lucy-restyle-latest">, z.ZodLiteral<"mirage">, z.ZodLiteral<"mirage_v2">, z.ZodLiteral<"lucy_v2v_720p_rt">, z.ZodLiteral<"lucy_2_rt">, z.ZodLiteral<"live_avatar">]>, z.ZodUnion<readonly [z.ZodLiteral<"lucy-clip">, z.ZodLiteral<"lucy-2">, z.ZodLiteral<"lucy-2.1">, z.ZodLiteral<"lucy-2.1-vton">, z.ZodLiteral<"lucy-restyle-2">, z.ZodLiteral<"lucy-motion">, z.ZodLiteral<"lucy-latest">, z.ZodLiteral<"lucy-vton-latest">, z.ZodLiteral<"lucy-restyle-latest">, z.ZodLiteral<"lucy-clip-latest">, z.ZodLiteral<"lucy-motion-latest">, z.ZodLiteral<"lucy-pro-v2v">, z.ZodLiteral<"lucy-restyle-v2v">, z.ZodLiteral<"lucy-2-v2v">]>, z.ZodUnion<readonly [z.ZodLiteral<"lucy-image-2">, z.ZodLiteral<"lucy-image-latest">, z.ZodLiteral<"lucy-pro-i2i">]>]>;
|
|
8
8
|
type Model = z.infer<typeof modelSchema>;
|
|
9
9
|
type RealTimeModels = z.infer<typeof realtimeModels>;
|
|
10
10
|
type VideoModels = z.infer<typeof videoModels>;
|
|
@@ -13,7 +13,7 @@ declare function isRealtimeModel(model: string): model is RealTimeModels;
|
|
|
13
13
|
declare function isVideoModel(model: string): model is VideoModels;
|
|
14
14
|
declare function isImageModel(model: string): model is ImageModels;
|
|
15
15
|
declare const modelInputSchemas: {
|
|
16
|
-
readonly "lucy-
|
|
16
|
+
readonly "lucy-clip": z.ZodObject<{
|
|
17
17
|
prompt: z.ZodString;
|
|
18
18
|
data: z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
19
19
|
uri: z.ZodString;
|
|
@@ -29,7 +29,7 @@ declare const modelInputSchemas: {
|
|
|
29
29
|
resolution: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"720p">>>;
|
|
30
30
|
enhance_prompt: z.ZodOptional<z.ZodBoolean>;
|
|
31
31
|
}, z.core.$strip>;
|
|
32
|
-
readonly "lucy-
|
|
32
|
+
readonly "lucy-image-2": z.ZodObject<{
|
|
33
33
|
prompt: z.ZodString;
|
|
34
34
|
data: z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
35
35
|
uri: z.ZodString;
|
|
@@ -48,6 +48,70 @@ declare const modelInputSchemas: {
|
|
|
48
48
|
}>>>;
|
|
49
49
|
enhance_prompt: z.ZodOptional<z.ZodBoolean>;
|
|
50
50
|
}, z.core.$strip>;
|
|
51
|
+
readonly "lucy-restyle-2": z.ZodObject<{
|
|
52
|
+
prompt: z.ZodOptional<z.ZodString>;
|
|
53
|
+
reference_image: z.ZodOptional<z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
54
|
+
uri: z.ZodString;
|
|
55
|
+
type: z.ZodString;
|
|
56
|
+
name: z.ZodString;
|
|
57
|
+
}, z.core.$strip>]>>;
|
|
58
|
+
data: z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
59
|
+
uri: z.ZodString;
|
|
60
|
+
type: z.ZodString;
|
|
61
|
+
name: z.ZodString;
|
|
62
|
+
}, z.core.$strip>]>;
|
|
63
|
+
seed: z.ZodOptional<z.ZodNumber>;
|
|
64
|
+
resolution: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"720p">>>;
|
|
65
|
+
enhance_prompt: z.ZodOptional<z.ZodBoolean>;
|
|
66
|
+
}, z.core.$strip>;
|
|
67
|
+
readonly "lucy-2": z.ZodObject<{
|
|
68
|
+
prompt: z.ZodString;
|
|
69
|
+
reference_image: z.ZodOptional<z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
70
|
+
uri: z.ZodString;
|
|
71
|
+
type: z.ZodString;
|
|
72
|
+
name: z.ZodString;
|
|
73
|
+
}, z.core.$strip>]>>;
|
|
74
|
+
data: z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
75
|
+
uri: z.ZodString;
|
|
76
|
+
type: z.ZodString;
|
|
77
|
+
name: z.ZodString;
|
|
78
|
+
}, z.core.$strip>]>;
|
|
79
|
+
seed: z.ZodOptional<z.ZodNumber>;
|
|
80
|
+
resolution: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"720p">>>;
|
|
81
|
+
enhance_prompt: z.ZodOptional<z.ZodBoolean>;
|
|
82
|
+
}, z.core.$strip>;
|
|
83
|
+
readonly "lucy-2.1": z.ZodObject<{
|
|
84
|
+
prompt: z.ZodString;
|
|
85
|
+
reference_image: z.ZodOptional<z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
86
|
+
uri: z.ZodString;
|
|
87
|
+
type: z.ZodString;
|
|
88
|
+
name: z.ZodString;
|
|
89
|
+
}, z.core.$strip>]>>;
|
|
90
|
+
data: z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
91
|
+
uri: z.ZodString;
|
|
92
|
+
type: z.ZodString;
|
|
93
|
+
name: z.ZodString;
|
|
94
|
+
}, z.core.$strip>]>;
|
|
95
|
+
seed: z.ZodOptional<z.ZodNumber>;
|
|
96
|
+
resolution: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"720p">>>;
|
|
97
|
+
enhance_prompt: z.ZodOptional<z.ZodBoolean>;
|
|
98
|
+
}, z.core.$strip>;
|
|
99
|
+
readonly "lucy-2.1-vton": z.ZodObject<{
|
|
100
|
+
prompt: z.ZodString;
|
|
101
|
+
reference_image: z.ZodOptional<z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
102
|
+
uri: z.ZodString;
|
|
103
|
+
type: z.ZodString;
|
|
104
|
+
name: z.ZodString;
|
|
105
|
+
}, z.core.$strip>]>>;
|
|
106
|
+
data: z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
107
|
+
uri: z.ZodString;
|
|
108
|
+
type: z.ZodString;
|
|
109
|
+
name: z.ZodString;
|
|
110
|
+
}, z.core.$strip>]>;
|
|
111
|
+
seed: z.ZodOptional<z.ZodNumber>;
|
|
112
|
+
resolution: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"720p">>>;
|
|
113
|
+
enhance_prompt: z.ZodOptional<z.ZodBoolean>;
|
|
114
|
+
}, z.core.$strip>;
|
|
51
115
|
readonly "lucy-motion": z.ZodObject<{
|
|
52
116
|
data: z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
53
117
|
uri: z.ZodString;
|
|
@@ -62,6 +126,138 @@ declare const modelInputSchemas: {
|
|
|
62
126
|
seed: z.ZodOptional<z.ZodNumber>;
|
|
63
127
|
resolution: z.ZodOptional<z.ZodDefault<z.ZodLiteral<"720p">>>;
|
|
64
128
|
}, z.core.$strip>;
|
|
129
|
+
readonly "lucy-latest": z.ZodObject<{
|
|
130
|
+
prompt: z.ZodString;
|
|
131
|
+
reference_image: z.ZodOptional<z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
132
|
+
uri: z.ZodString;
|
|
133
|
+
type: z.ZodString;
|
|
134
|
+
name: z.ZodString;
|
|
135
|
+
}, z.core.$strip>]>>;
|
|
136
|
+
data: z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
137
|
+
uri: z.ZodString;
|
|
138
|
+
type: z.ZodString;
|
|
139
|
+
name: z.ZodString;
|
|
140
|
+
}, z.core.$strip>]>;
|
|
141
|
+
seed: z.ZodOptional<z.ZodNumber>;
|
|
142
|
+
resolution: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"720p">>>;
|
|
143
|
+
enhance_prompt: z.ZodOptional<z.ZodBoolean>;
|
|
144
|
+
}, z.core.$strip>;
|
|
145
|
+
readonly "lucy-vton-latest": z.ZodObject<{
|
|
146
|
+
prompt: z.ZodString;
|
|
147
|
+
reference_image: z.ZodOptional<z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
148
|
+
uri: z.ZodString;
|
|
149
|
+
type: z.ZodString;
|
|
150
|
+
name: z.ZodString;
|
|
151
|
+
}, z.core.$strip>]>>;
|
|
152
|
+
data: z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
153
|
+
uri: z.ZodString;
|
|
154
|
+
type: z.ZodString;
|
|
155
|
+
name: z.ZodString;
|
|
156
|
+
}, z.core.$strip>]>;
|
|
157
|
+
seed: z.ZodOptional<z.ZodNumber>;
|
|
158
|
+
resolution: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"720p">>>;
|
|
159
|
+
enhance_prompt: z.ZodOptional<z.ZodBoolean>;
|
|
160
|
+
}, z.core.$strip>;
|
|
161
|
+
readonly "lucy-restyle-latest": z.ZodObject<{
|
|
162
|
+
prompt: z.ZodOptional<z.ZodString>;
|
|
163
|
+
reference_image: z.ZodOptional<z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
164
|
+
uri: z.ZodString;
|
|
165
|
+
type: z.ZodString;
|
|
166
|
+
name: z.ZodString;
|
|
167
|
+
}, z.core.$strip>]>>;
|
|
168
|
+
data: z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
169
|
+
uri: z.ZodString;
|
|
170
|
+
type: z.ZodString;
|
|
171
|
+
name: z.ZodString;
|
|
172
|
+
}, z.core.$strip>]>;
|
|
173
|
+
seed: z.ZodOptional<z.ZodNumber>;
|
|
174
|
+
resolution: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"720p">>>;
|
|
175
|
+
enhance_prompt: z.ZodOptional<z.ZodBoolean>;
|
|
176
|
+
}, z.core.$strip>;
|
|
177
|
+
readonly "lucy-clip-latest": z.ZodObject<{
|
|
178
|
+
prompt: z.ZodString;
|
|
179
|
+
data: z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
180
|
+
uri: z.ZodString;
|
|
181
|
+
type: z.ZodString;
|
|
182
|
+
name: z.ZodString;
|
|
183
|
+
}, z.core.$strip>]>;
|
|
184
|
+
reference_image: z.ZodOptional<z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
185
|
+
uri: z.ZodString;
|
|
186
|
+
type: z.ZodString;
|
|
187
|
+
name: z.ZodString;
|
|
188
|
+
}, z.core.$strip>]>>;
|
|
189
|
+
seed: z.ZodOptional<z.ZodNumber>;
|
|
190
|
+
resolution: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"720p">>>;
|
|
191
|
+
enhance_prompt: z.ZodOptional<z.ZodBoolean>;
|
|
192
|
+
}, z.core.$strip>;
|
|
193
|
+
readonly "lucy-motion-latest": z.ZodObject<{
|
|
194
|
+
data: z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
195
|
+
uri: z.ZodString;
|
|
196
|
+
type: z.ZodString;
|
|
197
|
+
name: z.ZodString;
|
|
198
|
+
}, z.core.$strip>]>;
|
|
199
|
+
trajectory: z.ZodArray<z.ZodObject<{
|
|
200
|
+
frame: z.ZodNumber;
|
|
201
|
+
x: z.ZodNumber;
|
|
202
|
+
y: z.ZodNumber;
|
|
203
|
+
}, z.core.$strip>>;
|
|
204
|
+
seed: z.ZodOptional<z.ZodNumber>;
|
|
205
|
+
resolution: z.ZodOptional<z.ZodDefault<z.ZodLiteral<"720p">>>;
|
|
206
|
+
}, z.core.$strip>;
|
|
207
|
+
readonly "lucy-image-latest": z.ZodObject<{
|
|
208
|
+
prompt: z.ZodString;
|
|
209
|
+
data: z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
210
|
+
uri: z.ZodString;
|
|
211
|
+
type: z.ZodString;
|
|
212
|
+
name: z.ZodString;
|
|
213
|
+
}, z.core.$strip>]>;
|
|
214
|
+
reference_image: z.ZodOptional<z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
215
|
+
uri: z.ZodString;
|
|
216
|
+
type: z.ZodString;
|
|
217
|
+
name: z.ZodString;
|
|
218
|
+
}, z.core.$strip>]>>;
|
|
219
|
+
seed: z.ZodOptional<z.ZodNumber>;
|
|
220
|
+
resolution: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
221
|
+
"720p": "720p";
|
|
222
|
+
"480p": "480p";
|
|
223
|
+
}>>>;
|
|
224
|
+
enhance_prompt: z.ZodOptional<z.ZodBoolean>;
|
|
225
|
+
}, z.core.$strip>;
|
|
226
|
+
readonly "lucy-pro-v2v": z.ZodObject<{
|
|
227
|
+
prompt: z.ZodString;
|
|
228
|
+
data: z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
229
|
+
uri: z.ZodString;
|
|
230
|
+
type: z.ZodString;
|
|
231
|
+
name: z.ZodString;
|
|
232
|
+
}, z.core.$strip>]>;
|
|
233
|
+
reference_image: z.ZodOptional<z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
234
|
+
uri: z.ZodString;
|
|
235
|
+
type: z.ZodString;
|
|
236
|
+
name: z.ZodString;
|
|
237
|
+
}, z.core.$strip>]>>;
|
|
238
|
+
seed: z.ZodOptional<z.ZodNumber>;
|
|
239
|
+
resolution: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"720p">>>;
|
|
240
|
+
enhance_prompt: z.ZodOptional<z.ZodBoolean>;
|
|
241
|
+
}, z.core.$strip>;
|
|
242
|
+
readonly "lucy-pro-i2i": z.ZodObject<{
|
|
243
|
+
prompt: z.ZodString;
|
|
244
|
+
data: z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
245
|
+
uri: z.ZodString;
|
|
246
|
+
type: z.ZodString;
|
|
247
|
+
name: z.ZodString;
|
|
248
|
+
}, z.core.$strip>]>;
|
|
249
|
+
reference_image: z.ZodOptional<z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
250
|
+
uri: z.ZodString;
|
|
251
|
+
type: z.ZodString;
|
|
252
|
+
name: z.ZodString;
|
|
253
|
+
}, z.core.$strip>]>>;
|
|
254
|
+
seed: z.ZodOptional<z.ZodNumber>;
|
|
255
|
+
resolution: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
256
|
+
"720p": "720p";
|
|
257
|
+
"480p": "480p";
|
|
258
|
+
}>>>;
|
|
259
|
+
enhance_prompt: z.ZodOptional<z.ZodBoolean>;
|
|
260
|
+
}, z.core.$strip>;
|
|
65
261
|
readonly "lucy-restyle-v2v": z.ZodObject<{
|
|
66
262
|
prompt: z.ZodOptional<z.ZodString>;
|
|
67
263
|
reference_image: z.ZodOptional<z.ZodUnion<readonly [z.ZodCustom<File, File>, z.ZodCustom<Blob, Blob>, z.ZodCustom<ReadableStream<unknown>, ReadableStream<unknown>>, z.ZodCustom<URL, URL>, z.ZodURL, z.ZodObject<{
|
|
@@ -116,32 +312,56 @@ type CustomModelDefinition = Omit<ModelDefinition, "name" | "inputSchema"> & {
|
|
|
116
312
|
/**
|
|
117
313
|
* Type alias for model definitions that support synchronous processing.
|
|
118
314
|
* Only image models support the sync/process API.
|
|
315
|
+
* Requires `queueUrlPath` to distinguish from realtime definitions of the same model name.
|
|
119
316
|
*/
|
|
120
|
-
type ImageModelDefinition = ModelDefinition<ImageModels
|
|
317
|
+
type ImageModelDefinition = ModelDefinition<ImageModels> & {
|
|
318
|
+
queueUrlPath: string;
|
|
319
|
+
};
|
|
121
320
|
/**
|
|
122
321
|
* Type alias for model definitions that support queue processing.
|
|
123
322
|
* Only video models support the queue API.
|
|
323
|
+
* Requires `queueUrlPath` to distinguish from realtime definitions of the same model name.
|
|
124
324
|
*/
|
|
125
|
-
type VideoModelDefinition = ModelDefinition<VideoModels
|
|
325
|
+
type VideoModelDefinition = ModelDefinition<VideoModels> & {
|
|
326
|
+
queueUrlPath: string;
|
|
327
|
+
};
|
|
126
328
|
declare const models: {
|
|
329
|
+
/**
|
|
330
|
+
* Get a realtime streaming model identifier.
|
|
331
|
+
*
|
|
332
|
+
* Available options:
|
|
333
|
+
* - `"lucy-2"` - Lucy 2 realtime video editing (720p)
|
|
334
|
+
* - `"lucy-2.1"` - Lucy 2.1 realtime video editing
|
|
335
|
+
* - `"lucy-2.1-vton"` - Lucy 2.1 virtual try-on
|
|
336
|
+
* - `"lucy-restyle-2"` - Realtime video restyling
|
|
337
|
+
* - `"lucy-restyle"` - Legacy realtime restyling
|
|
338
|
+
* - `"lucy"` - Legacy Lucy realtime
|
|
339
|
+
* - `"live-avatar"` - Live avatar
|
|
340
|
+
*/
|
|
127
341
|
realtime: <T extends RealTimeModels>(model: T) => ModelDefinition<T>;
|
|
128
342
|
/**
|
|
129
343
|
* Get a video model identifier.
|
|
130
344
|
*
|
|
131
345
|
* Available options:
|
|
132
|
-
* - `"lucy-
|
|
133
|
-
* - `"lucy-
|
|
134
|
-
* - `"lucy-2
|
|
346
|
+
* - `"lucy-clip"` - Video-to-video editing
|
|
347
|
+
* - `"lucy-2"` - Long-form video editing (720p)
|
|
348
|
+
* - `"lucy-2.1"` - Long-form video editing (Lucy 2.1)
|
|
349
|
+
* - `"lucy-2.1-vton"` - Virtual try-on video editing
|
|
350
|
+
* - `"lucy-restyle-2"` - Video restyling
|
|
135
351
|
* - `"lucy-motion"` - Motion generation
|
|
136
352
|
*/
|
|
137
|
-
video: <T extends VideoModels>(model: T) => ModelDefinition<T
|
|
353
|
+
video: <T extends VideoModels>(model: T) => ModelDefinition<T> & {
|
|
354
|
+
queueUrlPath: string;
|
|
355
|
+
};
|
|
138
356
|
/**
|
|
139
357
|
* Get an image model identifier.
|
|
140
358
|
*
|
|
141
359
|
* Available options:
|
|
142
|
-
* - `"lucy-
|
|
360
|
+
* - `"lucy-image-2"` - Image-to-image editing
|
|
143
361
|
*/
|
|
144
|
-
image: <T extends ImageModels>(model: T) => ModelDefinition<T
|
|
362
|
+
image: <T extends ImageModels>(model: T) => ModelDefinition<T> & {
|
|
363
|
+
queueUrlPath: string;
|
|
364
|
+
};
|
|
145
365
|
};
|
|
146
366
|
//#endregion
|
|
147
367
|
export { CustomModelDefinition, ImageModelDefinition, ImageModels, Model, ModelDefinition, ModelInputSchemas, RealTimeModels, VideoModelDefinition, VideoModels, isImageModel, isRealtimeModel, isVideoModel, models };
|
package/dist/shared/model.js
CHANGED
|
@@ -2,7 +2,40 @@ import { createModelNotFoundError } from "../utils/errors.js";
|
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
|
|
4
4
|
//#region src/shared/model.ts
|
|
5
|
+
/**
|
|
6
|
+
* Map of deprecated model names to their canonical replacements.
|
|
7
|
+
* Old names still work but will log a deprecation warning.
|
|
8
|
+
*/
|
|
9
|
+
const MODEL_ALIASES = {
|
|
10
|
+
mirage: "lucy-restyle",
|
|
11
|
+
mirage_v2: "lucy-restyle-2",
|
|
12
|
+
lucy_v2v_720p_rt: "lucy",
|
|
13
|
+
lucy_2_rt: "lucy-2",
|
|
14
|
+
live_avatar: "live-avatar",
|
|
15
|
+
"lucy-pro-v2v": "lucy-clip",
|
|
16
|
+
"lucy-restyle-v2v": "lucy-restyle-2",
|
|
17
|
+
"lucy-2-v2v": "lucy-2",
|
|
18
|
+
"lucy-pro-i2i": "lucy-image-2"
|
|
19
|
+
};
|
|
20
|
+
const _warnedAliases = /* @__PURE__ */ new Set();
|
|
21
|
+
function warnDeprecated(model) {
|
|
22
|
+
const canonical = MODEL_ALIASES[model];
|
|
23
|
+
if (canonical && !_warnedAliases.has(model)) {
|
|
24
|
+
_warnedAliases.add(model);
|
|
25
|
+
console.warn(`[Decart SDK] Model "${model}" is deprecated. Use "${canonical}" instead. See https://docs.platform.decart.ai/models for details.`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
5
28
|
const realtimeModels = z.union([
|
|
29
|
+
z.literal("lucy"),
|
|
30
|
+
z.literal("lucy-2"),
|
|
31
|
+
z.literal("lucy-2.1"),
|
|
32
|
+
z.literal("lucy-2.1-vton"),
|
|
33
|
+
z.literal("lucy-restyle"),
|
|
34
|
+
z.literal("lucy-restyle-2"),
|
|
35
|
+
z.literal("live-avatar"),
|
|
36
|
+
z.literal("lucy-latest"),
|
|
37
|
+
z.literal("lucy-vton-latest"),
|
|
38
|
+
z.literal("lucy-restyle-latest"),
|
|
6
39
|
z.literal("mirage"),
|
|
7
40
|
z.literal("mirage_v2"),
|
|
8
41
|
z.literal("lucy_v2v_720p_rt"),
|
|
@@ -10,12 +43,26 @@ const realtimeModels = z.union([
|
|
|
10
43
|
z.literal("live_avatar")
|
|
11
44
|
]);
|
|
12
45
|
const videoModels = z.union([
|
|
13
|
-
z.literal("lucy-
|
|
46
|
+
z.literal("lucy-clip"),
|
|
47
|
+
z.literal("lucy-2"),
|
|
48
|
+
z.literal("lucy-2.1"),
|
|
49
|
+
z.literal("lucy-2.1-vton"),
|
|
50
|
+
z.literal("lucy-restyle-2"),
|
|
14
51
|
z.literal("lucy-motion"),
|
|
52
|
+
z.literal("lucy-latest"),
|
|
53
|
+
z.literal("lucy-vton-latest"),
|
|
54
|
+
z.literal("lucy-restyle-latest"),
|
|
55
|
+
z.literal("lucy-clip-latest"),
|
|
56
|
+
z.literal("lucy-motion-latest"),
|
|
57
|
+
z.literal("lucy-pro-v2v"),
|
|
15
58
|
z.literal("lucy-restyle-v2v"),
|
|
16
59
|
z.literal("lucy-2-v2v")
|
|
17
60
|
]);
|
|
18
|
-
const imageModels = z.
|
|
61
|
+
const imageModels = z.union([
|
|
62
|
+
z.literal("lucy-image-2"),
|
|
63
|
+
z.literal("lucy-image-latest"),
|
|
64
|
+
z.literal("lucy-pro-i2i")
|
|
65
|
+
]);
|
|
19
66
|
const modelSchema = z.union([
|
|
20
67
|
realtimeModels,
|
|
21
68
|
videoModels,
|
|
@@ -54,26 +101,48 @@ const proResolutionSchema = () => {
|
|
|
54
101
|
*/
|
|
55
102
|
const motionResolutionSchema = z.literal("720p").default("720p").optional().describe("The resolution to use for the generation");
|
|
56
103
|
/**
|
|
57
|
-
* Resolution schema for
|
|
104
|
+
* Resolution schema for video-to-video models (supports 720p).
|
|
58
105
|
*/
|
|
59
|
-
const
|
|
106
|
+
const v2vResolutionSchema = z.literal("720p").optional().describe("The resolution to use for the generation").default("720p");
|
|
107
|
+
const videoEditSchema = z.object({
|
|
108
|
+
prompt: z.string().min(1).max(1e3).describe("The prompt to use for the generation"),
|
|
109
|
+
data: fileInputSchema.describe("The video data to use for generation (File, Blob, ReadableStream, URL, or string URL). Output video is limited to 5 seconds."),
|
|
110
|
+
reference_image: fileInputSchema.optional().describe("Optional reference image to guide what to add to the video (File, Blob, ReadableStream, URL, or string URL)"),
|
|
111
|
+
seed: z.number().optional().describe("The seed to use for the generation"),
|
|
112
|
+
resolution: v2vResolutionSchema,
|
|
113
|
+
enhance_prompt: z.boolean().optional().describe("Whether to enhance the prompt")
|
|
114
|
+
});
|
|
115
|
+
const imageEditSchema = z.object({
|
|
116
|
+
prompt: z.string().min(1).max(1e3).describe("The prompt to use for the generation"),
|
|
117
|
+
data: fileInputSchema.describe("The image data to use for generation (File, Blob, ReadableStream, URL, or string URL)"),
|
|
118
|
+
reference_image: fileInputSchema.optional().describe("Optional reference image to guide the edit (File, Blob, ReadableStream, URL, or string URL)"),
|
|
119
|
+
seed: z.number().optional().describe("The seed to use for the generation"),
|
|
120
|
+
resolution: proResolutionSchema(),
|
|
121
|
+
enhance_prompt: z.boolean().optional().describe("Whether to enhance the prompt")
|
|
122
|
+
});
|
|
123
|
+
const restyleSchema = z.object({
|
|
124
|
+
prompt: z.string().min(1).max(1e3).optional().describe("Text prompt for the video editing"),
|
|
125
|
+
reference_image: fileInputSchema.optional().describe("Reference image to transform into a prompt (File, Blob, ReadableStream, URL, or string URL)"),
|
|
126
|
+
data: fileInputSchema.describe("Video file to process (File, Blob, ReadableStream, URL, or string URL)"),
|
|
127
|
+
seed: z.number().optional().describe("Seed for the video generation"),
|
|
128
|
+
resolution: v2vResolutionSchema,
|
|
129
|
+
enhance_prompt: z.boolean().optional().describe("Whether to enhance the prompt (only valid with text prompt, defaults to true on backend)")
|
|
130
|
+
}).refine((data) => data.prompt !== void 0 !== (data.reference_image !== void 0), { message: "Must provide either 'prompt' or 'reference_image', but not both" }).refine((data) => !(data.reference_image !== void 0 && data.enhance_prompt !== void 0), { message: "'enhance_prompt' is only valid when using 'prompt', not 'reference_image'" });
|
|
131
|
+
const videoEdit2Schema = z.object({
|
|
132
|
+
prompt: z.string().max(1e3).describe("Text prompt for the video editing. Send an empty string if you want no text prompt."),
|
|
133
|
+
reference_image: fileInputSchema.optional().describe("Optional reference image to guide the edit (File, Blob, ReadableStream, URL, or string URL)"),
|
|
134
|
+
data: fileInputSchema.describe("Video file to process (File, Blob, ReadableStream, URL, or string URL)"),
|
|
135
|
+
seed: z.number().optional().describe("The seed to use for the generation"),
|
|
136
|
+
resolution: v2vResolutionSchema,
|
|
137
|
+
enhance_prompt: z.boolean().optional().describe("Whether to enhance the prompt")
|
|
138
|
+
});
|
|
60
139
|
const modelInputSchemas = {
|
|
61
|
-
"lucy-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
enhance_prompt: z.boolean().optional().describe("Whether to enhance the prompt")
|
|
68
|
-
}),
|
|
69
|
-
"lucy-pro-i2i": z.object({
|
|
70
|
-
prompt: z.string().min(1).max(1e3).describe("The prompt to use for the generation"),
|
|
71
|
-
data: fileInputSchema.describe("The image data to use for generation (File, Blob, ReadableStream, URL, or string URL)"),
|
|
72
|
-
reference_image: fileInputSchema.optional().describe("Optional reference image to guide the edit (File, Blob, ReadableStream, URL, or string URL)"),
|
|
73
|
-
seed: z.number().optional().describe("The seed to use for the generation"),
|
|
74
|
-
resolution: proResolutionSchema(),
|
|
75
|
-
enhance_prompt: z.boolean().optional().describe("Whether to enhance the prompt")
|
|
76
|
-
}),
|
|
140
|
+
"lucy-clip": videoEditSchema,
|
|
141
|
+
"lucy-image-2": imageEditSchema,
|
|
142
|
+
"lucy-restyle-2": restyleSchema,
|
|
143
|
+
"lucy-2": videoEdit2Schema,
|
|
144
|
+
"lucy-2.1": videoEdit2Schema,
|
|
145
|
+
"lucy-2.1-vton": videoEdit2Schema,
|
|
77
146
|
"lucy-motion": z.object({
|
|
78
147
|
data: fileInputSchema.describe("The image data to use for generation (File, Blob, ReadableStream, URL, or string URL). Output video is limited to 5 seconds."),
|
|
79
148
|
trajectory: z.array(z.object({
|
|
@@ -84,22 +153,25 @@ const modelInputSchemas = {
|
|
|
84
153
|
seed: z.number().optional().describe("The seed to use for the generation"),
|
|
85
154
|
resolution: motionResolutionSchema
|
|
86
155
|
}),
|
|
87
|
-
"lucy-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
data: fileInputSchema.describe("Video file to process (File, Blob, ReadableStream, URL, or string URL)"),
|
|
156
|
+
"lucy-latest": videoEdit2Schema,
|
|
157
|
+
"lucy-vton-latest": videoEdit2Schema,
|
|
158
|
+
"lucy-restyle-latest": restyleSchema,
|
|
159
|
+
"lucy-clip-latest": videoEditSchema,
|
|
160
|
+
"lucy-motion-latest": z.object({
|
|
161
|
+
data: fileInputSchema.describe("The image data to use for generation (File, Blob, ReadableStream, URL, or string URL). Output video is limited to 5 seconds."),
|
|
162
|
+
trajectory: z.array(z.object({
|
|
163
|
+
frame: z.number().min(0),
|
|
164
|
+
x: z.number().min(0),
|
|
165
|
+
y: z.number().min(0)
|
|
166
|
+
})).min(2).max(1e3).describe("The trajectory of the desired movement of the object in the image"),
|
|
99
167
|
seed: z.number().optional().describe("The seed to use for the generation"),
|
|
100
|
-
resolution:
|
|
101
|
-
|
|
102
|
-
|
|
168
|
+
resolution: motionResolutionSchema
|
|
169
|
+
}),
|
|
170
|
+
"lucy-image-latest": imageEditSchema,
|
|
171
|
+
"lucy-pro-v2v": videoEditSchema,
|
|
172
|
+
"lucy-pro-i2i": imageEditSchema,
|
|
173
|
+
"lucy-restyle-v2v": restyleSchema,
|
|
174
|
+
"lucy-2-v2v": videoEdit2Schema
|
|
103
175
|
};
|
|
104
176
|
const modelDefinitionSchema = z.object({
|
|
105
177
|
name: z.string(),
|
|
@@ -112,6 +184,86 @@ const modelDefinitionSchema = z.object({
|
|
|
112
184
|
});
|
|
113
185
|
const _models = {
|
|
114
186
|
realtime: {
|
|
187
|
+
lucy: {
|
|
188
|
+
urlPath: "/v1/stream",
|
|
189
|
+
name: "lucy",
|
|
190
|
+
fps: 25,
|
|
191
|
+
width: 1280,
|
|
192
|
+
height: 704,
|
|
193
|
+
inputSchema: z.object({})
|
|
194
|
+
},
|
|
195
|
+
"lucy-2": {
|
|
196
|
+
urlPath: "/v1/stream",
|
|
197
|
+
name: "lucy-2",
|
|
198
|
+
fps: 20,
|
|
199
|
+
width: 1280,
|
|
200
|
+
height: 720,
|
|
201
|
+
inputSchema: z.object({})
|
|
202
|
+
},
|
|
203
|
+
"lucy-2.1": {
|
|
204
|
+
urlPath: "/v1/stream",
|
|
205
|
+
name: "lucy-2.1",
|
|
206
|
+
fps: 20,
|
|
207
|
+
width: 1088,
|
|
208
|
+
height: 624,
|
|
209
|
+
inputSchema: z.object({})
|
|
210
|
+
},
|
|
211
|
+
"lucy-2.1-vton": {
|
|
212
|
+
urlPath: "/v1/stream",
|
|
213
|
+
name: "lucy-2.1-vton",
|
|
214
|
+
fps: 20,
|
|
215
|
+
width: 1088,
|
|
216
|
+
height: 624,
|
|
217
|
+
inputSchema: z.object({})
|
|
218
|
+
},
|
|
219
|
+
"lucy-restyle": {
|
|
220
|
+
urlPath: "/v1/stream",
|
|
221
|
+
name: "lucy-restyle",
|
|
222
|
+
fps: 25,
|
|
223
|
+
width: 1280,
|
|
224
|
+
height: 704,
|
|
225
|
+
inputSchema: z.object({})
|
|
226
|
+
},
|
|
227
|
+
"lucy-restyle-2": {
|
|
228
|
+
urlPath: "/v1/stream",
|
|
229
|
+
name: "lucy-restyle-2",
|
|
230
|
+
fps: 22,
|
|
231
|
+
width: 1280,
|
|
232
|
+
height: 704,
|
|
233
|
+
inputSchema: z.object({})
|
|
234
|
+
},
|
|
235
|
+
"live-avatar": {
|
|
236
|
+
urlPath: "/v1/stream",
|
|
237
|
+
name: "live-avatar",
|
|
238
|
+
fps: 25,
|
|
239
|
+
width: 1280,
|
|
240
|
+
height: 720,
|
|
241
|
+
inputSchema: z.object({})
|
|
242
|
+
},
|
|
243
|
+
"lucy-latest": {
|
|
244
|
+
urlPath: "/v1/stream",
|
|
245
|
+
name: "lucy-latest",
|
|
246
|
+
fps: 20,
|
|
247
|
+
width: 1088,
|
|
248
|
+
height: 624,
|
|
249
|
+
inputSchema: z.object({})
|
|
250
|
+
},
|
|
251
|
+
"lucy-vton-latest": {
|
|
252
|
+
urlPath: "/v1/stream",
|
|
253
|
+
name: "lucy-vton-latest",
|
|
254
|
+
fps: 20,
|
|
255
|
+
width: 1088,
|
|
256
|
+
height: 624,
|
|
257
|
+
inputSchema: z.object({})
|
|
258
|
+
},
|
|
259
|
+
"lucy-restyle-latest": {
|
|
260
|
+
urlPath: "/v1/stream",
|
|
261
|
+
name: "lucy-restyle-latest",
|
|
262
|
+
fps: 22,
|
|
263
|
+
width: 1280,
|
|
264
|
+
height: 704,
|
|
265
|
+
inputSchema: z.object({})
|
|
266
|
+
},
|
|
115
267
|
mirage: {
|
|
116
268
|
urlPath: "/v1/stream",
|
|
117
269
|
name: "mirage",
|
|
@@ -153,24 +305,80 @@ const _models = {
|
|
|
153
305
|
inputSchema: z.object({})
|
|
154
306
|
}
|
|
155
307
|
},
|
|
156
|
-
image: {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
308
|
+
image: {
|
|
309
|
+
"lucy-image-2": {
|
|
310
|
+
urlPath: "/v1/generate/lucy-image-2",
|
|
311
|
+
queueUrlPath: "/v1/jobs/lucy-image-2",
|
|
312
|
+
name: "lucy-image-2",
|
|
313
|
+
fps: 25,
|
|
314
|
+
width: 1280,
|
|
315
|
+
height: 704,
|
|
316
|
+
inputSchema: modelInputSchemas["lucy-image-2"]
|
|
317
|
+
},
|
|
318
|
+
"lucy-image-latest": {
|
|
319
|
+
urlPath: "/v1/generate/lucy-image-latest",
|
|
320
|
+
queueUrlPath: "/v1/jobs/lucy-image-latest",
|
|
321
|
+
name: "lucy-image-latest",
|
|
322
|
+
fps: 25,
|
|
323
|
+
width: 1280,
|
|
324
|
+
height: 704,
|
|
325
|
+
inputSchema: modelInputSchemas["lucy-image-latest"]
|
|
326
|
+
},
|
|
327
|
+
"lucy-pro-i2i": {
|
|
328
|
+
urlPath: "/v1/generate/lucy-pro-i2i",
|
|
329
|
+
queueUrlPath: "/v1/jobs/lucy-pro-i2i",
|
|
330
|
+
name: "lucy-pro-i2i",
|
|
331
|
+
fps: 25,
|
|
332
|
+
width: 1280,
|
|
333
|
+
height: 704,
|
|
334
|
+
inputSchema: modelInputSchemas["lucy-pro-i2i"]
|
|
335
|
+
}
|
|
336
|
+
},
|
|
165
337
|
video: {
|
|
166
|
-
"lucy-
|
|
167
|
-
urlPath: "/v1/generate/lucy-
|
|
168
|
-
queueUrlPath: "/v1/jobs/lucy-
|
|
169
|
-
name: "lucy-
|
|
338
|
+
"lucy-clip": {
|
|
339
|
+
urlPath: "/v1/generate/lucy-clip",
|
|
340
|
+
queueUrlPath: "/v1/jobs/lucy-clip",
|
|
341
|
+
name: "lucy-clip",
|
|
170
342
|
fps: 25,
|
|
171
343
|
width: 1280,
|
|
172
344
|
height: 704,
|
|
173
|
-
inputSchema: modelInputSchemas["lucy-
|
|
345
|
+
inputSchema: modelInputSchemas["lucy-clip"]
|
|
346
|
+
},
|
|
347
|
+
"lucy-2": {
|
|
348
|
+
urlPath: "/v1/generate/lucy-2",
|
|
349
|
+
queueUrlPath: "/v1/jobs/lucy-2",
|
|
350
|
+
name: "lucy-2",
|
|
351
|
+
fps: 20,
|
|
352
|
+
width: 1280,
|
|
353
|
+
height: 720,
|
|
354
|
+
inputSchema: modelInputSchemas["lucy-2"]
|
|
355
|
+
},
|
|
356
|
+
"lucy-2.1": {
|
|
357
|
+
urlPath: "/v1/generate/lucy-2.1",
|
|
358
|
+
queueUrlPath: "/v1/jobs/lucy-2.1",
|
|
359
|
+
name: "lucy-2.1",
|
|
360
|
+
fps: 20,
|
|
361
|
+
width: 1088,
|
|
362
|
+
height: 624,
|
|
363
|
+
inputSchema: modelInputSchemas["lucy-2.1"]
|
|
364
|
+
},
|
|
365
|
+
"lucy-2.1-vton": {
|
|
366
|
+
urlPath: "/v1/generate/lucy-2.1-vton",
|
|
367
|
+
queueUrlPath: "/v1/jobs/lucy-2.1-vton",
|
|
368
|
+
name: "lucy-2.1-vton",
|
|
369
|
+
fps: 20,
|
|
370
|
+
width: 1088,
|
|
371
|
+
height: 624,
|
|
372
|
+
inputSchema: modelInputSchemas["lucy-2.1-vton"]
|
|
373
|
+
},
|
|
374
|
+
"lucy-restyle-2": {
|
|
375
|
+
urlPath: "/v1/generate/lucy-restyle-2",
|
|
376
|
+
queueUrlPath: "/v1/jobs/lucy-restyle-2",
|
|
377
|
+
name: "lucy-restyle-2",
|
|
378
|
+
fps: 22,
|
|
379
|
+
width: 1280,
|
|
380
|
+
height: 704,
|
|
381
|
+
inputSchema: modelInputSchemas["lucy-restyle-2"]
|
|
174
382
|
},
|
|
175
383
|
"lucy-motion": {
|
|
176
384
|
urlPath: "/v1/generate/lucy-motion",
|
|
@@ -181,6 +389,60 @@ const _models = {
|
|
|
181
389
|
height: 704,
|
|
182
390
|
inputSchema: modelInputSchemas["lucy-motion"]
|
|
183
391
|
},
|
|
392
|
+
"lucy-latest": {
|
|
393
|
+
urlPath: "/v1/generate/lucy-latest",
|
|
394
|
+
queueUrlPath: "/v1/jobs/lucy-latest",
|
|
395
|
+
name: "lucy-latest",
|
|
396
|
+
fps: 20,
|
|
397
|
+
width: 1088,
|
|
398
|
+
height: 624,
|
|
399
|
+
inputSchema: modelInputSchemas["lucy-latest"]
|
|
400
|
+
},
|
|
401
|
+
"lucy-vton-latest": {
|
|
402
|
+
urlPath: "/v1/generate/lucy-vton-latest",
|
|
403
|
+
queueUrlPath: "/v1/jobs/lucy-vton-latest",
|
|
404
|
+
name: "lucy-vton-latest",
|
|
405
|
+
fps: 20,
|
|
406
|
+
width: 1088,
|
|
407
|
+
height: 624,
|
|
408
|
+
inputSchema: modelInputSchemas["lucy-vton-latest"]
|
|
409
|
+
},
|
|
410
|
+
"lucy-restyle-latest": {
|
|
411
|
+
urlPath: "/v1/generate/lucy-restyle-latest",
|
|
412
|
+
queueUrlPath: "/v1/jobs/lucy-restyle-latest",
|
|
413
|
+
name: "lucy-restyle-latest",
|
|
414
|
+
fps: 22,
|
|
415
|
+
width: 1280,
|
|
416
|
+
height: 704,
|
|
417
|
+
inputSchema: modelInputSchemas["lucy-restyle-latest"]
|
|
418
|
+
},
|
|
419
|
+
"lucy-clip-latest": {
|
|
420
|
+
urlPath: "/v1/generate/lucy-clip-latest",
|
|
421
|
+
queueUrlPath: "/v1/jobs/lucy-clip-latest",
|
|
422
|
+
name: "lucy-clip-latest",
|
|
423
|
+
fps: 25,
|
|
424
|
+
width: 1280,
|
|
425
|
+
height: 704,
|
|
426
|
+
inputSchema: modelInputSchemas["lucy-clip-latest"]
|
|
427
|
+
},
|
|
428
|
+
"lucy-motion-latest": {
|
|
429
|
+
urlPath: "/v1/generate/lucy-motion-latest",
|
|
430
|
+
queueUrlPath: "/v1/jobs/lucy-motion-latest",
|
|
431
|
+
name: "lucy-motion-latest",
|
|
432
|
+
fps: 25,
|
|
433
|
+
width: 1280,
|
|
434
|
+
height: 704,
|
|
435
|
+
inputSchema: modelInputSchemas["lucy-motion-latest"]
|
|
436
|
+
},
|
|
437
|
+
"lucy-pro-v2v": {
|
|
438
|
+
urlPath: "/v1/generate/lucy-pro-v2v",
|
|
439
|
+
queueUrlPath: "/v1/jobs/lucy-pro-v2v",
|
|
440
|
+
name: "lucy-pro-v2v",
|
|
441
|
+
fps: 25,
|
|
442
|
+
width: 1280,
|
|
443
|
+
height: 704,
|
|
444
|
+
inputSchema: modelInputSchemas["lucy-pro-v2v"]
|
|
445
|
+
},
|
|
184
446
|
"lucy-restyle-v2v": {
|
|
185
447
|
urlPath: "/v1/generate/lucy-restyle-v2v",
|
|
186
448
|
queueUrlPath: "/v1/jobs/lucy-restyle-v2v",
|
|
@@ -203,16 +465,19 @@ const _models = {
|
|
|
203
465
|
};
|
|
204
466
|
const models = {
|
|
205
467
|
realtime: (model) => {
|
|
468
|
+
warnDeprecated(model);
|
|
206
469
|
const modelDefinition = _models.realtime[model];
|
|
207
470
|
if (!modelDefinition) throw createModelNotFoundError(model);
|
|
208
471
|
return modelDefinition;
|
|
209
472
|
},
|
|
210
473
|
video: (model) => {
|
|
474
|
+
warnDeprecated(model);
|
|
211
475
|
const modelDefinition = _models.video[model];
|
|
212
476
|
if (!modelDefinition) throw createModelNotFoundError(model);
|
|
213
477
|
return modelDefinition;
|
|
214
478
|
},
|
|
215
479
|
image: (model) => {
|
|
480
|
+
warnDeprecated(model);
|
|
216
481
|
const modelDefinition = _models.image[model];
|
|
217
482
|
if (!modelDefinition) throw createModelNotFoundError(model);
|
|
218
483
|
return modelDefinition;
|