mulmocast 2.6.16 → 2.6.17

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 (53) hide show
  1. package/lib/actions/viewer.js +1 -1
  2. package/lib/cli/bin.js +0 -0
  3. package/lib/mcp/server.js +0 -0
  4. package/lib/types/schema.d.ts +457 -457
  5. package/lib/types/schema.js +2 -2
  6. package/lib/utils/context.d.ts +728 -728
  7. package/lib/utils/image_plugins/slide.d.ts +1 -1
  8. package/lib/utils/image_plugins/slide.js +1 -1
  9. package/package.json +7 -6
  10. package/lib/data/styles.d.ts +0 -255
  11. package/lib/data/styles.js +0 -284
  12. package/lib/slide/blocks.d.ts +0 -13
  13. package/lib/slide/blocks.js +0 -251
  14. package/lib/slide/index.d.ts +0 -6
  15. package/lib/slide/index.js +0 -7
  16. package/lib/slide/layouts/big_quote.d.ts +0 -2
  17. package/lib/slide/layouts/big_quote.js +0 -19
  18. package/lib/slide/layouts/columns.d.ts +0 -2
  19. package/lib/slide/layouts/columns.js +0 -53
  20. package/lib/slide/layouts/comparison.d.ts +0 -2
  21. package/lib/slide/layouts/comparison.js +0 -25
  22. package/lib/slide/layouts/funnel.d.ts +0 -2
  23. package/lib/slide/layouts/funnel.js +0 -25
  24. package/lib/slide/layouts/grid.d.ts +0 -2
  25. package/lib/slide/layouts/grid.js +0 -38
  26. package/lib/slide/layouts/index.d.ts +0 -3
  27. package/lib/slide/layouts/index.js +0 -46
  28. package/lib/slide/layouts/matrix.d.ts +0 -2
  29. package/lib/slide/layouts/matrix.js +0 -53
  30. package/lib/slide/layouts/split.d.ts +0 -2
  31. package/lib/slide/layouts/split.js +0 -51
  32. package/lib/slide/layouts/stats.d.ts +0 -2
  33. package/lib/slide/layouts/stats.js +0 -23
  34. package/lib/slide/layouts/table.d.ts +0 -2
  35. package/lib/slide/layouts/table.js +0 -10
  36. package/lib/slide/layouts/timeline.d.ts +0 -2
  37. package/lib/slide/layouts/timeline.js +0 -27
  38. package/lib/slide/layouts/title.d.ts +0 -2
  39. package/lib/slide/layouts/title.js +0 -19
  40. package/lib/slide/layouts/waterfall.d.ts +0 -2
  41. package/lib/slide/layouts/waterfall.js +0 -63
  42. package/lib/slide/render.d.ts +0 -17
  43. package/lib/slide/render.js +0 -101
  44. package/lib/slide/schema.d.ts +0 -9309
  45. package/lib/slide/schema.js +0 -434
  46. package/lib/slide/utils.d.ts +0 -76
  47. package/lib/slide/utils.js +0 -243
  48. package/lib/types/slide.d.ts +0 -9309
  49. package/lib/types/slide.js +0 -434
  50. package/lib/utils/browser_pool.d.ts +0 -5
  51. package/lib/utils/browser_pool.js +0 -39
  52. package/lib/utils/markdown.d.ts +0 -3
  53. package/lib/utils/markdown.js +0 -49
@@ -1,5 +1,5 @@
1
1
  import { ImageProcessorParams } from "../../types/index.js";
2
- import type { SlideLayout, ContentBlock } from "../../slide/index.js";
2
+ import type { SlideLayout, ContentBlock } from "@mulmocast/deck";
3
3
  export declare const imageType = "slide";
