@sogni-ai/sogni-intelligence-client 3.25.4 → 3.26.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/dist/media/videoSettings.d.ts +2 -1
- package/dist/media/videoSettings.d.ts.map +1 -1
- package/dist/media/videoSettings.js +18 -1
- package/dist/media/videoSettings.js.map +1 -1
- package/dist/openai-tools/_manifests.generated.d.ts.map +1 -1
- package/dist/openai-tools/_manifests.generated.js +533 -116
- package/dist/openai-tools/_manifests.generated.js.map +1 -1
- package/dist/openai-tools/generation-tools.json +19 -16
- package/dist/public-skill-runtime/index.d.ts +15 -0
- package/dist/public-skill-runtime/index.d.ts.map +1 -1
- package/dist/public-skill-runtime/index.js +24 -3
- package/dist/public-skill-runtime/index.js.map +1 -1
- package/dist/schemas/tools/animate_photo.schema.json +5 -4
- package/dist/schemas/tools/generate_video.schema.json +7 -6
- package/dist/schemas/tools/sound_to_video.schema.json +7 -6
- package/dist/tools/definitions/animate-photo/definition.d.ts.map +1 -1
- package/dist/tools/definitions/animate-photo/definition.js +3 -2
- package/dist/tools/definitions/animate-photo/definition.js.map +1 -1
- package/dist/tools/definitions/generate-video/definition.d.ts.map +1 -1
- package/dist/tools/definitions/generate-video/definition.js +5 -4
- package/dist/tools/definitions/generate-video/definition.js.map +1 -1
- package/dist/tools/definitions/sound-to-video/definition.js +5 -5
- package/dist/tools/definitions/sound-to-video/definition.js.map +1 -1
- package/dist/tools/shared/modelRegistry.d.ts.map +1 -1
- package/dist/tools/shared/modelRegistry.js +3 -0
- package/dist/tools/shared/modelRegistry.js.map +1 -1
- package/dist/utils/videoModelIds.d.ts.map +1 -1
- package/dist/utils/videoModelIds.js +5 -0
- package/dist/utils/videoModelIds.js.map +1 -1
- package/dist-esm/media/videoSettings.js +17 -0
- package/dist-esm/media/videoSettings.js.map +1 -1
- package/dist-esm/openai-tools/_manifests.generated.js +533 -116
- package/dist-esm/openai-tools/_manifests.generated.js.map +1 -1
- package/dist-esm/openai-tools/generation-tools.json +19 -16
- package/dist-esm/public-skill-runtime/index.js +23 -2
- package/dist-esm/public-skill-runtime/index.js.map +1 -1
- package/dist-esm/schemas/tools/animate_photo.schema.json +5 -4
- package/dist-esm/schemas/tools/generate_video.schema.json +7 -6
- package/dist-esm/schemas/tools/sound_to_video.schema.json +7 -6
- package/dist-esm/tools/definitions/animate-photo/definition.js +3 -2
- package/dist-esm/tools/definitions/animate-photo/definition.js.map +1 -1
- package/dist-esm/tools/definitions/generate-video/definition.js +5 -4
- package/dist-esm/tools/definitions/generate-video/definition.js.map +1 -1
- package/dist-esm/tools/definitions/sound-to-video/definition.js +5 -5
- package/dist-esm/tools/definitions/sound-to-video/definition.js.map +1 -1
- package/dist-esm/tools/shared/modelRegistry.js +3 -0
- package/dist-esm/tools/shared/modelRegistry.js.map +1 -1
- package/dist-esm/utils/videoModelIds.js +5 -0
- package/dist-esm/utils/videoModelIds.js.map +1 -1
- package/package.json +3 -3
|
@@ -19,7 +19,14 @@ exports.appToolsManifest = {
|
|
|
19
19
|
},
|
|
20
20
|
"analysisType": {
|
|
21
21
|
"type": "string",
|
|
22
|
-
"enum": [
|
|
22
|
+
"enum": [
|
|
23
|
+
"describe",
|
|
24
|
+
"ocr",
|
|
25
|
+
"objects",
|
|
26
|
+
"document",
|
|
27
|
+
"compare",
|
|
28
|
+
"general"
|
|
29
|
+
],
|
|
23
30
|
"description": "Type of analysis. Use general when answering the user's specific question."
|
|
24
31
|
},
|
|
25
32
|
"sourceImageIndex": {
|
|
@@ -35,7 +42,9 @@ exports.appToolsManifest = {
|
|
|
35
42
|
"description": "Whether to provide a more detailed analysis."
|
|
36
43
|
}
|
|
37
44
|
},
|
|
38
|
-
"required": [
|
|
45
|
+
"required": [
|
|
46
|
+
"query"
|
|
47
|
+
]
|
|
39
48
|
}
|
|
40
49
|
}
|
|
41
50
|
},
|
|
@@ -53,7 +62,14 @@ exports.appToolsManifest = {
|
|
|
53
62
|
},
|
|
54
63
|
"analysisType": {
|
|
55
64
|
"type": "string",
|
|
56
|
-
"enum": [
|
|
65
|
+
"enum": [
|
|
66
|
+
"summary",
|
|
67
|
+
"timeline",
|
|
68
|
+
"scene",
|
|
69
|
+
"action",
|
|
70
|
+
"ocr",
|
|
71
|
+
"general"
|
|
72
|
+
],
|
|
57
73
|
"description": "Type of analysis. Use general when answering the user's specific question."
|
|
58
74
|
},
|
|
59
75
|
"sourceVideoIndex": {
|
|
@@ -65,7 +81,9 @@ exports.appToolsManifest = {
|
|
|
65
81
|
"description": "Whether to sample more context and provide a more detailed analysis."
|
|
66
82
|
}
|
|
67
83
|
},
|
|
68
|
-
"required": [
|
|
84
|
+
"required": [
|
|
85
|
+
"query"
|
|
86
|
+
]
|
|
69
87
|
}
|
|
70
88
|
}
|
|
71
89
|
},
|
|
@@ -79,7 +97,11 @@ exports.appToolsManifest = {
|
|
|
79
97
|
"properties": {
|
|
80
98
|
"mediaType": {
|
|
81
99
|
"type": "string",
|
|
82
|
-
"enum": [
|
|
100
|
+
"enum": [
|
|
101
|
+
"image",
|
|
102
|
+
"video",
|
|
103
|
+
"audio"
|
|
104
|
+
],
|
|
83
105
|
"description": "Media type to inspect. Omit when the available context makes it unambiguous."
|
|
84
106
|
},
|
|
85
107
|
"sourceImageIndex": {
|
|
@@ -119,7 +141,9 @@ exports.appToolsManifest = {
|
|
|
119
141
|
"description": "Short telemetry tag explaining why clarification is needed."
|
|
120
142
|
}
|
|
121
143
|
},
|
|
122
|
-
"required": [
|
|
144
|
+
"required": [
|
|
145
|
+
"question"
|
|
146
|
+
]
|
|
123
147
|
}
|
|
124
148
|
}
|
|
125
149
|
},
|
|
@@ -137,11 +161,19 @@ exports.appToolsManifest = {
|
|
|
137
161
|
},
|
|
138
162
|
"outcome": {
|
|
139
163
|
"type": "string",
|
|
140
|
-
"enum": [
|
|
164
|
+
"enum": [
|
|
165
|
+
"success",
|
|
166
|
+
"partial",
|
|
167
|
+
"asked_user",
|
|
168
|
+
"failed",
|
|
169
|
+
"no_action"
|
|
170
|
+
],
|
|
141
171
|
"description": "How the turn ended."
|
|
142
172
|
}
|
|
143
173
|
},
|
|
144
|
-
"required": [
|
|
174
|
+
"required": [
|
|
175
|
+
"outcome"
|
|
176
|
+
]
|
|
145
177
|
}
|
|
146
178
|
}
|
|
147
179
|
},
|
|
@@ -165,7 +197,11 @@ exports.appToolsManifest = {
|
|
|
165
197
|
},
|
|
166
198
|
"type": {
|
|
167
199
|
"type": "string",
|
|
168
|
-
"enum": [
|
|
200
|
+
"enum": [
|
|
201
|
+
"image",
|
|
202
|
+
"video",
|
|
203
|
+
"audio"
|
|
204
|
+
],
|
|
169
205
|
"description": "Asset media type."
|
|
170
206
|
},
|
|
171
207
|
"description": {
|
|
@@ -178,12 +214,16 @@ exports.appToolsManifest = {
|
|
|
178
214
|
},
|
|
179
215
|
"must_preserve": {
|
|
180
216
|
"type": "array",
|
|
181
|
-
"items": {
|
|
217
|
+
"items": {
|
|
218
|
+
"type": "string"
|
|
219
|
+
},
|
|
182
220
|
"description": "Features to preserve when regenerating from this asset."
|
|
183
221
|
},
|
|
184
222
|
"avoid": {
|
|
185
223
|
"type": "array",
|
|
186
|
-
"items": {
|
|
224
|
+
"items": {
|
|
225
|
+
"type": "string"
|
|
226
|
+
},
|
|
187
227
|
"description": "Features to avoid."
|
|
188
228
|
},
|
|
189
229
|
"asset_id": {
|
|
@@ -191,11 +231,16 @@ exports.appToolsManifest = {
|
|
|
191
231
|
"description": "Optional stable id override."
|
|
192
232
|
}
|
|
193
233
|
},
|
|
194
|
-
"required": [
|
|
234
|
+
"required": [
|
|
235
|
+
"user_label",
|
|
236
|
+
"type"
|
|
237
|
+
]
|
|
195
238
|
}
|
|
196
239
|
}
|
|
197
240
|
},
|
|
198
|
-
"required": [
|
|
241
|
+
"required": [
|
|
242
|
+
"assets"
|
|
243
|
+
]
|
|
199
244
|
}
|
|
200
245
|
}
|
|
201
246
|
},
|
|
@@ -241,12 +286,16 @@ exports.appToolsManifest = {
|
|
|
241
286
|
},
|
|
242
287
|
"must_preserve": {
|
|
243
288
|
"type": "array",
|
|
244
|
-
"items": {
|
|
289
|
+
"items": {
|
|
290
|
+
"type": "string"
|
|
291
|
+
},
|
|
245
292
|
"description": "Replacement preserve list."
|
|
246
293
|
},
|
|
247
294
|
"avoid": {
|
|
248
295
|
"type": "array",
|
|
249
|
-
"items": {
|
|
296
|
+
"items": {
|
|
297
|
+
"type": "string"
|
|
298
|
+
},
|
|
250
299
|
"description": "Replacement avoid list."
|
|
251
300
|
},
|
|
252
301
|
"url": {
|
|
@@ -254,7 +303,9 @@ exports.appToolsManifest = {
|
|
|
254
303
|
"description": "Replacement URL. Empty string clears it."
|
|
255
304
|
}
|
|
256
305
|
},
|
|
257
|
-
"required": [
|
|
306
|
+
"required": [
|
|
307
|
+
"asset_id"
|
|
308
|
+
]
|
|
258
309
|
}
|
|
259
310
|
}
|
|
260
311
|
},
|
|
@@ -271,7 +322,9 @@ exports.appToolsManifest = {
|
|
|
271
322
|
"description": "Target model identifier."
|
|
272
323
|
}
|
|
273
324
|
},
|
|
274
|
-
"required": [
|
|
325
|
+
"required": [
|
|
326
|
+
"model_id"
|
|
327
|
+
]
|
|
275
328
|
}
|
|
276
329
|
}
|
|
277
330
|
},
|
|
@@ -292,7 +345,10 @@ exports.appToolsManifest = {
|
|
|
292
345
|
"description": "Prompt text to validate."
|
|
293
346
|
}
|
|
294
347
|
},
|
|
295
|
-
"required": [
|
|
348
|
+
"required": [
|
|
349
|
+
"model_id",
|
|
350
|
+
"prompt"
|
|
351
|
+
]
|
|
296
352
|
}
|
|
297
353
|
}
|
|
298
354
|
}
|
|
@@ -316,18 +372,78 @@ exports.compositionToolsManifest = {
|
|
|
316
372
|
"parameters": {
|
|
317
373
|
"type": "object",
|
|
318
374
|
"additionalProperties": false,
|
|
319
|
-
"required": [
|
|
375
|
+
"required": [
|
|
376
|
+
"prompt",
|
|
377
|
+
"target_output",
|
|
378
|
+
"destination_model"
|
|
379
|
+
],
|
|
320
380
|
"properties": {
|
|
321
|
-
"prompt": {
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
"
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
381
|
+
"prompt": {
|
|
382
|
+
"type": "string",
|
|
383
|
+
"description": "The source prompt, rough idea, or prompt revision request to enhance."
|
|
384
|
+
},
|
|
385
|
+
"target_output": {
|
|
386
|
+
"type": "string",
|
|
387
|
+
"enum": [
|
|
388
|
+
"image_prompt",
|
|
389
|
+
"video_prompt",
|
|
390
|
+
"edit_prompt",
|
|
391
|
+
"model_prompt"
|
|
392
|
+
],
|
|
393
|
+
"description": "The model-specific prompt artifact to produce. Use model_prompt only when destination_model unambiguously identifies the modality."
|
|
394
|
+
},
|
|
395
|
+
"destination_model": {
|
|
396
|
+
"type": "string",
|
|
397
|
+
"description": "Required exact active destination model selector, such as seedance2, ltx25, ltx23, wan22, minimax-h3-turbo, qwen, gpt-image-2, krea-2-turbo, chroma-v46-flash, or sdxl. Unknown and sunset models fail closed."
|
|
398
|
+
},
|
|
399
|
+
"destination_tool": {
|
|
400
|
+
"type": "string",
|
|
401
|
+
"description": "Optional downstream generation tool, such as generate_image, edit_image, generate_video, animate_photo, sound_to_video, or video_to_video."
|
|
402
|
+
},
|
|
403
|
+
"prompting_type": {
|
|
404
|
+
"type": "string",
|
|
405
|
+
"enum": [
|
|
406
|
+
"flux",
|
|
407
|
+
"sdxl",
|
|
408
|
+
"sd15",
|
|
409
|
+
"pony",
|
|
410
|
+
"fast",
|
|
411
|
+
"sd3",
|
|
412
|
+
"editing",
|
|
413
|
+
"video"
|
|
414
|
+
],
|
|
415
|
+
"description": "Deprecated compatibility metadata. It never selects or overrides the prompt grammar; destination_model is authoritative."
|
|
416
|
+
},
|
|
417
|
+
"model_title": {
|
|
418
|
+
"type": "string",
|
|
419
|
+
"description": "Deprecated compatibility label. It never selects or overrides the prompt grammar; destination_model is authoritative."
|
|
420
|
+
},
|
|
421
|
+
"style_prompt": {
|
|
422
|
+
"type": "string",
|
|
423
|
+
"description": "Optional current style, brand, or prompt context to complement without repeating."
|
|
424
|
+
},
|
|
425
|
+
"prompt_mode": {
|
|
426
|
+
"type": "string",
|
|
427
|
+
"enum": [
|
|
428
|
+
"auto",
|
|
429
|
+
"preserve",
|
|
430
|
+
"expand",
|
|
431
|
+
"compress",
|
|
432
|
+
"validate",
|
|
433
|
+
"payload"
|
|
434
|
+
],
|
|
435
|
+
"description": "Optional model prompt adaptation mode."
|
|
436
|
+
},
|
|
437
|
+
"duration_seconds": {
|
|
438
|
+
"type": "number",
|
|
439
|
+
"minimum": 1,
|
|
440
|
+
"maximum": 300,
|
|
441
|
+
"description": "Requested runtime when authoring a video prompt."
|
|
442
|
+
},
|
|
443
|
+
"aspect_ratio": {
|
|
444
|
+
"type": "string",
|
|
445
|
+
"description": "Optional target aspect ratio, such as 16:9, 9:16, 1:1, 4:5, or 21:9."
|
|
446
|
+
},
|
|
331
447
|
"assets": {
|
|
332
448
|
"type": "array",
|
|
333
449
|
"maxItems": 50,
|
|
@@ -335,17 +451,47 @@ exports.compositionToolsManifest = {
|
|
|
335
451
|
"items": {
|
|
336
452
|
"type": "object",
|
|
337
453
|
"additionalProperties": false,
|
|
338
|
-
"required": [
|
|
454
|
+
"required": [
|
|
455
|
+
"media_type"
|
|
456
|
+
],
|
|
339
457
|
"properties": {
|
|
340
|
-
"id": {
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
"
|
|
344
|
-
|
|
458
|
+
"id": {
|
|
459
|
+
"type": "string"
|
|
460
|
+
},
|
|
461
|
+
"label": {
|
|
462
|
+
"type": "string"
|
|
463
|
+
},
|
|
464
|
+
"media_type": {
|
|
465
|
+
"type": "string",
|
|
466
|
+
"enum": [
|
|
467
|
+
"image",
|
|
468
|
+
"video",
|
|
469
|
+
"audio"
|
|
470
|
+
]
|
|
471
|
+
},
|
|
472
|
+
"role": {
|
|
473
|
+
"type": "string",
|
|
474
|
+
"enum": [
|
|
475
|
+
"first_frame",
|
|
476
|
+
"last_frame",
|
|
477
|
+
"reference",
|
|
478
|
+
"identity",
|
|
479
|
+
"style",
|
|
480
|
+
"motion",
|
|
481
|
+
"audio",
|
|
482
|
+
"source_video"
|
|
483
|
+
]
|
|
484
|
+
},
|
|
485
|
+
"url": {
|
|
486
|
+
"type": "string"
|
|
487
|
+
}
|
|
345
488
|
}
|
|
346
489
|
}
|
|
347
490
|
},
|
|
348
|
-
"constraints": {
|
|
491
|
+
"constraints": {
|
|
492
|
+
"type": "object",
|
|
493
|
+
"description": "Optional production, brand, model, or user constraints to preserve."
|
|
494
|
+
}
|
|
349
495
|
}
|
|
350
496
|
}
|
|
351
497
|
}
|
|
@@ -358,12 +504,28 @@ exports.compositionToolsManifest = {
|
|
|
358
504
|
"parameters": {
|
|
359
505
|
"type": "object",
|
|
360
506
|
"additionalProperties": false,
|
|
361
|
-
"required": [
|
|
507
|
+
"required": [
|
|
508
|
+
"prompt"
|
|
509
|
+
],
|
|
362
510
|
"properties": {
|
|
363
|
-
"prompt": {
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
511
|
+
"prompt": {
|
|
512
|
+
"type": "string",
|
|
513
|
+
"description": "The song topic, mood, genre, scene, campaign, or lyric request."
|
|
514
|
+
},
|
|
515
|
+
"language": {
|
|
516
|
+
"type": "string",
|
|
517
|
+
"description": "Optional language code or language name for the lyrics."
|
|
518
|
+
},
|
|
519
|
+
"music_prompt": {
|
|
520
|
+
"type": "string",
|
|
521
|
+
"description": "Optional musical style context, genre, instrumentation, mood, or production direction."
|
|
522
|
+
},
|
|
523
|
+
"duration_seconds": {
|
|
524
|
+
"type": "number",
|
|
525
|
+
"minimum": 10,
|
|
526
|
+
"maximum": 600,
|
|
527
|
+
"description": "Optional desired song duration in seconds."
|
|
528
|
+
}
|
|
367
529
|
}
|
|
368
530
|
}
|
|
369
531
|
}
|
|
@@ -376,11 +538,24 @@ exports.compositionToolsManifest = {
|
|
|
376
538
|
"parameters": {
|
|
377
539
|
"type": "object",
|
|
378
540
|
"additionalProperties": false,
|
|
379
|
-
"required": [
|
|
541
|
+
"required": [
|
|
542
|
+
"prompt"
|
|
543
|
+
],
|
|
380
544
|
"properties": {
|
|
381
|
-
"prompt": {
|
|
382
|
-
|
|
383
|
-
|
|
545
|
+
"prompt": {
|
|
546
|
+
"type": "string",
|
|
547
|
+
"description": "The instrumental music topic, mood, genre, scene, campaign, or composition request."
|
|
548
|
+
},
|
|
549
|
+
"music_prompt": {
|
|
550
|
+
"type": "string",
|
|
551
|
+
"description": "Optional musical style context, instrumentation, mood, or production direction."
|
|
552
|
+
},
|
|
553
|
+
"duration_seconds": {
|
|
554
|
+
"type": "number",
|
|
555
|
+
"minimum": 10,
|
|
556
|
+
"maximum": 600,
|
|
557
|
+
"description": "Optional desired track duration in seconds."
|
|
558
|
+
}
|
|
384
559
|
}
|
|
385
560
|
}
|
|
386
561
|
}
|
|
@@ -393,21 +568,82 @@ exports.compositionToolsManifest = {
|
|
|
393
568
|
"parameters": {
|
|
394
569
|
"type": "object",
|
|
395
570
|
"additionalProperties": false,
|
|
396
|
-
"required": [
|
|
571
|
+
"required": [
|
|
572
|
+
"brief"
|
|
573
|
+
],
|
|
397
574
|
"properties": {
|
|
398
|
-
"brief": {
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
"
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
575
|
+
"brief": {
|
|
576
|
+
"type": "string",
|
|
577
|
+
"description": "The creative writing brief, story idea, product concept, video idea, or revision request."
|
|
578
|
+
},
|
|
579
|
+
"script_type": {
|
|
580
|
+
"type": "string",
|
|
581
|
+
"enum": [
|
|
582
|
+
"video_prompt",
|
|
583
|
+
"screenplay",
|
|
584
|
+
"storyboard",
|
|
585
|
+
"ad_script",
|
|
586
|
+
"trailer",
|
|
587
|
+
"social_short",
|
|
588
|
+
"talking_head",
|
|
589
|
+
"campaign",
|
|
590
|
+
"revision"
|
|
591
|
+
],
|
|
592
|
+
"description": "The kind of script or creative writing artifact to produce."
|
|
593
|
+
},
|
|
594
|
+
"destination_model": {
|
|
595
|
+
"type": "string",
|
|
596
|
+
"description": "Optional destination video model selector, such as ltx23, wan22, or seedance2."
|
|
597
|
+
},
|
|
598
|
+
"destination_tool": {
|
|
599
|
+
"type": "string",
|
|
600
|
+
"description": "Optional downstream tool, such as generate_video, animate_photo, sound_to_video, or video_to_video."
|
|
601
|
+
},
|
|
602
|
+
"duration_seconds": {
|
|
603
|
+
"type": "number",
|
|
604
|
+
"minimum": 1,
|
|
605
|
+
"maximum": 300,
|
|
606
|
+
"description": "Requested runtime for a video prompt, social short, ad, or talking-head script."
|
|
607
|
+
},
|
|
608
|
+
"scene_count": {
|
|
609
|
+
"type": "integer",
|
|
610
|
+
"minimum": 1,
|
|
611
|
+
"maximum": 12,
|
|
612
|
+
"description": "Requested number of scenes, shots, beats, or storyboard panels."
|
|
613
|
+
},
|
|
614
|
+
"aspect_ratio": {
|
|
615
|
+
"type": "string",
|
|
616
|
+
"description": "Optional target aspect ratio, such as 16:9, 9:16, 1:1, 4:5, or 21:9."
|
|
617
|
+
},
|
|
618
|
+
"platform": {
|
|
619
|
+
"type": "string",
|
|
620
|
+
"description": "Optional target platform or context, such as TikTok, YouTube Shorts, Instagram Reels, broadcast, landing page, game trailer, or pitch deck."
|
|
621
|
+
},
|
|
622
|
+
"style": {
|
|
623
|
+
"type": "string",
|
|
624
|
+
"description": "Optional style, genre, tone, visual treatment, or brand voice to preserve."
|
|
625
|
+
},
|
|
626
|
+
"first_frame_description": {
|
|
627
|
+
"type": "string",
|
|
628
|
+
"description": "Optional description of the starting frame when composing an image-to-video prompt without attached vision content."
|
|
629
|
+
},
|
|
630
|
+
"first_frame_data_url": {
|
|
631
|
+
"type": "string",
|
|
632
|
+
"description": "Optional inline image data URI for the starting frame when composing an image-to-video or first-frame video prompt."
|
|
633
|
+
},
|
|
634
|
+
"last_frame_data_url": {
|
|
635
|
+
"type": "string",
|
|
636
|
+
"description": "Optional inline image data URI for the ending frame when composing an image-to-video transition prompt."
|
|
637
|
+
},
|
|
638
|
+
"return_format": {
|
|
639
|
+
"type": "string",
|
|
640
|
+
"enum": [
|
|
641
|
+
"script",
|
|
642
|
+
"markdown",
|
|
643
|
+
"json"
|
|
644
|
+
],
|
|
645
|
+
"description": "Requested output format. Use script unless structured planning output is explicitly needed."
|
|
646
|
+
}
|
|
411
647
|
}
|
|
412
648
|
}
|
|
413
649
|
}
|
|
@@ -420,25 +656,76 @@ exports.compositionToolsManifest = {
|
|
|
420
656
|
"parameters": {
|
|
421
657
|
"type": "object",
|
|
422
658
|
"additionalProperties": false,
|
|
423
|
-
"required": [
|
|
659
|
+
"required": [
|
|
660
|
+
"brief"
|
|
661
|
+
],
|
|
424
662
|
"properties": {
|
|
425
|
-
"brief": {
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
"
|
|
663
|
+
"brief": {
|
|
664
|
+
"type": "string",
|
|
665
|
+
"description": "Creative brief describing what the workflow should produce. Free-form natural language. Required."
|
|
666
|
+
},
|
|
667
|
+
"scene_count": {
|
|
668
|
+
"type": "integer",
|
|
669
|
+
"minimum": 1,
|
|
670
|
+
"maximum": 12,
|
|
671
|
+
"description": "Suggested number of distinct shots/scenes. The planner may produce more steps than scenes (e.g., keyframe + clip per scene)."
|
|
672
|
+
},
|
|
673
|
+
"duration_seconds": {
|
|
674
|
+
"type": "number",
|
|
675
|
+
"minimum": 1,
|
|
676
|
+
"maximum": 120,
|
|
677
|
+
"description": "Target total duration in seconds for video-bearing plans."
|
|
678
|
+
},
|
|
679
|
+
"aspect_ratio": {
|
|
680
|
+
"type": "string",
|
|
681
|
+
"enum": [
|
|
682
|
+
"1:1",
|
|
683
|
+
"4:3",
|
|
684
|
+
"3:4",
|
|
685
|
+
"16:9",
|
|
686
|
+
"9:16",
|
|
687
|
+
"21:9"
|
|
688
|
+
],
|
|
689
|
+
"description": "Output aspect ratio."
|
|
690
|
+
},
|
|
691
|
+
"style": {
|
|
692
|
+
"type": "string",
|
|
693
|
+
"description": "Optional stylistic guidance (e.g., 'cinematic, neon, low-key', 'whiteboard illustration')."
|
|
694
|
+
},
|
|
430
695
|
"destination_models": {
|
|
431
696
|
"type": "object",
|
|
432
697
|
"additionalProperties": false,
|
|
433
698
|
"properties": {
|
|
434
|
-
"image": {
|
|
435
|
-
|
|
436
|
-
|
|
699
|
+
"image": {
|
|
700
|
+
"type": "string",
|
|
701
|
+
"description": "Preferred image model (e.g., 'gpt-image-2', 'qwen')."
|
|
702
|
+
},
|
|
703
|
+
"video": {
|
|
704
|
+
"type": "string",
|
|
705
|
+
"description": "Preferred video model (e.g., 'ltx23', 'wan22', 'seedance2')."
|
|
706
|
+
},
|
|
707
|
+
"music": {
|
|
708
|
+
"type": "string",
|
|
709
|
+
"description": "Preferred music model."
|
|
710
|
+
}
|
|
437
711
|
}
|
|
438
712
|
},
|
|
439
|
-
"max_estimated_capacity_units": {
|
|
440
|
-
|
|
441
|
-
|
|
713
|
+
"max_estimated_capacity_units": {
|
|
714
|
+
"type": "integer",
|
|
715
|
+
"minimum": 1,
|
|
716
|
+
"description": "If set, the planner attempts to keep total estimated cost at or below this value and returns `fits_budget: false` if it cannot."
|
|
717
|
+
},
|
|
718
|
+
"include_audio": {
|
|
719
|
+
"type": "boolean",
|
|
720
|
+
"description": "If true, include a music generation step. Defaults to false."
|
|
721
|
+
},
|
|
722
|
+
"return_format": {
|
|
723
|
+
"type": "string",
|
|
724
|
+
"enum": [
|
|
725
|
+
"json"
|
|
726
|
+
],
|
|
727
|
+
"description": "Currently `json` is the only supported value. Reserved for future."
|
|
728
|
+
}
|
|
442
729
|
}
|
|
443
730
|
}
|
|
444
731
|
}
|
|
@@ -451,13 +738,47 @@ exports.compositionToolsManifest = {
|
|
|
451
738
|
"parameters": {
|
|
452
739
|
"type": "object",
|
|
453
740
|
"additionalProperties": false,
|
|
454
|
-
"required": [
|
|
741
|
+
"required": [
|
|
742
|
+
"brief",
|
|
743
|
+
"name"
|
|
744
|
+
],
|
|
455
745
|
"properties": {
|
|
456
|
-
"brief": {
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
"
|
|
746
|
+
"brief": {
|
|
747
|
+
"type": "string",
|
|
748
|
+
"description": "Creative brief describing what the workflow should produce. Free-form natural language. Required."
|
|
749
|
+
},
|
|
750
|
+
"name": {
|
|
751
|
+
"type": "string",
|
|
752
|
+
"minLength": 1,
|
|
753
|
+
"maxLength": 200,
|
|
754
|
+
"description": "Human-readable template name (e.g. \"My Plastic Dream — TikTok/Reels\"). Required."
|
|
755
|
+
},
|
|
756
|
+
"description": {
|
|
757
|
+
"type": "string",
|
|
758
|
+
"description": "Optional template description. If omitted, the planner may derive one from the brief."
|
|
759
|
+
},
|
|
760
|
+
"category": {
|
|
761
|
+
"type": "string",
|
|
762
|
+
"enum": [
|
|
763
|
+
"portrait",
|
|
764
|
+
"video-social",
|
|
765
|
+
"makeover",
|
|
766
|
+
"cinematic",
|
|
767
|
+
"music",
|
|
768
|
+
"analysis",
|
|
769
|
+
"custom",
|
|
770
|
+
"other"
|
|
771
|
+
],
|
|
772
|
+
"description": "Optional category for surfacing the template in the library. Defaults to 'custom' when omitted."
|
|
773
|
+
},
|
|
774
|
+
"visibility": {
|
|
775
|
+
"type": "string",
|
|
776
|
+
"enum": [
|
|
777
|
+
"private",
|
|
778
|
+
"public"
|
|
779
|
+
],
|
|
780
|
+
"description": "Persistence visibility. Defaults to 'private'. The 'team' visibility is reserved for a later milestone."
|
|
781
|
+
},
|
|
461
782
|
"inputs": {
|
|
462
783
|
"type": "array",
|
|
463
784
|
"maxItems": 16,
|
|
@@ -465,56 +786,149 @@ exports.compositionToolsManifest = {
|
|
|
465
786
|
"items": {
|
|
466
787
|
"type": "object",
|
|
467
788
|
"additionalProperties": false,
|
|
468
|
-
"required": [
|
|
789
|
+
"required": [
|
|
790
|
+
"name",
|
|
791
|
+
"type"
|
|
792
|
+
],
|
|
469
793
|
"properties": {
|
|
470
|
-
"name": {
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
794
|
+
"name": {
|
|
795
|
+
"type": "string",
|
|
796
|
+
"minLength": 1,
|
|
797
|
+
"maxLength": 64,
|
|
798
|
+
"description": "Input name; used as the placeholder key (e.g. $inputs.motion_source_video)."
|
|
799
|
+
},
|
|
800
|
+
"type": {
|
|
801
|
+
"type": "string",
|
|
802
|
+
"enum": [
|
|
803
|
+
"image",
|
|
804
|
+
"audio",
|
|
805
|
+
"video",
|
|
806
|
+
"text",
|
|
807
|
+
"number",
|
|
808
|
+
"select",
|
|
809
|
+
"boolean"
|
|
810
|
+
],
|
|
811
|
+
"description": "Input value type. URL string for image/audio/video; primitive for the rest."
|
|
812
|
+
},
|
|
813
|
+
"required": {
|
|
814
|
+
"type": "boolean",
|
|
815
|
+
"description": "Whether the input must be supplied at run time. Defaults to false."
|
|
816
|
+
},
|
|
817
|
+
"description": {
|
|
818
|
+
"type": "string",
|
|
819
|
+
"description": "Human-readable description shown in the launcher UI."
|
|
820
|
+
},
|
|
821
|
+
"default": {
|
|
822
|
+
"description": "Optional default value. Type must match `type`."
|
|
823
|
+
},
|
|
475
824
|
"options": {
|
|
476
825
|
"type": "array",
|
|
477
826
|
"description": "Allowed enum values for `select` inputs.",
|
|
478
827
|
"items": {
|
|
479
828
|
"type": "object",
|
|
480
829
|
"additionalProperties": false,
|
|
481
|
-
"required": [
|
|
830
|
+
"required": [
|
|
831
|
+
"value",
|
|
832
|
+
"label"
|
|
833
|
+
],
|
|
482
834
|
"properties": {
|
|
483
|
-
"value": {
|
|
484
|
-
|
|
835
|
+
"value": {
|
|
836
|
+
"type": "string"
|
|
837
|
+
},
|
|
838
|
+
"label": {
|
|
839
|
+
"type": "string"
|
|
840
|
+
}
|
|
485
841
|
}
|
|
486
842
|
}
|
|
487
843
|
},
|
|
488
844
|
"multiple": {
|
|
489
845
|
"type": "object",
|
|
490
846
|
"additionalProperties": false,
|
|
491
|
-
"required": [
|
|
847
|
+
"required": [
|
|
848
|
+
"min",
|
|
849
|
+
"max"
|
|
850
|
+
],
|
|
492
851
|
"description": "Set when the input accepts an array of values.",
|
|
493
852
|
"properties": {
|
|
494
|
-
"min": {
|
|
495
|
-
|
|
853
|
+
"min": {
|
|
854
|
+
"type": "integer",
|
|
855
|
+
"minimum": 0
|
|
856
|
+
},
|
|
857
|
+
"max": {
|
|
858
|
+
"type": "integer",
|
|
859
|
+
"minimum": 1
|
|
860
|
+
}
|
|
496
861
|
}
|
|
497
862
|
},
|
|
498
|
-
"internal": {
|
|
863
|
+
"internal": {
|
|
864
|
+
"type": "boolean",
|
|
865
|
+
"description": "Internal inputs are seeded at run-create time and hidden from the launcher UI."
|
|
866
|
+
}
|
|
499
867
|
}
|
|
500
868
|
}
|
|
501
869
|
},
|
|
502
|
-
"scene_count": {
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
870
|
+
"scene_count": {
|
|
871
|
+
"type": "integer",
|
|
872
|
+
"minimum": 1,
|
|
873
|
+
"maximum": 12,
|
|
874
|
+
"description": "Suggested number of distinct shots/scenes. The planner may produce more steps than scenes (e.g., keyframe + clip per scene)."
|
|
875
|
+
},
|
|
876
|
+
"duration_seconds": {
|
|
877
|
+
"type": "number",
|
|
878
|
+
"minimum": 1,
|
|
879
|
+
"maximum": 120,
|
|
880
|
+
"description": "Target total duration in seconds for video-bearing plans."
|
|
881
|
+
},
|
|
882
|
+
"aspect_ratio": {
|
|
883
|
+
"type": "string",
|
|
884
|
+
"enum": [
|
|
885
|
+
"1:1",
|
|
886
|
+
"4:3",
|
|
887
|
+
"3:4",
|
|
888
|
+
"16:9",
|
|
889
|
+
"9:16",
|
|
890
|
+
"21:9"
|
|
891
|
+
],
|
|
892
|
+
"description": "Output aspect ratio."
|
|
893
|
+
},
|
|
894
|
+
"style": {
|
|
895
|
+
"type": "string",
|
|
896
|
+
"description": "Optional stylistic guidance (e.g., 'cinematic, neon, low-key', 'whiteboard illustration')."
|
|
897
|
+
},
|
|
506
898
|
"destination_models": {
|
|
507
899
|
"type": "object",
|
|
508
900
|
"additionalProperties": false,
|
|
509
901
|
"properties": {
|
|
510
|
-
"image": {
|
|
511
|
-
|
|
512
|
-
|
|
902
|
+
"image": {
|
|
903
|
+
"type": "string",
|
|
904
|
+
"description": "Preferred image model (e.g., 'gpt-image-2', 'qwen')."
|
|
905
|
+
},
|
|
906
|
+
"video": {
|
|
907
|
+
"type": "string",
|
|
908
|
+
"description": "Preferred video model (e.g., 'ltx23', 'wan22', 'seedance2')."
|
|
909
|
+
},
|
|
910
|
+
"music": {
|
|
911
|
+
"type": "string",
|
|
912
|
+
"description": "Preferred music model."
|
|
913
|
+
}
|
|
513
914
|
}
|
|
514
915
|
},
|
|
515
|
-
"max_estimated_capacity_units": {
|
|
516
|
-
|
|
517
|
-
|
|
916
|
+
"max_estimated_capacity_units": {
|
|
917
|
+
"type": "integer",
|
|
918
|
+
"minimum": 1,
|
|
919
|
+
"description": "If set, the planner attempts to keep total estimated cost at or below this value and returns `fits_budget: false` if it cannot."
|
|
920
|
+
},
|
|
921
|
+
"include_audio": {
|
|
922
|
+
"type": "boolean",
|
|
923
|
+
"description": "If true, include a music generation step. Defaults to false."
|
|
924
|
+
},
|
|
925
|
+
"return_format": {
|
|
926
|
+
"type": "string",
|
|
927
|
+
"enum": [
|
|
928
|
+
"json"
|
|
929
|
+
],
|
|
930
|
+
"description": "Currently `json` is the only supported value. Reserved for future."
|
|
931
|
+
},
|
|
518
932
|
"existing_template": {
|
|
519
933
|
"type": "object",
|
|
520
934
|
"additionalProperties": true,
|
|
@@ -681,7 +1095,7 @@ exports.generationToolsManifest = {
|
|
|
681
1095
|
"type": "function",
|
|
682
1096
|
"function": {
|
|
683
1097
|
"name": "generate_video",
|
|
684
|
-
"description": "Generate a video from text or Seedance multimodal references. LTX 2.5 is the default and generates audio natively; LTX 2.3 remains available as rollback and also generates audio natively (dialogue, sounds, ambient music) — describe audio in the prompt. If the user provides exact speech, include it in double quotes; if they only imply speech, describe the performance and voice without inventing quoted words. Never use placeholders such as \"while speaking\", \"dialogue begins\", \"explaining\", or \"final line lands\". PERSONA VOICE: Only when the user explicitly asks to use/clone a registered persona voice clip, call resolve_personas first, then set voicePersonaName to select which persona's voice clip to use. Do not set voicePersonaName for ordinary character dialogue or inferred voices; describe those voices in the prompt for native LTX audio. For cross-persona narration (e.g. David narrates a video of Aleyna), resolve both personas and set voicePersonaName to the narrator only if that registered voice was requested. Persona voice requires ltx23 because LTX 2.5 has no compatible ID-LoRA and WAN 2.2 does not support voice identity. For non-Seedance syncing to a specific song or audio track, use sound_to_video instead. For non-Seedance animation from a locked source photo, use animate_photo. Do NOT use for My Personas unless generating a Seedance reference-based video — standard persona videos use resolve_personas → edit_image → animate_photo. SEEDANCE DEFAULT: For seedance2, seedance2-mini, or seedance2-5, default to exactly one video (4-15s on 2.0/Mini, 4-30s on seedance2-5) unless the user explicitly asks for multiple separate outputs. Multiple beats, shots, or scene descriptions in one up-to-15s Seedance prompt are still one video. If the user requests one continuous Seedance video longer than 15s, prefer seedance2-5, which renders up to 30s in a single call; beyond 30s (or on 2.0/Mini) preserve the requested total duration in the prompt/context and let chat orchestration split it into supported segment renders and stitch them instead of clamping it to a short excerpt. Uploaded/generated storyboard, shot-sheet, or trailer-concept images used as Seedance references should become one Seedance generate_video call by default; do not extract panels with edit_image and do not animate the storyboard sheet with LTX unless the user explicitly asks for separate non-Seedance clips. Seedance loose image, video, and audio references go through this tool; do not use animate_photo sourceImageIndex/frameRole/endImageIndex for Seedance. If an uploaded video is the source clip to transform, upscale, enhance, restyle, or remaster, use video_to_video with controlMode=\"seedance-v2v\" instead of generate_video referenceVideoIndices. If the uploaded audio is the primary sync target, lip-sync target, or requested as sound-to-video/audio-sync, use sound_to_video with videoModel=\"seedance2-mini\" instead of this tool unless the user asks for full Seedance. Use referenceAudioIndices here only when audio is a loose reference under an image/video-anchored Seedance shot. For Seedance, every image — first frame, last frame, or loose reference — is passed through referenceImageIndices (auto-uploaded as referenceImageUrls). Anchor frame intent in the prompt with @Image tags such as \"Use @Image1 as the opening shot reference. Begin the video with a composition, subject placement, lighting, mood, and camera framing that closely match @Image1.\" (or @Image2 as the final shot reference). For seamless-loop or \"first frame and last frame identical\" requests with a single uploaded image, anchor it explicitly as both: \"Use @Image1 as both the first frame and last frame so the video loops cleanly back to the opening composition.\" Assign each useful @Image/@Video/@Audio tag a role. APPROVED STORYBOARD PRODUCTION: When the user asks for a production workflow from an approved storyboard, the chat orchestrator should use the durable CampaignStoryboard contract: render the composite board, audit it, generate per-scene GPT Image 2 keyframes, then render Seedance scene clips and stitch them. Do not replace that with a generic storyboard-reference video unless the user asks for a fast draft. PARTIAL VIDEO EDITS: Do NOT call generate_video to re-render an existing rendered/uploaded video just to change part of it (the bumper, the intro, the end card, a single scene, the last few seconds, etc.). Use replace_video_segment for that — it preserves the unchanged portion, keeps the original audio outside the replaced window, and costs far less. Likewise use extend_video to add new time to the end without rewriting the rest. If the request is vague, ask about vision/mood/style first. Only call once you have clear creative intent. WAN 3 uses the exact selector wan3.0-video: use this tool for text-to-video or loose Image 1/Video 1/Audio 1 references; use animate_photo for native first/last frames and sound_to_video when audio drives timing. A Wan 3 video reference conditions a new generation; it does not invoke a provider-backed edit or extend mode.",
|
|
1098
|
+
"description": "Generate a video from text or Seedance multimodal references. LTX 2.5 is the default and generates audio natively; LTX 2.3 remains available as rollback and also generates audio natively (dialogue, sounds, ambient music) — describe audio in the prompt. If the user provides exact speech, include it in double quotes; if they only imply speech, describe the performance and voice without inventing quoted words. Never use placeholders such as \"while speaking\", \"dialogue begins\", \"explaining\", or \"final line lands\". PERSONA VOICE: Only when the user explicitly asks to use/clone a registered persona voice clip, call resolve_personas first, then set voicePersonaName to select which persona's voice clip to use. Do not set voicePersonaName for ordinary character dialogue or inferred voices; describe those voices in the prompt for native LTX audio. For cross-persona narration (e.g. David narrates a video of Aleyna), resolve both personas and set voicePersonaName to the narrator only if that registered voice was requested. Persona voice requires ltx23 because LTX 2.5 has no compatible ID-LoRA and WAN 2.2 does not support voice identity. For non-Seedance syncing to a specific song or audio track, use sound_to_video instead. For non-Seedance animation from a locked source photo, use animate_photo. Do NOT use for My Personas unless generating a Seedance reference-based video — standard persona videos use resolve_personas → edit_image → animate_photo. SEEDANCE DEFAULT: For seedance2, seedance2-mini, or seedance2-5, default to exactly one video (4-15s on 2.0/Mini, 4-30s on seedance2-5) unless the user explicitly asks for multiple separate outputs. Multiple beats, shots, or scene descriptions in one up-to-15s Seedance prompt are still one video. If the user requests one continuous Seedance video longer than 15s, prefer seedance2-5, which renders up to 30s in a single call; beyond 30s (or on 2.0/Mini) preserve the requested total duration in the prompt/context and let chat orchestration split it into supported segment renders and stitch them instead of clamping it to a short excerpt. Uploaded/generated storyboard, shot-sheet, or trailer-concept images used as Seedance references should become one Seedance generate_video call by default; do not extract panels with edit_image and do not animate the storyboard sheet with LTX unless the user explicitly asks for separate non-Seedance clips. Seedance loose image, video, and audio references go through this tool; do not use animate_photo sourceImageIndex/frameRole/endImageIndex for Seedance. If an uploaded video is the source clip to transform, upscale, enhance, restyle, or remaster, use video_to_video with controlMode=\"seedance-v2v\" instead of generate_video referenceVideoIndices. If the uploaded audio is the primary sync target, lip-sync target, or requested as sound-to-video/audio-sync, use sound_to_video with videoModel=\"seedance2-mini\" instead of this tool unless the user asks for full Seedance. Use referenceAudioIndices here only when audio is a loose reference under an image/video-anchored Seedance shot. For Seedance, every image — first frame, last frame, or loose reference — is passed through referenceImageIndices (auto-uploaded as referenceImageUrls). Anchor frame intent in the prompt with @Image tags such as \"Use @Image1 as the opening shot reference. Begin the video with a composition, subject placement, lighting, mood, and camera framing that closely match @Image1.\" (or @Image2 as the final shot reference). For seamless-loop or \"first frame and last frame identical\" requests with a single uploaded image, anchor it explicitly as both: \"Use @Image1 as both the first frame and last frame so the video loops cleanly back to the opening composition.\" Assign each useful @Image/@Video/@Audio tag a role. APPROVED STORYBOARD PRODUCTION: When the user asks for a production workflow from an approved storyboard, the chat orchestrator should use the durable CampaignStoryboard contract: render the composite board, audit it, generate per-scene GPT Image 2 keyframes, then render Seedance scene clips and stitch them. Do not replace that with a generic storyboard-reference video unless the user asks for a fast draft. PARTIAL VIDEO EDITS: Do NOT call generate_video to re-render an existing rendered/uploaded video just to change part of it (the bumper, the intro, the end card, a single scene, the last few seconds, etc.). Use replace_video_segment for that — it preserves the unchanged portion, keeps the original audio outside the replaced window, and costs far less. Likewise use extend_video to add new time to the end without rewriting the rest. If the request is vague, ask about vision/mood/style first. Only call once you have clear creative intent. WAN 3 uses the exact selector wan3.0-video: use this tool for text-to-video or loose Image 1/Video 1/Audio 1 references; use animate_photo for native first/last frames and sound_to_video when audio drives timing. A Wan 3 video reference conditions a new generation; it does not invoke a provider-backed edit or extend mode. Wan 3.0 Enhanced uses Sogni selector wan3.0-spicy-video and MuleRouter provider ID w3.0-video; use this tool for prompt-only or loose-reference generation, and never combine loose references with frame anchors.",
|
|
685
1099
|
"parameters": {
|
|
686
1100
|
"type": "object",
|
|
687
1101
|
"properties": {
|
|
@@ -721,15 +1135,15 @@ exports.generationToolsManifest = {
|
|
|
721
1135
|
},
|
|
722
1136
|
"watermark": {
|
|
723
1137
|
"type": "boolean",
|
|
724
|
-
"description": "
|
|
1138
|
+
"description": "Alibaba wan3.0-video only. Add the visible watermark. Defaults to false."
|
|
725
1139
|
},
|
|
726
1140
|
"referenceFileUrl": {
|
|
727
1141
|
"type": "string",
|
|
728
|
-
"description": "
|
|
1142
|
+
"description": "Alibaba wan3.0-video only. One public HTTPS document URL for context (DOCX/DOC/XLSX/XLS/PPTX/PPT/PDF/TXT/KEY/PAGES/NUMBERS/Markdown, up to 100 MB; PDF/DOCX/DOC/PPTX/PPT/KEY/PAGES up to 50 pages). Mutually exclusive with referenceLinkUrl and first/last-frame inputs."
|
|
729
1143
|
},
|
|
730
1144
|
"referenceLinkUrl": {
|
|
731
1145
|
"type": "string",
|
|
732
|
-
"description": "
|
|
1146
|
+
"description": "Alibaba wan3.0-video only. One public HTTPS webpage URL for context. Mutually exclusive with referenceFileUrl and first/last-frame inputs."
|
|
733
1147
|
},
|
|
734
1148
|
"negativePrompt": {
|
|
735
1149
|
"type": "string",
|
|
@@ -751,9 +1165,10 @@ exports.generationToolsManifest = {
|
|
|
751
1165
|
"happyhorse-1.1-r2v",
|
|
752
1166
|
"minimax-h3-r2v",
|
|
753
1167
|
"minimax-h3-r2v-turbo",
|
|
754
|
-
"wan3.0-video"
|
|
1168
|
+
"wan3.0-video",
|
|
1169
|
+
"wan3.0-spicy-video"
|
|
755
1170
|
],
|
|
756
|
-
"description": "\"ltx25\" (default): LTX 2.5 with native audio; Fast, HQ, and Pro currently use the release-validated official Distilled INT8 workflow. The Dev checkpoints are not publicly routed until upstream publishes and Sogni validates an official ComfyUI Dev recipe. Video model. \"ltx23\": LTX 2.3 rollback with native audio. \"wan22\": quick simple motion without audio. \"minimax-h3-t2v\": standard 20-step MiniMax H3 text-to-video; \"minimax-h3-t2v-turbo\": 4-step Turbo text-to-video. Both use native audio, fixed 24fps, 5.17-15.08s, and a 768p-class 32px-grid canvas; use animate_photo for H3 image-conditioned modes. Base and Turbo T2V/I2V/FLF2V prompts use the exact ordered fields integrated_multimodal_description, overall_soundscape, and non_diegetic_music; I2V/FLF2V prepend the official alignment line. \"minimax-h3-r2v\": standard 20-step MiniMax H3 reference-to-video; \"minimax-h3-r2v-turbo\": the dedicated LightX2V 4-step Ref2VA Turbo workflow using Euler/simple and a 960x544 default. Both accept up to 9 images, 3 videos, and 3 audios (12 files total); at least one visual reference (image or video) is required and audio alone is invalid. Select references with referenceImageIndices/referenceVideoIndices/referenceAudioIndices and address them with the official <Subject N>/<Picture N>/<Video N>/<Audio N> semantics. Seedance quality is selected only by model: use \"seedance2-mini\" for Seedance 2.0 Mini or faster/lower-cost 720p iteration, and use \"seedance2\" for the full Seedance 2.0 model, explicit full-quality requests, 1080p/4K requests, or generated/uploaded storyboard images unless the user explicitly asks for a draft or Mini. Do not use Default Media Quality Fast/HQ/Pro or targetResolution to represent Seedance quality. \"seedance2-5\": Seedance 2.5, the newest Seedance generation — 480p and 720p ONLY (it cannot render 1080p or 4K), 4-30s per clip at a fixed 24 fps, native audio, first-and-last-frame conditioning, and a much larger reference budget than the 2.0 family: up to 30 images, 10 videos, and 10 audios, with up to 50 reference media files total, subject to those per-modality caps. Choose \"seedance2-5\" when the user asks for Seedance 2.5, wants a single continuous Seedance clip longer than 15s (2.5 renders up to 30s in one call instead of being split and stitched), or wants a first-and-last-frame Seedance transition. Keep \"seedance2\" for 1080p/4K requests, which Seedance 2.5 cannot satisfy. Seedance supports multimodal loose reference assets: images (up to 9), videos (up to 3), and audios (up to 3), with no more than 12 asset files total. Use @Image1/@Video1/@Audio1 style references in creative briefs when assigning roles. Assign every useful reference asset a role and prefer positive preservation constraints. If an uploaded video is the source clip to transform, upscale, enhance, restyle, or remaster, use video_to_video with controlMode=\"seedance-v2v\" instead of generate_video referenceVideoIndices. Alibaba HappyHorse 1.1 video models (third-party vendor — requires Premium Spark). Select by mode: \"happyhorse-1.1-t2v\" for text-to-video, \"happyhorse-1.1-i2v\" for image-to-video from one first-frame image, and \"happyhorse-1.1-r2v\" for reference-to-video with up to 9 reference images. Resolutions 720P and 1080P; duration 3-15 seconds at 24 fps; native synchronized audio is always generated (do not set generateAudio or negativePrompt). Supported aspect ratios: 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9. HappyHorse 1.1 takes image references only and renders a native synchronized audio track (always on; do not set generateAudio or a negative prompt). Pick the model by mode: happyhorse-1.1-t2v for text-to-video (no reference image), happyhorse-1.1-i2v for image-to-video from a single first frame, and happyhorse-1.1-r2v for reference-to-video with 1 to 9 reference images. For r2v, tag the images in the prompt as [Image 1]…[Image 9] and assign each a clear role. HappyHorse does not accept reference videos or reference audios. \"wan3.0-video\" is Alibaba Wan 3
|
|
1171
|
+
"description": "\"ltx25\" (default): LTX 2.5 with native audio; Fast, HQ, and Pro currently use the release-validated official Distilled INT8 workflow. The Dev checkpoints are not publicly routed until upstream publishes and Sogni validates an official ComfyUI Dev recipe. Video model. \"ltx23\": LTX 2.3 rollback with native audio. \"wan22\": quick simple motion without audio. \"minimax-h3-t2v\": standard 20-step MiniMax H3 text-to-video; \"minimax-h3-t2v-turbo\": 4-step Turbo text-to-video. Both use native audio, fixed 24fps, 5.17-15.08s, and a 768p-class 32px-grid canvas; use animate_photo for H3 image-conditioned modes. Base and Turbo T2V/I2V/FLF2V prompts use the exact ordered fields integrated_multimodal_description, overall_soundscape, and non_diegetic_music; I2V/FLF2V prepend the official alignment line. \"minimax-h3-r2v\": standard 20-step MiniMax H3 reference-to-video; \"minimax-h3-r2v-turbo\": the dedicated LightX2V 4-step Ref2VA Turbo workflow using Euler/simple and a 960x544 default. Both accept up to 9 images, 3 videos, and 3 audios (12 files total); at least one visual reference (image or video) is required and audio alone is invalid. Select references with referenceImageIndices/referenceVideoIndices/referenceAudioIndices and address them with the official <Subject N>/<Picture N>/<Video N>/<Audio N> semantics. Seedance quality is selected only by model: use \"seedance2-mini\" for Seedance 2.0 Mini or faster/lower-cost 720p iteration, and use \"seedance2\" for the full Seedance 2.0 model, explicit full-quality requests, 1080p/4K requests, or generated/uploaded storyboard images unless the user explicitly asks for a draft or Mini. Do not use Default Media Quality Fast/HQ/Pro or targetResolution to represent Seedance quality. \"seedance2-5\": Seedance 2.5, the newest Seedance generation — 480p and 720p ONLY (it cannot render 1080p or 4K), 4-30s per clip at a fixed 24 fps, native audio, first-and-last-frame conditioning, and a much larger reference budget than the 2.0 family: up to 30 images, 10 videos, and 10 audios, with up to 50 reference media files total, subject to those per-modality caps. Choose \"seedance2-5\" when the user asks for Seedance 2.5, wants a single continuous Seedance clip longer than 15s (2.5 renders up to 30s in one call instead of being split and stitched), or wants a first-and-last-frame Seedance transition. Keep \"seedance2\" for 1080p/4K requests, which Seedance 2.5 cannot satisfy. Seedance supports multimodal loose reference assets: images (up to 9), videos (up to 3), and audios (up to 3), with no more than 12 asset files total. Use @Image1/@Video1/@Audio1 style references in creative briefs when assigning roles. Assign every useful reference asset a role and prefer positive preservation constraints. If an uploaded video is the source clip to transform, upscale, enhance, restyle, or remaster, use video_to_video with controlMode=\"seedance-v2v\" instead of generate_video referenceVideoIndices. Alibaba HappyHorse 1.1 video models (third-party vendor — requires Premium Spark). Select by mode: \"happyhorse-1.1-t2v\" for text-to-video, \"happyhorse-1.1-i2v\" for image-to-video from one first-frame image, and \"happyhorse-1.1-r2v\" for reference-to-video with up to 9 reference images. Resolutions 720P and 1080P; duration 3-15 seconds at 24 fps; native synchronized audio is always generated (do not set generateAudio or negativePrompt). Supported aspect ratios: 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9. HappyHorse 1.1 takes image references only and renders a native synchronized audio track (always on; do not set generateAudio or a negative prompt). Pick the model by mode: happyhorse-1.1-t2v for text-to-video (no reference image), happyhorse-1.1-i2v for image-to-video from a single first frame, and happyhorse-1.1-r2v for reference-to-video with 1 to 9 reference images. For r2v, tag the images in the prompt as [Image 1]…[Image 9] and assign each a clear role. HappyHorse does not accept reference videos or reference audios. \"wan3.0-video\" is Alibaba Wan 3 and \"wan3.0-spicy-video\" is MuleRouter w3.0-video. Both render 2-30s or smart duration at fixed 30 fps with optional native audio, provider prompt expansion, 480p/720p/1080p, adaptive/fixed ratios, first/last frames, and up to 10 image/5 video/5 audio references. Only Alibaba wan3.0-video accepts document/web context and watermark. Frame anchors and loose references are mutually exclusive. Do not send negativePrompt; video references are loose conditioning for a new result, not source-video editing or extension."
|
|
757
1172
|
},
|
|
758
1173
|
"generateAudio": {
|
|
759
1174
|
"type": "boolean",
|
|
@@ -1156,7 +1571,7 @@ exports.generationToolsManifest = {
|
|
|
1156
1571
|
"type": "function",
|
|
1157
1572
|
"function": {
|
|
1158
1573
|
"name": "animate_photo",
|
|
1159
|
-
"description": "Animate a photo into video with motion, audio, and dialogue using LTX 2.5 by default, LTX 2.3 as rollback, or WAN 2.2. Do NOT use this tool for seedance2, seedance2-mini, or seedance2-5. Seedance media references — including Seedance 2.5 first-and-last-frame requests — must go through generate_video with referenceImageIndices/referenceVideoIndices/referenceAudioIndices and @Image/@Video/@Audio role text in the prompt; for seamless-loop Seedance requests with one uploaded image, the prompt should anchor it as both the first frame and last frame. LTX/WAN NOTE: uploaded audio files are not loose references for ltx25/ltx23/wan22; use sound_to_video when uploaded audio is the primary sync target. DANCE REQUESTS (\"make them dance\", \"do the X dance\"): use dance_montage — NOT this tool. LTX 2.5 and LTX 2.3 generate audio natively — describe dialogue and ambient sounds directly in the prompt (do NOT pre-generate audio for this tool). If the user provides exact speech, include it in double quotes; if they only imply speech, describe the performance and voice without inventing quoted words. Avoid placeholders such as \"while speaking\", \"dialogue begins\", \"explaining\", or \"final line lands\". PERSONA VOICE: Only when the user explicitly asks to use/clone a registered persona voice clip, call resolve_personas first, then set voicePersonaName to select which persona's voice clip to use. Do not set voicePersonaName for ordinary character dialogue or inferred voices; describe those voices in the prompt for native LTX audio. For cross-persona narration (e.g. David narrates a video of Aleyna), resolve both personas and set voicePersonaName to the narrator only if that registered voice was requested. Persona voice requires ltx23 because LTX 2.5 has no compatible ID-LoRA and WAN 2.2 does not support voice identity. PERSONA PIPELINE: For persona videos, ensure an image of the persona exists before calling animate_photo. The standard pipeline is: resolve_personas → edit_image → animate_photo. If a suitable persona image already exists (user uploaded one, a prior edit_image/generate_image result, OR the user explicitly says to use the Persona image/reference photo directly), skip edit_image and animate directly. After resolve_personas, this tool can animate the injected persona image directly when that explicit direct-use instruction is given. Auto-uses the latest result image (from any prior tool) unless sourceImageIndex is set. Supports start-frame (default), end-frame, and start+end interpolation modes for LTX/WAN — ask the user which frame role their image should play if they mention \"end frame\", \"last frame\", or provide two images. FIRST+LAST FRAME WORKFLOW: When the user wants a non-Seedance video using two different scenes as start and end frames, prefer generating both images in a single generate_image/edit_image call with numberOfVariations=2 and Dynamic Prompts, then call animate_photo with frameRole=\"both\", sourceImageIndex=0, endImageIndex=1. If the user explicitly wants separately created frame assets, preserve that staged instruction while keeping indices correct. In frameRole=\"both\", the handler automatically inspects both images and upgrades the base prompt into a scene-aware smooth transition prompt, so your prompt should state the desired transition style, action, dialogue, and audio rather than trying to list every visible object. If the request is vague, analyze the image first and suggest 2-3 specific animation ideas tailored to what you see. Call once you have clear creative intent. N-VIDEOS PATTERN: Avoid sequential animate_photo calls for N outputs. For a single fixed source/end frame where only prompt text varies, use sourceImageIndex + numberOfVariations=N + one Dynamic Prompt branch in prompt so Sogni submits one project with multiple jobs. If the user explicitly asks for Dynamic Prompt or Dynamic Template syntax, prefer this one-project path whenever every output uses the same source/end frames and shared settings, even if they also ask to stitch the completed clips afterward. Use sourceImageIndices/prompts for multi-segment stitched non-Seedance video, different source/end assets, different audio windows, different durations/dimensions, isolated retry lifecycle, or other per-output parameters. sourceImageIndices supports up to 16 entries; there is NO 3-clip cap, so do not split one planned batch into \"first 3\" and \"remaining\" calls. For a dialogue-heavy total-duration request with no explicit per-clip duration, prefer 15-second clips on ltx25 by default (or ltx23 rollback) (30s total = 2 clips × 15s) and 10-second clips on wan22 (60s total on wan22 = 6 clips × 10s; do NOT pick 4 clips × 15s on wan22 — the wan22 worker rejects clips longer than 10s). Multi-source flavors: (A) SHARED CONTENT — when all N clips have the same dialogue/motion but different source visuals (different scenes, outfits, environments, persona looks), first generate N distinct images via ONE edit_image/generate_image call with numberOfVariations=N + Dynamic Prompts {|}, then call animate_photo with sourceImageIndices=[start..start+N-1] and a single shared `prompt`. If all segments intentionally reuse the primary uploaded image and only prompt text varies, use sourceImageIndex=-1, frameRole=\"both\" if requested, endImageIndex=-1 if requested, numberOfVariations=N, and one Dynamic Prompt branch in prompt. Each branch option must be a complete natural-language motion prompt; do not include \"clip N\", source-frame boilerplate, \"overall request context\", or instructions to follow the user request. For a long scripted/dialogue/storyboard video from a single supplied/uploaded image where each segment needs isolated exact dialogue or per-segment wiring, use sourceImageIndices=[-1,-1,...] and per-clip prompts. Only set frameRole=\"both\" and endImageIndex=-1 when the user explicitly says the same uploaded/source/original image should be both the first and last frame of every segment. If the user requests generated source images first, honor that image stage, then animate the generated result indices. When using generated scene keyframes and each clip should begin and end on its own scene image for stitching, call animate_photo with frameRole=\"both\" and sourceImageIndices=[start..end] but OMIT endImageIndex; do not set endImageIndex=-1 unless every source is the uploaded image. (B) PER-CLIP CONTENT — when source/end asset wiring or other per-output parameters differ, pass BOTH sourceImageIndices AND `prompts` (an array of N strings, one per clip) in the same single call. Each prompt must independently anchor the visible characters, scene action, camera, audio, exact screenplay-style speaker tags, and exact quoted dialogue for that segment. If you just wrote or displayed a script/table, copy the exact dialogue lines into the corresponding per-clip prompts; do not summarize them as speech activity. If using named speaker tags with any multi-person reference image or generated scene keyframe, include one explicit cast map in each prompt that binds each name to visible position, clothing, and props/actions, e.g. SPEAKER_A = left person holding a prop; SPEAKER_B = center person with tablet; SPEAKER_C = right person near table. Do not also describe the same people again as generic man/boy/girl/woman/character subjects. For screenplay, storyboard, commercial, series, or other longer-form tasks with recurring characters, preserve the same character names and repeated visual anchors in every per-clip prompt where each character appears. Use the standard single-source path (numberOfVariations only) when the user wants motion variety from a single fixed frame. Wan 3 first-frame and first+last-frame generation is supported with videoModel=\"wan3.0-video\".",
|
|
1574
|
+
"description": "Animate a photo into video with motion, audio, and dialogue using LTX 2.5 by default, LTX 2.3 as rollback, or WAN 2.2. Do NOT use this tool for seedance2, seedance2-mini, or seedance2-5. Seedance media references — including Seedance 2.5 first-and-last-frame requests — must go through generate_video with referenceImageIndices/referenceVideoIndices/referenceAudioIndices and @Image/@Video/@Audio role text in the prompt; for seamless-loop Seedance requests with one uploaded image, the prompt should anchor it as both the first frame and last frame. LTX/WAN NOTE: uploaded audio files are not loose references for ltx25/ltx23/wan22; use sound_to_video when uploaded audio is the primary sync target. DANCE REQUESTS (\"make them dance\", \"do the X dance\"): use dance_montage — NOT this tool. LTX 2.5 and LTX 2.3 generate audio natively — describe dialogue and ambient sounds directly in the prompt (do NOT pre-generate audio for this tool). If the user provides exact speech, include it in double quotes; if they only imply speech, describe the performance and voice without inventing quoted words. Avoid placeholders such as \"while speaking\", \"dialogue begins\", \"explaining\", or \"final line lands\". PERSONA VOICE: Only when the user explicitly asks to use/clone a registered persona voice clip, call resolve_personas first, then set voicePersonaName to select which persona's voice clip to use. Do not set voicePersonaName for ordinary character dialogue or inferred voices; describe those voices in the prompt for native LTX audio. For cross-persona narration (e.g. David narrates a video of Aleyna), resolve both personas and set voicePersonaName to the narrator only if that registered voice was requested. Persona voice requires ltx23 because LTX 2.5 has no compatible ID-LoRA and WAN 2.2 does not support voice identity. PERSONA PIPELINE: For persona videos, ensure an image of the persona exists before calling animate_photo. The standard pipeline is: resolve_personas → edit_image → animate_photo. If a suitable persona image already exists (user uploaded one, a prior edit_image/generate_image result, OR the user explicitly says to use the Persona image/reference photo directly), skip edit_image and animate directly. After resolve_personas, this tool can animate the injected persona image directly when that explicit direct-use instruction is given. Auto-uses the latest result image (from any prior tool) unless sourceImageIndex is set. Supports start-frame (default), end-frame, and start+end interpolation modes for LTX/WAN — ask the user which frame role their image should play if they mention \"end frame\", \"last frame\", or provide two images. FIRST+LAST FRAME WORKFLOW: When the user wants a non-Seedance video using two different scenes as start and end frames, prefer generating both images in a single generate_image/edit_image call with numberOfVariations=2 and Dynamic Prompts, then call animate_photo with frameRole=\"both\", sourceImageIndex=0, endImageIndex=1. If the user explicitly wants separately created frame assets, preserve that staged instruction while keeping indices correct. In frameRole=\"both\", the handler automatically inspects both images and upgrades the base prompt into a scene-aware smooth transition prompt, so your prompt should state the desired transition style, action, dialogue, and audio rather than trying to list every visible object. If the request is vague, analyze the image first and suggest 2-3 specific animation ideas tailored to what you see. Call once you have clear creative intent. N-VIDEOS PATTERN: Avoid sequential animate_photo calls for N outputs. For a single fixed source/end frame where only prompt text varies, use sourceImageIndex + numberOfVariations=N + one Dynamic Prompt branch in prompt so Sogni submits one project with multiple jobs. If the user explicitly asks for Dynamic Prompt or Dynamic Template syntax, prefer this one-project path whenever every output uses the same source/end frames and shared settings, even if they also ask to stitch the completed clips afterward. Use sourceImageIndices/prompts for multi-segment stitched non-Seedance video, different source/end assets, different audio windows, different durations/dimensions, isolated retry lifecycle, or other per-output parameters. sourceImageIndices supports up to 16 entries; there is NO 3-clip cap, so do not split one planned batch into \"first 3\" and \"remaining\" calls. For a dialogue-heavy total-duration request with no explicit per-clip duration, prefer 15-second clips on ltx25 by default (or ltx23 rollback) (30s total = 2 clips × 15s) and 10-second clips on wan22 (60s total on wan22 = 6 clips × 10s; do NOT pick 4 clips × 15s on wan22 — the wan22 worker rejects clips longer than 10s). Multi-source flavors: (A) SHARED CONTENT — when all N clips have the same dialogue/motion but different source visuals (different scenes, outfits, environments, persona looks), first generate N distinct images via ONE edit_image/generate_image call with numberOfVariations=N + Dynamic Prompts {|}, then call animate_photo with sourceImageIndices=[start..start+N-1] and a single shared `prompt`. If all segments intentionally reuse the primary uploaded image and only prompt text varies, use sourceImageIndex=-1, frameRole=\"both\" if requested, endImageIndex=-1 if requested, numberOfVariations=N, and one Dynamic Prompt branch in prompt. Each branch option must be a complete natural-language motion prompt; do not include \"clip N\", source-frame boilerplate, \"overall request context\", or instructions to follow the user request. For a long scripted/dialogue/storyboard video from a single supplied/uploaded image where each segment needs isolated exact dialogue or per-segment wiring, use sourceImageIndices=[-1,-1,...] and per-clip prompts. Only set frameRole=\"both\" and endImageIndex=-1 when the user explicitly says the same uploaded/source/original image should be both the first and last frame of every segment. If the user requests generated source images first, honor that image stage, then animate the generated result indices. When using generated scene keyframes and each clip should begin and end on its own scene image for stitching, call animate_photo with frameRole=\"both\" and sourceImageIndices=[start..end] but OMIT endImageIndex; do not set endImageIndex=-1 unless every source is the uploaded image. (B) PER-CLIP CONTENT — when source/end asset wiring or other per-output parameters differ, pass BOTH sourceImageIndices AND `prompts` (an array of N strings, one per clip) in the same single call. Each prompt must independently anchor the visible characters, scene action, camera, audio, exact screenplay-style speaker tags, and exact quoted dialogue for that segment. If you just wrote or displayed a script/table, copy the exact dialogue lines into the corresponding per-clip prompts; do not summarize them as speech activity. If using named speaker tags with any multi-person reference image or generated scene keyframe, include one explicit cast map in each prompt that binds each name to visible position, clothing, and props/actions, e.g. SPEAKER_A = left person holding a prop; SPEAKER_B = center person with tablet; SPEAKER_C = right person near table. Do not also describe the same people again as generic man/boy/girl/woman/character subjects. For screenplay, storyboard, commercial, series, or other longer-form tasks with recurring characters, preserve the same character names and repeated visual anchors in every per-clip prompt where each character appears. Use the standard single-source path (numberOfVariations only) when the user wants motion variety from a single fixed frame. Wan 3 first-frame and first+last-frame generation is supported with videoModel=\"wan3.0-video\". Wan 3.0 Enhanced uses Sogni selector wan3.0-spicy-video and MuleRouter provider ID w3.0-video; it supports first-frame, last-frame-only, and first+last-frame generation, but frame anchors cannot be mixed with loose references.",
|
|
1160
1575
|
"parameters": {
|
|
1161
1576
|
"type": "object",
|
|
1162
1577
|
"properties": {
|
|
@@ -1184,9 +1599,10 @@ exports.generationToolsManifest = {
|
|
|
1184
1599
|
"minimax-h3-i2v-turbo",
|
|
1185
1600
|
"minimax-h3-flf2v",
|
|
1186
1601
|
"minimax-h3-flf2v-turbo",
|
|
1187
|
-
"wan3.0-video"
|
|
1602
|
+
"wan3.0-video",
|
|
1603
|
+
"wan3.0-spicy-video"
|
|
1188
1604
|
],
|
|
1189
|
-
"description": "\"ltx25\" (default): LTX 2.5 I2V or first/last-frame video with native audio; Fast, HQ, and Pro currently use the release-validated official Distilled INT8 workflow. The Dev checkpoints are not publicly routed until upstream publishes and Sogni validates an official ComfyUI Dev recipe. Which video model to use. \"ltx23\": LTX 2.3 rollback with native audio. \"wan22\": quick simple motion without audio, up to 10s. \"minimax-h3-i2v\" and \"minimax-h3-i2v-turbo\": standard and 4-step Turbo MiniMax H3 from one first frame. \"minimax-h3-flf2v\" and \"minimax-h3-flf2v-turbo\": standard and 4-step Turbo MiniMax H3 between required first and last frames; use frameRole=\"both\" and provide the end frame. H3 generates native audio at fixed 24fps for 5.17-15.08s and has no negative-prompt input. H3 Base and Turbo prompts use the exact three-field contract and the official mode-specific alignment line. Do not set Seedance here; use generate_video with Seedance references. \"wan3.0-video\" is Alibaba Wan 3
|
|
1605
|
+
"description": "\"ltx25\" (default): LTX 2.5 I2V or first/last-frame video with native audio; Fast, HQ, and Pro currently use the release-validated official Distilled INT8 workflow. The Dev checkpoints are not publicly routed until upstream publishes and Sogni validates an official ComfyUI Dev recipe. Which video model to use. \"ltx23\": LTX 2.3 rollback with native audio. \"wan22\": quick simple motion without audio, up to 10s. \"minimax-h3-i2v\" and \"minimax-h3-i2v-turbo\": standard and 4-step Turbo MiniMax H3 from one first frame. \"minimax-h3-flf2v\" and \"minimax-h3-flf2v-turbo\": standard and 4-step Turbo MiniMax H3 between required first and last frames; use frameRole=\"both\" and provide the end frame. H3 generates native audio at fixed 24fps for 5.17-15.08s and has no negative-prompt input. H3 Base and Turbo prompts use the exact three-field contract and the official mode-specific alignment line. Do not set Seedance here; use generate_video with Seedance references. \"wan3.0-video\" is Alibaba Wan 3 and \"wan3.0-spicy-video\" is MuleRouter w3.0-video. Both render 2-30s or smart duration at fixed 30 fps with optional native audio, provider prompt expansion, 480p/720p/1080p, adaptive/fixed ratios, first/last frames, and up to 10 image/5 video/5 audio references. Only Alibaba wan3.0-video accepts document/web context and watermark. Frame anchors and loose references are mutually exclusive. Do not send negativePrompt; video references are loose conditioning for a new result, not source-video editing or extension."
|
|
1190
1606
|
},
|
|
1191
1607
|
"negativePrompt": {
|
|
1192
1608
|
"type": "string",
|
|
@@ -1218,7 +1634,7 @@ exports.generationToolsManifest = {
|
|
|
1218
1634
|
},
|
|
1219
1635
|
"watermark": {
|
|
1220
1636
|
"type": "boolean",
|
|
1221
|
-
"description": "
|
|
1637
|
+
"description": "Alibaba wan3.0-video only. Add the visible watermark. Defaults to false."
|
|
1222
1638
|
},
|
|
1223
1639
|
"targetResolution": {
|
|
1224
1640
|
"type": "number",
|
|
@@ -1624,7 +2040,7 @@ exports.generationToolsManifest = {
|
|
|
1624
2040
|
"type": "function",
|
|
1625
2041
|
"function": {
|
|
1626
2042
|
"name": "sound_to_video",
|
|
1627
|
-
"description": "Generate video synchronized to audio. Use when the user has uploaded an audio file (mp3, wav, m4a, flac) and the audio is the primary sync target, especially uploaded-audio-only workflows. Also use after generate_music (\"turn that song into a video\", \"make a music video from that\"). Auto-detects generated audio from generate_music if no audio file is uploaded. Seedance animate_photo/generate_video can also attach uploaded audio as a loose @Audio reference when an image or video reference anchors the request; use this tool instead when the soundtrack itself should drive the video. If the user provides a reference image, use ltx25-ia2v by default (ltx23-ia2v is rollback); for lip-sync with a face image, use wan-s2v; if no image, use ltx25-a2v by default (ltx23-a2v is rollback). If the user wants dialogue/audio WITHOUT pre-existing audio, use animate_photo instead (LTX 2.5 and LTX 2.3 generate audio natively). Note: Persona voice clips from resolve_personas are NOT used by this tool — for persona voice identity in video, use animate_photo or generate_video with videoModel=\"ltx23\" because LTX 2.5 has no compatible ID-LoRA. LONG AUDIO ON SEEDANCE: Seedance 2.0 and Mini cap each clip at 15s; Seedance 2.5 renders up to 30s in one call, so prefer seedance2-5 for 16-30s audio instead of splitting. When the user uploads audio longer than the per-clip cap of the selected model and Seedance is selected (seedance2, seedance2-mini, or seedance2-5), do NOT clamp to 15s and drop the rest — split the run into multiple sound_to_video calls in the same turn (one per 15s segment, so a 20s audio becomes two clips: audioStart=0 duration=15, then audioStart=15 duration=5) and finish with a single stitch_video call referencing the resulting clip indices in order with audioIndex pointing at the same uploaded audio so the stitched output carries the full original soundtrack. LTX/WAN models accept up to 20s per clip, so single-call is fine for them. Use videoModel=\"wan3.0-video\" when the user explicitly requests Wan 3 audio-driven video.",
|
|
2043
|
+
"description": "Generate video synchronized to audio. Use when the user has uploaded an audio file (mp3, wav, m4a, flac) and the audio is the primary sync target, especially uploaded-audio-only workflows. Also use after generate_music (\"turn that song into a video\", \"make a music video from that\"). Auto-detects generated audio from generate_music if no audio file is uploaded. Seedance animate_photo/generate_video can also attach uploaded audio as a loose @Audio reference when an image or video reference anchors the request; use this tool instead when the soundtrack itself should drive the video. If the user provides a reference image, use ltx25-ia2v by default (ltx23-ia2v is rollback); for lip-sync with a face image, use wan-s2v; if no image, use ltx25-a2v by default (ltx23-a2v is rollback). If the user wants dialogue/audio WITHOUT pre-existing audio, use animate_photo instead (LTX 2.5 and LTX 2.3 generate audio natively). Note: Persona voice clips from resolve_personas are NOT used by this tool — for persona voice identity in video, use animate_photo or generate_video with videoModel=\"ltx23\" because LTX 2.5 has no compatible ID-LoRA. LONG AUDIO ON SEEDANCE: Seedance 2.0 and Mini cap each clip at 15s; Seedance 2.5 renders up to 30s in one call, so prefer seedance2-5 for 16-30s audio instead of splitting. When the user uploads audio longer than the per-clip cap of the selected model and Seedance is selected (seedance2, seedance2-mini, or seedance2-5), do NOT clamp to 15s and drop the rest — split the run into multiple sound_to_video calls in the same turn (one per 15s segment, so a 20s audio becomes two clips: audioStart=0 duration=15, then audioStart=15 duration=5) and finish with a single stitch_video call referencing the resulting clip indices in order with audioIndex pointing at the same uploaded audio so the stitched output carries the full original soundtrack. LTX/WAN models accept up to 20s per clip, so single-call is fine for them. Use videoModel=\"wan3.0-video\" when the user explicitly requests Wan 3 audio-driven video. Use videoModel=\"wan3.0-spicy-video\" for Wan 3.0 Enhanced audio-driven video through MuleRouter provider ID w3.0-video; it supports smart duration, adaptive ratios, and provider prompt expansion.",
|
|
1628
2044
|
"parameters": {
|
|
1629
2045
|
"type": "object",
|
|
1630
2046
|
"properties": {
|
|
@@ -1677,15 +2093,15 @@ exports.generationToolsManifest = {
|
|
|
1677
2093
|
},
|
|
1678
2094
|
"watermark": {
|
|
1679
2095
|
"type": "boolean",
|
|
1680
|
-
"description": "
|
|
2096
|
+
"description": "Alibaba wan3.0-video only. Add the visible watermark. Defaults to false."
|
|
1681
2097
|
},
|
|
1682
2098
|
"referenceFileUrl": {
|
|
1683
2099
|
"type": "string",
|
|
1684
|
-
"description": "
|
|
2100
|
+
"description": "Alibaba wan3.0-video only. One public HTTPS document URL for additional audio-driven context (DOCX/DOC/XLSX/XLS/PPTX/PPT/PDF/TXT/KEY/PAGES/NUMBERS/Markdown, up to 100 MB; PDF/DOCX/DOC/PPTX/PPT/KEY/PAGES up to 50 pages). Mutually exclusive with referenceLinkUrl."
|
|
1685
2101
|
},
|
|
1686
2102
|
"referenceLinkUrl": {
|
|
1687
2103
|
"type": "string",
|
|
1688
|
-
"description": "
|
|
2104
|
+
"description": "Alibaba wan3.0-video only. One public HTTPS webpage URL for additional audio-driven context. Mutually exclusive with referenceFileUrl."
|
|
1689
2105
|
},
|
|
1690
2106
|
"videoModel": {
|
|
1691
2107
|
"type": "string",
|
|
@@ -1698,9 +2114,10 @@ exports.generationToolsManifest = {
|
|
|
1698
2114
|
"ltx25-a2v",
|
|
1699
2115
|
"ltx23-ia2v",
|
|
1700
2116
|
"ltx23-a2v",
|
|
1701
|
-
"wan3.0-video"
|
|
2117
|
+
"wan3.0-video",
|
|
2118
|
+
"wan3.0-spicy-video"
|
|
1702
2119
|
],
|
|
1703
|
-
"description": "\"ltx25-ia2v\" (default with image) and \"ltx25-a2v\" (default without image): LTX 2.5 image+audio and audio-only modes; Fast, HQ, and Pro currently use the release-validated official Distilled INT8 workflows. The Dev checkpoints are not publicly routed until upstream publishes and Sogni validates official ComfyUI Dev recipes. Video model. \"ltx23-ia2v\" (rollback with image): LTX 2.3 image+audio to video, audio-reactive with a reference image; Fast/HQ use the distilled 8-step worker and Default Media Quality Pro uses the non-distilled dev worker. \"ltx23-a2v\" (rollback without image): LTX 2.3 audio-only to video, no image needed, creates video purely from text prompt + audio with the same quality-tier routing. \"wan-s2v\": WAN 2.2 sound-to-video, best for lip-sync with a face image, fast 4-step. \"seedance2\": full Seedance 2.0 audio-reference video, 4-15s. \"seedance2-mini\": Seedance 2.0 Mini, 720p cap, fastest/lower-cost Seedance option. Seedance quality is selected only by this model value: pick \"seedance2-mini\" for faster/lower-cost drafts or explicit Mini requests, and pick \"seedance2\" for full-quality Seedance or 1080p/4K. Do not infer the Seedance model from Default Media Quality Fast/HQ/Pro. \"seedance2-5\": Seedance 2.5, the newest Seedance generation — 480p and 720p ONLY (it cannot render 1080p or 4K), 4-30s per clip at a fixed 24 fps, native audio, first-and-last-frame conditioning, and a much larger reference budget than the 2.0 family: up to 30 images, 10 videos, and 10 audios, with up to 50 reference media files total, subject to those per-modality caps. Choose \"seedance2-5\" when the user asks for Seedance 2.5, wants a single continuous Seedance clip longer than 15s (2.5 renders up to 30s in one call instead of being split and stitched), or wants a first-and-last-frame Seedance transition. Keep \"seedance2\" for 1080p/4K requests, which Seedance 2.5 cannot satisfy. For Seedance audio-reference prompts, preserve exact spoken dialogue when the user supplied it, and assign @Image1/@Audio1 roles. If the user asks for speech without words, describe the vocal performance without inventing quoted dialogue. Treat lip-sync, voice cloning, and real-human reference behavior as provider-sensitive rather than guaranteed. Omit to auto-select based on whether an image is present. \"wan3.0-video\" is Alibaba Wan 3
|
|
2120
|
+
"description": "\"ltx25-ia2v\" (default with image) and \"ltx25-a2v\" (default without image): LTX 2.5 image+audio and audio-only modes; Fast, HQ, and Pro currently use the release-validated official Distilled INT8 workflows. The Dev checkpoints are not publicly routed until upstream publishes and Sogni validates official ComfyUI Dev recipes. Video model. \"ltx23-ia2v\" (rollback with image): LTX 2.3 image+audio to video, audio-reactive with a reference image; Fast/HQ use the distilled 8-step worker and Default Media Quality Pro uses the non-distilled dev worker. \"ltx23-a2v\" (rollback without image): LTX 2.3 audio-only to video, no image needed, creates video purely from text prompt + audio with the same quality-tier routing. \"wan-s2v\": WAN 2.2 sound-to-video, best for lip-sync with a face image, fast 4-step. \"seedance2\": full Seedance 2.0 audio-reference video, 4-15s. \"seedance2-mini\": Seedance 2.0 Mini, 720p cap, fastest/lower-cost Seedance option. Seedance quality is selected only by this model value: pick \"seedance2-mini\" for faster/lower-cost drafts or explicit Mini requests, and pick \"seedance2\" for full-quality Seedance or 1080p/4K. Do not infer the Seedance model from Default Media Quality Fast/HQ/Pro. \"seedance2-5\": Seedance 2.5, the newest Seedance generation — 480p and 720p ONLY (it cannot render 1080p or 4K), 4-30s per clip at a fixed 24 fps, native audio, first-and-last-frame conditioning, and a much larger reference budget than the 2.0 family: up to 30 images, 10 videos, and 10 audios, with up to 50 reference media files total, subject to those per-modality caps. Choose \"seedance2-5\" when the user asks for Seedance 2.5, wants a single continuous Seedance clip longer than 15s (2.5 renders up to 30s in one call instead of being split and stitched), or wants a first-and-last-frame Seedance transition. Keep \"seedance2\" for 1080p/4K requests, which Seedance 2.5 cannot satisfy. For Seedance audio-reference prompts, preserve exact spoken dialogue when the user supplied it, and assign @Image1/@Audio1 roles. If the user asks for speech without words, describe the vocal performance without inventing quoted dialogue. Treat lip-sync, voice cloning, and real-human reference behavior as provider-sensitive rather than guaranteed. Omit to auto-select based on whether an image is present. \"wan3.0-video\" is Alibaba Wan 3 and \"wan3.0-spicy-video\" is MuleRouter w3.0-video. Both render 2-30s or smart duration at fixed 30 fps with optional native audio, provider prompt expansion, 480p/720p/1080p, adaptive/fixed ratios, first/last frames, and up to 10 image/5 video/5 audio references. Only Alibaba wan3.0-video accepts document/web context and watermark. Frame anchors and loose references are mutually exclusive. Do not send negativePrompt; video references are loose conditioning for a new result, not source-video editing or extension."
|
|
1704
2121
|
},
|
|
1705
2122
|
"generateAudio": {
|
|
1706
2123
|
"type": "boolean",
|