mulmocast 1.2.5 → 1.2.7

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 (40) hide show
  1. package/assets/templates/sifi_story.json +29 -0
  2. package/lib/actions/image_agents.d.ts +4 -0
  3. package/lib/actions/image_agents.js +3 -3
  4. package/lib/actions/images.js +4 -2
  5. package/lib/actions/movie.js +1 -1
  6. package/lib/agents/image_openai_agent.js +1 -1
  7. package/lib/agents/lipsync_replicate_agent.js +9 -3
  8. package/lib/cli/commands/tool/index.js +2 -1
  9. package/lib/cli/commands/tool/whisper/builder.d.ts +4 -0
  10. package/lib/cli/commands/tool/whisper/builder.js +7 -0
  11. package/lib/cli/commands/tool/whisper/handler.d.ts +5 -0
  12. package/lib/cli/commands/tool/whisper/handler.js +100 -0
  13. package/lib/cli/commands/tool/whisper/index.d.ts +4 -0
  14. package/lib/cli/commands/tool/whisper/index.js +4 -0
  15. package/lib/data/promptTemplates.d.ts +76 -0
  16. package/lib/data/promptTemplates.js +55 -0
  17. package/lib/data/scriptTemplates.d.ts +20 -0
  18. package/lib/data/scriptTemplates.js +26 -0
  19. package/lib/data/templateDataSet.d.ts +1 -0
  20. package/lib/data/templateDataSet.js +4 -0
  21. package/lib/types/schema.d.ts +8 -0
  22. package/lib/types/schema.js +1 -0
  23. package/lib/utils/context.d.ts +2 -0
  24. package/lib/utils/context.js +1 -0
  25. package/lib/utils/file.d.ts +4 -1
  26. package/lib/utils/file.js +4 -4
  27. package/package.json +8 -7
  28. package/scripts/templates/story_with_characters.json +25 -0
  29. package/lib/index.d.ts +0 -8
  30. package/lib/index.js +0 -9
  31. package/lib/methods/mulmo_script_template.d.ts +0 -4
  32. package/lib/methods/mulmo_script_template.js +0 -6
  33. package/lib/utils/assets.d.ts +0 -18
  34. package/lib/utils/assets.js +0 -101
  35. package/lib/utils/preprocess.d.ts +0 -343
  36. package/lib/utils/preprocess.js +0 -58
  37. package/lib/utils/system_prompt.d.ts +0 -1
  38. package/lib/utils/system_prompt.js +0 -1
  39. package/lib/utils/templates.d.ts +0 -3
  40. package/lib/utils/templates.js +0 -46
@@ -14,6 +14,7 @@ export declare const createStudioData: (_mulmoScript: MulmoScript, fileName: str
14
14
  soundEffectFile?: string | undefined;
15
15
  lipSyncFile?: string | undefined;
16
16
  captionFile?: string | undefined;
17
+ htmlImageFile?: string | undefined;
17
18
  }[];
