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