mulmocast 2.0.8 → 2.1.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.
Files changed (35) hide show
  1. package/lib/actions/movie.d.ts +29 -2
  2. package/lib/actions/movie.js +243 -91
  3. package/lib/methods/mulmo_presentation_style.d.ts +4 -3
  4. package/lib/methods/mulmo_presentation_style.js +7 -1
  5. package/lib/types/schema.d.ts +202 -31
  6. package/lib/types/schema.js +27 -13
  7. package/lib/types/schema_video_filter.d.ts +423 -0
  8. package/lib/types/schema_video_filter.js +253 -0
  9. package/lib/types/type.d.ts +2 -1
  10. package/lib/utils/context.d.ts +11 -3
  11. package/lib/utils/ffmpeg_utils.js +2 -2
  12. package/lib/utils/provider2agent.d.ts +4 -0
  13. package/lib/utils/provider2agent.js +5 -0
  14. package/lib/utils/utils.js +24 -55
  15. package/lib/utils/video_filter.d.ts +7 -0
  16. package/lib/utils/video_filter.js +149 -0
  17. package/package.json +7 -7
  18. package/scripts/test/README.md +48 -48
  19. package/scripts/test/test_transition2.json +460 -0
  20. package/scripts/test/test_transition2.json~ +62 -0
  21. package/scripts/test/test_transition3.json +70 -0
  22. package/scripts/test/test_transition3.json~ +76 -0
  23. package/scripts/test/test_transition_no_audio.json +16 -0
  24. package/scripts/test/test_video_filters.json~ +227 -0
  25. package/scripts/test/test_wipe_simple.json +37 -0
  26. package/scripts/test/test_all_image.json~ +0 -45
  27. package/scripts/test/test_all_movie.json~ +0 -37
  28. package/scripts/test/test_all_tts.json~ +0 -83
  29. package/scripts/test/test_audio_gemini.json~ +0 -67
  30. package/scripts/test/test_genai2.json~ +0 -84
  31. package/scripts/test/test_genai_movie.json~ +0 -22
  32. package/scripts/test/test_kotodama.json~ +0 -0
  33. package/scripts/test/test_lipsync2.json~ +0 -24
  34. package/scripts/test/test_movie2.json~ +0 -40
  35. package/scripts/test/test_play_to_end.json~ +0 -65
@@ -477,6 +477,62 @@ export declare const mulmoLipSyncParamsSchema: z.ZodObject<{
477
477
  provider: z.ZodOptional<z.ZodString>;
478
478
  model: z.ZodOptional<z.ZodString>;
479
479
  }, z.core.$strip>;
480
+ export declare const mulmoTransitionSchema: z.ZodObject<{
481
+ type: z.ZodEnum<{
482
+ fade: "fade";
483
+ slideout_left: "slideout_left";
484
+ slideout_right: "slideout_right";
485
+ slideout_up: "slideout_up";
486
+ slideout_down: "slideout_down";
487
+ slidein_left: "slidein_left";
488
+ slidein_right: "slidein_right";
489
+ slidein_up: "slidein_up";
490
+ slidein_down: "slidein_down";
491
+ wipeleft: "wipeleft";
492
+ wiperight: "wiperight";
493
+ wipeup: "wipeup";
494
+ wipedown: "wipedown";
495
+ wipetl: "wipetl";
496
+ wipetr: "wipetr";
497
+ wipebl: "wipebl";
498
+ wipebr: "wipebr";
499
+ }>;
500
+ duration: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
501
+ }, z.core.$strip>;
502
+ export declare const mulmoMovieParamsSchema: z.ZodObject<{
503
+ provider: z.ZodOptional<z.ZodEnum<{
504
+ [x: string]: string;
505
+ }>>;
506
+ model: z.ZodOptional<z.ZodString>;
507
+ fillOption: z.ZodOptional<z.ZodObject<{
508
+ style: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
509
+ aspectFit: "aspectFit";
510
+ aspectFill: "aspectFill";
511
+ }>>>;
512
+ }, z.core.$strip>>;
513
+ transition: z.ZodOptional<z.ZodObject<{
514
+ type: z.ZodEnum<{
515
+ fade: "fade";
516
+ slideout_left: "slideout_left";
517
+ slideout_right: "slideout_right";
518
+ slideout_up: "slideout_up";
519
+ slideout_down: "slideout_down";
520
+ slidein_left: "slidein_left";
521
+ slidein_right: "slidein_right";
522
+ slidein_up: "slidein_up";
523
+ slidein_down: "slidein_down";
524
+ wipeleft: "wipeleft";
525
+ wiperight: "wiperight";
526
+ wipeup: "wipeup";
527
+ wipedown: "wipedown";
528
+ wipetl: "wipetl";
529
+ wipetr: "wipetr";
530
+ wipebl: "wipebl";
531
+ wipebr: "wipebr";
532
+ }>;
533
+ duration: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
534
+ }, z.core.$strip>>;
535
+ }, z.core.$strip>;
480
536
  export declare const mulmoBeatSchema: z.ZodObject<{
481
537
  speaker: z.ZodOptional<z.ZodString>;
482
538
  text: z.ZodDefault<z.ZodOptional<z.ZodString>>;
@@ -619,6 +675,28 @@ export declare const mulmoBeatSchema: z.ZodObject<{
619
675
  aspectFill: "aspectFill";
620
676
  }>>>;
621
677
  }, z.core.$strip>>;
