mulmocast 2.1.40 → 2.2.1

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 (64) hide show
  1. package/README.md +1 -1
  2. package/assets/schemas/html_prompt.json +60 -0
  3. package/assets/schemas/mulmo_script.json +283 -0
  4. package/assets/slide_themes/corporate.json +18 -0
  5. package/assets/slide_themes/creative.json +18 -0
  6. package/assets/slide_themes/dark.json +18 -0
  7. package/assets/slide_themes/minimal.json +18 -0
  8. package/assets/slide_themes/pop.json +18 -0
  9. package/assets/slide_themes/warm.json +18 -0
  10. package/assets/styles/akira_comic.json +22 -0
  11. package/assets/styles/ani.json +43 -0
  12. package/assets/styles/children_book.json +13 -0
  13. package/assets/styles/comic_strips.json +13 -0
  14. package/assets/styles/drslump_comic.json +22 -0
  15. package/assets/styles/ghibli_comic.json +22 -0
  16. package/assets/styles/ghibli_shorts.json +28 -0
  17. package/assets/styles/ghost_comic.json +29 -0
  18. package/assets/styles/leda.json +29 -0
  19. package/assets/styles/onepiece_comic.json +22 -0
  20. package/assets/styles/slide_corporate.json +30 -0
  21. package/assets/styles/slide_creative.json +30 -0
  22. package/assets/styles/slide_dark.json +30 -0
  23. package/assets/styles/slide_minimal.json +30 -0
  24. package/assets/styles/slide_pop.json +30 -0
  25. package/assets/styles/slide_warm.json +30 -0
  26. package/lib/actions/image_agents.d.ts +2 -1
  27. package/lib/actions/image_agents.js +3 -3
  28. package/lib/actions/images.d.ts +3 -1
  29. package/lib/actions/images.js +1 -0
  30. package/lib/data/index.d.ts +2 -0
  31. package/lib/data/index.js +2 -0
  32. package/lib/data/slideStyles.d.ts +206 -0
  33. package/lib/data/slideStyles.js +206 -0
  34. package/lib/data/slideThemes.d.ts +134 -0
  35. package/lib/data/slideThemes.js +134 -0
  36. package/lib/methods/mulmo_media_source.d.ts +1 -0
  37. package/lib/methods/mulmo_media_source.js +17 -3
  38. package/lib/slide/blocks.d.ts +2 -0
  39. package/lib/slide/blocks.js +54 -2
  40. package/lib/slide/index.d.ts +2 -2
  41. package/lib/slide/index.js +1 -1
  42. package/lib/slide/layouts/columns.js +4 -4
  43. package/lib/slide/layouts/comparison.js +4 -3
  44. package/lib/slide/layouts/grid.js +3 -3
  45. package/lib/slide/render.js +24 -1
  46. package/lib/slide/schema.d.ts +454 -0
  47. package/lib/slide/schema.js +19 -0
  48. package/lib/slide/utils.d.ts +12 -1
  49. package/lib/slide/utils.js +55 -2
  50. package/lib/types/schema.d.ts +448 -0
  51. package/lib/types/slide.d.ts +454 -0
  52. package/lib/types/slide.js +19 -0
  53. package/lib/types/type.d.ts +1 -0
  54. package/lib/utils/context.d.ts +182 -0
  55. package/lib/utils/html_render.js +44 -6
  56. package/lib/utils/image_plugins/slide.d.ts +14 -0
  57. package/lib/utils/image_plugins/slide.js +101 -2
  58. package/package.json +9 -2
  59. package/scripts/test/img_detector.png +0 -0
  60. package/scripts/test/img_higgs.png +0 -0
  61. package/scripts/test/img_lhc.png +0 -0
  62. package/scripts/test/test_slide_chart_mermaid.json +148 -0
  63. package/scripts/test/test_slide_image_ref.json +261 -0
  64. package/scripts/test/test_slide_image_ref_en.json +287 -0