18
19
  script: {
19
20
  lang: string;
@@ -360,6 +361,7 @@ export declare const initializeContextFromFiles: (files: FileObject, raiseError:
360
361
  soundEffectFile?: string | undefined;
361
362
  lipSyncFile?: string | undefined;
362
363
  captionFile?: string | undefined;
364
+ htmlImageFile?: string | undefined;
363
365
  }[];
364
366
  script: {
365
367
  lang: string;
@@ -5,6 +5,7 @@ import { mulmoStudioSchema, mulmoCaptionParamsSchema, mulmoPresentationStyleSche
5
5
  import { MulmoPresentationStyleMethods, MulmoScriptMethods, MulmoStudioMultiLingualMethod } from "../methods/index.js";
6
6
  const mulmoCredit = (speaker) => {
7
7
  return {
8
+ id: "mulmo_credit",
8
9
  speaker,
9
10
  text: "",
10
11
  image: {
@@ -24,7 +24,10 @@ export declare const getAudioFilePath: (audioDirPath: string, dirName: string, f
24
24
  export declare const getAudioArtifactFilePath: (context: MulmoStudioContext) => string;
25
25
  export declare const getOutputVideoFilePath: (outDirPath: string, fileName: string, lang?: string, caption?: string) => string;
26
26
  export declare const imageSuffix = "p";
27
- export declare const getBeatPngImagePath: (context: MulmoStudioContext, index: number) => string;
27
+ export declare const getBeatPngImagePath: (context: MulmoStudioContext, index: number) => {
28
+ imagePath: string;
29
+ htmlImageFile: string;
30
+ };
28
31
  export declare const getBeatMoviePaths: (context: MulmoStudioContext, index: number) => {
29
32
  movieFile: string;
30
33
  soundEffectFile: string;
package/lib/utils/file.js CHANGED
@@ -89,10 +89,10 @@ export const imageSuffix = "p";
89
89
  export const getBeatPngImagePath = (context, index) => {
90
90
  const imageProjectDirPath = MulmoStudioContextMethods.getImageProjectDirPath(context);
91
91
  const beat = context.studio.script.beats[index]; // beat could be undefined only in a test case.
92
- if (beat?.id) {
93
- return `${imageProjectDirPath}/${beat.id}.png`;
94
- }
95
- return `${imageProjectDirPath}/${index}${imageSuffix}.png`;
92
+ const filename = beat?.id ? `${beat.id}` : `${index}${imageSuffix}`;
93
+ const imagePath = `${imageProjectDirPath}/${filename}.png`;
94
+ const htmlImageFile = `${imageProjectDirPath}/${filename}_html.png`;
95
+ return { imagePath, htmlImageFile };
96
96
  };
97
97
  export const getBeatMoviePaths = (context, index) => {
98
98
  const imageProjectDirPath = MulmoStudioContextMethods.getImageProjectDirPath(context);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mulmocast",
3
- "version": "1.2.5",
3
+ "version": "1.2.7",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "lib/index.node.js",
@@ -50,6 +50,7 @@
50
50
  "prompt": "npx tsx ./src/cli/bin.ts tool prompt",
51
51
  "schema": "npx tsx ./src/cli/bin.ts tool schema",
52
52
  "story_to_script": "npx tsx ./src/cli/bin.ts tool story_to_script",
53
+ "whisper": "npx tsx ./src/cli/bin.ts tool whisper",
53
54
  "latest": "yarn upgrade-interactive --latest",
54
55
  "format": "prettier --write '{src,scripts,assets/templates,assets/styles,draft,ideason,scripts_mag2,proto,test,batch,graphai,output,docs/scripts}/**/*.{ts,json,yaml}'",
55
56
  "deep_research": "npx tsx ./src/tools/deep_research.ts",
@@ -66,20 +67,20 @@
66
67
  "homepage": "https://github.com/receptron/mulmocast-cli#readme",
67
68
  "dependencies": {
68
69
  "@google-cloud/text-to-speech": "^6.2.0",
69
- "@google/genai": "^1.13.0",
70
+ "@google/genai": "^1.15.0",
70
71
  "@graphai/anthropic_agent": "^2.0.11",
71
72
  "@graphai/browserless_agent": "^2.0.1",
72
73
  "@graphai/gemini_agent": "^2.0.1",
73
74
  "@graphai/groq_agent": "^2.0.2",
74
75
  "@graphai/input_agents": "^1.0.2",
75
- "@graphai/openai_agent": "^2.0.5",
76
+ "@graphai/openai_agent": "^2.0.7",
76
77
  "@graphai/stream_agent_filter": "^2.0.2",
77
78
  "@graphai/vanilla": "^2.0.12",
78
79
  "@graphai/vanilla_node_agents": "^2.0.4",
79
80
  "@inquirer/input": "^4.2.1",
80
81
  "@inquirer/select": "^4.3.1",
81
- "@modelcontextprotocol/sdk": "^1.15.1",
82
- "@tavily/core": "^0.5.9",
82
+ "@modelcontextprotocol/sdk": "^1.17.3",
83
+ "@tavily/core": "^0.5.11",
83
84
  "canvas": "^3.2.0",
84
85
  "clipboardy": "^4.0.0",
85
86
  "dotenv": "^17.2.1",
@@ -87,8 +88,8 @@
87
88
  "graphai": "^2.0.14",
88
89
  "marked": "^16.2.0",
89
90
  "ora": "^8.2.0",
90
- "puppeteer": "^24.16.2",
91
- "replicate": "^1.0.1",
91
+ "puppeteer": "^24.17.0",
92
+ "replicate": "^1.1.0",
92
93
  "yaml": "^2.8.1",
93
94
  "yargs": "^18.0.0",
94
95
  "zod": "^3.25.76",
@@ -0,0 +1,25 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1",
4
+ "credit": "closing"
5
+ },
6
+ "title": "[TITLE: Brief, engaging title for the topic]",
7
+ "lang": "en",
8
+ "beats": [
9
+ {
10
+ "text": "[STORY TEXT FOR THIS BEAT FOR THIS BEAT]",
11
+ "imagePrompt": "[IMAGE_PROMPT FOR THIS BEAT with both characters]",
12
+ "imageNames": ["[CHARACTER_ID_1]", "[CHARACTER_ID_2]"]
13
+ },
14
+ {
15
+ "text": "[STORY TEXT FOR THIS BEAT FOR THIS BEAT]",
16
+ "imagePrompt": "[IMAGE_PROMPT FOR THIS BEAT with a single character]",
17
+ "imageNames": ["[CHARACTER_ID_1]"]
18
+ },
19
+ {
20
+ "text": "[STORY TEXT FOR THIS BEAT FOR THIS BEAT]",
21
+ "imagePrompt": "[IMAGE_PROMPT FOR THIS BEAT with another character]",
22
+ "imageNames": ["[CHARACTER_ID_2]"]
23
+ }
24
+ ]
25
+ }
package/lib/index.d.ts DELETED
@@ -1,8 +0,0 @@
1
- export * from "./actions/index.js";
2
- export * from "./cli/helpers.js";
3
- export * from "./utils/file.js";
4
- export * from "./utils/ffmpeg_utils.js";
5
- export * from "./utils/provider2agent.js";
6
- export * from "./methods/index.js";
7
- export * from "./agents/index.js";
8
- export * from "./types/index.js";
package/lib/index.js DELETED
@@ -1,9 +0,0 @@
1
- // NOTE: If you want to support usage in the browser codebase, also add to src/index.browser.ts
2
- export * from "./actions/index.js";
3
- export * from "./cli/helpers.js";
4
- export * from "./utils/file.js";
5
- export * from "./utils/ffmpeg_utils.js";
6
- export * from "./utils/provider2agent.js";
7
- export * from "./methods/index.js";
8
- export * from "./agents/index.js";
9
- export * from "./types/index.js";
@@ -1,4 +0,0 @@
1
- import { MulmoScript, MulmoPromptTemplate } from "../types/index.js";
2
- export declare const MulmoScriptTemplateMethods: {
3
- getSystemPrompt(template: MulmoPromptTemplate, script?: MulmoScript): string;
4
- };
@@ -1,6 +0,0 @@
1
- import { getMulmoScriptTemplateSystemPrompt } from "../utils/prompt.js";
2
- export const MulmoScriptTemplateMethods = {
3
- getSystemPrompt(template, script) {
4
- return getMulmoScriptTemplateSystemPrompt(template, script);
5
- },
6
- };
@@ -1,18 +0,0 @@
1
- type BgmAsset = {
2
- name: string;
3
- title: string;
4
- url: string;
5
- suno_url: string;
6
- date: string;
7
- duration: string;
8
- account: string;
9
- original_license: string;
10
- prompt: string;
11
- model: string;
12
- };
13
- export type BgmAssets = {
14
- license: string;
15
- bgms: BgmAsset[];
16
- };
17
- export declare const bgmAssets: BgmAssets;
18
- export {};
@@ -1,101 +0,0 @@
1
- export const bgmAssets = {
2
- license: "Free to distribute as the BMG of media generated by MulmoCast, including commercial use.",
3
- bgms: [
4
- {
5
- name: "story001.mp3",
6
- title: "Whispered Melody",
7
- url: "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/bgms/story001.mp3",
8
- suno_url: "https://suno.com/s/v6zer50aQJu8Y0qA",
9
- date: "2025-06-17",
10
- duration: "03:17",
11
- account: "@snakajima",
12
- original_license: "Generated by Suno with commercial use rights (PRO Plan)",
13
- prompt: "instrumental, smooth, piano",
14
- model: "v4.5 beta",
15
- },
16
- {
17
- name: "story002.mp3",
18
- title: "Rise and Shine",
19
- url: "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/bgms/story002.mp3",
20
- suno_url: "https://suno.com/s/mJnvyu3UXnkdAPfQ",
21
- date: "2025-06-17",
22
- duration: "04:04",
23
- account: "@snakajima",
24
- original_license: "Generated by Suno with commercial use rights (PRO Plan)",
25
- prompt: "techno, inspiring, piano",
26
- model: "v4.5 beta",
27
- },
28
- {
29
- name: "story003.mp3",
30
- title: "Chasing the Sunset",
31
- url: "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/bgms/story003.mp3",
32
- suno_url: "https://suno.com/s/2zGjMQ9vURJbaMZA",
33
- date: "2025-06-17",
34
- duration: "02:49",
35
- account: "@snakajima",
36
- original_license: "Generated by Suno with commercial use rights (PRO Plan)",
37
- prompt: "piano, inspiring, sunset",
38
- model: "v4.5 beta",
39
- },
40
- {
41
- name: "story004.mp3",
42
- title: "Whispering Keys",
43
- url: "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/bgms/story004.mp3",
44
- suno_url: "https://suno.com/s/0SFoBRsBWsncw6tu",
45
- date: "2025-06-17",
46
- duration: "04:00",
47
- account: "@snakajima",
48
- original_license: "Generated by Suno with commercial use rights (PRO Plan)",
49
- prompt: "Piano, classical, ambient",
50
- model: "v4",
51
- },
52
- {
53
- name: "story005.mp3",
54
- title: "Whisper of Ivory",
55
- url: "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/bgms/story005.mp3",
56
- suno_url: "https://suno.com/s/0SFoBRsBWsncw6tu",
57
- date: "2025-06-17",
58
- duration: "04:00",
59
- account: "@snakajima",
60
- original_license: "Generated by Suno with commercial use rights (PRO Plan)",
61
- prompt: "Piano solo, classical, ambient",
62
- model: "v4",
63
- },
64
- {
65
- name: "theme001.mp3",
66
- title: "Rise of the Flame",
67
- url: "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/bgms/theme001.mp3",
68
- suno_url: "https://suno.com/s/WhYOf8oJYhBgSKET",
69
- date: "2025-06-20",
70
- duration: "03:23",
71
- account: "@snakajima",
72
- original_license: "Generated by Suno with commercial use rights (PRO Plan)",
73
- prompt: "Olympic Theme, classical, emotional",
74
- model: "v4",
75
- },
76
- {
77
- name: "olympic001.mp3",
78
- title: "Olympic-style Theme Music",
79
- url: "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/bgms/olympic001.mp3",
80
- suno_url: "https://suno.com/s/32wpnmCrkFVvkTSQ",
81
- date: "2025-07-17",
82
- duration: "02:54",
83
- account: "@snakajima",
84
- original_license: "Generated by Suno with commercial use rights (PRO Plan)",
85
- prompt: "Epic orchestral fanfare in the style of John Williams' Olympic Fanfare and Theme. Bright brass fanfare, soaring strings, powerful percussion, and heroic French horn melodies. Triumphant and majestic mood, suitable for an opening ceremony or national celebration. Emphasize dynamic builds, rich harmonies, and cinematic grandeur.",
86
- model: "v4.5+",
87
- },
88
- {
89
- name: "morning001.mp3",
90
- title: "Morning Dance",
91
- url: "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/bgms/morning001.mp3",
92
- suno_url: "https://suno.com/s/9MTkutZYqxeyBlwK",
93
- date: "2025-07-17",
94
- duration: "03:52",
95
- account: "@snakajima",
96
- original_license: "morning, piano solo, Japanese name, sexy",
97
- prompt: "morning, piano solo, Japanese name, sexy",
98
- model: "v4.5+",
99
- },
100
- ],
101
- };
@@ -1,343 +0,0 @@
1
- import { MulmoStudio, MulmoScript, MulmoPresentationStyle } from "../types/index.js";
2
- export declare const createOrUpdateStudioData: (_mulmoScript: MulmoScript, currentStudio: MulmoStudio | undefined, fileName: string, videoCaptionLang?: string, presentationStyle?: MulmoPresentationStyle | null) => {
3
- beats: {
4
- duration?: number | undefined;
5
- startAt?: number | undefined;
6
- hash?: string | undefined;
7
- audioDuration?: number | undefined;
8
- movieDuration?: number | undefined;
9
- silenceDuration?: number | undefined;
10
- hasMovieAudio?: boolean | undefined;
11
- audioFile?: string | undefined;
12
- imageFile?: string | undefined;
13
- movieFile?: string | undefined;
14
- soundEffectFile?: string | undefined;
15
- lipSyncFile?: string | undefined;
16
- captionFile?: string | undefined;
17
- }[];
18
- script: {
19
- lang: string;
20
- imageParams: {
21
- provider: string;
22
- model?: string | undefined;
23
- style?: string | undefined;
24
- quality?: string | undefined;
25
- moderation?: string | undefined;
26
- images?: Record<string, {
27
- type: "image";
28
- source: {
29
- url: string;
30
- kind: "url";
31
- } | {
32
- kind: "base64";
33
- data: string;
34
- } | {
35
- text: string;
36
- kind: "text";
37
- } | {
38
- path: string;
39
- kind: "path";
40
- };
41
- } | {
42
- type: "imagePrompt";
43
- prompt: string;
44
- }> | undefined;
45
- };
46
- audioParams: {
47
- padding: number;
48
- introPadding: number;
49
- closingPadding: number;
50
- outroPadding: number;
51
- bgmVolume: number;
52
- audioVolume: number;
53
- suppressSpeech: boolean;
54
- bgm?: {
55
- url: string;
56
- kind: "url";
57
- } | {
58
- kind: "base64";
59
- data: string;
60
- } | {
61
- text: string;
62
- kind: "text";
63
- } | {
64
- path: string;
65
- kind: "path";
66
- } | undefined;
67
- };
68
- movieParams: {
69
- provider?: string | undefined;
70
- model?: string | undefined;
71
- fillOption?: {
72
- style: "aspectFit" | "aspectFill";
73
- } | undefined;
74
- transition?: {
75
- type: "fade" | "slideout_left";
76
- duration: number;
77
- } | undefined;
78
- };
79
- soundEffectParams: {
80
- provider?: string | undefined;
81
- model?: string | undefined;
82
- };
83
- $mulmocast: {
84
- version: "1.1";
85
- credit?: "closing" | undefined;
86
- };
87
- canvasSize: {
88
- width: number;
89
- height: number;
90
- };
91
- speechParams: {
92
- speakers: Record<string, {
93
- voiceId: string;
94
- lang?: Record<string, {
95
- voiceId: string;
96
- displayName?: Record<string, string> | undefined;
97
- isDefault?: boolean | undefined;
98
- speechOptions?: {
99
- speed?: number | undefined;
100
- instruction?: string | undefined;
101
- } | undefined;
102
- provider?: string | undefined;
103
- model?: string | undefined;
104
- }> | undefined;
105
- displayName?: Record<string, string> | undefined;
106
- isDefault?: boolean | undefined;
107
- speechOptions?: {
108
- speed?: number | undefined;
109
- instruction?: string | undefined;
110
- } | undefined;
111
- provider?: string | undefined;
112
- model?: string | undefined;
113
- }>;
114
- };
115
- beats: {
116
- text: string;
117
- image?: {
118
- type: "markdown";
119
- markdown: string | string[];
120
- } | {
121
- type: "web";
122
- url: string;
123
- } | {
124
- type: "pdf";
125
- source: {
126
- url: string;
127
- kind: "url";
128
- } | {
129
- kind: "base64";
130
- data: string;
131
- } | {
132
- text: string;
133
- kind: "text";
134
- } | {
135
- path: string;
136
- kind: "path";
137
- };
138
- } | {
139
- type: "image";
140
- source: {
141
- url: string;
142
- kind: "url";
143
- } | {
144
- kind: "base64";
145
- data: string;
146
- } | {
147
- text: string;
148
- kind: "text";
149
- } | {
150
- path: string;
151
- kind: "path";
152
- };
153
- } | {
154
- type: "svg";
155
- source: {
156
- url: string;
157
- kind: "url";
158
- } | {
159
- kind: "base64";
160
- data: string;
161
- } | {
162
- text: string;
163
- kind: "text";
164
- } | {
165
- path: string;
166
- kind: "path";
167
- };
168
- } | {
169
- type: "movie";
170
- source: {
171
- url: string;
172
- kind: "url";
173
- } | {
174
- kind: "base64";
175
- data: string;
176
- } | {
177
- text: string;
178
- kind: "text";
179
- } | {
180
- path: string;
181
- kind: "path";
182
- };
183
- } | {
184
- type: "textSlide";
185
- slide: {
186
- title: string;
187
- subtitle?: string | undefined;
188
- bullets?: string[] | undefined;
189
- };
190
- } | {
191
- type: "chart";
192
- title: string;
193
- chartData: Record<string, any>;
194
- } | {
195
- code: {
196
- url: string;
197
- kind: "url";
198
- } | {
199
- kind: "base64";
200
- data: string;
201
- } | {
202
- text: string;
203
- kind: "text";
204
- } | {
205
- path: string;
206
- kind: "path";
207
- };
208
- type: "mermaid";
209
- title: string;
210
- appendix?: string[] | undefined;
211
- } | {
212
- type: "html_tailwind";
213
- html: string | string[];
214
- } | {
215
- type: "beat";
216
- id?: string | undefined;
217
- } | {
218
- type: "voice_over";
219
- startAt?: number | undefined;
220
- } | undefined;
221
- audio?: {
222
- type: "audio";
223
- source: {
224
- url: string;
225
- kind: "url";
226
- } | {
227
- kind: "base64";
228
- data: string;
229
- } | {
230
- text: string;
231
- kind: "text";
232
- } | {
233
- path: string;
234
- kind: "path";
235
- };
236
- } | {
237
- type: "midi";
238
- source: string;
239
- } | undefined;
240
- duration?: number | undefined;
241
- speechOptions?: {
242
- speed?: number | undefined;
243
- instruction?: string | undefined;
244
- } | undefined;
245
- id?: string | undefined;
246
- imagePrompt?: string | undefined;
247
- speaker?: string | undefined;
248
- description?: string | undefined;
249
- imageParams?: {
250
- provider: string;
251
- model?: string | undefined;
252
- style?: string | undefined;
253
- quality?: string | undefined;
254
- moderation?: string | undefined;
255
- images?: Record<string, {
256
- type: "image";
257
- source: {
258
- url: string;
259
- kind: "url";
260
- } | {
261
- kind: "base64";
262
- data: string;
263
- } | {
264
- text: string;
265
- kind: "text";
266
- } | {
267
- path: string;
268
- kind: "path";
269
- };
270
- } | {
271
- type: "imagePrompt";
272
- prompt: string;
273
- }> | undefined;
274
- } | undefined;
275
- audioParams?: {
276
- movieVolume: number;
277
- padding?: number | undefined;
278
- } | undefined;
279
- movieParams?: {
280
- speed?: number | undefined;
281
- provider?: string | undefined;
282
- model?: string | undefined;
283
- fillOption?: {
284
- style: "aspectFit" | "aspectFill";
285
- } | undefined;
286
- } | undefined;
287
- soundEffectParams?: {
288
- provider?: string | undefined;
289
- model?: string | undefined;
290
- } | undefined;
291
- lipSyncParams?: {
292
- provider?: string | undefined;
293
- model?: string | undefined;
294
- } | undefined;
295
- htmlImageParams?: {
296
- model?: string | undefined;
297
- } | undefined;
298
- textSlideParams?: {
299
- cssStyles: string | string[];
300
- } | undefined;
301
- captionParams?: {
302
- styles: string[];
303
- lang?: string | undefined;
304
- } | undefined;
305
- imageNames?: string[] | undefined;
306
- moviePrompt?: string | undefined;
307
- soundEffectPrompt?: string | undefined;
308
- htmlPrompt?: {
309
- prompt: string;
310
- data?: any;
311
- images?: Record<string, any> | undefined;
312
- systemPrompt?: string | undefined;
313
- } | undefined;
314
- enableLipSync?: boolean | undefined;
315
- }[];
316
- title?: string | undefined;
317
- description?: string | undefined;
318
- lipSyncParams?: {
319
- provider?: string | undefined;
320
- model?: string | undefined;
321
- } | undefined;
322
- htmlImageParams?: {
323
- provider: string;
324
- model?: string | undefined;
325
- } | undefined;
326
- textSlideParams?: {
327
- cssStyles: string | string[];
328
- } | undefined;
329
- captionParams?: {
330
- styles: string[];
331
- lang?: string | undefined;
332
- } | undefined;
333
- references?: {
334
- type: string;
335
- url: string;
336
- title?: string | undefined;
337
- description?: string | undefined;
338
- }[] | undefined;
339
- imagePath?: string | undefined;
340
- __test_invalid__?: boolean | undefined;
341
- };
342
- filename: string;
343
- };