678
+ transition: z.ZodOptional<z.ZodObject<{
679
+ type: z.ZodEnum<{
680
+ fade: "fade";
681
+ slideout_left: "slideout_left";
682
+ slideout_right: "slideout_right";
683
+ slideout_up: "slideout_up";
684
+ slideout_down: "slideout_down";
685
+ slidein_left: "slidein_left";
686
+ slidein_right: "slidein_right";
687
+ slidein_up: "slidein_up";
688
+ slidein_down: "slidein_down";
689
+ wipeleft: "wipeleft";
690
+ wiperight: "wiperight";
691
+ wipeup: "wipeup";
692
+ wipedown: "wipedown";
693
+ wipetl: "wipetl";
694
+ wipetr: "wipetr";
695
+ wipebl: "wipebl";
696
+ wipebr: "wipebr";
697
+ }>;
698
+ duration: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
699
+ }, z.core.$strip>>;
622
700
  speed: z.ZodOptional<z.ZodNumber>;
623
701
  }, z.core.$strip>>;
624
702
  soundEffectParams: z.ZodOptional<z.ZodObject<{
@@ -682,32 +760,6 @@ export declare const mulmoReplicateMovieModelSchema: z.ZodObject<{
682
760
  [x: string]: string;
683
761
  }>>;
684
762
  }, z.core.$strict>;
