@telebort/question-banks 1.0.0

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,1465 @@
1
+ import { z } from 'zod';
2
+ export { c as AssessmentSubmission, A as AssessmentSubmissionSchema, f as GradedAssessment, a as GradedAssessmentSchema, d as GradedResponse, G as GradedResponseSchema, e as MisconceptionReport, M as MisconceptionReportSchema, b as UserResponse, U as UserResponseSchema, g as ValidationResult, V as ValidationResultSchema } from '../assessment-EEJoYtXy.js';
3
+
4
+ /**
5
+ * Structured feedback following the "Not Yet" protocol
6
+ * - short: Brief acknowledgment (1 sentence)
7
+ * - detailed: Full explanation of the misconception
8
+ * - socraticHint: Optional guiding question for discovery learning
9
+ */
10
+ declare const FeedbackSchema: z.ZodObject<{
11
+ short: z.ZodString;
12
+ detailed: z.ZodString;
13
+ socraticHint: z.ZodOptional<z.ZodString>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ short: string;
16
+ detailed: string;
17
+ socraticHint?: string | undefined;
18
+ }, {
19
+ short: string;
20
+ detailed: string;
21
+ socraticHint?: string | undefined;
22
+ }>;
23
+ type Feedback = z.infer<typeof FeedbackSchema>;
24
+ declare const OptionKeySchema: z.ZodEnum<["A", "B", "C", "D"]>;
25
+ type OptionKey = z.infer<typeof OptionKeySchema>;
26
+ /**
27
+ * Answer option with optional misconception tracking (v1.1)
28
+ */
29
+ declare const OptionSchema: z.ZodObject<{
30
+ key: z.ZodEnum<["A", "B", "C", "D"]>;
31
+ text: z.ZodString;
32
+ isCorrect: z.ZodBoolean;
33
+ misconceptionId: z.ZodOptional<z.ZodString>;
34
+ feedback: z.ZodOptional<z.ZodObject<{
35
+ short: z.ZodString;
36
+ detailed: z.ZodString;
37
+ socraticHint: z.ZodOptional<z.ZodString>;
38
+ }, "strip", z.ZodTypeAny, {
39
+ short: string;
40
+ detailed: string;
41
+ socraticHint?: string | undefined;
42
+ }, {
43
+ short: string;
44
+ detailed: string;
45
+ socraticHint?: string | undefined;
46
+ }>>;
47
+ }, "strip", z.ZodTypeAny, {
48
+ key: "A" | "B" | "C" | "D";
49
+ text: string;
50
+ isCorrect: boolean;
51
+ misconceptionId?: string | undefined;
52
+ feedback?: {
53
+ short: string;
54
+ detailed: string;
55
+ socraticHint?: string | undefined;
56
+ } | undefined;
57
+ }, {
58
+ key: "A" | "B" | "C" | "D";
59
+ text: string;
60
+ isCorrect: boolean;
61
+ misconceptionId?: string | undefined;
62
+ feedback?: {
63
+ short: string;
64
+ detailed: string;
65
+ socraticHint?: string | undefined;
66
+ } | undefined;
67
+ }>;
68
+ type Option = z.infer<typeof OptionSchema>;
69
+ declare const QuestionTypeSchema: z.ZodEnum<["vocabulary", "code_understanding", "problem_solving", "application", "reflection"]>;
70
+ type QuestionType = z.infer<typeof QuestionTypeSchema>;
71
+ /**
72
+ * Question archetype for pedagogical classification
73
+ * - vocabulary: Definition/terminology questions
74
+ * - trace: Code tracing (mental execution)
75
+ * - bebras: Logic-first, computational thinking
76
+ * - blockmodel: Surface/flow/purpose analysis
77
+ * - parsons: Code block reordering (future)
78
+ */
79
+ declare const QuestionArchetypeSchema: z.ZodEnum<["vocabulary", "trace", "bebras", "blockmodel", "parsons"]>;
80
+ type QuestionArchetype = z.infer<typeof QuestionArchetypeSchema>;
81
+ declare const DifficultySchema: z.ZodEnum<["easy", "medium", "hard", "challenge"]>;
82
+ type Difficulty = z.infer<typeof DifficultySchema>;
83
+ declare const BloomsTaxonomySchema: z.ZodEnum<["remember", "understand", "apply", "analyze", "evaluate", "create"]>;
84
+ type BloomsTaxonomy = z.infer<typeof BloomsTaxonomySchema>;
85
+ declare const QuestionMetadataSchema: z.ZodObject<{
86
+ difficulty: z.ZodEnum<["easy", "medium", "hard", "challenge"]>;
87
+ estimatedTime: z.ZodNumber;
88
+ bloomsTaxonomy: z.ZodEnum<["remember", "understand", "apply", "analyze", "evaluate", "create"]>;
89
+ tags: z.ZodArray<z.ZodString, "many">;
90
+ source: z.ZodDefault<z.ZodString>;
91
+ version: z.ZodDefault<z.ZodString>;
92
+ createdDate: z.ZodOptional<z.ZodString>;
93
+ lastModified: z.ZodOptional<z.ZodString>;
94
+ }, "strip", z.ZodTypeAny, {
95
+ difficulty: "easy" | "medium" | "hard" | "challenge";
96
+ estimatedTime: number;
97
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
98
+ tags: string[];
99
+ source: string;
100
+ version: string;
101
+ createdDate?: string | undefined;
102
+ lastModified?: string | undefined;
103
+ }, {
104
+ difficulty: "easy" | "medium" | "hard" | "challenge";
105
+ estimatedTime: number;
106
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
107
+ tags: string[];
108
+ source?: string | undefined;
109
+ version?: string | undefined;
110
+ createdDate?: string | undefined;
111
+ lastModified?: string | undefined;
112
+ }>;
113
+ type QuestionMetadata = z.infer<typeof QuestionMetadataSchema>;
114
+ /**
115
+ * Full question schema with v1.1 enhancements:
116
+ * - questionArchetype: Pedagogical classification
117
+ * - misconceptionTargets: Expected misconceptions this question probes
118
+ * - options with misconceptionId and structured feedback
119
+ */
120
+ declare const QuestionSchema: z.ZodObject<{
121
+ questionId: z.ZodString;
122
+ globalId: z.ZodString;
123
+ questionNumber: z.ZodNumber;
124
+ questionType: z.ZodEnum<["vocabulary", "code_understanding", "problem_solving", "application", "reflection"]>;
125
+ questionTypeLabel: z.ZodString;
126
+ questionArchetype: z.ZodOptional<z.ZodEnum<["vocabulary", "trace", "bebras", "blockmodel", "parsons"]>>;
127
+ prompt: z.ZodString;
128
+ hasCodeBlock: z.ZodBoolean;
129
+ codeLanguage: z.ZodNullable<z.ZodString>;
130
+ codeContent: z.ZodNullable<z.ZodString>;
131
+ misconceptionTargets: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
132
+ options: z.ZodArray<z.ZodObject<{
133
+ key: z.ZodEnum<["A", "B", "C", "D"]>;
134
+ text: z.ZodString;
135
+ isCorrect: z.ZodBoolean;
136
+ misconceptionId: z.ZodOptional<z.ZodString>;
137
+ feedback: z.ZodOptional<z.ZodObject<{
138
+ short: z.ZodString;
139
+ detailed: z.ZodString;
140
+ socraticHint: z.ZodOptional<z.ZodString>;
141
+ }, "strip", z.ZodTypeAny, {
142
+ short: string;
143
+ detailed: string;
144
+ socraticHint?: string | undefined;
145
+ }, {
146
+ short: string;
147
+ detailed: string;
148
+ socraticHint?: string | undefined;
149
+ }>>;
150
+ }, "strip", z.ZodTypeAny, {
151
+ key: "A" | "B" | "C" | "D";
152
+ text: string;
153
+ isCorrect: boolean;
154
+ misconceptionId?: string | undefined;
155
+ feedback?: {
156
+ short: string;
157
+ detailed: string;
158
+ socraticHint?: string | undefined;
159
+ } | undefined;
160
+ }, {
161
+ key: "A" | "B" | "C" | "D";
162
+ text: string;
163
+ isCorrect: boolean;
164
+ misconceptionId?: string | undefined;
165
+ feedback?: {
166
+ short: string;
167
+ detailed: string;
168
+ socraticHint?: string | undefined;
169
+ } | undefined;
170
+ }>, "many">;
171
+ correctAnswer: z.ZodEnum<["A", "B", "C", "D"]>;
172
+ correctAnswerText: z.ZodString;
173
+ metadata: z.ZodObject<{
174
+ difficulty: z.ZodEnum<["easy", "medium", "hard", "challenge"]>;
175
+ estimatedTime: z.ZodNumber;
176
+ bloomsTaxonomy: z.ZodEnum<["remember", "understand", "apply", "analyze", "evaluate", "create"]>;
177
+ tags: z.ZodArray<z.ZodString, "many">;
178
+ source: z.ZodDefault<z.ZodString>;
179
+ version: z.ZodDefault<z.ZodString>;
180
+ createdDate: z.ZodOptional<z.ZodString>;
181
+ lastModified: z.ZodOptional<z.ZodString>;
182
+ }, "strip", z.ZodTypeAny, {
183
+ difficulty: "easy" | "medium" | "hard" | "challenge";
184
+ estimatedTime: number;
185
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
186
+ tags: string[];
187
+ source: string;
188
+ version: string;
189
+ createdDate?: string | undefined;
190
+ lastModified?: string | undefined;
191
+ }, {
192
+ difficulty: "easy" | "medium" | "hard" | "challenge";
193
+ estimatedTime: number;
194
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
195
+ tags: string[];
196
+ source?: string | undefined;
197
+ version?: string | undefined;
198
+ createdDate?: string | undefined;
199
+ lastModified?: string | undefined;
200
+ }>;
201
+ }, "strip", z.ZodTypeAny, {
202
+ options: {
203
+ key: "A" | "B" | "C" | "D";
204
+ text: string;
205
+ isCorrect: boolean;
206
+ misconceptionId?: string | undefined;
207
+ feedback?: {
208
+ short: string;
209
+ detailed: string;
210
+ socraticHint?: string | undefined;
211
+ } | undefined;
212
+ }[];
213
+ questionId: string;
214
+ globalId: string;
215
+ questionNumber: number;
216
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
217
+ questionTypeLabel: string;
218
+ prompt: string;
219
+ hasCodeBlock: boolean;
220
+ codeLanguage: string | null;
221
+ codeContent: string | null;
222
+ correctAnswer: "A" | "B" | "C" | "D";
223
+ correctAnswerText: string;
224
+ metadata: {
225
+ difficulty: "easy" | "medium" | "hard" | "challenge";
226
+ estimatedTime: number;
227
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
228
+ tags: string[];
229
+ source: string;
230
+ version: string;
231
+ createdDate?: string | undefined;
232
+ lastModified?: string | undefined;
233
+ };
234
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
235
+ misconceptionTargets?: string[] | undefined;
236
+ }, {
237
+ options: {
238
+ key: "A" | "B" | "C" | "D";
239
+ text: string;
240
+ isCorrect: boolean;
241
+ misconceptionId?: string | undefined;
242
+ feedback?: {
243
+ short: string;
244
+ detailed: string;
245
+ socraticHint?: string | undefined;
246
+ } | undefined;
247
+ }[];
248
+ questionId: string;
249
+ globalId: string;
250
+ questionNumber: number;
251
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
252
+ questionTypeLabel: string;
253
+ prompt: string;
254
+ hasCodeBlock: boolean;
255
+ codeLanguage: string | null;
256
+ codeContent: string | null;
257
+ correctAnswer: "A" | "B" | "C" | "D";
258
+ correctAnswerText: string;
259
+ metadata: {
260
+ difficulty: "easy" | "medium" | "hard" | "challenge";
261
+ estimatedTime: number;
262
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
263
+ tags: string[];
264
+ source?: string | undefined;
265
+ version?: string | undefined;
266
+ createdDate?: string | undefined;
267
+ lastModified?: string | undefined;
268
+ };
269
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
270
+ misconceptionTargets?: string[] | undefined;
271
+ }>;
272
+ type Question = z.infer<typeof QuestionSchema>;
273
+ declare const QuestionWithoutAnswerSchema: z.ZodObject<{
274
+ questionId: z.ZodString;
275
+ globalId: z.ZodString;
276
+ questionNumber: z.ZodNumber;
277
+ questionType: z.ZodEnum<["vocabulary", "code_understanding", "problem_solving", "application", "reflection"]>;
278
+ questionTypeLabel: z.ZodString;
279
+ questionArchetype: z.ZodOptional<z.ZodEnum<["vocabulary", "trace", "bebras", "blockmodel", "parsons"]>>;
280
+ prompt: z.ZodString;
281
+ hasCodeBlock: z.ZodBoolean;
282
+ codeLanguage: z.ZodNullable<z.ZodString>;
283
+ codeContent: z.ZodNullable<z.ZodString>;
284
+ misconceptionTargets: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
285
+ metadata: z.ZodObject<{
286
+ difficulty: z.ZodEnum<["easy", "medium", "hard", "challenge"]>;
287
+ estimatedTime: z.ZodNumber;
288
+ bloomsTaxonomy: z.ZodEnum<["remember", "understand", "apply", "analyze", "evaluate", "create"]>;
289
+ tags: z.ZodArray<z.ZodString, "many">;
290
+ source: z.ZodDefault<z.ZodString>;
291
+ version: z.ZodDefault<z.ZodString>;
292
+ createdDate: z.ZodOptional<z.ZodString>;
293
+ lastModified: z.ZodOptional<z.ZodString>;
294
+ }, "strip", z.ZodTypeAny, {
295
+ difficulty: "easy" | "medium" | "hard" | "challenge";
296
+ estimatedTime: number;
297
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
298
+ tags: string[];
299
+ source: string;
300
+ version: string;
301
+ createdDate?: string | undefined;
302
+ lastModified?: string | undefined;
303
+ }, {
304
+ difficulty: "easy" | "medium" | "hard" | "challenge";
305
+ estimatedTime: number;
306
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
307
+ tags: string[];
308
+ source?: string | undefined;
309
+ version?: string | undefined;
310
+ createdDate?: string | undefined;
311
+ lastModified?: string | undefined;
312
+ }>;
313
+ } & {
314
+ options: z.ZodArray<z.ZodObject<Omit<{
315
+ key: z.ZodEnum<["A", "B", "C", "D"]>;
316
+ text: z.ZodString;
317
+ isCorrect: z.ZodBoolean;
318
+ misconceptionId: z.ZodOptional<z.ZodString>;
319
+ feedback: z.ZodOptional<z.ZodObject<{
320
+ short: z.ZodString;
321
+ detailed: z.ZodString;
322
+ socraticHint: z.ZodOptional<z.ZodString>;
323
+ }, "strip", z.ZodTypeAny, {
324
+ short: string;
325
+ detailed: string;
326
+ socraticHint?: string | undefined;
327
+ }, {
328
+ short: string;
329
+ detailed: string;
330
+ socraticHint?: string | undefined;
331
+ }>>;
332
+ }, "isCorrect" | "misconceptionId" | "feedback">, "strip", z.ZodTypeAny, {
333
+ key: "A" | "B" | "C" | "D";
334
+ text: string;
335
+ }, {
336
+ key: "A" | "B" | "C" | "D";
337
+ text: string;
338
+ }>, "many">;
339
+ }, "strip", z.ZodTypeAny, {
340
+ options: {
341
+ key: "A" | "B" | "C" | "D";
342
+ text: string;
343
+ }[];
344
+ questionId: string;
345
+ globalId: string;
346
+ questionNumber: number;
347
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
348
+ questionTypeLabel: string;
349
+ prompt: string;
350
+ hasCodeBlock: boolean;
351
+ codeLanguage: string | null;
352
+ codeContent: string | null;
353
+ metadata: {
354
+ difficulty: "easy" | "medium" | "hard" | "challenge";
355
+ estimatedTime: number;
356
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
357
+ tags: string[];
358
+ source: string;
359
+ version: string;
360
+ createdDate?: string | undefined;
361
+ lastModified?: string | undefined;
362
+ };
363
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
364
+ misconceptionTargets?: string[] | undefined;
365
+ }, {
366
+ options: {
367
+ key: "A" | "B" | "C" | "D";
368
+ text: string;
369
+ }[];
370
+ questionId: string;
371
+ globalId: string;
372
+ questionNumber: number;
373
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
374
+ questionTypeLabel: string;
375
+ prompt: string;
376
+ hasCodeBlock: boolean;
377
+ codeLanguage: string | null;
378
+ codeContent: string | null;
379
+ metadata: {
380
+ difficulty: "easy" | "medium" | "hard" | "challenge";
381
+ estimatedTime: number;
382
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
383
+ tags: string[];
384
+ source?: string | undefined;
385
+ version?: string | undefined;
386
+ createdDate?: string | undefined;
387
+ lastModified?: string | undefined;
388
+ };
389
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
390
+ misconceptionTargets?: string[] | undefined;
391
+ }>;
392
+ type QuestionWithoutAnswer = z.infer<typeof QuestionWithoutAnswerSchema>;
393
+
394
+ declare const CourseDomainSchema: z.ZodEnum<["ai_data_science", "ai_ml_cv", "ai_generative", "ai_advanced", "web_development", "mobile_development", "mobile", "block_based", "python_programming", "design", "foundation", "creative_computing"]>;
395
+ type CourseDomain = z.infer<typeof CourseDomainSchema>;
396
+ declare const CourseTierSchema: z.ZodEnum<["foundation", "intermediate", "advanced"]>;
397
+ type CourseTier = z.infer<typeof CourseTierSchema>;
398
+ declare const LessonSchema: z.ZodObject<{
399
+ lessonId: z.ZodString;
400
+ lessonNumber: z.ZodNumber;
401
+ lessonTitle: z.ZodString;
402
+ lessonSlug: z.ZodOptional<z.ZodString>;
403
+ totalQuestions: z.ZodDefault<z.ZodNumber>;
404
+ questions: z.ZodArray<z.ZodObject<{
405
+ questionId: z.ZodString;
406
+ globalId: z.ZodString;
407
+ questionNumber: z.ZodNumber;
408
+ questionType: z.ZodEnum<["vocabulary", "code_understanding", "problem_solving", "application", "reflection"]>;
409
+ questionTypeLabel: z.ZodString;
410
+ questionArchetype: z.ZodOptional<z.ZodEnum<["vocabulary", "trace", "bebras", "blockmodel", "parsons"]>>;
411
+ prompt: z.ZodString;
412
+ hasCodeBlock: z.ZodBoolean;
413
+ codeLanguage: z.ZodNullable<z.ZodString>;
414
+ codeContent: z.ZodNullable<z.ZodString>;
415
+ misconceptionTargets: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
416
+ options: z.ZodArray<z.ZodObject<{
417
+ key: z.ZodEnum<["A", "B", "C", "D"]>;
418
+ text: z.ZodString;
419
+ isCorrect: z.ZodBoolean;
420
+ misconceptionId: z.ZodOptional<z.ZodString>;
421
+ feedback: z.ZodOptional<z.ZodObject<{
422
+ short: z.ZodString;
423
+ detailed: z.ZodString;
424
+ socraticHint: z.ZodOptional<z.ZodString>;
425
+ }, "strip", z.ZodTypeAny, {
426
+ short: string;
427
+ detailed: string;
428
+ socraticHint?: string | undefined;
429
+ }, {
430
+ short: string;
431
+ detailed: string;
432
+ socraticHint?: string | undefined;
433
+ }>>;
434
+ }, "strip", z.ZodTypeAny, {
435
+ key: "A" | "B" | "C" | "D";
436
+ text: string;
437
+ isCorrect: boolean;
438
+ misconceptionId?: string | undefined;
439
+ feedback?: {
440
+ short: string;
441
+ detailed: string;
442
+ socraticHint?: string | undefined;
443
+ } | undefined;
444
+ }, {
445
+ key: "A" | "B" | "C" | "D";
446
+ text: string;
447
+ isCorrect: boolean;
448
+ misconceptionId?: string | undefined;
449
+ feedback?: {
450
+ short: string;
451
+ detailed: string;
452
+ socraticHint?: string | undefined;
453
+ } | undefined;
454
+ }>, "many">;
455
+ correctAnswer: z.ZodEnum<["A", "B", "C", "D"]>;
456
+ correctAnswerText: z.ZodString;
457
+ metadata: z.ZodObject<{
458
+ difficulty: z.ZodEnum<["easy", "medium", "hard", "challenge"]>;
459
+ estimatedTime: z.ZodNumber;
460
+ bloomsTaxonomy: z.ZodEnum<["remember", "understand", "apply", "analyze", "evaluate", "create"]>;
461
+ tags: z.ZodArray<z.ZodString, "many">;
462
+ source: z.ZodDefault<z.ZodString>;
463
+ version: z.ZodDefault<z.ZodString>;
464
+ createdDate: z.ZodOptional<z.ZodString>;
465
+ lastModified: z.ZodOptional<z.ZodString>;
466
+ }, "strip", z.ZodTypeAny, {
467
+ difficulty: "easy" | "medium" | "hard" | "challenge";
468
+ estimatedTime: number;
469
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
470
+ tags: string[];
471
+ source: string;
472
+ version: string;
473
+ createdDate?: string | undefined;
474
+ lastModified?: string | undefined;
475
+ }, {
476
+ difficulty: "easy" | "medium" | "hard" | "challenge";
477
+ estimatedTime: number;
478
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
479
+ tags: string[];
480
+ source?: string | undefined;
481
+ version?: string | undefined;
482
+ createdDate?: string | undefined;
483
+ lastModified?: string | undefined;
484
+ }>;
485
+ }, "strip", z.ZodTypeAny, {
486
+ options: {
487
+ key: "A" | "B" | "C" | "D";
488
+ text: string;
489
+ isCorrect: boolean;
490
+ misconceptionId?: string | undefined;
491
+ feedback?: {
492
+ short: string;
493
+ detailed: string;
494
+ socraticHint?: string | undefined;
495
+ } | undefined;
496
+ }[];
497
+ questionId: string;
498
+ globalId: string;
499
+ questionNumber: number;
500
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
501
+ questionTypeLabel: string;
502
+ prompt: string;
503
+ hasCodeBlock: boolean;
504
+ codeLanguage: string | null;
505
+ codeContent: string | null;
506
+ correctAnswer: "A" | "B" | "C" | "D";
507
+ correctAnswerText: string;
508
+ metadata: {
509
+ difficulty: "easy" | "medium" | "hard" | "challenge";
510
+ estimatedTime: number;
511
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
512
+ tags: string[];
513
+ source: string;
514
+ version: string;
515
+ createdDate?: string | undefined;
516
+ lastModified?: string | undefined;
517
+ };
518
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
519
+ misconceptionTargets?: string[] | undefined;
520
+ }, {
521
+ options: {
522
+ key: "A" | "B" | "C" | "D";
523
+ text: string;
524
+ isCorrect: boolean;
525
+ misconceptionId?: string | undefined;
526
+ feedback?: {
527
+ short: string;
528
+ detailed: string;
529
+ socraticHint?: string | undefined;
530
+ } | undefined;
531
+ }[];
532
+ questionId: string;
533
+ globalId: string;
534
+ questionNumber: number;
535
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
536
+ questionTypeLabel: string;
537
+ prompt: string;
538
+ hasCodeBlock: boolean;
539
+ codeLanguage: string | null;
540
+ codeContent: string | null;
541
+ correctAnswer: "A" | "B" | "C" | "D";
542
+ correctAnswerText: string;
543
+ metadata: {
544
+ difficulty: "easy" | "medium" | "hard" | "challenge";
545
+ estimatedTime: number;
546
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
547
+ tags: string[];
548
+ source?: string | undefined;
549
+ version?: string | undefined;
550
+ createdDate?: string | undefined;
551
+ lastModified?: string | undefined;
552
+ };
553
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
554
+ misconceptionTargets?: string[] | undefined;
555
+ }>, "many">;
556
+ }, "strip", z.ZodTypeAny, {
557
+ totalQuestions: number;
558
+ lessonId: string;
559
+ lessonNumber: number;
560
+ lessonTitle: string;
561
+ questions: {
562
+ options: {
563
+ key: "A" | "B" | "C" | "D";
564
+ text: string;
565
+ isCorrect: boolean;
566
+ misconceptionId?: string | undefined;
567
+ feedback?: {
568
+ short: string;
569
+ detailed: string;
570
+ socraticHint?: string | undefined;
571
+ } | undefined;
572
+ }[];
573
+ questionId: string;
574
+ globalId: string;
575
+ questionNumber: number;
576
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
577
+ questionTypeLabel: string;
578
+ prompt: string;
579
+ hasCodeBlock: boolean;
580
+ codeLanguage: string | null;
581
+ codeContent: string | null;
582
+ correctAnswer: "A" | "B" | "C" | "D";
583
+ correctAnswerText: string;
584
+ metadata: {
585
+ difficulty: "easy" | "medium" | "hard" | "challenge";
586
+ estimatedTime: number;
587
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
588
+ tags: string[];
589
+ source: string;
590
+ version: string;
591
+ createdDate?: string | undefined;
592
+ lastModified?: string | undefined;
593
+ };
594
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
595
+ misconceptionTargets?: string[] | undefined;
596
+ }[];
597
+ lessonSlug?: string | undefined;
598
+ }, {
599
+ lessonId: string;
600
+ lessonNumber: number;
601
+ lessonTitle: string;
602
+ questions: {
603
+ options: {
604
+ key: "A" | "B" | "C" | "D";
605
+ text: string;
606
+ isCorrect: boolean;
607
+ misconceptionId?: string | undefined;
608
+ feedback?: {
609
+ short: string;
610
+ detailed: string;
611
+ socraticHint?: string | undefined;
612
+ } | undefined;
613
+ }[];
614
+ questionId: string;
615
+ globalId: string;
616
+ questionNumber: number;
617
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
618
+ questionTypeLabel: string;
619
+ prompt: string;
620
+ hasCodeBlock: boolean;
621
+ codeLanguage: string | null;
622
+ codeContent: string | null;
623
+ correctAnswer: "A" | "B" | "C" | "D";
624
+ correctAnswerText: string;
625
+ metadata: {
626
+ difficulty: "easy" | "medium" | "hard" | "challenge";
627
+ estimatedTime: number;
628
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
629
+ tags: string[];
630
+ source?: string | undefined;
631
+ version?: string | undefined;
632
+ createdDate?: string | undefined;
633
+ lastModified?: string | undefined;
634
+ };
635
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
636
+ misconceptionTargets?: string[] | undefined;
637
+ }[];
638
+ totalQuestions?: number | undefined;
639
+ lessonSlug?: string | undefined;
640
+ }>;
641
+ type Lesson = z.infer<typeof LessonSchema>;
642
+ declare const CourseSchema: z.ZodObject<{
643
+ courseId: z.ZodString;
644
+ courseName: z.ZodString;
645
+ courseCode: z.ZodString;
646
+ domain: z.ZodEnum<["ai_data_science", "ai_ml_cv", "ai_generative", "ai_advanced", "web_development", "mobile_development", "mobile", "block_based", "python_programming", "design", "foundation", "creative_computing"]>;
647
+ tier: z.ZodEnum<["foundation", "intermediate", "advanced"]>;
648
+ difficulty: z.ZodNumber;
649
+ totalLessons: z.ZodNumber;
650
+ totalQuestions: z.ZodNumber;
651
+ sourceFile: z.ZodOptional<z.ZodString>;
652
+ lessons: z.ZodArray<z.ZodObject<{
653
+ lessonId: z.ZodString;
654
+ lessonNumber: z.ZodNumber;
655
+ lessonTitle: z.ZodString;
656
+ lessonSlug: z.ZodOptional<z.ZodString>;
657
+ totalQuestions: z.ZodDefault<z.ZodNumber>;
658
+ questions: z.ZodArray<z.ZodObject<{
659
+ questionId: z.ZodString;
660
+ globalId: z.ZodString;
661
+ questionNumber: z.ZodNumber;
662
+ questionType: z.ZodEnum<["vocabulary", "code_understanding", "problem_solving", "application", "reflection"]>;
663
+ questionTypeLabel: z.ZodString;
664
+ questionArchetype: z.ZodOptional<z.ZodEnum<["vocabulary", "trace", "bebras", "blockmodel", "parsons"]>>;
665
+ prompt: z.ZodString;
666
+ hasCodeBlock: z.ZodBoolean;
667
+ codeLanguage: z.ZodNullable<z.ZodString>;
668
+ codeContent: z.ZodNullable<z.ZodString>;
669
+ misconceptionTargets: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
670
+ options: z.ZodArray<z.ZodObject<{
671
+ key: z.ZodEnum<["A", "B", "C", "D"]>;
672
+ text: z.ZodString;
673
+ isCorrect: z.ZodBoolean;
674
+ misconceptionId: z.ZodOptional<z.ZodString>;
675
+ feedback: z.ZodOptional<z.ZodObject<{
676
+ short: z.ZodString;
677
+ detailed: z.ZodString;
678
+ socraticHint: z.ZodOptional<z.ZodString>;
679
+ }, "strip", z.ZodTypeAny, {
680
+ short: string;
681
+ detailed: string;
682
+ socraticHint?: string | undefined;
683
+ }, {
684
+ short: string;
685
+ detailed: string;
686
+ socraticHint?: string | undefined;
687
+ }>>;
688
+ }, "strip", z.ZodTypeAny, {
689
+ key: "A" | "B" | "C" | "D";
690
+ text: string;
691
+ isCorrect: boolean;
692
+ misconceptionId?: string | undefined;
693
+ feedback?: {
694
+ short: string;
695
+ detailed: string;
696
+ socraticHint?: string | undefined;
697
+ } | undefined;
698
+ }, {
699
+ key: "A" | "B" | "C" | "D";
700
+ text: string;
701
+ isCorrect: boolean;
702
+ misconceptionId?: string | undefined;
703
+ feedback?: {
704
+ short: string;
705
+ detailed: string;
706
+ socraticHint?: string | undefined;
707
+ } | undefined;
708
+ }>, "many">;
709
+ correctAnswer: z.ZodEnum<["A", "B", "C", "D"]>;
710
+ correctAnswerText: z.ZodString;
711
+ metadata: z.ZodObject<{
712
+ difficulty: z.ZodEnum<["easy", "medium", "hard", "challenge"]>;
713
+ estimatedTime: z.ZodNumber;
714
+ bloomsTaxonomy: z.ZodEnum<["remember", "understand", "apply", "analyze", "evaluate", "create"]>;
715
+ tags: z.ZodArray<z.ZodString, "many">;
716
+ source: z.ZodDefault<z.ZodString>;
717
+ version: z.ZodDefault<z.ZodString>;
718
+ createdDate: z.ZodOptional<z.ZodString>;
719
+ lastModified: z.ZodOptional<z.ZodString>;
720
+ }, "strip", z.ZodTypeAny, {
721
+ difficulty: "easy" | "medium" | "hard" | "challenge";
722
+ estimatedTime: number;
723
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
724
+ tags: string[];
725
+ source: string;
726
+ version: string;
727
+ createdDate?: string | undefined;
728
+ lastModified?: string | undefined;
729
+ }, {
730
+ difficulty: "easy" | "medium" | "hard" | "challenge";
731
+ estimatedTime: number;
732
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
733
+ tags: string[];
734
+ source?: string | undefined;
735
+ version?: string | undefined;
736
+ createdDate?: string | undefined;
737
+ lastModified?: string | undefined;
738
+ }>;
739
+ }, "strip", z.ZodTypeAny, {
740
+ options: {
741
+ key: "A" | "B" | "C" | "D";
742
+ text: string;
743
+ isCorrect: boolean;
744
+ misconceptionId?: string | undefined;
745
+ feedback?: {
746
+ short: string;
747
+ detailed: string;
748
+ socraticHint?: string | undefined;
749
+ } | undefined;
750
+ }[];
751
+ questionId: string;
752
+ globalId: string;
753
+ questionNumber: number;
754
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
755
+ questionTypeLabel: string;
756
+ prompt: string;
757
+ hasCodeBlock: boolean;
758
+ codeLanguage: string | null;
759
+ codeContent: string | null;
760
+ correctAnswer: "A" | "B" | "C" | "D";
761
+ correctAnswerText: string;
762
+ metadata: {
763
+ difficulty: "easy" | "medium" | "hard" | "challenge";
764
+ estimatedTime: number;
765
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
766
+ tags: string[];
767
+ source: string;
768
+ version: string;
769
+ createdDate?: string | undefined;
770
+ lastModified?: string | undefined;
771
+ };
772
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
773
+ misconceptionTargets?: string[] | undefined;
774
+ }, {
775
+ options: {
776
+ key: "A" | "B" | "C" | "D";
777
+ text: string;
778
+ isCorrect: boolean;
779
+ misconceptionId?: string | undefined;
780
+ feedback?: {
781
+ short: string;
782
+ detailed: string;
783
+ socraticHint?: string | undefined;
784
+ } | undefined;
785
+ }[];
786
+ questionId: string;
787
+ globalId: string;
788
+ questionNumber: number;
789
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
790
+ questionTypeLabel: string;
791
+ prompt: string;
792
+ hasCodeBlock: boolean;
793
+ codeLanguage: string | null;
794
+ codeContent: string | null;
795
+ correctAnswer: "A" | "B" | "C" | "D";
796
+ correctAnswerText: string;
797
+ metadata: {
798
+ difficulty: "easy" | "medium" | "hard" | "challenge";
799
+ estimatedTime: number;
800
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
801
+ tags: string[];
802
+ source?: string | undefined;
803
+ version?: string | undefined;
804
+ createdDate?: string | undefined;
805
+ lastModified?: string | undefined;
806
+ };
807
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
808
+ misconceptionTargets?: string[] | undefined;
809
+ }>, "many">;
810
+ }, "strip", z.ZodTypeAny, {
811
+ totalQuestions: number;
812
+ lessonId: string;
813
+ lessonNumber: number;
814
+ lessonTitle: string;
815
+ questions: {
816
+ options: {
817
+ key: "A" | "B" | "C" | "D";
818
+ text: string;
819
+ isCorrect: boolean;
820
+ misconceptionId?: string | undefined;
821
+ feedback?: {
822
+ short: string;
823
+ detailed: string;
824
+ socraticHint?: string | undefined;
825
+ } | undefined;
826
+ }[];
827
+ questionId: string;
828
+ globalId: string;
829
+ questionNumber: number;
830
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
831
+ questionTypeLabel: string;
832
+ prompt: string;
833
+ hasCodeBlock: boolean;
834
+ codeLanguage: string | null;
835
+ codeContent: string | null;
836
+ correctAnswer: "A" | "B" | "C" | "D";
837
+ correctAnswerText: string;
838
+ metadata: {
839
+ difficulty: "easy" | "medium" | "hard" | "challenge";
840
+ estimatedTime: number;
841
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
842
+ tags: string[];
843
+ source: string;
844
+ version: string;
845
+ createdDate?: string | undefined;
846
+ lastModified?: string | undefined;
847
+ };
848
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
849
+ misconceptionTargets?: string[] | undefined;
850
+ }[];
851
+ lessonSlug?: string | undefined;
852
+ }, {
853
+ lessonId: string;
854
+ lessonNumber: number;
855
+ lessonTitle: string;
856
+ questions: {
857
+ options: {
858
+ key: "A" | "B" | "C" | "D";
859
+ text: string;
860
+ isCorrect: boolean;
861
+ misconceptionId?: string | undefined;
862
+ feedback?: {
863
+ short: string;
864
+ detailed: string;
865
+ socraticHint?: string | undefined;
866
+ } | undefined;
867
+ }[];
868
+ questionId: string;
869
+ globalId: string;
870
+ questionNumber: number;
871
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
872
+ questionTypeLabel: string;
873
+ prompt: string;
874
+ hasCodeBlock: boolean;
875
+ codeLanguage: string | null;
876
+ codeContent: string | null;
877
+ correctAnswer: "A" | "B" | "C" | "D";
878
+ correctAnswerText: string;
879
+ metadata: {
880
+ difficulty: "easy" | "medium" | "hard" | "challenge";
881
+ estimatedTime: number;
882
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
883
+ tags: string[];
884
+ source?: string | undefined;
885
+ version?: string | undefined;
886
+ createdDate?: string | undefined;
887
+ lastModified?: string | undefined;
888
+ };
889
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
890
+ misconceptionTargets?: string[] | undefined;
891
+ }[];
892
+ totalQuestions?: number | undefined;
893
+ lessonSlug?: string | undefined;
894
+ }>, "many">;
895
+ }, "strip", z.ZodTypeAny, {
896
+ courseId: string;
897
+ courseName: string;
898
+ courseCode: string;
899
+ domain: "ai_data_science" | "ai_ml_cv" | "ai_generative" | "ai_advanced" | "web_development" | "mobile_development" | "mobile" | "block_based" | "python_programming" | "design" | "foundation" | "creative_computing";
900
+ tier: "foundation" | "intermediate" | "advanced";
901
+ difficulty: number;
902
+ totalLessons: number;
903
+ totalQuestions: number;
904
+ lessons: {
905
+ totalQuestions: number;
906
+ lessonId: string;
907
+ lessonNumber: number;
908
+ lessonTitle: string;
909
+ questions: {
910
+ options: {
911
+ key: "A" | "B" | "C" | "D";
912
+ text: string;
913
+ isCorrect: boolean;
914
+ misconceptionId?: string | undefined;
915
+ feedback?: {
916
+ short: string;
917
+ detailed: string;
918
+ socraticHint?: string | undefined;
919
+ } | undefined;
920
+ }[];
921
+ questionId: string;
922
+ globalId: string;
923
+ questionNumber: number;
924
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
925
+ questionTypeLabel: string;
926
+ prompt: string;
927
+ hasCodeBlock: boolean;
928
+ codeLanguage: string | null;
929
+ codeContent: string | null;
930
+ correctAnswer: "A" | "B" | "C" | "D";
931
+ correctAnswerText: string;
932
+ metadata: {
933
+ difficulty: "easy" | "medium" | "hard" | "challenge";
934
+ estimatedTime: number;
935
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
936
+ tags: string[];
937
+ source: string;
938
+ version: string;
939
+ createdDate?: string | undefined;
940
+ lastModified?: string | undefined;
941
+ };
942
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
943
+ misconceptionTargets?: string[] | undefined;
944
+ }[];
945
+ lessonSlug?: string | undefined;
946
+ }[];
947
+ sourceFile?: string | undefined;
948
+ }, {
949
+ courseId: string;
950
+ courseName: string;
951
+ courseCode: string;
952
+ domain: "ai_data_science" | "ai_ml_cv" | "ai_generative" | "ai_advanced" | "web_development" | "mobile_development" | "mobile" | "block_based" | "python_programming" | "design" | "foundation" | "creative_computing";
953
+ tier: "foundation" | "intermediate" | "advanced";
954
+ difficulty: number;
955
+ totalLessons: number;
956
+ totalQuestions: number;
957
+ lessons: {
958
+ lessonId: string;
959
+ lessonNumber: number;
960
+ lessonTitle: string;
961
+ questions: {
962
+ options: {
963
+ key: "A" | "B" | "C" | "D";
964
+ text: string;
965
+ isCorrect: boolean;
966
+ misconceptionId?: string | undefined;
967
+ feedback?: {
968
+ short: string;
969
+ detailed: string;
970
+ socraticHint?: string | undefined;
971
+ } | undefined;
972
+ }[];
973
+ questionId: string;
974
+ globalId: string;
975
+ questionNumber: number;
976
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
977
+ questionTypeLabel: string;
978
+ prompt: string;
979
+ hasCodeBlock: boolean;
980
+ codeLanguage: string | null;
981
+ codeContent: string | null;
982
+ correctAnswer: "A" | "B" | "C" | "D";
983
+ correctAnswerText: string;
984
+ metadata: {
985
+ difficulty: "easy" | "medium" | "hard" | "challenge";
986
+ estimatedTime: number;
987
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
988
+ tags: string[];
989
+ source?: string | undefined;
990
+ version?: string | undefined;
991
+ createdDate?: string | undefined;
992
+ lastModified?: string | undefined;
993
+ };
994
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
995
+ misconceptionTargets?: string[] | undefined;
996
+ }[];
997
+ totalQuestions?: number | undefined;
998
+ lessonSlug?: string | undefined;
999
+ }[];
1000
+ sourceFile?: string | undefined;
1001
+ }>;
1002
+ type Course = z.infer<typeof CourseSchema>;
1003
+ declare const CourseSummarySchema: z.ZodObject<Omit<{
1004
+ courseId: z.ZodString;
1005
+ courseName: z.ZodString;
1006
+ courseCode: z.ZodString;
1007
+ domain: z.ZodEnum<["ai_data_science", "ai_ml_cv", "ai_generative", "ai_advanced", "web_development", "mobile_development", "mobile", "block_based", "python_programming", "design", "foundation", "creative_computing"]>;
1008
+ tier: z.ZodEnum<["foundation", "intermediate", "advanced"]>;
1009
+ difficulty: z.ZodNumber;
1010
+ totalLessons: z.ZodNumber;
1011
+ totalQuestions: z.ZodNumber;
1012
+ sourceFile: z.ZodOptional<z.ZodString>;
1013
+ lessons: z.ZodArray<z.ZodObject<{
1014
+ lessonId: z.ZodString;
1015
+ lessonNumber: z.ZodNumber;
1016
+ lessonTitle: z.ZodString;
1017
+ lessonSlug: z.ZodOptional<z.ZodString>;
1018
+ totalQuestions: z.ZodDefault<z.ZodNumber>;
1019
+ questions: z.ZodArray<z.ZodObject<{
1020
+ questionId: z.ZodString;
1021
+ globalId: z.ZodString;
1022
+ questionNumber: z.ZodNumber;
1023
+ questionType: z.ZodEnum<["vocabulary", "code_understanding", "problem_solving", "application", "reflection"]>;
1024
+ questionTypeLabel: z.ZodString;
1025
+ questionArchetype: z.ZodOptional<z.ZodEnum<["vocabulary", "trace", "bebras", "blockmodel", "parsons"]>>;
1026
+ prompt: z.ZodString;
1027
+ hasCodeBlock: z.ZodBoolean;
1028
+ codeLanguage: z.ZodNullable<z.ZodString>;
1029
+ codeContent: z.ZodNullable<z.ZodString>;
1030
+ misconceptionTargets: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1031
+ options: z.ZodArray<z.ZodObject<{
1032
+ key: z.ZodEnum<["A", "B", "C", "D"]>;
1033
+ text: z.ZodString;
1034
+ isCorrect: z.ZodBoolean;
1035
+ misconceptionId: z.ZodOptional<z.ZodString>;
1036
+ feedback: z.ZodOptional<z.ZodObject<{
1037
+ short: z.ZodString;
1038
+ detailed: z.ZodString;
1039
+ socraticHint: z.ZodOptional<z.ZodString>;
1040
+ }, "strip", z.ZodTypeAny, {
1041
+ short: string;
1042
+ detailed: string;
1043
+ socraticHint?: string | undefined;
1044
+ }, {
1045
+ short: string;
1046
+ detailed: string;
1047
+ socraticHint?: string | undefined;
1048
+ }>>;
1049
+ }, "strip", z.ZodTypeAny, {
1050
+ key: "A" | "B" | "C" | "D";
1051
+ text: string;
1052
+ isCorrect: boolean;
1053
+ misconceptionId?: string | undefined;
1054
+ feedback?: {
1055
+ short: string;
1056
+ detailed: string;
1057
+ socraticHint?: string | undefined;
1058
+ } | undefined;
1059
+ }, {
1060
+ key: "A" | "B" | "C" | "D";
1061
+ text: string;
1062
+ isCorrect: boolean;
1063
+ misconceptionId?: string | undefined;
1064
+ feedback?: {
1065
+ short: string;
1066
+ detailed: string;
1067
+ socraticHint?: string | undefined;
1068
+ } | undefined;
1069
+ }>, "many">;
1070
+ correctAnswer: z.ZodEnum<["A", "B", "C", "D"]>;
1071
+ correctAnswerText: z.ZodString;
1072
+ metadata: z.ZodObject<{
1073
+ difficulty: z.ZodEnum<["easy", "medium", "hard", "challenge"]>;
1074
+ estimatedTime: z.ZodNumber;
1075
+ bloomsTaxonomy: z.ZodEnum<["remember", "understand", "apply", "analyze", "evaluate", "create"]>;
1076
+ tags: z.ZodArray<z.ZodString, "many">;
1077
+ source: z.ZodDefault<z.ZodString>;
1078
+ version: z.ZodDefault<z.ZodString>;
1079
+ createdDate: z.ZodOptional<z.ZodString>;
1080
+ lastModified: z.ZodOptional<z.ZodString>;
1081
+ }, "strip", z.ZodTypeAny, {
1082
+ difficulty: "easy" | "medium" | "hard" | "challenge";
1083
+ estimatedTime: number;
1084
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
1085
+ tags: string[];
1086
+ source: string;
1087
+ version: string;
1088
+ createdDate?: string | undefined;
1089
+ lastModified?: string | undefined;
1090
+ }, {
1091
+ difficulty: "easy" | "medium" | "hard" | "challenge";
1092
+ estimatedTime: number;
1093
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
1094
+ tags: string[];
1095
+ source?: string | undefined;
1096
+ version?: string | undefined;
1097
+ createdDate?: string | undefined;
1098
+ lastModified?: string | undefined;
1099
+ }>;
1100
+ }, "strip", z.ZodTypeAny, {
1101
+ options: {
1102
+ key: "A" | "B" | "C" | "D";
1103
+ text: string;
1104
+ isCorrect: boolean;
1105
+ misconceptionId?: string | undefined;
1106
+ feedback?: {
1107
+ short: string;
1108
+ detailed: string;
1109
+ socraticHint?: string | undefined;
1110
+ } | undefined;
1111
+ }[];
1112
+ questionId: string;
1113
+ globalId: string;
1114
+ questionNumber: number;
1115
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
1116
+ questionTypeLabel: string;
1117
+ prompt: string;
1118
+ hasCodeBlock: boolean;
1119
+ codeLanguage: string | null;
1120
+ codeContent: string | null;
1121
+ correctAnswer: "A" | "B" | "C" | "D";
1122
+ correctAnswerText: string;
1123
+ metadata: {
1124
+ difficulty: "easy" | "medium" | "hard" | "challenge";
1125
+ estimatedTime: number;
1126
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
1127
+ tags: string[];
1128
+ source: string;
1129
+ version: string;
1130
+ createdDate?: string | undefined;
1131
+ lastModified?: string | undefined;
1132
+ };
1133
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
1134
+ misconceptionTargets?: string[] | undefined;
1135
+ }, {
1136
+ options: {
1137
+ key: "A" | "B" | "C" | "D";
1138
+ text: string;
1139
+ isCorrect: boolean;
1140
+ misconceptionId?: string | undefined;
1141
+ feedback?: {
1142
+ short: string;
1143
+ detailed: string;
1144
+ socraticHint?: string | undefined;
1145
+ } | undefined;
1146
+ }[];
1147
+ questionId: string;
1148
+ globalId: string;
1149
+ questionNumber: number;
1150
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
1151
+ questionTypeLabel: string;
1152
+ prompt: string;
1153
+ hasCodeBlock: boolean;
1154
+ codeLanguage: string | null;
1155
+ codeContent: string | null;
1156
+ correctAnswer: "A" | "B" | "C" | "D";
1157
+ correctAnswerText: string;
1158
+ metadata: {
1159
+ difficulty: "easy" | "medium" | "hard" | "challenge";
1160
+ estimatedTime: number;
1161
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
1162
+ tags: string[];
1163
+ source?: string | undefined;
1164
+ version?: string | undefined;
1165
+ createdDate?: string | undefined;
1166
+ lastModified?: string | undefined;
1167
+ };
1168
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
1169
+ misconceptionTargets?: string[] | undefined;
1170
+ }>, "many">;
1171
+ }, "strip", z.ZodTypeAny, {
1172
+ totalQuestions: number;
1173
+ lessonId: string;
1174
+ lessonNumber: number;
1175
+ lessonTitle: string;
1176
+ questions: {
1177
+ options: {
1178
+ key: "A" | "B" | "C" | "D";
1179
+ text: string;
1180
+ isCorrect: boolean;
1181
+ misconceptionId?: string | undefined;
1182
+ feedback?: {
1183
+ short: string;
1184
+ detailed: string;
1185
+ socraticHint?: string | undefined;
1186
+ } | undefined;
1187
+ }[];
1188
+ questionId: string;
1189
+ globalId: string;
1190
+ questionNumber: number;
1191
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
1192
+ questionTypeLabel: string;
1193
+ prompt: string;
1194
+ hasCodeBlock: boolean;
1195
+ codeLanguage: string | null;
1196
+ codeContent: string | null;
1197
+ correctAnswer: "A" | "B" | "C" | "D";
1198
+ correctAnswerText: string;
1199
+ metadata: {
1200
+ difficulty: "easy" | "medium" | "hard" | "challenge";
1201
+ estimatedTime: number;
1202
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
1203
+ tags: string[];
1204
+ source: string;
1205
+ version: string;
1206
+ createdDate?: string | undefined;
1207
+ lastModified?: string | undefined;
1208
+ };
1209
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
1210
+ misconceptionTargets?: string[] | undefined;
1211
+ }[];
1212
+ lessonSlug?: string | undefined;
1213
+ }, {
1214
+ lessonId: string;
1215
+ lessonNumber: number;
1216
+ lessonTitle: string;
1217
+ questions: {
1218
+ options: {
1219
+ key: "A" | "B" | "C" | "D";
1220
+ text: string;
1221
+ isCorrect: boolean;
1222
+ misconceptionId?: string | undefined;
1223
+ feedback?: {
1224
+ short: string;
1225
+ detailed: string;
1226
+ socraticHint?: string | undefined;
1227
+ } | undefined;
1228
+ }[];
1229
+ questionId: string;
1230
+ globalId: string;
1231
+ questionNumber: number;
1232
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
1233
+ questionTypeLabel: string;
1234
+ prompt: string;
1235
+ hasCodeBlock: boolean;
1236
+ codeLanguage: string | null;
1237
+ codeContent: string | null;
1238
+ correctAnswer: "A" | "B" | "C" | "D";
1239
+ correctAnswerText: string;
1240
+ metadata: {
1241
+ difficulty: "easy" | "medium" | "hard" | "challenge";
1242
+ estimatedTime: number;
1243
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
1244
+ tags: string[];
1245
+ source?: string | undefined;
1246
+ version?: string | undefined;
1247
+ createdDate?: string | undefined;
1248
+ lastModified?: string | undefined;
1249
+ };
1250
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
1251
+ misconceptionTargets?: string[] | undefined;
1252
+ }[];
1253
+ totalQuestions?: number | undefined;
1254
+ lessonSlug?: string | undefined;
1255
+ }>, "many">;
1256
+ }, "lessons"> & {
1257
+ lessons: z.ZodOptional<z.ZodArray<z.ZodObject<Omit<{
1258
+ lessonId: z.ZodString;
1259
+ lessonNumber: z.ZodNumber;
1260
+ lessonTitle: z.ZodString;
1261
+ lessonSlug: z.ZodOptional<z.ZodString>;
1262
+ totalQuestions: z.ZodDefault<z.ZodNumber>;
1263
+ questions: z.ZodArray<z.ZodObject<{
1264
+ questionId: z.ZodString;
1265
+ globalId: z.ZodString;
1266
+ questionNumber: z.ZodNumber;
1267
+ questionType: z.ZodEnum<["vocabulary", "code_understanding", "problem_solving", "application", "reflection"]>;
1268
+ questionTypeLabel: z.ZodString;
1269
+ questionArchetype: z.ZodOptional<z.ZodEnum<["vocabulary", "trace", "bebras", "blockmodel", "parsons"]>>;
1270
+ prompt: z.ZodString;
1271
+ hasCodeBlock: z.ZodBoolean;
1272
+ codeLanguage: z.ZodNullable<z.ZodString>;
1273
+ codeContent: z.ZodNullable<z.ZodString>;
1274
+ misconceptionTargets: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1275
+ options: z.ZodArray<z.ZodObject<{
1276
+ key: z.ZodEnum<["A", "B", "C", "D"]>;
1277
+ text: z.ZodString;
1278
+ isCorrect: z.ZodBoolean;
1279
+ misconceptionId: z.ZodOptional<z.ZodString>;
1280
+ feedback: z.ZodOptional<z.ZodObject<{
1281
+ short: z.ZodString;
1282
+ detailed: z.ZodString;
1283
+ socraticHint: z.ZodOptional<z.ZodString>;
1284
+ }, "strip", z.ZodTypeAny, {
1285
+ short: string;
1286
+ detailed: string;
1287
+ socraticHint?: string | undefined;
1288
+ }, {
1289
+ short: string;
1290
+ detailed: string;
1291
+ socraticHint?: string | undefined;
1292
+ }>>;
1293
+ }, "strip", z.ZodTypeAny, {
1294
+ key: "A" | "B" | "C" | "D";
1295
+ text: string;
1296
+ isCorrect: boolean;
1297
+ misconceptionId?: string | undefined;
1298
+ feedback?: {
1299
+ short: string;
1300
+ detailed: string;
1301
+ socraticHint?: string | undefined;
1302
+ } | undefined;
1303
+ }, {
1304
+ key: "A" | "B" | "C" | "D";
1305
+ text: string;
1306
+ isCorrect: boolean;
1307
+ misconceptionId?: string | undefined;
1308
+ feedback?: {
1309
+ short: string;
1310
+ detailed: string;
1311
+ socraticHint?: string | undefined;
1312
+ } | undefined;
1313
+ }>, "many">;
1314
+ correctAnswer: z.ZodEnum<["A", "B", "C", "D"]>;
1315
+ correctAnswerText: z.ZodString;
1316
+ metadata: z.ZodObject<{
1317
+ difficulty: z.ZodEnum<["easy", "medium", "hard", "challenge"]>;
1318
+ estimatedTime: z.ZodNumber;
1319
+ bloomsTaxonomy: z.ZodEnum<["remember", "understand", "apply", "analyze", "evaluate", "create"]>;
1320
+ tags: z.ZodArray<z.ZodString, "many">;
1321
+ source: z.ZodDefault<z.ZodString>;
1322
+ version: z.ZodDefault<z.ZodString>;
1323
+ createdDate: z.ZodOptional<z.ZodString>;
1324
+ lastModified: z.ZodOptional<z.ZodString>;
1325
+ }, "strip", z.ZodTypeAny, {
1326
+ difficulty: "easy" | "medium" | "hard" | "challenge";
1327
+ estimatedTime: number;
1328
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
1329
+ tags: string[];
1330
+ source: string;
1331
+ version: string;
1332
+ createdDate?: string | undefined;
1333
+ lastModified?: string | undefined;
1334
+ }, {
1335
+ difficulty: "easy" | "medium" | "hard" | "challenge";
1336
+ estimatedTime: number;
1337
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
1338
+ tags: string[];
1339
+ source?: string | undefined;
1340
+ version?: string | undefined;
1341
+ createdDate?: string | undefined;
1342
+ lastModified?: string | undefined;
1343
+ }>;
1344
+ }, "strip", z.ZodTypeAny, {
1345
+ options: {
1346
+ key: "A" | "B" | "C" | "D";
1347
+ text: string;
1348
+ isCorrect: boolean;
1349
+ misconceptionId?: string | undefined;
1350
+ feedback?: {
1351
+ short: string;
1352
+ detailed: string;
1353
+ socraticHint?: string | undefined;
1354
+ } | undefined;
1355
+ }[];
1356
+ questionId: string;
1357
+ globalId: string;
1358
+ questionNumber: number;
1359
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
1360
+ questionTypeLabel: string;
1361
+ prompt: string;
1362
+ hasCodeBlock: boolean;
1363
+ codeLanguage: string | null;
1364
+ codeContent: string | null;
1365
+ correctAnswer: "A" | "B" | "C" | "D";
1366
+ correctAnswerText: string;
1367
+ metadata: {
1368
+ difficulty: "easy" | "medium" | "hard" | "challenge";
1369
+ estimatedTime: number;
1370
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
1371
+ tags: string[];
1372
+ source: string;
1373
+ version: string;
1374
+ createdDate?: string | undefined;
1375
+ lastModified?: string | undefined;
1376
+ };
1377
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
1378
+ misconceptionTargets?: string[] | undefined;
1379
+ }, {
1380
+ options: {
1381
+ key: "A" | "B" | "C" | "D";
1382
+ text: string;
1383
+ isCorrect: boolean;
1384
+ misconceptionId?: string | undefined;
1385
+ feedback?: {
1386
+ short: string;
1387
+ detailed: string;
1388
+ socraticHint?: string | undefined;
1389
+ } | undefined;
1390
+ }[];
1391
+ questionId: string;
1392
+ globalId: string;
1393
+ questionNumber: number;
1394
+ questionType: "vocabulary" | "code_understanding" | "problem_solving" | "application" | "reflection";
1395
+ questionTypeLabel: string;
1396
+ prompt: string;
1397
+ hasCodeBlock: boolean;
1398
+ codeLanguage: string | null;
1399
+ codeContent: string | null;
1400
+ correctAnswer: "A" | "B" | "C" | "D";
1401
+ correctAnswerText: string;
1402
+ metadata: {
1403
+ difficulty: "easy" | "medium" | "hard" | "challenge";
1404
+ estimatedTime: number;
1405
+ bloomsTaxonomy: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
1406
+ tags: string[];
1407
+ source?: string | undefined;
1408
+ version?: string | undefined;
1409
+ createdDate?: string | undefined;
1410
+ lastModified?: string | undefined;
1411
+ };
1412
+ questionArchetype?: "vocabulary" | "trace" | "bebras" | "blockmodel" | "parsons" | undefined;
1413
+ misconceptionTargets?: string[] | undefined;
1414
+ }>, "many">;
1415
+ }, "questions">, "strip", z.ZodTypeAny, {
1416
+ totalQuestions: number;
1417
+ lessonId: string;
1418
+ lessonNumber: number;
1419
+ lessonTitle: string;
1420
+ lessonSlug?: string | undefined;
1421
+ }, {
1422
+ lessonId: string;
1423
+ lessonNumber: number;
1424
+ lessonTitle: string;
1425
+ totalQuestions?: number | undefined;
1426
+ lessonSlug?: string | undefined;
1427
+ }>, "many">>;
1428
+ }, "strip", z.ZodTypeAny, {
1429
+ courseId: string;
1430
+ courseName: string;
1431
+ courseCode: string;
1432
+ domain: "ai_data_science" | "ai_ml_cv" | "ai_generative" | "ai_advanced" | "web_development" | "mobile_development" | "mobile" | "block_based" | "python_programming" | "design" | "foundation" | "creative_computing";
1433
+ tier: "foundation" | "intermediate" | "advanced";
1434
+ difficulty: number;
1435
+ totalLessons: number;
1436
+ totalQuestions: number;
1437
+ sourceFile?: string | undefined;
1438
+ lessons?: {
1439
+ totalQuestions: number;
1440
+ lessonId: string;
1441
+ lessonNumber: number;
1442
+ lessonTitle: string;
1443
+ lessonSlug?: string | undefined;
1444
+ }[] | undefined;
1445
+ }, {
1446
+ courseId: string;
1447
+ courseName: string;
1448
+ courseCode: string;
1449
+ domain: "ai_data_science" | "ai_ml_cv" | "ai_generative" | "ai_advanced" | "web_development" | "mobile_development" | "mobile" | "block_based" | "python_programming" | "design" | "foundation" | "creative_computing";
1450
+ tier: "foundation" | "intermediate" | "advanced";
1451
+ difficulty: number;
1452
+ totalLessons: number;
1453
+ totalQuestions: number;
1454
+ sourceFile?: string | undefined;
1455
+ lessons?: {
1456
+ lessonId: string;
1457
+ lessonNumber: number;
1458
+ lessonTitle: string;
1459
+ totalQuestions?: number | undefined;
1460
+ lessonSlug?: string | undefined;
1461
+ }[] | undefined;
1462
+ }>;
1463
+ type CourseSummary = z.infer<typeof CourseSummarySchema>;
1464
+
1465
+ export { type BloomsTaxonomy, BloomsTaxonomySchema, type Course, type CourseDomain, CourseDomainSchema, CourseSchema, type CourseSummary, CourseSummarySchema, type CourseTier, CourseTierSchema, type Difficulty, DifficultySchema, type Feedback, FeedbackSchema, type Lesson, LessonSchema, type Option, type OptionKey, OptionKeySchema, OptionSchema, type Question, type QuestionArchetype, QuestionArchetypeSchema, type QuestionMetadata, QuestionMetadataSchema, QuestionSchema, type QuestionType, QuestionTypeSchema, type QuestionWithoutAnswer, QuestionWithoutAnswerSchema };