@telebort/question-banks 2.2.0 → 2.3.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.
package/dist/index.d.cts CHANGED
@@ -1,9 +1,9 @@
1
- import { C as Course, L as Lesson, a as Question$3 } from './course-CkP2VX_5.cjs';
2
- export { m as BloomsTaxonomy, B as BloomsTaxonomySchema, u as CourseDomain, p as CourseDomainSchema, s as CourseSchema, w as CourseSummary, t as CourseSummarySchema, v as CourseTier, q as CourseTierSchema, D as Difficulty, e as DifficultySchema, i as Feedback, F as FeedbackSchema, r as LessonSchema, k as Option, j as OptionKey, O as OptionKeySchema, b as OptionSchema, l as QuestionArchetype, d as QuestionArchetypeSchema, n as QuestionMetadata, f as QuestionMetadataSchema, g as QuestionSchema, Q as QuestionType, c as QuestionTypeSchema, o as QuestionWithoutAnswer, h as QuestionWithoutAnswerSchema } from './course-CkP2VX_5.cjs';
1
+ import { C as Course, L as Lesson, a as Question$3 } from './course-DyNRNTFp.cjs';
2
+ export { m as BloomsTaxonomy, B as BloomsTaxonomySchema, u as CourseDomain, p as CourseDomainSchema, s as CourseSchema, w as CourseSummary, t as CourseSummarySchema, v as CourseTier, q as CourseTierSchema, D as Difficulty, e as DifficultySchema, i as Feedback, F as FeedbackSchema, r as LessonSchema, k as Option, j as OptionKey, O as OptionKeySchema, b as OptionSchema, l as QuestionArchetype, d as QuestionArchetypeSchema, n as QuestionMetadata, f as QuestionMetadataSchema, g as QuestionSchema, Q as QuestionType, c as QuestionTypeSchema, o as QuestionWithoutAnswer, h as QuestionWithoutAnswerSchema } from './course-DyNRNTFp.cjs';
3
3
  export { A as AssessmentSubmission, a as AssessmentSubmissionSchema, G as GradedAssessment, c as GradedAssessmentSchema, f as GradedResponse, b as GradedResponseSchema, g as MisconceptionReport, M as MisconceptionReportSchema, e as UserResponse, U as UserResponseSchema, V as ValidationResult, d as ValidationResultSchema } from './assessment-DnV2240e.cjs';
4
4
  export { CertificationIndex, CertificationIndexSchema, CertificationMetadata, CertificationMetadataSchema, CertificationProject, CertificationProjectSchema } from './schemas/index.cjs';
5
- import { Q as QuestionFilters, a as QuizCriteria, b as SearchOptions, S as Statistics, E as ExitTicketsConfig } from './index-B-16Gs9R.cjs';
6
- export { C as CacheAdapter, D as DataSource } from './index-B-16Gs9R.cjs';
5
+ import { Q as QuestionFilters, a as QuizCriteria, b as SearchOptions, S as Statistics, E as ExitTicketsConfig } from './index-BBoylVZx.cjs';
6
+ export { C as CacheAdapter, D as DataSource } from './index-BBoylVZx.cjs';
7
7
  import { z } from 'zod';
8
8
 