685
- export declare const mulmoTransitionSchema: z.ZodObject<{
686
- type: z.ZodEnum<{
687
- fade: "fade";
688
- slideout_left: "slideout_left";
689
- }>;
690
- duration: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
691
- }, z.core.$strip>;
692
- export declare const mulmoMovieParamsSchema: z.ZodObject<{
693
- provider: z.ZodOptional<z.ZodEnum<{
694
- [x: string]: string;
695
- }>>;
696
- model: z.ZodOptional<z.ZodString>;
697
- fillOption: z.ZodOptional<z.ZodObject<{
698
- style: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
699
- aspectFit: "aspectFit";
700
- aspectFill: "aspectFill";
701
- }>>>;
702
- }, z.core.$strip>>;
703
- transition: z.ZodOptional<z.ZodObject<{
704
- type: z.ZodEnum<{
705
- fade: "fade";
706
- slideout_left: "slideout_left";
707
- }>;
708
- duration: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
709
- }, z.core.$strip>>;
710
- }, z.core.$strict>;
711
763
  export declare const mulmoPresentationStyleSchema: z.ZodObject<{
712
764
  $mulmocast: z.ZodObject<{
713
765
  version: z.ZodLiteral<"1.1">;
@@ -787,10 +839,25 @@ export declare const mulmoPresentationStyleSchema: z.ZodObject<{
787
839
  type: z.ZodEnum<{
788
840
  fade: "fade";
789
841
  slideout_left: "slideout_left";
842
+ slideout_right: "slideout_right";
843
+ slideout_up: "slideout_up";
844
+ slideout_down: "slideout_down";
845
+ slidein_left: "slidein_left";
846
+ slidein_right: "slidein_right";
847
+ slidein_up: "slidein_up";
848
+ slidein_down: "slidein_down";
849
+ wipeleft: "wipeleft";
850
+ wiperight: "wiperight";
851
+ wipeup: "wipeup";
852
+ wipedown: "wipedown";
853
+ wipetl: "wipetl";
854
+ wipetr: "wipetr";
855
+ wipebl: "wipebl";
856
+ wipebr: "wipebr";
790
857
  }>;
791
858
  duration: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
792
859
  }, z.core.$strip>>;
793
- }, z.core.$strict>>>;
860
+ }, z.core.$strip>>>;
794
861
  soundEffectParams: z.ZodDefault<z.ZodOptional<z.ZodObject<{
795
862
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
796
863
  [x: string]: string;
@@ -925,10 +992,25 @@ export declare const mulmoScriptSchema: z.ZodObject<{
925
992
  type: z.ZodEnum<{
926
993
  fade: "fade";
927
994
  slideout_left: "slideout_left";
995
+ slideout_right: "slideout_right";
996
+ slideout_up: "slideout_up";
997
+ slideout_down: "slideout_down";
998
+ slidein_left: "slidein_left";
999
+ slidein_right: "slidein_right";
1000
+ slidein_up: "slidein_up";
1001
+ slidein_down: "slidein_down";
1002
+ wipeleft: "wipeleft";
1003
+ wiperight: "wiperight";
1004
+ wipeup: "wipeup";
1005
+ wipedown: "wipedown";
1006
+ wipetl: "wipetl";
1007
+ wipetr: "wipetr";
1008
+ wipebl: "wipebl";
1009
+ wipebr: "wipebr";
928
1010
  }>;
929
1011
  duration: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
930
1012
  }, z.core.$strip>>;
931
- }, z.core.$strict>>>;
1013
+ }, z.core.$strip>>>;
932
1014
  soundEffectParams: z.ZodDefault<z.ZodOptional<z.ZodObject<{
933
1015
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
934
1016
  [x: string]: string;
@@ -1128,6 +1210,28 @@ export declare const mulmoScriptSchema: z.ZodObject<{
1128
1210
  aspectFill: "aspectFill";
1129
1211
  }>>>;
1130
1212
  }, z.core.$strip>>;
1213
+ transition: z.ZodOptional<z.ZodObject<{
1214
+ type: z.ZodEnum<{
1215
+ fade: "fade";
1216
+ slideout_left: "slideout_left";
1217
+ slideout_right: "slideout_right";
1218
+ slideout_up: "slideout_up";
1219
+ slideout_down: "slideout_down";
1220
+ slidein_left: "slidein_left";
1221
+ slidein_right: "slidein_right";
1222
+ slidein_up: "slidein_up";
1223
+ slidein_down: "slidein_down";
1224
+ wipeleft: "wipeleft";
1225
+ wiperight: "wiperight";
1226
+ wipeup: "wipeup";
1227
+ wipedown: "wipedown";
1228
+ wipetl: "wipetl";
1229
+ wipetr: "wipetr";
1230
+ wipebl: "wipebl";
1231
+ wipebr: "wipebr";
1232
+ }>;
1233
+ duration: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
1234
+ }, z.core.$strip>>;
1131
1235
  speed: z.ZodOptional<z.ZodNumber>;
1132
1236
  }, z.core.$strip>>;
1133
1237
  soundEffectParams: z.ZodOptional<z.ZodObject<{
@@ -1340,10 +1444,25 @@ export declare const mulmoStudioSchema: z.ZodObject<{
1340
1444
  type: z.ZodEnum<{
1341
1445
  fade: "fade";
1342
1446
  slideout_left: "slideout_left";
1447
+ slideout_right: "slideout_right";
1448
+ slideout_up: "slideout_up";
1449
+ slideout_down: "slideout_down";
1450
+ slidein_left: "slidein_left";
1451
+ slidein_right: "slidein_right";
1452
+ slidein_up: "slidein_up";
1453
+ slidein_down: "slidein_down";
1454
+ wipeleft: "wipeleft";
1455
+ wiperight: "wiperight";
1456
+ wipeup: "wipeup";
1457
+ wipedown: "wipedown";
1458
+ wipetl: "wipetl";
1459
+ wipetr: "wipetr";
1460
+ wipebl: "wipebl";
1461
+ wipebr: "wipebr";
1343
1462
  }>;
1344
1463
  duration: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
1345
1464
  }, z.core.$strip>>;
1346
- }, z.core.$strict>>>;
1465
+ }, z.core.$strip>>>;
1347
1466
  soundEffectParams: z.ZodDefault<z.ZodOptional<z.ZodObject<{
1348
1467
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
1349
1468
  [x: string]: string;
@@ -1543,6 +1662,28 @@ export declare const mulmoStudioSchema: z.ZodObject<{
1543
1662
  aspectFill: "aspectFill";
1544
1663
  }>>>;
1545
1664
  }, z.core.$strip>>;