4
4
  /**
5
5
  * Collect all content block arrays from a slide layout.
@@ -1,6 +1,6 @@
1
1
  import nodePath from "node:path";
2
2
  import { pathToFileURL } from "node:url";
3
- import { generateSlideHTML } from "../../slide/index.js";
3
+ import { generateSlideHTML } from "@mulmocast/deck";
4
4
  import { slideThemes } from "../../data/slideThemes.js";
5
5
  import { renderHTMLToImage } from "../html_render.js";
6
6
  import { parrotingImagePath } from "./utils.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mulmocast",
3
- "version": "2.6.16",
3
+ "version": "2.6.17",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "lib/index.node.js",
@@ -89,7 +89,7 @@
89
89
  "homepage": "https://github.com/receptron/mulmocast-cli#readme",
90
90
  "dependencies": {
91
91
  "@google-cloud/text-to-speech": "^6.4.1",
92
- "@google/genai": "^2.4.0",
92
+ "@google/genai": "^2.7.0",
93
93
  "@graphai/anthropic_agent": "^2.0.12",
94
94
  "@graphai/browserless_agent": "^2.0.2",
95
95
  "@graphai/gemini_agent": "^2.0.5",
@@ -104,6 +104,7 @@
104
104
  "@modelcontextprotocol/sdk": "^1.29.0",
105
105
  "@modernized/fluent-ffmpeg": "^1.0.0",
106
106
  "@mozilla/readability": "^0.6.0",
107
+ "@mulmocast/deck": "^0.1.2",
107
108
  "@tavily/core": "^0.7.3",
108
109
  "archiver": "^7.0.1",
109
110
  "clipboardy": "^5.3.1",
@@ -113,7 +114,7 @@
113
114
  "marked": "^18.0.4",
114
115
  "mulmocast-vision": "^1.0.10",
115
116
  "ora": "^9.4.0",
116
- "puppeteer": "^25.0.4",
117
+ "puppeteer": "^25.1.0",
117
118
  "replicate": "^1.4.0",
118
119
  "yaml": "^2.9.0",
119
120
  "yargs": "^18.0.0",
@@ -126,16 +127,16 @@
126
127
  "@types/jsdom": "^28.0.3",
127
128
  "@types/yargs": "^17.0.35",
128
129
  "cross-env": "^10.1.0",
129
- "eslint": "^10.4.0",
130
+ "eslint": "^10.4.1",
130
131
  "eslint-config-prettier": "^10.1.8",
131
132
  "eslint-plugin-import": "^2.32.0",
132
- "eslint-plugin-prettier": "^5.5.5",
133
+ "eslint-plugin-prettier": "^5.5.6",
133
134
  "eslint-plugin-sonarjs": "^4.0.3",
134
135
  "globals": "^17.6.0",
135
136
  "prettier": "^3.8.3",
136
137
  "tsx": "^4.22.3",
137
138
  "typescript": "6.0.3",
138
- "typescript-eslint": "^8.59.4"
139
+ "typescript-eslint": "^8.60.0"
139
140
  },
140
141
  "engines": {
141
142
  "node": ">=22.0.0"
@@ -1,255 +0,0 @@
1
- export declare const styles: ({
2
- filename: string;
3
- presentationStyle: {
4
- $mulmocast: {
5
- credit: string;
6
- version: string;
7
- };
8
- canvasSize: {
9
- height: number;
10
- width: number;
11
- };
12
- imageParams: {
13
- images: {
14
- girl: {
15
- source: {
16
- kind: string;
17
- url: string;
18
- };
19
- type: string;
20
- };
21
- ani?: undefined;
22
- presenter?: undefined;
23
- optimus?: undefined;
24
- };
25
- style: string;
26
- model?: undefined;
27
- provider?: undefined;
28
- };
29
- audioParams?: undefined;
30
- movieParams?: undefined;
31
- speechParams?: undefined;
32
- };
33
- } | {
34
- filename: string;
35
- presentationStyle: {
36
- $mulmocast: {
37
- credit: string;
38
- version: string;
39
- };
40
- audioParams: {
41
- bgm: {
42
- kind: string;
43
- url: string;
44
- };
45
- };
46
- canvasSize: {
47
- height: number;
48
- width: number;
49
- };
50
- imageParams: {
51
- images: {
52
- ani: {
53
- source: {
54
- kind: string;
55
- url: string;
56
- };
57
- type: string;
58
- };
59
- girl?: undefined;
60
- presenter?: undefined;
61
- optimus?: undefined;
62
- };
63
- model: string;
64
- provider: string;
65
- style: string;
66
- };
67
- movieParams: {
68
- model: string;
69
- provider: string;
70
- };
71
- speechParams: {
72
- speakers: {
73
- Presenter: {
74
- provider: string;
75
- speechOptions: {
76
- instruction: string;
77
- };
78
- voiceId: string;
79
- };
80
- };
81
- provider?: undefined;
82
- };
83
- };
84
- } | {
85
- filename: string;
86
- presentationStyle: {
87
- $mulmocast: {
88
- credit: string;
89
- version: string;
90
- };
91
- canvasSize: {
92
- height: number;
93
- width: number;
94
- };
95
- imageParams: {
96
- style: string;
97
- images?: undefined;
98
- model?: undefined;
99
- provider?: undefined;
100
- };
101
- audioParams?: undefined;
102
- movieParams?: undefined;
103
- speechParams?: undefined;
104
- };
105
- } | {
106
- filename: string;
107
- presentationStyle: {
108
- $mulmocast: {
109
- credit: string;
110
- version: string;
111
- };
112
- canvasSize: {
113
- height: number;
114
- width: number;
115
- };
116
- imageParams: {
117
- images: {
118
- presenter: {
119
- source: {
120
- kind: string;
121
- url: string;
122
- };
123
- type: string;
124
- };
125
- girl?: undefined;
126
- ani?: undefined;
127
- optimus?: undefined;
128
- };
129
- style: string;
130
- model?: undefined;
131
- provider?: undefined;
132
- };
133
- audioParams?: undefined;
134
- movieParams?: undefined;
135
- speechParams?: undefined;
136
- };
137
- } | {
138
- filename: string;
139
- presentationStyle: {
140
- $mulmocast: {
141
- credit: string;
142
- version: string;
143
- };
144
- canvasSize: {
145
- height: number;
146
- width: number;
147
- };
148
- imageParams: {
149
- images: {
150
- presenter: {
151
- source: {
152
- kind: string;
153
- url: string;
154
- };
155
- type: string;
156
- };
157
- girl?: undefined;
158
- ani?: undefined;
159
- optimus?: undefined;
160
- };
161
- style: string;
162
- model?: undefined;
163
- provider?: undefined;
164
- };
165
- speechParams: {
166
- provider: string;
167
- speakers: {
168
- Presenter: {
169
- speechOptions: {
170
- instruction: string;
171
- };
172
- voiceId: string;
173
- provider?: undefined;
174
- };
175
- };
176
- };
177
- audioParams?: undefined;
178
- movieParams?: undefined;
179
- };
180
- } | {
181
- filename: string;
182
- presentationStyle: {
183
- $mulmocast: {
184
- credit: string;
185
- version: string;
186
- };
187
- canvasSize: {
188
- height: number;
189
- width: number;
190
- };
191
- imageParams: {
192
- images: {
193
- optimus: {
194
- source: {
195
- kind: string;
196
- url: string;
197
- };
198
- type: string;
199
- };
200
- presenter: {
201
- source: {
202
- kind: string;
203
- url: string;
204
- };
205
- type: string;
206
- };
207
- girl?: undefined;
208
- ani?: undefined;
209
- };
210
- style: string;
211
- model?: undefined;
212
- provider?: undefined;
213
- };
214
- audioParams?: undefined;
215
- movieParams?: undefined;
216
- speechParams?: undefined;
217
- };
218
- } | {
219
- filename: string;
220
- presentationStyle: {
221
- $mulmocast: {
222
- credit: string;
223
- version: string;
224
- };
225
- audioParams: {
226
- bgm: {
227
- kind: string;
228
- url: string;
229
- };
230
- };
231
- canvasSize: {
232
- height: number;
233
- width: number;
234
- };
235
- imageParams: {
236
- model: string;
237
- provider: string;
238
- images?: undefined;
239
- style?: undefined;
240
- };
241
- speechParams: {
242
- speakers: {
243
- Presenter: {
244
- provider: string;
245
- speechOptions: {
246
- instruction: string;
247
- };
248
- voiceId: string;
249
- };
250
- };
251
- provider?: undefined;
252
- };
253
- movieParams?: undefined;
254
- };
255
- })[];
@@ -1,284 +0,0 @@
1
- export const styles = [
2
- {
3
- filename: 'akira_comic',
4
- presentationStyle: {
5
- '$mulmocast': {
6
- credit: 'closing',
7
- version: '1.1'
8
- },
9
- canvasSize: {
10
- height: 1024,
11
- width: 1536
12
- },
13
- imageParams: {
14
- images: {
15
- girl: {
16
- source: {
17
- kind: 'url',
18
- url: 'https://raw.githubusercontent.com/receptron/mulmocast-media/refs/heads/main/characters/akira_presenter.png'
19
- },
20
- type: 'image'
21
- }
22
- },
23
- style: '<style>AKIRA aesthetic.</style>'
24
- }
25
- }
26
- },
27
- {
28
- filename: 'ani',
29
- presentationStyle: {
30
- '$mulmocast': {
31
- credit: 'closing',
32
- version: '1.1'
33
- },
34
- audioParams: {
35
- bgm: {
36
- kind: 'url',
37
- url: 'https://github.com/receptron/mulmocast-media/raw/refs/heads/main/bgms/morning001.mp3'
38
- }
39
- },
40
- canvasSize: {
41
- height: 1536,
42
- width: 1024
43
- },
44
- imageParams: {
45
- images: {
46
- ani: {
47
- source: {
48
- kind: 'url',
49
- url: 'https://raw.githubusercontent.com/receptron/mulmocast-media/refs/heads/main/characters/ani.png'
50
- },
51
- type: 'image'
52
- }
53
- },
54
- model: 'gemini-2.5-flash-image',
55
- provider: 'google',
56
- style: '<style>A highly polished 2D digital illustration in anime and manga style, featuring clean linework, soft shading, vivid colors, and expressive facial detailing. The composition emphasizes clarity and visual impact with a minimalistic background and a strong character focus. The lighting is even and bright, giving the image a crisp and energetic feel, reminiscent of high-quality character art used in Japanese visual novels or mobile games.</style>'
57
- },
58
- movieParams: {
59
- model: 'bytedance/seedance-1-lite',
60
- provider: 'replicate'
61
- },
62
- speechParams: {
63
- speakers: {
64
- Presenter: {
65
- provider: 'gemini',
66
- speechOptions: {
67
- instruction: 'Speak in a slightly high-pitched, curt tone with sudden flustered shifts—like a tsundere anime girl.'
68
- },
69
- voiceId: 'Leda'
70
- }
71
- }
72
- }
73
- }
74
- },
75
- {
76
- filename: 'children_book',
77
- presentationStyle: {
78
- '$mulmocast': {
79
- credit: 'closing',
80
- version: '1.1'
81
- },
82
- canvasSize: {
83
- height: 1024,
84
- width: 1536
85
- },
86
- imageParams: {
87
- style: 'A hand-drawn style illustration with a warm, nostalgic atmosphere. The background is rich with natural scenery—lush forests, cloudy skies, and traditional Japanese architecture. Characters have expressive eyes, soft facial features, and are portrayed with gentle lighting and subtle shading. The color palette is muted yet vivid, using earthy tones and watercolor-like textures. The overall scene feels magical and peaceful, with a sense of quiet wonder and emotional depth, reminiscent of classic 1980s and 1990s Japanese animation.'
88
- }
89
- }
90
- },
91
- {
92
- filename: 'comic_strips',
93
- presentationStyle: {
94
- '$mulmocast': {
95
- credit: 'closing',
96
- version: '1.1'
97
- },
98
- canvasSize: {
99
- height: 1024,
100
- width: 1536
101
- },
102
- imageParams: {
103
- style: '<style>A multi panel comic strips. 1990s American workplace humor. Clean, minimalist line art with muted colors. One character is a nerdy office worker with glasses</style>'
104
- }
105
- }
106
- },
107
- {
108
- filename: 'drslump_comic',
109
- presentationStyle: {
110
- '$mulmocast': {
111
- credit: 'closing',
112
- version: '1.1'
113
- },
114
- canvasSize: {
115
- height: 1024,
116
- width: 1536
117
- },
118
- imageParams: {
119
- images: {
120
- girl: {
121
- source: {
122
- kind: 'url',
123
- url: 'https://raw.githubusercontent.com/receptron/mulmocast-media/refs/heads/main/characters/slump_presenter.png'
124
- },
125
- type: 'image'
126
- }
127
- },
128
- style: '<style>Dragon Ball/Dr. Slump aesthetic.</style>'
129
- }
130
- }
131
- },
132
- {
133
- filename: 'ghibli_comic',
134
- presentationStyle: {
135
- '$mulmocast': {
136
- credit: 'closing',
137
- version: '1.1'
138
- },
139
- canvasSize: {
140
- height: 1024,
141
- width: 1536
142
- },
143
- imageParams: {
144
- images: {
145
- presenter: {
146
- source: {
147
- kind: 'url',
148
- url: 'https://raw.githubusercontent.com/receptron/mulmocast-media/refs/heads/main/characters/ghibli_presenter.png'
149
- },
150
- type: 'image'
151
- }
152
- },
153
- style: '<style>Ghibli style</style>'
154
- }
155
- }
156
- },
157
- {
158
- filename: 'ghibli_shorts',
159
- presentationStyle: {
160
- '$mulmocast': {
161
- credit: 'closing',
162
- version: '1.1'
163
- },
164
- canvasSize: {
165
- height: 1536,
166
- width: 1024
167
- },
168
- imageParams: {
169
- images: {
170
- presenter: {
171
- source: {
172
- kind: 'url',
173
- url: 'https://raw.githubusercontent.com/receptron/mulmocast-media/refs/heads/main/characters/ghibli_presenter.jpg'
174
- },
175
- type: 'image'
176
- }
177
- },
178
- style: '<style>Ghibli style</style>'
179
- },
180
- speechParams: {
181
- provider: 'openai',
182
- speakers: {
183
- Presenter: {
184
- speechOptions: {
185
- instruction: 'speak very fast'
186
- },
187
- voiceId: 'shimmer'
188
- }
189
- }
190
- }
191
- }
192
- },
193
- {
194
- filename: 'ghost_comic',
195
- presentationStyle: {
196
- '$mulmocast': {
197
- credit: 'closing',
198
- version: '1.1'
199
- },
200
- canvasSize: {
201
- height: 1024,
202
- width: 1536
203
- },
204
- imageParams: {
205
- images: {
206
- optimus: {
207
- source: {
208
- kind: 'url',
209
- url: 'https://raw.githubusercontent.com/receptron/mulmocast-media/refs/heads/main/characters/optimus.png'
210
- },
211
- type: 'image'
212
- },
213
- presenter: {
214
- source: {
215
- kind: 'url',
216
- url: 'https://raw.githubusercontent.com/receptron/mulmocast-media/refs/heads/main/characters/ghost_presenter.png'
217
- },
218
- type: 'image'
219
- }
220
- },
221
- style: '<style>Ghost in the shell aesthetic.</style>'
222
- }
223
- }
224
- },
225
- {
226
- filename: 'leda',
227
- presentationStyle: {
228
- '$mulmocast': {
229
- credit: 'closing',
230
- version: '1.1'
231
- },
232
- audioParams: {
233
- bgm: {
234
- kind: 'url',
235
- url: 'https://github.com/receptron/mulmocast-media/raw/refs/heads/main/bgms/morning001.mp3'
236
- }
237
- },
238
- canvasSize: {
239
- height: 1536,
240
- width: 1024
241
- },
242
- imageParams: {
243
- model: 'gemini-2.5-flash-image',
244
- provider: 'google'
245
- },
246
- speechParams: {
247
- speakers: {
248
- Presenter: {
249
- provider: 'gemini',
250
- speechOptions: {
251
- instruction: 'Speak like a professional news presenter.'
252
- },
253
- voiceId: 'Leda'
254
- }
255
- }
256
- }
257
- }
258
- },
259
- {
260
- filename: 'onepiece_comic',
261
- presentationStyle: {
262
- '$mulmocast': {
263
- credit: 'closing',
264
- version: '1.1'
265
- },
266
- canvasSize: {
267
- height: 1024,
268
- width: 1536
269
- },
270
- imageParams: {
271
- images: {
272
- presenter: {
273
- source: {
274
- kind: 'url',
275
- url: 'https://raw.githubusercontent.com/receptron/mulmocast-media/refs/heads/main/characters/onepiece_presenter.png'
276
- },
277
- type: 'image'
278
- }
279
- },
280
- style: '<style>One Piece aesthetic.</style>'
281
- }
282
- }
283
- }
284
- ];
@@ -1,13 +0,0 @@
1
- import type { ContentBlock, TableCellValue } from "./schema.js";
2
- export declare const resolveCellColor: (cellObj: {
3
- color?: string;
4
- }, isRowHeader: boolean) => string;
5
- export declare const renderBadge: (text: string, color: string) => string;
6
- export declare const renderCellValue: (cell: TableCellValue, isRowHeader: boolean) => string;
7
- export declare const renderTableCore: (headers: string[] | undefined, rows: TableCellValue[][], rowHeaders?: boolean, striped?: boolean) => string;
8
- /** Render a single content block to HTML */
9
- export declare const renderContentBlock: (block: ContentBlock) => string;
10
- /** Render an array of content blocks to HTML */
11
- export declare const renderContentBlocks: (blocks: ContentBlock[]) => string;
12
- /** Render content blocks with fixed aspect-ratio container for image blocks (used in card layouts) */
13
- export declare const renderCardContentBlocks: (blocks: ContentBlock[]) => string;