@@ -0,0 +1,29 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1",
4
+ "credit": "closing"
5
+ },
6
+ "speechParams": {
7
+ "speakers": {
8
+ "Presenter": {
9
+ "provider": "gemini",
10
+ "voiceId": "Leda",
11
+ "speechOptions": { "instruction": "Speak like a professional news presenter." }
12
+ }
13
+ }
14
+ },
15
+ "audioParams": {
16
+ "bgm": {
17
+ "kind": "url",
18
+ "url": "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/bgms/morning001.mp3"
19
+ }
20
+ },
21
+ "canvasSize": {
22
+ "width": 1024,
23
+ "height": 1536
24
+ },
25
+ "imageParams": {
26
+ "provider": "google",
27
+ "model": "gemini-2.5-flash-image"
28
+ }
29
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1",
4
+ "credit": "closing"
5
+ },
6
+ "canvasSize": {
7
+ "width": 1536,
8
+ "height": 1024
9
+ },
10
+ "imageParams": {
11
+ "style": "<style>One Piece aesthetic.</style>",
12
+ "images": {
13
+ "presenter": {
14
+ "type": "image",
15
+ "source": {
16
+ "kind": "url",
17
+ "url": "https://raw.githubusercontent.com/receptron/mulmocast-media/refs/heads/main/characters/onepiece_presenter.png"
18
+ }
19
+ }
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1",
4
+ "credit": "closing"
5
+ },
6
+ "slideParams": {
7
+ "theme": {
8
+ "colors": {
9
+ "bg": "F8FAFC",
10
+ "bgCard": "FFFFFF",
11
+ "bgCardAlt": "F1F5F9",
12
+ "text": "0F172A",
13
+ "textMuted": "475569",
14
+ "textDim": "94A3B8",
15
+ "primary": "2563EB",
16
+ "accent": "7C3AED",
17
+ "success": "16A34A",
18
+ "warning": "EA580C",
19
+ "danger": "DC2626",
20
+ "info": "0891B2",
21
+ "highlight": "DB2777"
22
+ },
23
+ "fonts": { "title": "Georgia", "body": "Helvetica", "mono": "Menlo" }
24
+ }
25
+ },
26
+ "canvasSize": {
27
+ "width": 1280,
28
+ "height": 720
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1",
4
+ "credit": "closing"
5
+ },
6
+ "slideParams": {
7
+ "theme": {
8
+ "colors": {
9
+ "bg": "1C1917",
10
+ "bgCard": "292524",
11
+ "bgCardAlt": "3D3733",
12
+ "text": "FAFAF9",
13
+ "textMuted": "D6D3D1",
14
+ "textDim": "A8A29E",
15
+ "primary": "F43F5E",
16
+ "accent": "FB923C",
17
+ "success": "4ADE80",
18
+ "warning": "FBBF24",
19
+ "danger": "EF4444",
20
+ "info": "38BDF8",
21
+ "highlight": "E879F9"
22
+ },
23
+ "fonts": { "title": "Georgia", "body": "Helvetica", "mono": "Consolas" }
24
+ }
25
+ },
26
+ "canvasSize": {
27
+ "width": 1280,
28
+ "height": 720
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1",
4
+ "credit": "closing"
5
+ },
6
+ "slideParams": {
7
+ "theme": {
8
+ "colors": {
9
+ "bg": "0F172A",
10
+ "bgCard": "1E293B",
11
+ "bgCardAlt": "334155",
12
+ "text": "F8FAFC",
13
+ "textMuted": "CBD5E1",
14
+ "textDim": "64748B",
15
+ "primary": "3B82F6",
16
+ "accent": "8B5CF6",
17
+ "success": "22C55E",
18
+ "warning": "F59E0B",
19
+ "danger": "EF4444",
20
+ "info": "14B8A6",
21
+ "highlight": "EC4899"
22
+ },
23
+ "fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
24
+ }
25
+ },
26
+ "canvasSize": {
27
+ "width": 1280,
28
+ "height": 720
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1",
4
+ "credit": "closing"
5
+ },
6
+ "slideParams": {
7
+ "theme": {
8
+ "colors": {
9
+ "bg": "F8FAFC",
10
+ "bgCard": "FFFFFF",
11
+ "bgCardAlt": "F1F5F9",
12
+ "text": "0F172A",
13
+ "textMuted": "475569",
14
+ "textDim": "94A3B8",
15
+ "primary": "2563EB",
16
+ "accent": "7C3AED",
17
+ "success": "059669",
18
+ "warning": "D97706",
19
+ "danger": "DC2626",
20
+ "info": "0891B2",
21
+ "highlight": "DB2777"
22
+ },
23
+ "fonts": { "title": "Trebuchet MS", "body": "Calibri", "mono": "Consolas" }
24
+ }
25
+ },
26
+ "canvasSize": {
27
+ "width": 1280,
28
+ "height": 720
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1",
4
+ "credit": "closing"
5
+ },
6
+ "slideParams": {
7
+ "theme": {
8
+ "colors": {
9
+ "bg": "FFF0F5",
10
+ "bgCard": "FFFFFF",
11
+ "bgCardAlt": "FDE8EF",
12
+ "text": "1A1A2E",
13
+ "textMuted": "4A4A6A",
14
+ "textDim": "9090B0",
15
+ "primary": "E91E63",
16
+ "accent": "7C3AED",
17
+ "success": "10B981",
18
+ "warning": "F59E0B",
19
+ "danger": "EF4444",
20
+ "info": "06B6D4",
21
+ "highlight": "F97316"
22
+ },
23
+ "fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
24
+ }
25
+ },
26
+ "canvasSize": {
27
+ "width": 1280,
28
+ "height": 720
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1",
4
+ "credit": "closing"
5
+ },
6
+ "slideParams": {
7
+ "theme": {
8
+ "colors": {
9
+ "bg": "FFFBEB",
10
+ "bgCard": "FFFFFF",
11
+ "bgCardAlt": "FEF3C7",
12
+ "text": "1C1917",
13
+ "textMuted": "57534E",
14
+ "textDim": "A8A29E",
15
+ "primary": "EA580C",
16
+ "accent": "D946EF",
17
+ "success": "16A34A",
18
+ "warning": "CA8A04",
19
+ "danger": "DC2626",
20
+ "info": "0284C7",
21
+ "highlight": "E11D48"
22
+ },
23
+ "fonts": { "title": "Georgia", "body": "Calibri", "mono": "Consolas" }
24
+ }
25
+ },
26
+ "canvasSize": {
27
+ "width": 1280,
28
+ "height": 720
29
+ }
30
+ }
@@ -52,12 +52,13 @@ export declare const imagePreprocessAgent: (namedInputs: {
52
52
  context: MulmoStudioContext;
53
53
  beat: MulmoBeat;
54
54
  index: number;
55
- imageRefs: Record<string, string>;
55
+ imageRefs?: Record<string, string>;
56
56
  }) => Promise<ImagePreprocessAgentResponse>;
