@mulmocast/extended-types 0.3.0 → 0.3.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.
@@ -0,0 +1,80 @@
1
+ import { z } from "zod";
2
+ import { mulmoBeatSchema, mulmoScriptSchema, mulmoImageAssetSchema } from "@mulmocast/types";
3
+ /**
4
+ * Beat Variant - profile-specific content overrides
5
+ */
6
+ export const beatVariantSchema = z.object({
7
+ text: z.string().optional(),
8
+ skip: z.boolean().optional(),
9
+ image: mulmoImageAssetSchema.optional(),
10
+ imagePrompt: z.string().optional(),
11
+ });
12
+ /**
13
+ * Beat Meta - metadata for filtering and context
14
+ */
15
+ export const beatMetaSchema = z.object({
16
+ tags: z.array(z.string()).optional(),
17
+ section: z.string().optional(),
18
+ context: z.string().optional(),
19
+ notes: z.string().optional(),
20
+ keywords: z.array(z.string()).optional(),
21
+ expectedQuestions: z.array(z.string()).optional(),
22
+ });
23
+ /**
24
+ * Extended Beat - beat with variants and meta fields
25
+ */
26
+ export const extendedMulmoBeatSchema = mulmoBeatSchema.extend({
27
+ variants: z.record(z.string(), beatVariantSchema).optional(),
28
+ meta: beatMetaSchema.optional(),
29
+ });
30
+ /**
31
+ * Output Profile - profile display information
32
+ */
33
+ export const outputProfileSchema = z.object({
34
+ name: z.string(),
35
+ description: z.string().optional(),
36
+ });
37
+ /**
38
+ * Reference - external resource reference
39
+ */
40
+ export const referenceSchema = z.object({
41
+ type: z.enum(["web", "code", "document", "video"]).optional(),
42
+ url: z.string(),
43
+ title: z.string().optional(),
44
+ description: z.string().optional(),
45
+ });
46
+ /**
47
+ * FAQ - frequently asked question
48
+ */
49
+ export const faqSchema = z.object({
50
+ question: z.string(),
51
+ answer: z.string(),
52
+ relatedBeats: z.array(z.string()).optional(),
53
+ });
54
+ /**
55
+ * Script Meta - script-level metadata for AI features
56
+ */
57
+ export const scriptMetaSchema = z.object({
58
+ // Target audience and prerequisites
59
+ audience: z.string().optional(),
60
+ prerequisites: z.array(z.string()).optional(),
61
+ // Learning goals and background
62
+ goals: z.array(z.string()).optional(),
63
+ background: z.string().optional(),
64
+ // FAQ for quick Q&A matching
65
+ faq: z.array(faqSchema).optional(),
66
+ // Search and discovery
67
+ keywords: z.array(z.string()).optional(),
68
+ references: z.array(referenceSchema).optional(),
69
+ // Authoring info
70
+ author: z.string().optional(),
71
+ version: z.string().optional(),
72
+ });
73
+ /**
74
+ * Extended Script - script with variants, meta, and outputProfiles
75
+ */
76
+ export const extendedMulmoScriptSchema = mulmoScriptSchema.extend({
77
+ beats: z.array(extendedMulmoBeatSchema),
78
+ outputProfiles: z.record(z.string(), outputProfileSchema).optional(),
79
+ scriptMeta: scriptMetaSchema.optional(),
80
+ });
@@ -0,0 +1,430 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Extended Viewer Beat - viewer beat with variants and meta fields
4
+ */
5
+ export declare const extendedMulmoViewerBeatSchema: z.ZodObject<{
6
+ id: z.ZodOptional<z.ZodString>;
7
+ text: z.ZodOptional<z.ZodString>;
8
+ duration: z.ZodOptional<z.ZodNumber>;
9
+ startTime: z.ZodOptional<z.ZodNumber>;
10
+ endTime: z.ZodOptional<z.ZodNumber>;
11
+ importance: z.ZodOptional<z.ZodNumber>;
12
+ multiLinguals: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
13
+ audioSources: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodOptional<z.ZodString>>>;
14
+ imageSource: z.ZodOptional<z.ZodString>;
15
+ videoSource: z.ZodOptional<z.ZodString>;
16
+ videoWithAudioSource: z.ZodOptional<z.ZodString>;
17
+ htmlImageSource: z.ZodOptional<z.ZodString>;
18
+ soundEffectSource: z.ZodOptional<z.ZodString>;
19
+ variants: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
20
+ text: z.ZodOptional<z.ZodString>;
21
+ skip: z.ZodOptional<z.ZodBoolean>;
22
+ image: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
23
+ type: z.ZodLiteral<"markdown">;
24
+ markdown: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodIntersection<z.ZodObject<{
25
+ header: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
26
+ "sidebar-left": z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
27
+ }, z.core.$strip>, z.ZodUnion<readonly [z.ZodObject<{
28
+ "row-2": z.ZodTuple<[z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>], null>;
29
+ }, z.core.$strip>, z.ZodObject<{
30
+ "2x2": z.ZodTuple<[z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>], null>;
31
+ }, z.core.$strip>, z.ZodObject<{
32
+ content: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
33
+ }, z.core.$strip>]>>]>;
34
+ style: z.ZodOptional<z.ZodString>;
35
+ backgroundImage: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
36
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
37
+ kind: z.ZodLiteral<"url">;
38
+ url: z.ZodURL;
39
+ }, z.core.$strict>, z.ZodObject<{
40
+ kind: z.ZodLiteral<"base64">;
41
+ data: z.ZodString;
42
+ }, z.core.$strict>, z.ZodObject<{
43
+ kind: z.ZodLiteral<"path">;
44
+ path: z.ZodString;
45
+ }, z.core.$strict>], "kind">;
46
+ size: z.ZodOptional<z.ZodEnum<{
47
+ auto: "auto";
48
+ cover: "cover";
49
+ contain: "contain";
50
+ fill: "fill";
51
+ }>>;
52
+ opacity: z.ZodOptional<z.ZodNumber>;
53
+ }, z.core.$strip>]>>>;
54
+ }, z.core.$strict>, z.ZodObject<{
55
+ type: z.ZodLiteral<"web">;
56
+ url: z.ZodURL;
57
+ }, z.core.$strict>, z.ZodObject<{
58
+ type: z.ZodLiteral<"pdf">;
59
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
60
+ kind: z.ZodLiteral<"url">;
61
+ url: z.ZodURL;
62
+ }, z.core.$strict>, z.ZodObject<{
63
+ kind: z.ZodLiteral<"base64">;
64
+ data: z.ZodString;
65
+ }, z.core.$strict>, z.ZodObject<{
66
+ kind: z.ZodLiteral<"path">;
67
+ path: z.ZodString;
68
+ }, z.core.$strict>], "kind">;
69
+ }, z.core.$strict>, z.ZodObject<{
70
+ type: z.ZodLiteral<"image">;
71
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
72
+ kind: z.ZodLiteral<"url">;
73
+ url: z.ZodURL;
74
+ }, z.core.$strict>, z.ZodObject<{
75
+ kind: z.ZodLiteral<"base64">;
76
+ data: z.ZodString;
77
+ }, z.core.$strict>, z.ZodObject<{
78
+ kind: z.ZodLiteral<"path">;
79
+ path: z.ZodString;
80
+ }, z.core.$strict>], "kind">;
81
+ }, z.core.$strict>, z.ZodObject<{
82
+ type: z.ZodLiteral<"svg">;
83
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
84
+ kind: z.ZodLiteral<"url">;
85
+ url: z.ZodURL;
86
+ }, z.core.$strict>, z.ZodObject<{
87
+ kind: z.ZodLiteral<"base64">;
88
+ data: z.ZodString;
89
+ }, z.core.$strict>, z.ZodObject<{
90
+ kind: z.ZodLiteral<"path">;
91
+ path: z.ZodString;
92
+ }, z.core.$strict>], "kind">;
93
+ }, z.core.$strict>, z.ZodObject<{
94
+ type: z.ZodLiteral<"movie">;
95
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
96
+ kind: z.ZodLiteral<"url">;
97
+ url: z.ZodURL;
98
+ }, z.core.$strict>, z.ZodObject<{
99
+ kind: z.ZodLiteral<"base64">;
100
+ data: z.ZodString;
101
+ }, z.core.$strict>, z.ZodObject<{
102
+ kind: z.ZodLiteral<"path">;
103
+ path: z.ZodString;
104
+ }, z.core.$strict>], "kind">;
105
+ }, z.core.$strict>, z.ZodObject<{
106
+ type: z.ZodLiteral<"textSlide">;
107
+ slide: z.ZodObject<{
108
+ title: z.ZodString;
109
+ subtitle: z.ZodOptional<z.ZodString>;
110
+ bullets: z.ZodOptional<z.ZodArray<z.ZodString>>;
111
+ }, z.core.$strip>;
112
+ style: z.ZodOptional<z.ZodString>;
113
+ backgroundImage: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
114
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
115
+ kind: z.ZodLiteral<"url">;
116
+ url: z.ZodURL;
117
+ }, z.core.$strict>, z.ZodObject<{
118
+ kind: z.ZodLiteral<"base64">;
119
+ data: z.ZodString;
120
+ }, z.core.$strict>, z.ZodObject<{
121
+ kind: z.ZodLiteral<"path">;
122
+ path: z.ZodString;
123
+ }, z.core.$strict>], "kind">;
124
+ size: z.ZodOptional<z.ZodEnum<{
125
+ auto: "auto";
126
+ cover: "cover";
127
+ contain: "contain";
128
+ fill: "fill";
129
+ }>>;
130
+ opacity: z.ZodOptional<z.ZodNumber>;
131
+ }, z.core.$strip>]>>>;
132
+ }, z.core.$strict>, z.ZodObject<{
133
+ type: z.ZodLiteral<"chart">;
134
+ title: z.ZodString;
135
+ chartData: z.ZodRecord<z.ZodString, z.ZodAny>;
136
+ }, z.core.$strict>, z.ZodObject<{
137
+ type: z.ZodLiteral<"mermaid">;
138
+ title: z.ZodString;
139
+ code: z.ZodDiscriminatedUnion<[z.ZodObject<{
140
+ kind: z.ZodLiteral<"url">;
141
+ url: z.ZodURL;
142
+ }, z.core.$strict>, z.ZodObject<{
143
+ kind: z.ZodLiteral<"base64">;
144
+ data: z.ZodString;
145
+ }, z.core.$strict>, z.ZodObject<{
146
+ kind: z.ZodLiteral<"text">;
147
+ text: z.ZodString;
148
+ }, z.core.$strict>, z.ZodObject<{
149
+ kind: z.ZodLiteral<"path">;
150
+ path: z.ZodString;
151
+ }, z.core.$strict>], "kind">;
152
+ appendix: z.ZodOptional<z.ZodArray<z.ZodString>>;
153
+ style: z.ZodOptional<z.ZodString>;
154
+ backgroundImage: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
155
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
156
+ kind: z.ZodLiteral<"url">;
157
+ url: z.ZodURL;
158
+ }, z.core.$strict>, z.ZodObject<{
159
+ kind: z.ZodLiteral<"base64">;
160
+ data: z.ZodString;
161
+ }, z.core.$strict>, z.ZodObject<{
162
+ kind: z.ZodLiteral<"path">;
163
+ path: z.ZodString;
164
+ }, z.core.$strict>], "kind">;
165
+ size: z.ZodOptional<z.ZodEnum<{
166
+ auto: "auto";
167
+ cover: "cover";
168
+ contain: "contain";
169
+ fill: "fill";
170
+ }>>;
171
+ opacity: z.ZodOptional<z.ZodNumber>;
172
+ }, z.core.$strip>]>>>;
173
+ }, z.core.$strict>, z.ZodObject<{
174
+ type: z.ZodLiteral<"html_tailwind">;
175
+ html: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
176
+ }, z.core.$strict>, z.ZodObject<{
177
+ type: z.ZodLiteral<"beat">;
178
+ id: z.ZodOptional<z.ZodString>;
179
+ }, z.core.$strict>, z.ZodObject<{
180
+ type: z.ZodLiteral<"voice_over">;
181
+ startAt: z.ZodOptional<z.ZodNumber>;
182
+ }, z.core.$strict>, z.ZodObject<{
183
+ type: z.ZodLiteral<"vision">;
184
+ style: z.ZodString;
185
+ data: z.ZodRecord<z.ZodString, z.ZodAny>;
186
+ }, z.core.$strict>]>>;
187
+ imagePrompt: z.ZodOptional<z.ZodString>;
188
+ }, z.core.$strip>>>;
189
+ meta: z.ZodOptional<z.ZodObject<{
190
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
191
+ section: z.ZodOptional<z.ZodString>;
192
+ context: z.ZodOptional<z.ZodString>;
193
+ notes: z.ZodOptional<z.ZodString>;
194
+ keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
195
+ expectedQuestions: z.ZodOptional<z.ZodArray<z.ZodString>>;
196
+ }, z.core.$strip>>;
197
+ }, z.core.$strip>;
198
+ export type ExtendedMulmoViewerBeat = z.infer<typeof extendedMulmoViewerBeatSchema>;
199
+ /**
200
+ * Extended Viewer Data - viewer data with extended beats and metadata
201
+ */
202
+ export declare const extendedMulmoViewerDataSchema: z.ZodObject<{
203
+ bgmSource: z.ZodOptional<z.ZodString>;
204
+ bgmFile: z.ZodOptional<z.ZodString>;
205
+ title: z.ZodOptional<z.ZodString>;
206
+ lang: z.ZodOptional<z.ZodString>;
207
+ beats: z.ZodArray<z.ZodObject<{
208
+ id: z.ZodOptional<z.ZodString>;
209
+ text: z.ZodOptional<z.ZodString>;
210
+ duration: z.ZodOptional<z.ZodNumber>;
211
+ startTime: z.ZodOptional<z.ZodNumber>;
212
+ endTime: z.ZodOptional<z.ZodNumber>;
213
+ importance: z.ZodOptional<z.ZodNumber>;
214
+ multiLinguals: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
215
+ audioSources: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodOptional<z.ZodString>>>;
216
+ imageSource: z.ZodOptional<z.ZodString>;
217
+ videoSource: z.ZodOptional<z.ZodString>;
218
+ videoWithAudioSource: z.ZodOptional<z.ZodString>;
219
+ htmlImageSource: z.ZodOptional<z.ZodString>;
220
+ soundEffectSource: z.ZodOptional<z.ZodString>;
221
+ variants: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
222
+ text: z.ZodOptional<z.ZodString>;
223
+ skip: z.ZodOptional<z.ZodBoolean>;
224
+ image: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
225
+ type: z.ZodLiteral<"markdown">;
226
+ markdown: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodIntersection<z.ZodObject<{
227
+ header: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
228
+ "sidebar-left": z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
229
+ }, z.core.$strip>, z.ZodUnion<readonly [z.ZodObject<{
230
+ "row-2": z.ZodTuple<[z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>], null>;
231
+ }, z.core.$strip>, z.ZodObject<{
232
+ "2x2": z.ZodTuple<[z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>], null>;
233
+ }, z.core.$strip>, z.ZodObject<{
234
+ content: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
235
+ }, z.core.$strip>]>>]>;
236
+ style: z.ZodOptional<z.ZodString>;
237
+ backgroundImage: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
238
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
239
+ kind: z.ZodLiteral<"url">;
240
+ url: z.ZodURL;
241
+ }, z.core.$strict>, z.ZodObject<{
242
+ kind: z.ZodLiteral<"base64">;
243
+ data: z.ZodString;
244
+ }, z.core.$strict>, z.ZodObject<{
245
+ kind: z.ZodLiteral<"path">;
246
+ path: z.ZodString;
247
+ }, z.core.$strict>], "kind">;
248
+ size: z.ZodOptional<z.ZodEnum<{
249
+ auto: "auto";
250
+ cover: "cover";
251
+ contain: "contain";
252
+ fill: "fill";
253
+ }>>;
254
+ opacity: z.ZodOptional<z.ZodNumber>;
255
+ }, z.core.$strip>]>>>;
256
+ }, z.core.$strict>, z.ZodObject<{
257
+ type: z.ZodLiteral<"web">;
258
+ url: z.ZodURL;
259
+ }, z.core.$strict>, z.ZodObject<{
260
+ type: z.ZodLiteral<"pdf">;
261
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
262
+ kind: z.ZodLiteral<"url">;
263
+ url: z.ZodURL;
264
+ }, z.core.$strict>, z.ZodObject<{
265
+ kind: z.ZodLiteral<"base64">;
266
+ data: z.ZodString;
267
+ }, z.core.$strict>, z.ZodObject<{
268
+ kind: z.ZodLiteral<"path">;
269
+ path: z.ZodString;
270
+ }, z.core.$strict>], "kind">;
271
+ }, z.core.$strict>, z.ZodObject<{
272
+ type: z.ZodLiteral<"image">;
273
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
274
+ kind: z.ZodLiteral<"url">;
275
+ url: z.ZodURL;
276
+ }, z.core.$strict>, z.ZodObject<{
277
+ kind: z.ZodLiteral<"base64">;
278
+ data: z.ZodString;
279
+ }, z.core.$strict>, z.ZodObject<{
280
+ kind: z.ZodLiteral<"path">;
281
+ path: z.ZodString;
282
+ }, z.core.$strict>], "kind">;
283
+ }, z.core.$strict>, z.ZodObject<{
284
+ type: z.ZodLiteral<"svg">;
285
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
286
+ kind: z.ZodLiteral<"url">;
287
+ url: z.ZodURL;
288
+ }, z.core.$strict>, z.ZodObject<{
289
+ kind: z.ZodLiteral<"base64">;
290
+ data: z.ZodString;
291
+ }, z.core.$strict>, z.ZodObject<{
292
+ kind: z.ZodLiteral<"path">;
293
+ path: z.ZodString;
294
+ }, z.core.$strict>], "kind">;
295
+ }, z.core.$strict>, z.ZodObject<{
296
+ type: z.ZodLiteral<"movie">;
297
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
298
+ kind: z.ZodLiteral<"url">;
299
+ url: z.ZodURL;
300
+ }, z.core.$strict>, z.ZodObject<{
301
+ kind: z.ZodLiteral<"base64">;
302
+ data: z.ZodString;
303
+ }, z.core.$strict>, z.ZodObject<{
304
+ kind: z.ZodLiteral<"path">;
305
+ path: z.ZodString;
306
+ }, z.core.$strict>], "kind">;
307
+ }, z.core.$strict>, z.ZodObject<{
308
+ type: z.ZodLiteral<"textSlide">;
309
+ slide: z.ZodObject<{
310
+ title: z.ZodString;
311
+ subtitle: z.ZodOptional<z.ZodString>;
312
+ bullets: z.ZodOptional<z.ZodArray<z.ZodString>>;
313
+ }, z.core.$strip>;
314
+ style: z.ZodOptional<z.ZodString>;
315
+ backgroundImage: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
316
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
317
+ kind: z.ZodLiteral<"url">;
318
+ url: z.ZodURL;
319
+ }, z.core.$strict>, z.ZodObject<{
320
+ kind: z.ZodLiteral<"base64">;
321
+ data: z.ZodString;
322
+ }, z.core.$strict>, z.ZodObject<{
323
+ kind: z.ZodLiteral<"path">;
324
+ path: z.ZodString;
325
+ }, z.core.$strict>], "kind">;
326
+ size: z.ZodOptional<z.ZodEnum<{
327
+ auto: "auto";
328
+ cover: "cover";
329
+ contain: "contain";
330
+ fill: "fill";
331
+ }>>;
332
+ opacity: z.ZodOptional<z.ZodNumber>;
333
+ }, z.core.$strip>]>>>;
334
+ }, z.core.$strict>, z.ZodObject<{
335
+ type: z.ZodLiteral<"chart">;
336
+ title: z.ZodString;
337
+ chartData: z.ZodRecord<z.ZodString, z.ZodAny>;
338
+ }, z.core.$strict>, z.ZodObject<{
339
+ type: z.ZodLiteral<"mermaid">;
340
+ title: z.ZodString;
341
+ code: z.ZodDiscriminatedUnion<[z.ZodObject<{
342
+ kind: z.ZodLiteral<"url">;
343
+ url: z.ZodURL;
344
+ }, z.core.$strict>, z.ZodObject<{
345
+ kind: z.ZodLiteral<"base64">;
346
+ data: z.ZodString;
347
+ }, z.core.$strict>, z.ZodObject<{
348
+ kind: z.ZodLiteral<"text">;
349
+ text: z.ZodString;
350
+ }, z.core.$strict>, z.ZodObject<{
351
+ kind: z.ZodLiteral<"path">;
352
+ path: z.ZodString;
353
+ }, z.core.$strict>], "kind">;
354
+ appendix: z.ZodOptional<z.ZodArray<z.ZodString>>;
355
+ style: z.ZodOptional<z.ZodString>;
356
+ backgroundImage: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
357
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
358
+ kind: z.ZodLiteral<"url">;
359
+ url: z.ZodURL;
360
+ }, z.core.$strict>, z.ZodObject<{
361
+ kind: z.ZodLiteral<"base64">;
362
+ data: z.ZodString;
363
+ }, z.core.$strict>, z.ZodObject<{
364
+ kind: z.ZodLiteral<"path">;
365
+ path: z.ZodString;
366
+ }, z.core.$strict>], "kind">;
367
+ size: z.ZodOptional<z.ZodEnum<{
368
+ auto: "auto";
369
+ cover: "cover";
370
+ contain: "contain";
371
+ fill: "fill";
372
+ }>>;
373
+ opacity: z.ZodOptional<z.ZodNumber>;
374
+ }, z.core.$strip>]>>>;
375
+ }, z.core.$strict>, z.ZodObject<{
376
+ type: z.ZodLiteral<"html_tailwind">;
377
+ html: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
378
+ }, z.core.$strict>, z.ZodObject<{
379
+ type: z.ZodLiteral<"beat">;
380
+ id: z.ZodOptional<z.ZodString>;
381
+ }, z.core.$strict>, z.ZodObject<{
382
+ type: z.ZodLiteral<"voice_over">;
383
+ startAt: z.ZodOptional<z.ZodNumber>;
384
+ }, z.core.$strict>, z.ZodObject<{
385
+ type: z.ZodLiteral<"vision">;
386
+ style: z.ZodString;
387
+ data: z.ZodRecord<z.ZodString, z.ZodAny>;
388
+ }, z.core.$strict>]>>;
389
+ imagePrompt: z.ZodOptional<z.ZodString>;
390
+ }, z.core.$strip>>>;
391
+ meta: z.ZodOptional<z.ZodObject<{
392
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
393
+ section: z.ZodOptional<z.ZodString>;
394
+ context: z.ZodOptional<z.ZodString>;
395
+ notes: z.ZodOptional<z.ZodString>;
396
+ keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
397
+ expectedQuestions: z.ZodOptional<z.ZodArray<z.ZodString>>;
398
+ }, z.core.$strip>>;
399
+ }, z.core.$strip>>;
400
+ outputProfiles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
401
+ name: z.ZodString;
402
+ description: z.ZodOptional<z.ZodString>;
403
+ }, z.core.$strip>>>;
404
+ scriptMeta: z.ZodOptional<z.ZodObject<{
405
+ audience: z.ZodOptional<z.ZodString>;
406
+ prerequisites: z.ZodOptional<z.ZodArray<z.ZodString>>;
407
+ goals: z.ZodOptional<z.ZodArray<z.ZodString>>;
408
+ background: z.ZodOptional<z.ZodString>;
409
+ faq: z.ZodOptional<z.ZodArray<z.ZodObject<{
410
+ question: z.ZodString;
411
+ answer: z.ZodString;
412
+ relatedBeats: z.ZodOptional<z.ZodArray<z.ZodString>>;
413
+ }, z.core.$strip>>>;
414
+ keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
415
+ references: z.ZodOptional<z.ZodArray<z.ZodObject<{
416
+ type: z.ZodOptional<z.ZodEnum<{
417
+ web: "web";
418
+ code: "code";
419
+ document: "document";
420
+ video: "video";
421
+ }>>;
422
+ url: z.ZodString;
423
+ title: z.ZodOptional<z.ZodString>;
424
+ description: z.ZodOptional<z.ZodString>;
425
+ }, z.core.$strip>>>;
426
+ author: z.ZodOptional<z.ZodString>;
427
+ version: z.ZodOptional<z.ZodString>;
428
+ }, z.core.$strip>>;
429
+ }, z.core.$strip>;
430
+ export type ExtendedMulmoViewerData = z.infer<typeof extendedMulmoViewerDataSchema>;
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ import { mulmoViewerBeatSchema, mulmoViewerDataSchema } from "@mulmocast/types";
3
+ import { beatVariantSchema, beatMetaSchema, outputProfileSchema, scriptMetaSchema } from "./mulmoBeat.js";
4
+ /**
5
+ * Extended Viewer Beat - viewer beat with variants and meta fields
6
+ */
7
+ export const extendedMulmoViewerBeatSchema = mulmoViewerBeatSchema.extend({
8
+ variants: z.record(z.string(), beatVariantSchema).optional(),
9
+ meta: beatMetaSchema.optional(),
10
+ });
11
+ /**
12
+ * Extended Viewer Data - viewer data with extended beats and metadata
13
+ */
14
+ export const extendedMulmoViewerDataSchema = mulmoViewerDataSchema.extend({
15
+ beats: z.array(extendedMulmoViewerBeatSchema),
16
+ outputProfiles: z.record(z.string(), outputProfileSchema).optional(),
17
+ scriptMeta: scriptMetaSchema.optional(),
18
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mulmocast/extended-types",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Type definitions and Zod schemas for MulmoScript ExtendedMulmoScript format",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "homepage": "https://github.com/receptron/mulmocast-plus#readme",
33
33
  "dependencies": {
34
- "@mulmocast/types": "^2.1.35",
34
+ "@mulmocast/types": "^2.1.38",
35
35
  "zod": "^4.3.6"
36
36
  }
37
37
  }