1665
+ transition: z.ZodOptional<z.ZodObject<{
1666
+ type: z.ZodEnum<{
1667
+ fade: "fade";
1668
+ slideout_left: "slideout_left";
1669
+ slideout_right: "slideout_right";
1670
+ slideout_up: "slideout_up";
1671
+ slideout_down: "slideout_down";
1672
+ slidein_left: "slidein_left";
1673
+ slidein_right: "slidein_right";
1674
+ slidein_up: "slidein_up";
1675
+ slidein_down: "slidein_down";
1676
+ wipeleft: "wipeleft";
1677
+ wiperight: "wiperight";
1678
+ wipeup: "wipeup";
1679
+ wipedown: "wipedown";
1680
+ wipetl: "wipetl";
1681
+ wipetr: "wipetr";
1682
+ wipebl: "wipebl";
1683
+ wipebr: "wipebr";
1684
+ }>;
1685
+ duration: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
1686
+ }, z.core.$strip>>;
1546
1687
  speed: z.ZodOptional<z.ZodNumber>;
1547
1688
  }, z.core.$strip>>;
1548
1689
  soundEffectParams: z.ZodOptional<z.ZodObject<{
@@ -1691,10 +1832,25 @@ export declare const mulmoPromptTemplateSchema: z.ZodObject<{
1691
1832
  type: z.ZodEnum<{
1692
1833
  fade: "fade";
1693
1834
  slideout_left: "slideout_left";
1835
+ slideout_right: "slideout_right";
1836
+ slideout_up: "slideout_up";
1837
+ slideout_down: "slideout_down";
1838
+ slidein_left: "slidein_left";
1839
+ slidein_right: "slidein_right";
1840
+ slidein_up: "slidein_up";
1841
+ slidein_down: "slidein_down";
1842
+ wipeleft: "wipeleft";
1843
+ wiperight: "wiperight";
1844
+ wipeup: "wipeup";
1845
+ wipedown: "wipedown";
1846
+ wipetl: "wipetl";
1847
+ wipetr: "wipetr";
1848
+ wipebl: "wipebl";
1849
+ wipebr: "wipebr";
1694
1850
  }>;
1695
1851
  duration: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
1696
1852
  }, z.core.$strip>>;
1697
- }, z.core.$strict>>>;
1853
+ }, z.core.$strip>>>;
1698
1854
  soundEffectParams: z.ZodDefault<z.ZodOptional<z.ZodObject<{
1699
1855
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
1700
1856
  [x: string]: string;
@@ -1823,10 +1979,25 @@ export declare const mulmoPromptTemplateFileSchema: z.ZodObject<{
1823
1979
  type: z.ZodEnum<{
1824
1980
  fade: "fade";
1825
1981
  slideout_left: "slideout_left";
1982
+ slideout_right: "slideout_right";
1983
+ slideout_up: "slideout_up";
1984
+ slideout_down: "slideout_down";
1985
+ slidein_left: "slidein_left";
1986
+ slidein_right: "slidein_right";
1987
+ slidein_up: "slidein_up";
1988
+ slidein_down: "slidein_down";
1989
+ wipeleft: "wipeleft";
1990
+ wiperight: "wiperight";
1991
+ wipeup: "wipeup";
1992
+ wipedown: "wipedown";
1993
+ wipetl: "wipetl";
1994
+ wipetr: "wipetr";
1995
+ wipebl: "wipebl";
1996
+ wipebr: "wipebr";
1826
1997
  }>;
1827
1998
  duration: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
1828
1999
  }, z.core.$strip>>;
1829
- }, z.core.$strict>>>;
2000
+ }, z.core.$strip>>>;
1830
2001
  soundEffectParams: z.ZodDefault<z.ZodOptional<z.ZodObject<{
1831
2002
  provider: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
1832
2003
  [x: string]: string;
@@ -279,10 +279,33 @@ export const mulmoLipSyncParamsSchema = z.object({
279
279
  provider: z.string().optional(), // lip sync provider
280
280
  model: z.string().optional(), // default: provider specific
281
281
  });
282
- const movieParamsSchema = z.object({
282
+ export const mulmoTransitionSchema = z.object({
283
+ type: z.enum([
284
+ "fade",
285
+ "slideout_left",
286
+ "slideout_right",
287
+ "slideout_up",
288
+ "slideout_down",
289
+ "slidein_left",
290
+ "slidein_right",
291
+ "slidein_up",
292
+ "slidein_down",
293
+ "wipeleft",
294
+ "wiperight",
295
+ "wipeup",
296
+ "wipedown",
297
+ "wipetl",
298
+ "wipetr",
299
+ "wipebl",
300
+ "wipebr",
301
+ ]),
302
+ duration: z.number().min(0).max(2).optional().default(0.3), // transition duration in seconds
303
+ });
304
+ export const mulmoMovieParamsSchema = z.object({
283
305
  provider: text2MovieProviderSchema.optional(),
284
306
  model: z.string().optional(),
285
307
  fillOption: mulmoFillOptionSchema.optional(), // for movie.ts
308
+ transition: mulmoTransitionSchema.optional(), // for movie.ts
286
309
  });
287
310
  export const mulmoBeatSchema = z
288
311
  .object({
@@ -295,7 +318,7 @@ export const mulmoBeatSchema = z
295
318
  duration: z.number().optional().describe("Duration of the beat. Used only when the text is empty"),
296
319
  imageParams: mulmoBeatImageParamsSchema.optional(), // beat specific parameters
297
320
  audioParams: beatAudioParamsSchema.optional(), // beat specific parameters
298
- movieParams: movieParamsSchema
321
+ movieParams: mulmoMovieParamsSchema
299
322
  .extend({
300
323
  speed: z.number().optional().describe("Speed of the video. 1.0 is normal speed. 0.5 is half speed. 2.0 is double speed."), // for movie.ts
301
324
  })
@@ -329,29 +352,20 @@ export const mulmoCastCreditSchema = z
329
352
  })
330
353
  .strict();
331
354
  export const text2HtmlImageProviderSchema = z.enum(htmlLLMProvider).default(defaultProviders.text2Html);
332
- // NOTE: This is UI only. (until we figure out how to use it in mulmoMovieParamsSchema)
355
+ // NOTE: This is UI only. (until we figure out how to use it in movieParamsSchema)
333
356
  export const mulmoGoogleMovieModelSchema = z
334
357
  .object({
335
358
  provider: z.literal("google"),
336
359
  model: z.enum(provider2MovieAgent.google.models).optional(),
337
360
  })
338
361
  .strict();
339
- // NOTE: This is UI only. (until we figure out how to use it in mulmoMovieParamsSchema)
362
+ // NOTE: This is UI only. (until we figure out how to use it in movieParamsSchema)
340
363
  export const mulmoReplicateMovieModelSchema = z
341
364
  .object({
342
365
  provider: z.literal("replicate"),
343
366
  model: z.enum(provider2MovieAgent.replicate.models).optional(),
344
367
  })
345
368
  .strict();
346
- export const mulmoTransitionSchema = z.object({
347
- type: z.enum(["fade", "slideout_left"]),
348
- duration: z.number().min(0).max(2).optional().default(0.3), // transition duration in seconds
349
- });
350
- export const mulmoMovieParamsSchema = movieParamsSchema
351
- .extend({
352
- transition: mulmoTransitionSchema.optional(), // for movie.ts
353
- })
354
- .strict();
355
369
  export const mulmoPresentationStyleSchema = z.object({
356
370
  $mulmocast: mulmoCastCreditSchema,
357
371
  canvasSize: mulmoCanvasDimensionSchema, // has default value