57
57
  export declare const imagePluginAgent: (namedInputs: {
58
58
  context: MulmoStudioContext;
59
59
  beat: MulmoBeat;
60
60
  index: number;
61
+ imageRefs?: Record<string, string>;
61
62
  }) => Promise<void>;
62
63
  export declare const htmlImageGeneratorAgent: (namedInputs: {
63
64
  file: string;
@@ -88,18 +88,18 @@ export const imagePreprocessAgent = async (namedInputs) => {
88
88
  return { ...returnValue, imagePath, imageFromMovie: true }; // no image prompt, only movie prompt
89
89
  }
90
90
  // referenceImages for "edit_image", openai agent.
91
- const referenceImages = MulmoBeatMethods.getImageReferenceForImageGenerator(beat, imageRefs);
91
+ const referenceImages = MulmoBeatMethods.getImageReferenceForImageGenerator(beat, imageRefs ?? {});
92
92
  const prompt = imagePrompt(beat, imageAgentInfo.imageParams.style);
93
93
  // ImageGenearalPreprocessAgentResponse
94
94
  return { ...returnValue, imagePath, referenceImageForMovie: imagePath, imageAgentInfo, prompt, referenceImages };
95
95
  };
96
96
  export const imagePluginAgent = async (namedInputs) => {
97
- const { context, beat, index } = namedInputs;
97
+ const { context, beat, index, imageRefs } = namedInputs;
98
98
  const { imagePath } = getBeatPngImagePath(context, index);
99
99
  const plugin = MulmoBeatMethods.getPlugin(beat);
100
100
  try {
101
101
  MulmoStudioContextMethods.setBeatSessionState(context, "image", index, beat.id, true);
102
- const processorParams = { beat, context, imagePath, ...htmlStyle(context, beat) };
102
+ const processorParams = { beat, context, imagePath, imageRefs, ...htmlStyle(context, beat) };
103
103
  await plugin.process(processorParams);
104
104
  MulmoStudioContextMethods.setBeatSessionState(context, "image", index, beat.id, false);
105
105
  }
@@ -29,7 +29,7 @@ export declare const beat_graph_data: {
29
29
  context: MulmoStudioContext;
30
30
  beat: import("../types/type.js").MulmoBeat;
31
31
  index: number;
32
- imageRefs: Record<string, string>;
32
+ imageRefs?: Record<string, string>;
33
33
  }) => Promise<({
34
34
  imageParams?: MulmoImageParams;
35
35
  movieFile?: string;
@@ -162,11 +162,13 @@ export declare const beat_graph_data: {
162
162
  context: MulmoStudioContext;
163
163
  beat: import("../types/type.js").MulmoBeat;
164
164
  index: number;
165
+ imageRefs?: Record<string, string>;
165
166
  }) => Promise<void>;
166
167
  inputs: {
167
168
  context: string;
168
169
  beat: string;
169
170
  index: string;
171
+ imageRefs: string;
170
172
  onComplete: string[];
171
173
  };
172
174
  };
@@ -76,6 +76,7 @@ export const beat_graph_data = {
76
76
  context: ":context",
77
77
  beat: ":beat",
78
78
  index: ":__mapIndex",
79
+ imageRefs: ":imageRefs",
79
80
  onComplete: [":preprocessor"],
80
81
  },
81
82
  },