9
9
  /**
@@ -425,15 +425,15 @@ declare const IrtDifficultySchema: z.ZodObject<{
425
425
  }, "strip", z.ZodTypeAny, {
426
426
  irt_b: number;
427
427
  irt_a: number;
428
- dok_level: 3 | 1 | 2 | 4;
429
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
428
+ dok_level: 4 | 1 | 2 | 3;
429
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
430
430
  estimated_minutes: number;
431
431
  irt_c?: number | undefined;
432
432
  }, {
433
433
  irt_b: number;
434
434
  irt_a: number;
435
- dok_level: 3 | 1 | 2 | 4;
436
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
435
+ dok_level: 4 | 1 | 2 | 3;
436
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
437
437
  estimated_minutes: number;
438
438
  irt_c?: number | undefined;
439
439
  }>;
@@ -520,15 +520,15 @@ declare const MalaysianMathQuestionSchema: z.ZodObject<{
520
520
  }, "strip", z.ZodTypeAny, {
521
521
  irt_b: number;
522
522
  irt_a: number;
523
- dok_level: 3 | 1 | 2 | 4;
524
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
523
+ dok_level: 4 | 1 | 2 | 3;
524
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
525
525
  estimated_minutes: number;
526
526
  irt_c?: number | undefined;
527
527
  }, {
528
528
  irt_b: number;
529
529
  irt_a: number;
530
- dok_level: 3 | 1 | 2 | 4;
531
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
530
+ dok_level: 4 | 1 | 2 | 3;
531
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
532
532
  estimated_minutes: number;
533
533
  irt_c?: number | undefined;
534
534
  }>;
@@ -644,8 +644,8 @@ declare const MalaysianMathQuestionSchema: z.ZodObject<{
644
644
  difficulty: {
645
645
  irt_b: number;
646
646
  irt_a: number;
647
- dok_level: 3 | 1 | 2 | 4;
648
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
647
+ dok_level: 4 | 1 | 2 | 3;
648
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
649
649
  estimated_minutes: number;
650
650
  irt_c?: number | undefined;
651
651
  };
@@ -704,8 +704,8 @@ declare const MalaysianMathQuestionSchema: z.ZodObject<{
704
704
  difficulty: {
705
705
  irt_b: number;
706
706
  irt_a: number;
707
- dok_level: 3 | 1 | 2 | 4;
708
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
707
+ dok_level: 4 | 1 | 2 | 3;
708
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
709
709
  estimated_minutes: number;
710
710
  irt_c?: number | undefined;
711
711
  };
@@ -784,8 +784,8 @@ declare const MalaysianMathSearchQuerySchema: z.ZodObject<{
784
784
  chapter?: number | undefined;
785
785
  paper?: "1" | "2" | undefined;
786
786
  section?: "A" | "B" | "C" | undefined;
787
- dok_level?: 3 | 1 | 2 | 4 | undefined;
788
- bloom_level?: 3 | 1 | 5 | 2 | 4 | 6 | undefined;
787
+ dok_level?: 4 | 1 | 2 | 3 | undefined;
788
+ bloom_level?: 4 | 1 | 5 | 2 | 6 | 3 | undefined;
789
789
  form?: number | undefined;
790
790
  year?: number | undefined;
791
791
  strand?: string | undefined;
@@ -800,8 +800,8 @@ declare const MalaysianMathSearchQuerySchema: z.ZodObject<{
800
800
  chapter?: number | undefined;
801
801
  paper?: "1" | "2" | undefined;
802
802
  section?: "A" | "B" | "C" | undefined;
803
- dok_level?: 3 | 1 | 2 | 4 | undefined;
804
- bloom_level?: 3 | 1 | 5 | 2 | 4 | 6 | undefined;
803
+ dok_level?: 4 | 1 | 2 | 3 | undefined;
804
+ bloom_level?: 4 | 1 | 5 | 2 | 6 | 3 | undefined;
805
805
  form?: number | undefined;
806
806
  year?: number | undefined;
807
807
  strand?: string | undefined;
@@ -913,15 +913,15 @@ declare const CurriculumIndexResponseSchema: z.ZodObject<{
913
913
  }, "strip", z.ZodTypeAny, {
914
914
  irt_b: number;
915
915
  irt_a: number;
916
- dok_level: 3 | 1 | 2 | 4;
917
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
916
+ dok_level: 4 | 1 | 2 | 3;
917
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
918
918
  estimated_minutes: number;
919
919
  irt_c?: number | undefined;
920
920
  }, {
921
921
  irt_b: number;
922
922
  irt_a: number;
923
- dok_level: 3 | 1 | 2 | 4;
924
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
923
+ dok_level: 4 | 1 | 2 | 3;
924
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
925
925
  estimated_minutes: number;
926
926
  irt_c?: number | undefined;
927
927
  }>;
@@ -1037,8 +1037,8 @@ declare const CurriculumIndexResponseSchema: z.ZodObject<{
1037
1037
  difficulty: {
1038
1038
  irt_b: number;
1039
1039
  irt_a: number;
1040
- dok_level: 3 | 1 | 2 | 4;
1041
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
1040
+ dok_level: 4 | 1 | 2 | 3;
1041
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
1042
1042
  estimated_minutes: number;
1043
1043
  irt_c?: number | undefined;
1044
1044
  };
@@ -1097,8 +1097,8 @@ declare const CurriculumIndexResponseSchema: z.ZodObject<{
1097
1097
  difficulty: {
1098
1098
  irt_b: number;
1099
1099
  irt_a: number;
1100
- dok_level: 3 | 1 | 2 | 4;
1101
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
1100
+ dok_level: 4 | 1 | 2 | 3;
1101
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
1102
1102
  estimated_minutes: number;
1103
1103
  irt_c?: number | undefined;
1104
1104
  };
@@ -1159,8 +1159,8 @@ declare const CurriculumIndexResponseSchema: z.ZodObject<{
1159
1159
  difficulty: {
1160
1160
  irt_b: number;
1161
1161
  irt_a: number;
1162
- dok_level: 3 | 1 | 2 | 4;
1163
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
1162
+ dok_level: 4 | 1 | 2 | 3;
1163
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
1164
1164
  estimated_minutes: number;
1165
1165
  irt_c?: number | undefined;
1166
1166
  };
@@ -1224,8 +1224,8 @@ declare const CurriculumIndexResponseSchema: z.ZodObject<{
1224
1224
  difficulty: {
1225
1225
  irt_b: number;
1226
1226
  irt_a: number;
1227
- dok_level: 3 | 1 | 2 | 4;
1228
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
1227
+ dok_level: 4 | 1 | 2 | 3;
1228
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
1229
1229
  estimated_minutes: number;
1230
1230
  irt_c?: number | undefined;
1231
1231
  };
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { C as Course, L as Lesson, a as Question$3 } from './course-CkP2VX_5.js';
2
- export { m as BloomsTaxonomy, B as BloomsTaxonomySchema, u as CourseDomain, p as CourseDomainSchema, s as CourseSchema, w as CourseSummary, t as CourseSummarySchema, v as CourseTier, q as CourseTierSchema, D as Difficulty, e as DifficultySchema, i as Feedback, F as FeedbackSchema, r as LessonSchema, k as Option, j as OptionKey, O as OptionKeySchema, b as OptionSchema, l as QuestionArchetype, d as QuestionArchetypeSchema, n as QuestionMetadata, f as QuestionMetadataSchema, g as QuestionSchema, Q as QuestionType, c as QuestionTypeSchema, o as QuestionWithoutAnswer, h as QuestionWithoutAnswerSchema } from './course-CkP2VX_5.js';
1
+ import { C as Course, L as Lesson, a as Question$3 } from './course-DyNRNTFp.js';
2
+ export { m as BloomsTaxonomy, B as BloomsTaxonomySchema, u as CourseDomain, p as CourseDomainSchema, s as CourseSchema, w as CourseSummary, t as CourseSummarySchema, v as CourseTier, q as CourseTierSchema, D as Difficulty, e as DifficultySchema, i as Feedback, F as FeedbackSchema, r as LessonSchema, k as Option, j as OptionKey, O as OptionKeySchema, b as OptionSchema, l as QuestionArchetype, d as QuestionArchetypeSchema, n as QuestionMetadata, f as QuestionMetadataSchema, g as QuestionSchema, Q as QuestionType, c as QuestionTypeSchema, o as QuestionWithoutAnswer, h as QuestionWithoutAnswerSchema } from './course-DyNRNTFp.js';
3
3
  export { A as AssessmentSubmission, a as AssessmentSubmissionSchema, G as GradedAssessment, c as GradedAssessmentSchema, f as GradedResponse, b as GradedResponseSchema, g as MisconceptionReport, M as MisconceptionReportSchema, e as UserResponse, U as UserResponseSchema, V as ValidationResult, d as ValidationResultSchema } from './assessment-DnV2240e.js';
4
4
  export { CertificationIndex, CertificationIndexSchema, CertificationMetadata, CertificationMetadataSchema, CertificationProject, CertificationProjectSchema } from './schemas/index.js';
5
- import { Q as QuestionFilters, a as QuizCriteria, b as SearchOptions, S as Statistics, E as ExitTicketsConfig } from './index-DRVgW8qc.js';
6
- export { C as CacheAdapter, D as DataSource } from './index-DRVgW8qc.js';
5
+ import { Q as QuestionFilters, a as QuizCriteria, b as SearchOptions, S as Statistics, E as ExitTicketsConfig } from './index-BPJQRPuK.js';
6
+ export { C as CacheAdapter, D as DataSource } from './index-BPJQRPuK.js';
7
7
  import { z } from 'zod';
8
8
 
9
9
  /**
@@ -425,15 +425,15 @@ declare const IrtDifficultySchema: z.ZodObject<{
425
425
  }, "strip", z.ZodTypeAny, {
426
426
  irt_b: number;
427
427
  irt_a: number;
428
- dok_level: 3 | 1 | 2 | 4;
429
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
428
+ dok_level: 4 | 1 | 2 | 3;
429
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
430
430
  estimated_minutes: number;
431
431
  irt_c?: number | undefined;
432
432
  }, {
433
433
  irt_b: number;
434
434
  irt_a: number;
435
- dok_level: 3 | 1 | 2 | 4;
436
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
435
+ dok_level: 4 | 1 | 2 | 3;
436
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
437
437
  estimated_minutes: number;
438
438
  irt_c?: number | undefined;
439
439
  }>;
@@ -520,15 +520,15 @@ declare const MalaysianMathQuestionSchema: z.ZodObject<{
520
520
  }, "strip", z.ZodTypeAny, {
521
521
  irt_b: number;
522
522
  irt_a: number;
523
- dok_level: 3 | 1 | 2 | 4;
524
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
523
+ dok_level: 4 | 1 | 2 | 3;
524
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
525
525
  estimated_minutes: number;
526
526
  irt_c?: number | undefined;
527
527
  }, {
528
528
  irt_b: number;
529
529
  irt_a: number;
530
- dok_level: 3 | 1 | 2 | 4;
531
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
530
+ dok_level: 4 | 1 | 2 | 3;
531
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
532
532
  estimated_minutes: number;
533
533
  irt_c?: number | undefined;
534
534
  }>;
@@ -644,8 +644,8 @@ declare const MalaysianMathQuestionSchema: z.ZodObject<{
644
644
  difficulty: {
645
645
  irt_b: number;
646
646
  irt_a: number;
647
- dok_level: 3 | 1 | 2 | 4;
648
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
647
+ dok_level: 4 | 1 | 2 | 3;
648
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
649
649
  estimated_minutes: number;
650
650
  irt_c?: number | undefined;
651
651
  };
@@ -704,8 +704,8 @@ declare const MalaysianMathQuestionSchema: z.ZodObject<{
704
704
  difficulty: {
705
705
  irt_b: number;
706
706
  irt_a: number;
707
- dok_level: 3 | 1 | 2 | 4;
708
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
707
+ dok_level: 4 | 1 | 2 | 3;
708
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
709
709
  estimated_minutes: number;
710
710
  irt_c?: number | undefined;
711
711
  };
@@ -784,8 +784,8 @@ declare const MalaysianMathSearchQuerySchema: z.ZodObject<{
784
784
  chapter?: number | undefined;
785
785
  paper?: "1" | "2" | undefined;
786
786
  section?: "A" | "B" | "C" | undefined;
787
- dok_level?: 3 | 1 | 2 | 4 | undefined;
788
- bloom_level?: 3 | 1 | 5 | 2 | 4 | 6 | undefined;
787
+ dok_level?: 4 | 1 | 2 | 3 | undefined;
788
+ bloom_level?: 4 | 1 | 5 | 2 | 6 | 3 | undefined;
789
789
  form?: number | undefined;
790
790
  year?: number | undefined;
791
791
  strand?: string | undefined;
@@ -800,8 +800,8 @@ declare const MalaysianMathSearchQuerySchema: z.ZodObject<{
800
800
  chapter?: number | undefined;
801
801
  paper?: "1" | "2" | undefined;
802
802
  section?: "A" | "B" | "C" | undefined;
803
- dok_level?: 3 | 1 | 2 | 4 | undefined;
804
- bloom_level?: 3 | 1 | 5 | 2 | 4 | 6 | undefined;
803
+ dok_level?: 4 | 1 | 2 | 3 | undefined;
804
+ bloom_level?: 4 | 1 | 5 | 2 | 6 | 3 | undefined;
805
805
  form?: number | undefined;
806
806
  year?: number | undefined;
807
807
  strand?: string | undefined;
@@ -913,15 +913,15 @@ declare const CurriculumIndexResponseSchema: z.ZodObject<{
913
913
  }, "strip", z.ZodTypeAny, {
914
914
  irt_b: number;
915
915
  irt_a: number;
916
- dok_level: 3 | 1 | 2 | 4;
917
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
916
+ dok_level: 4 | 1 | 2 | 3;
917
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
918
918
  estimated_minutes: number;
919
919
  irt_c?: number | undefined;
920
920
  }, {
921
921
  irt_b: number;
922
922
  irt_a: number;
923
- dok_level: 3 | 1 | 2 | 4;
924
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
923
+ dok_level: 4 | 1 | 2 | 3;
924
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
925
925
  estimated_minutes: number;
926
926
  irt_c?: number | undefined;
927
927
  }>;
@@ -1037,8 +1037,8 @@ declare const CurriculumIndexResponseSchema: z.ZodObject<{
1037
1037
  difficulty: {
1038
1038
  irt_b: number;
1039
1039
  irt_a: number;
1040
- dok_level: 3 | 1 | 2 | 4;
1041
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
1040
+ dok_level: 4 | 1 | 2 | 3;
1041
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
1042
1042
  estimated_minutes: number;
1043
1043
  irt_c?: number | undefined;
1044
1044
  };
@@ -1097,8 +1097,8 @@ declare const CurriculumIndexResponseSchema: z.ZodObject<{
1097
1097
  difficulty: {
1098
1098
  irt_b: number;
1099
1099
  irt_a: number;
1100
- dok_level: 3 | 1 | 2 | 4;
1101
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
1100
+ dok_level: 4 | 1 | 2 | 3;
1101
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
1102
1102
  estimated_minutes: number;
1103
1103
  irt_c?: number | undefined;
1104
1104
  };
@@ -1159,8 +1159,8 @@ declare const CurriculumIndexResponseSchema: z.ZodObject<{
1159
1159
  difficulty: {
1160
1160
  irt_b: number;
1161
1161
  irt_a: number;
1162
- dok_level: 3 | 1 | 2 | 4;
1163
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
1162
+ dok_level: 4 | 1 | 2 | 3;
1163
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
1164
1164
  estimated_minutes: number;
1165
1165
  irt_c?: number | undefined;
1166
1166
  };
@@ -1224,8 +1224,8 @@ declare const CurriculumIndexResponseSchema: z.ZodObject<{
1224
1224
  difficulty: {
1225
1225
  irt_b: number;
1226
1226
  irt_a: number;
1227
- dok_level: 3 | 1 | 2 | 4;
1228
- bloom_level: 3 | 1 | 5 | 2 | 4 | 6;
1227
+ dok_level: 4 | 1 | 2 | 3;
1228
+ bloom_level: 4 | 1 | 5 | 2 | 6 | 3;
1229
1229
  estimated_minutes: number;
1230
1230
  irt_c?: number | undefined;
1231
1231
  };
package/dist/index.js CHANGED
@@ -12,22 +12,52 @@ var OptionSchema = z.object({
12
12
  text: z.string().min(1),
13
13
  isCorrect: z.boolean(),
14
14
  // v1.1 fields - optional for backward compatibility
15
- misconceptionId: z.string().optional(),
15
+ misconceptionId: z.string().nullish(),
16
16
  feedback: FeedbackSchema.optional()
17
17
  });
18
18
  var QuestionTypeSchema = z.enum([
19
+ // Core assessment types (original v1.0)
19
20
  "vocabulary",
20
21
  "code_understanding",
21
22
  "problem_solving",
22
23
  "application",
23
- "reflection"
24
+ "reflection",
25
+ // Code-focused types
26
+ "debugging",
27
+ "trace",
28
+ "predict",
29
+ // Higher-order thinking
30
+ "analyze",
31
+ "evaluation",
32
+ "synthesis",
33
+ "design",
34
+ "conceptual",
35
+ "explain",
36
+ // Domain-specific
37
+ "bebras",
38
+ "blockmodel",
39
+ "ethical_reasoning"
24
40
  ]);
25
41
  var QuestionArchetypeSchema = z.enum([
42
+ // Original archetypes (v1.1)
26
43
  "vocabulary",
27
44
  "trace",
28
45
  "bebras",
29
46
  "blockmodel",
30
- "parsons"
47
+ "parsons",
48
+ // Assessment patterns
49
+ "application",
50
+ "problem_solving",
51
+ "debugging",
52
+ "predict",
53
+ "explain",
54
+ "evaluation",
55
+ "reflection",
56
+ "conceptual",
57
+ "analysis",
58
+ "design",
59
+ "synthesis",
60
+ "code"
31
61
  ]);
32
62
  var DifficultySchema = z.enum(["easy", "medium", "hard", "challenge"]);
33
63
  var BloomsTaxonomySchema = z.enum([
@@ -51,8 +81,8 @@ var QuestionMetadataSchema = z.object({
51
81
  });
52
82
  var QuestionSchema = z.object({
53
83
  // Identifiers
54
- questionId: z.string().regex(/^[a-z0-9-]+-l\d+-q\d+$/),
55
- globalId: z.string().regex(/^exit-ticket-\d{4}$/),
84
+ questionId: z.string().regex(/^[a-z0-9][-a-z0-9]*-(?:l\d+-)?q\d+$/),
85
+ globalId: z.string().regex(/^exit-ticket-[a-z0-9][-a-z0-9]*$/),
56
86
  questionNumber: z.number().int().positive().max(5),
57
87
  // Classification
58
88
  questionType: QuestionTypeSchema,
@@ -92,6 +122,8 @@ var CourseDomainSchema = z.enum([
92
122
  "ai_ml_cv",
93
123
  "ai_generative",
94
124
  "ai_advanced",
125
+ "ai",
126
+ // Prompt Engineering (general AI)
95
127
  // Web Development
96
128
  "web_development",
97
129
  // Mobile Development
@@ -101,11 +133,21 @@ var CourseDomainSchema = z.enum([
101
133
  "block_based",
102
134
  "python_programming",
103
135
  "design",
136
+ "artificial_intelligence",
137
+ // Block-based AI courses (BBAI)
138
+ // Computer Science
139
+ "cs_foundations",
140
+ // CS1-CS4 courses
104
141
  // Foundation
105
142
  "foundation",
106
- "creative_computing"
143
+ "creative_computing",
144
+ // Utility / Tools
145
+ "tools"
146
+ // IDE Setup, Git, Vibe Coding
107
147
  ]);
108
148
  var CourseTierSchema = z.enum([
149
+ "beginner",
150
+ // Block-based courses (BBW, BBP, BBD, BBAI)
109
151
  "foundation",
110
152
  "intermediate",
111
153
  "advanced"