mulmocast 1.2.36 → 1.2.38

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.
@@ -195,8 +195,14 @@ export const beat_graph_data = {
195
195
  // no need to check if the file exists (ffmpegGetMediaDuration will check it if it is local file)
196
196
  return { hasMovieAudio: false };
197
197
  }
198
- const { hasAudio } = await ffmpegGetMediaDuration(sourceFile);
199
- return { hasMovieAudio: hasAudio };
198
+ try {
199
+ const { hasAudio } = await ffmpegGetMediaDuration(sourceFile);
200
+ return { hasMovieAudio: hasAudio };
201
+ }
202
+ catch (error) {
203
+ GraphAILogger.error(error);
204
+ throw Error("audioChecker: ffmpegGetMediaDuration error.");
205
+ }
200
206
  },
201
207
  inputs: {
202
208
  onComplete: [":movieGenerator", ":htmlImageGenerator", ":soundEffectGenerator"],
@@ -48,6 +48,7 @@ export declare const promptTemplates: ({
48
48
  displayName: {
49
49
  en: string;
50
50
  };
51
+ provider: string;
51
52
  voiceId: string;
52
53
  lang?: undefined;
53
54
  speechOptions?: undefined;
@@ -127,6 +128,7 @@ export declare const promptTemplates: ({
127
128
  };
128
129
  voiceId: string;
129
130
  displayName?: undefined;
131
+ provider?: undefined;
130
132
  };
131
133
  Announcer?: undefined;
132
134
  Student?: undefined;
@@ -188,6 +190,7 @@ export declare const promptTemplates: ({
188
190
  displayName: {
189
191
  en: string;
190
192
  };
193
+ provider: string;
191
194
  voiceId: string;
192
195
  lang?: undefined;
193
196
  speechOptions?: undefined;
@@ -239,6 +242,7 @@ export declare const promptTemplates: ({
239
242
  displayName: {
240
243
  en: string;
241
244
  };
245
+ provider: string;
242
246
  voiceId: string;
243
247
  lang?: undefined;
244
248
  speechOptions?: undefined;
@@ -303,6 +307,7 @@ export declare const promptTemplates: ({
303
307
  displayName: {
304
308
  en: string;
305
309
  };
310
+ provider: string;
306
311
  voiceId: string;
307
312
  lang?: undefined;
308
313
  speechOptions?: undefined;
@@ -367,6 +372,7 @@ export declare const promptTemplates: ({
367
372
  displayName: {
368
373
  en: string;
369
374
  };
375
+ provider: string;
370
376
  voiceId: string;
371
377
  lang?: undefined;
372
378
  speechOptions?: undefined;
@@ -437,6 +443,7 @@ export declare const promptTemplates: ({
437
443
  displayName: {
438
444
  en: string;
439
445
  };
446
+ provider: string;
440
447
  voiceId: string;
441
448
  lang?: undefined;
442
449
  speechOptions?: undefined;
@@ -550,6 +557,7 @@ export declare const promptTemplates: ({
550
557
  displayName: {
551
558
  en: string;
552
559
  };
560
+ provider: string;
553
561
  voiceId: string;
554
562
  lang?: undefined;
555
563
  speechOptions?: undefined;
@@ -614,6 +622,7 @@ export declare const promptTemplates: ({
614
622
  displayName: {
615
623
  en: string;
616
624
  };
625
+ provider: string;
617
626
  voiceId: string;
618
627
  lang?: undefined;
619
628
  speechOptions?: undefined;
@@ -668,6 +677,7 @@ export declare const promptTemplates: ({
668
677
  displayName: {
669
678
  en: string;
670
679
  };
680
+ provider: string;
671
681
  voiceId: string;
672
682
  lang?: undefined;
673
683
  speechOptions?: undefined;
@@ -41,6 +41,7 @@ export const promptTemplates = [
41
41
  displayName: {
42
42
  en: "Presenter",
43
43
  },
44
+ provider: "openai",
44
45
  voiceId: "shimmer",
45
46
  },
46
47
  },
@@ -156,6 +157,7 @@ export const promptTemplates = [
156
157
  displayName: {
157
158
  en: "Presenter",
158
159
  },
160
+ provider: "openai",
159
161
  voiceId: "shimmer",
160
162
  },
161
163
  },
@@ -198,6 +200,7 @@ export const promptTemplates = [
198
200
  displayName: {
199
201
  en: "Presenter",
200
202
  },
203
+ provider: "openai",
201
204
  voiceId: "shimmer",
202
205
  },
203
206
  },
@@ -247,6 +250,7 @@ export const promptTemplates = [
247
250
  displayName: {
248
251
  en: "Presenter",
249
252
  },
253
+ provider: "openai",
250
254
  voiceId: "shimmer",
251
255
  },
252
256
  },
@@ -289,6 +293,7 @@ export const promptTemplates = [
289
293
  displayName: {
290
294
  en: "Presenter",
291
295
  },
296
+ provider: "openai",
292
297
  voiceId: "shimmer",
293
298
  },
294
299
  },
@@ -340,6 +345,7 @@ export const promptTemplates = [
340
345
  displayName: {
341
346
  en: "Presenter",
342
347
  },
348
+ provider: "openai",
343
349
  voiceId: "shimmer",
344
350
  },
345
351
  },
@@ -391,6 +397,7 @@ export const promptTemplates = [
391
397
  displayName: {
392
398
  en: "Presenter",
393
399
  },
400
+ provider: "openai",
394
401
  voiceId: "shimmer",
395
402
  },
396
403
  },
@@ -444,6 +451,7 @@ export const promptTemplates = [
444
451
  displayName: {
445
452
  en: "Presenter",
446
453
  },
454
+ provider: "openai",
447
455
  voiceId: "shimmer",
448
456
  },
449
457
  },
@@ -502,6 +510,7 @@ export const promptTemplates = [
502
510
  displayName: {
503
511
  en: "Presenter",
504
512
  },
513
+ provider: "openai",
505
514
  voiceId: "shimmer",
506
515
  },
507
516
  },
@@ -545,6 +554,7 @@ export const promptTemplates = [
545
554
  displayName: {
546
555
  en: "Presenter",
547
556
  },
557
+ provider: "openai",
548
558
  voiceId: "shimmer",
549
559
  },
550
560
  },
@@ -588,6 +598,7 @@ export const promptTemplates = [
588
598
  displayName: {
589
599
  en: "Presenter",
590
600
  },
601
+ provider: "openai",
591
602
  voiceId: "shimmer",
592
603
  },
593
604
  },
@@ -639,6 +650,7 @@ export const promptTemplates = [
639
650
  displayName: {
640
651
  en: "Presenter",
641
652
  },
653
+ provider: "openai",
642
654
  voiceId: "shimmer",
643
655
  },
644
656
  },
@@ -690,6 +702,7 @@ export const promptTemplates = [
690
702
  displayName: {
691
703
  en: "Presenter",
692
704
  },
705
+ provider: "openai",
693
706
  voiceId: "shimmer",
694
707
  },
695
708
  },
@@ -741,6 +754,7 @@ export const promptTemplates = [
741
754
  displayName: {
742
755
  en: "Presenter",
743
756
  },
757
+ provider: "openai",
744
758
  voiceId: "shimmer",
745
759
  },
746
760
  },
@@ -839,6 +853,7 @@ export const promptTemplates = [
839
853
  displayName: {
840
854
  en: "Presenter",
841
855
  },
856
+ provider: "openai",
842
857
  voiceId: "shimmer",
843
858
  },
844
859
  },
@@ -891,6 +906,7 @@ export const promptTemplates = [
891
906
  displayName: {
892
907
  en: "Presenter",
893
908
  },
909
+ provider: "openai",
894
910
  voiceId: "shimmer",
895
911
  },
896
912
  },
@@ -936,6 +952,7 @@ export const promptTemplates = [
936
952
  displayName: {
937
953
  en: "Presenter",
938
954
  },
955
+ provider: "openai",
939
956
  voiceId: "shimmer",
940
957
  },
941
958
  },
@@ -335,6 +335,7 @@ export const mulmoPresentationStyleSchema = z.object({
335
335
  .default({
336
336
  speakers: {
337
337
  [defaultSpeaker]: {
338
+ provider: defaultProviders.tts,
338
339
  voiceId: "shimmer",
339
340
  displayName: {
340
341
  en: defaultSpeaker,
@@ -63,11 +63,18 @@ export const FfmpegContextGenerateOutput = (context, output, options = []) => {
63
63
  export const ffmpegGetMediaDuration = (filePath) => {
64
64
  return new Promise((resolve, reject) => {
65
65
  // Only check file existence for local paths, not URLs
66
- if (!filePath.startsWith("http://") && !filePath.startsWith("https://") && !fs.existsSync(filePath)) {
67
- // NOTE: We don't reject here for scripts/test/test_hello_image.json, which uses mock image agent.
68
- // reject(new Error(`File not found: ${filePath}`));
69
- resolve({ duration: 0, hasAudio: false });
70
- return;
66
+ if (!filePath.startsWith("http://") && !filePath.startsWith("https://")) {
67
+ if (!fs.existsSync(filePath)) {
68
+ // NOTE: We don't reject here for scripts/test/test_hello_image.json, which uses mock image agent.
69
+ // reject(new Error(`File not found: ${filePath}`));
70
+ resolve({ duration: 0, hasAudio: false });
71
+ return;
72
+ }
73
+ const stat = fs.statSync(filePath);
74
+ if (!stat.isFile()) {
75
+ reject("ffmpegGetMediaDuration: path is not file");
76
+ return;
77
+ }
71
78
  }
72
79
  ffmpeg.ffprobe(filePath, (err, metadata) => {
73
80
  if (err) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mulmocast",
3
- "version": "1.2.36",
3
+ "version": "1.2.38",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "lib/index.node.js",
@@ -82,7 +82,7 @@
82
82
  "@graphai/vanilla_node_agents": "^2.0.4",
83
83
  "@inquirer/input": "^4.2.4",
84
84
  "@inquirer/select": "^4.3.4",
85
- "@modelcontextprotocol/sdk": "^1.18.0",
85
+ "@modelcontextprotocol/sdk": "^1.18.2",
86
86
  "@mozilla/readability": "^0.6.0",
87
87
  "@tavily/core": "^0.5.11",
88
88
  "clipboardy": "^4.0.0",
@@ -105,14 +105,14 @@
105
105
  "@types/fluent-ffmpeg": "^2.1.26",
106
106
  "@types/jsdom": "^21.1.7",
107
107
  "@types/yargs": "^17.0.33",
108
- "eslint": "^9.35.0",
108
+ "eslint": "^9.36.0",
109
109
  "eslint-config-prettier": "^10.1.8",
110
110
  "eslint-plugin-prettier": "^5.5.4",
111
111
  "eslint-plugin-sonarjs": "^3.0.5",
112
112
  "prettier": "^3.6.2",
113
- "tsx": "^4.20.5",
113
+ "tsx": "^4.20.6",
114
114
  "typescript": "^5.9.2",
115
- "typescript-eslint": "^8.44.0"
115
+ "typescript-eslint": "^8.44.1"
116
116
  },
117
117
  "engines": {
118
118
  "node": ">=18.0.0"