@@ -3,3 +3,5 @@ export * from "./scriptTemplates.js";
3
3
  export * from "./templateDataSet.js";
4
4
  export * from "./bgmAssets.js";
5
5
  export * from "./markdownStyles.js";
6
+ export * from "./slideThemes.js";
7
+ export * from "./slideStyles.js";
package/lib/data/index.js CHANGED
@@ -3,3 +3,5 @@ export * from "./scriptTemplates.js";
3
3
  export * from "./templateDataSet.js";
4
4
  export * from "./bgmAssets.js";
5
5
  export * from "./markdownStyles.js";
6
+ export * from "./slideThemes.js";
7
+ export * from "./slideStyles.js";
@@ -0,0 +1,206 @@
1
+ export declare const slideStyles: {
2
+ slide_corporate: {
3
+ $mulmocast: {
4
+ credit: string;
5
+ version: string;
6
+ };
7
+ canvasSize: {
8
+ height: number;
9
+ width: number;
10
+ };
11
+ slideParams: {
12
+ theme: {
13
+ colors: {
14
+ accent: string;
15
+ bg: string;
16
+ bgCard: string;
17
+ bgCardAlt: string;
18
+ danger: string;
19
+ highlight: string;
20
+ info: string;
21
+ primary: string;
22
+ success: string;
23
+ text: string;
24
+ textDim: string;
25
+ textMuted: string;
26
+ warning: string;
27
+ };
28
+ fonts: {
29
+ body: string;
30
+ mono: string;
31
+ title: string;
32
+ };
33
+ };
34
+ };
35
+ };
36
+ slide_creative: {
37
+ $mulmocast: {
38
+ credit: string;
39
+ version: string;
40
+ };
41
+ canvasSize: {
42
+ height: number;
43
+ width: number;
44
+ };
45
+ slideParams: {
46
+ theme: {
47
+ colors: {
48
+ accent: string;
49
+ bg: string;
50
+ bgCard: string;
51
+ bgCardAlt: string;
52
+ danger: string;
53
+ highlight: string;
54
+ info: string;
55
+ primary: string;
56
+ success: string;
57
+ text: string;
58
+ textDim: string;
59
+ textMuted: string;
60
+ warning: string;
61
+ };
62
+ fonts: {
63
+ body: string;
64
+ mono: string;
65
+ title: string;
66
+ };
67
+ };
68
+ };
69
+ };
70
+ slide_dark: {
71
+ $mulmocast: {
72
+ credit: string;
73
+ version: string;
74
+ };
75
+ canvasSize: {
76
+ height: number;
77
+ width: number;
78
+ };
79
+ slideParams: {
80
+ theme: {
81
+ colors: {
82
+ accent: string;
83
+ bg: string;
84
+ bgCard: string;
85
+ bgCardAlt: string;
86
+ danger: string;
87
+ highlight: string;
88
+ info: string;
89
+ primary: string;
90
+ success: string;
91
+ text: string;
92
+ textDim: string;
93
+ textMuted: string;
94
+ warning: string;
95
+ };
96
+ fonts: {
97
+ body: string;
98
+ mono: string;
99
+ title: string;
100
+ };
101
+ };
102
+ };
103
+ };
104
+ slide_minimal: {
105
+ $mulmocast: {
106
+ credit: string;
107
+ version: string;
108
+ };
109
+ canvasSize: {
110
+ height: number;
111
+ width: number;
112
+ };
113
+ slideParams: {
114
+ theme: {
115
+ colors: {
116
+ accent: string;
117
+ bg: string;
118
+ bgCard: string;
119
+ bgCardAlt: string;
120
+ danger: string;
121
+ highlight: string;
122
+ info: string;
123
+ primary: string;
124
+ success: string;
125
+ text: string;
126
+ textDim: string;
127
+ textMuted: string;
128
+ warning: string;
129
+ };
130
+ fonts: {
131
+ body: string;
132
+ mono: string;
133
+ title: string;
134
+ };
135
+ };
136
+ };
137
+ };
138
+ slide_pop: {
139
+ $mulmocast: {
140
+ credit: string;
141
+ version: string;
142
+ };
143
+ canvasSize: {
144
+ height: number;
145
+ width: number;
146
+ };
147
+ slideParams: {
148
+ theme: {
149
+ colors: {
150
+ accent: string;
151
+ bg: string;
152
+ bgCard: string;
153
+ bgCardAlt: string;
154
+ danger: string;
155
+ highlight: string;
156
+ info: string;
157
+ primary: string;
158
+ success: string;
159
+ text: string;
160
+ textDim: string;
161
+ textMuted: string;
162
+ warning: string;
163
+ };
164
+ fonts: {
165
+ body: string;
166
+ mono: string;
167
+ title: string;
168
+ };
169
+ };
170
+ };
171
+ };
172
+ slide_warm: {
173
+ $mulmocast: {
174
+ credit: string;
175
+ version: string;
176
+ };
177
+ canvasSize: {
178
+ height: number;
179
+ width: number;
180
+ };
181
+ slideParams: {
182
+ theme: {
183
+ colors: {
184
+ accent: string;
185
+ bg: string;
186
+ bgCard: string;
187
+ bgCardAlt: string;
188
+ danger: string;
189
+ highlight: string;
190
+ info: string;
191
+ primary: string;
192
+ success: string;
193
+ text: string;
194
+ textDim: string;
195
+ textMuted: string;
196
+ warning: string;
197
+ };
198
+ fonts: {
199
+ body: string;
200
+ mono: string;
201
+ title: string;
202
+ };
203
+ };
204
+ };
205
+ };
206
+ };