@genfeedai/types 0.2.1 → 0.3.0
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/README.md +11 -27
- package/dist/{chunk-KXAKQO3U.js → chunk-74STGUJY.js} +2 -0
- package/dist/chunk-74STGUJY.js.map +1 -0
- package/dist/{chunk-WT2F5CAF.mjs → chunk-CVFAILC4.mjs} +2 -0
- package/dist/chunk-CVFAILC4.mjs.map +1 -0
- package/dist/chunk-DVR3GE4F.js +4 -0
- package/dist/chunk-DVR3GE4F.js.map +1 -0
- package/dist/chunk-G2BD5ZTF.mjs +3 -0
- package/dist/chunk-G2BD5ZTF.mjs.map +1 -0
- package/dist/{chunk-P4XY3T5T.js → chunk-MRTGK3CK.js} +601 -578
- package/dist/chunk-MRTGK3CK.js.map +1 -0
- package/dist/{chunk-QNWQE2LJ.mjs → chunk-ZMENGANG.mjs} +601 -578
- package/dist/chunk-ZMENGANG.mjs.map +1 -0
- package/dist/comfyui.d.mts +44 -44
- package/dist/comfyui.d.ts +44 -44
- package/dist/comfyui.js +3 -1
- package/dist/comfyui.js.map +1 -0
- package/dist/comfyui.mjs +3 -1
- package/dist/comfyui.mjs.map +1 -0
- package/dist/index.d.mts +341 -3
- package/dist/index.d.ts +341 -3
- package/dist/index.js +28 -26
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +11 -9
- package/dist/index.mjs.map +1 -0
- package/dist/nodes.d.mts +2 -2
- package/dist/nodes.d.ts +2 -2
- package/dist/nodes.js +15 -13
- package/dist/nodes.js.map +1 -0
- package/dist/nodes.mjs +3 -1
- package/dist/nodes.mjs.map +1 -0
- package/dist/replicate.d.mts +3 -3
- package/dist/replicate.d.ts +3 -3
- package/dist/replicate.js +2 -0
- package/dist/replicate.js.map +1 -0
- package/dist/replicate.mjs +2 -0
- package/dist/replicate.mjs.map +1 -0
- package/dist/{union-BVaWc1Cx.d.mts → union-D5EesBEB.d.mts} +142 -142
- package/dist/{union-BVaWc1Cx.d.ts → union-D5EesBEB.d.ts} +142 -142
- package/dist/{workflow-B_Q38s-U.d.ts → workflow-Cd_F9hZk.d.ts} +1 -1
- package/dist/{workflow-BbAp7VSK.d.mts → workflow-D9M1Yoiy.d.mts} +1 -1
- package/dist/workflow.d.mts +2 -2
- package/dist/workflow.d.ts +2 -2
- package/dist/workflow.js +4 -2
- package/dist/workflow.js.map +1 -0
- package/dist/workflow.mjs +3 -1
- package/dist/workflow.mjs.map +1 -0
- package/package.json +37 -37
- package/src/replicate/schemas.json +3624 -4185
- package/dist/chunk-7NJUD2WZ.mjs +0 -1
- package/dist/chunk-RNGYPX4W.js +0 -2
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
// src/
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return
|
|
25
|
-
})(
|
|
26
|
-
var
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return
|
|
42
|
-
})(
|
|
1
|
+
// src/enums.ts
|
|
2
|
+
var WorkflowTemplateCategory = /* @__PURE__ */ ((WorkflowTemplateCategory2) => {
|
|
3
|
+
WorkflowTemplateCategory2["IMAGE"] = "image";
|
|
4
|
+
WorkflowTemplateCategory2["VIDEO"] = "video";
|
|
5
|
+
WorkflowTemplateCategory2["AUDIO"] = "audio";
|
|
6
|
+
WorkflowTemplateCategory2["FULL_PIPELINE"] = "full-pipeline";
|
|
7
|
+
return WorkflowTemplateCategory2;
|
|
8
|
+
})(WorkflowTemplateCategory || {});
|
|
9
|
+
var ReframeNodeType = /* @__PURE__ */ ((ReframeNodeType2) => {
|
|
10
|
+
ReframeNodeType2["REFRAME"] = "reframe";
|
|
11
|
+
ReframeNodeType2["LUMA_REFRAME_IMAGE"] = "lumaReframeImage";
|
|
12
|
+
ReframeNodeType2["LUMA_REFRAME_VIDEO"] = "lumaReframeVideo";
|
|
13
|
+
return ReframeNodeType2;
|
|
14
|
+
})(ReframeNodeType || {});
|
|
15
|
+
var UpscaleNodeType = /* @__PURE__ */ ((UpscaleNodeType2) => {
|
|
16
|
+
UpscaleNodeType2["UPSCALE"] = "upscale";
|
|
17
|
+
UpscaleNodeType2["TOPAZ_IMAGE_UPSCALE"] = "topazImageUpscale";
|
|
18
|
+
UpscaleNodeType2["TOPAZ_VIDEO_UPSCALE"] = "topazVideoUpscale";
|
|
19
|
+
return UpscaleNodeType2;
|
|
20
|
+
})(UpscaleNodeType || {});
|
|
21
|
+
var KlingQuality = /* @__PURE__ */ ((KlingQuality2) => {
|
|
22
|
+
KlingQuality2["STANDARD"] = "std";
|
|
23
|
+
KlingQuality2["PRO"] = "pro";
|
|
24
|
+
return KlingQuality2;
|
|
25
|
+
})(KlingQuality || {});
|
|
26
|
+
var ProcessingNodeType = /* @__PURE__ */ ((ProcessingNodeType2) => {
|
|
27
|
+
ProcessingNodeType2["REFRAME"] = "reframe";
|
|
28
|
+
ProcessingNodeType2["LUMA_REFRAME_IMAGE"] = "lumaReframeImage";
|
|
29
|
+
ProcessingNodeType2["LUMA_REFRAME_VIDEO"] = "lumaReframeVideo";
|
|
30
|
+
ProcessingNodeType2["UPSCALE"] = "upscale";
|
|
31
|
+
ProcessingNodeType2["TOPAZ_IMAGE_UPSCALE"] = "topazImageUpscale";
|
|
32
|
+
ProcessingNodeType2["TOPAZ_VIDEO_UPSCALE"] = "topazVideoUpscale";
|
|
33
|
+
ProcessingNodeType2["VIDEO_FRAME_EXTRACT"] = "videoFrameExtract";
|
|
34
|
+
ProcessingNodeType2["LIP_SYNC"] = "lipSync";
|
|
35
|
+
ProcessingNodeType2["TEXT_TO_SPEECH"] = "textToSpeech";
|
|
36
|
+
ProcessingNodeType2["VOICE_CHANGE"] = "voiceChange";
|
|
37
|
+
ProcessingNodeType2["TRANSCRIBE"] = "transcribe";
|
|
38
|
+
ProcessingNodeType2["SUBTITLE"] = "subtitle";
|
|
39
|
+
ProcessingNodeType2["VIDEO_STITCH"] = "videoStitch";
|
|
40
|
+
ProcessingNodeType2["WORKFLOW_REF"] = "workflowRef";
|
|
41
|
+
return ProcessingNodeType2;
|
|
42
|
+
})(ProcessingNodeType || {});
|
|
43
43
|
|
|
44
44
|
// src/nodes/base.ts
|
|
45
45
|
var NodeTypeEnum = /* @__PURE__ */ ((NodeTypeEnum2) => {
|
|
@@ -91,677 +91,691 @@ var NodeStatusEnum = /* @__PURE__ */ ((NodeStatusEnum2) => {
|
|
|
91
91
|
return NodeStatusEnum2;
|
|
92
92
|
})(NodeStatusEnum || {});
|
|
93
93
|
|
|
94
|
-
// src/
|
|
95
|
-
var
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
return
|
|
118
|
-
})(
|
|
119
|
-
var
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
return
|
|
135
|
-
})(
|
|
94
|
+
// src/nodes/handles.ts
|
|
95
|
+
var HandleTypeEnum = /* @__PURE__ */ ((HandleTypeEnum2) => {
|
|
96
|
+
HandleTypeEnum2["IMAGE"] = "image";
|
|
97
|
+
HandleTypeEnum2["TEXT"] = "text";
|
|
98
|
+
HandleTypeEnum2["VIDEO"] = "video";
|
|
99
|
+
HandleTypeEnum2["NUMBER"] = "number";
|
|
100
|
+
HandleTypeEnum2["AUDIO"] = "audio";
|
|
101
|
+
return HandleTypeEnum2;
|
|
102
|
+
})(HandleTypeEnum || {});
|
|
103
|
+
var CONNECTION_RULES = {
|
|
104
|
+
audio: ["audio"],
|
|
105
|
+
image: ["image"],
|
|
106
|
+
number: ["number"],
|
|
107
|
+
text: ["text"],
|
|
108
|
+
video: ["video"]
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// src/nodes/providers.ts
|
|
112
|
+
var ProviderTypeEnum = /* @__PURE__ */ ((ProviderTypeEnum2) => {
|
|
113
|
+
ProviderTypeEnum2["REPLICATE"] = "replicate";
|
|
114
|
+
ProviderTypeEnum2["FAL"] = "fal";
|
|
115
|
+
ProviderTypeEnum2["HUGGINGFACE"] = "huggingface";
|
|
116
|
+
ProviderTypeEnum2["GENFEED_AI"] = "genfeed-ai";
|
|
117
|
+
return ProviderTypeEnum2;
|
|
118
|
+
})(ProviderTypeEnum || {});
|
|
119
|
+
var ModelCapabilityEnum = /* @__PURE__ */ ((ModelCapabilityEnum2) => {
|
|
120
|
+
ModelCapabilityEnum2["TEXT_TO_IMAGE"] = "text-to-image";
|
|
121
|
+
ModelCapabilityEnum2["IMAGE_TO_IMAGE"] = "image-to-image";
|
|
122
|
+
ModelCapabilityEnum2["TEXT_TO_VIDEO"] = "text-to-video";
|
|
123
|
+
ModelCapabilityEnum2["IMAGE_TO_VIDEO"] = "image-to-video";
|
|
124
|
+
ModelCapabilityEnum2["TEXT_GENERATION"] = "text-generation";
|
|
125
|
+
return ModelCapabilityEnum2;
|
|
126
|
+
})(ModelCapabilityEnum || {});
|
|
127
|
+
var ModelUseCaseEnum = /* @__PURE__ */ ((ModelUseCaseEnum2) => {
|
|
128
|
+
ModelUseCaseEnum2["STYLE_TRANSFER"] = "style-transfer";
|
|
129
|
+
ModelUseCaseEnum2["CHARACTER_CONSISTENT"] = "character-consistent";
|
|
130
|
+
ModelUseCaseEnum2["IMAGE_VARIATION"] = "image-variation";
|
|
131
|
+
ModelUseCaseEnum2["INPAINTING"] = "inpainting";
|
|
132
|
+
ModelUseCaseEnum2["UPSCALE"] = "upscale";
|
|
133
|
+
ModelUseCaseEnum2["GENERAL"] = "general";
|
|
134
|
+
return ModelUseCaseEnum2;
|
|
135
|
+
})(ModelUseCaseEnum || {});
|
|
136
136
|
|
|
137
137
|
// src/nodes/registry.ts
|
|
138
138
|
var NODE_DEFINITIONS = {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
type: "imageInput",
|
|
142
|
-
label: "Image",
|
|
143
|
-
description: "Upload or reference an image",
|
|
144
|
-
category: "input",
|
|
145
|
-
icon: "Image",
|
|
146
|
-
inputs: [],
|
|
147
|
-
outputs: [{ id: "image", type: "image", label: "Image" }],
|
|
139
|
+
animation: {
|
|
140
|
+
category: "processing",
|
|
148
141
|
defaultData: {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
142
|
+
curveType: "preset",
|
|
143
|
+
customCurve: [0.645, 0.045, 0.355, 1],
|
|
144
|
+
inputVideo: null,
|
|
145
|
+
label: "Animation",
|
|
146
|
+
outputVideo: null,
|
|
147
|
+
preset: "easeInOutCubic",
|
|
148
|
+
speedMultiplier: 1,
|
|
149
|
+
status: "idle"
|
|
150
|
+
},
|
|
151
|
+
description: "Apply easing curve to video",
|
|
152
|
+
icon: "Wand2",
|
|
153
|
+
inputs: [{ id: "video", label: "Video", required: true, type: "video" }],
|
|
154
|
+
label: "Animation",
|
|
155
|
+
outputs: [{ id: "video", label: "Animated Video", type: "video" }],
|
|
156
|
+
type: "animation"
|
|
156
157
|
},
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
label: "Prompt",
|
|
160
|
-
description: "Text prompt for AI generation",
|
|
161
|
-
category: "input",
|
|
162
|
-
icon: "MessageSquare",
|
|
163
|
-
inputs: [],
|
|
164
|
-
outputs: [{ id: "text", type: "text", label: "Prompt" }],
|
|
158
|
+
annotation: {
|
|
159
|
+
category: "processing",
|
|
165
160
|
defaultData: {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
161
|
+
annotations: [],
|
|
162
|
+
hasAnnotations: false,
|
|
163
|
+
inputImage: null,
|
|
164
|
+
label: "Annotation",
|
|
165
|
+
outputImage: null,
|
|
166
|
+
status: "idle"
|
|
167
|
+
},
|
|
168
|
+
description: "Add shapes, arrows, and text to images",
|
|
169
|
+
icon: "Pencil",
|
|
170
|
+
inputs: [{ id: "image", label: "Image", required: true, type: "image" }],
|
|
171
|
+
label: "Annotation",
|
|
172
|
+
outputs: [{ id: "image", label: "Annotated Image", type: "image" }],
|
|
173
|
+
type: "annotation"
|
|
171
174
|
},
|
|
172
175
|
audioInput: {
|
|
173
|
-
type: "audioInput",
|
|
174
|
-
label: "Audio",
|
|
175
|
-
description: "Upload an audio file (MP3, WAV)",
|
|
176
176
|
category: "input",
|
|
177
|
-
icon: "Volume2",
|
|
178
|
-
inputs: [],
|
|
179
|
-
outputs: [{ id: "audio", type: "audio", label: "Audio" }],
|
|
180
177
|
defaultData: {
|
|
181
|
-
label: "Audio",
|
|
182
|
-
status: "idle",
|
|
183
178
|
audio: null,
|
|
184
|
-
filename: null,
|
|
185
179
|
duration: null,
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
category: "input",
|
|
194
|
-
icon: "FileVideo",
|
|
180
|
+
filename: null,
|
|
181
|
+
label: "Audio",
|
|
182
|
+
source: "upload",
|
|
183
|
+
status: "idle"
|
|
184
|
+
},
|
|
185
|
+
description: "Upload an audio file (MP3, WAV)",
|
|
186
|
+
icon: "Volume2",
|
|
195
187
|
inputs: [],
|
|
196
|
-
|
|
188
|
+
label: "Audio",
|
|
189
|
+
outputs: [{ id: "audio", label: "Audio", type: "audio" }],
|
|
190
|
+
type: "audioInput"
|
|
191
|
+
},
|
|
192
|
+
// Output nodes
|
|
193
|
+
download: {
|
|
194
|
+
category: "output",
|
|
197
195
|
defaultData: {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
196
|
+
inputImage: null,
|
|
197
|
+
inputType: null,
|
|
198
|
+
inputVideo: null,
|
|
199
|
+
label: "Download",
|
|
200
|
+
outputName: "output",
|
|
201
|
+
status: "idle"
|
|
202
|
+
},
|
|
203
|
+
description: "Download workflow output with custom filename",
|
|
204
|
+
icon: "Download",
|
|
205
|
+
inputs: [
|
|
206
|
+
{ id: "image", label: "Image", type: "image" },
|
|
207
|
+
{ id: "video", label: "Video", type: "video" }
|
|
208
|
+
],
|
|
209
|
+
label: "Download",
|
|
210
|
+
outputs: [],
|
|
211
|
+
type: "download"
|
|
206
212
|
},
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
label: "Prompt Constructor",
|
|
210
|
-
description: "Template-based prompt with @variable interpolation from connected Prompt nodes",
|
|
211
|
-
category: "input",
|
|
212
|
-
icon: "Puzzle",
|
|
213
|
-
inputs: [{ id: "text", type: "text", label: "Variables", multiple: true }],
|
|
214
|
-
outputs: [{ id: "text", type: "text", label: "Prompt" }],
|
|
213
|
+
imageCompare: {
|
|
214
|
+
category: "output",
|
|
215
215
|
defaultData: {
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
216
|
+
imageA: null,
|
|
217
|
+
imageB: null,
|
|
218
|
+
label: "Image Compare",
|
|
219
|
+
status: "idle"
|
|
220
|
+
},
|
|
221
|
+
description: "Side-by-side A/B comparison with draggable slider",
|
|
222
|
+
icon: "Columns2",
|
|
223
|
+
inputs: [
|
|
224
|
+
{ id: "image", label: "Image A", type: "image" },
|
|
225
|
+
{ id: "image-1", label: "Image B", type: "image" }
|
|
226
|
+
],
|
|
227
|
+
label: "Image Compare",
|
|
228
|
+
outputs: [],
|
|
229
|
+
type: "imageCompare"
|
|
222
230
|
},
|
|
223
231
|
// AI nodes
|
|
224
232
|
imageGen: {
|
|
225
|
-
type: "imageGen",
|
|
226
|
-
label: "Image Generator",
|
|
227
|
-
description: "Generate images with nano-banana models",
|
|
228
233
|
category: "ai",
|
|
229
|
-
icon: "Sparkles",
|
|
230
|
-
inputs: [
|
|
231
|
-
{ id: "prompt", type: "text", label: "Prompt", required: true },
|
|
232
|
-
{ id: "images", type: "image", label: "Reference Images", multiple: true }
|
|
233
|
-
],
|
|
234
|
-
outputs: [{ id: "image", type: "image", label: "Generated Image" }],
|
|
235
234
|
defaultData: {
|
|
236
|
-
|
|
237
|
-
status: "idle",
|
|
235
|
+
aspectRatio: "1:1",
|
|
238
236
|
inputImages: [],
|
|
239
237
|
inputPrompt: null,
|
|
238
|
+
jobId: null,
|
|
239
|
+
label: "Image Generator",
|
|
240
|
+
model: "nano-banana-pro",
|
|
241
|
+
outputFormat: "jpg",
|
|
240
242
|
outputImage: null,
|
|
241
243
|
outputImages: [],
|
|
242
|
-
model: "nano-banana-pro",
|
|
243
|
-
aspectRatio: "1:1",
|
|
244
244
|
resolution: "2K",
|
|
245
|
+
status: "idle"
|
|
246
|
+
},
|
|
247
|
+
description: "Generate images with nano-banana models",
|
|
248
|
+
icon: "Sparkles",
|
|
249
|
+
inputs: [
|
|
250
|
+
{ id: "prompt", label: "Prompt", required: true, type: "text" },
|
|
251
|
+
{
|
|
252
|
+
id: "images",
|
|
253
|
+
label: "Reference Images",
|
|
254
|
+
multiple: true,
|
|
255
|
+
type: "image"
|
|
256
|
+
}
|
|
257
|
+
],
|
|
258
|
+
label: "Image Generator",
|
|
259
|
+
outputs: [{ id: "image", label: "Generated Image", type: "image" }],
|
|
260
|
+
type: "imageGen"
|
|
261
|
+
},
|
|
262
|
+
imageGridSplit: {
|
|
263
|
+
category: "processing",
|
|
264
|
+
defaultData: {
|
|
265
|
+
borderInset: 10,
|
|
266
|
+
gridCols: 3,
|
|
267
|
+
gridRows: 2,
|
|
268
|
+
inputImage: null,
|
|
269
|
+
label: "Grid Split",
|
|
245
270
|
outputFormat: "jpg",
|
|
246
|
-
|
|
247
|
-
|
|
271
|
+
outputImages: [],
|
|
272
|
+
quality: 95,
|
|
273
|
+
status: "idle"
|
|
274
|
+
},
|
|
275
|
+
description: "Split image into grid cells",
|
|
276
|
+
icon: "Grid3X3",
|
|
277
|
+
inputs: [{ id: "image", label: "Image", required: true, type: "image" }],
|
|
278
|
+
label: "Grid Split",
|
|
279
|
+
outputs: [
|
|
280
|
+
{ id: "images", label: "Split Images", multiple: true, type: "image" }
|
|
281
|
+
],
|
|
282
|
+
type: "imageGridSplit"
|
|
248
283
|
},
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
284
|
+
// Input nodes
|
|
285
|
+
imageInput: {
|
|
286
|
+
category: "input",
|
|
287
|
+
defaultData: {
|
|
288
|
+
dimensions: null,
|
|
289
|
+
filename: null,
|
|
290
|
+
image: null,
|
|
291
|
+
label: "Image",
|
|
292
|
+
source: "upload",
|
|
293
|
+
status: "idle"
|
|
294
|
+
},
|
|
295
|
+
description: "Upload or reference an image",
|
|
296
|
+
icon: "Image",
|
|
297
|
+
inputs: [],
|
|
298
|
+
label: "Image",
|
|
299
|
+
outputs: [{ id: "image", label: "Image", type: "image" }],
|
|
300
|
+
type: "imageInput"
|
|
301
|
+
},
|
|
302
|
+
lipSync: {
|
|
253
303
|
category: "ai",
|
|
254
|
-
icon: "Video",
|
|
255
|
-
inputs: [
|
|
256
|
-
{ id: "prompt", type: "text", label: "Prompt", required: true },
|
|
257
|
-
{ id: "image", type: "image", label: "Starting Frame" },
|
|
258
|
-
{ id: "lastFrame", type: "image", label: "Last Frame (interpolation)" }
|
|
259
|
-
],
|
|
260
|
-
outputs: [{ id: "video", type: "video", label: "Generated Video" }],
|
|
261
304
|
defaultData: {
|
|
262
|
-
|
|
263
|
-
|
|
305
|
+
activeSpeaker: false,
|
|
306
|
+
inputAudio: null,
|
|
264
307
|
inputImage: null,
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
308
|
+
inputVideo: null,
|
|
309
|
+
jobId: null,
|
|
310
|
+
label: "Lip Sync",
|
|
311
|
+
model: "sync/lipsync-2",
|
|
269
312
|
outputVideo: null,
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
313
|
+
status: "idle",
|
|
314
|
+
syncMode: "loop",
|
|
315
|
+
temperature: 0.5
|
|
316
|
+
},
|
|
317
|
+
description: "Generate talking-head video from image/video and audio using Replicate",
|
|
318
|
+
icon: "Mic",
|
|
319
|
+
inputs: [
|
|
320
|
+
{ id: "image", label: "Face Image", type: "image" },
|
|
321
|
+
{ id: "video", label: "Source Video", type: "video" },
|
|
322
|
+
{ id: "audio", label: "Audio", required: true, type: "audio" }
|
|
323
|
+
],
|
|
324
|
+
label: "Lip Sync",
|
|
325
|
+
outputs: [{ id: "video", label: "Generated Video", type: "video" }],
|
|
326
|
+
type: "lipSync"
|
|
277
327
|
},
|
|
278
328
|
llm: {
|
|
279
|
-
type: "llm",
|
|
280
|
-
label: "LLM",
|
|
281
|
-
description: "Generate text with meta-llama",
|
|
282
329
|
category: "ai",
|
|
283
|
-
icon: "Brain",
|
|
284
|
-
inputs: [{ id: "prompt", type: "text", label: "Prompt", required: true }],
|
|
285
|
-
outputs: [{ id: "text", type: "text", label: "Generated Text" }],
|
|
286
330
|
defaultData: {
|
|
287
|
-
label: "LLM",
|
|
288
|
-
status: "idle",
|
|
289
331
|
inputPrompt: null,
|
|
290
|
-
|
|
332
|
+
jobId: null,
|
|
333
|
+
label: "LLM",
|
|
334
|
+
maxTokens: 1024,
|
|
291
335
|
model: "meta-llama-3.1-405b-instruct",
|
|
336
|
+
outputText: null,
|
|
337
|
+
status: "idle",
|
|
292
338
|
systemPrompt: "You are a creative assistant helping generate content prompts.",
|
|
293
339
|
temperature: 0.7,
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
340
|
+
topP: 0.9
|
|
341
|
+
},
|
|
342
|
+
description: "Generate text with meta-llama",
|
|
343
|
+
icon: "Brain",
|
|
344
|
+
inputs: [{ id: "prompt", label: "Prompt", required: true, type: "text" }],
|
|
345
|
+
label: "LLM",
|
|
346
|
+
outputs: [{ id: "text", label: "Generated Text", type: "text" }],
|
|
347
|
+
type: "llm"
|
|
298
348
|
},
|
|
299
|
-
|
|
300
|
-
type: "lipSync",
|
|
301
|
-
label: "Lip Sync",
|
|
302
|
-
description: "Generate talking-head video from image/video and audio using Replicate",
|
|
349
|
+
motionControl: {
|
|
303
350
|
category: "ai",
|
|
304
|
-
icon: "Mic",
|
|
305
|
-
inputs: [
|
|
306
|
-
{ id: "image", type: "image", label: "Face Image" },
|
|
307
|
-
{ id: "video", type: "video", label: "Source Video" },
|
|
308
|
-
{ id: "audio", type: "audio", label: "Audio", required: true }
|
|
309
|
-
],
|
|
310
|
-
outputs: [{ id: "video", type: "video", label: "Generated Video" }],
|
|
311
351
|
defaultData: {
|
|
312
|
-
|
|
313
|
-
|
|
352
|
+
aspectRatio: "16:9",
|
|
353
|
+
cameraIntensity: 50,
|
|
354
|
+
cameraMovement: "static",
|
|
355
|
+
characterOrientation: "image",
|
|
356
|
+
duration: 5,
|
|
314
357
|
inputImage: null,
|
|
358
|
+
inputPrompt: null,
|
|
315
359
|
inputVideo: null,
|
|
316
|
-
|
|
360
|
+
jobId: null,
|
|
361
|
+
keepOriginalSound: true,
|
|
362
|
+
label: "Motion Control",
|
|
363
|
+
mode: "video_transfer",
|
|
364
|
+
motionStrength: 50,
|
|
365
|
+
negativePrompt: "",
|
|
317
366
|
outputVideo: null,
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
voiceChange: {
|
|
326
|
-
type: "voiceChange",
|
|
327
|
-
label: "Voice Change",
|
|
328
|
-
description: "Replace or mix audio track in a video",
|
|
329
|
-
category: "ai",
|
|
330
|
-
icon: "AudioLines",
|
|
367
|
+
qualityMode: "pro",
|
|
368
|
+
seed: null,
|
|
369
|
+
status: "idle",
|
|
370
|
+
trajectoryPoints: []
|
|
371
|
+
},
|
|
372
|
+
description: "Generate video with precise motion control using Kling AI",
|
|
373
|
+
icon: "Navigation",
|
|
331
374
|
inputs: [
|
|
332
|
-
{ id: "
|
|
333
|
-
{ id: "
|
|
375
|
+
{ id: "image", label: "Image", required: true, type: "image" },
|
|
376
|
+
{ id: "video", label: "Motion Video", type: "video" },
|
|
377
|
+
{ id: "prompt", label: "Prompt", type: "text" }
|
|
334
378
|
],
|
|
335
|
-
|
|
379
|
+
label: "Motion Control",
|
|
380
|
+
outputs: [{ id: "video", label: "Video", type: "video" }],
|
|
381
|
+
type: "motionControl"
|
|
382
|
+
},
|
|
383
|
+
outputGallery: {
|
|
384
|
+
category: "output",
|
|
336
385
|
defaultData: {
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
386
|
+
images: [],
|
|
387
|
+
label: "Output Gallery",
|
|
388
|
+
status: "idle"
|
|
389
|
+
},
|
|
390
|
+
description: "Thumbnail grid with lightbox for multi-image outputs",
|
|
391
|
+
icon: "LayoutGrid",
|
|
392
|
+
inputs: [{ id: "image", label: "Images", multiple: true, type: "image" }],
|
|
393
|
+
label: "Output Gallery",
|
|
394
|
+
outputs: [],
|
|
395
|
+
type: "outputGallery"
|
|
346
396
|
},
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
label: "Text to Speech",
|
|
350
|
-
description: "Convert text to natural-sounding speech using ElevenLabs",
|
|
351
|
-
category: "ai",
|
|
352
|
-
icon: "AudioLines",
|
|
353
|
-
inputs: [{ id: "text", type: "text", label: "Text", required: true }],
|
|
354
|
-
outputs: [{ id: "audio", type: "audio", label: "Audio" }],
|
|
397
|
+
prompt: {
|
|
398
|
+
category: "input",
|
|
355
399
|
defaultData: {
|
|
356
|
-
label: "
|
|
400
|
+
label: "Prompt",
|
|
401
|
+
prompt: "",
|
|
357
402
|
status: "idle",
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
}
|
|
403
|
+
variables: {}
|
|
404
|
+
},
|
|
405
|
+
description: "Text prompt for AI generation",
|
|
406
|
+
icon: "MessageSquare",
|
|
407
|
+
inputs: [],
|
|
408
|
+
label: "Prompt",
|
|
409
|
+
outputs: [{ id: "text", label: "Prompt", type: "text" }],
|
|
410
|
+
type: "prompt"
|
|
367
411
|
},
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
label: "Transcribe",
|
|
371
|
-
description: "Convert video or audio to text transcript",
|
|
372
|
-
category: "ai",
|
|
373
|
-
icon: "FileText",
|
|
374
|
-
inputs: [
|
|
375
|
-
{ id: "video", type: "video", label: "Video" },
|
|
376
|
-
{ id: "audio", type: "audio", label: "Audio" }
|
|
377
|
-
],
|
|
378
|
-
outputs: [{ id: "text", type: "text", label: "Transcript" }],
|
|
412
|
+
promptConstructor: {
|
|
413
|
+
category: "input",
|
|
379
414
|
defaultData: {
|
|
380
|
-
label: "
|
|
381
|
-
status: "idle",
|
|
382
|
-
inputVideo: null,
|
|
383
|
-
inputAudio: null,
|
|
415
|
+
label: "Prompt Constructor",
|
|
384
416
|
outputText: null,
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
}
|
|
417
|
+
status: "idle",
|
|
418
|
+
template: "",
|
|
419
|
+
unresolvedVars: []
|
|
420
|
+
},
|
|
421
|
+
description: "Template-based prompt with @variable interpolation from connected Prompt nodes",
|
|
422
|
+
icon: "Puzzle",
|
|
423
|
+
inputs: [{ id: "text", label: "Variables", multiple: true, type: "text" }],
|
|
424
|
+
label: "Prompt Constructor",
|
|
425
|
+
outputs: [{ id: "text", label: "Prompt", type: "text" }],
|
|
426
|
+
type: "promptConstructor"
|
|
389
427
|
},
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
label: "Motion Control",
|
|
393
|
-
description: "Generate video with precise motion control using Kling AI",
|
|
394
|
-
category: "ai",
|
|
395
|
-
icon: "Navigation",
|
|
396
|
-
inputs: [
|
|
397
|
-
{ id: "image", type: "image", label: "Image", required: true },
|
|
398
|
-
{ id: "video", type: "video", label: "Motion Video" },
|
|
399
|
-
{ id: "prompt", type: "text", label: "Prompt" }
|
|
400
|
-
],
|
|
401
|
-
outputs: [{ id: "video", type: "video", label: "Video" }],
|
|
428
|
+
reframe: {
|
|
429
|
+
category: "processing",
|
|
402
430
|
defaultData: {
|
|
403
|
-
|
|
404
|
-
|
|
431
|
+
aspectRatio: "16:9",
|
|
432
|
+
gridPosition: { x: 0.5, y: 0.5 },
|
|
405
433
|
inputImage: null,
|
|
434
|
+
inputType: null,
|
|
406
435
|
inputVideo: null,
|
|
407
|
-
|
|
436
|
+
jobId: null,
|
|
437
|
+
label: "Reframe",
|
|
438
|
+
model: "photon-flash-1",
|
|
439
|
+
outputImage: null,
|
|
408
440
|
outputVideo: null,
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
441
|
+
prompt: "",
|
|
442
|
+
status: "idle"
|
|
443
|
+
},
|
|
444
|
+
description: "Reframe images or videos to different aspect ratios with AI outpainting",
|
|
445
|
+
icon: "Crop",
|
|
446
|
+
inputs: [
|
|
447
|
+
{ id: "image", label: "Image", type: "image" },
|
|
448
|
+
{ id: "video", label: "Video", type: "video" }
|
|
449
|
+
],
|
|
450
|
+
label: "Reframe",
|
|
451
|
+
outputs: [
|
|
452
|
+
{ id: "image", label: "Reframed Image", type: "image" },
|
|
453
|
+
{ id: "video", label: "Reframed Video", type: "video" }
|
|
454
|
+
],
|
|
455
|
+
type: "reframe"
|
|
423
456
|
},
|
|
424
457
|
// Processing nodes
|
|
425
458
|
resize: {
|
|
426
|
-
type: "resize",
|
|
427
|
-
label: "Resize",
|
|
428
|
-
description: "Resize images or videos to different aspect ratios using Luma AI",
|
|
429
459
|
category: "processing",
|
|
430
|
-
icon: "Maximize2",
|
|
431
|
-
inputs: [{ id: "media", type: "image", label: "Media", required: true }],
|
|
432
|
-
outputs: [{ id: "media", type: "image", label: "Resized Media" }],
|
|
433
460
|
defaultData: {
|
|
434
|
-
|
|
435
|
-
status: "idle",
|
|
461
|
+
gridPosition: { x: 0.5, y: 0.5 },
|
|
436
462
|
inputMedia: null,
|
|
437
463
|
inputType: null,
|
|
464
|
+
jobId: null,
|
|
465
|
+
label: "Resize",
|
|
438
466
|
outputMedia: null,
|
|
439
|
-
targetAspectRatio: "16:9",
|
|
440
467
|
prompt: "",
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
}
|
|
468
|
+
status: "idle",
|
|
469
|
+
targetAspectRatio: "16:9"
|
|
470
|
+
},
|
|
471
|
+
description: "Resize images or videos to different aspect ratios using Luma AI",
|
|
472
|
+
icon: "Maximize2",
|
|
473
|
+
inputs: [{ id: "media", label: "Media", required: true, type: "image" }],
|
|
474
|
+
label: "Resize",
|
|
475
|
+
outputs: [{ id: "media", label: "Resized Media", type: "image" }],
|
|
476
|
+
type: "resize"
|
|
444
477
|
},
|
|
445
|
-
|
|
446
|
-
type: "animation",
|
|
447
|
-
label: "Animation",
|
|
448
|
-
description: "Apply easing curve to video",
|
|
478
|
+
subtitle: {
|
|
449
479
|
category: "processing",
|
|
450
|
-
icon: "Wand2",
|
|
451
|
-
inputs: [{ id: "video", type: "video", label: "Video", required: true }],
|
|
452
|
-
outputs: [{ id: "video", type: "video", label: "Animated Video" }],
|
|
453
480
|
defaultData: {
|
|
454
|
-
|
|
455
|
-
|
|
481
|
+
backgroundColor: "rgba(0,0,0,0.7)",
|
|
482
|
+
fontColor: "#FFFFFF",
|
|
483
|
+
fontFamily: "Arial",
|
|
484
|
+
fontSize: 24,
|
|
485
|
+
inputText: null,
|
|
456
486
|
inputVideo: null,
|
|
487
|
+
jobId: null,
|
|
488
|
+
label: "Subtitle",
|
|
457
489
|
outputVideo: null,
|
|
458
|
-
|
|
459
|
-
preset: "easeInOutCubic",
|
|
460
|
-
customCurve: [0.645, 0.045, 0.355, 1],
|
|
461
|
-
speedMultiplier: 1
|
|
462
|
-
}
|
|
463
|
-
},
|
|
464
|
-
videoStitch: {
|
|
465
|
-
type: "videoStitch",
|
|
466
|
-
label: "Video Stitch",
|
|
467
|
-
description: "Concatenate multiple videos",
|
|
468
|
-
category: "processing",
|
|
469
|
-
icon: "Layers",
|
|
470
|
-
inputs: [{ id: "videos", type: "video", label: "Videos", multiple: true, required: true }],
|
|
471
|
-
outputs: [{ id: "video", type: "video", label: "Stitched Video" }],
|
|
472
|
-
defaultData: {
|
|
473
|
-
label: "Video Stitch",
|
|
490
|
+
position: "bottom",
|
|
474
491
|
status: "idle",
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
492
|
+
style: "modern"
|
|
493
|
+
},
|
|
494
|
+
description: "Burn subtitles into video using FFmpeg",
|
|
495
|
+
icon: "Subtitles",
|
|
496
|
+
inputs: [
|
|
497
|
+
{ id: "video", label: "Video", required: true, type: "video" },
|
|
498
|
+
{ id: "text", label: "Subtitle Text", required: true, type: "text" }
|
|
499
|
+
],
|
|
500
|
+
label: "Subtitle",
|
|
501
|
+
outputs: [{ id: "video", label: "Video with Subtitles", type: "video" }],
|
|
502
|
+
type: "subtitle"
|
|
481
503
|
},
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
label: "Video Trim",
|
|
485
|
-
description: "Trim video to a specific time range",
|
|
486
|
-
category: "processing",
|
|
487
|
-
icon: "Scissors",
|
|
488
|
-
inputs: [{ id: "video", type: "video", label: "Video", required: true }],
|
|
489
|
-
outputs: [{ id: "video", type: "video", label: "Trimmed Video" }],
|
|
504
|
+
textToSpeech: {
|
|
505
|
+
category: "ai",
|
|
490
506
|
defaultData: {
|
|
491
|
-
|
|
507
|
+
inputText: null,
|
|
508
|
+
jobId: null,
|
|
509
|
+
label: "Text to Speech",
|
|
510
|
+
outputAudio: null,
|
|
511
|
+
provider: "elevenlabs",
|
|
512
|
+
similarityBoost: 0.75,
|
|
513
|
+
speed: 1,
|
|
514
|
+
stability: 0.5,
|
|
492
515
|
status: "idle",
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
}
|
|
516
|
+
voice: "rachel"
|
|
517
|
+
},
|
|
518
|
+
description: "Convert text to natural-sounding speech using ElevenLabs",
|
|
519
|
+
icon: "AudioLines",
|
|
520
|
+
inputs: [{ id: "text", label: "Text", required: true, type: "text" }],
|
|
521
|
+
label: "Text to Speech",
|
|
522
|
+
outputs: [{ id: "audio", label: "Audio", type: "audio" }],
|
|
523
|
+
type: "textToSpeech"
|
|
500
524
|
},
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
label: "Frame Extract",
|
|
504
|
-
description: "Extract a specific frame from video as image",
|
|
505
|
-
category: "processing",
|
|
506
|
-
icon: "Film",
|
|
507
|
-
inputs: [{ id: "video", type: "video", label: "Video", required: true }],
|
|
508
|
-
outputs: [{ id: "image", type: "image", label: "Extracted Frame" }],
|
|
525
|
+
transcribe: {
|
|
526
|
+
category: "ai",
|
|
509
527
|
defaultData: {
|
|
510
|
-
|
|
511
|
-
status: "idle",
|
|
528
|
+
inputAudio: null,
|
|
512
529
|
inputVideo: null,
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
}
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
type: "reframe",
|
|
523
|
-
label: "Reframe",
|
|
524
|
-
description: "Reframe images or videos to different aspect ratios with AI outpainting",
|
|
525
|
-
category: "processing",
|
|
526
|
-
icon: "Crop",
|
|
530
|
+
jobId: null,
|
|
531
|
+
label: "Transcribe",
|
|
532
|
+
language: "auto",
|
|
533
|
+
outputText: null,
|
|
534
|
+
status: "idle",
|
|
535
|
+
timestamps: false
|
|
536
|
+
},
|
|
537
|
+
description: "Convert video or audio to text transcript",
|
|
538
|
+
icon: "FileText",
|
|
527
539
|
inputs: [
|
|
528
|
-
{ id: "
|
|
529
|
-
{ id: "
|
|
530
|
-
],
|
|
531
|
-
outputs: [
|
|
532
|
-
{ id: "image", type: "image", label: "Reframed Image" },
|
|
533
|
-
{ id: "video", type: "video", label: "Reframed Video" }
|
|
540
|
+
{ id: "video", label: "Video", type: "video" },
|
|
541
|
+
{ id: "audio", label: "Audio", type: "audio" }
|
|
534
542
|
],
|
|
543
|
+
label: "Transcribe",
|
|
544
|
+
outputs: [{ id: "text", label: "Transcript", type: "text" }],
|
|
545
|
+
type: "transcribe"
|
|
546
|
+
},
|
|
547
|
+
upscale: {
|
|
548
|
+
category: "processing",
|
|
535
549
|
defaultData: {
|
|
536
|
-
|
|
537
|
-
|
|
550
|
+
comparisonPosition: 50,
|
|
551
|
+
faceEnhancement: false,
|
|
552
|
+
faceEnhancementCreativity: 0,
|
|
553
|
+
faceEnhancementStrength: 80,
|
|
538
554
|
inputImage: null,
|
|
539
|
-
inputVideo: null,
|
|
540
555
|
inputType: null,
|
|
556
|
+
inputVideo: null,
|
|
557
|
+
jobId: null,
|
|
558
|
+
label: "Upscale",
|
|
559
|
+
model: "topaz-standard-v2",
|
|
560
|
+
originalPreview: null,
|
|
561
|
+
outputFormat: "png",
|
|
541
562
|
outputImage: null,
|
|
563
|
+
outputPreview: null,
|
|
542
564
|
outputVideo: null,
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
}
|
|
549
|
-
},
|
|
550
|
-
upscale: {
|
|
551
|
-
type: "upscale",
|
|
552
|
-
label: "Upscale",
|
|
565
|
+
showComparison: true,
|
|
566
|
+
status: "idle",
|
|
567
|
+
targetFps: 30,
|
|
568
|
+
targetResolution: "1080p",
|
|
569
|
+
upscaleFactor: "2x"
|
|
570
|
+
},
|
|
553
571
|
description: "AI-powered upscaling for images and videos",
|
|
554
|
-
category: "processing",
|
|
555
572
|
icon: "Maximize",
|
|
556
573
|
inputs: [
|
|
557
|
-
{ id: "image",
|
|
558
|
-
{ id: "video",
|
|
574
|
+
{ id: "image", label: "Image", type: "image" },
|
|
575
|
+
{ id: "video", label: "Video", type: "video" }
|
|
559
576
|
],
|
|
577
|
+
label: "Upscale",
|
|
560
578
|
outputs: [
|
|
561
|
-
{ id: "image",
|
|
562
|
-
{ id: "video",
|
|
579
|
+
{ id: "image", label: "Upscaled Image", type: "image" },
|
|
580
|
+
{ id: "video", label: "Upscaled Video", type: "video" }
|
|
563
581
|
],
|
|
564
|
-
|
|
565
|
-
label: "Upscale",
|
|
566
|
-
status: "idle",
|
|
567
|
-
inputImage: null,
|
|
568
|
-
inputVideo: null,
|
|
569
|
-
inputType: null,
|
|
570
|
-
outputImage: null,
|
|
571
|
-
outputVideo: null,
|
|
572
|
-
originalPreview: null,
|
|
573
|
-
outputPreview: null,
|
|
574
|
-
model: "topaz-standard-v2",
|
|
575
|
-
upscaleFactor: "2x",
|
|
576
|
-
outputFormat: "png",
|
|
577
|
-
faceEnhancement: false,
|
|
578
|
-
faceEnhancementStrength: 80,
|
|
579
|
-
faceEnhancementCreativity: 0,
|
|
580
|
-
targetResolution: "1080p",
|
|
581
|
-
targetFps: 30,
|
|
582
|
-
showComparison: true,
|
|
583
|
-
comparisonPosition: 50,
|
|
584
|
-
jobId: null
|
|
585
|
-
}
|
|
582
|
+
type: "upscale"
|
|
586
583
|
},
|
|
587
|
-
|
|
588
|
-
type: "imageGridSplit",
|
|
589
|
-
label: "Grid Split",
|
|
590
|
-
description: "Split image into grid cells",
|
|
584
|
+
videoFrameExtract: {
|
|
591
585
|
category: "processing",
|
|
592
|
-
icon: "Grid3X3",
|
|
593
|
-
inputs: [{ id: "image", type: "image", label: "Image", required: true }],
|
|
594
|
-
outputs: [{ id: "images", type: "image", label: "Split Images", multiple: true }],
|
|
595
586
|
defaultData: {
|
|
596
|
-
|
|
587
|
+
inputVideo: null,
|
|
588
|
+
jobId: null,
|
|
589
|
+
label: "Frame Extract",
|
|
590
|
+
outputImage: null,
|
|
591
|
+
percentagePosition: 100,
|
|
592
|
+
selectionMode: "last",
|
|
597
593
|
status: "idle",
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
}
|
|
594
|
+
timestampSeconds: 0,
|
|
595
|
+
videoDuration: null
|
|
596
|
+
},
|
|
597
|
+
description: "Extract a specific frame from video as image",
|
|
598
|
+
icon: "Film",
|
|
599
|
+
inputs: [{ id: "video", label: "Video", required: true, type: "video" }],
|
|
600
|
+
label: "Frame Extract",
|
|
601
|
+
outputs: [{ id: "image", label: "Extracted Frame", type: "image" }],
|
|
602
|
+
type: "videoFrameExtract"
|
|
606
603
|
},
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
label: "Annotation",
|
|
610
|
-
description: "Add shapes, arrows, and text to images",
|
|
611
|
-
category: "processing",
|
|
612
|
-
icon: "Pencil",
|
|
613
|
-
inputs: [{ id: "image", type: "image", label: "Image", required: true }],
|
|
614
|
-
outputs: [{ id: "image", type: "image", label: "Annotated Image" }],
|
|
604
|
+
videoGen: {
|
|
605
|
+
category: "ai",
|
|
615
606
|
defaultData: {
|
|
616
|
-
|
|
617
|
-
|
|
607
|
+
aspectRatio: "16:9",
|
|
608
|
+
duration: 8,
|
|
609
|
+
generateAudio: true,
|
|
618
610
|
inputImage: null,
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
611
|
+
inputPrompt: null,
|
|
612
|
+
jobId: null,
|
|
613
|
+
label: "Video Generator",
|
|
614
|
+
lastFrame: null,
|
|
615
|
+
model: "veo-3.1-fast",
|
|
616
|
+
negativePrompt: "",
|
|
617
|
+
outputVideo: null,
|
|
618
|
+
referenceImages: [],
|
|
619
|
+
resolution: "1080p",
|
|
620
|
+
status: "idle"
|
|
621
|
+
},
|
|
622
|
+
description: "Generate videos with veo-3.1 models",
|
|
623
|
+
icon: "Video",
|
|
630
624
|
inputs: [
|
|
631
|
-
{ id: "
|
|
632
|
-
{ id: "
|
|
625
|
+
{ id: "prompt", label: "Prompt", required: true, type: "text" },
|
|
626
|
+
{ id: "image", label: "Starting Frame", type: "image" },
|
|
627
|
+
{ id: "lastFrame", label: "Last Frame (interpolation)", type: "image" }
|
|
633
628
|
],
|
|
634
|
-
|
|
629
|
+
label: "Video Generator",
|
|
630
|
+
outputs: [{ id: "video", label: "Generated Video", type: "video" }],
|
|
631
|
+
type: "videoGen"
|
|
632
|
+
},
|
|
633
|
+
videoInput: {
|
|
634
|
+
category: "input",
|
|
635
635
|
defaultData: {
|
|
636
|
-
|
|
636
|
+
dimensions: null,
|
|
637
|
+
duration: null,
|
|
638
|
+
filename: null,
|
|
639
|
+
label: "Video",
|
|
640
|
+
source: "upload",
|
|
637
641
|
status: "idle",
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
fontFamily: "Arial",
|
|
647
|
-
jobId: null
|
|
648
|
-
}
|
|
642
|
+
video: null
|
|
643
|
+
},
|
|
644
|
+
description: "Upload or reference a video file",
|
|
645
|
+
icon: "FileVideo",
|
|
646
|
+
inputs: [],
|
|
647
|
+
label: "Video",
|
|
648
|
+
outputs: [{ id: "video", label: "Video", type: "video" }],
|
|
649
|
+
type: "videoInput"
|
|
649
650
|
},
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
label: "Output Gallery",
|
|
653
|
-
description: "Thumbnail grid with lightbox for multi-image outputs",
|
|
654
|
-
category: "output",
|
|
655
|
-
icon: "LayoutGrid",
|
|
656
|
-
inputs: [{ id: "image", type: "image", label: "Images", multiple: true }],
|
|
657
|
-
outputs: [],
|
|
651
|
+
videoStitch: {
|
|
652
|
+
category: "processing",
|
|
658
653
|
defaultData: {
|
|
659
|
-
|
|
654
|
+
inputVideos: [],
|
|
655
|
+
label: "Video Stitch",
|
|
656
|
+
outputVideo: null,
|
|
657
|
+
seamlessLoop: false,
|
|
660
658
|
status: "idle",
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
label: "Image Compare",
|
|
667
|
-
description: "Side-by-side A/B comparison with draggable slider",
|
|
668
|
-
category: "output",
|
|
669
|
-
icon: "Columns2",
|
|
659
|
+
transitionDuration: 0.5,
|
|
660
|
+
transitionType: "crossfade"
|
|
661
|
+
},
|
|
662
|
+
description: "Concatenate multiple videos",
|
|
663
|
+
icon: "Layers",
|
|
670
664
|
inputs: [
|
|
671
|
-
{
|
|
672
|
-
|
|
665
|
+
{
|
|
666
|
+
id: "videos",
|
|
667
|
+
label: "Videos",
|
|
668
|
+
multiple: true,
|
|
669
|
+
required: true,
|
|
670
|
+
type: "video"
|
|
671
|
+
}
|
|
673
672
|
],
|
|
674
|
-
|
|
673
|
+
label: "Video Stitch",
|
|
674
|
+
outputs: [{ id: "video", label: "Stitched Video", type: "video" }],
|
|
675
|
+
type: "videoStitch"
|
|
676
|
+
},
|
|
677
|
+
videoTrim: {
|
|
678
|
+
category: "processing",
|
|
675
679
|
defaultData: {
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
680
|
+
duration: null,
|
|
681
|
+
endTime: 60,
|
|
682
|
+
inputVideo: null,
|
|
683
|
+
jobId: null,
|
|
684
|
+
label: "Video Trim",
|
|
685
|
+
outputVideo: null,
|
|
686
|
+
startTime: 0,
|
|
687
|
+
status: "idle"
|
|
688
|
+
},
|
|
689
|
+
description: "Trim video to a specific time range",
|
|
690
|
+
icon: "Scissors",
|
|
691
|
+
inputs: [{ id: "video", label: "Video", required: true, type: "video" }],
|
|
692
|
+
label: "Video Trim",
|
|
693
|
+
outputs: [{ id: "video", label: "Trimmed Video", type: "video" }],
|
|
694
|
+
type: "videoTrim"
|
|
681
695
|
},
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
type: "download",
|
|
685
|
-
label: "Download",
|
|
686
|
-
description: "Download workflow output with custom filename",
|
|
687
|
-
category: "output",
|
|
688
|
-
icon: "Download",
|
|
689
|
-
inputs: [
|
|
690
|
-
{ id: "image", type: "image", label: "Image" },
|
|
691
|
-
{ id: "video", type: "video", label: "Video" }
|
|
692
|
-
],
|
|
693
|
-
outputs: [],
|
|
696
|
+
voiceChange: {
|
|
697
|
+
category: "ai",
|
|
694
698
|
defaultData: {
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
inputImage: null,
|
|
699
|
+
audioMixLevel: 0.5,
|
|
700
|
+
inputAudio: null,
|
|
698
701
|
inputVideo: null,
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
+
jobId: null,
|
|
703
|
+
label: "Voice Change",
|
|
704
|
+
outputVideo: null,
|
|
705
|
+
preserveOriginalAudio: false,
|
|
706
|
+
status: "idle"
|
|
707
|
+
},
|
|
708
|
+
description: "Replace or mix audio track in a video",
|
|
709
|
+
icon: "AudioLines",
|
|
710
|
+
inputs: [
|
|
711
|
+
{ id: "video", label: "Video", required: true, type: "video" },
|
|
712
|
+
{ id: "audio", label: "New Audio", required: true, type: "audio" }
|
|
713
|
+
],
|
|
714
|
+
label: "Voice Change",
|
|
715
|
+
outputs: [{ id: "video", label: "Output Video", type: "video" }],
|
|
716
|
+
type: "voiceChange"
|
|
702
717
|
},
|
|
703
718
|
// Composition nodes (workflow-as-node)
|
|
704
719
|
workflowInput: {
|
|
705
|
-
type: "workflowInput",
|
|
706
|
-
label: "Workflow Input",
|
|
707
|
-
description: "Define an input port for when this workflow is used as a subworkflow",
|
|
708
720
|
category: "composition",
|
|
709
|
-
icon: "ArrowRightToLine",
|
|
710
|
-
inputs: [],
|
|
711
|
-
outputs: [{ id: "value", type: "image", label: "Value" }],
|
|
712
|
-
// Type is dynamic based on inputType
|
|
713
721
|
defaultData: {
|
|
714
|
-
|
|
715
|
-
status: "idle",
|
|
722
|
+
description: "",
|
|
716
723
|
inputName: "input",
|
|
717
724
|
inputType: "image",
|
|
725
|
+
label: "Workflow Input",
|
|
718
726
|
required: true,
|
|
719
|
-
|
|
720
|
-
}
|
|
727
|
+
status: "idle"
|
|
728
|
+
},
|
|
729
|
+
description: "Define an input port for when this workflow is used as a subworkflow",
|
|
730
|
+
icon: "ArrowRightToLine",
|
|
731
|
+
inputs: [],
|
|
732
|
+
label: "Workflow Input",
|
|
733
|
+
outputs: [{ id: "value", label: "Value", type: "image" }],
|
|
734
|
+
// Type is dynamic based on inputType
|
|
735
|
+
type: "workflowInput"
|
|
721
736
|
},
|
|
722
737
|
workflowOutput: {
|
|
723
|
-
type: "workflowOutput",
|
|
724
|
-
label: "Workflow Output",
|
|
725
|
-
description: "Define an output port for when this workflow is used as a subworkflow",
|
|
726
738
|
category: "composition",
|
|
727
|
-
icon: "ArrowLeftFromLine",
|
|
728
|
-
inputs: [{ id: "value", type: "image", label: "Value", required: true }],
|
|
729
|
-
// Type is dynamic based on outputType
|
|
730
|
-
outputs: [],
|
|
731
739
|
defaultData: {
|
|
740
|
+
description: "",
|
|
741
|
+
inputValue: null,
|
|
732
742
|
label: "Workflow Output",
|
|
733
|
-
status: "idle",
|
|
734
743
|
outputName: "output",
|
|
735
744
|
outputType: "image",
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
745
|
+
status: "idle"
|
|
746
|
+
},
|
|
747
|
+
description: "Define an output port for when this workflow is used as a subworkflow",
|
|
748
|
+
icon: "ArrowLeftFromLine",
|
|
749
|
+
inputs: [{ id: "value", label: "Value", required: true, type: "image" }],
|
|
750
|
+
// Type is dynamic based on outputType
|
|
751
|
+
label: "Workflow Output",
|
|
752
|
+
outputs: [],
|
|
753
|
+
type: "workflowOutput"
|
|
739
754
|
},
|
|
740
755
|
workflowRef: {
|
|
741
|
-
type: "workflowRef",
|
|
742
|
-
label: "Subworkflow",
|
|
743
|
-
description: "Reference another workflow as a subworkflow",
|
|
744
756
|
category: "composition",
|
|
757
|
+
defaultData: {
|
|
758
|
+
cachedInterface: null,
|
|
759
|
+
childExecutionId: null,
|
|
760
|
+
inputMappings: {},
|
|
761
|
+
label: "Subworkflow",
|
|
762
|
+
outputMappings: {},
|
|
763
|
+
referencedWorkflowId: null,
|
|
764
|
+
referencedWorkflowName: null,
|
|
765
|
+
status: "idle"
|
|
766
|
+
},
|
|
767
|
+
description: "Reference another workflow as a subworkflow",
|
|
745
768
|
icon: "GitBranch",
|
|
746
769
|
inputs: [],
|
|
747
770
|
// Dynamic based on referenced workflow interface
|
|
771
|
+
label: "Subworkflow",
|
|
748
772
|
outputs: [],
|
|
749
773
|
// Dynamic based on referenced workflow interface
|
|
750
|
-
|
|
751
|
-
label: "Subworkflow",
|
|
752
|
-
status: "idle",
|
|
753
|
-
referencedWorkflowId: null,
|
|
754
|
-
referencedWorkflowName: null,
|
|
755
|
-
cachedInterface: null,
|
|
756
|
-
inputMappings: {},
|
|
757
|
-
outputMappings: {},
|
|
758
|
-
childExecutionId: null
|
|
759
|
-
}
|
|
774
|
+
type: "workflowRef"
|
|
760
775
|
}
|
|
761
776
|
// Multi-format nodes removed - format conversion now handled by schema-driven engine
|
|
762
777
|
};
|
|
763
778
|
var NODE_ORDER = {
|
|
764
|
-
input: ["imageInput", "videoInput", "audioInput", "prompt", "promptConstructor"],
|
|
765
779
|
ai: [
|
|
766
780
|
"imageGen",
|
|
767
781
|
"videoGen",
|
|
@@ -772,6 +786,15 @@ var NODE_ORDER = {
|
|
|
772
786
|
"voiceChange",
|
|
773
787
|
"motionControl"
|
|
774
788
|
],
|
|
789
|
+
composition: ["workflowRef", "workflowInput", "workflowOutput"],
|
|
790
|
+
input: [
|
|
791
|
+
"imageInput",
|
|
792
|
+
"videoInput",
|
|
793
|
+
"audioInput",
|
|
794
|
+
"prompt",
|
|
795
|
+
"promptConstructor"
|
|
796
|
+
],
|
|
797
|
+
output: ["download", "outputGallery", "imageCompare"],
|
|
775
798
|
processing: [
|
|
776
799
|
"reframe",
|
|
777
800
|
"upscale",
|
|
@@ -783,17 +806,15 @@ var NODE_ORDER = {
|
|
|
783
806
|
"annotation",
|
|
784
807
|
"subtitle",
|
|
785
808
|
"animation"
|
|
786
|
-
]
|
|
787
|
-
output: ["download", "outputGallery", "imageCompare"],
|
|
788
|
-
composition: ["workflowRef", "workflowInput", "workflowOutput"]
|
|
809
|
+
]
|
|
789
810
|
};
|
|
790
811
|
function getNodesByCategory() {
|
|
791
812
|
const categories = {
|
|
792
|
-
input: [],
|
|
793
813
|
ai: [],
|
|
794
|
-
|
|
814
|
+
composition: [],
|
|
815
|
+
input: [],
|
|
795
816
|
output: [],
|
|
796
|
-
|
|
817
|
+
processing: []
|
|
797
818
|
};
|
|
798
819
|
for (const category of Object.keys(NODE_ORDER)) {
|
|
799
820
|
for (const nodeType of NODE_ORDER[category]) {
|
|
@@ -807,3 +828,5 @@ function getNodesByCategory() {
|
|
|
807
828
|
}
|
|
808
829
|
|
|
809
830
|
export { CONNECTION_RULES, HandleTypeEnum, KlingQuality, ModelCapabilityEnum, ModelUseCaseEnum, NODE_DEFINITIONS, NODE_ORDER, NodeCategoryEnum, NodeStatusEnum, NodeTypeEnum, ProcessingNodeType, ProviderTypeEnum, ReframeNodeType, UpscaleNodeType, WorkflowTemplateCategory, getNodesByCategory };
|
|
831
|
+
//# sourceMappingURL=chunk-ZMENGANG.mjs.map
|
|
832
|
+
//# sourceMappingURL=chunk-ZMENGANG.mjs.map
|